import { DomSanitizer, SafeHtml } from '@angular/platform-browser'; import * as i0 from "@angular/core"; export interface SidebarItem { /** Stable identifier used by `activeId` and emitted by `itemClick`. */ id: string; /** Text label displayed next to the icon. */ label: string; /** Lucide icon name (kebab-case), e.g. `'house'` or `'folder'`. */ icon: string; /** Child items — renders this item as an expandable group with a chevron toggle. Child items cannot have their own children. */ children?: SidebarItem[]; /** When true, renders a horizontal divider above this item in the list. */ dividerBefore?: boolean; /** When true, the item is non-interactive — it cannot be clicked and receives no hover or active styling. */ disabled?: boolean; /** * When true, clicking the item emits `itemClick` but does not highlight it * as active or update `activeId`. Use for action items (e.g. logout) * that are not navigation destinations. */ nonRoute?: boolean; } /** * Sidebar — vertical app navigation from the ComPsych Design System. * * Figma: Core Components — base 260:4700, parts 213:1585. * * Icon + label items with default / hover / selected / focus / disabled states, * section dividers, expandable groups (chevron), and a pinned footer * (location & language, logout). Data-driven via `items` / `footerItems`, * defaulting to the design's content. All values are sys tokens. */ export declare class SidebarComponent { private readonly sanitizer; /** Navigation items rendered in the scrollable main area. Defaults to the standard ComPsych nav set. */ readonly items: import("@angular/core").InputSignal; /** Items pinned to the bottom of the sidebar, outside the scroll region. Intended for utility actions such as language selection and logout. */ readonly footerItems: import("@angular/core").InputSignal; /** Currently active item id — supports two-way binding via `[(activeId)]`. Updated on click for route items; unchanged for `nonRoute` items. */ readonly activeId: import("@angular/core").ModelSignal; /** * Emitted with the item's `id` when a non-disabled action (`nonRoute`) item is clicked. * Navigation (route) items do not emit — they update `activeId` instead (bind via `[(activeId)]`). * Group items (those with `children`) do not emit — they only toggle their expanded state. */ readonly itemClick: import("@angular/core").OutputEmitterRef; private readonly expanded; constructor(sanitizer: DomSanitizer); isExpanded(id: string): boolean; isActive(id: string): boolean; onItemClick(item: SidebarItem): void; /** * Looks up a Lucide icon by name and injects explicit width/height attributes * so the SVG renders at the correct size when injected via [innerHTML]. * Angular's CSS encapsulation does not add _ngcontent attributes to dynamically * injected content, so explicit SVG attributes are the reliable solution. */ iconSvg(name: string, size?: number, strokeWidth?: number): SafeHtml; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }