import { FC, ReactNode } from 'react';
/**
* Sidebar Item Interface
*
* Represents a single item in the sidebar navigation.
*/
export interface SidebarItem {
/** Unique identifier */
id: string;
/** Item label */
label: string;
/** Optional icon */
icon?: ReactNode;
/** Optional badge */
badge?: string | number;
/** Whether item is active */
isActive?: boolean;
/** Whether item is disabled */
disabled?: boolean;
/** Click handler */
onClick?: () => void;
/** Optional href for native links */
href?: string;
}
/**
* Sidebar Section Interface
*
* Represents a collapsible section in the sidebar.
*/
export interface SidebarSection {
/** Section title */
title: string;
/** Section items */
items: SidebarItem[];
/** Whether section is initially collapsed */
defaultCollapsed?: boolean;
/** Whether section can be collapsed */
collapsible?: boolean;
}
/**
* Sidebar Props Interface
*
* Generic sidebar navigation component that accepts all data via props.
* No dependencies on routing libraries - pure presentation component.
*/
export interface SidebarProps {
/** Sidebar sections */
sections: SidebarSection[];
/** Whether sidebar is collapsed (icon-only mode) */
isCollapsed?: boolean;
/** Collapse toggle handler */
onToggleCollapse?: () => void;
/** Header content (logo, branding) */
header?: ReactNode;
/** Footer content (user menu, settings) */
footer?: ReactNode;
/** Additional CSS classes */
className?: string;
/** Width when expanded */
width?: string;
/** Width when collapsed */
collapsedWidth?: string;
}
/**
* Sidebar Component
*
* Generic sidebar navigation for app shells. Pure presentation component
* that accepts all data via props.
*
* Features:
* - Collapsible sections
* - Collapsed/expanded states (icon-only mode)
* - Active state indication
* - Icon and badge support
* - Header and footer slots
* - Smooth transitions
* - Accessible navigation
*
* Uses semantic tokens for styling, which must be provided by the shell.
*
* @example
* ```tsx
* , isActive: true },
* { id: 'projects', label: 'Projects', icon: , badge: 5 }
* ]
* },
* {
* title: 'Settings',
* collapsible: true,
* items: [
* { id: 'preferences', label: 'Preferences', icon: }
* ]
* }
* ]}
* isCollapsed={isSidebarCollapsed}
* onToggleCollapse={toggleSidebar}
* header={}
* footer={}
* />
* ```
*/
export declare const Sidebar: FC;
//# sourceMappingURL=Sidebar.d.ts.map