@akcelik/strct 5.14.0 → 5.15.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.
@@ -1135,7 +1135,7 @@ class StrctDropdown {
1135
1135
  const target = event.target;
1136
1136
  if (target?.closest('.strct-dd__itemaction'))
1137
1137
  return; // the second action is not the item
1138
- const item = target?.closest('strct-dropdown-item');
1138
+ const item = target?.closest(DD_ITEM);
1139
1139
  if (item && item.getAttribute('aria-disabled') !== 'true')
1140
1140
  this.close(true);
1141
1141
  }
@@ -1183,14 +1183,14 @@ class StrctDropdown {
1183
1183
  onItemActionKey(event, key) {
1184
1184
  const target = event.target;
1185
1185
  if (key === 'ArrowLeft') {
1186
- const item = target.closest('strct-dropdown-item');
1186
+ const item = target.closest(DD_ITEM);
1187
1187
  if (!target.classList.contains('strct-dd__itemaction') || !item)
1188
1188
  return;
1189
1189
  event.preventDefault();
1190
1190
  item.focus();
1191
1191
  return;
1192
1192
  }
1193
- const item = target.closest('strct-dropdown-item');
1193
+ const item = target.closest(DD_ITEM);
1194
1194
  const action = item?.querySelector('.strct-dd__itemaction');
1195
1195
  if (!item || item !== target || !action)
1196
1196
  return;
@@ -1202,7 +1202,9 @@ class StrctDropdown {
1202
1202
  }
1203
1203
  enabledItems() {
1204
1204
  return [
1205
- ...this.host.nativeElement.querySelectorAll('strct-dropdown-item:not([aria-disabled="true"]), strct-submenu .strct-submenu__trigger'),
1205
+ ...this.host.nativeElement.querySelectorAll(`${DD_ITEM.split(', ')
1206
+ .map((sel) => `${sel}:not([aria-disabled="true"])`)
1207
+ .join(', ')}, strct-submenu .strct-submenu__trigger`),
1206
1208
  ];
1207
1209
  }
1208
1210
  /** What the arrow keys visit: enabled items, plus disabled ones that carry a
@@ -1210,7 +1212,7 @@ class StrctDropdown {
1210
1212
  navItems() {
1211
1213
  const host = this.host.nativeElement;
1212
1214
  const rows = [
1213
- ...host.querySelectorAll('strct-dropdown-item'),
1215
+ ...host.querySelectorAll(DD_ITEM),
1214
1216
  ...host.querySelectorAll('strct-submenu .strct-submenu__trigger'),
1215
1217
  ].filter((el) => el.getAttribute('aria-disabled') !== 'true' ||
1216
1218
  el.classList.contains('strct-dd__item--hinted'));
@@ -1414,6 +1416,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
1414
1416
  host: { class: 'strct-dd__itemdesc' },
1415
1417
  }]
1416
1418
  }] });
1419
+ /**
1420
+ * The two forms a menu row can take. `a[strctDropdownItem]` is the one for a
1421
+ * row that goes somewhere: a real link (middle-click, ⌘-click, open in a new
1422
+ * tab, copy address) wearing the menu's semantics.
1423
+ */
1424
+ const DD_ITEM = 'strct-dropdown-item, a[strctDropdownItem]';
1417
1425
  class StrctDropdownItem {
1418
1426
  /**
1419
1427
  * Select-like usage: bind `selected` and the item becomes a
@@ -1475,7 +1483,7 @@ class StrctDropdownItem {
1475
1483
  }, { capture: true });
1476
1484
  }
1477
1485
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctDropdownItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
1478
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: StrctDropdownItem, isStandalone: true, selector: "strct-dropdown-item", inputs: { selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, critical: { classPropertyName: "critical", publicName: "critical", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.role": "selected() === null ? 'menuitem' : 'menuitemradio'", "attr.aria-checked": "selected()", "attr.tabindex": "tabindex()", "attr.title": "hint() || null", "attr.aria-describedby": "hint() ? hintId : null", "class.strct-dd__item--hinted": "!!hint()", "class.strct-dd__item--critical": "critical()", "class.strct-dd__item--selected": "selected() === true", "attr.aria-disabled": "disabled() || null" }, classAttribute: "strct-dd__item" }, ngImport: i0, template: `@if (selected() !== null) {
1486
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: StrctDropdownItem, isStandalone: true, selector: "strct-dropdown-item, a[strctDropdownItem]", inputs: { selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, critical: { classPropertyName: "critical", publicName: "critical", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.role": "selected() === null ? 'menuitem' : 'menuitemradio'", "attr.aria-checked": "selected()", "attr.tabindex": "tabindex()", "attr.title": "hint() || null", "attr.aria-describedby": "hint() ? hintId : null", "class.strct-dd__item--hinted": "!!hint()", "class.strct-dd__item--critical": "critical()", "class.strct-dd__item--selected": "selected() === true", "attr.aria-disabled": "disabled() || null" }, classAttribute: "strct-dd__item" }, ngImport: i0, template: `@if (selected() !== null) {
1479
1487
  <span class="strct-dd__check" aria-hidden="true">
1480
1488
  @if (selected()) {
1481
1489
  <strct-icon strictName="check" [size]="12" [strokeWidth]="1.8" />
@@ -1500,7 +1508,7 @@ class StrctDropdownItem {
1500
1508
  }
1501
1509
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctDropdownItem, decorators: [{
1502
1510
  type: Component,
1503
- args: [{ selector: 'strct-dropdown-item', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [StrctIcon], template: `@if (selected() !== null) {
1511
+ args: [{ selector: 'strct-dropdown-item, a[strctDropdownItem]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [StrctIcon], template: `@if (selected() !== null) {
1504
1512
  <span class="strct-dd__check" aria-hidden="true">
1505
1513
  @if (selected()) {
1506
1514
  <strct-icon strictName="check" [size]="12" [strokeWidth]="1.8" />
@@ -1876,7 +1884,7 @@ class StrctHeader {
1876
1884
  }
1877
1885
  </span>
1878
1886
  }
1879
- `, isInline: true, styles: [".strct-vnav__backdrop{position:fixed;inset:0;z-index:calc(var(--z-nav) - 1);background:var(--backdrop);animation:strct-vnav-backdrop-in .2s ease}@media(min-width:769px){.strct-vnav__backdrop{display:none}}@keyframes strct-vnav-backdrop-in{0%{opacity:0}to{opacity:1}}.strct-header{display:flex;align-items:center;gap:var(--strct-header-gap, 14px);height:56px;padding:0 var(--strct-header-pad, 18px);background:var(--hdr);border-bottom:1px solid var(--b2);color:var(--hdr-fg)}.strct-header--accent{box-shadow:inset 0 -3px 0 var(--strct-header-accent, var(--acc))}.strct-header__actions{display:flex;align-items:center;gap:inherit;min-width:0}.strct-header__more{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:0;border-radius:var(--radius-sm);background:transparent;color:inherit;cursor:pointer}.strct-header__more:hover{background:#ffffff1f}.strct-header__moreslot{display:flex;align-items:center;padding:6px 10px}.strct-header__morecmd{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;padding:9px 10px;border:0;border-radius:5px;background:transparent;color:var(--t1);font-size:13px;font-family:var(--font);text-align:start;cursor:pointer}.strct-header__morecmd:hover,.strct-header__morecmd:focus-visible{background:var(--bg-3);outline:none}@media(max-width:600px){.strct-header{gap:var(--strct-header-gap, 4px);padding:0 var(--strct-header-pad, 6px)}}.strct-header .strct-btn--flat:not(.strct-modal__dialog *,.strct-drawer *,.strct-popover__panel *,.strct-dd__menu *,.strct-tour__card *){color:color-mix(in srgb,var(--hdr-fg) 72%,transparent)}.strct-header .strct-btn--flat:not(.strct-modal__dialog *,.strct-drawer *,.strct-popover__panel *,.strct-dd__menu *,.strct-tour__card *):hover:not(:disabled){background:color-mix(in srgb,var(--hdr-fg) 12%,transparent);color:var(--hdr-fg)}.strct-header .strct-btn--flat:not(.strct-modal__dialog *,.strct-drawer *,.strct-popover__panel *,.strct-dd__menu *,.strct-tour__card *):focus-visible{outline-color:color-mix(in srgb,var(--hdr-fg) 60%,transparent)}.strct-header__drawer-toggle{display:none;align-items:center;justify-content:center;padding:4px;border:0;border-radius:5px;background:transparent;color:color-mix(in srgb,var(--hdr-fg) 85%,transparent);cursor:pointer}.strct-header__drawer-toggle:hover{background:#ffffff1f;color:var(--hdr-fg)}@media(max-width:768px){.strct-header__drawer-toggle{display:inline-flex}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: StrctIcon, selector: "strct-icon", inputs: ["name", "strictName", "size", "strokeWidth", "badge", "ariaLabel", "count", "countMax", "countStatus", "countLabel"] }, { kind: "component", type: StrctDropdown, selector: "strct-dropdown", inputs: ["align", "popover", "popoverLabel", "focusable"] }, { kind: "directive", type: StrctDropdownTrigger, selector: "[strctDropdownTrigger]" }, { kind: "component", type: StrctDropdownItem, selector: "strct-dropdown-item", inputs: ["selected", "critical", "disabled", "hint"] }, { kind: "directive", type: StrctDropdownItemIcon, selector: "[strctDropdownItemIcon]", inputs: ["tone"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1887
+ `, isInline: true, styles: [".strct-vnav__backdrop{position:fixed;inset:0;z-index:calc(var(--z-nav) - 1);background:var(--backdrop);animation:strct-vnav-backdrop-in .2s ease}@media(min-width:769px){.strct-vnav__backdrop{display:none}}@keyframes strct-vnav-backdrop-in{0%{opacity:0}to{opacity:1}}.strct-header{display:flex;align-items:center;gap:var(--strct-header-gap, 14px);height:56px;padding:0 var(--strct-header-pad, 18px);background:var(--hdr);border-bottom:1px solid var(--b2);color:var(--hdr-fg)}.strct-header--accent{box-shadow:inset 0 -3px 0 var(--strct-header-accent, var(--acc))}.strct-header__actions{display:flex;align-items:center;gap:inherit;min-width:0}.strct-header__more{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:0;border-radius:var(--radius-sm);background:transparent;color:inherit;cursor:pointer}.strct-header__more:hover{background:#ffffff1f}.strct-header__moreslot{display:flex;align-items:center;padding:6px 10px}.strct-header__morecmd{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;padding:9px 10px;border:0;border-radius:5px;background:transparent;color:var(--t1);font-size:13px;font-family:var(--font);text-align:start;cursor:pointer}.strct-header__morecmd:hover,.strct-header__morecmd:focus-visible{background:var(--bg-3);outline:none}@media(max-width:600px){.strct-header{gap:var(--strct-header-gap, 4px);padding:0 var(--strct-header-pad, 6px)}}.strct-header .strct-btn--flat:not(.strct-modal__dialog *,.strct-drawer *,.strct-popover__panel *,.strct-dd__menu *,.strct-tour__card *){color:color-mix(in srgb,var(--hdr-fg) 72%,transparent)}.strct-header .strct-btn--flat:not(.strct-modal__dialog *,.strct-drawer *,.strct-popover__panel *,.strct-dd__menu *,.strct-tour__card *):hover:not(:disabled){background:color-mix(in srgb,var(--hdr-fg) 12%,transparent);color:var(--hdr-fg)}.strct-header .strct-btn--flat:not(.strct-modal__dialog *,.strct-drawer *,.strct-popover__panel *,.strct-dd__menu *,.strct-tour__card *):focus-visible{outline-color:color-mix(in srgb,var(--hdr-fg) 60%,transparent)}.strct-header__drawer-toggle{display:none;align-items:center;justify-content:center;padding:4px;border:0;border-radius:5px;background:transparent;color:color-mix(in srgb,var(--hdr-fg) 85%,transparent);cursor:pointer}.strct-header__drawer-toggle:hover{background:#ffffff1f;color:var(--hdr-fg)}@media(max-width:768px){.strct-header__drawer-toggle{display:inline-flex}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: StrctIcon, selector: "strct-icon", inputs: ["name", "strictName", "size", "strokeWidth", "badge", "ariaLabel", "count", "countMax", "countStatus", "countLabel"] }, { kind: "component", type: StrctDropdown, selector: "strct-dropdown", inputs: ["align", "popover", "popoverLabel", "focusable"] }, { kind: "directive", type: StrctDropdownTrigger, selector: "[strctDropdownTrigger]" }, { kind: "component", type: StrctDropdownItem, selector: "strct-dropdown-item, a[strctDropdownItem]", inputs: ["selected", "critical", "disabled", "hint"] }, { kind: "directive", type: StrctDropdownItemIcon, selector: "[strctDropdownItemIcon]", inputs: ["tone"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1880
1888
  }
1881
1889
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctHeader, decorators: [{
1882
1890
  type: Component,
@@ -6762,7 +6770,9 @@ class StrctSubmenu {
6762
6770
  panelItems() {
6763
6771
  const panel = this.panel()?.nativeElement;
6764
6772
  return panel
6765
- ? [...panel.querySelectorAll('strct-dropdown-item')].filter((i) => i.getAttribute('aria-disabled') !== 'true' ||
6773
+ ? [
6774
+ ...panel.querySelectorAll('strct-dropdown-item, a[strctDropdownItem]'),
6775
+ ].filter((i) => i.getAttribute('aria-disabled') !== 'true' ||
6766
6776
  i.classList.contains('strct-dd__item--hinted'))
6767
6777
  : [];
6768
6778
  }
@@ -23657,7 +23667,7 @@ class StrctSplitButton {
23657
23667
  }
23658
23668
  </strct-dropdown>
23659
23669
  </div>
23660
- `, isInline: true, styles: [".strct-sbt{display:inline-flex;align-items:stretch}.strct-sbt .strct-dd{display:inline-flex;align-self:stretch}.strct-sbt .strct-dd__trigger{display:inline-flex;align-items:stretch}.strct-sbt__chev{align-self:stretch;height:100%}.strct-sbt__main,.strct-sbt__chev{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--acc);background:transparent;color:var(--acc);font-family:var(--font);font-size:13px;font-weight:600;line-height:1;cursor:pointer;padding:var(--space-2) var(--space-4)}.strct-sbt__main{border-start-start-radius:var(--radius-md);border-end-start-radius:var(--radius-md);border-inline-end:0}.strct-sbt__chev{padding:var(--space-2);border-start-end-radius:var(--radius-md);border-end-end-radius:var(--radius-md);border-inline-start:1px solid var(--acc50)}.strct-sbt--solid .strct-sbt__main,.strct-sbt--solid .strct-sbt__chev{background:var(--acc);color:var(--inv)}.strct-sbt--solid .strct-sbt__chev{border-inline-start-color:color-mix(in srgb,var(--inv) 30%,var(--acc))}.strct-sbt__main:hover:not(:disabled),.strct-sbt__chev:hover:not(:disabled){background:var(--acc18)}.strct-sbt--solid .strct-sbt__main:hover:not(:disabled),.strct-sbt--solid .strct-sbt__chev:hover:not(:disabled){filter:brightness(1.08);background:var(--acc)}.strct-sbt__main:disabled,.strct-sbt__chev:disabled{opacity:.5;cursor:default}.strct-sbt__main:focus-visible,.strct-sbt__chev:focus-visible{outline:2px solid var(--acc50);outline-offset:1px;position:relative;z-index:var(--z-base)}\n"], dependencies: [{ kind: "component", type: StrctDropdown, selector: "strct-dropdown", inputs: ["align", "popover", "popoverLabel", "focusable"] }, { kind: "component", type: StrctDropdownDivider, selector: "strct-dropdown-divider" }, { kind: "component", type: StrctDropdownItem, selector: "strct-dropdown-item", inputs: ["selected", "critical", "disabled", "hint"] }, { kind: "directive", type: StrctDropdownTrigger, selector: "[strctDropdownTrigger]" }, { kind: "component", type: StrctIcon, selector: "strct-icon", inputs: ["name", "strictName", "size", "strokeWidth", "badge", "ariaLabel", "count", "countMax", "countStatus", "countLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
23670
+ `, isInline: true, styles: [".strct-sbt{display:inline-flex;align-items:stretch}.strct-sbt .strct-dd{display:inline-flex;align-self:stretch}.strct-sbt .strct-dd__trigger{display:inline-flex;align-items:stretch}.strct-sbt__chev{align-self:stretch;height:100%}.strct-sbt__main,.strct-sbt__chev{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--acc);background:transparent;color:var(--acc);font-family:var(--font);font-size:13px;font-weight:600;line-height:1;cursor:pointer;padding:var(--space-2) var(--space-4)}.strct-sbt__main{border-start-start-radius:var(--radius-md);border-end-start-radius:var(--radius-md);border-inline-end:0}.strct-sbt__chev{padding:var(--space-2);border-start-end-radius:var(--radius-md);border-end-end-radius:var(--radius-md);border-inline-start:1px solid var(--acc50)}.strct-sbt--solid .strct-sbt__main,.strct-sbt--solid .strct-sbt__chev{background:var(--acc);color:var(--inv)}.strct-sbt--solid .strct-sbt__chev{border-inline-start-color:color-mix(in srgb,var(--inv) 30%,var(--acc))}.strct-sbt__main:hover:not(:disabled),.strct-sbt__chev:hover:not(:disabled){background:var(--acc18)}.strct-sbt--solid .strct-sbt__main:hover:not(:disabled),.strct-sbt--solid .strct-sbt__chev:hover:not(:disabled){filter:brightness(1.08);background:var(--acc)}.strct-sbt__main:disabled,.strct-sbt__chev:disabled{opacity:.5;cursor:default}.strct-sbt__main:focus-visible,.strct-sbt__chev:focus-visible{outline:2px solid var(--acc50);outline-offset:1px;position:relative;z-index:var(--z-base)}\n"], dependencies: [{ kind: "component", type: StrctDropdown, selector: "strct-dropdown", inputs: ["align", "popover", "popoverLabel", "focusable"] }, { kind: "component", type: StrctDropdownDivider, selector: "strct-dropdown-divider" }, { kind: "component", type: StrctDropdownItem, selector: "strct-dropdown-item, a[strctDropdownItem]", inputs: ["selected", "critical", "disabled", "hint"] }, { kind: "directive", type: StrctDropdownTrigger, selector: "[strctDropdownTrigger]" }, { kind: "component", type: StrctIcon, selector: "strct-icon", inputs: ["name", "strictName", "size", "strokeWidth", "badge", "ariaLabel", "count", "countMax", "countStatus", "countLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
23661
23671
  }
23662
23672
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctSplitButton, decorators: [{
23663
23673
  type: Component,
@@ -30083,6 +30093,307 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
30083
30093
  `, host: { class: 'strct-md' }, styles: [".strct-md{display:block;color:var(--t1);font-size:13px;line-height:1.55}.strct-md__p{margin:0 0 var(--space-2)}.strct-md__p:last-child{margin-bottom:0}.strct-md__h{margin:var(--space-3) 0 var(--space-2);font-size:14px;font-weight:600;color:var(--t1)}.strct-md__h:first-child{margin-top:0}.strct-md__list{margin:0 0 var(--space-2);padding-inline-start:20px}.strct-md__list li{margin-block:2px}.strct-md__quote{margin:0 0 var(--space-2);padding-inline-start:var(--space-3);border-inline-start:2px solid var(--b2);color:var(--t2)}.strct-md__rule{border:0;border-block-start:1px solid var(--b1);margin:var(--space-3) 0}.strct-md__codespan{font-family:var(--mono);font-size:.92em;background:var(--bg-2);border-radius:var(--radius-sm);padding:1px 4px}.strct-md__code{margin-block-end:var(--space-2)}.strct-md__link{color:var(--acc)}.strct-md__ext{margin-inline-start:2px;vertical-align:-1px}.strct-md__tablewrap{overflow-x:auto;margin-block-end:var(--space-2)}.strct-md__table{border-collapse:collapse;width:max-content;min-width:100%}.strct-md__table th,.strct-md__table td{border:1px solid var(--b1);padding:4px 8px;text-align:start}.strct-md__table th{background:var(--bg-2);font-weight:600}.strct-md__caret{display:inline-block;width:2px;height:1em;margin-inline-start:2px;vertical-align:-2px;background:var(--acc);animation:strct-md-caret 1s steps(2) infinite}@keyframes strct-md-caret{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.strct-md__caret{animation:none}}\n"] }]
30084
30094
  }], propDecorators: { source: [{ type: i0.Input, args: [{ isSignal: true, alias: "source", required: false }] }], tree: [{ type: i0.Input, args: [{ isSignal: true, alias: "tree", required: false }] }], streaming: [{ type: i0.Input, args: [{ isSignal: true, alias: "streaming", required: false }] }], headingOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "headingOffset", required: false }] }], linkPolicy: [{ type: i0.Input, args: [{ isSignal: true, alias: "linkPolicy", required: false }] }], tokens: [{ type: i0.Input, args: [{ isSignal: true, alias: "tokens", required: false }] }], navigate: [{ type: i0.Output, args: ["navigate"] }], tokenDefs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => StrctMarkdownToken), { isSignal: true }] }] } });
30085
30095
 
30096
+ /**
30097
+ * The product switcher every multi-product console grows: a chip beside the
30098
+ * logo saying where you are, opening the products you may use with a line of
30099
+ * health each, and the platform after a divider.
30100
+ *
30101
+ * <strct-product-switcher
30102
+ * [items]="products" [(current)]="productId" [footerItems]="[admin]"
30103
+ * (opened)="loadHealth()" (select)="go($event)" />
30104
+ *
30105
+ * A person offered one product sees a plain chip, not a menu of one.
30106
+ */
30107
+ class StrctProductSwitcher {
30108
+ /** The products this person may switch to. */
30109
+ items = input([], /* @ts-ignore */
30110
+ ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
30111
+ /** Entries after a divider — the shared platform, administration. */
30112
+ footerItems = input([], /* @ts-ignore */
30113
+ ...(ngDevMode ? [{ debugName: "footerItems" }] : /* istanbul ignore next */ []));
30114
+ /** Which product you are in, two-way. */
30115
+ current = model(null, /* @ts-ignore */
30116
+ ...(ngDevMode ? [{ debugName: "current" }] : /* istanbul ignore next */ []));
30117
+ /**
30118
+ * What the chip is for, after the product's name:
30119
+ * "HyperStruct Backup — switch product".
30120
+ */
30121
+ switchLabel = input('switch product', /* @ts-ignore */
30122
+ ...(ngDevMode ? [{ debugName: "switchLabel" }] : /* istanbul ignore next */ []));
30123
+ /**
30124
+ * Below this width (px) the chip shows each item's `shortLabel` instead of
30125
+ * its label. The full name stays in the accessible name.
30126
+ */
30127
+ shortLabelWidth = input(600, /* @ts-ignore */
30128
+ ...(ngDevMode ? [{ debugName: "shortLabelWidth" }] : /* istanbul ignore next */ []));
30129
+ /** The menu has opened — read the health lines now, not before. */
30130
+ opened = output();
30131
+ /** A product was chosen (plain activation only, as the rail does). */
30132
+ select = output();
30133
+ menu = viewChild('menu', /* @ts-ignore */
30134
+ ...(ngDevMode ? [{ debugName: "menu" }] : /* istanbul ignore next */ []));
30135
+ narrow = signal(false, /* @ts-ignore */
30136
+ ...(ngDevMode ? [{ debugName: "narrow" }] : /* istanbul ignore next */ []));
30137
+ wasOpen = false;
30138
+ /** With one product and nowhere else to go, there is no menu to open. */
30139
+ hasMenu = computed(() => this.items().length + this.footerItems().length > 1, /* @ts-ignore */
30140
+ ...(ngDevMode ? [{ debugName: "hasMenu" }] : /* istanbul ignore next */ []));
30141
+ currentItem = computed(() => [...this.items(), ...this.footerItems()].find((i) => i.id === this.current()) ??
30142
+ this.items()[0] ??
30143
+ null, /* @ts-ignore */
30144
+ ...(ngDevMode ? [{ debugName: "currentItem" }] : /* istanbul ignore next */ []));
30145
+ chipText = computed(() => {
30146
+ const item = this.currentItem();
30147
+ if (!item)
30148
+ return '';
30149
+ const full = item.label ?? item.name;
30150
+ return this.narrow() ? (item.shortLabel ?? full) : full;
30151
+ }, /* @ts-ignore */
30152
+ ...(ngDevMode ? [{ debugName: "chipText" }] : /* istanbul ignore next */ []));
30153
+ chipAriaLabel = computed(() => {
30154
+ const item = this.currentItem();
30155
+ if (!item)
30156
+ return this.switchLabel();
30157
+ return `${item.name} — ${this.switchLabel()}`;
30158
+ }, /* @ts-ignore */
30159
+ ...(ngDevMode ? [{ debugName: "chipAriaLabel" }] : /* istanbul ignore next */ []));
30160
+ constructor() {
30161
+ // The short label is a width question, and a width question the component
30162
+ // has to answer in script: the text it draws changes, not only its size.
30163
+ effect((onCleanup) => {
30164
+ const px = this.shortLabelWidth();
30165
+ if (typeof matchMedia !== 'function')
30166
+ return;
30167
+ const query = matchMedia(`(max-width: ${px}px)`);
30168
+ const update = () => this.narrow.set(query.matches);
30169
+ update();
30170
+ query.addEventListener('change', update);
30171
+ onCleanup(() => query.removeEventListener('change', update));
30172
+ });
30173
+ // (opened) fires once per opening, so an app can fetch the health lines
30174
+ // then — the menu never waits for them.
30175
+ effect(() => {
30176
+ const open = this.menu()?.open() ?? false;
30177
+ if (open && !this.wasOpen)
30178
+ this.opened.emit();
30179
+ this.wasOpen = open;
30180
+ });
30181
+ }
30182
+ pick(item, event) {
30183
+ if (item.disabled)
30184
+ return;
30185
+ // A modified or non-primary click on a link is the browser's — a new tab,
30186
+ // a copied address — and must not switch the product here.
30187
+ if (event &&
30188
+ (item.routerLink != null || item.href) &&
30189
+ (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey)) {
30190
+ return;
30191
+ }
30192
+ this.current.set(item.id);
30193
+ this.select.emit(item);
30194
+ }
30195
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctProductSwitcher, deps: [], target: i0.ɵɵFactoryTarget.Component });
30196
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: StrctProductSwitcher, isStandalone: true, selector: "strct-product-switcher", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, footerItems: { classPropertyName: "footerItems", publicName: "footerItems", isSignal: true, isRequired: false, transformFunction: null }, current: { classPropertyName: "current", publicName: "current", isSignal: true, isRequired: false, transformFunction: null }, switchLabel: { classPropertyName: "switchLabel", publicName: "switchLabel", isSignal: true, isRequired: false, transformFunction: null }, shortLabelWidth: { classPropertyName: "shortLabelWidth", publicName: "shortLabelWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { current: "currentChange", opened: "opened", select: "select" }, host: { classAttribute: "strct-ps" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["menu"], descendants: true, isSignal: true }], ngImport: i0, template: `
30197
+ <!-- What a row holds, whichever element carries it. -->
30198
+ <ng-template #rowBody let-item>
30199
+ @if (item.icon) {
30200
+ <strct-icon strctDropdownItemIcon [tone]="item.tone ?? ''" [name]="item.icon" [size]="16" />
30201
+ }
30202
+ <span strctDropdownItemLabel>{{ item.name }}</span>
30203
+ @if (item.description) {
30204
+ <span strctDropdownItemDescription>
30205
+ @if (item.status) {
30206
+ <strct-status-dot [status]="item.status" />
30207
+ }
30208
+ {{ item.description }}
30209
+ </span>
30210
+ }
30211
+ </ng-template>
30212
+
30213
+ <!-- A row is a link where the product has an address, so it can be opened
30214
+ in a new tab — and a menuitemradio either way, checked on the one you
30215
+ are in. -->
30216
+ <ng-template #row let-item>
30217
+ @if (item.routerLink !== null && item.routerLink !== undefined && !item.disabled) {
30218
+ <a
30219
+ strctDropdownItem
30220
+ [routerLink]="item.routerLink"
30221
+ [selected]="item.id === current()"
30222
+ (click)="pick(item, $event)"
30223
+ >
30224
+ <ng-container *ngTemplateOutlet="rowBody; context: { $implicit: item }" />
30225
+ </a>
30226
+ } @else if (item.href && !item.disabled) {
30227
+ <a
30228
+ strctDropdownItem
30229
+ [href]="item.href"
30230
+ [selected]="item.id === current()"
30231
+ (click)="pick(item, $event)"
30232
+ >
30233
+ <ng-container *ngTemplateOutlet="rowBody; context: { $implicit: item }" />
30234
+ </a>
30235
+ } @else {
30236
+ <strct-dropdown-item
30237
+ [selected]="item.id === current()"
30238
+ [disabled]="!!item.disabled"
30239
+ (click)="pick(item)"
30240
+ >
30241
+ <ng-container *ngTemplateOutlet="rowBody; context: { $implicit: item }" />
30242
+ </strct-dropdown-item>
30243
+ }
30244
+ </ng-template>
30245
+
30246
+ @if (hasMenu()) {
30247
+ <strct-dropdown #menu align="start">
30248
+ <button
30249
+ type="button"
30250
+ class="strct-ps__chip"
30251
+ strctDropdownTrigger
30252
+ [attr.aria-label]="chipAriaLabel()"
30253
+ >
30254
+ <ng-container *ngTemplateOutlet="chipBody" />
30255
+ <strct-icon class="strct-ps__chevron" name="chevronDown" [size]="13" />
30256
+ </button>
30257
+ @for (item of items(); track item.id) {
30258
+ <ng-container *ngTemplateOutlet="row; context: { $implicit: item }" />
30259
+ }
30260
+ @if (footerItems().length) {
30261
+ <strct-dropdown-divider />
30262
+ @for (item of footerItems(); track item.id) {
30263
+ <ng-container *ngTemplateOutlet="row; context: { $implicit: item }" />
30264
+ }
30265
+ }
30266
+ </strct-dropdown>
30267
+ } @else {
30268
+ <!-- One product: a chip that says where you are, not a menu of one. -->
30269
+ <span class="strct-ps__chip strct-ps__chip--plain">
30270
+ <ng-container *ngTemplateOutlet="chipBody" />
30271
+ </span>
30272
+ }
30273
+
30274
+ <ng-template #chipBody>
30275
+ @if (currentItem(); as item) {
30276
+ @if (item.icon) {
30277
+ <strct-icon
30278
+ class="strct-ps__icon"
30279
+ [name]="item.icon"
30280
+ [size]="16"
30281
+ [style.color]="item.tone || null"
30282
+ />
30283
+ }
30284
+ <span class="strct-ps__label">{{ chipText() }}</span>
30285
+ }
30286
+ </ng-template>
30287
+ `, isInline: true, styles: [".strct-ps{display:inline-flex;align-items:center;min-width:0}.strct-ps__chip{display:inline-flex;align-items:center;gap:7px;max-width:100%;padding:5px 8px;border:1px solid var(--b2);border-radius:var(--radius-sm);background:transparent;color:inherit;font:inherit;font-size:13px;font-weight:600;cursor:pointer}.strct-ps__chip:hover{background:#ffffff14}.strct-ps__chip--plain{cursor:default;border-color:transparent}.strct-ps__chip--plain:hover{background:transparent}.strct-ps__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.strct-ps__icon{flex:none}.strct-ps__chevron{flex:none;opacity:.7}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "component", type: StrctIcon, selector: "strct-icon", inputs: ["name", "strictName", "size", "strokeWidth", "badge", "ariaLabel", "count", "countMax", "countStatus", "countLabel"] }, { kind: "component", type: StrctStatusDot, selector: "strct-status-dot", inputs: ["status", "label", "size", "pulse", "variant"] }, { kind: "component", type: StrctDropdown, selector: "strct-dropdown", inputs: ["align", "popover", "popoverLabel", "focusable"] }, { kind: "directive", type: StrctDropdownTrigger, selector: "[strctDropdownTrigger]" }, { kind: "component", type: StrctDropdownItem, selector: "strct-dropdown-item, a[strctDropdownItem]", inputs: ["selected", "critical", "disabled", "hint"] }, { kind: "directive", type: StrctDropdownItemIcon, selector: "[strctDropdownItemIcon]", inputs: ["tone"] }, { kind: "directive", type: StrctDropdownItemLabel, selector: "[strctDropdownItemLabel]" }, { kind: "directive", type: StrctDropdownItemDescription, selector: "[strctDropdownItemDescription]" }, { kind: "component", type: StrctDropdownDivider, selector: "strct-dropdown-divider" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
30288
+ }
30289
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctProductSwitcher, decorators: [{
30290
+ type: Component,
30291
+ args: [{ selector: 'strct-product-switcher', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
30292
+ NgTemplateOutlet,
30293
+ RouterLink,
30294
+ StrctIcon,
30295
+ StrctStatusDot,
30296
+ StrctDropdown,
30297
+ StrctDropdownTrigger,
30298
+ StrctDropdownItem,
30299
+ StrctDropdownItemIcon,
30300
+ StrctDropdownItemLabel,
30301
+ StrctDropdownItemDescription,
30302
+ StrctDropdownDivider,
30303
+ ], template: `
30304
+ <!-- What a row holds, whichever element carries it. -->
30305
+ <ng-template #rowBody let-item>
30306
+ @if (item.icon) {
30307
+ <strct-icon strctDropdownItemIcon [tone]="item.tone ?? ''" [name]="item.icon" [size]="16" />
30308
+ }
30309
+ <span strctDropdownItemLabel>{{ item.name }}</span>
30310
+ @if (item.description) {
30311
+ <span strctDropdownItemDescription>
30312
+ @if (item.status) {
30313
+ <strct-status-dot [status]="item.status" />
30314
+ }
30315
+ {{ item.description }}
30316
+ </span>
30317
+ }
30318
+ </ng-template>
30319
+
30320
+ <!-- A row is a link where the product has an address, so it can be opened
30321
+ in a new tab — and a menuitemradio either way, checked on the one you
30322
+ are in. -->
30323
+ <ng-template #row let-item>
30324
+ @if (item.routerLink !== null && item.routerLink !== undefined && !item.disabled) {
30325
+ <a
30326
+ strctDropdownItem
30327
+ [routerLink]="item.routerLink"
30328
+ [selected]="item.id === current()"
30329
+ (click)="pick(item, $event)"
30330
+ >
30331
+ <ng-container *ngTemplateOutlet="rowBody; context: { $implicit: item }" />
30332
+ </a>
30333
+ } @else if (item.href && !item.disabled) {
30334
+ <a
30335
+ strctDropdownItem
30336
+ [href]="item.href"
30337
+ [selected]="item.id === current()"
30338
+ (click)="pick(item, $event)"
30339
+ >
30340
+ <ng-container *ngTemplateOutlet="rowBody; context: { $implicit: item }" />
30341
+ </a>
30342
+ } @else {
30343
+ <strct-dropdown-item
30344
+ [selected]="item.id === current()"
30345
+ [disabled]="!!item.disabled"
30346
+ (click)="pick(item)"
30347
+ >
30348
+ <ng-container *ngTemplateOutlet="rowBody; context: { $implicit: item }" />
30349
+ </strct-dropdown-item>
30350
+ }
30351
+ </ng-template>
30352
+
30353
+ @if (hasMenu()) {
30354
+ <strct-dropdown #menu align="start">
30355
+ <button
30356
+ type="button"
30357
+ class="strct-ps__chip"
30358
+ strctDropdownTrigger
30359
+ [attr.aria-label]="chipAriaLabel()"
30360
+ >
30361
+ <ng-container *ngTemplateOutlet="chipBody" />
30362
+ <strct-icon class="strct-ps__chevron" name="chevronDown" [size]="13" />
30363
+ </button>
30364
+ @for (item of items(); track item.id) {
30365
+ <ng-container *ngTemplateOutlet="row; context: { $implicit: item }" />
30366
+ }
30367
+ @if (footerItems().length) {
30368
+ <strct-dropdown-divider />
30369
+ @for (item of footerItems(); track item.id) {
30370
+ <ng-container *ngTemplateOutlet="row; context: { $implicit: item }" />
30371
+ }
30372
+ }
30373
+ </strct-dropdown>
30374
+ } @else {
30375
+ <!-- One product: a chip that says where you are, not a menu of one. -->
30376
+ <span class="strct-ps__chip strct-ps__chip--plain">
30377
+ <ng-container *ngTemplateOutlet="chipBody" />
30378
+ </span>
30379
+ }
30380
+
30381
+ <ng-template #chipBody>
30382
+ @if (currentItem(); as item) {
30383
+ @if (item.icon) {
30384
+ <strct-icon
30385
+ class="strct-ps__icon"
30386
+ [name]="item.icon"
30387
+ [size]="16"
30388
+ [style.color]="item.tone || null"
30389
+ />
30390
+ }
30391
+ <span class="strct-ps__label">{{ chipText() }}</span>
30392
+ }
30393
+ </ng-template>
30394
+ `, host: { class: 'strct-ps' }, styles: [".strct-ps{display:inline-flex;align-items:center;min-width:0}.strct-ps__chip{display:inline-flex;align-items:center;gap:7px;max-width:100%;padding:5px 8px;border:1px solid var(--b2);border-radius:var(--radius-sm);background:transparent;color:inherit;font:inherit;font-size:13px;font-weight:600;cursor:pointer}.strct-ps__chip:hover{background:#ffffff14}.strct-ps__chip--plain{cursor:default;border-color:transparent}.strct-ps__chip--plain:hover{background:transparent}.strct-ps__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.strct-ps__icon{flex:none}.strct-ps__chevron{flex:none;opacity:.7}\n"] }]
30395
+ }], ctorParameters: () => [], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], footerItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "footerItems", required: false }] }], current: [{ type: i0.Input, args: [{ isSignal: true, alias: "current", required: false }] }, { type: i0.Output, args: ["currentChange"] }], switchLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "switchLabel", required: false }] }], shortLabelWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "shortLabelWidth", required: false }] }], opened: [{ type: i0.Output, args: ["opened"] }], select: [{ type: i0.Output, args: ["select"] }], menu: [{ type: i0.ViewChild, args: ['menu', { isSignal: true }] }] } });
30396
+
30086
30397
  /**
30087
30398
  * Public API surface of the strct UI library.
30088
30399
  */
@@ -30092,5 +30403,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
30092
30403
  * Generated bundle index. Do not edit.
30093
30404
  */
30094
30405
 
30095
- 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 };
30406
+ 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, 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 };
30096
30407
  //# sourceMappingURL=akcelik-strct.mjs.map