layout.panel
A self-contained box about one thing: a sign-in box, a profile summary. Its border is quieter than a layout.teaser’s, since it does not open anything
Layout intents
Example
One
Two
Three
<Layout intent="layout.panel">
…
</Layout>Choosing between neighbours
Find the row that describes your element, and use the intent on the right.
If it is
Use
A self-contained box about one thing: a sign-in box, a profile summary. Its border is quieter than a layout.teaser’s, since it does not open anything
layout.panelthis pageA box in a collection that opens a page as a whole
layout.teaserA box of rows read like a table
layout.indexA home page section pairing a pitch with a live demo
layout.featureA live example with its code underneath
layout.previewA live example with its code under it
rather thanlayout.listinglayout.panelthis pageA standalone box that is not in a list
rather thanlayout.itemlayout.panelthis pageA box that does not open anything
rather thanlayout.teaserlayout.panelthis pageA box of related content
rather thanlayout.windowlayout.panelthis pageA framed block inside the page width
rather thanlayout.bandlayout.panelthis pageA box around content
rather thanlayout.markerlayout.panelthis pageContent that is always there
rather thanlayout.noticelayout.panelthis 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.panel 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.
surface.panelBordered box, one level above what it sits in
surface rounded-md border border-surface-border
arrange.stackChildren in a column, free to shrink inside a row or grid
flex min-w-0 flex-col
layout.panelA self-contained box about one thing: a sign-in box, a profile summary. Its border is quieter than a layout.teaser’s, since it does not open anything
gap-3 p-[clamp(1rem,4vw,1.5rem)] border-surface-border/60
surface rounded-md border flex min-w-0 flex-col gap-3 p-[clamp(1rem,4vw,1.5rem)] border-surface-border/60
'layout.panel': {
kind: 'semantic',
description: 'A self-contained box about one thing: a sign-in box, a profile summary. Its border is quieter than a layout.teaser’s, since it does not open anything',
refs: ['surface.panel', 'arrange.stack'],
binding: { classes: 'gap-3 p-[clamp(1rem,4vw,1.5rem)] border-surface-border/60' },
notFor: [
{
context: 'a box in a collection that opens a page as a whole',
instead: 'layout.teaser',
},
{ context: 'a box of rows read like a table', instead: 'layout.index' },
{
context: 'a home page section pairing a pitch with a live demo',
instead: 'layout.feature',
},
{
context: 'a live example with its code underneath',
instead: 'layout.preview',
},
],
},