import { EventEmitter } from '@angular/core'; import { DomSanitizer, SafeHtml } from '@angular/platform-browser'; import { ButtonVariant } from '../button/button'; import * as i0 from "@angular/core"; export type HeaderNavLevel = 'main' | 'sub-page' | 'not-logged'; /** * A navigation item used for both breadcrumbs and action buttons. * - Breadcrumb: provide `id` and `label`. * - Action button: provide `id`, `label`, and optionally `variant`. */ export interface NavAction { /** Stable identifier emitted by the `action` output when this item is clicked. */ id: string; /** Text displayed in the breadcrumb trail or on the action button. */ label: string; /** Button style for action buttons. Defaults to `'filled'` when omitted. Not used for breadcrumbs. */ variant?: ButtonVariant; /** Lucide icon shown before the label (e.g. `'house'`). Not used for breadcrumbs. */ leadingIcon?: string; /** Lucide icon shown after the label (e.g. `'chevron-right'`). Not used for breadcrumbs. */ trailingIcon?: string; /** Renders the action button disabled. */ disabled?: boolean; /** Renders the action button in a loading state (spinner, interaction blocked). */ loading?: boolean; } /** * Header Navigation — top app bar from the ComPsych Design System. * * Three layout levels controlled by `level`: * - `'main'` — menu toggle, brand logo + wordmark, logged-in action cluster. * - `'sub-page'` — menu toggle, logo mark + breadcrumb trail, logged-in action cluster. * - `'not-logged'` — menu toggle, brand, public action cluster (language, help, CTA buttons). * * All interactive elements emit a string id via the `action` output. * For breadcrumbs and action buttons the emitted value is the `NavAction.id`. * For built-in icon buttons a fixed string is emitted (see `action` docs). */ export declare class HeaderNavComponent { private readonly sanitizer; /** * Layout and feature set of the header. * - `'main'` — logo + brand label, logged-in action cluster (search, notifications, documents, language, avatar, logout). * - `'sub-page'` — symbol mark + breadcrumb trail, same logged-in action cluster. * - `'not-logged'` — logo + brand label, public action cluster (language, help, action buttons). */ level: HeaderNavLevel; /** Whether the paired sidebar is open — toggles the menu icon (☰ ↔ ✕). */ sidebarOpen: boolean; /** Show the hamburger / close menu toggle button. */ showMenuToggle: boolean; /** Accessible label for the brand area (logo + wordmark) used by screen readers. */ brandLabelAria: string; /** Brand wordmark text rendered next to the logo on `main` and `not-logged` levels. */ brandLabel: string; /** Optional hex color (e.g. `'#ff0000'`) applied to the brand label text. Overrides the default inherited color. */ brandLabelColor?: string; /** * URL of a client logo image. When provided, replaces the ComPsych SVG logo * with an `` at the same position. The image receives `brandLabelAria` * as its accessible label. */ clientLogoUrl?: string; /** * Ordered breadcrumb trail rendered at `'sub-page'` level. * Each item requires `id` and `label`. The last item is the current page * (non-interactive). All preceding items are buttons that emit their `id` * via the `action` output when clicked. */ breadcrumbs: NavAction[]; /** Notification badge count. Badge is hidden when 0. */ notificationCount: number; /** Avatar initials for the logged-in user. */ avatarInitials: string; /** Show the search icon button (logged-in levels). */ showSearch: boolean; /** Show the calendar-check icon button (logged-in levels). */ showCalendarChecked: boolean; /** Show the notifications icon button (logged-in levels). */ showNotifications: boolean; /** Show the documents icon button (logged-in levels). */ showDocuments: boolean; /** Show the avatar button (logged-in levels). */ showAvatar: boolean; /** Show the language icon button (main, sub-page, and not-logged levels). */ showLanguage: boolean; /** Show the help icon button (not-logged level). */ showHelp: boolean; /** Show the logout icon button (main and sub-page levels). */ showLogout: boolean; /** * Additional configurable buttons rendered in the actions area. * Each entry requires `id` and `label`; `variant` defaults to `'filled'`. * Clicking any button emits its `id` via the `action` output. */ actionButtons: NavAction[]; /** * Emitted as a string whenever any interactive element is activated. * Fixed values for built-in controls: * - `'menu-toggle'` — hamburger / close button * - `'logo'` — brand / logo button * - `'search'` — search icon button * - `'calendar-checked'` — calendar-check icon button * - `'notifications'` — notifications icon button * - `'documents'` — documents icon button * - `'language'` — language icon button * - `'help'` — help icon button * - `'avatar'` — avatar button * - `'logout'` — logout icon button * * For `breadcrumbs` and `actionButtons` items, the item's `NavAction.id` is emitted. */ readonly action: EventEmitter; readonly searchIconSvg: SafeHtml; readonly calendarCheckedIconSvg: SafeHtml; readonly bellIconSvg: SafeHtml; readonly fileTextIconSvg: SafeHtml; readonly globeIconSvg: SafeHtml; readonly helpIconSvg: SafeHtml; readonly logOutIconSvg: SafeHtml; readonly userIconSvg: SafeHtml; constructor(sanitizer: DomSanitizer); get isLoggedOut(): boolean; get isSubPage(): boolean; get menuIconSvg(): SafeHtml; get badgeText(): string; get notificationAriaLabel(): string; /** * Looks up a Lucide icon by name and injects explicit width/height attributes * (default 20 × 20) 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 CSS descendant selectors targeting `svg` would * not apply — explicit SVG attributes are the reliable solution. */ private trustedIcon; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }