@techzyapp/ui-library 1.0.29 → 1.0.31

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 (534) hide show
  1. package/dist/{Accordion-w-w_WxxV.js → Accordion-ClK2XpD7.js} +3 -3
  2. package/dist/{Accordion-w-w_WxxV.js.map → Accordion-ClK2XpD7.js.map} +1 -1
  3. package/dist/{Accordion-P3PNqSER.cjs → Accordion-CtvAYNKd.cjs} +2 -2
  4. package/dist/{Accordion-P3PNqSER.cjs.map → Accordion-CtvAYNKd.cjs.map} +1 -1
  5. package/dist/AdminRoot-BYkmCGNx.js +57 -0
  6. package/dist/AdminRoot-BYkmCGNx.js.map +1 -0
  7. package/dist/AdminRoot-BbkfFQEn.cjs +2 -0
  8. package/dist/AdminRoot-BbkfFQEn.cjs.map +1 -0
  9. package/dist/{Alert-CJono1TJ.js → Alert-BLqAcEoT.js} +5 -5
  10. package/dist/{Alert-CJono1TJ.js.map → Alert-BLqAcEoT.js.map} +1 -1
  11. package/dist/{Alert-VFQuuII6.cjs → Alert-BM5WOI_u.cjs} +2 -2
  12. package/dist/{Alert-VFQuuII6.cjs.map → Alert-BM5WOI_u.cjs.map} +1 -1
  13. package/dist/{AuthLayout-QAtW2GAT.cjs → AuthLayout-DIcR__vo.cjs} +2 -2
  14. package/dist/{AuthLayout-QAtW2GAT.cjs.map → AuthLayout-DIcR__vo.cjs.map} +1 -1
  15. package/dist/{AuthLayout-DOFYw_z5.js → AuthLayout-m1BQ6Ixx.js} +2 -2
  16. package/dist/{AuthLayout-DOFYw_z5.js.map → AuthLayout-m1BQ6Ixx.js.map} +1 -1
  17. package/dist/{Avatar-DrV_F7Ex.cjs → Avatar-CQ--wGWS.cjs} +2 -2
  18. package/dist/{Avatar-DrV_F7Ex.cjs.map → Avatar-CQ--wGWS.cjs.map} +1 -1
  19. package/dist/{Avatar-DXNPg23a.js → Avatar-MwWIcj8z.js} +3 -3
  20. package/dist/{Avatar-DXNPg23a.js.map → Avatar-MwWIcj8z.js.map} +1 -1
  21. package/dist/{AvatarGroup-CwlYqDCI.js → AvatarGroup-BxYQo0zZ.js} +2 -2
  22. package/dist/{AvatarGroup-CwlYqDCI.js.map → AvatarGroup-BxYQo0zZ.js.map} +1 -1
  23. package/dist/{AvatarGroup-CHesdo-M.cjs → AvatarGroup-Bzu2t6Sd.cjs} +2 -2
  24. package/dist/{AvatarGroup-CHesdo-M.cjs.map → AvatarGroup-Bzu2t6Sd.cjs.map} +1 -1
  25. package/dist/{Breadcrumbs-XWU8tRvs.js → Breadcrumbs-CzHGbN2c.js} +5 -5
  26. package/dist/{Breadcrumbs-XWU8tRvs.js.map → Breadcrumbs-CzHGbN2c.js.map} +1 -1
  27. package/dist/{Breadcrumbs-DCEHxpSi.cjs → Breadcrumbs-Di4-Acfb.cjs} +2 -2
  28. package/dist/{Breadcrumbs-DCEHxpSi.cjs.map → Breadcrumbs-Di4-Acfb.cjs.map} +1 -1
  29. package/dist/{Button-CWMNNiia.js → Button-9Qcdkw-y.js} +2 -2
  30. package/dist/{Button-CWMNNiia.js.map → Button-9Qcdkw-y.js.map} +1 -1
  31. package/dist/{Button-CusxDmfq.cjs → Button-BQhiJq8e.cjs} +2 -2
  32. package/dist/{Button-CusxDmfq.cjs.map → Button-BQhiJq8e.cjs.map} +1 -1
  33. package/dist/{Calendar-Db3rr1VD.js → Calendar-BB-C0qXO.js} +4 -4
  34. package/dist/{Calendar-Db3rr1VD.js.map → Calendar-BB-C0qXO.js.map} +1 -1
  35. package/dist/{Calendar-BEQbZixA.cjs → Calendar-dXhLgOUH.cjs} +2 -2
  36. package/dist/{Calendar-BEQbZixA.cjs.map → Calendar-dXhLgOUH.cjs.map} +1 -1
  37. package/dist/Card-BERQfyhJ.js +129 -0
  38. package/dist/Card-BERQfyhJ.js.map +1 -0
  39. package/dist/Card-DULpoOfj.cjs +2 -0
  40. package/dist/Card-DULpoOfj.cjs.map +1 -0
  41. package/dist/{Chip-D12KcV4_.cjs → Chip-BuydTI6V.cjs} +2 -2
  42. package/dist/{Chip-D12KcV4_.cjs.map → Chip-BuydTI6V.cjs.map} +1 -1
  43. package/dist/{Chip-Zh1OB9nV.js → Chip-DZ5Fz7jx.js} +3 -3
  44. package/dist/{Chip-Zh1OB9nV.js.map → Chip-DZ5Fz7jx.js.map} +1 -1
  45. package/dist/{ChoiceCardGroup-CEniY_HJ.js → ChoiceCardGroup-BTbKjJdp.js} +3 -3
  46. package/dist/{ChoiceCardGroup-CEniY_HJ.js.map → ChoiceCardGroup-BTbKjJdp.js.map} +1 -1
  47. package/dist/{ChoiceCardGroup-BSagRbPI.cjs → ChoiceCardGroup-Bg2jtFpe.cjs} +2 -2
  48. package/dist/{ChoiceCardGroup-BSagRbPI.cjs.map → ChoiceCardGroup-Bg2jtFpe.cjs.map} +1 -1
  49. package/dist/{CodeBlock-DAM7BkHK.cjs → CodeBlock-BPraYPoS.cjs} +2 -2
  50. package/dist/{CodeBlock-DAM7BkHK.cjs.map → CodeBlock-BPraYPoS.cjs.map} +1 -1
  51. package/dist/{CodeBlock-CkrTnpcj.js → CodeBlock-BySsTAtY.js} +5 -5
  52. package/dist/{CodeBlock-CkrTnpcj.js.map → CodeBlock-BySsTAtY.js.map} +1 -1
  53. package/dist/{ColorPicker-BcCozxIe.cjs → ColorPicker-BTBTQD39.cjs} +2 -2
  54. package/dist/{ColorPicker-BcCozxIe.cjs.map → ColorPicker-BTBTQD39.cjs.map} +1 -1
  55. package/dist/{ColorPicker-DqxVgUoD.js → ColorPicker-DJow7m2v.js} +4 -4
  56. package/dist/{ColorPicker-DqxVgUoD.js.map → ColorPicker-DJow7m2v.js.map} +1 -1
  57. package/dist/{ColorPickerPanel-DZjN8NNn.js → ColorPickerPanel-D6agWM6y.js} +3 -3
  58. package/dist/{ColorPickerPanel-DZjN8NNn.js.map → ColorPickerPanel-D6agWM6y.js.map} +1 -1
  59. package/dist/{ColorPickerPanel-DAOESLCe.cjs → ColorPickerPanel-DXIYwUoE.cjs} +2 -2
  60. package/dist/{ColorPickerPanel-DAOESLCe.cjs.map → ColorPickerPanel-DXIYwUoE.cjs.map} +1 -1
  61. package/dist/{ColorRamp-_KwlPQ-T.cjs → ColorRamp-B45Rtwgw.cjs} +2 -2
  62. package/dist/{ColorRamp-_KwlPQ-T.cjs.map → ColorRamp-B45Rtwgw.cjs.map} +1 -1
  63. package/dist/{ColorRamp-DS5LVpRF.js → ColorRamp-Bhj28c_6.js} +3 -3
  64. package/dist/{ColorRamp-DS5LVpRF.js.map → ColorRamp-Bhj28c_6.js.map} +1 -1
  65. package/dist/ConfigProvider-Ct0Pe3Ku.js +335 -0
  66. package/dist/ConfigProvider-Ct0Pe3Ku.js.map +1 -0
  67. package/dist/ConfigProvider-CtpfSy1i.cjs +2 -0
  68. package/dist/ConfigProvider-CtpfSy1i.cjs.map +1 -0
  69. package/dist/{CopyButton-SFwjKod9.cjs → CopyButton-Bfte6TJF.cjs} +2 -2
  70. package/dist/{CopyButton-SFwjKod9.cjs.map → CopyButton-Bfte6TJF.cjs.map} +1 -1
  71. package/dist/{CopyButton-D4s8aeSE.js → CopyButton-CBk85MQ7.js} +5 -5
  72. package/dist/{CopyButton-D4s8aeSE.js.map → CopyButton-CBk85MQ7.js.map} +1 -1
  73. package/dist/{DashedButton-iM7kzopW.js → DashedButton-BpiG8rab.js} +3 -3
  74. package/dist/{DashedButton-iM7kzopW.js.map → DashedButton-BpiG8rab.js.map} +1 -1
  75. package/dist/{DashedButton-B7xodc3N.cjs → DashedButton-DZmgxLMO.cjs} +2 -2
  76. package/dist/{DashedButton-B7xodc3N.cjs.map → DashedButton-DZmgxLMO.cjs.map} +1 -1
  77. package/dist/{DatePicker-ENbn2Vab.cjs → DatePicker-DBiU4Mb6.cjs} +2 -2
  78. package/dist/{DatePicker-ENbn2Vab.cjs.map → DatePicker-DBiU4Mb6.cjs.map} +1 -1
  79. package/dist/{DatePicker-DGwjCHfd.js → DatePicker-eAzDnO2Y.js} +6 -6
  80. package/dist/{DatePicker-DGwjCHfd.js.map → DatePicker-eAzDnO2Y.js.map} +1 -1
  81. package/dist/{DateTimePicker-BQUmsFwX.cjs → DateTimePicker-CvaD8IkF.cjs} +2 -2
  82. package/dist/{DateTimePicker-BQUmsFwX.cjs.map → DateTimePicker-CvaD8IkF.cjs.map} +1 -1
  83. package/dist/{DateTimePicker-CwVkQiun.js → DateTimePicker-M2UBjFVc.js} +9 -9
  84. package/dist/{DateTimePicker-CwVkQiun.js.map → DateTimePicker-M2UBjFVc.js.map} +1 -1
  85. package/dist/{DescriptionList-0qjKr6GN.js → DescriptionList-BhsmdtS1.js} +64 -64
  86. package/dist/{DescriptionList-0qjKr6GN.js.map → DescriptionList-BhsmdtS1.js.map} +1 -1
  87. package/dist/DescriptionList-DQHNOTWl.cjs +2 -0
  88. package/dist/{DescriptionList-U5z2Faf4.cjs.map → DescriptionList-DQHNOTWl.cjs.map} +1 -1
  89. package/dist/{Dropdown-DNZ9S_zQ.cjs → Dropdown-BbaU1WDC.cjs} +2 -2
  90. package/dist/{Dropdown-DNZ9S_zQ.cjs.map → Dropdown-BbaU1WDC.cjs.map} +1 -1
  91. package/dist/{Dropdown--1mNTVZJ.js → Dropdown-BlmbYp1X.js} +2 -2
  92. package/dist/{Dropdown--1mNTVZJ.js.map → Dropdown-BlmbYp1X.js.map} +1 -1
  93. package/dist/{EmptyState-DwT9_HW7.js → EmptyState-2pA3XlOX.js} +4 -4
  94. package/dist/{EmptyState-DwT9_HW7.js.map → EmptyState-2pA3XlOX.js.map} +1 -1
  95. package/dist/{EmptyState-B2_4BN4l.cjs → EmptyState-ByBpy2vN.cjs} +2 -2
  96. package/dist/{EmptyState-B2_4BN4l.cjs.map → EmptyState-ByBpy2vN.cjs.map} +1 -1
  97. package/dist/{ErrorBoundary-CsDHKYB4.js → ErrorBoundary-B-37hGZW.js} +6 -6
  98. package/dist/{ErrorBoundary-CsDHKYB4.js.map → ErrorBoundary-B-37hGZW.js.map} +1 -1
  99. package/dist/{ErrorBoundary-CYSOAQlB.cjs → ErrorBoundary-gRGxeuM1.cjs} +2 -2
  100. package/dist/{ErrorBoundary-CYSOAQlB.cjs.map → ErrorBoundary-gRGxeuM1.cjs.map} +1 -1
  101. package/dist/{FileCard-B9f9RoXS.js → FileCard-BNfUAgsF.js} +5 -5
  102. package/dist/{FileCard-B9f9RoXS.js.map → FileCard-BNfUAgsF.js.map} +1 -1
  103. package/dist/{FileCard-zuUYik-F.cjs → FileCard-BYNJVmp0.cjs} +2 -2
  104. package/dist/{FileCard-zuUYik-F.cjs.map → FileCard-BYNJVmp0.cjs.map} +1 -1
  105. package/dist/{FileUploader-Y8hiyIpp.cjs → FileUploader-DdICa5UC.cjs} +2 -2
  106. package/dist/{FileUploader-Y8hiyIpp.cjs.map → FileUploader-DdICa5UC.cjs.map} +1 -1
  107. package/dist/{FileUploader-Dh2zA50t.js → FileUploader-TOWwDOSS.js} +6 -6
  108. package/dist/{FileUploader-Dh2zA50t.js.map → FileUploader-TOWwDOSS.js.map} +1 -1
  109. package/dist/{Flag-CmDXvd7j.js → Flag-DDR6OANA.js} +2 -2
  110. package/dist/{Flag-CmDXvd7j.js.map → Flag-DDR6OANA.js.map} +1 -1
  111. package/dist/{Flag-BpTQAgbD.cjs → Flag-DXPQ2t8z.cjs} +2 -2
  112. package/dist/{Flag-BpTQAgbD.cjs.map → Flag-DXPQ2t8z.cjs.map} +1 -1
  113. package/dist/FloatingPanel-C5c_eMQ0.js +135 -0
  114. package/dist/{FloatingPanel-CeSOtE_D.js.map → FloatingPanel-C5c_eMQ0.js.map} +1 -1
  115. package/dist/FloatingPanel-tGCG2nhA.cjs +2 -0
  116. package/dist/{FloatingPanel-BIC4WrFa.cjs.map → FloatingPanel-tGCG2nhA.cjs.map} +1 -1
  117. package/dist/{FullscreenToggle-CeGgw3z1.cjs → FullscreenToggle-BKo1lDSE.cjs} +2 -2
  118. package/dist/{FullscreenToggle-CeGgw3z1.cjs.map → FullscreenToggle-BKo1lDSE.cjs.map} +1 -1
  119. package/dist/{FullscreenToggle-2IYIS5KF.js → FullscreenToggle-DmH1541W.js} +4 -4
  120. package/dist/{FullscreenToggle-2IYIS5KF.js.map → FullscreenToggle-DmH1541W.js.map} +1 -1
  121. package/dist/Icon-BUP5_kRs.cjs +2 -0
  122. package/dist/Icon-BUP5_kRs.cjs.map +1 -0
  123. package/dist/{Icon-DaTvzLBu.js → Icon-CGQ5yGSZ.js} +4 -3
  124. package/dist/Icon-CGQ5yGSZ.js.map +1 -0
  125. package/dist/{IconButton-GU3Ud4Zg.js → IconButton-CL_6iMQh.js} +2 -2
  126. package/dist/{IconButton-GU3Ud4Zg.js.map → IconButton-CL_6iMQh.js.map} +1 -1
  127. package/dist/{IconButton-BNa0yLcv.cjs → IconButton-CvIXSFsr.cjs} +2 -2
  128. package/dist/{IconButton-BNa0yLcv.cjs.map → IconButton-CvIXSFsr.cjs.map} +1 -1
  129. package/dist/{List-CZwNGxuP.js → List-BLPB3-B8.js} +3 -3
  130. package/dist/{List-CZwNGxuP.js.map → List-BLPB3-B8.js.map} +1 -1
  131. package/dist/{List-9lUjapQ5.cjs → List-ah2PNWeY.cjs} +2 -2
  132. package/dist/{List-9lUjapQ5.cjs.map → List-ah2PNWeY.cjs.map} +1 -1
  133. package/dist/{Loader-Cpr9-OOZ.cjs → Loader-CI1j71X8.cjs} +2 -2
  134. package/dist/{Loader-Cpr9-OOZ.cjs.map → Loader-CI1j71X8.cjs.map} +1 -1
  135. package/dist/{Loader-C1uaCtx6.js → Loader-Czzb450N.js} +2 -2
  136. package/dist/{Loader-C1uaCtx6.js.map → Loader-Czzb450N.js.map} +1 -1
  137. package/dist/{Modal-DHP2R3K3.js → Modal-DMJMw6kT.js} +5 -5
  138. package/dist/{Modal-DHP2R3K3.js.map → Modal-DMJMw6kT.js.map} +1 -1
  139. package/dist/{Modal-DFeBHv-Q.cjs → Modal-DPObz0b-.cjs} +2 -2
  140. package/dist/{Modal-DFeBHv-Q.cjs.map → Modal-DPObz0b-.cjs.map} +1 -1
  141. package/dist/{MultiSelect-B-FPQ08c.js → MultiSelect-BTR6w5Ot.js} +5 -5
  142. package/dist/{MultiSelect-B-FPQ08c.js.map → MultiSelect-BTR6w5Ot.js.map} +1 -1
  143. package/dist/{MultiSelect-S5VG9g3l.cjs → MultiSelect-IDAJ5a5K.cjs} +2 -2
  144. package/dist/{MultiSelect-S5VG9g3l.cjs.map → MultiSelect-IDAJ5a5K.cjs.map} +1 -1
  145. package/dist/{NumberField-SSGXlF8U.cjs → NumberField-Cg0XEDgW.cjs} +2 -2
  146. package/dist/{NumberField-SSGXlF8U.cjs.map → NumberField-Cg0XEDgW.cjs.map} +1 -1
  147. package/dist/{NumberField-CzyvDMRV.js → NumberField-DlaW-g3Z.js} +4 -4
  148. package/dist/{NumberField-CzyvDMRV.js.map → NumberField-DlaW-g3Z.js.map} +1 -1
  149. package/dist/{OtpField-Pr7Ch0El.cjs → OtpField-DsedK1nQ.cjs} +2 -2
  150. package/dist/{OtpField-Pr7Ch0El.cjs.map → OtpField-DsedK1nQ.cjs.map} +1 -1
  151. package/dist/{OtpField-CMoJqcx1.js → OtpField-vxQuo-uR.js} +2 -2
  152. package/dist/{OtpField-CMoJqcx1.js.map → OtpField-vxQuo-uR.js.map} +1 -1
  153. package/dist/{PageLayout-BIMkjq-q.cjs → PageLayout-BPbjTYS3.cjs} +2 -2
  154. package/dist/{PageLayout-BIMkjq-q.cjs.map → PageLayout-BPbjTYS3.cjs.map} +1 -1
  155. package/dist/{PageLayout-Ctr-IEzX.js → PageLayout-Rk6KSxmn.js} +2 -2
  156. package/dist/{PageLayout-Ctr-IEzX.js.map → PageLayout-Rk6KSxmn.js.map} +1 -1
  157. package/dist/{PageNotFound-KKJTeaRF.js → PageNotFound-CBNhKZ9Y.js} +5 -5
  158. package/dist/{PageNotFound-KKJTeaRF.js.map → PageNotFound-CBNhKZ9Y.js.map} +1 -1
  159. package/dist/{PageNotFound-CnhBheI4.cjs → PageNotFound-PUQ1o9R4.cjs} +2 -2
  160. package/dist/{PageNotFound-CnhBheI4.cjs.map → PageNotFound-PUQ1o9R4.cjs.map} +1 -1
  161. package/dist/{Pagination-Oyms2ERd.js → Pagination-CNdkfXp2.js} +3 -3
  162. package/dist/{Pagination-Oyms2ERd.js.map → Pagination-CNdkfXp2.js.map} +1 -1
  163. package/dist/{Pagination-BD5WOW98.cjs → Pagination-DNGKNQy0.cjs} +2 -2
  164. package/dist/{Pagination-BD5WOW98.cjs.map → Pagination-DNGKNQy0.cjs.map} +1 -1
  165. package/dist/{PaletteField-CCQGW5LC.cjs → PaletteField-BSIF5jI6.cjs} +2 -2
  166. package/dist/{PaletteField-CCQGW5LC.cjs.map → PaletteField-BSIF5jI6.cjs.map} +1 -1
  167. package/dist/{PaletteField-BHzzzdou.js → PaletteField-Bp5Fgygh.js} +3 -3
  168. package/dist/{PaletteField-BHzzzdou.js.map → PaletteField-Bp5Fgygh.js.map} +1 -1
  169. package/dist/{PhoneField-5zGY4Wko.cjs → PhoneField-BMhZeZkW.cjs} +2 -2
  170. package/dist/{PhoneField-5zGY4Wko.cjs.map → PhoneField-BMhZeZkW.cjs.map} +1 -1
  171. package/dist/{PhoneField-CBfmChPx.js → PhoneField-BdmvslXQ.js} +5 -5
  172. package/dist/{PhoneField-CBfmChPx.js.map → PhoneField-BdmvslXQ.js.map} +1 -1
  173. package/dist/{Popconfirm-BtGDhqrc.js → Popconfirm-Cyaeybtj.js} +6 -6
  174. package/dist/{Popconfirm-BtGDhqrc.js.map → Popconfirm-Cyaeybtj.js.map} +1 -1
  175. package/dist/{Popconfirm-CkBdntxV.cjs → Popconfirm-IhlIINtZ.cjs} +2 -2
  176. package/dist/{Popconfirm-CkBdntxV.cjs.map → Popconfirm-IhlIINtZ.cjs.map} +1 -1
  177. package/dist/{Popover-DAT6DcM9.cjs → Popover-DsYUT23r.cjs} +2 -2
  178. package/dist/{Popover-DAT6DcM9.cjs.map → Popover-DsYUT23r.cjs.map} +1 -1
  179. package/dist/{Popover-B82Id9Ut.js → Popover-WaVH3jsN.js} +2 -2
  180. package/dist/{Popover-B82Id9Ut.js.map → Popover-WaVH3jsN.js.map} +1 -1
  181. package/dist/{Progress-Bwxx71Ns.cjs → Progress-CAY1p06_.cjs} +2 -2
  182. package/dist/{Progress-Bwxx71Ns.cjs.map → Progress-CAY1p06_.cjs.map} +1 -1
  183. package/dist/{Progress-pTbaOSDd.js → Progress-T7PLrJ0Y.js} +2 -2
  184. package/dist/{Progress-pTbaOSDd.js.map → Progress-T7PLrJ0Y.js.map} +1 -1
  185. package/dist/{QueryError-C01oichG.cjs → QueryError-DP22IUnp.cjs} +2 -2
  186. package/dist/{QueryError-C01oichG.cjs.map → QueryError-DP22IUnp.cjs.map} +1 -1
  187. package/dist/{QueryError-Bu_MNGek.js → QueryError-Dtspj9l4.js} +2 -2
  188. package/dist/{QueryError-Bu_MNGek.js.map → QueryError-Dtspj9l4.js.map} +1 -1
  189. package/dist/RadioGroup-CTAayuMv.js +142 -0
  190. package/dist/RadioGroup-CTAayuMv.js.map +1 -0
  191. package/dist/RadioGroup-CvC2yc4p.cjs +2 -0
  192. package/dist/RadioGroup-CvC2yc4p.cjs.map +1 -0
  193. package/dist/{RemoveDialog-Bm2mJB3l.cjs → RemoveDialog-D12B4x80.cjs} +2 -2
  194. package/dist/{RemoveDialog-Bm2mJB3l.cjs.map → RemoveDialog-D12B4x80.cjs.map} +1 -1
  195. package/dist/{RemoveDialog-C2uJzWi-.js → RemoveDialog-DdGsqaWV.js} +6 -6
  196. package/dist/{RemoveDialog-C2uJzWi-.js.map → RemoveDialog-DdGsqaWV.js.map} +1 -1
  197. package/dist/RichTextEditor-BVXY25sz.cjs +2 -0
  198. package/dist/RichTextEditor-BVXY25sz.cjs.map +1 -0
  199. package/dist/RichTextEditor-DL4y5xVv.js +916 -0
  200. package/dist/RichTextEditor-DL4y5xVv.js.map +1 -0
  201. package/dist/RootLayout-BK3t6Mm0.js +604 -0
  202. package/dist/RootLayout-BK3t6Mm0.js.map +1 -0
  203. package/dist/RootLayout-DDuzPlJe.cjs +2 -0
  204. package/dist/RootLayout-DDuzPlJe.cjs.map +1 -0
  205. package/dist/{Select-CVVJKAtS.cjs → Select-DlFDOZtn.cjs} +2 -2
  206. package/dist/{Select-CVVJKAtS.cjs.map → Select-DlFDOZtn.cjs.map} +1 -1
  207. package/dist/{Select-d9LDI8O3.js → Select-tVI_qer3.js} +5 -5
  208. package/dist/{Select-d9LDI8O3.js.map → Select-tVI_qer3.js.map} +1 -1
  209. package/dist/{Sidebar-BgCfnZBF.js → Sidebar-CjrD3nNp.js} +7 -6
  210. package/dist/Sidebar-CjrD3nNp.js.map +1 -0
  211. package/dist/Sidebar-gB-X4VLX.cjs +2 -0
  212. package/dist/Sidebar-gB-X4VLX.cjs.map +1 -0
  213. package/dist/{SpeedDial-CEr2JWQb.cjs → SpeedDial-BIOkkLKO.cjs} +2 -2
  214. package/dist/{SpeedDial-CEr2JWQb.cjs.map → SpeedDial-BIOkkLKO.cjs.map} +1 -1
  215. package/dist/{SpeedDial-CBVwgnFp.js → SpeedDial-xQr4JH0x.js} +5 -5
  216. package/dist/{SpeedDial-CBVwgnFp.js.map → SpeedDial-xQr4JH0x.js.map} +1 -1
  217. package/dist/Stepper-CBdhvPoz.cjs +2 -0
  218. package/dist/Stepper-CBdhvPoz.cjs.map +1 -0
  219. package/dist/Stepper-CkYcIc15.js +169 -0
  220. package/dist/Stepper-CkYcIc15.js.map +1 -0
  221. package/dist/{SwatchPicker-Bpxk0IOe.js → SwatchPicker-BAKslSY4.js} +2 -2
  222. package/dist/{SwatchPicker-Bpxk0IOe.js.map → SwatchPicker-BAKslSY4.js.map} +1 -1
  223. package/dist/{SwatchPicker-BWXqgsEy.cjs → SwatchPicker-CpwVq0xp.cjs} +2 -2
  224. package/dist/{SwatchPicker-BWXqgsEy.cjs.map → SwatchPicker-CpwVq0xp.cjs.map} +1 -1
  225. package/dist/Table-CwQKfXGn.js +1210 -0
  226. package/dist/Table-CwQKfXGn.js.map +1 -0
  227. package/dist/Table-Cwxqo7Br.cjs +2 -0
  228. package/dist/Table-Cwxqo7Br.cjs.map +1 -0
  229. package/dist/Tabs-651xbRe4.cjs +2 -0
  230. package/dist/Tabs-651xbRe4.cjs.map +1 -0
  231. package/dist/Tabs-Bztnezt9.js +194 -0
  232. package/dist/Tabs-Bztnezt9.js.map +1 -0
  233. package/dist/{TagsField-DcuSn7wL.cjs → TagsField-B7ZARHzD.cjs} +2 -2
  234. package/dist/{TagsField-DcuSn7wL.cjs.map → TagsField-B7ZARHzD.cjs.map} +1 -1
  235. package/dist/{TagsField-DuQEFHZ3.js → TagsField-CdymON69.js} +5 -5
  236. package/dist/{TagsField-DuQEFHZ3.js.map → TagsField-CdymON69.js.map} +1 -1
  237. package/dist/{TextField-E85pvJQC.cjs → TextField-B22NRQ91.cjs} +2 -2
  238. package/dist/{TextField-E85pvJQC.cjs.map → TextField-B22NRQ91.cjs.map} +1 -1
  239. package/dist/{TextField-SGYWviFf.js → TextField-DkaYK1DI.js} +4 -4
  240. package/dist/{TextField-SGYWviFf.js.map → TextField-DkaYK1DI.js.map} +1 -1
  241. package/dist/{ThemeToggle-BdlxzYNt.cjs → ThemeToggle-D5dWHQFb.cjs} +2 -2
  242. package/dist/{ThemeToggle-BdlxzYNt.cjs.map → ThemeToggle-D5dWHQFb.cjs.map} +1 -1
  243. package/dist/{ThemeToggle-C2kjFrD_.js → ThemeToggle-DqzUvcK5.js} +4 -4
  244. package/dist/{ThemeToggle-C2kjFrD_.js.map → ThemeToggle-DqzUvcK5.js.map} +1 -1
  245. package/dist/{TimeColumns-BS1d0qOp.js → TimeColumns-BEoHh961.js} +2 -2
  246. package/dist/{TimeColumns-BS1d0qOp.js.map → TimeColumns-BEoHh961.js.map} +1 -1
  247. package/dist/{TimeColumns-D7-O4Qyt.cjs → TimeColumns-o2xhvSGE.cjs} +2 -2
  248. package/dist/{TimeColumns-D7-O4Qyt.cjs.map → TimeColumns-o2xhvSGE.cjs.map} +1 -1
  249. package/dist/{TimePicker-Dzb3gycP.cjs → TimePicker-CACmHwNn.cjs} +2 -2
  250. package/dist/{TimePicker-Dzb3gycP.cjs.map → TimePicker-CACmHwNn.cjs.map} +1 -1
  251. package/dist/{TimePicker-DlzYNDN1.js → TimePicker-DCryZCmh.js} +7 -7
  252. package/dist/{TimePicker-DlzYNDN1.js.map → TimePicker-DCryZCmh.js.map} +1 -1
  253. package/dist/{Timeline-CKEosWka.cjs → Timeline-CMP93APm.cjs} +2 -2
  254. package/dist/{Timeline-CKEosWka.cjs.map → Timeline-CMP93APm.cjs.map} +1 -1
  255. package/dist/{Timeline-ufVXmpMY.js → Timeline-Dri2dPsK.js} +3 -3
  256. package/dist/{Timeline-ufVXmpMY.js.map → Timeline-Dri2dPsK.js.map} +1 -1
  257. package/dist/{Toaster-Cummylmj.cjs → Toaster-BwREV06e.cjs} +2 -2
  258. package/dist/{Toaster-Cummylmj.cjs.map → Toaster-BwREV06e.cjs.map} +1 -1
  259. package/dist/{Toaster-cu5XyKeE.js → Toaster-DwVLab3k.js} +2 -2
  260. package/dist/{Toaster-cu5XyKeE.js.map → Toaster-DwVLab3k.js.map} +1 -1
  261. package/dist/{ToggleButtonGroup-D9odYMzD.js → ToggleButtonGroup-BtVDnQIF.js} +3 -3
  262. package/dist/{ToggleButtonGroup-D9odYMzD.js.map → ToggleButtonGroup-BtVDnQIF.js.map} +1 -1
  263. package/dist/{ToggleButtonGroup-M2oj_3mc.cjs → ToggleButtonGroup-UylpGJ16.cjs} +2 -2
  264. package/dist/{ToggleButtonGroup-M2oj_3mc.cjs.map → ToggleButtonGroup-UylpGJ16.cjs.map} +1 -1
  265. package/dist/Tooltip-Bw-1Xk2Z.cjs +2 -0
  266. package/dist/Tooltip-Bw-1Xk2Z.cjs.map +1 -0
  267. package/dist/Tooltip-DsDv4NOq.js +135 -0
  268. package/dist/Tooltip-DsDv4NOq.js.map +1 -0
  269. package/dist/{TranslatedFields-Ccjhq2YL.js → TranslatedFields-B0LMXgiu.js} +5 -5
  270. package/dist/{TranslatedFields-Ccjhq2YL.js.map → TranslatedFields-B0LMXgiu.js.map} +1 -1
  271. package/dist/{TranslatedFields-CbTlgKnh.cjs → TranslatedFields-sio1Qfy7.cjs} +2 -2
  272. package/dist/{TranslatedFields-CbTlgKnh.cjs.map → TranslatedFields-sio1Qfy7.cjs.map} +1 -1
  273. package/dist/{UserCard-Bs8kuV2j.js → UserCard-B5FVcJaK.js} +5 -5
  274. package/dist/{UserCard-Bs8kuV2j.js.map → UserCard-B5FVcJaK.js.map} +1 -1
  275. package/dist/{UserCard-BfHHfkDr.cjs → UserCard-Dzc4zmPj.cjs} +2 -2
  276. package/dist/{UserCard-BfHHfkDr.cjs.map → UserCard-Dzc4zmPj.cjs.map} +1 -1
  277. package/dist/app/AdminRoot.d.cts +7 -2
  278. package/dist/app/AdminRoot.d.ts +7 -2
  279. package/dist/components/Accordion/index.cjs +1 -1
  280. package/dist/components/Accordion/index.js +1 -1
  281. package/dist/components/Alert/index.cjs +1 -1
  282. package/dist/components/Alert/index.js +1 -1
  283. package/dist/components/AuthLayout/index.cjs +1 -1
  284. package/dist/components/AuthLayout/index.js +1 -1
  285. package/dist/components/Avatar/index.cjs +1 -1
  286. package/dist/components/Avatar/index.js +2 -2
  287. package/dist/components/Breadcrumbs/index.cjs +1 -1
  288. package/dist/components/Breadcrumbs/index.js +1 -1
  289. package/dist/components/Button/index.cjs +1 -1
  290. package/dist/components/Button/index.js +1 -1
  291. package/dist/components/Card/Card.d.cts +9 -1
  292. package/dist/components/Card/Card.d.ts +9 -1
  293. package/dist/components/Card/index.cjs +1 -1
  294. package/dist/components/Card/index.js +1 -1
  295. package/dist/components/Chip/index.cjs +1 -1
  296. package/dist/components/Chip/index.js +1 -1
  297. package/dist/components/ChoiceCard/index.cjs +1 -1
  298. package/dist/components/ChoiceCard/index.js +1 -1
  299. package/dist/components/CodeBlock/index.cjs +1 -1
  300. package/dist/components/CodeBlock/index.js +1 -1
  301. package/dist/components/ColorPicker/index.cjs +1 -1
  302. package/dist/components/ColorPicker/index.js +1 -1
  303. package/dist/components/ColorRamp/index.cjs +1 -1
  304. package/dist/components/ColorRamp/index.js +1 -1
  305. package/dist/components/CopyButton/index.cjs +1 -1
  306. package/dist/components/CopyButton/index.js +1 -1
  307. package/dist/components/DashedButton/index.cjs +1 -1
  308. package/dist/components/DashedButton/index.js +1 -1
  309. package/dist/components/DatePicker/index.cjs +1 -1
  310. package/dist/components/DatePicker/index.js +1 -1
  311. package/dist/components/DateTimePicker/index.cjs +1 -1
  312. package/dist/components/DateTimePicker/index.js +1 -1
  313. package/dist/components/DescriptionList/index.cjs +1 -1
  314. package/dist/components/DescriptionList/index.js +1 -1
  315. package/dist/components/Dropdown/index.cjs +1 -1
  316. package/dist/components/Dropdown/index.js +1 -1
  317. package/dist/components/EmptyState/index.cjs +1 -1
  318. package/dist/components/EmptyState/index.js +1 -1
  319. package/dist/components/ErrorState/index.cjs +1 -1
  320. package/dist/components/ErrorState/index.js +2 -2
  321. package/dist/components/FileCard/index.cjs +1 -1
  322. package/dist/components/FileCard/index.js +1 -1
  323. package/dist/components/FileUploader/index.cjs +1 -1
  324. package/dist/components/FileUploader/index.js +1 -1
  325. package/dist/components/Flag/index.cjs +1 -1
  326. package/dist/components/Flag/index.js +1 -1
  327. package/dist/components/FullscreenToggle/index.cjs +1 -1
  328. package/dist/components/FullscreenToggle/index.js +1 -1
  329. package/dist/components/Icon/index.cjs +1 -1
  330. package/dist/components/Icon/index.js +2 -2
  331. package/dist/components/IconButton/index.cjs +1 -1
  332. package/dist/components/IconButton/index.js +1 -1
  333. package/dist/components/List/index.cjs +1 -1
  334. package/dist/components/List/index.js +1 -1
  335. package/dist/components/Loader/index.cjs +1 -1
  336. package/dist/components/Loader/index.js +1 -1
  337. package/dist/components/Modal/index.cjs +1 -1
  338. package/dist/components/Modal/index.js +1 -1
  339. package/dist/components/MultiSelect/index.cjs +1 -1
  340. package/dist/components/MultiSelect/index.js +1 -1
  341. package/dist/components/NumberField/index.cjs +1 -1
  342. package/dist/components/NumberField/index.js +1 -1
  343. package/dist/components/OtpField/index.cjs +1 -1
  344. package/dist/components/OtpField/index.js +1 -1
  345. package/dist/components/PageLayout/index.cjs +1 -1
  346. package/dist/components/PageLayout/index.js +1 -1
  347. package/dist/components/PageNotFound/index.cjs +1 -1
  348. package/dist/components/PageNotFound/index.js +1 -1
  349. package/dist/components/Pagination/index.cjs +1 -1
  350. package/dist/components/Pagination/index.js +1 -1
  351. package/dist/components/PaletteField/index.cjs +1 -1
  352. package/dist/components/PaletteField/index.js +1 -1
  353. package/dist/components/PhoneField/index.cjs +1 -1
  354. package/dist/components/PhoneField/index.js +1 -1
  355. package/dist/components/Popconfirm/index.cjs +1 -1
  356. package/dist/components/Popconfirm/index.js +1 -1
  357. package/dist/components/Popover/index.cjs +1 -1
  358. package/dist/components/Popover/index.js +1 -1
  359. package/dist/components/Progress/index.cjs +1 -1
  360. package/dist/components/Progress/index.js +1 -1
  361. package/dist/components/Radio/RadioGroup.d.cts +1 -1
  362. package/dist/components/Radio/RadioGroup.d.ts +1 -1
  363. package/dist/components/Radio/index.cjs +1 -1
  364. package/dist/components/Radio/index.js +1 -1
  365. package/dist/components/RemoveDialog/index.cjs +1 -1
  366. package/dist/components/RemoveDialog/index.js +1 -1
  367. package/dist/components/RichTextEditor/RichTextEditor.d.cts +16 -1
  368. package/dist/components/RichTextEditor/RichTextEditor.d.ts +16 -1
  369. package/dist/components/RichTextEditor/index.cjs +1 -1
  370. package/dist/components/RichTextEditor/index.js +1 -1
  371. package/dist/components/RootLayout/RootLayout.d.cts +8 -1
  372. package/dist/components/RootLayout/RootLayout.d.ts +8 -1
  373. package/dist/components/RootLayout/SettingsDrawer.d.cts +4 -1
  374. package/dist/components/RootLayout/SettingsDrawer.d.ts +4 -1
  375. package/dist/components/RootLayout/index.cjs +1 -1
  376. package/dist/components/RootLayout/index.js +1 -1
  377. package/dist/components/Select/index.cjs +1 -1
  378. package/dist/components/Select/index.js +1 -1
  379. package/dist/components/Sidebar/Sidebar.d.cts +2 -0
  380. package/dist/components/Sidebar/Sidebar.d.ts +2 -0
  381. package/dist/components/Sidebar/index.cjs +1 -1
  382. package/dist/components/Sidebar/index.js +1 -1
  383. package/dist/components/SpeedDial/index.cjs +1 -1
  384. package/dist/components/SpeedDial/index.js +1 -1
  385. package/dist/components/Stepper/Stepper.d.cts +8 -1
  386. package/dist/components/Stepper/Stepper.d.ts +8 -1
  387. package/dist/components/Stepper/index.cjs +1 -1
  388. package/dist/components/Stepper/index.js +1 -1
  389. package/dist/components/SwatchPicker/index.cjs +1 -1
  390. package/dist/components/SwatchPicker/index.js +1 -1
  391. package/dist/components/Table/Table.d.cts +20 -3
  392. package/dist/components/Table/Table.d.ts +20 -3
  393. package/dist/components/Table/index.cjs +1 -1
  394. package/dist/components/Table/index.js +1 -1
  395. package/dist/components/Table/tableFilter.d.cts +12 -2
  396. package/dist/components/Table/tableFilter.d.ts +12 -2
  397. package/dist/components/Tabs/Tabs.d.cts +8 -1
  398. package/dist/components/Tabs/Tabs.d.ts +8 -1
  399. package/dist/components/Tabs/index.cjs +1 -1
  400. package/dist/components/Tabs/index.js +1 -1
  401. package/dist/components/TagsField/index.cjs +1 -1
  402. package/dist/components/TagsField/index.js +1 -1
  403. package/dist/components/TextField/index.cjs +1 -1
  404. package/dist/components/TextField/index.js +1 -1
  405. package/dist/components/ThemeToggle/index.cjs +1 -1
  406. package/dist/components/ThemeToggle/index.js +1 -1
  407. package/dist/components/TimePicker/index.cjs +1 -1
  408. package/dist/components/TimePicker/index.js +1 -1
  409. package/dist/components/Timeline/index.cjs +1 -1
  410. package/dist/components/Timeline/index.js +1 -1
  411. package/dist/components/Toast/index.cjs +1 -1
  412. package/dist/components/Toast/index.js +1 -1
  413. package/dist/components/ToggleButton/index.cjs +1 -1
  414. package/dist/components/ToggleButton/index.js +1 -1
  415. package/dist/components/Tooltip/Tooltip.d.cts +10 -3
  416. package/dist/components/Tooltip/Tooltip.d.ts +10 -3
  417. package/dist/components/Tooltip/index.cjs +1 -1
  418. package/dist/components/Tooltip/index.js +1 -1
  419. package/dist/components/TranslatedFields/index.cjs +1 -1
  420. package/dist/components/TranslatedFields/index.js +1 -1
  421. package/dist/components/UserCard/index.cjs +1 -1
  422. package/dist/components/UserCard/index.js +1 -1
  423. package/dist/entries/app.cjs +1 -1
  424. package/dist/entries/app.js +1 -1
  425. package/dist/entries/components.cjs +1 -1
  426. package/dist/entries/components.js +64 -64
  427. package/dist/entries/hooks.cjs +1 -1
  428. package/dist/entries/hooks.d.cts +2 -0
  429. package/dist/entries/hooks.d.ts +2 -0
  430. package/dist/entries/hooks.js +9 -8
  431. package/dist/entries/i18n.cjs +1 -1
  432. package/dist/entries/i18n.js +2 -2
  433. package/dist/entries/icons.cjs +1 -1
  434. package/dist/entries/icons.js +2 -2
  435. package/dist/entries/theme.cjs +1 -1
  436. package/dist/entries/theme.d.cts +1 -1
  437. package/dist/entries/theme.d.ts +1 -1
  438. package/dist/entries/theme.js +1 -1
  439. package/dist/hooks/index.d.cts +2 -0
  440. package/dist/hooks/index.d.ts +2 -0
  441. package/dist/hooks/useClearUrlOnUnmount.d.cts +19 -0
  442. package/dist/hooks/useClearUrlOnUnmount.d.ts +19 -0
  443. package/dist/hooks/useQueryModal.d.cts +40 -0
  444. package/dist/hooks/useQueryModal.d.ts +40 -0
  445. package/dist/i18n/messages.d.cts +12 -0
  446. package/dist/i18n/messages.d.ts +12 -0
  447. package/dist/icons/names.d.cts +3 -3
  448. package/dist/icons/names.d.ts +3 -3
  449. package/dist/index.cjs +1 -1
  450. package/dist/index.css +1 -1
  451. package/dist/index.js +251 -250
  452. package/dist/{messages-FiUqCKjJ.cjs → messages-DS38X5W2.cjs} +9 -9
  453. package/dist/messages-DS38X5W2.cjs.map +1 -0
  454. package/dist/{messages-DCefu6Pn.js → messages-DswDgGe2.js} +52 -10
  455. package/dist/messages-DswDgGe2.js.map +1 -0
  456. package/dist/{names-r21QPjcU.js → names-BR1uJs0-.js} +5 -4
  457. package/dist/names-BR1uJs0-.js.map +1 -0
  458. package/dist/names-YOCJ4B5J.cjs +2 -0
  459. package/dist/names-YOCJ4B5J.cjs.map +1 -0
  460. package/dist/theme/ConfigProvider.d.cts +48 -0
  461. package/dist/theme/ConfigProvider.d.ts +48 -0
  462. package/dist/theme/index.d.cts +1 -1
  463. package/dist/theme/index.d.ts +1 -1
  464. package/dist/useClearUrlOnUnmount-Cg7v2y5B.cjs +2 -0
  465. package/dist/useClearUrlOnUnmount-Cg7v2y5B.cjs.map +1 -0
  466. package/dist/useClearUrlOnUnmount-DOeh6CUN.js +37 -0
  467. package/dist/useClearUrlOnUnmount-DOeh6CUN.js.map +1 -0
  468. package/dist/useForm-CGbJ44Gp.js +194 -0
  469. package/dist/useForm-CGbJ44Gp.js.map +1 -0
  470. package/dist/useForm-CSw6r1n1.cjs +2 -0
  471. package/dist/useForm-CSw6r1n1.cjs.map +1 -0
  472. package/dist/{useOptionMenu-BoWyPgbY.cjs → useOptionMenu-BYeSUee6.cjs} +2 -2
  473. package/dist/{useOptionMenu-BoWyPgbY.cjs.map → useOptionMenu-BYeSUee6.cjs.map} +1 -1
  474. package/dist/{useOptionMenu-D7EbYG9A.js → useOptionMenu-DtTvY9EC.js} +6 -6
  475. package/dist/{useOptionMenu-D7EbYG9A.js.map → useOptionMenu-DtTvY9EC.js.map} +1 -1
  476. package/package.json +1 -1
  477. package/dist/AdminRoot-9HGp3Mds.js +0 -55
  478. package/dist/AdminRoot-9HGp3Mds.js.map +0 -1
  479. package/dist/AdminRoot-D24UJ-4a.cjs +0 -2
  480. package/dist/AdminRoot-D24UJ-4a.cjs.map +0 -1
  481. package/dist/Card-CUUh4mlB.cjs +0 -2
  482. package/dist/Card-CUUh4mlB.cjs.map +0 -1
  483. package/dist/Card-MxYfQTOY.js +0 -121
  484. package/dist/Card-MxYfQTOY.js.map +0 -1
  485. package/dist/ConfigProvider-BbsI15b-.js +0 -320
  486. package/dist/ConfigProvider-BbsI15b-.js.map +0 -1
  487. package/dist/ConfigProvider-ByLHqXpv.cjs +0 -2
  488. package/dist/ConfigProvider-ByLHqXpv.cjs.map +0 -1
  489. package/dist/DescriptionList-U5z2Faf4.cjs +0 -2
  490. package/dist/FloatingPanel-BIC4WrFa.cjs +0 -2
  491. package/dist/FloatingPanel-CeSOtE_D.js +0 -135
  492. package/dist/Icon-BVULqOJD.cjs +0 -2
  493. package/dist/Icon-BVULqOJD.cjs.map +0 -1
  494. package/dist/Icon-DaTvzLBu.js.map +0 -1
  495. package/dist/RadioGroup-BcFBdFhh.cjs +0 -2
  496. package/dist/RadioGroup-BcFBdFhh.cjs.map +0 -1
  497. package/dist/RadioGroup-dVx_hMCY.js +0 -141
  498. package/dist/RadioGroup-dVx_hMCY.js.map +0 -1
  499. package/dist/RichTextEditor-BDAWmQrN.js +0 -806
  500. package/dist/RichTextEditor-BDAWmQrN.js.map +0 -1
  501. package/dist/RichTextEditor-D4HpPT3C.cjs +0 -2
  502. package/dist/RichTextEditor-D4HpPT3C.cjs.map +0 -1
  503. package/dist/RootLayout-CxncyjCz.js +0 -515
  504. package/dist/RootLayout-CxncyjCz.js.map +0 -1
  505. package/dist/RootLayout-XEcU_MBs.cjs +0 -2
  506. package/dist/RootLayout-XEcU_MBs.cjs.map +0 -1
  507. package/dist/Sidebar-B8ecHwZr.cjs +0 -2
  508. package/dist/Sidebar-B8ecHwZr.cjs.map +0 -1
  509. package/dist/Sidebar-BgCfnZBF.js.map +0 -1
  510. package/dist/Stepper-DOSc03YV.cjs +0 -2
  511. package/dist/Stepper-DOSc03YV.cjs.map +0 -1
  512. package/dist/Stepper-DtYamv1q.js +0 -165
  513. package/dist/Stepper-DtYamv1q.js.map +0 -1
  514. package/dist/Table-AzNzUAkl.js +0 -1170
  515. package/dist/Table-AzNzUAkl.js.map +0 -1
  516. package/dist/Table-CrpWhZUg.cjs +0 -2
  517. package/dist/Table-CrpWhZUg.cjs.map +0 -1
  518. package/dist/Tabs-CMnLXRjA.cjs +0 -2
  519. package/dist/Tabs-CMnLXRjA.cjs.map +0 -1
  520. package/dist/Tabs-D1RGhKsa.js +0 -190
  521. package/dist/Tabs-D1RGhKsa.js.map +0 -1
  522. package/dist/Tooltip-Ao7az09p.cjs +0 -2
  523. package/dist/Tooltip-Ao7az09p.cjs.map +0 -1
  524. package/dist/Tooltip-Cb_FKxT9.js +0 -65
  525. package/dist/Tooltip-Cb_FKxT9.js.map +0 -1
  526. package/dist/messages-DCefu6Pn.js.map +0 -1
  527. package/dist/messages-FiUqCKjJ.cjs.map +0 -1
  528. package/dist/names-BJnFU_5m.cjs +0 -2
  529. package/dist/names-BJnFU_5m.cjs.map +0 -1
  530. package/dist/names-r21QPjcU.js.map +0 -1
  531. package/dist/useForm-CN-qCrP7.js +0 -144
  532. package/dist/useForm-CN-qCrP7.js.map +0 -1
  533. package/dist/useForm-WvV361y6.cjs +0 -2
  534. package/dist/useForm-WvV361y6.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarGroup-CwlYqDCI.js","sources":["../src/components/Avatar/AvatarGroup.tsx"],"sourcesContent":["import {\n Children,\n cloneElement,\n forwardRef,\n isValidElement,\n type CSSProperties,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport { Avatar, type AvatarProps, type AvatarSize } from './Avatar'\nimport styles from './Avatar.module.css'\n\nexport interface AvatarGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color'> {\n /** `Avatar` elements to overlap. */\n children: ReactNode\n /** Show at most this many slots; the rest collapse into a trailing `+N` avatar. */\n max?: number\n /** Size applied to every avatar in the group (incl. the `+N`). Defaults to `md`. */\n size?: AvatarSize\n /** Theme palette token for the `+N` surplus avatar. Defaults to `accent`. */\n color?: ThemeColor\n}\n\nconst OVERLAP: Record<AvatarSize, string> = { sm: '-6px', md: '-8px', lg: '-10px' }\n\n/**\n * Overlaps a row of `Avatar`s with a ring between them, and collapses the overflow past `max` into a\n * trailing `+N` avatar (like a stacked team list). All avatars are normalized to the group's `size`.\n * Token-only styling.\n */\nexport const AvatarGroup = forwardRef<HTMLDivElement, AvatarGroupProps>(function AvatarGroup(\n { children, max, size = 'md', color = 'accent', className, style, ...props },\n ref,\n) {\n const items = Children.toArray(children).filter(isValidElement) as ReactElement<AvatarProps>[]\n const total = items.length\n const limit = max && max > 0 && total > max ? max - 1 : total\n const shown = items.slice(0, limit)\n const surplus = total - shown.length\n\n return (\n <div\n ref={ref}\n className={clsx(styles.group, className)}\n style={{ '--avatar-overlap': OVERLAP[size], ...style } as CSSProperties}\n {...props}\n >\n {shown.map((child, index) =>\n cloneElement(child, {\n size,\n className: clsx(styles.item, child.props.className),\n style: { zIndex: total - index, ...child.props.style } as CSSProperties,\n }),\n )}\n {surplus > 0 && (\n <Avatar size={size} color={color} className={styles.item} style={{ zIndex: 0 }}>\n +{surplus}\n </Avatar>\n )}\n </div>\n )\n})\n"],"names":["OVERLAP","AvatarGroup","forwardRef","children","max","size","color","className","style","props","ref","items","Children","isValidElement","total","limit","shown","surplus","jsxs","clsx","styles","child","index","cloneElement","Avatar"],"mappings":";;;;AA0BA,MAAMA,IAAsC,EAAE,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAA,GAO7DC,IAAcC,EAA6C,SACtE,EAAE,UAAAC,GAAU,KAAAC,GAAK,MAAAC,IAAO,MAAM,OAAAC,IAAQ,UAAU,WAAAC,GAAW,OAAAC,GAAO,GAAGC,EAAA,GACrEC,GACA;AACA,QAAMC,IAAQC,EAAS,QAAQT,CAAQ,EAAE,OAAOU,CAAc,GACxDC,IAAQH,EAAM,QACdI,IAAQX,KAAOA,IAAM,KAAKU,IAAQV,IAAMA,IAAM,IAAIU,GAClDE,IAAQL,EAAM,MAAM,GAAGI,CAAK,GAC5BE,IAAUH,IAAQE,EAAM;AAE9B,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAR;AAAA,MACA,WAAWS,EAAKC,EAAO,OAAOb,CAAS;AAAA,MACvC,OAAO,EAAE,oBAAoBP,EAAQK,CAAI,GAAG,GAAGG,EAAA;AAAA,MAC9C,GAAGC;AAAA,MAEH,UAAA;AAAA,QAAAO,EAAM;AAAA,UAAI,CAACK,GAAOC,MACjBC,EAAaF,GAAO;AAAA,YAClB,MAAAhB;AAAA,YACA,WAAWc,EAAKC,EAAO,MAAMC,EAAM,MAAM,SAAS;AAAA,YAClD,OAAO,EAAE,QAAQP,IAAQQ,GAAO,GAAGD,EAAM,MAAM,MAAA;AAAA,UAAM,CACtD;AAAA,QAAA;AAAA,QAEFJ,IAAU,KACT,gBAAAC,EAACM,GAAA,EAAO,MAAAnB,GAAY,OAAAC,GAAc,WAAWc,EAAO,MAAM,OAAO,EAAE,QAAQ,KAAK,UAAA;AAAA,UAAA;AAAA,UAC5EH;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC;"}
1
+ {"version":3,"file":"AvatarGroup-BxYQo0zZ.js","sources":["../src/components/Avatar/AvatarGroup.tsx"],"sourcesContent":["import {\n Children,\n cloneElement,\n forwardRef,\n isValidElement,\n type CSSProperties,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport { Avatar, type AvatarProps, type AvatarSize } from './Avatar'\nimport styles from './Avatar.module.css'\n\nexport interface AvatarGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color'> {\n /** `Avatar` elements to overlap. */\n children: ReactNode\n /** Show at most this many slots; the rest collapse into a trailing `+N` avatar. */\n max?: number\n /** Size applied to every avatar in the group (incl. the `+N`). Defaults to `md`. */\n size?: AvatarSize\n /** Theme palette token for the `+N` surplus avatar. Defaults to `accent`. */\n color?: ThemeColor\n}\n\nconst OVERLAP: Record<AvatarSize, string> = { sm: '-6px', md: '-8px', lg: '-10px' }\n\n/**\n * Overlaps a row of `Avatar`s with a ring between them, and collapses the overflow past `max` into a\n * trailing `+N` avatar (like a stacked team list). All avatars are normalized to the group's `size`.\n * Token-only styling.\n */\nexport const AvatarGroup = forwardRef<HTMLDivElement, AvatarGroupProps>(function AvatarGroup(\n { children, max, size = 'md', color = 'accent', className, style, ...props },\n ref,\n) {\n const items = Children.toArray(children).filter(isValidElement) as ReactElement<AvatarProps>[]\n const total = items.length\n const limit = max && max > 0 && total > max ? max - 1 : total\n const shown = items.slice(0, limit)\n const surplus = total - shown.length\n\n return (\n <div\n ref={ref}\n className={clsx(styles.group, className)}\n style={{ '--avatar-overlap': OVERLAP[size], ...style } as CSSProperties}\n {...props}\n >\n {shown.map((child, index) =>\n cloneElement(child, {\n size,\n className: clsx(styles.item, child.props.className),\n style: { zIndex: total - index, ...child.props.style } as CSSProperties,\n }),\n )}\n {surplus > 0 && (\n <Avatar size={size} color={color} className={styles.item} style={{ zIndex: 0 }}>\n +{surplus}\n </Avatar>\n )}\n </div>\n )\n})\n"],"names":["OVERLAP","AvatarGroup","forwardRef","children","max","size","color","className","style","props","ref","items","Children","isValidElement","total","limit","shown","surplus","jsxs","clsx","styles","child","index","cloneElement","Avatar"],"mappings":";;;;AA0BA,MAAMA,IAAsC,EAAE,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAA,GAO7DC,IAAcC,EAA6C,SACtE,EAAE,UAAAC,GAAU,KAAAC,GAAK,MAAAC,IAAO,MAAM,OAAAC,IAAQ,UAAU,WAAAC,GAAW,OAAAC,GAAO,GAAGC,EAAA,GACrEC,GACA;AACA,QAAMC,IAAQC,EAAS,QAAQT,CAAQ,EAAE,OAAOU,CAAc,GACxDC,IAAQH,EAAM,QACdI,IAAQX,KAAOA,IAAM,KAAKU,IAAQV,IAAMA,IAAM,IAAIU,GAClDE,IAAQL,EAAM,MAAM,GAAGI,CAAK,GAC5BE,IAAUH,IAAQE,EAAM;AAE9B,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAR;AAAA,MACA,WAAWS,EAAKC,EAAO,OAAOb,CAAS;AAAA,MACvC,OAAO,EAAE,oBAAoBP,EAAQK,CAAI,GAAG,GAAGG,EAAA;AAAA,MAC9C,GAAGC;AAAA,MAEH,UAAA;AAAA,QAAAO,EAAM;AAAA,UAAI,CAACK,GAAOC,MACjBC,EAAaF,GAAO;AAAA,YAClB,MAAAhB;AAAA,YACA,WAAWc,EAAKC,EAAO,MAAMC,EAAM,MAAM,SAAS;AAAA,YAClD,OAAO,EAAE,QAAQP,IAAQQ,GAAO,GAAGD,EAAM,MAAM,MAAA;AAAA,UAAM,CACtD;AAAA,QAAA;AAAA,QAEFJ,IAAU,KACT,gBAAAC,EAACM,GAAA,EAAO,MAAAnB,GAAY,OAAAC,GAAc,WAAWc,EAAO,MAAM,OAAO,EAAE,QAAQ,KAAK,UAAA;AAAA,UAAA;AAAA,UAC5EH;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC;"}
@@ -1,2 +1,2 @@
1
- "use strict";const i=require("react/jsx-runtime"),e=require("react"),p=require("clsx"),r=require("./Avatar-DrV_F7Ex.cjs"),g={sm:"-6px",md:"-8px",lg:"-10px"},h=e.forwardRef(function({children:u,max:s,size:l="md",color:m="accent",className:d,style:v,...x},y){const a=e.Children.toArray(u).filter(e.isValidElement),t=a.length,A=s&&s>0&&t>s?s-1:t,c=a.slice(0,A),o=t-c.length;return i.jsxs("div",{ref:y,className:p.clsx(r.styles.group,d),style:{"--avatar-overlap":g[l],...v},...x,children:[c.map((n,f)=>e.cloneElement(n,{size:l,className:p.clsx(r.styles.item,n.props.className),style:{zIndex:t-f,...n.props.style}})),o>0&&i.jsxs(r.Avatar,{size:l,color:m,className:r.styles.item,style:{zIndex:0},children:["+",o]})]})});exports.AvatarGroup=h;
2
- //# sourceMappingURL=AvatarGroup-CHesdo-M.cjs.map
1
+ "use strict";const i=require("react/jsx-runtime"),e=require("react"),p=require("clsx"),r=require("./Avatar-CQ--wGWS.cjs"),g={sm:"-6px",md:"-8px",lg:"-10px"},h=e.forwardRef(function({children:u,max:s,size:l="md",color:m="accent",className:d,style:v,...x},y){const a=e.Children.toArray(u).filter(e.isValidElement),t=a.length,A=s&&s>0&&t>s?s-1:t,c=a.slice(0,A),o=t-c.length;return i.jsxs("div",{ref:y,className:p.clsx(r.styles.group,d),style:{"--avatar-overlap":g[l],...v},...x,children:[c.map((n,f)=>e.cloneElement(n,{size:l,className:p.clsx(r.styles.item,n.props.className),style:{zIndex:t-f,...n.props.style}})),o>0&&i.jsxs(r.Avatar,{size:l,color:m,className:r.styles.item,style:{zIndex:0},children:["+",o]})]})});exports.AvatarGroup=h;
2
+ //# sourceMappingURL=AvatarGroup-Bzu2t6Sd.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarGroup-CHesdo-M.cjs","sources":["../src/components/Avatar/AvatarGroup.tsx"],"sourcesContent":["import {\n Children,\n cloneElement,\n forwardRef,\n isValidElement,\n type CSSProperties,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport { Avatar, type AvatarProps, type AvatarSize } from './Avatar'\nimport styles from './Avatar.module.css'\n\nexport interface AvatarGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color'> {\n /** `Avatar` elements to overlap. */\n children: ReactNode\n /** Show at most this many slots; the rest collapse into a trailing `+N` avatar. */\n max?: number\n /** Size applied to every avatar in the group (incl. the `+N`). Defaults to `md`. */\n size?: AvatarSize\n /** Theme palette token for the `+N` surplus avatar. Defaults to `accent`. */\n color?: ThemeColor\n}\n\nconst OVERLAP: Record<AvatarSize, string> = { sm: '-6px', md: '-8px', lg: '-10px' }\n\n/**\n * Overlaps a row of `Avatar`s with a ring between them, and collapses the overflow past `max` into a\n * trailing `+N` avatar (like a stacked team list). All avatars are normalized to the group's `size`.\n * Token-only styling.\n */\nexport const AvatarGroup = forwardRef<HTMLDivElement, AvatarGroupProps>(function AvatarGroup(\n { children, max, size = 'md', color = 'accent', className, style, ...props },\n ref,\n) {\n const items = Children.toArray(children).filter(isValidElement) as ReactElement<AvatarProps>[]\n const total = items.length\n const limit = max && max > 0 && total > max ? max - 1 : total\n const shown = items.slice(0, limit)\n const surplus = total - shown.length\n\n return (\n <div\n ref={ref}\n className={clsx(styles.group, className)}\n style={{ '--avatar-overlap': OVERLAP[size], ...style } as CSSProperties}\n {...props}\n >\n {shown.map((child, index) =>\n cloneElement(child, {\n size,\n className: clsx(styles.item, child.props.className),\n style: { zIndex: total - index, ...child.props.style } as CSSProperties,\n }),\n )}\n {surplus > 0 && (\n <Avatar size={size} color={color} className={styles.item} style={{ zIndex: 0 }}>\n +{surplus}\n </Avatar>\n )}\n </div>\n )\n})\n"],"names":["OVERLAP","AvatarGroup","forwardRef","children","max","size","color","className","style","props","ref","items","Children","isValidElement","total","limit","shown","surplus","jsxs","clsx","styles","child","index","cloneElement","Avatar"],"mappings":"0HA0BMA,EAAsC,CAAE,GAAI,OAAQ,GAAI,OAAQ,GAAI,OAAA,EAO7DC,EAAcC,EAAAA,WAA6C,SACtE,CAAE,SAAAC,EAAU,IAAAC,EAAK,KAAAC,EAAO,KAAM,MAAAC,EAAQ,SAAU,UAAAC,EAAW,MAAAC,EAAO,GAAGC,CAAA,EACrEC,EACA,CACA,MAAMC,EAAQC,EAAAA,SAAS,QAAQT,CAAQ,EAAE,OAAOU,gBAAc,EACxDC,EAAQH,EAAM,OACdI,EAAQX,GAAOA,EAAM,GAAKU,EAAQV,EAAMA,EAAM,EAAIU,EAClDE,EAAQL,EAAM,MAAM,EAAGI,CAAK,EAC5BE,EAAUH,EAAQE,EAAM,OAE9B,OACEE,EAAAA,KAAC,MAAA,CACC,IAAAR,EACA,UAAWS,EAAAA,KAAKC,SAAO,MAAOb,CAAS,EACvC,MAAO,CAAE,mBAAoBP,EAAQK,CAAI,EAAG,GAAGG,CAAA,EAC9C,GAAGC,EAEH,SAAA,CAAAO,EAAM,IAAI,CAACK,EAAOC,IACjBC,EAAAA,aAAaF,EAAO,CAClB,KAAAhB,EACA,UAAWc,EAAAA,KAAKC,EAAAA,OAAO,KAAMC,EAAM,MAAM,SAAS,EAClD,MAAO,CAAE,OAAQP,EAAQQ,EAAO,GAAGD,EAAM,MAAM,KAAA,CAAM,CACtD,CAAA,EAEFJ,EAAU,GACTC,EAAAA,KAACM,EAAAA,OAAA,CAAO,KAAAnB,EAAY,MAAAC,EAAc,UAAWc,EAAAA,OAAO,KAAM,MAAO,CAAE,OAAQ,GAAK,SAAA,CAAA,IAC5EH,CAAA,CAAA,CACJ,CAAA,CAAA,CAAA,CAIR,CAAC"}
1
+ {"version":3,"file":"AvatarGroup-Bzu2t6Sd.cjs","sources":["../src/components/Avatar/AvatarGroup.tsx"],"sourcesContent":["import {\n Children,\n cloneElement,\n forwardRef,\n isValidElement,\n type CSSProperties,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport { Avatar, type AvatarProps, type AvatarSize } from './Avatar'\nimport styles from './Avatar.module.css'\n\nexport interface AvatarGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color'> {\n /** `Avatar` elements to overlap. */\n children: ReactNode\n /** Show at most this many slots; the rest collapse into a trailing `+N` avatar. */\n max?: number\n /** Size applied to every avatar in the group (incl. the `+N`). Defaults to `md`. */\n size?: AvatarSize\n /** Theme palette token for the `+N` surplus avatar. Defaults to `accent`. */\n color?: ThemeColor\n}\n\nconst OVERLAP: Record<AvatarSize, string> = { sm: '-6px', md: '-8px', lg: '-10px' }\n\n/**\n * Overlaps a row of `Avatar`s with a ring between them, and collapses the overflow past `max` into a\n * trailing `+N` avatar (like a stacked team list). All avatars are normalized to the group's `size`.\n * Token-only styling.\n */\nexport const AvatarGroup = forwardRef<HTMLDivElement, AvatarGroupProps>(function AvatarGroup(\n { children, max, size = 'md', color = 'accent', className, style, ...props },\n ref,\n) {\n const items = Children.toArray(children).filter(isValidElement) as ReactElement<AvatarProps>[]\n const total = items.length\n const limit = max && max > 0 && total > max ? max - 1 : total\n const shown = items.slice(0, limit)\n const surplus = total - shown.length\n\n return (\n <div\n ref={ref}\n className={clsx(styles.group, className)}\n style={{ '--avatar-overlap': OVERLAP[size], ...style } as CSSProperties}\n {...props}\n >\n {shown.map((child, index) =>\n cloneElement(child, {\n size,\n className: clsx(styles.item, child.props.className),\n style: { zIndex: total - index, ...child.props.style } as CSSProperties,\n }),\n )}\n {surplus > 0 && (\n <Avatar size={size} color={color} className={styles.item} style={{ zIndex: 0 }}>\n +{surplus}\n </Avatar>\n )}\n </div>\n )\n})\n"],"names":["OVERLAP","AvatarGroup","forwardRef","children","max","size","color","className","style","props","ref","items","Children","isValidElement","total","limit","shown","surplus","jsxs","clsx","styles","child","index","cloneElement","Avatar"],"mappings":"0HA0BMA,EAAsC,CAAE,GAAI,OAAQ,GAAI,OAAQ,GAAI,OAAA,EAO7DC,EAAcC,EAAAA,WAA6C,SACtE,CAAE,SAAAC,EAAU,IAAAC,EAAK,KAAAC,EAAO,KAAM,MAAAC,EAAQ,SAAU,UAAAC,EAAW,MAAAC,EAAO,GAAGC,CAAA,EACrEC,EACA,CACA,MAAMC,EAAQC,EAAAA,SAAS,QAAQT,CAAQ,EAAE,OAAOU,gBAAc,EACxDC,EAAQH,EAAM,OACdI,EAAQX,GAAOA,EAAM,GAAKU,EAAQV,EAAMA,EAAM,EAAIU,EAClDE,EAAQL,EAAM,MAAM,EAAGI,CAAK,EAC5BE,EAAUH,EAAQE,EAAM,OAE9B,OACEE,EAAAA,KAAC,MAAA,CACC,IAAAR,EACA,UAAWS,EAAAA,KAAKC,SAAO,MAAOb,CAAS,EACvC,MAAO,CAAE,mBAAoBP,EAAQK,CAAI,EAAG,GAAGG,CAAA,EAC9C,GAAGC,EAEH,SAAA,CAAAO,EAAM,IAAI,CAACK,EAAOC,IACjBC,EAAAA,aAAaF,EAAO,CAClB,KAAAhB,EACA,UAAWc,EAAAA,KAAKC,EAAAA,OAAO,KAAMC,EAAM,MAAM,SAAS,EAClD,MAAO,CAAE,OAAQP,EAAQQ,EAAO,GAAGD,EAAM,MAAM,KAAA,CAAM,CACtD,CAAA,EAEFJ,EAAU,GACTC,EAAAA,KAACM,EAAAA,OAAA,CAAO,KAAAnB,EAAY,MAAAC,EAAc,UAAWc,EAAAA,OAAO,KAAM,MAAO,CAAE,OAAQ,GAAK,SAAA,CAAA,IAC5EH,CAAA,CAAA,CACJ,CAAA,CAAA,CAAA,CAIR,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { jsx as e, jsxs as i } from "react/jsx-runtime";
2
2
  import { Link as u } from "@tanstack/react-router";
3
- import { I as n } from "./Icon-DaTvzLBu.js";
4
- import { a as b } from "./names-r21QPjcU.js";
5
- import { u as h } from "./Sidebar-BgCfnZBF.js";
6
- import { a as d } from "./ConfigProvider-BbsI15b-.js";
3
+ import { I as n } from "./Icon-CGQ5yGSZ.js";
4
+ import { a as b } from "./names-BR1uJs0-.js";
5
+ import { u as h } from "./Sidebar-CjrD3nNp.js";
6
+ import { a as d } from "./ConfigProvider-Ct0Pe3Ku.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-XWU8tRvs.js.map
35
+ //# sourceMappingURL=Breadcrumbs-CzHGbN2c.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs-XWU8tRvs.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-CzHGbN2c.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,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-B8ecHwZr.cjs"),d=require("./ConfigProvider-ByLHqXpv.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-DCEHxpSi.cjs.map
1
+ "use strict";const e=require("react/jsx-runtime"),m=require("@tanstack/react-router"),t=require("./Icon-BUP5_kRs.cjs"),b=require("./names-YOCJ4B5J.cjs"),_=require("./Sidebar-gB-X4VLX.cjs"),d=require("./ConfigProvider-CtpfSy1i.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-Di4-Acfb.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs-DCEHxpSi.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-Di4-Acfb.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,7 +1,7 @@
1
1
  import { jsxs as h, jsx as e } from "react/jsx-runtime";
2
2
  import { forwardRef as z, isValidElement as W, cloneElement as v } from "react";
3
3
  import { clsx as B } from "clsx";
4
- import { L as i } from "./Loader-C1uaCtx6.js";
4
+ import { L as i } from "./Loader-Czzb450N.js";
5
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
6
  button: E,
7
7
  sm: L,
@@ -69,4 +69,4 @@ const E = "_button_jyfg4_1", L = "_sm_jyfg4_23", N = "_md_jyfg4_29", $ = "_lg_jy
69
69
  export {
70
70
  M as B
71
71
  };
72
- //# sourceMappingURL=Button-CWMNNiia.js.map
72
+ //# sourceMappingURL=Button-9Qcdkw-y.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button-CWMNNiia.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-9Qcdkw-y.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,2 +1,2 @@
1
- "use strict";const o=require("react/jsx-runtime"),d=require("react"),z=require("clsx"),f=require("./Loader-Cpr9-OOZ.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-CusxDmfq.cjs.map
1
+ "use strict";const o=require("react/jsx-runtime"),d=require("react"),z=require("clsx"),f=require("./Loader-CI1j71X8.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-BQhiJq8e.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button-CusxDmfq.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-BQhiJq8e.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,10 +1,10 @@
1
1
  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
- import { I as _ } from "./Icon-DaTvzLBu.js";
5
- import { I as $ } from "./IconButton-GU3Ud4Zg.js";
4
+ import { I as _ } from "./Icon-CGQ5yGSZ.js";
5
+ import { I as $ } from "./IconButton-CL_6iMQh.js";
6
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-BbsI15b-.js";
7
+ import { a as Z } from "./ConfigProvider-Ct0Pe3Ku.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-Db3rr1VD.js.map
267
+ //# sourceMappingURL=Calendar-BB-C0qXO.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar-Db3rr1VD.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-BB-C0qXO.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,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-BNa0yLcv.cjs"),r=require("./DatePicker.module-BDtTsg8M.cjs"),z=require("./ConfigProvider-ByLHqXpv.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-BEQbZixA.cjs.map
1
+ "use strict";const o=require("react/jsx-runtime"),f=require("react"),j=require("clsx"),E=require("./Icon-BUP5_kRs.cjs"),L=require("./IconButton-CvIXSFsr.cjs"),r=require("./DatePicker.module-BDtTsg8M.cjs"),z=require("./ConfigProvider-CtpfSy1i.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-dXhLgOUH.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar-BEQbZixA.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-dXhLgOUH.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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"}