Sidebar

Lockness UI Component

VIEW

DOCUMENTATION

Sidebar

Documentation for the Sidebar component.

Installation

bash
deno run -A jsr:@lockness/ui add sidebar

Usage

tsx
import {
  SidebarProvider,
  Sidebar,
  SidebarHeader,
  SidebarContent,
  SidebarMenu,
  SidebarMenuItem,
  SidebarMenuButton,
  SidebarInset
} from '@lockness/ui/components'

<SidebarProvider>
  <Sidebar>
    <SidebarHeader>
      <SidebarMenu>
        <SidebarMenuItem>
          <SidebarMenuButton href="/">Home</SidebarMenuButton>
        </SidebarMenuItem>
      </SidebarMenu>
    </SidebarHeader>
    <SidebarContent>
      <SidebarMenu>
        <SidebarMenuItem>
          <SidebarMenuButton href="/docs">Docs</SidebarMenuButton>
        </SidebarMenuItem>
        <SidebarMenuItem>
          <SidebarMenuButton href="/settings">Settings</SidebarMenuButton>
        </SidebarMenuItem>
      </SidebarMenu>
    </SidebarContent>
  </Sidebar>
  <SidebarInset>Main content</SidebarInset>
</SidebarProvider>

Props

SidebarProvider

PropTypeDefaultDescription
defaultOpenbooleantrueWhether the sidebar is open by default
side'left' | 'right''left'Which side the sidebar appears on
classstring-Additional CSS class names
styleRecord<string, string | number>-Inline styles (including CSS custom properties)
childrenunknown-Provider content (Sidebar and SidebarInset)

Sidebar

PropTypeDefaultDescription
side'left' | 'right''left'Which side the sidebar appears on
variant'sidebar' | 'floating' | 'inset''sidebar'Visual style variant
collapsible'offcanvas' | 'icon' | 'none''offcanvas'Collapse behavior
topOffsetstring-Top offset for navbar (e.g., '16' for 4rem/64px navbar)
classstring-Additional CSS class names
childrenunknown-Sidebar content

SidebarTrigger

PropTypeDefaultDescription
classstring-Additional CSS class names
childrenunknown-Custom trigger content (defaults to sidebar icon)

SidebarRail

PropTypeDefaultDescription
classstring-Additional CSS class names

INTERACTIVE DEMO

Interactive Sidebar Demo

⌘/Ctrl + B to toggle • Click trigger button • Hover over icons in collapsed mode

FEATURES

🎯 Collapsible

Three modes: offcanvas (mobile), icon (collapsed), none (fixed)

⌨️ Keyboard

Cmd/Ctrl + B shortcut for quick toggle

🔄 Persistent

State saved in localStorage across sessions

🎨 Themeable

CSS variables for full theme customization

📱 Responsive

Overlay on mobile, docked on desktop

🧩 Composable

17+ sub-components for flexible layouts

BASIC USAGE

tsx
import {
  SidebarProvider,
  Sidebar,
  SidebarContent,
  SidebarGroup,
  SidebarGroupContent,
  SidebarMenu,
  SidebarMenuButton,
  SidebarMenuItem,
} from '@lockness/ui/components'

<SidebarProvider>
  <Sidebar>
    <SidebarContent>
      <SidebarGroup>
        <SidebarGroupContent>
          <SidebarMenu>
            <SidebarMenuItem>
              <SidebarMenuButton href="/home">
                Home
              </SidebarMenuButton>
            </SidebarMenuItem>
          </SidebarMenu>
        </SidebarGroupContent>
      </SidebarGroup>
    </SidebarContent>
  </Sidebar>
  <SidebarInset>
    <main>Your content</main>
  </SidebarInset>
</SidebarProvider>

WITH UNPOLY

tsx
<SidebarMenuButton href="/dashboard">
  Dashboard
</SidebarMenuButton>

// Automatically includes:
// - up-follow for AJAX navigation
// - up-nav for active state detection

THEMING

css
--sidebar: oklch(0.97 0.005 240)
--sidebar-foreground: oklch(0.15 0.020 240)
--sidebar-primary: oklch(0.35 0.080 240)
--sidebar-primary-foreground: oklch(0.98 0.005 240)
--sidebar-accent: oklch(0.95 0.010 240)
--sidebar-accent-foreground: oklch(0.25 0.020 240)
--sidebar-border: oklch(0.90 0.010 240)
--sidebar-ring: oklch(0.35 0.080 240)