@redvars/peacock 3.3.2 → 3.4.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.
Files changed (160) hide show
  1. package/dist/IndividualComponent-DUINtMGK.js +67 -0
  2. package/dist/IndividualComponent-DUINtMGK.js.map +1 -0
  3. package/dist/assets/images/empty-state/no-document.svg +11 -12
  4. package/dist/assets/images/empty-state/page.svg +15 -9
  5. package/dist/bottom-sheet.js +238 -0
  6. package/dist/bottom-sheet.js.map +1 -0
  7. package/dist/{button-ClzS8JLq.js → button-COYCtuA8.js} +306 -149
  8. package/dist/button-COYCtuA8.js.map +1 -0
  9. package/dist/button-group-DsXquZQn.js +440 -0
  10. package/dist/button-group-DsXquZQn.js.map +1 -0
  11. package/dist/button-group.js +6 -4
  12. package/dist/button-group.js.map +1 -1
  13. package/dist/button.js +5 -3
  14. package/dist/button.js.map +1 -1
  15. package/dist/card-content.js +29 -0
  16. package/dist/card-content.js.map +1 -0
  17. package/dist/card.js +418 -44
  18. package/dist/card.js.map +1 -1
  19. package/dist/{chart-bar-DbnXQgvS.js → chart-bar-cn6rrna-.js} +2 -2
  20. package/dist/{chart-bar-DbnXQgvS.js.map → chart-bar-cn6rrna-.js.map} +1 -1
  21. package/dist/chart-bar.js +4 -3
  22. package/dist/chart-bar.js.map +1 -1
  23. package/dist/chart-doughnut.js +2 -1
  24. package/dist/chart-doughnut.js.map +1 -1
  25. package/dist/chart-pie.js +2 -1
  26. package/dist/chart-pie.js.map +1 -1
  27. package/dist/chart-stacked-bar.js +4 -3
  28. package/dist/chart-stacked-bar.js.map +1 -1
  29. package/dist/{class-map-59YGWLnx.js → class-map-3TAnCMAX.js} +3 -9
  30. package/dist/class-map-3TAnCMAX.js.map +1 -0
  31. package/dist/clock.js +2 -1
  32. package/dist/clock.js.map +1 -1
  33. package/dist/code-editor.js +6 -4
  34. package/dist/code-editor.js.map +1 -1
  35. package/dist/code-highlighter.js +5 -3
  36. package/dist/code-highlighter.js.map +1 -1
  37. package/dist/custom-elements-jsdocs.json +2458 -2753
  38. package/dist/custom-elements.json +3185 -777
  39. package/dist/dispatch-event-utils-B4odODQf.js.map +1 -1
  40. package/dist/index.js +14 -10
  41. package/dist/index.js.map +1 -1
  42. package/dist/number-counter.js +3 -2
  43. package/dist/number-counter.js.map +1 -1
  44. package/dist/{observe-theme-change-pALI5fmV.js → observe-theme-change-DKAIv5BB.js} +3 -2
  45. package/dist/observe-theme-change-DKAIv5BB.js.map +1 -0
  46. package/dist/peacock-loader.js +37 -8
  47. package/dist/peacock-loader.js.map +1 -1
  48. package/dist/property-1psGvXOq.js +10 -0
  49. package/dist/property-1psGvXOq.js.map +1 -0
  50. package/dist/{snackbar-74YCdMPL.js → select-C3XAzenC.js} +2158 -191
  51. package/dist/select-C3XAzenC.js.map +1 -0
  52. package/dist/side-sheet.js +186 -0
  53. package/dist/side-sheet.js.map +1 -0
  54. package/dist/src/bottom-sheet/bottom-sheet.d.ts +42 -0
  55. package/dist/src/bottom-sheet/index.d.ts +1 -0
  56. package/dist/src/button/BaseButton.d.ts +4 -3
  57. package/dist/src/button/button/button.d.ts +4 -0
  58. package/dist/src/button/button-group/button-group.d.ts +32 -3
  59. package/dist/src/button/icon-button/icon-button.d.ts +4 -0
  60. package/dist/src/card/card-content.d.ts +15 -0
  61. package/dist/src/card/card.d.ts +37 -3
  62. package/dist/src/card/index.d.ts +1 -0
  63. package/dist/src/container/container.d.ts +1 -1
  64. package/dist/src/empty-state/empty-state.d.ts +1 -1
  65. package/dist/src/focus-ring/focus-ring.d.ts +4 -1
  66. package/dist/src/index.d.ts +7 -1
  67. package/dist/src/menu/menu/menu.d.ts +1 -0
  68. package/dist/src/menu/menu-item/menu-item.d.ts +0 -1
  69. package/dist/src/radio/index.d.ts +1 -0
  70. package/dist/src/radio/radio.d.ts +73 -0
  71. package/dist/src/ripple/ripple.d.ts +19 -3
  72. package/dist/src/segmented-button/index.d.ts +2 -0
  73. package/dist/src/segmented-button/segmented-button-group.d.ts +46 -0
  74. package/dist/src/segmented-button/segmented-button.d.ts +65 -0
  75. package/dist/src/select/index.d.ts +3 -0
  76. package/dist/src/select/option.d.ts +55 -0
  77. package/dist/src/select/select.d.ts +116 -0
  78. package/dist/src/side-sheet/index.d.ts +1 -0
  79. package/dist/src/side-sheet/side-sheet.d.ts +41 -0
  80. package/dist/src/tabs/tab-group.d.ts +0 -1
  81. package/dist/src/tabs/tab.d.ts +8 -2
  82. package/dist/src/tabs/tabs.d.ts +13 -1
  83. package/dist/state-DwbEjqVk.js +10 -0
  84. package/dist/state-DwbEjqVk.js.map +1 -0
  85. package/dist/{style-map-DcB52w-l.js → style-map-CRFEoCEg.js} +2 -2
  86. package/dist/{style-map-DcB52w-l.js.map → style-map-CRFEoCEg.js.map} +1 -1
  87. package/dist/tsconfig.tsbuildinfo +1 -1
  88. package/dist/{unsafe-html-C2r3PyzF.js → unsafe-html-D3GHRaGQ.js} +2 -2
  89. package/dist/{unsafe-html-C2r3PyzF.js.map → unsafe-html-D3GHRaGQ.js.map} +1 -1
  90. package/package.json +1 -1
  91. package/readme.md +2 -2
  92. package/src/bottom-sheet/bottom-sheet.scss +88 -0
  93. package/src/bottom-sheet/bottom-sheet.ts +135 -0
  94. package/src/bottom-sheet/index.ts +1 -0
  95. package/src/button/BaseButton.ts +16 -7
  96. package/src/button/button/button-colors.scss +76 -5
  97. package/src/button/button/button-sizes.scss +39 -19
  98. package/src/button/button/button.scss +117 -116
  99. package/src/button/button/button.ts +23 -1
  100. package/src/button/button-group/button-group.scss +25 -22
  101. package/src/button/button-group/button-group.ts +121 -4
  102. package/src/button/icon-button/icon-button-sizes.scss +35 -15
  103. package/src/button/icon-button/icon-button.ts +21 -1
  104. package/src/card/card-colors.scss +10 -0
  105. package/src/card/card-content.ts +26 -0
  106. package/src/card/card.scss +221 -41
  107. package/src/card/card.ts +240 -7
  108. package/src/card/index.ts +1 -0
  109. package/src/code-editor/code-editor.ts +1 -1
  110. package/src/container/container.ts +1 -1
  111. package/src/empty-state/empty-state.scss +8 -0
  112. package/src/empty-state/empty-state.ts +2 -2
  113. package/src/focus-ring/focus-ring.ts +37 -19
  114. package/src/index.ts +8 -1
  115. package/src/menu/menu/menu.scss +24 -3
  116. package/src/menu/menu/menu.ts +23 -2
  117. package/src/menu/menu-item/menu-item.scss +1 -0
  118. package/src/menu/menu-item/menu-item.ts +1 -9
  119. package/src/peacock-loader.ts +32 -0
  120. package/src/radio/index.ts +1 -0
  121. package/src/radio/radio.scss +181 -0
  122. package/src/radio/radio.ts +362 -0
  123. package/src/ripple/ripple.ts +19 -3
  124. package/src/segmented-button/index.ts +2 -0
  125. package/src/segmented-button/segmented-button-group.scss +21 -0
  126. package/src/segmented-button/segmented-button-group.ts +110 -0
  127. package/src/segmented-button/segmented-button.scss +115 -0
  128. package/src/segmented-button/segmented-button.ts +175 -0
  129. package/src/select/index.ts +3 -0
  130. package/src/select/option.ts +109 -0
  131. package/src/select/select.scss +120 -0
  132. package/src/select/select.ts +486 -0
  133. package/src/side-sheet/index.ts +1 -0
  134. package/src/side-sheet/side-sheet.scss +79 -0
  135. package/src/side-sheet/side-sheet.ts +100 -0
  136. package/src/slider/slider.scss +0 -1
  137. package/src/tabs/demo/index.html +90 -0
  138. package/src/tabs/tab-group.ts +0 -3
  139. package/src/tabs/tab.scss +237 -25
  140. package/src/tabs/tab.ts +86 -12
  141. package/src/tabs/tabs.scss +37 -3
  142. package/src/tabs/tabs.ts +118 -2
  143. package/src/utils/dispatch-event-utils.ts +1 -0
  144. package/dist/IndividualComponent-Dt5xirYG.js +0 -73
  145. package/dist/IndividualComponent-Dt5xirYG.js.map +0 -1
  146. package/dist/button-ClzS8JLq.js.map +0 -1
  147. package/dist/button-group-BMS5WvaF.js +0 -292
  148. package/dist/button-group-BMS5WvaF.js.map +0 -1
  149. package/dist/chart-donut.js +0 -309
  150. package/dist/chart-donut.js.map +0 -1
  151. package/dist/class-map-59YGWLnx.js.map +0 -1
  152. package/dist/observe-theme-change-pALI5fmV.js.map +0 -1
  153. package/dist/snackbar-74YCdMPL.js.map +0 -1
  154. package/dist/src/chart-donut/chart-donut.d.ts +0 -53
  155. package/dist/src/chart-donut/index.d.ts +0 -1
  156. package/dist/test/card.test.d.ts +0 -1
  157. package/src/chart-donut/chart-donut.scss +0 -37
  158. package/src/chart-donut/chart-donut.ts +0 -287
  159. package/src/chart-donut/demo/index.html +0 -51
  160. package/src/chart-donut/index.ts +0 -1
@@ -1,12 +1,14 @@
1
- import { a as i, _ as __decorate, n, i as i$1, b, A, c as __classPrivateFieldGet, w } from './IndividualComponent-Dt5xirYG.js';
2
- import { r, e as e$3 } from './class-map-59YGWLnx.js';
1
+ import { a as i, _ as __decorate, i as i$1, b, A, c as __classPrivateFieldGet, w } from './IndividualComponent-DUINtMGK.js';
2
+ import { n } from './property-1psGvXOq.js';
3
+ import { r } from './state-DwbEjqVk.js';
3
4
  import { e as e$1 } from './directive-Cuw6h7YA.js';
4
- import { e as e$2, o as o$4 } from './unsafe-html-C2r3PyzF.js';
5
+ import { e as e$2, o as o$4 } from './unsafe-html-D3GHRaGQ.js';
5
6
  import { c as createCacheFetch, s as sanitizeSvg, o as observerSlotChangesWithCallback, r as redispatchEvent, a as isDarkMode, i as isActivationClick, d as dispatchActivationClick, t as throttle } from './dispatch-event-utils-B4odODQf.js';
7
+ import { e as e$3 } from './class-map-3TAnCMAX.js';
6
8
  import { a as e, e as e$4 } from './query-QBcUV-L_.js';
7
- import { o as o$3 } from './style-map-DcB52w-l.js';
8
- import { B as BaseInput, o as observeThemeChange } from './observe-theme-change-pALI5fmV.js';
9
- import { s as spread } from './button-ClzS8JLq.js';
9
+ import { o as o$3 } from './style-map-CRFEoCEg.js';
10
+ import { B as BaseInput, o as observeThemeChange } from './observe-theme-change-DKAIv5BB.js';
11
+ import { s as spread } from './button-COYCtuA8.js';
10
12
 
11
13
  /**
12
14
  * @license
@@ -39,7 +41,7 @@ async function fetchIcon(name, provider = 'material-symbols') {
39
41
  return fetchSVG(PROVIDERS[provider](name));
40
42
  }
41
43
 
42
- var css_248z$K = i`* {
44
+ var css_248z$O = i`* {
43
45
  box-sizing: border-box;
44
46
  }
45
47
 
@@ -168,7 +170,7 @@ class Icon extends i$1 {
168
170
  }
169
171
  }
170
172
  }
171
- Icon.styles = [css_248z$K];
173
+ Icon.styles = [css_248z$O];
172
174
  __decorate([
173
175
  n({ type: String, reflect: true })
174
176
  ], Icon.prototype, "name", void 0);
@@ -188,7 +190,7 @@ __decorate([
188
190
  r()
189
191
  ], Icon.prototype, "error", void 0);
190
192
 
191
- var css_248z$J = i`* {
193
+ var css_248z$N = i`* {
192
194
  box-sizing: border-box;
193
195
  }
194
196
 
@@ -279,7 +281,7 @@ class Avatar extends i$1 {
279
281
  return `${first.charAt(0)}${last.charAt(0)}`.toUpperCase();
280
282
  }
281
283
  }
282
- Avatar.styles = [css_248z$J];
284
+ Avatar.styles = [css_248z$N];
283
285
  __decorate([
284
286
  n({ type: String, reflect: true })
285
287
  ], Avatar.prototype, "name", void 0);
@@ -287,7 +289,7 @@ __decorate([
287
289
  n({ type: String, reflect: true })
288
290
  ], Avatar.prototype, "src", void 0);
289
291
 
290
- var css_248z$I = i`* {
292
+ var css_248z$M = i`* {
291
293
  box-sizing: border-box;
292
294
  }
293
295
 
@@ -359,12 +361,12 @@ class Badge extends i$1 {
359
361
  </div>`;
360
362
  }
361
363
  }
362
- Badge.styles = [css_248z$I];
364
+ Badge.styles = [css_248z$M];
363
365
  __decorate([
364
366
  n({ type: String })
365
367
  ], Badge.prototype, "value", void 0);
366
368
 
367
- var css_248z$H = i`* {
369
+ var css_248z$L = i`* {
368
370
  box-sizing: border-box;
369
371
  }
370
372
 
@@ -473,7 +475,7 @@ class Divider extends i$1 {
473
475
  </div>`;
474
476
  }
475
477
  }
476
- Divider.styles = [css_248z$H];
478
+ Divider.styles = [css_248z$L];
477
479
  __decorate([
478
480
  n({ type: Boolean, reflect: true })
479
481
  ], Divider.prototype, "vertical", void 0);
@@ -481,7 +483,7 @@ __decorate([
481
483
  r()
482
484
  ], Divider.prototype, "slotHasContent", void 0);
483
485
 
484
- var css_248z$G = i`/**
486
+ var css_248z$K = i`/**
485
487
  * Derived from Material Design Elevation
486
488
  * https://github.com/material-components/material-web/blob/main/elevation/internal/_elevation.scss
487
489
  */
@@ -554,9 +556,403 @@ class Elevation extends i$1 {
554
556
  return b `<span class="shadow"></span>`;
555
557
  }
556
558
  }
