@akcelik/strct 1.19.0 → 1.20.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.
@@ -7469,6 +7469,331 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
7469
7469
  args: ['document:click', ['$event']]
7470
7470
  }] } });
7471
7471
 
7472
+ let selectCounter = 0;
7473
+ /**
7474
+ * Select-only combobox (APG pattern): a real button trigger wearing the shared
7475
+ * `.strct-control` look, opening a token-styled listbox — so the option list
7476
+ * matches the theme instead of the OS popup a native `<select>` shows.
7477
+ * CVA-compatible; options are non-filterable (reach for `strct-combobox` when
7478
+ * the list needs typing to narrow).
7479
+ *
7480
+ * <strct-field label="Region">
7481
+ * <strct-select [options]="regions" [(ngModel)]="region" placeholder="Pick a region" />
7482
+ * </strct-field>
7483
+ *
7484
+ * Keyboard follows the native select: ArrowDown/Up and Enter/Space open,
7485
+ * arrows move (skipping disabled options), Home/End jump, typing jumps to the
7486
+ * matching label (typeahead), Enter/Space commit, Escape/Tab close without
7487
+ * committing. The selected option carries a leading ✓ and gets the highlight
7488
+ * when reopening — the same select ergonomics as `strct-dropdown-item
7489
+ * [selected]`.
7490
+ */
7491
+ class StrctSelect {
7492
+ host = inject(ElementRef);
7493
+ listId = `strct-sel-${++selectCounter}`;
7494
+ /** Available options (set `disabled: true` on an option to gray it out). */
7495
+ options = input([], ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
7496
+ /** Muted text shown while no value is selected (localizable). */
7497
+ placeholder = input('Select…', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
7498
+ /** Accessible name of the listbox (localizable). */
7499
+ listLabel = input('', ...(ngDevMode ? [{ debugName: "listLabel" }] : /* istanbul ignore next */ []));
7500
+ /** Text shown when `options` is empty (localizable). */
7501
+ emptyText = input('No options', ...(ngDevMode ? [{ debugName: "emptyText" }] : /* istanbul ignore next */ []));
7502
+ /** Static disable flag (forms also drive it via setDisabledState). */
7503
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
7504
+ value = signal(null, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
7505
+ open = signal(false, ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
7506
+ activeIndex = signal(0, ...(ngDevMode ? [{ debugName: "activeIndex" }] : /* istanbul ignore next */ []));
7507
+ isDisabled = signal(false, ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
7508
+ selectedOption = computed(() => this.options().find((o) => o.value === this.value()), ...(ngDevMode ? [{ debugName: "selectedOption" }] : /* istanbul ignore next */ []));
7509
+ /** Typeahead buffer — clears half a second after the last keystroke. */
7510
+ typed = '';
7511
+ typedTimer = null;
7512
+ onChange = () => { };
7513
+ onTouched = () => { };
7514
+ toggle() {
7515
+ if (this.open())
7516
+ this.close();
7517
+ else
7518
+ this.openList();
7519
+ }
7520
+ openList() {
7521
+ if (this.isDisabled() || this.disabled())
7522
+ return;
7523
+ this.open.set(true);
7524
+ this.activeIndex.set(this.initialIndex());
7525
+ this.scrollActiveIntoView();
7526
+ }
7527
+ close() {
7528
+ this.open.set(false);
7529
+ }
7530
+ onKeydown(event) {
7531
+ const key = event.key;
7532
+ const opts = this.options();
7533
+ if (key === 'ArrowDown' || key === 'ArrowUp') {
7534
+ event.preventDefault();
7535
+ if (!this.open())
7536
+ return this.openList();
7537
+ this.move(key === 'ArrowDown' ? 1 : -1);
7538
+ }
7539
+ else if (key === 'Home' || key === 'End') {
7540
+ if (!this.open())
7541
+ return;
7542
+ event.preventDefault();
7543
+ this.moveTo(key === 'Home' ? 0 : opts.length - 1, key === 'Home' ? 1 : -1);
7544
+ }
7545
+ else if (key === 'Enter' || key === ' ') {
7546
+ event.preventDefault();
7547
+ if (!this.open())
7548
+ return this.openList();
7549
+ const opt = opts[this.activeIndex()];
7550
+ if (opt && !opt.disabled)
7551
+ this.commit(opt);
7552
+ }
7553
+ else if (key === 'Escape') {
7554
+ if (this.open()) {
7555
+ event.preventDefault();
7556
+ this.close();
7557
+ }
7558
+ }
7559
+ else if (key === 'Tab') {
7560
+ this.close();
7561
+ }
7562
+ else if (key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {
7563
+ this.typeahead(key);
7564
+ }
7565
+ }
7566
+ /**
7567
+ * Native-select typeahead: letters accumulate into a prefix that jumps to
7568
+ * the matching label; repeating one letter cycles its matches instead.
7569
+ */
7570
+ typeahead(char) {
7571
+ const lower = char.toLowerCase();
7572
+ if (this.typedTimer)
7573
+ clearTimeout(this.typedTimer);
7574
+ this.typedTimer = setTimeout(() => (this.typed = ''), 500);
7575
+ const repeatCycle = this.typed.length > 0 && [...this.typed].every((c) => c === lower);
7576
+ this.typed += lower;
7577
+ const prefix = repeatCycle ? lower : this.typed;
7578
+ const opts = this.options();
7579
+ if (!opts.length)
7580
+ return;
7581
+ const wasOpen = this.open();
7582
+ if (!wasOpen)
7583
+ this.openList();
7584
+ const from = this.activeIndex();
7585
+ for (let step = repeatCycle || !wasOpen ? 1 : 0; step <= opts.length; step++) {
7586
+ const i = (from + step) % opts.length;
7587
+ const opt = opts[i];
7588
+ if (!opt.disabled && opt.label.toLowerCase().startsWith(prefix)) {
7589
+ this.activeIndex.set(i);
7590
+ this.scrollActiveIntoView();
7591
+ return;
7592
+ }
7593
+ }
7594
+ }
7595
+ move(delta) {
7596
+ const opts = this.options();
7597
+ if (!opts.length)
7598
+ return;
7599
+ let i = this.activeIndex();
7600
+ let guard = opts.length;
7601
+ do {
7602
+ i = (i + delta + opts.length) % opts.length;
7603
+ } while (opts[i].disabled && --guard > 0);
7604
+ this.activeIndex.set(i);
7605
+ this.scrollActiveIntoView();
7606
+ }
7607
+ /** Jump to `index`, walking `dir` past disabled options. */
7608
+ moveTo(index, dir) {
7609
+ const opts = this.options();
7610
+ let i = index;
7611
+ for (let n = 0; n < opts.length && opts[i]?.disabled; n++) {
7612
+ i = (i + dir + opts.length) % opts.length;
7613
+ }
7614
+ if (opts[i] && !opts[i].disabled) {
7615
+ this.activeIndex.set(i);
7616
+ this.scrollActiveIntoView();
7617
+ }
7618
+ }
7619
+ pick(opt, event) {
7620
+ event.preventDefault(); // keep focus on the trigger button
7621
+ if (opt.disabled)
7622
+ return;
7623
+ this.commit(opt);
7624
+ }
7625
+ commit(opt) {
7626
+ this.value.set(opt.value);
7627
+ this.close();
7628
+ this.onChange(opt.value);
7629
+ this.onTouched();
7630
+ }
7631
+ onBlur() {
7632
+ // Any mousedown inside the list preventDefaults, so focus never leaves
7633
+ // the trigger mid-interaction; outside clicks close via onDocClick and
7634
+ // Tab closes in onKeydown — blur only marks the control touched.
7635
+ this.onTouched();
7636
+ }
7637
+ /** Highlight starts on the selected option — or the first enabled one. */
7638
+ initialIndex() {
7639
+ const opts = this.options();
7640
+ const sel = opts.findIndex((o) => o.value === this.value() && !o.disabled);
7641
+ if (sel >= 0)
7642
+ return sel;
7643
+ const first = opts.findIndex((o) => !o.disabled);
7644
+ return first < 0 ? 0 : first;
7645
+ }
7646
+ scrollActiveIntoView() {
7647
+ setTimeout(() => {
7648
+ document
7649
+ .getElementById(`${this.listId}-${this.activeIndex()}`)
7650
+ ?.scrollIntoView({ block: 'nearest' });
7651
+ });
7652
+ }
7653
+ onDocClick(event) {
7654
+ if (this.open() && !this.host.nativeElement.contains(event.target)) {
7655
+ this.close();
7656
+ }
7657
+ }
7658
+ writeValue(value) {
7659
+ this.value.set(value);
7660
+ }
7661
+ registerOnChange(fn) {
7662
+ this.onChange = fn;
7663
+ }
7664
+ registerOnTouched(fn) {
7665
+ this.onTouched = fn;
7666
+ }
7667
+ setDisabledState(isDisabled) {
7668
+ this.isDisabled.set(isDisabled);
7669
+ }
7670
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: StrctSelect, deps: [], target: i0.ɵɵFactoryTarget.Component });
7671
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: StrctSelect, isStandalone: true, selector: "strct-select", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, listLabel: { classPropertyName: "listLabel", publicName: "listLabel", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:click": "onDocClick($event)" }, classAttribute: "strct-sel" }, providers: [
7672
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => StrctSelect), multi: true },
7673
+ ], ngImport: i0, template: `
7674
+ <button
7675
+ #btn
7676
+ type="button"
7677
+ strctField
7678
+ class="strct-control strct-sel__btn"
7679
+ role="combobox"
7680
+ aria-haspopup="listbox"
7681
+ [attr.aria-expanded]="open()"
7682
+ [attr.aria-controls]="open() ? listId : null"
7683
+ [attr.aria-activedescendant]="open() ? listId + '-' + activeIndex() : null"
7684
+ [disabled]="isDisabled() || disabled()"
7685
+ (click)="toggle()"
7686
+ (keydown)="onKeydown($event)"
7687
+ (blur)="onBlur()"
7688
+ >
7689
+ <span class="strct-sel__value" [class.strct-sel__value--placeholder]="!selectedOption()">
7690
+ {{ selectedOption()?.label ?? placeholder() }}
7691
+ </span>
7692
+ <strct-icon class="strct-sel__caret" strictName="chevronDown" [size]="14" />
7693
+ </button>
7694
+ @if (open()) {
7695
+ <div
7696
+ class="strct-sel__list"
7697
+ role="listbox"
7698
+ [id]="listId"
7699
+ [attr.aria-label]="listLabel() || null"
7700
+ [strctOverlay]="btn"
7701
+ strctOverlayPlacement="bottom-start"
7702
+ [strctOverlayMatchWidth]="true"
7703
+ (mousedown)="$event.preventDefault()"
7704
+ >
7705
+ @for (opt of options(); track opt.value; let i = $index) {
7706
+ <div
7707
+ class="strct-sel__opt"
7708
+ [id]="listId + '-' + i"
7709
+ [class.strct-sel__opt--highlight]="i === activeIndex()"
7710
+ [class.strct-sel__opt--selected]="opt.value === value()"
7711
+ role="option"
7712
+ [attr.aria-selected]="opt.value === value()"
7713
+ [attr.aria-disabled]="opt.disabled || null"
7714
+ (mousedown)="pick(opt, $event)"
7715
+ (mousemove)="!opt.disabled && activeIndex.set(i)"
7716
+ >
7717
+ <span class="strct-sel__check" aria-hidden="true">
7718
+ @if (opt.value === value()) {
7719
+ <strct-icon strictName="check" [size]="12" [strokeWidth]="1.8" />
7720
+ }
7721
+ </span>
7722
+ {{ opt.label }}
7723
+ </div>
7724
+ } @empty {
7725
+ <div class="strct-sel__empty">{{ emptyText() }}</div>
7726
+ }
7727
+ </div>
7728
+ }
7729
+ `, isInline: true, styles: [".strct-sel{position:relative;display:block;width:100%}.strct-sel__btn{display:flex;align-items:center;gap:8px;text-align:start;cursor:pointer}.strct-sel__btn:disabled{cursor:not-allowed}.strct-sel__value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.strct-sel__value--placeholder{color:var(--t3)}.strct-sel__caret{flex:none;color:var(--t3)}.strct-sel__list{z-index:200;max-height:240px;overflow-y:auto;padding:4px;background:var(--bg-1);border:1px solid var(--b2);border-radius:7px;box-shadow:var(--shh)}.strct-sel__opt{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:5px;cursor:pointer;font-size:13px;color:var(--t1)}.strct-sel__opt--highlight{background:var(--bg-3)}.strct-sel__opt--selected{font-weight:600;background:var(--acc-s)}.strct-sel__opt--selected.strct-sel__opt--highlight{background:var(--acc-m)}.strct-sel__opt[aria-disabled=true]{color:var(--t4);cursor:default}.strct-sel__check{display:inline-flex;width:14px;flex:none;color:var(--acc)}.strct-sel__empty{padding:9px 10px;font-size:13px;color:var(--t3)}\n"], dependencies: [{ kind: "component", type: StrctIcon, selector: "strct-icon", inputs: ["name", "strictName", "size", "strokeWidth", "badge", "ariaLabel"] }, { kind: "directive", type: StrctOverlay, selector: "[strctOverlay]", inputs: ["strctOverlay", "strctOverlayPlacement", "strctOverlayMatchWidth", "strctOverlayGap"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
7730
+ }
7731
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: StrctSelect, decorators: [{
7732
+ type: Component,
7733
+ args: [{ selector: 'strct-select', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [StrctIcon, StrctOverlay], providers: [
7734
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => StrctSelect), multi: true },
7735
+ ], template: `
7736
+ <button
7737
+ #btn
7738
+ type="button"
7739
+ strctField
7740
+ class="strct-control strct-sel__btn"
7741
+ role="combobox"
7742
+ aria-haspopup="listbox"
7743
+ [attr.aria-expanded]="open()"
7744
+ [attr.aria-controls]="open() ? listId : null"
7745
+ [attr.aria-activedescendant]="open() ? listId + '-' + activeIndex() : null"
7746
+ [disabled]="isDisabled() || disabled()"
7747
+ (click)="toggle()"
7748
+ (keydown)="onKeydown($event)"
7749
+ (blur)="onBlur()"
7750
+ >
7751
+ <span class="strct-sel__value" [class.strct-sel__value--placeholder]="!selectedOption()">
7752
+ {{ selectedOption()?.label ?? placeholder() }}
7753
+ </span>
7754
+ <strct-icon class="strct-sel__caret" strictName="chevronDown" [size]="14" />
7755
+ </button>
7756
+ @if (open()) {
7757
+ <div
7758
+ class="strct-sel__list"
7759
+ role="listbox"
7760
+ [id]="listId"
7761
+ [attr.aria-label]="listLabel() || null"
7762
+ [strctOverlay]="btn"
7763
+ strctOverlayPlacement="bottom-start"
7764
+ [strctOverlayMatchWidth]="true"
7765
+ (mousedown)="$event.preventDefault()"
7766
+ >
7767
+ @for (opt of options(); track opt.value; let i = $index) {
7768
+ <div
7769
+ class="strct-sel__opt"
7770
+ [id]="listId + '-' + i"
7771
+ [class.strct-sel__opt--highlight]="i === activeIndex()"
7772
+ [class.strct-sel__opt--selected]="opt.value === value()"
7773
+ role="option"
7774
+ [attr.aria-selected]="opt.value === value()"
7775
+ [attr.aria-disabled]="opt.disabled || null"
7776
+ (mousedown)="pick(opt, $event)"
7777
+ (mousemove)="!opt.disabled && activeIndex.set(i)"
7778
+ >
7779
+ <span class="strct-sel__check" aria-hidden="true">
7780
+ @if (opt.value === value()) {
7781
+ <strct-icon strictName="check" [size]="12" [strokeWidth]="1.8" />
7782
+ }
7783
+ </span>
7784
+ {{ opt.label }}
7785
+ </div>
7786
+ } @empty {
7787
+ <div class="strct-sel__empty">{{ emptyText() }}</div>
7788
+ }
7789
+ </div>
7790
+ }
7791
+ `, host: { class: 'strct-sel' }, styles: [".strct-sel{position:relative;display:block;width:100%}.strct-sel__btn{display:flex;align-items:center;gap:8px;text-align:start;cursor:pointer}.strct-sel__btn:disabled{cursor:not-allowed}.strct-sel__value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.strct-sel__value--placeholder{color:var(--t3)}.strct-sel__caret{flex:none;color:var(--t3)}.strct-sel__list{z-index:200;max-height:240px;overflow-y:auto;padding:4px;background:var(--bg-1);border:1px solid var(--b2);border-radius:7px;box-shadow:var(--shh)}.strct-sel__opt{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:5px;cursor:pointer;font-size:13px;color:var(--t1)}.strct-sel__opt--highlight{background:var(--bg-3)}.strct-sel__opt--selected{font-weight:600;background:var(--acc-s)}.strct-sel__opt--selected.strct-sel__opt--highlight{background:var(--acc-m)}.strct-sel__opt[aria-disabled=true]{color:var(--t4);cursor:default}.strct-sel__check{display:inline-flex;width:14px;flex:none;color:var(--acc)}.strct-sel__empty{padding:9px 10px;font-size:13px;color:var(--t3)}\n"] }]
7792
+ }], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], listLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "listLabel", required: false }] }], emptyText: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyText", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], onDocClick: [{
7793
+ type: HostListener,
7794
+ args: ['document:click', ['$event']]
7795
+ }] } });
7796
+
7472
7797
  const MONTHS = [
7473
7798
  'January',
7474
7799
  'February',
@@ -15992,5 +16317,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
15992
16317
  * Generated bundle index. Do not edit.
15993
16318
  */
15994
16319
 
15995
- export { STRCT_ICONS, STRCT_ICON_GROUPS, STRCT_ICON_NAMES, STRCT_MASKS, STRCT_PALETTES, STRCT_RAW_ICONS, STRCT_TIME_RANGE_PRESETS, STRCT_WIZARD_DEFAULTS, StrctAccordion, StrctAccordionPanel, StrctAlert, StrctAnnouncer, StrctAvatar, StrctBadge, StrctBreadcrumb, StrctBreadcrumbItem, StrctButton, StrctButtonGroup, StrctBytesPipe, StrctCard, StrctCardBlock, StrctCardFooter, StrctCardHeader, StrctCascadeHost, StrctCascadeNode, StrctCascadeSelect, StrctCellDef, StrctCellStatus, StrctChart, StrctCheckbox, StrctChips, StrctCode, StrctColorPicker, StrctCombobox, StrctCommandPalette, StrctContextMenu, StrctContextMenuTrigger, StrctCopy, StrctDatagrid, StrctDatagridActionBar, StrctDatepicker, StrctDesc, StrctDescriptionList, StrctDiff, StrctDivider, StrctDonut, StrctDrawer, StrctDrawerFooter, StrctDropdown, StrctDropdownDivider, StrctDropdownItem, StrctDropdownTrigger, StrctDurationPipe, StrctEmptyState, StrctField, StrctFile, StrctFilterBar, StrctFlow, StrctFooter, StrctGauge, StrctHeader, StrctHero, StrctHotkeysHelp, StrctHotkeysService, StrctIcon, StrctInput, StrctInputMask, StrctInputOtp, StrctKbd, StrctKnob, StrctLogViewer, StrctLogin, StrctMenuPanel, StrctMenuService, StrctMenubar, StrctMetricTile, StrctModal, StrctNav, StrctNavItem, StrctOverlay, StrctPageHeader, StrctPageHeaderActions, StrctPageHeaderCrumbs, StrctPagination, StrctPassword, StrctProgress, StrctRadio, StrctRadioGroup, StrctRail, StrctRange, StrctRatePipe, StrctRating, StrctReorder, StrctReorderItem, StrctRowDetailDef, StrctSearchbox, StrctSectionMenu, StrctSegmented, StrctShell, StrctShellService, StrctSiPipe, StrctSignpost, StrctSkeleton, StrctSparkline, StrctSpeedDial, StrctSpinner, StrctSplitButton, StrctSplitter, StrctStack, StrctStackItem, StrctStep, StrctSubmenu, StrctTab, StrctTable, StrctTabs, StrctTag, StrctThemeService, StrctThemeSwitcher, StrctTimeRangePicker, StrctTimeline, StrctTimelineItem, StrctToastOutlet, StrctToastService, StrctToggle, StrctTooltip, StrctTour, StrctTransfer, StrctTree, StrctTreeNode, StrctVerticalNav, StrctWatermark, StrctWizard, StrctWizardAside, parseAnsi, provideStrctWizardDefaults, registerStrctIcon, strctComputeDiff, strctFormatBytes, strctFormatDuration, strctFormatRate, strctFormatSi, strctValidationIcon, strctValidationTone };
16320
+ export { STRCT_ICONS, STRCT_ICON_GROUPS, STRCT_ICON_NAMES, STRCT_MASKS, STRCT_PALETTES, STRCT_RAW_ICONS, STRCT_TIME_RANGE_PRESETS, STRCT_WIZARD_DEFAULTS, StrctAccordion, StrctAccordionPanel, StrctAlert, StrctAnnouncer, StrctAvatar, StrctBadge, StrctBreadcrumb, StrctBreadcrumbItem, StrctButton, StrctButtonGroup, StrctBytesPipe, StrctCard, StrctCardBlock, StrctCardFooter, StrctCardHeader, StrctCascadeHost, StrctCascadeNode, StrctCascadeSelect, StrctCellDef, StrctCellStatus, StrctChart, StrctCheckbox, StrctChips, StrctCode, StrctColorPicker, StrctCombobox, StrctCommandPalette, StrctContextMenu, StrctContextMenuTrigger, StrctCopy, StrctDatagrid, StrctDatagridActionBar, StrctDatepicker, StrctDesc, StrctDescriptionList, StrctDiff, StrctDivider, StrctDonut, StrctDrawer, StrctDrawerFooter, StrctDropdown, StrctDropdownDivider, StrctDropdownItem, StrctDropdownTrigger, StrctDurationPipe, StrctEmptyState, StrctField, StrctFile, StrctFilterBar, StrctFlow, StrctFooter, StrctGauge, StrctHeader, StrctHero, StrctHotkeysHelp, StrctHotkeysService, StrctIcon, StrctInput, StrctInputMask, StrctInputOtp, StrctKbd, StrctKnob, StrctLogViewer, StrctLogin, StrctMenuPanel, StrctMenuService, StrctMenubar, StrctMetricTile, StrctModal, StrctNav, StrctNavItem, StrctOverlay, StrctPageHeader, StrctPageHeaderActions, StrctPageHeaderCrumbs, StrctPagination, StrctPassword, StrctProgress, StrctRadio, StrctRadioGroup, StrctRail, StrctRange, StrctRatePipe, StrctRating, StrctReorder, StrctReorderItem, StrctRowDetailDef, StrctSearchbox, StrctSectionMenu, StrctSegmented, StrctSelect, StrctShell, StrctShellService, StrctSiPipe, StrctSignpost, StrctSkeleton, StrctSparkline, StrctSpeedDial, StrctSpinner, StrctSplitButton, StrctSplitter, StrctStack, StrctStackItem, StrctStep, StrctSubmenu, StrctTab, StrctTable, StrctTabs, StrctTag, StrctThemeService, StrctThemeSwitcher, StrctTimeRangePicker, StrctTimeline, StrctTimelineItem, StrctToastOutlet, StrctToastService, StrctToggle, StrctTooltip, StrctTour, StrctTransfer, StrctTree, StrctTreeNode, StrctVerticalNav, StrctWatermark, StrctWizard, StrctWizardAside, parseAnsi, provideStrctWizardDefaults, registerStrctIcon, strctComputeDiff, strctFormatBytes, strctFormatDuration, strctFormatRate, strctFormatSi, strctValidationIcon, strctValidationTone };
15996
16321
  //# sourceMappingURL=akcelik-strct.mjs.map