@luzmo/lucero 0.0.3 → 0.0.4

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 (179) hide show
  1. package/lib/accordion/index.cjs +43 -0
  2. package/lib/accordion/index.js +182 -0
  3. package/lib/action-bar/index.cjs +39 -0
  4. package/lib/action-bar/index.js +108 -0
  5. package/lib/action-button/index.cjs +24 -0
  6. package/lib/action-button/index.js +162 -0
  7. package/lib/action-group/index.cjs +18 -0
  8. package/lib/action-group/index.js +29 -0
  9. package/lib/action-group-BoIH8s8R.js +259 -0
  10. package/lib/action-group-D4MxBrq8.cjs +20 -0
  11. package/lib/action-menu/index.cjs +56 -0
  12. package/lib/action-menu/index.js +127 -0
  13. package/lib/async-directive-CV2MII86.cjs +22 -0
  14. package/lib/async-directive-FGzMycjH.js +82 -0
  15. package/lib/avatar/index.cjs +24 -0
  16. package/lib/avatar/index.js +82 -0
  17. package/lib/base-BCmA9Wxv.cjs +30 -0
  18. package/lib/base-BjTwmyRF.cjs +22 -0
  19. package/lib/base-D76d76ww.js +26 -0
  20. package/lib/base-nYalvNMy.js +390 -0
  21. package/lib/button/index.cjs +20 -0
  22. package/lib/button/index.js +128 -0
  23. package/lib/button-base-B0iB_JTv.cjs +25 -0
  24. package/lib/button-base-DgtT6sU5.js +143 -0
  25. package/lib/button-group/index.cjs +18 -0
  26. package/lib/button-group/index.js +60 -0
  27. package/lib/checkbox/index.cjs +25 -0
  28. package/lib/checkbox/index.js +97 -0
  29. package/lib/checkbox-mixin-DegQlk5C.js +71 -0
  30. package/lib/checkbox-mixin-H0Hm-VLk.cjs +27 -0
  31. package/lib/clear-button-Ap5H3UyH.js +54 -0
  32. package/lib/clear-button-D0djuaLb.cjs +18 -0
  33. package/lib/close-button-BrfeZvjk.cjs +18 -0
  34. package/lib/close-button-CGISEF33.js +52 -0
  35. package/lib/color-Bg3tYsAQ.js +178 -0
  36. package/lib/color-DphK4hwx.cjs +18 -0
  37. package/lib/color-area/index.cjs +80 -0
  38. package/lib/color-area/index.js +373 -0
  39. package/lib/color-field/index.cjs +23 -0
  40. package/lib/color-field/index.js +81 -0
  41. package/lib/color-handle/index.cjs +24 -0
  42. package/lib/color-handle/index.js +74 -0
  43. package/lib/color-loupe/index.cjs +18 -0
  44. package/lib/color-loupe/index.js +29 -0
  45. package/lib/color-loupe-BICpNqFs.cjs +56 -0
  46. package/lib/color-loupe-DBEApMDT.js +82 -0
  47. package/lib/color-menu/index.cjs +86 -0
  48. package/lib/color-menu/index.js +204 -0
  49. package/lib/color-picker/index.cjs +48 -0
  50. package/lib/color-picker/index.js +142 -0
  51. package/lib/color-slider/index.cjs +57 -0
  52. package/lib/color-slider/index.js +318 -0
  53. package/lib/condition-attribute-with-id-DrQYZzFS.cjs +18 -0
  54. package/lib/condition-attribute-with-id-Dv4lSRbe.js +31 -0
  55. package/lib/dependency-manger-C5HCkMMB.cjs +18 -0
  56. package/lib/dependency-manger-CEXvGQUV.js +54 -0
  57. package/lib/directive-C7oCP5Bh.cjs +22 -0
  58. package/lib/directive-helpers-BLDZnGQv.js +28 -0
  59. package/lib/directive-helpers-C2vOfhFx.cjs +22 -0
  60. package/lib/directive-oAbCiebi.js +44 -0
  61. package/lib/divider/index.cjs +18 -0
  62. package/lib/divider/index.js +62 -0
  63. package/lib/divider.module-CXMNveQc.cjs +18 -0
  64. package/lib/divider.module-DwOuLGU3.js +21 -0
  65. package/lib/element-resolution-BvRLGqIU.cjs +18 -0
  66. package/lib/element-resolution-FCUT-wql.js +91 -0
  67. package/lib/field-group/index.cjs +18 -0
  68. package/lib/field-group/index.js +29 -0
  69. package/lib/field-group-CBWafIUV.js +67 -0
  70. package/lib/field-group-TUFvhJkk.cjs +23 -0
  71. package/lib/field-label/index.cjs +18 -0
  72. package/lib/field-label/index.js +29 -0
  73. package/lib/field-label-BK_tk8vP.js +107 -0
  74. package/lib/field-label-BrJaeORz.cjs +25 -0
  75. package/lib/focus-group-DHeTq18L.js +218 -0
  76. package/lib/focus-group-DnxZUBhQ.cjs +18 -0
  77. package/lib/focus-visible-B0P9aY_G.cjs +18 -0
  78. package/lib/focus-visible-DBlJGoEW.js +74 -0
  79. package/lib/focusable-DbUg-3Vp.js +153 -0
  80. package/lib/focusable-Dv_6CFaY.cjs +18 -0
  81. package/lib/focusable-selectors-B4YgbghQ.js +31 -0
  82. package/lib/focusable-selectors-BgFlyFcY.cjs +18 -0
  83. package/lib/icon/index.cjs +18 -0
  84. package/lib/icon/index.js +89 -0
  85. package/lib/if-defined-CYpcjGCb.js +27 -0
  86. package/lib/if-defined-Cv6xanXh.cjs +22 -0
  87. package/lib/index-C1chwzNp.js +727 -0
  88. package/lib/index-DCKCHDTt.cjs +18 -0
  89. package/lib/index-ovT-qVzf.js +928 -0
  90. package/lib/index-yNcLzjhM.cjs +77 -0
  91. package/lib/index.cjs +18 -0
  92. package/lib/index.js +133 -0
  93. package/lib/infield-button/index.cjs +22 -0
  94. package/lib/infield-button/index.js +65 -0
  95. package/lib/label/index.cjs +18 -0
  96. package/lib/label/index.js +52 -0
  97. package/lib/legend-position/index.cjs +27 -0
  98. package/lib/legend-position/index.js +85 -0
  99. package/lib/like-anchor-K8W0QYwC.cjs +32 -0
  100. package/lib/like-anchor-cDeGGeHh.js +70 -0
  101. package/lib/lit-html-B3ugcwD9.js +248 -0
  102. package/lib/lit-html-p4Oxv2-5.cjs +24 -0
  103. package/lib/manage-help-text-2mSEy-AD.js +92 -0
  104. package/lib/manage-help-text-iOk-zmy8.cjs +30 -0
  105. package/lib/menu/index.cjs +18 -0
  106. package/lib/menu/index.js +32 -0
  107. package/lib/multi-language-field/index.cjs +39 -0
  108. package/lib/multi-language-field/index.js +149 -0
  109. package/lib/mutation-controller-DH7YOCyj.js +52 -0
  110. package/lib/mutation-controller-DkOMCW-c.cjs +22 -0
  111. package/lib/number-field/index.cjs +57 -0
  112. package/lib/number-field/index.js +736 -0
  113. package/lib/observe-slot-text-BmsCNJig.cjs +18 -0
  114. package/lib/observe-slot-text-BoFRF-VI.js +87 -0
  115. package/lib/overlay/index.cjs +73 -0
  116. package/lib/overlay/index.js +325 -0
  117. package/lib/overlay-C7QKFqRc.js +2702 -0
  118. package/lib/overlay-DScraBAi.cjs +47 -0
  119. package/lib/pending-state-D5KTK4_1.js +61 -0
  120. package/lib/pending-state-Dbc2HIM2.cjs +26 -0
  121. package/lib/picker/index.cjs +18 -0
  122. package/lib/picker/index.js +32 -0
  123. package/lib/picker--2OCYWnV.js +657 -0
  124. package/lib/picker-B9W7Haf4.cjs +127 -0
  125. package/lib/platform-CQzYNWKq.cjs +18 -0
  126. package/lib/platform-DQYMG7JI.js +54 -0
  127. package/lib/popover/index.cjs +18 -0
  128. package/lib/popover/index.js +29 -0
  129. package/lib/popover-CVbjhSnx.cjs +30 -0
  130. package/lib/popover-ZRVxogyp.js +68 -0
  131. package/lib/progress-circle/index.cjs +18 -0
  132. package/lib/progress-circle/index.js +29 -0
  133. package/lib/progress-circle-CiJoS8J7.cjs +33 -0
  134. package/lib/progress-circle-DpXiqW6a.js +98 -0
  135. package/lib/query-BL-TJj7K.cjs +22 -0
  136. package/lib/query-D_KR_GUc.js +51 -0
  137. package/lib/query-assigned-elements-DjfhL1cl.js +36 -0
  138. package/lib/query-assigned-elements-DsKsfk7G.cjs +22 -0
  139. package/lib/query-assigned-nodes-BcKWmGzy.cjs +22 -0
  140. package/lib/query-assigned-nodes-C76XVPWY.js +36 -0
  141. package/lib/radio/index.cjs +22 -0
  142. package/lib/radio/index.js +192 -0
  143. package/lib/random-id-ByCz1xaq.js +26 -0
  144. package/lib/random-id-CqvckpWe.cjs +18 -0
  145. package/lib/roving-tabindex-By_fCy_e.cjs +18 -0
  146. package/lib/roving-tabindex-DOg4z6ZU.js +66 -0
  147. package/lib/search/index.cjs +45 -0
  148. package/lib/search/index.js +132 -0
  149. package/lib/sized-mixin-BSYHt8nT.cjs +18 -0
  150. package/lib/sized-mixin-Dl0KoEcV.js +63 -0
  151. package/lib/slider/index.cjs +18 -0
  152. package/lib/slider/index.js +1159 -0
  153. package/lib/slottable-request-event-BfUUt1Mh.cjs +18 -0
  154. package/lib/slottable-request-event-DggLA4Rx.js +31 -0
  155. package/lib/state-BAO-13Bs.js +29 -0
  156. package/lib/state-DReJ3hB6.cjs +22 -0
  157. package/lib/streaming-listener-Bw4jE33f.cjs +18 -0
  158. package/lib/streaming-listener-DLo0wkMc.js +125 -0
  159. package/lib/style-map-BjBGQ_u3.cjs +22 -0
  160. package/lib/style-map-BqvQDFJt.js +53 -0
  161. package/lib/swatch/index.cjs +49 -0
  162. package/lib/swatch/index.js +343 -0
  163. package/lib/switch/index.cjs +22 -0
  164. package/lib/switch/index.js +74 -0
  165. package/lib/tags/index.cjs +32 -0
  166. package/lib/tags/index.js +174 -0
  167. package/lib/text-field/index.cjs +21 -0
  168. package/lib/text-field/index.js +62 -0
  169. package/lib/text-field-C6Aa7XOb.cjs +85 -0
  170. package/lib/text-field-DPk332j9.js +315 -0
  171. package/lib/toast/index.cjs +51 -0
  172. package/lib/toast/index.js +154 -0
  173. package/lib/tooltip/index.cjs +45 -0
  174. package/lib/tooltip/index.js +221 -0
  175. package/lib/unit-input/index.cjs +43 -0
  176. package/lib/unit-input/index.js +184 -0
  177. package/lib/when-CDK1Tt5Y.js +28 -0
  178. package/lib/when-CDZyJPvd.cjs +22 -0
  179. package/package.json +2 -2
