Sidebar
Vertical nav rail with item/subItem/selected states. Full-height panel.
At/above the breakpoint (lg · 1024px) the rail stays docked. Switch to a narrower viewport, then use the navbar menu button (☰) to open the overlay drawer.
Viewport
Open full page ↗const [open, setOpen] = useState(false);
<Navbar
onMenuToggle={() => setOpen((o) => !o)}
…
/>
<Sidebar
responsive
breakpoint="lg"
backdrop="dim"
open={open}
onClose={() => setOpen(false)}
>
<SidebarGroup label="Favorites">
<SidebarMenuItem
icon={faListCheck}
label="Work List"
selected
/>
<SidebarMenuItem
icon={faCalendar}
label="Calendar"
/>
</SidebarGroup>
<SidebarGroup label="Workspace">
<SidebarMenuItem
icon={faWrench}
label="Maintenance Requests"
/>
<SidebarMenuItem
icon={faBuilding}
label="Buildings"
/>
</SidebarGroup>
</Sidebar>Sidebar
header:ReactNodeBrand slot rendered at the top (Logo, wordmark).
footer:ReactNodeFooter slot rendered at the bottom.
children:ReactNodeNav items — SidebarMenuItem elements.
responsive:boolean= falseEnable the drawer behavior (#23): docked at/above the breakpoint, a slide-in overlay below it.
breakpoint:"md" | "lg"= "lg"Where the rail switches between docked and drawer. Only used when responsive.
open / onClose:boolean / () => voidDrawer open state (below breakpoint) and its dismiss handler (Escape, backdrop tap).
backdrop:"dim" | "transparent"= "dim"Scrim behind the open drawer, or a transparent click-catcher.
SidebarMenuItem
type:"item" | "subItem"= "item"item = icon + label row; subItem = indented label with vertical divider.
label:stringDisplay label (required).
icon:IconDefinitionLeading icon — only rendered for type=item.
selected:boolean= falseApplies primary/10 background and primary text/icon.
disabled:boolean= falseNon-interactive, muted.
badge:ReactNodeTrailing badge/notification slot.