@techzyapp/ui-library 1.0.25 → 1.0.28

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 (721) hide show
  1. package/dist/AdminRoot-BTvmassR.js +55 -0
  2. package/dist/AdminRoot-BTvmassR.js.map +1 -0
  3. package/dist/AdminRoot-DM-cZCpN.cjs +2 -0
  4. package/dist/AdminRoot-DM-cZCpN.cjs.map +1 -0
  5. package/dist/{Alert-udX1ybuC.cjs → Alert-CFm6MU0u.cjs} +2 -2
  6. package/dist/{Alert-udX1ybuC.cjs.map → Alert-CFm6MU0u.cjs.map} +1 -1
  7. package/dist/{Alert-DXmzM_rh.js → Alert-v-lelDih.js} +3 -3
  8. package/dist/{Alert-DXmzM_rh.js.map → Alert-v-lelDih.js.map} +1 -1
  9. package/dist/{AuthLayout-CP9qu6Bv.js → AuthLayout-DOFYw_z5.js} +3 -3
  10. package/dist/{AuthLayout-CP9qu6Bv.js.map → AuthLayout-DOFYw_z5.js.map} +1 -1
  11. package/dist/{AuthLayout-BRUxDgzs.cjs → AuthLayout-QAtW2GAT.cjs} +2 -2
  12. package/dist/{AuthLayout-BRUxDgzs.cjs.map → AuthLayout-QAtW2GAT.cjs.map} +1 -1
  13. package/dist/Avatar-DXNPg23a.js +90 -0
  14. package/dist/Avatar-DXNPg23a.js.map +1 -0
  15. package/dist/Avatar-DrV_F7Ex.cjs +2 -0
  16. package/dist/Avatar-DrV_F7Ex.cjs.map +1 -0
  17. package/dist/{AvatarGroup-uW0SD5P4.cjs → AvatarGroup-CHesdo-M.cjs} +2 -2
  18. package/dist/{AvatarGroup-uW0SD5P4.cjs.map → AvatarGroup-CHesdo-M.cjs.map} +1 -1
  19. package/dist/{AvatarGroup-YaNasLMS.js → AvatarGroup-CwlYqDCI.js} +2 -2
  20. package/dist/{AvatarGroup-YaNasLMS.js.map → AvatarGroup-CwlYqDCI.js.map} +1 -1
  21. package/dist/Badge-BmFgusOa.js +50 -0
  22. package/dist/{Badge-DSWigoGC.js.map → Badge-BmFgusOa.js.map} +1 -1
  23. package/dist/Badge-DVbe1rAI.cjs +2 -0
  24. package/dist/{Badge-BQpr2Jee.cjs.map → Badge-DVbe1rAI.cjs.map} +1 -1
  25. package/dist/{Breadcrumbs-CsYTiX2h.cjs → Breadcrumbs-3wHPNa0P.cjs} +2 -2
  26. package/dist/{Breadcrumbs-CsYTiX2h.cjs.map → Breadcrumbs-3wHPNa0P.cjs.map} +1 -1
  27. package/dist/{Breadcrumbs-DQHHeLId.js → Breadcrumbs-Cgd-u3aK.js} +3 -3
  28. package/dist/{Breadcrumbs-DQHHeLId.js.map → Breadcrumbs-Cgd-u3aK.js.map} +1 -1
  29. package/dist/Button-BLW9yV8W.js +72 -0
  30. package/dist/{Button-DBs8xnA5.js.map → Button-BLW9yV8W.js.map} +1 -1
  31. package/dist/Button-KRGjJdMV.cjs +2 -0
  32. package/dist/{Button-CXmDOzPk.cjs.map → Button-KRGjJdMV.cjs.map} +1 -1
  33. package/dist/{Calendar-B2nMXk4C.cjs → Calendar-CoTCOOUu.cjs} +2 -2
  34. package/dist/{Calendar-B2nMXk4C.cjs.map → Calendar-CoTCOOUu.cjs.map} +1 -1
  35. package/dist/{Calendar-CtteUt82.js → Calendar-sLA-xa0B.js} +4 -4
  36. package/dist/{Calendar-CtteUt82.js.map → Calendar-sLA-xa0B.js.map} +1 -1
  37. package/dist/Card-6fiSEC0z.js +121 -0
  38. package/dist/Card-6fiSEC0z.js.map +1 -0
  39. package/dist/Card-zTkvreQu.cjs +2 -0
  40. package/dist/Card-zTkvreQu.cjs.map +1 -0
  41. package/dist/Checkbox-CTp1xFW7.cjs +2 -0
  42. package/dist/{Checkbox-fzJCwe0j.cjs.map → Checkbox-CTp1xFW7.cjs.map} +1 -1
  43. package/dist/Checkbox-DyKBIgVT.js +98 -0
  44. package/dist/{Checkbox-ZYOSBYRt.js.map → Checkbox-DyKBIgVT.js.map} +1 -1
  45. package/dist/{Chip-DdKhcstm.js → Chip-C-5Z5wsC.js} +31 -31
  46. package/dist/{Chip-DdKhcstm.js.map → Chip-C-5Z5wsC.js.map} +1 -1
  47. package/dist/Chip-CqOqfafx.cjs +2 -0
  48. package/dist/{Chip-gUH_7nQc.cjs.map → Chip-CqOqfafx.cjs.map} +1 -1
  49. package/dist/ChoiceCardGroup-BSagRbPI.cjs +2 -0
  50. package/dist/{ChoiceCardGroup-d0VVTUi5.cjs.map → ChoiceCardGroup-BSagRbPI.cjs.map} +1 -1
  51. package/dist/ChoiceCardGroup-CEniY_HJ.js +181 -0
  52. package/dist/{ChoiceCardGroup-DBohUnRj.js.map → ChoiceCardGroup-CEniY_HJ.js.map} +1 -1
  53. package/dist/{CodeBlock-C6tQtbHU.cjs → CodeBlock-DFiHDZXh.cjs} +2 -2
  54. package/dist/{CodeBlock-C6tQtbHU.cjs.map → CodeBlock-DFiHDZXh.cjs.map} +1 -1
  55. package/dist/{CodeBlock-DD_d3-sM.js → CodeBlock-rPaqO7yD.js} +3 -3
  56. package/dist/{CodeBlock-DD_d3-sM.js.map → CodeBlock-rPaqO7yD.js.map} +1 -1
  57. package/dist/ColorPicker-Bqypsy5E.cjs +2 -0
  58. package/dist/ColorPicker-Bqypsy5E.cjs.map +1 -0
  59. package/dist/{ColorPicker-Dw6Qk0iy.js → ColorPicker-DXDAXvlA.js} +36 -27
  60. package/dist/ColorPicker-DXDAXvlA.js.map +1 -0
  61. package/dist/ColorPickerPanel-6lQC1URc.js +322 -0
  62. package/dist/ColorPickerPanel-6lQC1URc.js.map +1 -0
  63. package/dist/ColorPickerPanel-C9ARc_uD.cjs +2 -0
  64. package/dist/ColorPickerPanel-C9ARc_uD.cjs.map +1 -0
  65. package/dist/ColorRamp-B9OWxCOK.cjs +2 -0
  66. package/dist/ColorRamp-B9OWxCOK.cjs.map +1 -0
  67. package/dist/ColorRamp-DQ8wkgvF.js +126 -0
  68. package/dist/ColorRamp-DQ8wkgvF.js.map +1 -0
  69. package/dist/{ConfigProvider-Bszl3Wr3.cjs → ConfigProvider-BElY0HuV.cjs} +2 -2
  70. package/dist/ConfigProvider-BElY0HuV.cjs.map +1 -0
  71. package/dist/{ConfigProvider-DR9YMy9U.js → ConfigProvider-B_RSn9bb.js} +2 -2
  72. package/dist/ConfigProvider-B_RSn9bb.js.map +1 -0
  73. package/dist/CopyButton-B5aicGl3.cjs +2 -0
  74. package/dist/{CopyButton-Ct-8AmmX.cjs.map → CopyButton-B5aicGl3.cjs.map} +1 -1
  75. package/dist/CopyButton-BplPYm8i.js +43 -0
  76. package/dist/{CopyButton-DJ1PSJZU.js.map → CopyButton-BplPYm8i.js.map} +1 -1
  77. package/dist/DashedButton-B7xodc3N.cjs +2 -0
  78. package/dist/{DashedButton-3C4IZuo4.cjs.map → DashedButton-B7xodc3N.cjs.map} +1 -1
  79. package/dist/DashedButton-iM7kzopW.js +59 -0
  80. package/dist/{DashedButton-BXZAyMtw.js.map → DashedButton-iM7kzopW.js.map} +1 -1
  81. package/dist/{DatePicker-BxEydgfu.cjs → DatePicker-Cdl2JYBd.cjs} +2 -2
  82. package/dist/{DatePicker-BxEydgfu.cjs.map → DatePicker-Cdl2JYBd.cjs.map} +1 -1
  83. package/dist/{DatePicker-CJioG5M7.js → DatePicker-U5TJ9FYM.js} +7 -7
  84. package/dist/{DatePicker-CJioG5M7.js.map → DatePicker-U5TJ9FYM.js.map} +1 -1
  85. package/dist/DatePicker.module-BDtTsg8M.cjs +2 -0
  86. package/dist/{DatePicker.module-tE-tGNBd.cjs.map → DatePicker.module-BDtTsg8M.cjs.map} +1 -1
  87. package/dist/DatePicker.module-CMMQyEhG.js +138 -0
  88. package/dist/{DatePicker.module-BZDftL4g.js.map → DatePicker.module-CMMQyEhG.js.map} +1 -1
  89. package/dist/{DateTimePicker-COEj2Z0F.cjs → DateTimePicker-DUFtddxJ.cjs} +2 -2
  90. package/dist/{DateTimePicker-COEj2Z0F.cjs.map → DateTimePicker-DUFtddxJ.cjs.map} +1 -1
  91. package/dist/{DateTimePicker-e2zj2bhS.js → DateTimePicker-laJsZYJX.js} +10 -10
  92. package/dist/{DateTimePicker-e2zj2bhS.js.map → DateTimePicker-laJsZYJX.js.map} +1 -1
  93. package/dist/DescriptionList-BCvOX8fg.cjs +2 -0
  94. package/dist/DescriptionList-BCvOX8fg.cjs.map +1 -0
  95. package/dist/DescriptionList-Y9jF_4L0.js +176 -0
  96. package/dist/DescriptionList-Y9jF_4L0.js.map +1 -0
  97. package/dist/{Dropdown-FfkmluRu.js → Dropdown--1mNTVZJ.js} +2 -2
  98. package/dist/{Dropdown-FfkmluRu.js.map → Dropdown--1mNTVZJ.js.map} +1 -1
  99. package/dist/{Dropdown-Ui7h2TGd.cjs → Dropdown-DNZ9S_zQ.cjs} +2 -2
  100. package/dist/{Dropdown-Ui7h2TGd.cjs.map → Dropdown-DNZ9S_zQ.cjs.map} +1 -1
  101. package/dist/EmptyState-BtwuzX9Z.js +58 -0
  102. package/dist/EmptyState-BtwuzX9Z.js.map +1 -0
  103. package/dist/EmptyState-CO_NRZ6w.cjs +2 -0
  104. package/dist/EmptyState-CO_NRZ6w.cjs.map +1 -0
  105. package/dist/ErrorBoundary-DJ6R1M9k.js +126 -0
  106. package/dist/ErrorBoundary-DJ6R1M9k.js.map +1 -0
  107. package/dist/ErrorBoundary-unvC1vZQ.cjs +2 -0
  108. package/dist/ErrorBoundary-unvC1vZQ.cjs.map +1 -0
  109. package/dist/FileCard-C3a2yDhK.js +149 -0
  110. package/dist/FileCard-C3a2yDhK.js.map +1 -0
  111. package/dist/FileCard-DKjDQRzZ.cjs +2 -0
  112. package/dist/FileCard-DKjDQRzZ.cjs.map +1 -0
  113. package/dist/FileUploader-CuOHWkiG.js +707 -0
  114. package/dist/FileUploader-CuOHWkiG.js.map +1 -0
  115. package/dist/FileUploader-VIOg03pl.cjs +2 -0
  116. package/dist/FileUploader-VIOg03pl.cjs.map +1 -0
  117. package/dist/{Flag-CB4YyPj3.cjs → Flag-aOQncoEZ.cjs} +2 -2
  118. package/dist/{Flag-CB4YyPj3.cjs.map → Flag-aOQncoEZ.cjs.map} +1 -1
  119. package/dist/{Flag-yA1y5XzR.js → Flag-kpUfmrwC.js} +2 -2
  120. package/dist/{Flag-yA1y5XzR.js.map → Flag-kpUfmrwC.js.map} +1 -1
  121. package/dist/FloatingPanel-BIC4WrFa.cjs +2 -0
  122. package/dist/FloatingPanel-BIC4WrFa.cjs.map +1 -0
  123. package/dist/FloatingPanel-CeSOtE_D.js +135 -0
  124. package/dist/FloatingPanel-CeSOtE_D.js.map +1 -0
  125. package/dist/{FullscreenToggle-0lskYnpx.cjs → FullscreenToggle-BSwxQEaG.cjs} +2 -2
  126. package/dist/{FullscreenToggle-0lskYnpx.cjs.map → FullscreenToggle-BSwxQEaG.cjs.map} +1 -1
  127. package/dist/{FullscreenToggle-jSLruiKt.js → FullscreenToggle-CMifmPD3.js} +3 -3
  128. package/dist/{FullscreenToggle-jSLruiKt.js.map → FullscreenToggle-CMifmPD3.js.map} +1 -1
  129. package/dist/IconButton-A2B0bqC-.cjs +2 -0
  130. package/dist/{IconButton-BN-bZxEi.cjs.map → IconButton-A2B0bqC-.cjs.map} +1 -1
  131. package/dist/IconButton-Dq17Fekm.js +68 -0
  132. package/dist/{IconButton-BEGWfcVc.js.map → IconButton-Dq17Fekm.js.map} +1 -1
  133. package/dist/List-9lUjapQ5.cjs +2 -0
  134. package/dist/List-9lUjapQ5.cjs.map +1 -0
  135. package/dist/List-CZwNGxuP.js +107 -0
  136. package/dist/List-CZwNGxuP.js.map +1 -0
  137. package/dist/Loader-CwyoKoWY.js +28 -0
  138. package/dist/{Loader-BZIa8hwv.js.map → Loader-CwyoKoWY.js.map} +1 -1
  139. package/dist/Loader-D9nteBXt.cjs +2 -0
  140. package/dist/{Loader-B5YqzEYy.cjs.map → Loader-D9nteBXt.cjs.map} +1 -1
  141. package/dist/MobileFrame-8FSsYA_w.js +91 -0
  142. package/dist/MobileFrame-8FSsYA_w.js.map +1 -0
  143. package/dist/MobileFrame-Dsfgd_4k.cjs +2 -0
  144. package/dist/MobileFrame-Dsfgd_4k.cjs.map +1 -0
  145. package/dist/Modal-CQDcYS-Y.cjs +2 -0
  146. package/dist/Modal-CQDcYS-Y.cjs.map +1 -0
  147. package/dist/Modal-cz6JIsZn.js +196 -0
  148. package/dist/Modal-cz6JIsZn.js.map +1 -0
  149. package/dist/MultiSelect-BIwE6wb7.cjs +2 -0
  150. package/dist/MultiSelect-BIwE6wb7.cjs.map +1 -0
  151. package/dist/MultiSelect-C6l0LpIs.js +219 -0
  152. package/dist/MultiSelect-C6l0LpIs.js.map +1 -0
  153. package/dist/{MultilineTextField-Dz6Fg8RJ.cjs → MultilineTextField-B6EYAdik.cjs} +2 -2
  154. package/dist/{MultilineTextField-Dz6Fg8RJ.cjs.map → MultilineTextField-B6EYAdik.cjs.map} +1 -1
  155. package/dist/{MultilineTextField-CwNCJ9lZ.js → MultilineTextField-BgfBFeeF.js} +2 -2
  156. package/dist/{MultilineTextField-CwNCJ9lZ.js.map → MultilineTextField-BgfBFeeF.js.map} +1 -1
  157. package/dist/{NumberField-2yM0mmyj.js → NumberField-BpUTV_Qn.js} +5 -5
  158. package/dist/{NumberField-2yM0mmyj.js.map → NumberField-BpUTV_Qn.js.map} +1 -1
  159. package/dist/{NumberField-CEt95jcC.cjs → NumberField-IyhO4OpJ.cjs} +2 -2
  160. package/dist/{NumberField-CEt95jcC.cjs.map → NumberField-IyhO4OpJ.cjs.map} +1 -1
  161. package/dist/{OtpField-CkliY82J.js → OtpField-BoLxbGtY.js} +4 -4
  162. package/dist/{OtpField-CkliY82J.js.map → OtpField-BoLxbGtY.js.map} +1 -1
  163. package/dist/{OtpField-on-K0_fM.cjs → OtpField-HMrxkdiy.cjs} +2 -2
  164. package/dist/{OtpField-on-K0_fM.cjs.map → OtpField-HMrxkdiy.cjs.map} +1 -1
  165. package/dist/{PageLayout-DGHu7Vm3.cjs → PageLayout-DtWG-6dn.cjs} +2 -2
  166. package/dist/{PageLayout-DGHu7Vm3.cjs.map → PageLayout-DtWG-6dn.cjs.map} +1 -1
  167. package/dist/{PageLayout-DzPh_G6H.js → PageLayout-G8F1WgC-.js} +2 -2
  168. package/dist/{PageLayout-DzPh_G6H.js.map → PageLayout-G8F1WgC-.js.map} +1 -1
  169. package/dist/{PageNotFound-CCFfPHgA.js → PageNotFound-CeKIMZ55.js} +9 -9
  170. package/dist/PageNotFound-CeKIMZ55.js.map +1 -0
  171. package/dist/PageNotFound-DG8xXPL3.cjs +2 -0
  172. package/dist/PageNotFound-DG8xXPL3.cjs.map +1 -0
  173. package/dist/Pagination-Br8P3KwE.cjs +2 -0
  174. package/dist/{Pagination-BdVebW2L.cjs.map → Pagination-Br8P3KwE.cjs.map} +1 -1
  175. package/dist/Pagination-CE1uKrR4.js +139 -0
  176. package/dist/{Pagination-CmskZjcz.js.map → Pagination-CE1uKrR4.js.map} +1 -1
  177. package/dist/PaletteField-BBPbkDcp.js +54 -0
  178. package/dist/PaletteField-BBPbkDcp.js.map +1 -0
  179. package/dist/PaletteField-DwvSn6V6.cjs +2 -0
  180. package/dist/PaletteField-DwvSn6V6.cjs.map +1 -0
  181. package/dist/PhoneField-B-L0xAtD.js +372 -0
  182. package/dist/PhoneField-B-L0xAtD.js.map +1 -0
  183. package/dist/PhoneField-BclMbl7L.cjs +2 -0
  184. package/dist/PhoneField-BclMbl7L.cjs.map +1 -0
  185. package/dist/Popconfirm-BgpvCBy1.js +113 -0
  186. package/dist/Popconfirm-BgpvCBy1.js.map +1 -0
  187. package/dist/Popconfirm-DD8F8SXn.cjs +2 -0
  188. package/dist/Popconfirm-DD8F8SXn.cjs.map +1 -0
  189. package/dist/{Popover-CgIU4Rhg.js → Popover-B82Id9Ut.js} +2 -2
  190. package/dist/{Popover-CgIU4Rhg.js.map → Popover-B82Id9Ut.js.map} +1 -1
  191. package/dist/{Popover-CBI1icIM.cjs → Popover-DAT6DcM9.cjs} +2 -2
  192. package/dist/{Popover-CBI1icIM.cjs.map → Popover-DAT6DcM9.cjs.map} +1 -1
  193. package/dist/Progress-L5koRRJp.js +119 -0
  194. package/dist/Progress-L5koRRJp.js.map +1 -0
  195. package/dist/Progress-_aZ8XOJr.cjs +2 -0
  196. package/dist/Progress-_aZ8XOJr.cjs.map +1 -0
  197. package/dist/QrCode-BQ1eUiAJ.cjs +2 -0
  198. package/dist/QrCode-BQ1eUiAJ.cjs.map +1 -0
  199. package/dist/QrCode-osD23Vkt.js +80 -0
  200. package/dist/QrCode-osD23Vkt.js.map +1 -0
  201. package/dist/QueryError-BMH8X69O.cjs +2 -0
  202. package/dist/QueryError-BMH8X69O.cjs.map +1 -0
  203. package/dist/QueryError-tBuIQRgv.js +19 -0
  204. package/dist/QueryError-tBuIQRgv.js.map +1 -0
  205. package/dist/RadioGroup-BcFBdFhh.cjs +2 -0
  206. package/dist/{RadioGroup-C8u7eNBS.cjs.map → RadioGroup-BcFBdFhh.cjs.map} +1 -1
  207. package/dist/RadioGroup-dVx_hMCY.js +141 -0
  208. package/dist/{RadioGroup-DbodUJW8.js.map → RadioGroup-dVx_hMCY.js.map} +1 -1
  209. package/dist/RemoveDialog-C9_UzFBf.js +109 -0
  210. package/dist/RemoveDialog-C9_UzFBf.js.map +1 -0
  211. package/dist/RemoveDialog-DBKYnTYU.cjs +2 -0
  212. package/dist/RemoveDialog-DBKYnTYU.cjs.map +1 -0
  213. package/dist/RichTextEditor-DTz7Qcn_.cjs +2 -0
  214. package/dist/RichTextEditor-DTz7Qcn_.cjs.map +1 -0
  215. package/dist/{RichTextEditor-Bm8FFbcR.js → RichTextEditor-fXcbUjTl.js} +13 -13
  216. package/dist/RichTextEditor-fXcbUjTl.js.map +1 -0
  217. package/dist/RootLayout-DG2dXhXn.cjs +2 -0
  218. package/dist/{RootLayout-kssj9exn.cjs.map → RootLayout-DG2dXhXn.cjs.map} +1 -1
  219. package/dist/RootLayout-p8ArA6wA.js +515 -0
  220. package/dist/{RootLayout-Cf7Rr9Iz.js.map → RootLayout-p8ArA6wA.js.map} +1 -1
  221. package/dist/Select-BAR_aVSz.js +199 -0
  222. package/dist/Select-BAR_aVSz.js.map +1 -0
  223. package/dist/Select-BuVfUiw-.cjs +2 -0
  224. package/dist/Select-BuVfUiw-.cjs.map +1 -0
  225. package/dist/{Sidebar-YH-DoNG9.js → Sidebar-CsWcjSTx.js} +193 -183
  226. package/dist/Sidebar-CsWcjSTx.js.map +1 -0
  227. package/dist/Sidebar-NI5HGGYF.cjs +2 -0
  228. package/dist/Sidebar-NI5HGGYF.cjs.map +1 -0
  229. package/dist/Skeleton-DK0lAjS9.cjs +2 -0
  230. package/dist/Skeleton-DK0lAjS9.cjs.map +1 -0
  231. package/dist/Skeleton-_-uGax2j.js +56 -0
  232. package/dist/Skeleton-_-uGax2j.js.map +1 -0
  233. package/dist/Slider-Cu1FhxR2.cjs +2 -0
  234. package/dist/{Slider-dxYVXRev.cjs.map → Slider-Cu1FhxR2.cjs.map} +1 -1
  235. package/dist/Slider-DoQJWgGU.js +184 -0
  236. package/dist/{Slider-oGXd5e9X.js.map → Slider-DoQJWgGU.js.map} +1 -1
  237. package/dist/{SpeedDial-9_Yk8AGx.cjs → SpeedDial-C_rZkHmF.cjs} +2 -2
  238. package/dist/{SpeedDial-9_Yk8AGx.cjs.map → SpeedDial-C_rZkHmF.cjs.map} +1 -1
  239. package/dist/{SpeedDial-DWNuC6f8.js → SpeedDial-DF-ILheU.js} +2 -2
  240. package/dist/{SpeedDial-DWNuC6f8.js.map → SpeedDial-DF-ILheU.js.map} +1 -1
  241. package/dist/{Stepper-CuqFpamY.js → Stepper-B39Ax_w6.js} +70 -70
  242. package/dist/{Stepper-CuqFpamY.js.map → Stepper-B39Ax_w6.js.map} +1 -1
  243. package/dist/Stepper-CT7n113R.cjs +2 -0
  244. package/dist/{Stepper-B1z_u650.cjs.map → Stepper-CT7n113R.cjs.map} +1 -1
  245. package/dist/{SwatchPicker-CCJltwHI.cjs → SwatchPicker-BWXqgsEy.cjs} +2 -2
  246. package/dist/{SwatchPicker-CCJltwHI.cjs.map → SwatchPicker-BWXqgsEy.cjs.map} +1 -1
  247. package/dist/{SwatchPicker-CqyWngFJ.js → SwatchPicker-Bpxk0IOe.js} +3 -3
  248. package/dist/{SwatchPicker-CqyWngFJ.js.map → SwatchPicker-Bpxk0IOe.js.map} +1 -1
  249. package/dist/Switch-DSs2Y0IR.cjs +2 -0
  250. package/dist/{Switch-DRkZ6kHJ.cjs.map → Switch-DSs2Y0IR.cjs.map} +1 -1
  251. package/dist/Switch-Jh2Ch8GO.js +85 -0
  252. package/dist/{Switch-DMPJ0fhB.js.map → Switch-Jh2Ch8GO.js.map} +1 -1
  253. package/dist/Table-CH_oiEP3.js +1170 -0
  254. package/dist/Table-CH_oiEP3.js.map +1 -0
  255. package/dist/Table-DD_uysnY.cjs +2 -0
  256. package/dist/Table-DD_uysnY.cjs.map +1 -0
  257. package/dist/Tabs-By86Cmpw.js +190 -0
  258. package/dist/{Tabs-ytbBzAxG.js.map → Tabs-By86Cmpw.js.map} +1 -1
  259. package/dist/Tabs-C1N9FgAq.cjs +2 -0
  260. package/dist/{Tabs-BiKDy_fv.cjs.map → Tabs-C1N9FgAq.cjs.map} +1 -1
  261. package/dist/{TagsField-CEt_PC5y.js → TagsField-BiOyAadf.js} +5 -5
  262. package/dist/{TagsField-CEt_PC5y.js.map → TagsField-BiOyAadf.js.map} +1 -1
  263. package/dist/{TagsField-DpDbf0ru.cjs → TagsField-RX-x45-j.cjs} +2 -2
  264. package/dist/{TagsField-DpDbf0ru.cjs.map → TagsField-RX-x45-j.cjs.map} +1 -1
  265. package/dist/{TextField-Df_kGy2l.cjs → TextField-CdbanZuk.cjs} +2 -2
  266. package/dist/{TextField-Df_kGy2l.cjs.map → TextField-CdbanZuk.cjs.map} +1 -1
  267. package/dist/{TextField-BWdmF-HE.js → TextField-CkronCRC.js} +5 -5
  268. package/dist/{TextField-BWdmF-HE.js.map → TextField-CkronCRC.js.map} +1 -1
  269. package/dist/TextField.module-6gYcR9TL.js +27 -0
  270. package/dist/TextField.module-6gYcR9TL.js.map +1 -0
  271. package/dist/TextField.module-DsNCo8vN.cjs +2 -0
  272. package/dist/TextField.module-DsNCo8vN.cjs.map +1 -0
  273. package/dist/{ThemeToggle-CgxF6oUu.js → ThemeToggle-BYUEH6be.js} +3 -3
  274. package/dist/{ThemeToggle-CgxF6oUu.js.map → ThemeToggle-BYUEH6be.js.map} +1 -1
  275. package/dist/{ThemeToggle-BJdXhmfc.cjs → ThemeToggle-C4QhDd76.cjs} +2 -2
  276. package/dist/{ThemeToggle-BJdXhmfc.cjs.map → ThemeToggle-C4QhDd76.cjs.map} +1 -1
  277. package/dist/{TimeColumns-DxVN0V8l.cjs → TimeColumns-Cl0_IRf0.cjs} +2 -2
  278. package/dist/{TimeColumns-DxVN0V8l.cjs.map → TimeColumns-Cl0_IRf0.cjs.map} +1 -1
  279. package/dist/{TimeColumns-n-fz50mr.js → TimeColumns-yzjScNU8.js} +3 -3
  280. package/dist/{TimeColumns-n-fz50mr.js.map → TimeColumns-yzjScNU8.js.map} +1 -1
  281. package/dist/{TimePicker-DvoemiGz.cjs → TimePicker-CJGVGETl.cjs} +2 -2
  282. package/dist/{TimePicker-DvoemiGz.cjs.map → TimePicker-CJGVGETl.cjs.map} +1 -1
  283. package/dist/{TimePicker-Bopxx3zU.js → TimePicker-CoIdMv1S.js} +8 -8
  284. package/dist/{TimePicker-Bopxx3zU.js.map → TimePicker-CoIdMv1S.js.map} +1 -1
  285. package/dist/Timeline-CKEosWka.cjs +2 -0
  286. package/dist/{Timeline-ONU_3gi3.cjs.map → Timeline-CKEosWka.cjs.map} +1 -1
  287. package/dist/Timeline-ufVXmpMY.js +71 -0
  288. package/dist/{Timeline-D3kzt1dy.js.map → Timeline-ufVXmpMY.js.map} +1 -1
  289. package/dist/{Toaster-BxIY2H4V.js → Toaster-Dhz2mYq_.js} +2 -2
  290. package/dist/{Toaster-BxIY2H4V.js.map → Toaster-Dhz2mYq_.js.map} +1 -1
  291. package/dist/{Toaster-DZSzFse_.cjs → Toaster-lv5cJhib.cjs} +2 -2
  292. package/dist/{Toaster-DZSzFse_.cjs.map → Toaster-lv5cJhib.cjs.map} +1 -1
  293. package/dist/{TranslatedFields-BtDLkQy7.cjs → TranslatedFields-BCJ86Tqp.cjs} +2 -2
  294. package/dist/{TranslatedFields-BtDLkQy7.cjs.map → TranslatedFields-BCJ86Tqp.cjs.map} +1 -1
  295. package/dist/{TranslatedFields-DmR8LKSG.js → TranslatedFields-BtNUAyrY.js} +5 -5
  296. package/dist/{TranslatedFields-DmR8LKSG.js.map → TranslatedFields-BtNUAyrY.js.map} +1 -1
  297. package/dist/Typography-B6ASPrzT.cjs +2 -0
  298. package/dist/Typography-B6ASPrzT.cjs.map +1 -0
  299. package/dist/Typography-CJv5AnRP.js +70 -0
  300. package/dist/Typography-CJv5AnRP.js.map +1 -0
  301. package/dist/UserCard-B-eNyZuT.js +78 -0
  302. package/dist/UserCard-B-eNyZuT.js.map +1 -0
  303. package/dist/UserCard-CiQUrZjb.cjs +2 -0
  304. package/dist/UserCard-CiQUrZjb.cjs.map +1 -0
  305. package/dist/app/AdminRoot.d.cts +10 -3
  306. package/dist/app/AdminRoot.d.ts +10 -3
  307. package/dist/color-CgR8ybWZ.cjs +2 -0
  308. package/dist/color-CgR8ybWZ.cjs.map +1 -0
  309. package/dist/color-EQJ2DrcQ.js +24 -0
  310. package/dist/color-EQJ2DrcQ.js.map +1 -0
  311. package/dist/components/Alert/index.cjs +1 -1
  312. package/dist/components/Alert/index.js +1 -1
  313. package/dist/components/AuthLayout/index.cjs +1 -1
  314. package/dist/components/AuthLayout/index.js +1 -1
  315. package/dist/components/Avatar/Avatar.d.cts +7 -1
  316. package/dist/components/Avatar/Avatar.d.ts +7 -1
  317. package/dist/components/Avatar/index.cjs +1 -1
  318. package/dist/components/Avatar/index.js +2 -2
  319. package/dist/components/Badge/index.cjs +1 -1
  320. package/dist/components/Badge/index.js +1 -1
  321. package/dist/components/Breadcrumbs/index.cjs +1 -1
  322. package/dist/components/Breadcrumbs/index.js +1 -1
  323. package/dist/components/Button/index.cjs +1 -1
  324. package/dist/components/Button/index.js +1 -1
  325. package/dist/components/Card/Card.d.cts +2 -0
  326. package/dist/components/Card/Card.d.ts +2 -0
  327. package/dist/components/Card/index.cjs +1 -1
  328. package/dist/components/Card/index.js +1 -1
  329. package/dist/components/Checkbox/index.cjs +1 -1
  330. package/dist/components/Checkbox/index.js +1 -1
  331. package/dist/components/Chip/index.cjs +1 -1
  332. package/dist/components/Chip/index.js +1 -1
  333. package/dist/components/ChoiceCard/index.cjs +1 -1
  334. package/dist/components/ChoiceCard/index.js +1 -1
  335. package/dist/components/CodeBlock/index.cjs +1 -1
  336. package/dist/components/CodeBlock/index.js +1 -1
  337. package/dist/components/ColorPicker/ColorPicker.d.cts +5 -0
  338. package/dist/components/ColorPicker/ColorPicker.d.ts +5 -0
  339. package/dist/components/ColorPicker/ColorPickerPanel.d.cts +6 -1
  340. package/dist/components/ColorPicker/ColorPickerPanel.d.ts +6 -1
  341. package/dist/components/ColorPicker/colorUtils.d.cts +3 -12
  342. package/dist/components/ColorPicker/colorUtils.d.ts +3 -12
  343. package/dist/components/ColorPicker/index.cjs +1 -1
  344. package/dist/components/ColorPicker/index.js +1 -1
  345. package/dist/components/ColorRamp/ColorRamp.d.cts +36 -0
  346. package/dist/components/ColorRamp/ColorRamp.d.ts +36 -0
  347. package/dist/components/ColorRamp/index.cjs +2 -0
  348. package/dist/components/ColorRamp/index.cjs.map +1 -0
  349. package/dist/components/ColorRamp/index.d.cts +3 -0
  350. package/dist/components/ColorRamp/index.d.ts +3 -0
  351. package/dist/components/ColorRamp/index.js +6 -0
  352. package/dist/components/ColorRamp/index.js.map +1 -0
  353. package/dist/components/CopyButton/index.cjs +1 -1
  354. package/dist/components/CopyButton/index.js +1 -1
  355. package/dist/components/DashedButton/index.cjs +1 -1
  356. package/dist/components/DashedButton/index.js +1 -1
  357. package/dist/components/DatePicker/index.cjs +1 -1
  358. package/dist/components/DatePicker/index.js +1 -1
  359. package/dist/components/DateTimePicker/index.cjs +1 -1
  360. package/dist/components/DateTimePicker/index.js +1 -1
  361. package/dist/components/DescriptionList/DescriptionList.d.cts +76 -0
  362. package/dist/components/DescriptionList/DescriptionList.d.ts +76 -0
  363. package/dist/components/DescriptionList/index.cjs +2 -0
  364. package/dist/components/DescriptionList/index.cjs.map +1 -0
  365. package/dist/components/DescriptionList/index.d.cts +2 -0
  366. package/dist/components/DescriptionList/index.d.ts +2 -0
  367. package/dist/components/DescriptionList/index.js +6 -0
  368. package/dist/components/DescriptionList/index.js.map +1 -0
  369. package/dist/components/Dropdown/index.cjs +1 -1
  370. package/dist/components/Dropdown/index.js +1 -1
  371. package/dist/components/EmptyState/EmptyState.d.cts +4 -1
  372. package/dist/components/EmptyState/EmptyState.d.ts +4 -1
  373. package/dist/components/EmptyState/index.cjs +1 -1
  374. package/dist/components/EmptyState/index.js +1 -1
  375. package/dist/components/ErrorState/ErrorBoundary.d.cts +35 -0
  376. package/dist/components/ErrorState/ErrorBoundary.d.ts +35 -0
  377. package/dist/components/ErrorState/ErrorState.d.cts +36 -0
  378. package/dist/components/ErrorState/ErrorState.d.ts +36 -0
  379. package/dist/components/ErrorState/QueryError.d.cts +18 -0
  380. package/dist/components/ErrorState/QueryError.d.ts +18 -0
  381. package/dist/components/ErrorState/errorMessage.d.cts +14 -0
  382. package/dist/components/ErrorState/errorMessage.d.ts +14 -0
  383. package/dist/components/ErrorState/index.cjs +2 -0
  384. package/dist/components/ErrorState/index.cjs.map +1 -0
  385. package/dist/components/ErrorState/index.d.cts +7 -0
  386. package/dist/components/ErrorState/index.d.ts +7 -0
  387. package/dist/components/ErrorState/index.js +11 -0
  388. package/dist/components/ErrorState/index.js.map +1 -0
  389. package/dist/components/FileCard/index.cjs +1 -1
  390. package/dist/components/FileCard/index.js +1 -1
  391. package/dist/components/FileUploader/index.cjs +1 -1
  392. package/dist/components/FileUploader/index.js +1 -1
  393. package/dist/components/Flag/index.cjs +1 -1
  394. package/dist/components/Flag/index.js +1 -1
  395. package/dist/components/FloatingPanel/FloatingPanel.d.cts +4 -0
  396. package/dist/components/FloatingPanel/FloatingPanel.d.ts +4 -0
  397. package/dist/components/FullscreenToggle/index.cjs +1 -1
  398. package/dist/components/FullscreenToggle/index.js +1 -1
  399. package/dist/components/IconButton/index.cjs +1 -1
  400. package/dist/components/IconButton/index.js +1 -1
  401. package/dist/components/List/List.d.cts +13 -3
  402. package/dist/components/List/List.d.ts +13 -3
  403. package/dist/components/List/ListItem.d.cts +5 -0
  404. package/dist/components/List/ListItem.d.ts +5 -0
  405. package/dist/components/List/index.cjs +1 -1
  406. package/dist/components/List/index.js +4 -5
  407. package/dist/components/List/index.js.map +1 -1
  408. package/dist/components/List/listContext.d.cts +9 -3
  409. package/dist/components/List/listContext.d.ts +9 -3
  410. package/dist/components/Loader/index.cjs +1 -1
  411. package/dist/components/Loader/index.js +1 -1
  412. package/dist/components/MobileFrame/MobileFrame.d.cts +45 -0
  413. package/dist/components/MobileFrame/MobileFrame.d.ts +45 -0
  414. package/dist/components/MobileFrame/frames.d.cts +27 -0
  415. package/dist/components/MobileFrame/frames.d.ts +27 -0
  416. package/dist/components/MobileFrame/index.cjs +2 -0
  417. package/dist/components/MobileFrame/index.cjs.map +1 -0
  418. package/dist/components/MobileFrame/index.d.cts +4 -0
  419. package/dist/components/MobileFrame/index.d.ts +4 -0
  420. package/dist/components/MobileFrame/index.js +8 -0
  421. package/dist/components/MobileFrame/index.js.map +1 -0
  422. package/dist/components/Modal/Modal.d.cts +2 -0
  423. package/dist/components/Modal/Modal.d.ts +2 -0
  424. package/dist/components/Modal/index.cjs +1 -1
  425. package/dist/components/Modal/index.js +1 -1
  426. package/dist/components/MultiSelect/index.cjs +1 -1
  427. package/dist/components/MultiSelect/index.js +1 -1
  428. package/dist/components/MultilineTextField/index.cjs +1 -1
  429. package/dist/components/MultilineTextField/index.js +1 -1
  430. package/dist/components/NumberField/index.cjs +1 -1
  431. package/dist/components/NumberField/index.js +1 -1
  432. package/dist/components/OptionMenu/OptionMenu.d.cts +40 -0
  433. package/dist/components/OptionMenu/OptionMenu.d.ts +40 -0
  434. package/dist/components/OptionMenu/useOptionMenu.d.cts +81 -0
  435. package/dist/components/OptionMenu/useOptionMenu.d.ts +81 -0
  436. package/dist/components/OtpField/index.cjs +1 -1
  437. package/dist/components/OtpField/index.js +1 -1
  438. package/dist/components/PageLayout/index.cjs +1 -1
  439. package/dist/components/PageLayout/index.js +1 -1
  440. package/dist/components/PageNotFound/PageNotFound.d.cts +1 -1
  441. package/dist/components/PageNotFound/PageNotFound.d.ts +1 -1
  442. package/dist/components/PageNotFound/index.cjs +1 -1
  443. package/dist/components/PageNotFound/index.js +1 -1
  444. package/dist/components/Pagination/index.cjs +1 -1
  445. package/dist/components/Pagination/index.js +1 -1
  446. package/dist/components/PaletteField/PaletteField.d.cts +30 -0
  447. package/dist/components/PaletteField/PaletteField.d.ts +30 -0
  448. package/dist/components/PaletteField/index.cjs +2 -0
  449. package/dist/components/PaletteField/index.cjs.map +1 -0
  450. package/dist/components/PaletteField/index.d.cts +2 -0
  451. package/dist/components/PaletteField/index.d.ts +2 -0
  452. package/dist/components/PaletteField/index.js +6 -0
  453. package/dist/components/PaletteField/index.js.map +1 -0
  454. package/dist/components/PhoneField/PhoneField.d.cts +54 -0
  455. package/dist/components/PhoneField/PhoneField.d.ts +54 -0
  456. package/dist/components/PhoneField/index.cjs +2 -0
  457. package/dist/components/PhoneField/index.cjs.map +1 -0
  458. package/dist/components/PhoneField/index.d.cts +4 -0
  459. package/dist/components/PhoneField/index.d.ts +4 -0
  460. package/dist/components/PhoneField/index.js +7 -0
  461. package/dist/components/PhoneField/index.js.map +1 -0
  462. package/dist/components/PhoneField/phone.d.cts +50 -0
  463. package/dist/components/PhoneField/phone.d.ts +50 -0
  464. package/dist/components/Popconfirm/Popconfirm.d.cts +53 -0
  465. package/dist/components/Popconfirm/Popconfirm.d.ts +53 -0
  466. package/dist/components/Popconfirm/index.cjs +2 -0
  467. package/dist/components/Popconfirm/index.cjs.map +1 -0
  468. package/dist/components/Popconfirm/index.d.cts +2 -0
  469. package/dist/components/Popconfirm/index.d.ts +2 -0
  470. package/dist/components/Popconfirm/index.js +6 -0
  471. package/dist/components/Popconfirm/index.js.map +1 -0
  472. package/dist/components/Popover/index.cjs +1 -1
  473. package/dist/components/Popover/index.js +1 -1
  474. package/dist/components/Progress/Progress.d.cts +50 -0
  475. package/dist/components/Progress/Progress.d.ts +50 -0
  476. package/dist/components/Progress/index.cjs +2 -0
  477. package/dist/components/Progress/index.cjs.map +1 -0
  478. package/dist/components/Progress/index.d.cts +2 -0
  479. package/dist/components/Progress/index.d.ts +2 -0
  480. package/dist/components/Progress/index.js +6 -0
  481. package/dist/components/Progress/index.js.map +1 -0
  482. package/dist/components/QrCode/QrCode.d.cts +3 -0
  483. package/dist/components/QrCode/QrCode.d.ts +3 -0
  484. package/dist/components/QrCode/index.cjs +1 -1
  485. package/dist/components/QrCode/index.js +1 -1
  486. package/dist/components/Radio/index.cjs +1 -1
  487. package/dist/components/Radio/index.js +1 -1
  488. package/dist/components/RemoveDialog/RemoveDialog.d.cts +8 -1
  489. package/dist/components/RemoveDialog/RemoveDialog.d.ts +8 -1
  490. package/dist/components/RemoveDialog/index.cjs +1 -1
  491. package/dist/components/RemoveDialog/index.js +1 -1
  492. package/dist/components/RichTextEditor/index.cjs +1 -1
  493. package/dist/components/RichTextEditor/index.js +1 -1
  494. package/dist/components/RootLayout/index.cjs +1 -1
  495. package/dist/components/RootLayout/index.js +1 -1
  496. package/dist/components/Select/Select.d.cts +2 -12
  497. package/dist/components/Select/Select.d.ts +2 -12
  498. package/dist/components/Select/index.cjs +1 -1
  499. package/dist/components/Select/index.js +1 -1
  500. package/dist/components/Sidebar/index.cjs +1 -1
  501. package/dist/components/Sidebar/index.js +1 -1
  502. package/dist/components/Skeleton/Skeleton.d.cts +31 -0
  503. package/dist/components/Skeleton/Skeleton.d.ts +31 -0
  504. package/dist/components/Skeleton/index.cjs +2 -0
  505. package/dist/components/Skeleton/index.cjs.map +1 -0
  506. package/dist/components/Skeleton/index.d.cts +2 -0
  507. package/dist/components/Skeleton/index.d.ts +2 -0
  508. package/dist/components/Skeleton/index.js +6 -0
  509. package/dist/components/Skeleton/index.js.map +1 -0
  510. package/dist/components/Slider/index.cjs +1 -1
  511. package/dist/components/Slider/index.js +1 -1
  512. package/dist/components/SpeedDial/index.cjs +1 -1
  513. package/dist/components/SpeedDial/index.js +1 -1
  514. package/dist/components/Stepper/index.cjs +1 -1
  515. package/dist/components/Stepper/index.js +1 -1
  516. package/dist/components/SwatchPicker/index.cjs +1 -1
  517. package/dist/components/SwatchPicker/index.js +1 -1
  518. package/dist/components/Switch/index.cjs +1 -1
  519. package/dist/components/Switch/index.js +1 -1
  520. package/dist/components/Table/Table.d.cts +7 -1
  521. package/dist/components/Table/Table.d.ts +7 -1
  522. package/dist/components/Table/index.cjs +1 -1
  523. package/dist/components/Table/index.js +1 -1
  524. package/dist/components/Tabs/index.cjs +1 -1
  525. package/dist/components/Tabs/index.js +1 -1
  526. package/dist/components/TagsField/index.cjs +1 -1
  527. package/dist/components/TagsField/index.js +1 -1
  528. package/dist/components/TextField/index.cjs +1 -1
  529. package/dist/components/TextField/index.js +1 -1
  530. package/dist/components/ThemeToggle/index.cjs +1 -1
  531. package/dist/components/ThemeToggle/index.js +1 -1
  532. package/dist/components/TimePicker/index.cjs +1 -1
  533. package/dist/components/TimePicker/index.js +1 -1
  534. package/dist/components/Timeline/index.cjs +1 -1
  535. package/dist/components/Timeline/index.js +1 -1
  536. package/dist/components/Toast/index.cjs +1 -1
  537. package/dist/components/Toast/index.js +1 -1
  538. package/dist/components/TranslatedFields/index.cjs +1 -1
  539. package/dist/components/TranslatedFields/index.js +1 -1
  540. package/dist/components/Typography/Typography.d.cts +10 -3
  541. package/dist/components/Typography/Typography.d.ts +10 -3
  542. package/dist/components/Typography/index.cjs +1 -1
  543. package/dist/components/Typography/index.js +1 -1
  544. package/dist/components/UserCard/UserCard.d.cts +3 -1
  545. package/dist/components/UserCard/UserCard.d.ts +3 -1
  546. package/dist/components/UserCard/index.cjs +1 -1
  547. package/dist/components/UserCard/index.js +1 -1
  548. package/dist/components/index.d.cts +9 -0
  549. package/dist/components/index.d.ts +9 -0
  550. package/dist/entries/app.cjs +1 -1
  551. package/dist/entries/app.js +1 -1
  552. package/dist/entries/components.cjs +1 -1
  553. package/dist/entries/components.js +171 -146
  554. package/dist/entries/components.js.map +1 -1
  555. package/dist/entries/helpers.cjs +1 -1
  556. package/dist/entries/helpers.d.cts +2 -0
  557. package/dist/entries/helpers.d.ts +2 -0
  558. package/dist/entries/helpers.js +18 -8
  559. package/dist/entries/helpers.js.map +1 -1
  560. package/dist/entries/i18n.cjs +1 -1
  561. package/dist/entries/i18n.js +2 -2
  562. package/dist/entries/theme.cjs +1 -1
  563. package/dist/entries/theme.js +1 -1
  564. package/dist/helpers/color.d.cts +17 -0
  565. package/dist/helpers/color.d.ts +17 -0
  566. package/dist/helpers/palette.d.cts +68 -0
  567. package/dist/helpers/palette.d.ts +68 -0
  568. package/dist/hooks/useOptionalPeer.d.cts +21 -0
  569. package/dist/hooks/useOptionalPeer.d.ts +21 -0
  570. package/dist/i18n/messages.d.cts +24 -0
  571. package/dist/i18n/messages.d.ts +24 -0
  572. package/dist/index.cjs +1 -1
  573. package/dist/index.css +16 -12
  574. package/dist/index.js +224 -189
  575. package/dist/index.js.map +1 -1
  576. package/dist/{messages-ogohLC5P.js → messages-BF2ft7yD.js} +201 -33
  577. package/dist/messages-BF2ft7yD.js.map +1 -0
  578. package/dist/messages-ihnE1jVG.cjs +36 -0
  579. package/dist/messages-ihnE1jVG.cjs.map +1 -0
  580. package/dist/palette-B031dM4E.js +70 -0
  581. package/dist/palette-B031dM4E.js.map +1 -0
  582. package/dist/palette-BycMHbED.cjs +2 -0
  583. package/dist/palette-BycMHbED.cjs.map +1 -0
  584. package/dist/theme/ConfigProvider.d.cts +8 -8
  585. package/dist/theme/ConfigProvider.d.ts +8 -8
  586. package/dist/useOptionMenu-C0xSaZ4t.cjs +2 -0
  587. package/dist/useOptionMenu-C0xSaZ4t.cjs.map +1 -0
  588. package/dist/useOptionMenu-Cq_eHdab.js +286 -0
  589. package/dist/useOptionMenu-Cq_eHdab.js.map +1 -0
  590. package/dist/useOptionalPeer-49f3XcO5.js +28 -0
  591. package/dist/useOptionalPeer-49f3XcO5.js.map +1 -0
  592. package/dist/useOptionalPeer-9Fkx5Leb.cjs +2 -0
  593. package/dist/useOptionalPeer-9Fkx5Leb.cjs.map +1 -0
  594. package/package.json +6 -1
  595. package/dist/AdminRoot-BkPPRkyQ.cjs +0 -2
  596. package/dist/AdminRoot-BkPPRkyQ.cjs.map +0 -1
  597. package/dist/AdminRoot-CgvtgUpW.js +0 -50
  598. package/dist/AdminRoot-CgvtgUpW.js.map +0 -1
  599. package/dist/Avatar-Dgf04PBC.cjs +0 -2
  600. package/dist/Avatar-Dgf04PBC.cjs.map +0 -1
  601. package/dist/Avatar-Q50J8wdN.js +0 -60
  602. package/dist/Avatar-Q50J8wdN.js.map +0 -1
  603. package/dist/Badge-BQpr2Jee.cjs +0 -2
  604. package/dist/Badge-DSWigoGC.js +0 -50
  605. package/dist/Button-CXmDOzPk.cjs +0 -2
  606. package/dist/Button-DBs8xnA5.js +0 -72
  607. package/dist/Card-DGF22HbS.cjs +0 -2
  608. package/dist/Card-DGF22HbS.cjs.map +0 -1
  609. package/dist/Card-DYKnWt-L.js +0 -118
  610. package/dist/Card-DYKnWt-L.js.map +0 -1
  611. package/dist/Checkbox-ZYOSBYRt.js +0 -98
  612. package/dist/Checkbox-fzJCwe0j.cjs +0 -2
  613. package/dist/Chip-gUH_7nQc.cjs +0 -2
  614. package/dist/ChoiceCardGroup-DBohUnRj.js +0 -181
  615. package/dist/ChoiceCardGroup-d0VVTUi5.cjs +0 -2
  616. package/dist/ColorPicker-DtzFwNWk.cjs +0 -2
  617. package/dist/ColorPicker-DtzFwNWk.cjs.map +0 -1
  618. package/dist/ColorPicker-Dw6Qk0iy.js.map +0 -1
  619. package/dist/ColorPickerPanel--wBX-m7J.cjs +0 -2
  620. package/dist/ColorPickerPanel--wBX-m7J.cjs.map +0 -1
  621. package/dist/ColorPickerPanel-Dp7bnnVf.js +0 -336
  622. package/dist/ColorPickerPanel-Dp7bnnVf.js.map +0 -1
  623. package/dist/ConfigProvider-Bszl3Wr3.cjs.map +0 -1
  624. package/dist/ConfigProvider-DR9YMy9U.js.map +0 -1
  625. package/dist/CopyButton-Ct-8AmmX.cjs +0 -2
  626. package/dist/CopyButton-DJ1PSJZU.js +0 -31
  627. package/dist/DashedButton-3C4IZuo4.cjs +0 -2
  628. package/dist/DashedButton-BXZAyMtw.js +0 -59
  629. package/dist/DatePicker.module-BZDftL4g.js +0 -138
  630. package/dist/DatePicker.module-tE-tGNBd.cjs +0 -2
  631. package/dist/EmptyState-BTd7aVgu.js +0 -38
  632. package/dist/EmptyState-BTd7aVgu.js.map +0 -1
  633. package/dist/EmptyState-Bv4XXnD1.cjs +0 -2
  634. package/dist/EmptyState-Bv4XXnD1.cjs.map +0 -1
  635. package/dist/FileCard-DW5Ur8Aj.cjs +0 -2
  636. package/dist/FileCard-DW5Ur8Aj.cjs.map +0 -1
  637. package/dist/FileCard-DY8N9Lzz.js +0 -148
  638. package/dist/FileCard-DY8N9Lzz.js.map +0 -1
  639. package/dist/FileUploader-B7VfhcR7.cjs +0 -2
  640. package/dist/FileUploader-B7VfhcR7.cjs.map +0 -1
  641. package/dist/FileUploader-BYF5FvUc.js +0 -684
  642. package/dist/FileUploader-BYF5FvUc.js.map +0 -1
  643. package/dist/FloatingPanel-BG9Uag__.js +0 -131
  644. package/dist/FloatingPanel-BG9Uag__.js.map +0 -1
  645. package/dist/FloatingPanel-U6sGYiSK.cjs +0 -2
  646. package/dist/FloatingPanel-U6sGYiSK.cjs.map +0 -1
  647. package/dist/IconButton-BEGWfcVc.js +0 -68
  648. package/dist/IconButton-BN-bZxEi.cjs +0 -2
  649. package/dist/List-ChXO0Hz-.cjs +0 -2
  650. package/dist/List-ChXO0Hz-.cjs.map +0 -1
  651. package/dist/List-LqbfF6gU.js +0 -26
  652. package/dist/List-LqbfF6gU.js.map +0 -1
  653. package/dist/ListItem-Cn15lJBr.js +0 -74
  654. package/dist/ListItem-Cn15lJBr.js.map +0 -1
  655. package/dist/ListItem-yXXjtepZ.cjs +0 -2
  656. package/dist/ListItem-yXXjtepZ.cjs.map +0 -1
  657. package/dist/Loader-B5YqzEYy.cjs +0 -2
  658. package/dist/Loader-BZIa8hwv.js +0 -29
  659. package/dist/Modal-0V-REVV-.cjs +0 -2
  660. package/dist/Modal-0V-REVV-.cjs.map +0 -1
  661. package/dist/Modal-B7yoFC3o.js +0 -195
  662. package/dist/Modal-B7yoFC3o.js.map +0 -1
  663. package/dist/MultiSelect-C8xuXaoR.js +0 -350
  664. package/dist/MultiSelect-C8xuXaoR.js.map +0 -1
  665. package/dist/MultiSelect-gj9Ymeh2.cjs +0 -2
  666. package/dist/MultiSelect-gj9Ymeh2.cjs.map +0 -1
  667. package/dist/PageNotFound-B8_eIT8p.cjs +0 -2
  668. package/dist/PageNotFound-B8_eIT8p.cjs.map +0 -1
  669. package/dist/PageNotFound-CCFfPHgA.js.map +0 -1
  670. package/dist/Pagination-BdVebW2L.cjs +0 -2
  671. package/dist/Pagination-CmskZjcz.js +0 -139
  672. package/dist/QrCode-Bcj9_Emc.js +0 -70
  673. package/dist/QrCode-Bcj9_Emc.js.map +0 -1
  674. package/dist/QrCode-DfDfGhG-.cjs +0 -2
  675. package/dist/QrCode-DfDfGhG-.cjs.map +0 -1
  676. package/dist/RadioGroup-C8u7eNBS.cjs +0 -2
  677. package/dist/RadioGroup-DbodUJW8.js +0 -141
  678. package/dist/RemoveDialog-CV75B0aN.js +0 -47
  679. package/dist/RemoveDialog-CV75B0aN.js.map +0 -1
  680. package/dist/RemoveDialog-DmOk0ezc.cjs +0 -2
  681. package/dist/RemoveDialog-DmOk0ezc.cjs.map +0 -1
  682. package/dist/RichTextEditor-Bm8FFbcR.js.map +0 -1
  683. package/dist/RichTextEditor-uXddgtlk.cjs +0 -2
  684. package/dist/RichTextEditor-uXddgtlk.cjs.map +0 -1
  685. package/dist/RootLayout-Cf7Rr9Iz.js +0 -515
  686. package/dist/RootLayout-kssj9exn.cjs +0 -2
  687. package/dist/Select-7vEGJCvA.cjs +0 -2
  688. package/dist/Select-7vEGJCvA.cjs.map +0 -1
  689. package/dist/Select-CdX3Ks7y.js +0 -338
  690. package/dist/Select-CdX3Ks7y.js.map +0 -1
  691. package/dist/Sidebar-DcKIEfhy.cjs +0 -2
  692. package/dist/Sidebar-DcKIEfhy.cjs.map +0 -1
  693. package/dist/Sidebar-YH-DoNG9.js.map +0 -1
  694. package/dist/Slider-dxYVXRev.cjs +0 -2
  695. package/dist/Slider-oGXd5e9X.js +0 -184
  696. package/dist/Stepper-B1z_u650.cjs +0 -2
  697. package/dist/Switch-DMPJ0fhB.js +0 -85
  698. package/dist/Switch-DRkZ6kHJ.cjs +0 -2
  699. package/dist/Table-BPit83Pn.cjs +0 -2
  700. package/dist/Table-BPit83Pn.cjs.map +0 -1
  701. package/dist/Table-Drdhfm99.js +0 -1090
  702. package/dist/Table-Drdhfm99.js.map +0 -1
  703. package/dist/Tabs-BiKDy_fv.cjs +0 -2
  704. package/dist/Tabs-ytbBzAxG.js +0 -190
  705. package/dist/TextField.module-QePvGeJ3.js +0 -27
  706. package/dist/TextField.module-QePvGeJ3.js.map +0 -1
  707. package/dist/TextField.module-m-UllwzG.cjs +0 -2
  708. package/dist/TextField.module-m-UllwzG.cjs.map +0 -1
  709. package/dist/Timeline-D3kzt1dy.js +0 -71
  710. package/dist/Timeline-ONU_3gi3.cjs +0 -2
  711. package/dist/Typography-BFatE1_A.cjs +0 -2
  712. package/dist/Typography-BFatE1_A.cjs.map +0 -1
  713. package/dist/Typography-Cta6Rg4L.js +0 -51
  714. package/dist/Typography-Cta6Rg4L.js.map +0 -1
  715. package/dist/UserCard-C1yFvVIc.cjs +0 -2
  716. package/dist/UserCard-C1yFvVIc.cjs.map +0 -1
  717. package/dist/UserCard-J8Bpbh3x.js +0 -74
  718. package/dist/UserCard-J8Bpbh3x.js.map +0 -1
  719. package/dist/messages-DKT0SRM0.cjs +0 -36
  720. package/dist/messages-DKT0SRM0.cjs.map +0 -1
  721. package/dist/messages-ogohLC5P.js.map +0 -1
