@pecb-ui/components 1.1.12 → 1.1.15
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/README.md +321 -0
- package/data-display/index.d.ts +1 -1
- package/feedback/index.d.ts +1 -1
- package/fesm2022/pecb-ui-components-data-display.mjs +1 -1
- package/fesm2022/pecb-ui-components-data-display.mjs.map +1 -1
- package/fesm2022/pecb-ui-components-feedback.mjs +1 -1
- package/fesm2022/pecb-ui-components-feedback.mjs.map +1 -1
- package/fesm2022/pecb-ui-components-forms.mjs +1 -1
- package/fesm2022/pecb-ui-components-forms.mjs.map +1 -1
- package/fesm2022/pecb-ui-components-layout.mjs +1 -1
- package/fesm2022/pecb-ui-components-layout.mjs.map +1 -1
- package/fesm2022/pecb-ui-components-navigation.mjs +1 -1
- package/fesm2022/pecb-ui-components-navigation.mjs.map +1 -1
- package/fesm2022/pecb-ui-components-overlays.mjs +1 -1
- package/fesm2022/pecb-ui-components-overlays.mjs.map +1 -1
- package/fesm2022/pecb-ui-components.mjs +4180 -1410
- package/fesm2022/pecb-ui-components.mjs.map +1 -1
- package/forms/index.d.ts +1 -1
- package/index.d.ts +1792 -124
- package/layout/index.d.ts +1 -1
- package/lib/components/shadow/shadow.directive.scss +42 -0
- package/navigation/index.d.ts +1 -1
- package/overlays/index.d.ts +1 -1
- package/package.json +6 -2
- package/styles/abstracts/_mixins.scss +331 -0
- package/styles/abstracts/_variables.scss +328 -0
- package/styles/base/_container.scss +26 -0
- package/styles/base/_reset.scss +72 -0
- package/styles/components/_overlays.scss +65 -0
- package/styles/main.scss +15 -0
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 {
|
|
@@ -311,8 +311,27 @@ interface PecbTableColumn {
|
|
|
311
311
|
width?: string;
|
|
312
312
|
/** Caps the cell width so long text truncates with an ellipsis (e.g. '240px'). */
|
|
313
313
|
maxWidth?: string;
|
|
314
|
+
/** Floor for the column width so it is never squeezed to nothing (e.g. '120px'). */
|
|
315
|
+
minWidth?: string;
|
|
314
316
|
/** Wrap long text onto multiple lines instead of truncating. Overrides the table-level `wrapText`. */
|
|
315
317
|
wrap?: boolean;
|
|
318
|
+
/**
|
|
319
|
+
* Caps wrapped text at N lines and ellipsises the rest. Implies `wrap`.
|
|
320
|
+
* Overrides the table-level `maxLines`.
|
|
321
|
+
*/
|
|
322
|
+
maxLines?: number;
|
|
323
|
+
/**
|
|
324
|
+
* Hard character cap. Longer values are cut at the last word boundary and
|
|
325
|
+
* suffixed with an ellipsis; the full value stays available on hover.
|
|
326
|
+
* Use it when the column width must not depend on font metrics.
|
|
327
|
+
*/
|
|
328
|
+
maxChars?: number;
|
|
329
|
+
/**
|
|
330
|
+
* Hover-hint behaviour for this column: `'auto'` (default) reveals the full
|
|
331
|
+
* value only when it is actually clipped, `'always'` always reveals it,
|
|
332
|
+
* `'never'` disables the hint.
|
|
333
|
+
*/
|
|
334
|
+
hint?: 'auto' | 'always' | 'never';
|
|
316
335
|
align?: 'left' | 'center' | 'right';
|
|
317
336
|
sortable?: boolean;
|
|
318
337
|
cellTemplate?: TemplateRef<any>;
|
|
@@ -444,6 +463,28 @@ declare class TableComponent {
|
|
|
444
463
|
* value is shown on hover via the cell's title. Per-column `wrap` overrides this.
|
|
445
464
|
*/
|
|
446
465
|
wrapText: _angular_core.InputSignal<boolean>;
|
|
466
|
+
/**
|
|
467
|
+
* Default width cap for plain text / link / user columns that declare no
|
|
468
|
+
* `width` or `maxWidth`. This is what keeps a single long column (a URL, a
|
|
469
|
+
* description, an unbroken token) from stretching the whole table and forcing
|
|
470
|
+
* a horizontal scrollbar - the cell truncates or wraps instead.
|
|
471
|
+
*
|
|
472
|
+
* Pass `'none'` to opt out and restore raw browser sizing.
|
|
473
|
+
* @default '320px'
|
|
474
|
+
*/
|
|
475
|
+
cellMaxWidth: _angular_core.InputSignal<string>;
|
|
476
|
+
/**
|
|
477
|
+
* When cells wrap, cap them at this many lines and ellipsise the rest.
|
|
478
|
+
* `undefined` (default) leaves wrapped text unbounded.
|
|
479
|
+
* Per-column `maxLines` overrides this.
|
|
480
|
+
*/
|
|
481
|
+
maxLines: _angular_core.InputSignal<number | undefined>;
|
|
482
|
+
/**
|
|
483
|
+
* Truncate long header labels to one line with an ellipsis and show the full
|
|
484
|
+
* label on hover, so a verbose header never widens its column.
|
|
485
|
+
* @default true
|
|
486
|
+
*/
|
|
487
|
+
truncateHeaders: _angular_core.InputSignal<boolean>;
|
|
447
488
|
/**
|
|
448
489
|
* Column key currently being sorted
|
|
449
490
|
*/
|
|
@@ -492,10 +533,56 @@ declare class TableComponent {
|
|
|
492
533
|
get tableClasses(): string;
|
|
493
534
|
getCellValue(row: any, key: string): any;
|
|
494
535
|
getAlignmentClass(column: PecbTableColumn): string;
|
|
536
|
+
/**
|
|
537
|
+
* Columns whose content is plain text the table itself renders, and which are
|
|
538
|
+
* therefore safe to cap and ellipsise automatically. Custom templates, dynamic
|
|
539
|
+
* components, status pills and action buttons are left to size themselves.
|
|
540
|
+
*/
|
|
541
|
+
private isTextualColumn;
|
|
495
542
|
/** Whether a column's cells wrap long text (per-column overrides the table default). */
|
|
496
543
|
isCellWrapped(column: PecbTableColumn): boolean;
|
|
497
|
-
/**
|
|
544
|
+
/** Line cap for wrapped cells, or `null` when wrapped text is unbounded. */
|
|
545
|
+
getCellLineClamp(column: PecbTableColumn): number | null;
|
|
546
|
+
/** `ngStyle` map that applies the line cap (a no-op when there is none). */
|
|
547
|
+
getCellTextStyle(column: PecbTableColumn): Record<string, string> | null;
|
|
548
|
+
/**
|
|
549
|
+
* Width cap for a cell. Explicit `maxWidth`/`width` win; otherwise textual
|
|
550
|
+
* columns fall back to the table-wide `cellMaxWidth` so no single column can
|
|
551
|
+
* stretch the table.
|
|
552
|
+
*/
|
|
553
|
+
getCellMaxWidth(column: PecbTableColumn): string | null;
|
|
554
|
+
/** Lower bound for a column's width, so narrow viewports do not crush it. */
|
|
555
|
+
getCellMinWidth(column: PecbTableColumn): string | null;
|
|
556
|
+
/** The raw, untruncated value of a cell as a string. */
|
|
557
|
+
private getCellText;
|
|
558
|
+
/**
|
|
559
|
+
* The text actually rendered in a cell: the raw value, shortened to
|
|
560
|
+
* `column.maxChars` at the last word boundary when one is configured.
|
|
561
|
+
*/
|
|
562
|
+
getDisplayValue(row: any, column: PecbTableColumn): string;
|
|
563
|
+
/** Cuts `text` to `max` characters on a word boundary and appends an ellipsis. */
|
|
564
|
+
private clampChars;
|
|
565
|
+
/**
|
|
566
|
+
* Full text shown on hover for a cell, or `null` when the column opts out.
|
|
567
|
+
* Whether it is actually applied is decided per-cell in {@link onCellEnter}.
|
|
568
|
+
*/
|
|
498
569
|
getCellTitle(row: any, column: PecbTableColumn): string | null;
|
|
570
|
+
/**
|
|
571
|
+
* Attaches the hover hint lazily, on the way in, so it only appears when the
|
|
572
|
+
* value is genuinely clipped - by width, by line cap, or by `maxChars`.
|
|
573
|
+
* A `title` on every cell would otherwise fire on harmless short values.
|
|
574
|
+
*/
|
|
575
|
+
onCellEnter(event: Event, row: any, column: PecbTableColumn): void;
|
|
576
|
+
/** Same lazy hint for header labels, which truncate on their own width. */
|
|
577
|
+
onHeaderEnter(event: Event, column: PecbTableColumn): void;
|
|
578
|
+
/** True when an element's content overflows its box horizontally or vertically. */
|
|
579
|
+
private isElementClipped;
|
|
580
|
+
/**
|
|
581
|
+
* A `-webkit-line-clamp` box reports `scrollHeight === clientHeight`, so the
|
|
582
|
+
* plain overflow check above can never see a clamped cell as clipped. Lift the
|
|
583
|
+
* clamp for one synchronous measurement and put it straight back.
|
|
584
|
+
*/
|
|
585
|
+
private isLineClampOverflowing;
|
|
499
586
|
onRowClick(row: any, index: number): void;
|
|
500
587
|
onRowAction(action: string, row: any, index: number, event: Event): void;
|
|
501
588
|
onHeaderClick(column: PecbTableColumn): void;
|
|
@@ -529,7 +616,7 @@ declare class TableComponent {
|
|
|
529
616
|
getLinkHref(value: string): string;
|
|
530
617
|
private emitSelectionChange;
|
|
531
618
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableComponent, never>;
|
|
532
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableComponent, "pecb-table", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "showPagination": { "alias": "showPagination"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "showPageSizeSelector": { "alias": "showPageSizeSelector"; "required": false; "isSignal": true; }; "paginationVariant": { "alias": "paginationVariant"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "selectedIndices": { "alias": "selectedIndices"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "wrapText": { "alias": "wrapText"; "required": false; "isSignal": true; }; "sortColumn": { "alias": "sortColumn"; "required": false; "isSignal": true; }; "sortDirection": { "alias": "sortDirection"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "loadingText": { "alias": "loadingText"; "required": false; "isSignal": true; }; "selectAllAriaLabel": { "alias": "selectAllAriaLabel"; "required": false; "isSignal": true; }; "selectRowAriaLabel": { "alias": "selectRowAriaLabel"; "required": false; "isSignal": true; }; }, { "currentPage": "currentPageChange"; "pageSize": "pageSizeChange"; "selectedIndices": "selectedIndicesChange"; "sortColumn": "sortColumnChange"; "sortDirection": "sortDirectionChange"; "pageChange": "pageChange"; "rowClick": "rowClick"; "rowAction": "rowAction"; "sortChange": "sortChange"; "selectionChange": "selectionChange"; }, ["emptyTemplate", "loadingTemplate"], never, true, never>;
|
|
619
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableComponent, "pecb-table", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "showPagination": { "alias": "showPagination"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "showPageSizeSelector": { "alias": "showPageSizeSelector"; "required": false; "isSignal": true; }; "paginationVariant": { "alias": "paginationVariant"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "selectedIndices": { "alias": "selectedIndices"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "wrapText": { "alias": "wrapText"; "required": false; "isSignal": true; }; "cellMaxWidth": { "alias": "cellMaxWidth"; "required": false; "isSignal": true; }; "maxLines": { "alias": "maxLines"; "required": false; "isSignal": true; }; "truncateHeaders": { "alias": "truncateHeaders"; "required": false; "isSignal": true; }; "sortColumn": { "alias": "sortColumn"; "required": false; "isSignal": true; }; "sortDirection": { "alias": "sortDirection"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "loadingText": { "alias": "loadingText"; "required": false; "isSignal": true; }; "selectAllAriaLabel": { "alias": "selectAllAriaLabel"; "required": false; "isSignal": true; }; "selectRowAriaLabel": { "alias": "selectRowAriaLabel"; "required": false; "isSignal": true; }; }, { "currentPage": "currentPageChange"; "pageSize": "pageSizeChange"; "selectedIndices": "selectedIndicesChange"; "sortColumn": "sortColumnChange"; "sortDirection": "sortDirectionChange"; "pageChange": "pageChange"; "rowClick": "rowClick"; "rowAction": "rowAction"; "sortChange": "sortChange"; "selectionChange": "selectionChange"; }, ["emptyTemplate", "loadingTemplate"], never, true, never>;
|
|
533
620
|
}
|
|
534
621
|
|
|
535
622
|
type TabStyle = 'rounded' | 'line';
|
|
@@ -1124,6 +1211,878 @@ declare class SidebarComponent {
|
|
|
1124
1211
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidebarComponent, "pecb-sidebar", never, { "sections": { "alias": "sections"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "logoSrc": { "alias": "logoSrc"; "required": false; "isSignal": true; }; "sidebarLogo": { "alias": "sidebarLogo"; "required": false; "isSignal": true; }; "collapsedLogo": { "alias": "collapsedLogo"; "required": false; "isSignal": true; }; "showFooter": { "alias": "showFooter"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "expandSidebarAriaLabel": { "alias": "expandSidebarAriaLabel"; "required": false; "isSignal": true; }; "collapseSidebarAriaLabel": { "alias": "collapseSidebarAriaLabel"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; "itemClick": "itemClick"; "collapseChange": "collapseChange"; }, never, ["[sidebar-header]", "[sidebar-footer]"], true, never>;
|
|
1125
1212
|
}
|
|
1126
1213
|
|
|
1214
|
+
/**
|
|
1215
|
+
* Public data contracts for {@link AppSidebarComponent}.
|
|
1216
|
+
*
|
|
1217
|
+
* Everything the sidebar renders is plain, serialisable data — no template
|
|
1218
|
+
* plumbing required at the call site. Icons are accepted either as inline SVG
|
|
1219
|
+
* markup (`icon`) or as an image URL (`iconSrc`).
|
|
1220
|
+
*
|
|
1221
|
+
* @module components/app-sidebar
|
|
1222
|
+
*/
|
|
1223
|
+
/**
|
|
1224
|
+
* Angular Router wiring, shared by every clickable entry.
|
|
1225
|
+
*
|
|
1226
|
+
* Setting {@link AppSidebarRouterLink.routerLink} makes the entry render as a
|
|
1227
|
+
* `routerLink` anchor and highlight itself through `routerLinkActive`, so the
|
|
1228
|
+
* sidebar follows real navigation — including back/forward and deep links.
|
|
1229
|
+
*
|
|
1230
|
+
* `@angular/router` is an **optional** peer dependency: the router directives
|
|
1231
|
+
* are only instantiated for entries that actually carry a `routerLink`, so
|
|
1232
|
+
* router-free applications are unaffected.
|
|
1233
|
+
*/
|
|
1234
|
+
interface AppSidebarRouterLink {
|
|
1235
|
+
/** Router commands, e.g. `'/courses'` or `['/courses', id]`. */
|
|
1236
|
+
routerLink?: string | unknown[];
|
|
1237
|
+
/** Query parameters passed to the router. */
|
|
1238
|
+
queryParams?: Record<string, unknown>;
|
|
1239
|
+
/** URL fragment passed to the router. */
|
|
1240
|
+
fragment?: string;
|
|
1241
|
+
/** Match the full URL rather than a prefix when deciding the active state. */
|
|
1242
|
+
routerLinkActiveExact?: boolean;
|
|
1243
|
+
}
|
|
1244
|
+
/**
|
|
1245
|
+
* A single navigation entry.
|
|
1246
|
+
*
|
|
1247
|
+
* An item renders as a `routerLink` anchor when `routerLink` is set, a plain
|
|
1248
|
+
* `<a>` when only `href` is set, and a `<button>` otherwise — so keyboard and
|
|
1249
|
+
* screen-reader semantics stay correct either way.
|
|
1250
|
+
*/
|
|
1251
|
+
interface AppSidebarNavItem extends AppSidebarRouterLink {
|
|
1252
|
+
/** Stable identity. Used for tracking, active state and expansion state. */
|
|
1253
|
+
id: string;
|
|
1254
|
+
/** Visible label. Also used as the collapsed-mode tooltip. */
|
|
1255
|
+
label: string;
|
|
1256
|
+
/** Inline SVG markup for the leading icon. */
|
|
1257
|
+
icon?: string;
|
|
1258
|
+
/** Image URL for the leading icon. Ignored when `icon` is set. */
|
|
1259
|
+
iconSrc?: string;
|
|
1260
|
+
/** Link target. When omitted, and with no `routerLink`, this is a button. */
|
|
1261
|
+
href?: string;
|
|
1262
|
+
/** Anchor target, e.g. `_blank`. Only applies when `href` is set. */
|
|
1263
|
+
target?: '_blank' | '_self' | '_parent' | '_top';
|
|
1264
|
+
/** Small trailing badge — a count or short word. */
|
|
1265
|
+
badge?: string | number;
|
|
1266
|
+
/** Renders the item non-interactive. */
|
|
1267
|
+
disabled?: boolean;
|
|
1268
|
+
/**
|
|
1269
|
+
* Sub-items, nestable up to three levels. They expand inline while the rail
|
|
1270
|
+
* is expanded, and inside the flyout while it is collapsed.
|
|
1271
|
+
*/
|
|
1272
|
+
children?: AppSidebarNavItem[];
|
|
1273
|
+
/** Arbitrary payload echoed back on `navigate`. */
|
|
1274
|
+
data?: unknown;
|
|
1275
|
+
}
|
|
1276
|
+
/** A titled block of navigation items. */
|
|
1277
|
+
interface AppSidebarNavGroup {
|
|
1278
|
+
/** Stable identity. */
|
|
1279
|
+
id: string;
|
|
1280
|
+
/** Optional uppercase heading shown above the group (hidden when collapsed). */
|
|
1281
|
+
label?: string;
|
|
1282
|
+
/** The group's items. */
|
|
1283
|
+
items: AppSidebarNavItem[];
|
|
1284
|
+
}
|
|
1285
|
+
/**
|
|
1286
|
+
* An entry in the product switcher at the top of the sidebar.
|
|
1287
|
+
*
|
|
1288
|
+
* A product may own its navigation. When the active product declares `items`
|
|
1289
|
+
* or `groups`, the rail renders *those* and ignores the component-level
|
|
1290
|
+
* navigation entirely — switching product swaps the whole tab set, which is how
|
|
1291
|
+
* a multi-product shell like the Central Hub actually behaves. A hub product
|
|
1292
|
+
* that only needs a dashboard simply declares one item.
|
|
1293
|
+
*/
|
|
1294
|
+
interface AppSidebarProduct extends AppSidebarRouterLink {
|
|
1295
|
+
/** Stable identity, matched against `activeProductId`. */
|
|
1296
|
+
id: string;
|
|
1297
|
+
/** Product name. */
|
|
1298
|
+
label: string;
|
|
1299
|
+
/**
|
|
1300
|
+
* Navigation shown while this product is active. Takes over the rail from
|
|
1301
|
+
* the component-level `items` / `groups`.
|
|
1302
|
+
*/
|
|
1303
|
+
items?: AppSidebarNavItem[];
|
|
1304
|
+
/** Grouped navigation shown while this product is active. */
|
|
1305
|
+
groups?: AppSidebarNavGroup[];
|
|
1306
|
+
/** Secondary line shown under the name in the trigger. */
|
|
1307
|
+
description?: string;
|
|
1308
|
+
/** Inline SVG markup for the product tile. */
|
|
1309
|
+
icon?: string;
|
|
1310
|
+
/** Short text for the tile when no `icon` is given, e.g. `"St"`. */
|
|
1311
|
+
initials?: string;
|
|
1312
|
+
/** Link target for the menu entry. */
|
|
1313
|
+
href?: string;
|
|
1314
|
+
/** Anchor target, e.g. `_blank`. Only applies when `href` is set. */
|
|
1315
|
+
target?: '_blank' | '_self' | '_parent' | '_top';
|
|
1316
|
+
/** Groups the entry under an uppercase heading in the menu. */
|
|
1317
|
+
section?: string;
|
|
1318
|
+
/** Renders the entry non-interactive. */
|
|
1319
|
+
disabled?: boolean;
|
|
1320
|
+
/** Muted note under the label, e.g. `"Coming soon"`. */
|
|
1321
|
+
hint?: string;
|
|
1322
|
+
/** Gives the entry the dark "hub" tile and bolder label. */
|
|
1323
|
+
featured?: boolean;
|
|
1324
|
+
}
|
|
1325
|
+
/** The signed-in user rendered at the bottom of the sidebar. */
|
|
1326
|
+
interface AppSidebarUser {
|
|
1327
|
+
/** Display name. */
|
|
1328
|
+
name: string;
|
|
1329
|
+
/**
|
|
1330
|
+
* Secondary line, e.g. the active role. A menu submenu marked
|
|
1331
|
+
* {@link AppSidebarMenuItem.reflectsRole} overrides it live, so the block
|
|
1332
|
+
* always shows the role that is actually selected.
|
|
1333
|
+
*/
|
|
1334
|
+
role?: string;
|
|
1335
|
+
/** Avatar image URL. */
|
|
1336
|
+
avatarSrc?: string;
|
|
1337
|
+
/** Fallback initials when no avatar image is available. */
|
|
1338
|
+
initials?: string;
|
|
1339
|
+
}
|
|
1340
|
+
/** A selectable choice inside a profile-menu submenu (language, role, …). */
|
|
1341
|
+
interface AppSidebarMenuOption {
|
|
1342
|
+
/** Stable identity. */
|
|
1343
|
+
id: string;
|
|
1344
|
+
/** Visible label. */
|
|
1345
|
+
label: string;
|
|
1346
|
+
/** Inline SVG markup shown before the label. */
|
|
1347
|
+
icon?: string;
|
|
1348
|
+
}
|
|
1349
|
+
/**
|
|
1350
|
+
* An entry in the profile dropdown.
|
|
1351
|
+
*
|
|
1352
|
+
* Supplying {@link AppSidebarMenuItem.options} turns the entry into a submenu
|
|
1353
|
+
* that flies out beside the dropdown and reports selections through
|
|
1354
|
+
* `menuOptionChange`.
|
|
1355
|
+
*/
|
|
1356
|
+
interface AppSidebarMenuItem extends AppSidebarRouterLink {
|
|
1357
|
+
/** Stable identity. */
|
|
1358
|
+
id: string;
|
|
1359
|
+
/** Visible label. */
|
|
1360
|
+
label: string;
|
|
1361
|
+
/** Inline SVG markup for the leading icon. */
|
|
1362
|
+
icon?: string;
|
|
1363
|
+
/** Link target. When omitted the entry renders as a button. */
|
|
1364
|
+
href?: string;
|
|
1365
|
+
/** Anchor target, e.g. `_blank`. Only applies when `href` is set. */
|
|
1366
|
+
target?: '_blank' | '_self' | '_parent' | '_top';
|
|
1367
|
+
/** `danger` paints the entry in the destructive colour (e.g. Log out). */
|
|
1368
|
+
variant?: 'default' | 'danger';
|
|
1369
|
+
/** Draws a separator above the entry. */
|
|
1370
|
+
dividerBefore?: boolean;
|
|
1371
|
+
/** Renders the entry non-interactive. */
|
|
1372
|
+
disabled?: boolean;
|
|
1373
|
+
/** Turns the entry into a submenu of selectable choices. */
|
|
1374
|
+
options?: AppSidebarMenuOption[];
|
|
1375
|
+
/** Initially selected option id. Selection is tracked internally afterwards. */
|
|
1376
|
+
selectedOptionId?: string;
|
|
1377
|
+
/**
|
|
1378
|
+
* Mirrors this submenu's selected option as the account block's subtitle —
|
|
1379
|
+
* the "Member / Partner / Trainer" line under the user's name. Set it on the
|
|
1380
|
+
* role switcher so picking a role updates the profile block immediately,
|
|
1381
|
+
* with no round-trip through the host application.
|
|
1382
|
+
*/
|
|
1383
|
+
reflectsRole?: boolean;
|
|
1384
|
+
}
|
|
1385
|
+
/** Payload emitted when a submenu choice is picked. */
|
|
1386
|
+
interface AppSidebarMenuOptionChange {
|
|
1387
|
+
/** The menu entry that owns the submenu. */
|
|
1388
|
+
item: AppSidebarMenuItem;
|
|
1389
|
+
/** The chosen option. */
|
|
1390
|
+
option: AppSidebarMenuOption;
|
|
1391
|
+
}
|
|
1392
|
+
/**
|
|
1393
|
+
* Every user-visible string that is not supplied through data.
|
|
1394
|
+
* Override any subset via the `labels` input to translate the component.
|
|
1395
|
+
*/
|
|
1396
|
+
interface AppSidebarLabels {
|
|
1397
|
+
/** Aria-label of the rail toggle while the sidebar is expanded. */
|
|
1398
|
+
collapse: string;
|
|
1399
|
+
/** Aria-label of the rail toggle while the sidebar is collapsed. */
|
|
1400
|
+
expand: string;
|
|
1401
|
+
/** Aria-label of the drawer close button on small screens. */
|
|
1402
|
+
closeNavigation: string;
|
|
1403
|
+
/** Aria-label of the `<nav>` landmark. */
|
|
1404
|
+
navigation: string;
|
|
1405
|
+
/** Aria-label of the product switcher trigger. */
|
|
1406
|
+
switchProduct: string;
|
|
1407
|
+
/** Aria-label of the profile trigger. */
|
|
1408
|
+
accountMenu: string;
|
|
1409
|
+
/** Alt text for the logo image. */
|
|
1410
|
+
logo: string;
|
|
1411
|
+
}
|
|
1412
|
+
/** Default English strings used when `labels` is not overridden. */
|
|
1413
|
+
declare const DEFAULT_APP_SIDEBAR_LABELS: AppSidebarLabels;
|
|
1414
|
+
|
|
1415
|
+
/**
|
|
1416
|
+
* Locale identifiers shared by the application-shell components.
|
|
1417
|
+
*
|
|
1418
|
+
* The keys are deliberately the same ids the shell's own language picker uses
|
|
1419
|
+
* (`DEFAULT_APP_SIDEBAR_LANGUAGES`), so switching language is a direct lookup:
|
|
1420
|
+
*
|
|
1421
|
+
* ```ts
|
|
1422
|
+
* onLanguage(change: AppSidebarMenuOptionChange) {
|
|
1423
|
+
* this.locale.set(change.option.id as AppShellLocale);
|
|
1424
|
+
* }
|
|
1425
|
+
* ```
|
|
1426
|
+
*
|
|
1427
|
+
* @module types
|
|
1428
|
+
*/
|
|
1429
|
+
/** A locale the shell ships translations for. */
|
|
1430
|
+
type AppShellLocale = 'en' | 'fr' | 'es' | 'de' | 'ja' | 'ko';
|
|
1431
|
+
/** Every shipped locale, in the order the language picker lists them. */
|
|
1432
|
+
declare const APP_SHELL_LOCALES: readonly AppShellLocale[];
|
|
1433
|
+
/**
|
|
1434
|
+
* A complete set of translations for one label bundle — every locale present,
|
|
1435
|
+
* every key filled. Anything narrower would let a locale fall back to English
|
|
1436
|
+
* silently, which is the failure mode translations exist to prevent.
|
|
1437
|
+
*/
|
|
1438
|
+
type AppShellTranslations<T> = Record<AppShellLocale, T>;
|
|
1439
|
+
/**
|
|
1440
|
+
* Resolve a bundle for a locale, tolerating region tags and unknown input.
|
|
1441
|
+
*
|
|
1442
|
+
* `'fr-CA'` resolves to `fr`; anything unrecognised falls back to `'en'` rather
|
|
1443
|
+
* than rendering blank labels.
|
|
1444
|
+
*/
|
|
1445
|
+
declare function resolveAppShellLocale(locale: string | null | undefined): AppShellLocale;
|
|
1446
|
+
|
|
1447
|
+
/**
|
|
1448
|
+
* Shipped translations for {@link AppSidebarComponent}.
|
|
1449
|
+
*
|
|
1450
|
+
* Nothing the rail renders is hard-coded English: the chrome strings come from
|
|
1451
|
+
* the `labels` input, and the ready-made account menu is built per locale.
|
|
1452
|
+
* These bundles cover the six languages the shell's own picker offers, so
|
|
1453
|
+
* switching language is a lookup rather than a translation project:
|
|
1454
|
+
*
|
|
1455
|
+
* ```ts
|
|
1456
|
+
* labels = computed(() => APP_SIDEBAR_TRANSLATIONS[this.locale()]);
|
|
1457
|
+
* menu = computed(() => appSidebarMenu(this.locale()));
|
|
1458
|
+
* ```
|
|
1459
|
+
*
|
|
1460
|
+
* Supplying your own strings stays supported — `labels` takes any partial
|
|
1461
|
+
* bundle and merges it over the defaults, so you can override a single word
|
|
1462
|
+
* without restating the rest.
|
|
1463
|
+
*
|
|
1464
|
+
* @module components/app-sidebar
|
|
1465
|
+
*/
|
|
1466
|
+
|
|
1467
|
+
/** Chrome strings — the labels the rail renders itself, per locale. */
|
|
1468
|
+
declare const APP_SIDEBAR_TRANSLATIONS: AppShellTranslations<AppSidebarLabels>;
|
|
1469
|
+
/** The label of each entry in the ready-made account menu, per locale. */
|
|
1470
|
+
interface AppSidebarMenuStrings {
|
|
1471
|
+
profile: string;
|
|
1472
|
+
role: string;
|
|
1473
|
+
language: string;
|
|
1474
|
+
billing: string;
|
|
1475
|
+
support: string;
|
|
1476
|
+
logout: string;
|
|
1477
|
+
member: string;
|
|
1478
|
+
partner: string;
|
|
1479
|
+
trainer: string;
|
|
1480
|
+
}
|
|
1481
|
+
/** Account-menu strings per locale. */
|
|
1482
|
+
declare const APP_SIDEBAR_MENU_TRANSLATIONS: AppShellTranslations<AppSidebarMenuStrings>;
|
|
1483
|
+
/**
|
|
1484
|
+
* The rail's chrome strings for a locale. Accepts region tags (`'fr-CA'`) and
|
|
1485
|
+
* falls back to English for anything unrecognised.
|
|
1486
|
+
*/
|
|
1487
|
+
declare function appSidebarLabels(locale: string | AppShellLocale): AppSidebarLabels;
|
|
1488
|
+
|
|
1489
|
+
/**
|
|
1490
|
+
* Ready-made data for {@link AppSidebarComponent}.
|
|
1491
|
+
*
|
|
1492
|
+
* The account dropdown is the same everywhere in the PECB estate, so it ships
|
|
1493
|
+
* ready to use rather than being retyped per application — and it is built per
|
|
1494
|
+
* locale, so none of its labels are hard-coded English:
|
|
1495
|
+
*
|
|
1496
|
+
* ```ts
|
|
1497
|
+
* menu = computed(() => appSidebarMenu(this.locale()));
|
|
1498
|
+
* ```
|
|
1499
|
+
*
|
|
1500
|
+
* `DEFAULT_APP_SIDEBAR_MENU` is simply the English build. Spread any entry to
|
|
1501
|
+
* adjust it:
|
|
1502
|
+
*
|
|
1503
|
+
* ```ts
|
|
1504
|
+
* menu = appSidebarMenu('fr').map(item =>
|
|
1505
|
+
* item.id === 'profile' ? { ...item, routerLink: '/me' } : item,
|
|
1506
|
+
* );
|
|
1507
|
+
* ```
|
|
1508
|
+
*
|
|
1509
|
+
* @module components/app-sidebar
|
|
1510
|
+
*/
|
|
1511
|
+
|
|
1512
|
+
/**
|
|
1513
|
+
* The line icons used by {@link DEFAULT_APP_SIDEBAR_MENU}. Exported so the same
|
|
1514
|
+
* set can be reused for navigation items without redrawing them.
|
|
1515
|
+
*/
|
|
1516
|
+
declare const APP_SIDEBAR_MENU_ICONS: {
|
|
1517
|
+
profile: string;
|
|
1518
|
+
billing: string;
|
|
1519
|
+
language: string;
|
|
1520
|
+
roles: string;
|
|
1521
|
+
support: string;
|
|
1522
|
+
logout: string;
|
|
1523
|
+
partner: string;
|
|
1524
|
+
trainer: string;
|
|
1525
|
+
};
|
|
1526
|
+
/**
|
|
1527
|
+
* The languages the account menu offers.
|
|
1528
|
+
*
|
|
1529
|
+
* Endonyms on purpose: a language picker names each language in that language,
|
|
1530
|
+
* so "Deutsch" reads the same whatever the current locale is. These ids are the
|
|
1531
|
+
* {@link AppShellLocale} keys, so a selection maps straight to a translation.
|
|
1532
|
+
*/
|
|
1533
|
+
declare const DEFAULT_APP_SIDEBAR_LANGUAGES: AppSidebarMenuOption[];
|
|
1534
|
+
/** The roles the account menu offers, translated for `locale`. */
|
|
1535
|
+
declare function appSidebarRoles(locale?: string | AppShellLocale): AppSidebarMenuOption[];
|
|
1536
|
+
/**
|
|
1537
|
+
* The account dropdown, translated for `locale`, in the order the Central Hub
|
|
1538
|
+
* renders it: Profile, Switch Roles, Language, Billing & Payments, Customer
|
|
1539
|
+
* Service, and Log Out below a separator.
|
|
1540
|
+
*
|
|
1541
|
+
* Switch Roles is marked `reflectsRole`, so picking a role updates the line
|
|
1542
|
+
* under the user's name straight away — the profile block doubles as the role
|
|
1543
|
+
* select.
|
|
1544
|
+
*
|
|
1545
|
+
* Pass it straight to the `menu` input, or spread an entry to adjust it.
|
|
1546
|
+
*/
|
|
1547
|
+
declare function appSidebarMenu(locale?: string | AppShellLocale): AppSidebarMenuItem[];
|
|
1548
|
+
/**
|
|
1549
|
+
* The English build of {@link appSidebarMenu}. Kept as a constant for the
|
|
1550
|
+
* common case; call the factory when the shell is localised.
|
|
1551
|
+
*/
|
|
1552
|
+
declare const DEFAULT_APP_SIDEBAR_MENU: AppSidebarMenuItem[];
|
|
1553
|
+
/** The English build of {@link appSidebarRoles}. */
|
|
1554
|
+
declare const DEFAULT_APP_SIDEBAR_ROLES: AppSidebarMenuOption[];
|
|
1555
|
+
|
|
1556
|
+
/** Which floating layer is currently open. Only one may be open at a time. */
|
|
1557
|
+
type AppSidebarLayer = 'product' | 'account' | null;
|
|
1558
|
+
/**
|
|
1559
|
+
* Application shell sidebar — the collapsible navigation rail used by the
|
|
1560
|
+
* PECB Central Hub.
|
|
1561
|
+
*
|
|
1562
|
+
* It bundles the four pieces that always ship together: the product switcher,
|
|
1563
|
+
* the navigation tree, the collapse/expand rail, and the account dropdown with
|
|
1564
|
+
* its language / role submenus. Everything is driven by plain data, so a host
|
|
1565
|
+
* application only has to describe its navigation and listen for events.
|
|
1566
|
+
*
|
|
1567
|
+
* **Navigation belongs to the product.** Give each {@link AppSidebarProduct}
|
|
1568
|
+
* its own `items` (or `groups`) and switching product swaps the entire tab set:
|
|
1569
|
+
* a hub product declaring a single Dashboard shows nothing else, and the real
|
|
1570
|
+
* tabs appear only once the user switches into a product. A single-product
|
|
1571
|
+
* shell uses the component-level `items` / `groups` instead.
|
|
1572
|
+
*
|
|
1573
|
+
* **The account block is the role select.** Mark the role submenu
|
|
1574
|
+
* `reflectsRole` and the line under the user's name follows the selection with
|
|
1575
|
+
* no round-trip through the host — see `DEFAULT_APP_SIDEBAR_MENU`.
|
|
1576
|
+
*
|
|
1577
|
+
* **Layout.** The host is a plain flex child that owns its own width, so the
|
|
1578
|
+
* app shell is just a flex row — no magic margins to keep in sync:
|
|
1579
|
+
*
|
|
1580
|
+
* ```html
|
|
1581
|
+
* <div style="display:flex; min-height:100vh">
|
|
1582
|
+
* <pecb-app-sidebar [items]="nav" [(collapsed)]="collapsed" />
|
|
1583
|
+
* <main style="flex:1; min-width:0"><!-- page --></main>
|
|
1584
|
+
* </div>
|
|
1585
|
+
* ```
|
|
1586
|
+
*
|
|
1587
|
+
* **Responsive.** Below `mobileBreakpoint` the rail turns into an off-canvas
|
|
1588
|
+
* drawer with a scrim, a focus trap and body scroll-lock. Bind `mobileOpen`
|
|
1589
|
+
* to a hamburger button in the header — `collapsed` is ignored while the
|
|
1590
|
+
* drawer is in play, and navigating closes it automatically.
|
|
1591
|
+
*
|
|
1592
|
+
* **Floating layers** (product menu, account menu, collapsed flyouts and
|
|
1593
|
+
* tooltips) all render through the CDK overlay, so they are never clipped by
|
|
1594
|
+
* the scroll container and reposition themselves inside the viewport.
|
|
1595
|
+
*
|
|
1596
|
+
* @example
|
|
1597
|
+
* ```html
|
|
1598
|
+
* <pecb-app-sidebar
|
|
1599
|
+
* [logoSrc]="'assets/my-pecb.svg'"
|
|
1600
|
+
* [collapsedLogoSrc]="'assets/pecb-mark.svg'"
|
|
1601
|
+
* [products]="products"
|
|
1602
|
+
* [(activeProductId)]="productId"
|
|
1603
|
+
* [items]="navItems"
|
|
1604
|
+
* [(activeItemId)]="activeId"
|
|
1605
|
+
* [user]="user"
|
|
1606
|
+
* [menu]="accountMenu"
|
|
1607
|
+
* [(collapsed)]="collapsed"
|
|
1608
|
+
* [(mobileOpen)]="drawerOpen"
|
|
1609
|
+
* (navigate)="go($event)"
|
|
1610
|
+
* (menuItemClick)="onAccountAction($event)"
|
|
1611
|
+
* (menuOptionChange)="onLanguageOrRole($event)"
|
|
1612
|
+
* />
|
|
1613
|
+
* ```
|
|
1614
|
+
*/
|
|
1615
|
+
declare class AppSidebarComponent {
|
|
1616
|
+
private readonly sanitizer;
|
|
1617
|
+
private readonly overlay;
|
|
1618
|
+
private readonly platformId;
|
|
1619
|
+
private readonly destroyRef;
|
|
1620
|
+
private readonly host;
|
|
1621
|
+
/** Logo image URL shown while the sidebar is expanded. */
|
|
1622
|
+
readonly logoSrc: _angular_core.InputSignal<string | undefined>;
|
|
1623
|
+
/** Compact logo/mark image URL shown while the sidebar is collapsed. */
|
|
1624
|
+
readonly collapsedLogoSrc: _angular_core.InputSignal<string | undefined>;
|
|
1625
|
+
/**
|
|
1626
|
+
* Inline SVG markup for the expanded logo. Preferred over `logoSrc` when both
|
|
1627
|
+
* are given — vector markup stays crisp at any density and inherits colour.
|
|
1628
|
+
*/
|
|
1629
|
+
readonly logo: _angular_core.InputSignal<string | undefined>;
|
|
1630
|
+
/** Inline SVG markup for the collapsed mark. Preferred over `collapsedLogoSrc`. */
|
|
1631
|
+
readonly collapsedLogo: _angular_core.InputSignal<string | undefined>;
|
|
1632
|
+
/** Link the logo navigates to. Renders a plain image when omitted. */
|
|
1633
|
+
readonly logoHref: _angular_core.InputSignal<string | undefined>;
|
|
1634
|
+
/** Whether anything was supplied to render in the logo slot. */
|
|
1635
|
+
readonly hasLogo: _angular_core.Signal<boolean>;
|
|
1636
|
+
/** Product switcher entries. The switcher is hidden when empty. */
|
|
1637
|
+
readonly products: _angular_core.InputSignal<AppSidebarProduct[]>;
|
|
1638
|
+
/** Id of the product shown in the switcher trigger. Two-way bindable. */
|
|
1639
|
+
readonly activeProductId: _angular_core.ModelSignal<string | null>;
|
|
1640
|
+
/** Flat navigation list — the common case. Merged after `groups`. */
|
|
1641
|
+
readonly items: _angular_core.InputSignal<AppSidebarNavItem[]>;
|
|
1642
|
+
/** Grouped navigation, for sidebars with titled sections. */
|
|
1643
|
+
readonly groups: _angular_core.InputSignal<AppSidebarNavGroup[]>;
|
|
1644
|
+
/** Id of the highlighted item. Updated on click, so it works uncontrolled. */
|
|
1645
|
+
readonly activeItemId: _angular_core.ModelSignal<string | null>;
|
|
1646
|
+
/** Signed-in user. The account block is hidden when `null`. */
|
|
1647
|
+
readonly user: _angular_core.InputSignal<AppSidebarUser | null>;
|
|
1648
|
+
/** Entries of the account dropdown. The dropdown is skipped when empty. */
|
|
1649
|
+
readonly menu: _angular_core.InputSignal<AppSidebarMenuItem[]>;
|
|
1650
|
+
/** Whether the rail can be collapsed. Hides the toggle when `false`. */
|
|
1651
|
+
readonly collapsible: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1652
|
+
/** Collapsed state. Two-way bindable; ignored while the drawer is active. */
|
|
1653
|
+
readonly collapsed: _angular_core.ModelSignal<boolean>;
|
|
1654
|
+
/** Off-canvas drawer state on small screens. Two-way bindable. */
|
|
1655
|
+
readonly mobileOpen: _angular_core.ModelSignal<boolean>;
|
|
1656
|
+
/** Viewport width (px) at or below which the rail becomes a drawer. */
|
|
1657
|
+
readonly mobileBreakpoint: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
1658
|
+
/**
|
|
1659
|
+
* Expanded rail width in px. Leave unset to inherit
|
|
1660
|
+
* `--pecb-app-sidebar-width` from an ancestor (default 270).
|
|
1661
|
+
*/
|
|
1662
|
+
readonly width: _angular_core.InputSignal<number | undefined>;
|
|
1663
|
+
/**
|
|
1664
|
+
* Collapsed rail width in px. Leave unset to inherit
|
|
1665
|
+
* `--pecb-app-sidebar-collapsed-width` from an ancestor (default 84).
|
|
1666
|
+
*/
|
|
1667
|
+
readonly collapsedWidth: _angular_core.InputSignal<number | undefined>;
|
|
1668
|
+
/** Keep at most one navigation branch expanded at a time. */
|
|
1669
|
+
readonly autoCollapseSiblings: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1670
|
+
/**
|
|
1671
|
+
* After switching to a product that owns its navigation, land on that
|
|
1672
|
+
* product's first selectable tab and emit `navigate` for it. Turn it off to
|
|
1673
|
+
* leave the rail unselected until the user picks a tab themselves.
|
|
1674
|
+
*/
|
|
1675
|
+
readonly autoSelectFirstItem: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1676
|
+
/** Show tooltips beside icons while collapsed. */
|
|
1677
|
+
readonly showTooltips: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1678
|
+
/**
|
|
1679
|
+
* `localStorage` key for persisting the collapsed state. Persistence is off
|
|
1680
|
+
* when omitted; state then lives entirely in the `collapsed` binding.
|
|
1681
|
+
*/
|
|
1682
|
+
readonly storageKey: _angular_core.InputSignal<string | undefined>;
|
|
1683
|
+
/** Overrides for user-visible strings. Merged over the English defaults. */
|
|
1684
|
+
readonly labels: _angular_core.InputSignal<Partial<AppSidebarLabels>>;
|
|
1685
|
+
/** A leaf navigation item was activated. */
|
|
1686
|
+
readonly navigate: _angular_core.OutputEmitterRef<AppSidebarNavItem>;
|
|
1687
|
+
/** A product was picked in the switcher. */
|
|
1688
|
+
readonly productChange: _angular_core.OutputEmitterRef<AppSidebarProduct>;
|
|
1689
|
+
/** An account-menu entry without submenu was activated. */
|
|
1690
|
+
readonly menuItemClick: _angular_core.OutputEmitterRef<AppSidebarMenuItem>;
|
|
1691
|
+
/** A submenu choice (language, role, …) was picked. */
|
|
1692
|
+
readonly menuOptionChange: _angular_core.OutputEmitterRef<AppSidebarMenuOptionChange>;
|
|
1693
|
+
/** The account block was clicked while no `menu` is configured. */
|
|
1694
|
+
readonly userClick: _angular_core.OutputEmitterRef<AppSidebarUser>;
|
|
1695
|
+
private readonly mobile;
|
|
1696
|
+
/** `true` while the viewport is at or below `mobileBreakpoint` — i.e. while
|
|
1697
|
+
* the rail is rendered as an off-canvas drawer. Read it from a template
|
|
1698
|
+
* reference to show a hamburger only when it is needed. */
|
|
1699
|
+
readonly isMobile: _angular_core.Signal<boolean>;
|
|
1700
|
+
/** Which of the two anchored menus is open. */
|
|
1701
|
+
readonly openLayer: _angular_core.WritableSignal<AppSidebarLayer>;
|
|
1702
|
+
/** Navigation branch shown as a flyout while collapsed. */
|
|
1703
|
+
readonly flyoutItem: _angular_core.WritableSignal<AppSidebarNavItem | null>;
|
|
1704
|
+
/** Account-menu entry whose submenu is open. */
|
|
1705
|
+
readonly submenuItem: _angular_core.WritableSignal<AppSidebarMenuItem | null>;
|
|
1706
|
+
/** Navigation item currently hovered while collapsed. */
|
|
1707
|
+
readonly tooltipItem: _angular_core.WritableSignal<AppSidebarNavItem | null>;
|
|
1708
|
+
/** Anchors for the overlays. Captured on interaction, so the origins stay
|
|
1709
|
+
* valid across the collapsed / drawer re-layouts. */
|
|
1710
|
+
readonly productOrigin: _angular_core.WritableSignal<HTMLElement | null>;
|
|
1711
|
+
readonly accountOrigin: _angular_core.WritableSignal<HTMLElement | null>;
|
|
1712
|
+
readonly flyoutOrigin: _angular_core.WritableSignal<HTMLElement | null>;
|
|
1713
|
+
readonly submenuOrigin: _angular_core.WritableSignal<HTMLElement | null>;
|
|
1714
|
+
readonly tooltipOrigin: _angular_core.WritableSignal<HTMLElement | null>;
|
|
1715
|
+
/** Ids of expanded navigation branches. */
|
|
1716
|
+
private readonly expandedIds;
|
|
1717
|
+
/** Measured trigger width, so anchored menus line up with their trigger. */
|
|
1718
|
+
private readonly triggerWidth;
|
|
1719
|
+
/**
|
|
1720
|
+
* Selected option per submenu entry. Seeded from the data and updated on
|
|
1721
|
+
* click, so selection is correct even when the host does not feed it back.
|
|
1722
|
+
*/
|
|
1723
|
+
private readonly selectedOptionIds;
|
|
1724
|
+
/** Sanitised icon markup, cached so change detection does not re-sanitise. */
|
|
1725
|
+
private readonly iconCache;
|
|
1726
|
+
/**
|
|
1727
|
+
* Overlays follow their anchor while the sidebar scrolls.
|
|
1728
|
+
*
|
|
1729
|
+
* A `ScrollStrategy` instance belongs to exactly one overlay, and the account
|
|
1730
|
+
* menu and its submenu are open at the same time — so each layer gets its own.
|
|
1731
|
+
*/
|
|
1732
|
+
readonly productScroll: ScrollStrategy;
|
|
1733
|
+
readonly accountScroll: ScrollStrategy;
|
|
1734
|
+
readonly submenuScroll: ScrollStrategy;
|
|
1735
|
+
readonly flyoutScroll: ScrollStrategy;
|
|
1736
|
+
readonly tooltipScroll: ScrollStrategy;
|
|
1737
|
+
private repositionScroll;
|
|
1738
|
+
/** Resolved strings, defaults merged with the `labels` overrides. */
|
|
1739
|
+
readonly text: _angular_core.Signal<AppSidebarLabels>;
|
|
1740
|
+
/** `true` only when the rail is genuinely rendered narrow (never on mobile). */
|
|
1741
|
+
readonly isCollapsed: _angular_core.Signal<boolean>;
|
|
1742
|
+
/**
|
|
1743
|
+
* The navigation the rail is currently showing.
|
|
1744
|
+
*
|
|
1745
|
+
* A product that declares its own `items` / `groups` owns the rail outright,
|
|
1746
|
+
* so switching product swaps the whole tab set. Otherwise the component-level
|
|
1747
|
+
* navigation is used: `groups` first, then a trailing untitled group for the
|
|
1748
|
+
* flat `items` list.
|
|
1749
|
+
*/
|
|
1750
|
+
readonly navGroups: _angular_core.Signal<AppSidebarNavGroup[]>;
|
|
1751
|
+
/** Flattened lookup used for active-branch resolution. */
|
|
1752
|
+
private readonly allItems;
|
|
1753
|
+
/** The product rendered in the switcher trigger. */
|
|
1754
|
+
readonly activeProduct: _angular_core.Signal<AppSidebarProduct | null>;
|
|
1755
|
+
/** Product entries grouped by their `section`, preserving declaration order. */
|
|
1756
|
+
readonly productSections: _angular_core.Signal<{
|
|
1757
|
+
key: string;
|
|
1758
|
+
label?: string;
|
|
1759
|
+
products: AppSidebarProduct[];
|
|
1760
|
+
}[]>;
|
|
1761
|
+
/**
|
|
1762
|
+
* The subtitle under the user's name.
|
|
1763
|
+
*
|
|
1764
|
+
* A submenu marked `reflectsRole` (the role switcher) wins over the static
|
|
1765
|
+
* `user.role`, so the profile block always shows the role that is selected —
|
|
1766
|
+
* the host does not have to feed the choice back in.
|
|
1767
|
+
*/
|
|
1768
|
+
readonly accountRole: _angular_core.Signal<string | null>;
|
|
1769
|
+
/** Width applied to the anchored menus — matched to the trigger they open from. */
|
|
1770
|
+
readonly menuWidth: _angular_core.Signal<number>;
|
|
1771
|
+
/** Product menu: under the trigger when expanded, beside it when collapsed. */
|
|
1772
|
+
readonly productPositions: _angular_core.Signal<ConnectedPosition[]>;
|
|
1773
|
+
/** Account menu: above the trigger when expanded, beside it when collapsed. */
|
|
1774
|
+
readonly accountPositions: _angular_core.Signal<ConnectedPosition[]>;
|
|
1775
|
+
/** Flyouts and submenus sit beside their anchor and flip when short on room. */
|
|
1776
|
+
readonly flyoutPositions: ConnectedPosition[];
|
|
1777
|
+
/** Tooltips sit to the right of the icon, vertically centred. */
|
|
1778
|
+
readonly tooltipPositions: ConnectedPosition[];
|
|
1779
|
+
private sidePositions;
|
|
1780
|
+
constructor();
|
|
1781
|
+
/** Collapse or expand the rail. No-op when `collapsible` is `false`. */
|
|
1782
|
+
toggleCollapsed(): void;
|
|
1783
|
+
/** Open the off-canvas drawer. */
|
|
1784
|
+
openMobile(): void;
|
|
1785
|
+
/** Close the off-canvas drawer. */
|
|
1786
|
+
closeMobile(): void;
|
|
1787
|
+
/** Toggle the off-canvas drawer — wire this to a header hamburger. */
|
|
1788
|
+
toggleMobile(): void;
|
|
1789
|
+
/** Close the product menu, the account menu and every flyout. */
|
|
1790
|
+
closeAllLayers(): void;
|
|
1791
|
+
/** `true` when the item itself is the active one. */
|
|
1792
|
+
isActive(item: AppSidebarNavItem): boolean;
|
|
1793
|
+
/** `true` when the item or any descendant is active. */
|
|
1794
|
+
isActiveBranch(item: AppSidebarNavItem): boolean;
|
|
1795
|
+
/** `true` when the item's inline branch is open. */
|
|
1796
|
+
isExpanded(item: AppSidebarNavItem): boolean;
|
|
1797
|
+
/**
|
|
1798
|
+
* Class list for one navigation entry.
|
|
1799
|
+
*
|
|
1800
|
+
* Built here rather than as a stack of `[class.…]` bindings because the same
|
|
1801
|
+
* markup is emitted from three branches (routerLink / href / button) at three
|
|
1802
|
+
* depths — one source of truth keeps them from drifting apart.
|
|
1803
|
+
*/
|
|
1804
|
+
navItemClass(item: AppSidebarNavItem, depth: number): string;
|
|
1805
|
+
/**
|
|
1806
|
+
* Handle a click on a navigation item, in the rail or inside a flyout.
|
|
1807
|
+
*
|
|
1808
|
+
* Branches toggle — inline while expanded, as a flyout while collapsed —
|
|
1809
|
+
* and leaves become the active item, emit `navigate` and close the drawer.
|
|
1810
|
+
*/
|
|
1811
|
+
onNavClick(item: AppSidebarNavItem, event: MouseEvent, source?: 'rail' | 'flyout'): void;
|
|
1812
|
+
private toggleExpanded;
|
|
1813
|
+
private siblingsOf;
|
|
1814
|
+
/** Open or close the product menu, anchoring it to the trigger. */
|
|
1815
|
+
toggleProductMenu(event: MouseEvent): void;
|
|
1816
|
+
/** Class list for one product-menu entry. */
|
|
1817
|
+
productItemClass(product: AppSidebarProduct): string;
|
|
1818
|
+
/**
|
|
1819
|
+
* Pick a product.
|
|
1820
|
+
*
|
|
1821
|
+
* When the product owns its navigation the rail swaps tab sets, so the stale
|
|
1822
|
+
* expansion state is dropped and — unless `autoSelectFirstItem` is off — the
|
|
1823
|
+
* rail lands on the new product's first selectable tab, emitting `navigate`
|
|
1824
|
+
* for it so the host can route in the one place it already listens.
|
|
1825
|
+
*/
|
|
1826
|
+
selectProduct(product: AppSidebarProduct, event: MouseEvent): void;
|
|
1827
|
+
/** The first enabled leaf of the current navigation, depth-first. */
|
|
1828
|
+
private firstSelectableItem;
|
|
1829
|
+
/** Open or close the account dropdown. */
|
|
1830
|
+
toggleAccountMenu(event: MouseEvent): void;
|
|
1831
|
+
/** Class list for one account-menu entry. */
|
|
1832
|
+
menuRowClass(item: AppSidebarMenuItem): string;
|
|
1833
|
+
/** Handle a click on an account-menu entry. */
|
|
1834
|
+
onMenuItemClick(item: AppSidebarMenuItem, event: MouseEvent): void;
|
|
1835
|
+
/** Pick a submenu choice; emits `menuOptionChange`. */
|
|
1836
|
+
selectMenuOption(item: AppSidebarMenuItem, option: AppSidebarMenuOption): void;
|
|
1837
|
+
/** `true` when `option` is the current choice of `item`. */
|
|
1838
|
+
isOptionSelected(item: AppSidebarMenuItem, option: AppSidebarMenuOption): boolean;
|
|
1839
|
+
/** Show the collapsed-mode tooltip for a navigation item. */
|
|
1840
|
+
onItemEnter(item: AppSidebarNavItem, event: Event): void;
|
|
1841
|
+
/** Hide the collapsed-mode tooltip. */
|
|
1842
|
+
onItemLeave(): void;
|
|
1843
|
+
/**
|
|
1844
|
+
* Trust inline SVG markup supplied through the data inputs.
|
|
1845
|
+
*
|
|
1846
|
+
* Icons come from the host application's own code, never from user input —
|
|
1847
|
+
* the same contract as the rest of the library's icon inputs. Results are
|
|
1848
|
+
* cached so repeated change detection does not re-run the sanitizer.
|
|
1849
|
+
*/
|
|
1850
|
+
safeIcon(markup: string): SafeHtml;
|
|
1851
|
+
/** Initials fallback for the avatar, derived from the name when not given. */
|
|
1852
|
+
userInitials(user: AppSidebarUser): string;
|
|
1853
|
+
/** Close everything on Escape; a second Escape closes the mobile drawer. */
|
|
1854
|
+
onEscape(): void;
|
|
1855
|
+
/** Close only the submenu layer — used when the parent menu is dismissed. */
|
|
1856
|
+
onMenuOutsideClick(): void;
|
|
1857
|
+
private measureTrigger;
|
|
1858
|
+
/**
|
|
1859
|
+
* Restore the collapsed state from `localStorage` once the key is known
|
|
1860
|
+
* (inputs are not available in the constructor), then keep writing it back.
|
|
1861
|
+
*
|
|
1862
|
+
* Split across two effects so the restoring write never re-triggers the
|
|
1863
|
+
* effect that performed it.
|
|
1864
|
+
*/
|
|
1865
|
+
private syncCollapsedWithStorage;
|
|
1866
|
+
private readStoredCollapsed;
|
|
1867
|
+
private trackViewport;
|
|
1868
|
+
private lockBodyScroll;
|
|
1869
|
+
/** The host element — handy for hosts that need to measure the rail. */
|
|
1870
|
+
get element(): HTMLElement;
|
|
1871
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppSidebarComponent, never>;
|
|
1872
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppSidebarComponent, "pecb-app-sidebar", never, { "logoSrc": { "alias": "logoSrc"; "required": false; "isSignal": true; }; "collapsedLogoSrc": { "alias": "collapsedLogoSrc"; "required": false; "isSignal": true; }; "logo": { "alias": "logo"; "required": false; "isSignal": true; }; "collapsedLogo": { "alias": "collapsedLogo"; "required": false; "isSignal": true; }; "logoHref": { "alias": "logoHref"; "required": false; "isSignal": true; }; "products": { "alias": "products"; "required": false; "isSignal": true; }; "activeProductId": { "alias": "activeProductId"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "groups": { "alias": "groups"; "required": false; "isSignal": true; }; "activeItemId": { "alias": "activeItemId"; "required": false; "isSignal": true; }; "user": { "alias": "user"; "required": false; "isSignal": true; }; "menu": { "alias": "menu"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "mobileOpen": { "alias": "mobileOpen"; "required": false; "isSignal": true; }; "mobileBreakpoint": { "alias": "mobileBreakpoint"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "collapsedWidth": { "alias": "collapsedWidth"; "required": false; "isSignal": true; }; "autoCollapseSiblings": { "alias": "autoCollapseSiblings"; "required": false; "isSignal": true; }; "autoSelectFirstItem": { "alias": "autoSelectFirstItem"; "required": false; "isSignal": true; }; "showTooltips": { "alias": "showTooltips"; "required": false; "isSignal": true; }; "storageKey": { "alias": "storageKey"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; }, { "activeProductId": "activeProductIdChange"; "activeItemId": "activeItemIdChange"; "collapsed": "collapsedChange"; "mobileOpen": "mobileOpenChange"; "navigate": "navigate"; "productChange": "productChange"; "menuItemClick": "menuItemClick"; "menuOptionChange": "menuOptionChange"; "userClick": "userClick"; }, never, ["[appSidebarHeader]", "[appSidebarPromo]", "[appSidebarFooter]"], true, never>;
|
|
1873
|
+
}
|
|
1874
|
+
|
|
1875
|
+
/**
|
|
1876
|
+
* Public data contracts for {@link AppHeaderComponent}.
|
|
1877
|
+
*
|
|
1878
|
+
* @module components/app-header
|
|
1879
|
+
*/
|
|
1880
|
+
/** Colour treatment of the status chip beside the page title. */
|
|
1881
|
+
type AppHeaderChipTone = 'neutral' | 'success' | 'warning' | 'danger' | 'info';
|
|
1882
|
+
/** The small pill beside the page title — a role, a state, a plan. */
|
|
1883
|
+
interface AppHeaderChip {
|
|
1884
|
+
/** Visible text. */
|
|
1885
|
+
label: string;
|
|
1886
|
+
/** Colour treatment. Defaults to `success`, matching the Central Hub role chip. */
|
|
1887
|
+
tone?: AppHeaderChipTone;
|
|
1888
|
+
}
|
|
1889
|
+
/** An icon button in the header's action cluster (cart, help, …). */
|
|
1890
|
+
interface AppHeaderAction {
|
|
1891
|
+
/** Stable identity, echoed back on `actionClick`. */
|
|
1892
|
+
id: string;
|
|
1893
|
+
/** Inline SVG markup for the glyph. */
|
|
1894
|
+
icon: string;
|
|
1895
|
+
/** Accessible name. Also used as the native tooltip. */
|
|
1896
|
+
label: string;
|
|
1897
|
+
/**
|
|
1898
|
+
* Corner badge. A `0` renders nothing, so a cart count can be bound
|
|
1899
|
+
* unconditionally.
|
|
1900
|
+
*/
|
|
1901
|
+
badge?: number | string;
|
|
1902
|
+
/** Renders the button as a link. */
|
|
1903
|
+
href?: string;
|
|
1904
|
+
/** Anchor target, e.g. `_blank`. Only applies when `href` is set. */
|
|
1905
|
+
target?: '_blank' | '_self' | '_parent' | '_top';
|
|
1906
|
+
/** Renders the action non-interactive. */
|
|
1907
|
+
disabled?: boolean;
|
|
1908
|
+
}
|
|
1909
|
+
/** One entry in the notification dropdown. */
|
|
1910
|
+
interface AppHeaderNotification {
|
|
1911
|
+
/** Stable identity, echoed back on `notificationClick`. */
|
|
1912
|
+
id: string;
|
|
1913
|
+
/** Headline text. */
|
|
1914
|
+
title: string;
|
|
1915
|
+
/** Secondary line — timestamp, priority, … */
|
|
1916
|
+
meta?: string;
|
|
1917
|
+
/** Read entries lose the tint and the unread dot. */
|
|
1918
|
+
read?: boolean;
|
|
1919
|
+
/** Inline SVG markup for the leading tile. */
|
|
1920
|
+
icon?: string;
|
|
1921
|
+
/** Tile foreground colour, e.g. `#a11e29`. */
|
|
1922
|
+
iconColor?: string;
|
|
1923
|
+
/** Tile background colour, e.g. `#fbeaea`. */
|
|
1924
|
+
iconBackground?: string;
|
|
1925
|
+
}
|
|
1926
|
+
/**
|
|
1927
|
+
* Every user-visible string the header renders itself.
|
|
1928
|
+
* Override any subset via the `labels` input to translate the component.
|
|
1929
|
+
*/
|
|
1930
|
+
interface AppHeaderLabels {
|
|
1931
|
+
/** Aria-label of the hamburger. */
|
|
1932
|
+
openNavigation: string;
|
|
1933
|
+
/** Aria-label of the bell button. */
|
|
1934
|
+
notifications: string;
|
|
1935
|
+
/** Heading of the notification dropdown. */
|
|
1936
|
+
notificationsTitle: string;
|
|
1937
|
+
/** Footer link of the notification dropdown. */
|
|
1938
|
+
viewAll: string;
|
|
1939
|
+
/** Shown when there is nothing to report. */
|
|
1940
|
+
empty: string;
|
|
1941
|
+
/**
|
|
1942
|
+
* Screen-reader suffix for the unread count on the bell.
|
|
1943
|
+
* `{n}` is replaced with the number.
|
|
1944
|
+
*/
|
|
1945
|
+
unreadCount: string;
|
|
1946
|
+
}
|
|
1947
|
+
/** Default English strings used when `labels` is not overridden. */
|
|
1948
|
+
declare const DEFAULT_APP_HEADER_LABELS: AppHeaderLabels;
|
|
1949
|
+
|
|
1950
|
+
/**
|
|
1951
|
+
* Shipped translations for {@link AppHeaderComponent}.
|
|
1952
|
+
*
|
|
1953
|
+
* Every string the bar renders itself lives here; the title, chip, actions and
|
|
1954
|
+
* notifications are consumer data and are translated wherever that data comes
|
|
1955
|
+
* from.
|
|
1956
|
+
*
|
|
1957
|
+
* ```ts
|
|
1958
|
+
* labels = computed(() => APP_HEADER_TRANSLATIONS[this.locale()]);
|
|
1959
|
+
* ```
|
|
1960
|
+
*
|
|
1961
|
+
* @module components/app-header
|
|
1962
|
+
*/
|
|
1963
|
+
|
|
1964
|
+
/**
|
|
1965
|
+
* Chrome strings per locale.
|
|
1966
|
+
*
|
|
1967
|
+
* `unreadCount` carries a `{n}` placeholder that the component substitutes, so
|
|
1968
|
+
* each locale controls where the number sits — Japanese and Korean put it after
|
|
1969
|
+
* the word, unlike the European forms.
|
|
1970
|
+
*/
|
|
1971
|
+
declare const APP_HEADER_TRANSLATIONS: AppShellTranslations<AppHeaderLabels>;
|
|
1972
|
+
/**
|
|
1973
|
+
* The bar's chrome strings for a locale. Accepts region tags (`'fr-CA'`) and
|
|
1974
|
+
* falls back to English for anything unrecognised.
|
|
1975
|
+
*/
|
|
1976
|
+
declare function appHeaderLabels(locale: string | AppShellLocale): AppHeaderLabels;
|
|
1977
|
+
|
|
1978
|
+
/**
|
|
1979
|
+
* Application shell header — the bar that sits above the page beside
|
|
1980
|
+
* {@link AppSidebarComponent}.
|
|
1981
|
+
*
|
|
1982
|
+
* Page title, an optional status chip, a cluster of icon actions with corner
|
|
1983
|
+
* badges, and the notification bell with its dropdown (unread tint, coloured
|
|
1984
|
+
* icon tiles, "view all" footer and an empty state).
|
|
1985
|
+
*
|
|
1986
|
+
* It pairs with the sidebar without either knowing about the other — bind the
|
|
1987
|
+
* hamburger to the rail's own drawer state:
|
|
1988
|
+
*
|
|
1989
|
+
* ```html
|
|
1990
|
+
* <div style="display:flex; min-height:100vh">
|
|
1991
|
+
* <pecb-app-sidebar #rail [items]="nav" [(mobileOpen)]="drawerOpen" />
|
|
1992
|
+
* <div style="flex:1; min-width:0">
|
|
1993
|
+
* <pecb-app-header
|
|
1994
|
+
* heading="Central Hub"
|
|
1995
|
+
* [chip]="{ label: 'Member' }"
|
|
1996
|
+
* [actions]="[cart]"
|
|
1997
|
+
* [notifications]="notifications"
|
|
1998
|
+
* [showMenuButton]="rail.isMobile()"
|
|
1999
|
+
* (menuClick)="rail.toggleMobile()"
|
|
2000
|
+
* (actionClick)="onAction($event)"
|
|
2001
|
+
* (notificationClick)="open($event)"
|
|
2002
|
+
* (viewAllNotifications)="goToInbox()"
|
|
2003
|
+
* />
|
|
2004
|
+
* <main><!-- page --></main>
|
|
2005
|
+
* </div>
|
|
2006
|
+
* </div>
|
|
2007
|
+
* ```
|
|
2008
|
+
*
|
|
2009
|
+
* The dropdown renders through the CDK overlay, so it is never clipped by the
|
|
2010
|
+
* header's own stacking context and repositions itself inside the viewport.
|
|
2011
|
+
*/
|
|
2012
|
+
declare class AppHeaderComponent {
|
|
2013
|
+
private readonly sanitizer;
|
|
2014
|
+
private readonly overlay;
|
|
2015
|
+
/** Page title. Omit it and project `[appHeaderTitle]` for custom markup. */
|
|
2016
|
+
readonly heading: _angular_core.InputSignal<string | undefined>;
|
|
2017
|
+
/** Status pill shown beside the title. */
|
|
2018
|
+
readonly chip: _angular_core.InputSignal<AppHeaderChip | null>;
|
|
2019
|
+
/** Icon buttons in the action cluster, in render order. */
|
|
2020
|
+
readonly actions: _angular_core.InputSignal<AppHeaderAction[]>;
|
|
2021
|
+
/** Whether the notification bell is rendered. */
|
|
2022
|
+
readonly showNotifications: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2023
|
+
/** Notification entries. An empty list renders the dropdown's empty state. */
|
|
2024
|
+
readonly notifications: _angular_core.InputSignal<AppHeaderNotification[]>;
|
|
2025
|
+
/** How many entries the dropdown shows before the "view all" footer. */
|
|
2026
|
+
readonly notificationsLimit: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
2027
|
+
/** Whether the dropdown is open. Two-way bindable. */
|
|
2028
|
+
readonly notificationsOpen: _angular_core.ModelSignal<boolean>;
|
|
2029
|
+
/**
|
|
2030
|
+
* Whether the hamburger is rendered. Bind it to the sidebar's drawer state —
|
|
2031
|
+
* `[showMenuButton]="rail.isMobile()"` — so the two never disagree.
|
|
2032
|
+
*/
|
|
2033
|
+
readonly showMenuButton: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2034
|
+
/** Keeps the header pinned while the page scrolls. */
|
|
2035
|
+
readonly sticky: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2036
|
+
/** Overrides for user-visible strings. Merged over the English defaults. */
|
|
2037
|
+
readonly labels: _angular_core.InputSignal<Partial<AppHeaderLabels>>;
|
|
2038
|
+
/** The hamburger was pressed. */
|
|
2039
|
+
readonly menuClick: _angular_core.OutputEmitterRef<void>;
|
|
2040
|
+
/** An action button was pressed. */
|
|
2041
|
+
readonly actionClick: _angular_core.OutputEmitterRef<AppHeaderAction>;
|
|
2042
|
+
/** A notification entry was pressed. */
|
|
2043
|
+
readonly notificationClick: _angular_core.OutputEmitterRef<AppHeaderNotification>;
|
|
2044
|
+
/** The dropdown's footer link was pressed. */
|
|
2045
|
+
readonly viewAllNotifications: _angular_core.OutputEmitterRef<void>;
|
|
2046
|
+
/** Anchor for the notification overlay, captured when the bell is pressed. */
|
|
2047
|
+
readonly bellOrigin: _angular_core.WritableSignal<HTMLElement | null>;
|
|
2048
|
+
/** The dropdown follows the bell while the page scrolls. */
|
|
2049
|
+
readonly scrollStrategy: ScrollStrategy;
|
|
2050
|
+
/** Below the bell, right-aligned; flips above when there is no room. */
|
|
2051
|
+
readonly overlayPositions: ConnectedPosition[];
|
|
2052
|
+
/** Resolved strings, defaults merged with the `labels` overrides. */
|
|
2053
|
+
readonly text: _angular_core.Signal<AppHeaderLabels>;
|
|
2054
|
+
/** How many notifications are unread. */
|
|
2055
|
+
readonly unreadCount: _angular_core.Signal<number>;
|
|
2056
|
+
/** The slice shown in the dropdown. */
|
|
2057
|
+
readonly visibleNotifications: _angular_core.Signal<AppHeaderNotification[]>;
|
|
2058
|
+
/** Screen-reader text for the bell's unread badge. */
|
|
2059
|
+
readonly unreadLabel: _angular_core.Signal<string>;
|
|
2060
|
+
/** Open or close the notification dropdown. */
|
|
2061
|
+
toggleNotifications(event: MouseEvent): void;
|
|
2062
|
+
/** Close the notification dropdown. */
|
|
2063
|
+
closeNotifications(): void;
|
|
2064
|
+
/** Handle a press on an action button. */
|
|
2065
|
+
onActionClick(action: AppHeaderAction, event: MouseEvent): void;
|
|
2066
|
+
/** Handle a press on a notification entry. */
|
|
2067
|
+
onNotificationClick(notification: AppHeaderNotification): void;
|
|
2068
|
+
/** Handle a press on the dropdown footer. */
|
|
2069
|
+
onViewAll(): void;
|
|
2070
|
+
/** A badge renders only for a non-zero count or a non-empty string. */
|
|
2071
|
+
hasBadge(action: AppHeaderAction): boolean;
|
|
2072
|
+
/** Class list for the status chip. */
|
|
2073
|
+
chipClass(chip: AppHeaderChip): string;
|
|
2074
|
+
/**
|
|
2075
|
+
* Trust inline SVG markup supplied through the data inputs.
|
|
2076
|
+
*
|
|
2077
|
+
* Icons come from the host application's own code, never from user input.
|
|
2078
|
+
* Results are cached so change detection does not re-run the sanitizer.
|
|
2079
|
+
*/
|
|
2080
|
+
safeIcon(markup: string): SafeHtml;
|
|
2081
|
+
private readonly iconCache;
|
|
2082
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppHeaderComponent, never>;
|
|
2083
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppHeaderComponent, "pecb-app-header", never, { "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "chip": { "alias": "chip"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "showNotifications": { "alias": "showNotifications"; "required": false; "isSignal": true; }; "notifications": { "alias": "notifications"; "required": false; "isSignal": true; }; "notificationsLimit": { "alias": "notificationsLimit"; "required": false; "isSignal": true; }; "notificationsOpen": { "alias": "notificationsOpen"; "required": false; "isSignal": true; }; "showMenuButton": { "alias": "showMenuButton"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; }, { "notificationsOpen": "notificationsOpenChange"; "menuClick": "menuClick"; "actionClick": "actionClick"; "notificationClick": "notificationClick"; "viewAllNotifications": "viewAllNotifications"; }, never, ["[appHeaderStart]", "[appHeaderTitle]", "[appHeaderEnd]"], true, never>;
|
|
2084
|
+
}
|
|
2085
|
+
|
|
1127
2086
|
type ConfirmationIconType = 'success' | 'warning' | 'error' | 'info';
|
|
1128
2087
|
declare class ConfirmationComponent implements OnDestroy {
|
|
1129
2088
|
id: _angular_core.InputSignal<string>;
|
|
@@ -1169,7 +2128,7 @@ declare class ConfirmationComponent implements OnDestroy {
|
|
|
1169
2128
|
}
|
|
1170
2129
|
|
|
1171
2130
|
type AlertType = 'info' | 'success' | 'warning' | 'error';
|
|
1172
|
-
type AlertVariant = 'banner' | 'filled';
|
|
2131
|
+
type AlertVariant = 'banner' | 'filled' | 'callout';
|
|
1173
2132
|
declare class AlertComponent implements OnDestroy {
|
|
1174
2133
|
type: _angular_core.InputSignal<AlertType>;
|
|
1175
2134
|
variant: _angular_core.InputSignal<AlertVariant>;
|
|
@@ -1478,14 +2437,14 @@ declare class TooltipDirective implements OnDestroy {
|
|
|
1478
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>;
|
|
1479
2438
|
}
|
|
1480
2439
|
|
|
1481
|
-
type MetricsCardVariation = '1' | '2' | '3' | '4' | '5' | '6';
|
|
2440
|
+
type MetricsCardVariation = '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8';
|
|
1482
2441
|
type MetricsCardType = 'data+cta' | 'data-only';
|
|
1483
2442
|
type MetricsCardOrientation = 'left-aligned' | 'center';
|
|
1484
2443
|
type MetricsCardBadgeStatus = 'success' | 'warning' | 'error' | 'info';
|
|
1485
|
-
type MetricsCardIconBg = 'white' | 'pending' | 'success' | 'error' | 'info' | 'purple';
|
|
2444
|
+
type MetricsCardIconBg = 'white' | 'gray' | 'pending' | 'success' | 'error' | 'info' | 'purple';
|
|
1486
2445
|
declare class MetricsCardComponent {
|
|
1487
2446
|
private sanitizer;
|
|
1488
|
-
/** Layout variation (1–
|
|
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) */
|
|
1489
2448
|
variation: _angular_core.InputSignal<MetricsCardVariation>;
|
|
1490
2449
|
/** Whether to render a CTA button/link */
|
|
1491
2450
|
type: _angular_core.InputSignal<MetricsCardType>;
|
|
@@ -1524,7 +2483,7 @@ declare class MetricsCardComponent {
|
|
|
1524
2483
|
ctaClicked: _angular_core.OutputEmitterRef<void>;
|
|
1525
2484
|
safeIconSvg: _angular_core.Signal<_angular_platform_browser.SafeHtml | null>;
|
|
1526
2485
|
get hostClasses(): string;
|
|
1527
|
-
/** 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) */
|
|
1528
2487
|
get showFooterCta(): boolean;
|
|
1529
2488
|
/** Inline CTA link renders for variations 1 and 5 */
|
|
1530
2489
|
get showInlineCta(): boolean;
|
|
@@ -1539,6 +2498,495 @@ declare class MetricsCardComponent {
|
|
|
1539
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>;
|
|
1540
2499
|
}
|
|
1541
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
|
+
|
|
1542
2990
|
interface FloatButtonAction {
|
|
1543
2991
|
/** Unique identifier used for tracking and emitting click events */
|
|
1544
2992
|
id: string;
|
|
@@ -4661,39 +6109,6 @@ declare function tryAsync<T>(operation: () => Promise<T>, errorOptions?: ErrorOp
|
|
|
4661
6109
|
*/
|
|
4662
6110
|
declare function trySync<T>(operation: () => T, errorOptions?: ErrorOptions): [T, null] | [null, PecbError];
|
|
4663
6111
|
|
|
4664
|
-
/**
|
|
4665
|
-
* All available icon names in the PECB icon library.
|
|
4666
|
-
* Use with `<pecb-icon name="icon-name">` for built-in icons.
|
|
4667
|
-
*/
|
|
4668
|
-
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';
|
|
4669
|
-
|
|
4670
|
-
/**
|
|
4671
|
-
* Custom icon names — self-contained icons with built-in background and color.
|
|
4672
|
-
*
|
|
4673
|
-
* Naming: `custom-{state}-{size}-{style}`
|
|
4674
|
-
*
|
|
4675
|
-
* | State | Description |
|
|
4676
|
-
* |------------------|------------------------------------|
|
|
4677
|
-
* | check | Checkmark / completed |
|
|
4678
|
-
* | certificate | Certificate / credential |
|
|
4679
|
-
* | view | Eye / visibility |
|
|
4680
|
-
* | add | Plus / create |
|
|
4681
|
-
* | delete | Trash / remove |
|
|
4682
|
-
* | download | Download arrow |
|
|
4683
|
-
* | upload | Upload arrow |
|
|
4684
|
-
* | time | Clock / duration |
|
|
4685
|
-
* | slide | Presentation / slideshow |
|
|
4686
|
-
* | tools | Wrench / settings |
|
|
4687
|
-
* | doc | Document / file |
|
|
4688
|
-
* | info | Information circle |
|
|
4689
|
-
* | warning | Warning triangle |
|
|
4690
|
-
* | not-applicable | N/A / disabled |
|
|
4691
|
-
*
|
|
4692
|
-
* Sizes: xs (24), sm (32), md (40), lg (48), xl (56), 2xl (64)
|
|
4693
|
-
* Styles: active (colored), neutral (gray)
|
|
4694
|
-
*/
|
|
4695
|
-
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';
|
|
4696
|
-
|
|
4697
6112
|
/** Container size. The inner icon is always 50 % of the container. */
|
|
4698
6113
|
type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
|
|
4699
6114
|
/**
|
|
@@ -4738,7 +6153,7 @@ declare class IconComponent {
|
|
|
4738
6153
|
* Registered icon name. When provided, the SVG is resolved from the
|
|
4739
6154
|
* `IconRegistry`. Takes highest priority.
|
|
4740
6155
|
*/
|
|
4741
|
-
name: _angular_core.InputSignal<IconName | CustomIconName | undefined>;
|
|
6156
|
+
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>;
|
|
4742
6157
|
/**
|
|
4743
6158
|
* Inline SVG string to render inside the container.
|
|
4744
6159
|
* When provided, this takes precedence over projected content.
|
|
@@ -4779,6 +6194,12 @@ declare class IconComponent {
|
|
|
4779
6194
|
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>;
|
|
4780
6195
|
}
|
|
4781
6196
|
|
|
6197
|
+
/**
|
|
6198
|
+
* All available icon names in the PECB icon library.
|
|
6199
|
+
* Use with `<pecb-icon name="icon-name">` for built-in icons.
|
|
6200
|
+
*/
|
|
6201
|
+
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';
|
|
6202
|
+
|
|
4782
6203
|
/**
|
|
4783
6204
|
* Global registry for SVG icons.
|
|
4784
6205
|
*
|
|
@@ -4818,6 +6239,46 @@ declare class IconRegistry {
|
|
|
4818
6239
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<IconRegistry>;
|
|
4819
6240
|
}
|
|
4820
6241
|
|
|
6242
|
+
/**
|
|
6243
|
+
* Custom icon names — self-contained icons with built-in background and color.
|
|
6244
|
+
*
|
|
6245
|
+
* Naming: `custom-{state}-{size}-{style}`
|
|
6246
|
+
*
|
|
6247
|
+
* | State | Description |
|
|
6248
|
+
* |------------------|------------------------------------|
|
|
6249
|
+
* | check | Checkmark / completed |
|
|
6250
|
+
* | certificate | Certificate / credential |
|
|
6251
|
+
* | view | Eye / visibility |
|
|
6252
|
+
* | add | Plus / create |
|
|
6253
|
+
* | delete | Trash / remove |
|
|
6254
|
+
* | download | Download arrow |
|
|
6255
|
+
* | upload | Upload arrow |
|
|
6256
|
+
* | time | Clock / duration |
|
|
6257
|
+
* | slide | Presentation / slideshow |
|
|
6258
|
+
* | tools | Wrench / settings |
|
|
6259
|
+
* | doc | Document / file |
|
|
6260
|
+
* | info | Information circle |
|
|
6261
|
+
* | warning | Warning triangle |
|
|
6262
|
+
* | not-applicable | N/A / disabled |
|
|
6263
|
+
*
|
|
6264
|
+
* Sizes: xs (24), sm (32), md (40), lg (48), xl (56), 2xl (64)
|
|
6265
|
+
* Styles: active (colored), neutral (gray)
|
|
6266
|
+
*
|
|
6267
|
+
* Course-progress set (member dashboard tracker) — multi-color artwork icons
|
|
6268
|
+
* available in `md` only; `-off` source artwork maps to the `neutral` style:
|
|
6269
|
+
*
|
|
6270
|
+
* | State | Column |
|
|
6271
|
+
* |--------------------------------------------------------------------|-------------|
|
|
6272
|
+
* | content-classroom, content-selfstudy, content-elearning, | Content |
|
|
6273
|
+
* | content-liveonline, content-technical (active + neutral) | |
|
|
6274
|
+
* | att-acc, att-evaluate, att-na | Attendance |
|
|
6275
|
+
* | exam-passed, exam-schedule, exam-scheduled, exam-missed, | Exam |
|
|
6276
|
+
* | exam-failed, exam-waiting | |
|
|
6277
|
+
* | cert-view, cert-apply, cert-treatment, cert-refused | Certificate |
|
|
6278
|
+
* | amf-note, amf-note-paid | AMF/Renewal |
|
|
6279
|
+
*/
|
|
6280
|
+
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';
|
|
6281
|
+
|
|
4821
6282
|
/**
|
|
4822
6283
|
* Map of every PECB icon name to its inline SVG string.
|
|
4823
6284
|
*
|
|
@@ -4977,6 +6438,7 @@ declare class DashboardGridComponent {
|
|
|
4977
6438
|
type ProgressType = 'bar' | 'circle' | 'spinner';
|
|
4978
6439
|
type ProgressBarSize = 'sm' | 'lg';
|
|
4979
6440
|
type ProgressCircleSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
6441
|
+
type ProgressArcSize = 'sm' | 'md' | 'lg';
|
|
4980
6442
|
declare class SpinnerComponent {
|
|
4981
6443
|
id: _angular_core.InputSignal<string>;
|
|
4982
6444
|
size: _angular_core.InputSignal<number>;
|
|
@@ -5031,6 +6493,41 @@ declare class ProgressCircleComponent {
|
|
|
5031
6493
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProgressCircleComponent, never>;
|
|
5032
6494
|
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>;
|
|
5033
6495
|
}
|
|
6496
|
+
/**
|
|
6497
|
+
* Half-round (180°) progress gauge with a "value/max" label under the arc —
|
|
6498
|
+
* e.g. the CPD column of the member dashboard's course progress tracker
|
|
6499
|
+
* ("170/180"). Green as soon as there is any progress, muted at zero.
|
|
6500
|
+
*
|
|
6501
|
+
* @example
|
|
6502
|
+
* <pecb-progress-arc [value]="170" [max]="180" />
|
|
6503
|
+
*/
|
|
6504
|
+
declare class ProgressArcComponent {
|
|
6505
|
+
id: _angular_core.InputSignal<string>;
|
|
6506
|
+
/** Current value (e.g. CPD credits earned) */
|
|
6507
|
+
value: _angular_core.InputSignal<number>;
|
|
6508
|
+
/** Target value the arc fills towards (e.g. CPD credits required) */
|
|
6509
|
+
max: _angular_core.InputSignal<number>;
|
|
6510
|
+
/** Show the "value/max" label under the arc */
|
|
6511
|
+
showLabel: _angular_core.InputSignal<boolean>;
|
|
6512
|
+
/** Gauge width: sm (48px), md (60px), lg (80px) */
|
|
6513
|
+
size: _angular_core.InputSignal<ProgressArcSize>;
|
|
6514
|
+
/** Custom fill color — overrides the automatic green/muted coloring */
|
|
6515
|
+
color: _angular_core.InputSignal<string>;
|
|
6516
|
+
ariaLabel: _angular_core.InputSignal<string>;
|
|
6517
|
+
private readonly arcLength;
|
|
6518
|
+
private readonly sizeMap;
|
|
6519
|
+
private readonly fontSizeMap;
|
|
6520
|
+
widthValue: _angular_core.Signal<number>;
|
|
6521
|
+
heightValue: _angular_core.Signal<number>;
|
|
6522
|
+
fontSize: _angular_core.Signal<number>;
|
|
6523
|
+
clampedValue: _angular_core.Signal<number>;
|
|
6524
|
+
percent: _angular_core.Signal<number>;
|
|
6525
|
+
dashArray: _angular_core.Signal<string>;
|
|
6526
|
+
fillColor: _angular_core.Signal<string>;
|
|
6527
|
+
get arcClasses(): string[];
|
|
6528
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProgressArcComponent, never>;
|
|
6529
|
+
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>;
|
|
6530
|
+
}
|
|
5034
6531
|
|
|
5035
6532
|
type CodeInputState = 'default' | 'error';
|
|
5036
6533
|
type CodeInputDirection = 'horizontal' | 'vertical';
|
|
@@ -5684,6 +7181,10 @@ declare class ProjectLayoutComponent {
|
|
|
5684
7181
|
calendarAriaLabel: _angular_core.InputSignal<string>;
|
|
5685
7182
|
/** Prefix for the profile button accessible label (e.g. "Profile: Jane Doe"). */
|
|
5686
7183
|
profileAriaLabel: _angular_core.InputSignal<string>;
|
|
7184
|
+
/** Accessible label for the mobile hamburger that opens the sidebar drawer. */
|
|
7185
|
+
openNavAriaLabel: _angular_core.InputSignal<string>;
|
|
7186
|
+
/** Accessible label for the backdrop that closes the sidebar drawer. */
|
|
7187
|
+
closeNavAriaLabel: _angular_core.InputSignal<string>;
|
|
5687
7188
|
showLanguage: _angular_core.InputSignal<boolean>;
|
|
5688
7189
|
language: _angular_core.InputSignal<string>;
|
|
5689
7190
|
showBell: _angular_core.InputSignal<boolean>;
|
|
@@ -5712,11 +7213,23 @@ declare class ProjectLayoutComponent {
|
|
|
5712
7213
|
profileClick: _angular_core.OutputEmitterRef<void>;
|
|
5713
7214
|
sidebarItemClick: _angular_core.OutputEmitterRef<SidebarMenuItem>;
|
|
5714
7215
|
sidebarCollapsed: _angular_core.WritableSignal<boolean>;
|
|
7216
|
+
/**
|
|
7217
|
+
* Whether the off-canvas sidebar drawer is open. Only has a visual effect
|
|
7218
|
+
* below the `sm` breakpoint — above it the sidebar is always in the grid,
|
|
7219
|
+
* and the CSS that reads this flag is scoped to the mobile media query.
|
|
7220
|
+
*/
|
|
7221
|
+
mobileNavOpen: _angular_core.WritableSignal<boolean>;
|
|
5715
7222
|
onCategoryChange(event: Event): void;
|
|
7223
|
+
toggleMobileNav(): void;
|
|
7224
|
+
closeMobileNav(): void;
|
|
7225
|
+
/** Closing on Escape matches the drawer/modal behaviour elsewhere. */
|
|
7226
|
+
onEscape(): void;
|
|
7227
|
+
/** Navigating away should dismiss the drawer it was opened from. */
|
|
7228
|
+
onSidebarItemClick(item: SidebarMenuItem): void;
|
|
5716
7229
|
layoutClasses: _angular_core.Signal<string[]>;
|
|
5717
7230
|
contentClasses: _angular_core.Signal<string[]>;
|
|
5718
7231
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProjectLayoutComponent, never>;
|
|
5719
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProjectLayoutComponent, "pecb-project-layout", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "pageTitle": { "alias": "pageTitle"; "required": false; "isSignal": true; }; "contentStyle": { "alias": "contentStyle"; "required": false; "isSignal": true; }; "showSidebar": { "alias": "showSidebar"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "sidebarSections": { "alias": "sidebarSections"; "required": false; "isSignal": true; }; "sidebarShowHeader": { "alias": "sidebarShowHeader"; "required": false; "isSignal": true; }; "sidebarLogoSrc": { "alias": "sidebarLogoSrc"; "required": false; "isSignal": true; }; "sidebarLogo": { "alias": "sidebarLogo"; "required": false; "isSignal": true; }; "sidebarCollapsedLogo": { "alias": "sidebarCollapsedLogo"; "required": false; "isSignal": true; }; "sidebarShowFooter": { "alias": "sidebarShowFooter"; "required": false; "isSignal": true; }; "searchType": { "alias": "searchType"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "productSearchPlaceholder": { "alias": "productSearchPlaceholder"; "required": false; "isSignal": true; }; "productCategories": { "alias": "productCategories"; "required": false; "isSignal": true; }; "searchAriaLabel": { "alias": "searchAriaLabel"; "required": false; "isSignal": true; }; "productSearchAriaLabel": { "alias": "productSearchAriaLabel"; "required": false; "isSignal": true; }; "categoryAriaLabel": { "alias": "categoryAriaLabel"; "required": false; "isSignal": true; }; "notificationsAriaLabel": { "alias": "notificationsAriaLabel"; "required": false; "isSignal": true; }; "cartAriaLabel": { "alias": "cartAriaLabel"; "required": false; "isSignal": true; }; "calendarAriaLabel": { "alias": "calendarAriaLabel"; "required": false; "isSignal": true; }; "profileAriaLabel": { "alias": "profileAriaLabel"; "required": false; "isSignal": true; }; "showLanguage": { "alias": "showLanguage"; "required": false; "isSignal": true; }; "language": { "alias": "language"; "required": false; "isSignal": true; }; "showBell": { "alias": "showBell"; "required": false; "isSignal": true; }; "showCart": { "alias": "showCart"; "required": false; "isSignal": true; }; "showCalendar": { "alias": "showCalendar"; "required": false; "isSignal": true; }; "profileName": { "alias": "profileName"; "required": false; "isSignal": true; }; "profileRole": { "alias": "profileRole"; "required": false; "isSignal": true; }; "profileImage": { "alias": "profileImage"; "required": false; "isSignal": true; }; "profileType": { "alias": "profileType"; "required": false; "isSignal": true; }; }, { "searchChange": "searchChange"; "productSearchChange": "productSearchChange"; "categoryChange": "categoryChange"; "languageClick": "languageClick"; "bellClick": "bellClick"; "cartClick": "cartClick"; "calendarClick": "calendarClick"; "profileClick": "profileClick"; "sidebarItemClick": "sidebarItemClick"; }, never, ["[sidebar-header]", "[sidebar-footer]", "[layoutHeaderActions]", "[layoutContent]"], true, never>;
|
|
7232
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProjectLayoutComponent, "pecb-project-layout", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "pageTitle": { "alias": "pageTitle"; "required": false; "isSignal": true; }; "contentStyle": { "alias": "contentStyle"; "required": false; "isSignal": true; }; "showSidebar": { "alias": "showSidebar"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "sidebarSections": { "alias": "sidebarSections"; "required": false; "isSignal": true; }; "sidebarShowHeader": { "alias": "sidebarShowHeader"; "required": false; "isSignal": true; }; "sidebarLogoSrc": { "alias": "sidebarLogoSrc"; "required": false; "isSignal": true; }; "sidebarLogo": { "alias": "sidebarLogo"; "required": false; "isSignal": true; }; "sidebarCollapsedLogo": { "alias": "sidebarCollapsedLogo"; "required": false; "isSignal": true; }; "sidebarShowFooter": { "alias": "sidebarShowFooter"; "required": false; "isSignal": true; }; "searchType": { "alias": "searchType"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "productSearchPlaceholder": { "alias": "productSearchPlaceholder"; "required": false; "isSignal": true; }; "productCategories": { "alias": "productCategories"; "required": false; "isSignal": true; }; "searchAriaLabel": { "alias": "searchAriaLabel"; "required": false; "isSignal": true; }; "productSearchAriaLabel": { "alias": "productSearchAriaLabel"; "required": false; "isSignal": true; }; "categoryAriaLabel": { "alias": "categoryAriaLabel"; "required": false; "isSignal": true; }; "notificationsAriaLabel": { "alias": "notificationsAriaLabel"; "required": false; "isSignal": true; }; "cartAriaLabel": { "alias": "cartAriaLabel"; "required": false; "isSignal": true; }; "calendarAriaLabel": { "alias": "calendarAriaLabel"; "required": false; "isSignal": true; }; "profileAriaLabel": { "alias": "profileAriaLabel"; "required": false; "isSignal": true; }; "openNavAriaLabel": { "alias": "openNavAriaLabel"; "required": false; "isSignal": true; }; "closeNavAriaLabel": { "alias": "closeNavAriaLabel"; "required": false; "isSignal": true; }; "showLanguage": { "alias": "showLanguage"; "required": false; "isSignal": true; }; "language": { "alias": "language"; "required": false; "isSignal": true; }; "showBell": { "alias": "showBell"; "required": false; "isSignal": true; }; "showCart": { "alias": "showCart"; "required": false; "isSignal": true; }; "showCalendar": { "alias": "showCalendar"; "required": false; "isSignal": true; }; "profileName": { "alias": "profileName"; "required": false; "isSignal": true; }; "profileRole": { "alias": "profileRole"; "required": false; "isSignal": true; }; "profileImage": { "alias": "profileImage"; "required": false; "isSignal": true; }; "profileType": { "alias": "profileType"; "required": false; "isSignal": true; }; }, { "searchChange": "searchChange"; "productSearchChange": "productSearchChange"; "categoryChange": "categoryChange"; "languageClick": "languageClick"; "bellClick": "bellClick"; "cartClick": "cartClick"; "calendarClick": "calendarClick"; "profileClick": "profileClick"; "sidebarItemClick": "sidebarItemClick"; }, never, ["[sidebar-header]", "[sidebar-footer]", "[layoutHeaderActions]", "[layoutContent]"], true, never>;
|
|
5720
7233
|
}
|
|
5721
7234
|
|
|
5722
7235
|
interface HierarchicalTableColumn {
|
|
@@ -6013,83 +7526,6 @@ declare class ExpandableRowTableComponent {
|
|
|
6013
7526
|
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>;
|
|
6014
7527
|
}
|
|
6015
7528
|
|
|
6016
|
-
/**
|
|
6017
|
-
* Badge variant type.
|
|
6018
|
-
* - `dot`: small 6px red dot indicator
|
|
6019
|
-
* - `count`: numbered badge (default or small size)
|
|
6020
|
-
* - `status`: colored dot + text label
|
|
6021
|
-
* - `ribbon`: colored tag with bottom-right arrow fold
|
|
6022
|
-
*/
|
|
6023
|
-
type BadgeVariant = 'dot' | 'count' | 'status' | 'ribbon';
|
|
6024
|
-
/**
|
|
6025
|
-
* Count badge size.
|
|
6026
|
-
* - `default`: 20px height, 14px font
|
|
6027
|
-
* - `small`: 14px height, 12px font
|
|
6028
|
-
*/
|
|
6029
|
-
type BadgeSize = 'default' | 'small';
|
|
6030
|
-
/**
|
|
6031
|
-
* Status badge type — determines the dot color.
|
|
6032
|
-
*/
|
|
6033
|
-
type BadgeStatus = 'success' | 'error' | 'default' | 'processing' | 'warning';
|
|
6034
|
-
/**
|
|
6035
|
-
* Ribbon badge color.
|
|
6036
|
-
*/
|
|
6037
|
-
type RibbonColor = 'blue' | 'orange' | 'gray' | 'red' | 'purple' | 'green' | 'black';
|
|
6038
|
-
/**
|
|
6039
|
-
* Badge component matching the PECB Figma design system.
|
|
6040
|
-
*
|
|
6041
|
-
* Three sub-types: Basic (dot/count), Status (dot + label), Ribbon (colored tag).
|
|
6042
|
-
*
|
|
6043
|
-
* @example
|
|
6044
|
-
* ```html
|
|
6045
|
-
* <!-- Dot indicator -->
|
|
6046
|
-
* <pecb-badge variant="dot"></pecb-badge>
|
|
6047
|
-
*
|
|
6048
|
-
* <!-- Count badge -->
|
|
6049
|
-
* <pecb-badge variant="count" [count]="21"></pecb-badge>
|
|
6050
|
-
* <pecb-badge variant="count" [count]="5" size="small"></pecb-badge>
|
|
6051
|
-
*
|
|
6052
|
-
* <!-- Status badge -->
|
|
6053
|
-
* <pecb-badge variant="status" status="success"></pecb-badge>
|
|
6054
|
-
* <pecb-badge variant="status" status="error" label="Failed"></pecb-badge>
|
|
6055
|
-
*
|
|
6056
|
-
* <!-- Ribbon badge -->
|
|
6057
|
-
* <pecb-badge variant="ribbon" ribbonColor="blue" text="New"></pecb-badge>
|
|
6058
|
-
* ```
|
|
6059
|
-
*/
|
|
6060
|
-
declare class BadgeComponent {
|
|
6061
|
-
/** Unique element ID */
|
|
6062
|
-
id: _angular_core.InputSignal<string>;
|
|
6063
|
-
/** Badge variant */
|
|
6064
|
-
variant: _angular_core.InputSignal<BadgeVariant>;
|
|
6065
|
-
/** Count number (for variant='count') */
|
|
6066
|
-
count: _angular_core.InputSignal<number>;
|
|
6067
|
-
/** Max count before showing "99+" (for variant='count') */
|
|
6068
|
-
maxCount: _angular_core.InputSignal<number>;
|
|
6069
|
-
/** Count badge size */
|
|
6070
|
-
size: _angular_core.InputSignal<BadgeSize>;
|
|
6071
|
-
/** Status type (for variant='status') */
|
|
6072
|
-
status: _angular_core.InputSignal<BadgeStatus>;
|
|
6073
|
-
/** Label text (for variant='status'). Defaults to the status name. */
|
|
6074
|
-
label: _angular_core.InputSignal<string>;
|
|
6075
|
-
/** Whether to show the label text (for variant='status') */
|
|
6076
|
-
showLabel: _angular_core.InputSignal<boolean>;
|
|
6077
|
-
/** Ribbon color (for variant='ribbon') */
|
|
6078
|
-
ribbonColor: _angular_core.InputSignal<RibbonColor>;
|
|
6079
|
-
/** Ribbon/badge text (for variant='ribbon') */
|
|
6080
|
-
text: _angular_core.InputSignal<string>;
|
|
6081
|
-
/** Aria-label for the dot indicator (variant='dot'). */
|
|
6082
|
-
notificationAriaLabel: _angular_core.InputSignal<string>;
|
|
6083
|
-
/** Word appended after the count in the count badge's aria-label (variant='count'). */
|
|
6084
|
-
notificationsLabel: _angular_core.InputSignal<string>;
|
|
6085
|
-
/** Formatted count display */
|
|
6086
|
-
displayCount: _angular_core.Signal<string>;
|
|
6087
|
-
/** Status label — uses explicit label or falls back to status name */
|
|
6088
|
-
statusLabel: _angular_core.Signal<string>;
|
|
6089
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BadgeComponent, never>;
|
|
6090
|
-
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>;
|
|
6091
|
-
}
|
|
6092
|
-
|
|
6093
7529
|
/**
|
|
6094
7530
|
* Position of the sticky (affix) panel.
|
|
6095
7531
|
* - `left`: sticky panel on the left, scrollable content on the right
|
|
@@ -6960,7 +8396,7 @@ declare class FilterColumnsComponent implements OnInit, OnChanges, OnDestroy, Af
|
|
|
6960
8396
|
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>;
|
|
6961
8397
|
}
|
|
6962
8398
|
|
|
6963
|
-
type FileUploadVariant = 'dropzone' | 'inline';
|
|
8399
|
+
type FileUploadVariant = 'dropzone' | 'inline' | 'compact';
|
|
6964
8400
|
type FileUploadState = 'default' | 'uploading' | 'complete' | 'error';
|
|
6965
8401
|
interface UploadedFile {
|
|
6966
8402
|
id: string;
|
|
@@ -6981,6 +8417,10 @@ declare class FileUploadComponent implements OnInit {
|
|
|
6981
8417
|
id: _angular_core.InputSignal<string>;
|
|
6982
8418
|
/** Visual variant: dropzone (big area) or inline (compact row) */
|
|
6983
8419
|
variant: _angular_core.InputSignal<FileUploadVariant>;
|
|
8420
|
+
/** compact variant: text before the browse link */
|
|
8421
|
+
compactText: _angular_core.InputSignal<string>;
|
|
8422
|
+
/** compact variant: the highlighted browse link */
|
|
8423
|
+
compactBrowseLabel: _angular_core.InputSignal<string>;
|
|
6984
8424
|
/** Whether multiple files can be uploaded */
|
|
6985
8425
|
multiple: _angular_core.InputSignal<boolean>;
|
|
6986
8426
|
/** Accepted file types (e.g. '.pdf,.png,.jpg') */
|
|
@@ -7089,7 +8529,7 @@ declare class FileUploadComponent implements OnInit {
|
|
|
7089
8529
|
formatFileDate(date: Date): string;
|
|
7090
8530
|
getFileTypeColor(type: string): string;
|
|
7091
8531
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FileUploadComponent, never>;
|
|
7092
|
-
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>;
|
|
8532
|
+
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>;
|
|
7093
8533
|
}
|
|
7094
8534
|
|
|
7095
8535
|
type ToolbarVariant = 'buttons' | 'tabs';
|
|
@@ -7389,5 +8829,233 @@ declare class TourComponent implements OnInit, OnChanges {
|
|
|
7389
8829
|
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>;
|
|
7390
8830
|
}
|
|
7391
8831
|
|
|
7392
|
-
|
|
7393
|
-
|
|
8832
|
+
/**
|
|
8833
|
+
* Card size:
|
|
8834
|
+
* - 'default' — program cards (80px icon tile, 19px title, description)
|
|
8835
|
+
* - 'compact' — application cards (64px icon tile, 16px title)
|
|
8836
|
+
*/
|
|
8837
|
+
type HubCardSize = 'default' | 'compact';
|
|
8838
|
+
/**
|
|
8839
|
+
* Central Hub navigation card — an icon tile, a title, an optional
|
|
8840
|
+
* description and an optional status badge (e.g. "Soon").
|
|
8841
|
+
*
|
|
8842
|
+
* Renders as an `<a>` when [href] is set (and the card is enabled),
|
|
8843
|
+
* otherwise as a keyboard-accessible button-like element that emits
|
|
8844
|
+
* (cardClick).
|
|
8845
|
+
*
|
|
8846
|
+
* The icon can be provided three ways (first match wins):
|
|
8847
|
+
* 1. [iconSrc] — image URL (svg/png)
|
|
8848
|
+
* 2. [iconSvg] — raw SVG string (sanitized internally)
|
|
8849
|
+
* 3. projected content marked with the `hubCardIcon` attribute
|
|
8850
|
+
*/
|
|
8851
|
+
declare class HubCardComponent {
|
|
8852
|
+
private sanitizer;
|
|
8853
|
+
/** Card title (required) */
|
|
8854
|
+
title: _angular_core.InputSignal<string>;
|
|
8855
|
+
/** Supporting text under the title; hidden when empty */
|
|
8856
|
+
description: _angular_core.InputSignal<string>;
|
|
8857
|
+
/** 'default' for program cards, 'compact' for application cards */
|
|
8858
|
+
size: _angular_core.InputSignal<HubCardSize>;
|
|
8859
|
+
/** Badge shown in the top-right corner (e.g. "Soon"); hidden when empty */
|
|
8860
|
+
badgeText: _angular_core.InputSignal<string>;
|
|
8861
|
+
/** Disables interaction and dims the card */
|
|
8862
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
8863
|
+
/** When set, the card renders as a link */
|
|
8864
|
+
href: _angular_core.InputSignal<string>;
|
|
8865
|
+
/** Link target, e.g. "_blank" — only used together with [href] */
|
|
8866
|
+
target: _angular_core.InputSignal<string>;
|
|
8867
|
+
/** Icon image URL — rendered inside the icon tile */
|
|
8868
|
+
iconSrc: _angular_core.InputSignal<string>;
|
|
8869
|
+
/** Raw SVG string for the icon — used when [iconSrc] is empty */
|
|
8870
|
+
iconSvg: _angular_core.InputSignal<string>;
|
|
8871
|
+
/** Emitted on click / Enter / Space when the card has no [href] */
|
|
8872
|
+
cardClick: _angular_core.OutputEmitterRef<void>;
|
|
8873
|
+
/** Card renders as a link only when enabled and an href is provided */
|
|
8874
|
+
isLink: _angular_core.Signal<boolean>;
|
|
8875
|
+
/** rel="noopener noreferrer" is applied automatically for target="_blank" */
|
|
8876
|
+
rel: _angular_core.Signal<"noopener noreferrer" | null>;
|
|
8877
|
+
safeIconSvg: _angular_core.Signal<_angular_platform_browser.SafeHtml | null>;
|
|
8878
|
+
hostClasses: _angular_core.Signal<string>;
|
|
8879
|
+
onActivate(event: Event): void;
|
|
8880
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HubCardComponent, never>;
|
|
8881
|
+
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>;
|
|
8882
|
+
}
|
|
8883
|
+
|
|
8884
|
+
/**
|
|
8885
|
+
* Responsive grid wrapper for <pecb-hub-card> elements, with an optional
|
|
8886
|
+
* section heading (e.g. "Programs", "Applications").
|
|
8887
|
+
*
|
|
8888
|
+
* Columns adapt automatically to the available container width — no media
|
|
8889
|
+
* queries needed by the consumer: cards wrap once they would shrink below
|
|
8890
|
+
* [minCardWidth], down to a single column on narrow screens.
|
|
8891
|
+
*
|
|
8892
|
+
* @example
|
|
8893
|
+
* <pecb-hub-card-grid sectionTitle="Programs">
|
|
8894
|
+
* <pecb-hub-card title="Skills" description="..." iconSrc="..." />
|
|
8895
|
+
* <pecb-hub-card title="Store" description="..." iconSrc="..." />
|
|
8896
|
+
* </pecb-hub-card-grid>
|
|
8897
|
+
*/
|
|
8898
|
+
declare class HubCardGridComponent {
|
|
8899
|
+
/** Optional section heading rendered above the grid */
|
|
8900
|
+
sectionTitle: _angular_core.InputSignal<string>;
|
|
8901
|
+
/** Minimum card width in px before the grid wraps to fewer columns */
|
|
8902
|
+
minCardWidth: _angular_core.InputSignal<number>;
|
|
8903
|
+
/** Gap between cards in px */
|
|
8904
|
+
gap: _angular_core.InputSignal<number>;
|
|
8905
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HubCardGridComponent, never>;
|
|
8906
|
+
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>;
|
|
8907
|
+
}
|
|
8908
|
+
|
|
8909
|
+
/** Priority of a recommended action — drives the pill and default tones. */
|
|
8910
|
+
type ActionItemPriority = 'high' | 'medium' | 'low';
|
|
8911
|
+
/**
|
|
8912
|
+
* "Recommended action" row — a leading icon in a tinted tile, a bold title,
|
|
8913
|
+
* a muted description, a small priority pill (High/Medium/Low mapped to
|
|
8914
|
+
* error/warning/neutral tones) and a trailing CTA button.
|
|
8915
|
+
*
|
|
8916
|
+
* The icon tint, pill tone and CTA variant all derive from [priority] by
|
|
8917
|
+
* default; [ctaVariant] and [priorityLabel] override the derived values
|
|
8918
|
+
* (e.g. for translated labels).
|
|
8919
|
+
*
|
|
8920
|
+
* @example
|
|
8921
|
+
* <pecb-action-item
|
|
8922
|
+
* icon="refresh-01"
|
|
8923
|
+
* title="Renew ISO/IEC 27001 Lead Auditor"
|
|
8924
|
+
* description="Expires in 25 days — start early to avoid a lapse."
|
|
8925
|
+
* priority="high"
|
|
8926
|
+
* ctaLabel="Renew"
|
|
8927
|
+
* (ctaClicked)="renew()"
|
|
8928
|
+
* />
|
|
8929
|
+
*/
|
|
8930
|
+
declare class ActionItemComponent {
|
|
8931
|
+
/** Leading icon name (general or custom registry icon); hidden when empty */
|
|
8932
|
+
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">;
|
|
8933
|
+
/** Icon tile shape — the design uses a rounded-square tile */
|
|
8934
|
+
iconShape: _angular_core.InputSignal<IconShape>;
|
|
8935
|
+
/** Action title (required) */
|
|
8936
|
+
title: _angular_core.InputSignal<string>;
|
|
8937
|
+
/** Muted description line under the title; hidden when empty */
|
|
8938
|
+
description: _angular_core.InputSignal<string>;
|
|
8939
|
+
/** Priority — drives the pill tone, icon tint and default CTA variant */
|
|
8940
|
+
priority: _angular_core.InputSignal<ActionItemPriority>;
|
|
8941
|
+
/** Pill text override (e.g. a translated label); defaults per priority */
|
|
8942
|
+
priorityLabel: _angular_core.InputSignal<string>;
|
|
8943
|
+
/** Trailing CTA button label; the button is hidden when empty */
|
|
8944
|
+
ctaLabel: _angular_core.InputSignal<string>;
|
|
8945
|
+
/** CTA button variant override; defaults to destructive for high priority, primary-2 otherwise */
|
|
8946
|
+
ctaVariant: _angular_core.InputSignal<"" | ButtonVariant>;
|
|
8947
|
+
/** Emitted when the CTA button is clicked */
|
|
8948
|
+
ctaClicked: _angular_core.OutputEmitterRef<void>;
|
|
8949
|
+
statusType: _angular_core.Signal<"error" | "neutral" | "warning">;
|
|
8950
|
+
iconColor: _angular_core.Signal<IconColor>;
|
|
8951
|
+
priorityText: _angular_core.Signal<string>;
|
|
8952
|
+
ctaVariantValue: _angular_core.Signal<ButtonVariant>;
|
|
8953
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ActionItemComponent, never>;
|
|
8954
|
+
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>;
|
|
8955
|
+
}
|
|
8956
|
+
|
|
8957
|
+
/**
|
|
8958
|
+
* Compact list/timeline row — a small round icon, a bold title, a muted
|
|
8959
|
+
* subline and an optional right-aligned meta text (e.g. a timestamp).
|
|
8960
|
+
* Used for feeds like "News releases" and "Recent activity".
|
|
8961
|
+
*
|
|
8962
|
+
* Consecutive rows are divided by a 1px border automatically (the first row
|
|
8963
|
+
* has no divider); place the rows as direct siblings for this to apply.
|
|
8964
|
+
*
|
|
8965
|
+
* Renders as an `<a>` when [href] is set, otherwise as a plain row that
|
|
8966
|
+
* emits (itemClick) when interactive consumers need it.
|
|
8967
|
+
*
|
|
8968
|
+
* @example
|
|
8969
|
+
* <pecb-list-item
|
|
8970
|
+
* icon="bell-01"
|
|
8971
|
+
* title="PECB launches ISO/IEC 42001 Lead Implementer training course"
|
|
8972
|
+
* subtitle="Aug 18, 2026"
|
|
8973
|
+
* href="https://pecb.com/en/news"
|
|
8974
|
+
* target="_blank"
|
|
8975
|
+
* />
|
|
8976
|
+
*/
|
|
8977
|
+
declare class ListItemComponent {
|
|
8978
|
+
/** Leading icon name (general or custom registry icon); hidden when empty */
|
|
8979
|
+
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">;
|
|
8980
|
+
/** Icon tile color — e.g. 'gray' for activity feeds, 'error' for urgent rows */
|
|
8981
|
+
iconColor: _angular_core.InputSignal<IconColor>;
|
|
8982
|
+
/** Row title (required) */
|
|
8983
|
+
title: _angular_core.InputSignal<string>;
|
|
8984
|
+
/** Muted subline under the title; hidden when empty */
|
|
8985
|
+
subtitle: _angular_core.InputSignal<string>;
|
|
8986
|
+
/** Right-aligned meta text (e.g. "2 days ago"); hidden when empty */
|
|
8987
|
+
meta: _angular_core.InputSignal<string>;
|
|
8988
|
+
/** When set, the row renders as a link */
|
|
8989
|
+
href: _angular_core.InputSignal<string>;
|
|
8990
|
+
/** Link target, e.g. "_blank" — only used together with [href] */
|
|
8991
|
+
target: _angular_core.InputSignal<string>;
|
|
8992
|
+
/** Emitted on click when the row has no [href] */
|
|
8993
|
+
itemClick: _angular_core.OutputEmitterRef<void>;
|
|
8994
|
+
isLink: _angular_core.Signal<boolean>;
|
|
8995
|
+
/** rel="noopener noreferrer" is applied automatically for target="_blank" */
|
|
8996
|
+
rel: _angular_core.Signal<"noopener noreferrer" | null>;
|
|
8997
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ListItemComponent, never>;
|
|
8998
|
+
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>;
|
|
8999
|
+
}
|
|
9000
|
+
|
|
9001
|
+
/**
|
|
9002
|
+
* Course/recommendation tile — a dark icon tile, an uppercase category tag
|
|
9003
|
+
* (brand red), a bold title, a muted meta line (e.g. "5 days · Advanced")
|
|
9004
|
+
* and a CTA link ("View course" with a trailing arrow), with hover elevation.
|
|
9005
|
+
*
|
|
9006
|
+
* The icon can be provided three ways (first match wins):
|
|
9007
|
+
* 1. [icon] — registry icon name (general or custom); black-stroke
|
|
9008
|
+
* registry icons are recolored white inside the dark tile
|
|
9009
|
+
* 2. [iconSrc] — image URL (svg/png)
|
|
9010
|
+
* 3. [iconSvg] — raw SVG string (sanitized internally)
|
|
9011
|
+
* The tile is hidden when none is set.
|
|
9012
|
+
*
|
|
9013
|
+
* Renders as an `<a>` when [href] is set, otherwise as a keyboard-accessible
|
|
9014
|
+
* button-like element that emits (cardClick).
|
|
9015
|
+
*
|
|
9016
|
+
* @example
|
|
9017
|
+
* <pecb-course-tile
|
|
9018
|
+
* icon="graduation-hat-01"
|
|
9019
|
+
* category="AI Management"
|
|
9020
|
+
* title="ISO/IEC 42001 Lead Implementer"
|
|
9021
|
+
* meta="5 days · Advanced"
|
|
9022
|
+
* href="https://pecb.com/en/education-and-certification-for-individuals"
|
|
9023
|
+
* target="_blank"
|
|
9024
|
+
* />
|
|
9025
|
+
*/
|
|
9026
|
+
declare class CourseTileComponent {
|
|
9027
|
+
private sanitizer;
|
|
9028
|
+
private registry;
|
|
9029
|
+
/** Registry icon name shown in the dark tile; see also [iconSrc]/[iconSvg] */
|
|
9030
|
+
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">;
|
|
9031
|
+
/** Icon image URL — used when [icon] is empty */
|
|
9032
|
+
iconSrc: _angular_core.InputSignal<string>;
|
|
9033
|
+
/** Raw SVG string for the icon — used when [icon] and [iconSrc] are empty */
|
|
9034
|
+
iconSvg: _angular_core.InputSignal<string>;
|
|
9035
|
+
/** Uppercase category tag above the title (e.g. "AI Management"); hidden when empty */
|
|
9036
|
+
category: _angular_core.InputSignal<string>;
|
|
9037
|
+
/** Course title (required) */
|
|
9038
|
+
title: _angular_core.InputSignal<string>;
|
|
9039
|
+
/** Muted meta line (e.g. "5 days · Advanced"); hidden when empty */
|
|
9040
|
+
meta: _angular_core.InputSignal<string>;
|
|
9041
|
+
/** CTA link text at the bottom of the tile */
|
|
9042
|
+
ctaLabel: _angular_core.InputSignal<string>;
|
|
9043
|
+
/** When set, the tile renders as a link */
|
|
9044
|
+
href: _angular_core.InputSignal<string>;
|
|
9045
|
+
/** Link target, e.g. "_blank" — only used together with [href] */
|
|
9046
|
+
target: _angular_core.InputSignal<string>;
|
|
9047
|
+
/** Emitted on click / Enter / Space when the tile has no [href] */
|
|
9048
|
+
cardClick: _angular_core.OutputEmitterRef<void>;
|
|
9049
|
+
isLink: _angular_core.Signal<boolean>;
|
|
9050
|
+
/** rel="noopener noreferrer" is applied automatically for target="_blank" */
|
|
9051
|
+
rel: _angular_core.Signal<"noopener noreferrer" | null>;
|
|
9052
|
+
/** The icon tile renders only when an icon source is provided */
|
|
9053
|
+
hasThumb: _angular_core.Signal<boolean>;
|
|
9054
|
+
safeThumbSvg: _angular_core.Signal<_angular_platform_browser.SafeHtml | null>;
|
|
9055
|
+
onActivate(event: Event): void;
|
|
9056
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CourseTileComponent, never>;
|
|
9057
|
+
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>;
|
|
9058
|
+
}
|
|
9059
|
+
|
|
9060
|
+
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_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, 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, 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 };
|
|
9061
|
+
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, 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 };
|