@akcelik/strct 5.14.0 → 5.16.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akcelik/strct",
3
- "version": "5.14.0",
3
+ "version": "5.16.0",
4
4
  "description": "UIStruct — a standalone Angular component library with a tokenised, multi-palette theme system, built for datacenter / infrastructure management UIs.",
5
5
  "author": "Serkan Akcelik <serkan.akcelik@gmail.com>",
6
6
  "license": "MIT",
@@ -81,11 +81,6 @@
81
81
  --t4: rgba(255, 255, 255, 0.15);
82
82
  --inv: #0e1015;
83
83
  --acc: #7b9ec8;
84
- --acc-m: rgba(123, 158, 200, 0.12);
85
- --acc-s: rgba(123, 158, 200, 0.06);
86
- --acc50: rgba(123, 158, 200, 0.5);
87
- --acc30: rgba(123, 158, 200, 0.3);
88
- --acc18: rgba(123, 158, 200, 0.18);
89
84
  --success: #7da87e;
90
85
  --success-bg: rgba(125, 168, 126, 0.12);
91
86
  --warning: #bfae6a;
@@ -151,11 +146,6 @@
151
146
  --t4: rgba(0, 0, 0, 0.14);
152
147
  --inv: #ffffff;
153
148
  --acc: #4a6b8f;
154
- --acc-m: rgba(74, 107, 143, 0.1);
155
- --acc-s: rgba(74, 107, 143, 0.05);
156
- --acc50: rgba(74, 107, 143, 0.5);
157
- --acc30: rgba(74, 107, 143, 0.3);
158
- --acc18: rgba(74, 107, 143, 0.18);
159
149
  --success: #4c7a4f;
160
150
  --success-bg: rgba(76, 122, 79, 0.12);
161
151
  --warning: #7d6f30;
@@ -221,11 +211,6 @@
221
211
  --t4: rgba(255, 225, 195, 0.14);
222
212
  --inv: #12100d;
223
213
  --acc: #c49a6c;
224
- --acc-m: rgba(196, 154, 108, 0.12);
225
- --acc-s: rgba(196, 154, 108, 0.06);
226
- --acc50: rgba(196, 154, 108, 0.5);
227
- --acc30: rgba(196, 154, 108, 0.3);
228
- --acc18: rgba(196, 154, 108, 0.18);
229
214
  --success: #8aaa7a;
230
215
  --success-bg: rgba(138, 170, 122, 0.12);
231
216
  --warning: #c4b060;
@@ -291,11 +276,6 @@
291
276
  --t4: rgba(80, 55, 30, 0.14);
292
277
  --inv: #fdfcfa;
293
278
  --acc: #7d5e3f;
294
- --acc-m: rgba(125, 94, 63, 0.1);
295
- --acc-s: rgba(125, 94, 63, 0.05);
296
- --acc50: rgba(125, 94, 63, 0.5);
297
- --acc30: rgba(125, 94, 63, 0.3);
298
- --acc18: rgba(125, 94, 63, 0.18);
299
279
  --success: #4c7a46;
300
280
  --success-bg: rgba(76, 122, 70, 0.12);
301
281
  --warning: #7d6e2c;
@@ -361,11 +341,6 @@
361
341
  --t4: rgba(195, 222, 210, 0.14);
362
342
  --inv: #0d1210;
363
343
  --acc: #7aab90;
364
- --acc-m: rgba(122, 171, 144, 0.12);
365
- --acc-s: rgba(122, 171, 144, 0.06);
366
- --acc50: rgba(122, 171, 144, 0.5);
367
- --acc30: rgba(122, 171, 144, 0.3);
368
- --acc18: rgba(122, 171, 144, 0.18);
369
344
  --success: #82aa82;
370
345
  --success-bg: rgba(130, 170, 130, 0.12);
371
346
  --warning: #b8ac6a;
@@ -431,11 +406,6 @@
431
406
  --t4: rgba(35, 65, 45, 0.14);
432
407
  --inv: #fafcfb;
433
408
  --acc: #3f7355;
434
- --acc-m: rgba(63, 115, 85, 0.1);
435
- --acc-s: rgba(63, 115, 85, 0.05);
436
- --acc50: rgba(63, 115, 85, 0.5);
437
- --acc30: rgba(63, 115, 85, 0.3);
438
- --acc18: rgba(63, 115, 85, 0.18);
439
409
  --success: #467a48;
