import { ReactNode } from 'react'; import { Box } from '@/ui/Box'; export interface LayoutProps { children: ReactNode; header?: ReactNode; footer?: ReactNode; sidebar?: ReactNode; fixedSidebar?: boolean; fixedHeader?: boolean; fixedFooter?: boolean; } /** * Layout is the canonical app frame component. * Redesigned for "Cockpit" layout: Sidebar is primary (full height), Header and Content sit to the right. */ export const Layout = ({ children, header, footer, sidebar, fixedSidebar = true, fixedHeader = true, fixedFooter = true, isCollapsed = false }: LayoutProps & { isCollapsed?: boolean }) => { const sidebarWidth = isCollapsed ? '20' : '64'; // 5rem vs 16rem const sidebarWidthClass = isCollapsed ? 'lg:w-20' : 'lg:w-64'; const contentMarginClass = isCollapsed ? 'lg:ml-20' : 'lg:ml-64'; return ( {/* Sidebar - Primary Vertical Axis - Solid Background */} {sidebar && ( {sidebar} )} {/* Main Content Area - Right of Sidebar */} {/* Header - Rendered directly as it contains AppShellBar (fixed) */} {header} {/* Main Scrollable Content */} {children} {/* Footer - Rendered directly as it contains AppShellBar (fixed) */} {footer} ); };