Skip to content
Drivn logoDrivn

Sidebar

Collapsible navigation sidebar with dot notation, icon items, groups, and layout variants.

Preview

Dashboard

Your main content goes here.

Installation

npx drivn add sidebar

Usage

1import { Sidebar } from "@/components/ui/sidebar"
2import { Home, Settings, Users, Inbox, PanelLeft } from "lucide-react"
3
4export default function Layout({ children }) {
5 const [collapsed, setCollapsed] = React.useState(false)
6
7 return (
8 <div className="flex min-h-svh">
9 <Sidebar collapsed={collapsed} onCollapsedChange={setCollapsed}>
10 <Sidebar.Header>
11 <span className="text-sm font-semibold">Drivn</span>
12 </Sidebar.Header>
13 <Sidebar.Content>
14 <Sidebar.Group heading="Menu">
15 <Sidebar.Item icon={Home} active>Dashboard</Sidebar.Item>
16 <Sidebar.Item icon={Inbox} badge={3}>Inbox</Sidebar.Item>
17 <Sidebar.Item icon={Users}>Team</Sidebar.Item>
18 </Sidebar.Group>
19 </Sidebar.Content>
20 </Sidebar>
21 <main className="flex-1">
22 <header className="flex items-center gap-3 px-4 py-3 border-b">
23 <button onClick={() => setCollapsed(!collapsed)}>
24 <PanelLeft className="w-4 h-4" />
25 </button>
26 <h1>Dashboard</h1>
27 </header>
28 <div className="p-6">{children}</div>
29 </main>
30 </div>
31 )
32}

Default

Standard sidebar with a right border.

Page

Content area

Floating

Rounded corners, shadow, and margin for a detached look.

Page

Content area

Collapsible

Use controlled state to toggle between expanded and collapsed views.

Dashboard

Toggle via the icon or the sidebar collapse button.

Groups

Organize items into labeled, collapsible groups.

Icons & Badges

Items support icon components and badge indicators.

API Reference

Sidebar

PropTypeDefaultDescription
defaultCollapsedbooleanfalseWhether the sidebar starts collapsed (uncontrolled).
collapsedbooleanControlled collapsed state. Use with onCollapsedChange.
onCollapsedChange(collapsed: boolean) => voidCallback when collapsed state changes.
variant'default' | 'floating''default'Visual style variant.
side'left' | 'right''left'Which side the sidebar is on.
classNamestringAdditional CSS classes to apply.

Sidebar.Header

PropTypeDefaultDescription
childrenReactNodeHeader content (logo, branding).
classNamestringAdditional CSS classes to apply.

Sidebar.Content

PropTypeDefaultDescription
childrenReactNodeScrollable content area.
classNamestringAdditional CSS classes to apply.

Sidebar.Footer

PropTypeDefaultDescription
childrenReactNodeFooter content (user info, settings).
classNamestringAdditional CSS classes to apply.

Sidebar.Group

PropTypeDefaultDescription
headingstringGroup label text. Hidden when sidebar is collapsed.
defaultOpenbooleantrueWhether the group starts expanded.
collapsiblebooleantrueWhether the group heading toggles content visibility.
classNamestringAdditional CSS classes to apply.

Sidebar.Item

PropTypeDefaultDescription
iconComponentType | ReactElementIcon component reference or JSX element.
activebooleanfalseWhether the item is currently active.
badgestring | numberBadge content displayed on the right side.
childrenReactNodeItem label text.
classNamestringAdditional CSS classes to apply.

Sidebar.Separator

PropTypeDefaultDescription
classNamestringAdditional CSS classes to apply.

Sidebar.CollapseButton

PropTypeDefaultDescription
classNamestringAdditional CSS classes to apply.