A composable, themeable and customizable sidebar component.
Loading...
"use client"
import {Installation
pnpmnpmyarnbun
Structure
A Sidebar component is composed of the following parts:
SidebarProvider- Handles collapsible state.Sidebar- The sidebar container.SidebarHeaderandSidebarFooter- Sticky at the top and bottom of the sidebar.SidebarContent- Scrollable content.SidebarGroup- Section within theSidebarContent.SidebarTrigger- Trigger for theSidebar.
SidebarMenu
The SidebarMenu component is used for building a menu within a SidebarGroup.
A SidebarMenu is composed of SidebarMenuItem, SidebarMenuButton, SidebarMenuAction and SidebarMenuSub components.
For advanced usage, theming, and more examples, see the complete shadcn documentation.
Usage
import {
Sidebar,
SidebarContent,
SidebarGroup,
SidebarGroupContent,
SidebarGroupLabel,
SidebarMenu,
SidebarMenuButton,
SidebarMenuItem,
SidebarProvider,
SidebarTrigger,
} from "@/components/ui/sidebar"<SidebarProvider>
<Sidebar>
<SidebarContent>
<SidebarGroup>
<SidebarGroupLabel>Application</SidebarGroupLabel>
<SidebarGroupContent>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton>
<HomeIcon />
<span>Home</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroupContent>
</SidebarGroup>
</SidebarContent>
</Sidebar>
<main>
<SidebarTrigger />
{/* Your content */}
</main>
</SidebarProvider>API Reference
Components
SidebarProvider
Sidebar
SidebarMenuButton
useSidebar Hook
Returns sidebar context with state and controls.
const {
state, // "expanded" | "collapsed"
open, // boolean
setOpen, // (open: boolean) => void
isMobile, // boolean
openMobile, // boolean
setOpenMobile, // (open: boolean) => void
toggleSidebar, // () => void
} = useSidebar()Features
- Keyboard shortcut:
Ctrl+B/Cmd+Bto toggle - Mobile responsive: Sheet-based sidebar on mobile
- Cookie persistence: Remembers open/closed state
- Collapsible modes: Offcanvas, icon-only, or fixed
- Theming: Full CSS variable support for colors