Note: The sidebar is hidden by default on mobile. View these examples on desktop or use the SidebarTrigger to toggle visibility.
Copy to clipboard
Main content area
<Sidebar>
<SidebarHeader>
<div class="flex items-center gap-2 px-2">
<div class="size-6 rounded-md bg-primary"></div>
<span class="font-semibold">Acme Inc</span>
</div>
</SidebarHeader>
<SidebarContent>
<SidebarGroup>
<SidebarGroupLabel>Application</SidebarGroupLabel>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton href="#" isActive>
<span>Home</span>
</SidebarMenuButton>
</SidebarMenuItem>
<SidebarMenuItem>
<SidebarMenuButton href="#">
<span>Inbox</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroup>
</SidebarContent>
<SidebarFooter>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton href="#">
<span>Settings</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarFooter>
</Sidebar>
<Sidebar>
<SidebarHeader>
<div class="flex items-center gap-2 px-2">
<div class="size-6 rounded-md bg-primary"></div>
<span class="font-semibold">Acme Inc</span>
</div>
</SidebarHeader>
<SidebarContent>
<SidebarGroup>
<SidebarGroupLabel>Application</SidebarGroupLabel>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton href="#" isActive>
<span>Home</span>
</SidebarMenuButton>
</SidebarMenuItem>
<SidebarMenuItem>
<SidebarMenuButton href="#">
<span>Inbox</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroup>
</SidebarContent>
<SidebarFooter>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton href="#">
<span>Settings</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarFooter>
</Sidebar> <Sidebar>
<SidebarHeader>
<div class="flex items-center gap-2 px-2">
<div class="size-6 rounded-md bg-primary"></div>
<span class="font-semibold">Acme Inc</span>
</div>
</SidebarHeader>
<SidebarContent>
<SidebarGroup>
<SidebarGroupLabel>Application</SidebarGroupLabel>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton href="#" isActive>
<span>Home</span>
</SidebarMenuButton>
</SidebarMenuItem>
<SidebarMenuItem>
<SidebarMenuButton href="#">
<span>Inbox</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroup>
</SidebarContent>
<SidebarFooter>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton href="#">
<span>Settings</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarFooter>
</Sidebar>
Installation
Copy to clipboard
npx bearnie add sidebar
npx bearnie add sidebar npx bearnie add sidebar
bunx bearnie add sidebar
bunx bearnie add sidebar bunx bearnie add sidebar
pnpm dlx bearnie add sidebar
pnpm dlx bearnie add sidebar pnpm dlx bearnie add sidebar
yarn dlx bearnie add sidebar
yarn dlx bearnie add sidebar yarn dlx bearnie add sidebar
Usage
import {
Sidebar,
SidebarContent,
SidebarFooter,
SidebarGroup,
SidebarGroupLabel,
SidebarHeader,
SidebarMenu,
SidebarMenuButton,
SidebarMenuItem,
} from "@/components/bearnie/sidebar"<Sidebar>
<SidebarHeader>
<span>Logo</span>
</SidebarHeader>
<SidebarContent>
<SidebarGroup>
<SidebarGroupLabel>Menu</SidebarGroupLabel>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton href="/">
<HomeIcon />
<span>Home</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroup>
</SidebarContent>
<SidebarFooter>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton href="/settings">
<SettingsIcon />
<span>Settings</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarFooter>
</Sidebar> Examples
With trigger
Use SidebarTrigger to toggle the sidebar.
Copy to clipboard
<Sidebar defaultOpen={true}>
<SidebarHeader>
<span class="px-2 font-semibold">App</span>
</SidebarHeader>
<SidebarContent>
<SidebarGroup>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton href="#" isActive>
<span>Dashboard</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroup>
</SidebarContent>
</Sidebar>
<!-- In your main content -->
<SidebarTrigger />
<Sidebar defaultOpen={true}>
<SidebarHeader>
<span class="px-2 font-semibold">App</span>
</SidebarHeader>
<SidebarContent>
<SidebarGroup>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton href="#" isActive>
<span>Dashboard</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroup>
</SidebarContent>
</Sidebar>
<!-- In your main content -->
<SidebarTrigger /> <Sidebar defaultOpen={true}>
<SidebarHeader>
<span class="px-2 font-semibold">App</span>
</SidebarHeader>
<SidebarContent>
<SidebarGroup>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton href="#" isActive>
<span>Dashboard</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroup>
</SidebarContent>
</Sidebar>
<!-- In your main content -->
<SidebarTrigger />
Multiple groups
Copy to clipboard
Content
<Sidebar>
<SidebarHeader>
<span class="px-2 font-semibold">Workspace</span>
</SidebarHeader>
<SidebarContent>
<SidebarGroup>
<SidebarGroupLabel>Platform</SidebarGroupLabel>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton href="#" isActive>
<span>Dashboard</span>
</SidebarMenuButton>
</SidebarMenuItem>
<SidebarMenuItem>
<SidebarMenuButton href="#">
<span>Messages</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroup>
<SidebarSeparator />
<SidebarGroup>
<SidebarGroupLabel>Projects</SidebarGroupLabel>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton href="#">
<span>Project Alpha</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroup>
</SidebarContent>
</Sidebar>
<Sidebar>
<SidebarHeader>
<span class="px-2 font-semibold">Workspace</span>
</SidebarHeader>
<SidebarContent>
<SidebarGroup>
<SidebarGroupLabel>Platform</SidebarGroupLabel>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton href="#" isActive>
<span>Dashboard</span>
</SidebarMenuButton>
</SidebarMenuItem>
<SidebarMenuItem>
<SidebarMenuButton href="#">
<span>Messages</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroup>
<SidebarSeparator />
<SidebarGroup>
<SidebarGroupLabel>Projects</SidebarGroupLabel>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton href="#">
<span>Project Alpha</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroup>
</SidebarContent>
</Sidebar> <Sidebar>
<SidebarHeader>
<span class="px-2 font-semibold">Workspace</span>
</SidebarHeader>
<SidebarContent>
<SidebarGroup>
<SidebarGroupLabel>Platform</SidebarGroupLabel>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton href="#" isActive>
<span>Dashboard</span>
</SidebarMenuButton>
</SidebarMenuItem>
<SidebarMenuItem>
<SidebarMenuButton href="#">
<span>Messages</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroup>
<SidebarSeparator />
<SidebarGroup>
<SidebarGroupLabel>Projects</SidebarGroupLabel>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton href="#">
<span>Project Alpha</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroup>
</SidebarContent>
</Sidebar>
Structure
Sidebar- Main container with collapsible stateSidebarHeader- Sticky header sectionSidebarContent- Scrollable content areaSidebarFooter- Sticky footer sectionSidebarGroup- Groups related menu itemsSidebarGroupLabel- Label for a groupSidebarMenu- Menu container (ul)SidebarMenuItem- Menu item wrapper (li)SidebarMenuButton- Clickable menu button/linkSidebarTrigger- Toggle buttonSidebarSeparator- Visual divider
Props
Sidebar
| Prop | Type | Default | Description |
|---|---|---|---|
| side | ”left” | “right" | "left” | Side of the screen |
| collapsible | boolean | true | Whether sidebar can collapse |
| defaultOpen | boolean | true | Initial open state |
| class | string | - | Additional CSS classes |
SidebarMenuButton
| Prop | Type | Default | Description |
|---|---|---|---|
| href | string | - | Link URL (renders as anchor) |
| isActive | boolean | false | Active state styling |
| class | string | - | Additional CSS classes |
SidebarTrigger
| Prop | Type | Default | Description |
|---|---|---|---|
| for | string | - | ID of sidebar to target |
| class | string | - | Additional CSS classes |
Theming
The sidebar uses dedicated CSS variables for theming:
:root {
--sidebar: oklch(0.985 0 0);
--sidebar-foreground: oklch(0.145 0 0);
--sidebar-accent: oklch(0.97 0 0);
--sidebar-accent-foreground: oklch(0.205 0 0);
--sidebar-border: oklch(0.922 0 0);
--sidebar-ring: oklch(0.708 0 0);
}
.dark {
--sidebar: oklch(0.205 0 0);
--sidebar-foreground: oklch(0.985 0 0);
--sidebar-accent: oklch(0.269 0 0);
--sidebar-accent-foreground: oklch(0.985 0 0);
--sidebar-border: oklch(1 0 0 / 10%);
--sidebar-ring: oklch(0.439 0 0);
}