layout.shell
The frame of an app with a sidebar: one layout.aside beside the main column. Used once, around the signed-in part of the app
Layout intents
Example
Frames the whole app; see it in your pages.
<Layout intent="layout.shell">
…
</Layout>Choosing between neighbours
Find the row that describes your element, and use the intent on the right.
If it is
Use
The frame of an app with a sidebar: one layout.aside beside the main column. Used once, around the signed-in part of the app
layout.shellthis pageA page without a sidebar
layout.pageOne page with its own section nav, like settings
layout.subnavThe frame of the whole app, around every signed-in page
rather thanlayout.subnavlayout.shellthis 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
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.shell 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.sidebarA fixed-width sidebar column beside a flexible one, stacked on phones
grid min-h-dvh md:grid-cols-[15rem_minmax(0,1fr)]
layout.shellThe frame of an app with a sidebar: one layout.aside beside the main column. Used once, around the signed-in part of the app
grid min-h-dvh md:grid-cols-[15rem_minmax(0,1fr)]
'layout.shell': {
kind: 'semantic',
description: 'The frame of an app with a sidebar: one layout.aside beside the main column. Used once, around the signed-in part of the app',
refs: ['arrange.sidebar'],
notFor: [
{ context: 'a page without a sidebar', instead: 'layout.page' },
{
context: 'one page with its own section nav, like settings',
instead: 'layout.subnav',
},
],
},