440
410
  --success-bg: rgba(70, 122, 72, 0.12);
441
411
  --warning: #6f682d;
@@ -474,6 +444,37 @@
474
444
  --disabled-opacity: 0.5;
475
445
  }
476
446
 
447
+ // A product's own accent, independent of the operator's palette (FR-52-03).
448
+ // Every translucent accent tint is derived from --acc rather than written out
449
+ // per palette, so a subtree that sets --acc on a [data-accent] element remaps
450
+ // badges, check marks, links, focus rings and selection fills with it — no
451
+ // second set of tokens, and no component has to know the product's name.
452
+ //
453
+ // [data-accent='backup'] { --acc: #2f8f7a; }
454
+ // [data-theme='dark'] [data-accent='backup'] { --acc: #58b9a3; }
455
+ //
456
+ // The mixes are the values these tokens have always had: 12/6% in dark and
457
+ // 10/5% in light, 50/30/18% in both. The colour is the app's to pick, so its
458
+ // contrast is the app's to check: >= 4.5:1 on --bg-0/1/2 for text and marks,
459
+ // >= 3:1 on --hdr for a line or a chip (the palette's own light accent is
460
+ // 2.67-2.85:1 on its header, which is why a header shade is a second value).
461
+ [data-palette][data-theme='dark'],
462
+ [data-theme='dark'] [data-accent] {
463
+ --acc-m: color-mix(in srgb, var(--acc) 12%, transparent);
464
+ --acc-s: color-mix(in srgb, var(--acc) 6%, transparent);
465
+ --acc50: color-mix(in srgb, var(--acc) 50%, transparent);
466
+ --acc30: color-mix(in srgb, var(--acc) 30%, transparent);
467
+ --acc18: color-mix(in srgb, var(--acc) 18%, transparent);
468
+ }
469
+ [data-palette][data-theme='light'],
470
+ [data-theme='light'] [data-accent] {
471
+ --acc-m: color-mix(in srgb, var(--acc) 10%, transparent);
472
+ --acc-s: color-mix(in srgb, var(--acc) 5%, transparent);
473
+ --acc50: color-mix(in srgb, var(--acc) 50%, transparent);
474
+ --acc30: color-mix(in srgb, var(--acc) 30%, transparent);
475
+ --acc18: color-mix(in srgb, var(--acc) 18%, transparent);
476
+ }
477
+
477
478
  // Honour the OS "increase contrast" preference (low-vision users / bright ambient
478
479
  // light): strengthen borders and lift secondary/tertiary text toward primary.
479
480
  // Only active when the OS asks, so the default look is untouched. Scoped by
