import type { Meta, StoryObj } from '@storybook/react' import { useState } from 'react' import { AppShell } from './AppShell' import { TopBar } from '@/components/organisms/TopBar/TopBar' import { SideNav, SideNavItem, SideNavGroup, SideNavDivider } from '@/components/organisms/SideNav/SideNav' import { Avatar } from '@/components/atoms/Avatar/Avatar' import { PageHeader } from '@/components/organisms/PageHeader/PageHeader' import { NswLogo, TopBarAction } from '@/components/templates/_story-helpers' import { Menu, Search, Bell, Home, FileText, LayoutGrid, Settings, Users, Link } from 'lucide-react' const meta: Meta = { title: 'Templates/AppShell', component: AppShell, tags: ['autodocs', 'template'], parameters: { layout: 'fullscreen', docs: { description: { component: 'Application shell layout that composes TopBar + SideNav + scrollable content area. All page templates should be rendered inside an AppShell.', }, }, }, } export default meta type Story = StoryObj export const Default: Story = { render: () => { const [collapsed, setCollapsed] = useState(false) return ( } label="Toggle menu" onClick={() => setCollapsed(!collapsed)} />} logo={} > } label="Search" /> } label="Notifications" /> } sideNav={ } active>Home }>Documents }>Workspace } label="Team" defaultOpen> Members Roles }>Resources }>Settings } sideNavCollapsed={collapsed} >
Page content goes here
) }, } export const Collapsed: Story = { render: () => ( } label="Menu" />} logo={}> } label="Notifications" /> } sideNav={ } active>Home }>Documents }>Workspace }>Settings } sideNavCollapsed >
Content area is wider with collapsed sidebar
), }