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;
}