Skip to content
← Templates

App shell with sidebar

A signed-in product with a collapsible nav rail and a docked detail panel.

The default authenticated frame: an auto-height AppShell whose body scrolls the page, an icon-collapsible Sidebar on the left, a sticky header, and a right-hand gutter that reserves space for a docked, non-modal Sidepanel. The gutter and the Sidepanel share one open state — the gutter is the reservation, the Sidepanel is the overlay — so opening a detail panel shifts the content column rather than covering it.

AppShell
height=auto — the page is the scroll container
Sidebar
collapsible=icon — the left nav rail
AppShellBody
flex row absorbing the sidebar, body and panel
AppShellHeader
sticky top bar inside the body
AppShellMain
the page content
AppShellPanel
variant=gutter, side=right — reserves the panel's width
Sidepanel
modal=false — the docked detail overlay, same open state
<AppShell height="auto" defaultSidebarOpen>
  <Sidebar collapsible="icon">
    {/* nav rail */}
  </Sidebar>
  <AppShellBody>
    <AppShellHeader>{/* header bar */}</AppShellHeader>
    <AppShellMain>{children}</AppShellMain>
  </AppShellBody>
  {/* The gutter reserves space; the docked Sidepanel fills it. */}
  <AppShellPanel variant="gutter" side="right" open={docked} />
  <Sidepanel modal={false} open={docked} onOpenChange={setDocked}>
    {/* docked detail content */}
  </Sidepanel>
</AppShell>