557
- Elevation.styles = [css_248z$G];
559
+ Elevation.styles = [css_248z$K];
560
+
561
+ var css_248z$J = i`* {
562
+ box-sizing: border-box;
563
+ }
564
+
565
+ .screen-reader-only {
566
+ display: none !important;
567
+ }
568
+
569
+ :host {
570
+ display: contents;
571
+ --_segmented-button-height: 2.5rem;
572
+ --_segmented-button-outline-color: var(--color-outline, #79747e);
573
+ --_segmented-button-selected-container-color: var(--color-secondary-container, #e8def8);
574
+ --_segmented-button-selected-label-text-color: var(--color-on-secondary-container, #1d192b);
575
+ --_segmented-button-unselected-label-text-color: var(--color-on-surface, #1c1b1f);
576
+ --_segmented-button-disabled-opacity: 0.38;
577
+ --_segmented-button-state-layer-color: var(--color-on-surface, #1c1b1f);
578
+ --_segmented-button-selected-state-layer-color: var(--color-on-secondary-container, #1d192b);
579
+ }
580
+
581
+ .segment {
582
+ position: relative;
583
+ display: flex;
584
+ align-items: center;
585
+ justify-content: center;
586
+ height: var(--segmented-button-height, var(--_segmented-button-height));
587
+ padding: 0 1.5rem;
588
+ cursor: pointer;
589
+ flex: 1;
590
+ min-width: 0;
591
+ outline: none;
592
+ user-select: none;
593
+ -webkit-user-select: none;
594
+ background: transparent;
595
+ overflow: hidden;
596
+ transition: background-color 200ms ease, color 200ms ease;
597
+ }
598
+ .segment .content {
599
+ position: relative;
600
+ z-index: 1;
601
+ display: flex;
602
+ align-items: center;
603
+ gap: 0.5rem;
604
+ font-family: var(--typography-label-large-font-family) !important;
605
+ font-size: var(--typography-label-large-font-size) !important;
606
+ font-weight: var(--typography-label-large-font-weight) !important;
607
+ line-height: var(--typography-label-large-line-height) !important;
608
+ letter-spacing: var(--typography-label-large-letter-spacing) !important;
609
+ color: var(--segmented-button-unselected-label-text-color, var(--_segmented-button-unselected-label-text-color));
610
+ }
611
+ .segment .content .check-icon,
612
+ .segment .content .leading-icon {
613
+ --icon-size: 1.125rem;
614
+ --icon-color: currentColor;
615
+ flex-shrink: 0;
616
+ }
617
+ .segment .content .label {
618
+ overflow: hidden;
619
+ text-overflow: ellipsis;
620
+ white-space: nowrap;
621
+ }
622
+ .segment .state-layer {
623
+ position: absolute;
624
+ inset: 0;
625
+ background: var(--_segmented-button-state-layer-color);
626
+ opacity: 0;
627
+ pointer-events: none;
628
+ transition: opacity 200ms ease;
629
+ }
630
+ .segment {
631
+ /* right-side divider between segments */
632
+ }
633
+ .segment .segment-outline {
634
+ position: absolute;
635
+ top: 0;
636
+ right: 0;
637
+ width: 1px;
638
+ height: 100%;
639
+ background: var(--segmented-button-outline-color, var(--_segmented-button-outline-color));
640
+ pointer-events: none;
641
+ }
642
+ .segment:hover:not(.disabled) .state-layer {
643
+ opacity: 0.08;
644
+ }
645
+ .segment.has-focus:not(.disabled) .state-layer {
646
+ opacity: 0.12;
647
+ }
648
+ .segment.active:not(.disabled) .state-layer {
649
+ opacity: 0.16;
650
+ }
651
+ .segment {
652
+ /* Selected state */
653
+ }
654
+ .segment.selected {
655
+ background-color: var(--segmented-button-selected-container-color, var(--_segmented-button-selected-container-color));
656
+ }
657
+ .segment.selected .content {
658
+ color: var(--segmented-button-selected-label-text-color, var(--_segmented-button-selected-label-text-color));
659
+ }
660
+ .segment.selected .state-layer {
661
+ background: var(--_segmented-button-selected-state-layer-color);
662
+ }
663
+ .segment {
664
+ /* Disabled state */
665
+ }
666
+ .segment.disabled {
667
+ cursor: not-allowed;
668
+ opacity: var(--segmented-button-disabled-opacity, var(--_segmented-button-disabled-opacity));
669
+ pointer-events: none;
670
+ }
671
+
672
+ :host(:last-child) .segment-outline {
673
+ display: none;
674
+ }`;
675
+
676
+ /**
677
+ * @label Segmented Button
678
+ * @tag wc-segmented-button
679
+ * @rawTag segmented-button
680
+ * @summary An individual segment within a segmented button group.
681
+ * @parentRawTag segmented-button-group
682
+ * @overview
683
+ * <p>Segmented buttons help people select options, switch views, or sort elements. They are used within a <code>wc-segmented-button-group</code>.</p>
684
+ *
685
+ * @cssprop --segmented-button-height: Height of the segmented button.
686
+ * @cssprop --segmented-button-selected-container-color: Background color when the segment is selected.
687
+ * @cssprop --segmented-button-selected-label-text-color: Text color when the segment is selected.
688
+ * @cssprop --segmented-button-unselected-label-text-color: Text color when the segment is unselected.
689
+ * @cssprop --segmented-button-outline-color: Outline / border color.
690
+ * @cssprop --segmented-button-disabled-opacity: Opacity when the segment is disabled.
691
+ *
692
+ * @fires {CustomEvent} segmented-button--change - Dispatched when the selected state changes.
693
+ *
694
+ * @example
695
+ * ```html
696
+ * <wc-segmented-button-group>
697
+ * <wc-segmented-button value="day">Day</wc-segmented-button>
698
+ * <wc-segmented-button value="week" selected>Week</wc-segmented-button>
699
+ * <wc-segmented-button value="month">Month</wc-segmented-button>
700
+ * </wc-segmented-button-group>
701
+ * ```
702
+ *
703
+ * @tags controls
704
+ */
705
+ class SegmentedButton extends i$1 {
706
+ constructor() {
707
+ super(...arguments);
708
+ /**
709
+ * The value associated with this segment.
710
+ */
711
+ this.value = '';
712
+ /**
713
+ * Whether this segment is currently selected.
714
+ */
715
+ this.selected = false;
716
+ /**
717
+ * If true, the user cannot interact with this segment.
718
+ */
719
+ this.disabled = false;
720
+ this.hasFocus = false;
721
+ this.isActive = false;
722
+ this._windowMouseUp = () => {
723
+ if (this.isActive) {
724
+ this.isActive = false;
725
+ }
726
+ };
727
+ this._mouseDownHandler = () => {
728
+ this.isActive = true;
729
+ };
730
+ this._keyDownHandler = (evt) => {
731
+ if (evt.key === ' ' || evt.key === 'Enter') {
732
+ evt.preventDefault();
733
+ this.isActive = true;
734
+ this._toggle(evt);
735
+ }
736
+ };
737
+ this._clickHandler = (ev) => {
738
+ this._toggle(ev);
739
+ };
740
+ this._blurHandler = (ev) => {
741
+ this.hasFocus = false;
742
+ this.dispatchEvent(new CustomEvent('blur', { detail: ev, bubbles: true, composed: true }));
743
+ };
744
+ this._focusHandler = (ev) => {
745
+ this.hasFocus = true;
746
+ this.dispatchEvent(new CustomEvent('focus', { detail: ev, bubbles: true, composed: true }));
747
+ };
748
+ }
749
+ connectedCallback() {
750
+ super.connectedCallback();
751
+ window.addEventListener('mouseup', this._windowMouseUp);
752
+ }
753
+ disconnectedCallback() {
754
+ super.disconnectedCallback();
755
+ window.removeEventListener('mouseup', this._windowMouseUp);
756
+ }
757
+ _toggle(ev) {
758
+ if (this.disabled)
759
+ return;
760
+ this.dispatchEvent(new CustomEvent('segmented-button--change', {
761
+ detail: {
762
+ value: this.value || this.textContent?.trim(),
763
+ selected: !this.selected,
764
+ originalEvent: ev,
765
+ },
766
+ bubbles: true,
767
+ composed: true,
768
+ }));
769
+ }
770
+ /** Sets focus on the segment. */
771
+ focus() {
772
+ this.renderRoot.querySelector('.segment')?.focus();
773
+ }
774
+ /** Removes focus from the segment. */
775
+ blur() {
776
+ this.renderRoot.querySelector('.segment')?.blur();
777
+ }
778
+ render() {
779
+ const cssClasses = {
780
+ segment: true,
781
+ selected: this.selected,
782
+ disabled: this.disabled,
783
+ 'has-focus': this.hasFocus,
784
+ active: this.isActive,
785
+ 'has-icon': !!this.icon,
786
+ };
787
+ return b `
788
+ <div
789
+ class=${e$3(cssClasses)}
790
+ role="button"
791
+ tabindex=${this.disabled ? -1 : 0}
792
+ aria-pressed=${this.selected}
793
+ aria-disabled=${this.disabled}
794
+ @click=${this._clickHandler}
795
+ @mousedown=${this._mouseDownHandler}
796
+ @keydown=${this._keyDownHandler}
797
+ @blur=${this._blurHandler}
798
+ @focus=${this._focusHandler}
799
+ >
800
+ <div class="state-layer"></div>
801
+ <div class="content">
802
+ ${this.selected
803
+ ? b `<wc-icon class="check-icon" name="check"></wc-icon>`
804
+ : this.icon
805
+ ? b `<wc-icon class="leading-icon" name=${this.icon}></wc-icon>`
806
+ : A}
807
+ <span class="label"><slot></slot></span>
808
+ </div>
809
+ <div class="segment-outline"></div>
810
+ </div>
811
+ `;
812
+ }
813
+ }
814
+ SegmentedButton.styles = [css_248z$J];
815
+ __decorate([
816
+ n({ type: String, reflect: true })
817
+ ], SegmentedButton.prototype, "value", void 0);
818
+ __decorate([
819
+ n({ type: Boolean, reflect: true })
820
+ ], SegmentedButton.prototype, "selected", void 0);
821
+ __decorate([
822
+ n({ type: Boolean, reflect: true })
823
+ ], SegmentedButton.prototype, "disabled", void 0);
824
+ __decorate([
825
+ n({ type: String })
826
+ ], SegmentedButton.prototype, "icon", void 0);
827
+ __decorate([
828
+ r()
829
+ ], SegmentedButton.prototype, "hasFocus", void 0);
830
+ __decorate([
831
+ r()
832
+ ], SegmentedButton.prototype, "isActive", void 0);
833
+
834
+ var css_248z$I = i`* {
835
+ box-sizing: border-box;
836
+ }
837
+
838
+ .screen-reader-only {
839
+ display: none !important;
840
+ }
841
+
842
+ :host {
843
+ display: inline-flex;
844
+ --_segmented-button-group-shape: var(--shape-corner-full, 9999px);
845
+ }
846
+
847
+ .segmented-button-group {
848
+ display: flex;
849
+ align-items: stretch;
850
+ border-radius: var(--segmented-button-group-shape, var(--_segmented-button-group-shape));
851
+ border: 1px solid var(--segmented-button-outline-color, var(--color-outline, #79747e));
852
+ overflow: hidden;
853
+ min-width: max-content;
854
+ }
855
+ .segmented-button-group ::slotted(wc-segmented-button) {
856
+ flex: 1;
857
+ }`;
858
+
859
+ /**
860
+ * @label Segmented Button Group
861
+ * @tag wc-segmented-button-group
862
+ * @rawTag segmented-button-group
863
+ * @summary A container for segmented buttons following Material Design 3.
864
+ * @overview
865
+ * <p>Segmented buttons help people select options, switch views, or sort elements. They follow the Material Design 3 specification.</p>
866
+ * <p>Use <code>multi-select</code> to allow more than one segment to be selected at a time. By default only one segment can be active (single-select).</p>
867
+ *
868
+ * @cssprop --segmented-button-group-shape: Border-radius of the group container.
869
+ *
870
+ * @fires {CustomEvent} change - Dispatched when the selection changes. Detail contains <code>{ value, values }</code>.
871
+ *
872
+ * @example
873
+ * ```html
874
+ * <wc-segmented-button-group>
875
+ * <wc-segmented-button value="day">Day</wc-segmented-button>
876
+ * <wc-segmented-button value="week" selected>Week</wc-segmented-button>
877
+ * <wc-segmented-button value="month">Month</wc-segmented-button>
878
+ * </wc-segmented-button-group>
879
+ * ```
880
+ *
881
+ * @tags controls
882
+ */
883
+ class SegmentedButtonGroup extends i$1 {
884
+ constructor() {
885
+ super(...arguments);
886
+ /**
887
+ * When true, multiple segments can be selected simultaneously.
888
+ * Defaults to single-select mode.
889
+ */
890
+ this.multiSelect = false;
891
+ /**
892
+ * When true, in single-select mode the currently selected segment can be
893
+ * deselected by clicking it again (allowing an empty selection).
894
+ * Defaults to `false`.
895
+ */
896
+ this.nullable = false;
897
+ this._onSegmentChange = (ev) => {
898
+ ev.stopPropagation();
899
+ const target = ev.composedPath()[0];
900
+ const segments = this._getSegments();
901
+ if (this.multiSelect) {
902
+ target.selected = !target.selected;
903
+ }
904
+ else {
905
+ if (target.selected && this.nullable) {
906
+ target.selected = false;
907
+ }
908
+ else {
909
+ segments.forEach(seg => {
910
+ seg.selected = seg === target;
911
+ });
912
+ }
913
+ }
914
+ const selectedValues = segments
915
+ .filter(s => s.selected)
916
+ .map(s => s.value || s.textContent?.trim() || '');
917
+ this.dispatchEvent(new CustomEvent('change', {
918
+ detail: {
919
+ value: selectedValues[0] ?? null,
920
+ values: selectedValues,
921
+ },
922
+ bubbles: true,
923
+ composed: true,
924
+ }));
925
+ };
926
+ }
927
+ connectedCallback() {
928
+ super.connectedCallback();
929
+ this.addEventListener('segmented-button--change', this._onSegmentChange);
930
+ }
931
+ disconnectedCallback() {
932
+ super.disconnectedCallback();
933
+ this.removeEventListener('segmented-button--change', this._onSegmentChange);
934
+ }
935
+ _getSegments() {
936
+ return Array.from(this.querySelectorAll('wc-segmented-button'));
937
+ }
938
+ render() {
939
+ return b `
940
+ <div class="segmented-button-group" role="group">
941
+ <slot></slot>
942
+ </div>
943
+ `;
944
+ }
945
+ }
946
+ SegmentedButtonGroup.styles = [css_248z$I];
947
+ SegmentedButtonGroup.SegmentedButton = SegmentedButton;
948
+ __decorate([
949
+ n({ type: Boolean, reflect: true, attribute: 'multi-select' })
950
+ ], SegmentedButtonGroup.prototype, "multiSelect", void 0);
951
+ __decorate([
952
+ n({ type: Boolean, reflect: true })
953
+ ], SegmentedButtonGroup.prototype, "nullable", void 0);
558
954
 
