@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
@@ -1 +1 @@
1
- {"version":3,"file":"Badge-BQpr2Jee.cjs","sources":["../src/components/Badge/Badge.tsx"],"sourcesContent":["import { forwardRef, type CSSProperties, type HTMLAttributes, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport styles from './Badge.module.css'\n\nexport type BadgePlacement = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'\n\nexport interface BadgeProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'color' | 'content'> {\n /** The element the badge decorates — e.g. a `Button` or `IconButton`. */\n children: ReactNode\n /** Count/text shown in the badge. A `number` renders as a count (capped by `max`); omit it for a dot. */\n content?: number | string\n /** Render a small dot instead of `content` (a plain notification indicator). */\n dot?: boolean\n /** Theme palette token that tints the badge. Defaults to `accent`. */\n color?: ThemeColor\n /** Cap for numeric `content` — anything above renders as `${max}+`. Defaults to `99`. */\n max?: number\n /** Keep the badge visible when numeric `content` is `0`. Defaults to `false` (hidden). */\n showZero?: boolean\n /** Corner the badge sits in. Defaults to `top-right`. */\n placement?: BadgePlacement\n}\n\nconst PLACEMENT: Record<BadgePlacement, string> = {\n 'top-right': styles.topRight,\n 'top-left': styles.topLeft,\n 'bottom-right': styles.bottomRight,\n 'bottom-left': styles.bottomLeft,\n}\n\n/**\n * Wraps a child (typically a `Button` or `IconButton`) and pins a small badge to one of its corners.\n * Pass a numeric `content` for a count (auto-capped to `${max}+`), or set `dot` for a plain dot.\n * A numeric `0` is hidden unless `showZero`. The fill is tinted by the `color` token via the shared\n * `--tz-btn-rgb` / `--tz-btn-on` pattern; styling is token-only.\n */\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n {\n children,\n content,\n dot = false,\n color = 'accent',\n max = 99,\n showZero = false,\n placement = 'top-right',\n className,\n style,\n ...props\n },\n ref,\n) {\n const isNumber = typeof content === 'number'\n const hiddenZero = isNumber && content === 0 && !showZero\n const hasContent = content !== undefined && content !== null && content !== '' && !hiddenZero\n const showDot = !hasContent && dot\n const visible = hasContent || showDot\n const display = isNumber && (content as number) > max ? `${max}+` : content\n\n return (\n <span ref={ref} className={clsx(styles.root, className)} style={style} {...props}>\n {children}\n {visible && (\n <span\n className={clsx(styles.badge, showDot ? styles.dot : styles.value, PLACEMENT[placement])}\n style={\n {\n '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`,\n '--tz-btn-on': `var(--tz-color-${color}-contrast, #fff)`,\n } as CSSProperties\n }\n aria-hidden={showDot ? true : undefined}\n >\n {hasContent ? display : null}\n </span>\n )}\n </span>\n )\n})\n"],"names":["PLACEMENT","styles","Badge","forwardRef","children","content","dot","color","max","showZero","placement","className","style","props","ref","isNumber","hiddenZero","hasContent","showDot","visible","display","jsxs","clsx","jsx"],"mappings":"oVAwBMA,EAA4C,CAChD,YAAaC,EAAO,SACpB,WAAYA,EAAO,QACnB,eAAgBA,EAAO,YACvB,cAAeA,EAAO,UACxB,EAQaC,EAAQC,EAAAA,WAAwC,SAC3D,CACE,SAAAC,EACA,QAAAC,EACA,IAAAC,EAAM,GACN,MAAAC,EAAQ,SACR,IAAAC,EAAM,GACN,SAAAC,EAAW,GACX,UAAAC,EAAY,YACZ,UAAAC,EACA,MAAAC,EACA,GAAGC,CACL,EACAC,EACA,CACA,MAAMC,EAAW,OAAOV,GAAY,SAC9BW,EAAaD,GAAYV,IAAY,GAAK,CAACI,EAC3CQ,EAAsCZ,GAAY,MAAQA,IAAY,IAAM,CAACW,EAC7EE,EAAU,CAACD,GAAcX,EACzBa,EAAUF,GAAcC,EACxBE,EAAUL,GAAaV,EAAqBG,EAAM,GAAGA,CAAG,IAAMH,EAEpE,OACEgB,EAAAA,KAAC,OAAA,CAAK,IAAAP,EAAU,UAAWQ,EAAAA,KAAKrB,EAAO,KAAMU,CAAS,EAAG,MAAAC,EAAe,GAAGC,EACxE,SAAA,CAAAT,EACAe,GACCI,EAAAA,IAAC,OAAA,CACC,UAAWD,EAAAA,KAAKrB,EAAO,MAAOiB,EAAUjB,EAAO,IAAMA,EAAO,MAAOD,EAAUU,CAAS,CAAC,EACvF,MACE,CACE,eAAgB,kBAAkBH,CAAK,QACvC,cAAe,kBAAkBA,CAAK,kBAAA,EAG1C,cAAaW,EAAU,GAAO,OAE7B,WAAaE,EAAU,IAAA,CAAA,CAC1B,EAEJ,CAEJ,CAAC"}
1
+ {"version":3,"file":"Badge-DVbe1rAI.cjs","sources":["../src/components/Badge/Badge.tsx"],"sourcesContent":["import { forwardRef, type CSSProperties, type HTMLAttributes, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport styles from './Badge.module.css'\n\nexport type BadgePlacement = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'\n\nexport interface BadgeProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'color' | 'content'> {\n /** The element the badge decorates — e.g. a `Button` or `IconButton`. */\n children: ReactNode\n /** Count/text shown in the badge. A `number` renders as a count (capped by `max`); omit it for a dot. */\n content?: number | string\n /** Render a small dot instead of `content` (a plain notification indicator). */\n dot?: boolean\n /** Theme palette token that tints the badge. Defaults to `accent`. */\n color?: ThemeColor\n /** Cap for numeric `content` — anything above renders as `${max}+`. Defaults to `99`. */\n max?: number\n /** Keep the badge visible when numeric `content` is `0`. Defaults to `false` (hidden). */\n showZero?: boolean\n /** Corner the badge sits in. Defaults to `top-right`. */\n placement?: BadgePlacement\n}\n\nconst PLACEMENT: Record<BadgePlacement, string> = {\n 'top-right': styles.topRight,\n 'top-left': styles.topLeft,\n 'bottom-right': styles.bottomRight,\n 'bottom-left': styles.bottomLeft,\n}\n\n/**\n * Wraps a child (typically a `Button` or `IconButton`) and pins a small badge to one of its corners.\n * Pass a numeric `content` for a count (auto-capped to `${max}+`), or set `dot` for a plain dot.\n * A numeric `0` is hidden unless `showZero`. The fill is tinted by the `color` token via the shared\n * `--tz-btn-rgb` / `--tz-btn-on` pattern; styling is token-only.\n */\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n {\n children,\n content,\n dot = false,\n color = 'accent',\n max = 99,\n showZero = false,\n placement = 'top-right',\n className,\n style,\n ...props\n },\n ref,\n) {\n const isNumber = typeof content === 'number'\n const hiddenZero = isNumber && content === 0 && !showZero\n const hasContent = content !== undefined && content !== null && content !== '' && !hiddenZero\n const showDot = !hasContent && dot\n const visible = hasContent || showDot\n const display = isNumber && (content as number) > max ? `${max}+` : content\n\n return (\n <span ref={ref} className={clsx(styles.root, className)} style={style} {...props}>\n {children}\n {visible && (\n <span\n className={clsx(styles.badge, showDot ? styles.dot : styles.value, PLACEMENT[placement])}\n style={\n {\n '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`,\n '--tz-btn-on': `var(--tz-color-${color}-contrast, #fff)`,\n } as CSSProperties\n }\n aria-hidden={showDot ? true : undefined}\n >\n {hasContent ? display : null}\n </span>\n )}\n </span>\n )\n})\n"],"names":["PLACEMENT","styles","Badge","forwardRef","children","content","dot","color","max","showZero","placement","className","style","props","ref","isNumber","hiddenZero","hasContent","showDot","visible","display","jsxs","clsx","jsx"],"mappings":"oVAwBMA,EAA4C,CAChD,YAAaC,EAAO,SACpB,WAAYA,EAAO,QACnB,eAAgBA,EAAO,YACvB,cAAeA,EAAO,UACxB,EAQaC,EAAQC,EAAAA,WAAwC,SAC3D,CACE,SAAAC,EACA,QAAAC,EACA,IAAAC,EAAM,GACN,MAAAC,EAAQ,SACR,IAAAC,EAAM,GACN,SAAAC,EAAW,GACX,UAAAC,EAAY,YACZ,UAAAC,EACA,MAAAC,EACA,GAAGC,CACL,EACAC,EACA,CACA,MAAMC,EAAW,OAAOV,GAAY,SAC9BW,EAAaD,GAAYV,IAAY,GAAK,CAACI,EAC3CQ,EAAsCZ,GAAY,MAAQA,IAAY,IAAM,CAACW,EAC7EE,EAAU,CAACD,GAAcX,EACzBa,EAAUF,GAAcC,EACxBE,EAAUL,GAAaV,EAAqBG,EAAM,GAAGA,CAAG,IAAMH,EAEpE,OACEgB,EAAAA,KAAC,OAAA,CAAK,IAAAP,EAAU,UAAWQ,EAAAA,KAAKrB,EAAO,KAAMU,CAAS,EAAG,MAAAC,EAAe,GAAGC,EACxE,SAAA,CAAAT,EACAe,GACCI,EAAAA,IAAC,OAAA,CACC,UAAWD,EAAAA,KAAKrB,EAAO,MAAOiB,EAAUjB,EAAO,IAAMA,EAAO,MAAOD,EAAUU,CAAS,CAAC,EACvF,MACE,CACE,eAAgB,kBAAkBH,CAAK,QACvC,cAAe,kBAAkBA,CAAK,kBAAA,EAG1C,cAAaW,EAAU,GAAO,OAE7B,WAAaE,EAAU,IAAA,CAAA,CAC1B,EAEJ,CAEJ,CAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("react/jsx-runtime"),m=require("@tanstack/react-router"),t=require("./Icon-BVULqOJD.cjs"),b=require("./names-BJnFU_5m.cjs"),_=require("./Sidebar-DcKIEfhy.cjs"),d=require("./ConfigProvider-Bszl3Wr3.cjs"),h="_breadcrumbs_c3mqv_4",j="_list_c3mqv_8",N="_item_c3mqv_18",q="_home_c3mqv_27",x="_separator_c3mqv_39",v="_link_c3mqv_50",p="_current_c3mqv_61",s={breadcrumbs:h,list:j,item:N,home:q,separator:x,link:v,current:p},u=r=>r,k=new Set(b.ICON_NAMES);function f({separator:r}){return typeof r=="string"&&k.has(r)?e.jsx(t.Icon,{name:r,size:"sm",className:s.separator}):e.jsx("span",{className:s.separator,"aria-hidden":"true",children:r})}function g({separator:r="ArrowRight4"}={}){const{homeTo:i,items:n}=_.useBreadcrumbs(),a=d.useT();return n.length===0?null:e.jsx("nav",{"aria-label":a("breadcrumbs.label"),className:s.breadcrumbs,children:e.jsxs("ol",{className:s.list,children:[e.jsx("li",{className:s.item,children:i?e.jsx(m.Link,{to:u(i),className:s.home,"aria-label":a("breadcrumbs.home"),children:e.jsx(t.Icon,{name:"Home2",size:"sm"})}):e.jsx("span",{className:s.home,"aria-label":a("breadcrumbs.home"),children:e.jsx(t.Icon,{name:"Home2",size:"sm"})})}),n.map((c,o)=>{const l=o===n.length-1;return e.jsxs("li",{className:s.item,children:[e.jsx(f,{separator:r}),c.to&&!l?e.jsx(m.Link,{to:u(c.to),className:s.link,children:c.label}):e.jsx("span",{className:s.current,"aria-current":l?"page":void 0,children:c.label})]},`${c.label}-${o}`)})]})})}exports.Breadcrumbs=g;
2
- //# sourceMappingURL=Breadcrumbs-CsYTiX2h.cjs.map
1
+ "use strict";const e=require("react/jsx-runtime"),m=require("@tanstack/react-router"),t=require("./Icon-BVULqOJD.cjs"),b=require("./names-BJnFU_5m.cjs"),_=require("./Sidebar-NI5HGGYF.cjs"),d=require("./ConfigProvider-BElY0HuV.cjs"),h="_breadcrumbs_c3mqv_4",j="_list_c3mqv_8",N="_item_c3mqv_18",q="_home_c3mqv_27",x="_separator_c3mqv_39",v="_link_c3mqv_50",p="_current_c3mqv_61",s={breadcrumbs:h,list:j,item:N,home:q,separator:x,link:v,current:p},u=r=>r,k=new Set(b.ICON_NAMES);function f({separator:r}){return typeof r=="string"&&k.has(r)?e.jsx(t.Icon,{name:r,size:"sm",className:s.separator}):e.jsx("span",{className:s.separator,"aria-hidden":"true",children:r})}function g({separator:r="ArrowRight4"}={}){const{homeTo:i,items:n}=_.useBreadcrumbs(),a=d.useT();return n.length===0?null:e.jsx("nav",{"aria-label":a("breadcrumbs.label"),className:s.breadcrumbs,children:e.jsxs("ol",{className:s.list,children:[e.jsx("li",{className:s.item,children:i?e.jsx(m.Link,{to:u(i),className:s.home,"aria-label":a("breadcrumbs.home"),children:e.jsx(t.Icon,{name:"Home2",size:"sm"})}):e.jsx("span",{className:s.home,"aria-label":a("breadcrumbs.home"),children:e.jsx(t.Icon,{name:"Home2",size:"sm"})})}),n.map((c,o)=>{const l=o===n.length-1;return e.jsxs("li",{className:s.item,children:[e.jsx(f,{separator:r}),c.to&&!l?e.jsx(m.Link,{to:u(c.to),className:s.link,children:c.label}):e.jsx("span",{className:s.current,"aria-current":l?"page":void 0,children:c.label})]},`${c.label}-${o}`)})]})})}exports.Breadcrumbs=g;
2
+ //# sourceMappingURL=Breadcrumbs-3wHPNa0P.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs-CsYTiX2h.cjs","sources":["../src/components/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { Link, type LinkProps } from '@tanstack/react-router'\nimport { useT } from '../../theme'\nimport { Icon } from '../Icon'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport { useBreadcrumbs } from '../Sidebar/Sidebar'\nimport styles from './Breadcrumbs.module.css'\n\nconst linkTo = (to: string) => to as LinkProps['to']\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\nexport interface BreadcrumbsProps {\n /**\n * Separator between crumbs. A known `IconName` (the default `\"ArrowRight4\"`) renders as an icon; any\n * other string renders as plain text; or pass a node.\n */\n separator?: IconName | ReactNode\n}\n\nfunction Separator({ separator }: { separator: IconName | ReactNode }) {\n if (typeof separator === 'string' && ICON_NAME_SET.has(separator)) {\n return <Icon name={separator as IconName} size=\"sm\" className={styles.separator} />\n }\n return (\n <span className={styles.separator} aria-hidden=\"true\">\n {separator}\n </span>\n )\n}\n\n/**\n * Auto-generated breadcrumb trail for the current route, rendered at the top of `RootLayout`'s\n * content. It always starts with a home icon that links to the first allowed menu page (the same\n * target as `FirstRouteRedirect`), followed by one crumb per matched route that declares a\n * `staticData.name`. Intermediate crumbs link to their page when navigable; the current page is\n * plain text. Renders nothing when the current route has no named matches. Token-only styling.\n */\nexport function Breadcrumbs({ separator = 'ArrowRight4' }: BreadcrumbsProps = {}) {\n const { homeTo, items } = useBreadcrumbs()\n const t = useT()\n if (items.length === 0) return null\n\n return (\n <nav aria-label={t('breadcrumbs.label')} className={styles.breadcrumbs}>\n <ol className={styles.list}>\n <li className={styles.item}>\n {homeTo ? (\n <Link to={linkTo(homeTo)} className={styles.home} aria-label={t('breadcrumbs.home')}>\n <Icon name=\"Home2\" size=\"sm\" />\n </Link>\n ) : (\n <span className={styles.home} aria-label={t('breadcrumbs.home')}>\n <Icon name=\"Home2\" size=\"sm\" />\n </span>\n )}\n </li>\n {items.map((item, index) => {\n const isLast = index === items.length - 1\n return (\n <li className={styles.item} key={`${item.label}-${index}`}>\n <Separator separator={separator} />\n {item.to && !isLast ? (\n <Link to={linkTo(item.to)} className={styles.link}>\n {item.label}\n </Link>\n ) : (\n <span className={styles.current} aria-current={isLast ? 'page' : undefined}>\n {item.label}\n </span>\n )}\n </li>\n )\n })}\n </ol>\n </nav>\n )\n}\n"],"names":["linkTo","to","ICON_NAME_SET","ICON_NAMES","Separator","separator","jsx","Icon","styles","Breadcrumbs","homeTo","items","useBreadcrumbs","t","useT","jsxs","Link","item","index","isLast"],"mappings":"8bAQMA,EAAUC,GAAeA,EACzBC,EAAgB,IAAI,IAAYC,YAAU,EAUhD,SAASC,EAAU,CAAE,UAAAC,GAAkD,CACrE,OAAI,OAAOA,GAAc,UAAYH,EAAc,IAAIG,CAAS,EACvDC,MAACC,EAAAA,MAAK,KAAMF,EAAuB,KAAK,KAAK,UAAWG,EAAO,UAAW,QAGhF,OAAA,CAAK,UAAWA,EAAO,UAAW,cAAY,OAC5C,SAAAH,EACH,CAEJ,CASO,SAASI,EAAY,CAAE,UAAAJ,EAAY,aAAA,EAAoC,CAAA,EAAI,CAChF,KAAM,CAAE,OAAAK,EAAQ,MAAAC,CAAA,EAAUC,iBAAA,EACpBC,EAAIC,EAAAA,KAAA,EACV,OAAIH,EAAM,SAAW,EAAU,KAG7BL,EAAAA,IAAC,MAAA,CAAI,aAAYO,EAAE,mBAAmB,EAAG,UAAWL,EAAO,YACzD,SAAAO,EAAAA,KAAC,KAAA,CAAG,UAAWP,EAAO,KACpB,SAAA,CAAAF,EAAAA,IAAC,MAAG,UAAWE,EAAO,KACnB,SAAAE,EACCJ,EAAAA,IAACU,EAAAA,MAAK,GAAIhB,EAAOU,CAAM,EAAG,UAAWF,EAAO,KAAM,aAAYK,EAAE,kBAAkB,EAChF,eAACN,EAAAA,KAAA,CAAK,KAAK,QAAQ,KAAK,KAAK,CAAA,CAC/B,QAEC,OAAA,CAAK,UAAWC,EAAO,KAAM,aAAYK,EAAE,kBAAkB,EAC5D,eAACN,EAAAA,KAAA,CAAK,KAAK,QAAQ,KAAK,KAAK,EAC/B,CAAA,CAEJ,EACCI,EAAM,IAAI,CAACM,EAAMC,IAAU,CAC1B,MAAMC,EAASD,IAAUP,EAAM,OAAS,EACxC,OACEI,EAAAA,KAAC,KAAA,CAAG,UAAWP,EAAO,KACpB,SAAA,CAAAF,MAACF,GAAU,UAAAC,EAAsB,EAChCY,EAAK,IAAM,CAACE,EACXb,EAAAA,IAACU,EAAAA,KAAA,CAAK,GAAIhB,EAAOiB,EAAK,EAAE,EAAG,UAAWT,EAAO,KAC1C,SAAAS,EAAK,KAAA,CACR,EAEAX,EAAAA,IAAC,OAAA,CAAK,UAAWE,EAAO,QAAS,eAAcW,EAAS,OAAS,OAC9D,SAAAF,EAAK,KAAA,CACR,CAAA,CAAA,EAT6B,GAAGA,EAAK,KAAK,IAAIC,CAAK,EAWvD,CAEJ,CAAC,CAAA,CAAA,CACH,CAAA,CACF,CAEJ"}
1
+ {"version":3,"file":"Breadcrumbs-3wHPNa0P.cjs","sources":["../src/components/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { Link, type LinkProps } from '@tanstack/react-router'\nimport { useT } from '../../theme'\nimport { Icon } from '../Icon'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport { useBreadcrumbs } from '../Sidebar/Sidebar'\nimport styles from './Breadcrumbs.module.css'\n\nconst linkTo = (to: string) => to as LinkProps['to']\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\nexport interface BreadcrumbsProps {\n /**\n * Separator between crumbs. A known `IconName` (the default `\"ArrowRight4\"`) renders as an icon; any\n * other string renders as plain text; or pass a node.\n */\n separator?: IconName | ReactNode\n}\n\nfunction Separator({ separator }: { separator: IconName | ReactNode }) {\n if (typeof separator === 'string' && ICON_NAME_SET.has(separator)) {\n return <Icon name={separator as IconName} size=\"sm\" className={styles.separator} />\n }\n return (\n <span className={styles.separator} aria-hidden=\"true\">\n {separator}\n </span>\n )\n}\n\n/**\n * Auto-generated breadcrumb trail for the current route, rendered at the top of `RootLayout`'s\n * content. It always starts with a home icon that links to the first allowed menu page (the same\n * target as `FirstRouteRedirect`), followed by one crumb per matched route that declares a\n * `staticData.name`. Intermediate crumbs link to their page when navigable; the current page is\n * plain text. Renders nothing when the current route has no named matches. Token-only styling.\n */\nexport function Breadcrumbs({ separator = 'ArrowRight4' }: BreadcrumbsProps = {}) {\n const { homeTo, items } = useBreadcrumbs()\n const t = useT()\n if (items.length === 0) return null\n\n return (\n <nav aria-label={t('breadcrumbs.label')} className={styles.breadcrumbs}>\n <ol className={styles.list}>\n <li className={styles.item}>\n {homeTo ? (\n <Link to={linkTo(homeTo)} className={styles.home} aria-label={t('breadcrumbs.home')}>\n <Icon name=\"Home2\" size=\"sm\" />\n </Link>\n ) : (\n <span className={styles.home} aria-label={t('breadcrumbs.home')}>\n <Icon name=\"Home2\" size=\"sm\" />\n </span>\n )}\n </li>\n {items.map((item, index) => {\n const isLast = index === items.length - 1\n return (\n <li className={styles.item} key={`${item.label}-${index}`}>\n <Separator separator={separator} />\n {item.to && !isLast ? (\n <Link to={linkTo(item.to)} className={styles.link}>\n {item.label}\n </Link>\n ) : (\n <span className={styles.current} aria-current={isLast ? 'page' : undefined}>\n {item.label}\n </span>\n )}\n </li>\n )\n })}\n </ol>\n </nav>\n )\n}\n"],"names":["linkTo","to","ICON_NAME_SET","ICON_NAMES","Separator","separator","jsx","Icon","styles","Breadcrumbs","homeTo","items","useBreadcrumbs","t","useT","jsxs","Link","item","index","isLast"],"mappings":"8bAQMA,EAAUC,GAAeA,EACzBC,EAAgB,IAAI,IAAYC,YAAU,EAUhD,SAASC,EAAU,CAAE,UAAAC,GAAkD,CACrE,OAAI,OAAOA,GAAc,UAAYH,EAAc,IAAIG,CAAS,EACvDC,MAACC,EAAAA,MAAK,KAAMF,EAAuB,KAAK,KAAK,UAAWG,EAAO,UAAW,QAGhF,OAAA,CAAK,UAAWA,EAAO,UAAW,cAAY,OAC5C,SAAAH,EACH,CAEJ,CASO,SAASI,EAAY,CAAE,UAAAJ,EAAY,aAAA,EAAoC,CAAA,EAAI,CAChF,KAAM,CAAE,OAAAK,EAAQ,MAAAC,CAAA,EAAUC,iBAAA,EACpBC,EAAIC,EAAAA,KAAA,EACV,OAAIH,EAAM,SAAW,EAAU,KAG7BL,EAAAA,IAAC,MAAA,CAAI,aAAYO,EAAE,mBAAmB,EAAG,UAAWL,EAAO,YACzD,SAAAO,EAAAA,KAAC,KAAA,CAAG,UAAWP,EAAO,KACpB,SAAA,CAAAF,EAAAA,IAAC,MAAG,UAAWE,EAAO,KACnB,SAAAE,EACCJ,EAAAA,IAACU,EAAAA,MAAK,GAAIhB,EAAOU,CAAM,EAAG,UAAWF,EAAO,KAAM,aAAYK,EAAE,kBAAkB,EAChF,eAACN,EAAAA,KAAA,CAAK,KAAK,QAAQ,KAAK,KAAK,CAAA,CAC/B,QAEC,OAAA,CAAK,UAAWC,EAAO,KAAM,aAAYK,EAAE,kBAAkB,EAC5D,eAACN,EAAAA,KAAA,CAAK,KAAK,QAAQ,KAAK,KAAK,EAC/B,CAAA,CAEJ,EACCI,EAAM,IAAI,CAACM,EAAMC,IAAU,CAC1B,MAAMC,EAASD,IAAUP,EAAM,OAAS,EACxC,OACEI,EAAAA,KAAC,KAAA,CAAG,UAAWP,EAAO,KACpB,SAAA,CAAAF,MAACF,GAAU,UAAAC,EAAsB,EAChCY,EAAK,IAAM,CAACE,EACXb,EAAAA,IAACU,EAAAA,KAAA,CAAK,GAAIhB,EAAOiB,EAAK,EAAE,EAAG,UAAWT,EAAO,KAC1C,SAAAS,EAAK,KAAA,CACR,EAEAX,EAAAA,IAAC,OAAA,CAAK,UAAWE,EAAO,QAAS,eAAcW,EAAS,OAAS,OAC9D,SAAAF,EAAK,KAAA,CACR,CAAA,CAAA,EAT6B,GAAGA,EAAK,KAAK,IAAIC,CAAK,EAWvD,CAEJ,CAAC,CAAA,CAAA,CACH,CAAA,CACF,CAEJ"}
@@ -2,8 +2,8 @@ import { jsx as e, jsxs as i } from "react/jsx-runtime";
2
2
  import { Link as u } from "@tanstack/react-router";
3
3
  import { I as n } from "./Icon-DaTvzLBu.js";
4
4
  import { a as b } from "./names-r21QPjcU.js";
5
- import { u as h } from "./Sidebar-YH-DoNG9.js";
6
- import { a as d } from "./ConfigProvider-DR9YMy9U.js";
5
+ import { u as h } from "./Sidebar-CsWcjSTx.js";
6
+ import { a as d } from "./ConfigProvider-B_RSn9bb.js";
7
7
  const p = "_breadcrumbs_c3mqv_4", N = "_list_c3mqv_8", f = "_item_c3mqv_18", v = "_home_c3mqv_27", q = "_separator_c3mqv_39", k = "_link_c3mqv_50", g = "_current_c3mqv_61", r = {
8
8
  breadcrumbs: p,
9
9
  list: N,
@@ -32,4 +32,4 @@ function w({ separator: s = "ArrowRight4" } = {}) {
32
32
  export {
33
33
  w as B
34
34
  };
35
- //# sourceMappingURL=Breadcrumbs-DQHHeLId.js.map
35
+ //# sourceMappingURL=Breadcrumbs-Cgd-u3aK.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs-DQHHeLId.js","sources":["../src/components/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { Link, type LinkProps } from '@tanstack/react-router'\nimport { useT } from '../../theme'\nimport { Icon } from '../Icon'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport { useBreadcrumbs } from '../Sidebar/Sidebar'\nimport styles from './Breadcrumbs.module.css'\n\nconst linkTo = (to: string) => to as LinkProps['to']\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\nexport interface BreadcrumbsProps {\n /**\n * Separator between crumbs. A known `IconName` (the default `\"ArrowRight4\"`) renders as an icon; any\n * other string renders as plain text; or pass a node.\n */\n separator?: IconName | ReactNode\n}\n\nfunction Separator({ separator }: { separator: IconName | ReactNode }) {\n if (typeof separator === 'string' && ICON_NAME_SET.has(separator)) {\n return <Icon name={separator as IconName} size=\"sm\" className={styles.separator} />\n }\n return (\n <span className={styles.separator} aria-hidden=\"true\">\n {separator}\n </span>\n )\n}\n\n/**\n * Auto-generated breadcrumb trail for the current route, rendered at the top of `RootLayout`'s\n * content. It always starts with a home icon that links to the first allowed menu page (the same\n * target as `FirstRouteRedirect`), followed by one crumb per matched route that declares a\n * `staticData.name`. Intermediate crumbs link to their page when navigable; the current page is\n * plain text. Renders nothing when the current route has no named matches. Token-only styling.\n */\nexport function Breadcrumbs({ separator = 'ArrowRight4' }: BreadcrumbsProps = {}) {\n const { homeTo, items } = useBreadcrumbs()\n const t = useT()\n if (items.length === 0) return null\n\n return (\n <nav aria-label={t('breadcrumbs.label')} className={styles.breadcrumbs}>\n <ol className={styles.list}>\n <li className={styles.item}>\n {homeTo ? (\n <Link to={linkTo(homeTo)} className={styles.home} aria-label={t('breadcrumbs.home')}>\n <Icon name=\"Home2\" size=\"sm\" />\n </Link>\n ) : (\n <span className={styles.home} aria-label={t('breadcrumbs.home')}>\n <Icon name=\"Home2\" size=\"sm\" />\n </span>\n )}\n </li>\n {items.map((item, index) => {\n const isLast = index === items.length - 1\n return (\n <li className={styles.item} key={`${item.label}-${index}`}>\n <Separator separator={separator} />\n {item.to && !isLast ? (\n <Link to={linkTo(item.to)} className={styles.link}>\n {item.label}\n </Link>\n ) : (\n <span className={styles.current} aria-current={isLast ? 'page' : undefined}>\n {item.label}\n </span>\n )}\n </li>\n )\n })}\n </ol>\n </nav>\n )\n}\n"],"names":["linkTo","to","ICON_NAME_SET","ICON_NAMES","Separator","separator","jsx","Icon","styles","Breadcrumbs","homeTo","items","useBreadcrumbs","t","useT","jsxs","Link","item","index","isLast"],"mappings":";;;;;;;;;;;;;;GAQMA,IAAS,CAACC,MAAeA,GACzBC,IAAgB,IAAI,IAAYC,CAAU;AAUhD,SAASC,EAAU,EAAE,WAAAC,KAAkD;AACrE,SAAI,OAAOA,KAAc,YAAYH,EAAc,IAAIG,CAAS,IACvD,gBAAAC,EAACC,KAAK,MAAMF,GAAuB,MAAK,MAAK,WAAWG,EAAO,WAAW,sBAGhF,QAAA,EAAK,WAAWA,EAAO,WAAW,eAAY,QAC5C,UAAAH,GACH;AAEJ;AASO,SAASI,EAAY,EAAE,WAAAJ,IAAY,cAAA,IAAoC,CAAA,GAAI;AAChF,QAAM,EAAE,QAAAK,GAAQ,OAAAC,EAAA,IAAUC,EAAA,GACpBC,IAAIC,EAAA;AACV,SAAIH,EAAM,WAAW,IAAU,OAG7B,gBAAAL,EAAC,OAAA,EAAI,cAAYO,EAAE,mBAAmB,GAAG,WAAWL,EAAO,aACzD,UAAA,gBAAAO,EAAC,MAAA,EAAG,WAAWP,EAAO,MACpB,UAAA;AAAA,IAAA,gBAAAF,EAAC,QAAG,WAAWE,EAAO,MACnB,UAAAE,IACC,gBAAAJ,EAACU,KAAK,IAAIhB,EAAOU,CAAM,GAAG,WAAWF,EAAO,MAAM,cAAYK,EAAE,kBAAkB,GAChF,4BAACN,GAAA,EAAK,MAAK,SAAQ,MAAK,MAAK,EAAA,CAC/B,sBAEC,QAAA,EAAK,WAAWC,EAAO,MAAM,cAAYK,EAAE,kBAAkB,GAC5D,4BAACN,GAAA,EAAK,MAAK,SAAQ,MAAK,MAAK,GAC/B,EAAA,CAEJ;AAAA,IACCI,EAAM,IAAI,CAACM,GAAMC,MAAU;AAC1B,YAAMC,IAASD,MAAUP,EAAM,SAAS;AACxC,aACE,gBAAAI,EAAC,MAAA,EAAG,WAAWP,EAAO,MACpB,UAAA;AAAA,QAAA,gBAAAF,EAACF,KAAU,WAAAC,GAAsB;AAAA,QAChCY,EAAK,MAAM,CAACE,IACX,gBAAAb,EAACU,GAAA,EAAK,IAAIhB,EAAOiB,EAAK,EAAE,GAAG,WAAWT,EAAO,MAC1C,UAAAS,EAAK,MAAA,CACR,IAEA,gBAAAX,EAAC,QAAA,EAAK,WAAWE,EAAO,SAAS,gBAAcW,IAAS,SAAS,QAC9D,UAAAF,EAAK,MAAA,CACR;AAAA,MAAA,EAAA,GAT6B,GAAGA,EAAK,KAAK,IAAIC,CAAK,EAWvD;AAAA,IAEJ,CAAC;AAAA,EAAA,EAAA,CACH,EAAA,CACF;AAEJ;"}
1
+ {"version":3,"file":"Breadcrumbs-Cgd-u3aK.js","sources":["../src/components/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { Link, type LinkProps } from '@tanstack/react-router'\nimport { useT } from '../../theme'\nimport { Icon } from '../Icon'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport { useBreadcrumbs } from '../Sidebar/Sidebar'\nimport styles from './Breadcrumbs.module.css'\n\nconst linkTo = (to: string) => to as LinkProps['to']\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\nexport interface BreadcrumbsProps {\n /**\n * Separator between crumbs. A known `IconName` (the default `\"ArrowRight4\"`) renders as an icon; any\n * other string renders as plain text; or pass a node.\n */\n separator?: IconName | ReactNode\n}\n\nfunction Separator({ separator }: { separator: IconName | ReactNode }) {\n if (typeof separator === 'string' && ICON_NAME_SET.has(separator)) {\n return <Icon name={separator as IconName} size=\"sm\" className={styles.separator} />\n }\n return (\n <span className={styles.separator} aria-hidden=\"true\">\n {separator}\n </span>\n )\n}\n\n/**\n * Auto-generated breadcrumb trail for the current route, rendered at the top of `RootLayout`'s\n * content. It always starts with a home icon that links to the first allowed menu page (the same\n * target as `FirstRouteRedirect`), followed by one crumb per matched route that declares a\n * `staticData.name`. Intermediate crumbs link to their page when navigable; the current page is\n * plain text. Renders nothing when the current route has no named matches. Token-only styling.\n */\nexport function Breadcrumbs({ separator = 'ArrowRight4' }: BreadcrumbsProps = {}) {\n const { homeTo, items } = useBreadcrumbs()\n const t = useT()\n if (items.length === 0) return null\n\n return (\n <nav aria-label={t('breadcrumbs.label')} className={styles.breadcrumbs}>\n <ol className={styles.list}>\n <li className={styles.item}>\n {homeTo ? (\n <Link to={linkTo(homeTo)} className={styles.home} aria-label={t('breadcrumbs.home')}>\n <Icon name=\"Home2\" size=\"sm\" />\n </Link>\n ) : (\n <span className={styles.home} aria-label={t('breadcrumbs.home')}>\n <Icon name=\"Home2\" size=\"sm\" />\n </span>\n )}\n </li>\n {items.map((item, index) => {\n const isLast = index === items.length - 1\n return (\n <li className={styles.item} key={`${item.label}-${index}`}>\n <Separator separator={separator} />\n {item.to && !isLast ? (\n <Link to={linkTo(item.to)} className={styles.link}>\n {item.label}\n </Link>\n ) : (\n <span className={styles.current} aria-current={isLast ? 'page' : undefined}>\n {item.label}\n </span>\n )}\n </li>\n )\n })}\n </ol>\n </nav>\n )\n}\n"],"names":["linkTo","to","ICON_NAME_SET","ICON_NAMES","Separator","separator","jsx","Icon","styles","Breadcrumbs","homeTo","items","useBreadcrumbs","t","useT","jsxs","Link","item","index","isLast"],"mappings":";;;;;;;;;;;;;;GAQMA,IAAS,CAACC,MAAeA,GACzBC,IAAgB,IAAI,IAAYC,CAAU;AAUhD,SAASC,EAAU,EAAE,WAAAC,KAAkD;AACrE,SAAI,OAAOA,KAAc,YAAYH,EAAc,IAAIG,CAAS,IACvD,gBAAAC,EAACC,KAAK,MAAMF,GAAuB,MAAK,MAAK,WAAWG,EAAO,WAAW,sBAGhF,QAAA,EAAK,WAAWA,EAAO,WAAW,eAAY,QAC5C,UAAAH,GACH;AAEJ;AASO,SAASI,EAAY,EAAE,WAAAJ,IAAY,cAAA,IAAoC,CAAA,GAAI;AAChF,QAAM,EAAE,QAAAK,GAAQ,OAAAC,EAAA,IAAUC,EAAA,GACpBC,IAAIC,EAAA;AACV,SAAIH,EAAM,WAAW,IAAU,OAG7B,gBAAAL,EAAC,OAAA,EAAI,cAAYO,EAAE,mBAAmB,GAAG,WAAWL,EAAO,aACzD,UAAA,gBAAAO,EAAC,MAAA,EAAG,WAAWP,EAAO,MACpB,UAAA;AAAA,IAAA,gBAAAF,EAAC,QAAG,WAAWE,EAAO,MACnB,UAAAE,IACC,gBAAAJ,EAACU,KAAK,IAAIhB,EAAOU,CAAM,GAAG,WAAWF,EAAO,MAAM,cAAYK,EAAE,kBAAkB,GAChF,4BAACN,GAAA,EAAK,MAAK,SAAQ,MAAK,MAAK,EAAA,CAC/B,sBAEC,QAAA,EAAK,WAAWC,EAAO,MAAM,cAAYK,EAAE,kBAAkB,GAC5D,4BAACN,GAAA,EAAK,MAAK,SAAQ,MAAK,MAAK,GAC/B,EAAA,CAEJ;AAAA,IACCI,EAAM,IAAI,CAACM,GAAMC,MAAU;AAC1B,YAAMC,IAASD,MAAUP,EAAM,SAAS;AACxC,aACE,gBAAAI,EAAC,MAAA,EAAG,WAAWP,EAAO,MACpB,UAAA;AAAA,QAAA,gBAAAF,EAACF,KAAU,WAAAC,GAAsB;AAAA,QAChCY,EAAK,MAAM,CAACE,IACX,gBAAAb,EAACU,GAAA,EAAK,IAAIhB,EAAOiB,EAAK,EAAE,GAAG,WAAWT,EAAO,MAC1C,UAAAS,EAAK,MAAA,CACR,IAEA,gBAAAX,EAAC,QAAA,EAAK,WAAWE,EAAO,SAAS,gBAAcW,IAAS,SAAS,QAC9D,UAAAF,EAAK,MAAA,CACR;AAAA,MAAA,EAAA,GAT6B,GAAGA,EAAK,KAAK,IAAIC,CAAK,EAWvD;AAAA,IAEJ,CAAC;AAAA,EAAA,EAAA,CACH,EAAA,CACF;AAEJ;"}
@@ -0,0 +1,72 @@
1
+ import { jsxs as h, jsx as e } from "react/jsx-runtime";
2
+ import { forwardRef as z, isValidElement as W, cloneElement as v } from "react";
3
+ import { clsx as B } from "clsx";
4
+ import { L as i } from "./Loader-CwyoKoWY.js";
5
+ const E = "_button_jyfg4_1", L = "_sm_jyfg4_23", N = "_md_jyfg4_29", $ = "_lg_jyfg4_35", w = "_contained_jyfg4_42", A = "_filled_jyfg4_52", R = "_outlined_jyfg4_61", V = "_text_jyfg4_72", k = "_fullWidth_jyfg4_82", q = "_rounded_jyfg4_86", C = "_disabled_jyfg4_94", D = "_loading_jyfg4_98", F = "_label_jyfg4_103", t = {
6
+ button: E,
7
+ sm: L,
8
+ md: N,
9
+ lg: $,
10
+ contained: w,
11
+ filled: A,
12
+ outlined: R,
13
+ text: V,
14
+ fullWidth: k,
15
+ rounded: q,
16
+ disabled: C,
17
+ loading: D,
18
+ label: F
19
+ }, M = z(function({
20
+ variant: r = "contained",
21
+ color: d = "accent",
22
+ size: n = "md",
23
+ loading: o = !1,
24
+ fullWidth: u = !1,
25
+ rounded: b = !1,
26
+ disabled: _ = !1,
27
+ startIcon: a,
28
+ endIcon: m,
29
+ className: g,
30
+ style: y,
31
+ type: j = "button",
32
+ children: s,
33
+ ...p
34
+ }, x) {
35
+ const f = o && !a, c = (l) => W(l) ? v(l, {
36
+ size: l.props.size ?? n
37
+ }) : l;
38
+ return /* @__PURE__ */ h(
39
+ "button",
40
+ {
41
+ ref: x,
42
+ type: j,
43
+ disabled: _ || o,
44
+ "aria-busy": o || void 0,
45
+ className: B(
46
+ t.button,
47
+ t[r],
48
+ t[n],
49
+ u && t.fullWidth,
50
+ b && t.rounded,
51
+ o && t.loading,
52
+ _ && t.disabled,
53
+ g
54
+ ),
55
+ style: {
56
+ "--tz-btn-rgb": `var(--tz-color-${d}-rgb)`,
57
+ "--tz-btn-on": `var(--tz-color-${d}-contrast, #fff)`,
58
+ ...y
59
+ },
60
+ ...p,
61
+ children: [
62
+ o && !f ? /* @__PURE__ */ e(i, { size: n, "aria-hidden": "true" }) : c(a),
63
+ s != null && s !== !1 && /* @__PURE__ */ e("span", { className: t.label, children: s }),
64
+ f ? /* @__PURE__ */ e(i, { size: n, "aria-hidden": "true" }) : !o && c(m)
65
+ ]
66
+ }
67
+ );
68
+ });
69
+ export {
70
+ M as B
71
+ };
72
+ //# sourceMappingURL=Button-BLW9yV8W.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button-DBs8xnA5.js","sources":["../src/components/Button/Button.tsx"],"sourcesContent":["import {\n cloneElement,\n forwardRef,\n isValidElement,\n type ButtonHTMLAttributes,\n type CSSProperties,\n type ReactElement,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport { Loader } from '../Loader'\nimport styles from './Button.module.css'\n\nexport type ButtonVariant = 'contained' | 'filled' | 'outlined' | 'text'\nexport type ButtonSize = 'sm' | 'md' | 'lg'\n\nexport interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'color'> {\n /** Visual style. `contained` solid · `filled` soft tint · `outlined` border · `text` bare. */\n variant?: ButtonVariant\n /** Theme palette token that tints the button. Defaults to `accent`. */\n color?: ThemeColor\n /** Preset size — drives height (`--tz-control-height-*`), padding and font size. */\n size?: ButtonSize\n /** Shows the loader and blocks interaction (also sets the native `disabled`). The loader replaces the `startIcon` when present, otherwise it trails the label at the end (right) — so a plain button shows the spinner on the right. The text stays visible. */\n loading?: boolean\n /** Stretches the button to fill its container. */\n fullWidth?: boolean\n /** Pill shape (fully rounded corners). */\n rounded?: boolean\n /** Icon before the label. Replaced by the loader while `loading`. */\n startIcon?: ReactNode\n /** Icon after the label. Replaced by the loader while `loading` when no `startIcon` is set. */\n endIcon?: ReactNode\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = 'contained',\n color = 'accent',\n size = 'md',\n loading = false,\n fullWidth = false,\n rounded = false,\n disabled = false,\n startIcon,\n endIcon,\n className,\n style,\n type = 'button',\n children,\n ...props\n },\n ref,\n) {\n // The loader replaces the start icon when there is one; otherwise it sits at the end (right) —\n // including a plain button with no icons, so the spinner trails the label.\n const loaderAtEnd = loading && !startIcon\n\n // size an icon slot to match the button (an explicit icon `size` still wins)\n const sizeIcon = (node: ReactNode): ReactNode =>\n isValidElement(node)\n ? cloneElement(node as ReactElement<{ size?: ButtonSize }>, {\n size: (node.props as { size?: ButtonSize }).size ?? size,\n })\n : node\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n className={clsx(\n styles.button,\n styles[variant],\n styles[size],\n fullWidth && styles.fullWidth,\n rounded && styles.rounded,\n loading && styles.loading,\n disabled && styles.disabled,\n className,\n )}\n style={\n {\n '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`,\n '--tz-btn-on': `var(--tz-color-${color}-contrast, #fff)`,\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n {/* leading slot — the loader takes the start icon's place while loading */}\n {loading && !loaderAtEnd ? <Loader size={size} aria-hidden=\"true\" /> : sizeIcon(startIcon)}\n {children != null && children !== false && <span className={styles.label}>{children}</span>}\n {/* trailing slot — the loader takes the end icon's place when there's no start icon */}\n {loaderAtEnd ? <Loader size={size} aria-hidden=\"true\" /> : !loading && sizeIcon(endIcon)}\n </button>\n )\n})\n"],"names":["Button","forwardRef","variant","color","size","loading","fullWidth","rounded","disabled","startIcon","endIcon","className","style","type","children","props","ref","loaderAtEnd","sizeIcon","node","isValidElement","cloneElement","jsxs","clsx","styles","jsx","Loader"],"mappings":";;;;;;;;;;;;;;;;;;GAoCaA,IAASC,EAA2C,SAC/D;AAAA,EACE,SAAAC,IAAU;AAAA,EACV,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,SAAAC,IAAU;AAAA,EACV,UAAAC,IAAW;AAAA,EACX,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,UAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AAGA,QAAMC,IAAcZ,KAAW,CAACI,GAG1BS,IAAW,CAACC,MAChBC,EAAeD,CAAI,IACfE,EAAaF,GAA6C;AAAA,IACxD,MAAOA,EAAK,MAAgC,QAAQf;AAAA,EAAA,CACrD,IACDe;AAEN,SACE,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAN;AAAA,MACA,MAAAH;AAAA,MACA,UAAUL,KAAYH;AAAA,MACtB,aAAWA,KAAW;AAAA,MACtB,WAAWkB;AAAA,QACTC,EAAO;AAAA,QACPA,EAAOtB,CAAO;AAAA,QACdsB,EAAOpB,CAAI;AAAA,QACXE,KAAakB,EAAO;AAAA,QACpBjB,KAAWiB,EAAO;AAAA,QAClBnB,KAAWmB,EAAO;AAAA,QAClBhB,KAAYgB,EAAO;AAAA,QACnBb;AAAA,MAAA;AAAA,MAEF,OACE;AAAA,QACE,gBAAgB,kBAAkBR,CAAK;AAAA,QACvC,eAAe,kBAAkBA,CAAK;AAAA,QACtC,GAAGS;AAAA,MAAA;AAAA,MAGN,GAAGG;AAAA,MAGH,UAAA;AAAA,QAAAV,KAAW,CAACY,IAAc,gBAAAQ,EAACC,GAAA,EAAO,MAAAtB,GAAY,eAAY,OAAA,CAAO,IAAKc,EAAST,CAAS;AAAA,QACxFK,KAAY,QAAQA,MAAa,wBAAU,QAAA,EAAK,WAAWU,EAAO,OAAQ,UAAAV,EAAA,CAAS;AAAA,QAEnFG,IAAc,gBAAAQ,EAACC,GAAA,EAAO,MAAAtB,GAAY,eAAY,QAAO,IAAK,CAACC,KAAWa,EAASR,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG7F,CAAC;"}
1
+ {"version":3,"file":"Button-BLW9yV8W.js","sources":["../src/components/Button/Button.tsx"],"sourcesContent":["import {\n cloneElement,\n forwardRef,\n isValidElement,\n type ButtonHTMLAttributes,\n type CSSProperties,\n type ReactElement,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport { Loader } from '../Loader'\nimport styles from './Button.module.css'\n\nexport type ButtonVariant = 'contained' | 'filled' | 'outlined' | 'text'\nexport type ButtonSize = 'sm' | 'md' | 'lg'\n\nexport interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'color'> {\n /** Visual style. `contained` solid · `filled` soft tint · `outlined` border · `text` bare. */\n variant?: ButtonVariant\n /** Theme palette token that tints the button. Defaults to `accent`. */\n color?: ThemeColor\n /** Preset size — drives height (`--tz-control-height-*`), padding and font size. */\n size?: ButtonSize\n /** Shows the loader and blocks interaction (also sets the native `disabled`). The loader replaces the `startIcon` when present, otherwise it trails the label at the end (right) — so a plain button shows the spinner on the right. The text stays visible. */\n loading?: boolean\n /** Stretches the button to fill its container. */\n fullWidth?: boolean\n /** Pill shape (fully rounded corners). */\n rounded?: boolean\n /** Icon before the label. Replaced by the loader while `loading`. */\n startIcon?: ReactNode\n /** Icon after the label. Replaced by the loader while `loading` when no `startIcon` is set. */\n endIcon?: ReactNode\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = 'contained',\n color = 'accent',\n size = 'md',\n loading = false,\n fullWidth = false,\n rounded = false,\n disabled = false,\n startIcon,\n endIcon,\n className,\n style,\n type = 'button',\n children,\n ...props\n },\n ref,\n) {\n // The loader replaces the start icon when there is one; otherwise it sits at the end (right) —\n // including a plain button with no icons, so the spinner trails the label.\n const loaderAtEnd = loading && !startIcon\n\n // size an icon slot to match the button (an explicit icon `size` still wins)\n const sizeIcon = (node: ReactNode): ReactNode =>\n isValidElement(node)\n ? cloneElement(node as ReactElement<{ size?: ButtonSize }>, {\n size: (node.props as { size?: ButtonSize }).size ?? size,\n })\n : node\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n className={clsx(\n styles.button,\n styles[variant],\n styles[size],\n fullWidth && styles.fullWidth,\n rounded && styles.rounded,\n loading && styles.loading,\n disabled && styles.disabled,\n className,\n )}\n style={\n {\n '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`,\n '--tz-btn-on': `var(--tz-color-${color}-contrast, #fff)`,\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n {/* leading slot — the loader takes the start icon's place while loading */}\n {loading && !loaderAtEnd ? <Loader size={size} aria-hidden=\"true\" /> : sizeIcon(startIcon)}\n {children != null && children !== false && <span className={styles.label}>{children}</span>}\n {/* trailing slot — the loader takes the end icon's place when there's no start icon */}\n {loaderAtEnd ? <Loader size={size} aria-hidden=\"true\" /> : !loading && sizeIcon(endIcon)}\n </button>\n )\n})\n"],"names":["Button","forwardRef","variant","color","size","loading","fullWidth","rounded","disabled","startIcon","endIcon","className","style","type","children","props","ref","loaderAtEnd","sizeIcon","node","isValidElement","cloneElement","jsxs","clsx","styles","jsx","Loader"],"mappings":";;;;;;;;;;;;;;;;;;GAoCaA,IAASC,EAA2C,SAC/D;AAAA,EACE,SAAAC,IAAU;AAAA,EACV,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,SAAAC,IAAU;AAAA,EACV,UAAAC,IAAW;AAAA,EACX,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,UAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AAGA,QAAMC,IAAcZ,KAAW,CAACI,GAG1BS,IAAW,CAACC,MAChBC,EAAeD,CAAI,IACfE,EAAaF,GAA6C;AAAA,IACxD,MAAOA,EAAK,MAAgC,QAAQf;AAAA,EAAA,CACrD,IACDe;AAEN,SACE,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAN;AAAA,MACA,MAAAH;AAAA,MACA,UAAUL,KAAYH;AAAA,MACtB,aAAWA,KAAW;AAAA,MACtB,WAAWkB;AAAA,QACTC,EAAO;AAAA,QACPA,EAAOtB,CAAO;AAAA,QACdsB,EAAOpB,CAAI;AAAA,QACXE,KAAakB,EAAO;AAAA,QACpBjB,KAAWiB,EAAO;AAAA,QAClBnB,KAAWmB,EAAO;AAAA,QAClBhB,KAAYgB,EAAO;AAAA,QACnBb;AAAA,MAAA;AAAA,MAEF,OACE;AAAA,QACE,gBAAgB,kBAAkBR,CAAK;AAAA,QACvC,eAAe,kBAAkBA,CAAK;AAAA,QACtC,GAAGS;AAAA,MAAA;AAAA,MAGN,GAAGG;AAAA,MAGH,UAAA;AAAA,QAAAV,KAAW,CAACY,IAAc,gBAAAQ,EAACC,GAAA,EAAO,MAAAtB,GAAY,eAAY,OAAA,CAAO,IAAKc,EAAST,CAAS;AAAA,QACxFK,KAAY,QAAQA,MAAa,wBAAU,QAAA,EAAK,WAAWU,EAAO,OAAQ,UAAAV,EAAA,CAAS;AAAA,QAEnFG,IAAc,gBAAAQ,EAACC,GAAA,EAAO,MAAAtB,GAAY,eAAY,QAAO,IAAK,CAACC,KAAWa,EAASR,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG7F,CAAC;"}
@@ -0,0 +1,2 @@
1
+ "use strict";const o=require("react/jsx-runtime"),d=require("react"),z=require("clsx"),f=require("./Loader-D9nteBXt.cjs"),W="_button_jyfg4_1",p="_sm_jyfg4_23",v="_md_jyfg4_29",B="_lg_jyfg4_35",E="_contained_jyfg4_42",L="_filled_jyfg4_52",N="_outlined_jyfg4_61",R="_text_jyfg4_72",$="_fullWidth_jyfg4_82",w="_rounded_jyfg4_86",A="_disabled_jyfg4_94",V="_loading_jyfg4_98",k="_label_jyfg4_103",t={button:W,sm:p,md:v,lg:B,contained:E,filled:L,outlined:N,text:R,fullWidth:$,rounded:w,disabled:A,loading:V,label:k},C=d.forwardRef(function({variant:i="contained",color:_="accent",size:n="md",loading:e=!1,fullWidth:b=!1,rounded:j=!1,disabled:a=!1,startIcon:c,endIcon:g,className:y,style:m,type:x="button",children:l,...h},q){const r=e&&!c,u=s=>d.isValidElement(s)?d.cloneElement(s,{size:s.props.size??n}):s;return o.jsxs("button",{ref:q,type:x,disabled:a||e,"aria-busy":e||void 0,className:z.clsx(t.button,t[i],t[n],b&&t.fullWidth,j&&t.rounded,e&&t.loading,a&&t.disabled,y),style:{"--tz-btn-rgb":`var(--tz-color-${_}-rgb)`,"--tz-btn-on":`var(--tz-color-${_}-contrast, #fff)`,...m},...h,children:[e&&!r?o.jsx(f.Loader,{size:n,"aria-hidden":"true"}):u(c),l!=null&&l!==!1&&o.jsx("span",{className:t.label,children:l}),r?o.jsx(f.Loader,{size:n,"aria-hidden":"true"}):!e&&u(g)]})});exports.Button=C;
2
+ //# sourceMappingURL=Button-KRGjJdMV.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button-CXmDOzPk.cjs","sources":["../src/components/Button/Button.tsx"],"sourcesContent":["import {\n cloneElement,\n forwardRef,\n isValidElement,\n type ButtonHTMLAttributes,\n type CSSProperties,\n type ReactElement,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport { Loader } from '../Loader'\nimport styles from './Button.module.css'\n\nexport type ButtonVariant = 'contained' | 'filled' | 'outlined' | 'text'\nexport type ButtonSize = 'sm' | 'md' | 'lg'\n\nexport interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'color'> {\n /** Visual style. `contained` solid · `filled` soft tint · `outlined` border · `text` bare. */\n variant?: ButtonVariant\n /** Theme palette token that tints the button. Defaults to `accent`. */\n color?: ThemeColor\n /** Preset size — drives height (`--tz-control-height-*`), padding and font size. */\n size?: ButtonSize\n /** Shows the loader and blocks interaction (also sets the native `disabled`). The loader replaces the `startIcon` when present, otherwise it trails the label at the end (right) — so a plain button shows the spinner on the right. The text stays visible. */\n loading?: boolean\n /** Stretches the button to fill its container. */\n fullWidth?: boolean\n /** Pill shape (fully rounded corners). */\n rounded?: boolean\n /** Icon before the label. Replaced by the loader while `loading`. */\n startIcon?: ReactNode\n /** Icon after the label. Replaced by the loader while `loading` when no `startIcon` is set. */\n endIcon?: ReactNode\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = 'contained',\n color = 'accent',\n size = 'md',\n loading = false,\n fullWidth = false,\n rounded = false,\n disabled = false,\n startIcon,\n endIcon,\n className,\n style,\n type = 'button',\n children,\n ...props\n },\n ref,\n) {\n // The loader replaces the start icon when there is one; otherwise it sits at the end (right) —\n // including a plain button with no icons, so the spinner trails the label.\n const loaderAtEnd = loading && !startIcon\n\n // size an icon slot to match the button (an explicit icon `size` still wins)\n const sizeIcon = (node: ReactNode): ReactNode =>\n isValidElement(node)\n ? cloneElement(node as ReactElement<{ size?: ButtonSize }>, {\n size: (node.props as { size?: ButtonSize }).size ?? size,\n })\n : node\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n className={clsx(\n styles.button,\n styles[variant],\n styles[size],\n fullWidth && styles.fullWidth,\n rounded && styles.rounded,\n loading && styles.loading,\n disabled && styles.disabled,\n className,\n )}\n style={\n {\n '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`,\n '--tz-btn-on': `var(--tz-color-${color}-contrast, #fff)`,\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n {/* leading slot — the loader takes the start icon's place while loading */}\n {loading && !loaderAtEnd ? <Loader size={size} aria-hidden=\"true\" /> : sizeIcon(startIcon)}\n {children != null && children !== false && <span className={styles.label}>{children}</span>}\n {/* trailing slot — the loader takes the end icon's place when there's no start icon */}\n {loaderAtEnd ? <Loader size={size} aria-hidden=\"true\" /> : !loading && sizeIcon(endIcon)}\n </button>\n )\n})\n"],"names":["Button","forwardRef","variant","color","size","loading","fullWidth","rounded","disabled","startIcon","endIcon","className","style","type","children","props","ref","loaderAtEnd","sizeIcon","node","isValidElement","cloneElement","jsxs","clsx","styles","jsx","Loader"],"mappings":"8fAoCaA,EAASC,EAAAA,WAA2C,SAC/D,CACE,QAAAC,EAAU,YACV,MAAAC,EAAQ,SACR,KAAAC,EAAO,KACP,QAAAC,EAAU,GACV,UAAAC,EAAY,GACZ,QAAAC,EAAU,GACV,SAAAC,EAAW,GACX,UAAAC,EACA,QAAAC,EACA,UAAAC,EACA,MAAAC,EACA,KAAAC,EAAO,SACP,SAAAC,EACA,GAAGC,CACL,EACAC,EACA,CAGA,MAAMC,EAAcZ,GAAW,CAACI,EAG1BS,EAAYC,GAChBC,EAAAA,eAAeD,CAAI,EACfE,EAAAA,aAAaF,EAA6C,CACxD,KAAOA,EAAK,MAAgC,MAAQf,CAAA,CACrD,EACDe,EAEN,OACEG,EAAAA,KAAC,SAAA,CACC,IAAAN,EACA,KAAAH,EACA,SAAUL,GAAYH,EACtB,YAAWA,GAAW,OACtB,UAAWkB,EAAAA,KACTC,EAAO,OACPA,EAAOtB,CAAO,EACdsB,EAAOpB,CAAI,EACXE,GAAakB,EAAO,UACpBjB,GAAWiB,EAAO,QAClBnB,GAAWmB,EAAO,QAClBhB,GAAYgB,EAAO,SACnBb,CAAA,EAEF,MACE,CACE,eAAgB,kBAAkBR,CAAK,QACvC,cAAe,kBAAkBA,CAAK,mBACtC,GAAGS,CAAA,EAGN,GAAGG,EAGH,SAAA,CAAAV,GAAW,CAACY,EAAcQ,EAAAA,IAACC,SAAA,CAAO,KAAAtB,EAAY,cAAY,MAAA,CAAO,EAAKc,EAAST,CAAS,EACxFK,GAAY,MAAQA,IAAa,UAAU,OAAA,CAAK,UAAWU,EAAO,MAAQ,SAAAV,CAAA,CAAS,EAEnFG,EAAcQ,EAAAA,IAACC,SAAA,CAAO,KAAAtB,EAAY,cAAY,OAAO,EAAK,CAACC,GAAWa,EAASR,CAAO,CAAA,CAAA,CAAA,CAG7F,CAAC"}
1
+ {"version":3,"file":"Button-KRGjJdMV.cjs","sources":["../src/components/Button/Button.tsx"],"sourcesContent":["import {\n cloneElement,\n forwardRef,\n isValidElement,\n type ButtonHTMLAttributes,\n type CSSProperties,\n type ReactElement,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport { Loader } from '../Loader'\nimport styles from './Button.module.css'\n\nexport type ButtonVariant = 'contained' | 'filled' | 'outlined' | 'text'\nexport type ButtonSize = 'sm' | 'md' | 'lg'\n\nexport interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'color'> {\n /** Visual style. `contained` solid · `filled` soft tint · `outlined` border · `text` bare. */\n variant?: ButtonVariant\n /** Theme palette token that tints the button. Defaults to `accent`. */\n color?: ThemeColor\n /** Preset size — drives height (`--tz-control-height-*`), padding and font size. */\n size?: ButtonSize\n /** Shows the loader and blocks interaction (also sets the native `disabled`). The loader replaces the `startIcon` when present, otherwise it trails the label at the end (right) — so a plain button shows the spinner on the right. The text stays visible. */\n loading?: boolean\n /** Stretches the button to fill its container. */\n fullWidth?: boolean\n /** Pill shape (fully rounded corners). */\n rounded?: boolean\n /** Icon before the label. Replaced by the loader while `loading`. */\n startIcon?: ReactNode\n /** Icon after the label. Replaced by the loader while `loading` when no `startIcon` is set. */\n endIcon?: ReactNode\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = 'contained',\n color = 'accent',\n size = 'md',\n loading = false,\n fullWidth = false,\n rounded = false,\n disabled = false,\n startIcon,\n endIcon,\n className,\n style,\n type = 'button',\n children,\n ...props\n },\n ref,\n) {\n // The loader replaces the start icon when there is one; otherwise it sits at the end (right) —\n // including a plain button with no icons, so the spinner trails the label.\n const loaderAtEnd = loading && !startIcon\n\n // size an icon slot to match the button (an explicit icon `size` still wins)\n const sizeIcon = (node: ReactNode): ReactNode =>\n isValidElement(node)\n ? cloneElement(node as ReactElement<{ size?: ButtonSize }>, {\n size: (node.props as { size?: ButtonSize }).size ?? size,\n })\n : node\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n className={clsx(\n styles.button,\n styles[variant],\n styles[size],\n fullWidth && styles.fullWidth,\n rounded && styles.rounded,\n loading && styles.loading,\n disabled && styles.disabled,\n className,\n )}\n style={\n {\n '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`,\n '--tz-btn-on': `var(--tz-color-${color}-contrast, #fff)`,\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n {/* leading slot — the loader takes the start icon's place while loading */}\n {loading && !loaderAtEnd ? <Loader size={size} aria-hidden=\"true\" /> : sizeIcon(startIcon)}\n {children != null && children !== false && <span className={styles.label}>{children}</span>}\n {/* trailing slot — the loader takes the end icon's place when there's no start icon */}\n {loaderAtEnd ? <Loader size={size} aria-hidden=\"true\" /> : !loading && sizeIcon(endIcon)}\n </button>\n )\n})\n"],"names":["Button","forwardRef","variant","color","size","loading","fullWidth","rounded","disabled","startIcon","endIcon","className","style","type","children","props","ref","loaderAtEnd","sizeIcon","node","isValidElement","cloneElement","jsxs","clsx","styles","jsx","Loader"],"mappings":"8fAoCaA,EAASC,EAAAA,WAA2C,SAC/D,CACE,QAAAC,EAAU,YACV,MAAAC,EAAQ,SACR,KAAAC,EAAO,KACP,QAAAC,EAAU,GACV,UAAAC,EAAY,GACZ,QAAAC,EAAU,GACV,SAAAC,EAAW,GACX,UAAAC,EACA,QAAAC,EACA,UAAAC,EACA,MAAAC,EACA,KAAAC,EAAO,SACP,SAAAC,EACA,GAAGC,CACL,EACAC,EACA,CAGA,MAAMC,EAAcZ,GAAW,CAACI,EAG1BS,EAAYC,GAChBC,EAAAA,eAAeD,CAAI,EACfE,EAAAA,aAAaF,EAA6C,CACxD,KAAOA,EAAK,MAAgC,MAAQf,CAAA,CACrD,EACDe,EAEN,OACEG,EAAAA,KAAC,SAAA,CACC,IAAAN,EACA,KAAAH,EACA,SAAUL,GAAYH,EACtB,YAAWA,GAAW,OACtB,UAAWkB,EAAAA,KACTC,EAAO,OACPA,EAAOtB,CAAO,EACdsB,EAAOpB,CAAI,EACXE,GAAakB,EAAO,UACpBjB,GAAWiB,EAAO,QAClBnB,GAAWmB,EAAO,QAClBhB,GAAYgB,EAAO,SACnBb,CAAA,EAEF,MACE,CACE,eAAgB,kBAAkBR,CAAK,QACvC,cAAe,kBAAkBA,CAAK,mBACtC,GAAGS,CAAA,EAGN,GAAGG,EAGH,SAAA,CAAAV,GAAW,CAACY,EAAcQ,EAAAA,IAACC,SAAA,CAAO,KAAAtB,EAAY,cAAY,MAAA,CAAO,EAAKc,EAAST,CAAS,EACxFK,GAAY,MAAQA,IAAa,UAAU,OAAA,CAAK,UAAWU,EAAO,MAAQ,SAAAV,CAAA,CAAS,EAEnFG,EAAcQ,EAAAA,IAACC,SAAA,CAAO,KAAAtB,EAAY,cAAY,OAAO,EAAK,CAACC,GAAWa,EAASR,CAAO,CAAA,CAAA,CAAA,CAG7F,CAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";const o=require("react/jsx-runtime"),f=require("react"),j=require("clsx"),E=require("./Icon-BVULqOJD.cjs"),L=require("./IconButton-BN-bZxEi.cjs"),r=require("./DatePicker.module-tE-tGNBd.cjs"),z=require("./ConfigProvider-Bszl3Wr3.cjs");function T(n,s){if(n&&n.isSame(s,"month"))return n;const i=r.today();return i.isSame(s,"month")?i:s.startOf("month")}const A=3;function H({value:n,month:s,onMonthChange:i,onSelect:I,min:p,max:b,disabledDate:K,weekStartsOn:S,autoFocus:O,labelId:k}){const m=z.useT(),[l,N]=f.useState("day"),[a,u]=f.useState(()=>T(n,s)),h=f.useRef(null),d=f.useRef(!!O);f.useEffect(()=>{u(e=>e.isSame(s,"month")?e:T(n,s))},[s]),f.useEffect(()=>{var t,c;if(!d.current)return;d.current=!1;const e=(t=h.current)==null?void 0:t.querySelector('[tabindex="0"]');e==null||e.focus(),(c=e==null?void 0:e.scrollIntoView)==null||c.call(e,{block:"nearest"})},[a,l,s]);const R=e=>{d.current=!0,N(e)},y=e=>{d.current=!0,e.isSame(s,"month")||i(e.startOf("month")),u(e)},w=e=>{const t=a.add(e,"month");d.current=!0,u(t),i(t.startOf("month"))},D=e=>{let t=a.year()+e;p&&(t=Math.max(t,p.year())),b&&(t=Math.min(t,b.year()));const c=a.year(t);d.current=!0,u(c),i(c.startOf("month"))},q=e=>{const t=s.year(e);d.current=!0,u(t),i(t),N("month")},g=e=>{const t=s.month(e);d.current=!0,u(T(n,t)),i(t),N("day")},G=e=>{const t=(a.day()-S+7)%7;switch(e.key){case"ArrowLeft":e.preventDefault(),y(a.subtract(1,"day"));break;case"ArrowRight":e.preventDefault(),y(a.add(1,"day"));break;case"ArrowUp":e.preventDefault(),y(a.subtract(7,"day"));break;case"ArrowDown":e.preventDefault(),y(a.add(7,"day"));break;case"Home":e.preventDefault(),y(a.subtract(t,"day"));break;case"End":e.preventDefault(),y(a.add(6-t,"day"));break;case"PageUp":e.preventDefault(),y(a.subtract(1,e.shiftKey?"year":"month"));break;case"PageDown":e.preventDefault(),y(a.add(1,e.shiftKey?"year":"month"));break;case"Enter":case" ":e.preventDefault(),r.isDisabled(a,p,b,K)||I(r.toISO(a));break}},P=e=>{switch(e.key){case"ArrowLeft":e.preventDefault(),w(-1);break;case"ArrowRight":e.preventDefault(),w(1);break;case"ArrowUp":e.preventDefault(),w(-A);break;case"ArrowDown":e.preventDefault(),w(A);break;case"Enter":case" ":e.preventDefault(),g(a.month());break}},_=e=>{switch(e.key){case"ArrowLeft":e.preventDefault(),D(-1);break;case"ArrowRight":e.preventDefault(),D(1);break;case"ArrowUp":e.preventDefault(),D(-A);break;case"ArrowDown":e.preventDefault(),D(A);break;case"Enter":case" ":e.preventDefault(),q(a.year());break}},B=r.today(),Y=e=>m(`calendar.month${e}`),v=Array.from({length:7},(e,t)=>m(`calendar.weekday${(S+t)%7}`)),U=l==="day"?r.buildMonthGrid(s,S):[],$=l==="month"?Array.from({length:12},(e,t)=>Y(t)):[],M=l==="year"?r.yearList(p,b,s.year()):[];return o.jsxs("div",{className:r.styles.calendar,children:[o.jsxs("div",{className:r.styles.calHeader,children:[l==="day"&&o.jsx(L.IconButton,{variant:"text",color:"primary",size:"sm","aria-label":m("calendar.prevMonth"),onClick:()=>i(s.subtract(1,"month")),children:o.jsx(E.Icon,{name:"ArrowCircleLeft"})}),o.jsxs("div",{className:r.styles.calTitleGroup,children:[(l==="day"||l==="month")&&o.jsx("button",{type:"button",id:k,className:r.styles.calTitle,onClick:()=>R("year"),children:s.format("YYYY")}),l==="day"&&o.jsx("button",{type:"button",className:r.styles.calTitle,onClick:()=>R("month"),children:Y(s.month())}),l==="year"&&o.jsx("span",{id:k,className:r.styles.calTitleStatic,children:m("calendar.selectYear")})]}),l==="day"&&o.jsx(L.IconButton,{variant:"text",color:"primary",size:"sm","aria-label":m("calendar.nextMonth"),onClick:()=>i(s.add(1,"month")),children:o.jsx(E.Icon,{name:"ArrowCircleRight"})})]}),l==="year"?o.jsx("div",{ref:h,className:j.clsx(r.styles.pickGrid,r.styles.pickScroll),role:"listbox","aria-labelledby":k,onKeyDown:_,children:M.map(e=>{const t=n?n.year()===e:!1;return o.jsx("button",{type:"button",role:"option",className:j.clsx(r.styles.pickCell,t&&r.styles.pickSelected,!t&&e===B.year()&&r.styles.pickToday),tabIndex:e===a.year()?0:-1,"aria-selected":t,onClick:()=>q(e),children:e},e)})}):l==="month"?o.jsx("div",{ref:h,className:r.styles.pickGrid,role:"listbox","aria-labelledby":k,onKeyDown:P,children:$.map((e,t)=>{const c=n?n.isSame(s.month(t),"month"):!1,x=B.isSame(s.month(t),"month");return o.jsx("button",{type:"button",role:"option",className:j.clsx(r.styles.pickCell,c&&r.styles.pickSelected,!c&&x&&r.styles.pickToday),tabIndex:t===a.month()?0:-1,"aria-selected":c,onClick:()=>g(t),children:e},e)})}):o.jsxs("div",{ref:h,className:r.styles.grid,role:"grid","aria-label":`${Y(s.month())} ${s.format("YYYY")}`,onKeyDown:G,children:[o.jsx("div",{className:r.styles.weekdays,role:"row",children:v.map((e,t)=>o.jsx("span",{role:"columnheader",className:r.styles.weekday,children:e},t))}),Array.from({length:6},(e,t)=>o.jsx("div",{role:"row",className:r.styles.week,children:U.slice(t*7,t*7+7).map(c=>{const x=n?c.date.isSame(n,"day"):!1,C=r.isDisabled(c.date,p,b,K);return o.jsx("button",{type:"button",role:"gridcell",className:j.clsx(r.styles.day,!c.inMonth&&r.styles.dayOutside,x&&r.styles.daySelected,c.isToday&&r.styles.dayToday,C&&r.styles.dayDisabled),tabIndex:c.date.isSame(a,"day")?0:-1,"aria-selected":x,"aria-disabled":C||void 0,"aria-current":c.isToday?"date":void 0,onClick:()=>!C&&I(c.iso),children:c.date.date()},c.iso)})},t))]})]})}exports.Calendar=H;
2
- //# sourceMappingURL=Calendar-B2nMXk4C.cjs.map
1
+ "use strict";const o=require("react/jsx-runtime"),f=require("react"),j=require("clsx"),E=require("./Icon-BVULqOJD.cjs"),L=require("./IconButton-A2B0bqC-.cjs"),r=require("./DatePicker.module-BDtTsg8M.cjs"),z=require("./ConfigProvider-BElY0HuV.cjs");function T(n,s){if(n&&n.isSame(s,"month"))return n;const i=r.today();return i.isSame(s,"month")?i:s.startOf("month")}const A=3;function H({value:n,month:s,onMonthChange:i,onSelect:I,min:p,max:b,disabledDate:K,weekStartsOn:S,autoFocus:O,labelId:k}){const m=z.useT(),[l,N]=f.useState("day"),[a,u]=f.useState(()=>T(n,s)),h=f.useRef(null),d=f.useRef(!!O);f.useEffect(()=>{u(e=>e.isSame(s,"month")?e:T(n,s))},[s]),f.useEffect(()=>{var t,c;if(!d.current)return;d.current=!1;const e=(t=h.current)==null?void 0:t.querySelector('[tabindex="0"]');e==null||e.focus(),(c=e==null?void 0:e.scrollIntoView)==null||c.call(e,{block:"nearest"})},[a,l,s]);const R=e=>{d.current=!0,N(e)},y=e=>{d.current=!0,e.isSame(s,"month")||i(e.startOf("month")),u(e)},w=e=>{const t=a.add(e,"month");d.current=!0,u(t),i(t.startOf("month"))},D=e=>{let t=a.year()+e;p&&(t=Math.max(t,p.year())),b&&(t=Math.min(t,b.year()));const c=a.year(t);d.current=!0,u(c),i(c.startOf("month"))},q=e=>{const t=s.year(e);d.current=!0,u(t),i(t),N("month")},g=e=>{const t=s.month(e);d.current=!0,u(T(n,t)),i(t),N("day")},G=e=>{const t=(a.day()-S+7)%7;switch(e.key){case"ArrowLeft":e.preventDefault(),y(a.subtract(1,"day"));break;case"ArrowRight":e.preventDefault(),y(a.add(1,"day"));break;case"ArrowUp":e.preventDefault(),y(a.subtract(7,"day"));break;case"ArrowDown":e.preventDefault(),y(a.add(7,"day"));break;case"Home":e.preventDefault(),y(a.subtract(t,"day"));break;case"End":e.preventDefault(),y(a.add(6-t,"day"));break;case"PageUp":e.preventDefault(),y(a.subtract(1,e.shiftKey?"year":"month"));break;case"PageDown":e.preventDefault(),y(a.add(1,e.shiftKey?"year":"month"));break;case"Enter":case" ":e.preventDefault(),r.isDisabled(a,p,b,K)||I(r.toISO(a));break}},P=e=>{switch(e.key){case"ArrowLeft":e.preventDefault(),w(-1);break;case"ArrowRight":e.preventDefault(),w(1);break;case"ArrowUp":e.preventDefault(),w(-A);break;case"ArrowDown":e.preventDefault(),w(A);break;case"Enter":case" ":e.preventDefault(),g(a.month());break}},_=e=>{switch(e.key){case"ArrowLeft":e.preventDefault(),D(-1);break;case"ArrowRight":e.preventDefault(),D(1);break;case"ArrowUp":e.preventDefault(),D(-A);break;case"ArrowDown":e.preventDefault(),D(A);break;case"Enter":case" ":e.preventDefault(),q(a.year());break}},B=r.today(),Y=e=>m(`calendar.month${e}`),v=Array.from({length:7},(e,t)=>m(`calendar.weekday${(S+t)%7}`)),U=l==="day"?r.buildMonthGrid(s,S):[],$=l==="month"?Array.from({length:12},(e,t)=>Y(t)):[],M=l==="year"?r.yearList(p,b,s.year()):[];return o.jsxs("div",{className:r.styles.calendar,children:[o.jsxs("div",{className:r.styles.calHeader,children:[l==="day"&&o.jsx(L.IconButton,{variant:"text",color:"primary",size:"sm","aria-label":m("calendar.prevMonth"),onClick:()=>i(s.subtract(1,"month")),children:o.jsx(E.Icon,{name:"ArrowCircleLeft"})}),o.jsxs("div",{className:r.styles.calTitleGroup,children:[(l==="day"||l==="month")&&o.jsx("button",{type:"button",id:k,className:r.styles.calTitle,onClick:()=>R("year"),children:s.format("YYYY")}),l==="day"&&o.jsx("button",{type:"button",className:r.styles.calTitle,onClick:()=>R("month"),children:Y(s.month())}),l==="year"&&o.jsx("span",{id:k,className:r.styles.calTitleStatic,children:m("calendar.selectYear")})]}),l==="day"&&o.jsx(L.IconButton,{variant:"text",color:"primary",size:"sm","aria-label":m("calendar.nextMonth"),onClick:()=>i(s.add(1,"month")),children:o.jsx(E.Icon,{name:"ArrowCircleRight"})})]}),l==="year"?o.jsx("div",{ref:h,className:j.clsx(r.styles.pickGrid,r.styles.pickScroll),role:"listbox","aria-labelledby":k,onKeyDown:_,children:M.map(e=>{const t=n?n.year()===e:!1;return o.jsx("button",{type:"button",role:"option",className:j.clsx(r.styles.pickCell,t&&r.styles.pickSelected,!t&&e===B.year()&&r.styles.pickToday),tabIndex:e===a.year()?0:-1,"aria-selected":t,onClick:()=>q(e),children:e},e)})}):l==="month"?o.jsx("div",{ref:h,className:r.styles.pickGrid,role:"listbox","aria-labelledby":k,onKeyDown:P,children:$.map((e,t)=>{const c=n?n.isSame(s.month(t),"month"):!1,x=B.isSame(s.month(t),"month");return o.jsx("button",{type:"button",role:"option",className:j.clsx(r.styles.pickCell,c&&r.styles.pickSelected,!c&&x&&r.styles.pickToday),tabIndex:t===a.month()?0:-1,"aria-selected":c,onClick:()=>g(t),children:e},e)})}):o.jsxs("div",{ref:h,className:r.styles.grid,role:"grid","aria-label":`${Y(s.month())} ${s.format("YYYY")}`,onKeyDown:G,children:[o.jsx("div",{className:r.styles.weekdays,role:"row",children:v.map((e,t)=>o.jsx("span",{role:"columnheader",className:r.styles.weekday,children:e},t))}),Array.from({length:6},(e,t)=>o.jsx("div",{role:"row",className:r.styles.week,children:U.slice(t*7,t*7+7).map(c=>{const x=n?c.date.isSame(n,"day"):!1,C=r.isDisabled(c.date,p,b,K);return o.jsx("button",{type:"button",role:"gridcell",className:j.clsx(r.styles.day,!c.inMonth&&r.styles.dayOutside,x&&r.styles.daySelected,c.isToday&&r.styles.dayToday,C&&r.styles.dayDisabled),tabIndex:c.date.isSame(a,"day")?0:-1,"aria-selected":x,"aria-disabled":C||void 0,"aria-current":c.isToday?"date":void 0,onClick:()=>!C&&I(c.iso),children:c.date.date()},c.iso)})},t))]})]})}exports.Calendar=H;
2
+ //# sourceMappingURL=Calendar-CoTCOOUu.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar-B2nMXk4C.cjs","sources":["../src/components/DatePicker/Calendar.tsx"],"sourcesContent":["import { useEffect, useRef, useState, type KeyboardEvent } from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type MessageKey } from '../../theme'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport { buildMonthGrid, isDisabled, today, toISO, yearList, type Dayjs } from './dateUtils'\nimport styles from './DatePicker.module.css'\n\nexport interface CalendarProps {\n /** Currently selected date (UTC dayjs) or null. */\n value: Dayjs | null\n /** The month currently shown (UTC dayjs). */\n month: Dayjs\n /** Change the shown month. */\n onMonthChange: (month: Dayjs) => void\n /** Commit a selected date as an ISO `'YYYY-MM-DD'` string. */\n onSelect: (iso: string) => void\n min: Dayjs | null\n max: Dayjs | null\n disabledDate?: (iso: string) => boolean\n /** 0 = Sunday … 6 = Saturday. */\n weekStartsOn: number\n /** Focus the active cell on mount (when the popover opens). */\n autoFocus?: boolean\n /** Id of the element labelling the grid. */\n labelId?: string\n}\n\ntype View = 'day' | 'month' | 'year'\n\n/** Picks the day that should hold roving focus for a given month. */\nfunction focusableDay(value: Dayjs | null, month: Dayjs): Dayjs {\n if (value && value.isSame(month, 'month')) return value\n const now = today()\n if (now.isSame(month, 'month')) return now\n return month.startOf('month')\n}\n\n/** Number of columns in the month / year picker grids (drives Up/Down arrow steps). */\nconst PICK_COLS = 3\n\n/**\n * The calendar grid used by the date components. Three views — a `role=\"grid\"` **day** view with full\n * keyboard navigation (Arrows move days, Home/End the week, PageUp/Down the month, Shift+PageUp/Down\n * the year, Enter/Space to select), plus separate **month** and **year** picker views reached from the\n * header (the month and year labels are independently clickable). Picking a year advances to the month\n * view; picking a month returns to the day view. The year view lists every year in range and scrolls.\n * Controlled: the consumer owns `value` + `month`; `onSelect`/`onMonthChange` lift changes up.\n */\nexport function Calendar({\n value,\n month,\n onMonthChange,\n onSelect,\n min,\n max,\n disabledDate,\n weekStartsOn,\n autoFocus,\n labelId,\n}: CalendarProps) {\n const t = useT()\n const [view, setView] = useState<View>('day')\n const [focused, setFocused] = useState<Dayjs>(() => focusableDay(value, month))\n const bodyRef = useRef<HTMLDivElement | null>(null)\n const focusOnRender = useRef(Boolean(autoFocus))\n\n // re-anchor the roving focus into the month whenever it changes from outside (nav buttons, pickers)\n useEffect(() => {\n setFocused((f) => (f.isSame(month, 'month') ? f : focusableDay(value, month)))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [month])\n\n // move DOM focus to the roving cell after a keyboard move, a view switch, or the initial autoFocus\n useEffect(() => {\n if (!focusOnRender.current) return\n focusOnRender.current = false\n const el = bodyRef.current?.querySelector<HTMLElement>('[tabindex=\"0\"]')\n el?.focus()\n el?.scrollIntoView?.({ block: 'nearest' })\n }, [focused, view, month])\n\n const switchTo = (next: View) => {\n focusOnRender.current = true\n setView(next)\n }\n\n // ── navigation helpers ─────────────────────────────────────────────────────────────────────────\n const moveDay = (next: Dayjs) => {\n focusOnRender.current = true\n if (!next.isSame(month, 'month')) onMonthChange(next.startOf('month'))\n setFocused(next)\n }\n const stepMonthBy = (delta: number) => {\n const next = focused.add(delta, 'month')\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // keep the rendered grid + header in sync with focus\n }\n const stepYearBy = (delta: number) => {\n let year = focused.year() + delta\n if (min) year = Math.max(year, min.year())\n if (max) year = Math.min(year, max.year())\n const next = focused.year(year)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // re-anchor the year window so focus never leaves it\n }\n\n const pickYear = (y: number) => {\n const next = month.year(y)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next)\n setView('month') // picking a year advances to the month view\n }\n const pickMonth = (m: number) => {\n const next = month.month(m)\n focusOnRender.current = true\n setFocused(focusableDay(value, next))\n onMonthChange(next)\n setView('day') // picking a month returns to the day view\n }\n\n // ── keyboard ─────────────────────────────────────────────────────────────────────────────────────\n const handleDayKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const offsetInWeek = (focused.day() - weekStartsOn + 7) % 7\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n moveDay(focused.subtract(1, 'day'))\n break\n case 'ArrowRight':\n event.preventDefault()\n moveDay(focused.add(1, 'day'))\n break\n case 'ArrowUp':\n event.preventDefault()\n moveDay(focused.subtract(7, 'day'))\n break\n case 'ArrowDown':\n event.preventDefault()\n moveDay(focused.add(7, 'day'))\n break\n case 'Home':\n event.preventDefault()\n moveDay(focused.subtract(offsetInWeek, 'day'))\n break\n case 'End':\n event.preventDefault()\n moveDay(focused.add(6 - offsetInWeek, 'day'))\n break\n case 'PageUp':\n event.preventDefault()\n moveDay(focused.subtract(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'PageDown':\n event.preventDefault()\n moveDay(focused.add(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n if (!isDisabled(focused, min, max, disabledDate)) onSelect(toISO(focused))\n break\n }\n }\n\n const handleMonthKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepMonthBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepMonthBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepMonthBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepMonthBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickMonth(focused.month())\n break\n }\n }\n\n const handleYearKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepYearBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepYearBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepYearBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepYearBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickYear(focused.year())\n break\n }\n }\n\n // ── derived data (built once per render) ─────────────────────────────────────────────────────────\n const now = today()\n // month names + short weekday labels come from the i18n catalog (localized), not dayjs\n const monthName = (m: number) => t(`calendar.month${m}` as MessageKey)\n const weekdays = Array.from({ length: 7 }, (_, i) =>\n t(`calendar.weekday${(weekStartsOn + i) % 7}` as MessageKey),\n )\n const monthGrid = view === 'day' ? buildMonthGrid(month, weekStartsOn) : []\n const months = view === 'month' ? Array.from({ length: 12 }, (_, m) => monthName(m)) : []\n const years = view === 'year' ? yearList(min, max, month.year()) : []\n\n return (\n <div className={styles.calendar}>\n <div className={styles.calHeader}>\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.prevMonth')}\n onClick={() => onMonthChange(month.subtract(1, 'month'))}\n >\n <Icon name=\"ArrowCircleLeft\" />\n </IconButton>\n )}\n\n <div className={styles.calTitleGroup}>\n {(view === 'day' || view === 'month') && (\n <button\n type=\"button\"\n id={labelId}\n className={styles.calTitle}\n onClick={() => switchTo('year')}\n >\n {month.format('YYYY')}\n </button>\n )}\n {view === 'day' && (\n <button type=\"button\" className={styles.calTitle} onClick={() => switchTo('month')}>\n {monthName(month.month())}\n </button>\n )}\n {view === 'year' && (\n <span id={labelId} className={styles.calTitleStatic}>\n {t('calendar.selectYear')}\n </span>\n )}\n </div>\n\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.nextMonth')}\n onClick={() => onMonthChange(month.add(1, 'month'))}\n >\n <Icon name=\"ArrowCircleRight\" />\n </IconButton>\n )}\n </div>\n\n {view === 'year' ? (\n <div\n ref={bodyRef}\n className={clsx(styles.pickGrid, styles.pickScroll)}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleYearKeyDown}\n >\n {years.map((y) => {\n const isSelected = value ? value.year() === y : false\n return (\n <button\n key={y}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && y === now.year() && styles.pickToday,\n )}\n tabIndex={y === focused.year() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickYear(y)}\n >\n {y}\n </button>\n )\n })}\n </div>\n ) : view === 'month' ? (\n <div\n ref={bodyRef}\n className={styles.pickGrid}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleMonthKeyDown}\n >\n {months.map((label, m) => {\n const isSelected = value ? value.isSame(month.month(m), 'month') : false\n const isCurrent = now.isSame(month.month(m), 'month')\n return (\n <button\n key={label}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && isCurrent && styles.pickToday,\n )}\n tabIndex={m === focused.month() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickMonth(m)}\n >\n {label}\n </button>\n )\n })}\n </div>\n ) : (\n <div\n ref={bodyRef}\n className={styles.grid}\n role=\"grid\"\n aria-label={`${monthName(month.month())} ${month.format('YYYY')}`}\n onKeyDown={handleDayKeyDown}\n >\n <div className={styles.weekdays} role=\"row\">\n {weekdays.map((w, i) => (\n <span key={i} role=\"columnheader\" className={styles.weekday}>\n {w}\n </span>\n ))}\n </div>\n {Array.from({ length: 6 }, (_, wk) => (\n <div key={wk} role=\"row\" className={styles.week}>\n {monthGrid.slice(wk * 7, wk * 7 + 7).map((d) => {\n const selected = value ? d.date.isSame(value, 'day') : false\n const disabled = isDisabled(d.date, min, max, disabledDate)\n return (\n <button\n key={d.iso}\n type=\"button\"\n role=\"gridcell\"\n className={clsx(\n styles.day,\n !d.inMonth && styles.dayOutside,\n selected && styles.daySelected,\n d.isToday && styles.dayToday,\n disabled && styles.dayDisabled,\n )}\n tabIndex={d.date.isSame(focused, 'day') ? 0 : -1}\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n aria-current={d.isToday ? 'date' : undefined}\n onClick={() => !disabled && onSelect(d.iso)}\n >\n {d.date.date()}\n </button>\n )\n })}\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"names":["focusableDay","value","month","now","today","PICK_COLS","Calendar","onMonthChange","onSelect","min","max","disabledDate","weekStartsOn","autoFocus","labelId","t","useT","view","setView","useState","focused","setFocused","bodyRef","useRef","focusOnRender","useEffect","f","el","_a","_b","switchTo","next","moveDay","stepMonthBy","delta","stepYearBy","year","pickYear","y","pickMonth","m","handleDayKeyDown","event","offsetInWeek","isDisabled","toISO","handleMonthKeyDown","handleYearKeyDown","monthName","weekdays","_","i","monthGrid","buildMonthGrid","months","years","yearList","jsxs","styles","jsx","IconButton","Icon","clsx","isSelected","label","isCurrent","w","wk","d","selected","disabled"],"mappings":"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"}
1
+ {"version":3,"file":"Calendar-CoTCOOUu.cjs","sources":["../src/components/DatePicker/Calendar.tsx"],"sourcesContent":["import { useEffect, useRef, useState, type KeyboardEvent } from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type MessageKey } from '../../theme'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport { buildMonthGrid, isDisabled, today, toISO, yearList, type Dayjs } from './dateUtils'\nimport styles from './DatePicker.module.css'\n\nexport interface CalendarProps {\n /** Currently selected date (UTC dayjs) or null. */\n value: Dayjs | null\n /** The month currently shown (UTC dayjs). */\n month: Dayjs\n /** Change the shown month. */\n onMonthChange: (month: Dayjs) => void\n /** Commit a selected date as an ISO `'YYYY-MM-DD'` string. */\n onSelect: (iso: string) => void\n min: Dayjs | null\n max: Dayjs | null\n disabledDate?: (iso: string) => boolean\n /** 0 = Sunday … 6 = Saturday. */\n weekStartsOn: number\n /** Focus the active cell on mount (when the popover opens). */\n autoFocus?: boolean\n /** Id of the element labelling the grid. */\n labelId?: string\n}\n\ntype View = 'day' | 'month' | 'year'\n\n/** Picks the day that should hold roving focus for a given month. */\nfunction focusableDay(value: Dayjs | null, month: Dayjs): Dayjs {\n if (value && value.isSame(month, 'month')) return value\n const now = today()\n if (now.isSame(month, 'month')) return now\n return month.startOf('month')\n}\n\n/** Number of columns in the month / year picker grids (drives Up/Down arrow steps). */\nconst PICK_COLS = 3\n\n/**\n * The calendar grid used by the date components. Three views — a `role=\"grid\"` **day** view with full\n * keyboard navigation (Arrows move days, Home/End the week, PageUp/Down the month, Shift+PageUp/Down\n * the year, Enter/Space to select), plus separate **month** and **year** picker views reached from the\n * header (the month and year labels are independently clickable). Picking a year advances to the month\n * view; picking a month returns to the day view. The year view lists every year in range and scrolls.\n * Controlled: the consumer owns `value` + `month`; `onSelect`/`onMonthChange` lift changes up.\n */\nexport function Calendar({\n value,\n month,\n onMonthChange,\n onSelect,\n min,\n max,\n disabledDate,\n weekStartsOn,\n autoFocus,\n labelId,\n}: CalendarProps) {\n const t = useT()\n const [view, setView] = useState<View>('day')\n const [focused, setFocused] = useState<Dayjs>(() => focusableDay(value, month))\n const bodyRef = useRef<HTMLDivElement | null>(null)\n const focusOnRender = useRef(Boolean(autoFocus))\n\n // re-anchor the roving focus into the month whenever it changes from outside (nav buttons, pickers)\n useEffect(() => {\n setFocused((f) => (f.isSame(month, 'month') ? f : focusableDay(value, month)))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [month])\n\n // move DOM focus to the roving cell after a keyboard move, a view switch, or the initial autoFocus\n useEffect(() => {\n if (!focusOnRender.current) return\n focusOnRender.current = false\n const el = bodyRef.current?.querySelector<HTMLElement>('[tabindex=\"0\"]')\n el?.focus()\n el?.scrollIntoView?.({ block: 'nearest' })\n }, [focused, view, month])\n\n const switchTo = (next: View) => {\n focusOnRender.current = true\n setView(next)\n }\n\n // ── navigation helpers ─────────────────────────────────────────────────────────────────────────\n const moveDay = (next: Dayjs) => {\n focusOnRender.current = true\n if (!next.isSame(month, 'month')) onMonthChange(next.startOf('month'))\n setFocused(next)\n }\n const stepMonthBy = (delta: number) => {\n const next = focused.add(delta, 'month')\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // keep the rendered grid + header in sync with focus\n }\n const stepYearBy = (delta: number) => {\n let year = focused.year() + delta\n if (min) year = Math.max(year, min.year())\n if (max) year = Math.min(year, max.year())\n const next = focused.year(year)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // re-anchor the year window so focus never leaves it\n }\n\n const pickYear = (y: number) => {\n const next = month.year(y)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next)\n setView('month') // picking a year advances to the month view\n }\n const pickMonth = (m: number) => {\n const next = month.month(m)\n focusOnRender.current = true\n setFocused(focusableDay(value, next))\n onMonthChange(next)\n setView('day') // picking a month returns to the day view\n }\n\n // ── keyboard ─────────────────────────────────────────────────────────────────────────────────────\n const handleDayKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const offsetInWeek = (focused.day() - weekStartsOn + 7) % 7\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n moveDay(focused.subtract(1, 'day'))\n break\n case 'ArrowRight':\n event.preventDefault()\n moveDay(focused.add(1, 'day'))\n break\n case 'ArrowUp':\n event.preventDefault()\n moveDay(focused.subtract(7, 'day'))\n break\n case 'ArrowDown':\n event.preventDefault()\n moveDay(focused.add(7, 'day'))\n break\n case 'Home':\n event.preventDefault()\n moveDay(focused.subtract(offsetInWeek, 'day'))\n break\n case 'End':\n event.preventDefault()\n moveDay(focused.add(6 - offsetInWeek, 'day'))\n break\n case 'PageUp':\n event.preventDefault()\n moveDay(focused.subtract(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'PageDown':\n event.preventDefault()\n moveDay(focused.add(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n if (!isDisabled(focused, min, max, disabledDate)) onSelect(toISO(focused))\n break\n }\n }\n\n const handleMonthKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepMonthBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepMonthBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepMonthBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepMonthBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickMonth(focused.month())\n break\n }\n }\n\n const handleYearKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepYearBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepYearBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepYearBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepYearBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickYear(focused.year())\n break\n }\n }\n\n // ── derived data (built once per render) ─────────────────────────────────────────────────────────\n const now = today()\n // month names + short weekday labels come from the i18n catalog (localized), not dayjs\n const monthName = (m: number) => t(`calendar.month${m}` as MessageKey)\n const weekdays = Array.from({ length: 7 }, (_, i) =>\n t(`calendar.weekday${(weekStartsOn + i) % 7}` as MessageKey),\n )\n const monthGrid = view === 'day' ? buildMonthGrid(month, weekStartsOn) : []\n const months = view === 'month' ? Array.from({ length: 12 }, (_, m) => monthName(m)) : []\n const years = view === 'year' ? yearList(min, max, month.year()) : []\n\n return (\n <div className={styles.calendar}>\n <div className={styles.calHeader}>\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.prevMonth')}\n onClick={() => onMonthChange(month.subtract(1, 'month'))}\n >\n <Icon name=\"ArrowCircleLeft\" />\n </IconButton>\n )}\n\n <div className={styles.calTitleGroup}>\n {(view === 'day' || view === 'month') && (\n <button\n type=\"button\"\n id={labelId}\n className={styles.calTitle}\n onClick={() => switchTo('year')}\n >\n {month.format('YYYY')}\n </button>\n )}\n {view === 'day' && (\n <button type=\"button\" className={styles.calTitle} onClick={() => switchTo('month')}>\n {monthName(month.month())}\n </button>\n )}\n {view === 'year' && (\n <span id={labelId} className={styles.calTitleStatic}>\n {t('calendar.selectYear')}\n </span>\n )}\n </div>\n\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.nextMonth')}\n onClick={() => onMonthChange(month.add(1, 'month'))}\n >\n <Icon name=\"ArrowCircleRight\" />\n </IconButton>\n )}\n </div>\n\n {view === 'year' ? (\n <div\n ref={bodyRef}\n className={clsx(styles.pickGrid, styles.pickScroll)}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleYearKeyDown}\n >\n {years.map((y) => {\n const isSelected = value ? value.year() === y : false\n return (\n <button\n key={y}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && y === now.year() && styles.pickToday,\n )}\n tabIndex={y === focused.year() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickYear(y)}\n >\n {y}\n </button>\n )\n })}\n </div>\n ) : view === 'month' ? (\n <div\n ref={bodyRef}\n className={styles.pickGrid}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleMonthKeyDown}\n >\n {months.map((label, m) => {\n const isSelected = value ? value.isSame(month.month(m), 'month') : false\n const isCurrent = now.isSame(month.month(m), 'month')\n return (\n <button\n key={label}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && isCurrent && styles.pickToday,\n )}\n tabIndex={m === focused.month() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickMonth(m)}\n >\n {label}\n </button>\n )\n })}\n </div>\n ) : (\n <div\n ref={bodyRef}\n className={styles.grid}\n role=\"grid\"\n aria-label={`${monthName(month.month())} ${month.format('YYYY')}`}\n onKeyDown={handleDayKeyDown}\n >\n <div className={styles.weekdays} role=\"row\">\n {weekdays.map((w, i) => (\n <span key={i} role=\"columnheader\" className={styles.weekday}>\n {w}\n </span>\n ))}\n </div>\n {Array.from({ length: 6 }, (_, wk) => (\n <div key={wk} role=\"row\" className={styles.week}>\n {monthGrid.slice(wk * 7, wk * 7 + 7).map((d) => {\n const selected = value ? d.date.isSame(value, 'day') : false\n const disabled = isDisabled(d.date, min, max, disabledDate)\n return (\n <button\n key={d.iso}\n type=\"button\"\n role=\"gridcell\"\n className={clsx(\n styles.day,\n !d.inMonth && styles.dayOutside,\n selected && styles.daySelected,\n d.isToday && styles.dayToday,\n disabled && styles.dayDisabled,\n )}\n tabIndex={d.date.isSame(focused, 'day') ? 0 : -1}\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n aria-current={d.isToday ? 'date' : undefined}\n onClick={() => !disabled && onSelect(d.iso)}\n >\n {d.date.date()}\n </button>\n )\n })}\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"names":["focusableDay","value","month","now","today","PICK_COLS","Calendar","onMonthChange","onSelect","min","max","disabledDate","weekStartsOn","autoFocus","labelId","t","useT","view","setView","useState","focused","setFocused","bodyRef","useRef","focusOnRender","useEffect","f","el","_a","_b","switchTo","next","moveDay","stepMonthBy","delta","stepYearBy","year","pickYear","y","pickMonth","m","handleDayKeyDown","event","offsetInWeek","isDisabled","toISO","handleMonthKeyDown","handleYearKeyDown","monthName","weekdays","_","i","monthGrid","buildMonthGrid","months","years","yearList","jsxs","styles","jsx","IconButton","Icon","clsx","isSelected","label","isCurrent","w","wk","d","selected","disabled"],"mappings":"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"}
@@ -2,9 +2,9 @@ import { jsxs as A, jsx as o } from "react/jsx-runtime";
2
2
  import { useState as G, useRef as B, useEffect as U } from "react";
3
3
  import { clsx as N } from "clsx";
4
4
  import { I as _ } from "./Icon-DaTvzLBu.js";
5
- import { I as $ } from "./IconButton-BEGWfcVc.js";
6
- import { t as M, e as J, y as Q, s as r, i as v, d as X } from "./DatePicker.module-BZDftL4g.js";
7
- import { a as Z } from "./ConfigProvider-DR9YMy9U.js";
5
+ import { I as $ } from "./IconButton-Dq17Fekm.js";
6
+ import { t as M, e as J, y as Q, s as r, i as v, d as X } from "./DatePicker.module-CMMQyEhG.js";
7
+ import { a as Z } from "./ConfigProvider-B_RSn9bb.js";
8
8
  function K(n, t) {
9
9
  if (n && n.isSame(t, "month")) return n;
10
10
  const l = M();
@@ -264,4 +264,4 @@ function ne({
264
264
  export {
265
265
  ne as C
266
266
  };
267
- //# sourceMappingURL=Calendar-CtteUt82.js.map
267
+ //# sourceMappingURL=Calendar-sLA-xa0B.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar-CtteUt82.js","sources":["../src/components/DatePicker/Calendar.tsx"],"sourcesContent":["import { useEffect, useRef, useState, type KeyboardEvent } from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type MessageKey } from '../../theme'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport { buildMonthGrid, isDisabled, today, toISO, yearList, type Dayjs } from './dateUtils'\nimport styles from './DatePicker.module.css'\n\nexport interface CalendarProps {\n /** Currently selected date (UTC dayjs) or null. */\n value: Dayjs | null\n /** The month currently shown (UTC dayjs). */\n month: Dayjs\n /** Change the shown month. */\n onMonthChange: (month: Dayjs) => void\n /** Commit a selected date as an ISO `'YYYY-MM-DD'` string. */\n onSelect: (iso: string) => void\n min: Dayjs | null\n max: Dayjs | null\n disabledDate?: (iso: string) => boolean\n /** 0 = Sunday … 6 = Saturday. */\n weekStartsOn: number\n /** Focus the active cell on mount (when the popover opens). */\n autoFocus?: boolean\n /** Id of the element labelling the grid. */\n labelId?: string\n}\n\ntype View = 'day' | 'month' | 'year'\n\n/** Picks the day that should hold roving focus for a given month. */\nfunction focusableDay(value: Dayjs | null, month: Dayjs): Dayjs {\n if (value && value.isSame(month, 'month')) return value\n const now = today()\n if (now.isSame(month, 'month')) return now\n return month.startOf('month')\n}\n\n/** Number of columns in the month / year picker grids (drives Up/Down arrow steps). */\nconst PICK_COLS = 3\n\n/**\n * The calendar grid used by the date components. Three views — a `role=\"grid\"` **day** view with full\n * keyboard navigation (Arrows move days, Home/End the week, PageUp/Down the month, Shift+PageUp/Down\n * the year, Enter/Space to select), plus separate **month** and **year** picker views reached from the\n * header (the month and year labels are independently clickable). Picking a year advances to the month\n * view; picking a month returns to the day view. The year view lists every year in range and scrolls.\n * Controlled: the consumer owns `value` + `month`; `onSelect`/`onMonthChange` lift changes up.\n */\nexport function Calendar({\n value,\n month,\n onMonthChange,\n onSelect,\n min,\n max,\n disabledDate,\n weekStartsOn,\n autoFocus,\n labelId,\n}: CalendarProps) {\n const t = useT()\n const [view, setView] = useState<View>('day')\n const [focused, setFocused] = useState<Dayjs>(() => focusableDay(value, month))\n const bodyRef = useRef<HTMLDivElement | null>(null)\n const focusOnRender = useRef(Boolean(autoFocus))\n\n // re-anchor the roving focus into the month whenever it changes from outside (nav buttons, pickers)\n useEffect(() => {\n setFocused((f) => (f.isSame(month, 'month') ? f : focusableDay(value, month)))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [month])\n\n // move DOM focus to the roving cell after a keyboard move, a view switch, or the initial autoFocus\n useEffect(() => {\n if (!focusOnRender.current) return\n focusOnRender.current = false\n const el = bodyRef.current?.querySelector<HTMLElement>('[tabindex=\"0\"]')\n el?.focus()\n el?.scrollIntoView?.({ block: 'nearest' })\n }, [focused, view, month])\n\n const switchTo = (next: View) => {\n focusOnRender.current = true\n setView(next)\n }\n\n // ── navigation helpers ─────────────────────────────────────────────────────────────────────────\n const moveDay = (next: Dayjs) => {\n focusOnRender.current = true\n if (!next.isSame(month, 'month')) onMonthChange(next.startOf('month'))\n setFocused(next)\n }\n const stepMonthBy = (delta: number) => {\n const next = focused.add(delta, 'month')\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // keep the rendered grid + header in sync with focus\n }\n const stepYearBy = (delta: number) => {\n let year = focused.year() + delta\n if (min) year = Math.max(year, min.year())\n if (max) year = Math.min(year, max.year())\n const next = focused.year(year)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // re-anchor the year window so focus never leaves it\n }\n\n const pickYear = (y: number) => {\n const next = month.year(y)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next)\n setView('month') // picking a year advances to the month view\n }\n const pickMonth = (m: number) => {\n const next = month.month(m)\n focusOnRender.current = true\n setFocused(focusableDay(value, next))\n onMonthChange(next)\n setView('day') // picking a month returns to the day view\n }\n\n // ── keyboard ─────────────────────────────────────────────────────────────────────────────────────\n const handleDayKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const offsetInWeek = (focused.day() - weekStartsOn + 7) % 7\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n moveDay(focused.subtract(1, 'day'))\n break\n case 'ArrowRight':\n event.preventDefault()\n moveDay(focused.add(1, 'day'))\n break\n case 'ArrowUp':\n event.preventDefault()\n moveDay(focused.subtract(7, 'day'))\n break\n case 'ArrowDown':\n event.preventDefault()\n moveDay(focused.add(7, 'day'))\n break\n case 'Home':\n event.preventDefault()\n moveDay(focused.subtract(offsetInWeek, 'day'))\n break\n case 'End':\n event.preventDefault()\n moveDay(focused.add(6 - offsetInWeek, 'day'))\n break\n case 'PageUp':\n event.preventDefault()\n moveDay(focused.subtract(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'PageDown':\n event.preventDefault()\n moveDay(focused.add(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n if (!isDisabled(focused, min, max, disabledDate)) onSelect(toISO(focused))\n break\n }\n }\n\n const handleMonthKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepMonthBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepMonthBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepMonthBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepMonthBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickMonth(focused.month())\n break\n }\n }\n\n const handleYearKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepYearBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepYearBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepYearBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepYearBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickYear(focused.year())\n break\n }\n }\n\n // ── derived data (built once per render) ─────────────────────────────────────────────────────────\n const now = today()\n // month names + short weekday labels come from the i18n catalog (localized), not dayjs\n const monthName = (m: number) => t(`calendar.month${m}` as MessageKey)\n const weekdays = Array.from({ length: 7 }, (_, i) =>\n t(`calendar.weekday${(weekStartsOn + i) % 7}` as MessageKey),\n )\n const monthGrid = view === 'day' ? buildMonthGrid(month, weekStartsOn) : []\n const months = view === 'month' ? Array.from({ length: 12 }, (_, m) => monthName(m)) : []\n const years = view === 'year' ? yearList(min, max, month.year()) : []\n\n return (\n <div className={styles.calendar}>\n <div className={styles.calHeader}>\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.prevMonth')}\n onClick={() => onMonthChange(month.subtract(1, 'month'))}\n >\n <Icon name=\"ArrowCircleLeft\" />\n </IconButton>\n )}\n\n <div className={styles.calTitleGroup}>\n {(view === 'day' || view === 'month') && (\n <button\n type=\"button\"\n id={labelId}\n className={styles.calTitle}\n onClick={() => switchTo('year')}\n >\n {month.format('YYYY')}\n </button>\n )}\n {view === 'day' && (\n <button type=\"button\" className={styles.calTitle} onClick={() => switchTo('month')}>\n {monthName(month.month())}\n </button>\n )}\n {view === 'year' && (\n <span id={labelId} className={styles.calTitleStatic}>\n {t('calendar.selectYear')}\n </span>\n )}\n </div>\n\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.nextMonth')}\n onClick={() => onMonthChange(month.add(1, 'month'))}\n >\n <Icon name=\"ArrowCircleRight\" />\n </IconButton>\n )}\n </div>\n\n {view === 'year' ? (\n <div\n ref={bodyRef}\n className={clsx(styles.pickGrid, styles.pickScroll)}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleYearKeyDown}\n >\n {years.map((y) => {\n const isSelected = value ? value.year() === y : false\n return (\n <button\n key={y}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && y === now.year() && styles.pickToday,\n )}\n tabIndex={y === focused.year() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickYear(y)}\n >\n {y}\n </button>\n )\n })}\n </div>\n ) : view === 'month' ? (\n <div\n ref={bodyRef}\n className={styles.pickGrid}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleMonthKeyDown}\n >\n {months.map((label, m) => {\n const isSelected = value ? value.isSame(month.month(m), 'month') : false\n const isCurrent = now.isSame(month.month(m), 'month')\n return (\n <button\n key={label}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && isCurrent && styles.pickToday,\n )}\n tabIndex={m === focused.month() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickMonth(m)}\n >\n {label}\n </button>\n )\n })}\n </div>\n ) : (\n <div\n ref={bodyRef}\n className={styles.grid}\n role=\"grid\"\n aria-label={`${monthName(month.month())} ${month.format('YYYY')}`}\n onKeyDown={handleDayKeyDown}\n >\n <div className={styles.weekdays} role=\"row\">\n {weekdays.map((w, i) => (\n <span key={i} role=\"columnheader\" className={styles.weekday}>\n {w}\n </span>\n ))}\n </div>\n {Array.from({ length: 6 }, (_, wk) => (\n <div key={wk} role=\"row\" className={styles.week}>\n {monthGrid.slice(wk * 7, wk * 7 + 7).map((d) => {\n const selected = value ? d.date.isSame(value, 'day') : false\n const disabled = isDisabled(d.date, min, max, disabledDate)\n return (\n <button\n key={d.iso}\n type=\"button\"\n role=\"gridcell\"\n className={clsx(\n styles.day,\n !d.inMonth && styles.dayOutside,\n selected && styles.daySelected,\n d.isToday && styles.dayToday,\n disabled && styles.dayDisabled,\n )}\n tabIndex={d.date.isSame(focused, 'day') ? 0 : -1}\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n aria-current={d.isToday ? 'date' : undefined}\n onClick={() => !disabled && onSelect(d.iso)}\n >\n {d.date.date()}\n </button>\n )\n })}\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"names":["focusableDay","value","month","now","today","PICK_COLS","Calendar","onMonthChange","onSelect","min","max","disabledDate","weekStartsOn","autoFocus","labelId","t","useT","view","setView","useState","focused","setFocused","bodyRef","useRef","focusOnRender","useEffect","f","el","_a","_b","switchTo","next","moveDay","stepMonthBy","delta","stepYearBy","year","pickYear","y","pickMonth","m","handleDayKeyDown","event","offsetInWeek","isDisabled","toISO","handleMonthKeyDown","handleYearKeyDown","monthName","weekdays","_","i","monthGrid","buildMonthGrid","months","years","yearList","jsxs","styles","jsx","IconButton","Icon","clsx","isSelected","label","isCurrent","w","wk","d","selected","disabled"],"mappings":"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"}
1
+ {"version":3,"file":"Calendar-sLA-xa0B.js","sources":["../src/components/DatePicker/Calendar.tsx"],"sourcesContent":["import { useEffect, useRef, useState, type KeyboardEvent } from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type MessageKey } from '../../theme'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport { buildMonthGrid, isDisabled, today, toISO, yearList, type Dayjs } from './dateUtils'\nimport styles from './DatePicker.module.css'\n\nexport interface CalendarProps {\n /** Currently selected date (UTC dayjs) or null. */\n value: Dayjs | null\n /** The month currently shown (UTC dayjs). */\n month: Dayjs\n /** Change the shown month. */\n onMonthChange: (month: Dayjs) => void\n /** Commit a selected date as an ISO `'YYYY-MM-DD'` string. */\n onSelect: (iso: string) => void\n min: Dayjs | null\n max: Dayjs | null\n disabledDate?: (iso: string) => boolean\n /** 0 = Sunday … 6 = Saturday. */\n weekStartsOn: number\n /** Focus the active cell on mount (when the popover opens). */\n autoFocus?: boolean\n /** Id of the element labelling the grid. */\n labelId?: string\n}\n\ntype View = 'day' | 'month' | 'year'\n\n/** Picks the day that should hold roving focus for a given month. */\nfunction focusableDay(value: Dayjs | null, month: Dayjs): Dayjs {\n if (value && value.isSame(month, 'month')) return value\n const now = today()\n if (now.isSame(month, 'month')) return now\n return month.startOf('month')\n}\n\n/** Number of columns in the month / year picker grids (drives Up/Down arrow steps). */\nconst PICK_COLS = 3\n\n/**\n * The calendar grid used by the date components. Three views — a `role=\"grid\"` **day** view with full\n * keyboard navigation (Arrows move days, Home/End the week, PageUp/Down the month, Shift+PageUp/Down\n * the year, Enter/Space to select), plus separate **month** and **year** picker views reached from the\n * header (the month and year labels are independently clickable). Picking a year advances to the month\n * view; picking a month returns to the day view. The year view lists every year in range and scrolls.\n * Controlled: the consumer owns `value` + `month`; `onSelect`/`onMonthChange` lift changes up.\n */\nexport function Calendar({\n value,\n month,\n onMonthChange,\n onSelect,\n min,\n max,\n disabledDate,\n weekStartsOn,\n autoFocus,\n labelId,\n}: CalendarProps) {\n const t = useT()\n const [view, setView] = useState<View>('day')\n const [focused, setFocused] = useState<Dayjs>(() => focusableDay(value, month))\n const bodyRef = useRef<HTMLDivElement | null>(null)\n const focusOnRender = useRef(Boolean(autoFocus))\n\n // re-anchor the roving focus into the month whenever it changes from outside (nav buttons, pickers)\n useEffect(() => {\n setFocused((f) => (f.isSame(month, 'month') ? f : focusableDay(value, month)))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [month])\n\n // move DOM focus to the roving cell after a keyboard move, a view switch, or the initial autoFocus\n useEffect(() => {\n if (!focusOnRender.current) return\n focusOnRender.current = false\n const el = bodyRef.current?.querySelector<HTMLElement>('[tabindex=\"0\"]')\n el?.focus()\n el?.scrollIntoView?.({ block: 'nearest' })\n }, [focused, view, month])\n\n const switchTo = (next: View) => {\n focusOnRender.current = true\n setView(next)\n }\n\n // ── navigation helpers ─────────────────────────────────────────────────────────────────────────\n const moveDay = (next: Dayjs) => {\n focusOnRender.current = true\n if (!next.isSame(month, 'month')) onMonthChange(next.startOf('month'))\n setFocused(next)\n }\n const stepMonthBy = (delta: number) => {\n const next = focused.add(delta, 'month')\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // keep the rendered grid + header in sync with focus\n }\n const stepYearBy = (delta: number) => {\n let year = focused.year() + delta\n if (min) year = Math.max(year, min.year())\n if (max) year = Math.min(year, max.year())\n const next = focused.year(year)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // re-anchor the year window so focus never leaves it\n }\n\n const pickYear = (y: number) => {\n const next = month.year(y)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next)\n setView('month') // picking a year advances to the month view\n }\n const pickMonth = (m: number) => {\n const next = month.month(m)\n focusOnRender.current = true\n setFocused(focusableDay(value, next))\n onMonthChange(next)\n setView('day') // picking a month returns to the day view\n }\n\n // ── keyboard ─────────────────────────────────────────────────────────────────────────────────────\n const handleDayKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const offsetInWeek = (focused.day() - weekStartsOn + 7) % 7\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n moveDay(focused.subtract(1, 'day'))\n break\n case 'ArrowRight':\n event.preventDefault()\n moveDay(focused.add(1, 'day'))\n break\n case 'ArrowUp':\n event.preventDefault()\n moveDay(focused.subtract(7, 'day'))\n break\n case 'ArrowDown':\n event.preventDefault()\n moveDay(focused.add(7, 'day'))\n break\n case 'Home':\n event.preventDefault()\n moveDay(focused.subtract(offsetInWeek, 'day'))\n break\n case 'End':\n event.preventDefault()\n moveDay(focused.add(6 - offsetInWeek, 'day'))\n break\n case 'PageUp':\n event.preventDefault()\n moveDay(focused.subtract(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'PageDown':\n event.preventDefault()\n moveDay(focused.add(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n if (!isDisabled(focused, min, max, disabledDate)) onSelect(toISO(focused))\n break\n }\n }\n\n const handleMonthKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepMonthBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepMonthBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepMonthBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepMonthBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickMonth(focused.month())\n break\n }\n }\n\n const handleYearKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepYearBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepYearBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepYearBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepYearBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickYear(focused.year())\n break\n }\n }\n\n // ── derived data (built once per render) ─────────────────────────────────────────────────────────\n const now = today()\n // month names + short weekday labels come from the i18n catalog (localized), not dayjs\n const monthName = (m: number) => t(`calendar.month${m}` as MessageKey)\n const weekdays = Array.from({ length: 7 }, (_, i) =>\n t(`calendar.weekday${(weekStartsOn + i) % 7}` as MessageKey),\n )\n const monthGrid = view === 'day' ? buildMonthGrid(month, weekStartsOn) : []\n const months = view === 'month' ? Array.from({ length: 12 }, (_, m) => monthName(m)) : []\n const years = view === 'year' ? yearList(min, max, month.year()) : []\n\n return (\n <div className={styles.calendar}>\n <div className={styles.calHeader}>\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.prevMonth')}\n onClick={() => onMonthChange(month.subtract(1, 'month'))}\n >\n <Icon name=\"ArrowCircleLeft\" />\n </IconButton>\n )}\n\n <div className={styles.calTitleGroup}>\n {(view === 'day' || view === 'month') && (\n <button\n type=\"button\"\n id={labelId}\n className={styles.calTitle}\n onClick={() => switchTo('year')}\n >\n {month.format('YYYY')}\n </button>\n )}\n {view === 'day' && (\n <button type=\"button\" className={styles.calTitle} onClick={() => switchTo('month')}>\n {monthName(month.month())}\n </button>\n )}\n {view === 'year' && (\n <span id={labelId} className={styles.calTitleStatic}>\n {t('calendar.selectYear')}\n </span>\n )}\n </div>\n\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.nextMonth')}\n onClick={() => onMonthChange(month.add(1, 'month'))}\n >\n <Icon name=\"ArrowCircleRight\" />\n </IconButton>\n )}\n </div>\n\n {view === 'year' ? (\n <div\n ref={bodyRef}\n className={clsx(styles.pickGrid, styles.pickScroll)}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleYearKeyDown}\n >\n {years.map((y) => {\n const isSelected = value ? value.year() === y : false\n return (\n <button\n key={y}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && y === now.year() && styles.pickToday,\n )}\n tabIndex={y === focused.year() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickYear(y)}\n >\n {y}\n </button>\n )\n })}\n </div>\n ) : view === 'month' ? (\n <div\n ref={bodyRef}\n className={styles.pickGrid}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleMonthKeyDown}\n >\n {months.map((label, m) => {\n const isSelected = value ? value.isSame(month.month(m), 'month') : false\n const isCurrent = now.isSame(month.month(m), 'month')\n return (\n <button\n key={label}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && isCurrent && styles.pickToday,\n )}\n tabIndex={m === focused.month() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickMonth(m)}\n >\n {label}\n </button>\n )\n })}\n </div>\n ) : (\n <div\n ref={bodyRef}\n className={styles.grid}\n role=\"grid\"\n aria-label={`${monthName(month.month())} ${month.format('YYYY')}`}\n onKeyDown={handleDayKeyDown}\n >\n <div className={styles.weekdays} role=\"row\">\n {weekdays.map((w, i) => (\n <span key={i} role=\"columnheader\" className={styles.weekday}>\n {w}\n </span>\n ))}\n </div>\n {Array.from({ length: 6 }, (_, wk) => (\n <div key={wk} role=\"row\" className={styles.week}>\n {monthGrid.slice(wk * 7, wk * 7 + 7).map((d) => {\n const selected = value ? d.date.isSame(value, 'day') : false\n const disabled = isDisabled(d.date, min, max, disabledDate)\n return (\n <button\n key={d.iso}\n type=\"button\"\n role=\"gridcell\"\n className={clsx(\n styles.day,\n !d.inMonth && styles.dayOutside,\n selected && styles.daySelected,\n d.isToday && styles.dayToday,\n disabled && styles.dayDisabled,\n )}\n tabIndex={d.date.isSame(focused, 'day') ? 0 : -1}\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n aria-current={d.isToday ? 'date' : undefined}\n onClick={() => !disabled && onSelect(d.iso)}\n >\n {d.date.date()}\n </button>\n )\n })}\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"names":["focusableDay","value","month","now","today","PICK_COLS","Calendar","onMonthChange","onSelect","min","max","disabledDate","weekStartsOn","autoFocus","labelId","t","useT","view","setView","useState","focused","setFocused","bodyRef","useRef","focusOnRender","useEffect","f","el","_a","_b","switchTo","next","moveDay","stepMonthBy","delta","stepYearBy","year","pickYear","y","pickMonth","m","handleDayKeyDown","event","offsetInWeek","isDisabled","toISO","handleMonthKeyDown","handleYearKeyDown","monthName","weekdays","_","i","monthGrid","buildMonthGrid","months","years","yearList","jsxs","styles","jsx","IconButton","Icon","clsx","isSelected","label","isCurrent","w","wk","d","selected","disabled"],"mappings":"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"}