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
constSidebarExample= () => {
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={<Icon name="dashboard" size={14} />}
/>
</Sidebar.MenuButton>
</Sidebar.MenuItem>
<Sidebar.MenuItem>
<Sidebar.MenuButton>
<Sidebar.MenuItemText
text="Projects"
icon={<Icon name="folder" size={14} />}
/>
</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={<Icon name="folder" size={14} />}
/>
</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: