Layout intents
Example
Renders <li>; see it in your pages.
<Layout intent="layout.item">
…
</Layout>Choosing between neighbours
Find the row that describes your element, and use the intent on the right.
If it is
Use
One entry in a layout.list
layout.itemthis pageA term beside what it means: a prop, a token, a rule
layout.termA situation beside the intent it calls for
layout.situationA standalone box that is not in a list
layout.panelOne entry in a list of things
rather thanlayout.factlayout.itemthis pageOne record in a list someone acts on
rather thanlayout.pointlayout.itemthis page
Connections
Declared in the registry, both directions. Where an intent is used in your own code is something check and the gallery see; this site has no app code.
- Built from
- Used to build
For registry authors
Starter intents. These are the intents prongs add puts in your registry, shown in this site’s theme. Yours are your own registry.ts: rename, restyle and add to them, and see them with prongs add gallery.
What this intent is built from and its entry in components/prongs/registry.ts. You only need this to change how it looks or to add an intent like it.
How layout.item resolves, and its definition
Each layer adds to the one before it; a later class wins over an earlier one that sets the same thing.
arrange.stackChildren in a column, free to shrink inside a row or grid
flex min-w-0 flex-col
layout.itemOne entry in a layout.list
gap-1 py-3
flex min-w-0 flex-col gap-1 py-3
'layout.item': {
kind: 'semantic',
description: 'One entry in a layout.list',
refs: ['arrange.stack'],
binding: { element: 'li', classes: 'gap-1 py-3' },
notFor: [
{
context: 'a term beside what it means: a prop, a token, a rule',
instead: 'layout.term',
},
{
context: 'a situation beside the intent it calls for',
instead: 'layout.situation',
},
{
context: 'a standalone box that is not in a list',
instead: 'layout.panel',
},
],
},