Files
stack/apps/web/src/components/layout/app-shell.tsx
Jason Woltje de64695ac5
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
feat(web): design system — ms-* tokens, ThemeProvider, MosaicLogo, sidebar (#221)
Co-authored-by: Jason Woltje <jason@diversecanvas.com>
Co-committed-by: Jason Woltje <jason@diversecanvas.com>
2026-03-21 12:57:24 +00:00

33 lines
835 B
TypeScript

'use client';
import type { ReactNode } from 'react';
import { SidebarProvider, useSidebar } from './sidebar-context';
import { Sidebar } from './sidebar';
import { Topbar } from './topbar';
interface AppShellProps {
children: ReactNode;
}
function AppShellFrame({ children }: AppShellProps): React.ReactElement {
const { collapsed, isMobile } = useSidebar();
return (
<div className="app-shell" data-sidebar-hidden={!isMobile && collapsed ? 'true' : undefined}>
<Topbar />
<Sidebar />
<div className="app-main">
<main className="h-full overflow-y-auto p-6">{children}</main>
</div>
</div>
);
}
export function AppShell({ children }: AppShellProps): React.ReactElement {
return (
<SidebarProvider>
<AppShellFrame>{children}</AppShellFrame>
</SidebarProvider>
);
}