@@ -1241,11 +1241,20 @@ declare class StrctCard {
1241
1241
  readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
1242
1242
  /** Allow collapsing to just the header (a chevron appears in the header). */
1243
1243
  readonly collapsible: _angular_core.InputSignalWithTransform<boolean, unknown>;
1244
+ /**
1245
+ * Opt-in: a click anywhere on `strct-card-header` toggles the card, which
1246
+ * is where an operator clicks — the title, not the chevron. A click on an
1247
+ * interactive descendant (a button, a link, a form control) keeps its own,
1248
+ * and so does the chevron, which would otherwise toggle twice and leave the
1249
+ * card closed while the consumer's state said open. The chevron stays the
1250
+ * keyboard control: a header is not a button.
1251
+ */
1252
+ readonly headerToggles: _angular_core.InputSignalWithTransform<boolean, unknown>;
1244
1253
  /** Collapsed state (two-way; only meaningful with `collapsible`). */
1245
1254
  readonly collapsed: _angular_core.ModelSignal<boolean>;
1246
1255
  toggle(): void;
1247
1256
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCard, never>;
1248
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCard, "strct-card", never, { "status": { "alias": "status"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "dense": { "alias": "dense"; "required": false; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["*"], true, never>;
1257
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCard, "strct-card", never, { "status": { "alias": "status"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "dense": { "alias": "dense"; "required": false; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "headerToggles": { "alias": "headerToggles"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["*"], true, never>;
1249
1258
  }
1250
1259
  /** Header section of a {@link StrctCard}. */
1251
1260
  declare class StrctCardHeader {
@@ -1267,6 +1276,14 @@ declare class StrctCardHeader {
1267
1276
  readonly collapseLabel: _angular_core.InputSignal<string>;
1268
1277
  readonly expandLabel: _angular_core.InputSignal<string>;
1269
1278
  protected readonly card: StrctCard | null;
1279
+ /** Only a collapsible card that asked for it toggles from its header. */
1280
+ protected togglesOnClick(): boolean;
1281
+ /**
1282
+ * Anything with a click of its own keeps it — including our own chevron,
1283
+ * whose click would otherwise bubble here and toggle a second time, leaving
1284
+ * the card closed while the consumer's state said open.
1285
+ */
1286
+ protected onHeaderClick(event: MouseEvent): void;
1270
1287
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCardHeader, never>;
1271
1288
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCardHeader, "strct-card-header", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "level": { "alias": "level"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; "isSignal": true; }; "expandLabel": { "alias": "expandLabel"; "required": false; "isSignal": true; }; }, {}, never, ["[strctCardHeaderLeading]", "[strctCardHeaderMeta]", "*", "[strctCardHeaderNote]", "[strctCardHeaderActions]"], true, never>;
1272
1289
  }
@@ -1306,10 +1323,26 @@ declare class StrctAccordion {
1306
1323
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctAccordion, never>;
1307
1324
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctAccordion, "strct-accordion", never, {}, {}, never, ["*"], true, never>;
1308
1325
  }
1326
+ /**
1327
+ * Badges, tags or a result in a panel's header, after the title:
1328
+ * `<strct-badge strctAccordionPanelMeta status="critical">Failed</strct-badge>`.
1329
+ * It is projected into the header but kept **outside** the button, so the
1330
+ * button is still called by its heading alone — the result is read after it,
1331
+ * as the button's description.
1332
+ */
1333
+ declare class StrctAccordionPanelMeta {
1334
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctAccordionPanelMeta, never>;
1335
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrctAccordionPanelMeta, "[strctAccordionPanelMeta]", never, {}, {}, never, never, true, never>;
1336
+ }
1309
1337
  /** Collapsible panel with a header. `expanded` is two-way bindable. */
1310
1338
  declare class StrctAccordionPanel {
1311
1339
  /** Panel heading. */
1312
1340
  readonly heading: _angular_core.InputSignal<string>;
1341
+ /**
1342
+ * A tone rail on the leading edge, as `strct-card [status]` has — the
1343
+ * result of the thing the panel reports, said in colour as well as words.
1344
+ */
1345
+ readonly status: _angular_core.InputSignal<StrctStatus>;
1313
1346
  /** Whether the panel is open (two-way). */
1314
1347
  readonly expanded: _angular_core.ModelSignal<boolean>;
1315
1348
  /**
@@ -1318,11 +1351,14 @@ declare class StrctAccordionPanel {
1318
1351
  * `<details>` while keeping the button + region semantics.
1319
1352
  */
1320
1353
  readonly appearance: _angular_core.InputSignal<"boxed" | "quiet">;
1354
+ /** Whatever a consumer put beside the title, so the button can describe it. */
1355
+ protected readonly meta: _angular_core.Signal<StrctAccordionPanelMeta | undefined>;
1321
1356
  protected readonly bodyId: string;
1322
1357
  protected readonly headId: string;
1358
+ protected readonly metaId: string;
1323
1359
  toggle(): void;
1324
1360
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctAccordionPanel, never>;
1325
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctAccordionPanel, "strct-accordion-panel", never, { "heading": { "alias": "heading"; "required": true; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, never, ["*"], true, never>;
1361
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctAccordionPanel, "strct-accordion-panel", never, { "heading": { "alias": "heading"; "required": true; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, ["meta"], ["[strctAccordionPanelMeta]", "*"], true, never>;
1326
1362
  }
1327
1363
 
1328
1364
  /** A single tab. Place inside `<strct-tabs>`; `label` names its button. */
@@ -2117,7 +2153,7 @@ declare class StrctDropdownItem {
2117
2153
  protected readonly tabindex: _angular_core.Signal<number | null>;
2118
2154
  constructor();
2119
2155
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDropdownItem, never>;
2120
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctDropdownItem, "strct-dropdown-item", never, { "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "critical": { "alias": "critical"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; }, {}, never, ["[strctDropdownItemIcon]", "[strctDropdownItemAction]", "[strctDropdownItemLabel]", "[strctDropdownItemDescription]", "*"], true, never>;
2156
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctDropdownItem, "strct-dropdown-item, a[strctDropdownItem]", never, { "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "critical": { "alias": "critical"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; }, {}, never, ["[strctDropdownItemIcon]", "[strctDropdownItemAction]", "[strctDropdownItemLabel]", "[strctDropdownItemDescription]", "*"], true, never>;
2121
2157
  }
2122
2158
  /**
2123
2159
  * A named group of rows — "Create" above the create actions, where a divider
@@ -8406,5 +8442,79 @@ declare class StrctMarkdown {
8406
8442
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctMarkdown, "strct-markdown", never, { "source": { "alias": "source"; "required": false; "isSignal": true; }; "tree": { "alias": "tree"; "required": false; "isSignal": true; }; "streaming": { "alias": "streaming"; "required": false; "isSignal": true; }; "headingOffset": { "alias": "headingOffset"; "required": false; "isSignal": true; }; "linkPolicy": { "alias": "linkPolicy"; "required": false; "isSignal": true; }; "tokens": { "alias": "tokens"; "required": false; "isSignal": true; }; }, { "navigate": "navigate"; }, ["tokenDefs"], never, true, never>;
8407
8443
  }
8408
8444
 
8409
- export { FOCUSABLE_SELECTOR, STRCT_DP_DOW, STRCT_DP_DOW_FULL, STRCT_DP_MONTHS, STRCT_ICONS, STRCT_ICON_GROUPS, STRCT_ICON_NAMES, STRCT_MASKS, STRCT_MD_LIMITS, STRCT_NOTIFICATION_HISTORY_LIMIT, STRCT_PALETTES, STRCT_RAW_ICONS, STRCT_TIME_RANGE_PRESETS, STRCT_WIZARD_DEFAULTS, StrctAccordion, StrctAccordionPanel, StrctAlert, StrctAlertActions, StrctAnnouncer, StrctAvatar, StrctBadge, StrctBreadcrumb, StrctBreadcrumbItem, StrctButton, StrctButtonGroup, StrctBytesPipe, StrctCard, StrctCardBlock, StrctCardFooter, StrctCardHeader, StrctCardHeaderActions, StrctCardHeaderLeading, StrctCardHeaderMeta, StrctCardHeaderNote, StrctCascadeColumn, StrctCascadeHost, StrctCascadeSelect, StrctCellDef, StrctCellStatus, StrctChange, StrctChart, StrctChatAttachment, StrctChatComposer, StrctChatMessage, StrctChatMessageActions, StrctChatThread, StrctCheckbox, StrctChips, StrctCode, StrctCodeInline, StrctColorPicker, StrctCombobox, StrctCommandPalette, StrctConfirmOutlet, StrctConfirmService, StrctContextMenu, StrctContextMenuTrigger, StrctControlDescription, StrctCopy, StrctDatagrid, StrctDatagridActionBar, StrctDatagridActionBarCaption, StrctDatepicker, StrctDatetimePicker, StrctDesc, StrctDescriptionList, StrctDetailPaneActions, StrctDetailPaneMeta, StrctDetailPaneTitle, StrctDiff, StrctDivider, StrctDonut, StrctDrawer, StrctDrawerFooter, StrctDropdown, StrctDropdownDivider, StrctDropdownGroup, StrctDropdownItem, StrctDropdownItemAction, StrctDropdownItemDescription, StrctDropdownItemIcon, StrctDropdownItemLabel, StrctDropdownTrigger, StrctDurationPipe, StrctEmptyState, StrctField, StrctFieldGroup, StrctFieldHint, StrctFieldPrefix, StrctFieldSuffix, StrctFieldValue, StrctFile, StrctFilterBar, StrctFlow, StrctFlowNodeTemplate, StrctFooter, StrctGauge, StrctGroupHeaderDef, StrctHeader, StrctHeaderAction, StrctHeatmap, StrctHero, StrctHotkeysHelp, StrctHotkeysService, StrctIcon, StrctInlineEdit, StrctInput, StrctInputMask, StrctInputOtp, StrctKbd, StrctKnob, StrctLegend, StrctList, StrctListItem, StrctListItemDescription, StrctListItemLeading, StrctListItemMeta, StrctListItemTrailing, StrctLiveIndicator, StrctLogViewer, StrctLogin, StrctMarkdown, StrctMarkdownToken, StrctMediaFrame, StrctMenuPanel, StrctMenuService, StrctMenubar, StrctMetricTile, StrctModal, StrctModalContent, StrctNav, StrctNavItem, StrctNotificationCenter, StrctNumber, StrctOverlay, StrctPageHeader, StrctPageHeaderActions, StrctPageHeaderCrumbs, StrctPageHeaderTitleMeta, StrctPagination, StrctPassword, StrctPopover, StrctPopoverTrigger, StrctProgress, StrctQr, StrctRadio, StrctRadioGroup, StrctRail, StrctRange, StrctRatePipe, StrctRating, StrctReorder, StrctReorderGroup, StrctReorderHandle, StrctReorderItem, StrctResizeHandle, StrctRowDetailDef, StrctSearchbox, StrctSectionHeader, StrctSectionHeaderActions, StrctSectionHeaderMeta, StrctSectionMenu, StrctSegmented, StrctSelect, StrctShell, StrctShellService, StrctSiPipe, StrctSignpost, StrctSignpostTrigger, StrctSkeleton, StrctSparkline, StrctSpeedDial, StrctSpinner, StrctSplitButton, StrctSplitter, StrctStack, StrctStackItem, StrctStatusDot, StrctStep, StrctStepAction, StrctSteps, StrctSubmenu, StrctTab, StrctTable, StrctTabs, StrctTag, StrctTagLeading, StrctThemeService, StrctThemeSwitcher, StrctTimeRangePicker, StrctTimeline, StrctTimelineItem, StrctToastOutlet, StrctToastService, StrctToggle, StrctToolbar, StrctToolbarCaption, StrctToolbarSpacer, StrctTooltip, StrctTour, StrctTransfer, StrctTree, StrctTreeNode, StrctTreeSelect, StrctVerticalNav, StrctWatermark, StrctWindow, StrctWindowDock, StrctWindowDockItem, StrctWindowService, StrctWizard, StrctWizardAside, __qrInternals, focusFirstIn, keepTabInside, lockBodyScroll, parseAnsi, parseInlines, provideStrctWizardDefaults, registerStrctIcon, restoreFocus, saveFocusedElement, strctCheckHostDisplay, strctCheckHostInputs, strctClassifyHref, strctComputeDiff, strctDpPad, strctFormatBytes, strctFormatDuration, strctFormatRate, strctFormatSi, strctParseMarkdown, strctQrMatrix, strctValidationIcon, strctValidationTone, unlockBodyScroll };
8410
- export type { StrctAlertType, StrctAvatarSize, StrctAvatarStatus, StrctBadgeStatus, StrctButtonSize, StrctButtonVariant, StrctCascadeOption, StrctCellContext, StrctChartAnnotation, StrctChartColor, StrctChartCurve, StrctChartSeries, StrctChartSlot, StrctChartStatus, StrctChartSummaryInfo, StrctChartThreshold, StrctChartType, StrctChatAuthor, StrctColumn, StrctCommandItem, StrctConfirmOptions, StrctConfirmTone, StrctDatagridColumn, StrctDatagridColumnState, StrctDatagridFilters, StrctDatagridGroup, StrctDatagridLabels, StrctDatagridLazyState, StrctDescAlign, StrctDescItem, StrctDiffRow, StrctDonutSegment, StrctDrawerSide, StrctDrawerSize, StrctEmptyVariant, StrctFilterChip, StrctFlowColumn, StrctFlowDirection, StrctFlowEdge, StrctFlowNode, StrctFlowOrientation, StrctHeaderActionConfig, StrctHeatmapCell, StrctHeatmapSummaryInfo, StrctHotkey, StrctIconBadge, StrctIconName, StrctKnobStatus, StrctLegendItem, StrctLiveLabels, StrctLiveState, StrctLogLine, StrctMdAlign, StrctMdBlock, StrctMdInline, StrctMdToken, StrctMdTokenizer, StrctMediaState, StrctMenuItem, StrctMenuLink, StrctMenuOpenOptions, StrctMenuPlacement, StrctMenuSection, StrctMenubarItem, StrctMetricStatus, StrctModalSize, StrctMode, StrctNotification, StrctOption, StrctOverlayPlacement, StrctPalette, StrctPaletteInfo, StrctProgressSegment, StrctProgressStatus, StrctQrEcc, StrctRailItem, StrctRailStatus, StrctReorderEvent, StrctReorderMoveEvent, StrctRow, StrctRowId, StrctSegmentedOption, StrctSegmentedSize, StrctSignpostPosition, StrctSpeedDialDirection, StrctSpinnerSize, StrctStatus, StrctStatusDotSize, StrctStepPhase, StrctStepState, StrctStepsLabels, StrctTagStatus, StrctThresholds, StrctTimeRange, StrctTimeRangePreset, StrctTimelineState, StrctToast, StrctToastOptions, StrctToastType, StrctTooltipPosition, StrctTourStep, StrctTransferItem, StrctTreeDropEvent, StrctTreeMenuEvent, StrctTreeNodeData, StrctTreeNodeMenuFn, StrctValidationState, StrctValidationStatus, StrctWindowBounds, StrctWindowLabels, StrctWindowOutsidePointer, StrctWizardDefaults };
8445
+ /** One product (or platform) a person may switch to. */
8446
+ interface StrctProductItem {
8447
+ /** Stable identity, matched against `current`. */
8448
+ id: string;
8449
+ /** The product's full name — the menu row's label, and what a reader hears. */
8450
+ name: string;
8451
+ /** What the chip shows; the full name when omitted. */
8452
+ label?: string;
8453
+ /**
8454
+ * What the chip shows below `shortLabelWidth`. An icon alone does not say
8455
+ * where you are — "Site Recovery" and "Backup" icons are not self-evident —
8456
+ * while a short word fits. The full name stays in the accessible name.
8457
+ */
8458
+ shortLabel?: string;
8459
+ /** Icon name from the icon set. */
8460
+ icon?: string;
8461
+ /** One line of health under the name ("2 VMs past RPO"). */
8462
+ description?: string;
8463
+ /** The dot beside that line. */
8464
+ status?: StrctStatus;
8465
+ /** The product's own colour (a token or value): the icons take it. */
8466
+ tone?: string;
8467
+ /** Render the row as a real router link (middle-click, a new tab). */
8468
+ routerLink?: string | unknown[];
8469
+ /** Render the row as a plain link. */
8470
+ href?: string;
8471
+ disabled?: boolean;
8472
+ }
8473
+ /**
8474
+ * The product switcher every multi-product console grows: a chip beside the
8475
+ * logo saying where you are, opening the products you may use with a line of
8476
+ * health each, and the platform after a divider.
8477
+ *
8478
+ * <strct-product-switcher
8479
+ * [items]="products" [(current)]="productId" [footerItems]="[admin]"
8480
+ * (opened)="loadHealth()" (select)="go($event)" />
8481
+ *
8482
+ * A person offered one product sees a plain chip, not a menu of one.
8483
+ */
8484
+ declare class StrctProductSwitcher {
8485
+ /** The products this person may switch to. */
8486
+ readonly items: _angular_core.InputSignal<readonly StrctProductItem[]>;
8487
+ /** Entries after a divider — the shared platform, administration. */
8488
+ readonly footerItems: _angular_core.InputSignal<readonly StrctProductItem[]>;
8489
+ /** Which product you are in, two-way. */
8490
+ readonly current: _angular_core.ModelSignal<string | null>;
8491
+ /**
8492
+ * What the chip is for, after the product's name:
8493
+ * "HyperStruct Backup — switch product".
8494
+ */
8495
+ readonly switchLabel: _angular_core.InputSignal<string>;
8496
+ /**
8497
+ * Below this width (px) the chip shows each item's `shortLabel` instead of
8498
+ * its label. The full name stays in the accessible name.
8499
+ */
8500
+ readonly shortLabelWidth: _angular_core.InputSignal<number>;
8501
+ /** The menu has opened — read the health lines now, not before. */
8502
+ readonly opened: _angular_core.OutputEmitterRef<void>;
8503
+ /** A product was chosen (plain activation only, as the rail does). */
8504
+ readonly select: _angular_core.OutputEmitterRef<StrctProductItem>;
8505
+ private readonly menu;
8506
+ private readonly narrow;
8507
+ private wasOpen;
8508
+ /** With one product and nowhere else to go, there is no menu to open. */
8509
+ protected readonly hasMenu: _angular_core.Signal<boolean>;
8510
+ protected readonly currentItem: _angular_core.Signal<StrctProductItem>;
8511
+ protected readonly chipText: _angular_core.Signal<string>;
8512
+ protected readonly chipAriaLabel: _angular_core.Signal<string>;
8513
+ constructor();
8514
+ protected pick(item: StrctProductItem, event?: MouseEvent): void;
8515
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctProductSwitcher, never>;
8516
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctProductSwitcher, "strct-product-switcher", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "footerItems": { "alias": "footerItems"; "required": false; "isSignal": true; }; "current": { "alias": "current"; "required": false; "isSignal": true; }; "switchLabel": { "alias": "switchLabel"; "required": false; "isSignal": true; }; "shortLabelWidth": { "alias": "shortLabelWidth"; "required": false; "isSignal": true; }; }, { "current": "currentChange"; "opened": "opened"; "select": "select"; }, never, never, true, never>;
8517
+ }
8518
+
8519
+ export { FOCUSABLE_SELECTOR, STRCT_DP_DOW, STRCT_DP_DOW_FULL, STRCT_DP_MONTHS, STRCT_ICONS, STRCT_ICON_GROUPS, STRCT_ICON_NAMES, STRCT_MASKS, STRCT_MD_LIMITS, STRCT_NOTIFICATION_HISTORY_LIMIT, STRCT_PALETTES, STRCT_RAW_ICONS, STRCT_TIME_RANGE_PRESETS, STRCT_WIZARD_DEFAULTS, StrctAccordion, StrctAccordionPanel, StrctAccordionPanelMeta, StrctAlert, StrctAlertActions, StrctAnnouncer, StrctAvatar, StrctBadge, StrctBreadcrumb, StrctBreadcrumbItem, StrctButton, StrctButtonGroup, StrctBytesPipe, StrctCard, StrctCardBlock, StrctCardFooter, StrctCardHeader, StrctCardHeaderActions, StrctCardHeaderLeading, StrctCardHeaderMeta, StrctCardHeaderNote, StrctCascadeColumn, StrctCascadeHost, StrctCascadeSelect, StrctCellDef, StrctCellStatus, StrctChange, StrctChart, StrctChatAttachment, StrctChatComposer, StrctChatMessage, StrctChatMessageActions, StrctChatThread, StrctCheckbox, StrctChips, StrctCode, StrctCodeInline, StrctColorPicker, StrctCombobox, StrctCommandPalette, StrctConfirmOutlet, StrctConfirmService, StrctContextMenu, StrctContextMenuTrigger, StrctControlDescription, StrctCopy, StrctDatagrid, StrctDatagridActionBar, StrctDatagridActionBarCaption, StrctDatepicker, StrctDatetimePicker, StrctDesc, StrctDescriptionList, StrctDetailPaneActions, StrctDetailPaneMeta, StrctDetailPaneTitle, StrctDiff, StrctDivider, StrctDonut, StrctDrawer, StrctDrawerFooter, StrctDropdown, StrctDropdownDivider, StrctDropdownGroup, StrctDropdownItem, StrctDropdownItemAction, StrctDropdownItemDescription, StrctDropdownItemIcon, StrctDropdownItemLabel, StrctDropdownTrigger, StrctDurationPipe, StrctEmptyState, StrctField, StrctFieldGroup, StrctFieldHint, StrctFieldPrefix, StrctFieldSuffix, StrctFieldValue, StrctFile, StrctFilterBar, StrctFlow, StrctFlowNodeTemplate, StrctFooter, StrctGauge, StrctGroupHeaderDef, StrctHeader, StrctHeaderAction, StrctHeatmap, StrctHero, StrctHotkeysHelp, StrctHotkeysService, StrctIcon, StrctInlineEdit, StrctInput, StrctInputMask, StrctInputOtp, StrctKbd, StrctKnob, StrctLegend, StrctList, StrctListItem, StrctListItemDescription, StrctListItemLeading, StrctListItemMeta, StrctListItemTrailing, StrctLiveIndicator, StrctLogViewer, StrctLogin, StrctMarkdown, StrctMarkdownToken, StrctMediaFrame, StrctMenuPanel, StrctMenuService, StrctMenubar, StrctMetricTile, StrctModal, StrctModalContent, StrctNav, StrctNavItem, StrctNotificationCenter, StrctNumber, StrctOverlay, StrctPageHeader, StrctPageHeaderActions, StrctPageHeaderCrumbs, StrctPageHeaderTitleMeta, StrctPagination, StrctPassword, StrctPopover, StrctPopoverTrigger, StrctProductSwitcher, StrctProgress, StrctQr, StrctRadio, StrctRadioGroup, StrctRail, StrctRange, StrctRatePipe, StrctRating, StrctReorder, StrctReorderGroup, StrctReorderHandle, StrctReorderItem, StrctResizeHandle, StrctRowDetailDef, StrctSearchbox, StrctSectionHeader, StrctSectionHeaderActions, StrctSectionHeaderMeta, StrctSectionMenu, StrctSegmented, StrctSelect, StrctShell, StrctShellService, StrctSiPipe, StrctSignpost, StrctSignpostTrigger, StrctSkeleton, StrctSparkline, StrctSpeedDial, StrctSpinner, StrctSplitButton, StrctSplitter, StrctStack, StrctStackItem, StrctStatusDot, StrctStep, StrctStepAction, StrctSteps, StrctSubmenu, StrctTab, StrctTable, StrctTabs, StrctTag, StrctTagLeading, StrctThemeService, StrctThemeSwitcher, StrctTimeRangePicker, StrctTimeline, StrctTimelineItem, StrctToastOutlet, StrctToastService, StrctToggle, StrctToolbar, StrctToolbarCaption, StrctToolbarSpacer, StrctTooltip, StrctTour, StrctTransfer, StrctTree, StrctTreeNode, StrctTreeSelect, StrctVerticalNav, StrctWatermark, StrctWindow, StrctWindowDock, StrctWindowDockItem, StrctWindowService, StrctWizard, StrctWizardAside, __qrInternals, focusFirstIn, keepTabInside, lockBodyScroll, parseAnsi, parseInlines, provideStrctWizardDefaults, registerStrctIcon, restoreFocus, saveFocusedElement, strctCheckHostDisplay, strctCheckHostInputs, strctClassifyHref, strctComputeDiff, strctDpPad, strctFormatBytes, strctFormatDuration, strctFormatRate, strctFormatSi, strctParseMarkdown, strctQrMatrix, strctValidationIcon, strctValidationTone, unlockBodyScroll };
8520
+ export type { StrctAlertType, StrctAvatarSize, StrctAvatarStatus, StrctBadgeStatus, StrctButtonSize, StrctButtonVariant, StrctCascadeOption, StrctCellContext, StrctChartAnnotation, StrctChartColor, StrctChartCurve, StrctChartSeries, StrctChartSlot, StrctChartStatus, StrctChartSummaryInfo, StrctChartThreshold, StrctChartType, StrctChatAuthor, StrctColumn, StrctCommandItem, StrctConfirmOptions, StrctConfirmTone, StrctDatagridColumn, StrctDatagridColumnState, StrctDatagridFilters, StrctDatagridGroup, StrctDatagridLabels, StrctDatagridLazyState, StrctDescAlign, StrctDescItem, StrctDiffRow, StrctDonutSegment, StrctDrawerSide, StrctDrawerSize, StrctEmptyVariant, StrctFilterChip, StrctFlowColumn, StrctFlowDirection, StrctFlowEdge, StrctFlowNode, StrctFlowOrientation, StrctHeaderActionConfig, StrctHeatmapCell, StrctHeatmapSummaryInfo, StrctHotkey, StrctIconBadge, StrctIconName, StrctKnobStatus, StrctLegendItem, StrctLiveLabels, StrctLiveState, StrctLogLine, StrctMdAlign, StrctMdBlock, StrctMdInline, StrctMdToken, StrctMdTokenizer, StrctMediaState, StrctMenuItem, StrctMenuLink, StrctMenuOpenOptions, StrctMenuPlacement, StrctMenuSection, StrctMenubarItem, StrctMetricStatus, StrctModalSize, StrctMode, StrctNotification, StrctOption, StrctOverlayPlacement, StrctPalette, StrctPaletteInfo, StrctProductItem, StrctProgressSegment, StrctProgressStatus, StrctQrEcc, StrctRailItem, StrctRailStatus, StrctReorderEvent, StrctReorderMoveEvent, StrctRow, StrctRowId, StrctSegmentedOption, StrctSegmentedSize, StrctSignpostPosition, StrctSpeedDialDirection, StrctSpinnerSize, StrctStatus, StrctStatusDotSize, StrctStepPhase, StrctStepState, StrctStepsLabels, StrctTagStatus, StrctThresholds, StrctTimeRange, StrctTimeRangePreset, StrctTimelineState, StrctToast, StrctToastOptions, StrctToastType, StrctTooltipPosition, StrctTourStep, StrctTransferItem, StrctTreeDropEvent, StrctTreeMenuEvent, StrctTreeNodeData, StrctTreeNodeMenuFn, StrctValidationState, StrctValidationStatus, StrctWindowBounds, StrctWindowLabels, StrctWindowOutsidePointer, StrctWizardDefaults };