App Shell

The AppShell component composes header, sidebar, aside, main content, and footer regions for application layouts.

Usage & Examples

Dashboard Shell

Operations

Queue health and release activity.

Updated just now
dashboard-shell.tsx
<AppShell
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>

Visual variants

Themes

primary
Operations

Queue health and release activity.

Updated just now
secondary
Operations

Queue health and release activity.

Updated just now
tertiary
Operations

Queue health and release activity.

Updated just now
quaternary
Operations

Queue health and release activity.

Updated just now

States

success
Operations

Queue health and release activity.

Updated just now
warning
Operations

Queue health and release activity.

Updated just now
error
Operations

Queue health and release activity.

Updated just now
info
Operations

Queue health and release activity.

Updated just now

Variants

solid
Operations

Queue health and release activity.

Updated just now
outline
Operations

Queue health and release activity.

Updated just now
glass
Operations

Queue health and release activity.

Updated just now

Rounding

none
Operations

Queue health and release activity.

Updated just now
medium
Operations

Queue health and release activity.

Updated just now
large
Operations

Queue health and release activity.

Updated just now

Shadows

none
Operations

Queue health and release activity.

Updated just now
light
Operations

Queue health and release activity.

Updated just now
strong
Operations

Queue health and release activity.

Updated just now
visual-variants.tsx
// Themes
<AppShell theme="primary"
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>
<AppShell theme="secondary"
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>
<AppShell theme="tertiary"
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>
<AppShell theme="quaternary"
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>

// States
<AppShell state="success"
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>
<AppShell state="warning"
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>
<AppShell state="error"
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>
<AppShell state="info"
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>

// Variants
<AppShell variant="solid"
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>
<AppShell variant="outline"
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>
<AppShell variant="glass"
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>

// Rounding
<AppShell rounding="none"
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>
<AppShell rounding="medium"
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>
<AppShell rounding="large"
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>

// Shadows
<AppShell shadow="none"
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>
<AppShell shadow="light"
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>
<AppShell shadow="strong"
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>

Interaction states

Disabled
Operations

Queue health and release activity.

Updated just now
Loading
Operations

Queue health and release activity.

Updated just now
interaction-states.tsx
// Disabled
<AppShell disabled
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>
// Loading
<AppShell loading
    header={<strong>Operations</strong>}
    sidebar={<nav>Overview<br />Reports<br />Settings</nav>}
    aside={<span>Team online: 8</span>}
    footer={<small>Updated just now</small>}
  >
    <p>Queue health and release activity.</p>
  </AppShell>

Props API

24 props
Columns
App Shell props API
Default
Description
asideReactNodeNoprops—Complementary aside region rendered after the main content.
asideWidthstringNoprops"18rem"Width of the aside column.
childrenReactNodeNoprops—Main page content.
classNamestringNostyling—Additional class name for the root shell.
contentClassNamestringNoprops—Additional class name for the main content area.
data-testidstringNotesting—Backward-compatible alias for test ID attributes.
disabledbooleanNopropsfalseWhether the shell is visually disabled.
footerReactNodeNoprops—Footer region rendered below the main content.
headerReactNodeNoprops—Header region rendered at the top of the shell.
labelReactNodeNoprops—Legacy alias for header content retained for scaffold compatibility.
loadingbooleanNopropsfalseWhether the shell should display a loading state.
mainClassNamestringNoprops—Additional class name for the main content region.