@pecb-ui/components 1.1.4 → 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,12 +858,26 @@ declare class CheckboxComponent implements ControlValueAccessor {
817
858
  }
818
859
 
819
860
  type ToggleLabelPosition = 'right' | 'left';
861
+ /** `'md'` is the default size; `'sm'` renders a compact toggle. */
862
+ type ToggleSize = 'sm' | 'md';
820
863
  declare class ToggleComponent implements ControlValueAccessor {
821
864
  id: _angular_core.InputSignal<string>;
822
865
  name: _angular_core.InputSignal<string | undefined>;
823
866
  label: _angular_core.InputSignal<string | undefined>;
824
867
  description: _angular_core.InputSignal<string | undefined>;
825
868
  labelPosition: _angular_core.InputSignal<ToggleLabelPosition>;
869
+ /** Track background color when checked. Falls back to the default theme color when unset. */
870
+ onColor: _angular_core.InputSignal<string | undefined>;
871
+ /** Track background color when unchecked. Falls back to the default theme color when unset. */
872
+ offColor: _angular_core.InputSignal<string | undefined>;
873
+ /** Thumb (slider) color. Falls back to the default theme color when unset. */
874
+ thumbColor: _angular_core.InputSignal<string | undefined>;
875
+ /** Show a check icon when on and an X icon when off, on the side opposite the thumb. */
876
+ showStatusIcons: _angular_core.InputSignal<boolean>;
877
+ /** Size variant. Leave unset (or `'md'`) for the default size; `'sm'` is compact. */
878
+ size: _angular_core.InputSignal<ToggleSize | undefined>;
879
+ /** Drop shadow on the track. */
880
+ shadow: _angular_core.InputSignal<boolean>;
826
881
  disabled: _angular_core.ModelSignal<boolean>;
827
882
  toggleChange: _angular_core.OutputEmitterRef<boolean>;
828
883
  checked: _angular_core.WritableSignal<boolean>;
@@ -836,7 +891,7 @@ declare class ToggleComponent implements ControlValueAccessor {
836
891
  registerOnTouched(fn: () => void): void;
837
892
  setDisabledState(isDisabled: boolean): void;
838
893
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToggleComponent, never>;
839
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToggleComponent, "pecb-toggle", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "labelPosition": { "alias": "labelPosition"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "toggleChange": "toggleChange"; }, never, never, true, never>;
894
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToggleComponent, "pecb-toggle", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "labelPosition": { "alias": "labelPosition"; "required": false; "isSignal": true; }; "onColor": { "alias": "onColor"; "required": false; "isSignal": true; }; "offColor": { "alias": "offColor"; "required": false; "isSignal": true; }; "thumbColor": { "alias": "thumbColor"; "required": false; "isSignal": true; }; "showStatusIcons": { "alias": "showStatusIcons"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shadow": { "alias": "shadow"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "toggleChange": "toggleChange"; }, never, never, true, never>;
840
895
  }
841
896
 
842
897
  interface DropdownOption {
@@ -850,6 +905,8 @@ declare class DropdownComponent implements ControlValueAccessor {
850
905
  private readonly elementRef;
851
906
  id: _angular_core.InputSignal<string>;
852
907
  label: _angular_core.InputSignal<string | undefined>;
908
+ /** Placeholder shown in the trigger when no option is selected. */
909
+ placeholder: _angular_core.InputSignal<string>;
853
910
  size: _angular_core.InputSignal<DropdownSize>;
854
911
  options: _angular_core.InputSignal<DropdownOption[]>;
855
912
  multiple: _angular_core.InputSignal<boolean>;
@@ -860,6 +917,12 @@ declare class DropdownComponent implements ControlValueAccessor {
860
917
  error: _angular_core.InputSignal<boolean>;
861
918
  errorMessage: _angular_core.InputSignal<string | undefined>;
862
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>;
863
926
  selectionChange: _angular_core.OutputEmitterRef<unknown>;
864
927
  isOpen: _angular_core.WritableSignal<boolean>;
865
928
  searchQuery: _angular_core.WritableSignal<string>;
@@ -883,28 +946,30 @@ declare class DropdownComponent implements ControlValueAccessor {
883
946
  registerOnTouched(fn: () => void): void;
884
947
  setDisabledState(isDisabled: boolean): void;
885
948
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownComponent, never>;
886
- 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>;
887
950
  }
888
951
 
889
952
  type RightModalSize = 'sm' | 'md' | 'lg';
890
- declare class RightModalComponent implements OnInit, OnDestroy, AfterViewInit {
953
+ declare class RightModalComponent implements OnDestroy {
891
954
  id: _angular_core.InputSignal<string>;
892
- isOpen: _angular_core.InputSignal<boolean>;
955
+ isOpen: _angular_core.ModelSignal<boolean>;
893
956
  size: _angular_core.InputSignal<RightModalSize>;
894
957
  closeOnBackdropClick: _angular_core.InputSignal<boolean>;
895
958
  closeOnEscape: _angular_core.InputSignal<boolean>;
896
959
  showCloseButton: _angular_core.InputSignal<boolean>;
960
+ /** Accessible label for the close (×) button. Override to localize. */
961
+ closeAriaLabel: _angular_core.InputSignal<string>;
897
962
  ariaLabel: _angular_core.InputSignal<string | undefined>;
898
963
  ariaLabelledBy: _angular_core.InputSignal<string | undefined>;
899
964
  ariaDescribedBy: _angular_core.InputSignal<string | undefined>;
900
965
  closed: _angular_core.OutputEmitterRef<void>;
901
966
  opened: _angular_core.OutputEmitterRef<void>;
902
- modalPanel: ElementRef<HTMLElement>;
967
+ private modalPanel;
903
968
  private cleanupFocusTrap;
904
969
  private cleanupBodyScroll;
905
970
  private previousActiveElement;
906
- ngOnInit(): void;
907
- ngAfterViewInit(): void;
971
+ private currentlyOpen;
972
+ constructor();
908
973
  ngOnDestroy(): void;
909
974
  get modalClasses(): string[];
910
975
  get panelClasses(): string[];
@@ -915,7 +980,7 @@ declare class RightModalComponent implements OnInit, OnDestroy, AfterViewInit {
915
980
  private setupFocusTrap;
916
981
  private cleanup;
917
982
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RightModalComponent, never>;
918
- 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>;
919
984
  }
920
985
  declare class RightModalHeaderDirective {
921
986
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RightModalHeaderDirective, never>;
@@ -953,6 +1018,10 @@ declare class SidebarComponent {
953
1018
  collapsedLogo: _angular_core.InputSignal<string | undefined>;
954
1019
  showFooter: _angular_core.InputSignal<boolean>;
955
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>;
956
1025
  itemClick: _angular_core.OutputEmitterRef<SidebarMenuItem>;
957
1026
  collapseChange: _angular_core.OutputEmitterRef<boolean>;
958
1027
  activePopupItem: _angular_core.WritableSignal<SidebarMenuItem | null>;
@@ -967,7 +1036,7 @@ declare class SidebarComponent {
967
1036
  hasActiveDescendant(item: SidebarMenuItem): boolean;
968
1037
  getItemClasses(item: SidebarMenuItem, isChild?: boolean, isNested?: boolean): string[];
969
1038
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidebarComponent, never>;
970
- 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>;
971
1040
  }
972
1041
 
973
1042
  type ConfirmationIconType = 'success' | 'warning' | 'error' | 'info';
@@ -984,6 +1053,8 @@ declare class ConfirmationComponent implements OnDestroy, AfterViewInit {
984
1053
  cancelText: _angular_core.InputSignal<string>;
985
1054
  iconType: _angular_core.InputSignal<ConfirmationIconType>;
986
1055
  showCloseButton: _angular_core.InputSignal<boolean>;
1056
+ /** Accessible label for the close (×) button. Override to localize. */
1057
+ closeAriaLabel: _angular_core.InputSignal<string>;
987
1058
  closeOnBackdropClick: _angular_core.InputSignal<boolean>;
988
1059
  closeOnEscape: _angular_core.InputSignal<boolean>;
989
1060
  ariaLabel: _angular_core.InputSignal<string | undefined>;
@@ -1011,7 +1082,7 @@ declare class ConfirmationComponent implements OnDestroy, AfterViewInit {
1011
1082
  private setupFocusTrap;
1012
1083
  private cleanup;
1013
1084
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfirmationComponent, never>;
1014
- 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>;
1015
1086
  }
1016
1087
 
1017
1088
  declare class BottomSheetComponent implements OnDestroy, AfterViewInit {
@@ -1025,6 +1096,8 @@ declare class BottomSheetComponent implements OnDestroy, AfterViewInit {
1025
1096
  primaryText: _angular_core.InputSignal<string>;
1026
1097
  secondaryText: _angular_core.InputSignal<string>;
1027
1098
  showCloseButton: _angular_core.InputSignal<boolean>;
1099
+ /** Accessible label for the close (×) button. Override to localize. */
1100
+ closeAriaLabel: _angular_core.InputSignal<string>;
1028
1101
  closeOnBackdropClick: _angular_core.InputSignal<boolean>;
1029
1102
  closeOnEscape: _angular_core.InputSignal<boolean>;
1030
1103
  primaryClicked: _angular_core.OutputEmitterRef<void>;
@@ -1045,7 +1118,7 @@ declare class BottomSheetComponent implements OnDestroy, AfterViewInit {
1045
1118
  private setupFocusTrap;
1046
1119
  private cleanup;
1047
1120
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BottomSheetComponent, never>;
1048
- 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>;
1049
1122
  }
1050
1123
 
1051
1124
  type QuizType = 'Multiple Choice' | 'True/False' | 'Scenario' | 'Essay' | string;
@@ -1130,6 +1203,10 @@ declare class AccordionSmallComponent {
1130
1203
  showToggle: _angular_core.InputSignal<boolean>;
1131
1204
  /** Two-way bindable toggle switch value. Supports [(toggleValue)]. */
1132
1205
  toggleValue: _angular_core.ModelSignal<boolean>;
1206
+ /** Track color when the toggle is on. Defaults to the design green. */
1207
+ toggleOnColor: _angular_core.InputSignal<string>;
1208
+ /** Track color when the toggle is off. Defaults to the design red. */
1209
+ toggleOffColor: _angular_core.InputSignal<string>;
1133
1210
  /** Show/hide the download icon */
1134
1211
  showDownload: _angular_core.InputSignal<boolean>;
1135
1212
  /** Show/hide the save icon */
@@ -1150,7 +1227,7 @@ declare class AccordionSmallComponent {
1150
1227
  get toggleChecked(): boolean;
1151
1228
  set toggleChecked(value: boolean);
1152
1229
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AccordionSmallComponent, never>;
1153
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AccordionSmallComponent, "pecb-accordion-small", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "parentId": { "alias": "parentId"; "required": false; "isSignal": true; }; "metaLabel": { "alias": "metaLabel"; "required": false; "isSignal": true; }; "isActive": { "alias": "isActive"; "required": false; "isSignal": true; }; "showToggle": { "alias": "showToggle"; "required": false; "isSignal": true; }; "toggleValue": { "alias": "toggleValue"; "required": false; "isSignal": true; }; "showDownload": { "alias": "showDownload"; "required": false; "isSignal": true; }; "showSave": { "alias": "showSave"; "required": false; "isSignal": true; }; "showEdit": { "alias": "showEdit"; "required": false; "isSignal": true; }; "showDelete": { "alias": "showDelete"; "required": false; "isSignal": true; }; "showMove": { "alias": "showMove"; "required": false; "isSignal": true; }; }, { "isActive": "isActiveChange"; "toggleValue": "toggleValueChange"; "downloadClicked": "downloadClicked"; "saveClicked": "saveClicked"; "editClicked": "editClicked"; "deleteClicked": "deleteClicked"; "moveClicked": "moveClicked"; }, never, ["[pecbLeading]", "*"], true, never>;
1230
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AccordionSmallComponent, "pecb-accordion-small", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "parentId": { "alias": "parentId"; "required": false; "isSignal": true; }; "metaLabel": { "alias": "metaLabel"; "required": false; "isSignal": true; }; "isActive": { "alias": "isActive"; "required": false; "isSignal": true; }; "showToggle": { "alias": "showToggle"; "required": false; "isSignal": true; }; "toggleValue": { "alias": "toggleValue"; "required": false; "isSignal": true; }; "toggleOnColor": { "alias": "toggleOnColor"; "required": false; "isSignal": true; }; "toggleOffColor": { "alias": "toggleOffColor"; "required": false; "isSignal": true; }; "showDownload": { "alias": "showDownload"; "required": false; "isSignal": true; }; "showSave": { "alias": "showSave"; "required": false; "isSignal": true; }; "showEdit": { "alias": "showEdit"; "required": false; "isSignal": true; }; "showDelete": { "alias": "showDelete"; "required": false; "isSignal": true; }; "showMove": { "alias": "showMove"; "required": false; "isSignal": true; }; }, { "isActive": "isActiveChange"; "toggleValue": "toggleValueChange"; "downloadClicked": "downloadClicked"; "saveClicked": "saveClicked"; "editClicked": "editClicked"; "deleteClicked": "deleteClicked"; "moveClicked": "moveClicked"; }, never, ["[pecbLeading]", "*"], true, never>;
1154
1231
  }
1155
1232
 
1156
1233
  type ButtonGroupItemPosition = 'first' | 'middle' | 'last' | 'more';
@@ -1237,6 +1314,8 @@ declare class TooltipDirective implements OnDestroy {
1237
1314
  private appRef;
1238
1315
  private injector;
1239
1316
  private ref?;
1317
+ /** Keeps the tooltip pinned to its trigger while the page scrolls or resizes. */
1318
+ private readonly reposition;
1240
1319
  onMouseEnter(): void;
1241
1320
  onMouseLeave(): void;
1242
1321
  onClick(): void;
@@ -1270,12 +1349,20 @@ declare class MessageItemComponent {
1270
1349
  unreadCount: _angular_core.InputSignal<number>;
1271
1350
  /** Whether this item is currently selected / active */
1272
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>;
1273
1360
  /** Emitted when the item is clicked */
1274
1361
  itemClicked: _angular_core.OutputEmitterRef<void>;
1275
1362
  initials: _angular_core.Signal<string>;
1276
1363
  get hostClasses(): string;
1277
1364
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MessageItemComponent, never>;
1278
- 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>;
1279
1366
  }
1280
1367
  declare class MessageBubbleComponent {
1281
1368
  /** Visual type of the message */
@@ -1295,6 +1382,12 @@ declare class MessageBubbleComponent {
1295
1382
  time: _angular_core.InputSignal<string>;
1296
1383
  /** Show read-receipt checkmark below the bubble (outgoing only) */
1297
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>;
1298
1391
  /** Avatar image URL */
1299
1392
  avatarSrc: _angular_core.InputSignal<string>;
1300
1393
  /** Explicit initials override — auto-derived from senderName when empty */
@@ -1326,9 +1419,13 @@ declare class MessageBubbleComponent {
1326
1419
  get hostClasses(): string;
1327
1420
  get senderLabel(): string;
1328
1421
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MessageBubbleComponent, never>;
1329
- 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>;
1330
1423
  }
1331
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
+ }
1332
1429
  declare class FullscreenModalContentDirective {
1333
1430
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FullscreenModalContentDirective, never>;
1334
1431
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FullscreenModalContentDirective, "[pecbFullscreenModalContent]", never, {}, {}, never, never, true, never>;
@@ -1337,7 +1434,7 @@ declare class FullscreenModalFooterDirective {
1337
1434
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FullscreenModalFooterDirective, never>;
1338
1435
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FullscreenModalFooterDirective, "[pecbFullscreenModalFooter]", never, {}, {}, never, never, true, never>;
1339
1436
  }
1340
- declare class FullscreenModalComponent implements OnInit, OnDestroy, AfterViewInit {
1437
+ declare class FullscreenModalComponent implements OnDestroy {
1341
1438
  /** Unique id forwarded to the dialog element */
1342
1439
  id: _angular_core.InputSignal<string>;
1343
1440
  /** Controls visibility */
@@ -1346,6 +1443,8 @@ declare class FullscreenModalComponent implements OnInit, OnDestroy, AfterViewIn
1346
1443
  title: _angular_core.InputSignal<string>;
1347
1444
  /** Show or hide the built-in close (×) button */
1348
1445
  showCloseButton: _angular_core.InputSignal<boolean>;
1446
+ /** Accessible label for the close (×) button. Override to localize. */
1447
+ closeAriaLabel: _angular_core.InputSignal<string>;
1349
1448
  /** Close modal when clicking the backdrop */
1350
1449
  closeOnBackdropClick: _angular_core.InputSignal<boolean>;
1351
1450
  /** Close modal when pressing Escape */
@@ -1360,12 +1459,12 @@ declare class FullscreenModalComponent implements OnInit, OnDestroy, AfterViewIn
1360
1459
  closed: _angular_core.OutputEmitterRef<void>;
1361
1460
  /** Emitted when the modal has been opened */
1362
1461
  opened: _angular_core.OutputEmitterRef<void>;
1363
- modalPanel: ElementRef<HTMLElement>;
1462
+ private modalPanel;
1364
1463
  private cleanupFocusTrap;
1365
1464
  private cleanupBodyScroll;
1366
1465
  private previousActiveElement;
1367
- ngOnInit(): void;
1368
- ngAfterViewInit(): void;
1466
+ private currentlyOpen;
1467
+ constructor();
1369
1468
  ngOnDestroy(): void;
1370
1469
  onBackdropClick(event: MouseEvent): void;
1371
1470
  onKeydown(event: KeyboardEvent): void;
@@ -1377,7 +1476,7 @@ declare class FullscreenModalComponent implements OnInit, OnDestroy, AfterViewIn
1377
1476
  private setupFocusTrap;
1378
1477
  private cleanup;
1379
1478
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FullscreenModalComponent, never>;
1380
- 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>;
1381
1480
  }
1382
1481
 
1383
1482
  type StepperType = 'basic' | 'dot' | 'custom-icon' | 'navigation' | 'inline';
@@ -1637,8 +1736,12 @@ declare class CodeInputComponent implements ControlValueAccessor {
1637
1736
  state: _angular_core.InputSignal<CodeInputState>;
1638
1737
  errorMessage: _angular_core.InputSignal<string>;
1639
1738
  showClearAll: _angular_core.InputSignal<boolean>;
1640
- disabled: _angular_core.InputSignal<boolean>;
1739
+ disabled: _angular_core.ModelSignal<boolean>;
1641
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>;
1642
1745
  completed: _angular_core.OutputEmitterRef<string>;
1643
1746
  cleared: _angular_core.OutputEmitterRef<void>;
1644
1747
  cells: _angular_core.WritableSignal<string[]>;
@@ -1650,6 +1753,8 @@ declare class CodeInputComponent implements ControlValueAccessor {
1650
1753
  writeValue(value: string | null): void;
1651
1754
  registerOnChange(fn: (value: string) => void): void;
1652
1755
  registerOnTouched(fn: () => void): void;
1756
+ setDisabledState(isDisabled: boolean): void;
1757
+ getCellAriaLabel(index: number): string;
1653
1758
  getCellClasses(index: number): string[];
1654
1759
  onCellInput(event: Event, index: number): void;
1655
1760
  onCellKeyDown(event: KeyboardEvent, index: number): void;
@@ -1662,7 +1767,7 @@ declare class CodeInputComponent implements ControlValueAccessor {
1662
1767
  private syncInputValues;
1663
1768
  private emitValue;
1664
1769
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CodeInputComponent, never>;
1665
- 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>;
1666
1771
  }
1667
1772
 
1668
1773
  /**
@@ -1833,6 +1938,16 @@ declare class CodeSnippetComponent {
1833
1938
  showCopy: _angular_core.InputSignal<boolean>;
1834
1939
  showFooter: _angular_core.InputSignal<boolean>;
1835
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>;
1836
1951
  copied: _angular_core.OutputEmitterRef<string>;
1837
1952
  copyLabel: _angular_core.WritableSignal<string>;
1838
1953
  codeLines: _angular_core.Signal<string[]>;
@@ -1843,7 +1958,7 @@ declare class CodeSnippetComponent {
1843
1958
  get snippetClasses(): string[];
1844
1959
  onCopy(): void;
1845
1960
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CodeSnippetComponent, never>;
1846
- 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>;
1847
1962
  }
1848
1963
 
1849
1964
  /**
@@ -2053,7 +2168,12 @@ interface ClosableWithHooks {
2053
2168
  afterClose?: () => void;
2054
2169
  }
2055
2170
  /**
2056
- * 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.
2057
2177
  */
2058
2178
  interface TableColumn<T = unknown> {
2059
2179
  /** Unique column key */
@@ -2308,6 +2428,10 @@ declare class HeaderSearchComponent {
2308
2428
  private readonly sanitizer;
2309
2429
  /** Search placeholder text */
2310
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>;
2311
2435
  /** Category options. When provided, embeds a category dropdown. */
2312
2436
  categories: _angular_core.InputSignal<HeaderSearchCategory[]>;
2313
2437
  /** Emits the search query as the user types */
@@ -2330,7 +2454,7 @@ declare class HeaderSearchComponent {
2330
2454
  toggleCategory(): void;
2331
2455
  onCategorySelect(cat: HeaderSearchCategory): void;
2332
2456
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderSearchComponent, never>;
2333
- 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>;
2334
2458
  }
2335
2459
  declare class HeaderLanguageComponent {
2336
2460
  private readonly el;
@@ -2377,12 +2501,14 @@ declare class HeaderUserComponent {
2377
2501
  avatarInitials: _angular_core.InputSignal<string | undefined>;
2378
2502
  /** Avatar shape — `'circle'` for users, `'square'` for companies */
2379
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>;
2380
2506
  /** Emits when the user profile area is clicked */
2381
2507
  userClick: _angular_core.OutputEmitterRef<void>;
2382
2508
  hostClasses: _angular_core.Signal<string>;
2383
2509
  onUserClick(): void;
2384
2510
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderUserComponent, never>;
2385
- 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>;
2386
2512
  }
2387
2513
  declare class HeaderDividerComponent {
2388
2514
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderDividerComponent, never>;
@@ -2422,6 +2548,24 @@ declare class VirtualTableComponent {
2422
2548
  currentPage: _angular_core.InputSignal<number>;
2423
2549
  showPagination: _angular_core.InputSignal<boolean>;
2424
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>;
2425
2569
  rowToggled: _angular_core.OutputEmitterRef<{
2426
2570
  row: any;
2427
2571
  index: number;
@@ -2434,6 +2578,7 @@ declare class VirtualTableComponent {
2434
2578
  expandedRows: _angular_core.WritableSignal<Set<number>>;
2435
2579
  paginationStart: _angular_core.Signal<number>;
2436
2580
  paginationEnd: _angular_core.Signal<number>;
2581
+ paginationInfoText: _angular_core.Signal<string>;
2437
2582
  totalPages: _angular_core.Signal<number>;
2438
2583
  visiblePages: _angular_core.Signal<(number | "...")[]>;
2439
2584
  isExpanded(index: number): boolean;
@@ -2445,7 +2590,7 @@ declare class VirtualTableComponent {
2445
2590
  getProgressColor(row: any): string;
2446
2591
  onPageChange(page: number): void;
2447
2592
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<VirtualTableComponent, never>;
2448
- 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>;
2449
2594
  }
2450
2595
 
2451
2596
  /**
@@ -2658,6 +2803,18 @@ declare class HierarchicalTableComponent implements AfterViewInit, OnDestroy {
2658
2803
  pageSize: _angular_core.InputSignal<number>;
2659
2804
  currentPage: _angular_core.InputSignal<number>;
2660
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>;
2661
2818
  actionButtonClicked: _angular_core.OutputEmitterRef<void>;
2662
2819
  searchChanged: _angular_core.OutputEmitterRef<string>;
2663
2820
  filterClicked: _angular_core.OutputEmitterRef<void>;
@@ -2669,6 +2826,7 @@ declare class HierarchicalTableComponent implements AfterViewInit, OnDestroy {
2669
2826
  pageChanged: _angular_core.OutputEmitterRef<HierarchicalTablePageEvent>;
2670
2827
  paginationStart: _angular_core.Signal<number>;
2671
2828
  paginationEnd: _angular_core.Signal<number>;
2829
+ paginationInfoText: _angular_core.Signal<string>;
2672
2830
  totalPages: _angular_core.Signal<number>;
2673
2831
  visiblePages: _angular_core.Signal<(number | "...")[]>;
2674
2832
  getCellValue(row: Record<string, unknown>, key: string): unknown;
@@ -2691,7 +2849,7 @@ declare class HierarchicalTableComponent implements AfterViewInit, OnDestroy {
2691
2849
  private removeDragListeners;
2692
2850
  private updateScrollbar;
2693
2851
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<HierarchicalTableComponent, never>;
2694
- 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>;
2695
2853
  }
2696
2854
 
2697
2855
  /**
@@ -2808,6 +2966,8 @@ declare class BackToTopComponent implements OnInit, OnDestroy {
2808
2966
  rightOffset: _angular_core.InputSignal<number>;
2809
2967
  /** Time in ms after scroll stops to transition to full opacity. Default: 1000 */
2810
2968
  scrollIdleDelay: _angular_core.InputSignal<number>;
2969
+ /** Aria-label for the button. */
2970
+ ariaLabel: _angular_core.InputSignal<string>;
2811
2971
  /** Whether the button is visible (scroll past threshold) */
2812
2972
  visible: _angular_core.WritableSignal<boolean>;
2813
2973
  /** Whether the user is actively scrolling (50% opacity) */
@@ -2822,7 +2982,7 @@ declare class BackToTopComponent implements OnInit, OnDestroy {
2822
2982
  scrollToTop(): void;
2823
2983
  private onScroll;
2824
2984
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BackToTopComponent, never>;
2825
- 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>;
2826
2986
  }
2827
2987
 
2828
2988
  interface ExpandableRowColumn {
@@ -2858,6 +3018,24 @@ declare class ExpandableRowTableComponent {
2858
3018
  pageSize: _angular_core.InputSignal<number>;
2859
3019
  currentPage: _angular_core.InputSignal<number>;
2860
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>;
2861
3039
  rowToggled: _angular_core.OutputEmitterRef<{
2862
3040
  row: Record<string, unknown>;
2863
3041
  index: number;
@@ -2870,6 +3048,7 @@ declare class ExpandableRowTableComponent {
2870
3048
  expandedRows: _angular_core.WritableSignal<Set<number>>;
2871
3049
  paginationStart: _angular_core.Signal<number>;
2872
3050
  paginationEnd: _angular_core.Signal<number>;
3051
+ paginationInfoText: _angular_core.Signal<string>;
2873
3052
  totalPages: _angular_core.Signal<number>;
2874
3053
  visiblePages: _angular_core.Signal<(number | "...")[]>;
2875
3054
  isExpanded(index: number): boolean;
@@ -2881,7 +3060,7 @@ declare class ExpandableRowTableComponent {
2881
3060
  getProgressColor(row: Record<string, unknown>): string;
2882
3061
  onPageChange(page: number): void;
2883
3062
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ExpandableRowTableComponent, never>;
2884
- 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>;
2885
3064
  }
2886
3065
 
2887
3066
  /**
@@ -3109,48 +3288,66 @@ declare class LanguageDropdownComponent {
3109
3288
  */
3110
3289
  type EmptyStateIconTheme = 'default' | 'info' | 'error' | 'warning' | 'success' | 'gray';
3111
3290
  /**
3112
- * 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.
3113
3299
  */
3114
3300
  interface EmptyStateButton {
3115
- /** Button label text */
3301
+ /** Button label text. */
3116
3302
  label: string;
3117
- /** Button style: primary (dark bg) or secondary (outline) */
3118
- 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;
3119
3318
  }
3120
3319
  /**
3121
3320
  * Empty state component matching the PECB Figma design system.
3122
3321
  *
3123
- * Displays a centered message with an icon, title, description, and
3124
- * optional action buttons when there is no data to show.
3125
- *
3126
- * **Figma specs (node 6458:49629):**
3127
- * - Container: white bg, #ececec border, 12px radius, 64px v-pad, 220px h-pad
3128
- * - Gap between elements: 16px
3129
- * - Icon circle: 56px, 28px border-radius
3130
- * - default bg: #f4f4f4 (neutral-7)
3131
- * - info bg: #e6f0fa (new-bg)
3132
- * - error bg: #fdecea (cancelled-bg)
3133
- * - Title: Bold 24px, #212427, line-height 1.2
3134
- * - Description: Medium 14px, #919191, text-center
3135
- * - Primary button: #212427 bg, white text, 6px radius, 40px h, 16px h-pad
3136
- * - Secondary button: white bg, #c2c2c2 border, #212427 text, 6px radius, 40px h
3137
- * - 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>`.
3138
3330
  *
3139
3331
  * @example
3140
3332
  * ```html
3333
+ * <!-- Icon by registered name -->
3141
3334
  * <pecb-empty-state
3142
- * title="No Certifications Yet"
3143
- * description="Start your professional development..."
3144
- * iconTheme="default"
3145
- * [buttons]="[
3146
- * { label: 'Explore Certifications', variant: 'primary' },
3147
- * { label: 'Learn More', variant: 'secondary' }
3148
- * ]"
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' }]"
3149
3339
  * (buttonClick)="onAction($event)"
3150
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>
3151
3346
  * ```
3152
3347
  */
3153
3348
  declare class EmptyStateComponent {
3349
+ private readonly registry;
3350
+ private readonly sanitizer;
3154
3351
  /** Unique element ID */
3155
3352
  id: _angular_core.InputSignal<string>;
3156
3353
  /** Title text */
@@ -3159,7 +3356,13 @@ declare class EmptyStateComponent {
3159
3356
  description: _angular_core.InputSignal<string>;
3160
3357
  /** Icon background color theme */
3161
3358
  iconTheme: _angular_core.InputSignal<EmptyStateIconTheme>;
3162
- /** 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}). */
3163
3366
  buttons: _angular_core.InputSignal<EmptyStateButton[]>;
3164
3367
  /** Whether to show the title */
3165
3368
  showTitle: _angular_core.InputSignal<boolean>;
@@ -3169,12 +3372,31 @@ declare class EmptyStateComponent {
3169
3372
  buttonClick: _angular_core.OutputEmitterRef<EmptyStateButton>;
3170
3373
  /** CSS class for the icon circle background */
3171
3374
  iconBgClass: _angular_core.Signal<string>;
3172
- /** 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. */
3173
3395
  hasButtons: _angular_core.Signal<boolean>;
3174
- /** Handle button click */
3396
+ /** Handle button click — re-emits the original button config. */
3175
3397
  onButtonClick(button: EmptyStateButton): void;
3176
3398
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmptyStateComponent, never>;
3177
- 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>;
3178
3400
  }
3179
3401
 
3180
3402
  /**
@@ -3240,45 +3462,64 @@ declare class TestimonialComponent {
3240
3462
  type TagStyle = 'light' | 'dark';
3241
3463
  type TagAction = 'none' | 'close' | 'plus';
3242
3464
  declare class TagComponent {
3243
- tagId: _angular_core.InputSignal<string>;
3465
+ id: _angular_core.InputSignal<string>;
3244
3466
  label: _angular_core.InputSignal<string>;
3245
3467
  tagStyle: _angular_core.InputSignal<TagStyle>;
3246
3468
  action: _angular_core.InputSignal<TagAction>;
3469
+ /** Aria-label for the close (×) action — override to localize (audit F20). */
3470
+ removeAriaLabel: _angular_core.InputSignal<string>;
3247
3471
  tagClose: _angular_core.OutputEmitterRef<void>;
3248
3472
  tagClasses: _angular_core.Signal<string[]>;
3249
3473
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TagComponent, never>;
3250
- 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>;
3251
3475
  }
3476
+
3252
3477
  type LinkButtonType = 'go-back' | 'view-details' | 'read-more' | 'show-credential';
3253
3478
  declare class LinkButtonComponent {
3254
- linkId: _angular_core.InputSignal<string>;
3479
+ id: _angular_core.InputSignal<string>;
3255
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>;
3256
3484
  clicked: _angular_core.OutputEmitterRef<void>;
3257
3485
  displayText: _angular_core.Signal<string>;
3258
3486
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LinkButtonComponent, never>;
3259
- 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>;
3260
3488
  }
3489
+
3261
3490
  declare class SlidePointsComponent {
3262
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>;
3263
3496
  dotClick: _angular_core.OutputEmitterRef<number>;
3264
3497
  currentIndex: _angular_core.WritableSignal<number>;
3265
3498
  dotsArray: _angular_core.Signal<number[]>;
3499
+ containerAriaLabel: _angular_core.Signal<string>;
3266
3500
  selectDot(index: number): void;
3267
3501
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlidePointsComponent, never>;
3268
- 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>;
3269
3503
  }
3504
+
3270
3505
  declare class QuantitySelectorComponent {
3271
- qtyId: _angular_core.InputSignal<string>;
3272
- 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>;
3273
3509
  min: _angular_core.InputSignal<number>;
3274
3510
  max: _angular_core.InputSignal<number>;
3275
3511
  showFraction: _angular_core.InputSignal<boolean>;
3276
- 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();
3277
3517
  increment(): void;
3278
3518
  decrement(): void;
3279
3519
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<QuantitySelectorComponent, never>;
3280
- 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>;
3281
3521
  }
3522
+
3282
3523
  type AuditorStatusType = 'trainee' | 'auditor' | 'member';
3283
3524
  declare class AuditorStatusComponent {
3284
3525
  type: _angular_core.InputSignal<AuditorStatusType>;
@@ -3288,6 +3529,7 @@ declare class AuditorStatusComponent {
3288
3529
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AuditorStatusComponent, never>;
3289
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>;
3290
3531
  }
3532
+
3291
3533
  type RatingStyle = 'black' | 'white';
3292
3534
  declare class RatingNumberComponent {
3293
3535
  value: _angular_core.InputSignal<number>;
@@ -3297,17 +3539,22 @@ declare class RatingNumberComponent {
3297
3539
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RatingNumberComponent, never>;
3298
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>;
3299
3541
  }
3542
+
3300
3543
  type IconTagType = 'important' | 'question' | 'review';
3301
3544
  declare class IconTagComponent {
3302
3545
  type: _angular_core.InputSignal<IconTagType>;
3303
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>;
3304
3550
  clicked: _angular_core.OutputEmitterRef<void>;
3305
3551
  iconTagClasses: _angular_core.Signal<string[]>;
3306
3552
  iconBgClass: _angular_core.Signal<string>;
3307
3553
  displayLabel: _angular_core.Signal<string>;
3308
3554
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<IconTagComponent, never>;
3309
- 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>;
3310
3556
  }
3557
+
3311
3558
  type TranscriptLineState = 'default' | 'active' | 'hover';
3312
3559
  declare class TranscriptLineComponent {
3313
3560
  time: _angular_core.InputSignal<string>;
@@ -3320,6 +3567,7 @@ declare class TranscriptLineComponent {
3320
3567
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TranscriptLineComponent, never>;
3321
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>;
3322
3569
  }
3570
+
3323
3571
  type MiniIconAction = 'edit' | 'delete';
3324
3572
  declare class MiniIconButtonComponent {
3325
3573
  action: _angular_core.InputSignal<MiniIconAction>;
@@ -3327,39 +3575,48 @@ declare class MiniIconButtonComponent {
3327
3575
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MiniIconButtonComponent, never>;
3328
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>;
3329
3577
  }
3578
+
3330
3579
  declare class NoResultsComponent {
3331
- noResultsId: _angular_core.InputSignal<string>;
3580
+ id: _angular_core.InputSignal<string>;
3332
3581
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NoResultsComponent, never>;
3333
- 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>;
3334
3583
  }
3584
+
3335
3585
  declare class CertificateUploadBarComponent {
3336
- certUploadId: _angular_core.InputSignal<string>;
3586
+ id: _angular_core.InputSignal<string>;
3337
3587
  filename: _angular_core.InputSignal<string>;
3338
3588
  showClose: _angular_core.InputSignal<boolean>;
3589
+ /** Aria-label for the remove button — override to localize (audit F20). */
3590
+ removeAriaLabel: _angular_core.InputSignal<string>;
3339
3591
  closeClick: _angular_core.OutputEmitterRef<void>;
3340
3592
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CertificateUploadBarComponent, never>;
3341
- 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>;
3342
3594
  }
3595
+
3343
3596
  declare class VideoUploadBarComponent {
3344
- videoUploadId: _angular_core.InputSignal<string>;
3597
+ id: _angular_core.InputSignal<string>;
3345
3598
  filename: _angular_core.InputSignal<string>;
3346
3599
  fileSize: _angular_core.InputSignal<string>;
3600
+ /** Aria-label for the delete button — override to localize (audit F20). */
3601
+ deleteAriaLabel: _angular_core.InputSignal<string>;
3347
3602
  deleteClick: _angular_core.OutputEmitterRef<void>;
3348
3603
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<VideoUploadBarComponent, never>;
3349
- 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>;
3350
3605
  }
3606
+
3351
3607
  type StatisticsIconColor = 'blue' | 'green' | 'orange' | 'red' | 'gray';
3352
3608
  declare class StatisticsCardComponent {
3353
- statsId: _angular_core.InputSignal<string>;
3609
+ id: _angular_core.InputSignal<string>;
3354
3610
  value: _angular_core.InputSignal<number>;
3355
3611
  label: _angular_core.InputSignal<string>;
3356
3612
  iconColor: _angular_core.InputSignal<StatisticsIconColor>;
3357
3613
  iconClasses: _angular_core.Signal<string[]>;
3358
3614
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatisticsCardComponent, never>;
3359
- 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>;
3360
3616
  }
3617
+
3361
3618
  declare class PriceMethodComponent {
3362
- priceMethodId: _angular_core.InputSignal<string>;
3619
+ id: _angular_core.InputSignal<string>;
3363
3620
  leftLabel: _angular_core.InputSignal<string>;
3364
3621
  rightLabel: _angular_core.InputSignal<string>;
3365
3622
  selectionChange: _angular_core.OutputEmitterRef<number>;
@@ -3367,11 +3624,12 @@ declare class PriceMethodComponent {
3367
3624
  pillClasses(index: number): string[];
3368
3625
  select(index: number): void;
3369
3626
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PriceMethodComponent, never>;
3370
- 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>;
3371
3628
  }
3629
+
3372
3630
  type AppStatusColor = 'warning' | 'success' | 'error' | 'info';
3373
3631
  declare class ApplicationStatusBarComponent {
3374
- appStatusId: _angular_core.InputSignal<string>;
3632
+ id: _angular_core.InputSignal<string>;
3375
3633
  message: _angular_core.InputSignal<string>;
3376
3634
  statusLabel: _angular_core.InputSignal<string>;
3377
3635
  statusColor: _angular_core.InputSignal<AppStatusColor>;
@@ -3379,38 +3637,49 @@ declare class ApplicationStatusBarComponent {
3379
3637
  color: string;
3380
3638
  }>;
3381
3639
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ApplicationStatusBarComponent, never>;
3382
- 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>;
3383
3641
  }
3642
+
3384
3643
  declare class ReasonForReturnComponent {
3385
- reasonId: _angular_core.InputSignal<string>;
3644
+ id: _angular_core.InputSignal<string>;
3386
3645
  message: _angular_core.InputSignal<string>;
3387
3646
  linkText: _angular_core.InputSignal<string>;
3388
3647
  linkUrl: _angular_core.InputSignal<string>;
3389
3648
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ReasonForReturnComponent, never>;
3390
- 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>;
3391
3650
  }
3651
+
3392
3652
  type ContentTagType = 'quiz' | 'video';
3393
3653
  type ContentTagDisplay = 'full' | 'icon-only';
3394
3654
  declare class ContentTypeTagComponent {
3395
3655
  type: _angular_core.InputSignal<ContentTagType>;
3396
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>;
3397
3660
  tagClasses: _angular_core.Signal<string[]>;
3661
+ displayLabel: _angular_core.Signal<string>;
3398
3662
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ContentTypeTagComponent, never>;
3399
- 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>;
3400
3664
  }
3665
+
3401
3666
  type QuestionTagType = 'scenario' | 'true-false' | 'essay' | 'multiple-choice';
3402
3667
  type QuestionTagDisplay = 'full' | 'icon-only';
3403
3668
  declare class QuestionTypeTagComponent {
3404
3669
  type: _angular_core.InputSignal<QuestionTagType>;
3405
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>;
3406
3674
  tagClasses: _angular_core.Signal<string[]>;
3407
3675
  displayLabel: _angular_core.Signal<string>;
3408
3676
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<QuestionTypeTagComponent, never>;
3409
- 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>;
3410
3678
  }
3679
+
3411
3680
  type PdfCardVariant = 'default' | 'hover' | 'compact';
3412
3681
  declare class StandardsPdfCardComponent {
3413
- pdfCardId: _angular_core.InputSignal<string>;
3682
+ id: _angular_core.InputSignal<string>;
3414
3683
  filename: _angular_core.InputSignal<string>;
3415
3684
  variant: _angular_core.InputSignal<PdfCardVariant>;
3416
3685
  showViewButton: _angular_core.InputSignal<boolean>;
@@ -3418,8 +3687,9 @@ declare class StandardsPdfCardComponent {
3418
3687
  cardClasses: _angular_core.Signal<string[]>;
3419
3688
  buttonClasses: _angular_core.Signal<string[]>;
3420
3689
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StandardsPdfCardComponent, never>;
3421
- 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>;
3422
3691
  }
3692
+
3423
3693
  type NoteSidebarState = 'default' | 'unread' | 'active';
3424
3694
  type NoteSidebarPosition = 'top' | 'middle' | 'bottom' | 'single';
3425
3695
  declare class NoteSidebarItemComponent {
@@ -3437,22 +3707,25 @@ declare class NoteSidebarItemComponent {
3437
3707
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NoteSidebarItemComponent, never>;
3438
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>;
3439
3709
  }
3710
+
3440
3711
  declare class AuthorDateTimeComponent {
3441
- authorDtId: _angular_core.InputSignal<string>;
3712
+ id: _angular_core.InputSignal<string>;
3442
3713
  author: _angular_core.InputSignal<string>;
3443
3714
  date: _angular_core.InputSignal<string>;
3444
3715
  time: _angular_core.InputSignal<string>;
3445
3716
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AuthorDateTimeComponent, never>;
3446
- 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>;
3447
3718
  }
3719
+
3448
3720
  type CheckDeleteType = 'check' | 'delete';
3449
3721
  declare class CheckDeleteIconComponent {
3450
3722
  type: _angular_core.InputSignal<CheckDeleteType>;
3451
3723
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CheckDeleteIconComponent, never>;
3452
3724
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckDeleteIconComponent, "pecb-check-delete-icon", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3453
3725
  }
3726
+
3454
3727
  declare class ProfileElementsCardComponent {
3455
- profileCardId: _angular_core.InputSignal<string>;
3728
+ id: _angular_core.InputSignal<string>;
3456
3729
  name: _angular_core.InputSignal<string>;
3457
3730
  email: _angular_core.InputSignal<string>;
3458
3731
  userId: _angular_core.InputSignal<string>;
@@ -3460,28 +3733,31 @@ declare class ProfileElementsCardComponent {
3460
3733
  badgeLabel: _angular_core.InputSignal<string>;
3461
3734
  avatarUrl: _angular_core.InputSignal<string>;
3462
3735
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProfileElementsCardComponent, never>;
3463
- 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>;
3464
3737
  }
3738
+
3465
3739
  declare class UserWithEmailComponent {
3466
- userEmailId: _angular_core.InputSignal<string>;
3740
+ id: _angular_core.InputSignal<string>;
3467
3741
  name: _angular_core.InputSignal<string>;
3468
3742
  email: _angular_core.InputSignal<string>;
3469
3743
  avatarUrl: _angular_core.InputSignal<string>;
3470
3744
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UserWithEmailComponent, never>;
3471
- 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>;
3472
3746
  }
3747
+
3473
3748
  declare class CancelUpdateButtonsComponent {
3474
- cancelUpdateId: _angular_core.InputSignal<string>;
3749
+ id: _angular_core.InputSignal<string>;
3475
3750
  cancelLabel: _angular_core.InputSignal<string>;
3476
3751
  updateLabel: _angular_core.InputSignal<string>;
3477
3752
  cancelClick: _angular_core.OutputEmitterRef<void>;
3478
3753
  updateClick: _angular_core.OutputEmitterRef<void>;
3479
3754
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CancelUpdateButtonsComponent, never>;
3480
- 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>;
3481
3756
  }
3757
+
3482
3758
  type InformationBoxVariant = 'default' | 'developer';
3483
3759
  declare class InformationBoxComponent {
3484
- infoBoxId: _angular_core.InputSignal<string>;
3760
+ id: _angular_core.InputSignal<string>;
3485
3761
  variant: _angular_core.InputSignal<InformationBoxVariant>;
3486
3762
  text: _angular_core.InputSignal<string>;
3487
3763
  title: _angular_core.InputSignal<string>;
@@ -3491,70 +3767,85 @@ declare class InformationBoxComponent {
3491
3767
  'pecb-info-box--developer': boolean;
3492
3768
  }>;
3493
3769
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<InformationBoxComponent, never>;
3494
- 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>;
3495
3771
  }
3772
+
3496
3773
  declare class RequestSentByComponent {
3497
- requestSentId: _angular_core.InputSignal<string>;
3774
+ id: _angular_core.InputSignal<string>;
3498
3775
  name: _angular_core.InputSignal<string>;
3499
3776
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RequestSentByComponent, never>;
3500
- 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>;
3501
3778
  }
3779
+
3502
3780
  type NotificationStatusType = 'read' | 'unread';
3503
3781
  declare class NotificationStatusLinkComponent {
3504
- notifLinkId: _angular_core.InputSignal<string>;
3782
+ id: _angular_core.InputSignal<string>;
3505
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>;
3506
3787
  statusClick: _angular_core.OutputEmitterRef<void>;
3507
- linkLabel: _angular_core.Signal<"Mark as Read" | "Mark as Unread">;
3788
+ linkLabel: _angular_core.Signal<string>;
3508
3789
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationStatusLinkComponent, never>;
3509
- 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>;
3510
3791
  }
3792
+
3511
3793
  declare class EditCoverPhotoComponent {
3512
- editCoverId: _angular_core.InputSignal<string>;
3794
+ id: _angular_core.InputSignal<string>;
3513
3795
  editClick: _angular_core.OutputEmitterRef<void>;
3514
3796
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EditCoverPhotoComponent, never>;
3515
- 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>;
3516
3798
  }
3799
+
3517
3800
  type RequestStatusIconType = 'warning' | 'success';
3518
3801
  declare class RequestStatusBarComponent {
3519
- requestStatusId: _angular_core.InputSignal<string>;
3802
+ id: _angular_core.InputSignal<string>;
3520
3803
  message: _angular_core.InputSignal<string>;
3521
3804
  linkText: _angular_core.InputSignal<string>;
3522
3805
  iconType: _angular_core.InputSignal<RequestStatusIconType>;
3523
3806
  linkClick: _angular_core.OutputEmitterRef<void>;
3524
3807
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RequestStatusBarComponent, never>;
3525
- 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>;
3526
3809
  }
3810
+
3527
3811
  type VerifyItemStatus = 'pending' | 'verified' | 'rejected' | 'warning';
3528
3812
  interface VerifyChecklistItem {
3529
3813
  text: string;
3530
3814
  status: VerifyItemStatus;
3531
3815
  }
3532
3816
  declare class VerifyChecklistComponent {
3533
- verifyChecklistId: _angular_core.InputSignal<string>;
3817
+ id: _angular_core.InputSignal<string>;
3534
3818
  items: _angular_core.InputSignal<VerifyChecklistItem[]>;
3535
3819
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<VerifyChecklistComponent, never>;
3536
- 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>;
3537
3821
  }
3822
+
3538
3823
  type EditButtonVariant = 'default' | 'black';
3539
3824
  declare class EditButtonComponent {
3540
- editBtnId: _angular_core.InputSignal<string>;
3825
+ id: _angular_core.InputSignal<string>;
3541
3826
  variant: _angular_core.InputSignal<EditButtonVariant>;
3827
+ /** Aria-label for the button — override to localize (audit F20). */
3828
+ ariaLabel: _angular_core.InputSignal<string>;
3542
3829
  editBtnClick: _angular_core.OutputEmitterRef<void>;
3543
3830
  btnClasses: _angular_core.Signal<string[]>;
3544
3831
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EditButtonComponent, never>;
3545
- 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>;
3546
3833
  }
3834
+
3547
3835
  type AddButtonVariant = 'default' | 'dark';
3548
3836
  declare class AddButtonComponent {
3549
- addBtnId: _angular_core.InputSignal<string>;
3837
+ id: _angular_core.InputSignal<string>;
3550
3838
  variant: _angular_core.InputSignal<AddButtonVariant>;
3839
+ /** Aria-label for the button — override to localize (audit F20). */
3840
+ ariaLabel: _angular_core.InputSignal<string>;
3551
3841
  addBtnClick: _angular_core.OutputEmitterRef<void>;
3552
3842
  btnClasses: _angular_core.Signal<string[]>;
3553
3843
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AddButtonComponent, never>;
3554
- 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>;
3555
3845
  }
3846
+
3556
3847
  declare class HorizontalStepsComponent {
3557
- hStepsId: _angular_core.InputSignal<string>;
3848
+ id: _angular_core.InputSignal<string>;
3558
3849
  totalSteps: _angular_core.InputSignal<number>;
3559
3850
  activeStep: _angular_core.InputSignal<number>;
3560
3851
  stepLabels: _angular_core.InputSignal<string[]>;
@@ -3563,25 +3854,27 @@ declare class HorizontalStepsComponent {
3563
3854
  label: string;
3564
3855
  }[]>;
3565
3856
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<HorizontalStepsComponent, never>;
3566
- 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>;
3567
3858
  }
3859
+
3568
3860
  type RadioDisplayState = 'deactivated' | 'activated';
3569
3861
  declare class RadioDisplayComponent {
3570
- radioDisplayId: _angular_core.InputSignal<string>;
3862
+ id: _angular_core.InputSignal<string>;
3571
3863
  state: _angular_core.InputSignal<RadioDisplayState>;
3572
3864
  label: _angular_core.InputSignal<string>;
3573
3865
  radioClasses: _angular_core.Signal<string[]>;
3574
3866
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RadioDisplayComponent, never>;
3575
- 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>;
3576
3868
  }
3869
+
3577
3870
  type CheckboxDisplayState = 'deactivated' | 'activated' | 'gray';
3578
3871
  declare class CheckboxDisplayComponent {
3579
- checkboxDisplayId: _angular_core.InputSignal<string>;
3872
+ id: _angular_core.InputSignal<string>;
3580
3873
  state: _angular_core.InputSignal<CheckboxDisplayState>;
3581
3874
  label: _angular_core.InputSignal<string>;
3582
3875
  checkboxClasses: _angular_core.Signal<string[]>;
3583
3876
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CheckboxDisplayComponent, never>;
3584
- 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>;
3585
3878
  }
3586
3879
 
3587
3880
  type FilterFieldType = 'dropdown' | 'input' | 'number' | 'date-range' | 'number-range';
@@ -3615,7 +3908,7 @@ declare class FilterColumnsComponent implements OnInit, OnChanges, OnDestroy, Af
3615
3908
  modalPanel?: ElementRef<HTMLElement>;
3616
3909
  id: _angular_core.InputSignal<string>;
3617
3910
  /** Whether the modal is open */
3618
- isOpen: _angular_core.InputSignal<boolean>;
3911
+ isOpen: _angular_core.ModelSignal<boolean>;
3619
3912
  /** Whether clicking the backdrop closes the modal */
3620
3913
  closeOnBackdropClick: _angular_core.InputSignal<boolean>;
3621
3914
  /** Whether pressing Escape closes the modal */
@@ -3681,7 +3974,7 @@ declare class FilterColumnsComponent implements OnInit, OnChanges, OnDestroy, Af
3681
3974
  onViewNameChange(value: string): void;
3682
3975
  onDefaultViewChange(checked: boolean): void;
3683
3976
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FilterColumnsComponent, never>;
3684
- 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>;
3685
3978
  }
3686
3979
 
3687
3980
  type FileUploadVariant = 'dropzone' | 'inline';
@@ -3725,6 +4018,38 @@ declare class FileUploadComponent implements OnInit {
3725
4018
  browseLabel: _angular_core.InputSignal<string>;
3726
4019
  /** Upload button label (inline variant) */
3727
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>;
3728
4053
  /** Whether the component is disabled */
3729
4054
  disabled: _angular_core.InputSignal<boolean>;
3730
4055
  /** Whether to show header with title and close button (multiple dropzone) */
@@ -3781,7 +4106,7 @@ declare class FileUploadComponent implements OnInit {
3781
4106
  formatFileDate(date: Date): string;
3782
4107
  getFileTypeColor(type: string): string;
3783
4108
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FileUploadComponent, never>;
3784
- 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>;
3785
4110
  }
3786
4111
 
3787
4112
  type ToolbarVariant = 'buttons' | 'tabs';
@@ -3829,6 +4154,10 @@ declare class ToolbarBarComponent {
3829
4154
  buttons: _angular_core.InputSignal<ToolbarButton[]>;
3830
4155
  /** Tabs configuration (for variant='tabs') */
3831
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>;
3832
4161
  /** Emits when Go Back is clicked */
3833
4162
  backClick: _angular_core.OutputEmitterRef<void>;
3834
4163
  /** Emits when a button is clicked */
@@ -3852,7 +4181,7 @@ declare class ToolbarBarComponent {
3852
4181
  /** Handle search input */
3853
4182
  onSearchInput(event: Event): void;
3854
4183
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToolbarBarComponent, never>;
3855
- 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>;
3856
4185
  }
3857
4186
 
3858
4187
  interface NoteItem {
@@ -4035,7 +4364,7 @@ declare class TourComponent implements OnInit, OnChanges {
4035
4364
  /** Tour steps configuration */
4036
4365
  steps: _angular_core.InputSignal<TourStep[]>;
4037
4366
  /** Whether the tour is visible */
4038
- isOpen: _angular_core.InputSignal<boolean>;
4367
+ isOpen: _angular_core.ModelSignal<boolean>;
4039
4368
  /** Label for the previous button */
4040
4369
  previousLabel: _angular_core.InputSignal<string>;
4041
4370
  /** Label for the next button */
@@ -4070,28 +4399,339 @@ declare class TourComponent implements OnInit, OnChanges {
4070
4399
  onClose(): void;
4071
4400
  goToStep(index: number): void;
4072
4401
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TourComponent, never>;
4073
- 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>;
4074
4403
  }
4075
4404
 
4405
+ type AdminHeaderFieldType = 'text' | 'badge' | 'dropdown' | 'link' | 'date' | 'profile' | 'radio' | 'checkbox' | 'paragraph' | 'progress' | 'custom';
4076
4406
  /**
4077
- * PECB UI Components Module
4407
+ * Directive to define a custom field template.
4408
+ * Use with `type: 'custom'` and a matching `templateId`.
4078
4409
  *
4079
- * A professional Angular components library with TypeScript and SCSS.
4080
- * 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.
4081
4662
  *
4082
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:
4083
4713
  * ```typescript
4084
- * import { PecbComponentsModule } from '@pecb-ui/components';
4714
+ * import { ButtonComponent, InputComponent } from '@pecb-ui/components';
4085
4715
  *
4086
- * @NgModule({
4087
- * imports: [PecbComponentsModule]
4716
+ * @Component({
4717
+ * standalone: true,
4718
+ * imports: [ButtonComponent, InputComponent],
4719
+ * // ...
4088
4720
  * })
4089
- * export class AppModule { }
4721
+ * export class MyComponent {}
4090
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.
4091
4731
  */
4092
4732
  declare class PecbComponentsModule {
4093
4733
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PecbComponentsModule, never>;
4094
- 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]>;
4095
4735
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<PecbComponentsModule>;
4096
4736
  }
4097
4737
 
@@ -4412,6 +5052,14 @@ declare class ProfileComponent {
4412
5052
  size: _angular_core.InputSignal<ProfileSize>;
4413
5053
  indicator: _angular_core.InputSignal<ProfileIndicator>;
4414
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>;
4415
5063
  cameraClick: _angular_core.OutputEmitterRef<MouseEvent>;
4416
5064
  hostClass: _angular_core.Signal<string>;
4417
5065
  showImage: _angular_core.Signal<boolean>;
@@ -4420,7 +5068,7 @@ declare class ProfileComponent {
4420
5068
  imgSize: _angular_core.Signal<number>;
4421
5069
  onCameraClick(event: MouseEvent): void;
4422
5070
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProfileComponent, never>;
4423
- 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>;
4424
5072
  }
4425
5073
 
4426
5074
  type ProfileGroupSize = 'sm' | 'md' | 'lg';
@@ -4433,13 +5081,16 @@ declare class ProfileGroupComponent {
4433
5081
  avatars: _angular_core.InputSignal<ProfileGroupItem[]>;
4434
5082
  size: _angular_core.InputSignal<ProfileGroupSize>;
4435
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>;
4436
5086
  hostClass: _angular_core.Signal<string>;
4437
5087
  visible: _angular_core.Signal<ProfileGroupItem[]>;
4438
5088
  overflow: _angular_core.Signal<number>;
4439
5089
  overflowLabel: _angular_core.Signal<string>;
5090
+ overflowAriaLabel: _angular_core.Signal<string>;
4440
5091
  imgSize: _angular_core.Signal<number>;
4441
5092
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProfileGroupComponent, never>;
4442
- 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>;
4443
5094
  }
4444
5095
 
4445
5096
  /**
@@ -5659,5 +6310,5 @@ declare class IconComponent {
5659
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>;
5660
6311
  }
5661
6312
 
5662
- 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 };
5663
- 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, 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 };