@luzmo/analytics-components-kit 1.0.1-alpha.31 → 1.0.1-alpha.32

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 (217) hide show
  1. package/components/{async-directive-C_bp5UcZ-B5_19oN_.js → async-directive-BfcqVjDp-BCT-lA4F.js} +8 -8
  2. package/components/{async-directive-C_bp5UcZ-mUPcBvyn.cjs → async-directive-BfcqVjDp-C8C45jl6.cjs} +3 -3
  3. package/components/{base-D76d76ww-D0dTUBua.js → base-D76d76ww-BGkuhs54.js} +59 -47
  4. package/components/{base-D76d76ww-BEIhYtgV.cjs → base-D76d76ww-tT6yr8eb.cjs} +9 -9
  5. package/components/{button-base-WsJSnMie-B1TLbPwk.cjs → button-base-DbkDzb71-CY6MJGqE.cjs} +2 -2
  6. package/components/{button-base-WsJSnMie-CyGPs7kd.js → button-base-DbkDzb71-R8oqSqlY.js} +4 -4
  7. package/components/calculate-data-item-icon-BtUWtDx3.cjs +20 -0
  8. package/components/calculate-data-item-icon-DauSiV8c.js +97 -0
  9. package/components/{checkbox-mixin-CmeCReJh-wY0R8cuc.cjs → checkbox-mixin-Do7EgtpQ-D3m-dMTI.cjs} +3 -3
  10. package/components/{checkbox-mixin-CmeCReJh-C94-rm4F.js → checkbox-mixin-Do7EgtpQ-hne79zc-.js} +2 -2
  11. package/components/{de-BaTUIQk1.js → de-CCq00pbq.js} +55 -1
  12. package/components/de-DcZysUyZ.cjs +20 -0
  13. package/components/{directive-helpers-Bx_ey3Gk-BxvL9t9F.cjs → directive-helpers-Cm6gitnu-BeggOiwf.cjs} +4 -4
  14. package/components/{directive-helpers-Bx_ey3Gk-Csi4AxXe.js → directive-helpers-Cm6gitnu-CeYtlPO9.js} +53 -19
  15. package/components/display-settings/index.cjs +1 -1
  16. package/components/display-settings/index.js +18 -17
  17. package/components/display-settings-binning/display-settings-binning.d.ts +0 -1
  18. package/components/display-settings-binning/index.cjs +3 -2
  19. package/components/display-settings-binning/index.js +21 -21
  20. package/components/display-settings-datetime/index.cjs +2 -2
  21. package/components/display-settings-datetime/index.js +37 -35
  22. package/components/display-settings-grand-totals/display-settings-grand-totals.d.ts +0 -1
  23. package/components/display-settings-grand-totals/index.cjs +4 -3
  24. package/components/display-settings-grand-totals/index.js +21 -21
  25. package/components/display-settings-numeric/index.cjs +14 -14
  26. package/components/display-settings-numeric/index.js +32 -30
  27. package/components/display-settings-period-over-period/index.cjs +6 -6
  28. package/components/display-settings-period-over-period/index.js +36 -34
  29. package/components/draggable-data-item/index.cjs +3 -3
  30. package/components/draggable-data-item/index.js +15 -13
  31. package/components/draggable-data-item-level/index.cjs +9 -9
  32. package/components/draggable-data-item-level/index.js +96 -167
  33. package/components/droppable-slot/index.cjs +2 -2
  34. package/components/droppable-slot/index.js +21 -19
  35. package/components/edit-item/index.cjs +11 -11
  36. package/components/edit-item/index.js +13 -12
  37. package/components/edit-option/index.cjs +1 -1
  38. package/components/edit-option/index.js +1 -1
  39. package/components/edit-option-action-button-group/index.cjs +2 -1
  40. package/components/edit-option-action-button-group/index.js +44 -43
  41. package/components/edit-option-base-CSJNbo2E.cjs +53 -0
  42. package/components/{edit-option-base-DOezOLDd.js → edit-option-base-DeQjGX4i.js} +5 -4
  43. package/components/edit-option-color-picker/index.cjs +23 -23
  44. package/components/edit-option-color-picker/index.js +50 -50
  45. package/components/edit-option-multi-language-field/index.cjs +1 -1
  46. package/components/edit-option-multi-language-field/index.js +3 -3
  47. package/components/edit-option-number-field/index.cjs +2 -2
  48. package/components/edit-option-number-field/index.js +3 -3
  49. package/components/edit-option-picker/index.cjs +2 -2
  50. package/components/edit-option-picker/index.js +4 -4
  51. package/components/edit-option-position-picker/index.cjs +1 -1
  52. package/components/edit-option-position-picker/index.js +3 -3
  53. package/components/edit-option-positions-number-field/index.cjs +1 -1
  54. package/components/edit-option-positions-number-field/index.js +7 -7
  55. package/components/edit-option-radio-button-group/index.cjs +4 -4
  56. package/components/edit-option-radio-button-group/index.js +4 -4
  57. package/components/edit-option-slider/index.cjs +2 -2
  58. package/components/edit-option-slider/index.js +27 -27
  59. package/components/edit-option-switch/index.cjs +3 -3
  60. package/components/edit-option-switch/index.js +5 -5
  61. package/components/edit-option-text-field/index.cjs +2 -2
  62. package/components/edit-option-text-field/index.js +3 -3
  63. package/components/es-CGiBfBKJ.cjs +20 -0
  64. package/components/{es-D37mTCZB.js → es-DBmbFw-L.js} +55 -1
  65. package/components/filter-data-item-picker/filter-data-item-picker.d.ts +88 -0
  66. package/components/filter-data-item-picker/index.cjs +47 -0
  67. package/components/filter-data-item-picker/index.d.ts +7 -0
  68. package/components/filter-data-item-picker/index.js +193 -0
  69. package/components/filter-expression-picker/filter-expression-picker.d.ts +74 -0
  70. package/components/filter-expression-picker/index.cjs +20 -0
  71. package/components/filter-expression-picker/index.d.ts +7 -0
  72. package/components/filter-expression-picker/index.js +30 -0
  73. package/components/filter-group/filter-group.d.ts +26 -0
  74. package/components/filter-group/index.d.ts +7 -0
  75. package/components/filter-item/filter-item.d.ts +76 -0
  76. package/components/filter-item/index.cjs +52 -0
  77. package/components/filter-item/index.d.ts +7 -0
  78. package/components/filter-item/index.js +271 -0
  79. package/components/filter-parameter-picker/filter-parameter-picker.d.ts +25 -0
  80. package/components/filter-parameter-picker/index.d.ts +7 -0
  81. package/components/filter-value-picker/filter-value-picker.d.ts +65 -0
  82. package/components/filter-value-picker/index.cjs +51 -0
  83. package/components/filter-value-picker/index.d.ts +7 -0
  84. package/components/filter-value-picker/index.js +149 -0
  85. package/components/filter-value-picker-datetime/filter-value-picker-datetime.d.ts +43 -0
  86. package/components/filter-value-picker-datetime/index.cjs +288 -0
  87. package/components/filter-value-picker-datetime/index.d.ts +7 -0
  88. package/components/filter-value-picker-datetime/index.js +2820 -0
  89. package/components/filter-value-picker-hierarchy/filter-value-picker-hierarchy.d.ts +82 -0
  90. package/components/filter-value-picker-hierarchy/index.cjs +46 -0
  91. package/components/filter-value-picker-hierarchy/index.d.ts +7 -0
  92. package/components/filter-value-picker-hierarchy/index.js +278 -0
  93. package/components/filter-value-picker-numeric/filter-value-picker-numeric.d.ts +83 -0
  94. package/components/filter-value-picker-numeric/index.cjs +46 -0
  95. package/components/filter-value-picker-numeric/index.d.ts +7 -0
  96. package/components/filter-value-picker-numeric/index.js +274 -0
  97. package/components/flow-D-0MTYCm-BOBCoA5Z.js +546 -0
  98. package/components/flow-D-0MTYCm-BW5krWol.cjs +48 -0
  99. package/components/{focusable-BNESohBR-DbTLvYXr.cjs → focusable-BxtpnzWp-CkK9AeMt.cjs} +2 -2
  100. package/components/{focusable-BNESohBR-DYvAZYXL.js → focusable-BxtpnzWp-DJQkL8Zv.js} +1 -1
  101. package/components/focusable-DB6Uhr-C.js +275 -0
  102. package/components/focusable-_wp5pWO-.cjs +20 -0
  103. package/components/{fr-BWJHvkss.js → fr-BOwMikLT.js} +55 -1
  104. package/components/fr-DZbYwMlh.cjs +20 -0
  105. package/components/{get-css-variable-Bhbr-Kr1.js → get-css-variable-YlLiVgo8.js} +2 -2
  106. package/components/{if-defined-DbhS35z5.js → if-defined-B4gwZxx6.js} +1 -1
  107. package/components/{if-defined-D-1p2bLN-Bn-33APC.js → if-defined-DOaE2coe-CNT45Xcl.js} +1 -1
  108. package/components/{if-defined-D-1p2bLN-0_AoRnT2.cjs → if-defined-DOaE2coe-Cvlu5s9n.cjs} +1 -1
  109. package/components/{if-defined-CF8baNdl.cjs → if-defined-DqthfJme.cjs} +2 -2
  110. package/components/{index-Dwp251OJ.js → index-5mZhN-HJ.js} +7 -6
  111. package/components/{index-B3jkBlKY.js → index-BC1LV3vH.js} +3 -3
  112. package/components/{index-BXMPi13W.js → index-BCBLJ-ei.js} +82 -82
  113. package/components/{index-B9dQtvu7.js → index-BHJH1eGn.js} +3 -3
  114. package/components/index-BHXq1-M1.cjs +195 -0
  115. package/components/{index-C2-2RrwB.cjs → index-BKwbYw6x.cjs} +3 -3
  116. package/components/index-BOqSYlku.cjs +38 -0
  117. package/components/{index-D5rT-qy9.cjs → index-Bafc5poK.cjs} +12 -28
  118. package/components/{index-CqFCIIIl.js → index-BbuNpVBr.js} +3 -3
  119. package/components/{index-CRx2nPkq.js → index-Bmpw4rGV.js} +3 -3
  120. package/components/{index-D8Na-686.cjs → index-BoXbQm2o.cjs} +1 -1
  121. package/components/{index-uRWe553S.cjs → index-BtIWR_s6.cjs} +4 -4
  122. package/components/index-BwsEWpIS.js +494 -0
  123. package/components/{index-CF84gqsb.cjs → index-C2PPSv8E.cjs} +4 -4
  124. package/components/{index-CbeVu32V.js → index-C3N6qTxJ.js} +3 -3
  125. package/components/index-C5m9vRp5.js +598 -0
  126. package/components/{index-bZQXFqxv.cjs → index-CBOAQ3-E.cjs} +10 -10
  127. package/components/{index-_McOOiwL.cjs → index-CSm0I7Gz.cjs} +4 -4
  128. package/components/index-CTHlwZ9E.cjs +274 -0
  129. package/components/{index-Brg_sVUg.js → index-CTVNGPeT.js} +1 -1
  130. package/components/{index-Rjoe8cIs.js → index-Cb5l6iK_.js} +110 -173
  131. package/components/{index-BkCJwWm3.cjs → index-CeENkpNK.cjs} +3 -3
  132. package/components/{index-BnbhRpm9.js → index-CnRQGFHT.js} +3 -3
  133. package/components/{index-BKcvEgWr.cjs → index-CnpJUw_z.cjs} +3 -3
  134. package/components/{index-DJik7S7b.js → index-CsDgk_sj.js} +2 -2
  135. package/components/{index-fl13NYnO.js → index-CskV_bXp.js} +2 -2
  136. package/components/index-CyWwLYEO.js +1789 -0
  137. package/components/index-D9yzIoGv.js +1666 -0
  138. package/components/{index-Bwxvaqxq.cjs → index-DF-s3cEL.cjs} +11 -11
  139. package/components/{index-CVuJ-LUO.cjs → index-DSQyBS9Z.cjs} +2 -2
  140. package/components/{index-Bb8vxGZY.js → index-Desl7GJ0.js} +19 -15
  141. package/components/{index-0HUnZcem.cjs → index-DtohCwyO.cjs} +2 -2
  142. package/components/index-TQG9Xdxu.cjs +20 -0
  143. package/components/index-c2uKLWDt.cjs +157 -0
  144. package/components/{index-C9-QEfA9.cjs → index-j8UKjHqY.cjs} +4 -4
  145. package/components/{index-DZZMSlYS.js → index-rQxtPaJl.js} +6 -6
  146. package/components/index.cjs +1 -1
  147. package/components/index.js +41 -27
  148. package/components/localized-decorator-ClAOFk8M.cjs +28 -0
  149. package/components/localized-decorator-DGnMToFa.js +48 -0
  150. package/components/{luzmo-icons-U09GB75o.js → luzmo-icons-CPucBq6e.js} +89 -89
  151. package/components/luzmo-icons-DbwDQtuO-DSQ-uVxy.cjs +47 -0
  152. package/components/{luzmo-icons-BLN3xVgr-Tz5XXgbL.js → luzmo-icons-DbwDQtuO-QG0fLECn.js} +67 -25
  153. package/components/luzmo-icons-Nyf1P71v.cjs +31 -0
  154. package/components/nl-0V96M02q.cjs +20 -0
  155. package/components/nl-CY0iO3Ch.js +158 -0
  156. package/components/observe-slot-presence-CmVi0zTc-B4M1Mze7.cjs +36 -0
  157. package/components/observe-slot-presence-CmVi0zTc-DCFuXW7v.js +87 -0
  158. package/components/{observe-slot-text-CVKLDesL-BB2RmFgc.cjs → observe-slot-text-BPfIQQtz-DHOh38Ve.cjs} +4 -4
  159. package/components/{observe-slot-text-CVKLDesL-CXUeCmXW.js → observe-slot-text-BPfIQQtz-v6B-1BYh.js} +5 -5
  160. package/components/pending-state-DTX7ggyF-BQGaWUEI.cjs +80 -0
  161. package/components/pending-state-DTX7ggyF-KolnwUB7.js +321 -0
  162. package/components/{periods.const-CDIkC5CK.cjs → periods.const-BbgInj9J.cjs} +1 -1
  163. package/components/{periods.const-GHh5bPfs.js → periods.const-D2cMP5hH.js} +1 -1
  164. package/components/{popover-DRyjN9y_-w1zh4tvw.js → popover-DjX0aAnY-B_ujTfos.js} +2 -2
  165. package/components/{popover-DRyjN9y_-7mF_fAOh.cjs → popover-DjX0aAnY-CSUMV_Ay.cjs} +3 -3
  166. package/components/property-CxtZroGf.js +600 -0
  167. package/components/property-Dlf9S6Jz.cjs +42 -0
  168. package/components/{query-assigned-nodes-C76XVPWY-k1jDPyUQ.cjs → query-assigned-nodes-C76XVPWY-BW2w3V7-.cjs} +1 -1
  169. package/components/{query-assigned-nodes-C76XVPWY-BWouxGZs.js → query-assigned-nodes-C76XVPWY-DxNwGHfW.js} +1 -1
  170. package/components/scatter-plot-options.config-CFfGJXsV.cjs +20 -0
  171. package/components/{scatter-plot-options.config-lrkd9qj4.js → scatter-plot-options.config-Corlzno1.js} +78 -48
  172. package/components/set-locale-5FFfQpVQ.cjs +52 -0
  173. package/components/set-locale-DAGnJZD8.js +188 -0
  174. package/components/{sized-mixin-DMuOVsw0.js → sized-mixin-C7R5uRbF.js} +1 -1
  175. package/components/sized-mixin-ZTphZKLm.cjs +20 -0
  176. package/components/slot-menu/index.cjs +1 -1
  177. package/components/slot-menu/index.js +12 -11
  178. package/components/slot-menu-list/index.cjs +3 -3
  179. package/components/slot-menu-list/index.js +15 -14
  180. package/components/{state-e2n-fyrr.js → state-BVYsk_HZ.js} +1 -1
  181. package/components/{state-QgHgNZLe.cjs → state-CrfOw8Zp.cjs} +2 -2
  182. package/components/{streaming-listener-C8Ctj0Q6-lanbGKR9.js → streaming-listener-CP-JE6Fa-9MH0gENR.js} +3 -3
  183. package/components/{streaming-listener-C8Ctj0Q6-BhMxS69F.cjs → streaming-listener-CP-JE6Fa-DMzr1X1m.cjs} +3 -3
  184. package/components/{task-fQFUVV8e.cjs → task-CdvrMX8r.cjs} +2 -2
  185. package/components/{task-gE27tBDv.js → task-DH8UFyxP.js} +1 -1
  186. package/components/{text-field-C0pFjPG1-BCVbGXp7.cjs → text-field-BIADXoLC-B8w9TVmS.cjs} +8 -8
  187. package/components/{text-field-C0pFjPG1-B4TRivuD.js → text-field-BIADXoLC-B9oE05VF.js} +11 -10
  188. package/custom-elements.json +1891 -34
  189. package/index.d.ts +7 -0
  190. package/item-definitions/scatter-plot/scatter-plot-options.config.d.ts +3 -0
  191. package/package.json +46 -1
  192. package/utils/data-broker/index.d.ts +179 -0
  193. package/utils/data-item-types/calculate-data-item-icon.d.ts +3 -0
  194. package/utils/filters/expressions.d.ts +15 -0
  195. package/utils/filters/index.d.ts +1 -0
  196. package/utils/localize/set-locale.d.ts +4 -2
  197. package/utils/types/column.types.d.ts +1 -1
  198. package/components/de-DgHoh7KS.cjs +0 -20
  199. package/components/draggable-data-item-level/helpers/calculate-type-icon.d.ts +0 -2
  200. package/components/edit-option-base-jkkFevzT.cjs +0 -53
  201. package/components/es-ByW01bzN.cjs +0 -20
  202. package/components/focusable-Cu_m_GTh.cjs +0 -42
  203. package/components/focusable-Dw_pMNQL.js +0 -852
  204. package/components/fr-DnFUAglm.cjs +0 -20
  205. package/components/index-CqynTbW1.cjs +0 -217
  206. package/components/index-DFnzlbHX.js +0 -779
  207. package/components/index-hogChFy0.cjs +0 -195
  208. package/components/luzmo-icons-BDClm1AE.cjs +0 -31
  209. package/components/luzmo-icons-BLN3xVgr-Cr3OrsqW.cjs +0 -47
  210. package/components/nl-CWxJcTNT.js +0 -104
  211. package/components/nl-CpfDNK5c.cjs +0 -20
  212. package/components/scatter-plot-options.config-DkJLutNb.cjs +0 -20
  213. package/components/set-locale-ByIApH40.cjs +0 -60
  214. package/components/set-locale-DJYT4V7U.js +0 -212
  215. package/components/sized-mixin-Cqlxwicw.cjs +0 -20
  216. /package/components/{divider.module-DwOuLGU3-B19eHVg2.js → divider.module-DoQWQEIJ-B19eHVg2.js} +0 -0
  217. /package/components/{divider.module-DwOuLGU3-Bg8RrFkc.cjs → divider.module-DoQWQEIJ-Bg8RrFkc.cjs} +0 -0
