Skip to content
Harness Design System Harness Design System Harness Design System

Sidebar

beta

The Sidebar component provides a responsive, collapsible navigation interface that can be used for application navigation. It supports various states including expanded, collapsed, and mobile views with offcanvas functionality.

Usage

import { Sidebar } from '@harnessio/ui/components'
// Basic usage with all main components
const SidebarExample = () => {
return (
<Sidebar.Provider>
<Sidebar.Root className="h-screen">
<Sidebar.Header>
{/* Your logo and search component */}
<SidebarSearch logo={<YourLogo />} />
</Sidebar.Header>
<Sidebar.Content>
{/* Main navigation items */}
<Sidebar.Group>
<Sidebar.GroupContent>
<Sidebar.Menu>
<Sidebar.MenuItem>
<Sidebar.MenuButton>
<Sidebar.MenuItemText
text="Dashboard"
icon={<IconV2 name="dashboard" size="sm" />}
/>
</Sidebar.MenuButton>
</Sidebar.MenuItem>
<Sidebar.MenuItem>
<Sidebar.MenuButton>
<Sidebar.MenuItemText
text="Projects"
icon={<IconV2 name="folder" size="sm" />}
/>
</Sidebar.MenuButton>
</Sidebar.MenuItem>
</Sidebar.Menu>
</Sidebar.GroupContent>
</Sidebar.Group>
{/* Grouped navigation items */}
<Sidebar.Group title="Recent">
<Sidebar.GroupLabel>Recent</Sidebar.GroupLabel>
<Sidebar.GroupContent>
<Sidebar.Menu>
<Sidebar.MenuItem>
<Sidebar.MenuButton>
<Sidebar.MenuItemText
text="Project Alpha"
icon={<IconV2 name="folder" size="sm" />}
/>
</Sidebar.MenuButton>
</Sidebar.MenuItem>
</Sidebar.Menu>
</Sidebar.GroupContent>
</Sidebar.Group>
</Sidebar.Content>
<Sidebar.Footer>
{/* User profile or other footer content */}
<UserProfile />
</Sidebar.Footer>
<Sidebar.Rail />
</Sidebar.Root>
{/* Main content area */}
<div className="flex-1">
<div className="border-b flex items-center">
<Sidebar.Trigger />
<Sidebar.Separator orientation="vertical" />
{/* Breadcrumb or other header content */}
</div>
<main>
{/* Your main application content */}
</main>
</div>
</Sidebar.Provider>
)
}

Anatomy

The Sidebar component is composed of several nested components that work together to create a complete navigation interface:

<Sidebar.Provider>
<Sidebar.Root>
<Sidebar.Header />
<Sidebar.Content>
<Sidebar.Group>
<Sidebar.GroupLabel />
<Sidebar.GroupContent>
<Sidebar.Menu>
<Sidebar.MenuItem>
<Sidebar.MenuButton>
<Sidebar.MenuItemText />
</Sidebar.MenuButton>
</Sidebar.MenuItem>
</Sidebar.Menu>
</Sidebar.GroupContent>
</Sidebar.Group>
</Sidebar.Content>
<Sidebar.Footer />
<Sidebar.Rail />
</Sidebar.Root>
<Sidebar.Trigger />
<Sidebar.Separator />
</Sidebar.Provider>

API Reference

Sidebar.Provider

Prop
Required
Default
Type
childrentrueReactNode
classNamefalsestring
defaultCollapsedfalseboolean
defaultMobileOpenfalseboolean
openfalseboolean
onOpenChangefalse(open: boolean) => void

Sidebar.Root

Prop
Required
Default
Type
childrentrueReactNode
classNamefalsestring
sidefalse'left' | 'right'
variantfalse'sidebar' | 'floating' | 'inset'
collapsiblefalse'offcanvas' | 'icon' | 'none'

Sidebar.Header

Prop
Required
Default
Type
childrentrueReactNode
classNamefalsestring

Sidebar.Content

Prop
Required
Default
Type
childrentrueReactNode
classNamefalsestring

Sidebar.Group

Prop
Required
Default
Type
childrentrueReactNode
classNamefalsestring
titlefalsestring

Sidebar.GroupLabel

Prop
Required
Default
Type
childrentrueReactNode
classNamefalsestring
asChildfalseboolean

Sidebar.GroupAction

Prop
Required
Default
Type
childrentrueReactNode
classNamefalsestring
asChildfalseboolean

Sidebar.GroupContent

Prop
Required
Default
Type
childrentrueReactNode
classNamefalsestring

Sidebar.Menu

Prop
Required
Default
Type
childrentrueReactNode
classNamefalsestring

Sidebar.MenuItem

Prop
Required
Default
Type
childrentrueReactNode
classNamefalsestring

Sidebar.MenuButton

Prop
Required
Default
Type
childrentrueReactNode
classNamefalsestring
onClickfalse() => void
activefalseboolean
asChildfalseboolean
isActivefalseboolean
tooltipfalsestring | ComponentProps<typeof Tooltip.Content>
variantfalse'default' | 'outline'
sizefalse'default' | 'sm' | 'lg'

Sidebar.MenuItemText

Prop
Required
Default
Type
texttruestring
iconfalseReactElement<SVGSVGElement>
classNamefalsestring
activefalseboolean

Sidebar.MenuAction

Prop
Required
Default
Type
childrentrueReactNode
classNamefalsestring
asChildfalseboolean
showOnHoverfalseboolean

Sidebar.MenuBadge

Prop
Required
Default
Type
childrentrueReactNode
classNamefalsestring

Sidebar.MenuSkeleton

Prop
Required
Default
Type
classNamefalsestring
showIconfalseboolean

Sidebar.MenuSub

Prop
Required
Default
Type
childrentrueReactNode
classNamefalsestring

Sidebar.MenuSubItem

Prop
Required
Default
Type
childrentrueReactNode
classNamefalsestring

Sidebar.MenuSubButton

Prop
Required
Default
Type
childrentrueReactNode
classNamefalsestring
asChildfalseboolean
sizefalse'sm' | 'md'
isActivefalseboolean

Sidebar.Footer

Prop
Required
Default
Type
childrentrueReactNode
classNamefalsestring

Sidebar.Rail

Prop
Required
Default
Type
classNamefalsestring

Sidebar.Trigger

Prop
Required
Default
Type
classNamefalsestring
onClickfalse() => void

Sidebar.Separator

Prop
Required
Default
Type
orientationfalse'horizontal' | 'vertical'
classNamefalsestring

Sidebar.Input

Prop
Required
Default
Type
classNamefalsestring
placeholderfalsestring

Sidebar.Inset

Prop
Required
Default
Type
childrentrueReactNode
classNamefalsestring