@@ -0,0 +1,138 @@
1
+ import o from "dayjs";
2
+ import f from "dayjs/plugin/utc";
3
+ import p from "dayjs/plugin/customParseFormat";
4
+ o.extend(f);
5
+ o.extend(p);
6
+ const r = "YYYY-MM-DD";
7
+ function ct(t) {
8
+ if (!t) return null;
9
+ const s = o.utc(t, r, !0);
10
+ return s.isValid() ? s : null;
11
+ }
12
+ function et(t, s) {
13
+ const e = o.utc(t, s, !0);
14
+ return e.isValid() ? e : null;
15
+ }
16
+ const st = (t) => t.format(r);
17
+ function nt(t, s) {
18
+ if (!t) return null;
19
+ const e = o.utc(t, s, !0);
20
+ if (e.isValid()) return e;
21
+ const c = o.utc(t);
22
+ return c.isValid() ? c : null;
23
+ }
24
+ const ot = (t, s) => t.startOf("day").format(s), _ = () => o.utc(o().format(r), r), d = "YYYY-MM-DDTHH:mm:ss.SSS";
25
+ function rt(t) {
26
+ return t ? o.utc(t.local().format(d)) : null;
27
+ }
28
+ function at(t) {
29
+ return o(t.format(d)).utc();
30
+ }
31
+ function lt(t, s) {
32
+ if (!t) return null;
33
+ const e = o.utc(t, s, !0);
34
+ if (e.isValid()) return e;
35
+ const c = o.utc(`${_().format(r)}T${t}`);
36
+ if (c.isValid()) return c;
37
+ const n = o.utc(t);
38
+ return n.isValid() ? n : null;
39
+ }
40
+ function it(t, s, e = 1) {
41
+ if (e <= 0) return [];
42
+ const c = [];
43
+ for (let n = t; n <= s; n += e) c.push(n);
44
+ return c;
45
+ }
46
+ const _t = (t) => String(t).padStart(2, "0"), dt = (t) => t.replace(/[DMYHhms]/g, "9").replace(/A/g, "AA").replace(/a/g, "aa"), g = /[0-9]/, y = /[A-Za-z]/;
47
+ function ut(t, s) {
48
+ let e = "", c = 0;
49
+ for (const n of s)
50
+ if (n === "9") {
51
+ for (; c < t.length && !g.test(t[c]); ) c++;
52
+ if (c >= t.length) break;
53
+ e += t[c++];
54
+ } else if (n === "A" || n === "a") {
55
+ for (; c < t.length && !y.test(t[c]); ) c++;
56
+ if (c >= t.length) break;
57
+ e += n === "A" ? t[c++].toUpperCase() : t[c++].toLowerCase();
58
+ } else {
59
+ if (c >= t.length) break;
60
+ t[c] === n && c++, e += n;
61
+ }
62
+ return e;
63
+ }
64
+ function ft(t, s, e, c) {
65
+ return !!(s && t.isBefore(s, "day") || e && t.isAfter(e, "day") || c && c(t.format(r)));
66
+ }
67
+ function pt(t, s) {
68
+ const e = t.startOf("month"), c = (e.day() - s + 7) % 7, n = e.subtract(c, "day"), i = _(), l = t.month();
69
+ return Array.from({ length: 42 }, (R, u) => {
70
+ const a = n.add(u, "day");
71
+ return {
72
+ date: a,
73
+ iso: a.format(r),
74
+ inMonth: a.month() === l,
75
+ isToday: a.isSame(i, "day")
76
+ };
77
+ });
78
+ }
79
+ function gt(t, s, e) {
80
+ const c = Math.min(t ? t.year() : e - 100, e), n = Math.max(s ? s.year() : e + 100, e);
81
+ return Array.from({ length: n - c + 1 }, (i, l) => c + l);
82
+ }
83
+ const m = "_field_1scg0_1", k = "_fullWidth_1scg0_7", h = "_label_1scg0_12", S = "_required_1scg0_19", T = "_control_1scg0_25", b = "_open_1scg0_39", M = "_error_1scg0_43", A = "_disabled_1scg0_51", O = "_input_1scg0_59", V = "_clear_1scg0_79", D = "_calendarButton_1scg0_97", G = "_sm_1scg0_108", H = "_md_1scg0_112", I = "_lg_1scg0_116", Y = "_helper_1scg0_121", C = "_popover_1scg0_126", W = "_calendar_1scg0_97", B = "_calHeader_1scg0_136", L = "_calTitleGroup_1scg0_144", q = "_calTitle_1scg0_144", F = "_calTitleStatic_1scg0_173", x = "_weekdays_1scg0_180", P = "_week_1scg0_180", U = "_weekday_1scg0_180", $ = "_day_1scg0_196", j = "_dayOutside_1scg0_220", z = "_dayToday_1scg0_224", Z = "_daySelected_1scg0_224", w = "_dayDisabled_1scg0_235", E = "_pickGrid_1scg0_244", J = "_pickScroll_1scg0_249", K = "_pickCell_1scg0_255", N = "_pickToday_1scg0_278", Q = "_pickSelected_1scg0_281", yt = {
84
+ field: m,
85
+ fullWidth: k,
86
+ label: h,
87
+ required: S,
88
+ control: T,
89
+ open: b,
90
+ error: M,
91
+ disabled: A,
92
+ input: O,
93
+ clear: V,
94
+ calendarButton: D,
95
+ sm: G,
96
+ md: H,
97
+ lg: I,
98
+ helper: Y,
99
+ popover: C,
100
+ calendar: W,
101
+ calHeader: B,
102
+ calTitleGroup: L,
103
+ calTitle: q,
104
+ calTitleStatic: F,
105
+ weekdays: x,
106
+ week: P,
107
+ weekday: U,
108
+ day: $,
109
+ dayOutside: j,
110
+ dayToday: z,
111
+ daySelected: Z,
112
+ dayDisabled: w,
113
+ pickGrid: E,
114
+ pickScroll: J,
115
+ pickCell: K,
116
+ pickToday: N,
117
+ pickSelected: Q
118
+ };
119
+ export {
120
+ ct as a,
121
+ et as b,
122
+ ut as c,
123
+ st as d,
124
+ pt as e,
125
+ ot as f,
126
+ _t as g,
127
+ lt as h,
128
+ ft as i,
129
+ at as l,
130
+ dt as m,
131
+ nt as p,
132
+ it as r,
133
+ yt as s,
134
+ _ as t,
135
+ rt as u,
136
+ gt as y
137
+ };
138
+ //# sourceMappingURL=DatePicker.module-CMMQyEhG.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.module-BZDftL4g.js","sources":["../src/components/DatePicker/dateUtils.ts"],"sourcesContent":["/**\n * Date math for the date components, on top of dayjs (an optional peer dep). All calendar math runs\n * in **UTC** (via the `utc` plugin) so a calendar date never drifts with the viewer's timezone; the\n * public value is a plain ISO date string `'YYYY-MM-DD'`. Typed input is parsed strictly against a\n * display `format` (via the `customParseFormat` plugin).\n */\nimport dayjs, { type Dayjs } from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayjs.extend(utc)\ndayjs.extend(customParseFormat)\n\nexport type { Dayjs }\n\n/** The canonical value format (timezone-agnostic calendar date). */\nexport const ISO = 'YYYY-MM-DD'\n\n/** Parse an ISO `'YYYY-MM-DD'` value (UTC-anchored) into a dayjs, or `null` if empty/invalid. */\nexport function parseISO(value?: string | null): Dayjs | null {\n if (!value) return null\n const d = dayjs.utc(value, ISO, true)\n return d.isValid() ? d : null\n}\n\n/** Parse a user-typed string strictly against a display `format` (UTC), or `null`. */\nexport function parseInput(text: string, format: string): Dayjs | null {\n const d = dayjs.utc(text, format, true)\n return d.isValid() ? d : null\n}\n\nexport const toISO = (d: Dayjs): string => d.format(ISO)\n\n/**\n * Parse an incoming **value** leniently (UTC): the declared `valueFormat` first (strict), then any\n * ISO-8601 string — so a richer backend datetime such as `'2026-06-10T09:35:49.6134342'` is still\n * accepted (dayjs caps the fractional seconds at milliseconds). Returns `null` when empty/unparseable.\n */\nexport function parseValue(value: string | null | undefined, valueFormat: string): Dayjs | null {\n if (!value) return null\n const strict = dayjs.utc(value, valueFormat, true)\n if (strict.isValid()) return strict\n const lenient = dayjs.utc(value)\n return lenient.isValid() ? lenient : null\n}\n\n/**\n * Format a date to the I/O `valueFormat`, anchored to the **start of its UTC day** — a date picker\n * carries no time-of-day, so the emitted time is `00:00:00` (e.g. `valueFormat='YYYY-MM-DDTHH:mm:ss'`\n * → `'2026-06-10T00:00:00'`).\n */\nexport const formatValue = (d: Dayjs, valueFormat: string): string =>\n d.startOf('day').format(valueFormat)\n\n/** The viewer's local calendar date, anchored to UTC midnight for stable, drift-free math. */\nexport const today = (): Dayjs => dayjs.utc(dayjs().format(ISO), ISO)\n\nconst ISO_MS = 'YYYY-MM-DDTHH:mm:ss.SSS'\n\n/**\n * Convert a real UTC instant into a UTC-mode dayjs that **holds the viewer's local wall-clock** — so the\n * UTC-internal calendar/time machinery renders the viewer's local time while the stored value stays UTC\n * (the \"store UTC, show local\" pattern, used by `DateTimePicker`/`TimePicker`). Returns `null` for null.\n */\nexport function utcToLocalWall(instant: Dayjs | null): Dayjs | null {\n return instant ? dayjs.utc(instant.local().format(ISO_MS)) : null\n}\n\n/** Inverse of {@link utcToLocalWall}: a local-wall dayjs → the real UTC instant (for emitting). */\nexport function localWallToUtc(localWall: Dayjs): Dayjs {\n return dayjs(localWall.format(ISO_MS)).utc()\n}\n\n/**\n * Parse an incoming **time-of-day** value leniently (UTC): the declared `valueFormat` first (strict),\n * then a numeric time anchored to a fixed date (so `'09:35:49.6134342'` is accepted, ms-capped), then\n * any ISO-8601 datetime (its time is used). Only the time-of-day matters; the date part is ignored by\n * `TimePicker`. Returns `null` when empty/unparseable.\n */\nexport function parseTime(value: string | null | undefined, valueFormat: string): Dayjs | null {\n if (!value) return null\n const strict = dayjs.utc(value, valueFormat, true)\n if (strict.isValid()) return strict\n // anchor a bare time to today's date so any local-tz conversion uses the current offset\n const numeric = dayjs.utc(`${today().format(ISO)}T${value}`)\n if (numeric.isValid()) return numeric\n const lenient = dayjs.utc(value)\n return lenient.isValid() ? lenient : null\n}\n\n/** Inclusive numeric range `[start, end]` stepped by `step` — for the time-picker columns. A\n * non-positive `step` returns `[]` rather than looping forever. */\nexport function range(start: number, end: number, step = 1): number[] {\n if (step <= 0) return []\n const out: number[] = []\n for (let v = start; v <= end; v += step) out.push(v)\n return out\n}\n\n/** Zero-pads a number to two digits (`9` → `'09'`) for time-column display. */\nexport const pad2 = (n: number): string => String(n).padStart(2, '0')\n\n/**\n * Build an input mask from a date/time format: numeric tokens (`D M Y H h m s`) → `9` (digit slots),\n * the **uppercase** meridiem token `A` → `AA` and the **lowercase** `a` → `aa` (two letter slots for\n * `AM`/`PM`, matching dayjs's case-sensitive strict parse), everything else literal.\n * `'DD/MM/YYYY'` → `'99/99/9999'`; `'DD/MM/YYYY hh:mm A'` → `'99/99/9999 99:99 AA'`.\n */\nexport const maskFromFormat = (format: string): string =>\n format\n .replace(/[DMYHhms]/g, '9')\n .replace(/A/g, 'AA')\n .replace(/a/g, 'aa')\n\nconst DIGIT = /[0-9]/\nconst ALPHA = /[A-Za-z]/\n\n/**\n * Applies a mask to raw input: `9` = digit, `A` = letter forced upper-case, `a` = letter forced\n * lower-case (so a typed meridiem matches the format's case for dayjs), everything else a literal.\n */\nexport function applyMask(raw: string, mask: string): string {\n let out = ''\n let i = 0\n for (const m of mask) {\n if (m === '9') {\n while (i < raw.length && !DIGIT.test(raw[i])) i++\n if (i >= raw.length) break\n out += raw[i++]\n } else if (m === 'A' || m === 'a') {\n while (i < raw.length && !ALPHA.test(raw[i])) i++\n if (i >= raw.length) break\n out += m === 'A' ? raw[i++].toUpperCase() : raw[i++].toLowerCase()\n } else {\n if (i >= raw.length) break\n if (raw[i] === m) i++\n out += m\n }\n }\n return out\n}\n\n/** True when `d` falls outside `[min, max]` or is rejected by `disabledDate`. */\nexport function isDisabled(\n d: Dayjs,\n min: Dayjs | null,\n max: Dayjs | null,\n disabledDate?: (iso: string) => boolean,\n): boolean {\n if (min && d.isBefore(min, 'day')) return true\n if (max && d.isAfter(max, 'day')) return true\n if (disabledDate && disabledDate(d.format(ISO))) return true\n return false\n}\n\n/** A single cell in the month grid. */\nexport interface CalendarDay {\n date: Dayjs\n iso: string\n /** Belongs to the month being displayed (vs. a leading/trailing day from an adjacent month). */\n inMonth: boolean\n isToday: boolean\n}\n\n/**\n * Builds a fixed 6×7 (42-cell) grid for the month containing `monthDate`, with weeks starting on\n * `weekStartsOn` (0 = Sunday … 6 = Saturday). Fixed height avoids layout shift between months.\n */\nexport function buildMonthGrid(monthDate: Dayjs, weekStartsOn: number): CalendarDay[] {\n const firstOfMonth = monthDate.startOf('month')\n const lead = (firstOfMonth.day() - weekStartsOn + 7) % 7\n const start = firstOfMonth.subtract(lead, 'day')\n const now = today()\n const month = monthDate.month()\n return Array.from({ length: 42 }, (_, i) => {\n const date = start.add(i, 'day')\n return {\n date,\n iso: date.format(ISO),\n inMonth: date.month() === month,\n isToday: date.isSame(now, 'day'),\n }\n })\n}\n\n/** Short weekday header labels, ordered from `weekStartsOn`. */\nexport function weekdayLabels(weekStartsOn: number): string[] {\n return Array.from({ length: 7 }, (_, i) =>\n dayjs\n .utc()\n .day((weekStartsOn + i) % 7)\n .format('dd'),\n )\n}\n\n/** Full month names (`'January'…'December'`), index 0–11, for the month-picker view. */\nexport function monthLabels(): string[] {\n return Array.from({ length: 12 }, (_, m) => dayjs.utc().month(m).format('MMMM'))\n}\n\n/**\n * The list of selectable years for the (scrollable) year-picker view: bounded by `min`/`max` when\n * given, otherwise ±100 around `viewYear`. Always widened to include `viewYear` so the roving focus\n * has a cell to land on.\n */\nexport function yearList(min: Dayjs | null, max: Dayjs | null, viewYear: number): number[] {\n const start = Math.min(min ? min.year() : viewYear - 100, viewYear)\n const end = Math.max(max ? max.year() : viewYear + 100, viewYear)\n return Array.from({ length: end - start + 1 }, (_, i) => start + i)\n}\n"],"names":["dayjs","utc","customParseFormat","ISO","parseISO","value","d","parseInput","text","format","toISO","parseValue","valueFormat","strict","lenient","formatValue","today","ISO_MS","utcToLocalWall","instant","localWallToUtc","localWall","parseTime","numeric","range","start","end","step","out","v","pad2","n","maskFromFormat","DIGIT","ALPHA","applyMask","raw","mask","i","m","isDisabled","min","max","disabledDate","buildMonthGrid","monthDate","weekStartsOn","firstOfMonth","lead","now","month","_","date","yearList","viewYear"],"mappings":"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"}
1
+ {"version":3,"file":"DatePicker.module-CMMQyEhG.js","sources":["../src/components/DatePicker/dateUtils.ts"],"sourcesContent":["/**\n * Date math for the date components, on top of dayjs (an optional peer dep). All calendar math runs\n * in **UTC** (via the `utc` plugin) so a calendar date never drifts with the viewer's timezone; the\n * public value is a plain ISO date string `'YYYY-MM-DD'`. Typed input is parsed strictly against a\n * display `format` (via the `customParseFormat` plugin).\n */\nimport dayjs, { type Dayjs } from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayjs.extend(utc)\ndayjs.extend(customParseFormat)\n\nexport type { Dayjs }\n\n/** The canonical value format (timezone-agnostic calendar date). */\nexport const ISO = 'YYYY-MM-DD'\n\n/** Parse an ISO `'YYYY-MM-DD'` value (UTC-anchored) into a dayjs, or `null` if empty/invalid. */\nexport function parseISO(value?: string | null): Dayjs | null {\n if (!value) return null\n const d = dayjs.utc(value, ISO, true)\n return d.isValid() ? d : null\n}\n\n/** Parse a user-typed string strictly against a display `format` (UTC), or `null`. */\nexport function parseInput(text: string, format: string): Dayjs | null {\n const d = dayjs.utc(text, format, true)\n return d.isValid() ? d : null\n}\n\nexport const toISO = (d: Dayjs): string => d.format(ISO)\n\n/**\n * Parse an incoming **value** leniently (UTC): the declared `valueFormat` first (strict), then any\n * ISO-8601 string — so a richer backend datetime such as `'2026-06-10T09:35:49.6134342'` is still\n * accepted (dayjs caps the fractional seconds at milliseconds). Returns `null` when empty/unparseable.\n */\nexport function parseValue(value: string | null | undefined, valueFormat: string): Dayjs | null {\n if (!value) return null\n const strict = dayjs.utc(value, valueFormat, true)\n if (strict.isValid()) return strict\n const lenient = dayjs.utc(value)\n return lenient.isValid() ? lenient : null\n}\n\n/**\n * Format a date to the I/O `valueFormat`, anchored to the **start of its UTC day** — a date picker\n * carries no time-of-day, so the emitted time is `00:00:00` (e.g. `valueFormat='YYYY-MM-DDTHH:mm:ss'`\n * → `'2026-06-10T00:00:00'`).\n */\nexport const formatValue = (d: Dayjs, valueFormat: string): string =>\n d.startOf('day').format(valueFormat)\n\n/** The viewer's local calendar date, anchored to UTC midnight for stable, drift-free math. */\nexport const today = (): Dayjs => dayjs.utc(dayjs().format(ISO), ISO)\n\nconst ISO_MS = 'YYYY-MM-DDTHH:mm:ss.SSS'\n\n/**\n * Convert a real UTC instant into a UTC-mode dayjs that **holds the viewer's local wall-clock** — so the\n * UTC-internal calendar/time machinery renders the viewer's local time while the stored value stays UTC\n * (the \"store UTC, show local\" pattern, used by `DateTimePicker`/`TimePicker`). Returns `null` for null.\n */\nexport function utcToLocalWall(instant: Dayjs | null): Dayjs | null {\n return instant ? dayjs.utc(instant.local().format(ISO_MS)) : null\n}\n\n/** Inverse of {@link utcToLocalWall}: a local-wall dayjs → the real UTC instant (for emitting). */\nexport function localWallToUtc(localWall: Dayjs): Dayjs {\n return dayjs(localWall.format(ISO_MS)).utc()\n}\n\n/**\n * Parse an incoming **time-of-day** value leniently (UTC): the declared `valueFormat` first (strict),\n * then a numeric time anchored to a fixed date (so `'09:35:49.6134342'` is accepted, ms-capped), then\n * any ISO-8601 datetime (its time is used). Only the time-of-day matters; the date part is ignored by\n * `TimePicker`. Returns `null` when empty/unparseable.\n */\nexport function parseTime(value: string | null | undefined, valueFormat: string): Dayjs | null {\n if (!value) return null\n const strict = dayjs.utc(value, valueFormat, true)\n if (strict.isValid()) return strict\n // anchor a bare time to today's date so any local-tz conversion uses the current offset\n const numeric = dayjs.utc(`${today().format(ISO)}T${value}`)\n if (numeric.isValid()) return numeric\n const lenient = dayjs.utc(value)\n return lenient.isValid() ? lenient : null\n}\n\n/** Inclusive numeric range `[start, end]` stepped by `step` — for the time-picker columns. A\n * non-positive `step` returns `[]` rather than looping forever. */\nexport function range(start: number, end: number, step = 1): number[] {\n if (step <= 0) return []\n const out: number[] = []\n for (let v = start; v <= end; v += step) out.push(v)\n return out\n}\n\n/** Zero-pads a number to two digits (`9` → `'09'`) for time-column display. */\nexport const pad2 = (n: number): string => String(n).padStart(2, '0')\n\n/**\n * Build an input mask from a date/time format: numeric tokens (`D M Y H h m s`) → `9` (digit slots),\n * the **uppercase** meridiem token `A` → `AA` and the **lowercase** `a` → `aa` (two letter slots for\n * `AM`/`PM`, matching dayjs's case-sensitive strict parse), everything else literal.\n * `'DD/MM/YYYY'` → `'99/99/9999'`; `'DD/MM/YYYY hh:mm A'` → `'99/99/9999 99:99 AA'`.\n */\nexport const maskFromFormat = (format: string): string =>\n format\n .replace(/[DMYHhms]/g, '9')\n .replace(/A/g, 'AA')\n .replace(/a/g, 'aa')\n\nconst DIGIT = /[0-9]/\nconst ALPHA = /[A-Za-z]/\n\n/**\n * Applies a mask to raw input: `9` = digit, `A` = letter forced upper-case, `a` = letter forced\n * lower-case (so a typed meridiem matches the format's case for dayjs), everything else a literal.\n */\nexport function applyMask(raw: string, mask: string): string {\n let out = ''\n let i = 0\n for (const m of mask) {\n if (m === '9') {\n while (i < raw.length && !DIGIT.test(raw[i])) i++\n if (i >= raw.length) break\n out += raw[i++]\n } else if (m === 'A' || m === 'a') {\n while (i < raw.length && !ALPHA.test(raw[i])) i++\n if (i >= raw.length) break\n out += m === 'A' ? raw[i++].toUpperCase() : raw[i++].toLowerCase()\n } else {\n if (i >= raw.length) break\n if (raw[i] === m) i++\n out += m\n }\n }\n return out\n}\n\n/** True when `d` falls outside `[min, max]` or is rejected by `disabledDate`. */\nexport function isDisabled(\n d: Dayjs,\n min: Dayjs | null,\n max: Dayjs | null,\n disabledDate?: (iso: string) => boolean,\n): boolean {\n if (min && d.isBefore(min, 'day')) return true\n if (max && d.isAfter(max, 'day')) return true\n if (disabledDate && disabledDate(d.format(ISO))) return true\n return false\n}\n\n/** A single cell in the month grid. */\nexport interface CalendarDay {\n date: Dayjs\n iso: string\n /** Belongs to the month being displayed (vs. a leading/trailing day from an adjacent month). */\n inMonth: boolean\n isToday: boolean\n}\n\n/**\n * Builds a fixed 6×7 (42-cell) grid for the month containing `monthDate`, with weeks starting on\n * `weekStartsOn` (0 = Sunday … 6 = Saturday). Fixed height avoids layout shift between months.\n */\nexport function buildMonthGrid(monthDate: Dayjs, weekStartsOn: number): CalendarDay[] {\n const firstOfMonth = monthDate.startOf('month')\n const lead = (firstOfMonth.day() - weekStartsOn + 7) % 7\n const start = firstOfMonth.subtract(lead, 'day')\n const now = today()\n const month = monthDate.month()\n return Array.from({ length: 42 }, (_, i) => {\n const date = start.add(i, 'day')\n return {\n date,\n iso: date.format(ISO),\n inMonth: date.month() === month,\n isToday: date.isSame(now, 'day'),\n }\n })\n}\n\n/** Short weekday header labels, ordered from `weekStartsOn`. */\nexport function weekdayLabels(weekStartsOn: number): string[] {\n return Array.from({ length: 7 }, (_, i) =>\n dayjs\n .utc()\n .day((weekStartsOn + i) % 7)\n .format('dd'),\n )\n}\n\n/** Full month names (`'January'…'December'`), index 0–11, for the month-picker view. */\nexport function monthLabels(): string[] {\n return Array.from({ length: 12 }, (_, m) => dayjs.utc().month(m).format('MMMM'))\n}\n\n/**\n * The list of selectable years for the (scrollable) year-picker view: bounded by `min`/`max` when\n * given, otherwise ±100 around `viewYear`. Always widened to include `viewYear` so the roving focus\n * has a cell to land on.\n */\nexport function yearList(min: Dayjs | null, max: Dayjs | null, viewYear: number): number[] {\n const start = Math.min(min ? min.year() : viewYear - 100, viewYear)\n const end = Math.max(max ? max.year() : viewYear + 100, viewYear)\n return Array.from({ length: end - start + 1 }, (_, i) => start + i)\n}\n"],"names":["dayjs","utc","customParseFormat","ISO","parseISO","value","d","parseInput","text","format","toISO","parseValue","valueFormat","strict","lenient","formatValue","today","ISO_MS","utcToLocalWall","instant","localWallToUtc","localWall","parseTime","numeric","range","start","end","step","out","v","pad2","n","maskFromFormat","DIGIT","ALPHA","applyMask","raw","mask","i","m","isDisabled","min","max","disabledDate","buildMonthGrid","monthDate","weekStartsOn","firstOfMonth","lead","now","month","_","date","yearList","viewYear"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const r=require("react/jsx-runtime"),a=require("react"),A=require("clsx"),Ne=require("./formContext-bTWrqdEV.cjs"),Re=require("./FloatingPanel-U6sGYiSK.cjs"),Ye=require("./Button-CXmDOzPk.cjs"),te=require("./Icon-BVULqOJD.cjs"),He=require("./IconButton-BN-bZxEi.cjs"),Ve=require("./Tabs-BiKDy_fv.cjs"),se=require("./Typography-BFatE1_A.cjs"),Ee=require("./Calendar-B2nMXk4C.cjs"),t=require("./DatePicker.module-tE-tGNBd.cjs"),y=require("./TimeColumns-DxVN0V8l.cjs"),Oe=require("./ConfigProvider-Bszl3Wr3.cjs");function we(L,u){return`DD/MM/YYYY ${L?u?"hh:mm:ss A":"hh:mm A":u?"HH:mm:ss":"HH:mm"}`}const We=a.forwardRef(function({label:u,size:v="md",error:re,helperText:ae,required:oe=!1,fullWidth:ne=!0,disabled:x=!1,value:g,defaultValue:le,onChange:P,format:ce,valueFormat:ie,utc:F=!0,hour12:$=!1,minuteStep:ue=1,showSeconds:z=!0,placeholder:me,min:de,max:fe,disabledDate:S,weekStartsOn:pe=1,clearable:he=!0,name:m,id:ye,className:ve,style:xe},d){const i=Oe.useT(),Te=a.useId(),T=ye??Te,U=`${T}-helper`,Ce=`${T}-label`,c=ce??we($,z),f=ie??(F?"YYYY-MM-DDTHH:mm:ss[Z]":"YYYY-MM-DDTHH:mm:ss"),C=Ne.useFormContext(),b=!!(C&&m),l=b?C.field(m):void 0,be=g!==void 0?g:b?C.values[m]??"":void 0,K=g!==void 0||b,[je,ke]=a.useState(le??""),j=K?be:je,B=e=>F?t.utcToLocalWall(e):e,o=B(t.parseValue(j,f)),M=re??(l==null?void 0:l.error)??!1,N=ae??(l==null?void 0:l.helperText),R=B(t.parseValue(de,f)),Y=B(t.parseValue(fe,f)),Ie=t.maskFromFormat(c),qe=/s/.test(c)?"second":"minute",k=e=>{e!==j&&(K||ke(e),b&&C.setValue(m,e),P==null||P(e))},I=e=>{e&&o&&e.isSame(o,"second")||k(e?(F?t.localWallToUtc(e):e).format(f):"")},Z=e=>!o||!e.isSame(o,qe),[H,p]=a.useState(()=>o?o.format(c):"");a.useEffect(()=>{p(o?o.format(c):"")},[j,c,f]);const V=a.useRef(null),E=a.useRef(null),[h,_]=a.useState(!1),[De,G]=a.useState(()=>o??t.today()),[O,w]=a.useState("date"),W=a.useRef(!1),ge=a.useCallback(e=>{E.current=e,typeof d=="function"?d(e):d&&(d.current=e)},[d]),q=a.useRef(void 0);q.current=l?()=>l.onBlur({}):void 0;const D=a.useRef(null),J=a.useCallback(e=>{var s,n;_(!1),(s=q.current)==null||s.call(q),e&&((n=E.current)==null||n.focus())},[]);a.useEffect(()=>{h&&(G(o??t.today()),w("date"))},[h]),a.useEffect(()=>{var e,s;O==="time"&&W.current&&(W.current=!1,(s=(e=D.current)==null?void 0:e.querySelector('[role="tab"][aria-selected="true"]'))==null||s.focus())},[O,D]);const Q=e=>R&&e.isBefore(R,"day")||Y&&e.isAfter(Y,"day")?!0:!!(S&&S(t.toISO(e))),Pe=e=>{const s=t.applyMask(e,Ie);if(p(s),s===""){k("");return}const n=t.parseInput(s,c);n&&!Q(n)&&Z(n)&&I(n)},Fe=e=>{var X,ee;const s=t.parseInput(H,c);H===""?k(""):s&&!Q(s)?(Z(s)&&I(s),p(s.format(c))):p(o?o.format(c):"");const n=e.relatedTarget;n&&((X=D.current)!=null&&X.contains(n)||(ee=V.current)!=null&&ee.contains(n))||l==null||l.onBlur(e)},Se=e=>{const s=t.parseISO(e);if(!s)return;const n=o??t.today();I(s.hour(n.hour()).minute(n.minute()).second(n.second())),W.current=!0,w("time")},Be=e=>I(e),Me=v==="sm"?"sm":"md";return r.jsxs("div",{className:A.clsx(t.styles.field,t.styles[v],ne&&t.styles.fullWidth,M&&t.styles.error,x&&t.styles.disabled,ve),style:xe,children:[u!=null&&r.jsxs("label",{htmlFor:T,className:t.styles.label,children:[r.jsx(se.Typography,{as:"span",variant:"bodySmall",color:"muted",children:u}),oe&&r.jsx("span",{className:t.styles.required,"aria-hidden":"true",children:"*"})]}),r.jsxs("div",{ref:V,className:A.clsx(t.styles.control,h&&t.styles.open),children:[r.jsx("input",{ref:ge,id:T,name:m,className:t.styles.input,value:H,placeholder:me??c.toLowerCase(),disabled:x,autoComplete:"off","aria-invalid":M||void 0,"aria-describedby":N!=null?U:void 0,onChange:e=>Pe(e.target.value),onBlur:Fe}),he&&j!==""&&!x&&r.jsx("button",{type:"button",className:t.styles.clear,"aria-label":i("dateTimePicker.clear"),tabIndex:-1,onMouseDown:e=>e.preventDefault(),onClick:()=>{var e;k(""),p(""),(e=E.current)==null||e.focus()},children:r.jsx(te.Icon,{name:"CloseCircle",size:"sm"})}),r.jsx(He.IconButton,{type:"button",variant:"text",color:"primary",size:v,disabled:x,"aria-label":i("dateTimePicker.open"),"aria-haspopup":"dialog","aria-expanded":h,className:t.styles.calendarButton,onMouseDown:e=>e.preventDefault(),onClick:()=>_(e=>!e),children:r.jsx(te.Icon,{name:"Calendar3",size:Me})})]}),r.jsxs(Re.FloatingPanel,{ref:D,open:h,triggerRef:V,onClose:J,role:"dialog",ariaLabel:"Choose date and time",trapFocus:!0,className:A.clsx(t.styles.popover,y.dt.popover),children:[r.jsx(Ve.Tabs,{className:y.dt.tabs,"aria-label":i("dateTimePicker.label"),fullWidth:!0,autoFocus:!0,queryKey:null,value:O,onChange:e=>w(e),items:[{value:"date",label:i("dateTimePicker.dateTab"),icon:"Calendar3",content:r.jsx(Ee.Calendar,{value:o,month:De,onMonthChange:G,onSelect:Se,min:R,max:Y,disabledDate:S,weekStartsOn:pe,labelId:Ce})},{value:"time",label:i("dateTimePicker.timeTab"),icon:"Clock",content:r.jsx("div",{className:y.dt.timePane,children:r.jsx(y.TimeColumns,{value:o,onChange:Be,hour12:$,minuteStep:ue,showSeconds:z})})}]}),r.jsx("div",{className:y.dt.footer,children:r.jsx(Ye.Button,{size:"sm",variant:"filled",color:"primary",onClick:()=>J(!0),children:i("common.done")})})]}),N!=null&&r.jsx(se.Typography,{as:"span",id:U,variant:"bodySmall",color:M?"error":"muted",className:t.styles.helper,children:N})]})});exports.DateTimePicker=We;
2
- //# sourceMappingURL=DateTimePicker-COEj2Z0F.cjs.map
1
+ "use strict";const r=require("react/jsx-runtime"),a=require("react"),A=require("clsx"),Ne=require("./formContext-bTWrqdEV.cjs"),Re=require("./FloatingPanel-BIC4WrFa.cjs"),Ye=require("./Button-KRGjJdMV.cjs"),te=require("./Icon-BVULqOJD.cjs"),He=require("./IconButton-A2B0bqC-.cjs"),Ve=require("./Tabs-C1N9FgAq.cjs"),se=require("./Typography-B6ASPrzT.cjs"),Ee=require("./Calendar-CoTCOOUu.cjs"),t=require("./DatePicker.module-BDtTsg8M.cjs"),y=require("./TimeColumns-Cl0_IRf0.cjs"),Oe=require("./ConfigProvider-BElY0HuV.cjs");function we(L,u){return`DD/MM/YYYY ${L?u?"hh:mm:ss A":"hh:mm A":u?"HH:mm:ss":"HH:mm"}`}const We=a.forwardRef(function({label:u,size:v="md",error:re,helperText:ae,required:oe=!1,fullWidth:ne=!0,disabled:x=!1,value:g,defaultValue:le,onChange:P,format:ce,valueFormat:ie,utc:F=!0,hour12:$=!1,minuteStep:ue=1,showSeconds:z=!0,placeholder:me,min:de,max:fe,disabledDate:S,weekStartsOn:pe=1,clearable:he=!0,name:m,id:ye,className:ve,style:xe},d){const i=Oe.useT(),Te=a.useId(),T=ye??Te,U=`${T}-helper`,Ce=`${T}-label`,c=ce??we($,z),f=ie??(F?"YYYY-MM-DDTHH:mm:ss[Z]":"YYYY-MM-DDTHH:mm:ss"),C=Ne.useFormContext(),b=!!(C&&m),l=b?C.field(m):void 0,be=g!==void 0?g:b?C.values[m]??"":void 0,K=g!==void 0||b,[je,ke]=a.useState(le??""),j=K?be:je,B=e=>F?t.utcToLocalWall(e):e,o=B(t.parseValue(j,f)),M=re??(l==null?void 0:l.error)??!1,N=ae??(l==null?void 0:l.helperText),R=B(t.parseValue(de,f)),Y=B(t.parseValue(fe,f)),Ie=t.maskFromFormat(c),qe=/s/.test(c)?"second":"minute",k=e=>{e!==j&&(K||ke(e),b&&C.setValue(m,e),P==null||P(e))},I=e=>{e&&o&&e.isSame(o,"second")||k(e?(F?t.localWallToUtc(e):e).format(f):"")},Z=e=>!o||!e.isSame(o,qe),[H,p]=a.useState(()=>o?o.format(c):"");a.useEffect(()=>{p(o?o.format(c):"")},[j,c,f]);const V=a.useRef(null),E=a.useRef(null),[h,_]=a.useState(!1),[De,G]=a.useState(()=>o??t.today()),[O,w]=a.useState("date"),W=a.useRef(!1),ge=a.useCallback(e=>{E.current=e,typeof d=="function"?d(e):d&&(d.current=e)},[d]),q=a.useRef(void 0);q.current=l?()=>l.onBlur({}):void 0;const D=a.useRef(null),J=a.useCallback(e=>{var s,n;_(!1),(s=q.current)==null||s.call(q),e&&((n=E.current)==null||n.focus())},[]);a.useEffect(()=>{h&&(G(o??t.today()),w("date"))},[h]),a.useEffect(()=>{var e,s;O==="time"&&W.current&&(W.current=!1,(s=(e=D.current)==null?void 0:e.querySelector('[role="tab"][aria-selected="true"]'))==null||s.focus())},[O,D]);const Q=e=>R&&e.isBefore(R,"day")||Y&&e.isAfter(Y,"day")?!0:!!(S&&S(t.toISO(e))),Pe=e=>{const s=t.applyMask(e,Ie);if(p(s),s===""){k("");return}const n=t.parseInput(s,c);n&&!Q(n)&&Z(n)&&I(n)},Fe=e=>{var X,ee;const s=t.parseInput(H,c);H===""?k(""):s&&!Q(s)?(Z(s)&&I(s),p(s.format(c))):p(o?o.format(c):"");const n=e.relatedTarget;n&&((X=D.current)!=null&&X.contains(n)||(ee=V.current)!=null&&ee.contains(n))||l==null||l.onBlur(e)},Se=e=>{const s=t.parseISO(e);if(!s)return;const n=o??t.today();I(s.hour(n.hour()).minute(n.minute()).second(n.second())),W.current=!0,w("time")},Be=e=>I(e),Me=v==="sm"?"sm":"md";return r.jsxs("div",{className:A.clsx(t.styles.field,t.styles[v],ne&&t.styles.fullWidth,M&&t.styles.error,x&&t.styles.disabled,ve),style:xe,children:[u!=null&&r.jsxs("label",{htmlFor:T,className:t.styles.label,children:[r.jsx(se.Typography,{as:"span",variant:"bodySmall",color:"muted",children:u}),oe&&r.jsx("span",{className:t.styles.required,"aria-hidden":"true",children:"*"})]}),r.jsxs("div",{ref:V,className:A.clsx(t.styles.control,h&&t.styles.open),children:[r.jsx("input",{ref:ge,id:T,name:m,className:t.styles.input,value:H,placeholder:me??c.toLowerCase(),disabled:x,autoComplete:"off","aria-invalid":M||void 0,"aria-describedby":N!=null?U:void 0,onChange:e=>Pe(e.target.value),onBlur:Fe}),he&&j!==""&&!x&&r.jsx("button",{type:"button",className:t.styles.clear,"aria-label":i("dateTimePicker.clear"),tabIndex:-1,onMouseDown:e=>e.preventDefault(),onClick:()=>{var e;k(""),p(""),(e=E.current)==null||e.focus()},children:r.jsx(te.Icon,{name:"CloseCircle",size:"sm"})}),r.jsx(He.IconButton,{type:"button",variant:"text",color:"primary",size:v,disabled:x,"aria-label":i("dateTimePicker.open"),"aria-haspopup":"dialog","aria-expanded":h,className:t.styles.calendarButton,onMouseDown:e=>e.preventDefault(),onClick:()=>_(e=>!e),children:r.jsx(te.Icon,{name:"Calendar3",size:Me})})]}),r.jsxs(Re.FloatingPanel,{ref:D,open:h,triggerRef:V,onClose:J,role:"dialog",ariaLabel:"Choose date and time",trapFocus:!0,className:A.clsx(t.styles.popover,y.dt.popover),children:[r.jsx(Ve.Tabs,{className:y.dt.tabs,"aria-label":i("dateTimePicker.label"),fullWidth:!0,autoFocus:!0,queryKey:null,value:O,onChange:e=>w(e),items:[{value:"date",label:i("dateTimePicker.dateTab"),icon:"Calendar3",content:r.jsx(Ee.Calendar,{value:o,month:De,onMonthChange:G,onSelect:Se,min:R,max:Y,disabledDate:S,weekStartsOn:pe,labelId:Ce})},{value:"time",label:i("dateTimePicker.timeTab"),icon:"Clock",content:r.jsx("div",{className:y.dt.timePane,children:r.jsx(y.TimeColumns,{value:o,onChange:Be,hour12:$,minuteStep:ue,showSeconds:z})})}]}),r.jsx("div",{className:y.dt.footer,children:r.jsx(Ye.Button,{size:"sm",variant:"filled",color:"primary",onClick:()=>J(!0),children:i("common.done")})})]}),N!=null&&r.jsx(se.Typography,{as:"span",id:U,variant:"bodySmall",color:M?"error":"muted",className:t.styles.helper,children:N})]})});exports.DateTimePicker=We;
2
+ //# sourceMappingURL=DateTimePicker-DUFtddxJ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimePicker-COEj2Z0F.cjs","sources":["../src/components/DateTimePicker/DateTimePicker.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n type CSSProperties,\n type FocusEvent,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useT } from '../../theme'\nimport { useFormContext } from '../../form/formContext'\nimport { FloatingPanel } from '../FloatingPanel/FloatingPanel'\nimport { Button } from '../Button'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport { Tabs } from '../Tabs'\nimport { Typography } from '../Typography'\nimport { Calendar } from '../DatePicker/Calendar'\nimport {\n applyMask,\n localWallToUtc,\n maskFromFormat,\n parseISO,\n parseInput,\n parseValue,\n today,\n toISO,\n utcToLocalWall,\n type Dayjs,\n} from '../DatePicker/dateUtils'\nimport styles from '../DatePicker/DatePicker.module.css'\nimport dt from './DateTimePicker.module.css'\nimport { TimeColumns } from './TimeColumns'\n\nexport type DateTimePickerSize = 'sm' | 'md' | 'lg'\n\nexport interface DateTimePickerProps {\n /** Label rendered above the field. */\n label?: ReactNode\n /** Preset size — control height, font and calendar density. */\n size?: DateTimePickerSize\n /** Marks the field invalid: red border/ring + the `helperText` in the error color. */\n error?: boolean\n /** Helper / validation text under the field. Adopts the error color while `error`. */\n helperText?: ReactNode\n /** Adds a red asterisk after the label. */\n required?: boolean\n /** Stretches the field to fill its container width. Defaults to `true`. */\n fullWidth?: boolean\n /** Disables the field. */\n disabled?: boolean\n /** Controlled value — a datetime string in `valueFormat` (default ISO datetime; `''` = empty). */\n value?: string\n /** Initial value for uncontrolled use (in `valueFormat`). */\n defaultValue?: string\n /** Fires with the next datetime in `valueFormat` (`''` when cleared). */\n onChange?: (value: string) => void\n /**\n * Display + typed-input format (dayjs tokens). Defaults to `'DD/MM/YYYY HH:mm:ss'` (or `hh:mm:ss A`\n * when `hour12`; the `:ss` is dropped when `showSeconds` is `false`).\n */\n format?: string\n /**\n * Wire format of `value`/`defaultValue`/`onChange` (dayjs tokens), decoupled from the displayed\n * `format`. Defaults to the ISO datetime `'YYYY-MM-DDTHH:mm:ss[Z]'` when `utc` (the `Z` marks the\n * value as UTC, e.g. `'2026-06-10T09:35:00Z'`), or `'YYYY-MM-DDTHH:mm:ss'` (no `Z`) when `utc={false}`.\n * Incoming values are parsed **leniently** (this format, then any ISO-8601 string — so a backend\n * datetime like `'2026-06-10T09:35:49.6134342'` with or without `Z` is accepted).\n */\n valueFormat?: string\n /**\n * Treat the value as **UTC** and display/edit in the viewer's **local** timezone (default `true`).\n * Set `false` to disable timezone conversion entirely — the field shows and emits the value's exact\n * wall-clock (what you pick is what's sent, no UTC shift).\n */\n utc?: boolean\n /** 12-hour clock (1–12 + AM/PM) instead of 24-hour (0–23). Defaults to `false`. */\n hour12?: boolean\n /** Minute increment for the minutes column. Defaults to `1`. */\n minuteStep?: number\n /** Show the seconds column + `:ss` in the default format. Defaults to `true`; pass `false` to hide seconds. */\n showSeconds?: boolean\n /** Placeholder shown when empty. Defaults to the lowercased `format`. */\n placeholder?: string\n /** Earliest selectable date (ISO date or datetime; day-level bound on the calendar). */\n min?: string\n /** Latest selectable date (ISO date or datetime; day-level bound on the calendar). */\n max?: string\n /** Disables specific dates — receives each day as an ISO `'YYYY-MM-DD'` string. */\n disabledDate?: (date: string) => boolean\n /** First day of the week: 0 = Sunday … 6 = Saturday. Defaults to `1` (Monday). */\n weekStartsOn?: number\n /** Shows a clear (×) button when a value is set. Defaults to `true`. */\n clearable?: boolean\n /** Form field name — auto-binds to a surrounding `<Form>` (value is the datetime string). */\n name?: string\n /** Id for the input (label association). */\n id?: string\n className?: string\n style?: CSSProperties\n}\n\nfunction defaultFormatFor(hour12: boolean, showSeconds: boolean): string {\n const time = hour12\n ? showSeconds\n ? 'hh:mm:ss A'\n : 'hh:mm A'\n : showSeconds\n ? 'HH:mm:ss'\n : 'HH:mm'\n return `DD/MM/YYYY ${time}`\n}\n\n/**\n * A datetime field with a typed, masked input **and** a popover combining the keyboard-navigable\n * `Calendar` (date) with scrollable time columns (hour / minute / optional second + AM/PM in 12-hour\n * mode). All math runs in **UTC** so the instant never drifts with the viewer's timezone; the value is a\n * string in `valueFormat` (UTC ISO datetime with a `Z` by default, or no `Z` when `utc={false}`) — incoming values are parsed\n * leniently (a richer backend datetime is accepted) and the chosen instant is emitted in that format.\n * Picking a date keeps the time and vice-versa, and the popover stays open until you click away,\n * press Escape, or hit Done. Supports `hour12`, `minuteStep`, `showSeconds`, `min`/`max`,\n * `disabledDate`, `weekStartsOn`, and `clearable`. Controlled (`value` + `onChange`) or uncontrolled\n * (`defaultValue`), and binds to a surrounding `<Form>` by `name`. Requires the `dayjs` peer dependency.\n */\nexport const DateTimePicker = forwardRef<HTMLInputElement, DateTimePickerProps>(\n function DateTimePicker(\n {\n label,\n size = 'md',\n error,\n helperText,\n required = false,\n fullWidth = true,\n disabled = false,\n value,\n defaultValue,\n onChange,\n format: formatProp,\n valueFormat: valueFormatProp,\n utc = true,\n hour12 = false,\n minuteStep = 1,\n showSeconds = true,\n placeholder,\n min,\n max,\n disabledDate,\n weekStartsOn = 1,\n clearable = true,\n name,\n id: idProp,\n className,\n style,\n },\n ref,\n ) {\n const t = useT()\n const reactId = useId()\n const id = idProp ?? reactId\n const helperId = `${id}-helper`\n const labelId = `${id}-label`\n const format = formatProp ?? defaultFormatFor(hour12, showSeconds)\n // when the value is UTC, the wire string carries a `Z` (\"…09:35:00Z\"); `utc={false}` emits the\n // bare wall-clock (no zone designator). Override either via `valueFormat`.\n const valueFormat = valueFormatProp ?? (utc ? 'YYYY-MM-DDTHH:mm:ss[Z]' : 'YYYY-MM-DDTHH:mm:ss')\n\n // ── value (controlled / form-bound / uncontrolled) — a `valueFormat` datetime string ────────────\n const form = useFormContext()\n const isFormBound = Boolean(form && name)\n const bound = isFormBound ? form!.field(name!) : undefined\n const externalValue =\n value !== undefined\n ? value\n : isFormBound\n ? ((form!.values[name!] as string | undefined) ?? '')\n : undefined\n const isControlled = value !== undefined || isFormBound\n const [internal, setInternal] = useState<string>(defaultValue ?? '')\n const currentValue = isControlled ? externalValue! : internal\n // when `utc`, parse the UTC value and show it in the viewer's LOCAL time (value stays UTC, emit\n // converts back); when `utc={false}`, show/emit the value's exact wall-clock (no tz conversion)\n const toDisplay = (instant: Dayjs | null) => (utc ? utcToLocalWall(instant) : instant)\n const selected = toDisplay(parseValue(currentValue, valueFormat))\n\n const resolvedError = error ?? bound?.error ?? false\n const resolvedHelperText = helperText ?? bound?.helperText\n\n const minDate = toDisplay(parseValue(min, valueFormat))\n const maxDate = toDisplay(parseValue(max, valueFormat))\n const mask = maskFromFormat(format)\n // precision the user can actually type — driven by the display `format`, not just `showSeconds`\n const timeUnit = /s/.test(format) ? 'second' : 'minute'\n\n const commit = (next: string) => {\n if (next === currentValue) return // skip redundant onChange / setValue with an unchanged value\n if (!isControlled) setInternal(next)\n if (isFormBound) form!.setValue(name!, next)\n onChange?.(next)\n }\n\n // emit a datetime in the wire `valueFormat` (time preserved), or '' to clear. Re-picking the same\n // instant is a no-op (string equality alone would leak a spurious emit for sub-second source values)\n const commitDateTime = (d: Dayjs | null) => {\n if (d && selected && d.isSame(selected, 'second')) return\n // local-wall → UTC for the wire value (or emit the wall-clock as-is when `utc={false}`)\n commit(d ? (utc ? localWallToUtc(d) : d).format(valueFormat) : '')\n }\n\n // true when `d` differs from the current value at the input's precision — gates typed-input commits\n // so a no-op round-trip (focus/blur) never rewrites an unchanged value's finer time\n const changed = (d: Dayjs) => !selected || !d.isSame(selected, timeUnit)\n\n // input display text (kept in sync with the committed value; free while typing an incomplete value)\n const [inputText, setInputText] = useState<string>(() =>\n selected ? selected.format(format) : '',\n )\n useEffect(() => {\n setInputText(selected ? selected.format(format) : '')\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentValue, format, valueFormat])\n\n // ── popover ──────────────────────────────────────────────────────────────────────────────────\n const triggerRef = useRef<HTMLDivElement | null>(null)\n const inputRef = useRef<HTMLInputElement | null>(null)\n const [open, setOpen] = useState(false)\n const [viewMonth, setViewMonth] = useState<Dayjs>(() => selected ?? today())\n // which popover tab is active — controlled so picking a day can auto-advance to Time\n const [tab, setTab] = useState<'date' | 'time'>('date')\n const advanceRef = useRef(false) // set when a day-pick advances to Time → move focus there\n\n const setInputRef = useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) (ref as { current: HTMLInputElement | null }).current = node\n },\n [ref],\n )\n\n const fieldBlurRef = useRef<(() => void) | undefined>(undefined)\n fieldBlurRef.current = bound\n ? () => bound.onBlur({} as FocusEvent<HTMLInputElement>)\n : undefined\n\n // the floating panel forwards its node here, for the blur check + the auto-advance focus move\n const popoverRef = useRef<HTMLDivElement | null>(null)\n\n const closePopover = useCallback((refocus: boolean) => {\n setOpen(false)\n fieldBlurRef.current?.()\n if (refocus) inputRef.current?.focus()\n }, [])\n\n useEffect(() => {\n if (open) {\n setViewMonth(selected ?? today())\n setTab('date') // always open on the Date tab\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open])\n\n // after a day-pick auto-advances to the Time tab, move focus onto it so the focus trap holds\n // (the just-picked calendar cell has unmounted); a manual tab switch never triggers this\n useEffect(() => {\n if (tab === 'time' && advanceRef.current) {\n advanceRef.current = false\n popoverRef.current\n ?.querySelector<HTMLElement>('[role=\"tab\"][aria-selected=\"true\"]')\n ?.focus()\n }\n }, [tab, popoverRef])\n\n const isOutOfRange = (d: Dayjs): boolean => {\n if (minDate && d.isBefore(minDate, 'day')) return true\n if (maxDate && d.isAfter(maxDate, 'day')) return true\n return Boolean(disabledDate && disabledDate(toISO(d)))\n }\n\n const handleInputChange = (raw: string) => {\n const masked = applyMask(raw, mask)\n setInputText(masked)\n if (masked === '') {\n commit('') // emptying the field clears the value\n return\n }\n const parsed = parseInput(masked, format)\n if (parsed && !isOutOfRange(parsed) && changed(parsed)) commitDateTime(parsed)\n }\n\n const handleInputBlur = (event: FocusEvent<HTMLInputElement>) => {\n const parsed = parseInput(inputText, format)\n if (inputText === '') {\n commit('') // an emptied field stays cleared\n } else if (parsed && !isOutOfRange(parsed)) {\n if (changed(parsed)) commitDateTime(parsed)\n setInputText(parsed.format(format))\n } else {\n setInputText(selected ? selected.format(format) : '')\n }\n const nextEl = event.relatedTarget as Node | null\n if (nextEl && (popoverRef.current?.contains(nextEl) || triggerRef.current?.contains(nextEl)))\n return\n bound?.onBlur(event)\n }\n\n // picking a day keeps the current time; picking a time keeps the current day — the popover stays open\n const handleSelectDate = (iso: string) => {\n const date = parseISO(iso)\n if (!date) return\n const base = selected ?? today()\n commitDateTime(date.hour(base.hour()).minute(base.minute()).second(base.second()))\n advanceRef.current = true\n setTab('time') // picking a day advances to the Time tab\n }\n const handleTimeChange = (next: Dayjs) => commitDateTime(next)\n\n const iconSize: 'sm' | 'md' = size === 'sm' ? 'sm' : 'md'\n\n return (\n <div\n className={clsx(\n styles.field,\n styles[size],\n fullWidth && styles.fullWidth,\n resolvedError && styles.error,\n disabled && styles.disabled,\n className,\n )}\n style={style}\n >\n {label != null && (\n <label htmlFor={id} className={styles.label}>\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\">\n {label}\n </Typography>\n {required && (\n <span className={styles.required} aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n\n <div ref={triggerRef} className={clsx(styles.control, open && styles.open)}>\n <input\n ref={setInputRef}\n id={id}\n name={name}\n className={styles.input}\n value={inputText}\n placeholder={placeholder ?? format.toLowerCase()}\n disabled={disabled}\n autoComplete=\"off\"\n aria-invalid={resolvedError || undefined}\n aria-describedby={resolvedHelperText != null ? helperId : undefined}\n onChange={(e) => handleInputChange(e.target.value)}\n onBlur={handleInputBlur}\n />\n\n {clearable && currentValue !== '' && !disabled && (\n <button\n type=\"button\"\n className={styles.clear}\n aria-label={t('dateTimePicker.clear')}\n tabIndex={-1}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => {\n commit('')\n setInputText('')\n inputRef.current?.focus()\n }}\n >\n <Icon name=\"CloseCircle\" size=\"sm\" />\n </button>\n )}\n\n <IconButton\n type=\"button\"\n variant=\"text\"\n color=\"primary\"\n size={size}\n disabled={disabled}\n aria-label={t('dateTimePicker.open')}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n className={styles.calendarButton}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => setOpen((o) => !o)}\n >\n <Icon name=\"Calendar3\" size={iconSize} />\n </IconButton>\n </div>\n\n <FloatingPanel\n ref={popoverRef}\n open={open}\n triggerRef={triggerRef}\n onClose={closePopover}\n role=\"dialog\"\n ariaLabel=\"Choose date and time\"\n trapFocus\n className={clsx(styles.popover, dt.popover)}\n >\n <Tabs\n className={dt.tabs}\n aria-label={t('dateTimePicker.label')}\n fullWidth\n autoFocus\n // the Date/Time tabs are internal popover UI — never sync them to the page URL\n queryKey={null}\n value={tab}\n onChange={(v) => setTab(v as 'date' | 'time')}\n items={[\n {\n value: 'date',\n label: t('dateTimePicker.dateTab'),\n icon: 'Calendar3',\n content: (\n <Calendar\n value={selected}\n month={viewMonth}\n onMonthChange={setViewMonth}\n onSelect={handleSelectDate}\n min={minDate}\n max={maxDate}\n disabledDate={disabledDate}\n weekStartsOn={weekStartsOn}\n labelId={labelId}\n />\n ),\n },\n {\n value: 'time',\n label: t('dateTimePicker.timeTab'),\n icon: 'Clock',\n content: (\n <div className={dt.timePane}>\n <TimeColumns\n value={selected}\n onChange={handleTimeChange}\n hour12={hour12}\n minuteStep={minuteStep}\n showSeconds={showSeconds}\n />\n </div>\n ),\n },\n ]}\n />\n <div className={dt.footer}>\n <Button size=\"sm\" variant=\"filled\" color=\"primary\" onClick={() => closePopover(true)}>\n {t('common.done')}\n </Button>\n </div>\n </FloatingPanel>\n\n {resolvedHelperText != null && (\n <Typography\n as=\"span\"\n id={helperId}\n variant=\"bodySmall\"\n color={resolvedError ? 'error' : 'muted'}\n className={styles.helper}\n >\n {resolvedHelperText}\n </Typography>\n )}\n </div>\n )\n },\n)\n"],"names":["defaultFormatFor","hour12","showSeconds","DateTimePicker","forwardRef","label","size","error","helperText","required","fullWidth","disabled","value","defaultValue","onChange","formatProp","valueFormatProp","utc","minuteStep","placeholder","min","max","disabledDate","weekStartsOn","clearable","name","idProp","className","style","ref","t","useT","reactId","useId","id","helperId","labelId","format","valueFormat","form","useFormContext","isFormBound","bound","externalValue","isControlled","internal","setInternal","useState","currentValue","toDisplay","instant","utcToLocalWall","selected","parseValue","resolvedError","resolvedHelperText","minDate","maxDate","mask","maskFromFormat","timeUnit","commit","next","commitDateTime","d","localWallToUtc","changed","inputText","setInputText","useEffect","triggerRef","useRef","inputRef","open","setOpen","viewMonth","setViewMonth","today","tab","setTab","advanceRef","setInputRef","useCallback","node","fieldBlurRef","popoverRef","closePopover","refocus","_a","_b","isOutOfRange","toISO","handleInputChange","raw","masked","applyMask","parsed","parseInput","handleInputBlur","event","nextEl","handleSelectDate","iso","date","parseISO","base","handleTimeChange","iconSize","jsxs","clsx","styles","jsx","Typography","Icon","IconButton","o","FloatingPanel","dt","Tabs","v","Calendar","TimeColumns","Button"],"mappings":"2gBAyGA,SAASA,GAAiBC,EAAiBC,EAA8B,CAQvE,MAAO,cAPMD,EACTC,EACE,aACA,UACFA,EACE,WACA,OACmB,EAC3B,CAaO,MAAMC,GAAiBC,EAAAA,WAC5B,SACE,CACE,MAAAC,EACA,KAAAC,EAAO,KACP,MAAAC,GACA,WAAAC,GACA,SAAAC,GAAW,GACX,UAAAC,GAAY,GACZ,SAAAC,EAAW,GACX,MAAAC,EACA,aAAAC,GACA,SAAAC,EACA,OAAQC,GACR,YAAaC,GACb,IAAAC,EAAM,GACN,OAAAhB,EAAS,GACT,WAAAiB,GAAa,EACb,YAAAhB,EAAc,GACd,YAAAiB,GACA,IAAAC,GACA,IAAAC,GACA,aAAAC,EACA,aAAAC,GAAe,EACf,UAAAC,GAAY,GACZ,KAAAC,EACA,GAAIC,GACJ,UAAAC,GACA,MAAAC,EAAA,EAEFC,EACA,CACA,MAAMC,EAAIC,GAAAA,KAAA,EACJC,GAAUC,EAAAA,MAAA,EACVC,EAAKR,IAAUM,GACfG,EAAW,GAAGD,CAAE,UAChBE,GAAU,GAAGF,CAAE,SACfG,EAAStB,IAAcf,GAAiBC,EAAQC,CAAW,EAG3DoC,EAActB,KAAoBC,EAAM,yBAA2B,uBAGnEsB,EAAOC,GAAAA,eAAA,EACPC,EAAc,GAAQF,GAAQd,GAC9BiB,EAAQD,EAAcF,EAAM,MAAMd,CAAK,EAAI,OAC3CkB,GACJ/B,IAAU,OACNA,EACA6B,EACIF,EAAM,OAAOd,CAAK,GAA4B,GAChD,OACFmB,EAAehC,IAAU,QAAa6B,EACtC,CAACI,GAAUC,EAAW,EAAIC,EAAAA,SAAiBlC,IAAgB,EAAE,EAC7DmC,EAAeJ,EAAeD,GAAiBE,GAG/CI,EAAaC,GAA2BjC,EAAMkC,EAAAA,eAAeD,CAAO,EAAIA,EACxEE,EAAWH,EAAUI,EAAAA,WAAWL,EAAcV,CAAW,CAAC,EAE1DgB,EAAgB/C,KAASmC,GAAA,YAAAA,EAAO,QAAS,GACzCa,EAAqB/C,KAAckC,GAAA,YAAAA,EAAO,YAE1Cc,EAAUP,EAAUI,EAAAA,WAAWjC,GAAKkB,CAAW,CAAC,EAChDmB,EAAUR,EAAUI,EAAAA,WAAWhC,GAAKiB,CAAW,CAAC,EAChDoB,GAAOC,EAAAA,eAAetB,CAAM,EAE5BuB,GAAW,IAAI,KAAKvB,CAAM,EAAI,SAAW,SAEzCwB,EAAUC,GAAiB,CAC3BA,IAASd,IACRJ,GAAcE,GAAYgB,CAAI,EAC/BrB,GAAaF,EAAM,SAASd,EAAOqC,CAAI,EAC3ChD,GAAA,MAAAA,EAAWgD,GACb,EAIMC,EAAkBC,GAAoB,CACtCA,GAAKZ,GAAYY,EAAE,OAAOZ,EAAU,QAAQ,GAEhDS,EAAOG,GAAK/C,EAAMgD,iBAAeD,CAAC,EAAIA,GAAG,OAAO1B,CAAW,EAAI,EAAE,CACnE,EAIM4B,EAAWF,GAAa,CAACZ,GAAY,CAACY,EAAE,OAAOZ,EAAUQ,EAAQ,EAGjE,CAACO,EAAWC,CAAY,EAAIrB,EAAAA,SAAiB,IACjDK,EAAWA,EAAS,OAAOf,CAAM,EAAI,EAAA,EAEvCgC,EAAAA,UAAU,IAAM,CACdD,EAAahB,EAAWA,EAAS,OAAOf,CAAM,EAAI,EAAE,CAEtD,EAAG,CAACW,EAAcX,EAAQC,CAAW,CAAC,EAGtC,MAAMgC,EAAaC,EAAAA,OAA8B,IAAI,EAC/CC,EAAWD,EAAAA,OAAgC,IAAI,EAC/C,CAACE,EAAMC,CAAO,EAAI3B,EAAAA,SAAS,EAAK,EAChC,CAAC4B,GAAWC,CAAY,EAAI7B,EAAAA,SAAgB,IAAMK,GAAYyB,EAAAA,OAAO,EAErE,CAACC,EAAKC,CAAM,EAAIhC,EAAAA,SAA0B,MAAM,EAChDiC,EAAaT,EAAAA,OAAO,EAAK,EAEzBU,GAAcC,EAAAA,YACjBC,GAAkC,CACjCX,EAAS,QAAUW,EACf,OAAOtD,GAAQ,WAAYA,EAAIsD,CAAI,EAC9BtD,IAAMA,EAA6C,QAAUsD,EACxE,EACA,CAACtD,CAAG,CAAA,EAGAuD,EAAeb,EAAAA,OAAiC,MAAS,EAC/Da,EAAa,QAAU1C,EACnB,IAAMA,EAAM,OAAO,CAAA,CAAkC,EACrD,OAGJ,MAAM2C,EAAad,EAAAA,OAA8B,IAAI,EAE/Ce,EAAeJ,cAAaK,GAAqB,SACrDb,EAAQ,EAAK,GACbc,EAAAJ,EAAa,UAAb,MAAAI,EAAA,KAAAJ,GACIG,KAASE,EAAAjB,EAAS,UAAT,MAAAiB,EAAkB,QACjC,EAAG,CAAA,CAAE,EAELpB,EAAAA,UAAU,IAAM,CACVI,IACFG,EAAaxB,GAAYyB,EAAAA,OAAO,EAChCE,EAAO,MAAM,EAGjB,EAAG,CAACN,CAAI,CAAC,EAITJ,EAAAA,UAAU,IAAM,SACVS,IAAQ,QAAUE,EAAW,UAC/BA,EAAW,QAAU,IACrBS,GAAAD,EAAAH,EAAW,UAAX,YAAAG,EACI,cAA2B,wCAD/B,MAAAC,EAEI,QAER,EAAG,CAACX,EAAKO,CAAU,CAAC,EAEpB,MAAMK,EAAgB1B,GAChBR,GAAWQ,EAAE,SAASR,EAAS,KAAK,GACpCC,GAAWO,EAAE,QAAQP,EAAS,KAAK,EAAU,GAC1C,GAAQnC,GAAgBA,EAAaqE,EAAAA,MAAM3B,CAAC,CAAC,GAGhD4B,GAAqBC,GAAgB,CACzC,MAAMC,EAASC,EAAAA,UAAUF,EAAKnC,EAAI,EAElC,GADAU,EAAa0B,CAAM,EACfA,IAAW,GAAI,CACjBjC,EAAO,EAAE,EACT,MACF,CACA,MAAMmC,EAASC,EAAAA,WAAWH,EAAQzD,CAAM,EACpC2D,GAAU,CAACN,EAAaM,CAAM,GAAK9B,EAAQ8B,CAAM,GAAGjC,EAAeiC,CAAM,CAC/E,EAEME,GAAmBC,GAAwC,UAC/D,MAAMH,EAASC,EAAAA,WAAW9B,EAAW9B,CAAM,EACvC8B,IAAc,GAChBN,EAAO,EAAE,EACAmC,GAAU,CAACN,EAAaM,CAAM,GACnC9B,EAAQ8B,CAAM,GAAGjC,EAAeiC,CAAM,EAC1C5B,EAAa4B,EAAO,OAAO3D,CAAM,CAAC,GAElC+B,EAAahB,EAAWA,EAAS,OAAOf,CAAM,EAAI,EAAE,EAEtD,MAAM+D,EAASD,EAAM,cACjBC,KAAWZ,EAAAH,EAAW,UAAX,MAAAG,EAAoB,SAASY,KAAWX,GAAAnB,EAAW,UAAX,MAAAmB,GAAoB,SAASW,KAEpF1D,GAAA,MAAAA,EAAO,OAAOyD,EAChB,EAGME,GAAoBC,GAAgB,CACxC,MAAMC,EAAOC,EAAAA,SAASF,CAAG,EACzB,GAAI,CAACC,EAAM,OACX,MAAME,EAAOrD,GAAYyB,QAAA,EACzBd,EAAewC,EAAK,KAAKE,EAAK,KAAA,CAAM,EAAE,OAAOA,EAAK,OAAA,CAAQ,EAAE,OAAOA,EAAK,OAAA,CAAQ,CAAC,EACjFzB,EAAW,QAAU,GACrBD,EAAO,MAAM,CACf,EACM2B,GAAoB5C,GAAgBC,EAAeD,CAAI,EAEvD6C,GAAwBrG,IAAS,KAAO,KAAO,KAErD,OACEsG,EAAAA,KAAC,MAAA,CACC,UAAWC,EAAAA,KACTC,EAAAA,OAAO,MACPA,EAAAA,OAAOxG,CAAI,EACXI,IAAaoG,EAAAA,OAAO,UACpBxD,GAAiBwD,EAAAA,OAAO,MACxBnG,GAAYmG,EAAAA,OAAO,SACnBnF,EAAA,EAEF,MAAAC,GAEC,SAAA,CAAAvB,GAAS,MACRuG,OAAC,QAAA,CAAM,QAAS1E,EAAI,UAAW4E,EAAAA,OAAO,MACpC,SAAA,CAAAC,EAAAA,IAACC,GAAAA,YAAW,GAAG,OAAO,QAAQ,YAAY,MAAM,QAC7C,SAAA3G,CAAA,CACH,EACCI,UACE,OAAA,CAAK,UAAWqG,EAAAA,OAAO,SAAU,cAAY,OAAO,SAAA,GAAA,CAErD,CAAA,EAEJ,EAGFF,EAAAA,KAAC,MAAA,CAAI,IAAKtC,EAAY,UAAWuC,EAAAA,KAAKC,EAAAA,OAAO,QAASrC,GAAQqC,EAAAA,OAAO,IAAI,EACvE,SAAA,CAAAC,EAAAA,IAAC,QAAA,CACC,IAAK9B,GACL,GAAA/C,EACA,KAAAT,EACA,UAAWqF,EAAAA,OAAO,MAClB,MAAO3C,EACP,YAAahD,IAAekB,EAAO,YAAA,EACnC,SAAA1B,EACA,aAAa,MACb,eAAc2C,GAAiB,OAC/B,mBAAkBC,GAAsB,KAAOpB,EAAW,OAC1D,SAAW,GAAMyD,GAAkB,EAAE,OAAO,KAAK,EACjD,OAAQM,EAAA,CAAA,EAGT1E,IAAawB,IAAiB,IAAM,CAACrC,GACpCoG,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAWD,EAAAA,OAAO,MAClB,aAAYhF,EAAE,sBAAsB,EACpC,SAAU,GACV,YAAc,GAAM,EAAE,eAAA,EACtB,QAAS,IAAM,OACb+B,EAAO,EAAE,EACTO,EAAa,EAAE,GACfoB,EAAAhB,EAAS,UAAT,MAAAgB,EAAkB,OACpB,EAEA,SAAAuB,EAAAA,IAACE,QAAA,CAAK,KAAK,cAAc,KAAK,IAAA,CAAK,CAAA,CAAA,EAIvCF,EAAAA,IAACG,GAAAA,WAAA,CACC,KAAK,SACL,QAAQ,OACR,MAAM,UACN,KAAA5G,EACA,SAAAK,EACA,aAAYmB,EAAE,qBAAqB,EACnC,gBAAc,SACd,gBAAe2C,EACf,UAAWqC,EAAAA,OAAO,eAClB,YAAc,GAAM,EAAE,eAAA,EACtB,QAAS,IAAMpC,EAASyC,GAAM,CAACA,CAAC,EAEhC,SAAAJ,EAAAA,IAACE,QAAA,CAAK,KAAK,YAAY,KAAMN,EAAA,CAAU,CAAA,CAAA,CACzC,EACF,EAEAC,EAAAA,KAACQ,GAAAA,cAAA,CACC,IAAK/B,EACL,KAAAZ,EACA,WAAAH,EACA,QAASgB,EACT,KAAK,SACL,UAAU,uBACV,UAAS,GACT,UAAWuB,EAAAA,KAAKC,EAAAA,OAAO,QAASO,EAAAA,GAAG,OAAO,EAE1C,SAAA,CAAAN,EAAAA,IAACO,GAAAA,KAAA,CACC,UAAWD,EAAAA,GAAG,KACd,aAAYvF,EAAE,sBAAsB,EACpC,UAAS,GACT,UAAS,GAET,SAAU,KACV,MAAOgD,EACP,SAAWyC,GAAMxC,EAAOwC,CAAoB,EAC5C,MAAO,CACL,CACE,MAAO,OACP,MAAOzF,EAAE,wBAAwB,EACjC,KAAM,YACN,QACEiF,EAAAA,IAACS,GAAAA,SAAA,CACC,MAAOpE,EACP,MAAOuB,GACP,cAAeC,EACf,SAAUyB,GACV,IAAK7C,EACL,IAAKC,EACL,aAAAnC,EACA,aAAAC,GACA,QAAAa,EAAA,CAAA,CACF,EAGJ,CACE,MAAO,OACP,MAAON,EAAE,wBAAwB,EACjC,KAAM,QACN,QACEiF,EAAAA,IAAC,MAAA,CAAI,UAAWM,KAAG,SACjB,SAAAN,EAAAA,IAACU,EAAAA,YAAA,CACC,MAAOrE,EACP,SAAUsD,GACV,OAAAzG,EACA,WAAAiB,GACA,YAAAhB,CAAA,CAAA,CACF,CACF,CAAA,CAEJ,CACF,CAAA,EAEF6G,EAAAA,IAAC,OAAI,UAAWM,KAAG,OACjB,SAAAN,MAACW,GAAAA,OAAA,CAAO,KAAK,KAAK,QAAQ,SAAS,MAAM,UAAU,QAAS,IAAMpC,EAAa,EAAI,EAChF,SAAAxD,EAAE,aAAa,CAAA,CAClB,CAAA,CACF,CAAA,CAAA,CAAA,EAGDyB,GAAsB,MACrBwD,EAAAA,IAACC,GAAAA,WAAA,CACC,GAAG,OACH,GAAI7E,EACJ,QAAQ,YACR,MAAOmB,EAAgB,QAAU,QACjC,UAAWwD,EAAAA,OAAO,OAEjB,SAAAvD,CAAA,CAAA,CACH,CAAA,CAAA,CAIR,CACF"}
1
+ {"version":3,"file":"DateTimePicker-DUFtddxJ.cjs","sources":["../src/components/DateTimePicker/DateTimePicker.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n type CSSProperties,\n type FocusEvent,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useT } from '../../theme'\nimport { useFormContext } from '../../form/formContext'\nimport { FloatingPanel } from '../FloatingPanel/FloatingPanel'\nimport { Button } from '../Button'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport { Tabs } from '../Tabs'\nimport { Typography } from '../Typography'\nimport { Calendar } from '../DatePicker/Calendar'\nimport {\n applyMask,\n localWallToUtc,\n maskFromFormat,\n parseISO,\n parseInput,\n parseValue,\n today,\n toISO,\n utcToLocalWall,\n type Dayjs,\n} from '../DatePicker/dateUtils'\nimport styles from '../DatePicker/DatePicker.module.css'\nimport dt from './DateTimePicker.module.css'\nimport { TimeColumns } from './TimeColumns'\n\nexport type DateTimePickerSize = 'sm' | 'md' | 'lg'\n\nexport interface DateTimePickerProps {\n /** Label rendered above the field. */\n label?: ReactNode\n /** Preset size — control height, font and calendar density. */\n size?: DateTimePickerSize\n /** Marks the field invalid: red border/ring + the `helperText` in the error color. */\n error?: boolean\n /** Helper / validation text under the field. Adopts the error color while `error`. */\n helperText?: ReactNode\n /** Adds a red asterisk after the label. */\n required?: boolean\n /** Stretches the field to fill its container width. Defaults to `true`. */\n fullWidth?: boolean\n /** Disables the field. */\n disabled?: boolean\n /** Controlled value — a datetime string in `valueFormat` (default ISO datetime; `''` = empty). */\n value?: string\n /** Initial value for uncontrolled use (in `valueFormat`). */\n defaultValue?: string\n /** Fires with the next datetime in `valueFormat` (`''` when cleared). */\n onChange?: (value: string) => void\n /**\n * Display + typed-input format (dayjs tokens). Defaults to `'DD/MM/YYYY HH:mm:ss'` (or `hh:mm:ss A`\n * when `hour12`; the `:ss` is dropped when `showSeconds` is `false`).\n */\n format?: string\n /**\n * Wire format of `value`/`defaultValue`/`onChange` (dayjs tokens), decoupled from the displayed\n * `format`. Defaults to the ISO datetime `'YYYY-MM-DDTHH:mm:ss[Z]'` when `utc` (the `Z` marks the\n * value as UTC, e.g. `'2026-06-10T09:35:00Z'`), or `'YYYY-MM-DDTHH:mm:ss'` (no `Z`) when `utc={false}`.\n * Incoming values are parsed **leniently** (this format, then any ISO-8601 string — so a backend\n * datetime like `'2026-06-10T09:35:49.6134342'` with or without `Z` is accepted).\n */\n valueFormat?: string\n /**\n * Treat the value as **UTC** and display/edit in the viewer's **local** timezone (default `true`).\n * Set `false` to disable timezone conversion entirely — the field shows and emits the value's exact\n * wall-clock (what you pick is what's sent, no UTC shift).\n */\n utc?: boolean\n /** 12-hour clock (1–12 + AM/PM) instead of 24-hour (0–23). Defaults to `false`. */\n hour12?: boolean\n /** Minute increment for the minutes column. Defaults to `1`. */\n minuteStep?: number\n /** Show the seconds column + `:ss` in the default format. Defaults to `true`; pass `false` to hide seconds. */\n showSeconds?: boolean\n /** Placeholder shown when empty. Defaults to the lowercased `format`. */\n placeholder?: string\n /** Earliest selectable date (ISO date or datetime; day-level bound on the calendar). */\n min?: string\n /** Latest selectable date (ISO date or datetime; day-level bound on the calendar). */\n max?: string\n /** Disables specific dates — receives each day as an ISO `'YYYY-MM-DD'` string. */\n disabledDate?: (date: string) => boolean\n /** First day of the week: 0 = Sunday … 6 = Saturday. Defaults to `1` (Monday). */\n weekStartsOn?: number\n /** Shows a clear (×) button when a value is set. Defaults to `true`. */\n clearable?: boolean\n /** Form field name — auto-binds to a surrounding `<Form>` (value is the datetime string). */\n name?: string\n /** Id for the input (label association). */\n id?: string\n className?: string\n style?: CSSProperties\n}\n\nfunction defaultFormatFor(hour12: boolean, showSeconds: boolean): string {\n const time = hour12\n ? showSeconds\n ? 'hh:mm:ss A'\n : 'hh:mm A'\n : showSeconds\n ? 'HH:mm:ss'\n : 'HH:mm'\n return `DD/MM/YYYY ${time}`\n}\n\n/**\n * A datetime field with a typed, masked input **and** a popover combining the keyboard-navigable\n * `Calendar` (date) with scrollable time columns (hour / minute / optional second + AM/PM in 12-hour\n * mode). All math runs in **UTC** so the instant never drifts with the viewer's timezone; the value is a\n * string in `valueFormat` (UTC ISO datetime with a `Z` by default, or no `Z` when `utc={false}`) — incoming values are parsed\n * leniently (a richer backend datetime is accepted) and the chosen instant is emitted in that format.\n * Picking a date keeps the time and vice-versa, and the popover stays open until you click away,\n * press Escape, or hit Done. Supports `hour12`, `minuteStep`, `showSeconds`, `min`/`max`,\n * `disabledDate`, `weekStartsOn`, and `clearable`. Controlled (`value` + `onChange`) or uncontrolled\n * (`defaultValue`), and binds to a surrounding `<Form>` by `name`. Requires the `dayjs` peer dependency.\n */\nexport const DateTimePicker = forwardRef<HTMLInputElement, DateTimePickerProps>(\n function DateTimePicker(\n {\n label,\n size = 'md',\n error,\n helperText,\n required = false,\n fullWidth = true,\n disabled = false,\n value,\n defaultValue,\n onChange,\n format: formatProp,\n valueFormat: valueFormatProp,\n utc = true,\n hour12 = false,\n minuteStep = 1,\n showSeconds = true,\n placeholder,\n min,\n max,\n disabledDate,\n weekStartsOn = 1,\n clearable = true,\n name,\n id: idProp,\n className,\n style,\n },\n ref,\n ) {\n const t = useT()\n const reactId = useId()\n const id = idProp ?? reactId\n const helperId = `${id}-helper`\n const labelId = `${id}-label`\n const format = formatProp ?? defaultFormatFor(hour12, showSeconds)\n // when the value is UTC, the wire string carries a `Z` (\"…09:35:00Z\"); `utc={false}` emits the\n // bare wall-clock (no zone designator). Override either via `valueFormat`.\n const valueFormat = valueFormatProp ?? (utc ? 'YYYY-MM-DDTHH:mm:ss[Z]' : 'YYYY-MM-DDTHH:mm:ss')\n\n // ── value (controlled / form-bound / uncontrolled) — a `valueFormat` datetime string ────────────\n const form = useFormContext()\n const isFormBound = Boolean(form && name)\n const bound = isFormBound ? form!.field(name!) : undefined\n const externalValue =\n value !== undefined\n ? value\n : isFormBound\n ? ((form!.values[name!] as string | undefined) ?? '')\n : undefined\n const isControlled = value !== undefined || isFormBound\n const [internal, setInternal] = useState<string>(defaultValue ?? '')\n const currentValue = isControlled ? externalValue! : internal\n // when `utc`, parse the UTC value and show it in the viewer's LOCAL time (value stays UTC, emit\n // converts back); when `utc={false}`, show/emit the value's exact wall-clock (no tz conversion)\n const toDisplay = (instant: Dayjs | null) => (utc ? utcToLocalWall(instant) : instant)\n const selected = toDisplay(parseValue(currentValue, valueFormat))\n\n const resolvedError = error ?? bound?.error ?? false\n const resolvedHelperText = helperText ?? bound?.helperText\n\n const minDate = toDisplay(parseValue(min, valueFormat))\n const maxDate = toDisplay(parseValue(max, valueFormat))\n const mask = maskFromFormat(format)\n // precision the user can actually type — driven by the display `format`, not just `showSeconds`\n const timeUnit = /s/.test(format) ? 'second' : 'minute'\n\n const commit = (next: string) => {\n if (next === currentValue) return // skip redundant onChange / setValue with an unchanged value\n if (!isControlled) setInternal(next)\n if (isFormBound) form!.setValue(name!, next)\n onChange?.(next)\n }\n\n // emit a datetime in the wire `valueFormat` (time preserved), or '' to clear. Re-picking the same\n // instant is a no-op (string equality alone would leak a spurious emit for sub-second source values)\n const commitDateTime = (d: Dayjs | null) => {\n if (d && selected && d.isSame(selected, 'second')) return\n // local-wall → UTC for the wire value (or emit the wall-clock as-is when `utc={false}`)\n commit(d ? (utc ? localWallToUtc(d) : d).format(valueFormat) : '')\n }\n\n // true when `d` differs from the current value at the input's precision — gates typed-input commits\n // so a no-op round-trip (focus/blur) never rewrites an unchanged value's finer time\n const changed = (d: Dayjs) => !selected || !d.isSame(selected, timeUnit)\n\n // input display text (kept in sync with the committed value; free while typing an incomplete value)\n const [inputText, setInputText] = useState<string>(() =>\n selected ? selected.format(format) : '',\n )\n useEffect(() => {\n setInputText(selected ? selected.format(format) : '')\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentValue, format, valueFormat])\n\n // ── popover ──────────────────────────────────────────────────────────────────────────────────\n const triggerRef = useRef<HTMLDivElement | null>(null)\n const inputRef = useRef<HTMLInputElement | null>(null)\n const [open, setOpen] = useState(false)\n const [viewMonth, setViewMonth] = useState<Dayjs>(() => selected ?? today())\n // which popover tab is active — controlled so picking a day can auto-advance to Time\n const [tab, setTab] = useState<'date' | 'time'>('date')\n const advanceRef = useRef(false) // set when a day-pick advances to Time → move focus there\n\n const setInputRef = useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) (ref as { current: HTMLInputElement | null }).current = node\n },\n [ref],\n )\n\n const fieldBlurRef = useRef<(() => void) | undefined>(undefined)\n fieldBlurRef.current = bound\n ? () => bound.onBlur({} as FocusEvent<HTMLInputElement>)\n : undefined\n\n // the floating panel forwards its node here, for the blur check + the auto-advance focus move\n const popoverRef = useRef<HTMLDivElement | null>(null)\n\n const closePopover = useCallback((refocus: boolean) => {\n setOpen(false)\n fieldBlurRef.current?.()\n if (refocus) inputRef.current?.focus()\n }, [])\n\n useEffect(() => {\n if (open) {\n setViewMonth(selected ?? today())\n setTab('date') // always open on the Date tab\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open])\n\n // after a day-pick auto-advances to the Time tab, move focus onto it so the focus trap holds\n // (the just-picked calendar cell has unmounted); a manual tab switch never triggers this\n useEffect(() => {\n if (tab === 'time' && advanceRef.current) {\n advanceRef.current = false\n popoverRef.current\n ?.querySelector<HTMLElement>('[role=\"tab\"][aria-selected=\"true\"]')\n ?.focus()\n }\n }, [tab, popoverRef])\n\n const isOutOfRange = (d: Dayjs): boolean => {\n if (minDate && d.isBefore(minDate, 'day')) return true\n if (maxDate && d.isAfter(maxDate, 'day')) return true\n return Boolean(disabledDate && disabledDate(toISO(d)))\n }\n\n const handleInputChange = (raw: string) => {\n const masked = applyMask(raw, mask)\n setInputText(masked)\n if (masked === '') {\n commit('') // emptying the field clears the value\n return\n }\n const parsed = parseInput(masked, format)\n if (parsed && !isOutOfRange(parsed) && changed(parsed)) commitDateTime(parsed)\n }\n\n const handleInputBlur = (event: FocusEvent<HTMLInputElement>) => {\n const parsed = parseInput(inputText, format)\n if (inputText === '') {\n commit('') // an emptied field stays cleared\n } else if (parsed && !isOutOfRange(parsed)) {\n if (changed(parsed)) commitDateTime(parsed)\n setInputText(parsed.format(format))\n } else {\n setInputText(selected ? selected.format(format) : '')\n }\n const nextEl = event.relatedTarget as Node | null\n if (nextEl && (popoverRef.current?.contains(nextEl) || triggerRef.current?.contains(nextEl)))\n return\n bound?.onBlur(event)\n }\n\n // picking a day keeps the current time; picking a time keeps the current day — the popover stays open\n const handleSelectDate = (iso: string) => {\n const date = parseISO(iso)\n if (!date) return\n const base = selected ?? today()\n commitDateTime(date.hour(base.hour()).minute(base.minute()).second(base.second()))\n advanceRef.current = true\n setTab('time') // picking a day advances to the Time tab\n }\n const handleTimeChange = (next: Dayjs) => commitDateTime(next)\n\n const iconSize: 'sm' | 'md' = size === 'sm' ? 'sm' : 'md'\n\n return (\n <div\n className={clsx(\n styles.field,\n styles[size],\n fullWidth && styles.fullWidth,\n resolvedError && styles.error,\n disabled && styles.disabled,\n className,\n )}\n style={style}\n >\n {label != null && (\n <label htmlFor={id} className={styles.label}>\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\">\n {label}\n </Typography>\n {required && (\n <span className={styles.required} aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n\n <div ref={triggerRef} className={clsx(styles.control, open && styles.open)}>\n <input\n ref={setInputRef}\n id={id}\n name={name}\n className={styles.input}\n value={inputText}\n placeholder={placeholder ?? format.toLowerCase()}\n disabled={disabled}\n autoComplete=\"off\"\n aria-invalid={resolvedError || undefined}\n aria-describedby={resolvedHelperText != null ? helperId : undefined}\n onChange={(e) => handleInputChange(e.target.value)}\n onBlur={handleInputBlur}\n />\n\n {clearable && currentValue !== '' && !disabled && (\n <button\n type=\"button\"\n className={styles.clear}\n aria-label={t('dateTimePicker.clear')}\n tabIndex={-1}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => {\n commit('')\n setInputText('')\n inputRef.current?.focus()\n }}\n >\n <Icon name=\"CloseCircle\" size=\"sm\" />\n </button>\n )}\n\n <IconButton\n type=\"button\"\n variant=\"text\"\n color=\"primary\"\n size={size}\n disabled={disabled}\n aria-label={t('dateTimePicker.open')}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n className={styles.calendarButton}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => setOpen((o) => !o)}\n >\n <Icon name=\"Calendar3\" size={iconSize} />\n </IconButton>\n </div>\n\n <FloatingPanel\n ref={popoverRef}\n open={open}\n triggerRef={triggerRef}\n onClose={closePopover}\n role=\"dialog\"\n ariaLabel=\"Choose date and time\"\n trapFocus\n className={clsx(styles.popover, dt.popover)}\n >\n <Tabs\n className={dt.tabs}\n aria-label={t('dateTimePicker.label')}\n fullWidth\n autoFocus\n // the Date/Time tabs are internal popover UI — never sync them to the page URL\n queryKey={null}\n value={tab}\n onChange={(v) => setTab(v as 'date' | 'time')}\n items={[\n {\n value: 'date',\n label: t('dateTimePicker.dateTab'),\n icon: 'Calendar3',\n content: (\n <Calendar\n value={selected}\n month={viewMonth}\n onMonthChange={setViewMonth}\n onSelect={handleSelectDate}\n min={minDate}\n max={maxDate}\n disabledDate={disabledDate}\n weekStartsOn={weekStartsOn}\n labelId={labelId}\n />\n ),\n },\n {\n value: 'time',\n label: t('dateTimePicker.timeTab'),\n icon: 'Clock',\n content: (\n <div className={dt.timePane}>\n <TimeColumns\n value={selected}\n onChange={handleTimeChange}\n hour12={hour12}\n minuteStep={minuteStep}\n showSeconds={showSeconds}\n />\n </div>\n ),\n },\n ]}\n />\n <div className={dt.footer}>\n <Button size=\"sm\" variant=\"filled\" color=\"primary\" onClick={() => closePopover(true)}>\n {t('common.done')}\n </Button>\n </div>\n </FloatingPanel>\n\n {resolvedHelperText != null && (\n <Typography\n as=\"span\"\n id={helperId}\n variant=\"bodySmall\"\n color={resolvedError ? 'error' : 'muted'}\n className={styles.helper}\n >\n {resolvedHelperText}\n </Typography>\n )}\n </div>\n )\n },\n)\n"],"names":["defaultFormatFor","hour12","showSeconds","DateTimePicker","forwardRef","label","size","error","helperText","required","fullWidth","disabled","value","defaultValue","onChange","formatProp","valueFormatProp","utc","minuteStep","placeholder","min","max","disabledDate","weekStartsOn","clearable","name","idProp","className","style","ref","t","useT","reactId","useId","id","helperId","labelId","format","valueFormat","form","useFormContext","isFormBound","bound","externalValue","isControlled","internal","setInternal","useState","currentValue","toDisplay","instant","utcToLocalWall","selected","parseValue","resolvedError","resolvedHelperText","minDate","maxDate","mask","maskFromFormat","timeUnit","commit","next","commitDateTime","d","localWallToUtc","changed","inputText","setInputText","useEffect","triggerRef","useRef","inputRef","open","setOpen","viewMonth","setViewMonth","today","tab","setTab","advanceRef","setInputRef","useCallback","node","fieldBlurRef","popoverRef","closePopover","refocus","_a","_b","isOutOfRange","toISO","handleInputChange","raw","masked","applyMask","parsed","parseInput","handleInputBlur","event","nextEl","handleSelectDate","iso","date","parseISO","base","handleTimeChange","iconSize","jsxs","clsx","styles","jsx","Typography","Icon","IconButton","o","FloatingPanel","dt","Tabs","v","Calendar","TimeColumns","Button"],"mappings":"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"}
@@ -2,16 +2,16 @@ import { jsxs as M, jsx as r } from "react/jsx-runtime";
2
2
  import { forwardRef as Ae, useId as Ee, useState as h, useEffect as j, useRef as v, useCallback as ne } from "react";
3
3
  import { clsx as z } from "clsx";
4
4
  import { u as Le } from "./formContext-B7ln1Miy.js";
5
- import { F as $e } from "./FloatingPanel-BG9Uag__.js";
6
- import { B as je } from "./Button-DBs8xnA5.js";
5
+ import { F as $e } from "./FloatingPanel-CeSOtE_D.js";
6
+ import { B as je } from "./Button-BLW9yV8W.js";
7
7
  import { I as le } from "./Icon-DaTvzLBu.js";
8
- import { I as ze } from "./IconButton-BEGWfcVc.js";
9
- import { T as Ue } from "./Tabs-ytbBzAxG.js";
10
- import { T as ie } from "./Typography-Cta6Rg4L.js";
11
- import { C as Ke } from "./Calendar-CtteUt82.js";
12
- import { p as U, m as Ze, t as K, s, u as Ge, b as ce, c as Je, a as Qe, l as Xe, d as _e } from "./DatePicker.module-BZDftL4g.js";
13
- import { d as N, T as et } from "./TimeColumns-n-fz50mr.js";
14
- import { a as tt } from "./ConfigProvider-DR9YMy9U.js";
8
+ import { I as ze } from "./IconButton-Dq17Fekm.js";
9
+ import { T as Ue } from "./Tabs-By86Cmpw.js";
10
+ import { T as ie } from "./Typography-CJv5AnRP.js";
11
+ import { C as Ke } from "./Calendar-sLA-xa0B.js";
12
+ import { p as U, m as Ze, t as K, s, u as Ge, b as ce, c as Je, a as Qe, l as Xe, d as _e } from "./DatePicker.module-CMMQyEhG.js";
13
+ import { d as N, T as et } from "./TimeColumns-yzjScNU8.js";
14
+ import { a as tt } from "./ConfigProvider-B_RSn9bb.js";
15
15
  function at(Z, c) {
16
16
  return `DD/MM/YYYY ${Z ? c ? "hh:mm:ss A" : "hh:mm A" : c ? "HH:mm:ss" : "HH:mm"}`;
17
17
  }
@@ -242,4 +242,4 @@ const Tt = Ae(
242
242
  export {
243
243
  Tt as D
244
244
  };
245
- //# sourceMappingURL=DateTimePicker-e2zj2bhS.js.map
245
+ //# sourceMappingURL=DateTimePicker-laJsZYJX.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimePicker-e2zj2bhS.js","sources":["../src/components/DateTimePicker/DateTimePicker.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n type CSSProperties,\n type FocusEvent,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useT } from '../../theme'\nimport { useFormContext } from '../../form/formContext'\nimport { FloatingPanel } from '../FloatingPanel/FloatingPanel'\nimport { Button } from '../Button'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport { Tabs } from '../Tabs'\nimport { Typography } from '../Typography'\nimport { Calendar } from '../DatePicker/Calendar'\nimport {\n applyMask,\n localWallToUtc,\n maskFromFormat,\n parseISO,\n parseInput,\n parseValue,\n today,\n toISO,\n utcToLocalWall,\n type Dayjs,\n} from '../DatePicker/dateUtils'\nimport styles from '../DatePicker/DatePicker.module.css'\nimport dt from './DateTimePicker.module.css'\nimport { TimeColumns } from './TimeColumns'\n\nexport type DateTimePickerSize = 'sm' | 'md' | 'lg'\n\nexport interface DateTimePickerProps {\n /** Label rendered above the field. */\n label?: ReactNode\n /** Preset size — control height, font and calendar density. */\n size?: DateTimePickerSize\n /** Marks the field invalid: red border/ring + the `helperText` in the error color. */\n error?: boolean\n /** Helper / validation text under the field. Adopts the error color while `error`. */\n helperText?: ReactNode\n /** Adds a red asterisk after the label. */\n required?: boolean\n /** Stretches the field to fill its container width. Defaults to `true`. */\n fullWidth?: boolean\n /** Disables the field. */\n disabled?: boolean\n /** Controlled value — a datetime string in `valueFormat` (default ISO datetime; `''` = empty). */\n value?: string\n /** Initial value for uncontrolled use (in `valueFormat`). */\n defaultValue?: string\n /** Fires with the next datetime in `valueFormat` (`''` when cleared). */\n onChange?: (value: string) => void\n /**\n * Display + typed-input format (dayjs tokens). Defaults to `'DD/MM/YYYY HH:mm:ss'` (or `hh:mm:ss A`\n * when `hour12`; the `:ss` is dropped when `showSeconds` is `false`).\n */\n format?: string\n /**\n * Wire format of `value`/`defaultValue`/`onChange` (dayjs tokens), decoupled from the displayed\n * `format`. Defaults to the ISO datetime `'YYYY-MM-DDTHH:mm:ss[Z]'` when `utc` (the `Z` marks the\n * value as UTC, e.g. `'2026-06-10T09:35:00Z'`), or `'YYYY-MM-DDTHH:mm:ss'` (no `Z`) when `utc={false}`.\n * Incoming values are parsed **leniently** (this format, then any ISO-8601 string — so a backend\n * datetime like `'2026-06-10T09:35:49.6134342'` with or without `Z` is accepted).\n */\n valueFormat?: string\n /**\n * Treat the value as **UTC** and display/edit in the viewer's **local** timezone (default `true`).\n * Set `false` to disable timezone conversion entirely — the field shows and emits the value's exact\n * wall-clock (what you pick is what's sent, no UTC shift).\n */\n utc?: boolean\n /** 12-hour clock (1–12 + AM/PM) instead of 24-hour (0–23). Defaults to `false`. */\n hour12?: boolean\n /** Minute increment for the minutes column. Defaults to `1`. */\n minuteStep?: number\n /** Show the seconds column + `:ss` in the default format. Defaults to `true`; pass `false` to hide seconds. */\n showSeconds?: boolean\n /** Placeholder shown when empty. Defaults to the lowercased `format`. */\n placeholder?: string\n /** Earliest selectable date (ISO date or datetime; day-level bound on the calendar). */\n min?: string\n /** Latest selectable date (ISO date or datetime; day-level bound on the calendar). */\n max?: string\n /** Disables specific dates — receives each day as an ISO `'YYYY-MM-DD'` string. */\n disabledDate?: (date: string) => boolean\n /** First day of the week: 0 = Sunday … 6 = Saturday. Defaults to `1` (Monday). */\n weekStartsOn?: number\n /** Shows a clear (×) button when a value is set. Defaults to `true`. */\n clearable?: boolean\n /** Form field name — auto-binds to a surrounding `<Form>` (value is the datetime string). */\n name?: string\n /** Id for the input (label association). */\n id?: string\n className?: string\n style?: CSSProperties\n}\n\nfunction defaultFormatFor(hour12: boolean, showSeconds: boolean): string {\n const time = hour12\n ? showSeconds\n ? 'hh:mm:ss A'\n : 'hh:mm A'\n : showSeconds\n ? 'HH:mm:ss'\n : 'HH:mm'\n return `DD/MM/YYYY ${time}`\n}\n\n/**\n * A datetime field with a typed, masked input **and** a popover combining the keyboard-navigable\n * `Calendar` (date) with scrollable time columns (hour / minute / optional second + AM/PM in 12-hour\n * mode). All math runs in **UTC** so the instant never drifts with the viewer's timezone; the value is a\n * string in `valueFormat` (UTC ISO datetime with a `Z` by default, or no `Z` when `utc={false}`) — incoming values are parsed\n * leniently (a richer backend datetime is accepted) and the chosen instant is emitted in that format.\n * Picking a date keeps the time and vice-versa, and the popover stays open until you click away,\n * press Escape, or hit Done. Supports `hour12`, `minuteStep`, `showSeconds`, `min`/`max`,\n * `disabledDate`, `weekStartsOn`, and `clearable`. Controlled (`value` + `onChange`) or uncontrolled\n * (`defaultValue`), and binds to a surrounding `<Form>` by `name`. Requires the `dayjs` peer dependency.\n */\nexport const DateTimePicker = forwardRef<HTMLInputElement, DateTimePickerProps>(\n function DateTimePicker(\n {\n label,\n size = 'md',\n error,\n helperText,\n required = false,\n fullWidth = true,\n disabled = false,\n value,\n defaultValue,\n onChange,\n format: formatProp,\n valueFormat: valueFormatProp,\n utc = true,\n hour12 = false,\n minuteStep = 1,\n showSeconds = true,\n placeholder,\n min,\n max,\n disabledDate,\n weekStartsOn = 1,\n clearable = true,\n name,\n id: idProp,\n className,\n style,\n },\n ref,\n ) {\n const t = useT()\n const reactId = useId()\n const id = idProp ?? reactId\n const helperId = `${id}-helper`\n const labelId = `${id}-label`\n const format = formatProp ?? defaultFormatFor(hour12, showSeconds)\n // when the value is UTC, the wire string carries a `Z` (\"…09:35:00Z\"); `utc={false}` emits the\n // bare wall-clock (no zone designator). Override either via `valueFormat`.\n const valueFormat = valueFormatProp ?? (utc ? 'YYYY-MM-DDTHH:mm:ss[Z]' : 'YYYY-MM-DDTHH:mm:ss')\n\n // ── value (controlled / form-bound / uncontrolled) — a `valueFormat` datetime string ────────────\n const form = useFormContext()\n const isFormBound = Boolean(form && name)\n const bound = isFormBound ? form!.field(name!) : undefined\n const externalValue =\n value !== undefined\n ? value\n : isFormBound\n ? ((form!.values[name!] as string | undefined) ?? '')\n : undefined\n const isControlled = value !== undefined || isFormBound\n const [internal, setInternal] = useState<string>(defaultValue ?? '')\n const currentValue = isControlled ? externalValue! : internal\n // when `utc`, parse the UTC value and show it in the viewer's LOCAL time (value stays UTC, emit\n // converts back); when `utc={false}`, show/emit the value's exact wall-clock (no tz conversion)\n const toDisplay = (instant: Dayjs | null) => (utc ? utcToLocalWall(instant) : instant)\n const selected = toDisplay(parseValue(currentValue, valueFormat))\n\n const resolvedError = error ?? bound?.error ?? false\n const resolvedHelperText = helperText ?? bound?.helperText\n\n const minDate = toDisplay(parseValue(min, valueFormat))\n const maxDate = toDisplay(parseValue(max, valueFormat))\n const mask = maskFromFormat(format)\n // precision the user can actually type — driven by the display `format`, not just `showSeconds`\n const timeUnit = /s/.test(format) ? 'second' : 'minute'\n\n const commit = (next: string) => {\n if (next === currentValue) return // skip redundant onChange / setValue with an unchanged value\n if (!isControlled) setInternal(next)\n if (isFormBound) form!.setValue(name!, next)\n onChange?.(next)\n }\n\n // emit a datetime in the wire `valueFormat` (time preserved), or '' to clear. Re-picking the same\n // instant is a no-op (string equality alone would leak a spurious emit for sub-second source values)\n const commitDateTime = (d: Dayjs | null) => {\n if (d && selected && d.isSame(selected, 'second')) return\n // local-wall → UTC for the wire value (or emit the wall-clock as-is when `utc={false}`)\n commit(d ? (utc ? localWallToUtc(d) : d).format(valueFormat) : '')\n }\n\n // true when `d` differs from the current value at the input's precision — gates typed-input commits\n // so a no-op round-trip (focus/blur) never rewrites an unchanged value's finer time\n const changed = (d: Dayjs) => !selected || !d.isSame(selected, timeUnit)\n\n // input display text (kept in sync with the committed value; free while typing an incomplete value)\n const [inputText, setInputText] = useState<string>(() =>\n selected ? selected.format(format) : '',\n )\n useEffect(() => {\n setInputText(selected ? selected.format(format) : '')\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentValue, format, valueFormat])\n\n // ── popover ──────────────────────────────────────────────────────────────────────────────────\n const triggerRef = useRef<HTMLDivElement | null>(null)\n const inputRef = useRef<HTMLInputElement | null>(null)\n const [open, setOpen] = useState(false)\n const [viewMonth, setViewMonth] = useState<Dayjs>(() => selected ?? today())\n // which popover tab is active — controlled so picking a day can auto-advance to Time\n const [tab, setTab] = useState<'date' | 'time'>('date')\n const advanceRef = useRef(false) // set when a day-pick advances to Time → move focus there\n\n const setInputRef = useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) (ref as { current: HTMLInputElement | null }).current = node\n },\n [ref],\n )\n\n const fieldBlurRef = useRef<(() => void) | undefined>(undefined)\n fieldBlurRef.current = bound\n ? () => bound.onBlur({} as FocusEvent<HTMLInputElement>)\n : undefined\n\n // the floating panel forwards its node here, for the blur check + the auto-advance focus move\n const popoverRef = useRef<HTMLDivElement | null>(null)\n\n const closePopover = useCallback((refocus: boolean) => {\n setOpen(false)\n fieldBlurRef.current?.()\n if (refocus) inputRef.current?.focus()\n }, [])\n\n useEffect(() => {\n if (open) {\n setViewMonth(selected ?? today())\n setTab('date') // always open on the Date tab\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open])\n\n // after a day-pick auto-advances to the Time tab, move focus onto it so the focus trap holds\n // (the just-picked calendar cell has unmounted); a manual tab switch never triggers this\n useEffect(() => {\n if (tab === 'time' && advanceRef.current) {\n advanceRef.current = false\n popoverRef.current\n ?.querySelector<HTMLElement>('[role=\"tab\"][aria-selected=\"true\"]')\n ?.focus()\n }\n }, [tab, popoverRef])\n\n const isOutOfRange = (d: Dayjs): boolean => {\n if (minDate && d.isBefore(minDate, 'day')) return true\n if (maxDate && d.isAfter(maxDate, 'day')) return true\n return Boolean(disabledDate && disabledDate(toISO(d)))\n }\n\n const handleInputChange = (raw: string) => {\n const masked = applyMask(raw, mask)\n setInputText(masked)\n if (masked === '') {\n commit('') // emptying the field clears the value\n return\n }\n const parsed = parseInput(masked, format)\n if (parsed && !isOutOfRange(parsed) && changed(parsed)) commitDateTime(parsed)\n }\n\n const handleInputBlur = (event: FocusEvent<HTMLInputElement>) => {\n const parsed = parseInput(inputText, format)\n if (inputText === '') {\n commit('') // an emptied field stays cleared\n } else if (parsed && !isOutOfRange(parsed)) {\n if (changed(parsed)) commitDateTime(parsed)\n setInputText(parsed.format(format))\n } else {\n setInputText(selected ? selected.format(format) : '')\n }\n const nextEl = event.relatedTarget as Node | null\n if (nextEl && (popoverRef.current?.contains(nextEl) || triggerRef.current?.contains(nextEl)))\n return\n bound?.onBlur(event)\n }\n\n // picking a day keeps the current time; picking a time keeps the current day — the popover stays open\n const handleSelectDate = (iso: string) => {\n const date = parseISO(iso)\n if (!date) return\n const base = selected ?? today()\n commitDateTime(date.hour(base.hour()).minute(base.minute()).second(base.second()))\n advanceRef.current = true\n setTab('time') // picking a day advances to the Time tab\n }\n const handleTimeChange = (next: Dayjs) => commitDateTime(next)\n\n const iconSize: 'sm' | 'md' = size === 'sm' ? 'sm' : 'md'\n\n return (\n <div\n className={clsx(\n styles.field,\n styles[size],\n fullWidth && styles.fullWidth,\n resolvedError && styles.error,\n disabled && styles.disabled,\n className,\n )}\n style={style}\n >\n {label != null && (\n <label htmlFor={id} className={styles.label}>\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\">\n {label}\n </Typography>\n {required && (\n <span className={styles.required} aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n\n <div ref={triggerRef} className={clsx(styles.control, open && styles.open)}>\n <input\n ref={setInputRef}\n id={id}\n name={name}\n className={styles.input}\n value={inputText}\n placeholder={placeholder ?? format.toLowerCase()}\n disabled={disabled}\n autoComplete=\"off\"\n aria-invalid={resolvedError || undefined}\n aria-describedby={resolvedHelperText != null ? helperId : undefined}\n onChange={(e) => handleInputChange(e.target.value)}\n onBlur={handleInputBlur}\n />\n\n {clearable && currentValue !== '' && !disabled && (\n <button\n type=\"button\"\n className={styles.clear}\n aria-label={t('dateTimePicker.clear')}\n tabIndex={-1}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => {\n commit('')\n setInputText('')\n inputRef.current?.focus()\n }}\n >\n <Icon name=\"CloseCircle\" size=\"sm\" />\n </button>\n )}\n\n <IconButton\n type=\"button\"\n variant=\"text\"\n color=\"primary\"\n size={size}\n disabled={disabled}\n aria-label={t('dateTimePicker.open')}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n className={styles.calendarButton}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => setOpen((o) => !o)}\n >\n <Icon name=\"Calendar3\" size={iconSize} />\n </IconButton>\n </div>\n\n <FloatingPanel\n ref={popoverRef}\n open={open}\n triggerRef={triggerRef}\n onClose={closePopover}\n role=\"dialog\"\n ariaLabel=\"Choose date and time\"\n trapFocus\n className={clsx(styles.popover, dt.popover)}\n >\n <Tabs\n className={dt.tabs}\n aria-label={t('dateTimePicker.label')}\n fullWidth\n autoFocus\n // the Date/Time tabs are internal popover UI — never sync them to the page URL\n queryKey={null}\n value={tab}\n onChange={(v) => setTab(v as 'date' | 'time')}\n items={[\n {\n value: 'date',\n label: t('dateTimePicker.dateTab'),\n icon: 'Calendar3',\n content: (\n <Calendar\n value={selected}\n month={viewMonth}\n onMonthChange={setViewMonth}\n onSelect={handleSelectDate}\n min={minDate}\n max={maxDate}\n disabledDate={disabledDate}\n weekStartsOn={weekStartsOn}\n labelId={labelId}\n />\n ),\n },\n {\n value: 'time',\n label: t('dateTimePicker.timeTab'),\n icon: 'Clock',\n content: (\n <div className={dt.timePane}>\n <TimeColumns\n value={selected}\n onChange={handleTimeChange}\n hour12={hour12}\n minuteStep={minuteStep}\n showSeconds={showSeconds}\n />\n </div>\n ),\n },\n ]}\n />\n <div className={dt.footer}>\n <Button size=\"sm\" variant=\"filled\" color=\"primary\" onClick={() => closePopover(true)}>\n {t('common.done')}\n </Button>\n </div>\n </FloatingPanel>\n\n {resolvedHelperText != null && (\n <Typography\n as=\"span\"\n id={helperId}\n variant=\"bodySmall\"\n color={resolvedError ? 'error' : 'muted'}\n className={styles.helper}\n >\n {resolvedHelperText}\n </Typography>\n )}\n </div>\n )\n },\n)\n"],"names":["defaultFormatFor","hour12","showSeconds","DateTimePicker","forwardRef","label","size","error","helperText","required","fullWidth","disabled","value","defaultValue","onChange","formatProp","valueFormatProp","utc","minuteStep","placeholder","min","max","disabledDate","weekStartsOn","clearable","name","idProp","className","style","ref","t","useT","reactId","useId","id","helperId","labelId","format","valueFormat","form","useFormContext","isFormBound","bound","externalValue","isControlled","internal","setInternal","useState","currentValue","toDisplay","instant","utcToLocalWall","selected","parseValue","resolvedError","resolvedHelperText","minDate","maxDate","mask","maskFromFormat","timeUnit","commit","next","commitDateTime","d","localWallToUtc","changed","inputText","setInputText","useEffect","triggerRef","useRef","inputRef","open","setOpen","viewMonth","setViewMonth","today","tab","setTab","advanceRef","setInputRef","useCallback","node","fieldBlurRef","popoverRef","closePopover","refocus","_a","_b","isOutOfRange","toISO","handleInputChange","raw","masked","applyMask","parsed","parseInput","handleInputBlur","event","nextEl","handleSelectDate","iso","date","parseISO","base","handleTimeChange","iconSize","jsxs","clsx","styles","jsx","Typography","Icon","IconButton","o","FloatingPanel","dt","Tabs","v","Calendar","TimeColumns","Button"],"mappings":"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"}
1
+ {"version":3,"file":"DateTimePicker-laJsZYJX.js","sources":["../src/components/DateTimePicker/DateTimePicker.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n type CSSProperties,\n type FocusEvent,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useT } from '../../theme'\nimport { useFormContext } from '../../form/formContext'\nimport { FloatingPanel } from '../FloatingPanel/FloatingPanel'\nimport { Button } from '../Button'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport { Tabs } from '../Tabs'\nimport { Typography } from '../Typography'\nimport { Calendar } from '../DatePicker/Calendar'\nimport {\n applyMask,\n localWallToUtc,\n maskFromFormat,\n parseISO,\n parseInput,\n parseValue,\n today,\n toISO,\n utcToLocalWall,\n type Dayjs,\n} from '../DatePicker/dateUtils'\nimport styles from '../DatePicker/DatePicker.module.css'\nimport dt from './DateTimePicker.module.css'\nimport { TimeColumns } from './TimeColumns'\n\nexport type DateTimePickerSize = 'sm' | 'md' | 'lg'\n\nexport interface DateTimePickerProps {\n /** Label rendered above the field. */\n label?: ReactNode\n /** Preset size — control height, font and calendar density. */\n size?: DateTimePickerSize\n /** Marks the field invalid: red border/ring + the `helperText` in the error color. */\n error?: boolean\n /** Helper / validation text under the field. Adopts the error color while `error`. */\n helperText?: ReactNode\n /** Adds a red asterisk after the label. */\n required?: boolean\n /** Stretches the field to fill its container width. Defaults to `true`. */\n fullWidth?: boolean\n /** Disables the field. */\n disabled?: boolean\n /** Controlled value — a datetime string in `valueFormat` (default ISO datetime; `''` = empty). */\n value?: string\n /** Initial value for uncontrolled use (in `valueFormat`). */\n defaultValue?: string\n /** Fires with the next datetime in `valueFormat` (`''` when cleared). */\n onChange?: (value: string) => void\n /**\n * Display + typed-input format (dayjs tokens). Defaults to `'DD/MM/YYYY HH:mm:ss'` (or `hh:mm:ss A`\n * when `hour12`; the `:ss` is dropped when `showSeconds` is `false`).\n */\n format?: string\n /**\n * Wire format of `value`/`defaultValue`/`onChange` (dayjs tokens), decoupled from the displayed\n * `format`. Defaults to the ISO datetime `'YYYY-MM-DDTHH:mm:ss[Z]'` when `utc` (the `Z` marks the\n * value as UTC, e.g. `'2026-06-10T09:35:00Z'`), or `'YYYY-MM-DDTHH:mm:ss'` (no `Z`) when `utc={false}`.\n * Incoming values are parsed **leniently** (this format, then any ISO-8601 string — so a backend\n * datetime like `'2026-06-10T09:35:49.6134342'` with or without `Z` is accepted).\n */\n valueFormat?: string\n /**\n * Treat the value as **UTC** and display/edit in the viewer's **local** timezone (default `true`).\n * Set `false` to disable timezone conversion entirely — the field shows and emits the value's exact\n * wall-clock (what you pick is what's sent, no UTC shift).\n */\n utc?: boolean\n /** 12-hour clock (1–12 + AM/PM) instead of 24-hour (0–23). Defaults to `false`. */\n hour12?: boolean\n /** Minute increment for the minutes column. Defaults to `1`. */\n minuteStep?: number\n /** Show the seconds column + `:ss` in the default format. Defaults to `true`; pass `false` to hide seconds. */\n showSeconds?: boolean\n /** Placeholder shown when empty. Defaults to the lowercased `format`. */\n placeholder?: string\n /** Earliest selectable date (ISO date or datetime; day-level bound on the calendar). */\n min?: string\n /** Latest selectable date (ISO date or datetime; day-level bound on the calendar). */\n max?: string\n /** Disables specific dates — receives each day as an ISO `'YYYY-MM-DD'` string. */\n disabledDate?: (date: string) => boolean\n /** First day of the week: 0 = Sunday … 6 = Saturday. Defaults to `1` (Monday). */\n weekStartsOn?: number\n /** Shows a clear (×) button when a value is set. Defaults to `true`. */\n clearable?: boolean\n /** Form field name — auto-binds to a surrounding `<Form>` (value is the datetime string). */\n name?: string\n /** Id for the input (label association). */\n id?: string\n className?: string\n style?: CSSProperties\n}\n\nfunction defaultFormatFor(hour12: boolean, showSeconds: boolean): string {\n const time = hour12\n ? showSeconds\n ? 'hh:mm:ss A'\n : 'hh:mm A'\n : showSeconds\n ? 'HH:mm:ss'\n : 'HH:mm'\n return `DD/MM/YYYY ${time}`\n}\n\n/**\n * A datetime field with a typed, masked input **and** a popover combining the keyboard-navigable\n * `Calendar` (date) with scrollable time columns (hour / minute / optional second + AM/PM in 12-hour\n * mode). All math runs in **UTC** so the instant never drifts with the viewer's timezone; the value is a\n * string in `valueFormat` (UTC ISO datetime with a `Z` by default, or no `Z` when `utc={false}`) — incoming values are parsed\n * leniently (a richer backend datetime is accepted) and the chosen instant is emitted in that format.\n * Picking a date keeps the time and vice-versa, and the popover stays open until you click away,\n * press Escape, or hit Done. Supports `hour12`, `minuteStep`, `showSeconds`, `min`/`max`,\n * `disabledDate`, `weekStartsOn`, and `clearable`. Controlled (`value` + `onChange`) or uncontrolled\n * (`defaultValue`), and binds to a surrounding `<Form>` by `name`. Requires the `dayjs` peer dependency.\n */\nexport const DateTimePicker = forwardRef<HTMLInputElement, DateTimePickerProps>(\n function DateTimePicker(\n {\n label,\n size = 'md',\n error,\n helperText,\n required = false,\n fullWidth = true,\n disabled = false,\n value,\n defaultValue,\n onChange,\n format: formatProp,\n valueFormat: valueFormatProp,\n utc = true,\n hour12 = false,\n minuteStep = 1,\n showSeconds = true,\n placeholder,\n min,\n max,\n disabledDate,\n weekStartsOn = 1,\n clearable = true,\n name,\n id: idProp,\n className,\n style,\n },\n ref,\n ) {\n const t = useT()\n const reactId = useId()\n const id = idProp ?? reactId\n const helperId = `${id}-helper`\n const labelId = `${id}-label`\n const format = formatProp ?? defaultFormatFor(hour12, showSeconds)\n // when the value is UTC, the wire string carries a `Z` (\"…09:35:00Z\"); `utc={false}` emits the\n // bare wall-clock (no zone designator). Override either via `valueFormat`.\n const valueFormat = valueFormatProp ?? (utc ? 'YYYY-MM-DDTHH:mm:ss[Z]' : 'YYYY-MM-DDTHH:mm:ss')\n\n // ── value (controlled / form-bound / uncontrolled) — a `valueFormat` datetime string ────────────\n const form = useFormContext()\n const isFormBound = Boolean(form && name)\n const bound = isFormBound ? form!.field(name!) : undefined\n const externalValue =\n value !== undefined\n ? value\n : isFormBound\n ? ((form!.values[name!] as string | undefined) ?? '')\n : undefined\n const isControlled = value !== undefined || isFormBound\n const [internal, setInternal] = useState<string>(defaultValue ?? '')\n const currentValue = isControlled ? externalValue! : internal\n // when `utc`, parse the UTC value and show it in the viewer's LOCAL time (value stays UTC, emit\n // converts back); when `utc={false}`, show/emit the value's exact wall-clock (no tz conversion)\n const toDisplay = (instant: Dayjs | null) => (utc ? utcToLocalWall(instant) : instant)\n const selected = toDisplay(parseValue(currentValue, valueFormat))\n\n const resolvedError = error ?? bound?.error ?? false\n const resolvedHelperText = helperText ?? bound?.helperText\n\n const minDate = toDisplay(parseValue(min, valueFormat))\n const maxDate = toDisplay(parseValue(max, valueFormat))\n const mask = maskFromFormat(format)\n // precision the user can actually type — driven by the display `format`, not just `showSeconds`\n const timeUnit = /s/.test(format) ? 'second' : 'minute'\n\n const commit = (next: string) => {\n if (next === currentValue) return // skip redundant onChange / setValue with an unchanged value\n if (!isControlled) setInternal(next)\n if (isFormBound) form!.setValue(name!, next)\n onChange?.(next)\n }\n\n // emit a datetime in the wire `valueFormat` (time preserved), or '' to clear. Re-picking the same\n // instant is a no-op (string equality alone would leak a spurious emit for sub-second source values)\n const commitDateTime = (d: Dayjs | null) => {\n if (d && selected && d.isSame(selected, 'second')) return\n // local-wall → UTC for the wire value (or emit the wall-clock as-is when `utc={false}`)\n commit(d ? (utc ? localWallToUtc(d) : d).format(valueFormat) : '')\n }\n\n // true when `d` differs from the current value at the input's precision — gates typed-input commits\n // so a no-op round-trip (focus/blur) never rewrites an unchanged value's finer time\n const changed = (d: Dayjs) => !selected || !d.isSame(selected, timeUnit)\n\n // input display text (kept in sync with the committed value; free while typing an incomplete value)\n const [inputText, setInputText] = useState<string>(() =>\n selected ? selected.format(format) : '',\n )\n useEffect(() => {\n setInputText(selected ? selected.format(format) : '')\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentValue, format, valueFormat])\n\n // ── popover ──────────────────────────────────────────────────────────────────────────────────\n const triggerRef = useRef<HTMLDivElement | null>(null)\n const inputRef = useRef<HTMLInputElement | null>(null)\n const [open, setOpen] = useState(false)\n const [viewMonth, setViewMonth] = useState<Dayjs>(() => selected ?? today())\n // which popover tab is active — controlled so picking a day can auto-advance to Time\n const [tab, setTab] = useState<'date' | 'time'>('date')\n const advanceRef = useRef(false) // set when a day-pick advances to Time → move focus there\n\n const setInputRef = useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) (ref as { current: HTMLInputElement | null }).current = node\n },\n [ref],\n )\n\n const fieldBlurRef = useRef<(() => void) | undefined>(undefined)\n fieldBlurRef.current = bound\n ? () => bound.onBlur({} as FocusEvent<HTMLInputElement>)\n : undefined\n\n // the floating panel forwards its node here, for the blur check + the auto-advance focus move\n const popoverRef = useRef<HTMLDivElement | null>(null)\n\n const closePopover = useCallback((refocus: boolean) => {\n setOpen(false)\n fieldBlurRef.current?.()\n if (refocus) inputRef.current?.focus()\n }, [])\n\n useEffect(() => {\n if (open) {\n setViewMonth(selected ?? today())\n setTab('date') // always open on the Date tab\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open])\n\n // after a day-pick auto-advances to the Time tab, move focus onto it so the focus trap holds\n // (the just-picked calendar cell has unmounted); a manual tab switch never triggers this\n useEffect(() => {\n if (tab === 'time' && advanceRef.current) {\n advanceRef.current = false\n popoverRef.current\n ?.querySelector<HTMLElement>('[role=\"tab\"][aria-selected=\"true\"]')\n ?.focus()\n }\n }, [tab, popoverRef])\n\n const isOutOfRange = (d: Dayjs): boolean => {\n if (minDate && d.isBefore(minDate, 'day')) return true\n if (maxDate && d.isAfter(maxDate, 'day')) return true\n return Boolean(disabledDate && disabledDate(toISO(d)))\n }\n\n const handleInputChange = (raw: string) => {\n const masked = applyMask(raw, mask)\n setInputText(masked)\n if (masked === '') {\n commit('') // emptying the field clears the value\n return\n }\n const parsed = parseInput(masked, format)\n if (parsed && !isOutOfRange(parsed) && changed(parsed)) commitDateTime(parsed)\n }\n\n const handleInputBlur = (event: FocusEvent<HTMLInputElement>) => {\n const parsed = parseInput(inputText, format)\n if (inputText === '') {\n commit('') // an emptied field stays cleared\n } else if (parsed && !isOutOfRange(parsed)) {\n if (changed(parsed)) commitDateTime(parsed)\n setInputText(parsed.format(format))\n } else {\n setInputText(selected ? selected.format(format) : '')\n }\n const nextEl = event.relatedTarget as Node | null\n if (nextEl && (popoverRef.current?.contains(nextEl) || triggerRef.current?.contains(nextEl)))\n return\n bound?.onBlur(event)\n }\n\n // picking a day keeps the current time; picking a time keeps the current day — the popover stays open\n const handleSelectDate = (iso: string) => {\n const date = parseISO(iso)\n if (!date) return\n const base = selected ?? today()\n commitDateTime(date.hour(base.hour()).minute(base.minute()).second(base.second()))\n advanceRef.current = true\n setTab('time') // picking a day advances to the Time tab\n }\n const handleTimeChange = (next: Dayjs) => commitDateTime(next)\n\n const iconSize: 'sm' | 'md' = size === 'sm' ? 'sm' : 'md'\n\n return (\n <div\n className={clsx(\n styles.field,\n styles[size],\n fullWidth && styles.fullWidth,\n resolvedError && styles.error,\n disabled && styles.disabled,\n className,\n )}\n style={style}\n >\n {label != null && (\n <label htmlFor={id} className={styles.label}>\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\">\n {label}\n </Typography>\n {required && (\n <span className={styles.required} aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n\n <div ref={triggerRef} className={clsx(styles.control, open && styles.open)}>\n <input\n ref={setInputRef}\n id={id}\n name={name}\n className={styles.input}\n value={inputText}\n placeholder={placeholder ?? format.toLowerCase()}\n disabled={disabled}\n autoComplete=\"off\"\n aria-invalid={resolvedError || undefined}\n aria-describedby={resolvedHelperText != null ? helperId : undefined}\n onChange={(e) => handleInputChange(e.target.value)}\n onBlur={handleInputBlur}\n />\n\n {clearable && currentValue !== '' && !disabled && (\n <button\n type=\"button\"\n className={styles.clear}\n aria-label={t('dateTimePicker.clear')}\n tabIndex={-1}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => {\n commit('')\n setInputText('')\n inputRef.current?.focus()\n }}\n >\n <Icon name=\"CloseCircle\" size=\"sm\" />\n </button>\n )}\n\n <IconButton\n type=\"button\"\n variant=\"text\"\n color=\"primary\"\n size={size}\n disabled={disabled}\n aria-label={t('dateTimePicker.open')}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n className={styles.calendarButton}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => setOpen((o) => !o)}\n >\n <Icon name=\"Calendar3\" size={iconSize} />\n </IconButton>\n </div>\n\n <FloatingPanel\n ref={popoverRef}\n open={open}\n triggerRef={triggerRef}\n onClose={closePopover}\n role=\"dialog\"\n ariaLabel=\"Choose date and time\"\n trapFocus\n className={clsx(styles.popover, dt.popover)}\n >\n <Tabs\n className={dt.tabs}\n aria-label={t('dateTimePicker.label')}\n fullWidth\n autoFocus\n // the Date/Time tabs are internal popover UI — never sync them to the page URL\n queryKey={null}\n value={tab}\n onChange={(v) => setTab(v as 'date' | 'time')}\n items={[\n {\n value: 'date',\n label: t('dateTimePicker.dateTab'),\n icon: 'Calendar3',\n content: (\n <Calendar\n value={selected}\n month={viewMonth}\n onMonthChange={setViewMonth}\n onSelect={handleSelectDate}\n min={minDate}\n max={maxDate}\n disabledDate={disabledDate}\n weekStartsOn={weekStartsOn}\n labelId={labelId}\n />\n ),\n },\n {\n value: 'time',\n label: t('dateTimePicker.timeTab'),\n icon: 'Clock',\n content: (\n <div className={dt.timePane}>\n <TimeColumns\n value={selected}\n onChange={handleTimeChange}\n hour12={hour12}\n minuteStep={minuteStep}\n showSeconds={showSeconds}\n />\n </div>\n ),\n },\n ]}\n />\n <div className={dt.footer}>\n <Button size=\"sm\" variant=\"filled\" color=\"primary\" onClick={() => closePopover(true)}>\n {t('common.done')}\n </Button>\n </div>\n </FloatingPanel>\n\n {resolvedHelperText != null && (\n <Typography\n as=\"span\"\n id={helperId}\n variant=\"bodySmall\"\n color={resolvedError ? 'error' : 'muted'}\n className={styles.helper}\n >\n {resolvedHelperText}\n </Typography>\n )}\n </div>\n )\n },\n)\n"],"names":["defaultFormatFor","hour12","showSeconds","DateTimePicker","forwardRef","label","size","error","helperText","required","fullWidth","disabled","value","defaultValue","onChange","formatProp","valueFormatProp","utc","minuteStep","placeholder","min","max","disabledDate","weekStartsOn","clearable","name","idProp","className","style","ref","t","useT","reactId","useId","id","helperId","labelId","format","valueFormat","form","useFormContext","isFormBound","bound","externalValue","isControlled","internal","setInternal","useState","currentValue","toDisplay","instant","utcToLocalWall","selected","parseValue","resolvedError","resolvedHelperText","minDate","maxDate","mask","maskFromFormat","timeUnit","commit","next","commitDateTime","d","localWallToUtc","changed","inputText","setInputText","useEffect","triggerRef","useRef","inputRef","open","setOpen","viewMonth","setViewMonth","today","tab","setTab","advanceRef","setInputRef","useCallback","node","fieldBlurRef","popoverRef","closePopover","refocus","_a","_b","isOutOfRange","toISO","handleInputChange","raw","masked","applyMask","parsed","parseInput","handleInputBlur","event","nextEl","handleSelectDate","iso","date","parseISO","base","handleTimeChange","iconSize","jsxs","clsx","styles","jsx","Typography","Icon","IconButton","o","FloatingPanel","dt","Tabs","v","Calendar","TimeColumns","Button"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";const s=require("react/jsx-runtime"),R=require("react"),S=require("clsx"),G=require("./breakpoints-Dpnh6BbG.cjs"),J=require("./useMediaQuery-CHMrI6Dy.cjs"),K=require("./names-BJnFU_5m.cjs"),V=require("./Icon-BVULqOJD.cjs"),X=require("./CopyButton-B5aicGl3.cjs"),Y=require("./IconButton-A2B0bqC-.cjs"),k=require("./Skeleton-DK0lAjS9.cjs"),q=require("./Typography-B6ASPrzT.cjs"),Z=require("./ConfigProvider-BElY0HuV.cjs"),W="_root_1hhb1_4",ee="_sm_1hhb1_14",se="_md_1hhb1_22",te="_lg_1hhb1_30",ae="_header_1hhb1_40",le="_headerMain_1hhb1_49",ne="_headerIcon_1hhb1_56",oe="_headerText_1hhb1_59",re="_title_1hhb1_65",ce="_actions_1hhb1_68",de="_grid_1hhb1_80",he="_item_1hhb1_87",ie="_dividers_1hhb1_95",_e="_lastRow_1hhb1_99",ue="_label_1hhb1_103",pe="_labelIcon_1hhb1_111",be="_value_1hhb1_116",me="_valueMedium_1hhb1_125",ve="_valueBold_1hhb1_128",xe="_valueText_1hhb1_131",ye="_placeholder_1hhb1_135",je="_copy_1hhb1_148",Ne="_copyButton_1hhb1_156",fe="_horizontal_1hhb1_172",ge="_stacked_1hhb1_170",Ie="_bordered_1hhb1_184",we="_lastRowStart_1hhb1_213",e={root:W,sm:ee,md:se,lg:te,header:ae,headerMain:le,headerIcon:ne,headerText:oe,title:re,actions:ce,grid:de,item:he,dividers:ie,lastRow:_e,label:ue,labelIcon:pe,value:be,valueMedium:me,valueBold:ve,valueText:xe,placeholder:ye,copy:je,copyButton:Ne,horizontal:fe,stacked:ge,bordered:Ie,lastRowStart:we},Te=new Set(K.ICON_NAMES),Me={xs:1,sm:2,lg:3},Re=t=>t==null||t===""||t===!1,Se=t=>{if(typeof t.copyable=="string")return t.copyable;if(typeof t.value=="string"||typeof t.value=="number")return String(t.value)},ke=(t,n)=>{let r=0,l=0;return t.map(h=>{const o=Math.min(h.span??1,n);l+o>n&&(r+=1,l=0);const u={item:h,span:o,row:r,col:l};return l+=o,l>=n&&(r+=1,l=0),u})},B=(t,n="sm")=>typeof t=="string"&&Te.has(t)?s.jsx(V.Icon,{name:t,size:n}):t,qe=R.forwardRef(function({items:n,columns:r=Me,layout:l="vertical",size:h="md",valueWeight:o="regular",bordered:u=!1,dividers:C=!0,labelWidth:p=160,stackBelow:x="xxs",loading:c=!1,emptyText:L="—",title:d,icon:b,color:z="accent",subtitle:i,actions:m,className:E,style:A,...D},O){const y=Z.useT(),j=`${R.useId()}-title`,N=J.useBreakpointMatches(),f=G.resolveResponsive(r,N)??1,$=l==="horizontal"&&x!==!1&&N[x],g=n.filter(a=>!a.hidden),_=ke(g,f),I=_.length?_[_.length-1].row:0,U=typeof c=="number"?c:g.length||6,F=d!=null||i!=null||m!=null||b!=null,H={"--dl-cols":f,"--dl-label-w":typeof p=="number"?`${p}px`:p};return s.jsxs("div",{ref:O,className:S.clsx(e.root,e[h],e[l],o!=="regular"&&e[`value${o==="bold"?"Bold":"Medium"}`],u&&e.bordered,C&&e.dividers,$&&e.stacked,E),style:{...H,...A},...D,children:[F&&s.jsxs("div",{className:e.header,children:[s.jsxs("div",{className:e.headerMain,children:[b!=null&&s.jsx(Y.IconButton,{variant:"filled",size:"sm",color:z,nonClickable:!0,"aria-hidden":!0,className:e.headerIcon,children:B(b,"md")}),(d!=null||i!=null)&&s.jsxs("div",{className:e.headerText,children:[d!=null&&s.jsx(q.Typography,{as:"h3",id:j,variant:"subtitle",className:e.title,children:d}),i!=null&&s.jsx(q.Typography,{as:"p",variant:"bodySmall",color:"muted",children:i})]})]}),m!=null&&s.jsx("div",{className:e.actions,children:m})]}),s.jsx("dl",{className:e.grid,"aria-labelledby":d!=null?j:void 0,"aria-busy":c?!0:void 0,"aria-label":c?y("descriptionList.loading"):void 0,children:c?Array.from({length:U},(a,v)=>s.jsxs("div",{className:e.item,"aria-hidden":"true",children:[s.jsx("dt",{className:e.label,children:s.jsx(k.Skeleton,{width:"40%",height:"0.9em"})}),s.jsx("dd",{className:e.value,children:s.jsx(k.Skeleton,{width:"70%",height:"1.1em"})})]},v)):_.map(({item:a,span:v,row:w,col:P},Q)=>{const T=Re(a.value),M=!T&&a.copyable?Se(a):void 0;return s.jsxs("div",{className:S.clsx(e.item,w===I&&e.lastRow,w===I&&P===0&&e.lastRowStart),style:{"--dl-span":v},children:[s.jsxs("dt",{className:e.label,children:[a.icon!=null&&s.jsx("span",{className:e.labelIcon,"aria-hidden":"true",children:B(a.icon)}),a.label]}),s.jsxs("dd",{className:e.value,children:[s.jsx("span",{className:e.valueText,children:T?s.jsx("span",{className:e.placeholder,"aria-label":y("descriptionList.empty"),children:L}):a.value}),M!=null&&s.jsx("span",{className:e.copy,children:s.jsx(X.CopyButton,{value:M,size:"sm",variant:"text",className:e.copyButton})})]})]},a.key??Q)})})]})});exports.DescriptionList=qe;
2
+ //# sourceMappingURL=DescriptionList-BCvOX8fg.cjs.map