UIIcons

Sidebar

A collapsible application sidebar with support for navigation groups, badges, tooltips, and multiple layout variants.

Main content area

Installation

pnpm dlx stera-ui@latest add sidebar

Usage

Wrap your layout with SidebarProvider and use SidebarInset for the main content area.

import {
  Sidebar,
  SidebarContent,
  SidebarGroup,
  SidebarGroupLabel,
  SidebarMenu,
  SidebarMenuItem,
  SidebarMenuButton,
  SidebarProvider,
  SidebarInset,
  SidebarTrigger,
} from "@/components/ui/sidebar"
<SidebarProvider>
  <Sidebar>
    <SidebarContent>
      <SidebarGroup>
        <SidebarGroupLabel>Application</SidebarGroupLabel>
        <SidebarMenu>
          <SidebarMenuItem>
            <SidebarMenuButton isActive render={<a href="/" />}>
              <SiHome />
              <span>Home</span>
            </SidebarMenuButton>
          </SidebarMenuItem>
        </SidebarMenu>
      </SidebarGroup>
    </SidebarContent>
  </Sidebar>
  <SidebarInset>
    <header className="flex h-16 items-center gap-2 border-b px-4">
      <SidebarTrigger />
    </header>
    {/* page content */}
  </SidebarInset>
</SidebarProvider>

Composition

Use the following composition to build a Sidebar layout:

SidebarProvider
├── Sidebar
│   ├── SidebarHeader
│   │   ├── SidebarMenuItem
│   │   ├── SidebarMenuButton
│   │   └── SidebarMenuBadge
│   ├── SidebarContent
│   │   ├── SidebarGroup
│   │   │   ├── SidebarGroupLabel
│   │   │   ├── SidebarGroupAction
│   │   │   ├── SidebarGroupContent
│   │   │   └── SidebarMenu
│   │   │       ├── SidebarMenuItem
│   │   │       │   ├── SidebarMenuButton
│   │   │       │   ├── SidebarMenuAction
│   │   │       │   └── SidebarMenuBadge
│   │   │       └── SidebarMenuItem
│   │   │           ├── SidebarMenuButton
│   │   │           └── SidebarMenuSub
│   │   │               ├── SidebarMenuSubItem
│   │   │               └── SidebarMenuSubItem
│   │   └── SidebarGroup
│   │       └── SidebarMenu
│   │           ├── SidebarMenuItem
│   │           └── SidebarMenuItem
│   ├── SidebarFooter
│   └── SidebarRail
├── SidebarInset
└── SidebarTrigger

With Badge

Main content area

Use SidebarMenuBadge to display a count or status indicator next to a menu item.

Variants

Main content area

The variant prop controls the sidebar's visual style. Use "floating" for a detached sidebar with rounded corners and a shadow.

API Reference

PropTypeDefault
variant"sidebar" | "floating" | "inset""sidebar"
collapsible"offcanvas" | "icon" | "none""offcanvas"
side"left" | "right""left"

SidebarProvider

PropTypeDefault
openboolean
defaultOpenbooleantrue
onOpenChange(open: boolean) => void

SidebarMenuButton

PropTypeDefault
isActivebooleanfalse
size"default" | "sm" | "lg""default"
tooltipstring
renderReactElement

Subcomponents

ComponentDescription
SidebarHeaderTop section of the sidebar
SidebarContentScrollable middle section
SidebarFooterBottom section of the sidebar
SidebarGroupLogical section within SidebarContent
SidebarGroupLabelLabel for a sidebar group
SidebarMenuList of menu items
SidebarMenuItemSingle menu item wrapper
SidebarMenuBadgeCount/status badge on a menu item
SidebarMenuActionAction button shown on hover
SidebarMenuSubNested sub-menu container
SidebarMenuSubItemItem within a sub-menu
SidebarMenuSubButtonButton for a sub-menu item
SidebarMenuSkeletonLoading placeholder for a menu item
SidebarRailThin rail for collapse-to-icon mode
SidebarTriggerButton to toggle the sidebar open/closed
SidebarInsetMain content area paired with the sidebar