{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "app-shell",
  "title": "App Shell",
  "description": "Sidebar shell with a product lockup, navigation, account footer and breadcrumb. Pages own their heading.",
  "registryDependencies": [
    "@waimakers/brand-lockup",
    "@waimakers/breadcrumb",
    "@waimakers/sidebar",
    "@waimakers/tooltip"
  ],
  "files": [
    {
      "path": "src/components/ui/app-shell.tsx",
      "content": "import type { ReactNode } from \"react\";\nimport { BrandLockup } from \"./brand-lockup\";\nimport { Breadcrumb } from \"./breadcrumb\";\nimport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarHeader,\n  SidebarInset,\n  SidebarProvider,\n  SidebarRail,\n  SidebarTrigger,\n} from \"./sidebar\";\nimport { TooltipProvider } from \"./tooltip\";\n\nexport interface AppShellProps {\n  product: string;\n  nav: ReactNode;\n  navLabel: string;\n  footer?: ReactNode;\n  workspace?: ReactNode;\n  brand?: ReactNode;\n  breadcrumb?: ReactNode;\n  sidebarCookieName?: string;\n  sidebarTitle?: string;\n  topbarSlot?: string;\n  children: ReactNode;\n}\n\nexport function AppShell({\n  product,\n  nav,\n  navLabel,\n  footer,\n  workspace,\n  brand,\n  breadcrumb,\n  sidebarCookieName,\n  sidebarTitle,\n  topbarSlot = \"app-topbar\",\n  children,\n}: AppShellProps) {\n  return (\n    <TooltipProvider>\n      <SidebarProvider\n        className=\"bg-background font-sans text-foreground\"\n        cookieName={sidebarCookieName}\n        title={sidebarTitle}\n      >\n        <Sidebar collapsible=\"offcanvas\">\n          <SidebarHeader>\n            {brand ?? <BrandLockup product={product} />}\n            {workspace}\n          </SidebarHeader>\n          <SidebarContent>\n            <nav aria-label={navLabel} className=\"flex flex-col gap-5\">\n              {nav}\n            </nav>\n          </SidebarContent>\n          {footer !== undefined && <SidebarFooter>{footer}</SidebarFooter>}\n          <SidebarRail />\n        </Sidebar>\n        <SidebarInset>\n          <div\n            data-slot={topbarSlot}\n            className=\"sticky top-0 z-(--z-sticky,30) flex min-w-0 items-center gap-3 border-b border-border bg-background px-2 py-1 md:px-6\"\n          >\n            <SidebarTrigger />\n            {breadcrumb !== undefined && <Breadcrumb className=\"min-w-0\">{breadcrumb}</Breadcrumb>}\n          </div>\n          <main className=\"flex min-w-0 flex-1 flex-col gap-8 px-4 py-8 md:px-8\">{children}</main>\n        </SidebarInset>\n      </SidebarProvider>\n    </TooltipProvider>\n  );\n}\n",
      "type": "registry:ui",
      "target": "components/ui/app-shell.tsx"
    }
  ],
  "type": "registry:block"
}