Skip to content
Drivn

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).
collapsedboolean—Controlled collapsed state. Use with onCollapsedChange.
onCollapsedChange(collapsed: boolean) => void—Callback when collapsed state changes.
variant'default' | 'floating''default'Visual style variant.
side'left' | 'right''left'Which side the sidebar is on.
classNamestring—Additional CSS classes to apply.

Sidebar.Header

PropTypeDefaultDescription
childrenReactNode—Header content (logo, branding).
classNamestring—Additional CSS classes to apply.

Sidebar.Content

PropTypeDefaultDescription
childrenReactNode—Scrollable content area.
classNamestring—Additional CSS classes to apply.

Sidebar.Footer

PropTypeDefaultDescription
childrenReactNode—Footer content (user info, settings).
classNamestring—Additional CSS classes to apply.

Sidebar.Group

PropTypeDefaultDescription
headingstring—Group label text. Hidden when sidebar is collapsed.
defaultOpenbooleantrueWhether the group starts expanded.
collapsiblebooleantrueWhether the group heading toggles content visibility.
classNamestring—Additional CSS classes to apply.

Sidebar.Item

PropTypeDefaultDescription
iconComponentType | ReactElement—Icon component reference or JSX element.
activebooleanfalseWhether the item is currently active.
badgestring | number—Badge content displayed on the right side.
childrenReactNode—Item label text.
classNamestring—Additional CSS classes to apply.

Sidebar.Separator

PropTypeDefaultDescription
classNamestring—Additional CSS classes to apply.

Sidebar.CollapseButton

PropTypeDefaultDescription
classNamestring—Additional CSS classes to apply.