{"version":3,"file":"AppShell.cjs","names":[],"sources":["../../../src/components/AppShell/AppShell.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { useBreakpoint } from \"@/hooks/use-breakpoint\";\nimport styles from \"./AppShell.module.css\";\n\nexport interface AppShellProps extends HTMLAttributes<HTMLDivElement> {\n    /** Top navigation bar (Navbar / custom). Renders on every breakpoint. */\n    navbar?: ReactNode;\n    /** Side navigation (Sidebar). Hidden below `md` — pair with `<Drawer>` for mobile. */\n    sidebar?: ReactNode;\n    /** Mobile-only bottom navigation (BottomNavigation). Hidden at `md+`. */\n    bottomNav?: ReactNode;\n    /** Footer rendered after the main content. */\n    footer?: ReactNode;\n    /** Breakpoint at which the sidebar appears. Default `\"md\"`. */\n    sidebarBreakpoint?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n    children?: ReactNode;\n}\n\n/**\n * Full app layout — composes [[Navbar]] + [[Sidebar]] + content +\n * [[BottomNavigation]] + footer with responsive behaviour:\n *\n * - **Desktop (`>= sidebarBreakpoint`)**: navbar + sidebar + main + footer.\n * - **Mobile (`< sidebarBreakpoint`)**: navbar + main + bottom nav + footer\n *   (sidebar hidden — app should expose it via `<Drawer>` from a hamburger).\n *\n * @example\n * <AppShell\n *     navbar={<Navbar logo={<Brand />} actions={<UserMenu />} />}\n *     sidebar={<Sidebar items={...} value={tab} onChange={setTab} />}\n *     bottomNav={<BottomNavigation items={...} value={tab} onChange={setTab} />}\n *     footer={<Footer />}\n * >\n *     <Page title=\"Dashboard\">{content}</Page>\n * </AppShell>\n */\nexport function AppShell({\n    navbar,\n    sidebar,\n    bottomNav,\n    footer,\n    sidebarBreakpoint = \"md\",\n    className,\n    children,\n    ...props\n}: AppShellProps) {\n    const bp = useBreakpoint();\n    const showSidebar = bp.above(sidebarBreakpoint);\n    return (\n        <div className={cn(styles.shell, className)} {...props}>\n            {navbar && <div className={styles.navbar}>{navbar}</div>}\n            <div className={styles.row}>\n                {sidebar && showSidebar && <div className={styles.sidebar}>{sidebar}</div>}\n                <main className={styles.main}>{children}</main>\n            </div>\n            {footer && <div className={styles.footer}>{footer}</div>}\n            {bottomNav && !showSidebar && <div className={styles.bottomNav}>{bottomNav}</div>}\n        </div>\n    );\n}\n"],"mappings":"wJAqCA,SAAgB,EAAS,CACrB,SACA,UACA,YACA,SACA,oBAAoB,KACpB,YACA,WACA,GAAG,GACW,CAEd,IAAM,EADK,EAAA,cACS,CAAA,CAAG,MAAM,CAAiB,EAC9C,OACI,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,GAAG,EAAA,QAAO,MAAO,CAAS,EAAG,GAAI,EAAjD,SAAA,CACK,IAAU,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,OAAS,SAAA,CAAY,CAAA,GACvD,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,IAAvB,SAAA,CACK,GAAW,IAAe,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,QAAU,SAAA,CAAa,CAAA,GACzE,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,KAAO,UAAe,CAAA,CAC7C,IACJ,IAAU,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,OAAS,SAAA,CAAY,CAAA,EACtD,GAAa,CAAC,IAAe,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,UAAY,SAAA,CAAe,CAAA,CAC/E,GAEb"}