@@ -0,0 +1,657 @@
1
+ /*! * Lucero - The design system for Luzmo.
2
+ *
3
+ * Copyright © 2025 Luzmo
4
+ * All rights reserved.
5
+ * Lucero (“Luzmo Design System”) must be used according to the Luzmo Terms of Service.
6
+ * This license allows users with a current active Luzmo account to use Lucero.
7
+ * This license terminates automatically if a user no longer has an active Luzmo account.
8
+ * Please view the Luzmo Terms of Service at: https://www.luzmo.com/information-pages/terms-of-use.
9
+ *
10
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
11
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
12
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
13
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
14
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
15
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
16
+ * SOFTWARE.
17
+ * */
18
+ import { F as y } from "./focusable-DbUg-3Vp.js";
19
+ import { D as w } from "./dependency-manger-CEXvGQUV.js";
20
+ import { P as x } from "./pending-state-D5KTK4_1.js";
21
+ import { S as C } from "./sized-mixin-Dl0KoEcV.js";
22
+ import { html as s, nothing as I, render as S, unsafeCSS as M } from "lit";
23
+ import { n as l } from "./base-nYalvNMy.js";
24
+ import { r as h } from "./state-BAO-13Bs.js";
25
+ import { e as v } from "./query-D_KR_GUc.js";
26
+ import { T as E } from "./lit-html-B3ugcwD9.js";
27
+ import { e as $, i as q, t as L } from "./directive-oAbCiebi.js";
28
+ import { o as u } from "./if-defined-CYpcjGCb.js";
29
+ import { o as F } from "./style-map-BqvQDFJt.js";
30
+ import { luzmoIcon as f, luzmoAngleDown as A, luzmoAlert as O } from "@luzmo/icons";
31
+ import "./index-ovT-qVzf.js";
32
+ import "./overlay/index.js";
33
+ import "./progress-circle/index.js";
34
+ import "./tooltip/index.js";
35
+ import { c as m } from "./platform-DQYMG7JI.js";
36
+ const D = "(max-width: 743px) and (hover: none) and (pointer: coarse)";
37
+ class B {
38
+ constructor(e, o) {
39
+ this.key = Symbol("match-media-key"), this.matches = !1, this.host = e, this.host.addController(this), this.media = window.matchMedia(o), this.matches = this.media.matches, this.onChange = this.onChange.bind(this), e.addController(this);
40
+ }
41
+ hostConnected() {
42
+ var e;
43
+ (e = this.media) == null || e.addEventListener("change", this.onChange);
44
+ }
45
+ hostDisconnected() {
46
+ var e;
47
+ (e = this.media) == null || e.removeEventListener("change", this.onChange);
48
+ }
49
+ onChange(e) {
50
+ this.matches !== e.matches && (this.matches = e.matches, this.host.requestUpdate(this.key, !this.matches));
51
+ }
52
+ }
53
+ /**
54
+ * @license
55
+ * Copyright 2018 Google LLC
56
+ * SPDX-License-Identifier: BSD-3-Clause
57
+ */
58
+ const P = $(class extends q {
59
+ constructor(i) {
60
+ var e;
61
+ if (super(i), i.type !== L.ATTRIBUTE || i.name !== "class" || ((e = i.strings) == null ? void 0 : e.length) > 2) throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.");
62
+ }
63
+ render(i) {
64
+ return " " + Object.keys(i).filter((e) => i[e]).join(" ") + " ";
65
+ }
66
+ update(i, [e]) {
67
+ var t, c;
68
+ if (this.st === void 0) {
69
+ this.st = /* @__PURE__ */ new Set(), i.strings !== void 0 && (this.nt = new Set(i.strings.join(" ").split(/\s/).filter((r) => r !== "")));
70
+ for (const r in e) e[r] && !((t = this.nt) != null && t.has(r)) && this.st.add(r);
71
+ return this.render(e);
72
+ }
73
+ const o = i.element.classList;
74
+ for (const r of this.st) r in e || (o.remove(r), this.st.delete(r));
75
+ for (const r in e) {
76
+ const d = !!e[r];
77
+ d === this.st.has(r) || (c = this.nt) != null && c.has(r) || (d ? (o.add(r), this.st.add(r)) : (o.remove(r), this.st.delete(r)));
78
+ }
79
+ return E;
80
+ }
81
+ }), _ = '#button{cursor:pointer;-webkit-user-select:none;user-select:none;font-family:var(--luzmo-button-font-family, var(--luzmo-font-family));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:var(--luzmo-button-line-height, var(--luzmo-line-height, 1.3));text-transform:none;vertical-align:top;-webkit-appearance:button;transition:background var(--luzmo-button-animation-duration, var(--luzmo-animation-duration)) ease-out,border-color var(--luzmo-button-animation-duration, var(--luzmo-animation-duration)) ease-out,color var(--luzmo-button-animation-duration, var(--luzmo-animation-duration)) ease-out,box-shadow var(--luzmo-button-animation-duration, var(--luzmo-animation-duration)) ease-out;justify-content:center;align-items:center;margin:0;-webkit-text-decoration:none;text-decoration:none;display:inline-flex;position:relative;overflow:visible}#button::-moz-focus-inner{border-style:none;padding:0}#button:focus{outline:none}@media (forced-colors: active){:host{--highcontrast-picker-focus-indicator-color: Highlight;--highcontrast-picker-border-color-default: ButtonBorder;--highcontrast-picker-border-color-hover: Highlight;--highcontrast-picker-border-color-disabled: GrayText;--highcontrast-picker-content-color-default: ButtonText;--highcontrast-picker-content-color-disabled: GrayText;--highcontrast-picker-background-color: ButtonFace}#button.is-keyboardFocused,#button:focus-visible{--highcontrast-picker-border-color-hover: ButtonText}#button .label,#button:after{forced-color-adjust:none}}#button{box-sizing:border-box;max-inline-size:100%;min-inline-size:calc(var(--picker-minimum-width-multiplier) * var(--luzmo-picker-block-size, var(--picker-block-size)));block-size:var(--luzmo-picker-block-size, var(--picker-block-size));border-width:var(--luzmo-picker-border-width, var(--picker-border-width));border-radius:var(--luzmo-picker-border-radius, var(--picker-border-radius));box-shadow:var(--luzmo-picker-box-shadow, var(--picker-box-shadow));transition:background-color var(--luzmo-picker-animation-duration, var(--picker-animation-duration)),box-shadow var(--luzmo-picker-animation-duration, var(--picker-animation-duration)),border-color var(--luzmo-picker-animation-duration, var(--picker-animation-duration)) ease-in-out;color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-default, var(--picker-font-color-default)));background-color:var(--highcontrast-picker-background-color, var(--luzmo-picker-background-color-default, var(--picker-background-color-default)));border-style:solid;border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-color-default, var(--picker-border-color-default)));margin-block-start:var(--luzmo-picker-spacing-label-to-picker, var(--picker-spacing-label-to-picker));padding-block:0;padding-inline-start:var(--luzmo-picker-spacing-edge-to-text, var(--picker-spacing-edge-to-text));padding-inline-end:var(--luzmo-picker-spacing-edge-to-disclosure-icon, var(--picker-spacing-edge-to-disclosure-icon));display:flex}#button:after{pointer-events:none;content:"";block-size:calc(100% + var(--luzmo-picker-focus-indicator-gap, var(--picker-focus-indicator-gap)) * 2 + var(--luzmo-picker-border-width, var(--picker-border-width)) * 2);inline-size:calc(100% + var(--luzmo-picker-focus-indicator-gap, var(--picker-focus-indicator-gap)) * 2 + var(--luzmo-picker-border-width, var(--picker-border-width)) * 2);border-style:solid;border-width:var(--luzmo-picker-focus-indicator-thickness, var(--picker-focus-indicator-thickness));border-radius:calc(var(--luzmo-picker-border-radius, var(--picker-border-radius)) + var(--luzmo-picker-focus-indicator-gap, var(--picker-focus-indicator-gap)) + var(--luzmo-picker-border-width, var(--picker-border-width)));border-color:#0000;margin-block-start:calc((var(--luzmo-picker-focus-indicator-gap, var(--picker-focus-indicator-gap)) + var(--luzmo-picker-focus-indicator-thickness, var(--picker-focus-indicator-thickness)) + var(--luzmo-picker-border-width, var(--picker-border-width))) * -1);margin-inline-start:calc((var(--luzmo-picker-focus-indicator-gap, var(--picker-focus-indicator-gap)) + var(--luzmo-picker-focus-indicator-thickness, var(--picker-focus-indicator-thickness)) + var(--luzmo-picker-border-width, var(--picker-border-width))) * -1);position:absolute;inset-block:0;inset-inline:0}#button:active{background-color:var(--highcontrast-picker-background-color, var(--luzmo-picker-background-color-active, var(--picker-background-color-active)));border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-active, var(--picker-border-color-active)))}#button:active:after{border-color:#0000}#button.placeholder:active .label{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-active, var(--picker-font-color-active)))}#button.is-keyboardFocused,#button:focus-visible{background-color:var(--highcontrast-picker-background-color, var(--luzmo-picker-background-color-key-focus, var(--picker-background-color-key-focus)));border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-color-key-focus, var(--picker-border-color-key-focus)));color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-key-focus, var(--picker-font-color-key-focus)));outline:none}#button.is-keyboardFocused:after,#button:focus-visible:after{border-color:var(--highcontrast-picker-focus-indicator-color, var(--luzmo-picker-focus-indicator-color, var(--picker-focus-indicator-color)))}#button.is-keyboardFocused.placeholder,#button.placeholder:focus-visible{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-key-focus, var(--picker-font-color-key-focus)))}#button.is-keyboardFocused .disclosure-icon,#button:focus-visible .disclosure-icon{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-icon-color-key-focus, var(--picker-icon-color-key-focus)))}:host([open]) #button:not(:disabled,.is-disabled){color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-default-open, var(--picker-font-color-default-open)));background-color:var(--highcontrast-picker-background-color, var(--luzmo-picker-background-color-default-open, var(--picker-background-color-default-open)));border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-default-open, var(--picker-border-color-default-open)))}:host([open]) #button:not(:disabled,.is-disabled) .disclosure-icon{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-icon-color-default-open, var(--picker-icon-color-default-open)))}:host([invalid]) #button:not(:disabled,.is-disabled){border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-color-error-default, var(--picker-border-color-error-default)))}:host([invalid]) #button:not(:disabled,.is-disabled) .validation-icon{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-icon-color-error, var(--picker-icon-color-error)))}:host([invalid]) #button:not(:disabled,.is-disabled):active{border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-color-error-active, var(--picker-border-color-error-active)))}:host([invalid][open]) #button:not(:disabled,.is-disabled){border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-color-error-default-open, var(--picker-border-color-error-default-open)))}:host([invalid]) #button.is-keyboardFocused:not(:disabled,.is-disabled),:host([invalid]) #button:not(:disabled,.is-disabled):focus-visible{border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-color-error-key-focus, var(--picker-border-color-error-key-focus)))}:host([pending]) #button .disclosure-icon{color:var(--highcontrast-picker-content-color-disabled, var(--luzmo-picker-icon-color-disabled, var(--picker-icon-color-disabled)))}.icon{flex-shrink:0}.label{white-space:nowrap;font-size:var(--luzmo-picker-font-size, var(--picker-font-size));line-height:var(--luzmo-picker-line-height, var(--picker-line-height));font-weight:var(--luzmo-picker-font-weight, var(--picker-font-weight));text-overflow:ellipsis;text-align:start;flex:auto;overflow:hidden}.label.placeholder{font-weight:var(--luzmo-picker-placeholder-font-weight, var(--picker-font-weight));font-style:var(--luzmo-picker-placeholder-font-style, var(--picker-placeholder-font-style));transition:color var(--luzmo-picker-animation-duration, var(--picker-animation-duration)) ease-in-out;color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-default, var(--picker-font-color-default)))}.label.placeholder:active{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-active, var(--picker-font-color-active)))}.disclosure-icon{vertical-align:top;transition:color var(--luzmo-picker-animation-duration, var(--picker-animation-duration)) ease-out;margin-inline-start:var(--luzmo-picker-spacing-icon-to-disclosure-icon, var(--picker-spacing-icon-to-disclosure-icon));color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-icon-color-default, var(--picker-icon-color-default)));flex-shrink:0;display:inline-block;position:relative}.disclosure-icon:active{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-icon-color-active, var(--picker-icon-color-active)))}luzmo-progress-circle,.validation-icon{margin-inline-start:var(--luzmo-picker-spacing-text-to-icon, var(--picker-spacing-text-to-icon))}.icon-container{display:flex;position:relative;height:100%;align-items:center;font-size:var(--luzmo-picker-disclosure-icon-size, var(--picker-disclosure-icon-size))}.icon-container.disclosure-icon{margin-inline-end:0}.label~.disclosure-icon{margin-inline-start:var(--luzmo-picker-spacing-text-to-icon, var(--picker-spacing-text-to-icon))}:host([quiet]) #button{inline-size:auto;min-inline-size:0;padding-inline:var(--luzmo-picker-spacing-edge-to-text-quiet, var(--picker-spacing-edge-to-text-quiet));color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-default, var(--picker-font-color-default)));background-color:initial;background-color:var(--highcontrast-picker-background-color, transparent);border:none;border-radius:0;box-shadow:none;margin-block-start:calc(var(--luzmo-picker-spacing-label-to-picker-quiet, var(--picker-spacing-label-to-picker-quiet)) + 1px)}:host([quiet]) #button.label-inline{margin-block-start:0}:host([quiet]) #button .disclosure-icon{margin-inline-end:var(--luzmo-picker-spacing-edge-to-disclosure-icon-quiet, var(--picker-spacing-edge-to-disclosure-icon-quiet))}:host([quiet]) #button:after{block-size:auto;inline-size:auto;border:none}@media (hover: hover){#button:hover{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-hover, var(--picker-font-color-hover)));background-color:var(--highcontrast-picker-background-color, var(--luzmo-picker-background-color-hover, var(--picker-background-color-hover)));border-color:var(--highcontrast-picker-border-color-hover, var(--luzmo-picker-border-color-hover, var(--picker-border-color-hover)))}#button:hover .disclosure-icon{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-icon-color-hover, var(--picker-icon-color-hover)))}:host([open]):not([quiet]) #button:not(:disabled,.is-disabled):hover{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-hover-open, var(--picker-font-color-hover-open)));background-color:var(--highcontrast-picker-background-color, var(--luzmo-picker-background-color-hover-open, var(--picker-background-color-hover-open)));border-color:var(--highcontrast-picker-border-color-hover, var(--luzmo-picker-border-color-hover-open, var(--picker-border-color-hover-open)))}:host([open]) #button:not(:disabled,.is-disabled):hover .disclosure-icon{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-icon-color-hover-open, var(--picker-icon-color-hover-open)))}:host([invalid]) #button:not(:disabled,.is-disabled):hover{border-color:var(--highcontrast-picker-border-color-hover, var(--luzmo-picker-border-color-error-hover, var(--picker-border-color-error-hover)))}:host([invalid][open]) #button:not(:disabled,.is-disabled):hover{border-color:var(--highcontrast-picker-border-color-hover, var(--luzmo-picker-border-color-error-hover-open, var(--picker-border-color-error-hover-open)))}.label.placeholder:hover{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-hover, var(--picker-font-color-hover)))}:host([quiet]) #button:hover{background-color:initial;background-color:var(--highcontrast-picker-background-color, transparent)!important}}:host([quiet]) #button.is-keyboardFocused,:host([quiet]) #button:focus-visible{background-color:initial;background-color:var(--highcontrast-picker-background-color, transparent)}:host([quiet]) #button.is-keyboardFocused:after,:host([quiet]) #button:focus-visible:after{box-shadow:0 var(--luzmo-picker-focus-indicator-thickness, var(--picker-focus-indicator-thickness)) 0 0 var(--highcontrast-picker-focus-indicator-color, var(--luzmo-picker-focus-indicator-color, var(--picker-focus-indicator-color)));margin:calc((var(--luzmo-picker-focus-indicator-gap, var(--picker-focus-indicator-gap)) + var(--luzmo-picker-border-width, var(--picker-border-width))) * -1) 0;border:none;border-radius:0}:host([quiet][open]) #button,:host([quiet][disabled]) #button#button,:host([quiet]) #button#button:disabled,:host([quiet]) #button:active{background-color:initial;background-color:var(--highcontrast-picker-background-color, transparent)}.label-inline{vertical-align:top;display:inline-flex}:host([disabled]) #button,#button:disabled{cursor:default;background-color:var(--highcontrast-picker-background-color, var(--luzmo-picker-background-color-disabled, var(--picker-background-color-disabled)));border-color:#0000;border-color:var(--highcontrast-picker-border-color-disabled, transparent);color:var(--highcontrast-picker-content-color-disabled, var(--luzmo-picker-font-color-disabled, var(--picker-font-color-disabled)))}:host([disabled]) #button .icon,:host([disabled]) #button .disclosure-icon,:host([disabled]) #button .validation-icon,#button:disabled .icon,#button:disabled .disclosure-icon,#button:disabled .validation-icon{color:var(--highcontrast-picker-content-color-disabled, var(--luzmo-picker-icon-color-disabled, var(--picker-icon-color-disabled)))}:host([disabled]) #button .label.placeholder,#button:disabled .label.placeholder{color:var(--highcontrast-picker-content-color-disabled, var(--luzmo-picker-font-color-disabled, var(--picker-font-color-disabled)))}:host{--picker-box-shadow: 0px 1px 3px 0px rgba(var(--luzmo-border-color-rgb), .06);--picker-background-color-default: var(--luzmo-background-color);--picker-background-color-default-open: var(--luzmo-background-color-hover);--picker-background-color-active: var(--luzmo-background-color-down);--picker-background-color-hover: var(--luzmo-background-color-hover);--picker-background-color-hover-open: var(--luzmo-background-color-down);--picker-background-color-key-focus: var(--luzmo-background-color-down);--picker-border-color-default: var(--luzmo-border-color);--picker-border-color-default-open: var(--luzmo-border-color-hover);--picker-border-color-hover: var(--luzmo-border-color);--picker-border-color-hover-open: var(--luzmo-border-color-hover);--picker-border-color-active: var(--luzmo-border-color);--picker-border-color-key-focus: var(--luzmo-border-color);--picker-border-width: var(--luzmo-border-width);--picker-font-size: var(--luzmo-font-size);--picker-font-weight: var(--luzmo-font-weight);--picker-placeholder-font-style: var(--luzmo-font-style);--picker-line-height: var(--luzmo-line-height);--picker-block-size: 32px;--picker-border-radius: var(--luzmo-border-radius);--picker-spacing-edge-to-text: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--picker-spacing-text-to-icon: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--picker-spacing-text-to-icon-inline-end: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--picker-spacing-icon-to-disclosure-icon: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--picker-spacing-edge-to-text-quiet: 0px;--picker-spacing-label-to-picker: 0px;--picker-spacing-label-to-picker-quiet: calc( -1 * var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--picker-spacing-edge-to-disclosure-icon: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--picker-spacing-edge-to-disclosure-icon-quiet: 0px;--picker-animation-duration: var(--luzmo-animation-duration);--picker-font-color-default: var(--luzmo-font-color);--picker-font-color-default-open: var(--luzmo-font-color-hover);--picker-font-color-hover: var(--luzmo-font-color-hover);--picker-font-color-hover-open: var(--luzmo-font-color-down);--picker-font-color-active: var(--luzmo-font-color-focus);--picker-font-color-key-focus: var(--luzmo-font-color-focus);--picker-icon-color-default: var(--luzmo-font-color);--picker-icon-color-default-open: var(--luzmo-font-color-hover);--picker-icon-color-hover: var(--luzmo-font-color-hover);--picker-icon-color-hover-open: var(--luzmo-font-color-hover);--picker-icon-color-active: var(--luzmo-font-color-focus);--picker-icon-color-key-focus: var(--luzmo-font-color-focus);--picker-border-color-error-default: var(--luzmo-color-negative);--picker-border-color-error-default-open: var(--luzmo-color-negative-down);--picker-border-color-error-hover: var(--luzmo-color-negative-hover);--picker-border-color-error-hover-open: var(--luzmo-color-negative-down);--picker-border-color-error-active: var(--luzmo-color-negative-down);--picker-border-color-error-key-focus: var(--luzmo-color-negative-focus);--picker-icon-color-error: var(--luzmo-color-negative);--picker-background-color-disabled: var(--luzmo-background-color-disabled);--picker-font-color-disabled: var(--luzmo-color-disabled);--picker-icon-color-disabled: var(--luzmo-color-disabled);--picker-focus-indicator-gap: var(--luzmo-indicator-gap);--picker-focus-indicator-thickness: var(--luzmo-indicator-width);--picker-focus-indicator-color: var(--luzmo-indicator-color);--picker-disclosure-icon-size: var(--luzmo-font-size-s)}:host([size=s]){--picker-block-size: 28px;--picker-font-size: var(--luzmo-font-size-s);--picker-border-radius: var(--luzmo-border-radius);--picker-spacing-edge-to-text: var(--luzmo-spacing-3);--picker-spacing-text-to-icon: var(--luzmo-spacing-3);--picker-spacing-text-to-icon-inline-end: var(--luzmo-spacing-3);--picker-spacing-icon-to-disclosure-icon: var(--luzmo-spacing-3);--picker-spacing-label-to-picker-quiet: calc(-1 * var(--luzmo-spacing-3));--picker-spacing-edge-to-disclosure-icon: var(--luzmo-spacing-3);--picker-disclosure-icon-size: var(--luzmo-font-size-s)}:host([size=l]){--picker-block-size: 40px;--picker-font-size: var(--luzmo-font-size-l);--picker-border-radius: var(--luzmo-border-radius);--picker-spacing-edge-to-text: var(--luzmo-spacing-4);--picker-spacing-text-to-icon: var(--luzmo-spacing-4);--picker-spacing-text-to-icon-inline-end: var(--luzmo-spacing-4);--picker-spacing-icon-to-disclosure-icon: var(--luzmo-spacing-4);--picker-spacing-label-to-picker-quiet: calc(-1 * var(--luzmo-spacing-4));--picker-spacing-edge-to-disclosure-icon: var(--luzmo-spacing-4);--picker-disclosure-icon-size: var(--luzmo-font-size)}:host([size=xl]){--picker-block-size: 48px;--picker-font-size: var(--luzmo-font-size-xl);--picker-border-radius: var(--luzmo-border-radius-l);--picker-spacing-edge-to-text: calc( var(--luzmo-spacing-4) + var(--luzmo-spacing-1) );--picker-spacing-text-to-icon: calc( var(--luzmo-spacing-4) + var(--luzmo-spacing-1) );--picker-spacing-text-to-icon-inline-end: calc( var(--luzmo-spacing-4) + var(--luzmo-spacing-1) );--picker-spacing-icon-to-disclosure-icon: calc( var(--luzmo-spacing-4) + var(--luzmo-spacing-1) );--picker-spacing-label-to-picker-quiet: calc( -1 * var(--luzmo-spacing-4) + var(--luzmo-spacing-1) );--picker-spacing-edge-to-disclosure-icon: calc( var(--luzmo-spacing-4) + var(--luzmo-spacing-1) );--picker-disclosure-icon-size: var(--luzmo-font-size-l)}:host([variant=highlight]) ::slotted(luzmo-menu-item[selected]){--menu-item-highlight-label-content-color: var(--luzmo-primary-inverse-color);--menu-checkmark-display: var(--menu-checkmark-display-hidden);padding-inline-start:var(--luzmo-menu-item-label-inline-edge-to-content, var(--menu-item-label-inline-edge-to-content));background-color:var(--luzmo-menu-item-highlight-label-background-color, var(--menu-item-highlight-label-background-color, var(--luzmo-border-color)))}:host{display:inline-flex;vertical-align:top;max-inline-size:100%;inline-size:var(--luzmo-picker-inline-size, var(--picker-inline-size));min-inline-size:calc(var(--picker-minimum-width-multiplier) * var(--luzmo-picker-block-size, var(--picker-block-size)))}:host([quiet]){width:auto;min-width:0}:host([disabled]){pointer-events:none}#button{width:100%;min-width:100%;max-width:100%}#icon:not([hidden]){display:inline-flex}:host([readonly]) #button{-webkit-user-select:inherit;user-select:inherit}.picker,.validation-icon{flex-shrink:0}luzmo-overlay{pointer-events:none}luzmo-menu{pointer-events:initial}:host>luzmo-menu{display:none}:host([focused]:not([quiet])) #button #label.placeholder{color:var(--picker-placeholder-text-color-key-focus, var(--alias-placeholder-text-color-hover))}#label.visually-hidden~.picker{margin-inline-start:auto}:host([focused]:not([quiet],[pending])) #button .picker{color:var(--picker-icon-color-key-focus, var(--alias-icon-color-focus))}.visually-hidden{border:0;clip:rect(0,0,0,0);clip-path:inset(50%);height:1px;margin:0 -1px -1px 0;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}luzmo-overlay:not(:defined){display:none}#button.remove-focus-ring-safari-hack:focus-visible{background-color:var(--highcontrast-picker-background-color, var(--luzmo-picker-background-color-default, var(--picker-background-color-default)));border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-color-default, var(--picker-border-color-default)));color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-default, var(--picker-font-color-default)))}#button.remove-focus-ring-safari-hack:after{border:none}#button.remove-focus-ring-safari-hack:focus-visible:after{box-shadow:none}#button.remove-focus-ring-safari-hack:active{background-color:var(--highcontrast-picker-background-color, var(--luzmo-picker-background-color-default, var(--picker-background-color-default)));border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-color-default, var(--picker-border-color-default)));color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-default, var(--picker-font-color-default)))}';
82
+ var b = /* @__PURE__ */ ((i) => (i[i.desktop = 0] = "desktop", i[i.mobile = 1] = "mobile", i))(b || {});
83
+ class z {
84
+ constructor(e, o) {
85
+ this.target = e, this.host = o, this.preventNextToggle = "no", this.pointerdownState = !1, this.enterKeydownOn = null, this._open = !1, this.target = e, this.host = o, this.host.addController(this), this.init();
86
+ }
87
+ get activelyOpening() {
88
+ return !1;
89
+ }
90
+ get open() {
91
+ return this._open;
92
+ }
93
+ /**
94
+ * Set `open`
95
+ */
96
+ set open(e) {
97
+ if (this._open !== e) {
98
+ if (this._open = e, this.overlay) {
99
+ this.host.open = e;
100
+ return;
101
+ }
102
+ customElements.whenDefined("luzmo-overlay").then(async () => {
103
+ const { Overlay: o } = await import("./overlay/index.js");
104
+ this.overlay = new o(), this.host.open = !0, this.host.requestUpdate();
105
+ }), import("./overlay/index.js");
106
+ }
107
+ }
108
+ get overlay() {
109
+ return this._overlay;
110
+ }
111
+ set overlay(e) {
112
+ e && this.overlay !== e && (this._overlay = e, this.initOverlay());
113
+ }
114
+ releaseDescription() {
115
+ }
116
+ handleBeforetoggle(e) {
117
+ var o;
118
+ e.composedPath()[0] === e.target && (e.newState === "closed" && (this.preventNextToggle === "no" ? this.open = !1 : this.pointerdownState || (o = this.overlay) == null || o.manuallyKeepOpen()), this.open || (this.host.optionsMenu.updateSelectedItemIndex(), this.host.optionsMenu.closeDescendentOverlays()));
119
+ }
120
+ initOverlay() {
121
+ this.overlay && (this.overlay.addEventListener("beforetoggle", (e) => {
122
+ this.handleBeforetoggle(
123
+ e
124
+ );
125
+ }), this.overlay.type = this.host.isMobile.matches ? "modal" : "auto", this.overlay.triggerElement = this.host, this.overlay.placement = this.host.isMobile.matches ? void 0 : this.host.placement, this.overlay.receivesFocus = "true", this.overlay.willPreventClose = this.preventNextToggle !== "no" && this.open, this.overlay.addEventListener(
126
+ "slottable-request",
127
+ this.host.handleSlottableRequest
128
+ ));
129
+ }
130
+ handlePointerdown(e) {
131
+ }
132
+ handleButtonFocus(e) {
133
+ this.preventNextToggle === "maybe" && e.relatedTarget === this.host.optionsMenu && (this.preventNextToggle = "yes");
134
+ }
135
+ handleActivate(e) {
136
+ }
137
+ /* c8 ignore next 3 */
138
+ init() {
139
+ }
140
+ abort() {
141
+ var e;
142
+ this.releaseDescription(), (e = this.abortController) == null || e.abort();
143
+ }
144
+ hostConnected() {
145
+ this.init();
146
+ }
147
+ hostDisconnected() {
148
+ var e;
149
+ (e = this.abortController) == null || e.abort();
150
+ }
151
+ hostUpdated() {
152
+ this.overlay && this.host.dependencyManager.loaded && this.host.open !== this.overlay.open && (this.overlay.willPreventClose = this.preventNextToggle !== "no", this.overlay.open = this.host.open);
153
+ }
154
+ }
155
+ class T extends z {
156
+ constructor() {
157
+ super(...arguments), this.type = b.desktop;
158
+ }
159
+ handlePointerdown(e) {
160
+ if (e.button !== 0 || e.pointerType === "touch")
161
+ return;
162
+ this.pointerdownState = this.open, this.preventNextToggle = "maybe";
163
+ let o = 0;
164
+ const t = () => {
165
+ cancelAnimationFrame(o), o = requestAnimationFrame(() => {
166
+ document.removeEventListener("pointerup", t), document.removeEventListener("pointercancel", t), this.target.removeEventListener("click", t), requestAnimationFrame(() => {
167
+ this.preventNextToggle = "no";
168
+ });
169
+ });
170
+ };
171
+ document.addEventListener("pointerup", t), document.addEventListener("pointercancel", t), this.target.addEventListener("click", t), this.handleActivate();
172
+ }
173
+ handleActivate(e) {
174
+ this.enterKeydownOn && this.enterKeydownOn !== this.target || this.preventNextToggle !== "yes" && ((e == null ? void 0 : e.type) === "click" && this.open !== this.pointerdownState || this.host.toggle());
175
+ }
176
+ init() {
177
+ var o;
178
+ (o = this.abortController) == null || o.abort(), this.abortController = new AbortController();
179
+ const { signal: e } = this.abortController;
180
+ this.target.addEventListener(
181
+ "click",
182
+ (t) => this.handleActivate(t),
183
+ {
184
+ signal: e
185
+ }
186
+ ), this.target.addEventListener(
187
+ "pointerdown",
188
+ (t) => this.handlePointerdown(t),
189
+ { signal: e }
190
+ ), this.target.addEventListener(
191
+ "focus",
192
+ (t) => this.handleButtonFocus(t),
193
+ {
194
+ signal: e
195
+ }
196
+ );
197
+ }
198
+ }
199
+ const p = "remove-focus-ring-safari-hack";
200
+ class K extends z {
201
+ constructor() {
202
+ super(...arguments), this.type = b.mobile;
203
+ }
204
+ handleClick() {
205
+ this.preventNextToggle === "no" && (this.open = !this.open), this.preventNextToggle = "no";
206
+ }
207
+ handlePointerdown() {
208
+ this.preventNextToggle = this.open ? "yes" : "no", m() && this.target.classList.add(p);
209
+ }
210
+ handleFocusOut() {
211
+ this.host.open || m() && this.target.classList.contains(p) && this.target.classList.remove(p);
212
+ }
213
+ init() {
214
+ var o;
215
+ (o = this.abortController) == null || o.abort(), this.abortController = new AbortController();
216
+ const { signal: e } = this.abortController;
217
+ this.target.addEventListener("click", () => this.handleClick(), {
218
+ signal: e
219
+ }), this.target.addEventListener(
220
+ "pointerdown",
221
+ () => this.handlePointerdown(),
222
+ { signal: e }
223
+ ), this.target.addEventListener("focusout", () => this.handleFocusOut(), {
224
+ signal: e
225
+ });
226
+ }
227
+ }
228
+ const k = {
229
+ desktop: T,
230
+ mobile: K
231
+ };
232
+ var N = Object.defineProperty, R = Object.getOwnPropertyDescriptor, a = (i, e, o, t) => {
233
+ for (var c = t > 1 ? void 0 : t ? R(e, o) : e, r = i.length - 1, d; r >= 0; r--)
234
+ (d = i[r]) && (c = (t ? d(e, o, c) : d(c)) || c);
235
+ return t && c && N(e, o, c), c;
236
+ };
237
+ const U = () => s`
238
+ <div class="disclosure-icon icon">
239
+ ${f(A, { className: "indicator" })}
240
+ </div>
241
+ `, j = () => s`
242
+ <div class="icon-container validation-icon icon">
243
+ ${f(O)}
244
+ </div>
245
+ `, g = "option-picker";
246
+ class n extends C(y, {
247
+ noDefaultSize: !0
248
+ }) {
249
+ /**
250
+ * Initializes the `PendingStateController` for the Picker component.
251
+ * The `PendingStateController` manages the pending state of the Picker.
252
+ */
253
+ constructor() {
254
+ super(), this.disabled = !1, this.focused = !1, this.invalid = !1, this.pending = !1, this.pendingLabel = "Pending", this.open = !1, this.readonly = !1, this.placement = "bottom-start", this.quiet = !1, this.value = "", this.selects = "single", this.dependencyManager = new w(this), this.isMobile = new B(this, D), this.listRole = "listbox", this.itemRole = "option", this.hasRenderedOverlay = !1, this._selfManageFocusElement = !1, this.deprecatedMenu = null, this.selectionPromise = Promise.resolve(), this.willManageSelection = !1, this.recentlyConnected = !1, this.enterKeydownOn = null, this.handleSlottableRequest = (e) => {
255
+ }, this.applyFocusElementLabel = (e, o) => {
256
+ this.appliedLabel = e, this.labelAlignment = o.sideAligned ? "inline" : void 0;
257
+ }, this.handleKeydown = (e) => {
258
+ this.focused = !0, !(e.code !== "ArrowDown" && e.code !== "ArrowUp") && (e.stopPropagation(), e.preventDefault(), this.toggle(!0));
259
+ }, this.renderAngleIcon = () => U(), this.renderAlertIcon = () => j(), this.handleEnterKeydown = (e) => {
260
+ if (e.code === "Enter") {
261
+ if (this.enterKeydownOn) {
262
+ e.preventDefault();
263
+ return;
264
+ }
265
+ this.enterKeydownOn = e.target, this.addEventListener(
266
+ "keyup",
267
+ (o) => {
268
+ o.code === "Enter" && (this.enterKeydownOn = null);
269
+ },
270
+ { once: !0 }
271
+ );
272
+ }
273
+ }, this.pendingStateController = new x(this);
274
+ }
275
+ get selectedItem() {
276
+ return this._selectedItem;
277
+ }
278
+ get selectedItemContent() {
279
+ return this._selectedItemContent || { icon: [], content: [] };
280
+ }
281
+ get selfManageFocusElement() {
282
+ return this._selfManageFocusElement;
283
+ }
284
+ get menuItems() {
285
+ return this.optionsMenu.childItems;
286
+ }
287
+ set selectedItem(e) {
288
+ if (this.selectedItemContent = e ? e.itemChildren : void 0, e === this.selectedItem)
289
+ return;
290
+ const o = this.selectedItem;
291
+ this._selectedItem = e, this.requestUpdate("selectedItem", o);
292
+ }
293
+ get focusElement() {
294
+ return this.open ? this.optionsMenu : this.button;
295
+ }
296
+ forceFocusVisible() {
297
+ this.disabled || (this.focused = !0);
298
+ }
299
+ click() {
300
+ this.disabled || this.toggle();
301
+ }
302
+ handleButtonBlur() {
303
+ this.focused = !1;
304
+ }
305
+ focus(e) {
306
+ super.focus(e), !this.disabled && this.focusElement && (this.focused = this.hasVisibleFocusInTree());
307
+ }
308
+ handleHelperFocus() {
309
+ this.focused = !0, this.button.focus();
310
+ }
311
+ handleChange(e) {
312
+ this.strategy && (this.strategy.preventNextToggle = "no");
313
+ const o = e.target, [t] = o.selectedItems;
314
+ e.stopPropagation(), e.cancelable ? this.setValueFromItem(t, e) : (this.open = !1, this.strategy && (this.strategy.open = !1));
315
+ }
316
+ handleButtonFocus(e) {
317
+ var o;
318
+ (o = this.strategy) == null || o.handleButtonFocus(e);
319
+ }
320
+ toggle(e) {
321
+ this.readonly || this.pending || (this.open = e === void 0 ? !this.open : e, this.strategy && (this.strategy.open = this.open), this._selfManageFocusElement = this.open);
322
+ }
323
+ close() {
324
+ this.readonly || this.strategy && (this.open = !1, this.strategy.open = !1);
325
+ }
326
+ bindEvents() {
327
+ var e;
328
+ (e = this.strategy) == null || e.abort(), this.strategy = this.isMobile.matches ? new k.mobile(this.button, this) : new k.desktop(this.button, this);
329
+ }
330
+ connectedCallback() {
331
+ super.connectedCallback(), this.recentlyConnected = this.hasUpdated;
332
+ }
333
+ disconnectedCallback() {
334
+ var e;
335
+ this.close(), (e = this.strategy) == null || e.releaseDescription(), super.disconnectedCallback();
336
+ }
337
+ async setValueFromItem(e, o) {
338
+ this.open = !1, this.strategy && (this.strategy.open = !1);
339
+ const t = this.selectedItem, c = this.value;
340
+ if (this.selectedItem = e, this.value = (e == null ? void 0 : e.value) ?? "", await this.updateComplete, !this.dispatchEvent(
341
+ new CustomEvent("change", {
342
+ bubbles: !0,
343
+ // Allow it to be prevented.
344
+ cancelable: !0,
345
+ composed: !0,
346
+ detail: this.value
347
+ })
348
+ ) && this.selects) {
349
+ o && o.preventDefault(), this.setMenuItemSelected(this.selectedItem, !1), t && this.setMenuItemSelected(t, !0), this.selectedItem = t, this.value = c, this.open = !0, this.strategy && (this.strategy.open = !0);
350
+ return;
351
+ } else if (!this.selects) {
352
+ this.selectedItem = t, this.value = c;
353
+ return;
354
+ }
355
+ t && this.setMenuItemSelected(t, !1), this.setMenuItemSelected(e, !!this.selects);
356
+ }
357
+ setMenuItemSelected(e, o) {
358
+ this.selects != null && (e.selected = o);
359
+ }
360
+ get containerStyles() {
361
+ return this.isMobile.matches ? {
362
+ "--swc-menu-width": "100%"
363
+ } : {};
364
+ }
365
+ set selectedItemContent(e) {
366
+ if (e === this.selectedItemContent)
367
+ return;
368
+ const o = this.selectedItemContent;
369
+ this._selectedItemContent = e, this.requestUpdate("selectedItemContent", o);
370
+ }
371
+ handleTooltipSlotchange(e) {
372
+ this.tooltipEl = e.target.assignedElements()[0];
373
+ }
374
+ renderLabelContent(e) {
375
+ return this.value && this.selectedItem ? e : s`
376
+ <slot name="label" id="label">
377
+ <span aria-hidden=${u(this.appliedLabel ? void 0 : "true")}>
378
+ ${this.label}
379
+ </span>
380
+ </slot>
381
+ `;
382
+ }
383
+ get buttonContent() {
384
+ const e = {
385
+ "visually-hidden": this.icons === "only" && !!this.value,
386
+ placeholder: !this.value,
387
+ label: !0
388
+ }, o = this.appliedLabel || this.label;
389
+ return [
390
+ s`
391
+ <div id="icon" ?hidden=${this.icons === "none"}>
392
+ ${this.selectedItemContent.icon}
393
+ </div>
394
+ <div
395
+ id=${u(this.value && this.selectedItem ? "label" : void 0)}
396
+ class=${P(e)}
397
+ >
398
+ ${this.renderLabelContent(this.selectedItemContent.content)}
399
+ </div>
400
+ ${this.value && this.selectedItem ? s`
401
+ <div
402
+ aria-hidden="true"
403
+ class="visually-hidden"
404
+ id="applied-label"
405
+ >
406
+ ${o}
407
+ <slot name="label"></slot>
408
+ </div>
409
+ ` : s` <span hidden id="applied-label">${o}</span> `}
410
+ ${this.invalid && !this.pending ? s` ${this.renderAlertIcon()} ` : I}
411
+ ${this.pendingStateController.renderPendingState()}
412
+ ${this.renderAngleIcon()}
413
+ <slot
414
+ aria-hidden="true"
415
+ name="tooltip"
416
+ id="tooltip"
417
+ @slotchange=${this.handleTooltipSlotchange}
418
+ ></slot>
419
+ `
420
+ ];
421
+ }
422
+ renderOverlay(e) {
423
+ var t, c, r;
424
+ if (((t = this.strategy) == null ? void 0 : t.overlay) === void 0)
425
+ return e;
426
+ const o = this.renderContainer(e);
427
+ return S(o, (c = this.strategy) == null ? void 0 : c.overlay, {
428
+ host: this
429
+ }), (r = this.strategy) == null ? void 0 : r.overlay;
430
+ }
431
+ get renderDescriptionSlot() {
432
+ return s`
433
+ <div id=${g}>
434
+ <slot name="description"></slot>
435
+ </div>
436
+ `;
437
+ }
438
+ // a helper to throw focus to the button is needed because Safari
439
+ // won't include buttons in the tab order even with tabindex="0"
440
+ render() {
441
+ return this.tooltipEl && (this.tooltipEl.disabled = this.open), s`
442
+ <span
443
+ id="focus-helper"
444
+ tabindex=${this.focused || this.open ? "-1" : "0"}
445
+ @focus=${this.handleHelperFocus}
446
+ aria-describedby=${g}
447
+ ></span>
448
+ <button
449
+ aria-controls=${u(this.open ? "menu" : void 0)}
450
+ aria-describedby="tooltip"
451
+ aria-expanded=${this.open ? "true" : "false"}
452
+ aria-haspopup="true"
453
+ aria-labelledby="loader icon label applied-label"
454
+ id="button"
455
+ class=${u(
456
+ this.labelAlignment ? `label-${this.labelAlignment}` : void 0
457
+ )}
458
+ @blur=${this.handleButtonBlur}
459
+ @keydown=${{
460
+ handleEvent: this.handleEnterKeydown,
461
+ capture: !0
462
+ }}
463
+ ?disabled=${this.disabled}
464
+ tabindex="-1"
465
+ >
466
+ ${this.buttonContent}
467
+ </button>
468
+ ${this.renderMenu} ${this.renderDescriptionSlot}
469
+ `;
470
+ }
471
+ update(e) {
472
+ var o, t;
473
+ this.selects && (this.selects = "single"), e.has("disabled") && this.disabled && this.strategy && (this.open = !1, this.strategy.open = !1), e.has("pending") && this.pending && this.strategy && (this.open = !1, this.strategy.open = !1), e.has("value") && this.shouldScheduleManageSelection(), this.hasUpdated || (this.deprecatedMenu = this.querySelector(":scope > luzmo-menu"), (o = this.deprecatedMenu) == null || o.toggleAttribute("ignore", !0), (t = this.deprecatedMenu) == null || t.setAttribute("selects", "inherit")), super.update(e);
474
+ }
475
+ bindButtonKeydownListener() {
476
+ this.button.addEventListener("keydown", this.handleKeydown);
477
+ }
478
+ updated(e) {
479
+ super.updated(e), e.has("open") && (this.strategy.open = this.open);
480
+ }
481
+ firstUpdated(e) {
482
+ super.firstUpdated(e), this.bindButtonKeydownListener(), this.bindEvents();
483
+ }
484
+ get dismissHelper() {
485
+ return s`
486
+ <div class="visually-hidden">
487
+ <button
488
+ tabindex="-1"
489
+ aria-label="Dismiss"
490
+ @click=${this.close}
491
+ ></button>
492
+ </div>
493
+ `;
494
+ }
495
+ renderContainer(e) {
496
+ const o = s`
497
+ ${this.dismissHelper} ${e} ${this.dismissHelper}
498
+ `;
499
+ return this.dependencyManager.add("luzmo-popover"), import("./popover/index.js"), s`
500
+ <luzmo-popover
501
+ id="popover"
502
+ size=${this.size}
503
+ role="presentation"
504
+ style=${F(this.containerStyles)}
505
+ placement=${this.placement}
506
+ >
507
+ ${o}
508
+ </luzmo-popover>
509
+ `;
510
+ }
511
+ get renderMenu() {
512
+ const e = s`
513
+ <luzmo-menu
514
+ aria-labelledby="applied-label"
515
+ @change=${this.handleChange}
516
+ id="menu"
517
+ @keydown=${{
518
+ handleEvent: this.handleEnterKeydown,
519
+ capture: !0
520
+ }}
521
+ @scroll=${this.onScroll}
522
+ role=${this.listRole}
523
+ .selects=${this.selects}
524
+ .selected=${this.value ? [this.value] : []}
525
+ size=${this.size}
526
+ @luzmo-menu-item-added-or-updated=${this.shouldManageSelection}
527
+ >
528
+ <slot @slotchange=${this.shouldScheduleManageSelection}></slot>
529
+ </luzmo-menu>
530
+ `;
531
+ return this.hasRenderedOverlay = this.hasRenderedOverlay || this.focused || this.open || !!this.deprecatedMenu, this.hasRenderedOverlay ? (this.dependencyManager.loaded && this.dependencyManager.add("luzmo-overlay"), this.renderOverlay(e)) : e;
532
+ }
533
+ shouldScheduleManageSelection(e) {
534
+ !this.willManageSelection && (!e || e.target.getRootNode().host === this) && (this.willManageSelection = !0, requestAnimationFrame(() => {
535
+ requestAnimationFrame(() => {
536
+ this.manageSelection();
537
+ });
538
+ }));
539
+ }
540
+ shouldManageSelection() {
541
+ this.willManageSelection || (this.willManageSelection = !0, this.manageSelection());
542
+ }
543
+ async manageSelection() {
544
+ if (this.selects == null)
545
+ return;
546
+ this.selectionPromise = new Promise(
547
+ (o) => this.selectionResolver = o
548
+ );
549
+ let e;
550
+ await this.optionsMenu.updateComplete, this.recentlyConnected && (await new Promise((o) => requestAnimationFrame(() => o(!0))), this.recentlyConnected = !1), this.menuItems.forEach((o) => {
551
+ this.value === o.value && !o.disabled ? e = o : o.selected = !1;
552
+ }), e ? (e.selected = !!this.selects, this.selectedItem = e) : (this.value = "", this.selectedItem = void 0), this.open && (await this.optionsMenu.updateComplete, this.optionsMenu.updateSelectedItemIndex()), this.selectionResolver(), this.willManageSelection = !1;
553
+ }
554
+ async getUpdateComplete() {
555
+ const e = await super.getUpdateComplete();
556
+ return await this.selectionPromise, e;
557
+ }
558
+ onScroll() {
559
+ this.dispatchEvent(
560
+ new Event("scroll", {
561
+ cancelable: !0,
562
+ composed: !0
563
+ })
564
+ );
565
+ }
566
+ }
567
+ a([
568
+ h()
569
+ ], n.prototype, "appliedLabel", 2);
570
+ a([
571
+ v("#button")
572
+ ], n.prototype, "button", 2);
573
+ a([
574
+ l({ type: Boolean, reflect: !0 })
575
+ ], n.prototype, "disabled", 2);
576
+ a([
577
+ l({ type: Boolean, reflect: !0 })
578
+ ], n.prototype, "focused", 2);
579
+ a([
580
+ l({ type: String, reflect: !0 })
581
+ ], n.prototype, "icons", 2);
582
+ a([
583
+ l({ type: String, reflect: !0 })
584
+ ], n.prototype, "variant", 2);
585
+ a([
586
+ l({ type: Boolean, reflect: !0 })
587
+ ], n.prototype, "invalid", 2);
588
+ a([
589
+ l({ type: Boolean, reflect: !0 })
590
+ ], n.prototype, "pending", 2);
591
+ a([
592
+ l({ type: String, attribute: "pending-label" })
593
+ ], n.prototype, "pendingLabel", 2);
594
+ a([
595
+ l()
596
+ ], n.prototype, "label", 2);
597
+ a([
598
+ l({ type: Boolean, reflect: !0 })
599
+ ], n.prototype, "open", 2);
600
+ a([
601
+ l({ type: Boolean, reflect: !0 })
602
+ ], n.prototype, "readonly", 2);
603
+ a([
604
+ h()
605
+ ], n.prototype, "labelAlignment", 2);
606
+ a([
607
+ v("luzmo-menu")
608
+ ], n.prototype, "optionsMenu", 2);
609
+ a([
610
+ v("luzmo-overlay")
611
+ ], n.prototype, "overlayElement", 2);
612
+ a([
613
+ l()
614
+ ], n.prototype, "placement", 2);
615
+ a([
616
+ l({ type: Boolean, reflect: !0 })
617
+ ], n.prototype, "quiet", 2);
618
+ a([
619
+ l({ type: String })
620
+ ], n.prototype, "value", 2);
621
+ a([
622
+ l({ attribute: !1 })
623
+ ], n.prototype, "selectedItem", 1);
624
+ a([
625
+ h()
626
+ ], n.prototype, "selectedItemContent", 1);
627
+ class se extends n {
628
+ constructor() {
629
+ super(...arguments), this.handleKeydown = (e) => {
630
+ const { code: o } = e;
631
+ if (this.focused = !0, !o.startsWith("Arrow") || this.readonly || this.pending)
632
+ return;
633
+ if (o === "ArrowUp" || o === "ArrowDown") {
634
+ this.toggle(!0), e.preventDefault();
635
+ return;
636
+ }
637
+ e.preventDefault();
638
+ const t = this.selectedItem ? this.menuItems.indexOf(this.selectedItem) : -1, c = t < 0 || o === "ArrowRight" ? 1 : -1;
639
+ let r = t + c;
640
+ for (; this.menuItems[r] && this.menuItems[r].disabled; )
641
+ r += c;
642
+ !this.menuItems[r] || this.menuItems[r].disabled || (!this.value || r !== t) && this.setValueFromItem(this.menuItems[r]);
643
+ };
644
+ }
645
+ static get styles() {
646
+ return [M(_)];
647
+ }
648
+ get containerStyles() {
649
+ const e = super.containerStyles;
650
+ return this.quiet || (e["min-width"] = `${this.offsetWidth}px`), e;
651
+ }
652
+ }
653
+ export {
654
+ g as D,
655
+ n as L,
656
+ se as a
657
+ };