import { ReactNode } from 'react'; import { Box } from './Box'; export interface LayoutProps { children: ReactNode; header?: ReactNode; footer?: ReactNode; sidebar?: ReactNode; /** * Whether the sidebar should be fixed to the side. * If true, the main content will be offset by the sidebar width. */ fixedSidebar?: boolean; /** * Whether the header should be fixed to the top. * If true, the main content will be offset by the header height. */ fixedHeader?: boolean; } /** * Layout is the canonical app frame component. * It orchestrates the high-level structure: Header, Sidebar, Main Content, and Footer. */ export const Layout = ({ children, header, footer, sidebar, fixedSidebar = false, fixedHeader = false }: LayoutProps) => { return ( {header && ( {header} )} {sidebar && ( {sidebar} )} {children} {footer && ( {footer} )} ); };