Skip to content
Frauthy Brand
Frauthy index

Go anywhere.

    No exact contract found. Try a component family, product name, prop, or keyboard key.

    ↑↓ move↵ openesc close

    AppShell

    app chrome

    Application frame with a sticky topbar, grouped sidebar navigation, skip link, responsive drawer, and a dedicated <main>region for product screens.

    Preview

    Usage

    import { AppShell, Button, ThemeToggle } from 'PRIVATE_BETA_PACKAGE_COORDINATE_REDACTED';
    
    const nav = [
      {
        label: 'Workspace',
        items: [
          { href: '/overview', label: 'Overview' },
          { href: '/reviews', label: 'Reviews' },
        ],
      },
      {
        label: 'Operations',
        items: [
          { href: '/queues', label: 'Queues' },
          { href: '/reports', label: 'Reports' },
        ],
      },
    ];
    
    <AppShell
      nav={nav}
      current="/reviews"
      navLabel="Product navigation"
      brand={<a class="appshell-brand" href="/overview">Frauthy Admin</a>}
      actions={<><Button variant="secondary" size="sm">New review</Button><ThemeToggle /></>}
    >
      <h1>Reviews</h1>
      <p>Operational queue content renders inside the shell main region.</p>
    </AppShell>

    Props

    PropTypeDefaultDescription
    brandJSX.Element--Wordmark or product link rendered at the topbar start
    navAppShellNavSection[]--Grouped sidebar navigation; each item has href and label
    currentstring--Current route used to set aria-current="page" on the active nav item
    actionsJSX.Element--Right-aligned topbar controls such as buttons or ThemeToggle
    navLabelstring'Main'Accessible label for the sidebar nav landmark
    childrenJSX.Element--Screen content rendered inside the shell's <main>

    Accessibility

    Do / Don't

    Do

    Render AppShell at the application document level, with the page screen as its children and one meaningful label for the product navigation.

    Don't

    Don't embed AppShell inside another page layout that already has its own header, nav, or main landmarks. Use an iframe for documentation previews.