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.RootclassName="h-screen">
<Sidebar.Header>
{/* Your logo and search component */}
<SidebarSearchlogo={<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.Grouptitle="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 */}
<divclassName="flex-1">
<divclassName="border-b flex items-center">
<Sidebar.Trigger />
<Sidebar.Separatororientation="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: