bearnie

Sidebar

A composable sidebar component for application navigation.

Note: The sidebar is hidden by default on mobile. View these examples on desktop or use the SidebarTrigger to toggle visibility.

Main content area

Installation

npx bearnie add sidebar
npx bearnie add sidebar

Usage

import {
Sidebar,
SidebarContent,
SidebarFooter,
SidebarGroup,
SidebarGroupLabel,
SidebarHeader,
SidebarMenu,
SidebarMenuButton,
SidebarMenuItem,
} from "@/components/ui/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.

Multiple groups

Content

Structure

  • Sidebar - Main container with collapsible state
  • SidebarHeader - Sticky header section
  • SidebarContent - Scrollable content area
  • SidebarFooter - Sticky footer section
  • SidebarGroup - Groups related menu items
  • SidebarGroupLabel - Label for a group
  • SidebarMenu - Menu container (ul)
  • SidebarMenuItem - Menu item wrapper (li)
  • SidebarMenuButton - Clickable menu button/link
  • SidebarTrigger - Toggle button
  • SidebarSeparator - Visual divider

Props

PropTypeDefaultDescription
side”left” | “right""left”Side of the screen
collapsiblebooleantrueWhether sidebar can collapse
defaultOpenbooleantrueInitial open state
classstring-Additional CSS classes

SidebarMenuButton

PropTypeDefaultDescription
hrefstring-Link URL (renders as anchor)
isActivebooleanfalseActive state styling
classstring-Additional CSS classes

SidebarTrigger

PropTypeDefaultDescription
forstring-ID of sidebar to target
classstring-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);
}