@@ -0,0 +1,2820 @@
1
+ /*! * A kit of modern Luzmo Web Components for analytics in your web application.
2
+ *
3
+ * Copyright © 2025 Luzmo
4
+ * All rights reserved.
5
+ * Luzmo web components (“Luzmo Web Components”)
6
+ * must be used according to the Luzmo Terms of Service.
7
+ * This license allows users with a current active Luzmo account
8
+ * to use the Luzmo Web Components. This license terminates
9
+ * automatically if a user no longer has an active Luzmo account.
10
+ * Please view the Luzmo Terms of Service at: https://www.luzmo.com/information-pages/terms-of-use.
11
+ *
12
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
17
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
18
+ * SOFTWARE.
19
+ * */
20
+ import { d as le, C as xt } from "../index-Desl7GJ0.js";
21
+ import { m as de, I as He, a as se, R as k, z as g, b as Re, d as qe } from "../base-D76d76ww-BGkuhs54.js";
22
+ import { a as _e } from "../pending-state-DTX7ggyF-KolnwUB7.js";
23
+ import { m as H, d as Ye } from "../if-defined-DOaE2coe-CNT45Xcl.js";
24
+ import "../index-rQxtPaJl.js";
25
+ import "../index-BC1LV3vH.js";
26
+ import { t as wt, z as Dt, s as Mt, u as $t, p as _t } from "../luzmo-icons-DbwDQtuO-QG0fLECn.js";
27
+ import { n as S } from "../directive-helpers-Cm6gitnu-CeYtlPO9.js";
28
+ import { p as St } from "../index-BCBLJ-ei.js";
29
+ import { o as Le } from "../when-CDK1Tt5Y-C6ViXC43.js";
30
+ import { r as Ct } from "../focusable-BxtpnzWp-DJQkL8Zv.js";
31
+ import { b as Tt } from "../observe-slot-presence-CmVi0zTc-DCFuXW7v.js";
32
+ import { a as Pt } from "../button-base-DbkDzb71-R8oqSqlY.js";
33
+ import "../index-CTVNGPeT.js";
34
+ import { u as Vt, e as It } from "../text-field-BIADXoLC-B9oE05VF.js";
35
+ import "../index-BwsEWpIS.js";
36
+ import "../index-BbuNpVBr.js";
37
+ import { r as Ft, x as G, n as ce } from "../property-CxtZroGf.js";
38
+ import { g as qt, t as Lt, s as Et } from "../set-locale-DAGnJZD8.js";
39
+ import { D as re } from "../periods.const-D2cMP5hH.js";
40
+ const kt = () => {
41
+ if (typeof document < "u" && !document.querySelector("style[data-luzmo-vars]")) {
42
+ const r = document.createElement("style");
43
+ r.setAttribute("data-luzmo-vars", ""), r.textContent = 'html{--luzmo-animation-duration: 0.15s;--luzmo-border-color: rgba(var(--luzmo-border-color-rgb), 0.1);--luzmo-border-color-hover: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-down: rgba(var(--luzmo-border-color-rgb), 0.3);--luzmo-border-color-focus: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-rgb: 0, 0, 0;--luzmo-border-color-full: rgb(180, 180, 180);--luzmo-border-color-full-hover: rgb(140, 140, 140);--luzmo-border-color-full-down: rgb(110, 110, 110);--luzmo-border-color-full-focus: rgb(140, 140, 140);--luzmo-border-color-disabled: #dddddd;--luzmo-border-radius: 6px;--luzmo-border-radius-s: 4px;--luzmo-border-radius-l: 8px;--luzmo-border-radius-xl: 12px;--luzmo-border-radius-full: 999rem;--luzmo-background-color: #ffffff;--luzmo-background-color-rgb: 255, 255, 255;--luzmo-background-color-disabled: #eeeeee;--luzmo-background-color-hover: #f0f0fc;--luzmo-background-color-down: #f1f1ff;--luzmo-background-color-focus: #f0f0fc;--luzmo-background-color-highlight: rgb(240, 240, 240);--luzmo-background-color-highlight-disabled: rgb(245, 245, 245);--luzmo-background-color-highlight-hover: rgb(225, 225, 225);--luzmo-background-color-highlight-down: rgb(215, 215, 215);--luzmo-background-color-highlight-focus: rgb(225, 225, 225);--luzmo-border-width: 1px;--luzmo-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;--luzmo-font-size-xs: 10px;--luzmo-font-size-s: 12px;--luzmo-font-size-m: 14px;--luzmo-font-size: 14px;--luzmo-font-size-l: 16px;--luzmo-font-size-xl: 18px;--luzmo-font-size-xxl: 20px;--luzmo-font-style: normal;--luzmo-line-height: normal;--luzmo-font-weight: 400;--luzmo-font-weight-semibold: 500;--luzmo-font-weight-bold: 600;--luzmo-font-color: #333;--luzmo-font-color-hard: #000;--luzmo-font-color-disabled: var(--luzmo-color-disabled);--luzmo-font-color-extra-dimmed: #888;--luzmo-font-color-hover: #333;--luzmo-font-color-down: #111;--luzmo-font-color-focus: #333;--luzmo-primary: #4434ff;--luzmo-primary-hover: #4234e4;--luzmo-primary-down: #392cc7;--luzmo-primary-focus: #4234e4;--luzmo-primary-inverse-color: #ffffff;--luzmo-primary-rgb: 68, 52, 255;--luzmo-secondary: #ff00ff;--luzmo-secondary-hover: #e309e3;--luzmo-secondary-down: #c711c7;--luzmo-secondary-focus: #e309e3;--luzmo-secondary-inverse-color: #ffffff;--luzmo-secondary-rgb: 255, 0, 255;--luzmo-negative-color: #ca221c;--luzmo-negative-color-hover: #b3241f;--luzmo-negative-color-down: #9f231f;--luzmo-negative-color-focus: #b3241f;--luzmo-negative-color-rgb: 202, 34, 28;--luzmo-positive-color: rgb(20, 150, 101);--luzmo-positive-color-hover: rgb(17, 128, 86);--luzmo-positive-color-down: rgb(16, 105, 71);--luzmo-positive-color-focus: rgb(17, 128, 86);--luzmo-positive-color-rgb: 20, 150, 101;--luzmo-selected-color: rgb(110, 110, 110);--luzmo-selected-color-hover: rgb(70, 70, 70);--luzmo-selected-color-down: rgb(40, 40, 40);--luzmo-selected-color-focus: rgb(70, 70, 70);--luzmo-selected-color-hard: #1e1e1e;--luzmo-selected-color-hard-hover: rgb(0, 0, 0);--luzmo-selected-color-hard-down: rgb(0, 0, 0);--luzmo-selected-color-hard-focus: rgb(0, 0, 0);--luzmo-color-informative: #1a77e9;--luzmo-color-informative-rgb: 26, 119, 233;--luzmo-color-disabled: #aaaaaa;--luzmo-spacing-1: 2px;--luzmo-spacing-2: 4px;--luzmo-spacing-3: 8px;--luzmo-spacing-4: 12px;--luzmo-spacing-5: 16px;--luzmo-indicator-gap: 2px;--luzmo-indicator-width: 1px;--luzmo-indicator-color: var(--luzmo-primary);--luzmo-component-height-xxs: 20px;--luzmo-component-height-xs: 24px;--luzmo-component-height-s: 28px;--luzmo-component-height: 32px;--luzmo-component-height-l: 40px;--luzmo-component-height-xl: 48px;--luzmo-component-height-xxl: 64px;--luzmo-icon-size-xxs: 12px;--luzmo-icon-size-xs: 14px;--luzmo-icon-size-s: 16px;--luzmo-icon-size-m: 18px;--luzmo-icon-size-l: 20px;--luzmo-icon-size-xl: 22px;--luzmo-icon-size-xxl: 32px}', document.head.appendChild(r);
44
+ }
45
+ };
46
+ kt();
47
+ /*! * Lucero - The design system for Luzmo.
48
+ *
49
+ * Copyright © 2025 Luzmo
50
+ * All rights reserved.
51
+ * Lucero (“Luzmo Design System”) must be used according to the Luzmo Terms of Service.
52
+ * This license allows users with a current active Luzmo account to use Lucero.
53
+ * This license terminates automatically if a user no longer has an active Luzmo account.
54
+ * Please view the Luzmo Terms of Service at: https://www.luzmo.com/information-pages/terms-of-use.
55
+ *
56
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
57
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
58
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
59
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
60
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
61
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
62
+ * SOFTWARE.
63
+ * */
64
+ function ge(r, e) {
65
+ return r - e * Math.floor(r / e);
66
+ }
67
+ const We = 1721426;
68
+ function ae(r, e, t, a) {
69
+ e = Se(r, e);
70
+ let o = e - 1, i = -2;
71
+ return t <= 2 ? i = 0 : ie(e) && (i = -1), We - 1 + 365 * o + Math.floor(o / 4) - Math.floor(o / 100) + Math.floor(o / 400) + Math.floor((367 * t - 362) / 12 + i + a);
72
+ }
73
+ function ie(r) {
74
+ return r % 4 === 0 && (r % 100 !== 0 || r % 400 === 0);
75
+ }
76
+ function Se(r, e) {
77
+ return r === "BC" ? 1 - e : e;
78
+ }
79
+ function Ot(r) {
80
+ let e = "AD";
81
+ return r <= 0 && (e = "BC", r = 1 - r), [
82
+ e,
83
+ r
84
+ ];
85
+ }
86
+ const At = {
87
+ standard: [
88
+ 31,
89
+ 28,
90
+ 31,
91
+ 30,
92
+ 31,
93
+ 30,
94
+ 31,
95
+ 31,
96
+ 30,
97
+ 31,
98
+ 30,
99
+ 31
100
+ ],
101
+ leapyear: [
102
+ 31,
103
+ 29,
104
+ 31,
105
+ 30,
106
+ 31,
107
+ 30,
108
+ 31,
109
+ 31,
110
+ 30,
111
+ 31,
112
+ 30,
113
+ 31
114
+ ]
115
+ };
116
+ let W = class {
117
+ fromJulianDay(e) {
118
+ let t = e, a = t - We, o = Math.floor(a / 146097), i = ge(a, 146097), n = Math.floor(i / 36524), l = ge(i, 36524), s = Math.floor(l / 1461), c = ge(l, 1461), m = Math.floor(c / 365), u = o * 400 + n * 100 + s * 4 + m + (n !== 4 && m !== 4 ? 1 : 0), [h, p] = Ot(u), v = t - ae(h, p, 1, 1), z = 2;
119
+ t < ae(h, p, 3, 1) ? z = 0 : ie(p) && (z = 1);
120
+ let C = Math.floor(((v + z) * 12 + 373) / 367), N = t - ae(h, p, C, 1) + 1;
121
+ return new F(h, p, C, N);
122
+ }
123
+ toJulianDay(e) {
124
+ return ae(e.era, e.year, e.month, e.day);
125
+ }
126
+ getDaysInMonth(e) {
127
+ return At[ie(e.year) ? "leapyear" : "standard"][e.month - 1];
128
+ }
129
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
130
+ getMonthsInYear(e) {
131
+ return 12;
132
+ }
133
+ getDaysInYear(e) {
134
+ return ie(e.year) ? 366 : 365;
135
+ }
136
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
137
+ getYearsInEra(e) {
138
+ return 9999;
139
+ }
140
+ getEras() {
141
+ return [
142
+ "BC",
143
+ "AD"
144
+ ];
145
+ }
146
+ isInverseEra(e) {
147
+ return e.era === "BC";
148
+ }
149
+ balanceDate(e) {
150
+ e.year <= 0 && (e.era = e.era === "BC" ? "AD" : "BC", e.year = 1 - e.year);
151
+ }
152
+ constructor() {
153
+ this.identifier = "gregory";
154
+ }
155
+ };
156
+ const Bt = {
157
+ "001": 1,
158
+ AD: 1,
159
+ AE: 6,
160
+ AF: 6,
161
+ AI: 1,
162
+ AL: 1,
163
+ AM: 1,
164
+ AN: 1,
165
+ AR: 1,
166
+ AT: 1,
167
+ AU: 1,
168
+ AX: 1,
169
+ AZ: 1,
170
+ BA: 1,
171
+ BE: 1,
172
+ BG: 1,
173
+ BH: 6,
174
+ BM: 1,
175
+ BN: 1,
176
+ BY: 1,
177
+ CH: 1,
178
+ CL: 1,
179
+ CM: 1,
180
+ CN: 1,
181
+ CR: 1,
182
+ CY: 1,
183
+ CZ: 1,
184
+ DE: 1,
185
+ DJ: 6,
186
+ DK: 1,
187
+ DZ: 6,
188
+ EC: 1,
189
+ EE: 1,
190
+ EG: 6,
191
+ ES: 1,
192
+ FI: 1,
193
+ FJ: 1,
194
+ FO: 1,
195
+ FR: 1,
196
+ GB: 1,
197
+ GE: 1,
198
+ GF: 1,
199
+ GP: 1,
200
+ GR: 1,
201
+ HR: 1,
202
+ HU: 1,
203
+ IE: 1,
204
+ IQ: 6,
205
+ IR: 6,
206
+ IS: 1,
207
+ IT: 1,
208
+ JO: 6,
209
+ KG: 1,
210
+ KW: 6,
211
+ KZ: 1,
212
+ LB: 1,
213
+ LI: 1,
214
+ LK: 1,
215
+ LT: 1,
216
+ LU: 1,
217
+ LV: 1,
218
+ LY: 6,
219
+ MC: 1,
220
+ MD: 1,
221
+ ME: 1,
222
+ MK: 1,
223
+ MN: 1,
224
+ MQ: 1,
225
+ MV: 5,
226
+ MY: 1,
227
+ NL: 1,
228
+ NO: 1,
229
+ NZ: 1,
230
+ OM: 6,
231
+ PL: 1,
232
+ QA: 6,
233
+ RE: 1,
234
+ RO: 1,
235
+ RS: 1,
236
+ RU: 1,
237
+ SD: 6,
238
+ SE: 1,
239
+ SI: 1,
240
+ SK: 1,
241
+ SM: 1,
242
+ SY: 6,
243
+ TJ: 1,
244
+ TM: 1,
245
+ TR: 1,
246
+ UA: 1,
247
+ UY: 1,
248
+ UZ: 1,
249
+ VA: 1,
250
+ VN: 1,
251
+ XK: 1
252
+ };
253
+ function E(r, e) {
254
+ return e = _(e, r.calendar), r.era === e.era && r.year === e.year && r.month === e.month && r.day === e.day;
255
+ }
256
+ function O(r, e) {
257
+ return e = _(e, r.calendar), r = B(r), e = B(e), r.era === e.era && r.year === e.year && r.month === e.month;
258
+ }
259
+ function Zt(r, e) {
260
+ var t, a, o, i;
261
+ return (i = (o = (t = r.isEqual) === null || t === void 0 ? void 0 : t.call(r, e)) !== null && o !== void 0 ? o : (a = e.isEqual) === null || a === void 0 ? void 0 : a.call(e, r)) !== null && i !== void 0 ? i : r.identifier === e.identifier;
262
+ }
263
+ function je(r, e, t) {
264
+ let a = r.calendar.toJulianDay(r), o = Rt(e), i = Math.ceil(a + 1 - o) % 7;
265
+ return i < 0 && (i += 7), i;
266
+ }
267
+ function Ge(r) {
268
+ return P(Date.now(), r);
269
+ }
270
+ function Ut(r) {
271
+ return L(Ge(r));
272
+ }
273
+ function Je(r, e) {
274
+ return r.calendar.toJulianDay(r) - e.calendar.toJulianDay(e);
275
+ }
276
+ function Ke(r, e) {
277
+ return Ee(r) - Ee(e);
278
+ }
279
+ function Ee(r) {
280
+ return r.hour * 36e5 + r.minute * 6e4 + r.second * 1e3 + r.millisecond;
281
+ }
282
+ let be = null;
283
+ function R() {
284
+ return be == null && (be = new Intl.DateTimeFormat().resolvedOptions().timeZone), be;
285
+ }
286
+ function B(r) {
287
+ return r.subtract({
288
+ days: r.day - 1
289
+ });
290
+ }
291
+ function Nt(r) {
292
+ return r.add({
293
+ days: r.calendar.getDaysInMonth(r) - r.day
294
+ });
295
+ }
296
+ function Qe(r) {
297
+ return r.calendar.getMinimumMonthInYear ? r.calendar.getMinimumMonthInYear(r) : 1;
298
+ }
299
+ function Xe(r) {
300
+ return r.calendar.getMinimumDayInMonth ? r.calendar.getMinimumDayInMonth(r) : 1;
301
+ }
302
+ function Oe(r, e, t) {
303
+ let a = je(r, e);
304
+ return r.subtract({
305
+ days: a
306
+ });
307
+ }
308
+ const Ae = /* @__PURE__ */ new Map();
309
+ function Ht(r) {
310
+ if (Intl.Locale) {
311
+ let t = Ae.get(r);
312
+ return t || (t = new Intl.Locale(r).maximize().region, t && Ae.set(r, t)), t;
313
+ }
314
+ let e = r.split("-")[1];
315
+ return e === "u" ? void 0 : e;
316
+ }
317
+ function Rt(r) {
318
+ let e = Ht(r);
319
+ return e && Bt[e] || 0;
320
+ }
321
+ function Yt(r, e, t) {
322
+ let a = r.calendar.getDaysInMonth(r);
323
+ return Math.ceil((je(B(r), e) + a) / 7);
324
+ }
325
+ function j(r) {
326
+ r = _(r, new W());
327
+ let e = Se(r.era, r.year);
328
+ return et(e, r.month, r.day, r.hour, r.minute, r.second, r.millisecond);
329
+ }
330
+ function et(r, e, t, a, o, i, n) {
331
+ let l = /* @__PURE__ */ new Date();
332
+ return l.setUTCHours(a, o, i, n), l.setUTCFullYear(r, e - 1, t), l.getTime();
333
+ }
334
+ function we(r, e) {
335
+ if (e === "UTC") return 0;
336
+ if (r > 0 && e === R()) return new Date(r).getTimezoneOffset() * -6e4;
337
+ let { year: t, month: a, day: o, hour: i, minute: n, second: l } = tt(r, e);
338
+ return et(t, a, o, i, n, l, 0) - Math.floor(r / 1e3) * 1e3;
339
+ }
340
+ const Be = /* @__PURE__ */ new Map();
341
+ function tt(r, e) {
342
+ let t = Be.get(e);
343
+ t || (t = new Intl.DateTimeFormat("en-US", {
344
+ timeZone: e,
345
+ hour12: !1,
346
+ era: "short",
347
+ year: "numeric",
348
+ month: "numeric",
349
+ day: "numeric",
350
+ hour: "numeric",
351
+ minute: "numeric",
352
+ second: "numeric"
353
+ }), Be.set(e, t));
354
+ let a = t.formatToParts(new Date(r)), o = {};
355
+ for (let i of a) i.type !== "literal" && (o[i.type] = i.value);
356
+ return {
357
+ // Firefox returns B instead of BC... https://bugzilla.mozilla.org/show_bug.cgi?id=1752253
358
+ year: o.era === "BC" || o.era === "B" ? -o.year + 1 : +o.year,
359
+ month: +o.month,
360
+ day: +o.day,
361
+ hour: o.hour === "24" ? 0 : +o.hour,
362
+ minute: +o.minute,
363
+ second: +o.second
364
+ };
365
+ }
366
+ const Ze = 864e5;
367
+ function Wt(r, e, t, a) {
368
+ return (t === a ? [
369
+ t
370
+ ] : [
371
+ t,
372
+ a
373
+ ]).filter((o) => jt(r, e, o));
374
+ }
375
+ function jt(r, e, t) {
376
+ let a = tt(t, e);
377
+ return r.year === a.year && r.month === a.month && r.day === a.day && r.hour === a.hour && r.minute === a.minute && r.second === a.second;
378
+ }
379
+ function T(r, e, t = "compatible") {
380
+ let a = $(r);
381
+ if (e === "UTC") return j(a);
382
+ if (e === R() && t === "compatible") {
383
+ a = _(a, new W());
384
+ let s = /* @__PURE__ */ new Date(), c = Se(a.era, a.year);
385
+ return s.setFullYear(c, a.month - 1, a.day), s.setHours(a.hour, a.minute, a.second, a.millisecond), s.getTime();
386
+ }
387
+ let o = j(a), i = we(o - Ze, e), n = we(o + Ze, e), l = Wt(a, e, o - i, o - n);
388
+ if (l.length === 1) return l[0];
389
+ if (l.length > 1) switch (t) {
390
+ // 'compatible' means 'earlier' for "fall back" transitions
391
+ case "compatible":
392
+ case "earlier":
393
+ return l[0];
394
+ case "later":
395
+ return l[l.length - 1];
396
+ case "reject":
397
+ throw new RangeError("Multiple possible absolute times found");
398
+ }
399
+ switch (t) {
400
+ case "earlier":
401
+ return Math.min(o - i, o - n);
402
+ // 'compatible' means 'later' for "spring forward" transitions
403
+ case "compatible":
404
+ case "later":
405
+ return Math.max(o - i, o - n);
406
+ case "reject":
407
+ throw new RangeError("No such absolute time found");
408
+ }
409
+ }
410
+ function rt(r, e, t = "compatible") {
411
+ return new Date(T(r, e, t));
412
+ }
413
+ function P(r, e) {
414
+ let t = we(r, e), a = new Date(r + t), o = a.getUTCFullYear(), i = a.getUTCMonth() + 1, n = a.getUTCDate(), l = a.getUTCHours(), s = a.getUTCMinutes(), c = a.getUTCSeconds(), m = a.getUTCMilliseconds();
415
+ return new U(o < 1 ? "BC" : "AD", o < 1 ? -o + 1 : o, i, n, e, t, l, s, c, m);
416
+ }
417
+ function L(r) {
418
+ return new F(r.calendar, r.era, r.year, r.month, r.day);
419
+ }
420
+ function $(r, e) {
421
+ let t = 0, a = 0, o = 0, i = 0;
422
+ if ("timeZone" in r) ({ hour: t, minute: a, second: o, millisecond: i } = r);
423
+ else if ("hour" in r && !e) return r;
424
+ return e && ({ hour: t, minute: a, second: o, millisecond: i } = e), new I(r.calendar, r.era, r.year, r.month, r.day, t, a, o, i);
425
+ }
426
+ function _(r, e) {
427
+ if (Zt(r.calendar, e)) return r;
428
+ let t = e.fromJulianDay(r.calendar.toJulianDay(r)), a = r.copy();
429
+ return a.calendar = e, a.era = t.era, a.year = t.year, a.month = t.month, a.day = t.day, Z(a), a;
430
+ }
431
+ function A(r, e, t) {
432
+ if (r instanceof U)
433
+ return r.timeZone === e ? r : at(r, e);
434
+ let a = T(r, e, t);
435
+ return P(a, e);
436
+ }
437
+ function Gt(r) {
438
+ let e = j(r) - r.offset;
439
+ return new Date(e);
440
+ }
441
+ function at(r, e) {
442
+ let t = j(r) - r.offset;
443
+ return _(P(t, e), r.calendar);
444
+ }
445
+ const J = 36e5;
446
+ function ue(r, e) {
447
+ let t = r.copy(), a = "hour" in t ? lt(t, e) : 0;
448
+ De(t, e.years || 0), t.calendar.balanceYearMonth && t.calendar.balanceYearMonth(t, r), t.month += e.months || 0, Me(t), ot(t), t.day += (e.weeks || 0) * 7, t.day += e.days || 0, t.day += a, Jt(t), t.calendar.balanceDate && t.calendar.balanceDate(t), t.year < 1 && (t.year = 1, t.month = 1, t.day = 1);
449
+ let o = t.calendar.getYearsInEra(t);
450
+ if (t.year > o) {
451
+ var i, n;
452
+ let s = (i = (n = t.calendar).isInverseEra) === null || i === void 0 ? void 0 : i.call(n, t);
453
+ t.year = o, t.month = s ? 1 : t.calendar.getMonthsInYear(t), t.day = s ? 1 : t.calendar.getDaysInMonth(t);
454
+ }
455
+ t.month < 1 && (t.month = 1, t.day = 1);
456
+ let l = t.calendar.getMonthsInYear(t);
457
+ return t.month > l && (t.month = l, t.day = t.calendar.getDaysInMonth(t)), t.day = Math.max(1, Math.min(t.calendar.getDaysInMonth(t), t.day)), t;
458
+ }
459
+ function De(r, e) {
460
+ var t, a;
461
+ !((t = (a = r.calendar).isInverseEra) === null || t === void 0) && t.call(a, r) && (e = -e), r.year += e;
462
+ }
463
+ function Me(r) {
464
+ for (; r.month < 1; )
465
+ De(r, -1), r.month += r.calendar.getMonthsInYear(r);
466
+ let e = 0;
467
+ for (; r.month > (e = r.calendar.getMonthsInYear(r)); )
468
+ r.month -= e, De(r, 1);
469
+ }
470
+ function Jt(r) {
471
+ for (; r.day < 1; )
472
+ r.month--, Me(r), r.day += r.calendar.getDaysInMonth(r);
473
+ for (; r.day > r.calendar.getDaysInMonth(r); )
474
+ r.day -= r.calendar.getDaysInMonth(r), r.month++, Me(r);
475
+ }
476
+ function ot(r) {
477
+ r.month = Math.max(1, Math.min(r.calendar.getMonthsInYear(r), r.month)), r.day = Math.max(1, Math.min(r.calendar.getDaysInMonth(r), r.day));
478
+ }
479
+ function Z(r) {
480
+ r.calendar.constrainDate && r.calendar.constrainDate(r), r.year = Math.max(1, Math.min(r.calendar.getYearsInEra(r), r.year)), ot(r);
481
+ }
482
+ function Ce(r) {
483
+ let e = {};
484
+ for (let t in r) typeof r[t] == "number" && (e[t] = -r[t]);
485
+ return e;
486
+ }
487
+ function it(r, e) {
488
+ return ue(r, Ce(e));
489
+ }
490
+ function Te(r, e) {
491
+ let t = r.copy();
492
+ return e.era != null && (t.era = e.era), e.year != null && (t.year = e.year), e.month != null && (t.month = e.month), e.day != null && (t.day = e.day), Z(t), t;
493
+ }
494
+ function ee(r, e) {
495
+ let t = r.copy();
496
+ return e.hour != null && (t.hour = e.hour), e.minute != null && (t.minute = e.minute), e.second != null && (t.second = e.second), e.millisecond != null && (t.millisecond = e.millisecond), nt(t), t;
497
+ }
498
+ function Kt(r) {
499
+ r.second += Math.floor(r.millisecond / 1e3), r.millisecond = oe(r.millisecond, 1e3), r.minute += Math.floor(r.second / 60), r.second = oe(r.second, 60), r.hour += Math.floor(r.minute / 60), r.minute = oe(r.minute, 60);
500
+ let e = Math.floor(r.hour / 24);
501
+ return r.hour = oe(r.hour, 24), e;
502
+ }
503
+ function nt(r) {
504
+ r.millisecond = Math.max(0, Math.min(r.millisecond, 1e3)), r.second = Math.max(0, Math.min(r.second, 59)), r.minute = Math.max(0, Math.min(r.minute, 59)), r.hour = Math.max(0, Math.min(r.hour, 23));
505
+ }
506
+ function oe(r, e) {
507
+ let t = r % e;
508
+ return t < 0 && (t += e), t;
509
+ }
510
+ function lt(r, e) {
511
+ return r.hour += e.hours || 0, r.minute += e.minutes || 0, r.second += e.seconds || 0, r.millisecond += e.milliseconds || 0, Kt(r);
512
+ }
513
+ function st(r, e) {
514
+ let t = r.copy();
515
+ return lt(t, e), t;
516
+ }
517
+ function Qt(r, e) {
518
+ return st(r, Ce(e));
519
+ }
520
+ function Pe(r, e, t, a) {
521
+ let o = r.copy();
522
+ switch (e) {
523
+ case "era": {
524
+ let l = r.calendar.getEras(), s = l.indexOf(r.era);
525
+ if (s < 0) throw new Error("Invalid era: " + r.era);
526
+ s = V(s, t, 0, l.length - 1, a == null ? void 0 : a.round), o.era = l[s], Z(o);
527
+ break;
528
+ }
529
+ case "year":
530
+ var i, n;
531
+ !((i = (n = o.calendar).isInverseEra) === null || i === void 0) && i.call(n, o) && (t = -t), o.year = V(r.year, t, -1 / 0, 9999, a == null ? void 0 : a.round), o.year === -1 / 0 && (o.year = 1), o.calendar.balanceYearMonth && o.calendar.balanceYearMonth(o, r);
532
+ break;
533
+ case "month":
534
+ o.month = V(r.month, t, 1, r.calendar.getMonthsInYear(r), a == null ? void 0 : a.round);
535
+ break;
536
+ case "day":
537
+ o.day = V(r.day, t, 1, r.calendar.getDaysInMonth(r), a == null ? void 0 : a.round);
538
+ break;
539
+ default:
540
+ throw new Error("Unsupported field " + e);
541
+ }
542
+ return r.calendar.balanceDate && r.calendar.balanceDate(o), Z(o), o;
543
+ }
544
+ function Ve(r, e, t, a) {
545
+ let o = r.copy();
546
+ switch (e) {
547
+ case "hour": {
548
+ let i = r.hour, n = 0, l = 23;
549
+ if ((a == null ? void 0 : a.hourCycle) === 12) {
550
+ let s = i >= 12;
551
+ n = s ? 12 : 0, l = s ? 23 : 11;
552
+ }
553
+ o.hour = V(i, t, n, l, a == null ? void 0 : a.round);
554
+ break;
555
+ }
556
+ case "minute":
557
+ o.minute = V(r.minute, t, 0, 59, a == null ? void 0 : a.round);
558
+ break;
559
+ case "second":
560
+ o.second = V(r.second, t, 0, 59, a == null ? void 0 : a.round);
561
+ break;
562
+ case "millisecond":
563
+ o.millisecond = V(r.millisecond, t, 0, 999, a == null ? void 0 : a.round);
564
+ break;
565
+ default:
566
+ throw new Error("Unsupported field " + e);
567
+ }
568
+ return o;
569
+ }
570
+ function V(r, e, t, a, o = !1) {
571
+ if (o) {
572
+ r += Math.sign(e), r < t && (r = a);
573
+ let i = Math.abs(e);
574
+ e > 0 ? r = Math.ceil(r / i) * i : r = Math.floor(r / i) * i, r > a && (r = t);
575
+ } else
576
+ r += e, r < t ? r = a - (t - r - 1) : r > a && (r = t + (r - a - 1));
577
+ return r;
578
+ }
579
+ function dt(r, e) {
580
+ let t;
581
+ if (e.years != null && e.years !== 0 || e.months != null && e.months !== 0 || e.weeks != null && e.weeks !== 0 || e.days != null && e.days !== 0) {
582
+ let o = ue($(r), {
583
+ years: e.years,
584
+ months: e.months,
585
+ weeks: e.weeks,
586
+ days: e.days
587
+ });
588
+ t = T(o, r.timeZone);
589
+ } else
590
+ t = j(r) - r.offset;
591
+ t += e.milliseconds || 0, t += (e.seconds || 0) * 1e3, t += (e.minutes || 0) * 6e4, t += (e.hours || 0) * 36e5;
592
+ let a = P(t, r.timeZone);
593
+ return _(a, r.calendar);
594
+ }
595
+ function Xt(r, e) {
596
+ return dt(r, Ce(e));
597
+ }
598
+ function er(r, e, t, a) {
599
+ switch (e) {
600
+ case "hour": {
601
+ let o = 0, i = 23;
602
+ if ((a == null ? void 0 : a.hourCycle) === 12) {
603
+ let v = r.hour >= 12;
604
+ o = v ? 12 : 0, i = v ? 23 : 11;
605
+ }
606
+ let n = $(r), l = _(ee(n, {
607
+ hour: o
608
+ }), new W()), s = [
609
+ T(l, r.timeZone, "earlier"),
610
+ T(l, r.timeZone, "later")
611
+ ].filter((v) => P(v, r.timeZone).day === l.day)[0], c = _(ee(n, {
612
+ hour: i
613
+ }), new W()), m = [
614
+ T(c, r.timeZone, "earlier"),
615
+ T(c, r.timeZone, "later")
616
+ ].filter((v) => P(v, r.timeZone).day === c.day).pop(), u = j(r) - r.offset, h = Math.floor(u / J), p = u % J;
617
+ return u = V(h, t, Math.floor(s / J), Math.floor(m / J), a == null ? void 0 : a.round) * J + p, _(P(u, r.timeZone), r.calendar);
618
+ }
619
+ case "minute":
620
+ case "second":
621
+ case "millisecond":
622
+ return Ve(r, e, t, a);
623
+ case "era":
624
+ case "year":
625
+ case "month":
626
+ case "day": {
627
+ let o = Pe($(r), e, t, a), i = T(o, r.timeZone);
628
+ return _(P(i, r.timeZone), r.calendar);
629
+ }
630
+ default:
631
+ throw new Error("Unsupported field " + e);
632
+ }
633
+ }
634
+ function tr(r, e, t) {
635
+ let a = $(r), o = ee(Te(a, e), e);
636
+ if (o.compare(a) === 0) return r;
637
+ let i = T(o, r.timeZone, t);
638
+ return _(P(i, r.timeZone), r.calendar);
639
+ }
640
+ const rr = /^([+-]\d{6}|\d{4})-(\d{2})-(\d{2})$/, ar = /^([+-]\d{6}|\d{4})-(\d{2})-(\d{2})(?:T(\d{2}))?(?::(\d{2}))?(?::(\d{2}))?(\.\d+)?(?:(?:([+-]\d{2})(?::?(\d{2}))?)|Z)$/;
641
+ function Q(r) {
642
+ let e = r.match(rr);
643
+ if (!e) throw new Error("Invalid ISO 8601 date string: " + r);
644
+ let t = new F(M(e[1], 0, 9999), M(e[2], 1, 12), 1);
645
+ return t.day = M(e[3], 0, t.calendar.getDaysInMonth(t)), t;
646
+ }
647
+ function fe(r, e) {
648
+ let t = r.match(ar);
649
+ if (!t) throw new Error("Invalid ISO 8601 date time string: " + r);
650
+ let a = M(t[1], -9999, 9999), o = a < 1 ? "BC" : "AD", i = new U(o, a < 1 ? -a + 1 : a, M(t[2], 1, 12), 1, e, 0, t[4] ? M(t[4], 0, 23) : 0, t[5] ? M(t[5], 0, 59) : 0, t[6] ? M(t[6], 0, 59) : 0, t[7] ? M(t[7], 0, 1 / 0) * 1e3 : 0);
651
+ i.day = M(t[3], 0, i.calendar.getDaysInMonth(i));
652
+ var n;
653
+ return t[8] && (i.offset = M(t[8], -23, 23) * 36e5 + M((n = t[9]) !== null && n !== void 0 ? n : "0", 0, 59) * 6e4), at(i, e);
654
+ }
655
+ function M(r, e, t) {
656
+ let a = Number(r);
657
+ if (a < e || a > t) throw new RangeError(`Value out of range: ${e} <= ${a} <= ${t}`);
658
+ return a;
659
+ }
660
+ function ct(r) {
661
+ return `${String(r.hour).padStart(2, "0")}:${String(r.minute).padStart(2, "0")}:${String(r.second).padStart(2, "0")}${r.millisecond ? String(r.millisecond / 1e3).slice(1) : ""}`;
662
+ }
663
+ function ut(r) {
664
+ let e = _(r, new W()), t;
665
+ return e.era === "BC" ? t = e.year === 1 ? "0000" : "-" + String(Math.abs(1 - e.year)).padStart(6, "00") : t = String(e.year).padStart(4, "0"), `${t}-${String(e.month).padStart(2, "0")}-${String(e.day).padStart(2, "0")}`;
666
+ }
667
+ function mt(r) {
668
+ return `${ut(r)}T${ct(r)}`;
669
+ }
670
+ function or(r) {
671
+ let e = Math.sign(r) < 0 ? "-" : "+";
672
+ r = Math.abs(r);
673
+ let t = Math.floor(r / 36e5), a = r % 36e5 / 6e4;
674
+ return `${e}${String(t).padStart(2, "0")}:${String(a).padStart(2, "0")}`;
675
+ }
676
+ function ir(r) {
677
+ return `${mt(r)}${or(r.offset)}[${r.timeZone}]`;
678
+ }
679
+ function nr(r, e) {
680
+ if (e.has(r))
681
+ throw new TypeError("Cannot initialize the same private elements twice on an object");
682
+ }
683
+ function me(r, e, t) {
684
+ nr(r, e), e.set(r, t);
685
+ }
686
+ function Ie(r) {
687
+ let e = typeof r[0] == "object" ? r.shift() : new W(), t;
688
+ if (typeof r[0] == "string") t = r.shift();
689
+ else {
690
+ let n = e.getEras();
691
+ t = n[n.length - 1];
692
+ }
693
+ let a = r.shift(), o = r.shift(), i = r.shift();
694
+ return [
695
+ e,
696
+ t,
697
+ a,
698
+ o,
699
+ i
700
+ ];
701
+ }
702
+ var lr = /* @__PURE__ */ new WeakMap();
703
+ class F {
704
+ /** Returns a copy of this date. */
705
+ copy() {
706
+ return this.era ? new F(this.calendar, this.era, this.year, this.month, this.day) : new F(this.calendar, this.year, this.month, this.day);
707
+ }
708
+ /** Returns a new `CalendarDate` with the given duration added to it. */
709
+ add(e) {
710
+ return ue(this, e);
711
+ }
712
+ /** Returns a new `CalendarDate` with the given duration subtracted from it. */
713
+ subtract(e) {
714
+ return it(this, e);
715
+ }
716
+ /** Returns a new `CalendarDate` with the given fields set to the provided values. Other fields will be constrained accordingly. */
717
+ set(e) {
718
+ return Te(this, e);
719
+ }
720
+ /**
721
+ * Returns a new `CalendarDate` with the given field adjusted by a specified amount.
722
+ * When the resulting value reaches the limits of the field, it wraps around.
723
+ */
724
+ cycle(e, t, a) {
725
+ return Pe(this, e, t, a);
726
+ }
727
+ /** Converts the date to a native JavaScript Date object, with the time set to midnight in the given time zone. */
728
+ toDate(e) {
729
+ return rt(this, e);
730
+ }
731
+ /** Converts the date to an ISO 8601 formatted string. */
732
+ toString() {
733
+ return ut(this);
734
+ }
735
+ /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */
736
+ compare(e) {
737
+ return Je(this, e);
738
+ }
739
+ constructor(...e) {
740
+ me(this, lr, {
741
+ writable: !0,
742
+ value: void 0
743
+ });
744
+ let [t, a, o, i, n] = Ie(e);
745
+ this.calendar = t, this.era = a, this.year = o, this.month = i, this.day = n, Z(this);
746
+ }
747
+ }
748
+ var sr = /* @__PURE__ */ new WeakMap();
749
+ let dr = class ht {
750
+ /** Returns a copy of this time. */
751
+ copy() {
752
+ return new ht(this.hour, this.minute, this.second, this.millisecond);
753
+ }
754
+ /** Returns a new `Time` with the given duration added to it. */
755
+ add(e) {
756
+ return st(this, e);
757
+ }
758
+ /** Returns a new `Time` with the given duration subtracted from it. */
759
+ subtract(e) {
760
+ return Qt(this, e);
761
+ }
762
+ /** Returns a new `Time` with the given fields set to the provided values. Other fields will be constrained accordingly. */
763
+ set(e) {
764
+ return ee(this, e);
765
+ }
766
+ /**
767
+ * Returns a new `Time` with the given field adjusted by a specified amount.
768
+ * When the resulting value reaches the limits of the field, it wraps around.
769
+ */
770
+ cycle(e, t, a) {
771
+ return Ve(this, e, t, a);
772
+ }
773
+ /** Converts the time to an ISO 8601 formatted string. */
774
+ toString() {
775
+ return ct(this);
776
+ }
777
+ /** Compares this time with another. A negative result indicates that this time is before the given one, and a positive time indicates that it is after. */
778
+ compare(e) {
779
+ return Ke(this, e);
780
+ }
781
+ constructor(e = 0, t = 0, a = 0, o = 0) {
782
+ me(this, sr, {
783
+ writable: !0,
784
+ value: void 0
785
+ }), this.hour = e, this.minute = t, this.second = a, this.millisecond = o, nt(this);
786
+ }
787
+ };
788
+ var cr = /* @__PURE__ */ new WeakMap();
789
+ class I {
790
+ /** Returns a copy of this date. */
791
+ copy() {
792
+ return this.era ? new I(this.calendar, this.era, this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond) : new I(this.calendar, this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond);
793
+ }
794
+ /** Returns a new `CalendarDateTime` with the given duration added to it. */
795
+ add(e) {
796
+ return ue(this, e);
797
+ }
798
+ /** Returns a new `CalendarDateTime` with the given duration subtracted from it. */
799
+ subtract(e) {
800
+ return it(this, e);
801
+ }
802
+ /** Returns a new `CalendarDateTime` with the given fields set to the provided values. Other fields will be constrained accordingly. */
803
+ set(e) {
804
+ return Te(ee(this, e), e);
805
+ }
806
+ /**
807
+ * Returns a new `CalendarDateTime` with the given field adjusted by a specified amount.
808
+ * When the resulting value reaches the limits of the field, it wraps around.
809
+ */
810
+ cycle(e, t, a) {
811
+ switch (e) {
812
+ case "era":
813
+ case "year":
814
+ case "month":
815
+ case "day":
816
+ return Pe(this, e, t, a);
817
+ default:
818
+ return Ve(this, e, t, a);
819
+ }
820
+ }
821
+ /** Converts the date to a native JavaScript Date object in the given time zone. */
822
+ toDate(e, t) {
823
+ return rt(this, e, t);
824
+ }
825
+ /** Converts the date to an ISO 8601 formatted string. */
826
+ toString() {
827
+ return mt(this);
828
+ }
829
+ /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */
830
+ compare(e) {
831
+ let t = Je(this, e);
832
+ return t === 0 ? Ke(this, $(e)) : t;
833
+ }
834
+ constructor(...e) {
835
+ me(this, cr, {
836
+ writable: !0,
837
+ value: void 0
838
+ });
839
+ let [t, a, o, i, n] = Ie(e);
840
+ this.calendar = t, this.era = a, this.year = o, this.month = i, this.day = n, this.hour = e.shift() || 0, this.minute = e.shift() || 0, this.second = e.shift() || 0, this.millisecond = e.shift() || 0, Z(this);
841
+ }
842
+ }
843
+ var ur = /* @__PURE__ */ new WeakMap();
844
+ class U {
845
+ /** Returns a copy of this date. */
846
+ copy() {
847
+ return this.era ? new U(this.calendar, this.era, this.year, this.month, this.day, this.timeZone, this.offset, this.hour, this.minute, this.second, this.millisecond) : new U(this.calendar, this.year, this.month, this.day, this.timeZone, this.offset, this.hour, this.minute, this.second, this.millisecond);
848
+ }
849
+ /** Returns a new `ZonedDateTime` with the given duration added to it. */
850
+ add(e) {
851
+ return dt(this, e);
852
+ }
853
+ /** Returns a new `ZonedDateTime` with the given duration subtracted from it. */
854
+ subtract(e) {
855
+ return Xt(this, e);
856
+ }
857
+ /** Returns a new `ZonedDateTime` with the given fields set to the provided values. Other fields will be constrained accordingly. */
858
+ set(e, t) {
859
+ return tr(this, e, t);
860
+ }
861
+ /**
862
+ * Returns a new `ZonedDateTime` with the given field adjusted by a specified amount.
863
+ * When the resulting value reaches the limits of the field, it wraps around.
864
+ */
865
+ cycle(e, t, a) {
866
+ return er(this, e, t, a);
867
+ }
868
+ /** Converts the date to a native JavaScript Date object. */
869
+ toDate() {
870
+ return Gt(this);
871
+ }
872
+ /** Converts the date to an ISO 8601 formatted string, including the UTC offset and time zone identifier. */
873
+ toString() {
874
+ return ir(this);
875
+ }
876
+ /** Converts the date to an ISO 8601 formatted string in UTC. */
877
+ toAbsoluteString() {
878
+ return this.toDate().toISOString();
879
+ }
880
+ /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */
881
+ compare(e) {
882
+ return this.toDate().getTime() - A(e, this.timeZone).toDate().getTime();
883
+ }
884
+ constructor(...e) {
885
+ me(this, ur, {
886
+ writable: !0,
887
+ value: void 0
888
+ });
889
+ let [t, a, o, i, n] = Ie(e), l = e.shift(), s = e.shift();
890
+ this.calendar = t, this.era = a, this.year = o, this.month = i, this.day = n, this.timeZone = l, this.offset = s, this.hour = e.shift() || 0, this.minute = e.shift() || 0, this.second = e.shift() || 0, this.millisecond = e.shift() || 0, Z(this);
891
+ }
892
+ }
893
+ let ze = /* @__PURE__ */ new Map();
894
+ class $e {
895
+ /** Formats a date as a string according to the locale and format options passed to the constructor. */
896
+ format(e) {
897
+ return this.formatter.format(e);
898
+ }
899
+ /** Formats a date to an array of parts such as separators, numbers, punctuation, and more. */
900
+ formatToParts(e) {
901
+ return this.formatter.formatToParts(e);
902
+ }
903
+ /** Formats a date range as a string. */
904
+ formatRange(e, t) {
905
+ if (typeof this.formatter.formatRange == "function")
906
+ return this.formatter.formatRange(e, t);
907
+ if (t < e) throw new RangeError("End date must be >= start date");
908
+ return `${this.formatter.format(e)} – ${this.formatter.format(t)}`;
909
+ }
910
+ /** Formats a date range as an array of parts. */
911
+ formatRangeToParts(e, t) {
912
+ if (typeof this.formatter.formatRangeToParts == "function")
913
+ return this.formatter.formatRangeToParts(e, t);
914
+ if (t < e) throw new RangeError("End date must be >= start date");
915
+ let a = this.formatter.formatToParts(e), o = this.formatter.formatToParts(t);
916
+ return [
917
+ ...a.map((i) => ({
918
+ ...i,
919
+ source: "startRange"
920
+ })),
921
+ {
922
+ type: "literal",
923
+ value: " – ",
924
+ source: "shared"
925
+ },
926
+ ...o.map((i) => ({
927
+ ...i,
928
+ source: "endRange"
929
+ }))
930
+ ];
931
+ }
932
+ /** Returns the resolved formatting options based on the values passed to the constructor. */
933
+ resolvedOptions() {
934
+ let e = this.formatter.resolvedOptions();
935
+ return pr() && (this.resolvedHourCycle || (this.resolvedHourCycle = vr(e.locale, this.options)), e.hourCycle = this.resolvedHourCycle, e.hour12 = this.resolvedHourCycle === "h11" || this.resolvedHourCycle === "h12"), e.calendar === "ethiopic-amete-alem" && (e.calendar = "ethioaa"), e;
936
+ }
937
+ constructor(e, t = {}) {
938
+ this.formatter = pt(e, t), this.options = t;
939
+ }
940
+ }
941
+ const mr = {
942
+ true: {
943
+ // Only Japanese uses the h11 style for 12 hour time. All others use h12.
944
+ ja: "h11"
945
+ },
946
+ false: {}
947
+ };
948
+ function pt(r, e = {}) {
949
+ if (typeof e.hour12 == "boolean" && hr()) {
950
+ e = {
951
+ ...e
952
+ };
953
+ let o = mr[String(e.hour12)][r.split("-")[0]], i = e.hour12 ? "h12" : "h23";
954
+ e.hourCycle = o ?? i, delete e.hour12;
955
+ }
956
+ let t = r + (e ? Object.entries(e).sort((o, i) => o[0] < i[0] ? -1 : 1).join() : "");
957
+ if (ze.has(t)) return ze.get(t);
958
+ let a = new Intl.DateTimeFormat(r, e);
959
+ return ze.set(t, a), a;
960
+ }
961
+ let ye = null;
962
+ function hr() {
963
+ return ye == null && (ye = new Intl.DateTimeFormat("en-US", {
964
+ hour: "numeric",
965
+ hour12: !1
966
+ }).format(new Date(2020, 2, 3, 0)) === "24"), ye;
967
+ }
968
+ let ke = null;
969
+ function pr() {
970
+ return ke == null && (ke = new Intl.DateTimeFormat("fr", {
971
+ hour: "numeric",
972
+ hour12: !1
973
+ }).resolvedOptions().hourCycle === "h12"), ke;
974
+ }
975
+ function vr(r, e) {
976
+ if (!e.timeStyle && !e.hour) return;
977
+ r = r.replace(/(-u-)?-nu-[a-zA-Z0-9]+/, ""), r += (r.includes("-u-") ? "" : "-u") + "-nu-latn";
978
+ let t = pt(r, {
979
+ ...e,
980
+ timeZone: void 0
981
+ // use local timezone
982
+ }), a = parseInt(t.formatToParts(new Date(2020, 2, 3, 0)).find((i) => i.type === "hour").value, 10), o = parseInt(t.formatToParts(new Date(2020, 2, 3, 23)).find((i) => i.type === "hour").value, 10);
983
+ if (a === 0 && o === 23) return "h23";
984
+ if (a === 24 && o === 23) return "h24";
985
+ if (a === 0 && o === 11) return "h11";
986
+ if (a === 12 && o === 11) return "h12";
987
+ throw new Error("Unexpected hour cycle result");
988
+ }
989
+ const gr = ':host{inline-size:var(--luzmo-calendar-width, var(--calendar-width));display:inline-block}.header{inline-size:100%;align-items:center;display:flex}.title{color:var(--highcontrast-calendar-date-text-color, var(--luzmo-calendar-date-text-color, var(--calendar-date-text-color)));font-size:var(--luzmo-calendar-title-text-size, var(--calendar-title-text-size));font-weight:var(--luzmo-calendar-title-font-weight, var(--calendar-title-font-weight));line-height:var(--luzmo-calendar-title-height, var(--calendar-title-height));text-align:center;white-space:nowrap;text-overflow:ellipsis;flex-grow:1;order:1;margin:0;overflow:hidden}.nextMonth,.prevMonth{transform:var(--logical-rotation)}.nextMonth:not([disabled]),.prevMonth:not([disabled]){color:var(--highcontrast-calendar-button-icon-color, var(--luzmo-calendar-button-icon-color, var(--calendar-button-icon-color)))}.prevMonth{order:0}.nextMonth{order:2}.dayOfWeek{inline-size:var(--luzmo-calendar-day-width, var(--calendar-day-width));color:var(--highcontrast-calendar-day-title-text-color, var(--luzmo-calendar-day-title-text-color, var(--calendar-day-title-text-color)));font-size:var(--luzmo-calendar-day-title-text-size, var(--calendar-day-title-text-size));font-weight:var(--luzmo-calendar-day-title-text-font-weight, var(--calendar-day-title-text-font-weight));text-transform:uppercase;cursor:default;flex-direction:column;justify-content:flex-end;display:flex;border-block-end:none!important;-webkit-text-decoration:none!important;text-decoration:none!important}:host([title]) .dayOfWeek{text-decoration:underline;letter-spacing:var(--luzmo-calendar-title-text-letter-spacing, var(--calendar-title-text-letter-spacing));border-block-end:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.body{outline:none}.table{table-layout:fixed;border-collapse:collapse;border-spacing:0;-webkit-user-select:none;user-select:none}.table-cell{text-align:center;box-sizing:initial;block-size:var(--luzmo-calendar-day-height, var(--calendar-day-height));inline-size:var(--luzmo-calendar-day-width, var(--calendar-day-width));padding:var(--luzmo-calendar-day-padding, var(--calendar-day-padding));position:relative}.table-cell:focus{outline:0}.date{box-sizing:border-box;block-size:var(--luzmo-calendar-day-height, var(--calendar-day-height));inline-size:var(--luzmo-calendar-day-width, var(--calendar-day-width));margin:var(--luzmo-calendar-day-padding, var(--calendar-day-padding));border-radius:var(--luzmo-calendar-day-border-radius, var(--calendar-day-border-radius));border:var(--luzmo-calendar-day-border-size, var(--calendar-day-border-size)) solid transparent;font-size:var(--luzmo-calendar-day-text-size, var(--calendar-day-text-size));line-height:calc(var(--luzmo-calendar-day-width, var(--calendar-day-width)) - var(--luzmo-calendar-day-border-size, var(--calendar-day-border-size)) * 2);white-space:nowrap;cursor:pointer;display:block;position:absolute;inset-block-start:0;inset-inline-start:0}.date:lang(ja),.date:lang(ko),.date:lang(zh){font-size:var(--luzmo-calendar-day-text-size-han, var(--calendar-day-text-size-han))}.date.is-disabled{cursor:default;pointer-events:none}.date.is-outsideMonth{display:none}.date:before{content:"";box-sizing:border-box;inline-size:var(--luzmo-calendar-day-width, var(--calendar-day-width));block-size:var(--luzmo-calendar-day-height, var(--calendar-day-height));border-radius:var(--luzmo-calendar-day-border-radius, var(--calendar-day-border-radius));border:var(--luzmo-calendar-day-border-size, var(--calendar-day-border-size)) solid transparent;position:absolute;inset-block-start:calc(50% - var(--luzmo-calendar-day-width, var(--calendar-day-width)) / 2);inset-inline-start:calc(50% - var(--luzmo-calendar-day-width, var(--calendar-day-width)) / 2)}.date.is-selected:not(.is-range-selection){font-weight:var(--luzmo-calendar-day-text-font-weight-selected, var(--calendar-day-text-font-weight-selected))}.date.is-selected:not(.is-range-selection):before{display:none}.date.is-today{font-weight:var(--luzmo-calendar-day-today-text-font-weight, var(--calendar-day-today-text-font-weight))}.date.is-range-selection{margin:var(--luzmo-calendar-day-padding, var(--calendar-day-padding)) 0;border-width:var(--luzmo-calendar-border-width-reset, var(--calendar-border-width-reset));line-height:var(--luzmo-calendar-day-height, var(--calendar-day-height));border-radius:var(--luzmo-calendar-border-radius-reset, var(--calendar-border-radius-reset));inline-size:calc(var(--luzmo-calendar-day-width, var(--calendar-day-width)) + var(--luzmo-calendar-day-padding, var(--calendar-day-padding)) * 2)}.date.is-range-selection.is-range-end,.date.is-range-selection.is-range-start,.date.is-range-selection.is-selection-end,.date.is-range-selection.is-selection-start{inline-size:calc(var(--luzmo-calendar-day-width, var(--calendar-day-width)) + var(--luzmo-calendar-day-padding, var(--calendar-day-padding)))}.date.is-range-selection.is-selection-end,.date.is-range-selection.is-selection-start{font-weight:var(--luzmo-calendar-day-text-font-weight-cap-selected, var(--calendar-day-text-font-weight-cap-selected))}.date.is-range-selection.is-selection-end:after,.date.is-range-selection.is-selection-start:after{block-size:var(--luzmo-calendar-day-height, var(--calendar-day-height));inline-size:var(--luzmo-calendar-day-width, var(--calendar-day-width));border-radius:var(--luzmo-calendar-day-width, var(--calendar-day-width));content:"";display:block;position:absolute;inset-block-start:0}.date.is-range-selection.is-range-start,.date.is-range-selection.is-selection-start{border-start-start-radius:var(--luzmo-calendar-day-width, var(--calendar-day-width));border-end-start-radius:var(--luzmo-calendar-day-width, var(--calendar-day-width));margin-inline-start:var(--luzmo-calendar-day-padding, var(--calendar-day-padding));padding-inline-end:var(--luzmo-calendar-day-padding, var(--calendar-day-padding))}.date.is-range-selection.is-range-start:after,.date.is-range-selection.is-range-start:before,.date.is-range-selection.is-selection-start:after,.date.is-range-selection.is-selection-start:before{inset-inline-start:0}.date.is-range-selection.is-range-end,.date.is-range-selection.is-selection-end{border-start-end-radius:var(--luzmo-calendar-day-width, var(--calendar-day-width));border-end-end-radius:var(--luzmo-calendar-day-width, var(--calendar-day-width));margin-inline-end:var(--luzmo-calendar-day-padding, var(--calendar-day-padding));padding-inline-start:var(--luzmo-calendar-day-padding, var(--calendar-day-padding))}.date.is-range-selection.is-range-end:after,.date.is-range-selection.is-range-end:before,.date.is-range-selection.is-selection-end:after,.date.is-range-selection.is-selection-end:before{inset-inline:auto 0}.date.is-range-selection.is-range-start.is-range-end,.date.is-range-selection.is-selection-end.is-range-start,.date.is-range-selection.is-selection-start.is-range-end,.date.is-range-selection.is-selection-start.is-selection-end{inline-size:var(--luzmo-calendar-day-width, var(--calendar-day-width));border-radius:var(--luzmo-calendar-day-width, var(--calendar-day-width))}.date{color:var(--highcontrast-calendar-day-text-color, var(--luzmo-calendar-day-text-color, var(--calendar-day-text-color)))}.date:active{background-color:var(--highcontrast-calendar-day-background-color-down, var(--luzmo-calendar-day-background-color-down, var(--calendar-day-background-color-down)))}.date.is-selected{color:var(--highcontrast-calendar-day-text-color-selected, var(--luzmo-calendar-day-text-color-selected, var(--calendar-day-text-color-selected)));background:var(--highcontrast-calendar-day-background-color-selected, var(--luzmo-calendar-day-background-color-selected, var(--calendar-day-background-color-selected)))}.date.is-selected:not(.is-range-selection){background:var(--highcontrast-calendar-day-background-color-cap-selected, var(--luzmo-calendar-day-background-color-cap-selected, var(--calendar-day-background-color-cap-selected)));color:var(--highcontrast-calendar-day-text-color-cap-selected, var(--luzmo-calendar-day-text-color-cap-selected, var(--calendar-day-text-color-cap-selected)));border-color:var(--highcontrast-calendar-day-border-color-cap-selected, var(--luzmo-calendar-day-border-color-cap-selected, var(--calendar-day-border-color-cap-selected)))}.date.is-today{color:var(--highcontrast-calendar-day-today-text-color, var(--luzmo-calendar-day-today-text-color, var(--calendar-day-today-text-color)));background-color:var(--highcontrast-calendar-day-today-background-color, var(--luzmo-calendar-day-today-background-color, var(--calendar-day-today-background-color)))}.date.is-today,.date.is-today:before{border-color:var(--highcontrast-calendar-day-today-border-color, var(--luzmo-calendar-day-today-border-color, var(--calendar-day-today-border-color)))}@media (hover: hover){.date:hover{color:var(--highcontrast-calendar-day-text-color-hover, var(--luzmo-calendar-day-text-color-hover, var(--calendar-day-text-color-hover)))}.date:hover:not(.is-selection-end,.is-selection-start):before{background:var(--highcontrast-calendar-day-background-color-hover, var(--luzmo-calendar-day-background-color-hover, var(--calendar-day-background-color-hover)))}.date.is-range-selection:hover:before,.date.is-selected:hover:not(.is-selection-end,.is-selection-start):before{background:var(--highcontrast-calendar-day-background-color-selected-hover, var(--luzmo-calendar-day-background-color-selected-hover, var(--calendar-day-background-color-selected-hover)))}.date.is-today.is-selected:not(.is-range-selection):hover:before{background:var(--highcontrast-calendar-day-today-background-color-selected-hover, var(--luzmo-calendar-day-today-background-color-selected-hover, var(--calendar-day-today-background-color-selected-hover)))}}.date.is-today.is-disabled{color:var(--highcontrast-calendar-day-today-text-color-disabled, var(--luzmo-calendar-day-today-text-color-disabled, var(--calendar-day-today-text-color-disabled)))}.date.is-today.is-disabled,.date.is-today.is-disabled:before{border-color:var(--highcontrast-calendar-day-today-border-color-disabled, var(--luzmo-calendar-day-today-border-color-disabled, var(--calendar-day-today-border-color-disabled)))}.table-cell:focus-within .date:not(.is-range-selection){background:var(--highcontrast-calendar-day-background-color-key-focus, var(--luzmo-calendar-day-background-color-key-focus, var(--calendar-day-background-color-key-focus)));color:var(--highcontrast-calendar-day-text-color-key-focus, var(--luzmo-calendar-day-text-color-key-focus, var(--calendar-day-text-color-key-focus)))}.table-cell:focus-within .date.is-selected:not(.is-range-selection),.table-cell:focus-within .date.is-today:not(.is-range-selection),.table-cell:focus-within .date:not(.is-range-selection),.table-cell:focus-within .date:not(.is-range-selection):active{border-color:var(--highcontrast-calendar-day-border-color-key-focus, var(--luzmo-calendar-day-border-color-key-focus, var(--calendar-day-border-color-key-focus)))}.table-cell:focus-within .date.is-selected:not(.is-range-selection),.table-cell:focus-within .date:not(.is-range-selection):active{color:var(--highcontrast-calendar-day-text-color-selected, var(--luzmo-calendar-day-text-color-selected, var(--calendar-day-text-color-selected)));background:var(--highcontrast-calendar-day-background-color-cap-selected, var(--luzmo-calendar-day-background-color-cap-selected, var(--calendar-day-background-color-cap-selected)));border-color:var(--highcontrast-calendar-day-border-color-key-focus, var(--luzmo-calendar-day-border-color-cap-selected-focus, var(--calendar-day-border-color-cap-selected-focus)))}.table-cell:focus-within .date.is-range-selection:before,.table-cell:focus-within .date.is-selected:before{background:var(--highcontrast-calendar-day-background-color-selected-hover, var(--luzmo-calendar-day-background-color-selected-hover, var(--calendar-day-background-color-selected-hover)))}.table-cell:focus-within .date:before{border-color:var(--highcontrast-calendar-day-border-color-key-focus, var(--luzmo-calendar-day-border-color-key-focus, var(--calendar-day-border-color-key-focus)))}.date.is-disabled{color:var(--highcontrast-calendar-day-text-color-disabled, var(--luzmo-calendar-day-text-color-disabled, var(--calendar-day-text-color-disabled)))}.date.is-selection-end,.date.is-selection-start{color:var(--highcontrast-calendar-day-text-color-cap-selected, var(--luzmo-calendar-day-text-color-cap-selected, var(--calendar-day-text-color-cap-selected)))}.date.is-selection-end:after,.date.is-selection-start:after{background-color:var(--highcontrast-calendar-day-background-color-selected, var(--luzmo-calendar-day-background-color-selected, var(--calendar-day-background-color-selected)))}.date.is-selection-end.is-disabled,.date.is-selection-start.is-disabled{color:var(--highcontrast-calendar-day-text-color-disabled, var(--luzmo-calendar-day-text-color-disabled, var(--calendar-day-text-color-disabled)))}@media (forced-colors: active){.nextMonth,.prevMonth{--highcontrast-calendar-button-icon-color: ButtonText}.date{--highcontrast-calendar-day-background-color-cap-selected: Highlight;--highcontrast-calendar-day-background-color-down: ButtonFace;--highcontrast-calendar-day-background-color-hover: Transparent;--highcontrast-calendar-day-background-color-key-focus: ButtonFace;--highcontrast-calendar-day-background-color-selected-hover: Transparent;--highcontrast-calendar-day-background-color-selected: Highlight;--highcontrast-calendar-day-border-color-key-focus: ButtonText;--highcontrast-calendar-day-text-color-cap-selected: HighlightText;--highcontrast-calendar-day-text-color-disabled: GrayText;--highcontrast-calendar-day-text-color-hover: ButtonText;--highcontrast-calendar-day-text-color-key-focus: ButtonText;--highcontrast-calendar-day-text-color-selected: HighlightText;--highcontrast-calendar-day-text-color: CanvasText;--highcontrast-calendar-date-text-color: CanvasText;--highcontrast-calendar-day-title-text-color: CanvasText;--highcontrast-calendar-day-today-background-color-selected-hover: Highlight;--highcontrast-calendar-day-today-border-color-disabled: GrayText;--highcontrast-calendar-day-today-border-color: ButtonText;--highcontrast-calendar-day-today-text-color-disabled: GrayText;--highcontrast-calendar-day-today-text-color: ButtonText;forced-color-adjust:none}.date.is-range-selection.is-today{color:HighlightText}.date.is-range-selection.is-selection-end:after,.date.is-range-selection.is-selection-start:after{content:none}.date.is-disabled.is-range-selection,.date.is-disabled.is-selected{background:Highlight;color:HighlightText}}:host{--calendar-background-color: var(--luzmo-background-color-white)}:host{font-family:var(--luzmo-font-family);--calendar-day-width: var(--luzmo-component-height);--calendar-day-height: var(--luzmo-component-height);--calendar-border-radius-reset: 0;--calendar-border-width-reset: 0;--calendar-day-border-size: var(--luzmo-border-width);--calendar-margin-y: calc(var(--luzmo-spacing) * 3);--calendar-margin-x: var(--luzmo-component-height);--calendar-day-padding: var(--luzmo-spacing-2);--calendar-width: calc( (var(--calendar-day-width) + var(--calendar-day-padding) * 2) * 7 );--calendar-title-text-letter-spacing: .06em;--calendar-day-title-text-font-weight: bold;--calendar-day-title-text-color: var(--luzmo-font-color-disabled);--calendar-title-height: var(--luzmo-component-height);--calendar-title-font-weight: bold;--calendar-title-text-size: var(--luzmo-font-size);--calendar-day-title-text-size: var(--luzmo-font-size);--calendar-day-text-size-han: var(--luzmo-font-size);--calendar-date-text-color: var(--luzmo-font-color);--calendar-day-text-color: var(--luzmo-font-color);--calendar-day-text-size: var(--luzmo-font-size);--calendar-day-border-radius: var(--luzmo-border-radius);--calendar-day-text-color-selected: var(--luzmo-primary-inverse-color);--calendar-day-text-color-hover: var(--luzmo-font-color-hover);--calendar-day-text-color-cap-selected: var(--luzmo-primary-inverse-color);--calendar-day-border-color-cap-selected: var(--luzmo-primary);--calendar-day-border-color-cap-selected-focus: var(--luzmo-primary-focus);--calendar-day-text-font-weight-selected: var(--bold-font-weight);--calendar-day-text-font-weight-cap-selected: var(--bold-font-weight);--calendar-day-today-text-color: var(--luzmo-primary);--calendar-day-today-background-color: var(--luzmo-background-color-hover);--calendar-day-today-text-font-weight: normal;--calendar-day-today-border-color: transparent;--calendar-day-today-text-color-disabled: var(--luzmo-font-color-disabled);--calendar-day-today-border-color-disabled: transparent;--calendar-day-text-color-disabled: var(--luzmo-font-color-disabled);--calendar-day-text-color-key-focus: var(--luzmo-primary-down);--calendar-day-background-color-cap-selected: var(--luzmo-primary);--calendar-button-icon-color: var(--luzmo-font-color)}:host:dir(rtl),:host([dir=rtl]){--logical-rotation: matrix(-1, 0, 0, 1, 0, 0)}:host([size=s]){--calendar-day-width: var(--luzmo-component-height-s);--calendar-day-height: var(--luzmo-component-height-s);--calendar-day-border-radius: var(--luzmo-border-radius-s);--calendar-title-height: var(--luzmo-component-height-s);--calendar-title-text-size: var(--luzmo-font-size-s);--calendar-day-title-text-size: var(--luzmo-font-size-s);--calendar-day-text-size-han: var(--luzmo-font-size-s);--calendar-day-text-size: var(--luzmo-font-size-s)}:host([size=l]){--calendar-day-width: var(--luzmo-component-height-l);--calendar-day-height: var(--luzmo-component-height-l);--calendar-day-border-radius: var(--luzmo-border-radius-l);--calendar-title-height: var(--luzmo-component-height-l);--calendar-title-text-size: var(--luzmo-font-size-l);--calendar-day-title-text-size: var(--luzmo-font-size-l);--calendar-day-text-size-han: var(--luzmo-font-size-l);--calendar-day-text-size: var(--luzmo-font-size-l)}:host([size=xl]){--calendar-day-width: var(--luzmo-component-height-xl);--calendar-day-height: var(--luzmo-component-height-xl);--calendar-day-border-radius: var(--luzmo-border-radius-xl);--calendar-title-height: var(--luzmo-component-height-xl);--calendar-title-text-size: var(--luzmo-font-size-xl);--calendar-day-title-text-size: var(--luzmo-font-size-xl);--calendar-day-text-size-han: var(--luzmo-font-size-xl);--calendar-day-text-size: var(--luzmo-font-size-xl)}.table-cell span[role=button]{border-radius:var(--luzmo-calendar-day-width, var(--calendar-day-width))}';
990
+ var br = Object.defineProperty, fr = Object.getOwnPropertyDescriptor, D = (r, e, t, a) => {
991
+ for (var o = a > 1 ? void 0 : a ? fr(e, t) : e, i = r.length - 1, n; i >= 0; i--)
992
+ (n = r[i]) && (o = (a ? n(e, t, o) : n(o)) || o);
993
+ return a && o && br(e, t, o), o;
994
+ };
995
+ const Ue = 7;
996
+ let x = class extends de(He, {
997
+ validSizes: ["s", "m", "l", "xl"],
998
+ noDefaultSize: !0
999
+ }) {
1000
+ constructor() {
1001
+ super(), this.disabled = !1, this.labels = {
1002
+ previous: "Previous",
1003
+ next: "Next",
1004
+ today: "Today",
1005
+ selected: "Selected"
1006
+ }, this.currentDate = this.today, this.timeZone = R(), this.weekdays = [], this.currentMonthDates = [], this._isDateFocusIntent = !1, this.numberFormatter = new le(this._language), this.setNumberFormatter(), this.setWeekdays(), this.setCurrentMonthDates();
1007
+ }
1008
+ /**
1009
+ * The styles of the calendar
1010
+ * @internal
1011
+ */
1012
+ static get styles() {
1013
+ return [se(gr)];
1014
+ }
1015
+ /**
1016
+ * The language used to format the dates and weekdays.
1017
+ * @internal
1018
+ */
1019
+ get _language() {
1020
+ try {
1021
+ return this.language ? new Intl.Locale(this.language).language : "en";
1022
+ } catch {
1023
+ return "en";
1024
+ }
1025
+ }
1026
+ /**
1027
+ * The current date in the calendar
1028
+ * @internal
1029
+ */
1030
+ get today() {
1031
+ return Ut(this.timeZone);
1032
+ }
1033
+ set isDateFocusIntent(e) {
1034
+ this._isDateFocusIntent !== e && (this._isDateFocusIntent = e, this.requestUpdate("isDateFocusIntent", !e));
1035
+ }
1036
+ /**
1037
+ * @internal
1038
+ */
1039
+ get isDateFocusIntent() {
1040
+ return this._isDateFocusIntent;
1041
+ }
1042
+ setDateFocusIntent() {
1043
+ this.isDateFocusIntent = !0;
1044
+ }
1045
+ resetDateFocusIntent() {
1046
+ this.isDateFocusIntent = !1;
1047
+ }
1048
+ connectedCallback() {
1049
+ super.connectedCallback(), document.addEventListener("mousedown", this.resetDateFocusIntent);
1050
+ }
1051
+ disconnectedCallback() {
1052
+ super.disconnectedCallback(), document.removeEventListener("mousedown", this.resetDateFocusIntent);
1053
+ }
1054
+ /**
1055
+ * Resets the component's value
1056
+ */
1057
+ clear() {
1058
+ this._value = void 0;
1059
+ }
1060
+ willUpdate(e) {
1061
+ e.has("language") && (this.setNumberFormatter(), this.setWeekdays(), this.setCurrentMonthDates());
1062
+ const t = e.has("min"), a = e.has("max"), o = e.has("value");
1063
+ (t || a || o) && (this.convertToCalendarDates(), this.checkDatePropsCompliance(t || a), this.updateCurrentDate());
1064
+ const i = e.get("currentDate");
1065
+ e.has("currentDate") && (!i || !O(i, this.currentDate)) && (this.setCurrentMonthDates(), this.setAttribute("aria-label", this.monthAndYear));
1066
+ }
1067
+ updated(e) {
1068
+ e.has("currentDate") && this.isDateFocusIntent && this.focusCurrentDate();
1069
+ }
1070
+ /**
1071
+ * Focuses the tabbable day element in the calendar represented by the current date.
1072
+ * Useful while navigating through the calendar as the focus might be lost when the month changes.
1073
+ */
1074
+ focusCurrentDate() {
1075
+ var e;
1076
+ const t = (e = this.shadowRoot) == null ? void 0 : e.querySelector(
1077
+ 'td span[tabindex="0"]'
1078
+ );
1079
+ t && t.focus();
1080
+ }
1081
+ convertToCalendarDates() {
1082
+ this._min = this.min ? Q(this.min) : void 0, this._max = this.max ? Q(this.max) : void 0, this._value = this.value ? Q(this.value) : void 0;
1083
+ const e = "AD";
1084
+ this._min = this._min && L(this._min).set({ era: e }), this._max = this._max && L(this._max).set({ era: e }), this._value = this._value && L(this._value).set({ era: e });
1085
+ }
1086
+ /**
1087
+ * Validates the component's date properties (min, max and value) compliance with one another.
1088
+ * If the [min, max] constraint interval is invalid, both properties are reset.
1089
+ * If the value is not within the [min, max] (valid) interval, it is reset.
1090
+ *
1091
+ * @param checkInterval - Whether to check the [min, max] interval
1092
+ */
1093
+ checkDatePropsCompliance(e) {
1094
+ e && this._min && this._max && (this._min.compare(this._max) < 0 || (console.warn && console.warn(
1095
+ this,
1096
+ `<${this.localName}> expects the 'min' to be less than 'max'. Please ensure that 'min' property's date is earlier than 'max' property's date.`
1097
+ ), this._min = void 0, this._max = void 0)), this._value && this.isNonCompliantDate(this._value) && (console.warn && console.warn(
1098
+ this,
1099
+ `<${this.localName}> expects the preselected value to comply with the min and max constraints. Please ensure that 'value' property's date is in between the dates for the 'min' and 'max' properties.`
1100
+ ), this._value = void 0);
1101
+ }
1102
+ updateCurrentDate() {
1103
+ if (this._value) {
1104
+ this.currentDate = this._value;
1105
+ return;
1106
+ }
1107
+ this.isNonCompliantDate(this.today) ? this._min ? this.currentDate = this._min : this._max && (this.currentDate = this._max) : this.currentDate = this.today;
1108
+ }
1109
+ /**
1110
+ * Whether the date is non-compliant with the min and max constraints
1111
+ */
1112
+ isNonCompliantDate(e) {
1113
+ return !!(this._min && e.compare(this._min) < 0 || this._max && e.compare(this._max) > 0);
1114
+ }
1115
+ render() {
1116
+ return k` ${this.renderCalendarHeader()}${this.renderCalendarGrid()} `;
1117
+ }
1118
+ /**
1119
+ * The month and year of the calendar
1120
+ * @internal
1121
+ */
1122
+ get monthAndYear() {
1123
+ return this.formatDate(this.currentDate, {
1124
+ month: "long",
1125
+ year: "numeric"
1126
+ });
1127
+ }
1128
+ renderCalendarHeader() {
1129
+ return k`
1130
+ <div class="header" @focusin=${this.resetDateFocusIntent}>
1131
+ <h2
1132
+ class="title"
1133
+ aria-live="polite"
1134
+ aria-atomic="true"
1135
+ data-test-id="calendar-title"
1136
+ >
1137
+ ${this.monthAndYear}
1138
+ </h2>
1139
+
1140
+ <luzmo-action-button
1141
+ quiet
1142
+ size="s"
1143
+ label=${this.labels.previous}
1144
+ class="prevMonth"
1145
+ data-test-id="prev-btn"
1146
+ ?disabled=${this.isPreviousMonthDisabled}
1147
+ @click=${this.handlePreviousMonth}
1148
+ >
1149
+ <div slot="icon">
1150
+ <slot name="prev-icon">
1151
+ <luzmo-icon
1152
+ block
1153
+ .size=${this.size}
1154
+ .icon=${wt}
1155
+ ></luzmo-icon>
1156
+ </slot>
1157
+ </div>
1158
+ </luzmo-action-button>
1159
+
1160
+ <luzmo-action-button
1161
+ quiet
1162
+ size="s"
1163
+ label=${this.labels.next}
1164
+ class="nextMonth"
1165
+ data-test-id="next-btn"
1166
+ ?disabled=${this.isNextMonthDisabled}
1167
+ @click=${this.handleNextMonth}
1168
+ >
1169
+ <div slot="icon">
1170
+ <slot name="next-icon">
1171
+ <luzmo-icon
1172
+ block
1173
+ .size=${this.size}
1174
+ .icon=${Dt}
1175
+ ></luzmo-icon>
1176
+ </slot>
1177
+ </div>
1178
+ </luzmo-action-button>
1179
+ </div>
1180
+ `;
1181
+ }
1182
+ /**
1183
+ * Whether the previous month is disabled
1184
+ * @internal
1185
+ */
1186
+ get isPreviousMonthDisabled() {
1187
+ if (this.disabled) return !0;
1188
+ const e = B(this.currentDate), t = e.subtract({ months: 1 });
1189
+ return e.era !== t.era || E(e, t);
1190
+ }
1191
+ /**
1192
+ * Whether the next month is disabled
1193
+ * @internal
1194
+ */
1195
+ get isNextMonthDisabled() {
1196
+ if (this.disabled) return !0;
1197
+ const e = Nt(this.currentDate), t = e.add({ months: 1 });
1198
+ return e.era !== t.era || E(e, t);
1199
+ }
1200
+ handlePreviousMonth() {
1201
+ let e = B(this.currentDate).subtract({
1202
+ months: 1
1203
+ });
1204
+ this._value && O(e, this._value) ? e = this._value : O(e, this.today) && (e = this.today), this.currentDate = e;
1205
+ }
1206
+ handleNextMonth() {
1207
+ let e = B(this.currentDate).add({
1208
+ months: 1
1209
+ });
1210
+ this._value && O(e, this._value) ? e = this._value : O(e, this.today) && (e = this.today), this.currentDate = e;
1211
+ }
1212
+ renderCalendarGrid() {
1213
+ return k`
1214
+ <table
1215
+ role="grid"
1216
+ aria-readonly="true"
1217
+ aria-disabled=${this.disabled}
1218
+ role="presentation"
1219
+ class="table body"
1220
+ @keydown=${this.handleKeydown}
1221
+ >
1222
+ ${this.renderCalendarTableHead()} ${this.renderCalendarTableBody()}
1223
+ </table>
1224
+ `;
1225
+ }
1226
+ renderCalendarTableHead() {
1227
+ return k`
1228
+ <thead role="presentation">
1229
+ <tr role="row">
1230
+ ${this.renderWeekdayColumns()}
1231
+ </tr>
1232
+ </thead>
1233
+ `;
1234
+ }
1235
+ renderWeekdayColumns() {
1236
+ return this.weekdays.map((e) => this.renderWeekdayColumn(e));
1237
+ }
1238
+ renderWeekdayColumn(e) {
1239
+ return k`
1240
+ <th role="columnheader" scope="col" class="table-cell">
1241
+ <abbr class="dayOfWeek" title=${e.long}> ${e.narrow} </abbr>
1242
+ </th>
1243
+ `;
1244
+ }
1245
+ renderCalendarTableBody() {
1246
+ return k`
1247
+ <tbody role="presentation">
1248
+ ${this.renderCalendarWeeks()}
1249
+ </tbody>
1250
+ `;
1251
+ }
1252
+ renderCalendarWeeks() {
1253
+ return this.currentMonthDates.map(
1254
+ (e) => k`
1255
+ <tr role="row">
1256
+ ${this.renderDatesInWeek(e)}
1257
+ </tr>
1258
+ `
1259
+ );
1260
+ }
1261
+ renderDatesInWeek(e) {
1262
+ return e.map((t) => this.renderCalendarTableCell(t));
1263
+ }
1264
+ parseDateCellProperties(e) {
1265
+ const t = {
1266
+ isOutsideMonth: !1,
1267
+ isSelected: !1,
1268
+ isToday: !1,
1269
+ isDisabled: !1,
1270
+ isTabbable: !1
1271
+ };
1272
+ return t.isOutsideMonth = e.month !== this.currentDate.month, t.isOutsideMonth || (t.isDisabled = this.disabled || this.isMinLimitReached(e) || this.isMaxLimitReached(e), t.isToday = E(e, this.today), t.isDisabled) || (t.isTabbable = E(e, this.currentDate), t.isSelected = !!(this._value && E(this._value, e))), t;
1273
+ }
1274
+ renderCalendarTableCell(e) {
1275
+ const { isOutsideMonth: t, isSelected: a, isToday: o, isDisabled: i, isTabbable: n } = this.parseDateCellProperties(e), l = {
1276
+ date: !0,
1277
+ "is-outsideMonth": t,
1278
+ "is-selected": a,
1279
+ "is-today": o,
1280
+ "is-disabled": i
1281
+ };
1282
+ let s = "";
1283
+ o ? s = `${this.labels.today}, ` : a && (s = `${this.labels.selected}, `);
1284
+ const c = s + this.formatDate(e, {
1285
+ weekday: "long",
1286
+ year: "numeric",
1287
+ month: "long",
1288
+ day: "numeric"
1289
+ });
1290
+ return k`
1291
+ <td role="gridcell" class="table-cell">
1292
+ <span
1293
+ role="button"
1294
+ tabindex=${H(
1295
+ t ? void 0 : n ? "0" : "-1"
1296
+ )}
1297
+ aria-label=${c}
1298
+ aria-disabled=${t || i}
1299
+ data-value=${e.toString()}
1300
+ @mousedown=${this.handleDaySelect}
1301
+ >
1302
+ <span role="presentation" class=${_e(l)}>
1303
+ ${this.formatNumber(e.day)}
1304
+ </span>
1305
+ </span>
1306
+ </td>
1307
+ `;
1308
+ }
1309
+ handleKeydown(e) {
1310
+ switch (this.setDateFocusIntent(), e.code) {
1311
+ case "ArrowLeft": {
1312
+ this.moveToPreviousDay();
1313
+ break;
1314
+ }
1315
+ case "ArrowDown": {
1316
+ this.moveToNextWeek();
1317
+ break;
1318
+ }
1319
+ case "ArrowRight": {
1320
+ this.moveToNextDay();
1321
+ break;
1322
+ }
1323
+ case "ArrowUp": {
1324
+ this.moveToPreviousWeek();
1325
+ break;
1326
+ }
1327
+ case "Space":
1328
+ case "Enter": {
1329
+ this.handleDaySelect(e);
1330
+ break;
1331
+ }
1332
+ }
1333
+ }
1334
+ handleDaySelect(e) {
1335
+ if (this.disabled) {
1336
+ e.preventDefault();
1337
+ return;
1338
+ }
1339
+ const t = e.target.closest(
1340
+ 'span[role="button"]'
1341
+ ), a = t && t.dataset.value;
1342
+ if (!a) return;
1343
+ const o = Q(a);
1344
+ if (this._value && E(this._value, o) || this.isMinLimitReached(o) || this.isMaxLimitReached(o)) {
1345
+ e.preventDefault();
1346
+ return;
1347
+ }
1348
+ this._value = o, this.value = o.toString(), this.dispatchEvent(
1349
+ new CustomEvent("change", {
1350
+ bubbles: !0,
1351
+ composed: !0,
1352
+ cancelable: !0,
1353
+ detail: {
1354
+ value: this.value
1355
+ }
1356
+ })
1357
+ );
1358
+ }
1359
+ moveToPreviousDay() {
1360
+ const e = this.currentDate.subtract({ days: 1 });
1361
+ this.canMoveBackToDate(e) && (this.currentDate = e);
1362
+ }
1363
+ moveToNextDay() {
1364
+ const e = this.currentDate.add({ days: 1 });
1365
+ this.canMoveForwardToDate(e) && (this.currentDate = e);
1366
+ }
1367
+ moveToPreviousWeek() {
1368
+ const e = this.currentDate.subtract({ weeks: 1 });
1369
+ if (this.canMoveBackToDate(e)) {
1370
+ this.currentDate = e;
1371
+ return;
1372
+ }
1373
+ let t = e.add({ days: 1 });
1374
+ for (; !this.canMoveBackToDate(t); )
1375
+ t = t.add({ days: 1 });
1376
+ this.currentDate = t;
1377
+ }
1378
+ moveToNextWeek() {
1379
+ const e = this.currentDate.add({ weeks: 1 });
1380
+ if (this.canMoveForwardToDate(e)) {
1381
+ this.currentDate = e;
1382
+ return;
1383
+ }
1384
+ let t = e.subtract({ days: 1 });
1385
+ for (; !this.canMoveForwardToDate(t); )
1386
+ t = t.subtract({ days: 1 });
1387
+ this.currentDate = t;
1388
+ }
1389
+ canMoveBackToDate(e) {
1390
+ return this.isMinLimitReached(e) ? !1 : O(this.currentDate, e) || !this.isPreviousMonthDisabled;
1391
+ }
1392
+ canMoveForwardToDate(e) {
1393
+ return this.isMaxLimitReached(e) ? !1 : O(this.currentDate, e) || !this.isNextMonthDisabled;
1394
+ }
1395
+ /**
1396
+ * Defines the array with data for the days of the week, starting on the first day of the week according to the
1397
+ * defined location (Sunday, Monday, etc.)
1398
+ */
1399
+ setWeekdays() {
1400
+ const e = Oe(this.currentDate, this._language);
1401
+ this.weekdays = [...Array.from({ length: Ue }).keys()].map(
1402
+ (t) => {
1403
+ const a = e.add({ days: t });
1404
+ return {
1405
+ narrow: this.formatDate(a, { weekday: "narrow" }),
1406
+ long: this.formatDate(a, { weekday: "long" })
1407
+ };
1408
+ }
1409
+ );
1410
+ }
1411
+ /**
1412
+ * Defines the 2D-array with the dates of the current month
1413
+ */
1414
+ setCurrentMonthDates() {
1415
+ const e = Yt(this.currentDate, this._language), t = Array.from({
1416
+ length: e
1417
+ });
1418
+ for (const a of Array.from({ length: e }).keys())
1419
+ t[a] = this.getDatesInWeek(
1420
+ this.currentDate,
1421
+ a
1422
+ );
1423
+ this.currentMonthDates = t;
1424
+ }
1425
+ /**
1426
+ * Returns an array with all days of the week in a specific month, corresponding to the given index,
1427
+ * starting with the first day of the week according to the language
1428
+ *
1429
+ * @param weekIndex - The index of the week
1430
+ */
1431
+ getDatesInWeek(e, t) {
1432
+ const a = [];
1433
+ let o = Oe(
1434
+ B(e).add({
1435
+ weeks: t
1436
+ }),
1437
+ this._language
1438
+ );
1439
+ for (; a.length < Ue; ) {
1440
+ a.push(o);
1441
+ const i = o.add({ days: 1 });
1442
+ if (E(o, i)) break;
1443
+ o = i;
1444
+ }
1445
+ return a;
1446
+ }
1447
+ isMinLimitReached(e) {
1448
+ return !!(this._min && e.compare(this._min) < 0);
1449
+ }
1450
+ isMaxLimitReached(e) {
1451
+ return !!(this._max && e.compare(this._max) > 0);
1452
+ }
1453
+ /**
1454
+ * Formats a `CalendarDate` object using the current language and the provided date format options
1455
+ *
1456
+ * @param calendarDate - The `CalendarDate` object that will be formatted
1457
+ * @param options - All date format options that will be used by the formatter
1458
+ */
1459
+ formatDate(e, t) {
1460
+ return new $e(this._language, t).format(
1461
+ e.toDate(this.timeZone)
1462
+ );
1463
+ }
1464
+ setNumberFormatter() {
1465
+ this.numberFormatter = new le(this._language);
1466
+ }
1467
+ formatNumber(e) {
1468
+ return this.numberFormatter.format(e);
1469
+ }
1470
+ };
1471
+ D([
1472
+ g({ type: String })
1473
+ ], x.prototype, "value", 2);
1474
+ D([
1475
+ g({ type: String })
1476
+ ], x.prototype, "min", 2);
1477
+ D([
1478
+ g({ type: String })
1479
+ ], x.prototype, "max", 2);
1480
+ D([
1481
+ g({ type: Boolean, reflect: !0 })
1482
+ ], x.prototype, "disabled", 2);
1483
+ D([
1484
+ g({ type: String, reflect: !0 })
1485
+ ], x.prototype, "language", 2);
1486
+ D([
1487
+ g({ type: Object })
1488
+ ], x.prototype, "labels", 2);
1489
+ D([
1490
+ S()
1491
+ ], x.prototype, "currentDate", 2);
1492
+ D([
1493
+ S()
1494
+ ], x.prototype, "_value", 2);
1495
+ D([
1496
+ S()
1497
+ ], x.prototype, "_min", 2);
1498
+ D([
1499
+ S()
1500
+ ], x.prototype, "_max", 2);
1501
+ D([
1502
+ S()
1503
+ ], x.prototype, "weekdays", 2);
1504
+ D([
1505
+ S()
1506
+ ], x.prototype, "currentMonthDates", 2);
1507
+ D([
1508
+ S()
1509
+ ], x.prototype, "isDateFocusIntent", 1);
1510
+ customElements.get("luzmo-calendar") || customElements.define("luzmo-calendar", x);
1511
+ /*! * Lucero - The design system for Luzmo.
1512
+ *
1513
+ * Copyright © 2025 Luzmo
1514
+ * All rights reserved.
1515
+ * Lucero (“Luzmo Design System”) must be used according to the Luzmo Terms of Service.
1516
+ * This license allows users with a current active Luzmo account to use Lucero.
1517
+ * This license terminates automatically if a user no longer has an active Luzmo account.
1518
+ * Please view the Luzmo Terms of Service at: https://www.luzmo.com/information-pages/terms-of-use.
1519
+ *
1520
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1521
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1522
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1523
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1524
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1525
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1526
+ * SOFTWARE.
1527
+ * */
1528
+ const zr = () => {
1529
+ if (typeof document < "u" && !document.querySelector("style[data-luzmo-vars]")) {
1530
+ const r = document.createElement("style");
1531
+ r.setAttribute("data-luzmo-vars", ""), r.textContent = 'html{--luzmo-animation-duration: 0.15s;--luzmo-border-color: rgba(var(--luzmo-border-color-rgb), 0.1);--luzmo-border-color-hover: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-down: rgba(var(--luzmo-border-color-rgb), 0.3);--luzmo-border-color-focus: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-rgb: 0, 0, 0;--luzmo-border-color-full: rgb(180, 180, 180);--luzmo-border-color-full-hover: rgb(140, 140, 140);--luzmo-border-color-full-down: rgb(110, 110, 110);--luzmo-border-color-full-focus: rgb(140, 140, 140);--luzmo-border-color-disabled: #dddddd;--luzmo-border-radius: 6px;--luzmo-border-radius-s: 4px;--luzmo-border-radius-l: 8px;--luzmo-border-radius-xl: 12px;--luzmo-border-radius-full: 999rem;--luzmo-background-color: #ffffff;--luzmo-background-color-rgb: 255, 255, 255;--luzmo-background-color-disabled: #eeeeee;--luzmo-background-color-hover: #f0f0fc;--luzmo-background-color-down: #f1f1ff;--luzmo-background-color-focus: #f0f0fc;--luzmo-background-color-highlight: rgb(240, 240, 240);--luzmo-background-color-highlight-disabled: rgb(245, 245, 245);--luzmo-background-color-highlight-hover: rgb(225, 225, 225);--luzmo-background-color-highlight-down: rgb(215, 215, 215);--luzmo-background-color-highlight-focus: rgb(225, 225, 225);--luzmo-border-width: 1px;--luzmo-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;--luzmo-font-size-xs: 10px;--luzmo-font-size-s: 12px;--luzmo-font-size-m: 14px;--luzmo-font-size: 14px;--luzmo-font-size-l: 16px;--luzmo-font-size-xl: 18px;--luzmo-font-size-xxl: 20px;--luzmo-font-style: normal;--luzmo-line-height: normal;--luzmo-font-weight: 400;--luzmo-font-weight-semibold: 500;--luzmo-font-weight-bold: 600;--luzmo-font-color: #333;--luzmo-font-color-hard: #000;--luzmo-font-color-disabled: var(--luzmo-disabled-color);--luzmo-font-color-extra-dimmed: #888;--luzmo-font-color-hover: #333;--luzmo-font-color-down: #111;--luzmo-font-color-focus: #333;--luzmo-primary: #4434ff;--luzmo-primary-hover: #4234e4;--luzmo-primary-down: #392cc7;--luzmo-primary-focus: #4234e4;--luzmo-primary-inverse-color: #ffffff;--luzmo-primary-rgb: 68, 52, 255;--luzmo-secondary: #ff00ff;--luzmo-secondary-hover: #e309e3;--luzmo-secondary-down: #c711c7;--luzmo-secondary-focus: #e309e3;--luzmo-secondary-inverse-color: #ffffff;--luzmo-secondary-rgb: 255, 0, 255;--luzmo-negative-color: #ca221c;--luzmo-negative-color-hover: #b3241f;--luzmo-negative-color-down: #9f231f;--luzmo-negative-color-focus: #b3241f;--luzmo-negative-color-rgb: 202, 34, 28;--luzmo-positive-color: rgb(20, 150, 101);--luzmo-positive-color-hover: rgb(17, 128, 86);--luzmo-positive-color-down: rgb(16, 105, 71);--luzmo-positive-color-focus: rgb(17, 128, 86);--luzmo-positive-color-rgb: 20, 150, 101;--luzmo-selected-color: rgb(110, 110, 110);--luzmo-selected-color-hover: rgb(70, 70, 70);--luzmo-selected-color-down: rgb(40, 40, 40);--luzmo-selected-color-focus: rgb(70, 70, 70);--luzmo-selected-color-hard: #1e1e1e;--luzmo-selected-color-hard-hover: rgb(0, 0, 0);--luzmo-selected-color-hard-down: rgb(0, 0, 0);--luzmo-selected-color-hard-focus: rgb(0, 0, 0);--luzmo-informative-color: #1a77e9;--luzmo-informative-color-rgb: 26, 119, 233;--luzmo-disabled-color: #aaaaaa;--luzmo-spacing-1: 2px;--luzmo-spacing-2: 4px;--luzmo-spacing-3: 8px;--luzmo-spacing-4: 12px;--luzmo-spacing-5: 16px;--luzmo-indicator-gap: 2px;--luzmo-indicator-width: 1px;--luzmo-indicator-color: var(--luzmo-primary);--luzmo-component-height-xxs: 20px;--luzmo-component-height-xs: 24px;--luzmo-component-height-s: 28px;--luzmo-component-height: 32px;--luzmo-component-height-l: 40px;--luzmo-component-height-xl: 48px;--luzmo-component-height-xxl: 64px;--luzmo-icon-size-xxs: 12px;--luzmo-icon-size-xs: 14px;--luzmo-icon-size-s: 16px;--luzmo-icon-size-m: 18px;--luzmo-icon-size-l: 20px;--luzmo-icon-size-xl: 22px;--luzmo-icon-size-xxl: 32px}', document.head.appendChild(r);
1532
+ }
1533
+ };
1534
+ zr();
1535
+ const yr = "@media (hover: hover){.root:hover{--picker-button-background-color: var( --luzmo-picker-button-background-color-hover, var(--picker-button-background-color-hover) );--picker-button-font-color: var( --luzmo-picker-button-font-color-hover, var(--picker-button-font-color-hover) );--picker-button-icon-color: var( --luzmo-picker-button-icon-color-hover, var(--picker-button-icon-color-hover) )}}:host([open]) .root,:host(:is(:active,[active])) .root{--picker-button-background-color: var( --luzmo-picker-button-background-color-down, var(--picker-button-background-color-down) );--picker-button-font-color: var( --luzmo-picker-button-font-color-down, var(--picker-button-font-color-down) );--picker-button-icon-color: var( --luzmo-picker-button-icon-color-down, var(--picker-button-icon-color-down) )}:host([focused]) .root,.root:focus,.root:focus-visible{--picker-button-background-color: var( --luzmo-picker-button-background-color-key-focus, var(--picker-button-background-color-key-focus) );--picker-button-font-color: var( --luzmo-picker-button-font-color-key-focus, var(--picker-button-font-color-key-focus) );--picker-button-icon-color: var( --luzmo-picker-button-icon-color-key-focus, var(--picker-button-icon-color-key-focus) )}:host([disabled]) .root{--picker-button-background-color: var( --luzmo-picker-button-background-color-disabled, var(--luzmo-background-color-disabled) );--picker-button-background-color-hover: var( --luzmo-picker-button-background-color-hover-disabled, var(--luzmo-background-color-disabled) );--picker-button-background-color-down: var( --luzmo-picker-button-background-color-down-disabled, var(--luzmo-background-color-disabled) );--picker-button-border-color: var( --luzmo-picker-button-border-color-disabled, var(--luzmo-background-color-disabled) );--picker-button-font-color: var( --luzmo-picker-button-font-color-disabled, var(--luzmo-font-color-disabled) );--picker-button-font-color-hover: var( --luzmo-picker-button-font-color-hover-disabled, var(--luzmo-font-color-disabled) );--picker-button-font-color-down: var( --luzmo-picker-button-font-color-down-disabled, var(--luzmo-font-color-disabled) );--picker-button-icon-color: var( --luzmo-picker-button-icon-color-disabled, var(--luzmo-font-color-disabled) );--picker-button-icon-color-hover: var( --luzmo-picker-button-icon-color-hover-disabled, var(--luzmo-font-color-disabled) );--picker-button-icon-color-down: var( --luzmo-picker-button-icon-color-down-disabled, var(--luzmo-font-color-disabled) )}:host([quiet]) .root{--luzmo-picker-button-background-color: var( --luzmo-picker-button-background-color-quiet, transparent );--luzmo-picker-button-background-color-hover: var( --luzmo-picker-button-background-color-hover-quiet, transparent );--luzmo-picker-button-background-color-down: var( --luzmo-picker-button-background-color-down-quiet, transparent );--luzmo-picker-button-background-color-key-focus: var( --luzmo-picker-button-background-color-key-focus-quiet, transparent );--luzmo-picker-button-border-color: var( --luzmo-picker-button-border-color-quiet, transparent )}.root{background-color:initial;block-size:var(--luzmo-picker-button-width, var(--picker-button-width));box-sizing:border-box;padding:var(--luzmo-picker-button-padding, var(--picker-button-padding));border-style:none;justify-content:center;align-items:center;display:flex}.root.uiicononly{inline-size:var(--luzmo-picker-button-height, var(--picker-button-height))}.luzmo-picker-button-label{color:var(--luzmo-picker-button-font-color, var(--picker-button-font-color));white-space:nowrap;font-family:var(--luzmo-picker-button-font-family, var(--picker-button-font-family));font-style:var(--luzmo-picker-button-font-style, var(--picker-button-font-style));font-weight:var(--luzmo-picker-button-font-weight, var(--picker-button-font-weight));font-size:var(--luzmo-picker-button-font-size, var(--picker-button-font-size));flex:auto;padding-block-start:var(--luzmo-picker-button-label-padding, var(--picker-button-label-padding));padding-block-end:var(--luzmo-picker-button-label-padding, var(--picker-button-label-padding));overflow:hidden}.uiicononly .luzmo-picker-button-label{display:none}:host(:focus-visible) .luzmo-picker-button-fill{border-color:var(--luzmo-picker-button-indicator-color, var(--picker-button-indicator-color));background-color:var(--luzmo-picker-button-background-color-key-focus, var(--picker-button-background-color-key-focus))}.luzmo-picker-button-fill{box-sizing:border-box;block-size:100%;inline-size:100%;justify-content:center;align-items:center;gap:var(--luzmo-picker-button-gap, var(--picker-button-gap));background-color:var(--luzmo-picker-button-background-color, var(--picker-button-background-color));border-color:var(--luzmo-picker-button-border-color, var(--picker-button-border-color));border-width:var(--luzmo-picker-button-border-width, var(--picker-button-border-width));padding:var(--luzmo-picker-button-horizontal-padding, var(--picker-button-horizontal-padding));transition:border-color var(--luzmo-picker-button-background-animation-duration, var(--picker-button-background-animation-duration)) ease-in-out;border-style:solid;border-start-start-radius:var(--luzmo-picker-button-border-radius, var(--picker-button-border-radius));border-start-end-radius:var(--luzmo-picker-button-border-radius, var(--picker-button-border-radius));border-end-end-radius:var(--luzmo-picker-button-border-radius, var(--picker-button-border-radius));border-end-start-radius:var(--luzmo-picker-button-border-radius, var(--picker-button-border-radius));display:flex}:host([position=right]) .luzmo-picker-button-fill{border-start-start-radius:var(--luzmo-picker-button-border-radius-sided, var(--picker-button-border-radius-sided));border-end-start-radius:var(--luzmo-picker-button-border-radius-sided, var(--picker-button-border-radius-sided))}:host([position=right][rounded]) .luzmo-picker-button-fill{border-start-start-radius:var(--luzmo-picker-button-border-radius-rounded-sided, var(--picker-button-border-radius-rounded-sided));border-end-start-radius:var(--luzmo-picker-button-border-radius-rounded-sided, var(--picker-button-border-radius-rounded-sided))}:host([position=left]) .luzmo-picker-button-fill{border-start-end-radius:var(--luzmo-picker-button-border-radius-sided, var(--picker-button-border-radius-sided));border-end-end-radius:var(--luzmo-picker-button-border-radius-sided, var(--picker-button-border-radius-sided))}:host([position=left][rounded]) .luzmo-picker-button-fill{border-start-end-radius:var(--luzmo-picker-button-border-radius-rounded-sided, var(--picker-button-border-radius-rounded-sided));border-end-end-radius:var(--luzmo-picker-button-border-radius-rounded-sided, var(--picker-button-border-radius-rounded-sided))}:host([rounded]) .luzmo-picker-button-fill{border-start-start-radius:var(--luzmo-picker-button-border-radius-rounded, var(--picker-button-border-radius-rounded));border-start-end-radius:var(--luzmo-picker-button-border-radius-rounded, var(--picker-button-border-radius-rounded));border-end-end-radius:var(--luzmo-picker-button-border-radius-rounded, var(--picker-button-border-radius-rounded));border-end-start-radius:var(--luzmo-picker-button-border-radius-rounded, var(--picker-button-border-radius-rounded))}.uiicononly .luzmo-picker-button-fill{padding:0}.textuiicon .luzmo-picker-button-fill{inline-size:auto}.luzmo-picker-button-icon{color:var(--luzmo-picker-button-icon-color, var(--picker-button-icon-color));flex-shrink:0}.root{--picker-button-height: var(--luzmo-component-height);--picker-button-width: var(--luzmo-component-height);--picker-button-gap: calc(var(--luzmo-spacing-2) + var(--luzmo-spacing-1));--picker-button-label-padding: calc( var(--luzmo-spacing-2) + var(--luzmo-spacing-1) );--picker-button-horizontal-padding: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--picker-button-indicator-color: var(--luzmo-indicator-color);--picker-button-icon-color: var(--luzmo-font-color);--picker-button-icon-color-hover: var(--luzmo-font-color-hover);--picker-button-icon-color-down: var(--luzmo-font-color-down);--picker-button-icon-color-key-focus: var(--luzmo-font-color-focus);--picker-button-font-color: var(--luzmo-font-color);--picker-button-font-color-hover: var(--luzmo-font-color-hover);--picker-button-font-color-down: var(--luzmo-font-color-down);--picker-button-font-color-key-focus: var(--neutral-content-color-focus);--picker-button-font-family: var(--luzmo-font-family);--picker-button-font-style: var(--luzmo-font-style);--picker-button-font-weight: var(--body-sans-serif-font-weight);--picker-button-font-size: var(--luzmo-font-size);--picker-button-border-radius-rounded: var(--luzmo-border-radius);--picker-button-background-animation-duration: var( --luzmo-animation-duration )}.root{--picker-button-background-color: var(--luzmo-background-color);--picker-button-background-color-hover: var(--luzmo-background-color-hover);--picker-button-background-color-down: var(--luzmo-background-color-down);--picker-button-background-color-key-focus: var( --luzmo-background-color-focus );--picker-button-border-color: var(--luzmo-border-color);--picker-button-border-radius: var(--luzmo-border-radius);--picker-button-border-radius-rounded-sided: var(--luzmo-border-radius);--picker-button-border-radius-sided: 0;--picker-button-border-width: var(--luzmo-border-width)}:host([size=s]) .root{--picker-button-height: var(--luzmo-component-height-s);--picker-button-width: var(--luzmo-component-height-s);--picker-button-label-padding: var(--luzmo-spacing-2);--picker-button-font-size: var(--luzmo-font-size-s);--picker-button-horizontal-padding: var(--luzmo-spacing-3)}:host([size=l]) .root{--picker-button-height: var(--luzmo-component-height-l);--picker-button-width: var(--luzmo-component-height-l);--picker-button-label-padding: var(--luzmo-spacing-3);--picker-button-font-size: var(--luzmo-font-size-l);--picker-button-horizontal-padding: var(--luzmo-spacing-4)}:host([size=xl]) .root{--picker-button-height: var(--luzmo-component-height-xl);--picker-button-width: var(--luzmo-component-height-xl);--picker-button-label-padding: var(--luzmo-spacing-4);--picker-button-font-size: var(--luzmo-font-size-xl);--picker-button-horizontal-padding: var(--luzmo-spacing-5)}:host{display:inline-flex}.root{display:flex}";
1536
+ var kr = Object.defineProperty, vt = (r, e, t, a) => {
1537
+ for (var o = void 0, i = r.length - 1, n; i >= 0; i--)
1538
+ (n = r[i]) && (o = n(e, t, o) || o);
1539
+ return o && kr(e, t, o), o;
1540
+ };
1541
+ let Fe = class extends de(
1542
+ Tt(Pt, '[slot="label"]')
1543
+ ) {
1544
+ constructor() {
1545
+ super(...arguments), this.invalid = !1, this.position = "right";
1546
+ }
1547
+ static get styles() {
1548
+ return [se(yr)];
1549
+ }
1550
+ get hasText() {
1551
+ return this.slotContentIsPresent;
1552
+ }
1553
+ render() {
1554
+ const e = {
1555
+ root: !0,
1556
+ uiicononly: !this.hasText,
1557
+ textuiicon: this.hasText
1558
+ };
1559
+ return k`
1560
+ <div class=${_e(e)}>
1561
+ <div class="luzmo-picker-button-fill">
1562
+ <span
1563
+ class="luzmo-picker-button-label is-placeholder"
1564
+ ?hidden=${!this.hasText}
1565
+ >
1566
+ <slot name="label"></slot>
1567
+ </span>
1568
+ <slot name="icon">
1569
+ <luzmo-icon
1570
+ .icon=${Mt}
1571
+ size=${this.size}
1572
+ block
1573
+ class="luzmo-picker-button-icon"
1574
+ ></luzmo-icon>
1575
+ </slot>
1576
+ </div>
1577
+ </div>
1578
+ `;
1579
+ }
1580
+ };
1581
+ vt([
1582
+ g({ type: Boolean, reflect: !0 })
1583
+ ], Fe.prototype, "invalid");
1584
+ vt([
1585
+ g({ reflect: !0 })
1586
+ ], Fe.prototype, "position");
1587
+ customElements.get("luzmo-picker-button") || customElements.define("luzmo-picker-button", Fe);
1588
+ /*! * Lucero - The design system for Luzmo.
1589
+ *
1590
+ * Copyright © 2025 Luzmo
1591
+ * All rights reserved.
1592
+ * Lucero (“Luzmo Design System”) must be used according to the Luzmo Terms of Service.
1593
+ * This license allows users with a current active Luzmo account to use Lucero.
1594
+ * This license terminates automatically if a user no longer has an active Luzmo account.
1595
+ * Please view the Luzmo Terms of Service at: https://www.luzmo.com/information-pages/terms-of-use.
1596
+ *
1597
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1598
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1599
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1600
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1601
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1602
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1603
+ * SOFTWARE.
1604
+ * */
1605
+ const xr = () => {
1606
+ if (typeof document < "u" && !document.querySelector("style[data-luzmo-vars]")) {
1607
+ const r = document.createElement("style");
1608
+ r.setAttribute("data-luzmo-vars", ""), r.textContent = 'html{--luzmo-animation-duration: 0.15s;--luzmo-border-color: rgba(var(--luzmo-border-color-rgb), 0.1);--luzmo-border-color-hover: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-down: rgba(var(--luzmo-border-color-rgb), 0.3);--luzmo-border-color-focus: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-rgb: 0, 0, 0;--luzmo-border-color-full: rgb(180, 180, 180);--luzmo-border-color-full-hover: rgb(140, 140, 140);--luzmo-border-color-full-down: rgb(110, 110, 110);--luzmo-border-color-full-focus: rgb(140, 140, 140);--luzmo-border-color-disabled: #dddddd;--luzmo-border-radius: 6px;--luzmo-border-radius-s: 4px;--luzmo-border-radius-l: 8px;--luzmo-border-radius-xl: 12px;--luzmo-border-radius-full: 999rem;--luzmo-background-color: #ffffff;--luzmo-background-color-rgb: 255, 255, 255;--luzmo-background-color-disabled: #eeeeee;--luzmo-background-color-hover: #f0f0fc;--luzmo-background-color-down: #f1f1ff;--luzmo-background-color-focus: #f0f0fc;--luzmo-background-color-highlight: rgb(240, 240, 240);--luzmo-background-color-highlight-disabled: rgb(245, 245, 245);--luzmo-background-color-highlight-hover: rgb(225, 225, 225);--luzmo-background-color-highlight-down: rgb(215, 215, 215);--luzmo-background-color-highlight-focus: rgb(225, 225, 225);--luzmo-border-width: 1px;--luzmo-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;--luzmo-font-size-xs: 10px;--luzmo-font-size-s: 12px;--luzmo-font-size-m: 14px;--luzmo-font-size: 14px;--luzmo-font-size-l: 16px;--luzmo-font-size-xl: 18px;--luzmo-font-size-xxl: 20px;--luzmo-font-style: normal;--luzmo-line-height: normal;--luzmo-font-weight: 400;--luzmo-font-weight-semibold: 500;--luzmo-font-weight-bold: 600;--luzmo-font-color: #333;--luzmo-font-color-hard: #000;--luzmo-font-color-disabled: var(--luzmo-disabled-color);--luzmo-font-color-extra-dimmed: #888;--luzmo-font-color-hover: #333;--luzmo-font-color-down: #111;--luzmo-font-color-focus: #333;--luzmo-primary: #4434ff;--luzmo-primary-hover: #4234e4;--luzmo-primary-down: #392cc7;--luzmo-primary-focus: #4234e4;--luzmo-primary-inverse-color: #ffffff;--luzmo-primary-rgb: 68, 52, 255;--luzmo-secondary: #ff00ff;--luzmo-secondary-hover: #e309e3;--luzmo-secondary-down: #c711c7;--luzmo-secondary-focus: #e309e3;--luzmo-secondary-inverse-color: #ffffff;--luzmo-secondary-rgb: 255, 0, 255;--luzmo-negative-color: #ca221c;--luzmo-negative-color-hover: #b3241f;--luzmo-negative-color-down: #9f231f;--luzmo-negative-color-focus: #b3241f;--luzmo-negative-color-rgb: 202, 34, 28;--luzmo-positive-color: rgb(20, 150, 101);--luzmo-positive-color-hover: rgb(17, 128, 86);--luzmo-positive-color-down: rgb(16, 105, 71);--luzmo-positive-color-focus: rgb(17, 128, 86);--luzmo-positive-color-rgb: 20, 150, 101;--luzmo-selected-color: rgb(110, 110, 110);--luzmo-selected-color-hover: rgb(70, 70, 70);--luzmo-selected-color-down: rgb(40, 40, 40);--luzmo-selected-color-focus: rgb(70, 70, 70);--luzmo-selected-color-hard: #1e1e1e;--luzmo-selected-color-hard-hover: rgb(0, 0, 0);--luzmo-selected-color-hard-down: rgb(0, 0, 0);--luzmo-selected-color-hard-focus: rgb(0, 0, 0);--luzmo-informative-color: #1a77e9;--luzmo-informative-color-rgb: 26, 119, 233;--luzmo-disabled-color: #aaaaaa;--luzmo-spacing-1: 2px;--luzmo-spacing-2: 4px;--luzmo-spacing-3: 8px;--luzmo-spacing-4: 12px;--luzmo-spacing-5: 16px;--luzmo-indicator-gap: 2px;--luzmo-indicator-width: 1px;--luzmo-indicator-color: var(--luzmo-primary);--luzmo-component-height-xxs: 20px;--luzmo-component-height-xs: 24px;--luzmo-component-height-s: 28px;--luzmo-component-height: 32px;--luzmo-component-height-l: 40px;--luzmo-component-height-xl: 48px;--luzmo-component-height-xxl: 64px;--luzmo-icon-size-xxs: 12px;--luzmo-icon-size-xs: 14px;--luzmo-icon-size-s: 16px;--luzmo-icon-size-m: 18px;--luzmo-icon-size-l: 20px;--luzmo-icon-size-xl: 22px;--luzmo-icon-size-xxl: 32px}', document.head.appendChild(r);
1609
+ }
1610
+ };
1611
+ xr();
1612
+ const d = {
1613
+ Year: "year",
1614
+ Month: "month",
1615
+ Day: "day",
1616
+ Hour: "hour",
1617
+ Minute: "minute",
1618
+ Second: "second",
1619
+ Millisecond: "fractionalSecond",
1620
+ DayPeriod: "dayPeriod",
1621
+ Literal: "literal"
1622
+ }, wr = {
1623
+ [d.Year]: "––––",
1624
+ [d.Month]: "––",
1625
+ [d.Day]: "––",
1626
+ [d.Hour]: "––",
1627
+ [d.Minute]: "––",
1628
+ [d.Second]: "––",
1629
+ [d.Millisecond]: "–––",
1630
+ [d.DayPeriod]: "––"
1631
+ }, y = {
1632
+ Day: "day",
1633
+ Hour: "hour",
1634
+ Minute: "minute",
1635
+ Second: "second",
1636
+ Millisecond: "millisecond"
1637
+ }, X = 0, Y = 12, gt = 2e3, Dr = 31;
1638
+ function w(r) {
1639
+ return typeof r == "number";
1640
+ }
1641
+ function K(r) {
1642
+ return r instanceof U;
1643
+ }
1644
+ function xe(r) {
1645
+ return r instanceof I;
1646
+ }
1647
+ function ne(r) {
1648
+ return r instanceof F;
1649
+ }
1650
+ function bt(r, e) {
1651
+ return r = r % Y + e;
1652
+ }
1653
+ function ft(r) {
1654
+ return r >= Y ? Y : X;
1655
+ }
1656
+ function Ne(r, e) {
1657
+ return r.length === e.length && r.every((t, a) => t === e[a]);
1658
+ }
1659
+ function zt(r) {
1660
+ return ne(r) ? new Date(r.year, r.month - 1, r.day) : new Date(
1661
+ r.year,
1662
+ r.month - 1,
1663
+ r.day,
1664
+ r.hour,
1665
+ r.minute,
1666
+ r.second,
1667
+ r.millisecond
1668
+ );
1669
+ }
1670
+ class q {
1671
+ constructor(e, t, a) {
1672
+ this.type = e, this.formatted = t, this.label = a, this.placeholder = wr[e];
1673
+ }
1674
+ increment(e) {
1675
+ this.value === void 0 ? this.value = this.minValue : (this.value = this.value + 1, this.value > this.maxValue && (this.value = this.minValue));
1676
+ }
1677
+ decrement(e) {
1678
+ this.value === void 0 ? this.value = this.maxValue : (this.value = this.value - 1, this.value < this.minValue && (this.value = this.maxValue));
1679
+ }
1680
+ setValueFromDate(e) {
1681
+ this.type === "fractionalSecond" ? this.value = e.millisecond : this.type !== d.DayPeriod && (this.value = e[this.type]);
1682
+ }
1683
+ clear() {
1684
+ this.value = void 0;
1685
+ }
1686
+ handleInput(e, t) {
1687
+ const a = t.parse(e);
1688
+ if (Number.isNaN(a)) return;
1689
+ const o = t.parse(
1690
+ `${this.value ?? ""}${a}`
1691
+ );
1692
+ if (this.isInputValueCompliant(o)) {
1693
+ this.value = o;
1694
+ return;
1695
+ }
1696
+ this.isInputValueCompliant(a) && (this.value = a);
1697
+ }
1698
+ isInputValueCompliant(e) {
1699
+ const { minValue: t, maxValue: a } = this.inputValidationLimits;
1700
+ return e >= t && e <= a;
1701
+ }
1702
+ get inputValidationLimits() {
1703
+ return {
1704
+ minValue: this.minValue,
1705
+ maxValue: this.maxValue
1706
+ };
1707
+ }
1708
+ updateValueToLimits() {
1709
+ this.value !== void 0 && (this.value < this.minValue && (this.value = this.minValue), this.value > this.maxValue && (this.value = this.maxValue));
1710
+ }
1711
+ }
1712
+ class yt extends q {
1713
+ constructor(e, t) {
1714
+ super(d.Year, e, t), this.minValue = 1, this.maxValue = 9999;
1715
+ }
1716
+ setLimits(e) {
1717
+ this.minValue = 1, this.maxValue = e.calendar.getYearsInEra(e), this.updateValueToLimits();
1718
+ }
1719
+ increment(e) {
1720
+ this.value === void 0 ? this.value = e.year : super.increment();
1721
+ }
1722
+ decrement(e) {
1723
+ this.value === void 0 ? this.value = e.year : super.decrement();
1724
+ }
1725
+ clear() {
1726
+ if (this.value === void 0) return;
1727
+ const e = Math.floor(this.value / 10);
1728
+ this.value = e > 0 ? e : void 0;
1729
+ }
1730
+ }
1731
+ class he {
1732
+ constructor(e) {
1733
+ this.segments = e;
1734
+ }
1735
+ get all() {
1736
+ return this.segments;
1737
+ }
1738
+ get editableValues() {
1739
+ return this.all.filter((e) => e instanceof q).map((e) => e.value);
1740
+ }
1741
+ get year() {
1742
+ const e = this.getByType(d.Year);
1743
+ if (e && e instanceof yt) return e;
1744
+ }
1745
+ get month() {
1746
+ const e = this.getByType(d.Month);
1747
+ if (e) return e;
1748
+ }
1749
+ get day() {
1750
+ const e = this.getByType(d.Day);
1751
+ if (e) return e;
1752
+ }
1753
+ get hour() {
1754
+ const e = this.getByType(d.Hour);
1755
+ if (e) return e;
1756
+ }
1757
+ get minute() {
1758
+ const e = this.getByType(d.Minute);
1759
+ if (e) return e;
1760
+ }
1761
+ get second() {
1762
+ const e = this.getByType(d.Second);
1763
+ if (e) return e;
1764
+ }
1765
+ get millisecond() {
1766
+ const e = this.getByType(d.Millisecond);
1767
+ if (e) return e;
1768
+ }
1769
+ get dayPeriod() {
1770
+ const e = this.getByType(d.DayPeriod);
1771
+ if (e) return e;
1772
+ }
1773
+ getByType(e) {
1774
+ return this.segments.find(
1775
+ (t) => t.type === e
1776
+ );
1777
+ }
1778
+ /**
1779
+ * Returns a `CalendarDate` object with the year, month and day values of the segments if they are all defined. The time values
1780
+ * are checked and included based on the precision provided, returning a `CalendarDateTime` instead.
1781
+ *
1782
+ * @param precision - The precision to use when creating the date object
1783
+ */
1784
+ getFormattedDate(e = y.Day) {
1785
+ var t, a, o, i, n, l, s;
1786
+ const c = (t = this.year) == null ? void 0 : t.value, m = (a = this.month) == null ? void 0 : a.value, u = (o = this.day) == null ? void 0 : o.value;
1787
+ if (!w(c) || !w(m) || !w(u)) return;
1788
+ if (e === y.Day) return new F(c, m, u);
1789
+ let h = (i = this.hour) == null ? void 0 : i.value;
1790
+ if (!w(h)) return;
1791
+ if (this.dayPeriod) {
1792
+ const C = this.dayPeriod.value;
1793
+ if (!w(C)) return;
1794
+ h = bt(h, C);
1795
+ }
1796
+ if (e === y.Hour)
1797
+ return new I(c, m, u, h);
1798
+ const p = (n = this.minute) == null ? void 0 : n.value;
1799
+ if (!w(p)) return;
1800
+ if (e === y.Minute)
1801
+ return new I(c, m, u, h, p);
1802
+ const v = (l = this.second) == null ? void 0 : l.value;
1803
+ if (!w(v)) return;
1804
+ if (e === y.Second)
1805
+ return new I(c, m, u, h, p, v);
1806
+ const z = (s = this.millisecond) == null ? void 0 : s.value;
1807
+ if (w(z))
1808
+ return new I(
1809
+ c,
1810
+ m,
1811
+ u,
1812
+ h,
1813
+ p,
1814
+ v,
1815
+ z
1816
+ );
1817
+ }
1818
+ }
1819
+ class Mr {
1820
+ constructor(e, t) {
1821
+ this.dateFormatter = e, this.currentDate = t, this.numberFormatter = new le(
1822
+ this.dateFormatter.resolvedOptions().locale,
1823
+ { useGrouping: !1 }
1824
+ );
1825
+ }
1826
+ /**
1827
+ * Formats all the `DateTimeSegments` to have the formatted property based on the value property, according to the date formatter.
1828
+ * @param segments - `DateTimeSegments` to format
1829
+ * @returns Formatted DateTimeSegments
1830
+ */
1831
+ format(e) {
1832
+ if (!e.year || !e.month || !e.day) return e;
1833
+ const t = this.getDateInfoWithDefaults(e);
1834
+ return t && (this.setSegmentsFormatted(e, t), this.padSegmentsFormatted(e)), e;
1835
+ }
1836
+ setSegmentsFormatted(e, t) {
1837
+ var a;
1838
+ e = new he(e.all);
1839
+ const { year: o, month: i, day: n, hour: l, minute: s, second: c, millisecond: m } = t, u = new Date(
1840
+ o,
1841
+ i - 1,
1842
+ n,
1843
+ l,
1844
+ s,
1845
+ c,
1846
+ m
1847
+ );
1848
+ if (!e.year) return;
1849
+ e.year.formatted = this.numberFormatter.format(o);
1850
+ const h = [
1851
+ d.Month,
1852
+ d.Day,
1853
+ d.Hour,
1854
+ d.Minute,
1855
+ d.Second,
1856
+ d.DayPeriod
1857
+ ], p = this.dateFormatter.formatToParts(u);
1858
+ for (const v of h) {
1859
+ const z = e[v];
1860
+ if (!z) continue;
1861
+ const C = (a = p.find(
1862
+ (N) => N.type === v
1863
+ )) == null ? void 0 : a.value;
1864
+ C && (z.formatted = C);
1865
+ }
1866
+ }
1867
+ padSegmentsFormatted(e) {
1868
+ if (!e.hour) return;
1869
+ const t = [
1870
+ d.Month,
1871
+ d.Day,
1872
+ d.Hour,
1873
+ d.Minute,
1874
+ d.Second
1875
+ ];
1876
+ for (const a of t) {
1877
+ const o = e[a];
1878
+ o && (o.formatted = o.formatted.padStart(
1879
+ 2,
1880
+ this.numberFormatter.format(0)
1881
+ ));
1882
+ }
1883
+ }
1884
+ getDateInfoWithDefaults(e) {
1885
+ var t, a, o, i, n;
1886
+ if (!e.year || !e.month || !e.day) return;
1887
+ const l = e.day.value ?? Xe(this.currentDate), s = e.month.value ?? Qe(this.currentDate), c = e.year.value ?? gt, m = (t = e.dayPeriod) == null ? void 0 : t.value;
1888
+ let u = (a = e.hour) == null ? void 0 : a.value;
1889
+ w(u) ? w(m) && (u = bt(u, m)) : u = w(m) ? m : this.currentDate.hour;
1890
+ const h = ((o = e.minute) == null ? void 0 : o.value) ?? this.currentDate.minute, p = ((i = e.second) == null ? void 0 : i.value) ?? this.currentDate.second, v = ((n = e.millisecond) == null ? void 0 : n.value) ?? this.currentDate.millisecond;
1891
+ return { year: c, month: s, day: l, hour: u, minute: h, second: p, millisecond: v };
1892
+ }
1893
+ }
1894
+ class pe {
1895
+ constructor(e) {
1896
+ const { dateFormatter: t, segments: a, currentDate: o } = e;
1897
+ this.segments = new he(a.all), this.dateFormatter = t, this.currentDate = o;
1898
+ }
1899
+ modify(e) {
1900
+ const t = this.segments.getByType(e);
1901
+ if (!t) return this.segments;
1902
+ this.modifySegment(t), this.updateSegmentsLimits(e);
1903
+ const a = new Mr(
1904
+ this.dateFormatter,
1905
+ this.currentDate
1906
+ );
1907
+ return this.segments = a.format(this.segments), this.segments;
1908
+ }
1909
+ updateSegmentsLimits(e) {
1910
+ const t = e === d.Year, a = e === d.Month, o = this.segments.year, i = this.segments.month, n = this.segments.day;
1911
+ t && (i == null || i.setLimits(this.currentDate), n == null || n.setLimits(this.currentDate, i == null ? void 0 : i.value, o == null ? void 0 : o.value)), a && (n == null || n.setLimits(this.currentDate, i == null ? void 0 : i.value, o == null ? void 0 : o.value));
1912
+ }
1913
+ }
1914
+ class $r extends pe {
1915
+ modifySegment(e) {
1916
+ e.clear();
1917
+ }
1918
+ }
1919
+ class _r extends pe {
1920
+ modifySegment(e) {
1921
+ e.decrement(this.currentDate);
1922
+ }
1923
+ }
1924
+ class Sr extends pe {
1925
+ modifySegment(e) {
1926
+ e.increment(this.currentDate);
1927
+ }
1928
+ }
1929
+ class Cr extends pe {
1930
+ constructor(e) {
1931
+ const { dateFormatter: t, segments: a, currentDate: o } = e;
1932
+ super({ dateFormatter: t, segments: a, currentDate: o }), this.eventData = e.eventData, this.numberParser = e.numberParser;
1933
+ }
1934
+ modifySegment(e) {
1935
+ this.eventData !== null && e.handleInput(this.eventData, this.numberParser);
1936
+ }
1937
+ }
1938
+ class Tr extends q {
1939
+ constructor(e, t) {
1940
+ super(d.Day, e, t), this.minValue = 1, this.maxValue = 31;
1941
+ }
1942
+ setLimits(e, t, a) {
1943
+ if (!w(t)) {
1944
+ this.minValue = 1, this.maxValue = Dr;
1945
+ return;
1946
+ }
1947
+ w(a) || (a = gt);
1948
+ const o = new F(a, t, 1);
1949
+ this.maxValue = e.calendar.getDaysInMonth(o), this.minValue = Xe(o), this.updateValueToLimits();
1950
+ }
1951
+ }
1952
+ class Pr extends q {
1953
+ constructor(e, t) {
1954
+ super(d.Month, e, t), this.minValue = 1, this.maxValue = 12;
1955
+ }
1956
+ setLimits(e) {
1957
+ this.minValue = Qe(e), this.maxValue = e.calendar.getMonthsInYear(e), this.updateValueToLimits();
1958
+ }
1959
+ }
1960
+ class Vr {
1961
+ constructor(e) {
1962
+ this.formatted = e, this.type = d.Literal;
1963
+ }
1964
+ }
1965
+ class Ir extends q {
1966
+ constructor(e, t) {
1967
+ super(d.DayPeriod, e, t), this.minValue = X, this.maxValue = Y, this.localizedMinValue = "AM", this.localizedMaxValue = "PM";
1968
+ }
1969
+ toggleAmPm() {
1970
+ this.value = this.value === X ? Y : X;
1971
+ }
1972
+ increment() {
1973
+ this.value === void 0 ? this.value = this.minValue : this.toggleAmPm();
1974
+ }
1975
+ decrement() {
1976
+ this.value === void 0 ? this.value = this.maxValue : this.toggleAmPm();
1977
+ }
1978
+ setValueFromDate(e) {
1979
+ this.value = ft(e.hour);
1980
+ }
1981
+ handleInput(e) {
1982
+ const t = e.toLowerCase(), a = this.localizedMinValue.toLowerCase().includes(t), o = this.localizedMaxValue.toLowerCase().includes(t);
1983
+ a && o || (a && (this.value = X), o && (this.value = Y));
1984
+ }
1985
+ setLocalizedLimits(e) {
1986
+ const t = new Date(0, 0, 0, this.minValue, 0), a = new Date(0, 0, 0, this.maxValue, 0), [o, i] = [t, a].map(
1987
+ this.getDayPeriodFromDate.bind(this, e)
1988
+ );
1989
+ o && (this.localizedMinValue = o), i && (this.localizedMaxValue = i);
1990
+ }
1991
+ getDayPeriodFromDate(e, t) {
1992
+ var a;
1993
+ return (a = e.formatToParts(t).find((o) => o.type === this.type)) == null ? void 0 : a.value;
1994
+ }
1995
+ }
1996
+ class Fr extends q {
1997
+ constructor(e, t) {
1998
+ super(d.Hour, e, t), this.minValue = 0, this.maxValue = 23;
1999
+ }
2000
+ setLimits(e) {
2001
+ this.minValue = 0, this.maxValue = 23, e && (this.minValue = 0, this.maxValue = 11), this.updateValueToLimits();
2002
+ }
2003
+ setValueFromDate(e, t) {
2004
+ t ? this.value = e.hour - ft(e.hour) : super.setValueFromDate(e);
2005
+ }
2006
+ /**
2007
+ * Returns the limits used to validate a user typed-in value.
2008
+ *
2009
+ * Different limits are needed when the user is typing in the hour segment and the clock is in 12-hour format due to the fact that
2010
+ * the hour value of 0 should be displayed as 12. Therefore, in the 12h format, the user should be able to type in "12" but not "00",
2011
+ * for the 00 time, which is represented by the value of 0 of the hour segment.
2012
+ */
2013
+ get inputValidationLimits() {
2014
+ const e = this.maxValue === 11;
2015
+ return {
2016
+ minValue: e ? 1 : 0,
2017
+ maxValue: e ? 12 : 23
2018
+ };
2019
+ }
2020
+ }
2021
+ class qr extends q {
2022
+ constructor(e, t) {
2023
+ super(d.Millisecond, e, t), this.minValue = 0, this.maxValue = 999;
2024
+ }
2025
+ }
2026
+ class Lr extends q {
2027
+ constructor(e, t) {
2028
+ super(d.Minute, e, t), this.minValue = 0, this.maxValue = 59;
2029
+ }
2030
+ }
2031
+ class Er extends q {
2032
+ constructor(e, t) {
2033
+ super(d.Second, e, t), this.minValue = 0, this.maxValue = 59;
2034
+ }
2035
+ }
2036
+ class Or {
2037
+ constructor(e) {
2038
+ this.dateFormatter = e;
2039
+ const t = this.dateFormatter.resolvedOptions().locale;
2040
+ this.numberFormatter = new le(t, {
2041
+ useGrouping: !1
2042
+ }), this.dateTimeFieldDisplayNames = new Intl.DisplayNames([t], {
2043
+ type: "dateTimeField"
2044
+ });
2045
+ }
2046
+ /**
2047
+ * Creates the `DateTimeSegments` needed for the DateTimePicker
2048
+ * @param currentDate - The date to create the segments from. This is used to set the limits and values of the segments.
2049
+ * @param setValues - If true, the segments will have their values set from the currentDate. If false, the segments will have no values.
2050
+ */
2051
+ createSegments(e, t = !1) {
2052
+ const a = zt(e), o = this.dateFormatter.formatToParts(a).map((z) => {
2053
+ const C = z.type;
2054
+ let N = z.value;
2055
+ return C === "year" && (N = this.numberFormatter.format(e.year)), this.createSegment(C, N);
2056
+ }), i = new he(o), n = i.year, l = i.month, s = i.day;
2057
+ n.setLimits(e), l.setLimits(e), t && (n.setValueFromDate(e), l.setValueFromDate(e)), s.setLimits(e, l.value, n.value), t && s.setValueFromDate(e);
2058
+ const c = i.hour, m = i.minute, u = i.second, h = i.millisecond, p = i.dayPeriod;
2059
+ if (p && p.setLocalizedLimits(this.dateFormatter), !c) return i;
2060
+ const v = !!p;
2061
+ if (c.setLimits(v), t) {
2062
+ if (c.setValueFromDate(e, v), v && i.dayPeriod.setValueFromDate(e), !m || (m.setValueFromDate(e), !u) || (u.setValueFromDate(e), !h)) return i;
2063
+ h.setValueFromDate(e);
2064
+ }
2065
+ return i;
2066
+ }
2067
+ createSegment(e, t) {
2068
+ if (e === d.Literal) return new Vr(t);
2069
+ const a = this.displayNameOfType(e);
2070
+ switch (e) {
2071
+ case d.Year:
2072
+ return new yt(t, a);
2073
+ case d.Month:
2074
+ return new Pr(t, a);
2075
+ case d.Day:
2076
+ return new Tr(t, a);
2077
+ case d.Hour:
2078
+ return new Fr(t, a);
2079
+ case d.Minute:
2080
+ return new Lr(t, a);
2081
+ case d.Second:
2082
+ return new Er(t, a);
2083
+ case d.Millisecond:
2084
+ return new qr(t, a);
2085
+ case d.DayPeriod:
2086
+ return new Ir(t, a);
2087
+ }
2088
+ }
2089
+ displayNameOfType(e) {
2090
+ const t = e === "fractionalSecond" ? "millisecond" : this.dateTimeFieldDisplayNames.of(e);
2091
+ return t ? t.charAt(0).toUpperCase() + t.slice(1) : "";
2092
+ }
2093
+ }
2094
+ const Ar = '@charset "UTF-8";:host{font-family:var(--luzmo-font-family);--date-time-picker-border-radius: var( --luzmo-date-time-picker-border-radius, var(--luzmo-border-radius) );--date-time-picker-border-radius-quiet: var( --luzmo-date-time-picker-border-radius-quiet, 0 );--date-time-picker-border-width: var(--luzmo-border-width);--date-time-picker-button-border-color: var( --highcontrast-datepicker-pickerbutton-border-color, var( --luzmo-date-time-picker-pickerbutton-border-color, var(--luzmo-border-color) ) );--date-time-picker-button-border-color-focus: var( --highcontrast-datepicker-pickerbutton-border-color, var( --luzmo-date-time-picker-pickerbutton-border-color-focus, var(--luzmo-primary) ) );--date-time-picker-button-border-color-invalid: var( --highcontrast-datepicker-pickerbutton-border-color, var( --luzmo-date-time-picker-pickerbutton-border-color-invalid, var(--luzmo-negative-color) ) );--date-time-picker-button-width: calc( var(--date-time-picker-edge-to-disclosure-icon) * 2 + var(--date-time-picker-icon-size) );--date-time-picker-quiet-button-offset: var( --luzmo-date-time-picker-quiet-button-offset, var(--date-time-picker-text-to-visual) );--date-time-picker-icon-to-text: var(--date-time-picker-edge-to-text);--date-time-picker-button-width-quiet: calc( var(--date-time-picker-button-width) - var( --date-time-picker-quiet-button-offset ) );--date-time-picker-focus-ring-gap: var( --luzmo-date-time-picker-focus-ring-gap, var(--luzmo-indicator-gap) );--date-time-picker-focus-thickness: var( --luzmo-date-time-picker-focus-thickness, var(--luzmo-indicator-width) );--date-time-picker-focus-animation: var( --luzmo-date-time-picker-focus-animation, var(--luzmo-animation-duration) );--date-time-picker-focus-ring-width: var( --luzmo-date-time-picker-focus-ring-width, var(--luzmo-border-width) );--date-time-picker-focus-ring-color: var( --highcontrast-datepicker-focus-ring-color, var(--luzmo-date-time-picker-focus-ring-color, var(--luzmo-indicator-color)) );--date-time-picker-focus-line-gap: var( --luzmo-date-time-picker-focus-line-gap, var(--luzmo-spacing-2) );--date-time-picker-invalid-quiet-color: var( --luzmo-date-time-picker-invalid-quiet-color, var(--luzmo-negative-color) );--date-time-picker-quiet-border-color-hover: var( --luzmo-date-time-picker-quiet-border-color-hover, var(--luzmo-border-color-hover) );--date-time-picker-border-color-disabled: var( --luzmo-date-time-picker-border-color-disabled, var(--luzmo-border-color-disabled) );--date-time-picker-dash-font-size: var( --luzmo-date-time-picker-dash-font-size, var(--date-time-picker-dash-font-size) );--date-time-picker-dash-color: var( --highcontrast-datepicker-dash-color, var(--luzmo-date-time-picker-dash-color, var(--luzmo-font-color)) );--date-time-picker-range-dash-padding-top: var( --luzmo-date-time-picker-range-dash-padding-top, 0 );--date-time-picker-range-dash-margin-inline-start: var( --luzmo-date-time-picker-range-dash-margin-left, calc(var(--date-time-picker-dash-font-size) * -.5) );--date-time-picker-range-input-width-first: var( --luzmo-date-time-picker-range-input-width-first, calc( var(--date-time-picker-initial-width) - var( --date-time-picker-generic-padding ) * 2 ) );--date-time-picker-input-width-base: calc( var(--date-time-picker-range-input-width-first) + var(--date-time-picker-icon-size) );--date-time-picker-input-width: var( --luzmo-date-time-picker-input-width, calc( var(--date-time-picker-input-width-base) + var(--date-time-picker-initial-height) ) );--date-time-picker-range-input-width-quiet-first: var( --luzmo-date-time-picker-range-input-width-quiet-first, calc( var(--date-time-picker-width-quiet-first) + var(--date-time-picker-width-quiet-second) ) );--date-time-picker-input-width-quiet: var( --luzmo-date-time-picker-input-width-quiet, calc( var(--date-time-picker-range-input-width-quiet-first) + var(--date-time-picker-icon-size) + var(--date-time-picker-initial-height) ) );--date-time-picker-datetime-input-width-first: var( --luzmo-date-time-picker-datetime-input-width-first, calc( var(--date-time-picker-input-width-base) + var(--date-time-picker-datetime-width-first) ) );--date-time-picker-datetime-input-width: var( --luzmo-date-time-picker-datetime-input-width, calc( var(--date-time-picker-datetime-input-width-first) + var(--date-time-picker-icon-size) + var(--date-time-picker-initial-height) ) );--date-time-picker-datetime-quiet-input-width-first: var( --luzmo-date-time-picker-datetime-quiet-input-width-first, calc( var(--date-time-picker-input-width-base) + var(--date-time-picker-input-datetime-width) ) );--date-time-picker-datetime-quiet-input-width: var( --luzmo-date-time-picker-datetime-quiet-input-width, calc( var(--date-time-picker-datetime-quiet-input-width-first) + var(--date-time-picker-icon-size) + var(--date-time-picker-initial-height) ) );--date-time-picker-padding-inline-end: var( --luzmo-date-time-picker-padding-inline, calc( var(--date-time-picker-button-width) + var(--date-time-picker-edge-to-text) - var( --date-time-picker-border-width ) * 2 ) );--date-time-picker-padding-inline-end-quiet: var( --luzmo-date-time-picker-padding-inline-quiet, calc( var(--date-time-picker-button-width) + var(--date-time-picker-edge-to-text) - var( --date-time-picker-quiet-button-offset ) ) );--date-time-picker-padding-inline-end-invalid-quiet: var( --luzmo-date-time-picker-padding-inline-end-invalid-quiet, calc( var(--date-time-picker-button-width-quiet) + var(--date-time-picker-icon-size) + var(--date-time-picker-icon-to-text) ) );min-inline-size:var(--luzmo-date-time-picker-min-width, var(--date-time-picker-min-width));border-radius:var(--date-time-picker-border-radius);flex-flow:row;display:inline-flex;position:relative}:host([disabled]) luzmo-picker-button{cursor:default}:host([disabled]){--luzmo-date-time-picker-dash-color: var( --luzmo-date-time-picker-dash-color-disabled, var(--disabled-content-color) );--luzmo-text-field-border-color-disabled: transparent}:host([invalid]),:host([invalid]) #text-field .icon{--luzmo-text-field-icon-spacing-inline-end-invalid: calc( var(--date-time-picker-button-width) + var(--date-time-picker-invalid-icon-to-button) );--luzmo-text-field-icon-spacing-inline-end-quiet-invalid: calc( var(--date-time-picker-button-width-quiet) + var(--date-time-picker-invalid-icon-to-button-quiet) )}:host(:not([quiet])){inline-size:var(--luzmo-date-time-picker-width, var(--date-time-picker-width))}:host([quiet]){inline-size:var(--luzmo-date-time-picker-width-quiet, var(--date-time-picker-width-quiet, var(--date-time-picker-width)))}:host(:not([quiet],[disabled])){--luzmo-picker-button-border-color: var( --date-time-picker-button-border-color )}:host([focused]),:host([focused]:not([quiet],[disabled])){--luzmo-picker-button-border-color: var( --date-time-picker-button-border-color-focus )}:host([invalid]:not([quiet],[disabled])){--luzmo-picker-button-border-color: var( --date-time-picker-button-border-color-invalid )}.input{inline-size:100%;flex:1;padding-inline-end:var(--date-time-picker-padding-inline-end);border-color:var(--luzmo-date-time-picker-border-color, var(--datepicker-border-color))}:host .input:read-only{border-color:var(--luzmo-date-time-picker-border-color, var(--datepicker-border-color))}.input.luzmo-DatePicker-startField{border-inline-end:0;border-start-end-radius:0;border-end-end-radius:0;padding-inline-end:var(--luzmo-date-time-picker-generic-padding, var(--date-time-picker-generic-padding))}.input.luzmo-DatePicker-endField{border-inline-start:0;border-start-start-radius:0;border-end-start-radius:0;padding-inline-start:var(--luzmo-date-time-picker-generic-padding, var(--date-time-picker-generic-padding))}luzmo-picker-button{cursor:pointer;position:absolute;inset-inline-end:0}.luzmo-DatePicker-rangeDash{color:var(--date-time-picker-dash-color);line-height:var(--luzmo-date-time-picker-dash-line-height, var(--date-time-picker-dash-line-height));flex:initial;inline-size:0;z-index:1;padding-block-start:var(--date-time-picker-range-dash-padding-top)}.luzmo-DatePicker-rangeDash:before{content:"–";margin-block:0;margin-inline:var(--date-time-picker-range-dash-margin-inline-start);text-align:center;vertical-align:middle;inline-size:var(--date-time-picker-dash-font-size);display:inline-block;overflow:hidden}:host([quiet]){--luzmo-date-time-picker-border-radius: var( --date-time-picker-border-radius-quiet );--luzmo-date-time-picker-padding-inline: var( --date-time-picker-padding-inline-end-quiet );--luzmo-picker-button-border-color-disabled: var( --date-time-picker-border-color-disabled );--luzmo-picker-button-background-color-hover-disabled: var( --date-time-picker-border-color-disabled )}:host([quiet][disabled]){--luzmo-text-field-border-color-disabled: var( --date-time-picker-border-color-disabled )}:host([quiet][invalid]) .input:not(.luzmo-DatePicker-startField){padding-inline-end:var(--date-time-picker-padding-inline-end-invalid-quiet)}@media (hover: hover){:host(:hover):not([focused],[disabled],[invalid]){--luzmo-picker-button-border-color: var( --date-time-picker-quiet-border-color-hover )}}:host([quiet][invalid]){--luzmo-picker-button-border-color: var( --date-time-picker-invalid-quiet-color )}:host([quiet]) luzmo-picker-button{inline-size:auto;inset-inline-end:calc(var(--date-time-picker-quiet-button-offset) * -1)}:host([quiet]) luzmo-picker-button:not(.is-open){--luzmo-picker-button-border-color-disabled: transparent}:host([quiet]) luzmo-picker-button:not(:disabled,.is-open){--luzmo-picker-button-background-color: transparent}.luzmo-DatePicker--range{--luzmo-date-time-picker-border-radius: var(--date-time-picker-border-radius)}.luzmo-DatePicker--range:after{pointer-events:none;content:"";margin:calc(var(--date-time-picker-focus-ring-gap) * -1);border-radius:calc(var(--date-time-picker-border-radius) + var(--date-time-picker-focus-ring-gap));transition:box-shadow var(--date-time-picker-focus-animation) ease-in-out,border-color var(--date-time-picker-focus-animation) ease-in-out;border-color:#0000;position:absolute;top:0;right:0;bottom:0;left:0}:host([focused]) .luzmo-DatePicker--range:not(.luzmo-DatePicker--quiet):after{box-shadow:0 0 0 var(--date-time-picker-focus-ring-width) var(--date-time-picker-focus-ring-color)}:host([focused]) .luzmo-DatePicker--range:not(.luzmo-DatePicker--quiet) #text-field:after{display:none}:host([quiet]) .luzmo-DatePicker--range{--luzmo-date-time-picker-border-radius: var( --date-time-picker-border-radius-quiet )}:host([quiet][focused]) .luzmo-DatePicker--range:after{box-shadow:none;border-block-end:var(--date-time-picker-focus-thickness) solid var(--date-time-picker-focus-ring-color);border-radius:0;margin:0;inset-block-end:calc(var(--date-time-picker-focus-line-gap) * -1)}:host([quiet]) .luzmo-DatePicker--range #text-field{min-inline-size:0;inline-size:var(--date-time-picker-input-width-quiet)}:host([quiet]) .luzmo-DatePicker--range #text-field:first-of-type{inline-size:var(--date-time-picker-range-input-width-quiet-first)}.luzmo-DatePicker--range.luzmo-DatePicker--datetimeRange #text-field{inline-size:var(--date-time-picker-datetime-input-width);min-inline-size:0}.luzmo-DatePicker--range.luzmo-DatePicker--datetimeRange #text-field:first-of-type{inline-size:var(--date-time-picker-datetime-input-width-first)}:host([quiet]) .luzmo-DatePicker--range.luzmo-DatePicker--datetimeRange #text-field{inline-size:var(--date-time-picker-datetime-quiet-input-width)}:host([quiet]) .luzmo-DatePicker--range.luzmo-DatePicker--datetimeRange #text-field:first-of-type{inline-size:var(--date-time-picker-datetime-quiet-input-width-first)}.luzmo-DatePicker--range #text-field{flex:initial;min-inline-size:0;inline-size:var(--date-time-picker-input-width)}.luzmo-DatePicker--range #text-field:first-of-type{inline-size:var(--date-time-picker-range-input-width-first)}@media (forced-colors: active){:host{--highcontrast-datepicker-dash-color: CanvasText;--highcontrast-datepicker-focus-ring-color: Highlight;--highcontrast-datepicker-pickerbutton-border-color: Highlight}:host([disabled]){--highcontrast-datepicker-dash-color: GrayText}:host([quiet][invalid]){--highcontrast-datepicker-pickerbutton-border-color: Highlight}}:host{--date-time-picker-width: auto;--date-time-picker-initial-height: var(--system-date-picker-initial-height);--date-time-picker-font-color-default: var(--luzmo-font-color);--datepicker-border-color: var(--luzmo-border-color);--date-time-picker-button-indicator-color: var(--luzmo-indicator-color);--text-field-focus-indicator-color: var(--luzmo-background-color-highlight);--date-time-picker-initial-width: 120px;--date-time-picker-min-width: 160px;--date-time-picker-calendar-padding: var(--luzmo-spacing-4);--date-time-picker-icon-size: 18px;--date-time-picker-dash-font-size: var(--luzmo-font-size);--date-time-picker-text-to-visual: var(--luzmo-spacing-3);--date-time-picker-edge-to-disclosure-icon: var(--luzmo-spacing-3);--date-time-picker-edge-to-text: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--date-time-picker-icon-to-text: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--date-time-picker-invalid-icon-to-button: var(--luzmo-spacing-3);--date-time-picker-generic-padding: var(--luzmo-spacing-4)}:host([size=s]){--date-time-picker-min-width: 140px;--date-time-picker-calendar-padding: var(--luzmo-spacing-3);--date-time-picker-icon-size: 16px;--date-time-picker-dash-font-size: var(--luzmo-font-size-s);--date-time-picker-text-to-visual: calc( var(--luzmo-spacing-2) + var(--luzmo-spacing-1) );--date-time-picker-edge-to-disclosure-icon: calc( var(--luzmo-spacing-2) + var(--luzmo-spacing-1) );--date-time-picker-edge-to-text: var(--luzmo-spacing-3);--date-time-picker-invalid-icon-to-button: calc( var(--luzmo-spacing-2) + var(--luzmo-spacing-1) );--date-time-picker-icon-to-text: var(--luzmo-spacing-3)}:host([invalid][size=s]){--text-field-icon-spacing-block-invalid: calc( var(--luzmo-spacing-2) + var(--luzmo-spacing-1) )}:host([size=m]){--date-time-picker-min-width: 160px;--date-time-picker-calendar-padding: var(--luzmo-spacing-4);--date-time-picker-icon-size: 18px;--date-time-picker-dash-font-size: var(--luzmo-font-size-m);--date-time-picker-text-to-visual: var(--luzmo-spacing-3);--date-time-picker-edge-to-disclosure-icon: var(--luzmo-spacing-3);--date-time-picker-edge-to-text: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--date-time-picker-invalid-icon-to-button: var(--luzmo-spacing-3);--date-time-picker-icon-to-text: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) )}:host([size=l]){--date-time-picker-min-width: 180px;--date-time-picker-calendar-padding: var(--luzmo-spacing-5);--date-time-picker-icon-size: 20px;--date-time-picker-dash-font-size: var(--luzmo-font-size-l);--date-time-picker-text-to-visual: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--date-time-picker-edge-to-disclosure-icon: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--date-time-picker-edge-to-text: var(--luzmo-spacing-4);--date-time-picker-invalid-icon-to-button: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--date-time-picker-icon-to-text: var(--luzmo-spacing-4)}:host([size=xl]){--date-time-picker-min-width: 200px;--date-time-picker-calendar-padding: calc( var(--luzmo-spacing-5) + var(--luzmo-spacing-1) );--date-time-picker-icon-size: 22px;--date-time-picker-dash-font-size: var(--luzmo-font-size-xl);--date-time-picker-text-to-visual: var(--luzmo-spacing-4);--date-time-picker-edge-to-disclosure-icon: var(--luzmo-spacing-4);--date-time-picker-edge-to-text: calc( var(--luzmo-spacing-4) + var(--luzmo-spacing-1) );--date-time-picker-invalid-icon-to-button: var(--luzmo-spacing-4);--date-time-picker-icon-to-text: calc( var(--luzmo-spacing-4) + var(--luzmo-spacing-1) )}:host{--status-icon-size: var( --luzmo-text-field-icon-size-invalid, var(--text-field-icon-size-invalid) );--picker-button-size: var( --luzmo-text-field-height, var(--text-field-height) );--input-spacing: var( --luzmo-text-field-spacing-inline, var(--text-field-spacing-inline) );--input-border-width: var( --luzmo-text-field-border-width, var(--luzmo-border-width) );--text-to-icon: var( --luzmo-text-field-icon-spacing-inline-start-invalid, var(--text-field-icon-spacing-inline-start-invalid) );--date-time-picker-input-width: var(--date-time-picker-width);flex-wrap:wrap}:host #text-field{display:inline-block}:host #text-field .input,:host([quiet]) #text-field .input,:host([valid]) #text-field .input,:host([invalid]) #text-field .input{inline-size:100%}:host #text-field .input,:host([quiet]) #text-field .input{padding-inline-end:calc(var(--picker-button-size) + var(--input-spacing) - var(--input-border-width))}:host([valid]) #text-field .input,:host([invalid]) #text-field .input{inline-size:100%;padding-inline-end:calc(var(--status-icon-size) + var(--picker-button-size) + var(--input-spacing) - var(--input-border-width) + var(--text-to-icon))}@media (hover: hover){:host([invalid]) #text-field:hover .input,:host([focused][invalid]) .input:hover,:host([focused][invalid]) #text-field:hover .input{border-color:var(--highcontrast-text-field-border-color-invalid-default, var(--luzmo-text-field-border-color-invalid-default, var(--luzmo-negative-color-hover)))}}luzmo-picker-button:focus-visible{outline:none}luzmo-popover{overflow-y:auto}luzmo-popover .popover-content{padding:var(--luzmo-date-time-picker-calendar-padding, var(--date-time-picker-calendar-padding))}.input-content{display:flex;align-items:center;height:100%;overflow:auto hidden;scrollbar-width:none;line-height:normal}.input-content::-webkit-scrollbar{display:none;width:0;height:0}.literal-segment,.editable-segment{display:inline-block;color:var(--luzmo-date-time-picker-font-color-default, var(--date-time-picker-font-color-default))}.editable-segment{padding:0 .15em;font-variant-numeric:tabular-nums;text-align:end;white-space:nowrap;caret-color:transparent;outline:none}[dir=ltr] .editable-segment{text-align:start}.literal-segment{white-space:pre;user-select:none;-webkit-user-select:none}.is-placeholder,.is-placeholder+.literal-segment{color:var(--luzmo-font-color-disabled)}.editable-segment:focus-visible{color:var(--white);background-color:var(--highcontrast-text-field-focus-indicator-color, var(--luzmo-text-field-focus-indicator-color, var(--text-field-focus-indicator-color)))}.editable-segment::selection{background-color:transparent}';
2095
+ var Br = Object.defineProperty, Zr = Object.getOwnPropertyDescriptor, f = (r, e, t, a) => {
2096
+ for (var o = a > 1 ? void 0 : a ? Zr(e, t) : e, i = r.length - 1, n; i >= 0; i--)
2097
+ (n = r[i]) && (o = (a ? n(e, t, o) : n(o)) || o);
2098
+ return a && o && Br(e, t, o), o;
2099
+ };
2100
+ class b extends Vt(
2101
+ de(Ct, {
2102
+ validSizes: Object.values(Re)
2103
+ })
2104
+ ) {
2105
+ constructor() {
2106
+ super(), this._precision = y.Minute, this.isUserSetPrecision = !1, this.invalid = !1, this.readonly = !1, this.quiet = !1, this.placement = "bottom", this.language = "en", this.labels = {
2107
+ previous: "Previous",
2108
+ next: "Next",
2109
+ today: "Today",
2110
+ selected: "Selected",
2111
+ empty: "Empty",
2112
+ calendar: "Calendar"
2113
+ }, this.focused = !1, this.segments = new he([]), this.isCalendarOpen = !1, this._timeZone = this.timeZone ?? R(), this.cachedLocalTime = Ge(this._timeZone), this.setNumberParser(), this.setDateFormatter(), this.setAriaDateFormatter(), this.addEventListener(
2114
+ "focusin",
2115
+ () => this.previousCommitedValue = this._value
2116
+ ), this.addEventListener("focusout", () => this.commitValue());
2117
+ }
2118
+ /**
2119
+ * The styles of the calendar
2120
+ * @internal
2121
+ */
2122
+ static get styles() {
2123
+ return [se(Ar), se(It)];
2124
+ }
2125
+ get precision() {
2126
+ return this._precision;
2127
+ }
2128
+ set precision(e) {
2129
+ this.isUserSetPrecision = !0;
2130
+ const t = this._precision;
2131
+ e !== t && (this._precision = e, this.requestUpdate("precision", t));
2132
+ }
2133
+ /**
2134
+ * The language used to format the dates and weekdays.
2135
+ * @internal
2136
+ */
2137
+ get _language() {
2138
+ try {
2139
+ return this.language ? new Intl.Locale(this.language).language : "en";
2140
+ } catch {
2141
+ return "en";
2142
+ }
2143
+ }
2144
+ /**
2145
+ * The focus element of the component
2146
+ * @internal
2147
+ */
2148
+ get focusElement() {
2149
+ return this.firstEditableSegment;
2150
+ }
2151
+ /**
2152
+ * The current date of the component
2153
+ * @internal
2154
+ */
2155
+ get currentDate() {
2156
+ return this._value ? A(this._value, this._timeZone) : this.cachedLocalTime;
2157
+ }
2158
+ /**
2159
+ * @return Whether the component's precision includes time segments (hour, minute, second, millisecond)
2160
+ * @internal
2161
+ */
2162
+ get includesTime() {
2163
+ return [
2164
+ y.Hour,
2165
+ y.Minute,
2166
+ y.Second,
2167
+ y.Millisecond
2168
+ ].includes(this.precision);
2169
+ }
2170
+ /**
2171
+ * Resets the component's value and segments
2172
+ */
2173
+ clear() {
2174
+ this._value = void 0, this.setSegments();
2175
+ }
2176
+ willUpdate(e) {
2177
+ const t = e.has("value"), a = e.has("timeZone"), o = e.has("min"), i = e.has("max"), n = e.has("language"), l = e.has("dateFormat"), s = e.has("dateSeparator"), c = e.has("precision"), m = e.has("segments"), u = e.has("disabled");
2178
+ if (n && this.setNumberParser(), (n || c) && (this.setDateFormatter(), this.setAriaDateFormatter()), t || o || i || a) {
2179
+ this._value = this.value ? fe(new Date(this.value).toISOString(), "UTC") : void 0, this._min = this.min ? fe(new Date(this.min).toISOString(), "UTC") : void 0, this._max = this.max ? fe(new Date(this.max).toISOString(), "UTC") : void 0;
2180
+ const p = this.mostSpecificDateValue;
2181
+ p && (this.convertDatePropsToMatch(p), this.checkDatePropsCompliance(o || i), this.updateDateProps(), this.updateDefaultPrecision());
2182
+ }
2183
+ (t || n || c || l || a || s) && this.setSegments(), m && this.setValueFromSegments(), u && this.isCalendarOpen && (this.isCalendarOpen = !1);
2184
+ const h = this._value && this.labels.selected + ": " + this.ariaDateFormatter.format(zt(this._value));
2185
+ this.setAttribute("aria-label", h ?? this.labels.empty);
2186
+ }
2187
+ /**
2188
+ * Computes the component's most precise date property (min, max or value) or undefined if none is defined.
2189
+ * The order of precedence is: ZonedDateTime, CalendarDateTime, CalendarDate.
2190
+ * @internal
2191
+ */
2192
+ get mostSpecificDateValue() {
2193
+ const e = [this._value, this._min, this._max].filter(
2194
+ (o) => o !== void 0
2195
+ );
2196
+ if (e.length === 0) return;
2197
+ const t = e.filter((o) => K(o));
2198
+ if (t.length > 0) return t[0];
2199
+ const a = e.filter((o) => xe(o));
2200
+ return a.length > 0 ? a[0] : e.find((o) => ne(o));
2201
+ }
2202
+ /**
2203
+ * Converts the DateTimePicker's date properties (min, max and value) to match the provided date's type.
2204
+ *
2205
+ * @param dateValue - The date value to be used as a reference for the conversion
2206
+ */
2207
+ convertDatePropsToMatch(e) {
2208
+ if (K(e)) {
2209
+ this._timeZone = this.timeZone ?? e.timeZone, this._value = this._value && A(this._value, this._timeZone), this._min = this._min && A(this._min, this._timeZone), this._max = this._max && A(this._max, this._timeZone);
2210
+ return;
2211
+ }
2212
+ if (this._timeZone = this.timeZone ?? R(), xe(e)) {
2213
+ this._value = this._value && $(this._value), this._min = this._min && $(this._min), this._max = this._max && $(this._max);
2214
+ return;
2215
+ }
2216
+ this._value = this._value && L(this._value), this._min = this._min && L(this._min), this._max = this._max && L(this._max);
2217
+ }
2218
+ /**
2219
+ * Validates the component's date properties (min, max and value) compliance with one another.
2220
+ * If the [min, max] constraint interval is invalid, both properties are reset.
2221
+ * If the value is not within the [min, max] (valid) interval, it is reset.
2222
+ *
2223
+ * @param checkInterval - Whether to check the [min, max] interval
2224
+ */
2225
+ checkDatePropsCompliance(e) {
2226
+ e && this._min && this._max && (this._min.compare(this._max) < 0 || (console.warn(
2227
+ this,
2228
+ `<${this.localName}> expects the 'min' to be less than 'max'. Please ensure that 'min' property's date is earlier than 'max' property's date.`
2229
+ ), this._min = void 0, this._max = void 0)), this.isNonCompliantValue() && (console.warn(
2230
+ this,
2231
+ `<${this.localName}> expects the preselected value to comply with the min and max constraints. Please ensure that 'value' property's date is in between the dates for the 'min' and 'max' properties.`
2232
+ ), this._value = void 0), !this._min && !this._max && !this._value && (this._timeZone = R());
2233
+ }
2234
+ isNonCompliantValue() {
2235
+ return this._value === void 0 ? !1 : !!(this._min && this._value.compare(this._min) < 0 || this._max && this._value.compare(this._max) > 0);
2236
+ }
2237
+ /**
2238
+ * Update the component's date properties' types to include the provided precision.
2239
+ */
2240
+ updateDateProps() {
2241
+ const e = this.mostSpecificDateValue;
2242
+ !e || !this.isUserSetPrecision || this.includesTime && ne(e) && this.convertDatePropsToMatch($(e));
2243
+ }
2244
+ /**
2245
+ * Changes the component's default precision according to the most specific date property (min, max or value).
2246
+ */
2247
+ updateDefaultPrecision() {
2248
+ if (this.isUserSetPrecision) return;
2249
+ const e = this.mostSpecificDateValue;
2250
+ e && (this._precision = ne(e) ? y.Day : y.Minute);
2251
+ }
2252
+ render() {
2253
+ return k`
2254
+ <div id="text-field">
2255
+ ${this.renderStateIcons()} ${this.renderInputContent()}
2256
+ </div>
2257
+ ${this.renderHelpText(this.invalid)}${this.renderPicker()}
2258
+ `;
2259
+ }
2260
+ renderStateIcons() {
2261
+ return this.invalid ? k`
2262
+ <luzmo-icon
2263
+ .icon=${$t}
2264
+ .size=${this.size}
2265
+ id="invalid"
2266
+ class="icon"
2267
+ ></luzmo-icon>
2268
+ ` : qe;
2269
+ }
2270
+ renderPicker() {
2271
+ if (this.readonly) return qe;
2272
+ const e = () => this.isCalendarOpen = !1, t = () => this.isCalendarOpen = !0;
2273
+ return k`
2274
+ <luzmo-picker-button
2275
+ ?open=${this.isCalendarOpen}
2276
+ ?quiet=${this.quiet}
2277
+ ?invalid=${this.invalid}
2278
+ ?disabled=${this.disabled}
2279
+ .size=${this.size}
2280
+ @click=${t}
2281
+ label=${this.labels.calendar}
2282
+ >
2283
+ <slot name="calendar-icon" slot="icon">
2284
+ <luzmo-icon
2285
+ .icon=${_t}
2286
+ .size=${this.size}
2287
+ block
2288
+ ></luzmo-icon>
2289
+ </slot>
2290
+ </luzmo-picker-button>
2291
+
2292
+ <luzmo-overlay
2293
+ .triggerElement=${this.input}
2294
+ type="modal"
2295
+ placement=${this.placement ?? "bottom"}
2296
+ offset="0"
2297
+ ?open=${this.isCalendarOpen}
2298
+ @luzmo-closed=${e}
2299
+ >
2300
+ <luzmo-popover>
2301
+ <div class="popover-content">
2302
+ <luzmo-calendar
2303
+ .value=${this._value ? (
2304
+ // TODO: check if this is the correct way to handle the value with TZ
2305
+ this._value.toString().slice(0, 10)
2306
+ ) : void 0}
2307
+ .min=${this._min ? this._min.toString() : void 0}
2308
+ .max=${this._max ? this._max.toString() : void 0}
2309
+ .labels=${this.labels}
2310
+ .size=${this.size}
2311
+ .language=${this.language}
2312
+ @change=${this.handleChange}
2313
+ ></luzmo-calendar>
2314
+ </div>
2315
+ </luzmo-popover>
2316
+ </luzmo-overlay>
2317
+ `;
2318
+ }
2319
+ handleChange(e) {
2320
+ var t, a, o, i, n, l, s;
2321
+ e.stopPropagation(), this.isCalendarOpen = !1, (t = e.target) != null && t.value && (this.value = (a = e.target) == null ? void 0 : a.value);
2322
+ const c = Q(
2323
+ ((o = e.target) == null ? void 0 : o.value) ?? ""
2324
+ );
2325
+ if (this.includesTime) {
2326
+ const m = ((i = this.segments.hour) == null ? void 0 : i.value) ?? 0, u = ((n = this.segments.minute) == null ? void 0 : n.value) ?? 0, h = ((l = this.segments.second) == null ? void 0 : l.value) ?? 0, p = ((s = this.segments.millisecond) == null ? void 0 : s.value) ?? 0, v = new dr(m, u, h, p), z = this.mostSpecificDateValue;
2327
+ this._value = $(c, v), z && K(z) && (this._value = A(this._value, this._timeZone));
2328
+ } else
2329
+ this._value = c;
2330
+ this.commitValue();
2331
+ }
2332
+ renderInputContent() {
2333
+ return k`
2334
+ <div class="input">
2335
+ <span
2336
+ class="input-content"
2337
+ @focusin=${() => this.focused = !this.readonly}
2338
+ @focusout=${() => this.focused = !1}
2339
+ @keydown=${this.handleKeydown}
2340
+ @input=${this.handleInput}
2341
+ >
2342
+ ${this.renderSegments()}
2343
+ </span>
2344
+ </div>
2345
+ `;
2346
+ }
2347
+ renderSegments() {
2348
+ return this.segments.all.map(
2349
+ (e) => Le(
2350
+ e.type === d.Literal,
2351
+ () => this.renderLiteralSegment(e),
2352
+ () => this.renderEditableSegment(e)
2353
+ )
2354
+ );
2355
+ }
2356
+ renderLiteralSegment(e) {
2357
+ return k`
2358
+ <span
2359
+ class="literal-segment"
2360
+ data-test-id=${e.type}
2361
+ aria-hidden="true"
2362
+ >${e.formatted}</span>
2363
+ `;
2364
+ }
2365
+ renderEditableSegment(e) {
2366
+ const t = !this.disabled && !this.readonly, a = e.value === void 0, o = e.type === d.DayPeriod ? "text" : "numeric", i = {
2367
+ "editable-segment": !0,
2368
+ "is-placeholder": a
2369
+ }, n = e.type !== d.Year && String(e.maxValue).length > 0, l = {
2370
+ minWidth: n ? `${n}ch` : void 0
2371
+ };
2372
+ return k`
2373
+ <div
2374
+ role="spinbutton"
2375
+ aria-valuenow=${H(e.value)}
2376
+ aria-valuemin=${e.minValue}
2377
+ aria-valuemax=${e.maxValue}
2378
+ aria-label=${e.label}
2379
+ aria-valuetext=${H(
2380
+ e.value === void 0 ? this.labels.empty : e.formatted
2381
+ )}
2382
+ contenteditable=${H(t ? !0 : void 0)}
2383
+ inputmode=${H(t ? o : void 0)}
2384
+ tabindex=${H(t ? "0" : void 0)}
2385
+ class=${_e(i)}
2386
+ style=${St(l)}
2387
+ data-type=${e.type}
2388
+ .innerText=${this.renderSegmentText(e)}
2389
+ ></div>
2390
+ `;
2391
+ }
2392
+ renderSegmentText(e) {
2393
+ const t = e.value === void 0;
2394
+ return Le(
2395
+ t,
2396
+ () => e.placeholder ?? "",
2397
+ () => e.formatted ?? ""
2398
+ );
2399
+ }
2400
+ handleKeydown(e) {
2401
+ var t;
2402
+ const a = e.target, o = a.dataset.type;
2403
+ if (o)
2404
+ switch (e.code) {
2405
+ case "ArrowUp": {
2406
+ this.incrementValue(o);
2407
+ break;
2408
+ }
2409
+ case "ArrowDown": {
2410
+ this.decrementValue(o);
2411
+ break;
2412
+ }
2413
+ case "ArrowRight": {
2414
+ this.focusSegment(a, "next");
2415
+ break;
2416
+ }
2417
+ case "ArrowLeft": {
2418
+ this.focusSegment(a, "previous");
2419
+ break;
2420
+ }
2421
+ case "Enter":
2422
+ case "Space": {
2423
+ this.commitValue();
2424
+ break;
2425
+ }
2426
+ case "Backspace":
2427
+ case "Delete": {
2428
+ e.preventDefault(), ((t = this.segments.getByType(o)) == null ? void 0 : t.value) === void 0 ? this.focusSegment(a, "previous") : this.clearSegmentContent(o);
2429
+ break;
2430
+ }
2431
+ }
2432
+ }
2433
+ /**
2434
+ * The modifier parameters of the component
2435
+ * @internal
2436
+ */
2437
+ get modifierParams() {
2438
+ return {
2439
+ dateFormatter: this.dateFormatter,
2440
+ segments: this.segments,
2441
+ currentDate: this.currentDate
2442
+ };
2443
+ }
2444
+ incrementValue(e) {
2445
+ const t = new Sr(this.modifierParams);
2446
+ this.segments = t.modify(e), this.dispatchInput();
2447
+ }
2448
+ decrementValue(e) {
2449
+ const t = new _r(this.modifierParams);
2450
+ this.segments = t.modify(e), this.dispatchInput();
2451
+ }
2452
+ /**
2453
+ * Focuses the segment according to the direction, if there is one to focus on
2454
+ *
2455
+ * @param segment - Segment on which the event was triggered (the segment being changed)
2456
+ * @param elementToFocus - Defines which element will be focused: is it the previous one or the next one?
2457
+ */
2458
+ focusSegment(e, t) {
2459
+ let a = !1, o = e;
2460
+ for (; !a; ) {
2461
+ const i = t === "previous" ? o.previousElementSibling : o.nextElementSibling;
2462
+ if (!i)
2463
+ break;
2464
+ i.getAttribute("contenteditable") && (i.focus(), a = !0), o = i;
2465
+ }
2466
+ }
2467
+ /**
2468
+ * Mark the user intent to commit the selected value. If the current value
2469
+ * is different from the previous commited value, dispatch a change event.
2470
+ */
2471
+ commitValue() {
2472
+ if (!(this._value && this.previousCommitedValue && this._value.compare(this.previousCommitedValue) === 0)) {
2473
+ if (this._value === void 0 && this.previousCommitedValue === void 0) {
2474
+ const e = this.segments.editableValues.every(
2475
+ (t) => t === void 0
2476
+ );
2477
+ this.invalid = !e;
2478
+ return;
2479
+ }
2480
+ this.invalid = !!(this._value === void 0 || this.isNonCompliantValue()), this.previousCommitedValue = this._value, this.dispatchChange();
2481
+ }
2482
+ }
2483
+ clearSegmentContent(e) {
2484
+ const t = this.segments.editableValues, a = new $r(this.modifierParams);
2485
+ this.segments = a.modify(e);
2486
+ const o = this.segments.editableValues;
2487
+ Ne(t, o) || this.dispatchInput();
2488
+ }
2489
+ handleInput(e) {
2490
+ e.stopPropagation();
2491
+ const t = e.target.dataset.type, a = this.segments.editableValues, o = new Cr({
2492
+ ...this.modifierParams,
2493
+ eventData: e.data,
2494
+ numberParser: this.numberParser
2495
+ });
2496
+ this.segments = o.modify(t), this.updateSegmentContent(
2497
+ this.segments.getByType(t),
2498
+ e.target
2499
+ );
2500
+ const i = this.segments.editableValues;
2501
+ Ne(a, i) || this.dispatchInput();
2502
+ }
2503
+ /**
2504
+ * Updates the content of the segments by binding it to the `.innerText` property of the element,
2505
+ * instead of using string interpolation. This allows to not show user typed characters, but
2506
+ * only the formatted content of the segment, needed for the 'contenteditable' elements.
2507
+ *
2508
+ * @param segment - Segment on which the event was triggered (the segment being changed)
2509
+ * @param event - Triggered event details
2510
+ */
2511
+ updateSegmentContent(e, t) {
2512
+ t.textContent = e.value === void 0 ? e.placeholder : e.formatted;
2513
+ }
2514
+ createOutputString(e) {
2515
+ return e ? K(e) ? this._value.toAbsoluteString() : new Date(this._value.toString()).toISOString() : "";
2516
+ }
2517
+ dispatchChange() {
2518
+ const e = this.createOutputString(this._value);
2519
+ this.dispatchEvent(
2520
+ new CustomEvent("change", {
2521
+ bubbles: !0,
2522
+ composed: !0,
2523
+ cancelable: !0,
2524
+ detail: {
2525
+ value: e
2526
+ }
2527
+ })
2528
+ );
2529
+ }
2530
+ dispatchInput() {
2531
+ const e = this.createOutputString(this._value);
2532
+ this.dispatchEvent(
2533
+ new CustomEvent("input", {
2534
+ bubbles: !0,
2535
+ composed: !0,
2536
+ cancelable: !0,
2537
+ detail: {
2538
+ value: e
2539
+ }
2540
+ })
2541
+ );
2542
+ }
2543
+ setValueFromSegments() {
2544
+ const e = this.segments.getFormattedDate(this.precision);
2545
+ if (!e) {
2546
+ this._value && this.dispatchChange(), this._value = void 0;
2547
+ return;
2548
+ }
2549
+ this._value === void 0 && this.dispatchChange();
2550
+ const t = this.mostSpecificDateValue;
2551
+ t ? K(t) ? this._value = A(e, this._timeZone) : xe(t) ? this._value = $(e) : this._value = L(e) : this._value = e;
2552
+ }
2553
+ setSegments() {
2554
+ var e, t, a, o;
2555
+ const i = new Or(this.dateFormatter).createSegments(
2556
+ this.currentDate,
2557
+ this._value !== void 0
2558
+ );
2559
+ if (this.dateFormat) {
2560
+ const n = i.all.findIndex(
2561
+ (s) => s.type === d.Month
2562
+ ), l = i.all.findIndex(
2563
+ (s) => s.type === d.Day
2564
+ );
2565
+ if (n !== -1 && l !== -1) {
2566
+ if (this.dateFormat === "mmdd" && n > l) {
2567
+ const s = i.all[n];
2568
+ i.all[n] = i.all[l], i.all[l] = s;
2569
+ } else if (this.dateFormat === "ddmm" && l > n) {
2570
+ const s = i.all[l];
2571
+ i.all[l] = i.all[n], i.all[n] = s;
2572
+ }
2573
+ }
2574
+ }
2575
+ typeof this.dateSeparator == "string" && this.dateSeparator && (((t = (e = i.all) == null ? void 0 : e[1]) == null ? void 0 : t.type) === d.Literal && (i.all[1].formatted = this.dateSeparator), ((o = (a = i.all) == null ? void 0 : a[3]) == null ? void 0 : o.type) === d.Literal && (i.all[3].formatted = this.dateSeparator)), this.segments = i;
2576
+ }
2577
+ setNumberParser() {
2578
+ this.numberParser = new xt(this._language, {
2579
+ maximumFractionDigits: 0
2580
+ });
2581
+ }
2582
+ setDateFormatter() {
2583
+ this.dateFormatter = new $e(this._language, {
2584
+ day: "2-digit",
2585
+ month: "2-digit",
2586
+ year: "numeric",
2587
+ ...this.getTimeOptions("2-digit")
2588
+ });
2589
+ }
2590
+ setAriaDateFormatter() {
2591
+ this.ariaDateFormatter = new $e(this._language, {
2592
+ day: "numeric",
2593
+ month: "long",
2594
+ year: "numeric",
2595
+ ...this.getTimeOptions("numeric")
2596
+ });
2597
+ }
2598
+ getTimeOptions(e) {
2599
+ switch (this.precision) {
2600
+ case y.Millisecond:
2601
+ return {
2602
+ hour: e,
2603
+ minute: e,
2604
+ second: e,
2605
+ fractionalSecondDigits: 3
2606
+ };
2607
+ case y.Second:
2608
+ return {
2609
+ hour: e,
2610
+ minute: e,
2611
+ second: e
2612
+ };
2613
+ case y.Minute:
2614
+ return {
2615
+ hour: e,
2616
+ minute: e
2617
+ };
2618
+ case y.Hour:
2619
+ return {
2620
+ hour: e
2621
+ };
2622
+ default:
2623
+ return {};
2624
+ }
2625
+ }
2626
+ }
2627
+ f([
2628
+ g({ type: String, reflect: !0 })
2629
+ ], b.prototype, "value", 2);
2630
+ f([
2631
+ g({ type: String, reflect: !0 })
2632
+ ], b.prototype, "min", 2);
2633
+ f([
2634
+ g({ type: String, reflect: !0 })
2635
+ ], b.prototype, "max", 2);
2636
+ f([
2637
+ g({ type: String, attribute: "date-format", reflect: !0 })
2638
+ ], b.prototype, "dateFormat", 2);
2639
+ f([
2640
+ g({ type: String, attribute: "date-separator", reflect: !0 })
2641
+ ], b.prototype, "dateSeparator", 2);
2642
+ f([
2643
+ g({ type: String, reflect: !0 })
2644
+ ], b.prototype, "precision", 1);
2645
+ f([
2646
+ g({ type: Boolean, reflect: !0 })
2647
+ ], b.prototype, "invalid", 2);
2648
+ f([
2649
+ g({ type: Boolean, reflect: !0 })
2650
+ ], b.prototype, "readonly", 2);
2651
+ f([
2652
+ g({ type: Boolean, reflect: !0 })
2653
+ ], b.prototype, "quiet", 2);
2654
+ f([
2655
+ g({ type: String, reflect: !0 })
2656
+ ], b.prototype, "placement", 2);
2657
+ f([
2658
+ g({ type: String, attribute: "time-zone", reflect: !0 })
2659
+ ], b.prototype, "timeZone", 2);
2660
+ f([
2661
+ g({ type: String, reflect: !0 })
2662
+ ], b.prototype, "language", 2);
2663
+ f([
2664
+ g({ attribute: !1 })
2665
+ ], b.prototype, "labels", 2);
2666
+ f([
2667
+ g({ type: Boolean, reflect: !0 })
2668
+ ], b.prototype, "focused", 2);
2669
+ f([
2670
+ S()
2671
+ ], b.prototype, "_value", 2);
2672
+ f([
2673
+ S()
2674
+ ], b.prototype, "_min", 2);
2675
+ f([
2676
+ S()
2677
+ ], b.prototype, "_max", 2);
2678
+ f([
2679
+ S()
2680
+ ], b.prototype, "segments", 2);
2681
+ f([
2682
+ S()
2683
+ ], b.prototype, "isCalendarOpen", 2);
2684
+ f([
2685
+ Ye(".editable-segment")
2686
+ ], b.prototype, "firstEditableSegment", 2);
2687
+ f([
2688
+ Ye(".input")
2689
+ ], b.prototype, "input", 2);
2690
+ customElements.get("luzmo-date-time-picker") || customElements.define("luzmo-date-time-picker", b);
2691
+ const Ur = ":host{display:flex;flex-direction:row;gap:var(--luzmo-filter-value-picker-datetime-gap, var(--filter-value-picker-datetime-gap))}:host{--filter-value-picker-datetime-gap: var(--luzmo-spacing-3)}:host([size=s]){--filter-value-picker-datetime-gap: var(--luzmo-spacing-2)}:host([size=m]){--filter-value-picker-datetime-gap: var(--luzmo-spacing-3)}:host([size=l]){--filter-value-picker-datetime-gap: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) )}:host([size=xl]){--filter-value-picker-datetime-gap: var(--luzmo-spacing-4)}";
2692
+ var Nr = Object.defineProperty, ve = (r, e, t, a) => {
2693
+ for (var o = void 0, i = r.length - 1, n; i >= 0; i--)
2694
+ (n = r[i]) && (o = n(e, t, o) || o);
2695
+ return o && Nr(e, t, o), o;
2696
+ };
2697
+ class te extends de(He, {
2698
+ validSizes: Object.values(Re)
2699
+ }) {
2700
+ constructor() {
2701
+ super(...arguments), this.language = "en", this.contentLanguage = "en";
2702
+ }
2703
+ static get styles() {
2704
+ return [Ft(Ur)];
2705
+ }
2706
+ willUpdate(e) {
2707
+ var o, i, n, l, s, c, m, u, h, p, v;
2708
+ const t = e.has("language"), a = e.get("filter");
2709
+ t && this.language !== qt() && ([...Lt].includes(this.language ?? "en") || this.language === "en") && Et(this.language), a && (["last_now", "last_available", "next_now"].includes(
2710
+ (o = this.filter) == null ? void 0 : o.expression
2711
+ ) ? this.filter.parameters[1] = {
2712
+ quantity: ((l = (n = (i = this.filter) == null ? void 0 : i.parameters) == null ? void 0 : n[1]) == null ? void 0 : l.quantity) ?? 1,
2713
+ unit: ((m = (c = (s = this.filter) == null ? void 0 : s.parameters) == null ? void 0 : c[1]) == null ? void 0 : m.unit) ?? 1
2714
+ } : ["last_completed", "next_full", "to_date"].includes(
2715
+ (u = this.filter) == null ? void 0 : u.expression
2716
+ ) ? this.filter.parameters[1] = {
2717
+ unit: ((v = (p = (h = this.filter) == null ? void 0 : h.parameters) == null ? void 0 : p[1]) == null ? void 0 : v.unit) ?? 1
2718
+ } : this.filter.parameters[1] = typeof this.filter.parameters[1] == "string" ? this.filter.parameters[1] : (/* @__PURE__ */ new Date()).toISOString());
2719
+ }
2720
+ _sendChangeEvent() {
2721
+ var e, t;
2722
+ this.filter.parameters = [{ ...(t = (e = this.filter) == null ? void 0 : e.parameters) == null ? void 0 : t[0] }, this._value], this.dispatchEvent(
2723
+ new CustomEvent("filter-value-changed", {
2724
+ bubbles: !0,
2725
+ composed: !0,
2726
+ cancelable: !0,
2727
+ detail: {
2728
+ value: this._value
2729
+ }
2730
+ })
2731
+ );
2732
+ }
2733
+ setDate(e) {
2734
+ var t, a;
2735
+ this._value = e.detail.value, this._value !== ((a = (t = this.filter) == null ? void 0 : t.parameters) == null ? void 0 : a[1]) && this._sendChangeEvent();
2736
+ }
2737
+ setUnit(e) {
2738
+ var a, o, i, n, l, s, c;
2739
+ const t = (a = re.find(
2740
+ (m) => {
2741
+ var u;
2742
+ return m.key === ((u = e == null ? void 0 : e.target) == null ? void 0 : u.value);
2743
+ }
2744
+ )) == null ? void 0 : a.level;
2745
+ ((n = (i = (o = this.filter) == null ? void 0 : o.parameters) == null ? void 0 : i[1]) == null ? void 0 : n.unit) !== t && (this._value = {
2746
+ unit: t ?? 1,
2747
+ quantity: ((c = (s = (l = this.filter) == null ? void 0 : l.parameters) == null ? void 0 : s[1]) == null ? void 0 : c.quantity) ?? 1
2748
+ }, this._sendChangeEvent());
2749
+ }
2750
+ setQuantity(e) {
2751
+ var a, o, i, n, l, s, c;
2752
+ const t = (a = e == null ? void 0 : e.target) == null ? void 0 : a.value;
2753
+ ((n = (i = (o = this.filter) == null ? void 0 : o.parameters) == null ? void 0 : i[1]) == null ? void 0 : n.quantity) !== t && (this._value = {
2754
+ quantity: t,
2755
+ unit: ((c = (s = (l = this.filter) == null ? void 0 : l.parameters) == null ? void 0 : s[1]) == null ? void 0 : c.unit) ?? 1
2756
+ }, this._sendChangeEvent());
2757
+ }
2758
+ renderDatePicker() {
2759
+ var t, a, o, i, n, l, s, c, m, u, h, p, v, z;
2760
+ let e = "second";
2761
+ return ((o = (a = (t = this.filter) == null ? void 0 : t.parameters) == null ? void 0 : a[0]) == null ? void 0 : o.lowestLevel) > 4 && (((l = (n = (i = this.filter) == null ? void 0 : i.parameters) == null ? void 0 : n[0]) == null ? void 0 : l.lowestLevel) === 5 ? e = "day" : ((m = (c = (s = this.filter) == null ? void 0 : s.parameters) == null ? void 0 : c[0]) == null ? void 0 : m.lowestLevel) === 6 ? e = "hour" : ((p = (h = (u = this.filter) == null ? void 0 : u.parameters) == null ? void 0 : h[0]) == null ? void 0 : p.lowestLevel) === 7 ? e = "minute" : e = "second"), G`<luzmo-date-time-picker
2762
+ .size=${this.size}
2763
+ .precision=${e}
2764
+ .timeZone=${this.timeZone}
2765
+ @change=${this.setDate}
2766
+ .value=${(z = (v = this.filter) == null ? void 0 : v.parameters) == null ? void 0 : z[1]}
2767
+ ></luzmo-date-time-picker>`;
2768
+ }
2769
+ renderQuantityField() {
2770
+ var e, t, a;
2771
+ return G`<luzmo-number-field
2772
+ .size=${this.size}
2773
+ .value=${(a = (t = (e = this.filter) == null ? void 0 : e.parameters) == null ? void 0 : t[1]) == null ? void 0 : a.quantity}
2774
+ @input=${this.setQuantity}
2775
+ @change=${this.setQuantity}
2776
+ ></luzmo-number-field>`;
2777
+ }
2778
+ renderUnitPicker() {
2779
+ var a, o, i;
2780
+ const e = re.map((n) => G`<luzmo-menu-item .value=${n.key}>
2781
+ ${n.i18n()}
2782
+ </luzmo-menu-item>`), t = ((a = re.find(
2783
+ (n) => {
2784
+ var l, s, c;
2785
+ return n.level === ((c = (s = (l = this.filter) == null ? void 0 : l.parameters) == null ? void 0 : s[1]) == null ? void 0 : c.unit);
2786
+ }
2787
+ )) == null ? void 0 : a.key) ?? ((i = (o = re) == null ? void 0 : o[0]) == null ? void 0 : i.key);
2788
+ return G`<luzmo-picker
2789
+ .size=${this.size}
2790
+ .value=${t}
2791
+ @change=${this.setUnit}
2792
+ variant="highlight"
2793
+ >${e}</luzmo-picker
2794
+ >`;
2795
+ }
2796
+ render() {
2797
+ var t;
2798
+ const e = (t = this.filter) == null ? void 0 : t.expression;
2799
+ return ["last_now", "last_available", "next_now"].includes(e) ? G`${this.renderQuantityField()}${this.renderUnitPicker()}` : ["last_completed", "next_full"].includes(e) ? this.renderUnitPicker() : this.renderDatePicker();
2800
+ }
2801
+ }
2802
+ ve([
2803
+ ce({ type: String, reflect: !0 })
2804
+ ], te.prototype, "language");
2805
+ ve([
2806
+ ce({ type: String, attribute: "content-language", reflect: !0 })
2807
+ ], te.prototype, "contentLanguage");
2808
+ ve([
2809
+ ce({ type: String, attribute: "time-zone", reflect: !0 })
2810
+ ], te.prototype, "timeZone");
2811
+ ve([
2812
+ ce({ type: Object, reflect: !1 })
2813
+ ], te.prototype, "filter");
2814
+ customElements.get("luzmo-filter-value-picker-datetime") || customElements.define(
2815
+ "luzmo-filter-value-picker-datetime",
2816
+ te
2817
+ );
2818
+ export {
2819
+ te as LuzmoFilterValuePickerDatetime
2820
+ };