559
- var css_248z$F = i`:host {
955
+ var css_248z$H = i`:host {
560
956
  display: none;
561
957
  pointer-events: none;
562
958
  position: absolute;
@@ -593,7 +989,7 @@ class FocusRing extends i$1 {
593
989
  constructor() {
594
990
  super(...arguments);
595
991
  this.visible = false;
596
- this.element = '';
992
+ this.for = '';
597
993
  }
598
994
  render() {
599
995
  return A;
@@ -609,6 +1005,15 @@ class FocusRing extends i$1 {
609
1005
  this.detach();
610
1006
  }
611
1007
  }
1008
+ set forElement(value) {
1009
+ if (value) {
1010
+ this._focusTarget = value;
1011
+ this.attach();
1012
+ }
1013
+ else {
1014
+ this.detach();
1015
+ }
1016
+ }
612
1017
  connectedCallback() {
613
1018
  super.connectedCallback();
614
1019
  this.attach();
@@ -618,8 +1023,8 @@ class FocusRing extends i$1 {
618
1023
  super.disconnectedCallback();
619
1024
  }
620
1025
  __focusin() {
621
- // @ts-ignore
622
- this.visible = this._control[this.element].matches(':focus-visible') ?? false;
1026
+ const focusTarget = this.__getFocusTarget();
1027
+ this.visible = focusTarget?.matches(':focus-visible') ?? false;
623
1028
  }
624
1029
  __focusout() {
625
1030
  this.visible = false;
@@ -627,37 +1032,41 @@ class FocusRing extends i$1 {
627
1032
  __pointerdown() {
628
1033
  this.visible = false;
629
1034
  }
1035
+ __getFocusTarget() {
1036
+ if (this._focusTarget) {
1037
+ return this._focusTarget;
1038
+ }
1039
+ const focusTarget = document.getElementById(this.for);
1040
+ if (focusTarget) {
1041
+ return focusTarget;
1042
+ }
1043
+ return undefined;
1044
+ }
630
1045
  attach() {
631
- // @ts-ignore
632
- if (this._control && this._control[this.element]) {
633
- // @ts-ignore
634
- this._control[this.element].addEventListener('focusin', this.__focusin.bind(this));
635
- // @ts-ignore
636
- this._control[this.element].addEventListener('focusout', this.__focusin.bind(this));
637
- // @ts-ignore
638
- this._control[this.element].addEventListener('pointerdown', this.__focusin.bind(this));
1046
+ const focusTarget = this.__getFocusTarget();
1047
+ if (focusTarget) {
1048
+ focusTarget.addEventListener('focusin', this.__focusin.bind(this));
1049
+ focusTarget.addEventListener('focusout', this.__focusout.bind(this));
1050
+ focusTarget.addEventListener('pointerdown', this.__pointerdown.bind(this));
639
1051
  }
640
1052
  }
641
1053
  detach() {
642
- // @ts-ignore
643
- if (this._control && this._control[this.element]) {
644
- // @ts-ignore
645
- this._control[this.element].removeEventListener('focusin', this.__focusin);
646
- // @ts-ignore
647
- this._control[this.element].removeEventListener('focusout', this.__focusout);
648
- // @ts-ignore
649
- this._control[this.element].removeEventListener('pointerdown', this.__pointerdown);
1054
+ const focusTarget = this.__getFocusTarget();
1055
+ if (focusTarget) {
1056
+ focusTarget.removeEventListener('focusin', this.__focusin.bind(this));
1057
+ focusTarget.removeEventListener('focusout', this.__focusout.bind(this));
1058
+ focusTarget.removeEventListener('pointerdown', this.__pointerdown.bind(this));
650
1059
  }
651
1060
  this._control = undefined;
652
1061
  }
653
1062
  }
654
- FocusRing.styles = [css_248z$F];
1063
+ FocusRing.styles = [css_248z$H];
655
1064
  __decorate([
656
1065
  n({ type: Boolean, reflect: true })
657
1066
  ], FocusRing.prototype, "visible", void 0);
658
1067
  __decorate([
659
1068
  n({ type: String })
660
- ], FocusRing.prototype, "element", void 0);
1069
+ ], FocusRing.prototype, "for", void 0);
661
1070
 
662
1071
  const PRESS_GROW_MS = 450;
663
1072
  const MINIMUM_PRESS_MS = 225;
@@ -744,10 +1153,26 @@ const FORCED_COLORS = window.matchMedia('(forced-colors: active)');
744
1153
  *
745
1154
  * @example
746
1155
  * ```html
747
- * <button style="position: relative;">
1156
+ * <style>
1157
+ * .ripple-surface {
1158
+ * position: relative;
1159
+ * display: inline-flex;
1160
+ * align-items: center;
1161
+ * justify-content: center;
1162
+ * width: 220px;
1163
+ * height: 64px;
1164
+ * border-radius: 12px;
1165
+ * background: var(--color-surface-container-high);
1166
+ * color: var(--color-on-surface);
1167
+ * overflow: hidden;
1168
+ * cursor: pointer;
1169
+ * user-select: none;
1170
+ * }
1171
+ * </style>
1172
+ * <div class="ripple-surface">
748
1173
  * <wc-ripple></wc-ripple>
749
- * Click me
750
- * </button>
1174
+ * Ripple Effect
1175
+ * </div>
751
1176
  * ```
752
1177
  * @tags display
753
1178
  */
@@ -1112,7 +1537,7 @@ __decorate([
1112
1537
  e$4('.surface')
1113
1538
  ], Ripple.prototype, "mdRoot", void 0);
1114
1539
 
1115
- var css_248z$E = i`* {
1540
+ var css_248z$G = i`* {
1116
1541
  box-sizing: border-box;
1117
1542
  }
1118
1543
 
@@ -1282,7 +1707,7 @@ class AccordionItem extends i$1 {
1282
1707
  }
1283
1708
  }
1284
1709
  _AccordionItem_id = new WeakMap();
1285
- AccordionItem.styles = [css_248z$E];
1710
+ AccordionItem.styles = [css_248z$G];
1286
1711
  __decorate([
1287
1712
  n({ type: String, reflect: true })
1288
1713
  ], AccordionItem.prototype, "heading", void 0);
@@ -1296,7 +1721,7 @@ __decorate([
1296
1721
  e$4('.accordion-heading')
1297
1722
  ], AccordionItem.prototype, "buttonElement", void 0);
1298
1723
 
1299
- var css_248z$D = i`* {
1724
+ var css_248z$F = i`* {
1300
1725
  box-sizing: border-box;
1301
1726
  }
1302
1727
 
@@ -1415,7 +1840,7 @@ class Accordion extends i$1 {
1415
1840
  return b `<div class="accordion"><slot></slot></div>`;
1416
1841
  }
1417
1842
  }
1418
- Accordion.styles = [css_248z$D];
1843
+ Accordion.styles = [css_248z$F];
1419
1844
  Accordion.Item = AccordionItem;
1420
1845
  __decorate([
1421
1846
  n({ type: Boolean, attribute: 'allow-multiple' })
@@ -1424,7 +1849,7 @@ __decorate([
1424
1849
  o$2({ selector: 'p-accordion-item' })
1425
1850
  ], Accordion.prototype, "items", void 0);
1426
1851
 
1427
- var css_248z$C = i`* {
1852
+ var css_248z$E = i`* {
1428
1853
  box-sizing: border-box;
1429
1854
  }
1430
1855
 
@@ -1495,7 +1920,7 @@ class Link extends i$1 {
1495
1920
  </a>`;
1496
1921
  }
1497
1922
  }
1498
- Link.styles = [css_248z$C];
1923
+ Link.styles = [css_248z$E];
1499
1924
  __decorate([
1500
1925
  n({ reflect: true })
1501
1926
  ], Link.prototype, "href", void 0);
@@ -1506,7 +1931,7 @@ __decorate([
1506
1931
  r()
1507
1932
  ], Link.prototype, "tabIndexValue", void 0);
1508
1933
 
1509
- var css_248z$B = i`* {
1934
+ var css_248z$D = i`* {
1510
1935
  box-sizing: border-box;
1511
1936
  }
1512
1937
 
@@ -1643,7 +2068,7 @@ slot::slotted(*) {
1643
2068
  --_container-state-opacity: 0.08;
1644
2069
  }`;
1645
2070
 
1646
- var css_248z$A = i`:host([color=default]) {
2071
+ var css_248z$C = i`:host([color=default]) {
1647
2072
  --filled-tag-container-color: var(--color-surface);
1648
2073
  --filled-tag-label-text-color: var(--color-on-surface);
1649
2074
  --tonal-tag-container-color: var(--color-surface-container);
@@ -1709,7 +2134,7 @@ var css_248z$A = i`:host([color=default]) {
1709
2134
  --outlined-tag-label-text-color: var(--color-purple);
1710
2135
  }`;
1711
2136
 
1712
- var css_248z$z = i`.tag {
2137
+ var css_248z$B = i`.tag {
1713
2138
  font-family: var(--font-family-sans) !important;
1714
2139
  }
1715
2140
 
@@ -1808,7 +2233,7 @@ class Tag extends i$1 {
1808
2233
  }
1809
2234
  // Define styles (Lit handles Scoping via Shadow DOM by default)
1810
2235
  // You would typically import your tag.scss.js here or use the css tag
1811
- Tag.styles = [css_248z$B, css_248z$A, css_248z$z];
2236
+ Tag.styles = [css_248z$D, css_248z$C, css_248z$B];
1812
2237
  __decorate([
1813
2238
  n({ type: Boolean })
1814
2239
  ], Tag.prototype, "dismissible", void 0);
@@ -1822,7 +2247,7 @@ __decorate([
1822
2247
  n()
1823
2248
  ], Tag.prototype, "size", void 0);
1824
2249
 
1825
- var css_248z$y = i`* {
2250
+ var css_248z$A = i`* {
1826
2251
  box-sizing: border-box;
1827
2252
  }
1828
2253
 
@@ -1934,7 +2359,7 @@ var css_248z$y = i`* {
1934
2359
  color: var(--background);
1935
2360
  }`;
1936
2361
 
1937
- var css_248z$x = i`:host([color=red]) {
2362
+ var css_248z$z = i`:host([color=red]) {
1938
2363
  --chip-container-color: var(--color-red-container);
1939
2364
  --chip-outline-color: var(--color-on-red-container);
1940
2365
  }
@@ -1963,7 +2388,7 @@ var css_248z$x = i`:host([color=red]) {
1963
2388
  --chip-outline-color: var(--color-on-purple-container);
1964
2389
  }`;
1965
2390
 
1966
- var css_248z$w = i`.tag {
2391
+ var css_248z$y = i`.tag {
1967
2392
  font-family: var(--font-family-sans) !important;
1968
2393
  }
1969
2394
 
@@ -2101,7 +2526,7 @@ class Chip extends i$1 {
2101
2526
  }
2102
2527
  // Define styles (Lit handles Scoping via Shadow DOM by default)
2103
2528
  // You would typically import your tag.scss.js here or use the css tag
2104
- Chip.styles = [css_248z$y, css_248z$x, css_248z$w];
2529
+ Chip.styles = [css_248z$A, css_248z$z, css_248z$y];
2105
2530
  __decorate([
2106
2531
  n({ type: Boolean })
2107
2532
  ], Chip.prototype, "dismissible", void 0);
@@ -2118,7 +2543,7 @@ __decorate([
2118
2543
  n({ type: String })
2119
2544
  ], Chip.prototype, "imageSrc", void 0);
2120
2545
 
2121
- var css_248z$v = i`:host {
2546
+ var css_248z$x = i`:host {
2122
2547
  display: block;
2123
2548
  --progress-height: 0.25rem;
2124
2549
  --progress-container-color: var(--color-primary);
@@ -2324,9 +2749,9 @@ class LinearProgress extends BaseProgress {
2324
2749
  }
2325
2750
  }
2326
2751
  // Lit components use static styles for better performance
2327
- LinearProgress.styles = [css_248z$v];
2752
+ LinearProgress.styles = [css_248z$x];
2328
2753
 
2329
- var css_248z$u = i`:host {
2754
+ var css_248z$w = i`:host {
2330
2755
  display: inline-block;
2331
2756
  --progress-height: 1.5rem;
2332
2757
  --progress-line-thickness: 4px;
@@ -2489,9 +2914,9 @@ class CircularProgress extends BaseProgress {
2489
2914
  }
2490
2915
  }
2491
2916
  // Lit components use static styles for better performance
2492
- CircularProgress.styles = [css_248z$u];
2917
+ CircularProgress.styles = [css_248z$w];
2493
2918
 
2494
- var css_248z$t = i`:host {
2919
+ var css_248z$v = i`:host {
2495
2920
  --skeleton-container-color: var(--color-surface-container);
2496
2921
  --skeleton-element: var(--color-on-surface);
2497
2922
  display: inline-block;
@@ -2595,12 +3020,12 @@ class Skeleton extends i$1 {
2595
3020
  return b ` <div class="skeleton"></div>`;
2596
3021
  }
2597
3022
  }
2598
- Skeleton.styles = [css_248z$t];
3023
+ Skeleton.styles = [css_248z$v];
2599
3024
  __decorate([
2600
3025
  n({ type: Boolean, reflect: true })
2601
3026
  ], Skeleton.prototype, "visible", void 0);
2602
3027
 
2603
- var css_248z$s = i`* {
3028
+ var css_248z$u = i`* {
2604
3029
  box-sizing: border-box;
2605
3030
  }
2606
3031
 
@@ -2773,7 +3198,7 @@ class Input extends BaseInput {
2773
3198
  `;
2774
3199
  }
2775
3200
  }
2776
- Input.styles = [css_248z$s];
3201
+ Input.styles = [css_248z$u];
2777
3202
  __decorate([
2778
3203
  n({ type: String })
2779
3204
  ], Input.prototype, "value", void 0);
@@ -2832,7 +3257,7 @@ __decorate([
2832
3257
  e$4('.input-element')
2833
3258
  ], Input.prototype, "inputElement", void 0);
2834
3259
 
2835
- var css_248z$r = i`* {
3260
+ var css_248z$t = i`* {
2836
3261
  box-sizing: border-box;
2837
3262
  }
2838
3263
 
@@ -3200,7 +3625,7 @@ class Field extends i$1 {
3200
3625
  return b `<div class="text-count">${this.textCount}</div>`;
3201
3626
  }
3202
3627
  }
3203
- Field.styles = [css_248z$r];
3628
+ Field.styles = [css_248z$t];
3204
3629
  __decorate([
3205
3630
  n({ type: String })
3206
3631
  ], Field.prototype, "label", void 0);
@@ -3256,7 +3681,7 @@ __decorate([
3256
3681
  r()
3257
3682
  ], Field.prototype, "slotEndHasContent", void 0);
3258
3683
 
3259
- var css_248z$q = i`* {
3684
+ var css_248z$s = i`* {
3260
3685
  box-sizing: border-box;
3261
3686
  }
3262
3687
 
@@ -3453,7 +3878,7 @@ class NumberField extends BaseInput {
3453
3878
  }
3454
3879
  }
3455
3880
  _NumberField_id = new WeakMap();
3456
- NumberField.styles = [css_248z$q];
3881
+ NumberField.styles = [css_248z$s];
3457
3882
  __decorate([
3458
3883
  n({ type: Number })
3459
3884
  ], NumberField.prototype, "value", void 0);
@@ -3515,7 +3940,7 @@ __decorate([
3515
3940
  e$4('.input-element')
3516
3941
  ], NumberField.prototype, "inputElement", void 0);
3517
3942
 
3518
- var css_248z$p = i`* {
3943
+ var css_248z$r = i`* {
3519
3944
  box-sizing: border-box;
3520
3945
  }
3521
3946
 
@@ -3682,7 +4107,7 @@ class DatePicker extends BaseInput {
3682
4107
  `;
3683
4108
  }
3684
4109
  }
3685
- DatePicker.styles = [css_248z$p];
4110
+ DatePicker.styles = [css_248z$r];
3686
4111
  __decorate([
3687
4112
  n({ type: String })
3688
4113
  ], DatePicker.prototype, "value", void 0);
@@ -3738,7 +4163,7 @@ __decorate([
3738
4163
  e$4('.input-element')
3739
4164
  ], DatePicker.prototype, "inputElement", void 0);
3740
4165
 
3741
- var css_248z$o = i`* {
4166
+ var css_248z$q = i`* {
3742
4167
  box-sizing: border-box;
3743
4168
  }
3744
4169
 
@@ -3905,7 +4330,7 @@ class TimePicker extends BaseInput {
3905
4330
  `;
3906
4331
  }
3907
4332
  }
3908
- TimePicker.styles = [css_248z$o];
4333
+ TimePicker.styles = [css_248z$q];
3909
4334
  __decorate([
3910
4335
  n({ type: String })
3911
4336
  ], TimePicker.prototype, "value", void 0);
@@ -3961,7 +4386,7 @@ __decorate([
3961
4386
  e$4('.input-element')
3962
4387
  ], TimePicker.prototype, "inputElement", void 0);
3963
4388
 
3964
- var css_248z$n = i`* {
4389
+ var css_248z$p = i`* {
3965
4390
  box-sizing: border-box;
3966
4391
  }
3967
4392
 
@@ -4121,7 +4546,7 @@ class Textarea extends BaseInput {
4121
4546
  `;
4122
4547
  }
4123
4548
  }
4124
- Textarea.styles = [css_248z$n];
4549
+ Textarea.styles = [css_248z$p];
4125
4550
  __decorate([
4126
4551
  n({ type: String })
4127
4552
  ], Textarea.prototype, "value", void 0);
@@ -4180,7 +4605,7 @@ __decorate([
4180
4605
  e$4('.input-element')
4181
4606
  ], Textarea.prototype, "inputElement", void 0);
4182
4607
 
4183
- var css_248z$m = i`* {
4608
+ var css_248z$o = i`* {
4184
4609
  box-sizing: border-box;
4185
4610
  }
4186
4611
 
@@ -4521,7 +4946,7 @@ class Switch extends BaseInput {
4521
4946
  `;
4522
4947
  }
4523
4948
  }
4524
- Switch.styles = [css_248z$m];
4949
+ Switch.styles = [css_248z$o];
4525
4950
  __decorate([
4526
4951
  n({ type: Boolean })
4527
4952
  ], Switch.prototype, "value", void 0);
@@ -4565,7 +4990,7 @@ __decorate([
4565
4990
  e$4('.input-native')
4566
4991
  ], Switch.prototype, "nativeElement", void 0);
4567
4992
 
4568
- var css_248z$l = i`* {
4993
+ var css_248z$n = i`* {
4569
4994
  box-sizing: border-box;
4570
4995
  }
4571
4996
 
@@ -5035,7 +5460,7 @@ class Checkbox extends i$1 {
5035
5460
  `;
5036
5461
  }
5037
5462
  }
5038
- Checkbox.styles = [css_248z$l];
5463
+ Checkbox.styles = [css_248z$n];
5039
5464
  __decorate([
5040
5465
  n({ type: String })
5041
5466
  ], Checkbox.prototype, "name", void 0);
@@ -5082,7 +5507,7 @@ __decorate([
5082
5507
  e$4('.input-native')
5083
5508
  ], Checkbox.prototype, "nativeElement", void 0);
5084
5509
 
5085
- var css_248z$k = i`* {
5510
+ var css_248z$m = i`* {
5086
5511
  box-sizing: border-box;
5087
5512
  }
5088
5513
 
@@ -5169,9 +5594,9 @@ class Spinner extends i$1 {
5169
5594
  `;
5170
5595
  }
5171
5596
  }
5172
- Spinner.styles = [css_248z$k];
5597
+ Spinner.styles = [css_248z$m];
5173
5598
 
5174
- var css_248z$j = i`* {
5599
+ var css_248z$l = i`* {
5175
5600
  box-sizing: border-box;
5176
5601
  }
5177
5602
 
@@ -5265,7 +5690,7 @@ var css_248z$j = i`* {
5265
5690
  *
5266
5691
  * @example
5267
5692
  * ```html
5268
- * <wc-container size="lg">Content</wc-container>
5693
+ * <wc-container style="width: 80%; border: 1px dotted black;" size="md">Content</wc-container>
5269
5694
  * ```
5270
5695
  */
5271
5696
  class Container extends i$1 {
@@ -5289,12 +5714,12 @@ class Container extends i$1 {
5289
5714
  `;
5290
5715
  }
5291
5716
  }
5292
- Container.styles = [css_248z$j];
5717
+ Container.styles = [css_248z$l];
5293
5718
  __decorate([
5294
5719
  n({ type: String, reflect: true })
5295
5720
  ], Container.prototype, "size", void 0);
5296
5721
 
5297
- var css_248z$i = i`* {
5722
+ var css_248z$k = i`* {
5298
5723
  box-sizing: border-box;
5299
5724
  }
5300
5725
 
@@ -5365,6 +5790,13 @@ var css_248z$i = i`* {
5365
5790
  .empty-state .content {
5366
5791
  width: 50%;
5367
5792
  }
5793
+ .empty-state .headline {
5794
+ font-family: var(--typography-title-medium-font-family) !important;
5795
+ font-size: var(--typography-title-medium-font-size) !important;
5796
+ font-weight: var(--typography-title-medium-font-weight) !important;
5797
+ line-height: var(--typography-title-medium-line-height) !important;
5798
+ letter-spacing: var(--typography-title-medium-letter-spacing) !important;
5799
+ }
5368
5800
  }
5369
5801
  @container emptystate (max-width: 671px) {
5370
5802
  .empty-state .empty-state-container {
@@ -5376,6 +5808,13 @@ var css_248z$i = i`* {
5376
5808
  width: 100%;
5377
5809
  justify-content: center;
5378
5810
  }
5811
+ .empty-state .headline {
5812
+ font-family: var(--typography-title-small-font-family) !important;
5813
+ font-size: var(--typography-title-small-font-size) !important;
5814
+ font-weight: var(--typography-title-small-font-weight) !important;
5815
+ line-height: var(--typography-title-small-line-height) !important;
5816
+ letter-spacing: var(--typography-title-small-letter-spacing) !important;
5817
+ }
5379
5818
  }`;
5380
5819
 
5381
5820
  /**
@@ -5387,7 +5826,7 @@ var css_248z$i = i`* {
5387
5826
  *
5388
5827
  * @example
5389
5828
  * ```html
5390
- * <wc-empty-state headline="No items found"></wc-empty-state>
5829
+ * <wc-empty-state width="80%" headline="No items found"></wc-empty-state>
5391
5830
  * ```
5392
5831
  */
5393
5832
  class EmptyState extends i$1 {
@@ -5417,7 +5856,7 @@ class EmptyState extends i$1 {
5417
5856
  __renderTitle() {
5418
5857
  if (!this.headline)
5419
5858
  return A;
5420
- return b `<div class="title">${this.headline}</div>`;
5859
+ return b `<div class="headline">${this.headline}</div>`;
5421
5860
  }
5422
5861
  __renderDescription() {
5423
5862
  if (!this.description)
@@ -5450,7 +5889,7 @@ class EmptyState extends i$1 {
5450
5889
  }
5451
5890
  }
5452
5891
  // Lit handles styles in a static property for better performance
5453
- EmptyState.styles = [css_248z$i];
5892
+ EmptyState.styles = [css_248z$k];
5454
5893
  __decorate([
5455
5894
  n({ type: String, reflect: true })
5456
5895
  ], EmptyState.prototype, "illustration", void 0);
@@ -5464,7 +5903,7 @@ __decorate([
5464
5903
  r()
5465
5904
  ], EmptyState.prototype, "vertical", void 0);
5466
5905
 
5467
- var css_248z$h = i`* {
5906
+ var css_248z$j = i`* {
5468
5907
  box-sizing: border-box;
5469
5908
  }
5470
5909
 
@@ -7290,7 +7729,7 @@ class Tooltip extends i$1 {
7290
7729
  `;
7291
7730
  }
7292
7731
  }
7293
- Tooltip.styles = [css_248z$h];
7732
+ Tooltip.styles = [css_248z$j];
7294
7733
  Tooltip.CLOSE_OTHERS_EVENT = 'tooltip--open';
7295
7734
  __decorate([
7296
7735
  n()
@@ -7314,7 +7753,7 @@ __decorate([
7314
7753
  e$4('#tooltip')
7315
7754
  ], Tooltip.prototype, "floatingEl", void 0);
7316
7755
 
7317
- var css_248z$g = i`* {
7756
+ var css_248z$i = i`* {
7318
7757
  box-sizing: border-box;
7319
7758
  }
7320
7759
 
@@ -7356,7 +7795,7 @@ ol {
7356
7795
  * SPDX-License-Identifier: BSD-3-Clause
7357
7796
  */const o=o=>o??A;
7358
7797
 
7359
- var css_248z$f = i`* {
7798
+ var css_248z$h = i`* {
7360
7799
  box-sizing: border-box;
7361
7800
  }
7362
7801
 
@@ -7486,7 +7925,7 @@ class BreadcrumbItem extends i$1 {
7486
7925
  `;
7487
7926
  }
7488
7927
  }
7489
- BreadcrumbItem.styles = [css_248z$f];
7928
+ BreadcrumbItem.styles = [css_248z$h];
7490
7929
  __decorate([
7491
7930
  n({ reflect: true })
7492
7931
  ], BreadcrumbItem.prototype, "href", void 0);
@@ -7540,13 +7979,13 @@ class Breadcrumb extends i$1 {
7540
7979
  </nav>`;
7541
7980
  }
7542
7981
  }
7543
- Breadcrumb.styles = [css_248z$g];
7982
+ Breadcrumb.styles = [css_248z$i];
7544
7983
  Breadcrumb.Item = BreadcrumbItem;
7545
7984
  __decorate([
7546
7985
  n({ type: String })
7547
7986
  ], Breadcrumb.prototype, "label", void 0);
7548
7987
 
7549
- var css_248z$e = i`* {
7988
+ var css_248z$g = i`* {
7550
7989
  box-sizing: border-box;
7551
7990
  }
7552
7991
 
@@ -7556,22 +7995,34 @@ var css_248z$e = i`* {
7556
7995
 
7557
7996
  .menu {
7558
7997
  display: flex;
7559
- position: relative;
7998
+ position: fixed;
7560
7999
  z-index: var(--menu-z-index, 1000);
7561
8000
  min-width: 112px;
7562
8001
  padding-block: var(--spacing-050);
8002
+ transform-origin: top center;
8003
+ --_menu-enter-duration: var(--duration-medium1, 250ms);
8004
+ --_menu-exit-duration: var(--duration-short4, 200ms);
8005
+ --_menu-enter-easing: cubic-bezier(0.05, 0.7, 0.1, 1);
8006
+ --_menu-exit-easing: cubic-bezier(0.3, 0, 0.8, 0.15);
8007
+ transition-property: opacity, transform, visibility;
8008
+ transition-duration: var(--_menu-exit-duration), var(--_menu-exit-duration), 0ms;
8009
+ transition-delay: 0ms, 0ms, var(--_menu-exit-duration);
8010
+ transition-timing-function: var(--_menu-exit-easing), var(--_menu-exit-easing), linear;
7563
8011
  }
7564
8012
  .menu.closed {
7565
- display: none;
7566
8013
  opacity: 0;
7567
8014
  visibility: hidden;
7568
8015
  pointer-events: none;
8016
+ transform: translateY(-4px) scale(0.97);
7569
8017
  }
7570
8018
  .menu.open {
7571
- display: flex;
7572
8019
  opacity: 1;
7573
8020
  visibility: visible;
7574
8021
  pointer-events: auto;
8022
+ transform: translateY(0) scale(1);
8023
+ transition-duration: var(--_menu-enter-duration), var(--_menu-enter-duration), 0ms;
8024
+ transition-delay: 0ms, 0ms, 0ms;
8025
+ transition-timing-function: var(--_menu-enter-easing), var(--_menu-enter-easing), linear;
7575
8026
  }
7576
8027
  .menu .menu-content {
7577
8028
  display: flex;
@@ -7617,6 +8068,12 @@ var css_248z$e = i`* {
7617
8068
  --elevation-container-shape-variant: var(--_container-corner-shape-variant);
7618
8069
  }
7619
8070
 
8071
+ @media (prefers-reduced-motion: reduce) {
8072
+ .menu {
8073
+ transition: none;
8074
+ transform: none;
8075
+ }
8076
+ }
7620
8077
  .menu {
7621
8078
  --_container-shape-start-start: var(--shape-corner-large);
7622
8079
  --_container-shape-start-end: var(--shape-corner-large);
@@ -7630,7 +8087,7 @@ var css_248z$e = i`* {
7630
8087
  --_container-color: var(--color-tertiary-container);
7631
8088
  }`;
7632
8089
 
7633
- var css_248z$d = i`* {
8090
+ var css_248z$f = i`* {
7634
8091
  box-sizing: border-box;
7635
8092
  }
7636
8093
 
@@ -7640,6 +8097,7 @@ var css_248z$d = i`* {
7640
8097
 
7641
8098
  :host {
7642
8099
  padding-inline: var(--spacing-050);
8100
+ outline: none;
7643
8101
  }
7644
8102
 
7645
8103
  .menu-item {
@@ -7741,7 +8199,7 @@ var css_248z$d = i`* {
7741
8199
  display: none;
7742
8200
  }`;
7743
8201
 
7744
- var css_248z$c = i`:host-context([variant=standard]) {
8202
+ var css_248z$e = i`:host-context([variant=standard]) {
7745
8203
  --menu-item-label-color: var(--color-on-surface-variant);
7746
8204
  --menu-item-label-selected-color: var(--color-on-tertiary-container);
7747
8205
  --menu-item-container-selected-color: var(--color-tertiary-container);
@@ -7855,9 +8313,6 @@ class MenuItem extends i$1 {
7855
8313
  __isLink() {
7856
8314
  return !!this.href;
7857
8315
  }
7858
- get focusTarget() {
7859
- return this;
7860
- }
7861
8316
  render() {
7862
8317
  const isLink = this.__isLink();
7863
8318
  const cssClasses = {
@@ -7891,11 +8346,7 @@ class MenuItem extends i$1 {
7891
8346
  }
7892
8347
  renderContent() {
7893
8348
  return b `
7894
- <wc-focus-ring
7895
- class="focus-ring"
7896
- .control=${this}
7897
- element="focusTarget"
7898
- ></wc-focus-ring>
8349
+ <wc-focus-ring class="focus-ring" .control=${this} .forElement=${this}></wc-focus-ring>
7899
8350
  <div class="background"></div>
7900
8351
  <wc-ripple class="ripple"></wc-ripple>
7901
8352
 
@@ -7909,7 +8360,7 @@ class MenuItem extends i$1 {
7909
8360
  `;
7910
8361
  }
7911
8362
  }
7912
- MenuItem.styles = [css_248z$d, css_248z$c];
8363
+ MenuItem.styles = [css_248z$f, css_248z$e];
7913
8364
  __decorate([
7914
8365
  n({ type: Boolean, reflect: true })
7915
8366
  ], MenuItem.prototype, "disabled", void 0);
@@ -8005,8 +8456,13 @@ class Menu extends i$1 {
8005
8456
  this._closeReason = { kind: 'programmatic' };
8006
8457
  this._onItemActivate = (event) => {
8007
8458
  const customEvent = event;
8459
+ const { item } = customEvent.detail;
8460
+ const ownedItems = this.items;
8461
+ if (!ownedItems.includes(item)) {
8462
+ return;
8463
+ }
8008
8464
  const enabledItems = this._enabledItems();
8009
- const nextIndex = enabledItems.indexOf(customEvent.detail.item);
8465
+ const nextIndex = enabledItems.indexOf(item);
8010
8466
  if (nextIndex >= 0) {
8011
8467
  this.activeIndex = nextIndex;
8012
8468
  this._syncRovingTabIndex();
@@ -8014,6 +8470,9 @@ class Menu extends i$1 {
8014
8470
  };
8015
8471
  this._onItemRequestClose = (event) => {
8016
8472
  const customEvent = event;
8473
+ if (!this.items.includes(customEvent.detail.item)) {
8474
+ return;
8475
+ }
8017
8476
  if (customEvent.defaultPrevented) {
8018
8477
  return;
8019
8478
  }
@@ -8027,6 +8486,9 @@ class Menu extends i$1 {
8027
8486
  if (!this.open) {
8028
8487
  return;
8029
8488
  }
8489
+ if (!this._ownsKeyboardEvent(event)) {
8490
+ return;
8491
+ }
8030
8492
  switch (event.key) {
8031
8493
  case 'ArrowDown':
8032
8494
  event.preventDefault();
@@ -8175,7 +8637,6 @@ class Menu extends i$1 {
8175
8637
  for (let index = 0; index < enabledItems.length; index += 1) {
8176
8638
  const currentItem = enabledItems[index];
8177
8639
  currentItem.tabIndex = index === this.activeIndex ? 0 : -1;
8178
- currentItem.selected = index === this.activeIndex;
8179
8640
  }
8180
8641
  }
8181
8642
  _setActiveByOffset(offset) {
@@ -8212,6 +8673,11 @@ class Menu extends i$1 {
8212
8673
  _getFirstEnabledItem() {
8213
8674
  return this._enabledItems()[0] ?? null;
8214
8675
  }
8676
+ _ownsKeyboardEvent(event) {
8677
+ const path = event.composedPath();
8678
+ const ownedItems = this.items;
8679
+ return path.some(target => target instanceof MenuItem && ownedItems.includes(target));
8680
+ }
8215
8681
  _isWithinMenuTree(node) {
8216
8682
  if (!node) {
8217
8683
  return false;
@@ -8309,7 +8775,7 @@ class Menu extends i$1 {
8309
8775
  </div>`;
8310
8776
  }
8311
8777
  }
8312
- Menu.styles = [css_248z$e];
8778
+ Menu.styles = [css_248z$g];
8313
8779
  Menu.Item = MenuItem;
8314
8780
  __decorate([
8315
8781
  n({ type: Boolean, reflect: true })
@@ -8342,7 +8808,7 @@ __decorate([
8342
8808
  e$4('.menu')
8343
8809
  ], Menu.prototype, "menuListElement", void 0);
8344
8810
 
8345
- var css_248z$b = i`* {
8811
+ var css_248z$d = i`* {
8346
8812
  box-sizing: border-box;
8347
8813
  }
8348
8814
 
@@ -8536,7 +9002,7 @@ class SubMenu extends i$1 {
8536
9002
  `;
8537
9003
  }
8538
9004
  }
8539
- SubMenu.styles = [css_248z$b];
9005
+ SubMenu.styles = [css_248z$d];
8540
9006
  __decorate([
8541
9007
  n({ type: Number, attribute: 'hover-open-delay' })
8542
9008
  ], SubMenu.prototype, "hoverOpenDelay", void 0);
@@ -8556,7 +9022,7 @@ __decorate([
8556
9022
  o$2({ slot: 'menu' })
8557
9023
  ], SubMenu.prototype, "_menus", void 0);
8558
9024
 
8559
- var css_248z$a = i`@charset "UTF-8";
9025
+ var css_248z$c = i`@charset "UTF-8";
8560
9026
  :host {
8561
9027
  display: block;
8562
9028
  height: 100%;
@@ -8713,7 +9179,7 @@ class Image extends i$1 {
8713
9179
  `;
8714
9180
  }
8715
9181
  }
8716
- Image.styles = [css_248z$a];
9182
+ Image.styles = [css_248z$c];
8717
9183
  __decorate([
8718
9184
  n({ reflect: true })
8719
9185
  ], Image.prototype, "src", void 0);
@@ -8736,7 +9202,7 @@ __decorate([
8736
9202
  r()
8737
9203
  ], Image.prototype, "_previewOpen", void 0);
8738
9204
 
8739
- var css_248z$9 = i`* {
9205
+ var css_248z$b = i`* {
8740
9206
  box-sizing: border-box;
8741
9207
  }
8742
9208
 
@@ -8765,7 +9231,7 @@ var css_248z$9 = i`* {
8765
9231
  flex-direction: column;
8766
9232
  align-items: center;
8767
9233
  justify-content: center;
8768
- height: var(--_tab-height);
9234
+ height: 100%;
8769
9235
  padding: 0 var(--_container-padding);
8770
9236
  width: 100%;
8771
9237
  cursor: pointer;
@@ -8780,43 +9246,47 @@ var css_248z$9 = i`* {
8780
9246
  display: flex;
8781
9247
  align-items: center;
8782
9248
  justify-content: center;
8783
- gap: 0;
8784
9249
  width: 100%;
8785
9250
  height: 100%;
8786
9251
  z-index: 0;
8787
9252
  color: var(--_label-text-color);
8788
9253
  opacity: var(--_label-text-opacity, 1);
9254
+ transition: color var(--duration-short4) var(--easing-standard), opacity var(--duration-short4) var(--easing-standard);
8789
9255
  --icon-size: var(--tab-icon-size, var(--_tab-icon-size));
8790
9256
  --icon-color: var(--_label-text-color);
8791
9257
  }
8792
- .tab .tab-content .slot-container {
8793
- display: none;
8794
- }
8795
9258
  .tab .tab-content ::slotted([slot=icon]) {
8796
- flex: none;
8797
9259
  color: var(--_label-text-color);
8798
9260
  --icon-size: var(--tab-icon-size, var(--_tab-icon-size));
8799
9261
  --icon-color: var(--_label-text-color);
8800
9262
  }
8801
9263
  .tab .tab-content ::slotted([slot=badge]) {
8802
- flex: none;
8803
- margin-inline-start: var(--_tab-badge-label-spacing, 0);
8804
9264
  --badge-color: var(--_tab-badge-color, var(--color-error));
8805
9265
  }
8806
- .tab.has-icon .tab-content {
8807
- gap: var(--_tab-icon-label-spacing);
8808
- }
8809
9266
  .tab .indicator {
8810
9267
  position: absolute;
8811
9268
  pointer-events: none;
8812
9269
  z-index: 1;
8813
- opacity: 0;
8814
9270
  background: var(--_active-indicator-color);
8815
9271
  border-radius: var(--_active-indicator-shape);
8816
- transform-origin: left bottom;
9272
+ transform: scaleX(0.6);
9273
+ transform-origin: center bottom;
8817
9274
  height: var(--_active-indicator-height);
8818
9275
  inset: auto 0px 0px;
8819
9276
  opacity: 0;
9277
+ transition: transform var(--duration-medium2) var(--easing-standard), opacity var(--duration-short4) var(--easing-standard);
9278
+ will-change: transform, opacity;
9279
+ }
9280
+ .tab .background {
9281
+ position: absolute;
9282
+ inset: 0;
9283
+ pointer-events: none;
9284
+ z-index: 0;
9285
+ opacity: 0;
9286
+ transform: scaleX(0.6);
9287
+ transform-origin: center center;
9288
+ transition: transform var(--duration-medium2) var(--easing-standard), opacity var(--duration-short4) var(--easing-standard), background-color var(--duration-short4) var(--easing-standard);
9289
+ will-change: transform, opacity;
8820
9290
  }
8821
9291
  .tab.has-content .slot-container {
8822
9292
  display: flex;
@@ -8858,8 +9328,7 @@ var css_248z$9 = i`* {
8858
9328
  border-end-end-radius: var(--_container-shape-end-end);
8859
9329
  }
8860
9330
 
8861
- :host-context([variant=line]) .tab {
8862
- --_tab-height: 100%;
9331
+ :host-context([variant=primary]) .tab {
8863
9332
  --_container-padding: 1rem;
8864
9333
  --_tab-icon-size: 1.5rem;
8865
9334
  --_tab-icon-label-spacing: 0.5rem;
@@ -8873,33 +9342,49 @@ var css_248z$9 = i`* {
8873
9342
  --_container-shape-end-end: var(--shape-corner-small);
8874
9343
  --_active-indicator-color: var(--color-primary);
8875
9344
  --_active-indicator-shape: 3px 3px 0 0;
8876
- --_active-indicator-height: 3px;
9345
+ --_active-indicator-height: 2px;
8877
9346
  }
8878
- :host-context([variant=line]) .tab .focus-ring {
9347
+ :host-context([variant=primary]) .tab .focus-ring {
8879
9348
  inset: 3px 3px 4px 3px;
8880
9349
  }
8881
- :host-context([variant=line]) .tab.active .tab-content .indicator {
9350
+ :host-context([variant=primary]) .tab .tab-content {
9351
+ flex-direction: column;
9352
+ }
9353
+ :host-context([variant=primary]) .tab .tab-content .icon-section {
9354
+ position: relative;
9355
+ }
9356
+ :host-context([variant=primary]) .tab .tab-content .icon-section ::slotted([slot=badge]) {
9357
+ position: absolute;
9358
+ top: 0;
9359
+ left: calc(100% - 3px);
9360
+ }
9361
+ :host-context([variant=primary]) .tab .tab-content .icon-section ::slotted([slot=badge][value]) {
9362
+ position: absolute;
9363
+ top: 0;
9364
+ left: calc(100% - 6px);
9365
+ }
9366
+ :host-context([variant=primary]) .tab.active .indicator {
8882
9367
  opacity: 1;
9368
+ transform: scaleX(1);
8883
9369
  }
8884
- :host-context([variant=line]) .tab.active .focus-ring {
9370
+ :host-context([variant=primary]) .tab.active .focus-ring {
8885
9371
  inset: 3px 3px calc(4px + var(--_active-indicator-height)) 3px;
8886
9372
  }
8887
- :host-context([variant=line]) .tab:hover:not(:where(.disabled)) {
9373
+ :host-context([variant=primary]) .tab:hover:not(:where(.disabled)) {
8888
9374
  --_container-state-opacity: 0.08;
8889
9375
  }
8890
- :host-context([variant=line]) .tab.pressed:not(:where(.disabled)) {
9376
+ :host-context([variant=primary]) .tab.pressed:not(:where(.disabled)) {
8891
9377
  --_container-state-opacity: 0.12;
8892
9378
  }
8893
- :host-context([variant=line]) .tab.disabled {
9379
+ :host-context([variant=primary]) .tab.disabled {
8894
9380
  --_label-text-color: var(--color-on-surface);
8895
9381
  --_label-text-opacity: 0.38;
8896
9382
  }
8897
- :host-context([variant=line]) .tab.disabled .ripple {
9383
+ :host-context([variant=primary]) .tab.disabled .ripple {
8898
9384
  display: none;
8899
9385
  }
8900
9386
 
8901
- :host-context([variant=line-secondary]) .tab {
8902
- --_tab-height: 100%;
9387
+ :host-context([variant=secondary]) .tab {
8903
9388
  --_container-padding: 1rem;
8904
9389
  --_tab-icon-size: 1.25rem;
8905
9390
  --_tab-icon-label-spacing: 0.5rem;
@@ -8915,27 +9400,169 @@ var css_248z$9 = i`* {
8915
9400
  --_active-indicator-shape: 0;
8916
9401
  --_active-indicator-height: 2px;
8917
9402
  }
8918
- :host-context([variant=line-secondary]) .tab .focus-ring {
9403
+ :host-context([variant=secondary]) .tab .focus-ring {
8919
9404
  inset: 3px 3px 4px 3px;
8920
9405
  }
8921
- :host-context([variant=line-secondary]) .tab.active .indicator.secondary {
9406
+ :host-context([variant=secondary]) .tab .tab-content ::slotted([slot=icon]) {
9407
+ margin-inline-end: var(--_tab-icon-label-spacing);
9408
+ }
9409
+ :host-context([variant=secondary]) .tab .tab-content ::slotted([slot=badge]) {
9410
+ margin-inline-start: var(--_tab-badge-label-spacing);
9411
+ }
9412
+ :host-context([variant=secondary]) .tab.active .indicator {
8922
9413
  opacity: 1;
9414
+ transform: scaleX(1);
8923
9415
  }
8924
- :host-context([variant=line-secondary]) .tab.active .focus-ring {
9416
+ :host-context([variant=secondary]) .tab.active .focus-ring {
8925
9417
  inset: 3px 3px calc(4px + var(--_active-indicator-height)) 3px;
8926
9418
  }
8927
- :host-context([variant=line-secondary]) .tab:hover:not(:where(.disabled)) {
9419
+ :host-context([variant=secondary]) .tab:hover:not(:where(.disabled)) {
9420
+ --_container-state-opacity: 0.08;
9421
+ }
9422
+ :host-context([variant=secondary]) .tab.pressed:not(:where(.disabled)) {
9423
+ --_container-state-opacity: 0.12;
9424
+ }
9425
+ :host-context([variant=secondary]) .tab.disabled {
9426
+ --_label-text-color: var(--color-on-surface);
9427
+ --_label-text-opacity: 0.38;
9428
+ }
9429
+ :host-context([variant=secondary]) .tab.disabled .ripple {
9430
+ display: none;
9431
+ }
9432
+
9433
+ :host-context([variant=filled]) .tab {
9434
+ --_container-padding: 1rem;
9435
+ --_tab-icon-size: 1.25rem;
9436
+ --_tab-icon-label-spacing: 0.5rem;
9437
+ --_tab-badge-label-spacing: 0.25rem;
9438
+ --_tab-badge-color: var(--color-error);
9439
+ --_label-text-color: var(--color-on-surface-variant);
9440
+ --_container-state-color: var(--color-on-surface);
9441
+ --_container-shape-start-start: var(--shape-corner-medium);
9442
+ --_container-shape-start-end: var(--shape-corner-medium);
9443
+ --_container-shape-end-start: var(--shape-corner-medium);
9444
+ --_container-shape-end-end: var(--shape-corner-medium);
9445
+ --_container-corner-shape-variant: squircle;
9446
+ --_active-surface-color: var(--color-surface);
9447
+ }
9448
+ :host-context([variant=filled]) .tab .focus-ring {
9449
+ inset: 2px;
9450
+ }
9451
+ :host-context([variant=filled]) .tab .tab-content ::slotted([slot=icon]) {
9452
+ margin-inline-end: var(--_tab-icon-label-spacing);
9453
+ }
9454
+ :host-context([variant=filled]) .tab .tab-content ::slotted([slot=badge]) {
9455
+ margin-inline-start: var(--_tab-badge-label-spacing);
9456
+ }
9457
+ :host-context([variant=filled]) .tab .indicator {
9458
+ display: none;
9459
+ }
9460
+ :host-context([variant=filled]) .tab .ripple {
9461
+ border-start-start-radius: var(--_container-shape-start-start);
9462
+ border-start-end-radius: var(--_container-shape-start-end);
9463
+ border-end-start-radius: var(--_container-shape-end-start);
9464
+ border-end-end-radius: var(--_container-shape-end-end);
9465
+ }
9466
+ :host-context([variant=filled]) .tab .background {
9467
+ corner-shape: var(--_container-corner-shape-variant);
9468
+ border-start-start-radius: var(--_container-shape-start-start);
9469
+ border-start-end-radius: var(--_container-shape-start-end);
9470
+ border-end-start-radius: var(--_container-shape-end-start);
9471
+ border-end-end-radius: var(--_container-shape-end-end);
9472
+ background: var(--_active-surface-color);
9473
+ }
9474
+ :host-context([variant=filled]) .tab.active {
9475
+ --_label-text-color: var(--color-on-surface);
9476
+ }
9477
+ :host-context([variant=filled]) .tab.active .background {
9478
+ opacity: 1;
9479
+ transform: scaleX(1);
9480
+ }
9481
+ :host-context([variant=filled]) .tab.active .ripple {
9482
+ display: none;
9483
+ }
9484
+ :host-context([variant=filled]) .tab:hover:not(:where(.disabled)) {
9485
+ --_container-state-opacity: 0.08;
9486
+ }
9487
+ :host-context([variant=filled]) .tab.pressed:not(:where(.disabled)) {
9488
+ --_container-state-opacity: 0.12;
9489
+ }
9490
+ :host-context([variant=filled]) .tab.disabled {
9491
+ --_label-text-color: var(--color-on-surface);
9492
+ --_label-text-opacity: 0.38;
9493
+ }
9494
+ :host-context([variant=filled]) .tab.disabled .ripple {
9495
+ display: none;
9496
+ }
9497
+
9498
+ :host-context([variant=contained]) .tab {
9499
+ --_container-padding: 1rem;
9500
+ --_tab-icon-size: 1.25rem;
9501
+ --_tab-icon-label-spacing: 0.5rem;
9502
+ --_tab-badge-label-spacing: 0.25rem;
9503
+ --_tab-badge-color: var(--color-error);
9504
+ --_label-text-color: var(--color-on-surface);
9505
+ --_container-state-color: var(--color-primary);
9506
+ --_container-shape-start-start: var(--shape-corner-small);
9507
+ --_container-shape-start-end: var(--shape-corner-small);
9508
+ --_container-shape-end-start: var(--shape-corner-small);
9509
+ --_container-shape-end-end: var(--shape-corner-small);
9510
+ --_container-corner-shape-variant: squircle;
9511
+ --_active-surface-color: var(--color-secondary-container);
9512
+ }
9513
+ :host-context([variant=contained]) .tab .focus-ring {
9514
+ inset: 2px;
9515
+ }
9516
+ :host-context([variant=contained]) .tab .tab-content ::slotted([slot=icon]) {
9517
+ margin-inline-end: var(--_tab-icon-label-spacing);
9518
+ }
9519
+ :host-context([variant=contained]) .tab .tab-content ::slotted([slot=badge]) {
9520
+ margin-inline-start: var(--_tab-badge-label-spacing);
9521
+ }
9522
+ :host-context([variant=contained]) .tab .indicator {
9523
+ display: none;
9524
+ }
9525
+ :host-context([variant=contained]) .tab .ripple {
9526
+ border-start-start-radius: var(--_container-shape-start-start);
9527
+ border-start-end-radius: var(--_container-shape-start-end);
9528
+ border-end-start-radius: var(--_container-shape-end-start);
9529
+ border-end-end-radius: var(--_container-shape-end-end);
9530
+ }
9531
+ :host-context([variant=contained]) .tab .background {
9532
+ corner-shape: var(--_container-corner-shape-variant);
9533
+ border-start-start-radius: var(--_container-shape-start-start);
9534
+ border-start-end-radius: var(--_container-shape-start-end);
9535
+ border-end-start-radius: var(--_container-shape-end-start);
9536
+ border-end-end-radius: var(--_container-shape-end-end);
9537
+ background: var(--_active-surface-color);
9538
+ }
9539
+ :host-context([variant=contained]) .tab.active {
9540
+ --_label-text-color: var(--color-on-secondary-container);
9541
+ }
9542
+ :host-context([variant=contained]) .tab.active .background {
9543
+ opacity: 1;
9544
+ transform: scaleX(1);
9545
+ }
9546
+ :host-context([variant=contained]) .tab:hover:not(:where(.disabled)) {
8928
9547
  --_container-state-opacity: 0.08;
8929
9548
  }
8930
- :host-context([variant=line-secondary]) .tab.pressed:not(:where(.disabled)) {
9549
+ :host-context([variant=contained]) .tab.pressed:not(:where(.disabled)) {
8931
9550
  --_container-state-opacity: 0.12;
8932
9551
  }
8933
- :host-context([variant=line-secondary]) .tab.disabled {
9552
+ :host-context([variant=contained]) .tab.disabled {
8934
9553
  --_label-text-color: var(--color-on-surface);
8935
9554
  --_label-text-opacity: 0.38;
8936
9555
  }
8937
- :host-context([variant=line-secondary]) .tab.disabled .ripple {
9556
+ :host-context([variant=contained]) .tab.disabled .ripple {
8938
9557
  display: none;
9558
+ }
9559
+
9560
+ @media (prefers-reduced-motion: reduce) {
9561
+ .tab .tab-content,
9562
+ .tab .indicator,
9563
+ .tab .background {
9564
+ transition: none;
9565
+ }
8939
9566
  }`;
8940
9567
 
8941
9568
  var _Tab_id;
@@ -9022,7 +9649,7 @@ class Tab extends i$1 {
9022
9649
  }
9023
9650
  firstUpdated() {
9024
9651
  this.__dispatchClickWithThrottle = throttle(this.__dispatchClick, this.throttleDelay);
9025
- observerSlotChangesWithCallback(this.renderRoot.querySelector('slot'), hasContent => {
9652
+ observerSlotChangesWithCallback(this.renderRoot.querySelector('slot:not([name])'), hasContent => {
9026
9653
  this.slotHasContent = hasContent;
9027
9654
  this.requestUpdate();
9028
9655
  });
@@ -9038,6 +9665,9 @@ class Tab extends i$1 {
9038
9665
  __isLink() {
9039
9666
  return !!this.href;
9040
9667
  }
9668
+ __getParentTabsVariant() {
9669
+ return this.closest('wc-tabs')?.variant ?? 'primary';
9670
+ }
9041
9671
  // private handleKeyDown(evt: KeyboardEvent) {
9042
9672
  // if (this.disabled || this.showLoader) return;
9043
9673
  // if (evt.key === 'Enter' || evt.key === ' ') {
@@ -9048,13 +9678,15 @@ class Tab extends i$1 {
9048
9678
  // }
9049
9679
  render() {
9050
9680
  const isLink = this.__isLink();
9681
+ const variant = this.__getParentTabsVariant();
9051
9682
  const cssClasses = {
9052
9683
  tab: true,
9053
9684
  'tab-element': true,
9054
9685
  disabled: this.disabled,
9055
9686
  pressed: this.isPressed,
9056
9687
  active: this.active,
9057
- 'has-content': this.slotHasContent || !!this.label,
9688
+ [`variant-${variant}`]: true,
9689
+ 'has-content': this.slotHasContent,
9058
9690
  'has-icon': this.slotHasIcon,
9059
9691
  'has-badge': this.slotHasBadge,
9060
9692
  };
@@ -9070,7 +9702,7 @@ class Tab extends i$1 {
9070
9702
  ?disabled=${this.disabled}
9071
9703
  ${spread(this.configAria)}
9072
9704
  >
9073
- ${this.renderTabContent()}
9705
+ ${this.renderTabContent(variant)}
9074
9706
  </button>`;
9075
9707
  }
9076
9708
  return b `<a
@@ -9087,30 +9719,94 @@ class Tab extends i$1 {
9087
9719
  aria-disabled=${`${this.disabled}`}
9088
9720
  ${spread(this.configAria)}
9089
9721
  >
9090
- ${this.renderTabContent()}
9722
+ ${this.renderTabContent(variant)}
9091
9723
  </a>`;
9092
9724
  }
9093
- renderTabContent() {
9725
+ renderTabContent(variant) {
9726
+ switch (variant) {
9727
+ case 'secondary':
9728
+ return this.renderSecondaryTabContent();
9729
+ case 'contained':
9730
+ return this.renderContainedTabContent();
9731
+ case 'filled':
9732
+ return this.renderFilledTabContent();
9733
+ case 'primary':
9734
+ default:
9735
+ return this.renderPrimaryTabContent();
9736
+ }
9737
+ }
9738
+ renderPrimaryTabContent() {
9739
+ return b `
9740
+ <wc-focus-ring class="focus-ring" .control=${this} .forElement=${this.tabElement}></wc-focus-ring>
9741
+ <wc-elevation class="elevation"></wc-elevation>
9742
+ <div class="background"></div>
9743
+ <div class="outline"></div>
9744
+ <wc-ripple class="ripple"></wc-ripple>
9745
+
9746
+ <div class="tab-content">
9747
+
9748
+ <div class="icon-section">
9749
+ <slot name="badge"></slot>
9750
+ <slot name="icon"></slot>
9751
+ </div>
9752
+ <div class="slot-container">
9753
+ <slot></slot>
9754
+ </div>
9755
+
9756
+ <div class="indicator"></div>
9757
+
9758
+ </div>
9759
+
9760
+ ${this.__renderDisabledReason()}
9761
+ `;
9762
+ }
9763
+ renderSecondaryTabContent() {
9094
9764
  return b `
9095
- <wc-focus-ring class="focus-ring" .control=${this} element="tabElement"></wc-focus-ring>
9765
+ <wc-focus-ring class="focus-ring" .control=${this} .forElement=${this.tabElement}></wc-focus-ring>
9096
9766
  <wc-elevation class="elevation"></wc-elevation>
9097
9767
  <div class="background"></div>
9098
9768
  <div class="outline"></div>
9099
9769
  <wc-ripple class="ripple"></wc-ripple>
9100
9770
 
9101
9771
  <div class="tab-content">
9772
+
9102
9773
  <slot name="icon"></slot>
9103
9774
 
9104
9775
  <div class="slot-container">
9105
- <slot>${this.label || A}</slot>
9776
+ <slot></slot>
9106
9777
  </div>
9107
9778
 
9108
9779
  <slot name="badge"></slot>
9109
-
9110
- <div class="indicator"></div>
9111
9780
  </div>
9112
9781
 
9113
- <div class="secondary indicator"></div>
9782
+ <div class="indicator"></div>
9783
+
9784
+ ${this.__renderDisabledReason()}
9785
+ `;
9786
+ }
9787
+ renderContainedTabContent() {
9788
+ return this.renderSegmentedTabContent();
9789
+ }
9790
+ renderFilledTabContent() {
9791
+ return this.renderSegmentedTabContent();
9792
+ }
9793
+ renderSegmentedTabContent() {
9794
+ return b `
9795
+ <wc-focus-ring class="focus-ring" .control=${this} .forElement=${this.tabElement}></wc-focus-ring>
9796
+ <wc-elevation class="elevation"></wc-elevation>
9797
+ <div class="background"></div>
9798
+ <div class="outline"></div>
9799
+ <wc-ripple class="ripple"></wc-ripple>
9800
+
9801
+ <div class="tab-content">
9802
+ <slot name="icon"></slot>
9803
+
9804
+ <div class="slot-container">
9805
+ <slot></slot>
9806
+ </div>
9807
+
9808
+ <slot name="badge"></slot>
9809
+ </div>
9114
9810
 
9115
9811
  ${this.__renderDisabledReason()}
9116
9812
  `;
@@ -9135,7 +9831,7 @@ class Tab extends i$1 {
9135
9831
  }
9136
9832
  }
9137
9833
  _Tab_id = new WeakMap();
9138
- Tab.styles = [css_248z$9];
9834
+ Tab.styles = [css_248z$b];
9139
9835
  __decorate([
9140
9836
  n({ type: Boolean, reflect: true })
9141
9837
  ], Tab.prototype, "active", void 0);
@@ -9145,9 +9841,6 @@ __decorate([
9145
9841
  __decorate([
9146
9842
  n({ type: String })
9147
9843
  ], Tab.prototype, "disabledReason", void 0);
9148
- __decorate([
9149
- n({ type: String })
9150
- ], Tab.prototype, "label", void 0);
9151
9844
  __decorate([
9152
9845
  n({ type: String })
9153
9846
  ], Tab.prototype, "value", void 0);
@@ -9182,7 +9875,7 @@ __decorate([
9182
9875
  e$4('.tab-element')
9183
9876
  ], Tab.prototype, "tabElement", void 0);
9184
9877
 
9185
- var css_248z$8 = i`* {
9878
+ var css_248z$a = i`* {
9186
9879
  box-sizing: border-box;
9187
9880
  }
9188
9881
 
@@ -9196,7 +9889,7 @@ var css_248z$8 = i`* {
9196
9889
  height: 100%;
9197
9890
  }`;
9198
9891
 
9199
- var css_248z$7 = i`* {
9892
+ var css_248z$9 = i`* {
9200
9893
  box-sizing: border-box;
9201
9894
  }
9202
9895
 
@@ -9208,14 +9901,44 @@ var css_248z$7 = i`* {
9208
9901
  display: flex;
9209
9902
  position: relative;
9210
9903
  width: 100%;
9904
+ height: var(--tabs-height);
9905
+ }
9906
+
9907
+ :host([variant=primary]) {
9908
+ --tabs-height: 4rem;
9909
+ }
9910
+ :host([variant=primary]) .tabs {
9911
+ border-bottom: 1px solid var(--color-surface-variant);
9211
9912
  }
9212
9913
 
9213
- :host-context([variant=line]), :host([variant=line]) {
9914
+ :host([variant=secondary]) {
9214
9915
  --tabs-height: 3rem;
9215
9916
  }
9216
- :host-context([variant=line]) .tabs, :host([variant=line]) .tabs {
9217
- height: var(--tabs-height);
9917
+ :host([variant=secondary]) .tabs {
9218
9918
  border-bottom: 1px solid var(--color-surface-variant);
9919
+ }
9920
+
9921
+ :host([variant=filled]) {
9922
+ --tabs-height: 3rem;
9923
+ }
9924
+ :host([variant=filled]) .tabs {
9925
+ align-items: stretch;
9926
+ gap: 0.25rem;
9927
+ padding: 0.25rem;
9928
+ border-radius: var(--shape-corner-small);
9929
+ background: var(--color-surface-container-high);
9930
+ }
9931
+
9932
+ :host([variant=contained]) {
9933
+ --tabs-height: 3rem;
9934
+ }
9935
+ :host([variant=contained]) .tabs {
9936
+ align-items: stretch;
9937
+ gap: 0.25rem;
9938
+ padding: 0.25rem;
9939
+ border-radius: var(--shape-corner-extra-small);
9940
+ border: 1px solid var(--color-outline-variant);
9941
+ background: var(--color-surface);
9219
9942
  }`;
9220
9943
 
9221
9944
  /**
@@ -9230,7 +9953,7 @@ var css_248z$7 = i`* {
9230
9953
  * @example
9231
9954
  * ```html
9232
9955
  * <wc-tabs>
9233
- * <wc-tab>Tab 1</wc-tab>
9956
+ * <wc-tab active>Tab 1</wc-tab>
9234
9957
  * <wc-tab>Tab 2</wc-tab>
9235
9958
  * </wc-tabs>
9236
9959
  * ```
@@ -9239,6 +9962,7 @@ var css_248z$7 = i`* {
9239
9962
  class Tabs extends i$1 {
9240
9963
  constructor() {
9241
9964
  super(...arguments);
9965
+ this.variant = 'primary';
9242
9966
  this.managed = false;
9243
9967
  this.__handleTabClick = (event) => {
9244
9968
  if (this.managed)
@@ -9248,7 +9972,8 @@ class Tabs extends i$1 {
9248
9972
  const clickedTab = path.find(node => node instanceof Element && node.tagName.toLowerCase() === 'wc-tab');
9249
9973
  if (!clickedTab)
9250
9974
  return;
9251
- const tabs = Array.from(this.querySelectorAll('wc-tab'));
9975
+ const previousActiveTab = this.__getActiveTab();
9976
+ const tabs = this.__getTabs();
9252
9977
  let clickedIndex = -1;
9253
9978
  for (let index = 0; index < tabs.length; index += 1) {
9254
9979
  const tab = tabs[index];
@@ -9257,6 +9982,8 @@ class Tabs extends i$1 {
9257
9982
  clickedIndex = index;
9258
9983
  }
9259
9984
  clickedTab.active = true;
9985
+ this.__animateIndicatorTransition(previousActiveTab, clickedTab);
9986
+ this.__lastActiveTab = clickedTab;
9260
9987
  this.dispatchEvent(new CustomEvent('tab-click', {
9261
9988
  bubbles: true,
9262
9989
  composed: true,
@@ -9271,10 +9998,96 @@ class Tabs extends i$1 {
9271
9998
  super.connectedCallback();
9272
9999
  this.addEventListener('click', this.__handleTabClick);
9273
10000
  }
10001
+ firstUpdated() {
10002
+ this.__mutationObserver = new MutationObserver(() => {
10003
+ this.__syncIndicatorsFromActiveState();
10004
+ });
10005
+ this.__mutationObserver.observe(this, {
10006
+ subtree: true,
10007
+ childList: true,
10008
+ attributes: true,
10009
+ attributeFilter: ['active', 'disabled'],
10010
+ });
10011
+ this.__lastActiveTab = this.__getActiveTab();
10012
+ }
10013
+ updated(changedProperties) {
10014
+ if (changedProperties.has('variant')) {
10015
+ this.__lastActiveTab = this.__getActiveTab();
10016
+ }
10017
+ }
9274
10018
  disconnectedCallback() {
10019
+ this.__mutationObserver?.disconnect();
9275
10020
  this.removeEventListener('click', this.__handleTabClick);
9276
10021
  super.disconnectedCallback();
9277
10022
  }
10023
+ __getTabs() {
10024
+ return Array.from(this.querySelectorAll('wc-tab'));
10025
+ }
10026
+ __getActiveTab() {
10027
+ return this.__getTabs().find(tab => tab.active && !tab.disabled);
10028
+ }
10029
+ static __getTabIndicator(tab) {
10030
+ if (!tab?.shadowRoot)
10031
+ return undefined;
10032
+ return tab.shadowRoot.querySelector('.indicator');
10033
+ }
10034
+ static __getTabBackground(tab) {
10035
+ if (!tab?.shadowRoot)
10036
+ return undefined;
10037
+ return tab.shadowRoot.querySelector('.background');
10038
+ }
10039
+ __getAnimationElements(previousTab, nextTab) {
10040
+ if (this.variant === 'primary' || this.variant === 'secondary') {
10041
+ return {
10042
+ previous: Tabs.__getTabIndicator(previousTab),
10043
+ next: Tabs.__getTabIndicator(nextTab),
10044
+ };
10045
+ }
10046
+ if (this.variant === 'filled' || this.variant === 'contained') {
10047
+ return {
10048
+ previous: Tabs.__getTabBackground(previousTab),
10049
+ next: Tabs.__getTabBackground(nextTab),
10050
+ };
10051
+ }
10052
+ return {
10053
+ previous: undefined,
10054
+ next: undefined,
10055
+ };
10056
+ }
10057
+ __animateIndicatorTransition(previousTab, nextTab) {
10058
+ if (!previousTab || !nextTab || previousTab === nextTab)
10059
+ return;
10060
+ const { previous: previousAnimationElement, next: nextAnimationElement } = this.__getAnimationElements(previousTab, nextTab);
10061
+ if (!previousAnimationElement || !nextAnimationElement)
10062
+ return;
10063
+ const previousRect = previousTab.getBoundingClientRect();
10064
+ const nextRect = nextTab.getBoundingClientRect();
10065
+ const incomingOffset = previousRect.left - nextRect.left;
10066
+ const outgoingOffset = nextRect.left - previousRect.left;
10067
+ const incomingScale = previousRect.width / nextRect.width;
10068
+ const outgoingScale = nextRect.width / previousRect.width;
10069
+ nextAnimationElement.style.transition = 'none';
10070
+ nextAnimationElement.style.opacity = '0';
10071
+ nextAnimationElement.style.transform = `translateX(${incomingOffset}px) scaleX(${incomingScale})`;
10072
+ previousAnimationElement.style.transition = 'none';
10073
+ previousAnimationElement.style.opacity = '1';
10074
+ previousAnimationElement.style.transform = 'translateX(0) scaleX(1)';
10075
+ requestAnimationFrame(() => {
10076
+ nextAnimationElement.style.transition = '';
10077
+ previousAnimationElement.style.transition = '';
10078
+ nextAnimationElement.style.opacity = '1';
10079
+ nextAnimationElement.style.transform = 'translateX(0) scaleX(1)';
10080
+ previousAnimationElement.style.opacity = '0';
10081
+ previousAnimationElement.style.transform = `translateX(${outgoingOffset}px) scaleX(${outgoingScale})`;
10082
+ });
10083
+ }
10084
+ __syncIndicatorsFromActiveState() {
10085
+ const activeTab = this.__getActiveTab();
10086
+ if (this.__lastActiveTab && activeTab && this.__lastActiveTab !== activeTab) {
10087
+ this.__animateIndicatorTransition(this.__lastActiveTab, activeTab);
10088
+ }
10089
+ this.__lastActiveTab = activeTab;
10090
+ }
9278
10091
  render() {
9279
10092
  return b `
9280
10093
  <div class="tabs">
@@ -9283,13 +10096,16 @@ class Tabs extends i$1 {
9283
10096
  `;
9284
10097
  }
9285
10098
  }
9286
- Tabs.styles = [css_248z$7];
10099
+ Tabs.styles = [css_248z$9];
9287
10100
  Tabs.Tab = Tab;
10101
+ __decorate([
10102
+ n({ reflect: true })
10103
+ ], Tabs.prototype, "variant", void 0);
9288
10104
  __decorate([
9289
10105
  n({ type: Boolean })
9290
10106
  ], Tabs.prototype, "managed", void 0);
9291
10107
 
9292
- var css_248z$6 = i`* {
10108
+ var css_248z$8 = i`* {
9293
10109
  box-sizing: border-box;
9294
10110
  }
9295
10111
 
@@ -9331,7 +10147,7 @@ class TabPanel extends i$1 {
9331
10147
  return b `<slot></slot>`;
9332
10148
  }
9333
10149
  }
9334
- TabPanel.styles = [css_248z$6];
10150
+ TabPanel.styles = [css_248z$8];
9335
10151
  __decorate([
9336
10152
  n({ reflect: true })
9337
10153
  ], TabPanel.prototype, "value", void 0);
@@ -9366,7 +10182,6 @@ __decorate([
9366
10182
  class TabGroup extends i$1 {
9367
10183
  constructor() {
9368
10184
  super(...arguments);
9369
- this.variant = 'line';
9370
10185
  this.onTabClick = (event) => {
9371
10186
  const custom = event;
9372
10187
  event.stopPropagation();
@@ -9485,14 +10300,11 @@ class TabGroup extends i$1 {
9485
10300
  return b `<slot></slot>`;
9486
10301
  }
9487
10302
  }
9488
- TabGroup.styles = [css_248z$8];
10303
+ TabGroup.styles = [css_248z$a];
9489
10304
  TabGroup.Tabs = Tabs;
9490
10305
  TabGroup.TabPanel = TabPanel;
9491
- __decorate([
9492
- n({ reflect: true })
9493
- ], TabGroup.prototype, "variant", void 0);
9494
10306
 
9495
- var css_248z$5 = i`:host {
10307
+ var css_248z$7 = i`:host {
9496
10308
  --_track-height: 4px;
9497
10309
  --_thumb-size: 20px;
9498
10310
  --thumb-half: 10px;
@@ -9534,7 +10346,6 @@ var css_248z$5 = i`:host {
9534
10346
  position: absolute;
9535
10347
  height: 100%;
9536
10348
  background-color: var(--_active-track-color);
9537
- transition: width 0.1s ease-out;
9538
10349
  will-change: width;
9539
10350
  }
9540
10351
 
@@ -9765,7 +10576,7 @@ class Slider extends i$1 {
9765
10576
  `;
9766
10577
  }
9767
10578
  }
9768
- Slider.styles = [css_248z$5];
10579
+ Slider.styles = [css_248z$7];
9769
10580
  __decorate([
9770
10581
  n({ type: Number })
9771
10582
  ], Slider.prototype, "min", void 0);
@@ -9794,7 +10605,7 @@ __decorate([
9794
10605
  e$4('.thumb')
9795
10606
  ], Slider.prototype, "thumbElement", void 0);
9796
10607
 
9797
- var css_248z$4 = i`* {
10608
+ var css_248z$6 = i`* {
9798
10609
  box-sizing: border-box;
9799
10610
  }
9800
10611
 
@@ -10328,7 +11139,7 @@ class Table extends i$1 {
10328
11139
  `;
10329
11140
  }
10330
11141
  }
10331
- Table.styles = [css_248z$4];
11142
+ Table.styles = [css_248z$6];
10332
11143
  __decorate([
10333
11144
  n({ type: Array })
10334
11145
  ], Table.prototype, "columns", void 0);
@@ -10387,7 +11198,7 @@ __decorate([
10387
11198
  r()
10388
11199
  ], Table.prototype, "isHorizontallyScrolled", void 0);
10389
11200
 
10390
- var css_248z$3 = i`* {
11201
+ var css_248z$5 = i`* {
10391
11202
  box-sizing: border-box;
10392
11203
  }
10393
11204
 
@@ -10569,7 +11380,7 @@ class Pagination extends i$1 {
10569
11380
  `;
10570
11381
  }
10571
11382
  }
10572
- Pagination.styles = [css_248z$3];
11383
+ Pagination.styles = [css_248z$5];
10573
11384
  __decorate([
10574
11385
  n({ type: Number })
10575
11386
  ], Pagination.prototype, "page", void 0);
@@ -10583,7 +11394,7 @@ __decorate([
10583
11394
  n({ type: Array, attribute: 'page-sizes' })
10584
11395
  ], Pagination.prototype, "pageSizes", void 0);
10585
11396
 
10586
- var css_248z$2 = i`* {
11397
+ var css_248z$4 = i`* {
10587
11398
  box-sizing: border-box;
10588
11399
  }
10589
11400
 
@@ -10898,7 +11709,7 @@ class TreeNode extends i$1 {
10898
11709
  </div>`;
10899
11710
  }
10900
11711
  }
10901
- TreeNode.styles = [css_248z$2];
11712
+ TreeNode.styles = [css_248z$4];
10902
11713
  __decorate([
10903
11714
  n({ type: String, reflect: true })
10904
11715
  ], TreeNode.prototype, "value", void 0);
@@ -10930,7 +11741,7 @@ __decorate([
10930
11741
  e$4('.tree-node-content')
10931
11742
  ], TreeNode.prototype, "_nativeElement", void 0);
10932
11743
 
10933
- var css_248z$1 = i`* {
11744
+ var css_248z$3 = i`* {
10934
11745
  box-sizing: border-box;
10935
11746
  }
10936
11747
 
@@ -11093,13 +11904,13 @@ class TreeView extends i$1 {
11093
11904
  </div>`;
11094
11905
  }
11095
11906
  }
11096
- TreeView.styles = [css_248z$1];
11907
+ TreeView.styles = [css_248z$3];
11097
11908
  TreeView.Node = TreeNode;
11098
11909
  __decorate([
11099
11910
  n({ type: String, attribute: 'selected-node', reflect: true })
11100
11911
  ], TreeView.prototype, "selectedNode", void 0);
11101
11912
 
11102
- var css_248z = i`* {
11913
+ var css_248z$2 = i`* {
11103
11914
  box-sizing: border-box;
11104
11915
  }
11105
11916
 
@@ -11302,7 +12113,7 @@ class Snackbar extends i$1 {
11302
12113
  `;
11303
12114
  }
11304
12115
  }
11305
- Snackbar.styles = [css_248z];
12116
+ Snackbar.styles = [css_248z$2];
11306
12117
  __decorate([
11307
12118
  n({ type: Boolean, reflect: true })
11308
12119
  ], Snackbar.prototype, "open", void 0);
@@ -11322,5 +12133,1161 @@ __decorate([
11322
12133
  n({ type: Boolean, reflect: true })
11323
12134
  ], Snackbar.prototype, "multiline", void 0);
11324
12135
 
11325
- export { Accordion as A, Badge as B, Checkbox as C, DatePicker as D, Elevation as E, Field as F, TreeNode as G, TreeView as H, Icon as I, LinearProgress as L, Menu as M, NumberField as N, Pagination as P, Ripple as R, Skeleton as S, Tab as T, Avatar as a, Breadcrumb as b, BreadcrumbItem as c, Chip as d, CircularProgress as e, Container as f, Divider as g, EmptyState as h, FocusRing as i, Image as j, Input as k, Link as l, MenuItem as m, Slider as n, Snackbar as o, Spinner as p, SubMenu as q, Switch as r, TabGroup as s, TabPanel as t, Table as u, Tabs as v, Tag as w, Textarea as x, TimePicker as y, Tooltip as z };
11326
- //# sourceMappingURL=snackbar-74YCdMPL.js.map
12136
+ var css_248z$1 = i`* {
12137
+ box-sizing: border-box;
12138
+ }
12139
+
12140
+ .screen-reader-only {
12141
+ display: none !important;
12142
+ }
12143
+
12144
+ :host {
12145
+ display: inline-block;
12146
+ --radio-size: 20px;
12147
+ --radio-dot-size: 12px;
12148
+ --radio-selected-color: var(--color-primary);
12149
+ --radio-unselected-color: var(--color-on-surface-variant);
12150
+ --radio-state-layer-size: 40px;
12151
+ --radio-disabled-opacity: 0.38;
12152
+ }
12153
+
12154
+ .radio {
12155
+ position: relative;
12156
+ display: inline-flex;
12157
+ align-items: center;
12158
+ cursor: pointer;
12159
+ user-select: none;
12160
+ vertical-align: middle;
12161
+ gap: 8px;
12162
+ font-family: var(--typography-body-medium-font-family) !important;
12163
+ font-size: var(--typography-body-medium-font-size) !important;
12164
+ font-weight: var(--typography-body-medium-font-weight) !important;
12165
+ line-height: var(--typography-body-medium-line-height) !important;
12166
+ letter-spacing: var(--typography-body-medium-letter-spacing) !important;
12167
+ }
12168
+ .radio .input-native {
12169
+ position: absolute;
12170
+ width: 1px;
12171
+ height: 1px;
12172
+ padding: 0;
12173
+ margin: -1px;
12174
+ overflow: hidden;
12175
+ clip: rect(0, 0, 0, 0);
12176
+ border: 0;
12177
+ }
12178
+ .radio .container {
12179
+ position: relative;
12180
+ display: inline-flex;
12181
+ align-items: center;
12182
+ justify-content: center;
12183
+ width: var(--radio-state-layer-size);
12184
+ height: var(--radio-state-layer-size);
12185
+ cursor: inherit;
12186
+ outline: none;
12187
+ flex-shrink: 0;
12188
+ }
12189
+ .radio .state-layer {
12190
+ position: absolute;
12191
+ inset: 0;
12192
+ border-radius: 50%;
12193
+ opacity: 0;
12194
+ transition: opacity var(--duration-short2) var(--easing-standard);
12195
+ }
12196
+ .radio .outer-circle {
12197
+ position: absolute;
12198
+ width: var(--radio-size);
12199
+ height: var(--radio-size);
12200
+ border: 2px solid var(--radio-unselected-color);
12201
+ border-radius: 50%;
12202
+ box-sizing: border-box;
12203
+ transition: border-color var(--duration-short2) var(--easing-standard);
12204
+ }
12205
+ .radio .inner-circle {
12206
+ position: absolute;
12207
+ width: var(--radio-dot-size);
12208
+ height: var(--radio-dot-size);
12209
+ background: var(--radio-selected-color);
12210
+ border-radius: 50%;
12211
+ opacity: 0;
12212
+ transform: scale(0.5);
12213
+ transition: transform var(--duration-short2) var(--easing-standard), opacity var(--duration-short2) var(--easing-standard);
12214
+ }
12215
+ .radio .label {
12216
+ color: var(--color-on-surface);
12217
+ cursor: inherit;
12218
+ }
12219
+ .radio:hover:not(.disabled):not(.readonly) .state-layer {
12220
+ opacity: 0.08;
12221
+ background: var(--color-on-surface);
12222
+ }
12223
+ .radio:hover:not(.disabled):not(.readonly).state-checked .state-layer {
12224
+ background: var(--radio-selected-color);
12225
+ }
12226
+ .radio.has-focus:not(.active):not(.disabled):not(.readonly) .state-layer {
12227
+ opacity: 0.12;
12228
+ background: var(--color-on-surface);
12229
+ }
12230
+ .radio.has-focus:not(.active):not(.disabled):not(.readonly) .container {
12231
+ outline: 3px solid var(--color-primary);
12232
+ outline-offset: 2px;
12233
+ border-radius: 50%;
12234
+ }
12235
+ .radio.has-focus:not(.active):not(.disabled):not(.readonly).state-checked .state-layer {
12236
+ background: var(--radio-selected-color);
12237
+ }
12238
+ .radio.active:not(.disabled):not(.readonly) .state-layer {
12239
+ opacity: 0.12;
12240
+ background: var(--color-on-surface);
12241
+ }
12242
+ .radio.active:not(.disabled):not(.readonly).state-checked .state-layer {
12243
+ background: var(--radio-selected-color);
12244
+ }
12245
+
12246
+ .radio.state-checked .outer-circle {
12247
+ border-color: var(--radio-selected-color);
12248
+ }
12249
+ .radio.state-checked .inner-circle {
12250
+ opacity: 1;
12251
+ transform: scale(1);
12252
+ }
12253
+
12254
+ .radio.readonly {
12255
+ cursor: default;
12256
+ }
12257
+ .radio.readonly .state-layer {
12258
+ display: none;
12259
+ }
12260
+ .radio.readonly .outer-circle {
12261
+ border-color: var(--color-on-surface-variant);
12262
+ }
12263
+ .radio.readonly.state-checked .inner-circle {
12264
+ background: var(--color-on-surface-variant);
12265
+ }
12266
+
12267
+ .radio.disabled {
12268
+ cursor: not-allowed;
12269
+ opacity: var(--radio-disabled-opacity);
12270
+ }
12271
+ .radio.disabled .state-layer {
12272
+ display: none;
12273
+ }
12274
+ .radio.disabled .label {
12275
+ color: var(--color-on-surface);
12276
+ }
12277
+ .radio.disabled .outer-circle {
12278
+ border-color: var(--color-on-surface);
12279
+ }
12280
+ .radio.disabled.state-checked .inner-circle {
12281
+ background: var(--color-on-surface);
12282
+ }`;
12283
+
12284
+ class Radio extends i$1 {
12285
+ constructor() {
12286
+ super(...arguments);
12287
+ /**
12288
+ * The input field name for grouping radios.
12289
+ */
12290
+ this.name = '';
12291
+ /**
12292
+ * The submitted value when this radio is selected.
12293
+ */
12294
+ this.value = '';
12295
+ /**
12296
+ * The radio label.
12297
+ */
12298
+ this.label = '';
12299
+ /**
12300
+ * Whether the radio is selected.
12301
+ */
12302
+ this.checked = false;
12303
+ /**
12304
+ * If true, required icon is shown. Defaults to `false`.
12305
+ */
12306
+ this.required = false;
12307
+ /**
12308
+ * If true, the radio is readonly. Defaults to `false`.
12309
+ */
12310
+ this.readonly = false;
12311
+ /**
12312
+ * If true, the user cannot interact with the radio. Defaults to `false`.
12313
+ */
12314
+ this.disabled = false;
12315
+ /**
12316
+ * Configuration object for aria attributes.
12317
+ */
12318
+ this.configAria = {};
12319
+ this.hasFocus = false;
12320
+ this.isActive = false;
12321
+ this.slotHasContent = false;
12322
+ this.isGroupFocusTarget = false;
12323
+ this.windowMouseUp = () => {
12324
+ if (this.isActive) {
12325
+ this.isActive = false;
12326
+ }
12327
+ };
12328
+ this.windowKeyUp = (evt) => {
12329
+ if (this.isActive && evt.key === ' ') {
12330
+ evt.preventDefault();
12331
+ this.isActive = false;
12332
+ }
12333
+ };
12334
+ this.mouseDownHandler = () => {
12335
+ this.isActive = true;
12336
+ };
12337
+ this.keyDownHandler = (evt) => {
12338
+ if (evt.key === ' ') {
12339
+ evt.preventDefault();
12340
+ this.isActive = true;
12341
+ this.selectRadio(evt);
12342
+ }
12343
+ else if (evt.key === 'ArrowRight' || evt.key === 'ArrowDown') {
12344
+ evt.preventDefault();
12345
+ this.navigateGroup(Radio.DIRECTION_NEXT);
12346
+ }
12347
+ else if (evt.key === 'ArrowLeft' || evt.key === 'ArrowUp') {
12348
+ evt.preventDefault();
12349
+ this.navigateGroup(Radio.DIRECTION_PREVIOUS);
12350
+ }
12351
+ };
12352
+ this.clickHandler = (ev) => {
12353
+ this.selectRadio(ev);
12354
+ };
12355
+ this.blurHandler = (ev) => {
12356
+ this.hasFocus = false;
12357
+ this.dispatchEvent(new CustomEvent('blur', {
12358
+ detail: ev,
12359
+ bubbles: true,
12360
+ composed: true,
12361
+ }));
12362
+ };
12363
+ this.focusHandler = (ev) => {
12364
+ this.hasFocus = true;
12365
+ this.dispatchEvent(new CustomEvent('focus', {
12366
+ detail: ev,
12367
+ bubbles: true,
12368
+ composed: true,
12369
+ }));
12370
+ };
12371
+ }
12372
+ connectedCallback() {
12373
+ super.connectedCallback();
12374
+ this.handleInitialAttributes();
12375
+ window.addEventListener('mouseup', this.windowMouseUp);
12376
+ window.addEventListener('keyup', this.windowKeyUp);
12377
+ }
12378
+ disconnectedCallback() {
12379
+ super.disconnectedCallback();
12380
+ window.removeEventListener('mouseup', this.windowMouseUp);
12381
+ window.removeEventListener('keyup', this.windowKeyUp);
12382
+ }
12383
+ firstUpdated() {
12384
+ this.slotHasContent = this.hasChildNodes() || !!this.label;
12385
+ this.updateGroupFocusTarget();
12386
+ }
12387
+ updated(changedProps) {
12388
+ if (changedProps.has('label')) {
12389
+ this.slotHasContent = this.hasChildNodes() || !!this.label;
12390
+ }
12391
+ if (changedProps.has('checked') && this.checked) {
12392
+ this.uncheckSiblings();
12393
+ }
12394
+ if (changedProps.has('checked') || changedProps.has('name')) {
12395
+ this.updateGroupFocusTarget();
12396
+ }
12397
+ }
12398
+ handleInitialAttributes() {
12399
+ if (this.hasAttribute('tabindex')) {
12400
+ const attrValue = this.getAttribute('tabindex');
12401
+ if (attrValue !== null) {
12402
+ this.tabindex = parseInt(attrValue, 10);
12403
+ }
12404
+ this.removeAttribute('tabindex');
12405
+ }
12406
+ Array.from(this.attributes).forEach(attr => {
12407
+ if (attr.name.startsWith('aria-')) {
12408
+ this.configAria[attr.name] = attr.value;
12409
+ this.removeAttribute(attr.name);
12410
+ }
12411
+ });
12412
+ }
12413
+ selectRadio(ev) {
12414
+ if (this.disabled || this.readonly)
12415
+ return;
12416
+ if (!this.checked) {
12417
+ this.checked = true;
12418
+ this.uncheckSiblings();
12419
+ this.dispatchChange(ev);
12420
+ }
12421
+ this.containerElement?.focus();
12422
+ }
12423
+ dispatchChange(ev) {
12424
+ this.dispatchEvent(new CustomEvent('change', {
12425
+ detail: { value: this.value, checked: this.checked, originalEvent: ev },
12426
+ bubbles: true,
12427
+ composed: true,
12428
+ }));
12429
+ }
12430
+ uncheckSiblings() {
12431
+ if (!this.name || !this.checked)
12432
+ return;
12433
+ const radios = this.getGroupRadios();
12434
+ radios.forEach(radio => {
12435
+ if (radio === this)
12436
+ return;
12437
+ radio.checked = false;
12438
+ });
12439
+ }
12440
+ getGroupRadios() {
12441
+ if (!this.name)
12442
+ return [this];
12443
+ const scopeRoot = this.closest('form') ?? document;
12444
+ return Array.from(scopeRoot.querySelectorAll(`wc-radio[name="${this.name}"]`));
12445
+ }
12446
+ isRadioEnabled(radio) {
12447
+ return !radio.disabled && !radio.readonly;
12448
+ }
12449
+ updateGroupFocusTarget() {
12450
+ const group = this.getGroupRadios();
12451
+ if (!group.length)
12452
+ return;
12453
+ const enabledGroup = group.filter(radio => this.isRadioEnabled(radio));
12454
+ if (!enabledGroup.length) {
12455
+ group.forEach(radio => {
12456
+ radio.isGroupFocusTarget = false;
12457
+ });
12458
+ return;
12459
+ }
12460
+ const target = enabledGroup.find(radio => radio.checked) || enabledGroup[0];
12461
+ group.forEach(radio => {
12462
+ radio.isGroupFocusTarget = radio === target;
12463
+ });
12464
+ }
12465
+ navigateGroup(direction) {
12466
+ const group = this.getGroupRadios().filter(radio => this.isRadioEnabled(radio));
12467
+ if (!group.length)
12468
+ return;
12469
+ const currentIndex = group.indexOf(this);
12470
+ const startIndex = currentIndex >= 0 ? currentIndex : 0;
12471
+ const nextIndex = (startIndex + direction + group.length) % group.length;
12472
+ const target = group[nextIndex];
12473
+ target.selectRadio();
12474
+ target.containerElement?.focus();
12475
+ }
12476
+ /**
12477
+ * Sets focus on the radio.
12478
+ */
12479
+ focus() {
12480
+ this.containerElement?.focus();
12481
+ }
12482
+ /**
12483
+ * Removes focus from the radio.
12484
+ */
12485
+ blur() {
12486
+ this.containerElement?.blur();
12487
+ }
12488
+ render() {
12489
+ const cssClasses = {
12490
+ radio: true,
12491
+ 'state-checked': this.checked,
12492
+ 'has-focus': this.hasFocus,
12493
+ active: this.isActive,
12494
+ disabled: this.disabled,
12495
+ readonly: this.readonly,
12496
+ required: this.required,
12497
+ 'has-content': this.slotHasContent,
12498
+ };
12499
+ return b `
12500
+ <label class=${e$3(cssClasses)}>
12501
+ <div
12502
+ class="container"
12503
+ tabindex=${this.isGroupFocusTarget
12504
+ ? this.tabindex !== undefined
12505
+ ? this.tabindex
12506
+ : 0
12507
+ : -1}
12508
+ role="radio"
12509
+ aria-disabled=${this.disabled}
12510
+ aria-required=${this.required}
12511
+ aria-checked=${this.checked}
12512
+ @click=${this.clickHandler}
12513
+ @mousedown=${this.mouseDownHandler}
12514
+ @keydown=${this.keyDownHandler}
12515
+ @blur=${this.blurHandler}
12516
+ @focus=${this.focusHandler}
12517
+ ${spread(this.configAria)}
12518
+ >
12519
+ <div class="state-layer"></div>
12520
+ <div class="outer-circle"></div>
12521
+ <div class="inner-circle"></div>
12522
+ </div>
12523
+
12524
+ <input
12525
+ type="radio"
12526
+ class="input-native"
12527
+ name=${this.name}
12528
+ .value=${this.value}
12529
+ .checked=${this.checked}
12530
+ aria-hidden="true"
12531
+ ?required=${this.required}
12532
+ ?disabled=${this.disabled}
12533
+ tabindex="-1"
12534
+ />
12535
+
12536
+ ${this.label
12537
+ ? b `<div class="label">${this.label}</div>`
12538
+ : b `<div class="label slot-container"><slot></slot></div>`}
12539
+ </label>
12540
+ `;
12541
+ }
12542
+ }
12543
+ Radio.DIRECTION_NEXT = 1;
12544
+ Radio.DIRECTION_PREVIOUS = -1;
12545
+ Radio.styles = [css_248z$1];
12546
+ __decorate([
12547
+ n({ type: String })
12548
+ ], Radio.prototype, "name", void 0);
12549
+ __decorate([
12550
+ n({ type: String })
12551
+ ], Radio.prototype, "value", void 0);
12552
+ __decorate([
12553
+ n({ type: String })
12554
+ ], Radio.prototype, "label", void 0);
12555
+ __decorate([
12556
+ n({ type: Boolean, reflect: true })
12557
+ ], Radio.prototype, "checked", void 0);
12558
+ __decorate([
12559
+ n({ type: Boolean, reflect: true })
12560
+ ], Radio.prototype, "required", void 0);
12561
+ __decorate([
12562
+ n({ type: Boolean, reflect: true })
12563
+ ], Radio.prototype, "readonly", void 0);
12564
+ __decorate([
12565
+ n({ type: Boolean, reflect: true })
12566
+ ], Radio.prototype, "disabled", void 0);
12567
+ __decorate([
12568
+ n({ type: Object })
12569
+ ], Radio.prototype, "configAria", void 0);
12570
+ __decorate([
12571
+ r()
12572
+ ], Radio.prototype, "hasFocus", void 0);
12573
+ __decorate([
12574
+ r()
12575
+ ], Radio.prototype, "isActive", void 0);
12576
+ __decorate([
12577
+ r()
12578
+ ], Radio.prototype, "slotHasContent", void 0);
12579
+ __decorate([
12580
+ r()
12581
+ ], Radio.prototype, "isGroupFocusTarget", void 0);
12582
+ __decorate([
12583
+ e$4('.container')
12584
+ ], Radio.prototype, "containerElement", void 0);
12585
+ __decorate([
12586
+ e$4('.input-native')
12587
+ ], Radio.prototype, "nativeElement", void 0);
12588
+
12589
+ var css_248z = i`@charset "UTF-8";
12590
+ * {
12591
+ box-sizing: border-box;
12592
+ }
12593
+
12594
+ .screen-reader-only {
12595
+ display: none !important;
12596
+ }
12597
+
12598
+ :host {
12599
+ display: block;
12600
+ width: 100%;
12601
+ }
12602
+
12603
+ /* Make the field wrapper behave as a select (pointer cursor) */
12604
+ .select-field {
12605
+ cursor: pointer;
12606
+ }
12607
+
12608
+ .select-trigger {
12609
+ flex: 1;
12610
+ display: flex;
12611
+ align-items: center;
12612
+ min-height: 1.5rem;
12613
+ outline: none;
12614
+ cursor: pointer;
12615
+ user-select: none;
12616
+ overflow: hidden;
12617
+ min-width: 0;
12618
+ }
12619
+ .select-trigger:focus-visible {
12620
+ outline: none;
12621
+ }
12622
+
12623
+ .display-value {
12624
+ font-family: var(--typography-body-large-font-family) !important;
12625
+ font-size: var(--typography-body-large-font-size) !important;
12626
+ font-weight: var(--typography-body-large-font-weight) !important;
12627
+ line-height: var(--typography-body-large-line-height) !important;
12628
+ letter-spacing: var(--typography-body-large-letter-spacing) !important;
12629
+ color: var(--color-on-surface);
12630
+ overflow: hidden;
12631
+ text-overflow: ellipsis;
12632
+ white-space: nowrap;
12633
+ }
12634
+
12635
+ .placeholder {
12636
+ font-family: var(--typography-body-large-font-family) !important;
12637
+ font-size: var(--typography-body-large-font-size) !important;
12638
+ font-weight: var(--typography-body-large-font-weight) !important;
12639
+ line-height: var(--typography-body-large-line-height) !important;
12640
+ letter-spacing: var(--typography-body-large-letter-spacing) !important;
12641
+ color: var(--color-on-surface-variant);
12642
+ overflow: hidden;
12643
+ text-overflow: ellipsis;
12644
+ white-space: nowrap;
12645
+ }
12646
+
12647
+ /* Typeahead search input */
12648
+ .search-input {
12649
+ flex: 1;
12650
+ width: 100%;
12651
+ border: none;
12652
+ outline: none;
12653
+ background: transparent;
12654
+ margin: 0;
12655
+ padding: 0;
12656
+ font-family: var(--typography-body-large-font-family) !important;
12657
+ font-size: var(--typography-body-large-font-size) !important;
12658
+ font-weight: var(--typography-body-large-font-weight) !important;
12659
+ line-height: var(--typography-body-large-line-height) !important;
12660
+ letter-spacing: var(--typography-body-large-letter-spacing) !important;
12661
+ color: var(--color-on-surface);
12662
+ cursor: pointer;
12663
+ }
12664
+ .search-input::placeholder {
12665
+ color: var(--color-on-surface-variant);
12666
+ }
12667
+ .search-input:focus {
12668
+ cursor: text;
12669
+ }
12670
+
12671
+ /* Field end slot wrapper */
12672
+ .field-end-wrapper {
12673
+ display: flex;
12674
+ align-items: center;
12675
+ gap: var(--spacing-050);
12676
+ }
12677
+
12678
+ /* Dropdown chevron icon */
12679
+ .dropdown-icon {
12680
+ --icon-size: 1.5rem;
12681
+ --icon-color: var(--color-on-surface-variant);
12682
+ transition: transform 200ms ease;
12683
+ flex-shrink: 0;
12684
+ }
12685
+ .dropdown-icon.dropdown-icon--open {
12686
+ transform: rotate(180deg);
12687
+ }
12688
+
12689
+ /* Clear button */
12690
+ .clear-btn {
12691
+ --button-container-shape: var(--shape-corner-full);
12692
+ }
12693
+
12694
+ /* Multi-select chips area — single scrollable row, no vertical growth */
12695
+ .chips-container {
12696
+ display: flex;
12697
+ flex-wrap: nowrap;
12698
+ overflow-x: auto;
12699
+ scrollbar-width: none;
12700
+ gap: var(--spacing-050);
12701
+ padding-block: var(--spacing-050);
12702
+ align-items: center;
12703
+ flex: 1;
12704
+ min-width: 0;
12705
+ }
12706
+ .chips-container::-webkit-scrollbar {
12707
+ display: none;
12708
+ }
12709
+
12710
+ /* Disabled state */
12711
+ :host([disabled]) .select-trigger,
12712
+ :host([disabled]) .select-field {
12713
+ cursor: not-allowed;
12714
+ }
12715
+
12716
+ /* Readonly state */
12717
+ :host([readonly]) .select-trigger,
12718
+ :host([readonly]) .select-field {
12719
+ cursor: default;
12720
+ }`;
12721
+
12722
+ /**
12723
+ * @label Select Option
12724
+ * @tag wc-option
12725
+ * @rawTag option
12726
+ * @parentRawTag select
12727
+ *
12728
+ * @summary A declarative option element for use inside wc-select.
12729
+ *
12730
+ * @example
12731
+ * ```html
12732
+ * <wc-select label="Fruit">
12733
+ * <wc-option value="apple">Apple</wc-option>
12734
+ * <wc-option value="banana">Banana</wc-option>
12735
+ * </wc-select>
12736
+ * ```
12737
+ */
12738
+ class SelectOptionElement extends i$1 {
12739
+ constructor() {
12740
+ super(...arguments);
12741
+ /**
12742
+ * The option's submitted value.
12743
+ */
12744
+ this.value = '';
12745
+ /**
12746
+ * Optional Material Symbol icon name shown before the label.
12747
+ */
12748
+ this.icon = '';
12749
+ /**
12750
+ * Disables the option so it cannot be selected.
12751
+ */
12752
+ this.disabled = false;
12753
+ // ── Managed by wc-select ──────────────────────────────────────────────────
12754
+ /** Reflects whether this option is currently selected. Set by wc-select. */
12755
+ this.selected = false;
12756
+ /**
12757
+ * When true the menu stays open after selection (used for multi-select).
12758
+ * Set by wc-select.
12759
+ */
12760
+ this.keepOpen = false;
12761
+ /**
12762
+ * When true the option is hidden and excluded from keyboard navigation
12763
+ * because it does not match the current typeahead search query.
12764
+ * Set by wc-select.
12765
+ */
12766
+ this.filtered = false;
12767
+ }
12768
+ /**
12769
+ * Returns the inner `wc-menu-item` element.
12770
+ * `wc-menu` discovers this via its `items` getter which checks `el.item`
12771
+ * as a `MenuItem` proxy, so keyboard navigation and activation work
12772
+ * without `wc-option` extending `MenuItem` directly.
12773
+ */
12774
+ get item() {
12775
+ const el = this._menuItemEl;
12776
+ // Narrow to MenuItem — the shadow DOM only ever contains a wc-menu-item
12777
+ // (a MenuItem subclass), so this cast is safe by construction.
12778
+ return el != null ? el : null;
12779
+ }
12780
+ render() {
12781
+ return b `
12782
+ <wc-menu-item
12783
+ value=${this.value}
12784
+ ?disabled=${this.disabled || this.filtered}
12785
+ ?selected=${this.selected}
12786
+ ?keep-open=${this.keepOpen}
12787
+ >
12788
+ ${this.icon
12789
+ ? b `<wc-icon name=${this.icon} slot="leading-icon"></wc-icon>`
12790
+ : A}
12791
+ <slot></slot>
12792
+ ${this.selected && this.keepOpen
12793
+ ? b `<wc-icon
12794
+ name="check"
12795
+ slot="trailing-supporting-text"
12796
+ ></wc-icon>`
12797
+ : A}
12798
+ </wc-menu-item>
12799
+ `;
12800
+ }
12801
+ }
12802
+ SelectOptionElement.styles = [
12803
+ i `
12804
+ :host {
12805
+ display: contents;
12806
+ }
12807
+ :host([filtered]) {
12808
+ display: none;
12809
+ }
12810
+ `,
12811
+ ];
12812
+ __decorate([
12813
+ n({ type: String, reflect: true })
12814
+ ], SelectOptionElement.prototype, "value", void 0);
12815
+ __decorate([
12816
+ n({ type: String, reflect: true })
12817
+ ], SelectOptionElement.prototype, "icon", void 0);
12818
+ __decorate([
12819
+ n({ type: Boolean, reflect: true })
12820
+ ], SelectOptionElement.prototype, "disabled", void 0);
12821
+ __decorate([
12822
+ n({ type: Boolean, reflect: true })
12823
+ ], SelectOptionElement.prototype, "selected", void 0);
12824
+ __decorate([
12825
+ n({ type: Boolean, attribute: 'keep-open' })
12826
+ ], SelectOptionElement.prototype, "keepOpen", void 0);
12827
+ __decorate([
12828
+ n({ type: Boolean, reflect: true })
12829
+ ], SelectOptionElement.prototype, "filtered", void 0);
12830
+ __decorate([
12831
+ e$4('wc-menu-item')
12832
+ ], SelectOptionElement.prototype, "_menuItemEl", void 0);
12833
+
12834
+ /**
12835
+ * @label Select
12836
+ * @tag wc-select
12837
+ * @rawTag select
12838
+ *
12839
+ * @summary A dropdown select component supporting single and multi-select with optional typeahead search.
12840
+ * @overview
12841
+ * Select builds on wc-field and wc-menu to provide a fully-featured dropdown picker.
12842
+ *
12843
+ * - Single and multi-select modes
12844
+ * - Client-side typeahead with `search="contains"`
12845
+ * - Server-side typeahead with `search="managed"`
12846
+ * - Multi-select chips display
12847
+ *
12848
+ * @example
12849
+ * ```html
12850
+ * <wc-select label="Fruit" placeholder="Pick a fruit...">
12851
+ * <wc-option value="apple">Apple</wc-option>
12852
+ * <wc-option value="banana">Banana</wc-option>
12853
+ * </wc-select>
12854
+ * ```
12855
+ * @tags form
12856
+ */
12857
+ class Select extends BaseInput {
12858
+ constructor() {
12859
+ super(...arguments);
12860
+ /**
12861
+ * Array of options to display in the dropdown.
12862
+ * Setting this property creates matching `<wc-option>` children automatically.
12863
+ */
12864
+ this.options = [];
12865
+ /**
12866
+ * The selected value. For multi-select, a comma-separated list of values.
12867
+ */
12868
+ this.value = '';
12869
+ /**
12870
+ * Enable multi-select mode.
12871
+ */
12872
+ this.multiple = false;
12873
+ /**
12874
+ * Enable typeahead search.
12875
+ * - `'contains'`: filters options client-side.
12876
+ * - `'managed'`: emits a `select-search` event for server-controlled filtering.
12877
+ */
12878
+ this.search = '';
12879
+ /**
12880
+ * Placeholder text shown when no value is selected.
12881
+ */
12882
+ this.placeholder = '';
12883
+ /**
12884
+ * Label displayed above the field.
12885
+ */
12886
+ this.label = '';
12887
+ /**
12888
+ * Show a clear button in single-select mode when a value is selected.
12889
+ */
12890
+ this.clearable = false;
12891
+ /**
12892
+ * Visual variant of the field.
12893
+ */
12894
+ this.variant = 'default';
12895
+ /**
12896
+ * Helper text displayed below the field.
12897
+ */
12898
+ this.helperText = '';
12899
+ this.error = false;
12900
+ this.errorText = '';
12901
+ this.warning = false;
12902
+ this.warningText = '';
12903
+ this._open = false;
12904
+ this._focused = false;
12905
+ this._searchQuery = '';
12906
+ /** True when all options are filtered out by the current search query. */
12907
+ this._noOptionsVisible = false;
12908
+ }
12909
+ get _menu() {
12910
+ return this.renderRoot?.querySelector('wc-menu') ?? null;
12911
+ }
12912
+ focus() {
12913
+ this._triggerEl?.focus();
12914
+ }
12915
+ blur() {
12916
+ this._triggerEl?.blur();
12917
+ }
12918
+ // ── Lifecycle ─────────────────────────────────────────────────────────────
12919
+ updated(changedProperties) {
12920
+ if (changedProperties.has('options')) {
12921
+ this._syncProgrammaticOptions();
12922
+ }
12923
+ this._syncOptionStates();
12924
+ }
12925
+ // ── Programmatic options ───────────────────────────────────────────────────
12926
+ /**
12927
+ * Reconciles the `options` property with auto-generated `<wc-option>` light-DOM
12928
+ * children (marked `data-generated`). Declarative children placed by the
12929
+ * consumer are left untouched.
12930
+ */
12931
+ _syncProgrammaticOptions() {
12932
+ this.querySelectorAll('wc-option[data-generated]').forEach(el => el.remove());
12933
+ for (const opt of this.options) {
12934
+ const el = new SelectOptionElement();
12935
+ el.value = opt.value;
12936
+ if (opt.icon)
12937
+ el.icon = opt.icon;
12938
+ el.textContent = opt.label;
12939
+ el.dataset.generated = '';
12940
+ this.appendChild(el);
12941
+ }
12942
+ }
12943
+ // ── Option state sync ──────────────────────────────────────────────────────
12944
+ /**
12945
+ * Pushes `selected`, `keepOpen`, and `filtered` state onto every `<wc-option>`
12946
+ * child element so each one can render itself correctly.
12947
+ */
12948
+ _syncOptionStates() {
12949
+ const optEls = Array.from(this.querySelectorAll('wc-option'));
12950
+ let visibleCount = 0;
12951
+ for (const opt of optEls) {
12952
+ opt.selected = this._isSelected(opt.value);
12953
+ opt.keepOpen = this.multiple;
12954
+ if (this.search && this.search !== 'managed' && this._searchQuery) {
12955
+ const q = this._searchQuery.toLowerCase();
12956
+ const label = opt.textContent?.trim() ?? '';
12957
+ opt.filtered = !label.toLowerCase().includes(q);
12958
+ if (!opt.filtered)
12959
+ visibleCount++;
12960
+ }
12961
+ else {
12962
+ opt.filtered = false;
12963
+ visibleCount++;
12964
+ }
12965
+ }
12966
+ this._noOptionsVisible = optEls.length > 0 && visibleCount === 0;
12967
+ }
12968
+ // ── Helpers ────────────────────────────────────────────────────────────────
12969
+ get _selectedValues() {
12970
+ if (!this.value)
12971
+ return [];
12972
+ return this.value
12973
+ .split(',')
12974
+ .map(v => v.trim())
12975
+ .filter(Boolean);
12976
+ }
12977
+ _isSelected(value) {
12978
+ return this._selectedValues.includes(value);
12979
+ }
12980
+ /** Returns the display label for a given option value. */
12981
+ _getLabelForValue(val) {
12982
+ for (const opt of this.querySelectorAll('wc-option')) {
12983
+ if (opt.value === val)
12984
+ return opt.textContent?.trim() ?? val;
12985
+ }
12986
+ // Fallback to options array (before wc-option children are created)
12987
+ return this.options.find(o => o.value === val)?.label ?? val;
12988
+ }
12989
+ get _displayLabel() {
12990
+ if (!this.value)
12991
+ return '';
12992
+ const firstValue = this._selectedValues[0];
12993
+ if (!firstValue)
12994
+ return '';
12995
+ return this._getLabelForValue(firstValue);
12996
+ }
12997
+ get _isPopulated() {
12998
+ return !!this.value;
12999
+ }
13000
+ // ── Menu open/close ────────────────────────────────────────────────────────
13001
+ _openMenu() {
13002
+ if (this.disabled || this.readonly)
13003
+ return;
13004
+ this._open = true;
13005
+ this._focused = true;
13006
+ const menu = this._menu;
13007
+ if (menu && this._triggerEl) {
13008
+ menu.anchorElement = this._triggerEl;
13009
+ menu.show();
13010
+ }
13011
+ if (this.search) {
13012
+ this._searchQuery = '';
13013
+ // Use rAF so that the search input receives focus *after* wc-menu has
13014
+ // finished showing and potentially focused a menu item.
13015
+ this.updateComplete.then(() => {
13016
+ requestAnimationFrame(() => {
13017
+ this._searchInputEl?.focus();
13018
+ });
13019
+ });
13020
+ }
13021
+ }
13022
+ _closeMenu() {
13023
+ if (!this._open)
13024
+ return;
13025
+ this._open = false;
13026
+ this._focused = false;
13027
+ this._searchQuery = '';
13028
+ this._menu?.close();
13029
+ }
13030
+ // ── Event handlers ─────────────────────────────────────────────────────────
13031
+ _handleTriggerClick(event) {
13032
+ // Ignore clicks that originated inside the search input — those should not
13033
+ // toggle the menu (the input needs to stay open so the user can type).
13034
+ if (event.target instanceof HTMLInputElement) {
13035
+ return;
13036
+ }
13037
+ if (this._open) {
13038
+ this._closeMenu();
13039
+ }
13040
+ else {
13041
+ this._openMenu();
13042
+ }
13043
+ }
13044
+ _handleTriggerKeyDown(event) {
13045
+ // When the typeahead search input is active, let the input handle its own
13046
+ // keys (Space, Enter, etc.). Only intercept Escape to close the menu.
13047
+ if (event.target instanceof HTMLInputElement) {
13048
+ if (event.key === 'Escape') {
13049
+ event.preventDefault();
13050
+ this._closeMenu();
13051
+ }
13052
+ return;
13053
+ }
13054
+ switch (event.key) {
13055
+ case 'Enter':
13056
+ case ' ':
13057
+ case 'ArrowDown':
13058
+ event.preventDefault();
13059
+ if (!this._open)
13060
+ this._openMenu();
13061
+ break;
13062
+ case 'Escape':
13063
+ if (this._open) {
13064
+ event.preventDefault();
13065
+ this._closeMenu();
13066
+ }
13067
+ break;
13068
+ }
13069
+ }
13070
+ _handleMenuClosed() {
13071
+ this._open = false;
13072
+ this._focused = false;
13073
+ this._searchQuery = '';
13074
+ }
13075
+ _handleMenuItemActivate(event) {
13076
+ const item = event.detail?.item;
13077
+ if (!item)
13078
+ return;
13079
+ const val = item.value;
13080
+ if (!val)
13081
+ return;
13082
+ if (this.multiple) {
13083
+ const values = this._selectedValues;
13084
+ const idx = values.indexOf(val);
13085
+ if (idx >= 0) {
13086
+ values.splice(idx, 1);
13087
+ }
13088
+ else {
13089
+ values.push(val);
13090
+ }
13091
+ this.value = values.join(',');
13092
+ }
13093
+ else {
13094
+ this.value = val;
13095
+ this._closeMenu();
13096
+ }
13097
+ this._dispatchChange();
13098
+ }
13099
+ _dispatchChange() {
13100
+ this.dispatchEvent(new CustomEvent('change', {
13101
+ detail: { value: this.value },
13102
+ bubbles: true,
13103
+ composed: true,
13104
+ }));
13105
+ }
13106
+ _handleSearchInput(event) {
13107
+ this._searchQuery = event.target.value;
13108
+ if (this.search === 'managed') {
13109
+ this.dispatchEvent(new CustomEvent('select-search', {
13110
+ detail: { value: this._searchQuery },
13111
+ bubbles: true,
13112
+ composed: true,
13113
+ }));
13114
+ }
13115
+ }
13116
+ _handleClear(event) {
13117
+ event.stopPropagation();
13118
+ this.value = '';
13119
+ this._dispatchChange();
13120
+ }
13121
+ _handleChipDismiss(event, chipValue) {
13122
+ event.stopPropagation();
13123
+ const values = this._selectedValues.filter(v => v !== chipValue);
13124
+ this.value = values.join(',');
13125
+ this._dispatchChange();
13126
+ }
13127
+ // ── Render helpers ─────────────────────────────────────────────────────────
13128
+ _renderTriggerContent() {
13129
+ // Typeahead: when open, show a text input for filtering
13130
+ if (this.search && this._open) {
13131
+ return b `<input
13132
+ class="search-input"
13133
+ .value=${this._searchQuery}
13134
+ placeholder=${this._displayLabel || this.placeholder}
13135
+ @input=${this._handleSearchInput}
13136
+ />`;
13137
+ }
13138
+ // Multi-select: show chips for selected items
13139
+ if (this.multiple && this._selectedValues.length > 0) {
13140
+ return b `<div class="chips-container">
13141
+ ${this._selectedValues.map(val => b `
13142
+ <wc-chip
13143
+ dismissible
13144
+ value=${val}
13145
+ @tag--dismiss=${(e) => this._handleChipDismiss(e, val)}
13146
+ >${this._getLabelForValue(val)}</wc-chip
13147
+ >
13148
+ `)}
13149
+ </div>`;
13150
+ }
13151
+ // Single select: show selected label or placeholder
13152
+ const label = this._displayLabel;
13153
+ if (!label) {
13154
+ return b `<span class="placeholder">${this.placeholder}</span>`;
13155
+ }
13156
+ return b `<span class="display-value">${label}</span>`;
13157
+ }
13158
+ _renderFieldEnd() {
13159
+ const showClear = this.clearable &&
13160
+ !this.multiple &&
13161
+ !!this.value &&
13162
+ !this.disabled &&
13163
+ !this.readonly;
13164
+ return b `
13165
+ ${showClear
13166
+ ? b `<wc-icon-button
13167
+ class="clear-btn"
13168
+ variant="text"
13169
+ size="sm"
13170
+ name="close"
13171
+ @click=${this._handleClear}
13172
+ ></wc-icon-button>`
13173
+ : A}
13174
+ <wc-icon
13175
+ class=${e$3({
13176
+ 'dropdown-icon': true,
13177
+ 'dropdown-icon--open': this._open,
13178
+ })}
13179
+ name="arrow_drop_down"
13180
+ ></wc-icon>
13181
+ `;
13182
+ }
13183
+ render() {
13184
+ return b `
13185
+ <wc-field
13186
+ label=${this.label}
13187
+ ?required=${this.required}
13188
+ ?disabled=${this.disabled}
13189
+ ?readonly=${this.readonly}
13190
+ ?skeleton=${this.skeleton}
13191
+ helper-text=${this.helperText}
13192
+ ?error=${this.error}
13193
+ error-text=${this.errorText}
13194
+ ?warning=${this.warning}
13195
+ warning-text=${this.warningText}
13196
+ variant=${this.variant}
13197
+ ?populated=${this._isPopulated || this._open}
13198
+ ?focused=${this._focused}
13199
+ .host=${this}
13200
+ class="select-field"
13201
+ >
13202
+ <div
13203
+ class="select-trigger"
13204
+ tabindex=${this.disabled ? -1 : 0}
13205
+ role="combobox"
13206
+ aria-expanded=${String(this._open)}
13207
+ aria-haspopup="listbox"
13208
+ @click=${this._handleTriggerClick}
13209
+ @keydown=${this._handleTriggerKeyDown}
13210
+ >
13211
+ ${this._renderTriggerContent()}
13212
+ </div>
13213
+
13214
+ <div slot="field-end" class="field-end-wrapper">
13215
+ ${this._renderFieldEnd()}
13216
+ </div>
13217
+ </wc-field>
13218
+
13219
+ <wc-menu
13220
+ placement="bottom-start"
13221
+ aria-label=${this.label || 'Options'}
13222
+ @closed=${this._handleMenuClosed}
13223
+ @menu-item-activate=${(e) => this._handleMenuItemActivate(e)}
13224
+ >
13225
+ <slot></slot>
13226
+ ${this._noOptionsVisible
13227
+ ? b `<wc-menu-item disabled>No options</wc-menu-item>`
13228
+ : A}
13229
+ </wc-menu>
13230
+ `;
13231
+ }
13232
+ }
13233
+ Select.styles = [css_248z];
13234
+ __decorate([
13235
+ n({ type: Array })
13236
+ ], Select.prototype, "options", void 0);
13237
+ __decorate([
13238
+ n({ type: String, reflect: true })
13239
+ ], Select.prototype, "value", void 0);
13240
+ __decorate([
13241
+ n({ type: Boolean, reflect: true })
13242
+ ], Select.prototype, "multiple", void 0);
13243
+ __decorate([
13244
+ n({ type: String })
13245
+ ], Select.prototype, "search", void 0);
13246
+ __decorate([
13247
+ n({ type: String })
13248
+ ], Select.prototype, "placeholder", void 0);
13249
+ __decorate([
13250
+ n({ type: String })
13251
+ ], Select.prototype, "label", void 0);
13252
+ __decorate([
13253
+ n({ type: Boolean })
13254
+ ], Select.prototype, "clearable", void 0);
13255
+ __decorate([
13256
+ n({ type: String })
13257
+ ], Select.prototype, "variant", void 0);
13258
+ __decorate([
13259
+ n({ type: String, attribute: 'helper-text' })
13260
+ ], Select.prototype, "helperText", void 0);
13261
+ __decorate([
13262
+ n({ type: Boolean })
13263
+ ], Select.prototype, "error", void 0);
13264
+ __decorate([
13265
+ n({ type: String, attribute: 'error-text' })
13266
+ ], Select.prototype, "errorText", void 0);
13267
+ __decorate([
13268
+ n({ type: Boolean })
13269
+ ], Select.prototype, "warning", void 0);
13270
+ __decorate([
13271
+ n({ type: String, attribute: 'warning-text' })
13272
+ ], Select.prototype, "warningText", void 0);
13273
+ __decorate([
13274
+ r()
13275
+ ], Select.prototype, "_open", void 0);
13276
+ __decorate([
13277
+ r()
13278
+ ], Select.prototype, "_focused", void 0);
13279
+ __decorate([
13280
+ r()
13281
+ ], Select.prototype, "_searchQuery", void 0);
13282
+ __decorate([
13283
+ r()
13284
+ ], Select.prototype, "_noOptionsVisible", void 0);
13285
+ __decorate([
13286
+ e$4('.select-trigger')
13287
+ ], Select.prototype, "_triggerEl", void 0);
13288
+ __decorate([
13289
+ e$4('.search-input')
13290
+ ], Select.prototype, "_searchInputEl", void 0);
13291
+
13292
+ export { Accordion as A, Badge as B, Checkbox as C, DatePicker as D, Elevation as E, Field as F, Tabs as G, Tag as H, Icon as I, Textarea as J, TimePicker as K, LinearProgress as L, Menu as M, NumberField as N, Tooltip as O, Pagination as P, TreeNode as Q, Radio as R, SegmentedButton as S, Tab as T, TreeView as U, Avatar as a, Breadcrumb as b, BreadcrumbItem as c, Chip as d, CircularProgress as e, Container as f, Divider as g, EmptyState as h, FocusRing as i, Image as j, Input as k, Link as l, MenuItem as m, Ripple as n, SegmentedButtonGroup as o, Select as p, SelectOptionElement as q, Skeleton as r, Slider as s, Snackbar as t, Spinner as u, SubMenu as v, Switch as w, TabGroup as x, TabPanel as y, Table as z };
13293
+ //# sourceMappingURL=select-C3XAzenC.js.map