App shell

A React component in Beamline's Dashboard category.

The frame for every app screen: collapsible sidebar with grouped navigation, top bar and page.

Use it for

  • The root layout of a SaaS app, dashboard or terminal.

Not for

  • Marketing pages.
  • Custom sidebars → compose sidebar parts directly.

Anatomy

  • sidebar (brand, nav groups with badges, footer, rail)
  • top bar (toggle, title, actions)
  • main (the page main landmark; a div when contained)

Variants

  • collapsible: icon, offcanvas
  • contained: viewport, parent box
  • sidebarTone: default, brand, contrast

States

  • expanded
  • collapsed
  • mobile sheet (<768px)

Keyboard

  • ⌘B / Ctrl+B toggles the sidebar
  • Nav items are links or buttons; the active one has aria-current=page

Motion

Sidebar width animates on the 180ms curve.

Props

PropTypeDefaultDescription
nav (required){ label?, items: { label, icon?, href?, onSelect?, active?, badge? }[] }[]—
brand / footer / title / actionsReactNode—
collapsible'icon'|'offcanvas'—
open / defaultOpen / onOpenChangeboolean—
containedboolean—
mainAs"main" | "div"—The page area element: main (the page main landmark) unless contained, then div, for a page that has its own main.
style / refCSSProperties / native Ref—
classNamesAppShellClassNames—
sidebarTone"default" | "brand" | "contrast""default"The sidebar's tone: the look's chrome, the brand, or near-black (Sidebar tone).

Built from

  • sidebar

Dependencies

@radix-ui/react-slot

Import

import { AppShell } from "@/components/app-shell/app-shell";

Get it

App shell is part of Beamline: 190 React components and screens your coding agent (Claude Code, Codex, Cursor or any MCP client) installs into your app through Beamline's MCP server, as a ready-built package or as plain React source you can change. $49 one payment (regular $200), no subscription, a year of updates, one licence for your whole team. Get Beamline · Connect your agent

More in Dashboard

  • Bar list: Ranked horizontal bars with label inside and value at the end — top pages, sources, customers.
  • Category bar: One bar split into labelled ranges with an optional marker that names its range.
  • Insight cards: Findings from an agent, one per page: the sentence, the series it is about with their change, a chart to scrub that names each point, and a follow-up…
  • Metric card: A KPI: label, a value that rolls to each new number, the change with arrow, sign and tone, a trend line and context; unmeasured values are hatched, never…
  • Tracker: A row of status blocks for uptime, job runs or daily checks, with tooltips and a legend.