Design System

Component usage guide template

Browse Components

ui

Sidebar

A composable, themeable and customizable sidebar component.

1. Import
Import the sidebar components from the design system.
import { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarProvider, SidebarRail, SidebarTrigger, } from "@/design-system/components/ui/sidebar";
2. Props
Sidebar component props.
PropTypeDefault
classNamestring--
variant"sidebar" | "floating" | "inset""sidebar"
side"left" | "right""left"
collapsible"offcanvas" | "icon" | "none""offcanvas"
3. Usages
Common sidebar patterns and configurations.

Floating sidebar variant for documentation-style navigation with nested sub-items.

import { AppSidebar } from "./app-sidebar"
import {
  Breadcrumb, BreadcrumbItem, BreadcrumbLink,
  BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator,
} from "@/design-system/components/ui/breadcrumb"
import { Separator } from "@/design-system/components/ui/separator"
import {
  SidebarInset, SidebarProvider, SidebarTrigger,
} from "@/design-system/components/ui/sidebar"

export default function Page() {
  return (
    <SidebarProvider style={{ "--sidebar-width": "19rem" } as React.CSSProperties}>
      <AppSidebar />
      <SidebarInset>
        <header className="flex h-16 items-center gap-2 px-4">
          <SidebarTrigger className="-ml-1" />
          <Separator orientation="vertical" className="mr-2 data-vertical:h-4" />
          <Breadcrumb>
            <BreadcrumbList>
              <BreadcrumbItem className="hidden md:block">
                <BreadcrumbLink href="#">Build Your Application</BreadcrumbLink>
              </BreadcrumbItem>
              <BreadcrumbSeparator className="hidden md:block" />
              <BreadcrumbItem>
                <BreadcrumbPage>Data Fetching</BreadcrumbPage>
              </BreadcrumbItem>
            </BreadcrumbList>
          </Breadcrumb>
        </header>
        <div className="flex flex-1 flex-col gap-4 p-4 pt-0">
          {/* page content */}
        </div>
      </SidebarInset>
    </SidebarProvider>
  )
}