panel/01-panel-sidebar-toggle
An explicit main region alongside a responsive, collapsible navigation sidebar.
Loading interactive preview
import { Panel } from 'ui-lab-components/panel';
import { Skeleton } from 'ui-lab-components/skeleton';
export default function Example() {
return (
<div className="h-[400px] w-full max-w-4xl overflow-hidden rounded-lg border border-background-700 bg-background-900">
<Panel defaultOpen collapseAt={560} spacing="none">
<Panel.Sidebar
side="left"
width={208}
aria-label="Navigation"
className="bg-background-950"
>
<div className="flex h-full flex-col gap-2 p-3">
<Skeleton w={72} h={10} />
<div className="space-y-1">
<Skeleton h={28} className="rounded-sm" />
<Skeleton h={28} className="rounded-sm" />
<Skeleton h={28} className="rounded-sm" />
<Skeleton h={28} className="rounded-sm" />
</div>
<div className="mt-auto space-y-1">
<Skeleton h={28} className="rounded-sm" />
<Skeleton h={28} className="rounded-sm" />
</div>
</div>
</Panel.Sidebar>
<Panel.Main>
<Panel.Header className="flex items-center justify-between border-b border-background-700 px-3 py-2">
<div className="flex items-center gap-2">
<Panel.Toggle>
<button aria-label="Toggle navigation" className="h-7 w-7 rounded-sm bg-background-800" />
</Panel.Toggle>
<Skeleton w={96} h={10} />
</div>
<div className="flex gap-1">
<Skeleton w={28} h={28} className="rounded-sm" />
<Skeleton w={28} h={28} className="rounded-sm" />
</div>
</Panel.Header>
<Panel.Content className="block p-4">
<div className="mx-auto grid max-w-2xl gap-3">
<Skeleton w={120} h={12} />
<Skeleton h={10} className="w-11/12" />
<Skeleton h={10} className="w-full" />
<Skeleton h={10} className="w-4/5" />
<div className="grid grid-cols-2 gap-2 pt-3">
<Skeleton.Image ratio="4/3" className="rounded-sm" />
<Skeleton.Image ratio="4/3" className="rounded-sm" />
</div>
</div>
</Panel.Content>
<Panel.Footer fixed className="flex justify-between border-t border-background-700 px-3 py-2">
<Skeleton w={72} h={8} />
<Skeleton w={48} h={8} />
</Panel.Footer>
</Panel.Main>
</Panel>
</div>
);
}