@pecb-ui/components 1.1.13 → 1.1.16

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
@@ -7,7 +7,7 @@ import { ControlValueAccessor } from '@angular/forms';
7
7
  import * as _pecb_ui_components from '@pecb-ui/components';
8
8
  import { Observable } from 'rxjs';
9
9
 
10
- type ButtonVariant = 'primary' | 'primary-outline' | 'primary-2' | 'primary-2-outline' | 'neutral' | 'neutral-outline' | 'secondary' | 'text' | 'text-muted' | 'text-brand' | 'destructive' | 'destructive-outline';
10
+ type ButtonVariant = 'primary' | 'primary-outline' | 'primary-2' | 'primary-2-outline' | 'neutral' | 'neutral-outline' | 'secondary' | 'text' | 'text-muted' | 'text-brand' | 'success' | 'destructive' | 'destructive-outline';
11
11
  type ButtonSize = 'sm' | 'md' | 'lg' | 'xl';
12
12
  type ButtonIconStyle = 'none' | 'leading' | 'trailing' | 'icon-only';
13
13
  declare class ButtonComponent {
@@ -2128,7 +2128,7 @@ declare class ConfirmationComponent implements OnDestroy {
2128
2128
  }
2129
2129
 
2130
2130
  type AlertType = 'info' | 'success' | 'warning' | 'error';
2131
- type AlertVariant = 'banner' | 'filled';
2131
+ type AlertVariant = 'banner' | 'filled' | 'callout';
2132
2132
  declare class AlertComponent implements OnDestroy {
2133
2133
  type: _angular_core.InputSignal<AlertType>;
2134
2134
  variant: _angular_core.InputSignal<AlertVariant>;
@@ -2437,14 +2437,14 @@ declare class TooltipDirective implements OnDestroy {
2437
2437
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TooltipDirective, "[pecbTooltip]", never, { "pecbTooltip": { "alias": "pecbTooltip"; "required": false; "isSignal": true; }; "tooltipTitle": { "alias": "tooltipTitle"; "required": false; "isSignal": true; }; "tooltipTheme": { "alias": "tooltipTheme"; "required": false; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; "tooltipTrigger": { "alias": "tooltipTrigger"; "required": false; "isSignal": true; }; "tooltipPrimaryCta": { "alias": "tooltipPrimaryCta"; "required": false; "isSignal": true; }; "tooltipSecondaryCta": { "alias": "tooltipSecondaryCta"; "required": false; "isSignal": true; }; }, { "tooltipPrimaryCtaClick": "tooltipPrimaryCtaClick"; "tooltipSecondaryCtaClick": "tooltipSecondaryCtaClick"; }, never, never, true, never>;
2438
2438
  }
2439
2439
 
2440
- type MetricsCardVariation = '1' | '2' | '3' | '4' | '5' | '6';
2440
+ type MetricsCardVariation = '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8';
2441
2441
  type MetricsCardType = 'data+cta' | 'data-only';
2442
2442
  type MetricsCardOrientation = 'left-aligned' | 'center';
2443
2443
  type MetricsCardBadgeStatus = 'success' | 'warning' | 'error' | 'info';
2444
- type MetricsCardIconBg = 'white' | 'pending' | 'success' | 'error' | 'info' | 'purple';
2444
+ type MetricsCardIconBg = 'white' | 'gray' | 'pending' | 'success' | 'error' | 'info' | 'purple';
2445
2445
  declare class MetricsCardComponent {
2446
2446
  private sanitizer;
2447
- /** Layout variation (1–6) matching the Figma design */
2447
+ /** Layout variation (1–8) matching the Figma design; 7 is the member-dashboard enroll card, 8 the compact stat tile (value → label, small icon top-right) */
2448
2448
  variation: _angular_core.InputSignal<MetricsCardVariation>;
2449
2449
  /** Whether to render a CTA button/link */
2450
2450
  type: _angular_core.InputSignal<MetricsCardType>;
@@ -2483,7 +2483,7 @@ declare class MetricsCardComponent {
2483
2483
  ctaClicked: _angular_core.OutputEmitterRef<void>;
2484
2484
  safeIconSvg: _angular_core.Signal<_angular_platform_browser.SafeHtml | null>;
2485
2485
  get hostClasses(): string;
2486
- /** Footer CTA renders for variations 2, 3, 4 (left-aligned) and 6 (center) */
2486
+ /** Footer CTA renders for variations 2, 3, 4, 8 (left-aligned) and 6 (center) */
2487
2487
  get showFooterCta(): boolean;
2488
2488
  /** Inline CTA link renders for variations 1 and 5 */
2489
2489
  get showInlineCta(): boolean;
@@ -2498,6 +2498,495 @@ declare class MetricsCardComponent {
2498
2498
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<MetricsCardComponent, "pecb-metrics-card", never, { "variation": { "alias": "variation"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "hasBadge": { "alias": "hasBadge"; "required": false; "isSignal": true; }; "badgeText": { "alias": "badgeText"; "required": false; "isSignal": true; }; "badgeStatus": { "alias": "badgeStatus"; "required": false; "isSignal": true; }; "hasDescription": { "alias": "hasDescription"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "ctaText": { "alias": "ctaText"; "required": false; "isSignal": true; }; "hasIcon": { "alias": "hasIcon"; "required": false; "isSignal": true; }; "iconSvg": { "alias": "iconSvg"; "required": false; "isSignal": true; }; "iconBg": { "alias": "iconBg"; "required": false; "isSignal": true; }; "date": { "alias": "date"; "required": false; "isSignal": true; }; "subtext": { "alias": "subtext"; "required": false; "isSignal": true; }; }, { "ctaClicked": "ctaClicked"; }, never, never, true, never>;
2499
2499
  }
2500
2500
 
2501
+ /**
2502
+ * Badge variant type.
2503
+ * - `dot`: small 6px red dot indicator
2504
+ * - `count`: numbered badge (default or small size)
2505
+ * - `status`: colored dot + text label
2506
+ * - `soft`: dot-less pill — tinted background + colored text (uses `status` for the tone)
2507
+ * - `ribbon`: colored tag with bottom-right arrow fold
2508
+ */
2509
+ type BadgeVariant = 'dot' | 'count' | 'status' | 'soft' | 'ribbon';
2510
+ /**
2511
+ * Count badge size.
2512
+ * - `default`: 20px height, 14px font
2513
+ * - `small`: 14px height, 12px font
2514
+ */
2515
+ type BadgeSize = 'default' | 'small';
2516
+ /**
2517
+ * Status badge type — determines the dot color.
2518
+ */
2519
+ type BadgeStatus = 'success' | 'error' | 'default' | 'processing' | 'warning';
2520
+ /**
2521
+ * Ribbon badge color.
2522
+ */
2523
+ type RibbonColor = 'blue' | 'orange' | 'gray' | 'red' | 'purple' | 'green' | 'black';
2524
+ /**
2525
+ * Badge component matching the PECB Figma design system.
2526
+ *
2527
+ * Three sub-types: Basic (dot/count), Status (dot + label), Ribbon (colored tag).
2528
+ *
2529
+ * @example
2530
+ * ```html
2531
+ * <!-- Dot indicator -->
2532
+ * <pecb-badge variant="dot"></pecb-badge>
2533
+ *
2534
+ * <!-- Count badge -->
2535
+ * <pecb-badge variant="count" [count]="21"></pecb-badge>
2536
+ * <pecb-badge variant="count" [count]="5" size="small"></pecb-badge>
2537
+ *
2538
+ * <!-- Status badge -->
2539
+ * <pecb-badge variant="status" status="success"></pecb-badge>
2540
+ * <pecb-badge variant="status" status="error" label="Failed"></pecb-badge>
2541
+ *
2542
+ * <!-- Ribbon badge -->
2543
+ * <pecb-badge variant="ribbon" ribbonColor="blue" text="New"></pecb-badge>
2544
+ * ```
2545
+ */
2546
+ declare class BadgeComponent {
2547
+ /** Unique element ID */
2548
+ id: _angular_core.InputSignal<string>;
2549
+ /** Badge variant */
2550
+ variant: _angular_core.InputSignal<BadgeVariant>;
2551
+ /** Count number (for variant='count') */
2552
+ count: _angular_core.InputSignal<number>;
2553
+ /** Max count before showing "99+" (for variant='count') */
2554
+ maxCount: _angular_core.InputSignal<number>;
2555
+ /** Count badge size */
2556
+ size: _angular_core.InputSignal<BadgeSize>;
2557
+ /** Status type (for variant='status') */
2558
+ status: _angular_core.InputSignal<BadgeStatus>;
2559
+ /** Label text (for variant='status'). Defaults to the status name. */
2560
+ label: _angular_core.InputSignal<string>;
2561
+ /** Whether to show the label text (for variant='status') */
2562
+ showLabel: _angular_core.InputSignal<boolean>;
2563
+ /** Ribbon color (for variant='ribbon') */
2564
+ ribbonColor: _angular_core.InputSignal<RibbonColor>;
2565
+ /** Ribbon/badge text (for variant='ribbon') */
2566
+ text: _angular_core.InputSignal<string>;
2567
+ /** Aria-label for the dot indicator (variant='dot'). */
2568
+ notificationAriaLabel: _angular_core.InputSignal<string>;
2569
+ /** Word appended after the count in the count badge's aria-label (variant='count'). */
2570
+ notificationsLabel: _angular_core.InputSignal<string>;
2571
+ /** Formatted count display */
2572
+ displayCount: _angular_core.Signal<string>;
2573
+ /** Status label — uses explicit label or falls back to status name */
2574
+ statusLabel: _angular_core.Signal<string>;
2575
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BadgeComponent, never>;
2576
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BadgeComponent, "pecb-badge", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "count": { "alias": "count"; "required": false; "isSignal": true; }; "maxCount": { "alias": "maxCount"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "ribbonColor": { "alias": "ribbonColor"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "notificationAriaLabel": { "alias": "notificationAriaLabel"; "required": false; "isSignal": true; }; "notificationsLabel": { "alias": "notificationsLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2577
+ }
2578
+
2579
+ /** Tint applied to the head icon (and mapped to the status pill colour). */
2580
+ type CredentialCardTone = 'success' | 'warning' | 'error' | 'neutral';
2581
+ /** Plain label/value line in the card body (e.g. Issued / Expires). */
2582
+ interface CredentialCardMetaRow {
2583
+ label: string;
2584
+ value: string;
2585
+ }
2586
+ /** Progress line with a bar and an inline "+" action (e.g. earned credits, paid fees). */
2587
+ interface CredentialCardProgress {
2588
+ /** Echoed back on (progressAction) */
2589
+ id: string;
2590
+ label: string;
2591
+ /** Right-aligned counter text, e.g. "30/90" */
2592
+ valueText: string;
2593
+ /** 0-100; colours the bar: 100 green, >=50 orange, below red */
2594
+ percent: number;
2595
+ /** Disables the "+" button (e.g. requirement already met) */
2596
+ actionDisabled?: boolean;
2597
+ actionAriaLabel?: string;
2598
+ }
2599
+ /** Footer action button. */
2600
+ interface CredentialCardAction {
2601
+ /** Echoed back on (actionClick) */
2602
+ id: string;
2603
+ label: string;
2604
+ /** 'primary' = solid dark, 'ghost' = outline; defaults to 'ghost' */
2605
+ variant?: 'primary' | 'ghost';
2606
+ /** Raw SVG string rendered before the label */
2607
+ icon?: string;
2608
+ disabled?: boolean;
2609
+ }
2610
+ /**
2611
+ * Credential card — a summary tile for a credential/qualification.
2612
+ *
2613
+ * Composes the head (award icon + status pill + title), a digital-badge row with a Claim/View button, meta rows, progress bars with inline "+" actions, a
2614
+ * tinted notice (expired/suspended/revoked/pending reasons — supports <b> markup),
2615
+ * footer action buttons, an optional centered link and an optional muted footnote.
2616
+ * Purely presentational: every interaction surfaces through outputs.
2617
+ */
2618
+ declare class CredentialCardComponent {
2619
+ private sanitizer;
2620
+ /** Credential title */
2621
+ title: _angular_core.InputSignal<string>;
2622
+ /** Head icon tint + status pill colour */
2623
+ tone: _angular_core.InputSignal<CredentialCardTone>;
2624
+ /** Status pill text; pill hidden when empty */
2625
+ statusLabel: _angular_core.InputSignal<string>;
2626
+ /** Show the badge (digital badge) row */
2627
+ showBadge: _angular_core.InputSignal<boolean>;
2628
+ /** Badge row label */
2629
+ badgeLabel: _angular_core.InputSignal<string>;
2630
+ /** Whether the digital badge has been claimed */
2631
+ badgeClaimed: _angular_core.InputSignal<boolean>;
2632
+ claimedLabel: _angular_core.InputSignal<string>;
2633
+ notClaimedLabel: _angular_core.InputSignal<string>;
2634
+ /** Claim/View button text; button hidden when empty */
2635
+ badgeButtonLabel: _angular_core.InputSignal<string>;
2636
+ /** Label/value lines (Issued, Expires, ...) */
2637
+ metaRows: _angular_core.InputSignal<CredentialCardMetaRow[]>;
2638
+ /** Progress lines (credits, fees, ...) */
2639
+ progressRows: _angular_core.InputSignal<CredentialCardProgress[]>;
2640
+ /** Notice text (supports <b>); hidden when empty */
2641
+ noticeText: _angular_core.InputSignal<string>;
2642
+ /** Notice tint */
2643
+ noticeTone: _angular_core.InputSignal<"error" | "warning">;
2644
+ /** Footer buttons */
2645
+ actions: _angular_core.InputSignal<CredentialCardAction[]>;
2646
+ /** 'row' = side by side, 'stack' = full-width column */
2647
+ actionsLayout: _angular_core.InputSignal<"row" | "stack">;
2648
+ /** Centered text link under the actions (e.g. a policy link); hidden when empty */
2649
+ linkLabel: _angular_core.InputSignal<string>;
2650
+ /** Muted centered footnote (e.g. an in-progress note); hidden when empty */
2651
+ footnote: _angular_core.InputSignal<string>;
2652
+ /** Claim/View button clicked */
2653
+ badgeAction: _angular_core.OutputEmitterRef<void>;
2654
+ /** A progress row's "+" clicked — emits the row id */
2655
+ progressAction: _angular_core.OutputEmitterRef<string>;
2656
+ /** A footer action clicked — emits the action id */
2657
+ actionClick: _angular_core.OutputEmitterRef<string>;
2658
+ /** The centered link clicked */
2659
+ linkClick: _angular_core.OutputEmitterRef<void>;
2660
+ readonly awardIcon: _angular_platform_browser.SafeHtml;
2661
+ readonly plusIcon: _angular_platform_browser.SafeHtml;
2662
+ readonly safeNotice: _angular_core.Signal<_angular_platform_browser.SafeHtml | null>;
2663
+ readonly pillStatus: _angular_core.Signal<BadgeStatus>;
2664
+ clampPercent(percent: number): number;
2665
+ barToneClass(percent: number): string;
2666
+ actionClass(action: CredentialCardAction): string;
2667
+ safeSvg(svg: string | undefined): _angular_platform_browser.SafeHtml | null;
2668
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CredentialCardComponent, never>;
2669
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CredentialCardComponent, "pecb-credential-card", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "statusLabel": { "alias": "statusLabel"; "required": false; "isSignal": true; }; "showBadge": { "alias": "showBadge"; "required": false; "isSignal": true; }; "badgeLabel": { "alias": "badgeLabel"; "required": false; "isSignal": true; }; "badgeClaimed": { "alias": "badgeClaimed"; "required": false; "isSignal": true; }; "claimedLabel": { "alias": "claimedLabel"; "required": false; "isSignal": true; }; "notClaimedLabel": { "alias": "notClaimedLabel"; "required": false; "isSignal": true; }; "badgeButtonLabel": { "alias": "badgeButtonLabel"; "required": false; "isSignal": true; }; "metaRows": { "alias": "metaRows"; "required": false; "isSignal": true; }; "progressRows": { "alias": "progressRows"; "required": false; "isSignal": true; }; "noticeText": { "alias": "noticeText"; "required": false; "isSignal": true; }; "noticeTone": { "alias": "noticeTone"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "actionsLayout": { "alias": "actionsLayout"; "required": false; "isSignal": true; }; "linkLabel": { "alias": "linkLabel"; "required": false; "isSignal": true; }; "footnote": { "alias": "footnote"; "required": false; "isSignal": true; }; }, { "badgeAction": "badgeAction"; "progressAction": "progressAction"; "actionClick": "actionClick"; "linkClick": "linkClick"; }, never, never, true, never>;
2670
+ }
2671
+
2672
+ /**
2673
+ * Payment plan card — one selectable payment option (e.g. "Pay annually" vs
2674
+ * "Pay full cycle"): centered title/description, applied-benefit chips, an
2675
+ * old/new price pair, a tinted bullet box and a full-width action button.
2676
+ * `emphasized` renders the dark-border "best value" treatment with an optional
2677
+ * corner badge (e.g. "Save $65").
2678
+ */
2679
+ declare class PaymentPlanCardComponent {
2680
+ private sanitizer;
2681
+ title: _angular_core.InputSignal<string>;
2682
+ /** Short line under the title */
2683
+ description: _angular_core.InputSignal<string>;
2684
+ /** Corner badge text (e.g. "Save $65"); hidden when empty */
2685
+ badgeText: _angular_core.InputSignal<string>;
2686
+ /** Small check-prefixed chips above the price (e.g. "Cap Applied") */
2687
+ appliedChips: _angular_core.InputSignal<string[]>;
2688
+ /** Struck-through price, hidden when empty (e.g. "$780.00") */
2689
+ oldPriceText: _angular_core.InputSignal<string>;
2690
+ /** Highlighted price (e.g. "$585.00") */
2691
+ priceText: _angular_core.InputSignal<string>;
2692
+ /** Muted line under the price */
2693
+ subText: _angular_core.InputSignal<string>;
2694
+ /** Tinted box bullet lines — support <b> markup */
2695
+ bullets: _angular_core.InputSignal<string[]>;
2696
+ buttonLabel: _angular_core.InputSignal<string>;
2697
+ buttonVariant: _angular_core.InputSignal<"primary" | "ghost">;
2698
+ buttonDisabled: _angular_core.InputSignal<boolean>;
2699
+ /** Dark-border "best value" treatment */
2700
+ emphasized: _angular_core.InputSignal<boolean>;
2701
+ action: _angular_core.OutputEmitterRef<void>;
2702
+ readonly safeBullets: _angular_core.Signal<_angular_platform_browser.SafeHtml[]>;
2703
+ get cardClasses(): string;
2704
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PaymentPlanCardComponent, never>;
2705
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PaymentPlanCardComponent, "pecb-payment-plan-card", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "badgeText": { "alias": "badgeText"; "required": false; "isSignal": true; }; "appliedChips": { "alias": "appliedChips"; "required": false; "isSignal": true; }; "oldPriceText": { "alias": "oldPriceText"; "required": false; "isSignal": true; }; "priceText": { "alias": "priceText"; "required": false; "isSignal": true; }; "subText": { "alias": "subText"; "required": false; "isSignal": true; }; "bullets": { "alias": "bullets"; "required": false; "isSignal": true; }; "buttonLabel": { "alias": "buttonLabel"; "required": false; "isSignal": true; }; "buttonVariant": { "alias": "buttonVariant"; "required": false; "isSignal": true; }; "buttonDisabled": { "alias": "buttonDisabled"; "required": false; "isSignal": true; }; "emphasized": { "alias": "emphasized"; "required": false; "isSignal": true; }; }, { "action": "action"; }, never, never, true, never>;
2706
+ }
2707
+
2708
+ /** One line of the payment summary. */
2709
+ interface PaymentSummaryRow {
2710
+ label: string;
2711
+ valueText: string;
2712
+ /** 'success' tints the value green (e.g. a discount) */
2713
+ highlight?: 'success' | 'none';
2714
+ /** Bold/large emphasis (e.g. the final total) */
2715
+ emphasis?: boolean;
2716
+ }
2717
+ /**
2718
+ * Payment summary panel — totals rows, an optional savings note, projected
2719
+ * content (e.g. a tax breakdown) and a full-width pay button. Presentational;
2720
+ * make it sticky from the consumer when needed.
2721
+ */
2722
+ declare class PaymentSummaryComponent {
2723
+ heading: _angular_core.InputSignal<string>;
2724
+ rows: _angular_core.InputSignal<PaymentSummaryRow[]>;
2725
+ /** Muted line under the rows (e.g. "You save $65.00"); hidden when empty */
2726
+ saveNote: _angular_core.InputSignal<string>;
2727
+ buttonLabel: _angular_core.InputSignal<string>;
2728
+ buttonDisabled: _angular_core.InputSignal<boolean>;
2729
+ action: _angular_core.OutputEmitterRef<void>;
2730
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PaymentSummaryComponent, never>;
2731
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PaymentSummaryComponent, "pecb-payment-summary", never, { "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "saveNote": { "alias": "saveNote"; "required": false; "isSignal": true; }; "buttonLabel": { "alias": "buttonLabel"; "required": false; "isSignal": true; }; "buttonDisabled": { "alias": "buttonDisabled"; "required": false; "isSignal": true; }; }, { "action": "action"; }, never, ["*"], true, never>;
2732
+ }
2733
+
2734
+ /** One period checkbox of a schedule card. Fully controlled by the consumer. */
2735
+ interface PaymentScheduleCardPeriod {
2736
+ /** Echoed back on (periodToggle) */
2737
+ id: string | number;
2738
+ label: string;
2739
+ /** Controlled checked state */
2740
+ checked?: boolean;
2741
+ /** Already paid — checked and locked */
2742
+ paid?: boolean;
2743
+ /** Payment already initiated (open invoice) — locked and highlighted */
2744
+ pending?: boolean;
2745
+ disabled?: boolean;
2746
+ /** Tooltip (e.g. why this period is locked, or its invoice reference) */
2747
+ hint?: string;
2748
+ /** Small badge after the label (e.g. "Free") */
2749
+ badge?: string;
2750
+ }
2751
+ type PaymentScheduleCardTone = 'success' | 'warning' | 'error' | 'neutral';
2752
+ /** Meta column of the card header (e.g. Obtained in / Expires). */
2753
+ interface PaymentScheduleCardMeta {
2754
+ label: string;
2755
+ value: string;
2756
+ }
2757
+ /** Quick action rendered in the expanded body. */
2758
+ interface PaymentScheduleCardAction {
2759
+ id: string;
2760
+ label: string;
2761
+ variant?: 'primary' | 'ghost';
2762
+ disabled?: boolean;
2763
+ }
2764
+ /**
2765
+ * Payment schedule card — a collapsible per-item card (e.g. one credential)
2766
+ * with status-tinted border, meta columns, period checkboxes, quick actions
2767
+ * and a per-item total. Selection state is fully controlled by the consumer:
2768
+ * the card only reports (periodToggle) and never decides eligibility itself.
2769
+ */
2770
+ declare class PaymentScheduleCardComponent {
2771
+ title: _angular_core.InputSignal<string>;
2772
+ /** Small chip next to the title (e.g. "Cycle 1") */
2773
+ tagLabel: _angular_core.InputSignal<string>;
2774
+ /** Border/status tint */
2775
+ tone: _angular_core.InputSignal<PaymentScheduleCardTone>;
2776
+ /** Leading round status icon tinted by tone */
2777
+ showStatusIcon: _angular_core.InputSignal<boolean>;
2778
+ /** Status pill text (e.g. "Overdue"); hidden when empty */
2779
+ statusLabel: _angular_core.InputSignal<string>;
2780
+ meta: _angular_core.InputSignal<PaymentScheduleCardMeta[]>;
2781
+ periods: _angular_core.InputSignal<PaymentScheduleCardPeriod[]>;
2782
+ actions: _angular_core.InputSignal<PaymentScheduleCardAction[]>;
2783
+ /** Per-item amount shown in the expanded body (e.g. "$260.00"); hidden when empty */
2784
+ totalText: _angular_core.InputSignal<string>;
2785
+ /** Expanded body heading (e.g. "Payment Options"); hidden when empty */
2786
+ bodyTitle: _angular_core.InputSignal<string>;
2787
+ /** Small label above the amount (e.g. "Amount") */
2788
+ amountLabel: _angular_core.InputSignal<string>;
2789
+ /** Line above the period checkboxes (e.g. "Years (select) - $130/year") */
2790
+ periodsLabel: _angular_core.InputSignal<string>;
2791
+ /** Muted hint under the periods (e.g. "Select all 3 years to unlock a 10% discount") */
2792
+ bodyHint: _angular_core.InputSignal<string>;
2793
+ /** Suffix appended to paid period labels (e.g. " · Included") */
2794
+ paidSuffix: _angular_core.InputSignal<string>;
2795
+ /** Collapsible open state; supports [(expanded)] */
2796
+ expanded: _angular_core.ModelSignal<boolean>;
2797
+ collapsible: _angular_core.InputSignal<boolean>;
2798
+ periodToggle: _angular_core.OutputEmitterRef<{
2799
+ id: string | number;
2800
+ checked: boolean;
2801
+ }>;
2802
+ actionClick: _angular_core.OutputEmitterRef<string>;
2803
+ toggleExpanded(): void;
2804
+ onPeriodChange(period: PaymentScheduleCardPeriod, checked: boolean): void;
2805
+ isChecked(period: PaymentScheduleCardPeriod): boolean;
2806
+ isLocked(period: PaymentScheduleCardPeriod): boolean;
2807
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PaymentScheduleCardComponent, never>;
2808
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PaymentScheduleCardComponent, "pecb-payment-schedule-card", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "tagLabel": { "alias": "tagLabel"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "showStatusIcon": { "alias": "showStatusIcon"; "required": false; "isSignal": true; }; "statusLabel": { "alias": "statusLabel"; "required": false; "isSignal": true; }; "meta": { "alias": "meta"; "required": false; "isSignal": true; }; "periods": { "alias": "periods"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "totalText": { "alias": "totalText"; "required": false; "isSignal": true; }; "bodyTitle": { "alias": "bodyTitle"; "required": false; "isSignal": true; }; "amountLabel": { "alias": "amountLabel"; "required": false; "isSignal": true; }; "periodsLabel": { "alias": "periodsLabel"; "required": false; "isSignal": true; }; "bodyHint": { "alias": "bodyHint"; "required": false; "isSignal": true; }; "paidSuffix": { "alias": "paidSuffix"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; "periodToggle": "periodToggle"; "actionClick": "actionClick"; }, never, never, true, never>;
2809
+ }
2810
+
2811
+ /** One selectable payment period (e.g. a period). */
2812
+ interface PeriodPaymentModalPeriod {
2813
+ /** Echoed back on (selectionChange) */
2814
+ id: string | number;
2815
+ /** e.g. "2026" or "2028 (Renewal)" */
2816
+ label: string;
2817
+ /** Already paid — shown checked and locked */
2818
+ paid?: boolean;
2819
+ /** Payment already initiated (e.g. an open invoice) — locked and highlighted */
2820
+ pending?: boolean;
2821
+ /** Force-disabled regardless of the sequential rule */
2822
+ disabled?: boolean;
2823
+ /** Tooltip shown on the period (e.g. the pending invoice reference) */
2824
+ hint?: string;
2825
+ }
2826
+ /**
2827
+ * Period payment modal — centered dialog to pick sequential payment periods
2828
+ * (e.g. the years to pay for a credential): a period unlocks once the previous
2829
+ * one is paid or selected, with an optional discount note, a primary
2830
+ * "Pay $X now" button and an optional secondary "pay all" action.
2831
+ *
2832
+ * Presentational: amounts are computed by the consumer (backend) and passed in
2833
+ * via `payLabel`; every interaction surfaces through outputs. Rendered in a CDK
2834
+ * overlay like `pecb-confirmation` (same backdrop/escape/focus handling).
2835
+ */
2836
+ declare class PeriodPaymentModalComponent implements OnDestroy {
2837
+ private sanitizer;
2838
+ id: _angular_core.InputSignal<string>;
2839
+ /** Whether the dialog is visible. Supports [(isOpen)]. */
2840
+ isOpen: _angular_core.ModelSignal<boolean>;
2841
+ /** Dialog heading */
2842
+ title: _angular_core.InputSignal<string>;
2843
+ /** Intro line under the title — supports <b> markup */
2844
+ description: _angular_core.InputSignal<string>;
2845
+ /** Selectable periods, in payment order */
2846
+ periods: _angular_core.InputSignal<PeriodPaymentModalPeriod[]>;
2847
+ /** Shows a centered spinner instead of the periods while data loads */
2848
+ loading: _angular_core.InputSignal<boolean>;
2849
+ /**
2850
+ * Sequential selection: a period can only be picked when the previous one is
2851
+ * paid or selected; unselecting a period clears the later ones.
2852
+ */
2853
+ sequential: _angular_core.InputSignal<boolean>;
2854
+ /** Optional tinted note (e.g. the all-years discount) — supports <b> markup */
2855
+ note: _angular_core.InputSignal<string>;
2856
+ /** Primary button label, e.g. "Pay $130.00 now" */
2857
+ payLabel: _angular_core.InputSignal<string>;
2858
+ /** Disables the primary button (e.g. nothing selected) */
2859
+ payDisabled: _angular_core.InputSignal<boolean>;
2860
+ /** Shows a loading state on the primary button */
2861
+ payLoading: _angular_core.InputSignal<boolean>;
2862
+ /** Secondary full-width action label; hidden when empty */
2863
+ payAllLabel: _angular_core.InputSignal<string>;
2864
+ /** Tooltip shown on periods locked by the sequential rule (e.g. "Select periods in order") */
2865
+ lockedHint: _angular_core.InputSignal<string>;
2866
+ /** Accessible label for the close (×) button. Override to localize. */
2867
+ closeAriaLabel: _angular_core.InputSignal<string>;
2868
+ closeOnBackdropClick: _angular_core.InputSignal<boolean>;
2869
+ closeOnEscape: _angular_core.InputSignal<boolean>;
2870
+ /** Selected period ids (excluding already-paid periods), in list order */
2871
+ selectionChange: _angular_core.OutputEmitterRef<(string | number)[]>;
2872
+ /** Primary button clicked */
2873
+ pay: _angular_core.OutputEmitterRef<void>;
2874
+ /** Secondary button clicked */
2875
+ payAll: _angular_core.OutputEmitterRef<void>;
2876
+ closed: _angular_core.OutputEmitterRef<void>;
2877
+ private readonly overlay;
2878
+ private readonly viewContainerRef;
2879
+ private dialogTemplate;
2880
+ private overlayRef;
2881
+ private portal;
2882
+ private subscriptions;
2883
+ private previousActiveElement;
2884
+ readonly selected: _angular_core.WritableSignal<ReadonlySet<string | number>>;
2885
+ readonly safeDescription: _angular_core.Signal<_angular_platform_browser.SafeHtml | null>;
2886
+ readonly safeNote: _angular_core.Signal<_angular_platform_browser.SafeHtml | null>;
2887
+ constructor();
2888
+ ngOnDestroy(): void;
2889
+ get titleId(): string;
2890
+ isChecked(period: PeriodPaymentModalPeriod): boolean;
2891
+ isDisabled(period: PeriodPaymentModalPeriod, index: number): boolean;
2892
+ /** Tooltip for one period: its own hint, or the sequential-lock hint. */
2893
+ hintFor(period: PeriodPaymentModalPeriod, index: number): string | null;
2894
+ toggle(period: PeriodPaymentModalPeriod, index: number, checked: boolean): void;
2895
+ private emitSelection;
2896
+ onPay(): void;
2897
+ onPayAll(): void;
2898
+ close(): void;
2899
+ private openOverlay;
2900
+ private destroyOverlay;
2901
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PeriodPaymentModalComponent, never>;
2902
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PeriodPaymentModalComponent, "pecb-period-payment-modal", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "periods": { "alias": "periods"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "sequential": { "alias": "sequential"; "required": false; "isSignal": true; }; "note": { "alias": "note"; "required": false; "isSignal": true; }; "payLabel": { "alias": "payLabel"; "required": false; "isSignal": true; }; "payDisabled": { "alias": "payDisabled"; "required": false; "isSignal": true; }; "payLoading": { "alias": "payLoading"; "required": false; "isSignal": true; }; "payAllLabel": { "alias": "payAllLabel"; "required": false; "isSignal": true; }; "lockedHint": { "alias": "lockedHint"; "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"; "selectionChange": "selectionChange"; "pay": "pay"; "payAll": "payAll"; "closed": "closed"; }, never, never, true, never>;
2903
+ }
2904
+
2905
+ /**
2906
+ * Outlined form field — a bordered container with the label floating on the
2907
+ * border (fieldset/legend style). Project any control into it: native
2908
+ * input/select/textarea (they are styled borderless inside) or another
2909
+ * component such as `pecb-tag-select`.
2910
+ */
2911
+ declare class OutlinedFieldComponent {
2912
+ label: _angular_core.InputSignal<string>;
2913
+ /** Renders the error border/label colour */
2914
+ error: _angular_core.InputSignal<boolean>;
2915
+ /** Message under the field; shown only when error is true */
2916
+ errorMessage: _angular_core.InputSignal<string>;
2917
+ disabled: _angular_core.InputSignal<boolean>;
2918
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OutlinedFieldComponent, never>;
2919
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OutlinedFieldComponent, "pecb-outlined-field", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2920
+ }
2921
+
2922
+ interface TagSelectOption {
2923
+ label: string;
2924
+ value: unknown;
2925
+ disabled?: boolean;
2926
+ }
2927
+ /**
2928
+ * Tag select — a multi-select whose trigger shows the chosen options as
2929
+ * removable chips, with a searchable option menu underneath. Borderless by
2930
+ * design so it can sit inside `pecb-outlined-field`; give it a border via the
2931
+ * host page when used standalone. Implements ControlValueAccessor
2932
+ * (value: unknown[]).
2933
+ */
2934
+ declare class TagSelectComponent implements ControlValueAccessor {
2935
+ private host;
2936
+ options: _angular_core.InputSignal<TagSelectOption[]>;
2937
+ placeholder: _angular_core.InputSignal<string>;
2938
+ searchPlaceholder: _angular_core.InputSignal<string>;
2939
+ /** Empty-results text inside the menu */
2940
+ noResultsText: _angular_core.InputSignal<string>;
2941
+ removeAriaLabel: _angular_core.InputSignal<string>;
2942
+ selectionChange: _angular_core.OutputEmitterRef<unknown[]>;
2943
+ readonly open: _angular_core.WritableSignal<boolean>;
2944
+ readonly query: _angular_core.WritableSignal<string>;
2945
+ readonly selected: _angular_core.WritableSignal<unknown[]>;
2946
+ readonly disabled: _angular_core.WritableSignal<boolean>;
2947
+ private onChange;
2948
+ private onTouched;
2949
+ readonly selectedOptions: _angular_core.Signal<TagSelectOption[]>;
2950
+ readonly filteredOptions: _angular_core.Signal<TagSelectOption[]>;
2951
+ onDocumentClick(event: MouseEvent): void;
2952
+ onEscape(): void;
2953
+ toggleMenu(): void;
2954
+ isSelected(option: TagSelectOption): boolean;
2955
+ toggleOption(option: TagSelectOption): void;
2956
+ removeValue(value: unknown, event: Event): void;
2957
+ onSearch(event: Event): void;
2958
+ private commit;
2959
+ writeValue(value: unknown): void;
2960
+ registerOnChange(fn: (value: unknown[]) => void): void;
2961
+ registerOnTouched(fn: () => void): void;
2962
+ setDisabledState(isDisabled: boolean): void;
2963
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TagSelectComponent, never>;
2964
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagSelectComponent, "pecb-tag-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "noResultsText": { "alias": "noResultsText"; "required": false; "isSignal": true; }; "removeAriaLabel": { "alias": "removeAriaLabel"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, never, never, true, never>;
2965
+ }
2966
+
2967
+ /**
2968
+ * Form section card — a numbered, collapsible container for one repeatable
2969
+ * form section (e.g. "Activity 1 of 3"): number badge, title, subtitle,
2970
+ * optional remove button and a collapse chevron; the form itself is projected.
2971
+ */
2972
+ declare class FormSectionCardComponent {
2973
+ /** 1-based number shown in the badge */
2974
+ index: _angular_core.InputSignal<number>;
2975
+ title: _angular_core.InputSignal<string>;
2976
+ subtitle: _angular_core.InputSignal<string>;
2977
+ /** Shows the remove (trash) button */
2978
+ removable: _angular_core.InputSignal<boolean>;
2979
+ collapsible: _angular_core.InputSignal<boolean>;
2980
+ removeAriaLabel: _angular_core.InputSignal<string>;
2981
+ toggleAriaLabel: _angular_core.InputSignal<string>;
2982
+ /** Supports [(expanded)] */
2983
+ expanded: _angular_core.ModelSignal<boolean>;
2984
+ removed: _angular_core.OutputEmitterRef<void>;
2985
+ toggle(): void;
2986
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormSectionCardComponent, never>;
2987
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormSectionCardComponent, "pecb-form-section-card", never, { "index": { "alias": "index"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "removeAriaLabel": { "alias": "removeAriaLabel"; "required": false; "isSignal": true; }; "toggleAriaLabel": { "alias": "toggleAriaLabel"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; "removed": "removed"; }, never, ["*"], true, never>;
2988
+ }
2989
+
2501
2990
  interface FloatButtonAction {
2502
2991
  /** Unique identifier used for tracking and emitting click events */
2503
2992
  id: string;
@@ -4204,6 +4693,511 @@ declare class CoursePlayerComponent {
4204
4693
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CoursePlayerComponent, "pecb-course-player", never, { "modules": { "alias": "modules"; "required": false; "isSignal": true; }; "transcript": { "alias": "transcript"; "required": false; "isSignal": true; }; "activeLessonId": { "alias": "activeLessonId"; "required": false; "isSignal": true; }; "playing": { "alias": "playing"; "required": false; "isSignal": true; }; "currentTime": { "alias": "currentTime"; "required": false; "isSignal": true; }; "panelTab": { "alias": "panelTab"; "required": false; "isSignal": true; }; "poster": { "alias": "poster"; "required": false; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; "tracks": { "alias": "tracks"; "required": false; "isSignal": true; }; "stageLabel": { "alias": "stageLabel"; "required": false; "isSignal": true; }; "watermark": { "alias": "watermark"; "required": false; "isSignal": true; }; "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; "preload": { "alias": "preload"; "required": false; "isSignal": true; }; "crossOrigin": { "alias": "crossOrigin"; "required": false; "isSignal": true; }; "seekStep": { "alias": "seekStep"; "required": false; "isSignal": true; }; "videoLabels": { "alias": "videoLabels"; "required": false; "isSignal": true; }; "autoPlayOnSelect": { "alias": "autoPlayOnSelect"; "required": false; "isSignal": true; }; "showLessonTitle": { "alias": "showLessonTitle"; "required": false; "isSignal": true; }; "panelPosition": { "alias": "panelPosition"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "accent": { "alias": "accent"; "required": false; "isSignal": true; }; "showTabs": { "alias": "showTabs"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "showProgress": { "alias": "showProgress"; "required": false; "isSignal": true; }; "soloSingleLessonModules": { "alias": "soloSingleLessonModules"; "required": false; "isSignal": true; }; "panelLabels": { "alias": "panelLabels"; "required": false; "isSignal": true; }; }, { "activeLessonId": "activeLessonIdChange"; "playing": "playingChange"; "currentTime": "currentTimeChange"; "panelTab": "panelTabChange"; "lessonSelect": "lessonSelect"; "lessonEnded": "lessonEnded"; "timeUpdate": "timeUpdate"; "certificateClick": "certificateClick"; "playerError": "playerError"; }, never, never, true, never>;
4205
4694
  }
4206
4695
 
4696
+ /** One entry of the day switcher (mock `.sl-day` pills). */
4697
+ interface SlideViewerDay {
4698
+ /** Stable identifier handed back by `dayChange` / `activeDayId`. */
4699
+ id: string | number;
4700
+ /** Pill text, e.g. `Day 1`. */
4701
+ label: string;
4702
+ /** Free-form data for a custom day template. */
4703
+ meta?: Record<string, unknown>;
4704
+ }
4705
+ /**
4706
+ * One slide. The viewer only needs an image per slide — how the image is produced
4707
+ * (rendered from a PDF, exported from PowerPoint, served by a CDN) is up to the
4708
+ * consumer, which keeps the element free of any PDF dependency.
4709
+ */
4710
+ interface SlideViewerSlide {
4711
+ /** Identifier, echoed in events and used for selection. Defaults to the 1-based index. */
4712
+ id?: string | number;
4713
+ /**
4714
+ * Large image shown on the stage. When missing the stage shows `thumbnail` and emits
4715
+ * `fullImageRequest` so the host can render it lazily.
4716
+ */
4717
+ image?: string;
4718
+ /**
4719
+ * Small image shown in the sidebar. Falls back to `image`. While missing (a deck that
4720
+ * publishes every page first and renders thumbnails later) the tile shows a shimmer.
4721
+ */
4722
+ thumbnail?: string;
4723
+ /** Accessible / searchable title. Defaults to `{slide} {n}` from the labels. */
4724
+ title?: string;
4725
+ /** Extracted text used by the keyword search (not rendered). */
4726
+ text?: string;
4727
+ /** Skipped by navigation while `skipHidden` is on; still listed in the sidebar (dimmed). */
4728
+ hidden?: boolean;
4729
+ /** Free-form data the consumer wants to carry along (templates receive it). */
4730
+ meta?: Record<string, unknown>;
4731
+ }
4732
+ /** Built-in tool buttons of the top bar, in the order they render. */
4733
+ type SlideViewerTool = 'notes' | 'feedback' | 'courseFiles' | 'downloadSlides';
4734
+ /** Where the thumbnail sidebar sits. */
4735
+ type SlideViewerSidebarPosition = 'end' | 'start' | 'none';
4736
+ /** Keyboard actions the viewer handles on its region. */
4737
+ type SlideViewerKeyAction = 'next' | 'previous' | 'first' | 'last' | 'fullscreen' | 'search' | 'zoomIn' | 'zoomOut' | 'zoomReset';
4738
+ /** Keys per action. Override any subset via the `keyMap` input; an empty array disables the action. */
4739
+ type SlideViewerKeyMap = Record<SlideViewerKeyAction, readonly string[]>;
4740
+ declare const DEFAULT_SLIDE_VIEWER_KEY_MAP: SlideViewerKeyMap;
4741
+ /** Payload of the `tool` output. */
4742
+ interface SlideViewerToolEvent {
4743
+ tool: SlideViewerTool;
4744
+ /** Slide shown when the tool was pressed (1-based). */
4745
+ page: number;
4746
+ }
4747
+ /** Payload of `slideChange`. */
4748
+ interface SlideViewerPageEvent {
4749
+ /** 1-based slide number. */
4750
+ page: number;
4751
+ total: number;
4752
+ slide: SlideViewerSlide | null;
4753
+ /** What triggered the change. */
4754
+ source: 'nav' | 'input' | 'thumbnail' | 'keyboard' | 'wheel' | 'day' | 'api';
4755
+ }
4756
+ /** Payload of `searchChange`. */
4757
+ interface SlideViewerSearchEvent {
4758
+ term: string;
4759
+ /** 1-based slide numbers that match (all slides when the term is empty). */
4760
+ matches: number[];
4761
+ }
4762
+ /** Payload of `slideMove` (drag & drop reorder in the sidebar). */
4763
+ interface SlideViewerMoveEvent {
4764
+ /** 1-based position the slide was dragged from. */
4765
+ from: number;
4766
+ /** 1-based position it was dropped at. */
4767
+ to: number;
4768
+ slide: SlideViewerSlide;
4769
+ }
4770
+ /** Context handed to a `pecbSlideViewerThumbnail` template. */
4771
+ interface SlideViewerThumbnailContext {
4772
+ $implicit: SlideViewerSlide;
4773
+ /** 1-based slide number. */
4774
+ index: number;
4775
+ active: boolean;
4776
+ selected: boolean;
4777
+ }
4778
+ /** Context handed to a `pecbSlideViewerDay` template. */
4779
+ interface SlideViewerDayContext {
4780
+ $implicit: SlideViewerDay;
4781
+ active: boolean;
4782
+ }
4783
+ /**
4784
+ * All user-visible strings. Override any subset via the `labels` input to
4785
+ * translate the viewer. `{n}` / `{total}` are substituted where noted.
4786
+ */
4787
+ interface SlideViewerLabels {
4788
+ /** Region name for assistive tech. */
4789
+ viewer: string;
4790
+ /** Default slide title — `{n}` is the slide number. */
4791
+ slide: string;
4792
+ /** Separator text before the total, e.g. `/`. */
4793
+ of: string;
4794
+ /** Aria-label of the slide-number input. */
4795
+ slideNumber: string;
4796
+ first: string;
4797
+ previous: string;
4798
+ next: string;
4799
+ last: string;
4800
+ enterFullscreen: string;
4801
+ exitFullscreen: string;
4802
+ zoomIn: string;
4803
+ zoomOut: string;
4804
+ zoomReset: string;
4805
+ /** Note panel header. */
4806
+ note: string;
4807
+ days: string;
4808
+ thumbnails: string;
4809
+ searchPlaceholder: string;
4810
+ /** Shown while a keyword filters the list — `{n}` matches, `{total}` slides. */
4811
+ searchResults: string;
4812
+ noResults: string;
4813
+ loading: string;
4814
+ /** Aria-label of a tile checkbox in selection mode — `{n}` is the slide number. */
4815
+ selectSlide: string;
4816
+ /** Aria description of a draggable tile. */
4817
+ dragHint: string;
4818
+ /** Badge on a hidden slide's tile. */
4819
+ hidden: string;
4820
+ /** Stage message when there are no slides (and nothing is loading). */
4821
+ emptyTitle: string;
4822
+ emptyHint: string;
4823
+ /** Stage message while `error` is set. */
4824
+ errorTitle: string;
4825
+ errorHint: string;
4826
+ /** Retry button in the error state. */
4827
+ retry: string;
4828
+ /** Screen-reader announcement on slide change — `{n}` current, `{total}` count. */
4829
+ slideAnnouncement: string;
4830
+ /** Shown on the shimmering stage while `loadingProgress` is known — `{percent}` 0–100. */
4831
+ loadingProgress: string;
4832
+ notes: string;
4833
+ feedback: string;
4834
+ courseFiles: string;
4835
+ downloadSlides: string;
4836
+ /** Tooltip of the disabled download button. */
4837
+ downloadUnavailable: string;
4838
+ }
4839
+ declare const DEFAULT_SLIDE_VIEWER_LABELS: SlideViewerLabels;
4840
+ /** Default set and order of the top-bar tools. */
4841
+ declare const DEFAULT_SLIDE_VIEWER_TOOLS: readonly SlideViewerTool[];
4842
+ /** Zoom steps offered by the stage (1 = fit). */
4843
+ declare const DEFAULT_SLIDE_VIEWER_ZOOM_STEPS: readonly number[];
4844
+ /** Clamp a 1-based page into `[1, total]` (`1` when there are no slides). */
4845
+ declare function clampSlidePage(page: number, total: number): number;
4846
+ /**
4847
+ * Custom content rendered over each sidebar tile (badges, checkmarks, a drag handle…).
4848
+ * ```html
4849
+ * <ng-template pecbSlideViewerThumbnail let-slide let-n="index">
4850
+ * @if (slide.meta?.hasNotes) { <span class="badge">Notes</span> }
4851
+ * </ng-template>
4852
+ * ```
4853
+ */
4854
+ declare class SlideViewerThumbnailDirective {
4855
+ readonly templateRef: TemplateRef<any>;
4856
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlideViewerThumbnailDirective, never>;
4857
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SlideViewerThumbnailDirective, "ng-template[pecbSlideViewerThumbnail]", never, {}, {}, never, never, true, never>;
4858
+ }
4859
+ /**
4860
+ * Custom content of each day pill (status dot, counter…). The pill itself stays.
4861
+ * ```html
4862
+ * <ng-template pecbSlideViewerDay let-day let-active="active">{{ day.label }} · {{ day.meta?.count }}</ng-template>
4863
+ * ```
4864
+ */
4865
+ declare class SlideViewerDayDirective {
4866
+ readonly templateRef: TemplateRef<any>;
4867
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlideViewerDayDirective, never>;
4868
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SlideViewerDayDirective, "ng-template[pecbSlideViewerDay]", never, {}, {}, never, never, true, never>;
4869
+ }
4870
+ /**
4871
+ * PECB course slide viewer.
4872
+ *
4873
+ * Reproduces the "Open course" slide view of the PECB Profile redesign: a top
4874
+ * bar with day pills and tool buttons, a 16:10 stage, a navigation bar
4875
+ * (first / previous / next / last, slide-number input, projected version
4876
+ * select, zoom, fullscreen), a collapsible per-slide note and a sticky sidebar
4877
+ * with keyword search and thumbnails.
4878
+ *
4879
+ * The element is purely presentational: it receives days, slide images and a
4880
+ * note, keeps the current page / search / zoom / fullscreen / selection state
4881
+ * and emits every intent (`dayChange`, `slideChange`, `tool`, `slideMove`, …)
4882
+ * so the host app owns data, dialogs and persistence. No PDF library is
4883
+ * involved — feed it images; leave `image` out and answer `fullImageRequest`
4884
+ * to render large images lazily.
4885
+ *
4886
+ * Empty / broken decks: with no slides and nothing loading the stage shows `emptyTitle`
4887
+ * / `emptyHint`; with `error` set it shows `errorTitle` / `errorHint` and a retry button
4888
+ * (`retry` output). Both messages can be replaced through the `pecbSlideViewerEmpty` slot.
4889
+ *
4890
+ * Slots: `pecbSlideViewerToolsStart` / `pecbSlideViewerTools` (tool bar),
4891
+ * `pecbSlideViewerVersion` (navigation bar, right), `pecbSlideViewerStage`
4892
+ * (overlay on the stage), `pecbSlideViewerNote` (inside the note panel),
4893
+ * `pecbSlideViewerBelow` (under the stage column), `pecbSlideViewerSidebarHeader`
4894
+ * / `pecbSlideViewerSidebarFooter` (sidebar). Templates: `pecbSlideViewerThumbnail`,
4895
+ * `pecbSlideViewerDay`.
4896
+ *
4897
+ * @example
4898
+ * ```html
4899
+ * <pecb-slide-viewer
4900
+ * [days]="days" [(activeDayId)]="dayId" (dayChange)="loadDay($event)"
4901
+ * [slides]="slides" [(page)]="page" [note]="noteHtml"
4902
+ * (fullImageRequest)="renderFull($event)"
4903
+ * (tool)="onTool($event)" (slideChange)="track($event)">
4904
+ * <pecb-dropdown pecbSlideViewerVersion [options]="versions" [(ngModel)]="version" />
4905
+ * </pecb-slide-viewer>
4906
+ * ```
4907
+ *
4908
+ * Theming — override the CSS custom properties on the host:
4909
+ * ```css
4910
+ * pecb-slide-viewer { --pecb-slide-sidebar-width: 300px; --pecb-slide-active: #a11e29; }
4911
+ * ```
4912
+ */
4913
+ declare class SlideViewerComponent {
4914
+ private readonly platformId;
4915
+ private readonly zone;
4916
+ private readonly destroyRef;
4917
+ private readonly isBrowser;
4918
+ /** Unique id used to wire ARIA relationships inside the template. */
4919
+ readonly uid: string;
4920
+ private readonly rootRef;
4921
+ private readonly stageRef;
4922
+ private readonly thumbsRef;
4923
+ private readonly searchRef;
4924
+ readonly thumbnailTemplate: _angular_core.Signal<SlideViewerThumbnailDirective | undefined>;
4925
+ readonly dayTemplate: _angular_core.Signal<SlideViewerDayDirective | undefined>;
4926
+ /** Day pills. The switcher is hidden when empty. */
4927
+ days: _angular_core.InputSignal<SlideViewerDay[]>;
4928
+ /** Slides of the active day, in order. */
4929
+ slides: _angular_core.InputSignal<SlideViewerSlide[]>;
4930
+ /**
4931
+ * Note for the current slide — an HTML string (sanitized by Angular) or a `SafeHtml`
4932
+ * the host already trusts. The panel is hidden when empty unless `showNote` is set
4933
+ * (e.g. when the note body is projected through `pecbSlideViewerNote`).
4934
+ */
4935
+ note: _angular_core.InputSignal<string | SafeHtml | null | undefined>;
4936
+ /** Force the note panel on/off; `undefined` shows it whenever `note` has content. */
4937
+ showNote: _angular_core.InputSignal<boolean | undefined>;
4938
+ /** Slides are being prepared: the stage shows a veil and the list its skeletons. */
4939
+ loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
4940
+ /** Download / preparation progress, 0–100, shown on the stage while loading. `null` hides it. */
4941
+ loadingProgress: _angular_core.InputSignal<number | null>;
4942
+ /**
4943
+ * The slides could not be produced (missing / broken file): the stage shows the error
4944
+ * message and a retry button (`retry` output) instead of the slides.
4945
+ */
4946
+ error: _angular_core.InputSignalWithTransform<boolean, unknown>;
4947
+ /** Which built-in tool buttons render, in this order. */
4948
+ tools: _angular_core.InputSignal<readonly SlideViewerTool[]>;
4949
+ /** Enables the "Download Slides" tool. When false it renders disabled with a tooltip. @default true */
4950
+ canDownloadSlides: _angular_core.InputSignalWithTransform<boolean, unknown>;
4951
+ /** CSS `aspect-ratio` of the stage. @default '16 / 10' */
4952
+ stageAspectRatio: _angular_core.InputSignal<string>;
4953
+ /** Where the thumbnail sidebar sits. @default 'end' */
4954
+ sidebarPosition: _angular_core.InputSignal<SlideViewerSidebarPosition>;
4955
+ /** Show the thumbnail sidebar (shorthand for `sidebarPosition="none"`). @default true */
4956
+ showThumbnails: _angular_core.InputSignalWithTransform<boolean, unknown>;
4957
+ /** Show the keyword search above the thumbnails. @default true */
4958
+ showSearch: _angular_core.InputSignalWithTransform<boolean, unknown>;
4959
+ /** Show the slide-number input. @default true */
4960
+ showSlideInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
4961
+ /** Show the fullscreen button. @default true */
4962
+ showFullscreen: _angular_core.InputSignalWithTransform<boolean, unknown>;
4963
+ /** Show the zoom buttons and allow zooming the stage. @default false */
4964
+ zoomable: _angular_core.InputSignalWithTransform<boolean, unknown>;
4965
+ /** Zoom levels cycled by the zoom buttons / keys (1 = fit). */
4966
+ zoomSteps: _angular_core.InputSignal<readonly number[]>;
4967
+ /** Navigation skips slides flagged `hidden`. @default false */
4968
+ skipHidden: _angular_core.InputSignalWithTransform<boolean, unknown>;
4969
+ /** Tiles get a checkbox and `selectedIds` tracks the selection. @default false */
4970
+ selectable: _angular_core.InputSignalWithTransform<boolean, unknown>;
4971
+ /** Tiles can be dragged to a new position; the host receives `slideMove`. @default false */
4972
+ reorderable: _angular_core.InputSignalWithTransform<boolean, unknown>;
4973
+ /**
4974
+ * Above this many slides the sidebar is virtualised: only the tiles in view (plus
4975
+ * `overscan` on each side) exist in the DOM, a spacer keeps the scroll height. Built
4976
+ * for decks of several hundred slides. @default 40
4977
+ */
4978
+ virtualizeAbove: _angular_core.InputSignalWithTransform<number, unknown>;
4979
+ /** Tiles rendered beyond the visible window on each side. @default 6 */
4980
+ overscan: _angular_core.InputSignalWithTransform<number, unknown>;
4981
+ /**
4982
+ * How many neighbours on each side of the current slide are requested
4983
+ * (`fullImageRequest`) and decoded ahead so arrows feel instant. @default 1
4984
+ */
4985
+ prefetch: _angular_core.InputSignalWithTransform<number, unknown>;
4986
+ /** Horizontal swipe on the stage moves slides (touch / pen). @default true */
4987
+ swipe: _angular_core.InputSignalWithTransform<boolean, unknown>;
4988
+ /** Handle keyboard shortcuts on the region. @default true */
4989
+ keyboard: _angular_core.InputSignalWithTransform<boolean, unknown>;
4990
+ /** Partial override of the keyboard shortcuts (see `DEFAULT_SLIDE_VIEWER_KEY_MAP`). */
4991
+ keyMap: _angular_core.InputSignal<Partial<SlideViewerKeyMap>>;
4992
+ /** Milliseconds the keyword search waits after typing. @default 250 */
4993
+ searchDebounce: _angular_core.InputSignalWithTransform<number, unknown>;
4994
+ /** Partial override of the user-visible strings (i18n). */
4995
+ labels: _angular_core.InputSignal<Partial<SlideViewerLabels>>;
4996
+ /** Selected day. `null` selects nothing. */
4997
+ activeDayId: _angular_core.ModelSignal<string | number | null>;
4998
+ /** Current slide, 1-based. Clamped to the slide count. */
4999
+ page: _angular_core.ModelSignal<number>;
5000
+ /** Keyword filtering the thumbnails. */
5001
+ searchTerm: _angular_core.ModelSignal<string>;
5002
+ /** Whether the note panel is expanded. */
5003
+ noteOpen: _angular_core.ModelSignal<boolean>;
5004
+ /** Stage zoom factor (1 = fit). Only applied while `zoomable`. */
5005
+ zoom: _angular_core.ModelSignal<number>;
5006
+ /** Ids of the selected slides (selection mode). */
5007
+ selectedIds: _angular_core.ModelSignal<(string | number)[]>;
5008
+ /** A day pill was chosen. */
5009
+ dayChange: _angular_core.OutputEmitterRef<SlideViewerDay>;
5010
+ /** The current slide changed (any source), with the slide and what moved it. */
5011
+ slideChange: _angular_core.OutputEmitterRef<SlideViewerPageEvent>;
5012
+ /** A tool button was pressed. */
5013
+ tool: _angular_core.OutputEmitterRef<SlideViewerToolEvent>;
5014
+ /** The stage entered / left fullscreen. */
5015
+ fullscreenChange: _angular_core.OutputEmitterRef<boolean>;
5016
+ /** The keyword or its matches changed. */
5017
+ searchChange: _angular_core.OutputEmitterRef<SlideViewerSearchEvent>;
5018
+ /** The stage needs the full image of a page that only has a thumbnail (1-based). Emitted once per page. */
5019
+ fullImageRequest: _angular_core.OutputEmitterRef<number>;
5020
+ /** A tile was dropped at a new position (reorder mode). The host reorders `slides`. */
5021
+ slideMove: _angular_core.OutputEmitterRef<SlideViewerMoveEvent>;
5022
+ /** "Try again" pressed in the error state. */
5023
+ retry: _angular_core.OutputEmitterRef<void>;
5024
+ readonly isFullscreen: _angular_core.WritableSignal<boolean>;
5025
+ /** Stage image for the current page has finished loading. */
5026
+ readonly stageImageLoaded: _angular_core.WritableSignal<boolean>;
5027
+ /**
5028
+ * Source currently painted on the stage. It lags behind `stageSrc` while the next
5029
+ * image is decoded off screen, so a page change or a thumbnail→full-image upgrade
5030
+ * never blanks the stage (no blink, no spinner over a picture that is already there).
5031
+ */
5032
+ readonly displayedSrc: _angular_core.WritableSignal<string | null>;
5033
+ /** A newer image than the displayed one is being decoded. */
5034
+ readonly stageBusy: _angular_core.WritableSignal<boolean>;
5035
+ /** Text in the number input while the user edits it (null = mirror `page`). */
5036
+ readonly pageDraft: _angular_core.WritableSignal<string | null>;
5037
+ /** Virtualised sidebar: index range (into `matches`) of the tiles in the DOM. */
5038
+ readonly windowRange: _angular_core.WritableSignal<{
5039
+ start: number;
5040
+ end: number;
5041
+ }>;
5042
+ /** Measured height of one tile incl. its gap, in px (a sensible guess until measured). */
5043
+ readonly tileStride: _angular_core.WritableSignal<number>;
5044
+ /** Announced to assistive tech on slide change. */
5045
+ readonly announcement: _angular_core.WritableSignal<string>;
5046
+ /** Tile currently dragged (1-based) and the drop target it hovers. */
5047
+ readonly dragFrom: _angular_core.WritableSignal<number | null>;
5048
+ readonly dragOver: _angular_core.WritableSignal<number | null>;
5049
+ private searchTimer;
5050
+ private lastEmittedPage;
5051
+ private lastStageSrc;
5052
+ private stageLoadToken;
5053
+ private requestedFullImages;
5054
+ private lastSlidesRef;
5055
+ private pendingSource;
5056
+ /** Decoded neighbour images kept warm (bounded so 700-slide decks don't pile up). */
5057
+ private readonly decodeCache;
5058
+ private scrollListener;
5059
+ private resizeObserver;
5060
+ private scrollRaf;
5061
+ private swipeStart;
5062
+ readonly text: _angular_core.Signal<SlideViewerLabels>;
5063
+ readonly keys: _angular_core.Signal<SlideViewerKeyMap>;
5064
+ readonly total: _angular_core.Signal<number>;
5065
+ /** `page` clamped into the current slide range. */
5066
+ readonly currentPage: _angular_core.Signal<number>;
5067
+ readonly currentSlide: _angular_core.Signal<SlideViewerSlide | null>;
5068
+ /** Stage image: full image, else the thumbnail while the full one is being produced. */
5069
+ readonly stageSrc: _angular_core.Signal<string | null>;
5070
+ /** The stage is showing a thumbnail in place of a missing full image. */
5071
+ readonly stageIsFallback: _angular_core.Signal<boolean>;
5072
+ readonly progressText: _angular_core.Signal<string>;
5073
+ /** Spinner veil: only while nothing is painted yet (first image) or the deck loads. */
5074
+ readonly stageVeil: _angular_core.Signal<boolean>;
5075
+ /** Skeleton shimmer on the stage: something is coming and nothing is painted yet. */
5076
+ readonly stageSkeleton: _angular_core.Signal<boolean>;
5077
+ /** Nothing to show and nothing on the way: the stage explains it. */
5078
+ readonly isEmpty: _angular_core.Signal<boolean>;
5079
+ readonly isFirst: _angular_core.Signal<boolean>;
5080
+ readonly isLast: _angular_core.Signal<boolean>;
5081
+ readonly navDisabled: _angular_core.Signal<boolean>;
5082
+ readonly pageInputValue: _angular_core.Signal<string>;
5083
+ /** The word before the number input ("Slide"), derived from the `slide` label. */
5084
+ readonly slideWord: _angular_core.Signal<string>;
5085
+ readonly hasNote: _angular_core.Signal<boolean>;
5086
+ readonly showDays: _angular_core.Signal<boolean>;
5087
+ readonly sidebar: _angular_core.Signal<SlideViewerSidebarPosition>;
5088
+ readonly showDownloadTool: _angular_core.Signal<boolean>;
5089
+ readonly zoomLevel: _angular_core.Signal<number>;
5090
+ readonly isZoomed: _angular_core.Signal<boolean>;
5091
+ readonly zoomPercent: _angular_core.Signal<number>;
5092
+ /** Virtualisation only kicks in for long decks. */
5093
+ readonly windowed: _angular_core.Signal<boolean>;
5094
+ /** Tiles to render: everything, or the current window of `matches` when virtualised. */
5095
+ readonly visibleTiles: _angular_core.Signal<number[]>;
5096
+ /** Spacer heights (px) above / below the rendered window. */
5097
+ readonly spacerTop: _angular_core.Signal<number>;
5098
+ readonly spacerBottom: _angular_core.Signal<number>;
5099
+ readonly selectedSet: _angular_core.Signal<Set<string | number>>;
5100
+ /** 1-based numbers of the slides matching the keyword (all when empty). */
5101
+ readonly matches: _angular_core.Signal<number[]>;
5102
+ readonly matchSet: _angular_core.Signal<Set<number>>;
5103
+ readonly isSearching: _angular_core.Signal<boolean>;
5104
+ readonly searchSummary: _angular_core.Signal<string>;
5105
+ /** Skeleton rows drawn in the sidebar while loading. */
5106
+ readonly skeletonRows: number[];
5107
+ readonly hostClasses: _angular_core.Signal<string>;
5108
+ constructor();
5109
+ /** Go to a 1-based slide (clamped). Hidden slides are stepped over while `skipHidden`. */
5110
+ goTo(page: number, source?: SlideViewerPageEvent['source']): void;
5111
+ first(source?: SlideViewerPageEvent['source']): void;
5112
+ previous(source?: SlideViewerPageEvent['source']): void;
5113
+ next(source?: SlideViewerPageEvent['source']): void;
5114
+ last(source?: SlideViewerPageEvent['source']): void;
5115
+ /** Select a day: emits `dayChange`, resets the page and clears the search. */
5116
+ selectDay(day: SlideViewerDay): void;
5117
+ /** Press a built-in tool. The disabled download tool is ignored. */
5118
+ pressTool(tool: SlideViewerTool): void;
5119
+ toggleNote(): void;
5120
+ /** "Try again" in the error state. */
5121
+ requestRetry(): void;
5122
+ /** Enter / exit fullscreen on the stage. */
5123
+ toggleFullscreen(): Promise<void>;
5124
+ /** Next zoom step (wraps back to fit after the last one). */
5125
+ zoomIn(): void;
5126
+ zoomOut(): void;
5127
+ zoomReset(): void;
5128
+ /** Clear the keyword filter. */
5129
+ clearSearch(): void;
5130
+ /** Move keyboard focus to the search field. */
5131
+ focusSearch(): void;
5132
+ /** Toggle a slide in the selection (selection mode). */
5133
+ toggleSelected(slide: SlideViewerSlide, n: number): void;
5134
+ /** Select every (matching) slide, or clear the selection. */
5135
+ selectAll(selected?: boolean): void;
5136
+ onStageImageLoad(): void;
5137
+ onStageImageError(): void;
5138
+ onPageInput(event: Event): void;
5139
+ onPageCommit(event: Event): void;
5140
+ onPageInputKeydown(event: KeyboardEvent): void;
5141
+ onSearchInput(event: Event): void;
5142
+ onSearchKeydown(event: KeyboardEvent): void;
5143
+ onThumbnailClick(page: number): void;
5144
+ onTileCheckbox(event: Event, slide: SlideViewerSlide, n: number): void;
5145
+ /** Touch / pen swipe on the stage (not while zoomed: then the finger pans). */
5146
+ onStagePointerDown(event: PointerEvent): void;
5147
+ onStagePointerUp(event: PointerEvent): void;
5148
+ onStagePointerCancel(): void;
5149
+ /** Mouse wheel over the stage: zooms with Ctrl/⌘ while zoomable, navigates in fullscreen. */
5150
+ onStageWheel(event: WheelEvent): void;
5151
+ /** Keyboard shortcuts on the viewer region (see `keyMap`). */
5152
+ onRootKeydown(event: KeyboardEvent): void;
5153
+ onDocumentFullscreenChange(): void;
5154
+ onTileDragStart(event: DragEvent, n: number): void;
5155
+ onTileDragOver(event: DragEvent, n: number): void;
5156
+ onTileDrop(event: DragEvent, n: number): void;
5157
+ onTileDragEnd(): void;
5158
+ /** Accessible title of a slide (`title`, else `{slide} {n}`). */
5159
+ slideTitle(slide: SlideViewerSlide | null, n: number): string;
5160
+ slideId(slide: SlideViewerSlide, n: number): string | number;
5161
+ thumbnailSrc(slide: SlideViewerSlide): string | null;
5162
+ /** A tile whose thumbnail is still being produced (big decks publish pages first). */
5163
+ tilePending(slide: SlideViewerSlide): boolean;
5164
+ isSelected(slide: SlideViewerSlide, n: number): boolean;
5165
+ selectLabel(n: number): string;
5166
+ thumbnailContext(slide: SlideViewerSlide, n: number): SlideViewerThumbnailContext;
5167
+ dayContext(day: SlideViewerDay): SlideViewerDayContext;
5168
+ private isHidden;
5169
+ private nextVisible;
5170
+ private previousVisible;
5171
+ private actionForKey;
5172
+ private slideMatches;
5173
+ private format;
5174
+ /**
5175
+ * Show the current page in the number field again. Written to the DOM directly:
5176
+ * a number input sanitises junk to `''`, and the `[value]` binding would not
5177
+ * re-apply an unchanged `'20'` on top of it.
5178
+ */
5179
+ private resetPageInput;
5180
+ private scrollActiveThumbnailIntoView;
5181
+ private attachSidebarListeners;
5182
+ private detachSidebarListeners;
5183
+ /** Coalesce scroll / resize / data changes into one window computation per frame. */
5184
+ private scheduleWindowUpdate;
5185
+ private updateWindow;
5186
+ /** Tile height incl. the list gap, measured from the first rendered tile. */
5187
+ private measureTile;
5188
+ /** Decode an image off screen so a later swap paints instantly. Bounded to 8 entries. */
5189
+ private warmDecode;
5190
+ /**
5191
+ * Paint `src` on the stage once it is decoded. While decoding, the previous image
5192
+ * stays on screen (`stageBusy` marks the transition); the first image, with nothing
5193
+ * to keep, shows the veil instead.
5194
+ */
5195
+ private showStageSource;
5196
+ private clearSearchTimer;
5197
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlideViewerComponent, never>;
5198
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlideViewerComponent, "pecb-slide-viewer", never, { "days": { "alias": "days"; "required": false; "isSignal": true; }; "slides": { "alias": "slides"; "required": false; "isSignal": true; }; "note": { "alias": "note"; "required": false; "isSignal": true; }; "showNote": { "alias": "showNote"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingProgress": { "alias": "loadingProgress"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "tools": { "alias": "tools"; "required": false; "isSignal": true; }; "canDownloadSlides": { "alias": "canDownloadSlides"; "required": false; "isSignal": true; }; "stageAspectRatio": { "alias": "stageAspectRatio"; "required": false; "isSignal": true; }; "sidebarPosition": { "alias": "sidebarPosition"; "required": false; "isSignal": true; }; "showThumbnails": { "alias": "showThumbnails"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "showSlideInput": { "alias": "showSlideInput"; "required": false; "isSignal": true; }; "showFullscreen": { "alias": "showFullscreen"; "required": false; "isSignal": true; }; "zoomable": { "alias": "zoomable"; "required": false; "isSignal": true; }; "zoomSteps": { "alias": "zoomSteps"; "required": false; "isSignal": true; }; "skipHidden": { "alias": "skipHidden"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "reorderable": { "alias": "reorderable"; "required": false; "isSignal": true; }; "virtualizeAbove": { "alias": "virtualizeAbove"; "required": false; "isSignal": true; }; "overscan": { "alias": "overscan"; "required": false; "isSignal": true; }; "prefetch": { "alias": "prefetch"; "required": false; "isSignal": true; }; "swipe": { "alias": "swipe"; "required": false; "isSignal": true; }; "keyboard": { "alias": "keyboard"; "required": false; "isSignal": true; }; "keyMap": { "alias": "keyMap"; "required": false; "isSignal": true; }; "searchDebounce": { "alias": "searchDebounce"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "activeDayId": { "alias": "activeDayId"; "required": false; "isSignal": true; }; "page": { "alias": "page"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "noteOpen": { "alias": "noteOpen"; "required": false; "isSignal": true; }; "zoom": { "alias": "zoom"; "required": false; "isSignal": true; }; "selectedIds": { "alias": "selectedIds"; "required": false; "isSignal": true; }; }, { "activeDayId": "activeDayIdChange"; "page": "pageChange"; "searchTerm": "searchTermChange"; "noteOpen": "noteOpenChange"; "zoom": "zoomChange"; "selectedIds": "selectedIdsChange"; "dayChange": "dayChange"; "slideChange": "slideChange"; "tool": "tool"; "fullscreenChange": "fullscreenChange"; "searchChange": "searchChange"; "fullImageRequest": "fullImageRequest"; "slideMove": "slideMove"; "retry": "retry"; }, ["thumbnailTemplate", "dayTemplate"], ["[pecbSlideViewerToolsStart]", "[pecbSlideViewerTools]", "[pecbSlideViewerEmpty]", "[pecbSlideViewerStage]", "[pecbSlideViewerVersion]", "[pecbSlideViewerNote]", "[pecbSlideViewerBelow]", "[pecbSlideViewerSidebarHeader]", "[pecbSlideViewerSidebarFooter]"], true, never>;
5199
+ }
5200
+
4207
5201
  /**
4208
5202
  * Notification types supported by the service
4209
5203
  */
@@ -5620,39 +6614,6 @@ declare function tryAsync<T>(operation: () => Promise<T>, errorOptions?: ErrorOp
5620
6614
  */
5621
6615
  declare function trySync<T>(operation: () => T, errorOptions?: ErrorOptions): [T, null] | [null, PecbError];
5622
6616
 
5623
- /**
5624
- * All available icon names in the PECB icon library.
5625
- * Use with `<pecb-icon name="icon-name">` for built-in icons.
5626
- */
5627
- type IconName = 'activity' | 'add-square-01' | 'add-square-02' | 'add-square-03' | 'add-square-04' | 'alarm-01' | 'alarm-02' | 'alarm-03' | 'alarm-04' | 'alarm-05' | 'alarm-06' | 'alarm-check' | 'alarm-minus' | 'alarm-off' | 'alarm-plus' | 'alert-circle' | 'alert-square' | 'alert-triangle' | 'align-center' | 'align-down-01' | 'align-down-02' | 'align-horizontal-center-01' | 'align-horizontal-center-02' | 'align-horizontal-center-03' | 'align-justify' | 'align-left' | 'align-left-01' | 'align-left-02' | 'align-right' | 'align-right-01' | 'align-right-02' | 'align-up-01' | 'align-up-02' | 'align-vertical-center-01' | 'align-vertical-center-02' | 'align-vertical-center-03' | 'annotation' | 'annotation-alert' | 'annotation-check' | 'annotation-information' | 'annotation-plus' | 'annotation-typing' | 'annotation-x' | 'atom' | 'attatchment-01' | 'attatchment-02' | 'audio-settings-01' | 'audio-settings-02' | 'bag-01' | 'bag-02' | 'bag-03' | 'bag-04' | 'bag-05' | 'bank' | 'bank-note-01' | 'bank-note-02' | 'bank-note-03' | 'bank-note-04' | 'bank-note-05' | 'bank-note-06' | 'bar-chart-01' | 'bar-chart-02' | 'bar-chart-03' | 'bar-chart-04' | 'bar-chart-05' | 'bar-chart-square-01' | 'bar-chart-square-02' | 'bar-chart-square-03' | 'bar-chart-square-down-01' | 'bar-chart-square-down-02' | 'bar-chart-square-up-01' | 'bar-group-01' | 'bar-group-02' | 'bar-group-03' | 'battery-01' | 'battery-02' | 'battery-03' | 'battery-04' | 'battery-empty' | 'battery-fill-01' | 'battery-fill-02' | 'battery-fill-04' | 'bell-01' | 'bell-02' | 'bell-03' | 'bell-04' | 'bell-off-01' | 'bell-off-02' | 'bell-ringing-01' | 'bell-ringing-02' | 'bell-ringing-03' | 'bell-ringing-04' | 'bezier-01' | 'bezier-02' | 'bluetooth-01' | 'bluetooth-02' | 'bold-01' | 'bold-02' | 'book-01' | 'book-02' | 'book-03' | 'book-04' | 'book-05' | 'book-06' | 'box' | 'brackets' | 'brackets-check' | 'brackets-minus' | 'brackets-plus' | 'brackets-slash' | 'brackets-typing' | 'calculator-01' | 'calculator-02' | 'calendar-01' | 'calendar-02' | 'calendar-03' | 'calendar-04' | 'calendar-05' | 'calendar-06' | 'calendar-07' | 'calendar-check' | 'calendar-minus' | 'calendar-number' | 'calendar-plus' | 'camera-01' | 'camera-02' | 'camera-lens' | 'camera-off' | 'cancel-left' | 'cancel-right' | 'car' | 'card-01' | 'card-02' | 'card-add' | 'card-check' | 'card-down' | 'card-edit' | 'card-lock' | 'card-minus' | 'card-number' | 'card-shield' | 'card-up' | 'card-x' | 'cart' | 'center' | 'chart-breakout-circle' | 'chart-breakout-square' | 'check-01' | 'check-02' | 'check-broken' | 'check-contained' | 'check-square-broken' | 'check-square-contained' | 'chevron-double-down' | 'chevron-double-left' | 'chevron-double-right' | 'chevron-double-up' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'chevron-up' | 'chromecast' | 'circle' | 'clock-01' | 'clock-backward' | 'clock-check' | 'clock-forward' | 'clock-plus' | 'cloud-01' | 'cloud-02' | 'cloud-03' | 'cloud-04' | 'cloud-lightning' | 'cloud-rain' | 'cloud-snow' | 'cloud-sun' | 'code-01' | 'code-02' | 'code-03' | 'code-04' | 'coin-broken' | 'coin-hand' | 'coin-number' | 'coin-unbroken' | 'coins' | 'coins-rotate' | 'color-picker' | 'color-swatch-01' | 'color-swatch-02' | 'colors-01' | 'colors-02' | 'column-horizontal-01' | 'column-horizontal-02' | 'column-horizontal-03' | 'column-vertical-01' | 'column-vertical-02' | 'column-vertical-03' | 'compare' | 'compass' | 'component' | 'computer' | 'contrast' | 'copy-left' | 'copy-right' | 'crop-01' | 'crop-02' | 'currency-bath' | 'currency-bitcoin' | 'currency-cent' | 'currency-coin-bath' | 'currency-coin-bitcoin' | 'currency-coin-cent' | 'currency-coin-dollar' | 'currency-coin-euro' | 'currency-coin-pound' | 'currency-coin-rubel' | 'currency-coin-rupee' | 'currency-coin-yen' | 'currency-dollar' | 'currency-euro' | 'currency-pound' | 'currency-rubel' | 'currency-rupee' | 'currency-yen' | 'cursor-01' | 'cursor-02' | 'cursor-03' | 'cursor-04' | 'cursor-05' | 'cursor-06' | 'cursor-grab' | 'cursor-grabbed' | 'cursor-pointer' | 'dash' | 'data-01' | 'data-02' | 'data-03' | 'data-04' | 'delete' | 'delivery' | 'diamond' | 'disc' | 'discount-circle' | 'discount-square' | 'discount-star-01' | 'discount-star-02' | 'discount-star-03' | 'divider' | 'dot-horizontal' | 'dot-vertical' | 'download' | 'download-01' | 'download-02' | 'drop' | 'edit-01' | 'edit-02' | 'edit-03' | 'edit-04' | 'edit-contained' | 'email' | 'embed' | 'equals' | 'equals-not' | 'eraser-01' | 'eraser-02' | 'expand' | 'expand-02' | 'eye-closed' | 'eye-open' | 'face-id-01' | 'face-id-02' | 'fast-backward' | 'fast-forward' | 'favourite' | 'feather-01' | 'feather-02' | 'file' | 'file-01' | 'file-02' | 'file-03' | 'file-04' | 'file-05' | 'file-06' | 'file-attach-01' | 'file-attach-02' | 'file-attach-03' | 'file-branch' | 'file-check-01' | 'file-check-02' | 'file-code' | 'file-down-01' | 'file-down-02' | 'file-edit-01' | 'file-edit-02' | 'file-eye-01' | 'file-eye-02' | 'file-lock-01' | 'file-lock-02' | 'file-lock-03' | 'file-minus-01' | 'file-minus-02' | 'file-multiple' | 'file-none' | 'file-plus-01' | 'file-plus-02' | 'file-question-01' | 'file-question-02' | 'file-return-01' | 'file-return-02' | 'file-search-01' | 'file-search-02' | 'file-shield-01' | 'file-shield-02' | 'file-shield-03' | 'file-shred' | 'file-up-01' | 'file-up-02' | 'file-x-02' | 'filter' | 'fingerpint-01' | 'fingerpint-02' | 'flame-01' | 'flash-off' | 'flash-on' | 'flex-align-bottom-01' | 'flex-align-center-01' | 'flex-align-left-01' | 'flex-align-right-01' | 'flex-align-spaced-01' | 'flex-align-top-01' | 'flex-columns' | 'flip-01' | 'flip-02' | 'flip-left' | 'flip-right' | 'folder' | 'folder-code' | 'folder-down-01' | 'folder-down-02' | 'folder-minus-01' | 'folder-open-01' | 'folder-open-02' | 'folder-open-03' | 'folder-plus-01' | 'folder-plus-02' | 'folder-search-01' | 'folder-search-02' | 'folder-shield' | 'folder-up-01' | 'folder-up-02' | 'folder-x-01' | 'folder-x-02' | 'gear' | 'gift-01' | 'gift-02' | 'git-branch-01' | 'git-branch-02' | 'git-branch-03' | 'git-branch-04' | 'git-branch-05' | 'glasses-01' | 'glasses-02' | 'globe' | 'globe-01' | 'globe-02' | 'globe-03' | 'globe-04' | 'globe-05' | 'graduation-cap-01' | 'graduation-cap-02' | 'grid-01' | 'grid-02' | 'grid-03' | 'grid-04-filled' | 'hash-01' | 'hash-02' | 'header-01' | 'header-02' | 'headphones' | 'heart' | 'help' | 'help-circle-contained' | 'help-square-contained' | 'hexagon' | 'home-01' | 'home-02' | 'home-03' | 'home-04' | 'home-05' | 'horizontal-chart-01' | 'horizontal-chart-02' | 'horizontal-chart-03' | 'hourglass-01' | 'hourglass-02' | 'hourglass-03' | 'image' | 'image-01' | 'image-02' | 'image-03' | 'image-04' | 'image-add' | 'image-avatar' | 'image-check' | 'image-down' | 'image-focus' | 'image-indent-left' | 'image-indent-right' | 'image-minus' | 'image-no-borders' | 'image-question' | 'image-up' | 'image-x' | 'inbox-01' | 'inbox-02' | 'indent-decrease' | 'indent-increase' | 'indent-left' | 'indent-right' | 'info-square-01-contained' | 'info-square-02-contained-filled' | 'information-circle-contained' | 'intersect' | 'iphone-02' | 'italics-01' | 'italics-02' | 'key-01' | 'key-02' | 'keyboard' | 'laptop-01' | 'laptop-02' | 'layers-01' | 'layers-02' | 'layers-03' | 'layers-04' | 'layers-05' | 'layout-01' | 'layout-02' | 'layout-03' | 'layout-04' | 'layout-bottom' | 'layout-grid-01' | 'layout-left' | 'layout-right' | 'layout-scale' | 'layout-top' | 'letter-spacing-01' | 'letter-spacing-02' | 'letter-spacing-03' | 'lightbulb-01' | 'lightbulb-02' | 'lightbulb-03' | 'lightning-01' | 'lightning-02' | 'lightning-circle-contained' | 'lightning-filled' | 'lightning-square-contained' | 'line-chart-down-01' | 'line-chart-down-02' | 'line-chart-up-01' | 'line-chart-up-02' | 'line-height' | 'link' | 'link-angled' | 'link-broken' | 'link-external' | 'list' | 'list-numbers' | 'loader-01' | 'loader-02' | 'lock-01' | 'lock-02' | 'lock-03' | 'lock-04' | 'lock-open-01' | 'lock-open-02' | 'lock-open-03' | 'lock-open-04' | 'logout-01' | 'logout-02' | 'logout-03' | 'logout-04' | 'luggage-01' | 'luggage-02' | 'luggage-03' | 'luggage-04' | 'mail-01' | 'mail-02' | 'mail-03' | 'mail-04' | 'mail-05' | 'map-01' | 'map-02' | 'map-03' | 'map-04' | 'marker-01' | 'marker-02' | 'marker-03' | 'marker-04' | 'marker-05' | 'marker-06' | 'maximise-01' | 'maximise-02' | 'media-strip-01' | 'media-strip-02' | 'menu-01' | 'menu-02' | 'menu-03' | 'menu-04' | 'menu-05' | 'message-alert-circle' | 'message-alert-plus' | 'message-chat-01' | 'message-circle' | 'message-notify-circle' | 'message-notify-square' | 'message-square' | 'message-square-information' | 'message-square-plus' | 'message-square-typing' | 'message-square-x' | 'message-text-01' | 'message-text-02' | 'message-typing' | 'message-x' | 'microphone-01' | 'microphone-02' | 'microphone-off-01' | 'microphone-off-02' | 'minimise-01' | 'minimise-02' | 'minus-circle-contained' | 'minus-square-contained' | 'moon-01' | 'moon-02' | 'mouse' | 'move' | 'note-01' | 'note-02' | 'notification-box' | 'notification-bubble' | 'notification-square-01' | 'notification-square-02' | 'octagon' | 'overlap' | 'package-01' | 'package-02' | 'package-check' | 'package-minus' | 'package-plus' | 'package-x' | 'paint-bucket-01' | 'paint-bucket-02' | 'palette' | 'paperclip' | 'paperclip-01' | 'paperclip-02' | 'passport' | 'password-01' | 'password-02' | 'pause-01' | 'pause-02' | 'pause-03' | 'pen-tool-01' | 'pen-tool-02' | 'pen-tool-03' | 'pen-tool-04' | 'pencil-01' | 'pencil-02' | 'pencil-03' | 'pentagon' | 'percent-01' | 'percent-02' | 'percent-03' | 'perspective' | 'phone' | 'phone-call-01' | 'phone-call-02' | 'phone-down' | 'phone-incoming-01' | 'phone-incoming-02' | 'phone-off' | 'phone-outgoing-01' | 'phone-outgoing-02' | 'phone-up' | 'phone-x' | 'pie-chart-01' | 'pie-chart-02' | 'pie-chart-03' | 'plane' | 'play-01' | 'play-02' | 'play-03' | 'plug-01' | 'plus-01' | 'plus-02' | 'plus-03' | 'pointer-01' | 'pointer-02' | 'power' | 'presentation-01' | 'presentation-02' | 'presentation-03' | 'progress' | 'quote' | 'receipt' | 'receipt-lines' | 'refresh-01' | 'rss' | 'ruler' | 'save-01' | 'save-02' | 'scale-01' | 'scale-02' | 'scale-03' | 'scan' | 'scissors-01' | 'scissors-02' | 'scissors-03' | 'scissors-04' | 'search-01' | 'search-02' | 'send-01' | 'send-02' | 'send-03' | 'server-01' | 'server-02' | 'server-03' | 'server-04' | 'server-05' | 'server-06' | 'server-down' | 'server-up' | 'settings' | 'share' | 'shield-01' | 'shield-02' | 'shield-check' | 'shield-plus' | 'shuffle' | 'signal' | 'skew' | 'skip-back' | 'skip-forward' | 'slash-01-backward' | 'slash-01-forward' | 'slash-02-forward' | 'smiley-happy' | 'smiley-happy-plus' | 'smiley-neutral' | 'smiley-sad' | 'smiley-wink' | 'snowflake' | 'sort-horizontal' | 'sort-vertical-01' | 'sort-vertical-02' | 'space-height' | 'space-horizontal' | 'space-vertical' | 'space-width' | 'speaker' | 'square' | 'star-01' | 'star-02' | 'stars' | 'stop-01' | 'stop-02' | 'stopwatch-01' | 'stopwatch-02' | 'stopwatch-03' | 'stopwatch-04' | 'stopwatch-05' | 'stopwatch-off' | 'stopwatch-snooze' | 'sun-01' | 'sun-02' | 'sun-03' | 'sun-down' | 'sun-up' | 'superscript' | 'table' | 'tag' | 'target-01' | 'target-02' | 'target-03' | 'target-04' | 'temperature-01' | 'temperature-02' | 'temperature-03' | 'temperature-04' | 'terminal' | 'text-input-01' | 'text-input-02' | 'thumb-down' | 'thumb-up' | 'ticket-01' | 'ticket-02' | 'toggle-right' | 'toogle-left' | 'train' | 'transform' | 'trash-01' | 'trash-02' | 'trash-03' | 'trash-04' | 'trend-down-01' | 'trend-down-02' | 'trend-up-01' | 'trend-up-02' | 'triangle' | 'truck' | 'tv' | 'type-01' | 'type-02' | 'type-03' | 'type-strike-01' | 'type-strike-02' | 'umbrella' | 'umbrella-01' | 'umbrella-02' | 'underline-01' | 'underline-02' | 'union' | 'upload-01' | 'upload-02' | 'upload-03' | 'upload-04' | 'user-profile-01' | 'user-profile-02' | 'user-profile-03' | 'user-profile-add-01' | 'user-profile-add-02' | 'user-profile-check' | 'user-profile-circle' | 'user-profile-down' | 'user-profile-group' | 'user-profile-left' | 'user-profile-minus' | 'user-profile-right' | 'user-profile-square' | 'user-profile-star' | 'user-profile-up' | 'user-profile-x' | 'users-profiles-01' | 'users-profiles-02' | 'users-profiles-03' | 'users-profiles-check' | 'users-profiles-down' | 'users-profiles-left' | 'users-profiles-minus' | 'users-profiles-plus' | 'users-profiles-right' | 'users-profiles-up' | 'users-profiles-x' | 'variant' | 'video-off' | 'video-on' | 'volume-01' | 'volume-02' | 'volume-03' | 'volume-04' | 'volume-05' | 'volume-06' | 'volume-07' | 'wallert-04' | 'wallet-01' | 'wallet-02' | 'wallet-03' | 'watch-01' | 'watch-02' | 'waveform' | 'webcam' | 'wifi-off' | 'wifi-on' | 'wind-01' | 'wind-02' | 'wind-03' | 'wrench' | 'x-01' | 'x-02' | 'x-03' | 'x-circle-contained' | 'x-square-contained' | 'youtube' | 'zoom-in' | 'zoom-out' | 'custom-warning-xs-neutral';
5628
-
5629
- /**
5630
- * Custom icon names — self-contained icons with built-in background and color.
5631
- *
5632
- * Naming: `custom-{state}-{size}-{style}`
5633
- *
5634
- * | State | Description |
5635
- * |------------------|------------------------------------|
5636
- * | check | Checkmark / completed |
5637
- * | certificate | Certificate / credential |
5638
- * | view | Eye / visibility |
5639
- * | add | Plus / create |
5640
- * | delete | Trash / remove |
5641
- * | download | Download arrow |
5642
- * | upload | Upload arrow |
5643
- * | time | Clock / duration |
5644
- * | slide | Presentation / slideshow |
5645
- * | tools | Wrench / settings |
5646
- * | doc | Document / file |
5647
- * | info | Information circle |
5648
- * | warning | Warning triangle |
5649
- * | not-applicable | N/A / disabled |
5650
- *
5651
- * Sizes: xs (24), sm (32), md (40), lg (48), xl (56), 2xl (64)
5652
- * Styles: active (colored), neutral (gray)
5653
- */
5654
- type CustomIconName = 'custom-add-2xl-active' | 'custom-add-2xl-neutral' | 'custom-add-lg-active' | 'custom-add-lg-neutral' | 'custom-add-md-active' | 'custom-add-md-neutral' | 'custom-add-sm-active' | 'custom-add-sm-neutral' | 'custom-add-xl-active' | 'custom-add-xl-neutral' | 'custom-add-xs-active' | 'custom-add-xs-neutral' | 'custom-certificate-2xl-active' | 'custom-certificate-2xl-neutral' | 'custom-certificate-lg-active' | 'custom-certificate-lg-neutral' | 'custom-certificate-md-active' | 'custom-certificate-md-neutral' | 'custom-certificate-sm-active' | 'custom-certificate-sm-neutral' | 'custom-certificate-xl-active' | 'custom-certificate-xl-neutral' | 'custom-certificate-xs-active' | 'custom-certificate-xs-neutral' | 'custom-check-2xl-active' | 'custom-check-2xl-neutral' | 'custom-check-lg-active' | 'custom-check-lg-neutral' | 'custom-check-md-active' | 'custom-check-md-neutral' | 'custom-check-sm-active' | 'custom-check-sm-neutral' | 'custom-check-xl-active' | 'custom-check-xl-neutral' | 'custom-check-xs-active' | 'custom-check-xs-neutral' | 'custom-delete-2xl-active' | 'custom-delete-2xl-neutral' | 'custom-delete-lg-active' | 'custom-delete-lg-neutral' | 'custom-delete-md-active' | 'custom-delete-md-neutral' | 'custom-delete-sm-active' | 'custom-delete-sm-neutral' | 'custom-delete-xl-active' | 'custom-delete-xl-neutral' | 'custom-delete-xs-active' | 'custom-delete-xs-neutral' | 'custom-doc-2xl-active' | 'custom-doc-2xl-neutral' | 'custom-doc-lg-active' | 'custom-doc-lg-neutral' | 'custom-doc-md-active' | 'custom-doc-md-neutral' | 'custom-doc-sm-active' | 'custom-doc-sm-neutral' | 'custom-doc-xl-active' | 'custom-doc-xl-neutral' | 'custom-doc-xs-active' | 'custom-doc-xs-neutral' | 'custom-download-2xl-active' | 'custom-download-2xl-neutral' | 'custom-download-lg-active' | 'custom-download-lg-neutral' | 'custom-download-md-active' | 'custom-download-md-neutral' | 'custom-download-sm-active' | 'custom-download-sm-neutral' | 'custom-download-xl-active' | 'custom-download-xl-neutral' | 'custom-download-xs-active' | 'custom-download-xs-neutral' | 'custom-info-2xl-active' | 'custom-info-2xl-neutral' | 'custom-info-lg-active' | 'custom-info-lg-neutral' | 'custom-info-md-active' | 'custom-info-md-neutral' | 'custom-info-sm-active' | 'custom-info-sm-neutral' | 'custom-info-xl-active' | 'custom-info-xl-neutral' | 'custom-info-xs-active' | 'custom-info-xs-neutral' | 'custom-not-applicable-2xl-active' | 'custom-not-applicable-2xl-neutral' | 'custom-not-applicable-lg-active' | 'custom-not-applicable-lg-neutral' | 'custom-not-applicable-md-active' | 'custom-not-applicable-md-neutral' | 'custom-not-applicable-sm-active' | 'custom-not-applicable-sm-neutral' | 'custom-not-applicable-xl-active' | 'custom-not-applicable-xl-neutral' | 'custom-not-applicable-xs-active' | 'custom-not-applicable-xs-neutral' | 'custom-slide-2xl-active' | 'custom-slide-2xl-neutral' | 'custom-slide-lg-active' | 'custom-slide-lg-neutral' | 'custom-slide-md-active' | 'custom-slide-md-neutral' | 'custom-slide-sm-active' | 'custom-slide-sm-neutral' | 'custom-slide-xl-active' | 'custom-slide-xl-neutral' | 'custom-slide-xs-active' | 'custom-slide-xs-neutral' | 'custom-time-2xl-active' | 'custom-time-2xl-neutral' | 'custom-time-lg-active' | 'custom-time-lg-neutral' | 'custom-time-md-active' | 'custom-time-md-neutral' | 'custom-time-sm-active' | 'custom-time-sm-neutral' | 'custom-time-xl-active' | 'custom-time-xl-neutral' | 'custom-time-xs-active' | 'custom-time-xs-neutral' | 'custom-tools-2xl-active' | 'custom-tools-2xl-neutral' | 'custom-tools-lg-active' | 'custom-tools-lg-neutral' | 'custom-tools-md-active' | 'custom-tools-md-neutral' | 'custom-tools-sm-active' | 'custom-tools-sm-neutral' | 'custom-tools-xl-active' | 'custom-tools-xl-neutral' | 'custom-tools-xs-active' | 'custom-tools-xs-neutral' | 'custom-upload-2xl-active' | 'custom-upload-2xl-neutral' | 'custom-upload-lg-active' | 'custom-upload-lg-neutral' | 'custom-upload-md-active' | 'custom-upload-md-neutral' | 'custom-upload-sm-active' | 'custom-upload-sm-neutral' | 'custom-upload-xl-active' | 'custom-upload-xl-neutral' | 'custom-upload-xs-active' | 'custom-upload-xs-neutral' | 'custom-view-2xl-active' | 'custom-view-2xl-neutral' | 'custom-view-lg-active' | 'custom-view-lg-neutral' | 'custom-view-md-active' | 'custom-view-md-neutral' | 'custom-view-sm-active' | 'custom-view-sm-neutral' | 'custom-view-xl-active' | 'custom-view-xl-neutral' | 'custom-view-xs-active' | 'custom-view-xs-neutral' | 'custom-warning' | 'custom-warning-2xl-active' | 'custom-warning-2xl-neutral' | 'custom-warning-lg-active' | 'custom-warning-lg-neutral' | 'custom-warning-md-active' | 'custom-warning-md-neutral' | 'custom-warning-sm-active' | 'custom-warning-sm-neutral' | 'custom-warning-xl-active' | 'custom-warning-xl-neutral' | 'custom-warning-xs-active';
5655
-
5656
6617
  /** Container size. The inner icon is always 50 % of the container. */
5657
6618
  type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
5658
6619
  /**
@@ -5697,7 +6658,7 @@ declare class IconComponent {
5697
6658
  * Registered icon name. When provided, the SVG is resolved from the
5698
6659
  * `IconRegistry`. Takes highest priority.
5699
6660
  */
5700
- name: _angular_core.InputSignal<IconName | CustomIconName | undefined>;
6661
+ name: _angular_core.InputSignal<"embed" | "link" | "progress" | "table" | "circle" | "filter" | "image" | "annotation" | "center" | "drop" | "activity" | "add-square-01" | "add-square-02" | "add-square-03" | "add-square-04" | "alarm-01" | "alarm-02" | "alarm-03" | "alarm-04" | "alarm-05" | "alarm-06" | "alarm-check" | "alarm-minus" | "alarm-off" | "alarm-plus" | "alert-circle" | "alert-square" | "alert-triangle" | "align-center" | "align-down-01" | "align-down-02" | "align-horizontal-center-01" | "align-horizontal-center-02" | "align-horizontal-center-03" | "align-justify" | "align-left" | "align-left-01" | "align-left-02" | "align-right" | "align-right-01" | "align-right-02" | "align-up-01" | "align-up-02" | "align-vertical-center-01" | "align-vertical-center-02" | "align-vertical-center-03" | "annotation-alert" | "annotation-check" | "annotation-information" | "annotation-plus" | "annotation-typing" | "annotation-x" | "atom" | "attatchment-01" | "attatchment-02" | "audio-settings-01" | "audio-settings-02" | "bag-01" | "bag-02" | "bag-03" | "bag-04" | "bag-05" | "bank" | "bank-note-01" | "bank-note-02" | "bank-note-03" | "bank-note-04" | "bank-note-05" | "bank-note-06" | "bar-chart-01" | "bar-chart-02" | "bar-chart-03" | "bar-chart-04" | "bar-chart-05" | "bar-chart-square-01" | "bar-chart-square-02" | "bar-chart-square-03" | "bar-chart-square-down-01" | "bar-chart-square-down-02" | "bar-chart-square-up-01" | "bar-group-01" | "bar-group-02" | "bar-group-03" | "battery-01" | "battery-02" | "battery-03" | "battery-04" | "battery-empty" | "battery-fill-01" | "battery-fill-02" | "battery-fill-04" | "bell-01" | "bell-02" | "bell-03" | "bell-04" | "bell-off-01" | "bell-off-02" | "bell-ringing-01" | "bell-ringing-02" | "bell-ringing-03" | "bell-ringing-04" | "bezier-01" | "bezier-02" | "bluetooth-01" | "bluetooth-02" | "bold-01" | "bold-02" | "book-01" | "book-02" | "book-03" | "book-04" | "book-05" | "book-06" | "box" | "brackets" | "brackets-check" | "brackets-minus" | "brackets-plus" | "brackets-slash" | "brackets-typing" | "calculator-01" | "calculator-02" | "calendar-01" | "calendar-02" | "calendar-03" | "calendar-04" | "calendar-05" | "calendar-06" | "calendar-07" | "calendar-check" | "calendar-minus" | "calendar-number" | "calendar-plus" | "camera-01" | "camera-02" | "camera-lens" | "camera-off" | "cancel-left" | "cancel-right" | "car" | "card-01" | "card-02" | "card-add" | "card-check" | "card-down" | "card-edit" | "card-lock" | "card-minus" | "card-number" | "card-shield" | "card-up" | "card-x" | "cart" | "chart-breakout-circle" | "chart-breakout-square" | "check-01" | "check-02" | "check-broken" | "check-contained" | "check-square-broken" | "check-square-contained" | "chevron-double-down" | "chevron-double-left" | "chevron-double-right" | "chevron-double-up" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chromecast" | "clock-01" | "clock-backward" | "clock-check" | "clock-forward" | "clock-plus" | "cloud-01" | "cloud-02" | "cloud-03" | "cloud-04" | "cloud-lightning" | "cloud-rain" | "cloud-snow" | "cloud-sun" | "code-01" | "code-02" | "code-03" | "code-04" | "coin-broken" | "coin-hand" | "coin-number" | "coin-unbroken" | "coins" | "coins-rotate" | "color-picker" | "color-swatch-01" | "color-swatch-02" | "colors-01" | "colors-02" | "column-horizontal-01" | "column-horizontal-02" | "column-horizontal-03" | "column-vertical-01" | "column-vertical-02" | "column-vertical-03" | "compare" | "compass" | "component" | "computer" | "contrast" | "copy-left" | "copy-right" | "crop-01" | "crop-02" | "currency-bath" | "currency-bitcoin" | "currency-cent" | "currency-coin-bath" | "currency-coin-bitcoin" | "currency-coin-cent" | "currency-coin-dollar" | "currency-coin-euro" | "currency-coin-pound" | "currency-coin-rubel" | "currency-coin-rupee" | "currency-coin-yen" | "currency-dollar" | "currency-euro" | "currency-pound" | "currency-rubel" | "currency-rupee" | "currency-yen" | "cursor-01" | "cursor-02" | "cursor-03" | "cursor-04" | "cursor-05" | "cursor-06" | "cursor-grab" | "cursor-grabbed" | "cursor-pointer" | "dash" | "data-01" | "data-02" | "data-03" | "data-04" | "delete" | "delivery" | "diamond" | "disc" | "discount-circle" | "discount-square" | "discount-star-01" | "discount-star-02" | "discount-star-03" | "divider" | "dot-horizontal" | "dot-vertical" | "download" | "download-01" | "download-02" | "edit-01" | "edit-02" | "edit-03" | "edit-04" | "edit-contained" | "email" | "equals" | "equals-not" | "eraser-01" | "eraser-02" | "expand" | "expand-02" | "eye-closed" | "eye-open" | "face-id-01" | "face-id-02" | "fast-backward" | "fast-forward" | "favourite" | "feather-01" | "feather-02" | "file" | "file-01" | "file-02" | "file-03" | "file-04" | "file-05" | "file-06" | "file-attach-01" | "file-attach-02" | "file-attach-03" | "file-branch" | "file-check-01" | "file-check-02" | "file-code" | "file-down-01" | "file-down-02" | "file-edit-01" | "file-edit-02" | "file-eye-01" | "file-eye-02" | "file-lock-01" | "file-lock-02" | "file-lock-03" | "file-minus-01" | "file-minus-02" | "file-multiple" | "file-none" | "file-plus-01" | "file-plus-02" | "file-question-01" | "file-question-02" | "file-return-01" | "file-return-02" | "file-search-01" | "file-search-02" | "file-shield-01" | "file-shield-02" | "file-shield-03" | "file-shred" | "file-up-01" | "file-up-02" | "file-x-02" | "fingerpint-01" | "fingerpint-02" | "flame-01" | "flash-off" | "flash-on" | "flex-align-bottom-01" | "flex-align-center-01" | "flex-align-left-01" | "flex-align-right-01" | "flex-align-spaced-01" | "flex-align-top-01" | "flex-columns" | "flip-01" | "flip-02" | "flip-left" | "flip-right" | "folder" | "folder-code" | "folder-down-01" | "folder-down-02" | "folder-minus-01" | "folder-open-01" | "folder-open-02" | "folder-open-03" | "folder-plus-01" | "folder-plus-02" | "folder-search-01" | "folder-search-02" | "folder-shield" | "folder-up-01" | "folder-up-02" | "folder-x-01" | "folder-x-02" | "gear" | "gift-01" | "gift-02" | "git-branch-01" | "git-branch-02" | "git-branch-03" | "git-branch-04" | "git-branch-05" | "glasses-01" | "glasses-02" | "globe" | "globe-01" | "globe-02" | "globe-03" | "globe-04" | "globe-05" | "graduation-cap-01" | "graduation-cap-02" | "grid-01" | "grid-02" | "grid-03" | "grid-04-filled" | "hash-01" | "hash-02" | "header-01" | "header-02" | "headphones" | "heart" | "help" | "help-circle-contained" | "help-square-contained" | "hexagon" | "home-01" | "home-02" | "home-03" | "home-04" | "home-05" | "horizontal-chart-01" | "horizontal-chart-02" | "horizontal-chart-03" | "hourglass-01" | "hourglass-02" | "hourglass-03" | "image-01" | "image-02" | "image-03" | "image-04" | "image-add" | "image-avatar" | "image-check" | "image-down" | "image-focus" | "image-indent-left" | "image-indent-right" | "image-minus" | "image-no-borders" | "image-question" | "image-up" | "image-x" | "inbox-01" | "inbox-02" | "indent-decrease" | "indent-increase" | "indent-left" | "indent-right" | "info-square-01-contained" | "info-square-02-contained-filled" | "information-circle-contained" | "intersect" | "iphone-02" | "italics-01" | "italics-02" | "key-01" | "key-02" | "keyboard" | "laptop-01" | "laptop-02" | "layers-01" | "layers-02" | "layers-03" | "layers-04" | "layers-05" | "layout-01" | "layout-02" | "layout-03" | "layout-04" | "layout-bottom" | "layout-grid-01" | "layout-left" | "layout-right" | "layout-scale" | "layout-top" | "letter-spacing-01" | "letter-spacing-02" | "letter-spacing-03" | "lightbulb-01" | "lightbulb-02" | "lightbulb-03" | "lightning-01" | "lightning-02" | "lightning-circle-contained" | "lightning-filled" | "lightning-square-contained" | "line-chart-down-01" | "line-chart-down-02" | "line-chart-up-01" | "line-chart-up-02" | "line-height" | "link-angled" | "link-broken" | "link-external" | "list" | "list-numbers" | "loader-01" | "loader-02" | "lock-01" | "lock-02" | "lock-03" | "lock-04" | "lock-open-01" | "lock-open-02" | "lock-open-03" | "lock-open-04" | "logout-01" | "logout-02" | "logout-03" | "logout-04" | "luggage-01" | "luggage-02" | "luggage-03" | "luggage-04" | "mail-01" | "mail-02" | "mail-03" | "mail-04" | "mail-05" | "map-01" | "map-02" | "map-03" | "map-04" | "marker-01" | "marker-02" | "marker-03" | "marker-04" | "marker-05" | "marker-06" | "maximise-01" | "maximise-02" | "media-strip-01" | "media-strip-02" | "menu-01" | "menu-02" | "menu-03" | "menu-04" | "menu-05" | "message-alert-circle" | "message-alert-plus" | "message-chat-01" | "message-circle" | "message-notify-circle" | "message-notify-square" | "message-square" | "message-square-information" | "message-square-plus" | "message-square-typing" | "message-square-x" | "message-text-01" | "message-text-02" | "message-typing" | "message-x" | "microphone-01" | "microphone-02" | "microphone-off-01" | "microphone-off-02" | "minimise-01" | "minimise-02" | "minus-circle-contained" | "minus-square-contained" | "moon-01" | "moon-02" | "mouse" | "move" | "note-01" | "note-02" | "notification-box" | "notification-bubble" | "notification-square-01" | "notification-square-02" | "octagon" | "overlap" | "package-01" | "package-02" | "package-check" | "package-minus" | "package-plus" | "package-x" | "paint-bucket-01" | "paint-bucket-02" | "palette" | "paperclip" | "paperclip-01" | "paperclip-02" | "passport" | "password-01" | "password-02" | "pause-01" | "pause-02" | "pause-03" | "pen-tool-01" | "pen-tool-02" | "pen-tool-03" | "pen-tool-04" | "pencil-01" | "pencil-02" | "pencil-03" | "pentagon" | "percent-01" | "percent-02" | "percent-03" | "perspective" | "phone" | "phone-call-01" | "phone-call-02" | "phone-down" | "phone-incoming-01" | "phone-incoming-02" | "phone-off" | "phone-outgoing-01" | "phone-outgoing-02" | "phone-up" | "phone-x" | "pie-chart-01" | "pie-chart-02" | "pie-chart-03" | "plane" | "play-01" | "play-02" | "play-03" | "plug-01" | "plus-01" | "plus-02" | "plus-03" | "pointer-01" | "pointer-02" | "power" | "presentation-01" | "presentation-02" | "presentation-03" | "quote" | "receipt" | "receipt-lines" | "refresh-01" | "rss" | "ruler" | "save-01" | "save-02" | "scale-01" | "scale-02" | "scale-03" | "scan" | "scissors-01" | "scissors-02" | "scissors-03" | "scissors-04" | "search-01" | "search-02" | "send-01" | "send-02" | "send-03" | "server-01" | "server-02" | "server-03" | "server-04" | "server-05" | "server-06" | "server-down" | "server-up" | "settings" | "share" | "shield-01" | "shield-02" | "shield-check" | "shield-plus" | "shuffle" | "signal" | "skew" | "skip-back" | "skip-forward" | "slash-01-backward" | "slash-01-forward" | "slash-02-forward" | "smiley-happy" | "smiley-happy-plus" | "smiley-neutral" | "smiley-sad" | "smiley-wink" | "snowflake" | "sort-horizontal" | "sort-vertical-01" | "sort-vertical-02" | "space-height" | "space-horizontal" | "space-vertical" | "space-width" | "speaker" | "square" | "star-01" | "star-02" | "stars" | "stop-01" | "stop-02" | "stopwatch-01" | "stopwatch-02" | "stopwatch-03" | "stopwatch-04" | "stopwatch-05" | "stopwatch-off" | "stopwatch-snooze" | "sun-01" | "sun-02" | "sun-03" | "sun-down" | "sun-up" | "superscript" | "tag" | "target-01" | "target-02" | "target-03" | "target-04" | "temperature-01" | "temperature-02" | "temperature-03" | "temperature-04" | "terminal" | "text-input-01" | "text-input-02" | "thumb-down" | "thumb-up" | "ticket-01" | "ticket-02" | "toggle-right" | "toogle-left" | "train" | "transform" | "trash-01" | "trash-02" | "trash-03" | "trash-04" | "trend-down-01" | "trend-down-02" | "trend-up-01" | "trend-up-02" | "triangle" | "truck" | "tv" | "type-01" | "type-02" | "type-03" | "type-strike-01" | "type-strike-02" | "umbrella" | "umbrella-01" | "umbrella-02" | "underline-01" | "underline-02" | "union" | "upload-01" | "upload-02" | "upload-03" | "upload-04" | "user-profile-01" | "user-profile-02" | "user-profile-03" | "user-profile-add-01" | "user-profile-add-02" | "user-profile-check" | "user-profile-circle" | "user-profile-down" | "user-profile-group" | "user-profile-left" | "user-profile-minus" | "user-profile-right" | "user-profile-square" | "user-profile-star" | "user-profile-up" | "user-profile-x" | "users-profiles-01" | "users-profiles-02" | "users-profiles-03" | "users-profiles-check" | "users-profiles-down" | "users-profiles-left" | "users-profiles-minus" | "users-profiles-plus" | "users-profiles-right" | "users-profiles-up" | "users-profiles-x" | "variant" | "video-off" | "video-on" | "volume-01" | "volume-02" | "volume-03" | "volume-04" | "volume-05" | "volume-06" | "volume-07" | "wallert-04" | "wallet-01" | "wallet-02" | "wallet-03" | "watch-01" | "watch-02" | "waveform" | "webcam" | "wifi-off" | "wifi-on" | "wind-01" | "wind-02" | "wind-03" | "wrench" | "x-01" | "x-02" | "x-03" | "x-circle-contained" | "x-square-contained" | "youtube" | "zoom-in" | "zoom-out" | "custom-warning-xs-neutral" | "custom-add-2xl-active" | "custom-add-2xl-neutral" | "custom-add-lg-active" | "custom-add-lg-neutral" | "custom-add-md-active" | "custom-add-md-neutral" | "custom-add-sm-active" | "custom-add-sm-neutral" | "custom-add-xl-active" | "custom-add-xl-neutral" | "custom-add-xs-active" | "custom-add-xs-neutral" | "custom-amf-note-md-active" | "custom-amf-note-paid-md-active" | "custom-att-acc-md-active" | "custom-att-evaluate-md-active" | "custom-att-na-md-active" | "custom-cert-apply-md-active" | "custom-cert-refused-md-active" | "custom-cert-treatment-md-active" | "custom-cert-view-md-active" | "custom-certificate-2xl-active" | "custom-certificate-2xl-neutral" | "custom-certificate-lg-active" | "custom-certificate-lg-neutral" | "custom-certificate-md-active" | "custom-certificate-md-neutral" | "custom-certificate-sm-active" | "custom-certificate-sm-neutral" | "custom-certificate-xl-active" | "custom-certificate-xl-neutral" | "custom-certificate-xs-active" | "custom-certificate-xs-neutral" | "custom-check-2xl-active" | "custom-check-2xl-neutral" | "custom-check-lg-active" | "custom-check-lg-neutral" | "custom-check-md-active" | "custom-check-md-neutral" | "custom-check-sm-active" | "custom-check-sm-neutral" | "custom-check-xl-active" | "custom-check-xl-neutral" | "custom-check-xs-active" | "custom-check-xs-neutral" | "custom-content-classroom-md-active" | "custom-content-classroom-md-neutral" | "custom-content-elearning-md-active" | "custom-content-elearning-md-neutral" | "custom-content-liveonline-md-active" | "custom-content-liveonline-md-neutral" | "custom-content-selfstudy-md-active" | "custom-content-selfstudy-md-neutral" | "custom-content-technical-md-active" | "custom-content-technical-md-neutral" | "custom-delete-2xl-active" | "custom-delete-2xl-neutral" | "custom-delete-lg-active" | "custom-delete-lg-neutral" | "custom-delete-md-active" | "custom-delete-md-neutral" | "custom-delete-sm-active" | "custom-delete-sm-neutral" | "custom-delete-xl-active" | "custom-delete-xl-neutral" | "custom-delete-xs-active" | "custom-delete-xs-neutral" | "custom-doc-2xl-active" | "custom-doc-2xl-neutral" | "custom-doc-lg-active" | "custom-doc-lg-neutral" | "custom-doc-md-active" | "custom-doc-md-neutral" | "custom-doc-sm-active" | "custom-doc-sm-neutral" | "custom-doc-xl-active" | "custom-doc-xl-neutral" | "custom-doc-xs-active" | "custom-doc-xs-neutral" | "custom-download-2xl-active" | "custom-download-2xl-neutral" | "custom-download-lg-active" | "custom-download-lg-neutral" | "custom-download-md-active" | "custom-download-md-neutral" | "custom-download-sm-active" | "custom-download-sm-neutral" | "custom-download-xl-active" | "custom-download-xl-neutral" | "custom-download-xs-active" | "custom-download-xs-neutral" | "custom-exam-failed-md-active" | "custom-exam-missed-md-active" | "custom-exam-passed-md-active" | "custom-exam-schedule-md-active" | "custom-exam-scheduled-md-active" | "custom-exam-waiting-md-active" | "custom-info-2xl-active" | "custom-info-2xl-neutral" | "custom-info-lg-active" | "custom-info-lg-neutral" | "custom-info-md-active" | "custom-info-md-neutral" | "custom-info-sm-active" | "custom-info-sm-neutral" | "custom-info-xl-active" | "custom-info-xl-neutral" | "custom-info-xs-active" | "custom-info-xs-neutral" | "custom-not-applicable-2xl-active" | "custom-not-applicable-2xl-neutral" | "custom-not-applicable-lg-active" | "custom-not-applicable-lg-neutral" | "custom-not-applicable-md-active" | "custom-not-applicable-md-neutral" | "custom-not-applicable-sm-active" | "custom-not-applicable-sm-neutral" | "custom-not-applicable-xl-active" | "custom-not-applicable-xl-neutral" | "custom-not-applicable-xs-active" | "custom-not-applicable-xs-neutral" | "custom-slide-2xl-active" | "custom-slide-2xl-neutral" | "custom-slide-lg-active" | "custom-slide-lg-neutral" | "custom-slide-md-active" | "custom-slide-md-neutral" | "custom-slide-sm-active" | "custom-slide-sm-neutral" | "custom-slide-xl-active" | "custom-slide-xl-neutral" | "custom-slide-xs-active" | "custom-slide-xs-neutral" | "custom-time-2xl-active" | "custom-time-2xl-neutral" | "custom-time-lg-active" | "custom-time-lg-neutral" | "custom-time-md-active" | "custom-time-md-neutral" | "custom-time-sm-active" | "custom-time-sm-neutral" | "custom-time-xl-active" | "custom-time-xl-neutral" | "custom-time-xs-active" | "custom-time-xs-neutral" | "custom-tools-2xl-active" | "custom-tools-2xl-neutral" | "custom-tools-lg-active" | "custom-tools-lg-neutral" | "custom-tools-md-active" | "custom-tools-md-neutral" | "custom-tools-sm-active" | "custom-tools-sm-neutral" | "custom-tools-xl-active" | "custom-tools-xl-neutral" | "custom-tools-xs-active" | "custom-tools-xs-neutral" | "custom-upload-2xl-active" | "custom-upload-2xl-neutral" | "custom-upload-lg-active" | "custom-upload-lg-neutral" | "custom-upload-md-active" | "custom-upload-md-neutral" | "custom-upload-sm-active" | "custom-upload-sm-neutral" | "custom-upload-xl-active" | "custom-upload-xl-neutral" | "custom-upload-xs-active" | "custom-upload-xs-neutral" | "custom-view-2xl-active" | "custom-view-2xl-neutral" | "custom-view-lg-active" | "custom-view-lg-neutral" | "custom-view-md-active" | "custom-view-md-neutral" | "custom-view-sm-active" | "custom-view-sm-neutral" | "custom-view-xl-active" | "custom-view-xl-neutral" | "custom-view-xs-active" | "custom-view-xs-neutral" | "custom-warning-2xl-active" | "custom-warning-2xl-neutral" | "custom-warning-lg-active" | "custom-warning-lg-neutral" | "custom-warning-md-active" | "custom-warning-md-neutral" | "custom-warning-sm-active" | "custom-warning-sm-neutral" | "custom-warning-xl-active" | "custom-warning-xl-neutral" | "custom-warning-xs-active" | undefined>;
5701
6662
  /**
5702
6663
  * Inline SVG string to render inside the container.
5703
6664
  * When provided, this takes precedence over projected content.
@@ -5738,6 +6699,12 @@ declare class IconComponent {
5738
6699
  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>;
5739
6700
  }
5740
6701
 
6702
+ /**
6703
+ * All available icon names in the PECB icon library.
6704
+ * Use with `<pecb-icon name="icon-name">` for built-in icons.
6705
+ */
6706
+ type IconName = 'activity' | 'add-square-01' | 'add-square-02' | 'add-square-03' | 'add-square-04' | 'alarm-01' | 'alarm-02' | 'alarm-03' | 'alarm-04' | 'alarm-05' | 'alarm-06' | 'alarm-check' | 'alarm-minus' | 'alarm-off' | 'alarm-plus' | 'alert-circle' | 'alert-square' | 'alert-triangle' | 'align-center' | 'align-down-01' | 'align-down-02' | 'align-horizontal-center-01' | 'align-horizontal-center-02' | 'align-horizontal-center-03' | 'align-justify' | 'align-left' | 'align-left-01' | 'align-left-02' | 'align-right' | 'align-right-01' | 'align-right-02' | 'align-up-01' | 'align-up-02' | 'align-vertical-center-01' | 'align-vertical-center-02' | 'align-vertical-center-03' | 'annotation' | 'annotation-alert' | 'annotation-check' | 'annotation-information' | 'annotation-plus' | 'annotation-typing' | 'annotation-x' | 'atom' | 'attatchment-01' | 'attatchment-02' | 'audio-settings-01' | 'audio-settings-02' | 'bag-01' | 'bag-02' | 'bag-03' | 'bag-04' | 'bag-05' | 'bank' | 'bank-note-01' | 'bank-note-02' | 'bank-note-03' | 'bank-note-04' | 'bank-note-05' | 'bank-note-06' | 'bar-chart-01' | 'bar-chart-02' | 'bar-chart-03' | 'bar-chart-04' | 'bar-chart-05' | 'bar-chart-square-01' | 'bar-chart-square-02' | 'bar-chart-square-03' | 'bar-chart-square-down-01' | 'bar-chart-square-down-02' | 'bar-chart-square-up-01' | 'bar-group-01' | 'bar-group-02' | 'bar-group-03' | 'battery-01' | 'battery-02' | 'battery-03' | 'battery-04' | 'battery-empty' | 'battery-fill-01' | 'battery-fill-02' | 'battery-fill-04' | 'bell-01' | 'bell-02' | 'bell-03' | 'bell-04' | 'bell-off-01' | 'bell-off-02' | 'bell-ringing-01' | 'bell-ringing-02' | 'bell-ringing-03' | 'bell-ringing-04' | 'bezier-01' | 'bezier-02' | 'bluetooth-01' | 'bluetooth-02' | 'bold-01' | 'bold-02' | 'book-01' | 'book-02' | 'book-03' | 'book-04' | 'book-05' | 'book-06' | 'box' | 'brackets' | 'brackets-check' | 'brackets-minus' | 'brackets-plus' | 'brackets-slash' | 'brackets-typing' | 'calculator-01' | 'calculator-02' | 'calendar-01' | 'calendar-02' | 'calendar-03' | 'calendar-04' | 'calendar-05' | 'calendar-06' | 'calendar-07' | 'calendar-check' | 'calendar-minus' | 'calendar-number' | 'calendar-plus' | 'camera-01' | 'camera-02' | 'camera-lens' | 'camera-off' | 'cancel-left' | 'cancel-right' | 'car' | 'card-01' | 'card-02' | 'card-add' | 'card-check' | 'card-down' | 'card-edit' | 'card-lock' | 'card-minus' | 'card-number' | 'card-shield' | 'card-up' | 'card-x' | 'cart' | 'center' | 'chart-breakout-circle' | 'chart-breakout-square' | 'check-01' | 'check-02' | 'check-broken' | 'check-contained' | 'check-square-broken' | 'check-square-contained' | 'chevron-double-down' | 'chevron-double-left' | 'chevron-double-right' | 'chevron-double-up' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'chevron-up' | 'chromecast' | 'circle' | 'clock-01' | 'clock-backward' | 'clock-check' | 'clock-forward' | 'clock-plus' | 'cloud-01' | 'cloud-02' | 'cloud-03' | 'cloud-04' | 'cloud-lightning' | 'cloud-rain' | 'cloud-snow' | 'cloud-sun' | 'code-01' | 'code-02' | 'code-03' | 'code-04' | 'coin-broken' | 'coin-hand' | 'coin-number' | 'coin-unbroken' | 'coins' | 'coins-rotate' | 'color-picker' | 'color-swatch-01' | 'color-swatch-02' | 'colors-01' | 'colors-02' | 'column-horizontal-01' | 'column-horizontal-02' | 'column-horizontal-03' | 'column-vertical-01' | 'column-vertical-02' | 'column-vertical-03' | 'compare' | 'compass' | 'component' | 'computer' | 'contrast' | 'copy-left' | 'copy-right' | 'crop-01' | 'crop-02' | 'currency-bath' | 'currency-bitcoin' | 'currency-cent' | 'currency-coin-bath' | 'currency-coin-bitcoin' | 'currency-coin-cent' | 'currency-coin-dollar' | 'currency-coin-euro' | 'currency-coin-pound' | 'currency-coin-rubel' | 'currency-coin-rupee' | 'currency-coin-yen' | 'currency-dollar' | 'currency-euro' | 'currency-pound' | 'currency-rubel' | 'currency-rupee' | 'currency-yen' | 'cursor-01' | 'cursor-02' | 'cursor-03' | 'cursor-04' | 'cursor-05' | 'cursor-06' | 'cursor-grab' | 'cursor-grabbed' | 'cursor-pointer' | 'dash' | 'data-01' | 'data-02' | 'data-03' | 'data-04' | 'delete' | 'delivery' | 'diamond' | 'disc' | 'discount-circle' | 'discount-square' | 'discount-star-01' | 'discount-star-02' | 'discount-star-03' | 'divider' | 'dot-horizontal' | 'dot-vertical' | 'download' | 'download-01' | 'download-02' | 'drop' | 'edit-01' | 'edit-02' | 'edit-03' | 'edit-04' | 'edit-contained' | 'email' | 'embed' | 'equals' | 'equals-not' | 'eraser-01' | 'eraser-02' | 'expand' | 'expand-02' | 'eye-closed' | 'eye-open' | 'face-id-01' | 'face-id-02' | 'fast-backward' | 'fast-forward' | 'favourite' | 'feather-01' | 'feather-02' | 'file' | 'file-01' | 'file-02' | 'file-03' | 'file-04' | 'file-05' | 'file-06' | 'file-attach-01' | 'file-attach-02' | 'file-attach-03' | 'file-branch' | 'file-check-01' | 'file-check-02' | 'file-code' | 'file-down-01' | 'file-down-02' | 'file-edit-01' | 'file-edit-02' | 'file-eye-01' | 'file-eye-02' | 'file-lock-01' | 'file-lock-02' | 'file-lock-03' | 'file-minus-01' | 'file-minus-02' | 'file-multiple' | 'file-none' | 'file-plus-01' | 'file-plus-02' | 'file-question-01' | 'file-question-02' | 'file-return-01' | 'file-return-02' | 'file-search-01' | 'file-search-02' | 'file-shield-01' | 'file-shield-02' | 'file-shield-03' | 'file-shred' | 'file-up-01' | 'file-up-02' | 'file-x-02' | 'filter' | 'fingerpint-01' | 'fingerpint-02' | 'flame-01' | 'flash-off' | 'flash-on' | 'flex-align-bottom-01' | 'flex-align-center-01' | 'flex-align-left-01' | 'flex-align-right-01' | 'flex-align-spaced-01' | 'flex-align-top-01' | 'flex-columns' | 'flip-01' | 'flip-02' | 'flip-left' | 'flip-right' | 'folder' | 'folder-code' | 'folder-down-01' | 'folder-down-02' | 'folder-minus-01' | 'folder-open-01' | 'folder-open-02' | 'folder-open-03' | 'folder-plus-01' | 'folder-plus-02' | 'folder-search-01' | 'folder-search-02' | 'folder-shield' | 'folder-up-01' | 'folder-up-02' | 'folder-x-01' | 'folder-x-02' | 'gear' | 'gift-01' | 'gift-02' | 'git-branch-01' | 'git-branch-02' | 'git-branch-03' | 'git-branch-04' | 'git-branch-05' | 'glasses-01' | 'glasses-02' | 'globe' | 'globe-01' | 'globe-02' | 'globe-03' | 'globe-04' | 'globe-05' | 'graduation-cap-01' | 'graduation-cap-02' | 'grid-01' | 'grid-02' | 'grid-03' | 'grid-04-filled' | 'hash-01' | 'hash-02' | 'header-01' | 'header-02' | 'headphones' | 'heart' | 'help' | 'help-circle-contained' | 'help-square-contained' | 'hexagon' | 'home-01' | 'home-02' | 'home-03' | 'home-04' | 'home-05' | 'horizontal-chart-01' | 'horizontal-chart-02' | 'horizontal-chart-03' | 'hourglass-01' | 'hourglass-02' | 'hourglass-03' | 'image' | 'image-01' | 'image-02' | 'image-03' | 'image-04' | 'image-add' | 'image-avatar' | 'image-check' | 'image-down' | 'image-focus' | 'image-indent-left' | 'image-indent-right' | 'image-minus' | 'image-no-borders' | 'image-question' | 'image-up' | 'image-x' | 'inbox-01' | 'inbox-02' | 'indent-decrease' | 'indent-increase' | 'indent-left' | 'indent-right' | 'info-square-01-contained' | 'info-square-02-contained-filled' | 'information-circle-contained' | 'intersect' | 'iphone-02' | 'italics-01' | 'italics-02' | 'key-01' | 'key-02' | 'keyboard' | 'laptop-01' | 'laptop-02' | 'layers-01' | 'layers-02' | 'layers-03' | 'layers-04' | 'layers-05' | 'layout-01' | 'layout-02' | 'layout-03' | 'layout-04' | 'layout-bottom' | 'layout-grid-01' | 'layout-left' | 'layout-right' | 'layout-scale' | 'layout-top' | 'letter-spacing-01' | 'letter-spacing-02' | 'letter-spacing-03' | 'lightbulb-01' | 'lightbulb-02' | 'lightbulb-03' | 'lightning-01' | 'lightning-02' | 'lightning-circle-contained' | 'lightning-filled' | 'lightning-square-contained' | 'line-chart-down-01' | 'line-chart-down-02' | 'line-chart-up-01' | 'line-chart-up-02' | 'line-height' | 'link' | 'link-angled' | 'link-broken' | 'link-external' | 'list' | 'list-numbers' | 'loader-01' | 'loader-02' | 'lock-01' | 'lock-02' | 'lock-03' | 'lock-04' | 'lock-open-01' | 'lock-open-02' | 'lock-open-03' | 'lock-open-04' | 'logout-01' | 'logout-02' | 'logout-03' | 'logout-04' | 'luggage-01' | 'luggage-02' | 'luggage-03' | 'luggage-04' | 'mail-01' | 'mail-02' | 'mail-03' | 'mail-04' | 'mail-05' | 'map-01' | 'map-02' | 'map-03' | 'map-04' | 'marker-01' | 'marker-02' | 'marker-03' | 'marker-04' | 'marker-05' | 'marker-06' | 'maximise-01' | 'maximise-02' | 'media-strip-01' | 'media-strip-02' | 'menu-01' | 'menu-02' | 'menu-03' | 'menu-04' | 'menu-05' | 'message-alert-circle' | 'message-alert-plus' | 'message-chat-01' | 'message-circle' | 'message-notify-circle' | 'message-notify-square' | 'message-square' | 'message-square-information' | 'message-square-plus' | 'message-square-typing' | 'message-square-x' | 'message-text-01' | 'message-text-02' | 'message-typing' | 'message-x' | 'microphone-01' | 'microphone-02' | 'microphone-off-01' | 'microphone-off-02' | 'minimise-01' | 'minimise-02' | 'minus-circle-contained' | 'minus-square-contained' | 'moon-01' | 'moon-02' | 'mouse' | 'move' | 'note-01' | 'note-02' | 'notification-box' | 'notification-bubble' | 'notification-square-01' | 'notification-square-02' | 'octagon' | 'overlap' | 'package-01' | 'package-02' | 'package-check' | 'package-minus' | 'package-plus' | 'package-x' | 'paint-bucket-01' | 'paint-bucket-02' | 'palette' | 'paperclip' | 'paperclip-01' | 'paperclip-02' | 'passport' | 'password-01' | 'password-02' | 'pause-01' | 'pause-02' | 'pause-03' | 'pen-tool-01' | 'pen-tool-02' | 'pen-tool-03' | 'pen-tool-04' | 'pencil-01' | 'pencil-02' | 'pencil-03' | 'pentagon' | 'percent-01' | 'percent-02' | 'percent-03' | 'perspective' | 'phone' | 'phone-call-01' | 'phone-call-02' | 'phone-down' | 'phone-incoming-01' | 'phone-incoming-02' | 'phone-off' | 'phone-outgoing-01' | 'phone-outgoing-02' | 'phone-up' | 'phone-x' | 'pie-chart-01' | 'pie-chart-02' | 'pie-chart-03' | 'plane' | 'play-01' | 'play-02' | 'play-03' | 'plug-01' | 'plus-01' | 'plus-02' | 'plus-03' | 'pointer-01' | 'pointer-02' | 'power' | 'presentation-01' | 'presentation-02' | 'presentation-03' | 'progress' | 'quote' | 'receipt' | 'receipt-lines' | 'refresh-01' | 'rss' | 'ruler' | 'save-01' | 'save-02' | 'scale-01' | 'scale-02' | 'scale-03' | 'scan' | 'scissors-01' | 'scissors-02' | 'scissors-03' | 'scissors-04' | 'search-01' | 'search-02' | 'send-01' | 'send-02' | 'send-03' | 'server-01' | 'server-02' | 'server-03' | 'server-04' | 'server-05' | 'server-06' | 'server-down' | 'server-up' | 'settings' | 'share' | 'shield-01' | 'shield-02' | 'shield-check' | 'shield-plus' | 'shuffle' | 'signal' | 'skew' | 'skip-back' | 'skip-forward' | 'slash-01-backward' | 'slash-01-forward' | 'slash-02-forward' | 'smiley-happy' | 'smiley-happy-plus' | 'smiley-neutral' | 'smiley-sad' | 'smiley-wink' | 'snowflake' | 'sort-horizontal' | 'sort-vertical-01' | 'sort-vertical-02' | 'space-height' | 'space-horizontal' | 'space-vertical' | 'space-width' | 'speaker' | 'square' | 'star-01' | 'star-02' | 'stars' | 'stop-01' | 'stop-02' | 'stopwatch-01' | 'stopwatch-02' | 'stopwatch-03' | 'stopwatch-04' | 'stopwatch-05' | 'stopwatch-off' | 'stopwatch-snooze' | 'sun-01' | 'sun-02' | 'sun-03' | 'sun-down' | 'sun-up' | 'superscript' | 'table' | 'tag' | 'target-01' | 'target-02' | 'target-03' | 'target-04' | 'temperature-01' | 'temperature-02' | 'temperature-03' | 'temperature-04' | 'terminal' | 'text-input-01' | 'text-input-02' | 'thumb-down' | 'thumb-up' | 'ticket-01' | 'ticket-02' | 'toggle-right' | 'toogle-left' | 'train' | 'transform' | 'trash-01' | 'trash-02' | 'trash-03' | 'trash-04' | 'trend-down-01' | 'trend-down-02' | 'trend-up-01' | 'trend-up-02' | 'triangle' | 'truck' | 'tv' | 'type-01' | 'type-02' | 'type-03' | 'type-strike-01' | 'type-strike-02' | 'umbrella' | 'umbrella-01' | 'umbrella-02' | 'underline-01' | 'underline-02' | 'union' | 'upload-01' | 'upload-02' | 'upload-03' | 'upload-04' | 'user-profile-01' | 'user-profile-02' | 'user-profile-03' | 'user-profile-add-01' | 'user-profile-add-02' | 'user-profile-check' | 'user-profile-circle' | 'user-profile-down' | 'user-profile-group' | 'user-profile-left' | 'user-profile-minus' | 'user-profile-right' | 'user-profile-square' | 'user-profile-star' | 'user-profile-up' | 'user-profile-x' | 'users-profiles-01' | 'users-profiles-02' | 'users-profiles-03' | 'users-profiles-check' | 'users-profiles-down' | 'users-profiles-left' | 'users-profiles-minus' | 'users-profiles-plus' | 'users-profiles-right' | 'users-profiles-up' | 'users-profiles-x' | 'variant' | 'video-off' | 'video-on' | 'volume-01' | 'volume-02' | 'volume-03' | 'volume-04' | 'volume-05' | 'volume-06' | 'volume-07' | 'wallert-04' | 'wallet-01' | 'wallet-02' | 'wallet-03' | 'watch-01' | 'watch-02' | 'waveform' | 'webcam' | 'wifi-off' | 'wifi-on' | 'wind-01' | 'wind-02' | 'wind-03' | 'wrench' | 'x-01' | 'x-02' | 'x-03' | 'x-circle-contained' | 'x-square-contained' | 'youtube' | 'zoom-in' | 'zoom-out' | 'custom-warning-xs-neutral';
6707
+
5741
6708
  /**
5742
6709
  * Global registry for SVG icons.
5743
6710
  *
@@ -5777,6 +6744,46 @@ declare class IconRegistry {
5777
6744
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<IconRegistry>;
5778
6745
  }
5779
6746
 
6747
+ /**
6748
+ * Custom icon names — self-contained icons with built-in background and color.
6749
+ *
6750
+ * Naming: `custom-{state}-{size}-{style}`
6751
+ *
6752
+ * | State | Description |
6753
+ * |------------------|------------------------------------|
6754
+ * | check | Checkmark / completed |
6755
+ * | certificate | Certificate / credential |
6756
+ * | view | Eye / visibility |
6757
+ * | add | Plus / create |
6758
+ * | delete | Trash / remove |
6759
+ * | download | Download arrow |
6760
+ * | upload | Upload arrow |
6761
+ * | time | Clock / duration |
6762
+ * | slide | Presentation / slideshow |
6763
+ * | tools | Wrench / settings |
6764
+ * | doc | Document / file |
6765
+ * | info | Information circle |
6766
+ * | warning | Warning triangle |
6767
+ * | not-applicable | N/A / disabled |
6768
+ *
6769
+ * Sizes: xs (24), sm (32), md (40), lg (48), xl (56), 2xl (64)
6770
+ * Styles: active (colored), neutral (gray)
6771
+ *
6772
+ * Course-progress set (member dashboard tracker) — multi-color artwork icons
6773
+ * available in `md` only; `-off` source artwork maps to the `neutral` style:
6774
+ *
6775
+ * | State | Column |
6776
+ * |--------------------------------------------------------------------|-------------|
6777
+ * | content-classroom, content-selfstudy, content-elearning, | Content |
6778
+ * | content-liveonline, content-technical (active + neutral) | |
6779
+ * | att-acc, att-evaluate, att-na | Attendance |
6780
+ * | exam-passed, exam-schedule, exam-scheduled, exam-missed, | Exam |
6781
+ * | exam-failed, exam-waiting | |
6782
+ * | cert-view, cert-apply, cert-treatment, cert-refused | Certificate |
6783
+ * | amf-note, amf-note-paid | AMF/Renewal |
6784
+ */
6785
+ type CustomIconName = 'custom-add-2xl-active' | 'custom-add-2xl-neutral' | 'custom-add-lg-active' | 'custom-add-lg-neutral' | 'custom-add-md-active' | 'custom-add-md-neutral' | 'custom-add-sm-active' | 'custom-add-sm-neutral' | 'custom-add-xl-active' | 'custom-add-xl-neutral' | 'custom-add-xs-active' | 'custom-add-xs-neutral' | 'custom-amf-note-md-active' | 'custom-amf-note-paid-md-active' | 'custom-att-acc-md-active' | 'custom-att-evaluate-md-active' | 'custom-att-na-md-active' | 'custom-cert-apply-md-active' | 'custom-cert-refused-md-active' | 'custom-cert-treatment-md-active' | 'custom-cert-view-md-active' | 'custom-certificate-2xl-active' | 'custom-certificate-2xl-neutral' | 'custom-certificate-lg-active' | 'custom-certificate-lg-neutral' | 'custom-certificate-md-active' | 'custom-certificate-md-neutral' | 'custom-certificate-sm-active' | 'custom-certificate-sm-neutral' | 'custom-certificate-xl-active' | 'custom-certificate-xl-neutral' | 'custom-certificate-xs-active' | 'custom-certificate-xs-neutral' | 'custom-check-2xl-active' | 'custom-check-2xl-neutral' | 'custom-check-lg-active' | 'custom-check-lg-neutral' | 'custom-check-md-active' | 'custom-check-md-neutral' | 'custom-check-sm-active' | 'custom-check-sm-neutral' | 'custom-check-xl-active' | 'custom-check-xl-neutral' | 'custom-check-xs-active' | 'custom-check-xs-neutral' | 'custom-content-classroom-md-active' | 'custom-content-classroom-md-neutral' | 'custom-content-elearning-md-active' | 'custom-content-elearning-md-neutral' | 'custom-content-liveonline-md-active' | 'custom-content-liveonline-md-neutral' | 'custom-content-selfstudy-md-active' | 'custom-content-selfstudy-md-neutral' | 'custom-content-technical-md-active' | 'custom-content-technical-md-neutral' | 'custom-delete-2xl-active' | 'custom-delete-2xl-neutral' | 'custom-delete-lg-active' | 'custom-delete-lg-neutral' | 'custom-delete-md-active' | 'custom-delete-md-neutral' | 'custom-delete-sm-active' | 'custom-delete-sm-neutral' | 'custom-delete-xl-active' | 'custom-delete-xl-neutral' | 'custom-delete-xs-active' | 'custom-delete-xs-neutral' | 'custom-doc-2xl-active' | 'custom-doc-2xl-neutral' | 'custom-doc-lg-active' | 'custom-doc-lg-neutral' | 'custom-doc-md-active' | 'custom-doc-md-neutral' | 'custom-doc-sm-active' | 'custom-doc-sm-neutral' | 'custom-doc-xl-active' | 'custom-doc-xl-neutral' | 'custom-doc-xs-active' | 'custom-doc-xs-neutral' | 'custom-download-2xl-active' | 'custom-download-2xl-neutral' | 'custom-download-lg-active' | 'custom-download-lg-neutral' | 'custom-download-md-active' | 'custom-download-md-neutral' | 'custom-download-sm-active' | 'custom-download-sm-neutral' | 'custom-download-xl-active' | 'custom-download-xl-neutral' | 'custom-download-xs-active' | 'custom-download-xs-neutral' | 'custom-exam-failed-md-active' | 'custom-exam-missed-md-active' | 'custom-exam-passed-md-active' | 'custom-exam-schedule-md-active' | 'custom-exam-scheduled-md-active' | 'custom-exam-waiting-md-active' | 'custom-info-2xl-active' | 'custom-info-2xl-neutral' | 'custom-info-lg-active' | 'custom-info-lg-neutral' | 'custom-info-md-active' | 'custom-info-md-neutral' | 'custom-info-sm-active' | 'custom-info-sm-neutral' | 'custom-info-xl-active' | 'custom-info-xl-neutral' | 'custom-info-xs-active' | 'custom-info-xs-neutral' | 'custom-not-applicable-2xl-active' | 'custom-not-applicable-2xl-neutral' | 'custom-not-applicable-lg-active' | 'custom-not-applicable-lg-neutral' | 'custom-not-applicable-md-active' | 'custom-not-applicable-md-neutral' | 'custom-not-applicable-sm-active' | 'custom-not-applicable-sm-neutral' | 'custom-not-applicable-xl-active' | 'custom-not-applicable-xl-neutral' | 'custom-not-applicable-xs-active' | 'custom-not-applicable-xs-neutral' | 'custom-slide-2xl-active' | 'custom-slide-2xl-neutral' | 'custom-slide-lg-active' | 'custom-slide-lg-neutral' | 'custom-slide-md-active' | 'custom-slide-md-neutral' | 'custom-slide-sm-active' | 'custom-slide-sm-neutral' | 'custom-slide-xl-active' | 'custom-slide-xl-neutral' | 'custom-slide-xs-active' | 'custom-slide-xs-neutral' | 'custom-time-2xl-active' | 'custom-time-2xl-neutral' | 'custom-time-lg-active' | 'custom-time-lg-neutral' | 'custom-time-md-active' | 'custom-time-md-neutral' | 'custom-time-sm-active' | 'custom-time-sm-neutral' | 'custom-time-xl-active' | 'custom-time-xl-neutral' | 'custom-time-xs-active' | 'custom-time-xs-neutral' | 'custom-tools-2xl-active' | 'custom-tools-2xl-neutral' | 'custom-tools-lg-active' | 'custom-tools-lg-neutral' | 'custom-tools-md-active' | 'custom-tools-md-neutral' | 'custom-tools-sm-active' | 'custom-tools-sm-neutral' | 'custom-tools-xl-active' | 'custom-tools-xl-neutral' | 'custom-tools-xs-active' | 'custom-tools-xs-neutral' | 'custom-upload-2xl-active' | 'custom-upload-2xl-neutral' | 'custom-upload-lg-active' | 'custom-upload-lg-neutral' | 'custom-upload-md-active' | 'custom-upload-md-neutral' | 'custom-upload-sm-active' | 'custom-upload-sm-neutral' | 'custom-upload-xl-active' | 'custom-upload-xl-neutral' | 'custom-upload-xs-active' | 'custom-upload-xs-neutral' | 'custom-view-2xl-active' | 'custom-view-2xl-neutral' | 'custom-view-lg-active' | 'custom-view-lg-neutral' | 'custom-view-md-active' | 'custom-view-md-neutral' | 'custom-view-sm-active' | 'custom-view-sm-neutral' | 'custom-view-xl-active' | 'custom-view-xl-neutral' | 'custom-view-xs-active' | 'custom-view-xs-neutral' | 'custom-warning-2xl-active' | 'custom-warning-2xl-neutral' | 'custom-warning-lg-active' | 'custom-warning-lg-neutral' | 'custom-warning-md-active' | 'custom-warning-md-neutral' | 'custom-warning-sm-active' | 'custom-warning-sm-neutral' | 'custom-warning-xl-active' | 'custom-warning-xl-neutral' | 'custom-warning-xs-active' | 'custom-warning-xs-neutral';
6786
+
5780
6787
  /**
5781
6788
  * Map of every PECB icon name to its inline SVG string.
5782
6789
  *
@@ -5936,6 +6943,7 @@ declare class DashboardGridComponent {
5936
6943
  type ProgressType = 'bar' | 'circle' | 'spinner';
5937
6944
  type ProgressBarSize = 'sm' | 'lg';
5938
6945
  type ProgressCircleSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
6946
+ type ProgressArcSize = 'sm' | 'md' | 'lg';
5939
6947
  declare class SpinnerComponent {
5940
6948
  id: _angular_core.InputSignal<string>;
5941
6949
  size: _angular_core.InputSignal<number>;
@@ -5990,6 +6998,41 @@ declare class ProgressCircleComponent {
5990
6998
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProgressCircleComponent, never>;
5991
6999
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProgressCircleComponent, "pecb-progress-circle", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "showPercentage": { "alias": "showPercentage"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5992
7000
  }
7001
+ /**
7002
+ * Half-round (180°) progress gauge with a "value/max" label under the arc —
7003
+ * e.g. the CPD column of the member dashboard's course progress tracker
7004
+ * ("170/180"). Green as soon as there is any progress, muted at zero.
7005
+ *
7006
+ * @example
7007
+ * <pecb-progress-arc [value]="170" [max]="180" />
7008
+ */
7009
+ declare class ProgressArcComponent {
7010
+ id: _angular_core.InputSignal<string>;
7011
+ /** Current value (e.g. CPD credits earned) */
7012
+ value: _angular_core.InputSignal<number>;
7013
+ /** Target value the arc fills towards (e.g. CPD credits required) */
7014
+ max: _angular_core.InputSignal<number>;
7015
+ /** Show the "value/max" label under the arc */
7016
+ showLabel: _angular_core.InputSignal<boolean>;
7017
+ /** Gauge width: sm (48px), md (60px), lg (80px) */
7018
+ size: _angular_core.InputSignal<ProgressArcSize>;
7019
+ /** Custom fill color — overrides the automatic green/muted coloring */
7020
+ color: _angular_core.InputSignal<string>;
7021
+ ariaLabel: _angular_core.InputSignal<string>;
7022
+ private readonly arcLength;
7023
+ private readonly sizeMap;
7024
+ private readonly fontSizeMap;
7025
+ widthValue: _angular_core.Signal<number>;
7026
+ heightValue: _angular_core.Signal<number>;
7027
+ fontSize: _angular_core.Signal<number>;
7028
+ clampedValue: _angular_core.Signal<number>;
7029
+ percent: _angular_core.Signal<number>;
7030
+ dashArray: _angular_core.Signal<string>;
7031
+ fillColor: _angular_core.Signal<string>;
7032
+ get arcClasses(): string[];
7033
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProgressArcComponent, never>;
7034
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProgressArcComponent, "pecb-progress-arc", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
7035
+ }
5993
7036
 
5994
7037
  type CodeInputState = 'default' | 'error';
5995
7038
  type CodeInputDirection = 'horizontal' | 'vertical';
@@ -6988,83 +8031,6 @@ declare class ExpandableRowTableComponent {
6988
8031
  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>;
6989
8032
  }
6990
8033
 
6991
- /**
6992
- * Badge variant type.
6993
- * - `dot`: small 6px red dot indicator
6994
- * - `count`: numbered badge (default or small size)
6995
- * - `status`: colored dot + text label
6996
- * - `ribbon`: colored tag with bottom-right arrow fold
6997
- */
6998
- type BadgeVariant = 'dot' | 'count' | 'status' | 'ribbon';
6999
- /**
7000
- * Count badge size.
7001
- * - `default`: 20px height, 14px font
7002
- * - `small`: 14px height, 12px font
7003
- */
7004
- type BadgeSize = 'default' | 'small';
7005
- /**
7006
- * Status badge type — determines the dot color.
7007
- */
7008
- type BadgeStatus = 'success' | 'error' | 'default' | 'processing' | 'warning';
7009
- /**
7010
- * Ribbon badge color.
7011
- */
7012
- type RibbonColor = 'blue' | 'orange' | 'gray' | 'red' | 'purple' | 'green' | 'black';
7013
- /**
7014
- * Badge component matching the PECB Figma design system.
7015
- *
7016
- * Three sub-types: Basic (dot/count), Status (dot + label), Ribbon (colored tag).
7017
- *
7018
- * @example
7019
- * ```html
7020
- * <!-- Dot indicator -->
7021
- * <pecb-badge variant="dot"></pecb-badge>
7022
- *
7023
- * <!-- Count badge -->
7024
- * <pecb-badge variant="count" [count]="21"></pecb-badge>
7025
- * <pecb-badge variant="count" [count]="5" size="small"></pecb-badge>
7026
- *
7027
- * <!-- Status badge -->
7028
- * <pecb-badge variant="status" status="success"></pecb-badge>
7029
- * <pecb-badge variant="status" status="error" label="Failed"></pecb-badge>
7030
- *
7031
- * <!-- Ribbon badge -->
7032
- * <pecb-badge variant="ribbon" ribbonColor="blue" text="New"></pecb-badge>
7033
- * ```
7034
- */
7035
- declare class BadgeComponent {
7036
- /** Unique element ID */
7037
- id: _angular_core.InputSignal<string>;
7038
- /** Badge variant */
7039
- variant: _angular_core.InputSignal<BadgeVariant>;
7040
- /** Count number (for variant='count') */
7041
- count: _angular_core.InputSignal<number>;
7042
- /** Max count before showing "99+" (for variant='count') */
7043
- maxCount: _angular_core.InputSignal<number>;
7044
- /** Count badge size */
7045
- size: _angular_core.InputSignal<BadgeSize>;
7046
- /** Status type (for variant='status') */
7047
- status: _angular_core.InputSignal<BadgeStatus>;
7048
- /** Label text (for variant='status'). Defaults to the status name. */
7049
- label: _angular_core.InputSignal<string>;
7050
- /** Whether to show the label text (for variant='status') */
7051
- showLabel: _angular_core.InputSignal<boolean>;
7052
- /** Ribbon color (for variant='ribbon') */
7053
- ribbonColor: _angular_core.InputSignal<RibbonColor>;
7054
- /** Ribbon/badge text (for variant='ribbon') */
7055
- text: _angular_core.InputSignal<string>;
7056
- /** Aria-label for the dot indicator (variant='dot'). */
7057
- notificationAriaLabel: _angular_core.InputSignal<string>;
7058
- /** Word appended after the count in the count badge's aria-label (variant='count'). */
7059
- notificationsLabel: _angular_core.InputSignal<string>;
7060
- /** Formatted count display */
7061
- displayCount: _angular_core.Signal<string>;
7062
- /** Status label — uses explicit label or falls back to status name */
7063
- statusLabel: _angular_core.Signal<string>;
7064
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<BadgeComponent, never>;
7065
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BadgeComponent, "pecb-badge", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "count": { "alias": "count"; "required": false; "isSignal": true; }; "maxCount": { "alias": "maxCount"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "ribbonColor": { "alias": "ribbonColor"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "notificationAriaLabel": { "alias": "notificationAriaLabel"; "required": false; "isSignal": true; }; "notificationsLabel": { "alias": "notificationsLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
7066
- }
7067
-
7068
8034
  /**
7069
8035
  * Position of the sticky (affix) panel.
7070
8036
  * - `left`: sticky panel on the left, scrollable content on the right
@@ -7935,7 +8901,7 @@ declare class FilterColumnsComponent implements OnInit, OnChanges, OnDestroy, Af
7935
8901
  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; }; "filtersTabLabel": { "alias": "filtersTabLabel"; "required": false; "isSignal": true; }; "columnsTabLabel": { "alias": "columnsTabLabel"; "required": false; "isSignal": true; }; "columnsDescription": { "alias": "columnsDescription"; "required": false; "isSignal": true; }; "selectAllLabel": { "alias": "selectAllLabel"; "required": false; "isSignal": true; }; "deselectAllLabel": { "alias": "deselectAllLabel"; "required": false; "isSignal": true; }; "resetLabel": { "alias": "resetLabel"; "required": false; "isSignal": true; }; "columnsWarning": { "alias": "columnsWarning"; "required": false; "isSignal": true; }; "saveAsViewLabel": { "alias": "saveAsViewLabel"; "required": false; "isSignal": true; }; "viewNameLabel": { "alias": "viewNameLabel"; "required": false; "isSignal": true; }; "setDefaultViewLabel": { "alias": "setDefaultViewLabel"; "required": false; "isSignal": true; }; }, { "isOpen": "isOpenChange"; "applied": "applied"; "cancelled": "cancelled"; "closed": "closed"; }, never, never, true, never>;
7936
8902
  }
7937
8903
 
7938
- type FileUploadVariant = 'dropzone' | 'inline';
8904
+ type FileUploadVariant = 'dropzone' | 'inline' | 'compact';
7939
8905
  type FileUploadState = 'default' | 'uploading' | 'complete' | 'error';
7940
8906
  interface UploadedFile {
7941
8907
  id: string;
@@ -7956,6 +8922,10 @@ declare class FileUploadComponent implements OnInit {
7956
8922
  id: _angular_core.InputSignal<string>;
7957
8923
  /** Visual variant: dropzone (big area) or inline (compact row) */
7958
8924
  variant: _angular_core.InputSignal<FileUploadVariant>;
8925
+ /** compact variant: text before the browse link */
8926
+ compactText: _angular_core.InputSignal<string>;
8927
+ /** compact variant: the highlighted browse link */
8928
+ compactBrowseLabel: _angular_core.InputSignal<string>;
7959
8929
  /** Whether multiple files can be uploaded */
7960
8930
  multiple: _angular_core.InputSignal<boolean>;
7961
8931
  /** Accepted file types (e.g. '.pdf,.png,.jpg') */
@@ -8064,7 +9034,7 @@ declare class FileUploadComponent implements OnInit {
8064
9034
  formatFileDate(date: Date): string;
8065
9035
  getFileTypeColor(type: string): string;
8066
9036
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FileUploadComponent, never>;
8067
- 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>;
9037
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FileUploadComponent, "pecb-file-upload", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "compactText": { "alias": "compactText"; "required": false; "isSignal": true; }; "compactBrowseLabel": { "alias": "compactBrowseLabel"; "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>;
8068
9038
  }
8069
9039
 
8070
9040
  type ToolbarVariant = 'buttons' | 'tabs';
@@ -8364,5 +9334,233 @@ declare class TourComponent implements OnInit, OnChanges {
8364
9334
  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; }; "closeAriaLabel": { "alias": "closeAriaLabel"; "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>;
8365
9335
  }
8366
9336
 
8367
- export { APP_HEADER_TRANSLATIONS, APP_SHELL_LOCALES, APP_SIDEBAR_MENU_ICONS, APP_SIDEBAR_MENU_TRANSLATIONS, APP_SIDEBAR_TRANSLATIONS, AccordionItemComponent, AccordionSmallComponent, AddButtonComponent, AdminHeaderComponent, AdminHeaderFieldTemplateDirective, AffixComponent, AlertComponent, AnchorComponent, AppHeaderComponent, AppSidebarComponent, 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, CourseContentPanelComponent, CoursePlayerComponent, DEFAULT_APP_HEADER_LABELS, DEFAULT_APP_SIDEBAR_LABELS, DEFAULT_APP_SIDEBAR_LANGUAGES, DEFAULT_APP_SIDEBAR_MENU, DEFAULT_APP_SIDEBAR_ROLES, DEFAULT_COURSE_CONTENT_PANEL_LABELS, DEFAULT_LANGUAGES, DEFAULT_VIDEO_PLAYER_LABELS, DEFAULT_VIDEO_PLAYER_RATES, 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, IconRegistry, IconTagComponent, InformationBoxComponent, InputComponent, LanguageDropdownComponent, LinkButtonComponent, LoadingService, MediaComponent, MessageBubbleComponent, MessageItemComponent, MetricsCardComponent, MiniIconButtonComponent, NoResultsComponent, NoteSidebarItemComponent, NotesPanelComponent, NotificationService, NotificationStatusLinkComponent, PECB_COLOR_PALETTE, PECB_CUSTOM_ICONS, PECB_FONT_STYLES, PECB_ICONS, PECB_TYPE_SCALE, PaginationComponent, 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, VideoPlayerComponent, VideoUploadBarComponent, VirtualTableComponent, addClass, announceToScreenReader, appHeaderLabels, appSidebarLabels, appSidebarMenu, appSidebarRoles, capitalize, closestElement, copyToClipboard, courseModuleStats, courseProgress, createAuthError, createAuthorizationError, createConfigError, createError, createNetworkError, createValidationError, disableBodyScroll, escapeHtml, findCourseLesson, findCourseModule, formatCount, formatCourseDuration, formatCourseTime, formatErrorForLog, formatErrorMessage, formatVideoTime, generateLinkedIds, generateUniqueId, getAriaCurrent, getButtonAriaAttributes, getComputedStyleValue, getDialogAriaAttributes, getFocusableElements, getInitials, getInputAriaAttributes, getOptionAriaAttributes, getProgressAriaAttributes, getScrollParent, getTabAriaAttributes, getVisuallyHiddenStyles, handleError, hasClass, isBlank, isBrowser, isElementVisible, isNotBlank, isPecbError, isRecoverableError, matchesSelector, parseLessonPartTitle, pluralize, prefersHighContrast, prefersReducedMotion, registerErrorHandler, removeClass, resolveAppShellLocale, resolveLessonStatus, scrollIntoView, slugify, stripHtml, toCamelCase, toKebabCase, toPascalCase, toSnakeCase, toggleClass, trapFocus, truncate, tryAsync, trySync, wrapError };
8368
- export type { AccordionVariant, AddButtonVariant, AdminHeaderAction, AdminHeaderActionType, AdminHeaderBadgeVariant, AdminHeaderField, AdminHeaderFieldType, AdminHeaderMetadata, AdminHeaderMetadataType, AdminHeaderProfile, AffixPosition, AlertType, AlertVariant, Alignment, AnchorDirection, AnchorItem, AnchorLevel, AnimationTiming, AppHeaderAction, AppHeaderChip, AppHeaderChipTone, AppHeaderLabels, AppHeaderNotification, AppShellLocale, AppShellTranslations, AppSidebarLabels, AppSidebarMenuItem, AppSidebarMenuOption, AppSidebarMenuOptionChange, AppSidebarMenuStrings, AppSidebarNavGroup, AppSidebarNavItem, AppSidebarProduct, AppSidebarRouterLink, AppSidebarUser, 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, CourseContentPanelAccent, CourseContentPanelDensity, CourseContentPanelLabels, CourseContentPanelLayout, CourseContentPanelTab, CourseLesson, CourseLessonRunView, CourseLessonStatus, CourseLessonType, CourseLessonView, CourseModule, CourseModuleStats, CourseModuleView, CoursePlayerPanelPosition, CourseProgressStats, CourseTimelineRow, CourseTranscriptCue, CourseTranscriptRow, CustomIconName, 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, IconName, IconShape, IconSize, IconTagType, InformationBoxVariant, InputSize, InputType, LanguageDisplayMode, LanguageOption, LinkButtonType, Loadable, LoadingState, MarkedDate, 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, VideoPlayerError, VideoPlayerLabels, VideoPlayerPreload, VideoPlayerSource, VideoPlayerTimeEvent, VideoPlayerTrack, VirtualTableColumn, VirtualTablePageEvent, VirtualTableProgressConfig };
9337
+ /**
9338
+ * Card size:
9339
+ * - 'default' — program cards (80px icon tile, 19px title, description)
9340
+ * - 'compact' — application cards (64px icon tile, 16px title)
9341
+ */
9342
+ type HubCardSize = 'default' | 'compact';
9343
+ /**
9344
+ * Central Hub navigation card — an icon tile, a title, an optional
9345
+ * description and an optional status badge (e.g. "Soon").
9346
+ *
9347
+ * Renders as an `<a>` when [href] is set (and the card is enabled),
9348
+ * otherwise as a keyboard-accessible button-like element that emits
9349
+ * (cardClick).
9350
+ *
9351
+ * The icon can be provided three ways (first match wins):
9352
+ * 1. [iconSrc] — image URL (svg/png)
9353
+ * 2. [iconSvg] — raw SVG string (sanitized internally)
9354
+ * 3. projected content marked with the `hubCardIcon` attribute
9355
+ */
9356
+ declare class HubCardComponent {
9357
+ private sanitizer;
9358
+ /** Card title (required) */
9359
+ title: _angular_core.InputSignal<string>;
9360
+ /** Supporting text under the title; hidden when empty */
9361
+ description: _angular_core.InputSignal<string>;
9362
+ /** 'default' for program cards, 'compact' for application cards */
9363
+ size: _angular_core.InputSignal<HubCardSize>;
9364
+ /** Badge shown in the top-right corner (e.g. "Soon"); hidden when empty */
9365
+ badgeText: _angular_core.InputSignal<string>;
9366
+ /** Disables interaction and dims the card */
9367
+ disabled: _angular_core.InputSignal<boolean>;
9368
+ /** When set, the card renders as a link */
9369
+ href: _angular_core.InputSignal<string>;
9370
+ /** Link target, e.g. "_blank" — only used together with [href] */
9371
+ target: _angular_core.InputSignal<string>;
9372
+ /** Icon image URL — rendered inside the icon tile */
9373
+ iconSrc: _angular_core.InputSignal<string>;
9374
+ /** Raw SVG string for the icon — used when [iconSrc] is empty */
9375
+ iconSvg: _angular_core.InputSignal<string>;
9376
+ /** Emitted on click / Enter / Space when the card has no [href] */
9377
+ cardClick: _angular_core.OutputEmitterRef<void>;
9378
+ /** Card renders as a link only when enabled and an href is provided */
9379
+ isLink: _angular_core.Signal<boolean>;
9380
+ /** rel="noopener noreferrer" is applied automatically for target="_blank" */
9381
+ rel: _angular_core.Signal<"noopener noreferrer" | null>;
9382
+ safeIconSvg: _angular_core.Signal<_angular_platform_browser.SafeHtml | null>;
9383
+ hostClasses: _angular_core.Signal<string>;
9384
+ onActivate(event: Event): void;
9385
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HubCardComponent, never>;
9386
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HubCardComponent, "pecb-hub-card", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "badgeText": { "alias": "badgeText"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "iconSrc": { "alias": "iconSrc"; "required": false; "isSignal": true; }; "iconSvg": { "alias": "iconSvg"; "required": false; "isSignal": true; }; }, { "cardClick": "cardClick"; }, never, ["[hubCardIcon]"], true, never>;
9387
+ }
9388
+
9389
+ /**
9390
+ * Responsive grid wrapper for <pecb-hub-card> elements, with an optional
9391
+ * section heading (e.g. "Programs", "Applications").
9392
+ *
9393
+ * Columns adapt automatically to the available container width — no media
9394
+ * queries needed by the consumer: cards wrap once they would shrink below
9395
+ * [minCardWidth], down to a single column on narrow screens.
9396
+ *
9397
+ * @example
9398
+ * <pecb-hub-card-grid sectionTitle="Programs">
9399
+ * <pecb-hub-card title="Skills" description="..." iconSrc="..." />
9400
+ * <pecb-hub-card title="Store" description="..." iconSrc="..." />
9401
+ * </pecb-hub-card-grid>
9402
+ */
9403
+ declare class HubCardGridComponent {
9404
+ /** Optional section heading rendered above the grid */
9405
+ sectionTitle: _angular_core.InputSignal<string>;
9406
+ /** Minimum card width in px before the grid wraps to fewer columns */
9407
+ minCardWidth: _angular_core.InputSignal<number>;
9408
+ /** Gap between cards in px */
9409
+ gap: _angular_core.InputSignal<number>;
9410
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HubCardGridComponent, never>;
9411
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HubCardGridComponent, "pecb-hub-card-grid", never, { "sectionTitle": { "alias": "sectionTitle"; "required": false; "isSignal": true; }; "minCardWidth": { "alias": "minCardWidth"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
9412
+ }
9413
+
9414
+ /** Priority of a recommended action — drives the pill and default tones. */
9415
+ type ActionItemPriority = 'high' | 'medium' | 'low';
9416
+ /**
9417
+ * "Recommended action" row — a leading icon in a tinted tile, a bold title,
9418
+ * a muted description, a small priority pill (High/Medium/Low mapped to
9419
+ * error/warning/neutral tones) and a trailing CTA button.
9420
+ *
9421
+ * The icon tint, pill tone and CTA variant all derive from [priority] by
9422
+ * default; [ctaVariant] and [priorityLabel] override the derived values
9423
+ * (e.g. for translated labels).
9424
+ *
9425
+ * @example
9426
+ * <pecb-action-item
9427
+ * icon="refresh-01"
9428
+ * title="Renew ISO/IEC 27001 Lead Auditor"
9429
+ * description="Expires in 25 days — start early to avoid a lapse."
9430
+ * priority="high"
9431
+ * ctaLabel="Renew"
9432
+ * (ctaClicked)="renew()"
9433
+ * />
9434
+ */
9435
+ declare class ActionItemComponent {
9436
+ /** Leading icon name (general or custom registry icon); hidden when empty */
9437
+ icon: _angular_core.InputSignal<"" | "embed" | "link" | "progress" | "table" | "circle" | "filter" | "image" | "annotation" | "center" | "drop" | "activity" | "add-square-01" | "add-square-02" | "add-square-03" | "add-square-04" | "alarm-01" | "alarm-02" | "alarm-03" | "alarm-04" | "alarm-05" | "alarm-06" | "alarm-check" | "alarm-minus" | "alarm-off" | "alarm-plus" | "alert-circle" | "alert-square" | "alert-triangle" | "align-center" | "align-down-01" | "align-down-02" | "align-horizontal-center-01" | "align-horizontal-center-02" | "align-horizontal-center-03" | "align-justify" | "align-left" | "align-left-01" | "align-left-02" | "align-right" | "align-right-01" | "align-right-02" | "align-up-01" | "align-up-02" | "align-vertical-center-01" | "align-vertical-center-02" | "align-vertical-center-03" | "annotation-alert" | "annotation-check" | "annotation-information" | "annotation-plus" | "annotation-typing" | "annotation-x" | "atom" | "attatchment-01" | "attatchment-02" | "audio-settings-01" | "audio-settings-02" | "bag-01" | "bag-02" | "bag-03" | "bag-04" | "bag-05" | "bank" | "bank-note-01" | "bank-note-02" | "bank-note-03" | "bank-note-04" | "bank-note-05" | "bank-note-06" | "bar-chart-01" | "bar-chart-02" | "bar-chart-03" | "bar-chart-04" | "bar-chart-05" | "bar-chart-square-01" | "bar-chart-square-02" | "bar-chart-square-03" | "bar-chart-square-down-01" | "bar-chart-square-down-02" | "bar-chart-square-up-01" | "bar-group-01" | "bar-group-02" | "bar-group-03" | "battery-01" | "battery-02" | "battery-03" | "battery-04" | "battery-empty" | "battery-fill-01" | "battery-fill-02" | "battery-fill-04" | "bell-01" | "bell-02" | "bell-03" | "bell-04" | "bell-off-01" | "bell-off-02" | "bell-ringing-01" | "bell-ringing-02" | "bell-ringing-03" | "bell-ringing-04" | "bezier-01" | "bezier-02" | "bluetooth-01" | "bluetooth-02" | "bold-01" | "bold-02" | "book-01" | "book-02" | "book-03" | "book-04" | "book-05" | "book-06" | "box" | "brackets" | "brackets-check" | "brackets-minus" | "brackets-plus" | "brackets-slash" | "brackets-typing" | "calculator-01" | "calculator-02" | "calendar-01" | "calendar-02" | "calendar-03" | "calendar-04" | "calendar-05" | "calendar-06" | "calendar-07" | "calendar-check" | "calendar-minus" | "calendar-number" | "calendar-plus" | "camera-01" | "camera-02" | "camera-lens" | "camera-off" | "cancel-left" | "cancel-right" | "car" | "card-01" | "card-02" | "card-add" | "card-check" | "card-down" | "card-edit" | "card-lock" | "card-minus" | "card-number" | "card-shield" | "card-up" | "card-x" | "cart" | "chart-breakout-circle" | "chart-breakout-square" | "check-01" | "check-02" | "check-broken" | "check-contained" | "check-square-broken" | "check-square-contained" | "chevron-double-down" | "chevron-double-left" | "chevron-double-right" | "chevron-double-up" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chromecast" | "clock-01" | "clock-backward" | "clock-check" | "clock-forward" | "clock-plus" | "cloud-01" | "cloud-02" | "cloud-03" | "cloud-04" | "cloud-lightning" | "cloud-rain" | "cloud-snow" | "cloud-sun" | "code-01" | "code-02" | "code-03" | "code-04" | "coin-broken" | "coin-hand" | "coin-number" | "coin-unbroken" | "coins" | "coins-rotate" | "color-picker" | "color-swatch-01" | "color-swatch-02" | "colors-01" | "colors-02" | "column-horizontal-01" | "column-horizontal-02" | "column-horizontal-03" | "column-vertical-01" | "column-vertical-02" | "column-vertical-03" | "compare" | "compass" | "component" | "computer" | "contrast" | "copy-left" | "copy-right" | "crop-01" | "crop-02" | "currency-bath" | "currency-bitcoin" | "currency-cent" | "currency-coin-bath" | "currency-coin-bitcoin" | "currency-coin-cent" | "currency-coin-dollar" | "currency-coin-euro" | "currency-coin-pound" | "currency-coin-rubel" | "currency-coin-rupee" | "currency-coin-yen" | "currency-dollar" | "currency-euro" | "currency-pound" | "currency-rubel" | "currency-rupee" | "currency-yen" | "cursor-01" | "cursor-02" | "cursor-03" | "cursor-04" | "cursor-05" | "cursor-06" | "cursor-grab" | "cursor-grabbed" | "cursor-pointer" | "dash" | "data-01" | "data-02" | "data-03" | "data-04" | "delete" | "delivery" | "diamond" | "disc" | "discount-circle" | "discount-square" | "discount-star-01" | "discount-star-02" | "discount-star-03" | "divider" | "dot-horizontal" | "dot-vertical" | "download" | "download-01" | "download-02" | "edit-01" | "edit-02" | "edit-03" | "edit-04" | "edit-contained" | "email" | "equals" | "equals-not" | "eraser-01" | "eraser-02" | "expand" | "expand-02" | "eye-closed" | "eye-open" | "face-id-01" | "face-id-02" | "fast-backward" | "fast-forward" | "favourite" | "feather-01" | "feather-02" | "file" | "file-01" | "file-02" | "file-03" | "file-04" | "file-05" | "file-06" | "file-attach-01" | "file-attach-02" | "file-attach-03" | "file-branch" | "file-check-01" | "file-check-02" | "file-code" | "file-down-01" | "file-down-02" | "file-edit-01" | "file-edit-02" | "file-eye-01" | "file-eye-02" | "file-lock-01" | "file-lock-02" | "file-lock-03" | "file-minus-01" | "file-minus-02" | "file-multiple" | "file-none" | "file-plus-01" | "file-plus-02" | "file-question-01" | "file-question-02" | "file-return-01" | "file-return-02" | "file-search-01" | "file-search-02" | "file-shield-01" | "file-shield-02" | "file-shield-03" | "file-shred" | "file-up-01" | "file-up-02" | "file-x-02" | "fingerpint-01" | "fingerpint-02" | "flame-01" | "flash-off" | "flash-on" | "flex-align-bottom-01" | "flex-align-center-01" | "flex-align-left-01" | "flex-align-right-01" | "flex-align-spaced-01" | "flex-align-top-01" | "flex-columns" | "flip-01" | "flip-02" | "flip-left" | "flip-right" | "folder" | "folder-code" | "folder-down-01" | "folder-down-02" | "folder-minus-01" | "folder-open-01" | "folder-open-02" | "folder-open-03" | "folder-plus-01" | "folder-plus-02" | "folder-search-01" | "folder-search-02" | "folder-shield" | "folder-up-01" | "folder-up-02" | "folder-x-01" | "folder-x-02" | "gear" | "gift-01" | "gift-02" | "git-branch-01" | "git-branch-02" | "git-branch-03" | "git-branch-04" | "git-branch-05" | "glasses-01" | "glasses-02" | "globe" | "globe-01" | "globe-02" | "globe-03" | "globe-04" | "globe-05" | "graduation-cap-01" | "graduation-cap-02" | "grid-01" | "grid-02" | "grid-03" | "grid-04-filled" | "hash-01" | "hash-02" | "header-01" | "header-02" | "headphones" | "heart" | "help" | "help-circle-contained" | "help-square-contained" | "hexagon" | "home-01" | "home-02" | "home-03" | "home-04" | "home-05" | "horizontal-chart-01" | "horizontal-chart-02" | "horizontal-chart-03" | "hourglass-01" | "hourglass-02" | "hourglass-03" | "image-01" | "image-02" | "image-03" | "image-04" | "image-add" | "image-avatar" | "image-check" | "image-down" | "image-focus" | "image-indent-left" | "image-indent-right" | "image-minus" | "image-no-borders" | "image-question" | "image-up" | "image-x" | "inbox-01" | "inbox-02" | "indent-decrease" | "indent-increase" | "indent-left" | "indent-right" | "info-square-01-contained" | "info-square-02-contained-filled" | "information-circle-contained" | "intersect" | "iphone-02" | "italics-01" | "italics-02" | "key-01" | "key-02" | "keyboard" | "laptop-01" | "laptop-02" | "layers-01" | "layers-02" | "layers-03" | "layers-04" | "layers-05" | "layout-01" | "layout-02" | "layout-03" | "layout-04" | "layout-bottom" | "layout-grid-01" | "layout-left" | "layout-right" | "layout-scale" | "layout-top" | "letter-spacing-01" | "letter-spacing-02" | "letter-spacing-03" | "lightbulb-01" | "lightbulb-02" | "lightbulb-03" | "lightning-01" | "lightning-02" | "lightning-circle-contained" | "lightning-filled" | "lightning-square-contained" | "line-chart-down-01" | "line-chart-down-02" | "line-chart-up-01" | "line-chart-up-02" | "line-height" | "link-angled" | "link-broken" | "link-external" | "list" | "list-numbers" | "loader-01" | "loader-02" | "lock-01" | "lock-02" | "lock-03" | "lock-04" | "lock-open-01" | "lock-open-02" | "lock-open-03" | "lock-open-04" | "logout-01" | "logout-02" | "logout-03" | "logout-04" | "luggage-01" | "luggage-02" | "luggage-03" | "luggage-04" | "mail-01" | "mail-02" | "mail-03" | "mail-04" | "mail-05" | "map-01" | "map-02" | "map-03" | "map-04" | "marker-01" | "marker-02" | "marker-03" | "marker-04" | "marker-05" | "marker-06" | "maximise-01" | "maximise-02" | "media-strip-01" | "media-strip-02" | "menu-01" | "menu-02" | "menu-03" | "menu-04" | "menu-05" | "message-alert-circle" | "message-alert-plus" | "message-chat-01" | "message-circle" | "message-notify-circle" | "message-notify-square" | "message-square" | "message-square-information" | "message-square-plus" | "message-square-typing" | "message-square-x" | "message-text-01" | "message-text-02" | "message-typing" | "message-x" | "microphone-01" | "microphone-02" | "microphone-off-01" | "microphone-off-02" | "minimise-01" | "minimise-02" | "minus-circle-contained" | "minus-square-contained" | "moon-01" | "moon-02" | "mouse" | "move" | "note-01" | "note-02" | "notification-box" | "notification-bubble" | "notification-square-01" | "notification-square-02" | "octagon" | "overlap" | "package-01" | "package-02" | "package-check" | "package-minus" | "package-plus" | "package-x" | "paint-bucket-01" | "paint-bucket-02" | "palette" | "paperclip" | "paperclip-01" | "paperclip-02" | "passport" | "password-01" | "password-02" | "pause-01" | "pause-02" | "pause-03" | "pen-tool-01" | "pen-tool-02" | "pen-tool-03" | "pen-tool-04" | "pencil-01" | "pencil-02" | "pencil-03" | "pentagon" | "percent-01" | "percent-02" | "percent-03" | "perspective" | "phone" | "phone-call-01" | "phone-call-02" | "phone-down" | "phone-incoming-01" | "phone-incoming-02" | "phone-off" | "phone-outgoing-01" | "phone-outgoing-02" | "phone-up" | "phone-x" | "pie-chart-01" | "pie-chart-02" | "pie-chart-03" | "plane" | "play-01" | "play-02" | "play-03" | "plug-01" | "plus-01" | "plus-02" | "plus-03" | "pointer-01" | "pointer-02" | "power" | "presentation-01" | "presentation-02" | "presentation-03" | "quote" | "receipt" | "receipt-lines" | "refresh-01" | "rss" | "ruler" | "save-01" | "save-02" | "scale-01" | "scale-02" | "scale-03" | "scan" | "scissors-01" | "scissors-02" | "scissors-03" | "scissors-04" | "search-01" | "search-02" | "send-01" | "send-02" | "send-03" | "server-01" | "server-02" | "server-03" | "server-04" | "server-05" | "server-06" | "server-down" | "server-up" | "settings" | "share" | "shield-01" | "shield-02" | "shield-check" | "shield-plus" | "shuffle" | "signal" | "skew" | "skip-back" | "skip-forward" | "slash-01-backward" | "slash-01-forward" | "slash-02-forward" | "smiley-happy" | "smiley-happy-plus" | "smiley-neutral" | "smiley-sad" | "smiley-wink" | "snowflake" | "sort-horizontal" | "sort-vertical-01" | "sort-vertical-02" | "space-height" | "space-horizontal" | "space-vertical" | "space-width" | "speaker" | "square" | "star-01" | "star-02" | "stars" | "stop-01" | "stop-02" | "stopwatch-01" | "stopwatch-02" | "stopwatch-03" | "stopwatch-04" | "stopwatch-05" | "stopwatch-off" | "stopwatch-snooze" | "sun-01" | "sun-02" | "sun-03" | "sun-down" | "sun-up" | "superscript" | "tag" | "target-01" | "target-02" | "target-03" | "target-04" | "temperature-01" | "temperature-02" | "temperature-03" | "temperature-04" | "terminal" | "text-input-01" | "text-input-02" | "thumb-down" | "thumb-up" | "ticket-01" | "ticket-02" | "toggle-right" | "toogle-left" | "train" | "transform" | "trash-01" | "trash-02" | "trash-03" | "trash-04" | "trend-down-01" | "trend-down-02" | "trend-up-01" | "trend-up-02" | "triangle" | "truck" | "tv" | "type-01" | "type-02" | "type-03" | "type-strike-01" | "type-strike-02" | "umbrella" | "umbrella-01" | "umbrella-02" | "underline-01" | "underline-02" | "union" | "upload-01" | "upload-02" | "upload-03" | "upload-04" | "user-profile-01" | "user-profile-02" | "user-profile-03" | "user-profile-add-01" | "user-profile-add-02" | "user-profile-check" | "user-profile-circle" | "user-profile-down" | "user-profile-group" | "user-profile-left" | "user-profile-minus" | "user-profile-right" | "user-profile-square" | "user-profile-star" | "user-profile-up" | "user-profile-x" | "users-profiles-01" | "users-profiles-02" | "users-profiles-03" | "users-profiles-check" | "users-profiles-down" | "users-profiles-left" | "users-profiles-minus" | "users-profiles-plus" | "users-profiles-right" | "users-profiles-up" | "users-profiles-x" | "variant" | "video-off" | "video-on" | "volume-01" | "volume-02" | "volume-03" | "volume-04" | "volume-05" | "volume-06" | "volume-07" | "wallert-04" | "wallet-01" | "wallet-02" | "wallet-03" | "watch-01" | "watch-02" | "waveform" | "webcam" | "wifi-off" | "wifi-on" | "wind-01" | "wind-02" | "wind-03" | "wrench" | "x-01" | "x-02" | "x-03" | "x-circle-contained" | "x-square-contained" | "youtube" | "zoom-in" | "zoom-out" | "custom-warning-xs-neutral" | "custom-add-2xl-active" | "custom-add-2xl-neutral" | "custom-add-lg-active" | "custom-add-lg-neutral" | "custom-add-md-active" | "custom-add-md-neutral" | "custom-add-sm-active" | "custom-add-sm-neutral" | "custom-add-xl-active" | "custom-add-xl-neutral" | "custom-add-xs-active" | "custom-add-xs-neutral" | "custom-amf-note-md-active" | "custom-amf-note-paid-md-active" | "custom-att-acc-md-active" | "custom-att-evaluate-md-active" | "custom-att-na-md-active" | "custom-cert-apply-md-active" | "custom-cert-refused-md-active" | "custom-cert-treatment-md-active" | "custom-cert-view-md-active" | "custom-certificate-2xl-active" | "custom-certificate-2xl-neutral" | "custom-certificate-lg-active" | "custom-certificate-lg-neutral" | "custom-certificate-md-active" | "custom-certificate-md-neutral" | "custom-certificate-sm-active" | "custom-certificate-sm-neutral" | "custom-certificate-xl-active" | "custom-certificate-xl-neutral" | "custom-certificate-xs-active" | "custom-certificate-xs-neutral" | "custom-check-2xl-active" | "custom-check-2xl-neutral" | "custom-check-lg-active" | "custom-check-lg-neutral" | "custom-check-md-active" | "custom-check-md-neutral" | "custom-check-sm-active" | "custom-check-sm-neutral" | "custom-check-xl-active" | "custom-check-xl-neutral" | "custom-check-xs-active" | "custom-check-xs-neutral" | "custom-content-classroom-md-active" | "custom-content-classroom-md-neutral" | "custom-content-elearning-md-active" | "custom-content-elearning-md-neutral" | "custom-content-liveonline-md-active" | "custom-content-liveonline-md-neutral" | "custom-content-selfstudy-md-active" | "custom-content-selfstudy-md-neutral" | "custom-content-technical-md-active" | "custom-content-technical-md-neutral" | "custom-delete-2xl-active" | "custom-delete-2xl-neutral" | "custom-delete-lg-active" | "custom-delete-lg-neutral" | "custom-delete-md-active" | "custom-delete-md-neutral" | "custom-delete-sm-active" | "custom-delete-sm-neutral" | "custom-delete-xl-active" | "custom-delete-xl-neutral" | "custom-delete-xs-active" | "custom-delete-xs-neutral" | "custom-doc-2xl-active" | "custom-doc-2xl-neutral" | "custom-doc-lg-active" | "custom-doc-lg-neutral" | "custom-doc-md-active" | "custom-doc-md-neutral" | "custom-doc-sm-active" | "custom-doc-sm-neutral" | "custom-doc-xl-active" | "custom-doc-xl-neutral" | "custom-doc-xs-active" | "custom-doc-xs-neutral" | "custom-download-2xl-active" | "custom-download-2xl-neutral" | "custom-download-lg-active" | "custom-download-lg-neutral" | "custom-download-md-active" | "custom-download-md-neutral" | "custom-download-sm-active" | "custom-download-sm-neutral" | "custom-download-xl-active" | "custom-download-xl-neutral" | "custom-download-xs-active" | "custom-download-xs-neutral" | "custom-exam-failed-md-active" | "custom-exam-missed-md-active" | "custom-exam-passed-md-active" | "custom-exam-schedule-md-active" | "custom-exam-scheduled-md-active" | "custom-exam-waiting-md-active" | "custom-info-2xl-active" | "custom-info-2xl-neutral" | "custom-info-lg-active" | "custom-info-lg-neutral" | "custom-info-md-active" | "custom-info-md-neutral" | "custom-info-sm-active" | "custom-info-sm-neutral" | "custom-info-xl-active" | "custom-info-xl-neutral" | "custom-info-xs-active" | "custom-info-xs-neutral" | "custom-not-applicable-2xl-active" | "custom-not-applicable-2xl-neutral" | "custom-not-applicable-lg-active" | "custom-not-applicable-lg-neutral" | "custom-not-applicable-md-active" | "custom-not-applicable-md-neutral" | "custom-not-applicable-sm-active" | "custom-not-applicable-sm-neutral" | "custom-not-applicable-xl-active" | "custom-not-applicable-xl-neutral" | "custom-not-applicable-xs-active" | "custom-not-applicable-xs-neutral" | "custom-slide-2xl-active" | "custom-slide-2xl-neutral" | "custom-slide-lg-active" | "custom-slide-lg-neutral" | "custom-slide-md-active" | "custom-slide-md-neutral" | "custom-slide-sm-active" | "custom-slide-sm-neutral" | "custom-slide-xl-active" | "custom-slide-xl-neutral" | "custom-slide-xs-active" | "custom-slide-xs-neutral" | "custom-time-2xl-active" | "custom-time-2xl-neutral" | "custom-time-lg-active" | "custom-time-lg-neutral" | "custom-time-md-active" | "custom-time-md-neutral" | "custom-time-sm-active" | "custom-time-sm-neutral" | "custom-time-xl-active" | "custom-time-xl-neutral" | "custom-time-xs-active" | "custom-time-xs-neutral" | "custom-tools-2xl-active" | "custom-tools-2xl-neutral" | "custom-tools-lg-active" | "custom-tools-lg-neutral" | "custom-tools-md-active" | "custom-tools-md-neutral" | "custom-tools-sm-active" | "custom-tools-sm-neutral" | "custom-tools-xl-active" | "custom-tools-xl-neutral" | "custom-tools-xs-active" | "custom-tools-xs-neutral" | "custom-upload-2xl-active" | "custom-upload-2xl-neutral" | "custom-upload-lg-active" | "custom-upload-lg-neutral" | "custom-upload-md-active" | "custom-upload-md-neutral" | "custom-upload-sm-active" | "custom-upload-sm-neutral" | "custom-upload-xl-active" | "custom-upload-xl-neutral" | "custom-upload-xs-active" | "custom-upload-xs-neutral" | "custom-view-2xl-active" | "custom-view-2xl-neutral" | "custom-view-lg-active" | "custom-view-lg-neutral" | "custom-view-md-active" | "custom-view-md-neutral" | "custom-view-sm-active" | "custom-view-sm-neutral" | "custom-view-xl-active" | "custom-view-xl-neutral" | "custom-view-xs-active" | "custom-view-xs-neutral" | "custom-warning-2xl-active" | "custom-warning-2xl-neutral" | "custom-warning-lg-active" | "custom-warning-lg-neutral" | "custom-warning-md-active" | "custom-warning-md-neutral" | "custom-warning-sm-active" | "custom-warning-sm-neutral" | "custom-warning-xl-active" | "custom-warning-xl-neutral" | "custom-warning-xs-active">;
9438
+ /** Icon tile shape — the design uses a rounded-square tile */
9439
+ iconShape: _angular_core.InputSignal<IconShape>;
9440
+ /** Action title (required) */
9441
+ title: _angular_core.InputSignal<string>;
9442
+ /** Muted description line under the title; hidden when empty */
9443
+ description: _angular_core.InputSignal<string>;
9444
+ /** Priority — drives the pill tone, icon tint and default CTA variant */
9445
+ priority: _angular_core.InputSignal<ActionItemPriority>;
9446
+ /** Pill text override (e.g. a translated label); defaults per priority */
9447
+ priorityLabel: _angular_core.InputSignal<string>;
9448
+ /** Trailing CTA button label; the button is hidden when empty */
9449
+ ctaLabel: _angular_core.InputSignal<string>;
9450
+ /** CTA button variant override; defaults to destructive for high priority, primary-2 otherwise */
9451
+ ctaVariant: _angular_core.InputSignal<"" | ButtonVariant>;
9452
+ /** Emitted when the CTA button is clicked */
9453
+ ctaClicked: _angular_core.OutputEmitterRef<void>;
9454
+ statusType: _angular_core.Signal<"error" | "neutral" | "warning">;
9455
+ iconColor: _angular_core.Signal<IconColor>;
9456
+ priorityText: _angular_core.Signal<string>;
9457
+ ctaVariantValue: _angular_core.Signal<ButtonVariant>;
9458
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ActionItemComponent, never>;
9459
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ActionItemComponent, "pecb-action-item", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconShape": { "alias": "iconShape"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "priority": { "alias": "priority"; "required": false; "isSignal": true; }; "priorityLabel": { "alias": "priorityLabel"; "required": false; "isSignal": true; }; "ctaLabel": { "alias": "ctaLabel"; "required": false; "isSignal": true; }; "ctaVariant": { "alias": "ctaVariant"; "required": false; "isSignal": true; }; }, { "ctaClicked": "ctaClicked"; }, never, never, true, never>;
9460
+ }
9461
+
9462
+ /**
9463
+ * Compact list/timeline row — a small round icon, a bold title, a muted
9464
+ * subline and an optional right-aligned meta text (e.g. a timestamp).
9465
+ * Used for feeds like "News releases" and "Recent activity".
9466
+ *
9467
+ * Consecutive rows are divided by a 1px border automatically (the first row
9468
+ * has no divider); place the rows as direct siblings for this to apply.
9469
+ *
9470
+ * Renders as an `<a>` when [href] is set, otherwise as a plain row that
9471
+ * emits (itemClick) when interactive consumers need it.
9472
+ *
9473
+ * @example
9474
+ * <pecb-list-item
9475
+ * icon="bell-01"
9476
+ * title="PECB launches ISO/IEC 42001 Lead Implementer training course"
9477
+ * subtitle="Aug 18, 2026"
9478
+ * href="https://pecb.com/en/news"
9479
+ * target="_blank"
9480
+ * />
9481
+ */
9482
+ declare class ListItemComponent {
9483
+ /** Leading icon name (general or custom registry icon); hidden when empty */
9484
+ icon: _angular_core.InputSignal<"" | "embed" | "link" | "progress" | "table" | "circle" | "filter" | "image" | "annotation" | "center" | "drop" | "activity" | "add-square-01" | "add-square-02" | "add-square-03" | "add-square-04" | "alarm-01" | "alarm-02" | "alarm-03" | "alarm-04" | "alarm-05" | "alarm-06" | "alarm-check" | "alarm-minus" | "alarm-off" | "alarm-plus" | "alert-circle" | "alert-square" | "alert-triangle" | "align-center" | "align-down-01" | "align-down-02" | "align-horizontal-center-01" | "align-horizontal-center-02" | "align-horizontal-center-03" | "align-justify" | "align-left" | "align-left-01" | "align-left-02" | "align-right" | "align-right-01" | "align-right-02" | "align-up-01" | "align-up-02" | "align-vertical-center-01" | "align-vertical-center-02" | "align-vertical-center-03" | "annotation-alert" | "annotation-check" | "annotation-information" | "annotation-plus" | "annotation-typing" | "annotation-x" | "atom" | "attatchment-01" | "attatchment-02" | "audio-settings-01" | "audio-settings-02" | "bag-01" | "bag-02" | "bag-03" | "bag-04" | "bag-05" | "bank" | "bank-note-01" | "bank-note-02" | "bank-note-03" | "bank-note-04" | "bank-note-05" | "bank-note-06" | "bar-chart-01" | "bar-chart-02" | "bar-chart-03" | "bar-chart-04" | "bar-chart-05" | "bar-chart-square-01" | "bar-chart-square-02" | "bar-chart-square-03" | "bar-chart-square-down-01" | "bar-chart-square-down-02" | "bar-chart-square-up-01" | "bar-group-01" | "bar-group-02" | "bar-group-03" | "battery-01" | "battery-02" | "battery-03" | "battery-04" | "battery-empty" | "battery-fill-01" | "battery-fill-02" | "battery-fill-04" | "bell-01" | "bell-02" | "bell-03" | "bell-04" | "bell-off-01" | "bell-off-02" | "bell-ringing-01" | "bell-ringing-02" | "bell-ringing-03" | "bell-ringing-04" | "bezier-01" | "bezier-02" | "bluetooth-01" | "bluetooth-02" | "bold-01" | "bold-02" | "book-01" | "book-02" | "book-03" | "book-04" | "book-05" | "book-06" | "box" | "brackets" | "brackets-check" | "brackets-minus" | "brackets-plus" | "brackets-slash" | "brackets-typing" | "calculator-01" | "calculator-02" | "calendar-01" | "calendar-02" | "calendar-03" | "calendar-04" | "calendar-05" | "calendar-06" | "calendar-07" | "calendar-check" | "calendar-minus" | "calendar-number" | "calendar-plus" | "camera-01" | "camera-02" | "camera-lens" | "camera-off" | "cancel-left" | "cancel-right" | "car" | "card-01" | "card-02" | "card-add" | "card-check" | "card-down" | "card-edit" | "card-lock" | "card-minus" | "card-number" | "card-shield" | "card-up" | "card-x" | "cart" | "chart-breakout-circle" | "chart-breakout-square" | "check-01" | "check-02" | "check-broken" | "check-contained" | "check-square-broken" | "check-square-contained" | "chevron-double-down" | "chevron-double-left" | "chevron-double-right" | "chevron-double-up" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chromecast" | "clock-01" | "clock-backward" | "clock-check" | "clock-forward" | "clock-plus" | "cloud-01" | "cloud-02" | "cloud-03" | "cloud-04" | "cloud-lightning" | "cloud-rain" | "cloud-snow" | "cloud-sun" | "code-01" | "code-02" | "code-03" | "code-04" | "coin-broken" | "coin-hand" | "coin-number" | "coin-unbroken" | "coins" | "coins-rotate" | "color-picker" | "color-swatch-01" | "color-swatch-02" | "colors-01" | "colors-02" | "column-horizontal-01" | "column-horizontal-02" | "column-horizontal-03" | "column-vertical-01" | "column-vertical-02" | "column-vertical-03" | "compare" | "compass" | "component" | "computer" | "contrast" | "copy-left" | "copy-right" | "crop-01" | "crop-02" | "currency-bath" | "currency-bitcoin" | "currency-cent" | "currency-coin-bath" | "currency-coin-bitcoin" | "currency-coin-cent" | "currency-coin-dollar" | "currency-coin-euro" | "currency-coin-pound" | "currency-coin-rubel" | "currency-coin-rupee" | "currency-coin-yen" | "currency-dollar" | "currency-euro" | "currency-pound" | "currency-rubel" | "currency-rupee" | "currency-yen" | "cursor-01" | "cursor-02" | "cursor-03" | "cursor-04" | "cursor-05" | "cursor-06" | "cursor-grab" | "cursor-grabbed" | "cursor-pointer" | "dash" | "data-01" | "data-02" | "data-03" | "data-04" | "delete" | "delivery" | "diamond" | "disc" | "discount-circle" | "discount-square" | "discount-star-01" | "discount-star-02" | "discount-star-03" | "divider" | "dot-horizontal" | "dot-vertical" | "download" | "download-01" | "download-02" | "edit-01" | "edit-02" | "edit-03" | "edit-04" | "edit-contained" | "email" | "equals" | "equals-not" | "eraser-01" | "eraser-02" | "expand" | "expand-02" | "eye-closed" | "eye-open" | "face-id-01" | "face-id-02" | "fast-backward" | "fast-forward" | "favourite" | "feather-01" | "feather-02" | "file" | "file-01" | "file-02" | "file-03" | "file-04" | "file-05" | "file-06" | "file-attach-01" | "file-attach-02" | "file-attach-03" | "file-branch" | "file-check-01" | "file-check-02" | "file-code" | "file-down-01" | "file-down-02" | "file-edit-01" | "file-edit-02" | "file-eye-01" | "file-eye-02" | "file-lock-01" | "file-lock-02" | "file-lock-03" | "file-minus-01" | "file-minus-02" | "file-multiple" | "file-none" | "file-plus-01" | "file-plus-02" | "file-question-01" | "file-question-02" | "file-return-01" | "file-return-02" | "file-search-01" | "file-search-02" | "file-shield-01" | "file-shield-02" | "file-shield-03" | "file-shred" | "file-up-01" | "file-up-02" | "file-x-02" | "fingerpint-01" | "fingerpint-02" | "flame-01" | "flash-off" | "flash-on" | "flex-align-bottom-01" | "flex-align-center-01" | "flex-align-left-01" | "flex-align-right-01" | "flex-align-spaced-01" | "flex-align-top-01" | "flex-columns" | "flip-01" | "flip-02" | "flip-left" | "flip-right" | "folder" | "folder-code" | "folder-down-01" | "folder-down-02" | "folder-minus-01" | "folder-open-01" | "folder-open-02" | "folder-open-03" | "folder-plus-01" | "folder-plus-02" | "folder-search-01" | "folder-search-02" | "folder-shield" | "folder-up-01" | "folder-up-02" | "folder-x-01" | "folder-x-02" | "gear" | "gift-01" | "gift-02" | "git-branch-01" | "git-branch-02" | "git-branch-03" | "git-branch-04" | "git-branch-05" | "glasses-01" | "glasses-02" | "globe" | "globe-01" | "globe-02" | "globe-03" | "globe-04" | "globe-05" | "graduation-cap-01" | "graduation-cap-02" | "grid-01" | "grid-02" | "grid-03" | "grid-04-filled" | "hash-01" | "hash-02" | "header-01" | "header-02" | "headphones" | "heart" | "help" | "help-circle-contained" | "help-square-contained" | "hexagon" | "home-01" | "home-02" | "home-03" | "home-04" | "home-05" | "horizontal-chart-01" | "horizontal-chart-02" | "horizontal-chart-03" | "hourglass-01" | "hourglass-02" | "hourglass-03" | "image-01" | "image-02" | "image-03" | "image-04" | "image-add" | "image-avatar" | "image-check" | "image-down" | "image-focus" | "image-indent-left" | "image-indent-right" | "image-minus" | "image-no-borders" | "image-question" | "image-up" | "image-x" | "inbox-01" | "inbox-02" | "indent-decrease" | "indent-increase" | "indent-left" | "indent-right" | "info-square-01-contained" | "info-square-02-contained-filled" | "information-circle-contained" | "intersect" | "iphone-02" | "italics-01" | "italics-02" | "key-01" | "key-02" | "keyboard" | "laptop-01" | "laptop-02" | "layers-01" | "layers-02" | "layers-03" | "layers-04" | "layers-05" | "layout-01" | "layout-02" | "layout-03" | "layout-04" | "layout-bottom" | "layout-grid-01" | "layout-left" | "layout-right" | "layout-scale" | "layout-top" | "letter-spacing-01" | "letter-spacing-02" | "letter-spacing-03" | "lightbulb-01" | "lightbulb-02" | "lightbulb-03" | "lightning-01" | "lightning-02" | "lightning-circle-contained" | "lightning-filled" | "lightning-square-contained" | "line-chart-down-01" | "line-chart-down-02" | "line-chart-up-01" | "line-chart-up-02" | "line-height" | "link-angled" | "link-broken" | "link-external" | "list" | "list-numbers" | "loader-01" | "loader-02" | "lock-01" | "lock-02" | "lock-03" | "lock-04" | "lock-open-01" | "lock-open-02" | "lock-open-03" | "lock-open-04" | "logout-01" | "logout-02" | "logout-03" | "logout-04" | "luggage-01" | "luggage-02" | "luggage-03" | "luggage-04" | "mail-01" | "mail-02" | "mail-03" | "mail-04" | "mail-05" | "map-01" | "map-02" | "map-03" | "map-04" | "marker-01" | "marker-02" | "marker-03" | "marker-04" | "marker-05" | "marker-06" | "maximise-01" | "maximise-02" | "media-strip-01" | "media-strip-02" | "menu-01" | "menu-02" | "menu-03" | "menu-04" | "menu-05" | "message-alert-circle" | "message-alert-plus" | "message-chat-01" | "message-circle" | "message-notify-circle" | "message-notify-square" | "message-square" | "message-square-information" | "message-square-plus" | "message-square-typing" | "message-square-x" | "message-text-01" | "message-text-02" | "message-typing" | "message-x" | "microphone-01" | "microphone-02" | "microphone-off-01" | "microphone-off-02" | "minimise-01" | "minimise-02" | "minus-circle-contained" | "minus-square-contained" | "moon-01" | "moon-02" | "mouse" | "move" | "note-01" | "note-02" | "notification-box" | "notification-bubble" | "notification-square-01" | "notification-square-02" | "octagon" | "overlap" | "package-01" | "package-02" | "package-check" | "package-minus" | "package-plus" | "package-x" | "paint-bucket-01" | "paint-bucket-02" | "palette" | "paperclip" | "paperclip-01" | "paperclip-02" | "passport" | "password-01" | "password-02" | "pause-01" | "pause-02" | "pause-03" | "pen-tool-01" | "pen-tool-02" | "pen-tool-03" | "pen-tool-04" | "pencil-01" | "pencil-02" | "pencil-03" | "pentagon" | "percent-01" | "percent-02" | "percent-03" | "perspective" | "phone" | "phone-call-01" | "phone-call-02" | "phone-down" | "phone-incoming-01" | "phone-incoming-02" | "phone-off" | "phone-outgoing-01" | "phone-outgoing-02" | "phone-up" | "phone-x" | "pie-chart-01" | "pie-chart-02" | "pie-chart-03" | "plane" | "play-01" | "play-02" | "play-03" | "plug-01" | "plus-01" | "plus-02" | "plus-03" | "pointer-01" | "pointer-02" | "power" | "presentation-01" | "presentation-02" | "presentation-03" | "quote" | "receipt" | "receipt-lines" | "refresh-01" | "rss" | "ruler" | "save-01" | "save-02" | "scale-01" | "scale-02" | "scale-03" | "scan" | "scissors-01" | "scissors-02" | "scissors-03" | "scissors-04" | "search-01" | "search-02" | "send-01" | "send-02" | "send-03" | "server-01" | "server-02" | "server-03" | "server-04" | "server-05" | "server-06" | "server-down" | "server-up" | "settings" | "share" | "shield-01" | "shield-02" | "shield-check" | "shield-plus" | "shuffle" | "signal" | "skew" | "skip-back" | "skip-forward" | "slash-01-backward" | "slash-01-forward" | "slash-02-forward" | "smiley-happy" | "smiley-happy-plus" | "smiley-neutral" | "smiley-sad" | "smiley-wink" | "snowflake" | "sort-horizontal" | "sort-vertical-01" | "sort-vertical-02" | "space-height" | "space-horizontal" | "space-vertical" | "space-width" | "speaker" | "square" | "star-01" | "star-02" | "stars" | "stop-01" | "stop-02" | "stopwatch-01" | "stopwatch-02" | "stopwatch-03" | "stopwatch-04" | "stopwatch-05" | "stopwatch-off" | "stopwatch-snooze" | "sun-01" | "sun-02" | "sun-03" | "sun-down" | "sun-up" | "superscript" | "tag" | "target-01" | "target-02" | "target-03" | "target-04" | "temperature-01" | "temperature-02" | "temperature-03" | "temperature-04" | "terminal" | "text-input-01" | "text-input-02" | "thumb-down" | "thumb-up" | "ticket-01" | "ticket-02" | "toggle-right" | "toogle-left" | "train" | "transform" | "trash-01" | "trash-02" | "trash-03" | "trash-04" | "trend-down-01" | "trend-down-02" | "trend-up-01" | "trend-up-02" | "triangle" | "truck" | "tv" | "type-01" | "type-02" | "type-03" | "type-strike-01" | "type-strike-02" | "umbrella" | "umbrella-01" | "umbrella-02" | "underline-01" | "underline-02" | "union" | "upload-01" | "upload-02" | "upload-03" | "upload-04" | "user-profile-01" | "user-profile-02" | "user-profile-03" | "user-profile-add-01" | "user-profile-add-02" | "user-profile-check" | "user-profile-circle" | "user-profile-down" | "user-profile-group" | "user-profile-left" | "user-profile-minus" | "user-profile-right" | "user-profile-square" | "user-profile-star" | "user-profile-up" | "user-profile-x" | "users-profiles-01" | "users-profiles-02" | "users-profiles-03" | "users-profiles-check" | "users-profiles-down" | "users-profiles-left" | "users-profiles-minus" | "users-profiles-plus" | "users-profiles-right" | "users-profiles-up" | "users-profiles-x" | "variant" | "video-off" | "video-on" | "volume-01" | "volume-02" | "volume-03" | "volume-04" | "volume-05" | "volume-06" | "volume-07" | "wallert-04" | "wallet-01" | "wallet-02" | "wallet-03" | "watch-01" | "watch-02" | "waveform" | "webcam" | "wifi-off" | "wifi-on" | "wind-01" | "wind-02" | "wind-03" | "wrench" | "x-01" | "x-02" | "x-03" | "x-circle-contained" | "x-square-contained" | "youtube" | "zoom-in" | "zoom-out" | "custom-warning-xs-neutral" | "custom-add-2xl-active" | "custom-add-2xl-neutral" | "custom-add-lg-active" | "custom-add-lg-neutral" | "custom-add-md-active" | "custom-add-md-neutral" | "custom-add-sm-active" | "custom-add-sm-neutral" | "custom-add-xl-active" | "custom-add-xl-neutral" | "custom-add-xs-active" | "custom-add-xs-neutral" | "custom-amf-note-md-active" | "custom-amf-note-paid-md-active" | "custom-att-acc-md-active" | "custom-att-evaluate-md-active" | "custom-att-na-md-active" | "custom-cert-apply-md-active" | "custom-cert-refused-md-active" | "custom-cert-treatment-md-active" | "custom-cert-view-md-active" | "custom-certificate-2xl-active" | "custom-certificate-2xl-neutral" | "custom-certificate-lg-active" | "custom-certificate-lg-neutral" | "custom-certificate-md-active" | "custom-certificate-md-neutral" | "custom-certificate-sm-active" | "custom-certificate-sm-neutral" | "custom-certificate-xl-active" | "custom-certificate-xl-neutral" | "custom-certificate-xs-active" | "custom-certificate-xs-neutral" | "custom-check-2xl-active" | "custom-check-2xl-neutral" | "custom-check-lg-active" | "custom-check-lg-neutral" | "custom-check-md-active" | "custom-check-md-neutral" | "custom-check-sm-active" | "custom-check-sm-neutral" | "custom-check-xl-active" | "custom-check-xl-neutral" | "custom-check-xs-active" | "custom-check-xs-neutral" | "custom-content-classroom-md-active" | "custom-content-classroom-md-neutral" | "custom-content-elearning-md-active" | "custom-content-elearning-md-neutral" | "custom-content-liveonline-md-active" | "custom-content-liveonline-md-neutral" | "custom-content-selfstudy-md-active" | "custom-content-selfstudy-md-neutral" | "custom-content-technical-md-active" | "custom-content-technical-md-neutral" | "custom-delete-2xl-active" | "custom-delete-2xl-neutral" | "custom-delete-lg-active" | "custom-delete-lg-neutral" | "custom-delete-md-active" | "custom-delete-md-neutral" | "custom-delete-sm-active" | "custom-delete-sm-neutral" | "custom-delete-xl-active" | "custom-delete-xl-neutral" | "custom-delete-xs-active" | "custom-delete-xs-neutral" | "custom-doc-2xl-active" | "custom-doc-2xl-neutral" | "custom-doc-lg-active" | "custom-doc-lg-neutral" | "custom-doc-md-active" | "custom-doc-md-neutral" | "custom-doc-sm-active" | "custom-doc-sm-neutral" | "custom-doc-xl-active" | "custom-doc-xl-neutral" | "custom-doc-xs-active" | "custom-doc-xs-neutral" | "custom-download-2xl-active" | "custom-download-2xl-neutral" | "custom-download-lg-active" | "custom-download-lg-neutral" | "custom-download-md-active" | "custom-download-md-neutral" | "custom-download-sm-active" | "custom-download-sm-neutral" | "custom-download-xl-active" | "custom-download-xl-neutral" | "custom-download-xs-active" | "custom-download-xs-neutral" | "custom-exam-failed-md-active" | "custom-exam-missed-md-active" | "custom-exam-passed-md-active" | "custom-exam-schedule-md-active" | "custom-exam-scheduled-md-active" | "custom-exam-waiting-md-active" | "custom-info-2xl-active" | "custom-info-2xl-neutral" | "custom-info-lg-active" | "custom-info-lg-neutral" | "custom-info-md-active" | "custom-info-md-neutral" | "custom-info-sm-active" | "custom-info-sm-neutral" | "custom-info-xl-active" | "custom-info-xl-neutral" | "custom-info-xs-active" | "custom-info-xs-neutral" | "custom-not-applicable-2xl-active" | "custom-not-applicable-2xl-neutral" | "custom-not-applicable-lg-active" | "custom-not-applicable-lg-neutral" | "custom-not-applicable-md-active" | "custom-not-applicable-md-neutral" | "custom-not-applicable-sm-active" | "custom-not-applicable-sm-neutral" | "custom-not-applicable-xl-active" | "custom-not-applicable-xl-neutral" | "custom-not-applicable-xs-active" | "custom-not-applicable-xs-neutral" | "custom-slide-2xl-active" | "custom-slide-2xl-neutral" | "custom-slide-lg-active" | "custom-slide-lg-neutral" | "custom-slide-md-active" | "custom-slide-md-neutral" | "custom-slide-sm-active" | "custom-slide-sm-neutral" | "custom-slide-xl-active" | "custom-slide-xl-neutral" | "custom-slide-xs-active" | "custom-slide-xs-neutral" | "custom-time-2xl-active" | "custom-time-2xl-neutral" | "custom-time-lg-active" | "custom-time-lg-neutral" | "custom-time-md-active" | "custom-time-md-neutral" | "custom-time-sm-active" | "custom-time-sm-neutral" | "custom-time-xl-active" | "custom-time-xl-neutral" | "custom-time-xs-active" | "custom-time-xs-neutral" | "custom-tools-2xl-active" | "custom-tools-2xl-neutral" | "custom-tools-lg-active" | "custom-tools-lg-neutral" | "custom-tools-md-active" | "custom-tools-md-neutral" | "custom-tools-sm-active" | "custom-tools-sm-neutral" | "custom-tools-xl-active" | "custom-tools-xl-neutral" | "custom-tools-xs-active" | "custom-tools-xs-neutral" | "custom-upload-2xl-active" | "custom-upload-2xl-neutral" | "custom-upload-lg-active" | "custom-upload-lg-neutral" | "custom-upload-md-active" | "custom-upload-md-neutral" | "custom-upload-sm-active" | "custom-upload-sm-neutral" | "custom-upload-xl-active" | "custom-upload-xl-neutral" | "custom-upload-xs-active" | "custom-upload-xs-neutral" | "custom-view-2xl-active" | "custom-view-2xl-neutral" | "custom-view-lg-active" | "custom-view-lg-neutral" | "custom-view-md-active" | "custom-view-md-neutral" | "custom-view-sm-active" | "custom-view-sm-neutral" | "custom-view-xl-active" | "custom-view-xl-neutral" | "custom-view-xs-active" | "custom-view-xs-neutral" | "custom-warning-2xl-active" | "custom-warning-2xl-neutral" | "custom-warning-lg-active" | "custom-warning-lg-neutral" | "custom-warning-md-active" | "custom-warning-md-neutral" | "custom-warning-sm-active" | "custom-warning-sm-neutral" | "custom-warning-xl-active" | "custom-warning-xl-neutral" | "custom-warning-xs-active">;
9485
+ /** Icon tile color — e.g. 'gray' for activity feeds, 'error' for urgent rows */
9486
+ iconColor: _angular_core.InputSignal<IconColor>;
9487
+ /** Row title (required) */
9488
+ title: _angular_core.InputSignal<string>;
9489
+ /** Muted subline under the title; hidden when empty */
9490
+ subtitle: _angular_core.InputSignal<string>;
9491
+ /** Right-aligned meta text (e.g. "2 days ago"); hidden when empty */
9492
+ meta: _angular_core.InputSignal<string>;
9493
+ /** When set, the row renders as a link */
9494
+ href: _angular_core.InputSignal<string>;
9495
+ /** Link target, e.g. "_blank" — only used together with [href] */
9496
+ target: _angular_core.InputSignal<string>;
9497
+ /** Emitted on click when the row has no [href] */
9498
+ itemClick: _angular_core.OutputEmitterRef<void>;
9499
+ isLink: _angular_core.Signal<boolean>;
9500
+ /** rel="noopener noreferrer" is applied automatically for target="_blank" */
9501
+ rel: _angular_core.Signal<"noopener noreferrer" | null>;
9502
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ListItemComponent, never>;
9503
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ListItemComponent, "pecb-list-item", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconColor": { "alias": "iconColor"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "meta": { "alias": "meta"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, never, true, never>;
9504
+ }
9505
+
9506
+ /**
9507
+ * Course/recommendation tile — a dark icon tile, an uppercase category tag
9508
+ * (brand red), a bold title, a muted meta line (e.g. "5 days · Advanced")
9509
+ * and a CTA link ("View course" with a trailing arrow), with hover elevation.
9510
+ *
9511
+ * The icon can be provided three ways (first match wins):
9512
+ * 1. [icon] — registry icon name (general or custom); black-stroke
9513
+ * registry icons are recolored white inside the dark tile
9514
+ * 2. [iconSrc] — image URL (svg/png)
9515
+ * 3. [iconSvg] — raw SVG string (sanitized internally)
9516
+ * The tile is hidden when none is set.
9517
+ *
9518
+ * Renders as an `<a>` when [href] is set, otherwise as a keyboard-accessible
9519
+ * button-like element that emits (cardClick).
9520
+ *
9521
+ * @example
9522
+ * <pecb-course-tile
9523
+ * icon="graduation-hat-01"
9524
+ * category="AI Management"
9525
+ * title="ISO/IEC 42001 Lead Implementer"
9526
+ * meta="5 days · Advanced"
9527
+ * href="https://pecb.com/en/education-and-certification-for-individuals"
9528
+ * target="_blank"
9529
+ * />
9530
+ */
9531
+ declare class CourseTileComponent {
9532
+ private sanitizer;
9533
+ private registry;
9534
+ /** Registry icon name shown in the dark tile; see also [iconSrc]/[iconSvg] */
9535
+ icon: _angular_core.InputSignal<"" | "embed" | "link" | "progress" | "table" | "circle" | "filter" | "image" | "annotation" | "center" | "drop" | "activity" | "add-square-01" | "add-square-02" | "add-square-03" | "add-square-04" | "alarm-01" | "alarm-02" | "alarm-03" | "alarm-04" | "alarm-05" | "alarm-06" | "alarm-check" | "alarm-minus" | "alarm-off" | "alarm-plus" | "alert-circle" | "alert-square" | "alert-triangle" | "align-center" | "align-down-01" | "align-down-02" | "align-horizontal-center-01" | "align-horizontal-center-02" | "align-horizontal-center-03" | "align-justify" | "align-left" | "align-left-01" | "align-left-02" | "align-right" | "align-right-01" | "align-right-02" | "align-up-01" | "align-up-02" | "align-vertical-center-01" | "align-vertical-center-02" | "align-vertical-center-03" | "annotation-alert" | "annotation-check" | "annotation-information" | "annotation-plus" | "annotation-typing" | "annotation-x" | "atom" | "attatchment-01" | "attatchment-02" | "audio-settings-01" | "audio-settings-02" | "bag-01" | "bag-02" | "bag-03" | "bag-04" | "bag-05" | "bank" | "bank-note-01" | "bank-note-02" | "bank-note-03" | "bank-note-04" | "bank-note-05" | "bank-note-06" | "bar-chart-01" | "bar-chart-02" | "bar-chart-03" | "bar-chart-04" | "bar-chart-05" | "bar-chart-square-01" | "bar-chart-square-02" | "bar-chart-square-03" | "bar-chart-square-down-01" | "bar-chart-square-down-02" | "bar-chart-square-up-01" | "bar-group-01" | "bar-group-02" | "bar-group-03" | "battery-01" | "battery-02" | "battery-03" | "battery-04" | "battery-empty" | "battery-fill-01" | "battery-fill-02" | "battery-fill-04" | "bell-01" | "bell-02" | "bell-03" | "bell-04" | "bell-off-01" | "bell-off-02" | "bell-ringing-01" | "bell-ringing-02" | "bell-ringing-03" | "bell-ringing-04" | "bezier-01" | "bezier-02" | "bluetooth-01" | "bluetooth-02" | "bold-01" | "bold-02" | "book-01" | "book-02" | "book-03" | "book-04" | "book-05" | "book-06" | "box" | "brackets" | "brackets-check" | "brackets-minus" | "brackets-plus" | "brackets-slash" | "brackets-typing" | "calculator-01" | "calculator-02" | "calendar-01" | "calendar-02" | "calendar-03" | "calendar-04" | "calendar-05" | "calendar-06" | "calendar-07" | "calendar-check" | "calendar-minus" | "calendar-number" | "calendar-plus" | "camera-01" | "camera-02" | "camera-lens" | "camera-off" | "cancel-left" | "cancel-right" | "car" | "card-01" | "card-02" | "card-add" | "card-check" | "card-down" | "card-edit" | "card-lock" | "card-minus" | "card-number" | "card-shield" | "card-up" | "card-x" | "cart" | "chart-breakout-circle" | "chart-breakout-square" | "check-01" | "check-02" | "check-broken" | "check-contained" | "check-square-broken" | "check-square-contained" | "chevron-double-down" | "chevron-double-left" | "chevron-double-right" | "chevron-double-up" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chromecast" | "clock-01" | "clock-backward" | "clock-check" | "clock-forward" | "clock-plus" | "cloud-01" | "cloud-02" | "cloud-03" | "cloud-04" | "cloud-lightning" | "cloud-rain" | "cloud-snow" | "cloud-sun" | "code-01" | "code-02" | "code-03" | "code-04" | "coin-broken" | "coin-hand" | "coin-number" | "coin-unbroken" | "coins" | "coins-rotate" | "color-picker" | "color-swatch-01" | "color-swatch-02" | "colors-01" | "colors-02" | "column-horizontal-01" | "column-horizontal-02" | "column-horizontal-03" | "column-vertical-01" | "column-vertical-02" | "column-vertical-03" | "compare" | "compass" | "component" | "computer" | "contrast" | "copy-left" | "copy-right" | "crop-01" | "crop-02" | "currency-bath" | "currency-bitcoin" | "currency-cent" | "currency-coin-bath" | "currency-coin-bitcoin" | "currency-coin-cent" | "currency-coin-dollar" | "currency-coin-euro" | "currency-coin-pound" | "currency-coin-rubel" | "currency-coin-rupee" | "currency-coin-yen" | "currency-dollar" | "currency-euro" | "currency-pound" | "currency-rubel" | "currency-rupee" | "currency-yen" | "cursor-01" | "cursor-02" | "cursor-03" | "cursor-04" | "cursor-05" | "cursor-06" | "cursor-grab" | "cursor-grabbed" | "cursor-pointer" | "dash" | "data-01" | "data-02" | "data-03" | "data-04" | "delete" | "delivery" | "diamond" | "disc" | "discount-circle" | "discount-square" | "discount-star-01" | "discount-star-02" | "discount-star-03" | "divider" | "dot-horizontal" | "dot-vertical" | "download" | "download-01" | "download-02" | "edit-01" | "edit-02" | "edit-03" | "edit-04" | "edit-contained" | "email" | "equals" | "equals-not" | "eraser-01" | "eraser-02" | "expand" | "expand-02" | "eye-closed" | "eye-open" | "face-id-01" | "face-id-02" | "fast-backward" | "fast-forward" | "favourite" | "feather-01" | "feather-02" | "file" | "file-01" | "file-02" | "file-03" | "file-04" | "file-05" | "file-06" | "file-attach-01" | "file-attach-02" | "file-attach-03" | "file-branch" | "file-check-01" | "file-check-02" | "file-code" | "file-down-01" | "file-down-02" | "file-edit-01" | "file-edit-02" | "file-eye-01" | "file-eye-02" | "file-lock-01" | "file-lock-02" | "file-lock-03" | "file-minus-01" | "file-minus-02" | "file-multiple" | "file-none" | "file-plus-01" | "file-plus-02" | "file-question-01" | "file-question-02" | "file-return-01" | "file-return-02" | "file-search-01" | "file-search-02" | "file-shield-01" | "file-shield-02" | "file-shield-03" | "file-shred" | "file-up-01" | "file-up-02" | "file-x-02" | "fingerpint-01" | "fingerpint-02" | "flame-01" | "flash-off" | "flash-on" | "flex-align-bottom-01" | "flex-align-center-01" | "flex-align-left-01" | "flex-align-right-01" | "flex-align-spaced-01" | "flex-align-top-01" | "flex-columns" | "flip-01" | "flip-02" | "flip-left" | "flip-right" | "folder" | "folder-code" | "folder-down-01" | "folder-down-02" | "folder-minus-01" | "folder-open-01" | "folder-open-02" | "folder-open-03" | "folder-plus-01" | "folder-plus-02" | "folder-search-01" | "folder-search-02" | "folder-shield" | "folder-up-01" | "folder-up-02" | "folder-x-01" | "folder-x-02" | "gear" | "gift-01" | "gift-02" | "git-branch-01" | "git-branch-02" | "git-branch-03" | "git-branch-04" | "git-branch-05" | "glasses-01" | "glasses-02" | "globe" | "globe-01" | "globe-02" | "globe-03" | "globe-04" | "globe-05" | "graduation-cap-01" | "graduation-cap-02" | "grid-01" | "grid-02" | "grid-03" | "grid-04-filled" | "hash-01" | "hash-02" | "header-01" | "header-02" | "headphones" | "heart" | "help" | "help-circle-contained" | "help-square-contained" | "hexagon" | "home-01" | "home-02" | "home-03" | "home-04" | "home-05" | "horizontal-chart-01" | "horizontal-chart-02" | "horizontal-chart-03" | "hourglass-01" | "hourglass-02" | "hourglass-03" | "image-01" | "image-02" | "image-03" | "image-04" | "image-add" | "image-avatar" | "image-check" | "image-down" | "image-focus" | "image-indent-left" | "image-indent-right" | "image-minus" | "image-no-borders" | "image-question" | "image-up" | "image-x" | "inbox-01" | "inbox-02" | "indent-decrease" | "indent-increase" | "indent-left" | "indent-right" | "info-square-01-contained" | "info-square-02-contained-filled" | "information-circle-contained" | "intersect" | "iphone-02" | "italics-01" | "italics-02" | "key-01" | "key-02" | "keyboard" | "laptop-01" | "laptop-02" | "layers-01" | "layers-02" | "layers-03" | "layers-04" | "layers-05" | "layout-01" | "layout-02" | "layout-03" | "layout-04" | "layout-bottom" | "layout-grid-01" | "layout-left" | "layout-right" | "layout-scale" | "layout-top" | "letter-spacing-01" | "letter-spacing-02" | "letter-spacing-03" | "lightbulb-01" | "lightbulb-02" | "lightbulb-03" | "lightning-01" | "lightning-02" | "lightning-circle-contained" | "lightning-filled" | "lightning-square-contained" | "line-chart-down-01" | "line-chart-down-02" | "line-chart-up-01" | "line-chart-up-02" | "line-height" | "link-angled" | "link-broken" | "link-external" | "list" | "list-numbers" | "loader-01" | "loader-02" | "lock-01" | "lock-02" | "lock-03" | "lock-04" | "lock-open-01" | "lock-open-02" | "lock-open-03" | "lock-open-04" | "logout-01" | "logout-02" | "logout-03" | "logout-04" | "luggage-01" | "luggage-02" | "luggage-03" | "luggage-04" | "mail-01" | "mail-02" | "mail-03" | "mail-04" | "mail-05" | "map-01" | "map-02" | "map-03" | "map-04" | "marker-01" | "marker-02" | "marker-03" | "marker-04" | "marker-05" | "marker-06" | "maximise-01" | "maximise-02" | "media-strip-01" | "media-strip-02" | "menu-01" | "menu-02" | "menu-03" | "menu-04" | "menu-05" | "message-alert-circle" | "message-alert-plus" | "message-chat-01" | "message-circle" | "message-notify-circle" | "message-notify-square" | "message-square" | "message-square-information" | "message-square-plus" | "message-square-typing" | "message-square-x" | "message-text-01" | "message-text-02" | "message-typing" | "message-x" | "microphone-01" | "microphone-02" | "microphone-off-01" | "microphone-off-02" | "minimise-01" | "minimise-02" | "minus-circle-contained" | "minus-square-contained" | "moon-01" | "moon-02" | "mouse" | "move" | "note-01" | "note-02" | "notification-box" | "notification-bubble" | "notification-square-01" | "notification-square-02" | "octagon" | "overlap" | "package-01" | "package-02" | "package-check" | "package-minus" | "package-plus" | "package-x" | "paint-bucket-01" | "paint-bucket-02" | "palette" | "paperclip" | "paperclip-01" | "paperclip-02" | "passport" | "password-01" | "password-02" | "pause-01" | "pause-02" | "pause-03" | "pen-tool-01" | "pen-tool-02" | "pen-tool-03" | "pen-tool-04" | "pencil-01" | "pencil-02" | "pencil-03" | "pentagon" | "percent-01" | "percent-02" | "percent-03" | "perspective" | "phone" | "phone-call-01" | "phone-call-02" | "phone-down" | "phone-incoming-01" | "phone-incoming-02" | "phone-off" | "phone-outgoing-01" | "phone-outgoing-02" | "phone-up" | "phone-x" | "pie-chart-01" | "pie-chart-02" | "pie-chart-03" | "plane" | "play-01" | "play-02" | "play-03" | "plug-01" | "plus-01" | "plus-02" | "plus-03" | "pointer-01" | "pointer-02" | "power" | "presentation-01" | "presentation-02" | "presentation-03" | "quote" | "receipt" | "receipt-lines" | "refresh-01" | "rss" | "ruler" | "save-01" | "save-02" | "scale-01" | "scale-02" | "scale-03" | "scan" | "scissors-01" | "scissors-02" | "scissors-03" | "scissors-04" | "search-01" | "search-02" | "send-01" | "send-02" | "send-03" | "server-01" | "server-02" | "server-03" | "server-04" | "server-05" | "server-06" | "server-down" | "server-up" | "settings" | "share" | "shield-01" | "shield-02" | "shield-check" | "shield-plus" | "shuffle" | "signal" | "skew" | "skip-back" | "skip-forward" | "slash-01-backward" | "slash-01-forward" | "slash-02-forward" | "smiley-happy" | "smiley-happy-plus" | "smiley-neutral" | "smiley-sad" | "smiley-wink" | "snowflake" | "sort-horizontal" | "sort-vertical-01" | "sort-vertical-02" | "space-height" | "space-horizontal" | "space-vertical" | "space-width" | "speaker" | "square" | "star-01" | "star-02" | "stars" | "stop-01" | "stop-02" | "stopwatch-01" | "stopwatch-02" | "stopwatch-03" | "stopwatch-04" | "stopwatch-05" | "stopwatch-off" | "stopwatch-snooze" | "sun-01" | "sun-02" | "sun-03" | "sun-down" | "sun-up" | "superscript" | "tag" | "target-01" | "target-02" | "target-03" | "target-04" | "temperature-01" | "temperature-02" | "temperature-03" | "temperature-04" | "terminal" | "text-input-01" | "text-input-02" | "thumb-down" | "thumb-up" | "ticket-01" | "ticket-02" | "toggle-right" | "toogle-left" | "train" | "transform" | "trash-01" | "trash-02" | "trash-03" | "trash-04" | "trend-down-01" | "trend-down-02" | "trend-up-01" | "trend-up-02" | "triangle" | "truck" | "tv" | "type-01" | "type-02" | "type-03" | "type-strike-01" | "type-strike-02" | "umbrella" | "umbrella-01" | "umbrella-02" | "underline-01" | "underline-02" | "union" | "upload-01" | "upload-02" | "upload-03" | "upload-04" | "user-profile-01" | "user-profile-02" | "user-profile-03" | "user-profile-add-01" | "user-profile-add-02" | "user-profile-check" | "user-profile-circle" | "user-profile-down" | "user-profile-group" | "user-profile-left" | "user-profile-minus" | "user-profile-right" | "user-profile-square" | "user-profile-star" | "user-profile-up" | "user-profile-x" | "users-profiles-01" | "users-profiles-02" | "users-profiles-03" | "users-profiles-check" | "users-profiles-down" | "users-profiles-left" | "users-profiles-minus" | "users-profiles-plus" | "users-profiles-right" | "users-profiles-up" | "users-profiles-x" | "variant" | "video-off" | "video-on" | "volume-01" | "volume-02" | "volume-03" | "volume-04" | "volume-05" | "volume-06" | "volume-07" | "wallert-04" | "wallet-01" | "wallet-02" | "wallet-03" | "watch-01" | "watch-02" | "waveform" | "webcam" | "wifi-off" | "wifi-on" | "wind-01" | "wind-02" | "wind-03" | "wrench" | "x-01" | "x-02" | "x-03" | "x-circle-contained" | "x-square-contained" | "youtube" | "zoom-in" | "zoom-out" | "custom-warning-xs-neutral" | "custom-add-2xl-active" | "custom-add-2xl-neutral" | "custom-add-lg-active" | "custom-add-lg-neutral" | "custom-add-md-active" | "custom-add-md-neutral" | "custom-add-sm-active" | "custom-add-sm-neutral" | "custom-add-xl-active" | "custom-add-xl-neutral" | "custom-add-xs-active" | "custom-add-xs-neutral" | "custom-amf-note-md-active" | "custom-amf-note-paid-md-active" | "custom-att-acc-md-active" | "custom-att-evaluate-md-active" | "custom-att-na-md-active" | "custom-cert-apply-md-active" | "custom-cert-refused-md-active" | "custom-cert-treatment-md-active" | "custom-cert-view-md-active" | "custom-certificate-2xl-active" | "custom-certificate-2xl-neutral" | "custom-certificate-lg-active" | "custom-certificate-lg-neutral" | "custom-certificate-md-active" | "custom-certificate-md-neutral" | "custom-certificate-sm-active" | "custom-certificate-sm-neutral" | "custom-certificate-xl-active" | "custom-certificate-xl-neutral" | "custom-certificate-xs-active" | "custom-certificate-xs-neutral" | "custom-check-2xl-active" | "custom-check-2xl-neutral" | "custom-check-lg-active" | "custom-check-lg-neutral" | "custom-check-md-active" | "custom-check-md-neutral" | "custom-check-sm-active" | "custom-check-sm-neutral" | "custom-check-xl-active" | "custom-check-xl-neutral" | "custom-check-xs-active" | "custom-check-xs-neutral" | "custom-content-classroom-md-active" | "custom-content-classroom-md-neutral" | "custom-content-elearning-md-active" | "custom-content-elearning-md-neutral" | "custom-content-liveonline-md-active" | "custom-content-liveonline-md-neutral" | "custom-content-selfstudy-md-active" | "custom-content-selfstudy-md-neutral" | "custom-content-technical-md-active" | "custom-content-technical-md-neutral" | "custom-delete-2xl-active" | "custom-delete-2xl-neutral" | "custom-delete-lg-active" | "custom-delete-lg-neutral" | "custom-delete-md-active" | "custom-delete-md-neutral" | "custom-delete-sm-active" | "custom-delete-sm-neutral" | "custom-delete-xl-active" | "custom-delete-xl-neutral" | "custom-delete-xs-active" | "custom-delete-xs-neutral" | "custom-doc-2xl-active" | "custom-doc-2xl-neutral" | "custom-doc-lg-active" | "custom-doc-lg-neutral" | "custom-doc-md-active" | "custom-doc-md-neutral" | "custom-doc-sm-active" | "custom-doc-sm-neutral" | "custom-doc-xl-active" | "custom-doc-xl-neutral" | "custom-doc-xs-active" | "custom-doc-xs-neutral" | "custom-download-2xl-active" | "custom-download-2xl-neutral" | "custom-download-lg-active" | "custom-download-lg-neutral" | "custom-download-md-active" | "custom-download-md-neutral" | "custom-download-sm-active" | "custom-download-sm-neutral" | "custom-download-xl-active" | "custom-download-xl-neutral" | "custom-download-xs-active" | "custom-download-xs-neutral" | "custom-exam-failed-md-active" | "custom-exam-missed-md-active" | "custom-exam-passed-md-active" | "custom-exam-schedule-md-active" | "custom-exam-scheduled-md-active" | "custom-exam-waiting-md-active" | "custom-info-2xl-active" | "custom-info-2xl-neutral" | "custom-info-lg-active" | "custom-info-lg-neutral" | "custom-info-md-active" | "custom-info-md-neutral" | "custom-info-sm-active" | "custom-info-sm-neutral" | "custom-info-xl-active" | "custom-info-xl-neutral" | "custom-info-xs-active" | "custom-info-xs-neutral" | "custom-not-applicable-2xl-active" | "custom-not-applicable-2xl-neutral" | "custom-not-applicable-lg-active" | "custom-not-applicable-lg-neutral" | "custom-not-applicable-md-active" | "custom-not-applicable-md-neutral" | "custom-not-applicable-sm-active" | "custom-not-applicable-sm-neutral" | "custom-not-applicable-xl-active" | "custom-not-applicable-xl-neutral" | "custom-not-applicable-xs-active" | "custom-not-applicable-xs-neutral" | "custom-slide-2xl-active" | "custom-slide-2xl-neutral" | "custom-slide-lg-active" | "custom-slide-lg-neutral" | "custom-slide-md-active" | "custom-slide-md-neutral" | "custom-slide-sm-active" | "custom-slide-sm-neutral" | "custom-slide-xl-active" | "custom-slide-xl-neutral" | "custom-slide-xs-active" | "custom-slide-xs-neutral" | "custom-time-2xl-active" | "custom-time-2xl-neutral" | "custom-time-lg-active" | "custom-time-lg-neutral" | "custom-time-md-active" | "custom-time-md-neutral" | "custom-time-sm-active" | "custom-time-sm-neutral" | "custom-time-xl-active" | "custom-time-xl-neutral" | "custom-time-xs-active" | "custom-time-xs-neutral" | "custom-tools-2xl-active" | "custom-tools-2xl-neutral" | "custom-tools-lg-active" | "custom-tools-lg-neutral" | "custom-tools-md-active" | "custom-tools-md-neutral" | "custom-tools-sm-active" | "custom-tools-sm-neutral" | "custom-tools-xl-active" | "custom-tools-xl-neutral" | "custom-tools-xs-active" | "custom-tools-xs-neutral" | "custom-upload-2xl-active" | "custom-upload-2xl-neutral" | "custom-upload-lg-active" | "custom-upload-lg-neutral" | "custom-upload-md-active" | "custom-upload-md-neutral" | "custom-upload-sm-active" | "custom-upload-sm-neutral" | "custom-upload-xl-active" | "custom-upload-xl-neutral" | "custom-upload-xs-active" | "custom-upload-xs-neutral" | "custom-view-2xl-active" | "custom-view-2xl-neutral" | "custom-view-lg-active" | "custom-view-lg-neutral" | "custom-view-md-active" | "custom-view-md-neutral" | "custom-view-sm-active" | "custom-view-sm-neutral" | "custom-view-xl-active" | "custom-view-xl-neutral" | "custom-view-xs-active" | "custom-view-xs-neutral" | "custom-warning-2xl-active" | "custom-warning-2xl-neutral" | "custom-warning-lg-active" | "custom-warning-lg-neutral" | "custom-warning-md-active" | "custom-warning-md-neutral" | "custom-warning-sm-active" | "custom-warning-sm-neutral" | "custom-warning-xl-active" | "custom-warning-xl-neutral" | "custom-warning-xs-active">;
9536
+ /** Icon image URL — used when [icon] is empty */
9537
+ iconSrc: _angular_core.InputSignal<string>;
9538
+ /** Raw SVG string for the icon — used when [icon] and [iconSrc] are empty */
9539
+ iconSvg: _angular_core.InputSignal<string>;
9540
+ /** Uppercase category tag above the title (e.g. "AI Management"); hidden when empty */
9541
+ category: _angular_core.InputSignal<string>;
9542
+ /** Course title (required) */
9543
+ title: _angular_core.InputSignal<string>;
9544
+ /** Muted meta line (e.g. "5 days · Advanced"); hidden when empty */
9545
+ meta: _angular_core.InputSignal<string>;
9546
+ /** CTA link text at the bottom of the tile */
9547
+ ctaLabel: _angular_core.InputSignal<string>;
9548
+ /** When set, the tile renders as a link */
9549
+ href: _angular_core.InputSignal<string>;
9550
+ /** Link target, e.g. "_blank" — only used together with [href] */
9551
+ target: _angular_core.InputSignal<string>;
9552
+ /** Emitted on click / Enter / Space when the tile has no [href] */
9553
+ cardClick: _angular_core.OutputEmitterRef<void>;
9554
+ isLink: _angular_core.Signal<boolean>;
9555
+ /** rel="noopener noreferrer" is applied automatically for target="_blank" */
9556
+ rel: _angular_core.Signal<"noopener noreferrer" | null>;
9557
+ /** The icon tile renders only when an icon source is provided */
9558
+ hasThumb: _angular_core.Signal<boolean>;
9559
+ safeThumbSvg: _angular_core.Signal<_angular_platform_browser.SafeHtml | null>;
9560
+ onActivate(event: Event): void;
9561
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CourseTileComponent, never>;
9562
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CourseTileComponent, "pecb-course-tile", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconSrc": { "alias": "iconSrc"; "required": false; "isSignal": true; }; "iconSvg": { "alias": "iconSvg"; "required": false; "isSignal": true; }; "category": { "alias": "category"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "meta": { "alias": "meta"; "required": false; "isSignal": true; }; "ctaLabel": { "alias": "ctaLabel"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; }, { "cardClick": "cardClick"; }, never, never, true, never>;
9563
+ }
9564
+
9565
+ export { APP_HEADER_TRANSLATIONS, APP_SHELL_LOCALES, APP_SIDEBAR_MENU_ICONS, APP_SIDEBAR_MENU_TRANSLATIONS, APP_SIDEBAR_TRANSLATIONS, AccordionItemComponent, AccordionSmallComponent, ActionItemComponent, AddButtonComponent, AdminHeaderComponent, AdminHeaderFieldTemplateDirective, AffixComponent, AlertComponent, AnchorComponent, AppHeaderComponent, AppSidebarComponent, 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, CourseContentPanelComponent, CoursePlayerComponent, CourseTileComponent, CredentialCardComponent, DEFAULT_APP_HEADER_LABELS, DEFAULT_APP_SIDEBAR_LABELS, DEFAULT_APP_SIDEBAR_LANGUAGES, DEFAULT_APP_SIDEBAR_MENU, DEFAULT_APP_SIDEBAR_ROLES, DEFAULT_COURSE_CONTENT_PANEL_LABELS, DEFAULT_LANGUAGES, DEFAULT_SLIDE_VIEWER_KEY_MAP, DEFAULT_SLIDE_VIEWER_LABELS, DEFAULT_SLIDE_VIEWER_TOOLS, DEFAULT_SLIDE_VIEWER_ZOOM_STEPS, DEFAULT_VIDEO_PLAYER_LABELS, DEFAULT_VIDEO_PLAYER_RATES, DashboardGridComponent, DatepickerComponent, DividerComponent, DropdownComponent, EMPTY_STATE_MAX_BUTTONS, EditButtonComponent, EditCoverPhotoComponent, EmptyStateComponent, ExpandableRowTableComponent, FileUploadComponent, FilterColumnsComponent, FloatButtonComponent, FloatButtonItemComponent, FormSectionCardComponent, FullscreenModalComponent, FullscreenModalContentDirective, FullscreenModalFooterDirective, FullscreenModalHeaderDirective, GeneralComponent, GridComponent, GridItemComponent, HeaderActionsComponent, HeaderComponent, HeaderDividerComponent, HeaderLanguageComponent, HeaderSearchComponent, HeaderUserComponent, HierarchicalTableComponent, HorizontalStepsComponent, HubCardComponent, HubCardGridComponent, IconComponent, IconRegistry, IconTagComponent, InformationBoxComponent, InputComponent, LanguageDropdownComponent, LinkButtonComponent, ListItemComponent, LoadingService, MediaComponent, MessageBubbleComponent, MessageItemComponent, MetricsCardComponent, MiniIconButtonComponent, NoResultsComponent, NoteSidebarItemComponent, NotesPanelComponent, NotificationService, NotificationStatusLinkComponent, OutlinedFieldComponent, PECB_COLOR_PALETTE, PECB_CUSTOM_ICONS, PECB_FONT_STYLES, PECB_ICONS, PECB_TYPE_SCALE, PaginationComponent, PaymentPlanCardComponent, PaymentScheduleCardComponent, PaymentSummaryComponent, PeriodPaymentModalComponent, PriceMethodComponent, ProfileComponent, ProfileElementsCardComponent, ProfileGroupComponent, ProgressArcComponent, ProgressBarComponent, ProgressCircleComponent, ProjectLayoutComponent, QuantitySelectorComponent, QuestionTypeTagComponent, RadioComponent, RadioDisplayComponent, RatingNumberComponent, ReasonForReturnComponent, RequestSentByComponent, RequestStatusBarComponent, ResultPageComponent, RightModalComponent, RightModalContentDirective, RightModalFooterDirective, RightModalHeaderDirective, ShadowDirective, SidebarComponent, SkeletonComponent, SlidePointsComponent, SlideViewerComponent, SlideViewerDayDirective, SlideViewerThumbnailDirective, SpacerComponent, SpinnerComponent, StandardsPdfCardComponent, StatisticsCardComponent, StatusComponent, StepperComponent, TabComponent, TableComponent, TagComponent, TagSelectComponent, TestimonialComponent, TextFormFieldComponent, ThemeService, ToggleComponent, ToolbarBarComponent, TooltipComponent, TooltipDirective, TourComponent, TranscriptLineComponent, TypographyComponent, UserWithEmailComponent, VerifyChecklistComponent, VideoPlayerComponent, VideoUploadBarComponent, VirtualTableComponent, addClass, announceToScreenReader, appHeaderLabels, appSidebarLabels, appSidebarMenu, appSidebarRoles, capitalize, clampSlidePage, closestElement, copyToClipboard, courseModuleStats, courseProgress, createAuthError, createAuthorizationError, createConfigError, createError, createNetworkError, createValidationError, disableBodyScroll, escapeHtml, findCourseLesson, findCourseModule, formatCount, formatCourseDuration, formatCourseTime, formatErrorForLog, formatErrorMessage, formatVideoTime, generateLinkedIds, generateUniqueId, getAriaCurrent, getButtonAriaAttributes, getComputedStyleValue, getDialogAriaAttributes, getFocusableElements, getInitials, getInputAriaAttributes, getOptionAriaAttributes, getProgressAriaAttributes, getScrollParent, getTabAriaAttributes, getVisuallyHiddenStyles, handleError, hasClass, isBlank, isBrowser, isElementVisible, isNotBlank, isPecbError, isRecoverableError, matchesSelector, parseLessonPartTitle, pluralize, prefersHighContrast, prefersReducedMotion, registerErrorHandler, removeClass, resolveAppShellLocale, resolveLessonStatus, scrollIntoView, slugify, stripHtml, toCamelCase, toKebabCase, toPascalCase, toSnakeCase, toggleClass, trapFocus, truncate, tryAsync, trySync, wrapError };
9566
+ export type { AccordionVariant, ActionItemPriority, AddButtonVariant, AdminHeaderAction, AdminHeaderActionType, AdminHeaderBadgeVariant, AdminHeaderField, AdminHeaderFieldType, AdminHeaderMetadata, AdminHeaderMetadataType, AdminHeaderProfile, AffixPosition, AlertType, AlertVariant, Alignment, AnchorDirection, AnchorItem, AnchorLevel, AnimationTiming, AppHeaderAction, AppHeaderChip, AppHeaderChipTone, AppHeaderLabels, AppHeaderNotification, AppShellLocale, AppShellTranslations, AppSidebarLabels, AppSidebarMenuItem, AppSidebarMenuOption, AppSidebarMenuOptionChange, AppSidebarMenuStrings, AppSidebarNavGroup, AppSidebarNavItem, AppSidebarProduct, AppSidebarRouterLink, AppSidebarUser, 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, CourseContentPanelAccent, CourseContentPanelDensity, CourseContentPanelLabels, CourseContentPanelLayout, CourseContentPanelTab, CourseLesson, CourseLessonRunView, CourseLessonStatus, CourseLessonType, CourseLessonView, CourseModule, CourseModuleStats, CourseModuleView, CoursePlayerPanelPosition, CourseProgressStats, CourseTimelineRow, CourseTranscriptCue, CourseTranscriptRow, CredentialCardAction, CredentialCardMetaRow, CredentialCardProgress, CredentialCardTone, CustomIconName, 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, HubCardSize, IconColor, IconName, IconShape, IconSize, IconTagType, InformationBoxVariant, InputSize, InputType, LanguageDisplayMode, LanguageOption, LinkButtonType, Loadable, LoadingState, MarkedDate, 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, PaymentScheduleCardAction, PaymentScheduleCardMeta, PaymentScheduleCardPeriod, PaymentScheduleCardTone, PaymentSummaryRow, PdfCardVariant, PecbError, PecbTableColumn, PecbTableColumnComponent, PecbTableColumnType, PeriodPaymentModalPeriod, Position, ProfileBadge, ProfileGroupItem, ProfileGroupSize, ProfileIndicator, ProfileSize, ProfileType, ProgressArcSize, 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, SlideViewerDay, SlideViewerDayContext, SlideViewerKeyAction, SlideViewerKeyMap, SlideViewerLabels, SlideViewerMoveEvent, SlideViewerPageEvent, SlideViewerSearchEvent, SlideViewerSidebarPosition, SlideViewerSlide, SlideViewerThumbnailContext, SlideViewerTool, SlideViewerToolEvent, 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, TagSelectOption, 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, VideoPlayerError, VideoPlayerLabels, VideoPlayerPreload, VideoPlayerSource, VideoPlayerTimeEvent, VideoPlayerTrack, VirtualTableColumn, VirtualTablePageEvent, VirtualTableProgressConfig };