@pecb-ui/components 1.1.5 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { ElementRef, ChangeDetectorRef, TemplateRef, Type, OnInit, OnDestroy, AfterViewInit, QueryList, OnChanges } from '@angular/core';
2
+ import { ElementRef, ChangeDetectorRef, TemplateRef, Type, OnDestroy, AfterViewInit, QueryList, OnInit, OnChanges } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import * as _angular_platform_browser from '@angular/platform-browser';
5
5
  import { SafeHtml, DomSanitizer } from '@angular/platform-browser';
@@ -7,7 +7,7 @@ import { ControlValueAccessor } from '@angular/forms';
7
7
  import { Observable } from 'rxjs';
8
8
 
9
9
  type ButtonVariant = 'primary' | 'primary-outline' | 'primary-2' | 'primary-2-outline' | 'neutral' | 'neutral-outline' | 'secondary' | 'text' | 'text-muted' | 'text-brand' | 'destructive' | 'destructive-outline';
10
- type ButtonSize = 'sm' | 'md' | 'lg';
10
+ type ButtonSize = 'sm' | 'md' | 'lg' | 'xl';
11
11
  type ButtonIconStyle = 'none' | 'leading' | 'trailing' | 'icon-only';
12
12
  declare class ButtonComponent {
13
13
  private readonly sanitizer;
@@ -203,8 +203,24 @@ declare class PaginationComponent {
203
203
  maxVisiblePages: _angular_core.InputSignal<number>;
204
204
  disabled: _angular_core.InputSignal<boolean>;
205
205
  ariaLabel: _angular_core.InputSignal<string>;
206
+ /** Aria-label for the "previous page" button. */
207
+ previousPageAriaLabel: _angular_core.InputSignal<string>;
208
+ /** Aria-label for the "next page" button. */
209
+ nextPageAriaLabel: _angular_core.InputSignal<string>;
210
+ /** Aria-label for the page-number button group (`role="group"`). */
211
+ pageNavigationAriaLabel: _angular_core.InputSignal<string>;
212
+ /** Aria-label prefix for each page-number button. Rendered as `<this> <n>`. */
213
+ pageAriaLabel: _angular_core.InputSignal<string>;
214
+ /** Aria-label for the page-size listbox menu. */
215
+ pageSizeListboxAriaLabel: _angular_core.InputSignal<string>;
216
+ /** Visible "items per page" label next to the size selector. */
217
+ itemsPerPageLabel: _angular_core.InputSignal<string>;
218
+ /** Template for the items-info text (full/compact variants). Placeholders:
219
+ * `{start}`, `{end}`, `{total}` — replaced with the current values. */
220
+ itemsInfoTemplate: _angular_core.InputSignal<string>;
221
+ /** Template for the items-info text in the `minimal`/`centered` variants. */
222
+ itemsInfoCompactTemplate: _angular_core.InputSignal<string>;
206
223
  pageChange: _angular_core.OutputEmitterRef<PageChangeEvent>;
207
- pageSizeChange: _angular_core.OutputEmitterRef<number>;
208
224
  readonly totalPages: _angular_core.Signal<number>;
209
225
  readonly visiblePages: _angular_core.Signal<(string | number)[]>;
210
226
  isDropdownOpen: _angular_core.WritableSignal<boolean>;
@@ -229,7 +245,7 @@ declare class PaginationComponent {
229
245
  private emitPageChange;
230
246
  private computeVisiblePages;
231
247
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PaginationComponent, never>;
232
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PaginationComponent, "pecb-pagination", never, { "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "showPageSizeSelector": { "alias": "showPageSizeSelector"; "required": false; "isSignal": true; }; "showItemsInfo": { "alias": "showItemsInfo"; "required": false; "isSignal": true; }; "maxVisiblePages": { "alias": "maxVisiblePages"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; }, { "pageSize": "pageSizeChange"; "currentPage": "currentPageChange"; "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; }, never, never, true, never>;
248
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PaginationComponent, "pecb-pagination", never, { "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "showPageSizeSelector": { "alias": "showPageSizeSelector"; "required": false; "isSignal": true; }; "showItemsInfo": { "alias": "showItemsInfo"; "required": false; "isSignal": true; }; "maxVisiblePages": { "alias": "maxVisiblePages"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "previousPageAriaLabel": { "alias": "previousPageAriaLabel"; "required": false; "isSignal": true; }; "nextPageAriaLabel": { "alias": "nextPageAriaLabel"; "required": false; "isSignal": true; }; "pageNavigationAriaLabel": { "alias": "pageNavigationAriaLabel"; "required": false; "isSignal": true; }; "pageAriaLabel": { "alias": "pageAriaLabel"; "required": false; "isSignal": true; }; "pageSizeListboxAriaLabel": { "alias": "pageSizeListboxAriaLabel"; "required": false; "isSignal": true; }; "itemsPerPageLabel": { "alias": "itemsPerPageLabel"; "required": false; "isSignal": true; }; "itemsInfoTemplate": { "alias": "itemsInfoTemplate"; "required": false; "isSignal": true; }; "itemsInfoCompactTemplate": { "alias": "itemsInfoCompactTemplate"; "required": false; "isSignal": true; }; }, { "pageSize": "pageSizeChange"; "currentPage": "currentPageChange"; "pageChange": "pageChange"; }, never, never, true, never>;
233
249
  }
234
250
 
235
251
  type TableSize = 'sm' | 'md' | 'lg';
@@ -399,14 +415,16 @@ declare class TableComponent {
399
415
  * ARIA label for the table
400
416
  */
401
417
  ariaLabel: _angular_core.InputSignal<string>;
418
+ /** Visible "Loading..." text shown while data is loading. */
419
+ loadingText: _angular_core.InputSignal<string>;
420
+ /** Aria-label for the header-row "select all" checkbox. */
421
+ selectAllAriaLabel: _angular_core.InputSignal<string>;
422
+ /** Aria-label prefix for each row's selection checkbox. Rendered as `<this> <n>`. */
423
+ selectRowAriaLabel: _angular_core.InputSignal<string>;
402
424
  /**
403
425
  * Emitted when a page change occurs
404
426
  */
405
427
  pageChange: _angular_core.OutputEmitterRef<PageChangeEvent>;
406
- /**
407
- * Emitted when page size changes
408
- */
409
- pageSizeChange: _angular_core.OutputEmitterRef<number>;
410
428
  /**
411
429
  * Emitted when a row is clicked
412
430
  */
@@ -466,31 +484,38 @@ declare class TableComponent {
466
484
  getLinkHref(value: string): string;
467
485
  private emitSelectionChange;
468
486
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableComponent, never>;
469
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableComponent, "pecb-table", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "showPagination": { "alias": "showPagination"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "showPageSizeSelector": { "alias": "showPageSizeSelector"; "required": false; "isSignal": true; }; "paginationVariant": { "alias": "paginationVariant"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "selectedIndices": { "alias": "selectedIndices"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "sortColumn": { "alias": "sortColumn"; "required": false; "isSignal": true; }; "sortDirection": { "alias": "sortDirection"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; }, { "currentPage": "currentPageChange"; "pageSize": "pageSizeChange"; "selectedIndices": "selectedIndicesChange"; "sortColumn": "sortColumnChange"; "sortDirection": "sortDirectionChange"; "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; "rowClick": "rowClick"; "rowAction": "rowAction"; "sortChange": "sortChange"; "selectionChange": "selectionChange"; }, ["emptyTemplate", "loadingTemplate"], never, true, never>;
487
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableComponent, "pecb-table", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "showPagination": { "alias": "showPagination"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "showPageSizeSelector": { "alias": "showPageSizeSelector"; "required": false; "isSignal": true; }; "paginationVariant": { "alias": "paginationVariant"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "selectedIndices": { "alias": "selectedIndices"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "sortColumn": { "alias": "sortColumn"; "required": false; "isSignal": true; }; "sortDirection": { "alias": "sortDirection"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "loadingText": { "alias": "loadingText"; "required": false; "isSignal": true; }; "selectAllAriaLabel": { "alias": "selectAllAriaLabel"; "required": false; "isSignal": true; }; "selectRowAriaLabel": { "alias": "selectRowAriaLabel"; "required": false; "isSignal": true; }; }, { "currentPage": "currentPageChange"; "pageSize": "pageSizeChange"; "selectedIndices": "selectedIndicesChange"; "sortColumn": "sortColumnChange"; "sortDirection": "sortDirectionChange"; "pageChange": "pageChange"; "rowClick": "rowClick"; "rowAction": "rowAction"; "sortChange": "sortChange"; "selectionChange": "selectionChange"; }, ["emptyTemplate", "loadingTemplate"], never, true, never>;
470
488
  }
471
489
 
472
490
  type TabStyle = 'rounded' | 'line';
473
491
  type TabSize = 'sm' | 'md';
474
492
  declare class TabComponent {
493
+ private readonly registry;
494
+ private readonly sanitizer;
475
495
  id: _angular_core.InputSignal<string>;
476
496
  tabStyle: _angular_core.InputSignal<TabStyle>;
477
497
  size: _angular_core.InputSignal<TabSize>;
478
498
  label: _angular_core.InputSignal<string>;
479
- icon: _angular_core.InputSignal<number | undefined>;
499
+ /** Icon name resolved through the IconRegistry, or a raw SVG string. */
500
+ icon: _angular_core.InputSignal<string | undefined>;
480
501
  active: _angular_core.InputSignal<boolean>;
481
502
  disabled: _angular_core.InputSignal<boolean>;
482
503
  closable: _angular_core.InputSignal<boolean>;
483
504
  ariaLabel: _angular_core.InputSignal<string | undefined>;
484
505
  ariaControls: _angular_core.InputSignal<string | undefined>;
485
506
  ariaSelected: _angular_core.InputSignal<boolean | undefined>;
507
+ /** Aria-label prefix for the close (×) button. Rendered as `<this> <label>`. */
508
+ closeAriaLabel: _angular_core.InputSignal<string>;
486
509
  clicked: _angular_core.OutputEmitterRef<string>;
487
510
  closed: _angular_core.OutputEmitterRef<string>;
511
+ /** Resolved icon SVG — looks the name up in the IconRegistry, or falls back to a raw SVG string. */
512
+ iconSvg: _angular_core.Signal<SafeHtml>;
488
513
  get tabClasses(): string[];
489
514
  onClick(event: MouseEvent): void;
490
515
  onClose(event: MouseEvent): void;
491
516
  onKeyDown(event: KeyboardEvent): void;
492
517
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabComponent, never>;
493
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabComponent, "pecb-tab", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "tabStyle": { "alias": "tabStyle"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaControls": { "alias": "ariaControls"; "required": false; "isSignal": true; }; "ariaSelected": { "alias": "ariaSelected"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; "closed": "closed"; }, never, never, true, never>;
518
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabComponent, "pecb-tab", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "tabStyle": { "alias": "tabStyle"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaControls": { "alias": "ariaControls"; "required": false; "isSignal": true; }; "ariaSelected": { "alias": "ariaSelected"; "required": false; "isSignal": true; }; "closeAriaLabel": { "alias": "closeAriaLabel"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; "closed": "closed"; }, never, never, true, never>;
494
519
  }
495
520
 
496
521
  type DatepickerSize = 'sm' | 'md' | 'lg' | 'xl';
@@ -545,6 +570,16 @@ declare class DatepickerComponent implements ControlValueAccessor {
545
570
  * Maximum selectable date
546
571
  */
547
572
  maxDate: _angular_core.InputSignal<Date | undefined>;
573
+ /** Aria-label for the "clear date" (×) button. */
574
+ clearDateAriaLabel: _angular_core.InputSignal<string>;
575
+ /** Aria-label for the "open calendar" button. */
576
+ openCalendarAriaLabel: _angular_core.InputSignal<string>;
577
+ /** Aria-label for the calendar popup dialog. */
578
+ calendarAriaLabel: _angular_core.InputSignal<string>;
579
+ /** Aria-label for the "previous month" navigation button. */
580
+ previousMonthAriaLabel: _angular_core.InputSignal<string>;
581
+ /** Aria-label for the "next month" navigation button. */
582
+ nextMonthAriaLabel: _angular_core.InputSignal<string>;
548
583
  /**
549
584
  * Event emitted when date is selected
550
585
  */
@@ -584,7 +619,7 @@ declare class DatepickerComponent implements ControlValueAccessor {
584
619
  registerOnTouched(fn: () => void): void;
585
620
  setDisabledState(isDisabled: boolean): void;
586
621
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatepickerComponent, never>;
587
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatepickerComponent, "pecb-datepicker", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "dateFormat": { "alias": "dateFormat"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "dateChange": "dateChange"; "opened": "opened"; "closed": "closed"; }, never, never, true, never>;
622
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatepickerComponent, "pecb-datepicker", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "dateFormat": { "alias": "dateFormat"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "clearDateAriaLabel": { "alias": "clearDateAriaLabel"; "required": false; "isSignal": true; }; "openCalendarAriaLabel": { "alias": "openCalendarAriaLabel"; "required": false; "isSignal": true; }; "calendarAriaLabel": { "alias": "calendarAriaLabel"; "required": false; "isSignal": true; }; "previousMonthAriaLabel": { "alias": "previousMonthAriaLabel"; "required": false; "isSignal": true; }; "nextMonthAriaLabel": { "alias": "nextMonthAriaLabel"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "dateChange": "dateChange"; "opened": "opened"; "closed": "closed"; }, never, never, true, never>;
588
623
  }
589
624
 
590
625
  type InputType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search';
@@ -681,6 +716,12 @@ declare class InputComponent implements ControlValueAccessor {
681
716
  * Helper text to display below input
682
717
  */
683
718
  helperText: _angular_core.InputSignal<string | undefined>;
719
+ /** Aria-label for the "clear input" (×) button. */
720
+ clearAriaLabel: _angular_core.InputSignal<string>;
721
+ /** Aria-label for the password-toggle button when password is hidden. */
722
+ showPasswordAriaLabel: _angular_core.InputSignal<string>;
723
+ /** Aria-label for the password-toggle button when password is visible. */
724
+ hidePasswordAriaLabel: _angular_core.InputSignal<string>;
684
725
  /**
685
726
  * Icon to display - can be a predefined name ('email', 'search', 'user') or custom SVG string
686
727
  */
@@ -764,7 +805,7 @@ declare class InputComponent implements ControlValueAccessor {
764
805
  registerOnTouched(fn: () => void): void;
765
806
  setDisabledState(isDisabled: boolean): void;
766
807
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<InputComponent, never>;
767
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputComponent, "pecb-input", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconPosition": { "alias": "iconPosition"; "required": false; "isSignal": true; }; "leftIcon": { "alias": "leftIcon"; "required": false; "isSignal": true; }; "rightIcon": { "alias": "rightIcon"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "showInfoIcon": { "alias": "showInfoIcon"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "valueChange": "valueChange"; "blurred": "blurred"; "focused": "focused"; "cleared": "cleared"; }, never, never, true, never>;
808
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputComponent, "pecb-input", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "showPasswordAriaLabel": { "alias": "showPasswordAriaLabel"; "required": false; "isSignal": true; }; "hidePasswordAriaLabel": { "alias": "hidePasswordAriaLabel"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconPosition": { "alias": "iconPosition"; "required": false; "isSignal": true; }; "leftIcon": { "alias": "leftIcon"; "required": false; "isSignal": true; }; "rightIcon": { "alias": "rightIcon"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "showInfoIcon": { "alias": "showInfoIcon"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "valueChange": "valueChange"; "blurred": "blurred"; "focused": "focused"; "cleared": "cleared"; }, never, never, true, never>;
768
809
  }
769
810
 
770
811
  type RadioVariant = 'dot' | 'filled';
@@ -817,7 +858,8 @@ declare class CheckboxComponent implements ControlValueAccessor {
817
858
  }
818
859
 
819
860
  type ToggleLabelPosition = 'right' | 'left';
820
- type ToggleSize = 'sm';
861
+ /** `'md'` is the default size; `'sm'` renders a compact toggle. */
862
+ type ToggleSize = 'sm' | 'md';
821
863
  declare class ToggleComponent implements ControlValueAccessor {
822
864
  id: _angular_core.InputSignal<string>;
823
865
  name: _angular_core.InputSignal<string | undefined>;
@@ -832,8 +874,8 @@ declare class ToggleComponent implements ControlValueAccessor {
832
874
  thumbColor: _angular_core.InputSignal<string | undefined>;
833
875
  /** Show a check icon when on and an X icon when off, on the side opposite the thumb. */
834
876
  showStatusIcons: _angular_core.InputSignal<boolean>;
835
- /** Optional size override. Leave unset for the default size. */
836
- size: _angular_core.InputSignal<"sm" | undefined>;
877
+ /** Size variant. Leave unset (or `'md'`) for the default size; `'sm'` is compact. */
878
+ size: _angular_core.InputSignal<ToggleSize | undefined>;
837
879
  /** Drop shadow on the track. */
838
880
  shadow: _angular_core.InputSignal<boolean>;
839
881
  disabled: _angular_core.ModelSignal<boolean>;
@@ -863,6 +905,8 @@ declare class DropdownComponent implements ControlValueAccessor {
863
905
  private readonly elementRef;
864
906
  id: _angular_core.InputSignal<string>;
865
907
  label: _angular_core.InputSignal<string | undefined>;
908
+ /** Placeholder shown in the trigger when no option is selected. */
909
+ placeholder: _angular_core.InputSignal<string>;
866
910
  size: _angular_core.InputSignal<DropdownSize>;
867
911
  options: _angular_core.InputSignal<DropdownOption[]>;
868
912
  multiple: _angular_core.InputSignal<boolean>;
@@ -873,6 +917,12 @@ declare class DropdownComponent implements ControlValueAccessor {
873
917
  error: _angular_core.InputSignal<boolean>;
874
918
  errorMessage: _angular_core.InputSignal<string | undefined>;
875
919
  helperText: _angular_core.InputSignal<string | undefined>;
920
+ /** Placeholder shown in the in-dropdown search input. */
921
+ searchPlaceholder: _angular_core.InputSignal<string>;
922
+ /** Aria-label for the "clear selection" (×) button (multi-select only). */
923
+ clearSelectionAriaLabel: _angular_core.InputSignal<string>;
924
+ /** Visible text shown when the search filter returns no options. */
925
+ noResultsText: _angular_core.InputSignal<string>;
876
926
  selectionChange: _angular_core.OutputEmitterRef<unknown>;
877
927
  isOpen: _angular_core.WritableSignal<boolean>;
878
928
  searchQuery: _angular_core.WritableSignal<string>;
@@ -896,28 +946,30 @@ declare class DropdownComponent implements ControlValueAccessor {
896
946
  registerOnTouched(fn: () => void): void;
897
947
  setDisabledState(isDisabled: boolean): void;
898
948
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownComponent, never>;
899
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownComponent, "pecb-dropdown", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "selectionChange": "selectionChange"; }, never, never, true, never>;
949
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownComponent, "pecb-dropdown", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "clearSelectionAriaLabel": { "alias": "clearSelectionAriaLabel"; "required": false; "isSignal": true; }; "noResultsText": { "alias": "noResultsText"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "selectionChange": "selectionChange"; }, never, never, true, never>;
900
950
  }
901
951
 
902
952
  type RightModalSize = 'sm' | 'md' | 'lg';
903
- declare class RightModalComponent implements OnInit, OnDestroy, AfterViewInit {
953
+ declare class RightModalComponent implements OnDestroy {
904
954
  id: _angular_core.InputSignal<string>;
905
- isOpen: _angular_core.InputSignal<boolean>;
955
+ isOpen: _angular_core.ModelSignal<boolean>;
906
956
  size: _angular_core.InputSignal<RightModalSize>;
907
957
  closeOnBackdropClick: _angular_core.InputSignal<boolean>;
908
958
  closeOnEscape: _angular_core.InputSignal<boolean>;
909
959
  showCloseButton: _angular_core.InputSignal<boolean>;
960
+ /** Accessible label for the close (×) button. Override to localize. */
961
+ closeAriaLabel: _angular_core.InputSignal<string>;
910
962
  ariaLabel: _angular_core.InputSignal<string | undefined>;
911
963
  ariaLabelledBy: _angular_core.InputSignal<string | undefined>;
912
964
  ariaDescribedBy: _angular_core.InputSignal<string | undefined>;
913
965
  closed: _angular_core.OutputEmitterRef<void>;
914
966
  opened: _angular_core.OutputEmitterRef<void>;
915
- modalPanel: ElementRef<HTMLElement>;
967
+ private modalPanel;
916
968
  private cleanupFocusTrap;
917
969
  private cleanupBodyScroll;
918
970
  private previousActiveElement;
919
- ngOnInit(): void;
920
- ngAfterViewInit(): void;
971
+ private currentlyOpen;
972
+ constructor();
921
973
  ngOnDestroy(): void;
922
974
  get modalClasses(): string[];
923
975
  get panelClasses(): string[];
@@ -928,7 +980,7 @@ declare class RightModalComponent implements OnInit, OnDestroy, AfterViewInit {
928
980
  private setupFocusTrap;
929
981
  private cleanup;
930
982
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RightModalComponent, never>;
931
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RightModalComponent, "pecb-right-modal", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "opened": "opened"; }, never, ["[pecbRightModalHeader]", "[pecbRightModalContent]", "*", "[pecbRightModalFooter]"], true, never>;
983
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RightModalComponent, "pecb-right-modal", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeAriaLabel": { "alias": "closeAriaLabel"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; }, { "isOpen": "isOpenChange"; "closed": "closed"; "opened": "opened"; }, never, ["[pecbRightModalHeader]", "[pecbRightModalContent]", "*", "[pecbRightModalFooter]"], true, never>;
932
984
  }
933
985
  declare class RightModalHeaderDirective {
934
986
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RightModalHeaderDirective, never>;
@@ -966,6 +1018,10 @@ declare class SidebarComponent {
966
1018
  collapsedLogo: _angular_core.InputSignal<string | undefined>;
967
1019
  showFooter: _angular_core.InputSignal<boolean>;
968
1020
  collapsed: _angular_core.ModelSignal<boolean>;
1021
+ /** Aria-label for the collapse-toggle button when sidebar is collapsed. */
1022
+ expandSidebarAriaLabel: _angular_core.InputSignal<string>;
1023
+ /** Aria-label for the collapse-toggle button when sidebar is expanded. */
1024
+ collapseSidebarAriaLabel: _angular_core.InputSignal<string>;
969
1025
  itemClick: _angular_core.OutputEmitterRef<SidebarMenuItem>;
970
1026
  collapseChange: _angular_core.OutputEmitterRef<boolean>;
971
1027
  activePopupItem: _angular_core.WritableSignal<SidebarMenuItem | null>;
@@ -980,7 +1036,7 @@ declare class SidebarComponent {
980
1036
  hasActiveDescendant(item: SidebarMenuItem): boolean;
981
1037
  getItemClasses(item: SidebarMenuItem, isChild?: boolean, isNested?: boolean): string[];
982
1038
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidebarComponent, never>;
983
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidebarComponent, "pecb-sidebar", never, { "sections": { "alias": "sections"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "logoSrc": { "alias": "logoSrc"; "required": false; "isSignal": true; }; "sidebarLogo": { "alias": "sidebarLogo"; "required": false; "isSignal": true; }; "collapsedLogo": { "alias": "collapsedLogo"; "required": false; "isSignal": true; }; "showFooter": { "alias": "showFooter"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; "itemClick": "itemClick"; "collapseChange": "collapseChange"; }, never, ["[sidebar-header]", "[sidebar-footer]"], true, never>;
1039
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidebarComponent, "pecb-sidebar", never, { "sections": { "alias": "sections"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "logoSrc": { "alias": "logoSrc"; "required": false; "isSignal": true; }; "sidebarLogo": { "alias": "sidebarLogo"; "required": false; "isSignal": true; }; "collapsedLogo": { "alias": "collapsedLogo"; "required": false; "isSignal": true; }; "showFooter": { "alias": "showFooter"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "expandSidebarAriaLabel": { "alias": "expandSidebarAriaLabel"; "required": false; "isSignal": true; }; "collapseSidebarAriaLabel": { "alias": "collapseSidebarAriaLabel"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; "itemClick": "itemClick"; "collapseChange": "collapseChange"; }, never, ["[sidebar-header]", "[sidebar-footer]"], true, never>;
984
1040
  }
985
1041
 
986
1042
  type ConfirmationIconType = 'success' | 'warning' | 'error' | 'info';
@@ -997,6 +1053,8 @@ declare class ConfirmationComponent implements OnDestroy, AfterViewInit {
997
1053
  cancelText: _angular_core.InputSignal<string>;
998
1054
  iconType: _angular_core.InputSignal<ConfirmationIconType>;
999
1055
  showCloseButton: _angular_core.InputSignal<boolean>;
1056
+ /** Accessible label for the close (×) button. Override to localize. */
1057
+ closeAriaLabel: _angular_core.InputSignal<string>;
1000
1058
  closeOnBackdropClick: _angular_core.InputSignal<boolean>;
1001
1059
  closeOnEscape: _angular_core.InputSignal<boolean>;
1002
1060
  ariaLabel: _angular_core.InputSignal<string | undefined>;
@@ -1024,7 +1082,7 @@ declare class ConfirmationComponent implements OnDestroy, AfterViewInit {
1024
1082
  private setupFocusTrap;
1025
1083
  private cleanup;
1026
1084
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfirmationComponent, never>;
1027
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConfirmationComponent, "pecb-confirmation", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "confirmText": { "alias": "confirmText"; "required": false; "isSignal": true; }; "cancelText": { "alias": "cancelText"; "required": false; "isSignal": true; }; "iconType": { "alias": "iconType"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; }, { "isOpen": "isOpenChange"; "confirmed": "confirmed"; "cancelled": "cancelled"; "closed": "closed"; }, never, never, true, never>;
1085
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConfirmationComponent, "pecb-confirmation", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "confirmText": { "alias": "confirmText"; "required": false; "isSignal": true; }; "cancelText": { "alias": "cancelText"; "required": false; "isSignal": true; }; "iconType": { "alias": "iconType"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeAriaLabel": { "alias": "closeAriaLabel"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; }, { "isOpen": "isOpenChange"; "confirmed": "confirmed"; "cancelled": "cancelled"; "closed": "closed"; }, never, never, true, never>;
1028
1086
  }
1029
1087
 
1030
1088
  declare class BottomSheetComponent implements OnDestroy, AfterViewInit {
@@ -1038,6 +1096,8 @@ declare class BottomSheetComponent implements OnDestroy, AfterViewInit {
1038
1096
  primaryText: _angular_core.InputSignal<string>;
1039
1097
  secondaryText: _angular_core.InputSignal<string>;
1040
1098
  showCloseButton: _angular_core.InputSignal<boolean>;
1099
+ /** Accessible label for the close (×) button. Override to localize. */
1100
+ closeAriaLabel: _angular_core.InputSignal<string>;
1041
1101
  closeOnBackdropClick: _angular_core.InputSignal<boolean>;
1042
1102
  closeOnEscape: _angular_core.InputSignal<boolean>;
1043
1103
  primaryClicked: _angular_core.OutputEmitterRef<void>;
@@ -1058,7 +1118,7 @@ declare class BottomSheetComponent implements OnDestroy, AfterViewInit {
1058
1118
  private setupFocusTrap;
1059
1119
  private cleanup;
1060
1120
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BottomSheetComponent, never>;
1061
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BottomSheetComponent, "pecb-bottom-sheet", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "primaryText": { "alias": "primaryText"; "required": false; "isSignal": true; }; "secondaryText": { "alias": "secondaryText"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; }, { "isOpen": "isOpenChange"; "primaryClicked": "primaryClicked"; "secondaryClicked": "secondaryClicked"; "closed": "closed"; }, never, ["*"], true, never>;
1121
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BottomSheetComponent, "pecb-bottom-sheet", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "primaryText": { "alias": "primaryText"; "required": false; "isSignal": true; }; "secondaryText": { "alias": "secondaryText"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeAriaLabel": { "alias": "closeAriaLabel"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; }, { "isOpen": "isOpenChange"; "primaryClicked": "primaryClicked"; "secondaryClicked": "secondaryClicked"; "closed": "closed"; }, never, ["*"], true, never>;
1062
1122
  }
1063
1123
 
1064
1124
  type QuizType = 'Multiple Choice' | 'True/False' | 'Scenario' | 'Essay' | string;
@@ -1254,6 +1314,8 @@ declare class TooltipDirective implements OnDestroy {
1254
1314
  private appRef;
1255
1315
  private injector;
1256
1316
  private ref?;
1317
+ /** Keeps the tooltip pinned to its trigger while the page scrolls or resizes. */
1318
+ private readonly reposition;
1257
1319
  onMouseEnter(): void;
1258
1320
  onMouseLeave(): void;
1259
1321
  onClick(): void;
@@ -1287,12 +1349,20 @@ declare class MessageItemComponent {
1287
1349
  unreadCount: _angular_core.InputSignal<number>;
1288
1350
  /** Whether this item is currently selected / active */
1289
1351
  selected: _angular_core.InputSignal<boolean>;
1352
+ /** Visible "is typing" text shown when status is `typing`. */
1353
+ typingText: _angular_core.InputSignal<string>;
1354
+ /** Suffix appended to the unread badge's aria-label (e.g. `5 unread messages`). */
1355
+ unreadAriaSuffix: _angular_core.InputSignal<string>;
1356
+ /** Aria-label for the warning status icon. */
1357
+ warningAriaLabel: _angular_core.InputSignal<string>;
1358
+ /** Aria-label for the read status icon. */
1359
+ readAriaLabel: _angular_core.InputSignal<string>;
1290
1360
  /** Emitted when the item is clicked */
1291
1361
  itemClicked: _angular_core.OutputEmitterRef<void>;
1292
1362
  initials: _angular_core.Signal<string>;
1293
1363
  get hostClasses(): string;
1294
1364
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MessageItemComponent, never>;
1295
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<MessageItemComponent, "pecb-message-item", never, { "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "time": { "alias": "time"; "required": false; "isSignal": true; }; "preview": { "alias": "preview"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "unreadCount": { "alias": "unreadCount"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; }, { "itemClicked": "itemClicked"; }, never, never, true, never>;
1365
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MessageItemComponent, "pecb-message-item", never, { "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "time": { "alias": "time"; "required": false; "isSignal": true; }; "preview": { "alias": "preview"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "unreadCount": { "alias": "unreadCount"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "typingText": { "alias": "typingText"; "required": false; "isSignal": true; }; "unreadAriaSuffix": { "alias": "unreadAriaSuffix"; "required": false; "isSignal": true; }; "warningAriaLabel": { "alias": "warningAriaLabel"; "required": false; "isSignal": true; }; "readAriaLabel": { "alias": "readAriaLabel"; "required": false; "isSignal": true; }; }, { "itemClicked": "itemClicked"; }, never, never, true, never>;
1296
1366
  }
1297
1367
  declare class MessageBubbleComponent {
1298
1368
  /** Visual type of the message */
@@ -1312,6 +1382,12 @@ declare class MessageBubbleComponent {
1312
1382
  time: _angular_core.InputSignal<string>;
1313
1383
  /** Show read-receipt checkmark below the bubble (outgoing only) */
1314
1384
  showReadReceipt: _angular_core.InputSignal<boolean>;
1385
+ /** Aria-label prefix for the document download button. Rendered as `<this> <fileName>`. */
1386
+ downloadAriaLabel: _angular_core.InputSignal<string>;
1387
+ /** Aria-label for the audio "play" button. */
1388
+ playAudioAriaLabel: _angular_core.InputSignal<string>;
1389
+ /** Aria-label for the read-receipt checkmark. */
1390
+ readReceiptAriaLabel: _angular_core.InputSignal<string>;
1315
1391
  /** Avatar image URL */
1316
1392
  avatarSrc: _angular_core.InputSignal<string>;
1317
1393
  /** Explicit initials override — auto-derived from senderName when empty */
@@ -1343,9 +1419,13 @@ declare class MessageBubbleComponent {
1343
1419
  get hostClasses(): string;
1344
1420
  get senderLabel(): string;
1345
1421
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MessageBubbleComponent, never>;
1346
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<MessageBubbleComponent, "pecb-message-bubble", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; "senderName": { "alias": "senderName"; "required": false; "isSignal": true; }; "time": { "alias": "time"; "required": false; "isSignal": true; }; "showReadReceipt": { "alias": "showReadReceipt"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "fileMeta": { "alias": "fileMeta"; "required": false; "isSignal": true; }; "thumbnailSrc": { "alias": "thumbnailSrc"; "required": false; "isSignal": true; }; "audioDuration": { "alias": "audioDuration"; "required": false; "isSignal": true; }; "waveformData": { "alias": "waveformData"; "required": false; "isSignal": true; }; "imageSrc": { "alias": "imageSrc"; "required": false; "isSignal": true; }; "imageAlt": { "alias": "imageAlt"; "required": false; "isSignal": true; }; }, { "downloadClicked": "downloadClicked"; "playClicked": "playClicked"; }, never, never, true, never>;
1422
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MessageBubbleComponent, "pecb-message-bubble", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; "senderName": { "alias": "senderName"; "required": false; "isSignal": true; }; "time": { "alias": "time"; "required": false; "isSignal": true; }; "showReadReceipt": { "alias": "showReadReceipt"; "required": false; "isSignal": true; }; "downloadAriaLabel": { "alias": "downloadAriaLabel"; "required": false; "isSignal": true; }; "playAudioAriaLabel": { "alias": "playAudioAriaLabel"; "required": false; "isSignal": true; }; "readReceiptAriaLabel": { "alias": "readReceiptAriaLabel"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "fileMeta": { "alias": "fileMeta"; "required": false; "isSignal": true; }; "thumbnailSrc": { "alias": "thumbnailSrc"; "required": false; "isSignal": true; }; "audioDuration": { "alias": "audioDuration"; "required": false; "isSignal": true; }; "waveformData": { "alias": "waveformData"; "required": false; "isSignal": true; }; "imageSrc": { "alias": "imageSrc"; "required": false; "isSignal": true; }; "imageAlt": { "alias": "imageAlt"; "required": false; "isSignal": true; }; }, { "downloadClicked": "downloadClicked"; "playClicked": "playClicked"; }, never, never, true, never>;
1347
1423
  }
1348
1424
 
1425
+ declare class FullscreenModalHeaderDirective {
1426
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FullscreenModalHeaderDirective, never>;
1427
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FullscreenModalHeaderDirective, "[pecbFullscreenModalHeader]", never, {}, {}, never, never, true, never>;
1428
+ }
1349
1429
  declare class FullscreenModalContentDirective {
1350
1430
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FullscreenModalContentDirective, never>;
1351
1431
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FullscreenModalContentDirective, "[pecbFullscreenModalContent]", never, {}, {}, never, never, true, never>;
@@ -1354,7 +1434,7 @@ declare class FullscreenModalFooterDirective {
1354
1434
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FullscreenModalFooterDirective, never>;
1355
1435
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FullscreenModalFooterDirective, "[pecbFullscreenModalFooter]", never, {}, {}, never, never, true, never>;
1356
1436
  }
1357
- declare class FullscreenModalComponent implements OnInit, OnDestroy, AfterViewInit {
1437
+ declare class FullscreenModalComponent implements OnDestroy {
1358
1438
  /** Unique id forwarded to the dialog element */
1359
1439
  id: _angular_core.InputSignal<string>;
1360
1440
  /** Controls visibility */
@@ -1363,6 +1443,8 @@ declare class FullscreenModalComponent implements OnInit, OnDestroy, AfterViewIn
1363
1443
  title: _angular_core.InputSignal<string>;
1364
1444
  /** Show or hide the built-in close (×) button */
1365
1445
  showCloseButton: _angular_core.InputSignal<boolean>;
1446
+ /** Accessible label for the close (×) button. Override to localize. */
1447
+ closeAriaLabel: _angular_core.InputSignal<string>;
1366
1448
  /** Close modal when clicking the backdrop */
1367
1449
  closeOnBackdropClick: _angular_core.InputSignal<boolean>;
1368
1450
  /** Close modal when pressing Escape */
@@ -1377,12 +1459,12 @@ declare class FullscreenModalComponent implements OnInit, OnDestroy, AfterViewIn
1377
1459
  closed: _angular_core.OutputEmitterRef<void>;
1378
1460
  /** Emitted when the modal has been opened */
1379
1461
  opened: _angular_core.OutputEmitterRef<void>;
1380
- modalPanel: ElementRef<HTMLElement>;
1462
+ private modalPanel;
1381
1463
  private cleanupFocusTrap;
1382
1464
  private cleanupBodyScroll;
1383
1465
  private previousActiveElement;
1384
- ngOnInit(): void;
1385
- ngAfterViewInit(): void;
1466
+ private currentlyOpen;
1467
+ constructor();
1386
1468
  ngOnDestroy(): void;
1387
1469
  onBackdropClick(event: MouseEvent): void;
1388
1470
  onKeydown(event: KeyboardEvent): void;
@@ -1394,7 +1476,7 @@ declare class FullscreenModalComponent implements OnInit, OnDestroy, AfterViewIn
1394
1476
  private setupFocusTrap;
1395
1477
  private cleanup;
1396
1478
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FullscreenModalComponent, never>;
1397
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FullscreenModalComponent, "pecb-fullscreen-modal", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; }, { "isOpen": "isOpenChange"; "closed": "closed"; "opened": "opened"; }, never, ["[pecbFullscreenModalHeader]", "[pecbFullscreenModalContent]", "*", "[pecbFullscreenModalFooter]"], true, never>;
1479
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FullscreenModalComponent, "pecb-fullscreen-modal", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeAriaLabel": { "alias": "closeAriaLabel"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; }, { "isOpen": "isOpenChange"; "closed": "closed"; "opened": "opened"; }, never, ["[pecbFullscreenModalHeader]", "[pecbFullscreenModalContent]", "*", "[pecbFullscreenModalFooter]"], true, never>;
1398
1480
  }
1399
1481
 
1400
1482
  type StepperType = 'basic' | 'dot' | 'custom-icon' | 'navigation' | 'inline';
@@ -1654,8 +1736,12 @@ declare class CodeInputComponent implements ControlValueAccessor {
1654
1736
  state: _angular_core.InputSignal<CodeInputState>;
1655
1737
  errorMessage: _angular_core.InputSignal<string>;
1656
1738
  showClearAll: _angular_core.InputSignal<boolean>;
1657
- disabled: _angular_core.InputSignal<boolean>;
1739
+ disabled: _angular_core.ModelSignal<boolean>;
1658
1740
  ariaLabel: _angular_core.InputSignal<string>;
1741
+ /** Visible "Clear all" button text. */
1742
+ clearAllText: _angular_core.InputSignal<string>;
1743
+ /** Template for each cell's aria-label. Placeholders: `{index}` (1-based), `{total}`. */
1744
+ cellAriaLabelTemplate: _angular_core.InputSignal<string>;
1659
1745
  completed: _angular_core.OutputEmitterRef<string>;
1660
1746
  cleared: _angular_core.OutputEmitterRef<void>;
1661
1747
  cells: _angular_core.WritableSignal<string[]>;
@@ -1667,6 +1753,8 @@ declare class CodeInputComponent implements ControlValueAccessor {
1667
1753
  writeValue(value: string | null): void;
1668
1754
  registerOnChange(fn: (value: string) => void): void;
1669
1755
  registerOnTouched(fn: () => void): void;
1756
+ setDisabledState(isDisabled: boolean): void;
1757
+ getCellAriaLabel(index: number): string;
1670
1758
  getCellClasses(index: number): string[];
1671
1759
  onCellInput(event: Event, index: number): void;
1672
1760
  onCellKeyDown(event: KeyboardEvent, index: number): void;
@@ -1679,7 +1767,7 @@ declare class CodeInputComponent implements ControlValueAccessor {
1679
1767
  private syncInputValues;
1680
1768
  private emitValue;
1681
1769
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CodeInputComponent, never>;
1682
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CodeInputComponent, "pecb-code-input", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "length": { "alias": "length"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "showClearAll": { "alias": "showClearAll"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "completed": "completed"; "cleared": "cleared"; }, never, never, true, never>;
1770
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CodeInputComponent, "pecb-code-input", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "length": { "alias": "length"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "showClearAll": { "alias": "showClearAll"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "clearAllText": { "alias": "clearAllText"; "required": false; "isSignal": true; }; "cellAriaLabelTemplate": { "alias": "cellAriaLabelTemplate"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "completed": "completed"; "cleared": "cleared"; }, never, never, true, never>;
1683
1771
  }
1684
1772
 
1685
1773
  /**
@@ -1850,6 +1938,16 @@ declare class CodeSnippetComponent {
1850
1938
  showCopy: _angular_core.InputSignal<boolean>;
1851
1939
  showFooter: _angular_core.InputSignal<boolean>;
1852
1940
  ariaLabel: _angular_core.InputSignal<string>;
1941
+ /** Aria-label for the "copy code" buttons. */
1942
+ copyAriaLabel: _angular_core.InputSignal<string>;
1943
+ /** Aria-label for the secondary "more actions" button in `filename-actions` variant. */
1944
+ moreActionsAriaLabel: _angular_core.InputSignal<string>;
1945
+ /** Visible text and aria-label for the "Click to copy the code" banner button in `copy-banner` variant. */
1946
+ clickToCopyText: _angular_core.InputSignal<string>;
1947
+ /** Suffix appended to the character count in the footer (e.g. `100 chars`). */
1948
+ charsSuffix: _angular_core.InputSignal<string>;
1949
+ /** Suffix appended to the line count in the footer (e.g. `5 lines`). */
1950
+ linesSuffix: _angular_core.InputSignal<string>;
1853
1951
  copied: _angular_core.OutputEmitterRef<string>;
1854
1952
  copyLabel: _angular_core.WritableSignal<string>;
1855
1953
  codeLines: _angular_core.Signal<string[]>;
@@ -1860,7 +1958,7 @@ declare class CodeSnippetComponent {
1860
1958
  get snippetClasses(): string[];
1861
1959
  onCopy(): void;
1862
1960
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CodeSnippetComponent, never>;
1863
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CodeSnippetComponent, "pecb-code-snippet", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "code": { "alias": "code"; "required": false; "isSignal": true; }; "highlightedCode": { "alias": "highlightedCode"; "required": false; "isSignal": true; }; "language": { "alias": "language"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "filename": { "alias": "filename"; "required": false; "isSignal": true; }; "showLineNumbers": { "alias": "showLineNumbers"; "required": false; "isSignal": true; }; "showCopy": { "alias": "showCopy"; "required": false; "isSignal": true; }; "showFooter": { "alias": "showFooter"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "copied": "copied"; }, never, ["[codeActions]"], true, never>;
1961
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CodeSnippetComponent, "pecb-code-snippet", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "code": { "alias": "code"; "required": false; "isSignal": true; }; "highlightedCode": { "alias": "highlightedCode"; "required": false; "isSignal": true; }; "language": { "alias": "language"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "filename": { "alias": "filename"; "required": false; "isSignal": true; }; "showLineNumbers": { "alias": "showLineNumbers"; "required": false; "isSignal": true; }; "showCopy": { "alias": "showCopy"; "required": false; "isSignal": true; }; "showFooter": { "alias": "showFooter"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "copyAriaLabel": { "alias": "copyAriaLabel"; "required": false; "isSignal": true; }; "moreActionsAriaLabel": { "alias": "moreActionsAriaLabel"; "required": false; "isSignal": true; }; "clickToCopyText": { "alias": "clickToCopyText"; "required": false; "isSignal": true; }; "charsSuffix": { "alias": "charsSuffix"; "required": false; "isSignal": true; }; "linesSuffix": { "alias": "linesSuffix"; "required": false; "isSignal": true; }; }, { "copied": "copied"; }, never, ["[codeActions]"], true, never>;
1864
1962
  }
1865
1963
 
1866
1964
  /**
@@ -2070,7 +2168,12 @@ interface ClosableWithHooks {
2070
2168
  afterClose?: () => void;
2071
2169
  }
2072
2170
  /**
2073
- * Interface for table column definition
2171
+ * Interface for table column definition.
2172
+ *
2173
+ * @deprecated Not consumed by `TableComponent` — its column input is typed as
2174
+ * `PecbTableColumn[]` (exported from `table.component.ts`). Define table columns
2175
+ * with `PecbTableColumn` instead. This interface is retained for backward
2176
+ * compatibility and is scheduled for removal in a future major release.
2074
2177
  */
2075
2178
  interface TableColumn<T = unknown> {
2076
2179
  /** Unique column key */
@@ -2325,6 +2428,10 @@ declare class HeaderSearchComponent {
2325
2428
  private readonly sanitizer;
2326
2429
  /** Search placeholder text */
2327
2430
  placeholder: _angular_core.InputSignal<string>;
2431
+ /** Aria-label for the mobile search-toggle button. */
2432
+ openSearchAriaLabel: _angular_core.InputSignal<string>;
2433
+ /** Aria-label for the search input itself. */
2434
+ searchAriaLabel: _angular_core.InputSignal<string>;
2328
2435
  /** Category options. When provided, embeds a category dropdown. */
2329
2436
  categories: _angular_core.InputSignal<HeaderSearchCategory[]>;
2330
2437
  /** Emits the search query as the user types */
@@ -2347,7 +2454,7 @@ declare class HeaderSearchComponent {
2347
2454
  toggleCategory(): void;
2348
2455
  onCategorySelect(cat: HeaderSearchCategory): void;
2349
2456
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderSearchComponent, never>;
2350
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderSearchComponent, "pecb-header-search", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "categories": { "alias": "categories"; "required": false; "isSignal": true; }; }, { "searchChange": "searchChange"; "searchSubmit": "searchSubmit"; "categoryChange": "categoryChange"; }, never, never, true, never>;
2457
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderSearchComponent, "pecb-header-search", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "openSearchAriaLabel": { "alias": "openSearchAriaLabel"; "required": false; "isSignal": true; }; "searchAriaLabel": { "alias": "searchAriaLabel"; "required": false; "isSignal": true; }; "categories": { "alias": "categories"; "required": false; "isSignal": true; }; }, { "searchChange": "searchChange"; "searchSubmit": "searchSubmit"; "categoryChange": "categoryChange"; }, never, never, true, never>;
2351
2458
  }
2352
2459
  declare class HeaderLanguageComponent {
2353
2460
  private readonly el;
@@ -2394,12 +2501,14 @@ declare class HeaderUserComponent {
2394
2501
  avatarInitials: _angular_core.InputSignal<string | undefined>;
2395
2502
  /** Avatar shape — `'circle'` for users, `'square'` for companies */
2396
2503
  avatarShape: _angular_core.InputSignal<"circle" | "square">;
2504
+ /** Prefix for the user button's aria-label. Rendered as `<this> <name>`. */
2505
+ userMenuAriaLabelPrefix: _angular_core.InputSignal<string>;
2397
2506
  /** Emits when the user profile area is clicked */
2398
2507
  userClick: _angular_core.OutputEmitterRef<void>;
2399
2508
  hostClasses: _angular_core.Signal<string>;
2400
2509
  onUserClick(): void;
2401
2510
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderUserComponent, never>;
2402
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderUserComponent, "pecb-header-user", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "role": { "alias": "role"; "required": true; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "avatarShape": { "alias": "avatarShape"; "required": false; "isSignal": true; }; }, { "userClick": "userClick"; }, never, never, true, never>;
2511
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderUserComponent, "pecb-header-user", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "role": { "alias": "role"; "required": true; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "avatarShape": { "alias": "avatarShape"; "required": false; "isSignal": true; }; "userMenuAriaLabelPrefix": { "alias": "userMenuAriaLabelPrefix"; "required": false; "isSignal": true; }; }, { "userClick": "userClick"; }, never, never, true, never>;
2403
2512
  }
2404
2513
  declare class HeaderDividerComponent {
2405
2514
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderDividerComponent, never>;
@@ -2439,6 +2548,24 @@ declare class VirtualTableComponent {
2439
2548
  currentPage: _angular_core.InputSignal<number>;
2440
2549
  showPagination: _angular_core.InputSignal<boolean>;
2441
2550
  ariaLabel: _angular_core.InputSignal<string>;
2551
+ /** Aria-label for the filter button. */
2552
+ filterAriaLabel: _angular_core.InputSignal<string>;
2553
+ /** Visually-hidden "Expand" text in the expand-column header. */
2554
+ expandHeaderLabel: _angular_core.InputSignal<string>;
2555
+ /** Aria-label for the row-expand toggle when row is collapsed. */
2556
+ expandRowAriaLabel: _angular_core.InputSignal<string>;
2557
+ /** Aria-label for the row-expand toggle when row is expanded. */
2558
+ collapseRowAriaLabel: _angular_core.InputSignal<string>;
2559
+ /** Aria-label for the "previous page" pagination button. */
2560
+ previousPageAriaLabel: _angular_core.InputSignal<string>;
2561
+ /** Aria-label for the "next page" pagination button. */
2562
+ nextPageAriaLabel: _angular_core.InputSignal<string>;
2563
+ /** Aria-label prefix for each page-number button. Rendered as `<this> <n>`. */
2564
+ pageAriaLabel: _angular_core.InputSignal<string>;
2565
+ /** Visible "Items per page:" label next to the page-size indicator. */
2566
+ itemsPerPageLabel: _angular_core.InputSignal<string>;
2567
+ /** Template for the pagination range text. Placeholders: `{start}`, `{end}`, `{total}`. */
2568
+ itemsInfoTemplate: _angular_core.InputSignal<string>;
2442
2569
  rowToggled: _angular_core.OutputEmitterRef<{
2443
2570
  row: any;
2444
2571
  index: number;
@@ -2451,6 +2578,7 @@ declare class VirtualTableComponent {
2451
2578
  expandedRows: _angular_core.WritableSignal<Set<number>>;
2452
2579
  paginationStart: _angular_core.Signal<number>;
2453
2580
  paginationEnd: _angular_core.Signal<number>;
2581
+ paginationInfoText: _angular_core.Signal<string>;
2454
2582
  totalPages: _angular_core.Signal<number>;
2455
2583
  visiblePages: _angular_core.Signal<(number | "...")[]>;
2456
2584
  isExpanded(index: number): boolean;
@@ -2462,7 +2590,7 @@ declare class VirtualTableComponent {
2462
2590
  getProgressColor(row: any): string;
2463
2591
  onPageChange(page: number): void;
2464
2592
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<VirtualTableComponent, never>;
2465
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<VirtualTableComponent, "pecb-virtual-table", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "progressConfig": { "alias": "progressConfig"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "showFilter": { "alias": "showFilter"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "showPagination": { "alias": "showPagination"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "rowToggled": "rowToggled"; "actionClicked": "actionClicked"; "searchChanged": "searchChanged"; "filterClicked": "filterClicked"; "pageChanged": "pageChanged"; }, ["expandedRowTemplate"], ["[toolbarLeft]", "[toolbarRight]"], true, never>;
2593
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VirtualTableComponent, "pecb-virtual-table", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "progressConfig": { "alias": "progressConfig"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "showFilter": { "alias": "showFilter"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "showPagination": { "alias": "showPagination"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "filterAriaLabel": { "alias": "filterAriaLabel"; "required": false; "isSignal": true; }; "expandHeaderLabel": { "alias": "expandHeaderLabel"; "required": false; "isSignal": true; }; "expandRowAriaLabel": { "alias": "expandRowAriaLabel"; "required": false; "isSignal": true; }; "collapseRowAriaLabel": { "alias": "collapseRowAriaLabel"; "required": false; "isSignal": true; }; "previousPageAriaLabel": { "alias": "previousPageAriaLabel"; "required": false; "isSignal": true; }; "nextPageAriaLabel": { "alias": "nextPageAriaLabel"; "required": false; "isSignal": true; }; "pageAriaLabel": { "alias": "pageAriaLabel"; "required": false; "isSignal": true; }; "itemsPerPageLabel": { "alias": "itemsPerPageLabel"; "required": false; "isSignal": true; }; "itemsInfoTemplate": { "alias": "itemsInfoTemplate"; "required": false; "isSignal": true; }; }, { "rowToggled": "rowToggled"; "actionClicked": "actionClicked"; "searchChanged": "searchChanged"; "filterClicked": "filterClicked"; "pageChanged": "pageChanged"; }, ["expandedRowTemplate"], ["[toolbarLeft]", "[toolbarRight]"], true, never>;
2466
2594
  }
2467
2595
 
2468
2596
  /**
@@ -2675,6 +2803,18 @@ declare class HierarchicalTableComponent implements AfterViewInit, OnDestroy {
2675
2803
  pageSize: _angular_core.InputSignal<number>;
2676
2804
  currentPage: _angular_core.InputSignal<number>;
2677
2805
  ariaLabel: _angular_core.InputSignal<string>;
2806
+ /** Aria-label for the filter button. */
2807
+ filterAriaLabel: _angular_core.InputSignal<string>;
2808
+ /** Aria-label for the "previous page" pagination button. */
2809
+ previousPageAriaLabel: _angular_core.InputSignal<string>;
2810
+ /** Aria-label for the "next page" pagination button. */
2811
+ nextPageAriaLabel: _angular_core.InputSignal<string>;
2812
+ /** Aria-label prefix for each page-number button. Rendered as `<this> <n>`. */
2813
+ pageAriaLabel: _angular_core.InputSignal<string>;
2814
+ /** Visible "Items per page:" label next to the page-size indicator. */
2815
+ itemsPerPageLabel: _angular_core.InputSignal<string>;
2816
+ /** Template for the pagination range text. Placeholders: `{start}`, `{end}`, `{total}`. */
2817
+ itemsInfoTemplate: _angular_core.InputSignal<string>;
2678
2818
  actionButtonClicked: _angular_core.OutputEmitterRef<void>;
2679
2819
  searchChanged: _angular_core.OutputEmitterRef<string>;
2680
2820
  filterClicked: _angular_core.OutputEmitterRef<void>;
@@ -2686,6 +2826,7 @@ declare class HierarchicalTableComponent implements AfterViewInit, OnDestroy {
2686
2826
  pageChanged: _angular_core.OutputEmitterRef<HierarchicalTablePageEvent>;
2687
2827
  paginationStart: _angular_core.Signal<number>;
2688
2828
  paginationEnd: _angular_core.Signal<number>;
2829
+ paginationInfoText: _angular_core.Signal<string>;
2689
2830
  totalPages: _angular_core.Signal<number>;
2690
2831
  visiblePages: _angular_core.Signal<(number | "...")[]>;
2691
2832
  getCellValue(row: Record<string, unknown>, key: string): unknown;
@@ -2708,7 +2849,7 @@ declare class HierarchicalTableComponent implements AfterViewInit, OnDestroy {
2708
2849
  private removeDragListeners;
2709
2850
  private updateScrollbar;
2710
2851
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<HierarchicalTableComponent, never>;
2711
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<HierarchicalTableComponent, "pecb-hierarchical-table", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "showActions": { "alias": "showActions"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "showFilter": { "alias": "showFilter"; "required": false; "isSignal": true; }; "showPagination": { "alias": "showPagination"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "actionButtonClicked": "actionButtonClicked"; "searchChanged": "searchChanged"; "filterClicked": "filterClicked"; "rowActionClicked": "rowActionClicked"; "pageChanged": "pageChanged"; }, never, ["[toolbarLeft]", "[toolbarRight]"], true, never>;
2852
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HierarchicalTableComponent, "pecb-hierarchical-table", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "showActions": { "alias": "showActions"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "showFilter": { "alias": "showFilter"; "required": false; "isSignal": true; }; "showPagination": { "alias": "showPagination"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "filterAriaLabel": { "alias": "filterAriaLabel"; "required": false; "isSignal": true; }; "previousPageAriaLabel": { "alias": "previousPageAriaLabel"; "required": false; "isSignal": true; }; "nextPageAriaLabel": { "alias": "nextPageAriaLabel"; "required": false; "isSignal": true; }; "pageAriaLabel": { "alias": "pageAriaLabel"; "required": false; "isSignal": true; }; "itemsPerPageLabel": { "alias": "itemsPerPageLabel"; "required": false; "isSignal": true; }; "itemsInfoTemplate": { "alias": "itemsInfoTemplate"; "required": false; "isSignal": true; }; }, { "actionButtonClicked": "actionButtonClicked"; "searchChanged": "searchChanged"; "filterClicked": "filterClicked"; "rowActionClicked": "rowActionClicked"; "pageChanged": "pageChanged"; }, never, ["[toolbarLeft]", "[toolbarRight]"], true, never>;
2712
2853
  }
2713
2854
 
2714
2855
  /**
@@ -2825,6 +2966,8 @@ declare class BackToTopComponent implements OnInit, OnDestroy {
2825
2966
  rightOffset: _angular_core.InputSignal<number>;
2826
2967
  /** Time in ms after scroll stops to transition to full opacity. Default: 1000 */
2827
2968
  scrollIdleDelay: _angular_core.InputSignal<number>;
2969
+ /** Aria-label for the button. */
2970
+ ariaLabel: _angular_core.InputSignal<string>;
2828
2971
  /** Whether the button is visible (scroll past threshold) */
2829
2972
  visible: _angular_core.WritableSignal<boolean>;
2830
2973
  /** Whether the user is actively scrolling (50% opacity) */
@@ -2839,7 +2982,7 @@ declare class BackToTopComponent implements OnInit, OnDestroy {
2839
2982
  scrollToTop(): void;
2840
2983
  private onScroll;
2841
2984
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BackToTopComponent, never>;
2842
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BackToTopComponent, "pecb-back-to-top", never, { "scrollThreshold": { "alias": "scrollThreshold"; "required": false; "isSignal": true; }; "bottomOffset": { "alias": "bottomOffset"; "required": false; "isSignal": true; }; "rightOffset": { "alias": "rightOffset"; "required": false; "isSignal": true; }; "scrollIdleDelay": { "alias": "scrollIdleDelay"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2985
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BackToTopComponent, "pecb-back-to-top", never, { "scrollThreshold": { "alias": "scrollThreshold"; "required": false; "isSignal": true; }; "bottomOffset": { "alias": "bottomOffset"; "required": false; "isSignal": true; }; "rightOffset": { "alias": "rightOffset"; "required": false; "isSignal": true; }; "scrollIdleDelay": { "alias": "scrollIdleDelay"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2843
2986
  }
2844
2987
 
2845
2988
  interface ExpandableRowColumn {
@@ -2875,6 +3018,24 @@ declare class ExpandableRowTableComponent {
2875
3018
  pageSize: _angular_core.InputSignal<number>;
2876
3019
  currentPage: _angular_core.InputSignal<number>;
2877
3020
  ariaLabel: _angular_core.InputSignal<string>;
3021
+ /** Aria-label for the filter button. */
3022
+ filterAriaLabel: _angular_core.InputSignal<string>;
3023
+ /** Visually-hidden "Expand" text in the expand-column header. */
3024
+ expandHeaderLabel: _angular_core.InputSignal<string>;
3025
+ /** Aria-label for the row-expand toggle when row is collapsed. */
3026
+ expandRowAriaLabel: _angular_core.InputSignal<string>;
3027
+ /** Aria-label for the row-expand toggle when row is expanded. */
3028
+ collapseRowAriaLabel: _angular_core.InputSignal<string>;
3029
+ /** Aria-label for the "previous page" pagination button. */
3030
+ previousPageAriaLabel: _angular_core.InputSignal<string>;
3031
+ /** Aria-label for the "next page" pagination button. */
3032
+ nextPageAriaLabel: _angular_core.InputSignal<string>;
3033
+ /** Aria-label prefix for each page-number button. Rendered as `<this> <n>`. */
3034
+ pageAriaLabel: _angular_core.InputSignal<string>;
3035
+ /** Visible "Items per page:" label next to the page-size indicator. */
3036
+ itemsPerPageLabel: _angular_core.InputSignal<string>;
3037
+ /** Template for the pagination range text. Placeholders: `{start}`, `{end}`, `{total}`. */
3038
+ itemsInfoTemplate: _angular_core.InputSignal<string>;
2878
3039
  rowToggled: _angular_core.OutputEmitterRef<{
2879
3040
  row: Record<string, unknown>;
2880
3041
  index: number;
@@ -2887,6 +3048,7 @@ declare class ExpandableRowTableComponent {
2887
3048
  expandedRows: _angular_core.WritableSignal<Set<number>>;
2888
3049
  paginationStart: _angular_core.Signal<number>;
2889
3050
  paginationEnd: _angular_core.Signal<number>;
3051
+ paginationInfoText: _angular_core.Signal<string>;
2890
3052
  totalPages: _angular_core.Signal<number>;
2891
3053
  visiblePages: _angular_core.Signal<(number | "...")[]>;
2892
3054
  isExpanded(index: number): boolean;
@@ -2898,7 +3060,7 @@ declare class ExpandableRowTableComponent {
2898
3060
  getProgressColor(row: Record<string, unknown>): string;
2899
3061
  onPageChange(page: number): void;
2900
3062
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ExpandableRowTableComponent, never>;
2901
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ExpandableRowTableComponent, "pecb-expandable-row-table", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "progressConfig": { "alias": "progressConfig"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "showFilter": { "alias": "showFilter"; "required": false; "isSignal": true; }; "showPagination": { "alias": "showPagination"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "rowToggled": "rowToggled"; "actionClicked": "actionClicked"; "searchChanged": "searchChanged"; "filterClicked": "filterClicked"; "pageChanged": "pageChanged"; }, ["expandedRowTemplate"], ["[toolbarLeft]", "[toolbarRight]"], true, never>;
3063
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ExpandableRowTableComponent, "pecb-expandable-row-table", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "progressConfig": { "alias": "progressConfig"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "showFilter": { "alias": "showFilter"; "required": false; "isSignal": true; }; "showPagination": { "alias": "showPagination"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "filterAriaLabel": { "alias": "filterAriaLabel"; "required": false; "isSignal": true; }; "expandHeaderLabel": { "alias": "expandHeaderLabel"; "required": false; "isSignal": true; }; "expandRowAriaLabel": { "alias": "expandRowAriaLabel"; "required": false; "isSignal": true; }; "collapseRowAriaLabel": { "alias": "collapseRowAriaLabel"; "required": false; "isSignal": true; }; "previousPageAriaLabel": { "alias": "previousPageAriaLabel"; "required": false; "isSignal": true; }; "nextPageAriaLabel": { "alias": "nextPageAriaLabel"; "required": false; "isSignal": true; }; "pageAriaLabel": { "alias": "pageAriaLabel"; "required": false; "isSignal": true; }; "itemsPerPageLabel": { "alias": "itemsPerPageLabel"; "required": false; "isSignal": true; }; "itemsInfoTemplate": { "alias": "itemsInfoTemplate"; "required": false; "isSignal": true; }; }, { "rowToggled": "rowToggled"; "actionClicked": "actionClicked"; "searchChanged": "searchChanged"; "filterClicked": "filterClicked"; "pageChanged": "pageChanged"; }, ["expandedRowTemplate"], ["[toolbarLeft]", "[toolbarRight]"], true, never>;
2902
3064
  }
2903
3065
 
2904
3066
  /**
@@ -3126,48 +3288,66 @@ declare class LanguageDropdownComponent {
3126
3288
  */
3127
3289
  type EmptyStateIconTheme = 'default' | 'info' | 'error' | 'warning' | 'success' | 'gray';
3128
3290
  /**
3129
- * Configuration for a button in the empty state.
3291
+ * Maximum number of action buttons an empty state will render. An empty state
3292
+ * should offer at most a primary action plus one secondary action — anything
3293
+ * beyond that is dropped (and is a usability smell).
3294
+ */
3295
+ declare const EMPTY_STATE_MAX_BUTTONS = 2;
3296
+ /**
3297
+ * Configuration for a single empty-state action button. Rendered with the
3298
+ * shared `<pecb-button>` so it inherits the library's button styling/states.
3130
3299
  */
3131
3300
  interface EmptyStateButton {
3132
- /** Button label text */
3301
+ /** Button label text. */
3133
3302
  label: string;
3134
- /** Button style: primary (dark bg) or secondary (outline) */
3135
- variant: 'primary' | 'secondary';
3303
+ /**
3304
+ * Action style. `'primary'` is the dark call-to-action, `'secondary'` is the
3305
+ * outline button. When omitted, the first button defaults to `'primary'` and
3306
+ * any subsequent button to `'secondary'`.
3307
+ */
3308
+ variant?: 'primary' | 'secondary';
3309
+ /** Optional leading icon — a registered `IconRegistry` name. */
3310
+ icon?: string;
3311
+ /** Whether the button is disabled. */
3312
+ disabled?: boolean;
3313
+ /**
3314
+ * Optional identifier echoed back on `(buttonClick)` so the caller can tell
3315
+ * which action fired without comparing labels.
3316
+ */
3317
+ id?: string;
3136
3318
  }
3137
3319
  /**
3138
3320
  * Empty state component matching the PECB Figma design system.
3139
3321
  *
3140
- * Displays a centered message with an icon, title, description, and
3141
- * optional action buttons when there is no data to show.
3142
- *
3143
- * **Figma specs (node 6458:49629):**
3144
- * - Container: white bg, #ececec border, 12px radius, 64px v-pad, 220px h-pad
3145
- * - Gap between elements: 16px
3146
- * - Icon circle: 56px, 28px border-radius
3147
- * - default bg: #f4f4f4 (neutral-7)
3148
- * - info bg: #e6f0fa (new-bg)
3149
- * - error bg: #fdecea (cancelled-bg)
3150
- * - Title: Bold 24px, #212427, line-height 1.2
3151
- * - Description: Medium 14px, #919191, text-center
3152
- * - Primary button: #212427 bg, white text, 6px radius, 40px h, 16px h-pad
3153
- * - Secondary button: white bg, #c2c2c2 border, #212427 text, 6px radius, 40px h
3154
- * - Button gap: 16px
3322
+ * Displays a centered message with an icon, title, description, and optional
3323
+ * action buttons when there is no data to show.
3324
+ *
3325
+ * **Icon** pass a registered icon name via `[icon]`, or project a custom SVG
3326
+ * into the `[emptyStateIcon]` slot. A registered `[icon]` name takes precedence.
3327
+ *
3328
+ * **Buttons** supply up to {@link EMPTY_STATE_MAX_BUTTONS} actions via
3329
+ * `[buttons]`; they render with `<pecb-button>`.
3155
3330
  *
3156
3331
  * @example
3157
3332
  * ```html
3333
+ * <!-- Icon by registered name -->
3158
3334
  * <pecb-empty-state
3159
- * title="No Certifications Yet"
3160
- * description="Start your professional development..."
3161
- * iconTheme="default"
3162
- * [buttons]="[
3163
- * { label: 'Explore Certifications', variant: 'primary' },
3164
- * { label: 'Learn More', variant: 'secondary' }
3165
- * ]"
3335
+ * icon="layout-grid"
3336
+ * title="No Workflows Yet"
3337
+ * description="No workflows yet. They will appear here once created."
3338
+ * [buttons]="[{ label: 'Create Workflow', icon: 'plus' }]"
3166
3339
  * (buttonClick)="onAction($event)"
3167
3340
  * ></pecb-empty-state>
3341
+ *
3342
+ * <!-- Icon by content projection -->
3343
+ * <pecb-empty-state title="No Data Found" iconTheme="error">
3344
+ * <svg emptyStateIcon ...></svg>
3345
+ * </pecb-empty-state>
3168
3346
  * ```
3169
3347
  */
3170
3348
  declare class EmptyStateComponent {
3349
+ private readonly registry;
3350
+ private readonly sanitizer;
3171
3351
  /** Unique element ID */
3172
3352
  id: _angular_core.InputSignal<string>;
3173
3353
  /** Title text */
@@ -3176,7 +3356,13 @@ declare class EmptyStateComponent {
3176
3356
  description: _angular_core.InputSignal<string>;
3177
3357
  /** Icon background color theme */
3178
3358
  iconTheme: _angular_core.InputSignal<EmptyStateIconTheme>;
3179
- /** Action buttons to display */
3359
+ /**
3360
+ * Icon shown in the circle, by registered `IconRegistry` name. When set (and
3361
+ * the name resolves), it takes precedence over any `[emptyStateIcon]`
3362
+ * projected content. Leave empty to use content projection instead.
3363
+ */
3364
+ icon: _angular_core.InputSignal<string>;
3365
+ /** Action buttons to display (capped at {@link EMPTY_STATE_MAX_BUTTONS}). */
3180
3366
  buttons: _angular_core.InputSignal<EmptyStateButton[]>;
3181
3367
  /** Whether to show the title */
3182
3368
  showTitle: _angular_core.InputSignal<boolean>;
@@ -3186,12 +3372,31 @@ declare class EmptyStateComponent {
3186
3372
  buttonClick: _angular_core.OutputEmitterRef<EmptyStateButton>;
3187
3373
  /** CSS class for the icon circle background */
3188
3374
  iconBgClass: _angular_core.Signal<string>;
3189
- /** Whether any buttons are configured */
3375
+ /** Raw SVG for the `icon` name input — empty when unset or unknown. */
3376
+ private readonly resolvedIcon;
3377
+ /** Sanitized SVG for the `icon` name input, bound via [innerHTML]. */
3378
+ iconSvg: _angular_core.Signal<SafeHtml>;
3379
+ /** True when a registered `icon` name is set — drives icon vs. projection. */
3380
+ hasIconName: _angular_core.Signal<boolean>;
3381
+ /**
3382
+ * Buttons actually rendered: capped at {@link EMPTY_STATE_MAX_BUTTONS} and
3383
+ * pre-resolved to the props `<pecb-button>` needs. `source` carries the
3384
+ * original config back out through `(buttonClick)`.
3385
+ */
3386
+ renderButtons: _angular_core.Signal<{
3387
+ source: EmptyStateButton;
3388
+ label: string;
3389
+ variant: ButtonVariant;
3390
+ iconSvg: string;
3391
+ iconStyle: ButtonIconStyle;
3392
+ disabled: boolean;
3393
+ }[]>;
3394
+ /** Whether any buttons will be rendered. */
3190
3395
  hasButtons: _angular_core.Signal<boolean>;
3191
- /** Handle button click */
3396
+ /** Handle button click — re-emits the original button config. */
3192
3397
  onButtonClick(button: EmptyStateButton): void;
3193
3398
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmptyStateComponent, never>;
3194
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmptyStateComponent, "pecb-empty-state", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "iconTheme": { "alias": "iconTheme"; "required": false; "isSignal": true; }; "buttons": { "alias": "buttons"; "required": false; "isSignal": true; }; "showTitle": { "alias": "showTitle"; "required": false; "isSignal": true; }; "showDescription": { "alias": "showDescription"; "required": false; "isSignal": true; }; }, { "buttonClick": "buttonClick"; }, never, ["[emptyStateIcon]"], true, never>;
3399
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmptyStateComponent, "pecb-empty-state", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "iconTheme": { "alias": "iconTheme"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "buttons": { "alias": "buttons"; "required": false; "isSignal": true; }; "showTitle": { "alias": "showTitle"; "required": false; "isSignal": true; }; "showDescription": { "alias": "showDescription"; "required": false; "isSignal": true; }; }, { "buttonClick": "buttonClick"; }, never, ["[emptyStateIcon]"], true, never>;
3195
3400
  }
3196
3401
 
3197
3402
  /**
@@ -3257,45 +3462,64 @@ declare class TestimonialComponent {
3257
3462
  type TagStyle = 'light' | 'dark';
3258
3463
  type TagAction = 'none' | 'close' | 'plus';
3259
3464
  declare class TagComponent {
3260
- tagId: _angular_core.InputSignal<string>;
3465
+ id: _angular_core.InputSignal<string>;
3261
3466
  label: _angular_core.InputSignal<string>;
3262
3467
  tagStyle: _angular_core.InputSignal<TagStyle>;
3263
3468
  action: _angular_core.InputSignal<TagAction>;
3469
+ /** Aria-label for the close (×) action — override to localize (audit F20). */
3470
+ removeAriaLabel: _angular_core.InputSignal<string>;
3264
3471
  tagClose: _angular_core.OutputEmitterRef<void>;
3265
3472
  tagClasses: _angular_core.Signal<string[]>;
3266
3473
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TagComponent, never>;
3267
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagComponent, "pecb-tag", never, { "tagId": { "alias": "tagId"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "tagStyle": { "alias": "tagStyle"; "required": false; "isSignal": true; }; "action": { "alias": "action"; "required": false; "isSignal": true; }; }, { "tagClose": "tagClose"; }, never, never, true, never>;
3474
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagComponent, "pecb-tag", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "tagStyle": { "alias": "tagStyle"; "required": false; "isSignal": true; }; "action": { "alias": "action"; "required": false; "isSignal": true; }; "removeAriaLabel": { "alias": "removeAriaLabel"; "required": false; "isSignal": true; }; }, { "tagClose": "tagClose"; }, never, never, true, never>;
3268
3475
  }
3476
+
3269
3477
  type LinkButtonType = 'go-back' | 'view-details' | 'read-more' | 'show-credential';
3270
3478
  declare class LinkButtonComponent {
3271
- linkId: _angular_core.InputSignal<string>;
3479
+ id: _angular_core.InputSignal<string>;
3272
3480
  type: _angular_core.InputSignal<LinkButtonType>;
3481
+ /** Optional explicit label override. When set, takes precedence over the
3482
+ * type-driven default — use this to localize (audit F20). */
3483
+ label: _angular_core.InputSignal<string>;
3273
3484
  clicked: _angular_core.OutputEmitterRef<void>;
3274
3485
  displayText: _angular_core.Signal<string>;
3275
3486
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LinkButtonComponent, never>;
3276
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<LinkButtonComponent, "pecb-link-button", never, { "linkId": { "alias": "linkId"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, never>;
3487
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LinkButtonComponent, "pecb-link-button", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, never>;
3277
3488
  }
3489
+
3278
3490
  declare class SlidePointsComponent {
3279
3491
  total: _angular_core.InputSignal<number>;
3492
+ /** Template for the container's aria-label. Placeholders: `{current}` (1-based), `{total}`. */
3493
+ containerAriaLabelTemplate: _angular_core.InputSignal<string>;
3494
+ /** Prefix for each dot's aria-label. Rendered as `<this> <n>`. */
3495
+ slideAriaLabelPrefix: _angular_core.InputSignal<string>;
3280
3496
  dotClick: _angular_core.OutputEmitterRef<number>;
3281
3497
  currentIndex: _angular_core.WritableSignal<number>;
3282
3498
  dotsArray: _angular_core.Signal<number[]>;
3499
+ containerAriaLabel: _angular_core.Signal<string>;
3283
3500
  selectDot(index: number): void;
3284
3501
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlidePointsComponent, never>;
3285
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlidePointsComponent, "pecb-slide-points", never, { "total": { "alias": "total"; "required": false; "isSignal": true; }; }, { "dotClick": "dotClick"; }, never, never, true, never>;
3502
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlidePointsComponent, "pecb-slide-points", never, { "total": { "alias": "total"; "required": false; "isSignal": true; }; "containerAriaLabelTemplate": { "alias": "containerAriaLabelTemplate"; "required": false; "isSignal": true; }; "slideAriaLabelPrefix": { "alias": "slideAriaLabelPrefix"; "required": false; "isSignal": true; }; }, { "dotClick": "dotClick"; }, never, never, true, never>;
3286
3503
  }
3504
+
3287
3505
  declare class QuantitySelectorComponent {
3288
- qtyId: _angular_core.InputSignal<string>;
3289
- value: _angular_core.WritableSignal<number>;
3506
+ id: _angular_core.InputSignal<string>;
3507
+ /** Two-way bindable current value. External writes are clamped to [min, max]. */
3508
+ value: _angular_core.ModelSignal<number>;
3290
3509
  min: _angular_core.InputSignal<number>;
3291
3510
  max: _angular_core.InputSignal<number>;
3292
3511
  showFraction: _angular_core.InputSignal<boolean>;
3293
- valueChange: _angular_core.OutputEmitterRef<number>;
3512
+ /** Aria-label for the decrement button. */
3513
+ decreaseAriaLabel: _angular_core.InputSignal<string>;
3514
+ /** Aria-label for the increment button. */
3515
+ increaseAriaLabel: _angular_core.InputSignal<string>;
3516
+ constructor();
3294
3517
  increment(): void;
3295
3518
  decrement(): void;
3296
3519
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<QuantitySelectorComponent, never>;
3297
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<QuantitySelectorComponent, "pecb-quantity-selector", never, { "qtyId": { "alias": "qtyId"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "showFraction": { "alias": "showFraction"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
3520
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<QuantitySelectorComponent, "pecb-quantity-selector", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "showFraction": { "alias": "showFraction"; "required": false; "isSignal": true; }; "decreaseAriaLabel": { "alias": "decreaseAriaLabel"; "required": false; "isSignal": true; }; "increaseAriaLabel": { "alias": "increaseAriaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
3298
3521
  }
3522
+
3299
3523
  type AuditorStatusType = 'trainee' | 'auditor' | 'member';
3300
3524
  declare class AuditorStatusComponent {
3301
3525
  type: _angular_core.InputSignal<AuditorStatusType>;
@@ -3305,6 +3529,7 @@ declare class AuditorStatusComponent {
3305
3529
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AuditorStatusComponent, never>;
3306
3530
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AuditorStatusComponent, "pecb-auditor-status", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3307
3531
  }
3532
+
3308
3533
  type RatingStyle = 'black' | 'white';
3309
3534
  declare class RatingNumberComponent {
3310
3535
  value: _angular_core.InputSignal<number>;
@@ -3314,17 +3539,22 @@ declare class RatingNumberComponent {
3314
3539
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RatingNumberComponent, never>;
3315
3540
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<RatingNumberComponent, "pecb-rating-number", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "ratingStyle": { "alias": "ratingStyle"; "required": false; "isSignal": true; }; }, { "selected": "selected"; }, never, never, true, never>;
3316
3541
  }
3542
+
3317
3543
  type IconTagType = 'important' | 'question' | 'review';
3318
3544
  declare class IconTagComponent {
3319
3545
  type: _angular_core.InputSignal<IconTagType>;
3320
3546
  active: _angular_core.InputSignal<boolean>;
3547
+ /** Optional explicit label override. When set, takes precedence over the
3548
+ * type-driven default — use this to localize (audit F20). */
3549
+ label: _angular_core.InputSignal<string>;
3321
3550
  clicked: _angular_core.OutputEmitterRef<void>;
3322
3551
  iconTagClasses: _angular_core.Signal<string[]>;
3323
3552
  iconBgClass: _angular_core.Signal<string>;
3324
3553
  displayLabel: _angular_core.Signal<string>;
3325
3554
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<IconTagComponent, never>;
3326
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconTagComponent, "pecb-icon-tag", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, never>;
3555
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconTagComponent, "pecb-icon-tag", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, never>;
3327
3556
  }
3557
+
3328
3558
  type TranscriptLineState = 'default' | 'active' | 'hover';
3329
3559
  declare class TranscriptLineComponent {
3330
3560
  time: _angular_core.InputSignal<string>;
@@ -3337,6 +3567,7 @@ declare class TranscriptLineComponent {
3337
3567
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TranscriptLineComponent, never>;
3338
3568
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TranscriptLineComponent, "pecb-transcript-line", never, { "time": { "alias": "time"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, never>;
3339
3569
  }
3570
+
3340
3571
  type MiniIconAction = 'edit' | 'delete';
3341
3572
  declare class MiniIconButtonComponent {
3342
3573
  action: _angular_core.InputSignal<MiniIconAction>;
@@ -3344,39 +3575,48 @@ declare class MiniIconButtonComponent {
3344
3575
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MiniIconButtonComponent, never>;
3345
3576
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<MiniIconButtonComponent, "pecb-mini-icon-button", never, { "action": { "alias": "action"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, never>;
3346
3577
  }
3578
+
3347
3579
  declare class NoResultsComponent {
3348
- noResultsId: _angular_core.InputSignal<string>;
3580
+ id: _angular_core.InputSignal<string>;
3349
3581
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NoResultsComponent, never>;
3350
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NoResultsComponent, "pecb-no-results", never, { "noResultsId": { "alias": "noResultsId"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3582
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NoResultsComponent, "pecb-no-results", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3351
3583
  }
3584
+
3352
3585
  declare class CertificateUploadBarComponent {
3353
- certUploadId: _angular_core.InputSignal<string>;
3586
+ id: _angular_core.InputSignal<string>;
3354
3587
  filename: _angular_core.InputSignal<string>;
3355
3588
  showClose: _angular_core.InputSignal<boolean>;
3589
+ /** Aria-label for the remove button — override to localize (audit F20). */
3590
+ removeAriaLabel: _angular_core.InputSignal<string>;
3356
3591
  closeClick: _angular_core.OutputEmitterRef<void>;
3357
3592
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CertificateUploadBarComponent, never>;
3358
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CertificateUploadBarComponent, "pecb-certificate-upload-bar", never, { "certUploadId": { "alias": "certUploadId"; "required": false; "isSignal": true; }; "filename": { "alias": "filename"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; }, { "closeClick": "closeClick"; }, never, never, true, never>;
3593
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CertificateUploadBarComponent, "pecb-certificate-upload-bar", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "filename": { "alias": "filename"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "removeAriaLabel": { "alias": "removeAriaLabel"; "required": false; "isSignal": true; }; }, { "closeClick": "closeClick"; }, never, never, true, never>;
3359
3594
  }
3595
+
3360
3596
  declare class VideoUploadBarComponent {
3361
- videoUploadId: _angular_core.InputSignal<string>;
3597
+ id: _angular_core.InputSignal<string>;
3362
3598
  filename: _angular_core.InputSignal<string>;
3363
3599
  fileSize: _angular_core.InputSignal<string>;
3600
+ /** Aria-label for the delete button — override to localize (audit F20). */
3601
+ deleteAriaLabel: _angular_core.InputSignal<string>;
3364
3602
  deleteClick: _angular_core.OutputEmitterRef<void>;
3365
3603
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<VideoUploadBarComponent, never>;
3366
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<VideoUploadBarComponent, "pecb-video-upload-bar", never, { "videoUploadId": { "alias": "videoUploadId"; "required": false; "isSignal": true; }; "filename": { "alias": "filename"; "required": false; "isSignal": true; }; "fileSize": { "alias": "fileSize"; "required": false; "isSignal": true; }; }, { "deleteClick": "deleteClick"; }, never, never, true, never>;
3604
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VideoUploadBarComponent, "pecb-video-upload-bar", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "filename": { "alias": "filename"; "required": false; "isSignal": true; }; "fileSize": { "alias": "fileSize"; "required": false; "isSignal": true; }; "deleteAriaLabel": { "alias": "deleteAriaLabel"; "required": false; "isSignal": true; }; }, { "deleteClick": "deleteClick"; }, never, never, true, never>;
3367
3605
  }
3606
+
3368
3607
  type StatisticsIconColor = 'blue' | 'green' | 'orange' | 'red' | 'gray';
3369
3608
  declare class StatisticsCardComponent {
3370
- statsId: _angular_core.InputSignal<string>;
3609
+ id: _angular_core.InputSignal<string>;
3371
3610
  value: _angular_core.InputSignal<number>;
3372
3611
  label: _angular_core.InputSignal<string>;
3373
3612
  iconColor: _angular_core.InputSignal<StatisticsIconColor>;
3374
3613
  iconClasses: _angular_core.Signal<string[]>;
3375
3614
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatisticsCardComponent, never>;
3376
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatisticsCardComponent, "pecb-statistics-card", never, { "statsId": { "alias": "statsId"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "iconColor": { "alias": "iconColor"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
3615
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatisticsCardComponent, "pecb-statistics-card", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "iconColor": { "alias": "iconColor"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
3377
3616
  }
3617
+
3378
3618
  declare class PriceMethodComponent {
3379
- priceMethodId: _angular_core.InputSignal<string>;
3619
+ id: _angular_core.InputSignal<string>;
3380
3620
  leftLabel: _angular_core.InputSignal<string>;
3381
3621
  rightLabel: _angular_core.InputSignal<string>;
3382
3622
  selectionChange: _angular_core.OutputEmitterRef<number>;
@@ -3384,11 +3624,12 @@ declare class PriceMethodComponent {
3384
3624
  pillClasses(index: number): string[];
3385
3625
  select(index: number): void;
3386
3626
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PriceMethodComponent, never>;
3387
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PriceMethodComponent, "pecb-price-method", never, { "priceMethodId": { "alias": "priceMethodId"; "required": false; "isSignal": true; }; "leftLabel": { "alias": "leftLabel"; "required": false; "isSignal": true; }; "rightLabel": { "alias": "rightLabel"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, never, never, true, never>;
3627
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PriceMethodComponent, "pecb-price-method", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "leftLabel": { "alias": "leftLabel"; "required": false; "isSignal": true; }; "rightLabel": { "alias": "rightLabel"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, never, never, true, never>;
3388
3628
  }
3629
+
3389
3630
  type AppStatusColor = 'warning' | 'success' | 'error' | 'info';
3390
3631
  declare class ApplicationStatusBarComponent {
3391
- appStatusId: _angular_core.InputSignal<string>;
3632
+ id: _angular_core.InputSignal<string>;
3392
3633
  message: _angular_core.InputSignal<string>;
3393
3634
  statusLabel: _angular_core.InputSignal<string>;
3394
3635
  statusColor: _angular_core.InputSignal<AppStatusColor>;
@@ -3396,38 +3637,49 @@ declare class ApplicationStatusBarComponent {
3396
3637
  color: string;
3397
3638
  }>;
3398
3639
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ApplicationStatusBarComponent, never>;
3399
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ApplicationStatusBarComponent, "pecb-application-status-bar", never, { "appStatusId": { "alias": "appStatusId"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "statusLabel": { "alias": "statusLabel"; "required": false; "isSignal": true; }; "statusColor": { "alias": "statusColor"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3640
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ApplicationStatusBarComponent, "pecb-application-status-bar", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "statusLabel": { "alias": "statusLabel"; "required": false; "isSignal": true; }; "statusColor": { "alias": "statusColor"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3400
3641
  }
3642
+
3401
3643
  declare class ReasonForReturnComponent {
3402
- reasonId: _angular_core.InputSignal<string>;
3644
+ id: _angular_core.InputSignal<string>;
3403
3645
  message: _angular_core.InputSignal<string>;
3404
3646
  linkText: _angular_core.InputSignal<string>;
3405
3647
  linkUrl: _angular_core.InputSignal<string>;
3406
3648
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ReasonForReturnComponent, never>;
3407
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ReasonForReturnComponent, "pecb-reason-for-return", never, { "reasonId": { "alias": "reasonId"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "linkText": { "alias": "linkText"; "required": false; "isSignal": true; }; "linkUrl": { "alias": "linkUrl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3649
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ReasonForReturnComponent, "pecb-reason-for-return", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "linkText": { "alias": "linkText"; "required": false; "isSignal": true; }; "linkUrl": { "alias": "linkUrl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3408
3650
  }
3651
+
3409
3652
  type ContentTagType = 'quiz' | 'video';
3410
3653
  type ContentTagDisplay = 'full' | 'icon-only';
3411
3654
  declare class ContentTypeTagComponent {
3412
3655
  type: _angular_core.InputSignal<ContentTagType>;
3413
3656
  displayMode: _angular_core.InputSignal<ContentTagDisplay>;
3657
+ /** Optional explicit label override. When set, takes precedence over the
3658
+ * type-driven default — use this to localize (audit F20). */
3659
+ label: _angular_core.InputSignal<string>;
3414
3660
  tagClasses: _angular_core.Signal<string[]>;
3661
+ displayLabel: _angular_core.Signal<string>;
3415
3662
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ContentTypeTagComponent, never>;
3416
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ContentTypeTagComponent, "pecb-content-type-tag", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "displayMode": { "alias": "displayMode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3663
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ContentTypeTagComponent, "pecb-content-type-tag", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "displayMode": { "alias": "displayMode"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3417
3664
  }
3665
+
3418
3666
  type QuestionTagType = 'scenario' | 'true-false' | 'essay' | 'multiple-choice';
3419
3667
  type QuestionTagDisplay = 'full' | 'icon-only';
3420
3668
  declare class QuestionTypeTagComponent {
3421
3669
  type: _angular_core.InputSignal<QuestionTagType>;
3422
3670
  displayMode: _angular_core.InputSignal<QuestionTagDisplay>;
3671
+ /** Optional explicit label override. When set, takes precedence over the
3672
+ * type-driven default — use this to localize (audit F20). */
3673
+ label: _angular_core.InputSignal<string>;
3423
3674
  tagClasses: _angular_core.Signal<string[]>;
3424
3675
  displayLabel: _angular_core.Signal<string>;
3425
3676
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<QuestionTypeTagComponent, never>;
3426
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<QuestionTypeTagComponent, "pecb-question-type-tag", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "displayMode": { "alias": "displayMode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3677
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<QuestionTypeTagComponent, "pecb-question-type-tag", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "displayMode": { "alias": "displayMode"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3427
3678
  }
3679
+
3428
3680
  type PdfCardVariant = 'default' | 'hover' | 'compact';
3429
3681
  declare class StandardsPdfCardComponent {
3430
- pdfCardId: _angular_core.InputSignal<string>;
3682
+ id: _angular_core.InputSignal<string>;
3431
3683
  filename: _angular_core.InputSignal<string>;
3432
3684
  variant: _angular_core.InputSignal<PdfCardVariant>;
3433
3685
  showViewButton: _angular_core.InputSignal<boolean>;
@@ -3435,8 +3687,9 @@ declare class StandardsPdfCardComponent {
3435
3687
  cardClasses: _angular_core.Signal<string[]>;
3436
3688
  buttonClasses: _angular_core.Signal<string[]>;
3437
3689
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StandardsPdfCardComponent, never>;
3438
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StandardsPdfCardComponent, "pecb-standards-pdf-card", never, { "pdfCardId": { "alias": "pdfCardId"; "required": false; "isSignal": true; }; "filename": { "alias": "filename"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "showViewButton": { "alias": "showViewButton"; "required": false; "isSignal": true; }; }, { "viewClick": "viewClick"; }, never, never, true, never>;
3690
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StandardsPdfCardComponent, "pecb-standards-pdf-card", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "filename": { "alias": "filename"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "showViewButton": { "alias": "showViewButton"; "required": false; "isSignal": true; }; }, { "viewClick": "viewClick"; }, never, never, true, never>;
3439
3691
  }
3692
+
3440
3693
  type NoteSidebarState = 'default' | 'unread' | 'active';
3441
3694
  type NoteSidebarPosition = 'top' | 'middle' | 'bottom' | 'single';
3442
3695
  declare class NoteSidebarItemComponent {
@@ -3454,22 +3707,25 @@ declare class NoteSidebarItemComponent {
3454
3707
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NoteSidebarItemComponent, never>;
3455
3708
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NoteSidebarItemComponent, "pecb-note-sidebar-item", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "time": { "alias": "time"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3456
3709
  }
3710
+
3457
3711
  declare class AuthorDateTimeComponent {
3458
- authorDtId: _angular_core.InputSignal<string>;
3712
+ id: _angular_core.InputSignal<string>;
3459
3713
  author: _angular_core.InputSignal<string>;
3460
3714
  date: _angular_core.InputSignal<string>;
3461
3715
  time: _angular_core.InputSignal<string>;
3462
3716
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AuthorDateTimeComponent, never>;
3463
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AuthorDateTimeComponent, "pecb-author-date-time", never, { "authorDtId": { "alias": "authorDtId"; "required": false; "isSignal": true; }; "author": { "alias": "author"; "required": false; "isSignal": true; }; "date": { "alias": "date"; "required": false; "isSignal": true; }; "time": { "alias": "time"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3717
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AuthorDateTimeComponent, "pecb-author-date-time", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "author": { "alias": "author"; "required": false; "isSignal": true; }; "date": { "alias": "date"; "required": false; "isSignal": true; }; "time": { "alias": "time"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3464
3718
  }
3719
+
3465
3720
  type CheckDeleteType = 'check' | 'delete';
3466
3721
  declare class CheckDeleteIconComponent {
3467
3722
  type: _angular_core.InputSignal<CheckDeleteType>;
3468
3723
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CheckDeleteIconComponent, never>;
3469
3724
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckDeleteIconComponent, "pecb-check-delete-icon", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3470
3725
  }
3726
+
3471
3727
  declare class ProfileElementsCardComponent {
3472
- profileCardId: _angular_core.InputSignal<string>;
3728
+ id: _angular_core.InputSignal<string>;
3473
3729
  name: _angular_core.InputSignal<string>;
3474
3730
  email: _angular_core.InputSignal<string>;
3475
3731
  userId: _angular_core.InputSignal<string>;
@@ -3477,28 +3733,31 @@ declare class ProfileElementsCardComponent {
3477
3733
  badgeLabel: _angular_core.InputSignal<string>;
3478
3734
  avatarUrl: _angular_core.InputSignal<string>;
3479
3735
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProfileElementsCardComponent, never>;
3480
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProfileElementsCardComponent, "pecb-profile-elements-card", never, { "profileCardId": { "alias": "profileCardId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "email": { "alias": "email"; "required": false; "isSignal": true; }; "userId": { "alias": "userId"; "required": false; "isSignal": true; }; "statusText": { "alias": "statusText"; "required": false; "isSignal": true; }; "badgeLabel": { "alias": "badgeLabel"; "required": false; "isSignal": true; }; "avatarUrl": { "alias": "avatarUrl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3736
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProfileElementsCardComponent, "pecb-profile-elements-card", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "email": { "alias": "email"; "required": false; "isSignal": true; }; "userId": { "alias": "userId"; "required": false; "isSignal": true; }; "statusText": { "alias": "statusText"; "required": false; "isSignal": true; }; "badgeLabel": { "alias": "badgeLabel"; "required": false; "isSignal": true; }; "avatarUrl": { "alias": "avatarUrl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3481
3737
  }
3738
+
3482
3739
  declare class UserWithEmailComponent {
3483
- userEmailId: _angular_core.InputSignal<string>;
3740
+ id: _angular_core.InputSignal<string>;
3484
3741
  name: _angular_core.InputSignal<string>;
3485
3742
  email: _angular_core.InputSignal<string>;
3486
3743
  avatarUrl: _angular_core.InputSignal<string>;
3487
3744
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UserWithEmailComponent, never>;
3488
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UserWithEmailComponent, "pecb-user-with-email", never, { "userEmailId": { "alias": "userEmailId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "email": { "alias": "email"; "required": false; "isSignal": true; }; "avatarUrl": { "alias": "avatarUrl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3745
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UserWithEmailComponent, "pecb-user-with-email", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "email": { "alias": "email"; "required": false; "isSignal": true; }; "avatarUrl": { "alias": "avatarUrl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3489
3746
  }
3747
+
3490
3748
  declare class CancelUpdateButtonsComponent {
3491
- cancelUpdateId: _angular_core.InputSignal<string>;
3749
+ id: _angular_core.InputSignal<string>;
3492
3750
  cancelLabel: _angular_core.InputSignal<string>;
3493
3751
  updateLabel: _angular_core.InputSignal<string>;
3494
3752
  cancelClick: _angular_core.OutputEmitterRef<void>;
3495
3753
  updateClick: _angular_core.OutputEmitterRef<void>;
3496
3754
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CancelUpdateButtonsComponent, never>;
3497
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CancelUpdateButtonsComponent, "pecb-cancel-update-buttons", never, { "cancelUpdateId": { "alias": "cancelUpdateId"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "updateLabel": { "alias": "updateLabel"; "required": false; "isSignal": true; }; }, { "cancelClick": "cancelClick"; "updateClick": "updateClick"; }, never, never, true, never>;
3755
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CancelUpdateButtonsComponent, "pecb-cancel-update-buttons", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "updateLabel": { "alias": "updateLabel"; "required": false; "isSignal": true; }; }, { "cancelClick": "cancelClick"; "updateClick": "updateClick"; }, never, never, true, never>;
3498
3756
  }
3757
+
3499
3758
  type InformationBoxVariant = 'default' | 'developer';
3500
3759
  declare class InformationBoxComponent {
3501
- infoBoxId: _angular_core.InputSignal<string>;
3760
+ id: _angular_core.InputSignal<string>;
3502
3761
  variant: _angular_core.InputSignal<InformationBoxVariant>;
3503
3762
  text: _angular_core.InputSignal<string>;
3504
3763
  title: _angular_core.InputSignal<string>;
@@ -3508,70 +3767,85 @@ declare class InformationBoxComponent {
3508
3767
  'pecb-info-box--developer': boolean;
3509
3768
  }>;
3510
3769
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<InformationBoxComponent, never>;
3511
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<InformationBoxComponent, "pecb-information-box", never, { "infoBoxId": { "alias": "infoBoxId"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3770
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InformationBoxComponent, "pecb-information-box", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3512
3771
  }
3772
+
3513
3773
  declare class RequestSentByComponent {
3514
- requestSentId: _angular_core.InputSignal<string>;
3774
+ id: _angular_core.InputSignal<string>;
3515
3775
  name: _angular_core.InputSignal<string>;
3516
3776
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RequestSentByComponent, never>;
3517
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RequestSentByComponent, "pecb-request-sent-by", never, { "requestSentId": { "alias": "requestSentId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3777
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RequestSentByComponent, "pecb-request-sent-by", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3518
3778
  }
3779
+
3519
3780
  type NotificationStatusType = 'read' | 'unread';
3520
3781
  declare class NotificationStatusLinkComponent {
3521
- notifLinkId: _angular_core.InputSignal<string>;
3782
+ id: _angular_core.InputSignal<string>;
3522
3783
  type: _angular_core.InputSignal<NotificationStatusType>;
3784
+ /** Optional explicit label override. When set, takes precedence over the
3785
+ * type-driven default — use this to localize (audit F20). */
3786
+ label: _angular_core.InputSignal<string>;
3523
3787
  statusClick: _angular_core.OutputEmitterRef<void>;
3524
- linkLabel: _angular_core.Signal<"Mark as Read" | "Mark as Unread">;
3788
+ linkLabel: _angular_core.Signal<string>;
3525
3789
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationStatusLinkComponent, never>;
3526
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NotificationStatusLinkComponent, "pecb-notification-status-link", never, { "notifLinkId": { "alias": "notifLinkId"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; }, { "statusClick": "statusClick"; }, never, never, true, never>;
3790
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NotificationStatusLinkComponent, "pecb-notification-status-link", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "statusClick": "statusClick"; }, never, never, true, never>;
3527
3791
  }
3792
+
3528
3793
  declare class EditCoverPhotoComponent {
3529
- editCoverId: _angular_core.InputSignal<string>;
3794
+ id: _angular_core.InputSignal<string>;
3530
3795
  editClick: _angular_core.OutputEmitterRef<void>;
3531
3796
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EditCoverPhotoComponent, never>;
3532
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<EditCoverPhotoComponent, "pecb-edit-cover-photo", never, { "editCoverId": { "alias": "editCoverId"; "required": false; "isSignal": true; }; }, { "editClick": "editClick"; }, never, never, true, never>;
3797
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EditCoverPhotoComponent, "pecb-edit-cover-photo", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, { "editClick": "editClick"; }, never, never, true, never>;
3533
3798
  }
3799
+
3534
3800
  type RequestStatusIconType = 'warning' | 'success';
3535
3801
  declare class RequestStatusBarComponent {
3536
- requestStatusId: _angular_core.InputSignal<string>;
3802
+ id: _angular_core.InputSignal<string>;
3537
3803
  message: _angular_core.InputSignal<string>;
3538
3804
  linkText: _angular_core.InputSignal<string>;
3539
3805
  iconType: _angular_core.InputSignal<RequestStatusIconType>;
3540
3806
  linkClick: _angular_core.OutputEmitterRef<void>;
3541
3807
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RequestStatusBarComponent, never>;
3542
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RequestStatusBarComponent, "pecb-request-status-bar", never, { "requestStatusId": { "alias": "requestStatusId"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "linkText": { "alias": "linkText"; "required": false; "isSignal": true; }; "iconType": { "alias": "iconType"; "required": false; "isSignal": true; }; }, { "linkClick": "linkClick"; }, never, never, true, never>;
3808
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RequestStatusBarComponent, "pecb-request-status-bar", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "linkText": { "alias": "linkText"; "required": false; "isSignal": true; }; "iconType": { "alias": "iconType"; "required": false; "isSignal": true; }; }, { "linkClick": "linkClick"; }, never, never, true, never>;
3543
3809
  }
3810
+
3544
3811
  type VerifyItemStatus = 'pending' | 'verified' | 'rejected' | 'warning';
3545
3812
  interface VerifyChecklistItem {
3546
3813
  text: string;
3547
3814
  status: VerifyItemStatus;
3548
3815
  }
3549
3816
  declare class VerifyChecklistComponent {
3550
- verifyChecklistId: _angular_core.InputSignal<string>;
3817
+ id: _angular_core.InputSignal<string>;
3551
3818
  items: _angular_core.InputSignal<VerifyChecklistItem[]>;
3552
3819
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<VerifyChecklistComponent, never>;
3553
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<VerifyChecklistComponent, "pecb-verify-checklist", never, { "verifyChecklistId": { "alias": "verifyChecklistId"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3820
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VerifyChecklistComponent, "pecb-verify-checklist", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3554
3821
  }
3822
+
3555
3823
  type EditButtonVariant = 'default' | 'black';
3556
3824
  declare class EditButtonComponent {
3557
- editBtnId: _angular_core.InputSignal<string>;
3825
+ id: _angular_core.InputSignal<string>;
3558
3826
  variant: _angular_core.InputSignal<EditButtonVariant>;
3827
+ /** Aria-label for the button — override to localize (audit F20). */
3828
+ ariaLabel: _angular_core.InputSignal<string>;
3559
3829
  editBtnClick: _angular_core.OutputEmitterRef<void>;
3560
3830
  btnClasses: _angular_core.Signal<string[]>;
3561
3831
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EditButtonComponent, never>;
3562
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<EditButtonComponent, "pecb-edit-button", never, { "editBtnId": { "alias": "editBtnId"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, { "editBtnClick": "editBtnClick"; }, never, never, true, never>;
3832
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EditButtonComponent, "pecb-edit-button", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "editBtnClick": "editBtnClick"; }, never, never, true, never>;
3563
3833
  }
3834
+
3564
3835
  type AddButtonVariant = 'default' | 'dark';
3565
3836
  declare class AddButtonComponent {
3566
- addBtnId: _angular_core.InputSignal<string>;
3837
+ id: _angular_core.InputSignal<string>;
3567
3838
  variant: _angular_core.InputSignal<AddButtonVariant>;
3839
+ /** Aria-label for the button — override to localize (audit F20). */
3840
+ ariaLabel: _angular_core.InputSignal<string>;
3568
3841
  addBtnClick: _angular_core.OutputEmitterRef<void>;
3569
3842
  btnClasses: _angular_core.Signal<string[]>;
3570
3843
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AddButtonComponent, never>;
3571
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AddButtonComponent, "pecb-add-button", never, { "addBtnId": { "alias": "addBtnId"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, { "addBtnClick": "addBtnClick"; }, never, never, true, never>;
3844
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AddButtonComponent, "pecb-add-button", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "addBtnClick": "addBtnClick"; }, never, never, true, never>;
3572
3845
  }
3846
+
3573
3847
  declare class HorizontalStepsComponent {
3574
- hStepsId: _angular_core.InputSignal<string>;
3848
+ id: _angular_core.InputSignal<string>;
3575
3849
  totalSteps: _angular_core.InputSignal<number>;
3576
3850
  activeStep: _angular_core.InputSignal<number>;
3577
3851
  stepLabels: _angular_core.InputSignal<string[]>;
@@ -3580,25 +3854,27 @@ declare class HorizontalStepsComponent {
3580
3854
  label: string;
3581
3855
  }[]>;
3582
3856
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<HorizontalStepsComponent, never>;
3583
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<HorizontalStepsComponent, "pecb-horizontal-steps", never, { "hStepsId": { "alias": "hStepsId"; "required": false; "isSignal": true; }; "totalSteps": { "alias": "totalSteps"; "required": false; "isSignal": true; }; "activeStep": { "alias": "activeStep"; "required": false; "isSignal": true; }; "stepLabels": { "alias": "stepLabels"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3857
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HorizontalStepsComponent, "pecb-horizontal-steps", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "totalSteps": { "alias": "totalSteps"; "required": false; "isSignal": true; }; "activeStep": { "alias": "activeStep"; "required": false; "isSignal": true; }; "stepLabels": { "alias": "stepLabels"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3584
3858
  }
3859
+
3585
3860
  type RadioDisplayState = 'deactivated' | 'activated';
3586
3861
  declare class RadioDisplayComponent {
3587
- radioDisplayId: _angular_core.InputSignal<string>;
3862
+ id: _angular_core.InputSignal<string>;
3588
3863
  state: _angular_core.InputSignal<RadioDisplayState>;
3589
3864
  label: _angular_core.InputSignal<string>;
3590
3865
  radioClasses: _angular_core.Signal<string[]>;
3591
3866
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RadioDisplayComponent, never>;
3592
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioDisplayComponent, "pecb-radio-display", never, { "radioDisplayId": { "alias": "radioDisplayId"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3867
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioDisplayComponent, "pecb-radio-display", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3593
3868
  }
3869
+
3594
3870
  type CheckboxDisplayState = 'deactivated' | 'activated' | 'gray';
3595
3871
  declare class CheckboxDisplayComponent {
3596
- checkboxDisplayId: _angular_core.InputSignal<string>;
3872
+ id: _angular_core.InputSignal<string>;
3597
3873
  state: _angular_core.InputSignal<CheckboxDisplayState>;
3598
3874
  label: _angular_core.InputSignal<string>;
3599
3875
  checkboxClasses: _angular_core.Signal<string[]>;
3600
3876
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CheckboxDisplayComponent, never>;
3601
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckboxDisplayComponent, "pecb-checkbox-display", never, { "checkboxDisplayId": { "alias": "checkboxDisplayId"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3877
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckboxDisplayComponent, "pecb-checkbox-display", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3602
3878
  }
3603
3879
 
3604
3880
  type FilterFieldType = 'dropdown' | 'input' | 'number' | 'date-range' | 'number-range';
@@ -3632,7 +3908,7 @@ declare class FilterColumnsComponent implements OnInit, OnChanges, OnDestroy, Af
3632
3908
  modalPanel?: ElementRef<HTMLElement>;
3633
3909
  id: _angular_core.InputSignal<string>;
3634
3910
  /** Whether the modal is open */
3635
- isOpen: _angular_core.InputSignal<boolean>;
3911
+ isOpen: _angular_core.ModelSignal<boolean>;
3636
3912
  /** Whether clicking the backdrop closes the modal */
3637
3913
  closeOnBackdropClick: _angular_core.InputSignal<boolean>;
3638
3914
  /** Whether pressing Escape closes the modal */
@@ -3698,7 +3974,7 @@ declare class FilterColumnsComponent implements OnInit, OnChanges, OnDestroy, Af
3698
3974
  onViewNameChange(value: string): void;
3699
3975
  onDefaultViewChange(checked: boolean): void;
3700
3976
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FilterColumnsComponent, never>;
3701
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FilterColumnsComponent, "pecb-filter-columns", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "filterFields": { "alias": "filterFields"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "activeTab": { "alias": "activeTab"; "required": false; "isSignal": true; }; "showSaveAsView": { "alias": "showSaveAsView"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "applyLabel": { "alias": "applyLabel"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; }, { "applied": "applied"; "cancelled": "cancelled"; "closed": "closed"; }, never, never, true, never>;
3977
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FilterColumnsComponent, "pecb-filter-columns", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "filterFields": { "alias": "filterFields"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "activeTab": { "alias": "activeTab"; "required": false; "isSignal": true; }; "showSaveAsView": { "alias": "showSaveAsView"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "applyLabel": { "alias": "applyLabel"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; }, { "isOpen": "isOpenChange"; "applied": "applied"; "cancelled": "cancelled"; "closed": "closed"; }, never, never, true, never>;
3702
3978
  }
3703
3979
 
3704
3980
  type FileUploadVariant = 'dropzone' | 'inline';
@@ -3742,6 +4018,38 @@ declare class FileUploadComponent implements OnInit {
3742
4018
  browseLabel: _angular_core.InputSignal<string>;
3743
4019
  /** Upload button label (inline variant) */
3744
4020
  uploadLabel: _angular_core.InputSignal<string>;
4021
+ /** Visible "Click to upload" link in the dropzone. */
4022
+ clickToUploadText: _angular_core.InputSignal<string>;
4023
+ /** Visible "or drag and drop" subtitle in the dropzone. */
4024
+ dragAndDropText: _angular_core.InputSignal<string>;
4025
+ /** Visible "OR" divider text. */
4026
+ orDividerText: _angular_core.InputSignal<string>;
4027
+ /** Visible title shown during uploading state. */
4028
+ uploadingTitle: _angular_core.InputSignal<string>;
4029
+ /** Visible "Clear Upload" action text after a successful single upload. */
4030
+ clearUploadText: _angular_core.InputSignal<string>;
4031
+ /** Visible "Failed to Upload" title shown in error state. */
4032
+ failedToUploadText: _angular_core.InputSignal<string>;
4033
+ /** Default error message used when `file.errorMessage` is unset. */
4034
+ defaultErrorMessage: _angular_core.InputSignal<string>;
4035
+ /** Visible "Try Again" retry action text. */
4036
+ tryAgainText: _angular_core.InputSignal<string>;
4037
+ /** Visible "Uploaded Files" label above the multi-file list. */
4038
+ uploadedFilesLabel: _angular_core.InputSignal<string>;
4039
+ /** Aria-label for the header close (×) button. */
4040
+ closeAriaLabel: _angular_core.InputSignal<string>;
4041
+ /** Aria-label for the cancel-upload (×) button on each file row. */
4042
+ cancelUploadAriaLabel: _angular_core.InputSignal<string>;
4043
+ /** Aria-label for the delete-file (trash) button on each completed file row. */
4044
+ deleteFileAriaLabel: _angular_core.InputSignal<string>;
4045
+ /** Aria-label for the download-file button on each completed file row. */
4046
+ downloadFileAriaLabel: _angular_core.InputSignal<string>;
4047
+ /** Suffix for the circular progress aria-label (e.g. `42% uploaded`). */
4048
+ uploadedSuffix: _angular_core.InputSignal<string>;
4049
+ /** Aria-label prefix for the single-file dropzone. Rendered as `<this> <formats>`. */
4050
+ uploadFileAriaLabelPrefix: _angular_core.InputSignal<string>;
4051
+ /** Aria-label prefix for the multi-file dropzone. Rendered as `<this> <formats>`. */
4052
+ uploadFilesAriaLabelPrefix: _angular_core.InputSignal<string>;
3745
4053
  /** Whether the component is disabled */
3746
4054
  disabled: _angular_core.InputSignal<boolean>;
3747
4055
  /** Whether to show header with title and close button (multiple dropzone) */
@@ -3798,7 +4106,7 @@ declare class FileUploadComponent implements OnInit {
3798
4106
  formatFileDate(date: Date): string;
3799
4107
  getFileTypeColor(type: string): string;
3800
4108
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FileUploadComponent, never>;
3801
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FileUploadComponent, "pecb-file-upload", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "uploadTitle": { "alias": "uploadTitle"; "required": false; "isSignal": true; }; "uploadDescription": { "alias": "uploadDescription"; "required": false; "isSignal": true; }; "maxSizeLabel": { "alias": "maxSizeLabel"; "required": false; "isSignal": true; }; "acceptedFormatsText": { "alias": "acceptedFormatsText"; "required": false; "isSignal": true; }; "browseLabel": { "alias": "browseLabel"; "required": false; "isSignal": true; }; "uploadLabel": { "alias": "uploadLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "initialFiles": { "alias": "initialFiles"; "required": false; "isSignal": true; }; }, { "filesSelected": "filesSelected"; "fileCancelled": "fileCancelled"; "fileRetry": "fileRetry"; "fileDeleted": "fileDeleted"; "fileDownload": "fileDownload"; "cleared": "cleared"; "closeClicked": "closeClicked"; }, never, never, true, never>;
4109
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FileUploadComponent, "pecb-file-upload", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "uploadTitle": { "alias": "uploadTitle"; "required": false; "isSignal": true; }; "uploadDescription": { "alias": "uploadDescription"; "required": false; "isSignal": true; }; "maxSizeLabel": { "alias": "maxSizeLabel"; "required": false; "isSignal": true; }; "acceptedFormatsText": { "alias": "acceptedFormatsText"; "required": false; "isSignal": true; }; "browseLabel": { "alias": "browseLabel"; "required": false; "isSignal": true; }; "uploadLabel": { "alias": "uploadLabel"; "required": false; "isSignal": true; }; "clickToUploadText": { "alias": "clickToUploadText"; "required": false; "isSignal": true; }; "dragAndDropText": { "alias": "dragAndDropText"; "required": false; "isSignal": true; }; "orDividerText": { "alias": "orDividerText"; "required": false; "isSignal": true; }; "uploadingTitle": { "alias": "uploadingTitle"; "required": false; "isSignal": true; }; "clearUploadText": { "alias": "clearUploadText"; "required": false; "isSignal": true; }; "failedToUploadText": { "alias": "failedToUploadText"; "required": false; "isSignal": true; }; "defaultErrorMessage": { "alias": "defaultErrorMessage"; "required": false; "isSignal": true; }; "tryAgainText": { "alias": "tryAgainText"; "required": false; "isSignal": true; }; "uploadedFilesLabel": { "alias": "uploadedFilesLabel"; "required": false; "isSignal": true; }; "closeAriaLabel": { "alias": "closeAriaLabel"; "required": false; "isSignal": true; }; "cancelUploadAriaLabel": { "alias": "cancelUploadAriaLabel"; "required": false; "isSignal": true; }; "deleteFileAriaLabel": { "alias": "deleteFileAriaLabel"; "required": false; "isSignal": true; }; "downloadFileAriaLabel": { "alias": "downloadFileAriaLabel"; "required": false; "isSignal": true; }; "uploadedSuffix": { "alias": "uploadedSuffix"; "required": false; "isSignal": true; }; "uploadFileAriaLabelPrefix": { "alias": "uploadFileAriaLabelPrefix"; "required": false; "isSignal": true; }; "uploadFilesAriaLabelPrefix": { "alias": "uploadFilesAriaLabelPrefix"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "initialFiles": { "alias": "initialFiles"; "required": false; "isSignal": true; }; }, { "filesSelected": "filesSelected"; "fileCancelled": "fileCancelled"; "fileRetry": "fileRetry"; "fileDeleted": "fileDeleted"; "fileDownload": "fileDownload"; "cleared": "cleared"; "closeClicked": "closeClicked"; }, never, never, true, never>;
3802
4110
  }
3803
4111
 
3804
4112
  type ToolbarVariant = 'buttons' | 'tabs';
@@ -3846,6 +4154,10 @@ declare class ToolbarBarComponent {
3846
4154
  buttons: _angular_core.InputSignal<ToolbarButton[]>;
3847
4155
  /** Tabs configuration (for variant='tabs') */
3848
4156
  tabs: _angular_core.InputSignal<ToolbarTab[]>;
4157
+ /** Visible text for the "Go Back" button. */
4158
+ backText: _angular_core.InputSignal<string>;
4159
+ /** Placeholder for the search input. */
4160
+ searchPlaceholder: _angular_core.InputSignal<string>;
3849
4161
  /** Emits when Go Back is clicked */
3850
4162
  backClick: _angular_core.OutputEmitterRef<void>;
3851
4163
  /** Emits when a button is clicked */
@@ -3869,7 +4181,7 @@ declare class ToolbarBarComponent {
3869
4181
  /** Handle search input */
3870
4182
  onSearchInput(event: Event): void;
3871
4183
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToolbarBarComponent, never>;
3872
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToolbarBarComponent, "pecb-toolbar-bar", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "showBackButton": { "alias": "showBackButton"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "buttons": { "alias": "buttons"; "required": false; "isSignal": true; }; "tabs": { "alias": "tabs"; "required": false; "isSignal": true; }; }, { "backClick": "backClick"; "buttonClick": "buttonClick"; "tabClick": "tabClick"; "searchChange": "searchChange"; }, never, never, true, never>;
4184
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToolbarBarComponent, "pecb-toolbar-bar", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "showBackButton": { "alias": "showBackButton"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "buttons": { "alias": "buttons"; "required": false; "isSignal": true; }; "tabs": { "alias": "tabs"; "required": false; "isSignal": true; }; "backText": { "alias": "backText"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; }, { "backClick": "backClick"; "buttonClick": "buttonClick"; "tabClick": "tabClick"; "searchChange": "searchChange"; }, never, never, true, never>;
3873
4185
  }
3874
4186
 
3875
4187
  interface NoteItem {
@@ -4052,7 +4364,7 @@ declare class TourComponent implements OnInit, OnChanges {
4052
4364
  /** Tour steps configuration */
4053
4365
  steps: _angular_core.InputSignal<TourStep[]>;
4054
4366
  /** Whether the tour is visible */
4055
- isOpen: _angular_core.InputSignal<boolean>;
4367
+ isOpen: _angular_core.ModelSignal<boolean>;
4056
4368
  /** Label for the previous button */
4057
4369
  previousLabel: _angular_core.InputSignal<string>;
4058
4370
  /** Label for the next button */
@@ -4087,28 +4399,339 @@ declare class TourComponent implements OnInit, OnChanges {
4087
4399
  onClose(): void;
4088
4400
  goToStep(index: number): void;
4089
4401
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TourComponent, never>;
4090
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TourComponent, "pecb-tour", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "indicatorType": { "alias": "indicatorType"; "required": false; "isSignal": true; }; "steps": { "alias": "steps"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "previousLabel": { "alias": "previousLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "finishLabel": { "alias": "finishLabel"; "required": false; "isSignal": true; }; "initialStep": { "alias": "initialStep"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "previousClicked": "previousClicked"; "nextClicked": "nextClicked"; "finished": "finished"; "stepChanged": "stepChanged"; }, never, never, true, never>;
4402
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TourComponent, "pecb-tour", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "indicatorType": { "alias": "indicatorType"; "required": false; "isSignal": true; }; "steps": { "alias": "steps"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "previousLabel": { "alias": "previousLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "finishLabel": { "alias": "finishLabel"; "required": false; "isSignal": true; }; "initialStep": { "alias": "initialStep"; "required": false; "isSignal": true; }; }, { "isOpen": "isOpenChange"; "closed": "closed"; "previousClicked": "previousClicked"; "nextClicked": "nextClicked"; "finished": "finished"; "stepChanged": "stepChanged"; }, never, never, true, never>;
4091
4403
  }
4092
4404
 
4405
+ type AdminHeaderFieldType = 'text' | 'badge' | 'dropdown' | 'link' | 'date' | 'profile' | 'radio' | 'checkbox' | 'paragraph' | 'progress' | 'custom';
4093
4406
  /**
4094
- * PECB UI Components Module
4407
+ * Directive to define a custom field template.
4408
+ * Use with `type: 'custom'` and a matching `templateId`.
4095
4409
  *
4096
- * A professional Angular components library with TypeScript and SCSS.
4097
- * Import this module to use all PECB UI components in your application.
4410
+ * ```html
4411
+ * <pecb-admin-header [fields]="fields">
4412
+ * <ng-template pecbAdminHeaderField="my-widget" let-field>
4413
+ * <my-custom-widget [data]="field.value"></my-custom-widget>
4414
+ * </ng-template>
4415
+ * </pecb-admin-header>
4416
+ * ```
4417
+ */
4418
+ declare class AdminHeaderFieldTemplateDirective {
4419
+ templateRef: TemplateRef<unknown>;
4420
+ pecbAdminHeaderField: _angular_core.InputSignal<string>;
4421
+ constructor(templateRef: TemplateRef<unknown>);
4422
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AdminHeaderFieldTemplateDirective, never>;
4423
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AdminHeaderFieldTemplateDirective, "ng-template[pecbAdminHeaderField]", never, { "pecbAdminHeaderField": { "alias": "pecbAdminHeaderField"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
4424
+ }
4425
+ type AdminHeaderBadgeVariant = 'default' | 'success' | 'error' | 'warning' | 'info' | 'accent' | 'outline';
4426
+ type AdminHeaderActionType = 'add' | 'label';
4427
+ type AdminHeaderMetadataType = 'text' | 'badge' | 'date';
4428
+ /**
4429
+ * Profile configuration for the admin header.
4430
+ * Only `name` is required — all other fields are optional and the layout adapts.
4431
+ */
4432
+ interface AdminHeaderProfile {
4433
+ /** Avatar image URL */
4434
+ src?: string;
4435
+ /** Avatar fallback initials */
4436
+ initials?: string;
4437
+ /** Display name (always shown) */
4438
+ name: string;
4439
+ /** Email address */
4440
+ email?: string;
4441
+ /** User/Entity ID */
4442
+ id?: string | number;
4443
+ /** Verification status text (e.g. "Verification is under review") */
4444
+ verificationStatus?: string;
4445
+ /** Badge label (e.g. "Member") */
4446
+ badge?: string;
4447
+ /** Badge variant */
4448
+ badgeVariant?: AdminHeaderBadgeVariant;
4449
+ }
4450
+ /**
4451
+ * Action button/chip displayed next to the profile info.
4452
+ */
4453
+ interface AdminHeaderAction {
4454
+ /** `'add'` renders a + icon button, `'label'` renders a chip */
4455
+ type: AdminHeaderActionType;
4456
+ /** Chip label text */
4457
+ label?: string;
4458
+ /** Chip variant: `'filled'` (dark) or `'outline'` */
4459
+ variant?: 'filled' | 'outline';
4460
+ /** Button variant — overrides the default mapping from `variant`. Accepts any ButtonVariant value. */
4461
+ buttonVariant?: ButtonVariant;
4462
+ /** Whether the chip shows a + icon */
4463
+ showAddIcon?: boolean;
4464
+ /** Icon name from IconRegistry (overrides the default + icon) */
4465
+ icon?: string;
4466
+ /** Position of the icon: `'left'` (default) or `'right'` */
4467
+ iconPosition?: 'left' | 'right';
4468
+ /** Whether the chip shows a x trailing remove icon */
4469
+ removable?: boolean;
4470
+ /** Unique identifier for click events */
4471
+ id?: string;
4472
+ }
4473
+ /**
4474
+ * Metadata item displayed next to the profile (alternative to actions).
4475
+ */
4476
+ interface AdminHeaderMetadata {
4477
+ /** Display label */
4478
+ label?: string;
4479
+ /** Display value */
4480
+ value?: string;
4481
+ /** Item type */
4482
+ type?: AdminHeaderMetadataType;
4483
+ /** Badge variant when type is 'badge' */
4484
+ badgeVariant?: AdminHeaderBadgeVariant;
4485
+ /** Icon name for date type */
4486
+ icon?: string;
4487
+ }
4488
+ /**
4489
+ * A single field in the data grid.
4490
+ * The `type` discriminator determines which sub-template renders.
4491
+ */
4492
+ interface AdminHeaderField {
4493
+ /** Field renderer type */
4494
+ type: AdminHeaderFieldType;
4495
+ /** Field label (shown above the value in lighter text) */
4496
+ label?: string;
4497
+ /** Field value */
4498
+ value?: string;
4499
+ /** Badge variant (for `type: 'badge'`) */
4500
+ badgeVariant?: AdminHeaderBadgeVariant;
4501
+ /** Link URL (for `type: 'link'`) */
4502
+ linkUrl?: string;
4503
+ /** Icon name from registry (for `type: 'date'`) */
4504
+ dateIcon?: string;
4505
+ /** Date status: `'success'` shows green check (for `type: 'date'`) */
4506
+ dateStatus?: 'success' | 'default';
4507
+ /** Profile image URL (for `type: 'profile'`) */
4508
+ profileSrc?: string;
4509
+ /** Profile initials fallback (for `type: 'profile'`) */
4510
+ profileInitials?: string;
4511
+ /** Profile name (for `type: 'profile'`) */
4512
+ profileName?: string;
4513
+ /** Profile email (for `type: 'profile'`) */
4514
+ profileEmail?: string;
4515
+ /** Dropdown options (for `type: 'dropdown'`) */
4516
+ options?: {
4517
+ label: string;
4518
+ value: string;
4519
+ }[];
4520
+ /** Currently selected dropdown value (for `type: 'dropdown'`) */
4521
+ selectedValue?: string;
4522
+ /** Selected radio/checkbox value: `'yes'` or `'no'` (for `type: 'radio'` | `'checkbox'`) */
4523
+ selectedOption?: 'yes' | 'no';
4524
+ /** Progress value 0–100 (for `type: 'progress'`) */
4525
+ progressValue?: number;
4526
+ /** Metadata text shown below the bar (for `type: 'progress'`) */
4527
+ progressMetadata?: string;
4528
+ /** Whether to show the percentage label (for `type: 'progress'`, default true) */
4529
+ progressShowPercentage?: boolean;
4530
+ /** Template ID to match a projected `ng-template[pecbAdminHeaderField]` (for `type: 'custom'`) */
4531
+ templateId?: string;
4532
+ /** Arbitrary data passed to custom templates via `let-data` (for `type: 'custom'`) */
4533
+ data?: Record<string, unknown>;
4534
+ }
4535
+ declare class AdminHeaderComponent {
4536
+ private readonly registry;
4537
+ private readonly sanitizer;
4538
+ /** Projected custom field templates */
4539
+ fieldTemplates: _angular_core.Signal<readonly AdminHeaderFieldTemplateDirective[]>;
4540
+ /** Unique element ID */
4541
+ id: _angular_core.InputSignal<string>;
4542
+ /** Background image URL (e.g. path to banner SVG) */
4543
+ backgroundUrl: _angular_core.InputSignal<string | undefined>;
4544
+ /** Title displayed top-left */
4545
+ title: _angular_core.InputSignal<string | undefined>;
4546
+ /**
4547
+ * Icon name for the top-right action button. Resolved through the library's
4548
+ * IconRegistry, so only library-registered (trusted) SVGs can be rendered.
4549
+ *
4550
+ * Audit F19: the previous `headerActionIconSvg` raw-SVG-string input was
4551
+ * removed — it let consumer-supplied markup reach `bypassSecurityTrustHtml()`,
4552
+ * an XSS vector. To use a custom icon, register it once via
4553
+ * `IconRegistry.register(name, svg)` and pass its name here.
4554
+ */
4555
+ headerActionIcon: _angular_core.InputSignal<string | undefined>;
4556
+ /** Accessible label for the header action button */
4557
+ headerActionLabel: _angular_core.InputSignal<string>;
4558
+ /** Profile configuration. When omitted, no profile row renders. */
4559
+ profile: _angular_core.InputSignal<AdminHeaderProfile | undefined>;
4560
+ /** Action chips/buttons displayed to the right of the profile */
4561
+ actions: _angular_core.InputSignal<AdminHeaderAction[]>;
4562
+ /** Metadata items displayed to the right of the profile (alternative to actions) */
4563
+ metadata: _angular_core.InputSignal<AdminHeaderMetadata[]>;
4564
+ /** Flat array of fields rendered in the data grid */
4565
+ fields: _angular_core.InputSignal<AdminHeaderField[]>;
4566
+ /** Number of columns in the data grid (1–4) */
4567
+ columns: _angular_core.InputSignal<2 | 1 | 3 | 4>;
4568
+ /** Emits when the top-right action button is clicked */
4569
+ headerActionClicked: _angular_core.OutputEmitterRef<void>;
4570
+ /** Emits the action id/index when an action chip is clicked */
4571
+ actionClicked: _angular_core.OutputEmitterRef<{
4572
+ action: AdminHeaderAction;
4573
+ index: number;
4574
+ }>;
4575
+ /** Emits when an action chip's remove (x) button is clicked */
4576
+ actionRemoved: _angular_core.OutputEmitterRef<{
4577
+ action: AdminHeaderAction;
4578
+ index: number;
4579
+ }>;
4580
+ /** Emits when a link field is clicked */
4581
+ linkClicked: _angular_core.OutputEmitterRef<{
4582
+ field: AdminHeaderField;
4583
+ url: string;
4584
+ }>;
4585
+ /** Emits when a dropdown field value changes */
4586
+ dropdownChanged: _angular_core.OutputEmitterRef<{
4587
+ field: AdminHeaderField;
4588
+ value: string;
4589
+ }>;
4590
+ /** Emits when a radio/checkbox field value changes */
4591
+ fieldOptionChanged: _angular_core.OutputEmitterRef<{
4592
+ field: AdminHeaderField;
4593
+ value: "yes" | "no";
4594
+ }>;
4595
+ hasTitle: _angular_core.Signal<boolean>;
4596
+ hasProfile: _angular_core.Signal<boolean>;
4597
+ hasActions: _angular_core.Signal<boolean>;
4598
+ hasMetadata: _angular_core.Signal<boolean>;
4599
+ hasFields: _angular_core.Signal<boolean>;
4600
+ hasHeaderAction: _angular_core.Signal<boolean>;
4601
+ hasTitleBar: _angular_core.Signal<boolean>;
4602
+ /** CSS class for the grid based on column count */
4603
+ gridClass: _angular_core.Signal<string>;
4604
+ /**
4605
+ * Raw SVG markup for the header action button, resolved from the IconRegistry
4606
+ * by name and passed to `<pecb-button [icon]>`. Only library-registered icons
4607
+ * can be rendered — no consumer-supplied markup is trusted here (audit F19).
4608
+ *
4609
+ * The previous `headerActionSvg` computed (which called
4610
+ * `bypassSecurityTrustHtml()` on the consumer's raw string) has been removed:
4611
+ * it was unused by the template and was the XSS vector F19 flagged.
4612
+ */
4613
+ headerActionIconRaw: _angular_core.Signal<string>;
4614
+ backgroundStyle: _angular_core.Signal<{
4615
+ 'background-image'?: undefined;
4616
+ } | {
4617
+ 'background-image': string;
4618
+ }>;
4619
+ readonly addIconSvg = "<svg width=\"20\" height=\"20\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><path d=\"M8 3.333v9.334M3.333 8h9.334\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>";
4620
+ getActionButtonVariant(action: AdminHeaderAction): ButtonVariant;
4621
+ getActionButtonIconStyle(action: AdminHeaderAction): ButtonIconStyle;
4622
+ getActionButtonIcon(action: AdminHeaderAction): string | undefined;
4623
+ getIconSvg(iconName: string): SafeHtml;
4624
+ getBadgeClasses(variant?: AdminHeaderBadgeVariant): string;
4625
+ getProfileBadgeStatusType(variant: AdminHeaderBadgeVariant): StatusType;
4626
+ getProfileBadgeStatusVariant(variant: AdminHeaderBadgeVariant): StatusVariant;
4627
+ getFieldTemplate(templateId: string): TemplateRef<unknown> | null;
4628
+ onHeaderAction(): void;
4629
+ onActionClick(action: AdminHeaderAction, index: number): void;
4630
+ onActionRemove(event: MouseEvent, action: AdminHeaderAction, index: number): void;
4631
+ onLinkClick(field: AdminHeaderField): void;
4632
+ onDropdownChange(field: AdminHeaderField, event: Event): void;
4633
+ onFieldOptionChange(field: AdminHeaderField, value: 'yes' | 'no'): void;
4634
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AdminHeaderComponent, never>;
4635
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AdminHeaderComponent, "pecb-admin-header", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "backgroundUrl": { "alias": "backgroundUrl"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "headerActionIcon": { "alias": "headerActionIcon"; "required": false; "isSignal": true; }; "headerActionLabel": { "alias": "headerActionLabel"; "required": false; "isSignal": true; }; "profile": { "alias": "profile"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "metadata": { "alias": "metadata"; "required": false; "isSignal": true; }; "fields": { "alias": "fields"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; }, { "headerActionClicked": "headerActionClicked"; "actionClicked": "actionClicked"; "actionRemoved": "actionRemoved"; "linkClicked": "linkClicked"; "dropdownChanged": "dropdownChanged"; "fieldOptionChanged": "fieldOptionChanged"; }, ["fieldTemplates"], never, true, never>;
4636
+ }
4637
+
4638
+ type SocialIconStyle = 'brand' | 'original' | 'white' | 'dark';
4639
+
4640
+ type FlagShape = 'round' | 'square';
4641
+
4642
+ /** Media type categories. */
4643
+ type MediaType = 'emoji' | 'social' | 'flag';
4644
+ /** Size of each media item in the grid. */
4645
+ type MediaSize = 'sm' | 'md' | 'lg';
4646
+ /** A single media item resolved for display. */
4647
+ interface MediaItem {
4648
+ name: string;
4649
+ content: string;
4650
+ safeHtml: SafeHtml;
4651
+ }
4652
+ /** A group of media items under a heading. */
4653
+ interface MediaGroup {
4654
+ label: string;
4655
+ items: MediaItem[];
4656
+ }
4657
+ /**
4658
+ * Displays a grid of media assets (emojis, social icons, or flags).
4659
+ *
4660
+ * Clicking any item copies its SVG to the clipboard and shows
4661
+ * a brief "Copied!" tooltip.
4098
4662
  *
4099
4663
  * @example
4664
+ * <!-- Show all emojis grouped by category -->
4665
+ * <pecb-media type="emoji"></pecb-media>
4666
+ *
4667
+ * @example
4668
+ * <!-- Show social icons in brand style -->
4669
+ * <pecb-media type="social" socialStyle="brand"></pecb-media>
4670
+ *
4671
+ * @example
4672
+ * <!-- Show all country flags -->
4673
+ * <pecb-media type="flag" size="lg"></pecb-media>
4674
+ */
4675
+ declare class MediaComponent {
4676
+ private readonly sanitizer;
4677
+ /** Which media category to display. */
4678
+ type: _angular_core.InputSignal<MediaType>;
4679
+ /** Item size in the grid. @default 'md' */
4680
+ size: _angular_core.InputSignal<MediaSize>;
4681
+ /** Style variant for social icons. @default 'brand' */
4682
+ socialStyle: _angular_core.InputSignal<SocialIconStyle>;
4683
+ /** Shape variant for flags. @default 'round' */
4684
+ flagShape: _angular_core.InputSignal<FlagShape>;
4685
+ /** Accessible label for the grid region. */
4686
+ ariaLabel: _angular_core.InputSignal<string | undefined>;
4687
+ /** Name of the item that was just copied (drives the tooltip). */
4688
+ copiedItem: _angular_core.WritableSignal<string | null>;
4689
+ /** Pixel size for each grid item. */
4690
+ itemSize: _angular_core.Signal<number>;
4691
+ /** Resolved groups of media items for the current type. */
4692
+ groups: _angular_core.Signal<MediaGroup[]>;
4693
+ /** CSS class string for the host wrapper. */
4694
+ hostClasses: _angular_core.Signal<string>;
4695
+ /** Copy the raw SVG markup to the clipboard. */
4696
+ copyToClipboard(item: MediaItem): Promise<void>;
4697
+ /** Format display name: kebab-case → Title Case. */
4698
+ formatName(name: string): string;
4699
+ private createItem;
4700
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MediaComponent, never>;
4701
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MediaComponent, "pecb-media", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "socialStyle": { "alias": "socialStyle"; "required": false; "isSignal": true; }; "flagShape": { "alias": "flagShape"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4702
+ }
4703
+
4704
+ /**
4705
+ * @deprecated Audit F12 — use per-component standalone imports instead.
4706
+ *
4707
+ * This umbrella NgModule re-exports every public component in the library
4708
+ * (~100 standalone components). Importing it pulls the entire library into
4709
+ * the consumer's compilation graph, which interferes with tree-shaking and
4710
+ * diverges from Angular's recommended standalone-component pattern.
4711
+ *
4712
+ * Migrate to per-component imports:
4100
4713
  * ```typescript
4101
- * import { PecbComponentsModule } from '@pecb-ui/components';
4714
+ * import { ButtonComponent, InputComponent } from '@pecb-ui/components';
4102
4715
  *
4103
- * @NgModule({
4104
- * imports: [PecbComponentsModule]
4716
+ * @Component({
4717
+ * standalone: true,
4718
+ * imports: [ButtonComponent, InputComponent],
4719
+ * // ...
4105
4720
  * })
4106
- * export class AppModule { }
4721
+ * export class MyComponent {}
4107
4722
  * ```
4723
+ *
4724
+ * Or, for per-feature imports (audit F18), use a secondary entry point:
4725
+ * ```typescript
4726
+ * import { InputComponent } from '@pecb-ui/components/forms';
4727
+ * ```
4728
+ *
4729
+ * Retained for one major version as a transitional convenience for legacy
4730
+ * NgModule-based consumers; scheduled for removal in a future major.
4108
4731
  */
4109
4732
  declare class PecbComponentsModule {
4110
4733
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PecbComponentsModule, never>;
4111
- static ɵmod: _angular_core.ɵɵNgModuleDeclaration<PecbComponentsModule, never, [typeof i1.CommonModule, typeof ButtonComponent, typeof CardComponent, typeof CardHeaderComponent, typeof CardBodyComponent, typeof CardFooterComponent, typeof StatusComponent, typeof PaginationComponent, typeof TableComponent, typeof TabComponent, typeof DatepickerComponent, typeof InputComponent, typeof RadioComponent, typeof CheckboxComponent, typeof ToggleComponent, typeof DropdownComponent, typeof RightModalComponent, typeof RightModalHeaderDirective, typeof RightModalContentDirective, typeof RightModalFooterDirective, typeof SidebarComponent, typeof ConfirmationComponent, typeof BottomSheetComponent, typeof AccordionItemComponent, typeof AccordionSmallComponent, typeof ButtonGroupComponent, typeof ButtonGroupItemComponent, typeof TooltipComponent, typeof TooltipDirective, typeof MessageItemComponent, typeof MessageBubbleComponent, typeof FullscreenModalComponent, typeof FullscreenModalContentDirective, typeof FullscreenModalFooterDirective, typeof StepperComponent, typeof GridComponent, typeof GridItemComponent, typeof SpacerComponent, typeof DashboardGridComponent, typeof SpinnerComponent, typeof ProgressBarComponent, typeof ProgressCircleComponent, typeof CodeInputComponent, typeof ShadowDirective, typeof BlurDirective, typeof DividerComponent, typeof CodeSnippetComponent, typeof BreadcrumbsComponent, typeof HeaderComponent, typeof HeaderSearchComponent, typeof HeaderLanguageComponent, typeof HeaderActionsComponent, typeof HeaderUserComponent, typeof HeaderDividerComponent, typeof VirtualTableComponent, typeof GeneralComponent, typeof ProjectLayoutComponent, typeof HierarchicalTableComponent, typeof AnchorComponent, typeof BackToTopComponent, typeof ExpandableRowTableComponent, typeof BadgeComponent, typeof AffixComponent, typeof LanguageDropdownComponent, typeof EmptyStateComponent, typeof TestimonialComponent, typeof TagComponent, typeof LinkButtonComponent, typeof SlidePointsComponent, typeof QuantitySelectorComponent, typeof AuditorStatusComponent, typeof RatingNumberComponent, typeof IconTagComponent, typeof TranscriptLineComponent, typeof MiniIconButtonComponent, typeof NoResultsComponent, typeof CertificateUploadBarComponent, typeof VideoUploadBarComponent, typeof StatisticsCardComponent, typeof PriceMethodComponent, typeof ApplicationStatusBarComponent, typeof ReasonForReturnComponent, typeof ContentTypeTagComponent, typeof QuestionTypeTagComponent, typeof StandardsPdfCardComponent, typeof NoteSidebarItemComponent, typeof AuthorDateTimeComponent, typeof CheckDeleteIconComponent, typeof ProfileElementsCardComponent, typeof UserWithEmailComponent, typeof CancelUpdateButtonsComponent, typeof InformationBoxComponent, typeof RequestSentByComponent, typeof NotificationStatusLinkComponent, typeof EditCoverPhotoComponent, typeof RequestStatusBarComponent, typeof VerifyChecklistComponent, typeof EditButtonComponent, typeof AddButtonComponent, typeof HorizontalStepsComponent, typeof RadioDisplayComponent, typeof CheckboxDisplayComponent, typeof FilterColumnsComponent, typeof FileUploadComponent, typeof ToolbarBarComponent, typeof NotesPanelComponent, typeof TextFormFieldComponent, typeof ResultPageComponent, typeof TourComponent], [typeof ButtonComponent, typeof CardComponent, typeof CardHeaderComponent, typeof CardBodyComponent, typeof CardFooterComponent, typeof StatusComponent, typeof PaginationComponent, typeof TableComponent, typeof TabComponent, typeof DatepickerComponent, typeof InputComponent, typeof RadioComponent, typeof CheckboxComponent, typeof ToggleComponent, typeof DropdownComponent, typeof RightModalComponent, typeof RightModalHeaderDirective, typeof RightModalContentDirective, typeof RightModalFooterDirective, typeof SidebarComponent, typeof ConfirmationComponent, typeof BottomSheetComponent, typeof AccordionItemComponent, typeof AccordionSmallComponent, typeof ButtonGroupComponent, typeof ButtonGroupItemComponent, typeof TooltipComponent, typeof TooltipDirective, typeof MessageItemComponent, typeof MessageBubbleComponent, typeof FullscreenModalComponent, typeof FullscreenModalContentDirective, typeof FullscreenModalFooterDirective, typeof StepperComponent, typeof GridComponent, typeof GridItemComponent, typeof SpacerComponent, typeof DashboardGridComponent, typeof SpinnerComponent, typeof ProgressBarComponent, typeof ProgressCircleComponent, typeof CodeInputComponent, typeof ShadowDirective, typeof BlurDirective, typeof DividerComponent, typeof CodeSnippetComponent, typeof BreadcrumbsComponent, typeof HeaderComponent, typeof HeaderSearchComponent, typeof HeaderLanguageComponent, typeof HeaderActionsComponent, typeof HeaderUserComponent, typeof HeaderDividerComponent, typeof VirtualTableComponent, typeof GeneralComponent, typeof ProjectLayoutComponent, typeof HierarchicalTableComponent, typeof AnchorComponent, typeof BackToTopComponent, typeof ExpandableRowTableComponent, typeof BadgeComponent, typeof AffixComponent, typeof LanguageDropdownComponent, typeof EmptyStateComponent, typeof TestimonialComponent, typeof TagComponent, typeof LinkButtonComponent, typeof SlidePointsComponent, typeof QuantitySelectorComponent, typeof AuditorStatusComponent, typeof RatingNumberComponent, typeof IconTagComponent, typeof TranscriptLineComponent, typeof MiniIconButtonComponent, typeof NoResultsComponent, typeof CertificateUploadBarComponent, typeof VideoUploadBarComponent, typeof StatisticsCardComponent, typeof PriceMethodComponent, typeof ApplicationStatusBarComponent, typeof ReasonForReturnComponent, typeof ContentTypeTagComponent, typeof QuestionTypeTagComponent, typeof StandardsPdfCardComponent, typeof NoteSidebarItemComponent, typeof AuthorDateTimeComponent, typeof CheckDeleteIconComponent, typeof ProfileElementsCardComponent, typeof UserWithEmailComponent, typeof CancelUpdateButtonsComponent, typeof InformationBoxComponent, typeof RequestSentByComponent, typeof NotificationStatusLinkComponent, typeof EditCoverPhotoComponent, typeof RequestStatusBarComponent, typeof VerifyChecklistComponent, typeof EditButtonComponent, typeof AddButtonComponent, typeof HorizontalStepsComponent, typeof RadioDisplayComponent, typeof CheckboxDisplayComponent, typeof FilterColumnsComponent, typeof FileUploadComponent, typeof ToolbarBarComponent, typeof NotesPanelComponent, typeof TextFormFieldComponent, typeof ResultPageComponent, typeof TourComponent]>;
4734
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<PecbComponentsModule, never, [typeof i1.CommonModule, typeof ButtonComponent, typeof CardComponent, typeof CardHeaderComponent, typeof CardBodyComponent, typeof CardFooterComponent, typeof StatusComponent, typeof PaginationComponent, typeof TableComponent, typeof TabComponent, typeof DatepickerComponent, typeof InputComponent, typeof RadioComponent, typeof CheckboxComponent, typeof ToggleComponent, typeof DropdownComponent, typeof RightModalComponent, typeof RightModalHeaderDirective, typeof RightModalContentDirective, typeof RightModalFooterDirective, typeof SidebarComponent, typeof ConfirmationComponent, typeof BottomSheetComponent, typeof AccordionItemComponent, typeof AccordionSmallComponent, typeof ButtonGroupComponent, typeof ButtonGroupItemComponent, typeof TooltipComponent, typeof TooltipDirective, typeof MessageItemComponent, typeof MessageBubbleComponent, typeof FullscreenModalComponent, typeof FullscreenModalHeaderDirective, typeof FullscreenModalContentDirective, typeof FullscreenModalFooterDirective, typeof StepperComponent, typeof GridComponent, typeof GridItemComponent, typeof SpacerComponent, typeof DashboardGridComponent, typeof SpinnerComponent, typeof ProgressBarComponent, typeof ProgressCircleComponent, typeof CodeInputComponent, typeof ShadowDirective, typeof BlurDirective, typeof DividerComponent, typeof CodeSnippetComponent, typeof BreadcrumbsComponent, typeof HeaderComponent, typeof HeaderSearchComponent, typeof HeaderLanguageComponent, typeof HeaderActionsComponent, typeof HeaderUserComponent, typeof HeaderDividerComponent, typeof VirtualTableComponent, typeof GeneralComponent, typeof ProjectLayoutComponent, typeof HierarchicalTableComponent, typeof AnchorComponent, typeof BackToTopComponent, typeof ExpandableRowTableComponent, typeof BadgeComponent, typeof AffixComponent, typeof LanguageDropdownComponent, typeof EmptyStateComponent, typeof TestimonialComponent, typeof TagComponent, typeof LinkButtonComponent, typeof SlidePointsComponent, typeof QuantitySelectorComponent, typeof AuditorStatusComponent, typeof RatingNumberComponent, typeof IconTagComponent, typeof TranscriptLineComponent, typeof MiniIconButtonComponent, typeof NoResultsComponent, typeof CertificateUploadBarComponent, typeof VideoUploadBarComponent, typeof StatisticsCardComponent, typeof PriceMethodComponent, typeof ApplicationStatusBarComponent, typeof ReasonForReturnComponent, typeof ContentTypeTagComponent, typeof QuestionTypeTagComponent, typeof StandardsPdfCardComponent, typeof NoteSidebarItemComponent, typeof AuthorDateTimeComponent, typeof CheckDeleteIconComponent, typeof ProfileElementsCardComponent, typeof UserWithEmailComponent, typeof CancelUpdateButtonsComponent, typeof InformationBoxComponent, typeof RequestSentByComponent, typeof NotificationStatusLinkComponent, typeof EditCoverPhotoComponent, typeof RequestStatusBarComponent, typeof VerifyChecklistComponent, typeof EditButtonComponent, typeof AddButtonComponent, typeof HorizontalStepsComponent, typeof RadioDisplayComponent, typeof CheckboxDisplayComponent, typeof FilterColumnsComponent, typeof FileUploadComponent, typeof ToolbarBarComponent, typeof NotesPanelComponent, typeof TextFormFieldComponent, typeof ResultPageComponent, typeof TourComponent, typeof AdminHeaderComponent, typeof AdminHeaderFieldTemplateDirective, typeof MediaComponent], [typeof ButtonComponent, typeof CardComponent, typeof CardHeaderComponent, typeof CardBodyComponent, typeof CardFooterComponent, typeof StatusComponent, typeof PaginationComponent, typeof TableComponent, typeof TabComponent, typeof DatepickerComponent, typeof InputComponent, typeof RadioComponent, typeof CheckboxComponent, typeof ToggleComponent, typeof DropdownComponent, typeof RightModalComponent, typeof RightModalHeaderDirective, typeof RightModalContentDirective, typeof RightModalFooterDirective, typeof SidebarComponent, typeof ConfirmationComponent, typeof BottomSheetComponent, typeof AccordionItemComponent, typeof AccordionSmallComponent, typeof ButtonGroupComponent, typeof ButtonGroupItemComponent, typeof TooltipComponent, typeof TooltipDirective, typeof MessageItemComponent, typeof MessageBubbleComponent, typeof FullscreenModalComponent, typeof FullscreenModalHeaderDirective, typeof FullscreenModalContentDirective, typeof FullscreenModalFooterDirective, typeof StepperComponent, typeof GridComponent, typeof GridItemComponent, typeof SpacerComponent, typeof DashboardGridComponent, typeof SpinnerComponent, typeof ProgressBarComponent, typeof ProgressCircleComponent, typeof CodeInputComponent, typeof ShadowDirective, typeof BlurDirective, typeof DividerComponent, typeof CodeSnippetComponent, typeof BreadcrumbsComponent, typeof HeaderComponent, typeof HeaderSearchComponent, typeof HeaderLanguageComponent, typeof HeaderActionsComponent, typeof HeaderUserComponent, typeof HeaderDividerComponent, typeof VirtualTableComponent, typeof GeneralComponent, typeof ProjectLayoutComponent, typeof HierarchicalTableComponent, typeof AnchorComponent, typeof BackToTopComponent, typeof ExpandableRowTableComponent, typeof BadgeComponent, typeof AffixComponent, typeof LanguageDropdownComponent, typeof EmptyStateComponent, typeof TestimonialComponent, typeof TagComponent, typeof LinkButtonComponent, typeof SlidePointsComponent, typeof QuantitySelectorComponent, typeof AuditorStatusComponent, typeof RatingNumberComponent, typeof IconTagComponent, typeof TranscriptLineComponent, typeof MiniIconButtonComponent, typeof NoResultsComponent, typeof CertificateUploadBarComponent, typeof VideoUploadBarComponent, typeof StatisticsCardComponent, typeof PriceMethodComponent, typeof ApplicationStatusBarComponent, typeof ReasonForReturnComponent, typeof ContentTypeTagComponent, typeof QuestionTypeTagComponent, typeof StandardsPdfCardComponent, typeof NoteSidebarItemComponent, typeof AuthorDateTimeComponent, typeof CheckDeleteIconComponent, typeof ProfileElementsCardComponent, typeof UserWithEmailComponent, typeof CancelUpdateButtonsComponent, typeof InformationBoxComponent, typeof RequestSentByComponent, typeof NotificationStatusLinkComponent, typeof EditCoverPhotoComponent, typeof RequestStatusBarComponent, typeof VerifyChecklistComponent, typeof EditButtonComponent, typeof AddButtonComponent, typeof HorizontalStepsComponent, typeof RadioDisplayComponent, typeof CheckboxDisplayComponent, typeof FilterColumnsComponent, typeof FileUploadComponent, typeof ToolbarBarComponent, typeof NotesPanelComponent, typeof TextFormFieldComponent, typeof ResultPageComponent, typeof TourComponent, typeof AdminHeaderComponent, typeof AdminHeaderFieldTemplateDirective, typeof MediaComponent]>;
4112
4735
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<PecbComponentsModule>;
4113
4736
  }
4114
4737
 
@@ -4429,6 +5052,14 @@ declare class ProfileComponent {
4429
5052
  size: _angular_core.InputSignal<ProfileSize>;
4430
5053
  indicator: _angular_core.InputSignal<ProfileIndicator>;
4431
5054
  badge: _angular_core.InputSignal<ProfileBadge>;
5055
+ /** Aria-label for the indicator dot when `indicator === 'online'`. */
5056
+ onlineAriaLabel: _angular_core.InputSignal<string>;
5057
+ /** Aria-label for the indicator dot when `indicator === 'offline'`. */
5058
+ offlineAriaLabel: _angular_core.InputSignal<string>;
5059
+ /** Aria-label for the verified badge when `badge === 'verified'`. */
5060
+ verifiedAriaLabel: _angular_core.InputSignal<string>;
5061
+ /** Aria-label for the camera (edit photo) button when `badge === 'camera'`. */
5062
+ editPhotoAriaLabel: _angular_core.InputSignal<string>;
4432
5063
  cameraClick: _angular_core.OutputEmitterRef<MouseEvent>;
4433
5064
  hostClass: _angular_core.Signal<string>;
4434
5065
  showImage: _angular_core.Signal<boolean>;
@@ -4437,7 +5068,7 @@ declare class ProfileComponent {
4437
5068
  imgSize: _angular_core.Signal<number>;
4438
5069
  onCameraClick(event: MouseEvent): void;
4439
5070
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProfileComponent, never>;
4440
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProfileComponent, "pecb-profile", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "initials": { "alias": "initials"; "required": false; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "indicator": { "alias": "indicator"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; }, { "cameraClick": "cameraClick"; }, never, never, true, never>;
5071
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProfileComponent, "pecb-profile", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "initials": { "alias": "initials"; "required": false; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "indicator": { "alias": "indicator"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "onlineAriaLabel": { "alias": "onlineAriaLabel"; "required": false; "isSignal": true; }; "offlineAriaLabel": { "alias": "offlineAriaLabel"; "required": false; "isSignal": true; }; "verifiedAriaLabel": { "alias": "verifiedAriaLabel"; "required": false; "isSignal": true; }; "editPhotoAriaLabel": { "alias": "editPhotoAriaLabel"; "required": false; "isSignal": true; }; }, { "cameraClick": "cameraClick"; }, never, never, true, never>;
4441
5072
  }
4442
5073
 
4443
5074
  type ProfileGroupSize = 'sm' | 'md' | 'lg';
@@ -4450,13 +5081,16 @@ declare class ProfileGroupComponent {
4450
5081
  avatars: _angular_core.InputSignal<ProfileGroupItem[]>;
4451
5082
  size: _angular_core.InputSignal<ProfileGroupSize>;
4452
5083
  max: _angular_core.InputSignal<number>;
5084
+ /** Suffix appended to the overflow count's aria-label (e.g. `5 more`). */
5085
+ overflowSuffix: _angular_core.InputSignal<string>;
4453
5086
  hostClass: _angular_core.Signal<string>;
4454
5087
  visible: _angular_core.Signal<ProfileGroupItem[]>;
4455
5088
  overflow: _angular_core.Signal<number>;
4456
5089
  overflowLabel: _angular_core.Signal<string>;
5090
+ overflowAriaLabel: _angular_core.Signal<string>;
4457
5091
  imgSize: _angular_core.Signal<number>;
4458
5092
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProfileGroupComponent, never>;
4459
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProfileGroupComponent, "pecb-profile-group", never, { "avatars": { "alias": "avatars"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5093
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProfileGroupComponent, "pecb-profile-group", never, { "avatars": { "alias": "avatars"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "overflowSuffix": { "alias": "overflowSuffix"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4460
5094
  }
4461
5095
 
4462
5096
  /**
@@ -5676,5 +6310,5 @@ declare class IconComponent {
5676
6310
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconComponent, "pecb-icon", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "svgIcon": { "alias": "svgIcon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
5677
6311
  }
5678
6312
 
5679
- export { AccordionItemComponent, AccordionSmallComponent, AddButtonComponent, AffixComponent, AlertComponent, AnchorComponent, ApplicationStatusBarComponent, AuditorStatusComponent, AuthorDateTimeComponent, BackToTopComponent, BadgeComponent, BlurDirective, BottomSheetComponent, BreadcrumbsComponent, ButtonComponent, ButtonGroupComponent, ButtonGroupItemComponent, CancelUpdateButtonsComponent, CardBodyComponent, CardComponent, CardFooterComponent, CardHeaderComponent, CertificateUploadBarComponent, CheckDeleteIconComponent, CheckboxComponent, CheckboxDisplayComponent, CodeInputComponent, CodeSnippetComponent, ColorPaletteComponent, ConfirmationComponent, ContentTypeTagComponent, DEFAULT_LANGUAGES, DashboardGridComponent, DatepickerComponent, DividerComponent, DropdownComponent, EditButtonComponent, EditCoverPhotoComponent, EmptyStateComponent, ExpandableRowTableComponent, FileUploadComponent, FilterColumnsComponent, FloatButtonComponent, FloatButtonItemComponent, FullscreenModalComponent, FullscreenModalContentDirective, FullscreenModalFooterDirective, GeneralComponent, GridComponent, GridItemComponent, HeaderActionsComponent, HeaderComponent, HeaderDividerComponent, HeaderLanguageComponent, HeaderSearchComponent, HeaderUserComponent, HierarchicalTableComponent, HorizontalStepsComponent, IconComponent, IconTagComponent, InformationBoxComponent, InputComponent, LanguageDropdownComponent, LinkButtonComponent, LoadingService, MessageBubbleComponent, MessageItemComponent, MetricsCardComponent, MiniIconButtonComponent, NoResultsComponent, NoteSidebarItemComponent, NotesPanelComponent, NotificationService, NotificationStatusLinkComponent, PECB_COLOR_PALETTE, PECB_FONT_STYLES, PECB_TYPE_SCALE, PaginationComponent, PecbComponentsModule, PriceMethodComponent, ProfileComponent, ProfileElementsCardComponent, ProfileGroupComponent, ProgressBarComponent, ProgressCircleComponent, ProjectLayoutComponent, QuantitySelectorComponent, QuestionTypeTagComponent, RadioComponent, RadioDisplayComponent, RatingNumberComponent, ReasonForReturnComponent, RequestSentByComponent, RequestStatusBarComponent, ResultPageComponent, RightModalComponent, RightModalContentDirective, RightModalFooterDirective, RightModalHeaderDirective, ShadowDirective, SidebarComponent, SkeletonComponent, SlidePointsComponent, SpacerComponent, SpinnerComponent, StandardsPdfCardComponent, StatisticsCardComponent, StatusComponent, StepperComponent, TabComponent, TableComponent, TagComponent, TestimonialComponent, TextFormFieldComponent, ThemeService, ToggleComponent, ToolbarBarComponent, TooltipComponent, TooltipDirective, TourComponent, TranscriptLineComponent, TypographyComponent, UserWithEmailComponent, VerifyChecklistComponent, VideoUploadBarComponent, VirtualTableComponent, addClass, announceToScreenReader, capitalize, closestElement, copyToClipboard, createAuthError, createAuthorizationError, createConfigError, createError, createNetworkError, createValidationError, disableBodyScroll, escapeHtml, formatCount, formatErrorForLog, formatErrorMessage, generateLinkedIds, generateUniqueId, getAriaCurrent, getButtonAriaAttributes, getComputedStyleValue, getDialogAriaAttributes, getFocusableElements, getInitials, getInputAriaAttributes, getOptionAriaAttributes, getProgressAriaAttributes, getScrollParent, getTabAriaAttributes, getVisuallyHiddenStyles, handleError, hasClass, isBlank, isBrowser, isElementVisible, isNotBlank, isPecbError, isRecoverableError, matchesSelector, pluralize, prefersHighContrast, prefersReducedMotion, registerErrorHandler, removeClass, scrollIntoView, slugify, stripHtml, toCamelCase, toKebabCase, toPascalCase, toSnakeCase, toggleClass, trapFocus, truncate, tryAsync, trySync, wrapError };
5680
- export type { AccordionVariant, AddButtonVariant, AffixPosition, AlertType, AlertVariant, Alignment, AnchorDirection, AnchorItem, AnchorLevel, AnimationTiming, AppStatusColor, AriaAttributes, AriaLive, AriaRole, AuditorStatusType, BadgeSize, BadgeStatus, BadgeVariant, BlurSize, BreadcrumbItem, BreadcrumbSeparator, Breakpoint, ButtonGroupIconMode, ButtonGroupItemPosition, ButtonIconStyle, ButtonSize, ButtonVariant, Callback, CardElevation, CardRadius, CardRole, CheckDeleteType, CheckboxDisplayState, CheckboxLabelPosition, ClosableWithHooks, CodeInputDirection, CodeInputState, CodeSnippetTheme, CodeSnippetVariant, ColorPaletteGroup, ColorPaletteItem, ColorVariant, Colorable, ColumnOption, ComponentSize, ConfirmationIconType, ContentStyle, ContentTagDisplay, ContentTagType, DashboardGridGap, DashboardGridLayout, DatepickerSize, Direction, Disableable, DividerType, DropdownOption, DropdownSize, EditButtonVariant, ElevationLevel, EmptyStateButton, EmptyStateIconTheme, ErrorCategory, ErrorHandler, ErrorOptions, ErrorSeverity, EventHandler, ExpandableRowColumn, ExpandableRowPageEvent, ExpandableRowProgressConfig, ExtendedColorVariant, FieldItem, FieldStyle, FileUploadEvent, FileUploadState, FileUploadVariant, FilterColumnsActiveTab, FilterColumnsApplyEvent, FilterField, FilterFieldType, FilterState, FloatButtonAction, FloatButtonPosition, Focusable, FormControlBase, GridAlign, GridColumns, GridGap, GridItemSpan, GridPadding, GridVerticalAlign, HeaderActionButton, HeaderLanguageOption, HeaderSearchCategory, HeaderSearchType, HierarchicalTableAction, HierarchicalTableColumn, HierarchicalTablePageEvent, IconColor, IconShape, IconSize, IconTagType, InformationBoxVariant, InputSize, InputType, LanguageDisplayMode, LanguageOption, LinkButtonType, Loadable, LoadingState, MenuItem, MessageBubbleType, MessageDirection, MessageItemStatus, MetricsCardBadgeStatus, MetricsCardIconBg, MetricsCardOrientation, MetricsCardType, MetricsCardVariation, MiniIconAction, NonNullableProps, NoteGroup, NoteItem, NoteSidebarPosition, NoteSidebarState, Notification, NotificationConfig, NotificationPosition, NotificationStatusType, NotificationType, OptionalProps, Orientation, OverlayComponent, PageChangeEvent, PaginationSize, PaginationState, PaginationVariant, PdfCardVariant, PecbError, PecbTableColumn, PecbTableColumnComponent, PecbTableColumnType, Position, ProfileBadge, ProfileGroupItem, ProfileGroupSize, ProfileIndicator, ProfileSize, ProfileType, ProgressBarSize, ProgressCircleSize, ProgressType, QuestionTagDisplay, QuestionTagType, QuizType, RadioDisplayState, RadioLabelPosition, RadioVariant, RadiusScale, RatingStyle, RequestStatusIconType, RequireProps, ResultPageAction, ResultPageIcon, RibbonColor, RightModalSize, SearchMode, SelectableItem, ShadowHardSize, ShadowSize, ShadowSoftSize, ShadowType, SidebarMenuItem, SidebarSection, Size, Sizeable, SkeletonShape, SkeletonSize, SkeletonType, SortState, SpacerSize, SpacingScale, StateVariant, StatisticsIconColor, StatusColor, StatusSize, StatusType, StatusVariant, StepItem, StepOrder, StepState, StepperDirection, StepperSize, StepperTailStyle, StepperType, TabItem, TabSize, TabStyle, TableAction, TableColumn, TableRowActionEvent, TableSelectionEvent, TableSize, TableSortEvent, TableStatusConfig, TableUserConfig, TableVariant, TagAction, TagStyle, Templatable, TestimonialData, TestimonialVariant, TextFormFieldType, ThemeConfig, ThemeMode, ThemeVariables, ToggleLabelPosition, ToggleSize, ToolbarButton, ToolbarTab, ToolbarVariant, TooltipPointerPosition, TooltipTheme, TourIndicatorType, TourPlacement, TourStep, TourType, TranscriptLineState, TreeNode, TypographyScaleEntry, TypographyStyleEntry, UploadedFile, Validatable, ValidationError, ValidationState, VerifyChecklistItem, VerifyItemStatus, VirtualTableColumn, VirtualTablePageEvent, VirtualTableProgressConfig };
6313
+ export { AccordionItemComponent, AccordionSmallComponent, AddButtonComponent, AdminHeaderComponent, AdminHeaderFieldTemplateDirective, AffixComponent, AlertComponent, AnchorComponent, ApplicationStatusBarComponent, AuditorStatusComponent, AuthorDateTimeComponent, BackToTopComponent, BadgeComponent, BlurDirective, BottomSheetComponent, BreadcrumbsComponent, ButtonComponent, ButtonGroupComponent, ButtonGroupItemComponent, CancelUpdateButtonsComponent, CardBodyComponent, CardComponent, CardFooterComponent, CardHeaderComponent, CertificateUploadBarComponent, CheckDeleteIconComponent, CheckboxComponent, CheckboxDisplayComponent, CodeInputComponent, CodeSnippetComponent, ColorPaletteComponent, ConfirmationComponent, ContentTypeTagComponent, DEFAULT_LANGUAGES, DashboardGridComponent, DatepickerComponent, DividerComponent, DropdownComponent, EMPTY_STATE_MAX_BUTTONS, EditButtonComponent, EditCoverPhotoComponent, EmptyStateComponent, ExpandableRowTableComponent, FileUploadComponent, FilterColumnsComponent, FloatButtonComponent, FloatButtonItemComponent, FullscreenModalComponent, FullscreenModalContentDirective, FullscreenModalFooterDirective, FullscreenModalHeaderDirective, GeneralComponent, GridComponent, GridItemComponent, HeaderActionsComponent, HeaderComponent, HeaderDividerComponent, HeaderLanguageComponent, HeaderSearchComponent, HeaderUserComponent, HierarchicalTableComponent, HorizontalStepsComponent, IconComponent, IconTagComponent, InformationBoxComponent, InputComponent, LanguageDropdownComponent, LinkButtonComponent, LoadingService, MediaComponent, MessageBubbleComponent, MessageItemComponent, MetricsCardComponent, MiniIconButtonComponent, NoResultsComponent, NoteSidebarItemComponent, NotesPanelComponent, NotificationService, NotificationStatusLinkComponent, PECB_COLOR_PALETTE, PECB_FONT_STYLES, PECB_TYPE_SCALE, PaginationComponent, PecbComponentsModule, PriceMethodComponent, ProfileComponent, ProfileElementsCardComponent, ProfileGroupComponent, ProgressBarComponent, ProgressCircleComponent, ProjectLayoutComponent, QuantitySelectorComponent, QuestionTypeTagComponent, RadioComponent, RadioDisplayComponent, RatingNumberComponent, ReasonForReturnComponent, RequestSentByComponent, RequestStatusBarComponent, ResultPageComponent, RightModalComponent, RightModalContentDirective, RightModalFooterDirective, RightModalHeaderDirective, ShadowDirective, SidebarComponent, SkeletonComponent, SlidePointsComponent, SpacerComponent, SpinnerComponent, StandardsPdfCardComponent, StatisticsCardComponent, StatusComponent, StepperComponent, TabComponent, TableComponent, TagComponent, TestimonialComponent, TextFormFieldComponent, ThemeService, ToggleComponent, ToolbarBarComponent, TooltipComponent, TooltipDirective, TourComponent, TranscriptLineComponent, TypographyComponent, UserWithEmailComponent, VerifyChecklistComponent, VideoUploadBarComponent, VirtualTableComponent, addClass, announceToScreenReader, capitalize, closestElement, copyToClipboard, createAuthError, createAuthorizationError, createConfigError, createError, createNetworkError, createValidationError, disableBodyScroll, escapeHtml, formatCount, formatErrorForLog, formatErrorMessage, generateLinkedIds, generateUniqueId, getAriaCurrent, getButtonAriaAttributes, getComputedStyleValue, getDialogAriaAttributes, getFocusableElements, getInitials, getInputAriaAttributes, getOptionAriaAttributes, getProgressAriaAttributes, getScrollParent, getTabAriaAttributes, getVisuallyHiddenStyles, handleError, hasClass, isBlank, isBrowser, isElementVisible, isNotBlank, isPecbError, isRecoverableError, matchesSelector, pluralize, prefersHighContrast, prefersReducedMotion, registerErrorHandler, removeClass, scrollIntoView, slugify, stripHtml, toCamelCase, toKebabCase, toPascalCase, toSnakeCase, toggleClass, trapFocus, truncate, tryAsync, trySync, wrapError };
6314
+ export type { AccordionVariant, AddButtonVariant, AdminHeaderAction, AdminHeaderActionType, AdminHeaderBadgeVariant, AdminHeaderField, AdminHeaderFieldType, AdminHeaderMetadata, AdminHeaderMetadataType, AdminHeaderProfile, AffixPosition, AlertType, AlertVariant, Alignment, AnchorDirection, AnchorItem, AnchorLevel, AnimationTiming, AppStatusColor, AriaAttributes, AriaLive, AriaRole, AuditorStatusType, BadgeSize, BadgeStatus, BadgeVariant, BlurSize, BreadcrumbItem, BreadcrumbSeparator, Breakpoint, ButtonGroupIconMode, ButtonGroupItemPosition, ButtonIconStyle, ButtonSize, ButtonVariant, CalendarDay, Callback, CardElevation, CardRadius, CardRole, CheckDeleteType, CheckboxDisplayState, CheckboxLabelPosition, ClosableWithHooks, CodeInputDirection, CodeInputState, CodeSnippetTheme, CodeSnippetVariant, ColorPaletteGroup, ColorPaletteItem, ColorVariant, Colorable, ColumnOption, ComponentSize, ConfirmationIconType, ContentStyle, ContentTagDisplay, ContentTagType, DashboardGridGap, DashboardGridLayout, DatepickerSize, Direction, Disableable, DividerType, DropdownOption, DropdownSize, EditButtonVariant, ElevationLevel, EmptyStateButton, EmptyStateIconTheme, ErrorCategory, ErrorHandler, ErrorOptions, ErrorSeverity, EventHandler, ExpandableRowColumn, ExpandableRowPageEvent, ExpandableRowProgressConfig, ExtendedColorVariant, FieldItem, FieldStyle, FileUploadEvent, FileUploadState, FileUploadVariant, FilterColumnsActiveTab, FilterColumnsApplyEvent, FilterField, FilterFieldType, FilterState, FloatButtonAction, FloatButtonPosition, Focusable, FormControlBase, GridAlign, GridColumns, GridGap, GridItemSpan, GridPadding, GridVerticalAlign, HeaderActionButton, HeaderLanguageOption, HeaderSearchCategory, HeaderSearchType, HierarchicalTableAction, HierarchicalTableColumn, HierarchicalTablePageEvent, IconColor, IconShape, IconSize, IconTagType, InformationBoxVariant, InputSize, InputType, LanguageDisplayMode, LanguageOption, LinkButtonType, Loadable, LoadingState, MediaGroup, MediaItem, MediaSize, MediaType, MenuItem, MessageBubbleType, MessageDirection, MessageItemStatus, MetricsCardBadgeStatus, MetricsCardIconBg, MetricsCardOrientation, MetricsCardType, MetricsCardVariation, MiniIconAction, NonNullableProps, NoteGroup, NoteItem, NoteSidebarPosition, NoteSidebarState, Notification, NotificationConfig, NotificationPosition, NotificationStatusType, NotificationType, OptionalProps, Orientation, OverlayComponent, PageChangeEvent, PaginationSize, PaginationState, PaginationVariant, PdfCardVariant, PecbError, PecbTableColumn, PecbTableColumnComponent, PecbTableColumnType, Position, ProfileBadge, ProfileGroupItem, ProfileGroupSize, ProfileIndicator, ProfileSize, ProfileType, ProgressBarSize, ProgressCircleSize, ProgressType, QuestionTagDisplay, QuestionTagType, QuizType, RadioDisplayState, RadioLabelPosition, RadioVariant, RadiusScale, RatingStyle, RequestStatusIconType, RequireProps, ResultPageAction, ResultPageIcon, RibbonColor, RightModalSize, SearchMode, SelectableItem, ShadowHardSize, ShadowSize, ShadowSoftSize, ShadowType, SidebarMenuItem, SidebarSection, Size, Sizeable, SkeletonShape, SkeletonSize, SkeletonType, SortState, SpacerSize, SpacingScale, StateVariant, StatisticsIconColor, StatusColor, StatusSize, StatusType, StatusVariant, StepItem, StepOrder, StepState, StepperDirection, StepperSize, StepperTailStyle, StepperType, TabItem, TabSize, TabStyle, TableAction, TableColumn, TableRowActionEvent, TableSelectionEvent, TableSize, TableSortEvent, TableStatusConfig, TableUserConfig, TableVariant, TagAction, TagStyle, Templatable, TestimonialData, TestimonialVariant, TextFormFieldType, ThemeConfig, ThemeMode, ThemeVariables, ToggleLabelPosition, ToggleSize, ToolbarButton, ToolbarTab, ToolbarVariant, TooltipPointerPosition, TooltipTheme, TourIndicatorType, TourPlacement, TourStep, TourType, TranscriptLineState, TreeNode, TypographyScaleEntry, TypographyStyleEntry, UploadedFile, Validatable, ValidationError, ValidationState, VerifyChecklistItem, VerifyItemStatus, VirtualTableColumn, VirtualTablePageEvent, VirtualTableProgressConfig };