Vertical side navigation panel with optional collapsing support.
Adapts to AppShell render modes (inline, drawer, topbar).
< div style = { {height: 420 } } >
header = { < SideNavHeading heading = " Silver " subheading = " Workspace " /> } >
< SideNavSection title = " Main " >
< SideNavItem href = " / " icon = { Home } isSelected label = " Home " />
< SideNavItem href = " /settings " icon = { Settings } label = " Settings " />
< div style = { {height: 420 } } >
collapseBreakpoint = " none "
< SideNavHeading heading = " Silver " logo = { logo } subheading = " Workspace " />
< SideNavSection title = " Main " >
< SideNavItem href = " / " icon = { Home } isSelected label = " Home " />
< SideNavItem href = " /inbox " icon = { Inbox } label = " Inbox " />
< SideNavItem href = " /settings " icon = { Settings } label = " Settings " />
< div style = { {height: 420 } } >
< SideNavHeading heading = " Silver " logo = { logo } subheading = " Workspace " />
< SideNavSection title = " Main " >
< SideNavItem href = " / " icon = { Home } isSelected label = " Home " />
< SideNavItem href = " /inbox " icon = { Inbox } label = " Inbox " />
< SideNavItem href = " /settings " icon = { Settings } label = " Settings " />
< div style = { {height: 420 } } >
collapseBreakpoint = " none "
content: < Avatar name = " Ada Lovelace " size = " small " />,
< SideNavHeading heading = " Silver " logo = { logo } subheading = " Workspace " />
< SideNavSection title = " Main " >
< SideNavItem href = " / " icon = { Home } isSelected label = " Home " />
< SideNavItem href = " /inbox " icon = { Inbox } label = " Inbox " />
< SideNavItem href = " /settings " icon = { Settings } label = " Settings " />
< div style = { {height: 420 } } >
content: < Avatar name = " Ada Lovelace " size = " small " />,
header = { < SideNavHeading heading = " Silver " subheading = " Workspace " /> } >
< SideNavSection title = " Main " >
< SideNavItem href = " / " icon = { Home } isSelected label = " Home " />
< SideNavItem href = " /inbox " icon = { Inbox } label = " Inbox " />
< div style = { {height: 420 } } >
content: < Avatar name = " Ada Lovelace " size = " small " />,
header = { < SideNavHeading heading = " Silver " logo = { logo } /> } >
< SideNavSection title = " Main " >
< SideNavItem href = " / " icon = { Home } isSelected label = " Home " />
< SideNavItem href = " /inbox " icon = { Inbox } label = " Inbox " />
function WithTopContent () {
const [ search , setSearch ] = useState ( '' );
< div style = { {height: 420 } } >
header = { < SideNavHeading heading = " Silver " subheading = " Workspace " /> }
< SideNavSection title = " Main " >
< SideNavItem href = " / " icon = { Home } isSelected label = " Home " />
< SideNavItem href = " /inbox " icon = { Inbox } label = " Inbox " />
< SideNavItem href = " /settings " icon = { Settings } label = " Settings " />
< div style = { {height: 420 } } >
< SideNavSection isHeaderHidden title = " Support " >
< SideNavItem href = " /help " icon = { HelpCircle } label = " Help center " />
< SideNavHeading heading = " Silver " logo = { logo } subheading = " Workspace " />
< SideNavSection title = " Main " >
< SideNavItem href = " / " icon = { Home } isSelected label = " Home " />
< SideNavItem href = " /inbox " icon = { Inbox } label = " Inbox " />
< SideNavItem href = " /settings " icon = { Settings } label = " Settings " />
< div style = { {height: 420 } } >
header = { < SideNavHeading heading = " Silver " subheading = " Workspace " /> } >
< SideNavSection title = " Main " >
< SideNavItem href = " / " icon = { Home } isSelected label = " Home " />
< SideNavItem href = " /inbox " icon = { Inbox } label = " Inbox " />
< SideNavItem icon = { Archive } isDisabled label = " Archive " />
< div style = { {height: 420 } } >
header = { < SideNavHeading heading = " Silver " subheading = " Workspace " /> } >
< SideNavSection endContent = { < Plus size = { 14 } /> } title = " Projects " >
endContent = { < Badge label = " 3 " /> }
endContent = { < Badge label = " 12 " /> }
< SideNavItem href = " /trash " icon = { Trash } label = " Trash " />
< div style = { {height: 420 } } >
header = { < SideNavHeading heading = " Silver " subheading = " Workspace " /> } >
< SideNavSection title = " Actions " >
< SideNavItem icon = { Home } isSelected label = " Home " onClick = { () => {} } />
< SideNavItem icon = { Search } label = " Search " onClick = { () => {} } />
< SideNavItem icon = { Settings } label = " Settings " onClick = { () => {} } />
< div style = { {height: 420 } } >
header = { < SideNavHeading heading = " Silver " subheading = " Workspace " /> } >
< SideNavSection isHeaderHidden title = " Primary " >
< SideNavItem href = " / " icon = { Home } isSelected label = " Home " />
< SideNavItem href = " /inbox " icon = { Inbox } label = " Inbox " />
< SideNavSection subtitle = " Personal files " title = " Documents " >
< SideNavItem href = " /files " icon = { File } label = " All files " />
< SideNavItem href = " /folders " icon = { Folder } label = " Folders " />
< SideNavItem href = " /starred " icon = { Star } label = " Starred " />
< SideNavSection title = " Team " >
< SideNavItem href = " /members " icon = { Users } label = " Members " />
< SideNavItem href = " /settings " icon = { Settings } label = " Settings " />
< div style = { {height: 420 } } >
headerEndContent = { < ChevronDown size = { 16 } /> }
subheading = " Design System "
< SideNavSection title = " Main " >
< SideNavItem href = " / " icon = { Home } isSelected label = " Home " />
< SideNavItem href = " /settings " icon = { Settings } label = " Settings " />
< div style = { {height: 420 } } >
header = { < SideNavHeading heading = " Silver " subheading = " Workspace " /> } >
< SideNavSection title = " Main " >
< SideNavItem href = " / " icon = { Home } isSelected label = " Home " />
< SideNavItem href = " /inbox " icon = { Inbox } label = " Inbox " />
< SideNavItem icon = { Settings } isCollapsible label = " Settings " >
< SideNavItem href = " /general " label = " General " />
< SideNavItem href = " /security " label = " Security " />
< SideNavItem href = " /notifications " label = " Notifications " />
< div style = { {height: 420 } } >
header = { < SideNavHeading heading = " Silver " subheading = " Workspace " /> } >
< SideNavSection title = " Main " >
< SideNavItem href = " / " icon = { Home } isSelected label = " Home " />
< SideNavItem href = " /general " label = " General " />
< SideNavItem href = " /security " label = " Security " />
< SideNavItem href = " /team " icon = { Users } isCollapsible label = " Team " >
< SideNavItem href = " /members " label = " Members " />
< SideNavItem href = " /roles " label = " Roles " />
< div style = { {height: 420 } } >
collapseBreakpoint = " none "
content: < SideNavItem icon = { Settings } label = " Settings " />,
< SideNavHeading heading = " Silver " logo = { logo } subheading = " Workspace " />
< SideNavSection title = " Pages " >
{ Array . from ({length: 20 }, ( _ , i ) => (
const [ activity , setActivity ] = useState (
' Choose a navigation target or action ' ,
< div style = { {height: 420 } } >
< p aria-label = " Last action " role = " status " >
collapseBreakpoint = " none "
onClick = { () => setActivity ( ' Edit projects ' ) }
setActivity ( ' Navigate to projects ' ) ;
onClick = { () => setActivity ( ' Active projects ' ) }
onClick : () => setActivity ( ' Archive inbox ' ) ,
onClick = { () => setActivity ( ' Open inbox ' ) }
label = " Edit archived projects "
onClick = { () => setActivity ( ' Edit archived projects ' ) }
label = " Archived projects "
Vertical side navigation panel with optional collapsing support.
Adapts to AppShell render modes (inline, drawer, topbar).
Prop Type Default Description bottomContentReactNode— Content rendered at the bottom of the scrollable area. children* ReactNode— Navigation item children rendered in the scrollable area. classNamestring— Additional CSS class names applied to the nav element. collapseBreakpoint"sm" | "md" | "lg" | "none"'lg'Breakpoint at or below which a collapsible nav starts collapsed. This is evaluated only when the nav first mounts. Use none to always start expanded. data-testidstring— Test ID applied to the nav element. footerSideNavFooter— Content and actions rendered in the sticky bottom section. headerReactNode— Content rendered at the top of the nav (e.g. a logo or title). isCollapsiblebooleanfalseWhether the nav can be collapsed to an icon-only toolbar. refRef<HTMLElement>— Ref forwarded to the nav element. styleCSSProperties— Inline styles applied to the nav element. topContentReactNode— Non-scrollable content rendered below the header.
Prop Type Default Description asLinkComponent— classNamestring— data-testidstring— headerEndContentReactNode— headingstring— headingHrefstring— hrefstring— logoReactNode— refRef<HTMLElement>— styleCSSProperties— subheadingstring— superheadingstring—
A single navigation item inside a SideNav. Renders as a link when
`href` is provided, or a button otherwise. Supports nested sub-items
via `children` with optional expand/collapse behavior.
Prop Type Default Description actionsReactNode— Independent controls beside the primary target and expand/collapse toggle. Tab order is primary target, toggle (if separate), actions, then children. Hidden in the collapsed rail. Each action owns its disabled state. Use compact controls (for example, Button size="sm") to match row sizing. asLinkComponent— Custom link component used when href is set. childrenReactNode— Nested sub-items rendered below this item. classNamestring— Additional CSS class names applied to the item. data-testidstring— Test ID applied to the item. endContentReactNode— Content rendered at the end of the item (e.g. a badge). hrefstring— Link destination. When set, the item renders as a link. iconIconComponent— Icon rendered before the label. isCollapsiblebooleanfalseWhether the item can expand/collapse its children. isDefaultExpandedbooleantrueWhether the item's children are initially expanded. isDisabledbooleanfalseWhether the item is disabled. isSelectedbooleanfalseWhether the item is currently selected. label* string— Accessible item label, also used as visible text. onClickMouseEventHandler<HTMLElement>— Click handler for the item. refRef<HTMLElement>— Ref forwarded to the root element. styleCSSProperties— Inline styles applied to the item.
Prop Type Default Description children* ReactNode— classNamestring— data-testidstring— endContentReactNode— isHeaderHiddenboolean— refRef<HTMLDivElement>— styleCSSProperties— subtitlestring— title* string—