@techzyapp/ui-library 1.0.4 → 1.0.8

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 (378) hide show
  1. package/dist/{Alert-BQpA48PY.js → Alert-BL8hDdEl.js} +3 -3
  2. package/dist/{Alert-BQpA48PY.js.map → Alert-BL8hDdEl.js.map} +1 -1
  3. package/dist/{Alert-DKIjM-9x.cjs → Alert-C9yBIMq0.cjs} +2 -2
  4. package/dist/{Alert-DKIjM-9x.cjs.map → Alert-C9yBIMq0.cjs.map} +1 -1
  5. package/dist/{Breadcrumbs-Bx5UgwDy.js → Breadcrumbs-BC_QSlJZ.js} +3 -3
  6. package/dist/{Breadcrumbs-Bx5UgwDy.js.map → Breadcrumbs-BC_QSlJZ.js.map} +1 -1
  7. package/dist/{Breadcrumbs-CHONper7.cjs → Breadcrumbs-DhBx2UgK.cjs} +2 -2
  8. package/dist/{Breadcrumbs-CHONper7.cjs.map → Breadcrumbs-DhBx2UgK.cjs.map} +1 -1
  9. package/dist/{Button-DhEv0YFk.js → Button-BT8XmR_T.js} +2 -2
  10. package/dist/{Button-DhEv0YFk.js.map → Button-BT8XmR_T.js.map} +1 -1
  11. package/dist/{Button-D4bfVNNa.cjs → Button-C_HPI97g.cjs} +2 -2
  12. package/dist/{Button-D4bfVNNa.cjs.map → Button-C_HPI97g.cjs.map} +1 -1
  13. package/dist/{Calendar-Bh317SaV.js → Calendar-B9mXn_zD.js} +3 -3
  14. package/dist/{Calendar-Bh317SaV.js.map → Calendar-B9mXn_zD.js.map} +1 -1
  15. package/dist/{Calendar-C8uNezI-.cjs → Calendar-CCCife5b.cjs} +2 -2
  16. package/dist/{Calendar-C8uNezI-.cjs.map → Calendar-CCCife5b.cjs.map} +1 -1
  17. package/dist/{Card-DzClqJuu.js → Card-DHPAefzg.js} +2 -2
  18. package/dist/{Card-DzClqJuu.js.map → Card-DHPAefzg.js.map} +1 -1
  19. package/dist/{Card-CfyaerZZ.cjs → Card-DfVntHqn.cjs} +2 -2
  20. package/dist/{Card-CfyaerZZ.cjs.map → Card-DfVntHqn.cjs.map} +1 -1
  21. package/dist/{Chip-DSrdXLBU.cjs → Chip-BoHt3WYS.cjs} +2 -2
  22. package/dist/{Chip-DSrdXLBU.cjs.map → Chip-BoHt3WYS.cjs.map} +1 -1
  23. package/dist/{Chip-Cfo0v3Z8.js → Chip-DX3QECcs.js} +2 -2
  24. package/dist/{Chip-Cfo0v3Z8.js.map → Chip-DX3QECcs.js.map} +1 -1
  25. package/dist/{CodeBlock-BWxQyKRo.js → CodeBlock-CPWEOym2.js} +3 -3
  26. package/dist/{CodeBlock-BWxQyKRo.js.map → CodeBlock-CPWEOym2.js.map} +1 -1
  27. package/dist/{CodeBlock-CgXOjKS-.cjs → CodeBlock-DKhIGQBg.cjs} +2 -2
  28. package/dist/{CodeBlock-CgXOjKS-.cjs.map → CodeBlock-DKhIGQBg.cjs.map} +1 -1
  29. package/dist/{Col-D2TfZKiM.js → Col-B51RlwWP.js} +2 -2
  30. package/dist/{Col-D2TfZKiM.js.map → Col-B51RlwWP.js.map} +1 -1
  31. package/dist/{Col-R5mAy8T9.cjs → Col-BdQeyKEX.cjs} +2 -2
  32. package/dist/{Col-R5mAy8T9.cjs.map → Col-BdQeyKEX.cjs.map} +1 -1
  33. package/dist/{ColorPicker-2udt1ORM.js → ColorPicker-2qD8vZkR.js} +3 -3
  34. package/dist/{ColorPicker-2udt1ORM.js.map → ColorPicker-2qD8vZkR.js.map} +1 -1
  35. package/dist/{ColorPicker-BwmaXCOy.cjs → ColorPicker-BAJWvC3h.cjs} +2 -2
  36. package/dist/{ColorPicker-BwmaXCOy.cjs.map → ColorPicker-BAJWvC3h.cjs.map} +1 -1
  37. package/dist/{ColorPickerPanel-ByB1mLSi.cjs → ColorPickerPanel-CkB2pNnX.cjs} +2 -2
  38. package/dist/{ColorPickerPanel-ByB1mLSi.cjs.map → ColorPickerPanel-CkB2pNnX.cjs.map} +1 -1
  39. package/dist/{ColorPickerPanel-BM9OwDDE.js → ColorPickerPanel-CovWDIRt.js} +2 -2
  40. package/dist/{ColorPickerPanel-BM9OwDDE.js.map → ColorPickerPanel-CovWDIRt.js.map} +1 -1
  41. package/dist/ConfigProvider-DFy6pL-C.cjs +2 -0
  42. package/dist/ConfigProvider-DFy6pL-C.cjs.map +1 -0
  43. package/dist/ConfigProvider-sEZzNTeU.js +296 -0
  44. package/dist/ConfigProvider-sEZzNTeU.js.map +1 -0
  45. package/dist/DashedButton-DeiALUPA.js +59 -0
  46. package/dist/DashedButton-DeiALUPA.js.map +1 -0
  47. package/dist/DashedButton-q7AOqKUE.cjs +2 -0
  48. package/dist/DashedButton-q7AOqKUE.cjs.map +1 -0
  49. package/dist/{DatePicker-WM9TC6L_.js → DatePicker-BVHriq5B.js} +4 -4
  50. package/dist/{DatePicker-WM9TC6L_.js.map → DatePicker-BVHriq5B.js.map} +1 -1
  51. package/dist/{DatePicker-DF4Epkn8.cjs → DatePicker-TLaQ3ZyB.cjs} +2 -2
  52. package/dist/{DatePicker-DF4Epkn8.cjs.map → DatePicker-TLaQ3ZyB.cjs.map} +1 -1
  53. package/dist/{DateTimePicker-DBtcWK0F.js → DateTimePicker-BWxsgyGB.js} +7 -7
  54. package/dist/{DateTimePicker-DBtcWK0F.js.map → DateTimePicker-BWxsgyGB.js.map} +1 -1
  55. package/dist/{DateTimePicker-C557OjBU.cjs → DateTimePicker-Dq2jJ2yb.cjs} +2 -2
  56. package/dist/{DateTimePicker-C557OjBU.cjs.map → DateTimePicker-Dq2jJ2yb.cjs.map} +1 -1
  57. package/dist/{Dropdown-DKAXue5_.js → Dropdown-FfkmluRu.js} +2 -2
  58. package/dist/{Dropdown-DKAXue5_.js.map → Dropdown-FfkmluRu.js.map} +1 -1
  59. package/dist/{Dropdown-DygP50OB.cjs → Dropdown-Ui7h2TGd.cjs} +2 -2
  60. package/dist/{Dropdown-DygP50OB.cjs.map → Dropdown-Ui7h2TGd.cjs.map} +1 -1
  61. package/dist/{EmptyState-CCCpZ-ZA.cjs → EmptyState-B2WgeL-H.cjs} +2 -2
  62. package/dist/{EmptyState-CCCpZ-ZA.cjs.map → EmptyState-B2WgeL-H.cjs.map} +1 -1
  63. package/dist/{EmptyState-CetM49vk.js → EmptyState-D8eUxb8v.js} +2 -2
  64. package/dist/{EmptyState-CetM49vk.js.map → EmptyState-D8eUxb8v.js.map} +1 -1
  65. package/dist/{FileUploader-VtmmwUFE.js → FileUploader-I0G-2WSe.js} +5 -5
  66. package/dist/{FileUploader-VtmmwUFE.js.map → FileUploader-I0G-2WSe.js.map} +1 -1
  67. package/dist/{FileUploader-B4TJHyoi.cjs → FileUploader-qsnWX-i5.cjs} +2 -2
  68. package/dist/{FileUploader-B4TJHyoi.cjs.map → FileUploader-qsnWX-i5.cjs.map} +1 -1
  69. package/dist/{Flag-EPZOrH-U.cjs → Flag-Bxl1Pa9m.cjs} +2 -2
  70. package/dist/{Flag-EPZOrH-U.cjs.map → Flag-Bxl1Pa9m.cjs.map} +1 -1
  71. package/dist/{Flag-BWCX6oSR.js → Flag-CvIo_Eqp.js} +2 -2
  72. package/dist/{Flag-BWCX6oSR.js.map → Flag-CvIo_Eqp.js.map} +1 -1
  73. package/dist/Flex-BFn4P1tJ.js +52 -0
  74. package/dist/Flex-BFn4P1tJ.js.map +1 -0
  75. package/dist/Flex-C6tHC8n7.cjs +2 -0
  76. package/dist/Flex-C6tHC8n7.cjs.map +1 -0
  77. package/dist/{FullscreenToggle-DDKN5n8B.cjs → FullscreenToggle-CEOkPSLp.cjs} +2 -2
  78. package/dist/{FullscreenToggle-DDKN5n8B.cjs.map → FullscreenToggle-CEOkPSLp.cjs.map} +1 -1
  79. package/dist/{FullscreenToggle-oWzYqUPH.js → FullscreenToggle-CRMGYmB8.js} +3 -3
  80. package/dist/{FullscreenToggle-oWzYqUPH.js.map → FullscreenToggle-CRMGYmB8.js.map} +1 -1
  81. package/dist/Grid-5k6dy-F5.js +26 -0
  82. package/dist/Grid-5k6dy-F5.js.map +1 -0
  83. package/dist/Grid-frN0D9lR.cjs +2 -0
  84. package/dist/Grid-frN0D9lR.cjs.map +1 -0
  85. package/dist/{IconButton-CBusrDa9.js → IconButton-BZ2jJn_T.js} +2 -2
  86. package/dist/{IconButton-CBusrDa9.js.map → IconButton-BZ2jJn_T.js.map} +1 -1
  87. package/dist/{IconButton-D6TenQZ_.cjs → IconButton-ChUfK0pG.cjs} +2 -2
  88. package/dist/{IconButton-D6TenQZ_.cjs.map → IconButton-ChUfK0pG.cjs.map} +1 -1
  89. package/dist/{List-CNz2M3-q.cjs → List-ChXO0Hz-.cjs} +2 -2
  90. package/dist/{List-CNz2M3-q.cjs.map → List-ChXO0Hz-.cjs.map} +1 -1
  91. package/dist/{List-BHgFI9Ll.js → List-LqbfF6gU.js} +2 -2
  92. package/dist/{List-BHgFI9Ll.js.map → List-LqbfF6gU.js.map} +1 -1
  93. package/dist/{ListItem-B4yqZR-Z.js → ListItem-B4Upc0Hy.js} +2 -2
  94. package/dist/{ListItem-B4yqZR-Z.js.map → ListItem-B4Upc0Hy.js.map} +1 -1
  95. package/dist/{ListItem-RH-D-Wey.cjs → ListItem-DWQorRxG.cjs} +2 -2
  96. package/dist/{ListItem-RH-D-Wey.cjs.map → ListItem-DWQorRxG.cjs.map} +1 -1
  97. package/dist/{Loader-C4JoXOyA.js → Loader-DFlpw5Zc.js} +2 -2
  98. package/dist/{Loader-C4JoXOyA.js.map → Loader-DFlpw5Zc.js.map} +1 -1
  99. package/dist/{Loader-D1MtlQOH.cjs → Loader-plA9fgHf.cjs} +2 -2
  100. package/dist/{Loader-D1MtlQOH.cjs.map → Loader-plA9fgHf.cjs.map} +1 -1
  101. package/dist/Masonry-BObKcPmo.js +82 -0
  102. package/dist/Masonry-BObKcPmo.js.map +1 -0
  103. package/dist/Masonry-BVphuk2X.cjs +2 -0
  104. package/dist/Masonry-BVphuk2X.cjs.map +1 -0
  105. package/dist/{Modal-B2YSCVVt.cjs → Modal-BaieUdge.cjs} +2 -2
  106. package/dist/{Modal-B2YSCVVt.cjs.map → Modal-BaieUdge.cjs.map} +1 -1
  107. package/dist/{Modal-BuaPDlKV.js → Modal-CRH_i5uU.js} +3 -3
  108. package/dist/{Modal-BuaPDlKV.js.map → Modal-CRH_i5uU.js.map} +1 -1
  109. package/dist/{MultiSelect-BGRT_B60.js → MultiSelect-BmkzNHTE.js} +6 -6
  110. package/dist/{MultiSelect-BGRT_B60.js.map → MultiSelect-BmkzNHTE.js.map} +1 -1
  111. package/dist/{MultiSelect-CSJKSWpA.cjs → MultiSelect-Cb-N8GIs.cjs} +2 -2
  112. package/dist/{MultiSelect-CSJKSWpA.cjs.map → MultiSelect-Cb-N8GIs.cjs.map} +1 -1
  113. package/dist/{NumberField-DBvhSQCw.js → NumberField-D71JI2Wv.js} +3 -3
  114. package/dist/{NumberField-DBvhSQCw.js.map → NumberField-D71JI2Wv.js.map} +1 -1
  115. package/dist/{NumberField-DBpO-Z_7.cjs → NumberField-DBwNn3-f.cjs} +2 -2
  116. package/dist/{NumberField-DBpO-Z_7.cjs.map → NumberField-DBwNn3-f.cjs.map} +1 -1
  117. package/dist/{OtpField-BUBYyorC.cjs → OtpField-C-SiHxKa.cjs} +2 -2
  118. package/dist/{OtpField-BUBYyorC.cjs.map → OtpField-C-SiHxKa.cjs.map} +1 -1
  119. package/dist/{OtpField-CTq-CUbF.js → OtpField-DOz-JmuX.js} +2 -2
  120. package/dist/{OtpField-CTq-CUbF.js.map → OtpField-DOz-JmuX.js.map} +1 -1
  121. package/dist/{PageLayout-DddzYw2B.js → PageLayout-BIdgUKsN.js} +2 -2
  122. package/dist/{PageLayout-DddzYw2B.js.map → PageLayout-BIdgUKsN.js.map} +1 -1
  123. package/dist/{PageLayout-Dfbjw6jD.cjs → PageLayout-qF5ThZKO.cjs} +2 -2
  124. package/dist/{PageLayout-Dfbjw6jD.cjs.map → PageLayout-qF5ThZKO.cjs.map} +1 -1
  125. package/dist/PageNotFound-CsgH9tY0.js +39 -0
  126. package/dist/PageNotFound-CsgH9tY0.js.map +1 -0
  127. package/dist/PageNotFound-DObWgQ0Z.cjs +2 -0
  128. package/dist/PageNotFound-DObWgQ0Z.cjs.map +1 -0
  129. package/dist/{Pagination-CN9V8M5C.js → Pagination-Kj7ZDi3N.js} +2 -2
  130. package/dist/{Pagination-CN9V8M5C.js.map → Pagination-Kj7ZDi3N.js.map} +1 -1
  131. package/dist/{Pagination-DRwTLPh8.cjs → Pagination-S3hENjDy.cjs} +2 -2
  132. package/dist/{Pagination-DRwTLPh8.cjs.map → Pagination-S3hENjDy.cjs.map} +1 -1
  133. package/dist/{RemoveDialog-ClyZKyUG.cjs → RemoveDialog-BZ0gUf1p.cjs} +2 -2
  134. package/dist/{RemoveDialog-ClyZKyUG.cjs.map → RemoveDialog-BZ0gUf1p.cjs.map} +1 -1
  135. package/dist/{RemoveDialog-Bvt6sH79.js → RemoveDialog-D9a0GttZ.js} +4 -4
  136. package/dist/{RemoveDialog-Bvt6sH79.js.map → RemoveDialog-D9a0GttZ.js.map} +1 -1
  137. package/dist/{RichTextEditor-CAYt1Zm1.cjs → RichTextEditor-BX6twJ9D.cjs} +2 -2
  138. package/dist/{RichTextEditor-CAYt1Zm1.cjs.map → RichTextEditor-BX6twJ9D.cjs.map} +1 -1
  139. package/dist/{RichTextEditor-BTx8Py3I.js → RichTextEditor-D05Czeif.js} +9 -9
  140. package/dist/{RichTextEditor-BTx8Py3I.js.map → RichTextEditor-D05Czeif.js.map} +1 -1
  141. package/dist/RootLayout-BR_pPr3d.cjs +2 -0
  142. package/dist/RootLayout-BR_pPr3d.cjs.map +1 -0
  143. package/dist/{RootLayout-DCpfuFWF.js → RootLayout-CgI03ZNA.js} +16 -16
  144. package/dist/RootLayout-CgI03ZNA.js.map +1 -0
  145. package/dist/{Select-PbTyxB1Q.js → Select-BZPA2Ytp.js} +5 -5
  146. package/dist/{Select-PbTyxB1Q.js.map → Select-BZPA2Ytp.js.map} +1 -1
  147. package/dist/{Select-_6WogC0u.cjs → Select-Dpl8dq_9.cjs} +2 -2
  148. package/dist/{Select-_6WogC0u.cjs.map → Select-Dpl8dq_9.cjs.map} +1 -1
  149. package/dist/{Sidebar-AaIlRzgk.cjs → Sidebar-6SAObU0u.cjs} +2 -2
  150. package/dist/{Sidebar-AaIlRzgk.cjs.map → Sidebar-6SAObU0u.cjs.map} +1 -1
  151. package/dist/{Sidebar-DRCs2ygZ.js → Sidebar-DEBW6lDA.js} +7 -5
  152. package/dist/{Sidebar-DRCs2ygZ.js.map → Sidebar-DEBW6lDA.js.map} +1 -1
  153. package/dist/{SpeedDial-DgFj16BQ.js → SpeedDial-C3PnANAx.js} +2 -2
  154. package/dist/{SpeedDial-DgFj16BQ.js.map → SpeedDial-C3PnANAx.js.map} +1 -1
  155. package/dist/{SpeedDial-C4jxIXTr.cjs → SpeedDial-Dex0rF2z.cjs} +2 -2
  156. package/dist/{SpeedDial-C4jxIXTr.cjs.map → SpeedDial-Dex0rF2z.cjs.map} +1 -1
  157. package/dist/{Stepper-COKAyN1L.js → Stepper-0e90ZJaw.js} +2 -2
  158. package/dist/{Stepper-COKAyN1L.js.map → Stepper-0e90ZJaw.js.map} +1 -1
  159. package/dist/{Stepper-7pPEBRLI.cjs → Stepper-yKwUaxOU.cjs} +2 -2
  160. package/dist/{Stepper-7pPEBRLI.cjs.map → Stepper-yKwUaxOU.cjs.map} +1 -1
  161. package/dist/{Table-BeOumGng.cjs → Table-BekBXEnW.cjs} +2 -2
  162. package/dist/{Table-BeOumGng.cjs.map → Table-BekBXEnW.cjs.map} +1 -1
  163. package/dist/{Table-BjPLvMbf.js → Table-KEOUL2u3.js} +174 -174
  164. package/dist/{Table-BjPLvMbf.js.map → Table-KEOUL2u3.js.map} +1 -1
  165. package/dist/{Tabs--DDM-zKe.js → Tabs-BHk2B50R.js} +2 -2
  166. package/dist/{Tabs--DDM-zKe.js.map → Tabs-BHk2B50R.js.map} +1 -1
  167. package/dist/{Tabs-BZcMnjdC.cjs → Tabs-DYUS945Y.cjs} +2 -2
  168. package/dist/{Tabs-BZcMnjdC.cjs.map → Tabs-DYUS945Y.cjs.map} +1 -1
  169. package/dist/{TagsField-BTJcZS9P.js → TagsField-BkC5OmIT.js} +4 -4
  170. package/dist/{TagsField-BTJcZS9P.js.map → TagsField-BkC5OmIT.js.map} +1 -1
  171. package/dist/{TagsField-kknWiJZZ.cjs → TagsField-DKh9SbG5.cjs} +2 -2
  172. package/dist/{TagsField-kknWiJZZ.cjs.map → TagsField-DKh9SbG5.cjs.map} +1 -1
  173. package/dist/{TextField-DMI1X09n.js → TextField-12HcFD7u.js} +3 -3
  174. package/dist/{TextField-DMI1X09n.js.map → TextField-12HcFD7u.js.map} +1 -1
  175. package/dist/{TextField-BPefnD5M.cjs → TextField-C9cPPP-B.cjs} +2 -2
  176. package/dist/{TextField-BPefnD5M.cjs.map → TextField-C9cPPP-B.cjs.map} +1 -1
  177. package/dist/{ThemeToggle-DTal3RX5.cjs → ThemeToggle-DIXVvqZ7.cjs} +2 -2
  178. package/dist/{ThemeToggle-DTal3RX5.cjs.map → ThemeToggle-DIXVvqZ7.cjs.map} +1 -1
  179. package/dist/{ThemeToggle-Deh9j8pm.js → ThemeToggle-DUtDXl1Z.js} +3 -3
  180. package/dist/{ThemeToggle-Deh9j8pm.js.map → ThemeToggle-DUtDXl1Z.js.map} +1 -1
  181. package/dist/{TimeColumns-BCNmu4b_.js → TimeColumns-BLhP81oI.js} +2 -2
  182. package/dist/{TimeColumns-BCNmu4b_.js.map → TimeColumns-BLhP81oI.js.map} +1 -1
  183. package/dist/{TimeColumns-Duh4DcYJ.cjs → TimeColumns-CgjyPGjs.cjs} +2 -2
  184. package/dist/{TimeColumns-Duh4DcYJ.cjs.map → TimeColumns-CgjyPGjs.cjs.map} +1 -1
  185. package/dist/{TimePicker-3JgvK2on.js → TimePicker-CJWjGVqT.js} +5 -5
  186. package/dist/{TimePicker-3JgvK2on.js.map → TimePicker-CJWjGVqT.js.map} +1 -1
  187. package/dist/{TimePicker-CfGrCH9T.cjs → TimePicker-CNAXFtJa.cjs} +2 -2
  188. package/dist/{TimePicker-CfGrCH9T.cjs.map → TimePicker-CNAXFtJa.cjs.map} +1 -1
  189. package/dist/{Toaster-D-eG1xv7.js → Toaster-B3Mut6eM.js} +2 -2
  190. package/dist/{Toaster-D-eG1xv7.js.map → Toaster-B3Mut6eM.js.map} +1 -1
  191. package/dist/{Toaster-Bk5GtPjX.cjs → Toaster-CYt_Hvlh.cjs} +2 -2
  192. package/dist/{Toaster-Bk5GtPjX.cjs.map → Toaster-CYt_Hvlh.cjs.map} +1 -1
  193. package/dist/{TranslatedFields-CI0F9bHw.js → TranslatedFields-BEaS1esD.js} +3 -3
  194. package/dist/{TranslatedFields-CI0F9bHw.js.map → TranslatedFields-BEaS1esD.js.map} +1 -1
  195. package/dist/{TranslatedFields-DT3bYse6.cjs → TranslatedFields-DshwXj6d.cjs} +2 -2
  196. package/dist/{TranslatedFields-DT3bYse6.cjs.map → TranslatedFields-DshwXj6d.cjs.map} +1 -1
  197. package/dist/{UserCard-BhqtX1vU.js → UserCard-Dve-LOSB.js} +3 -3
  198. package/dist/{UserCard-BhqtX1vU.js.map → UserCard-Dve-LOSB.js.map} +1 -1
  199. package/dist/{UserCard-OlLeyyS0.cjs → UserCard-sIguy8Jp.cjs} +2 -2
  200. package/dist/{UserCard-OlLeyyS0.cjs.map → UserCard-sIguy8Jp.cjs.map} +1 -1
  201. package/dist/breakpoints-BbDakdqF.js +50 -0
  202. package/dist/breakpoints-BbDakdqF.js.map +1 -0
  203. package/dist/breakpoints-Dpnh6BbG.cjs +2 -0
  204. package/dist/breakpoints-Dpnh6BbG.cjs.map +1 -0
  205. package/dist/components/Alert/index.cjs +1 -1
  206. package/dist/components/Alert/index.js +1 -1
  207. package/dist/components/Breadcrumbs/index.cjs +1 -1
  208. package/dist/components/Breadcrumbs/index.js +1 -1
  209. package/dist/components/Button/index.cjs +1 -1
  210. package/dist/components/Button/index.js +1 -1
  211. package/dist/components/Card/index.cjs +1 -1
  212. package/dist/components/Card/index.js +1 -1
  213. package/dist/components/Chip/index.cjs +1 -1
  214. package/dist/components/Chip/index.js +1 -1
  215. package/dist/components/CodeBlock/index.cjs +1 -1
  216. package/dist/components/CodeBlock/index.js +1 -1
  217. package/dist/components/ColorPicker/index.cjs +1 -1
  218. package/dist/components/ColorPicker/index.js +1 -1
  219. package/dist/components/DashedButton/DashedButton.d.cts +33 -0
  220. package/dist/components/DashedButton/DashedButton.d.ts +33 -0
  221. package/dist/components/DashedButton/index.cjs +2 -0
  222. package/dist/components/DashedButton/index.cjs.map +1 -0
  223. package/dist/components/DashedButton/index.d.cts +2 -0
  224. package/dist/components/DashedButton/index.d.ts +2 -0
  225. package/dist/components/DashedButton/index.js +6 -0
  226. package/dist/components/DashedButton/index.js.map +1 -0
  227. package/dist/components/DatePicker/index.cjs +1 -1
  228. package/dist/components/DatePicker/index.js +1 -1
  229. package/dist/components/DateTimePicker/index.cjs +1 -1
  230. package/dist/components/DateTimePicker/index.js +1 -1
  231. package/dist/components/Dropdown/index.cjs +1 -1
  232. package/dist/components/Dropdown/index.js +1 -1
  233. package/dist/components/EmptyState/index.cjs +1 -1
  234. package/dist/components/EmptyState/index.js +1 -1
  235. package/dist/components/FileUploader/index.cjs +1 -1
  236. package/dist/components/FileUploader/index.js +1 -1
  237. package/dist/components/Flag/index.cjs +1 -1
  238. package/dist/components/Flag/index.js +1 -1
  239. package/dist/components/Flex/Flex.d.cts +16 -13
  240. package/dist/components/Flex/Flex.d.ts +16 -13
  241. package/dist/components/Flex/Grid.d.cts +11 -9
  242. package/dist/components/Flex/Grid.d.ts +11 -9
  243. package/dist/components/Flex/index.cjs +1 -1
  244. package/dist/components/Flex/index.js +3 -3
  245. package/dist/components/FullscreenToggle/index.cjs +1 -1
  246. package/dist/components/FullscreenToggle/index.js +1 -1
  247. package/dist/components/IconButton/index.cjs +1 -1
  248. package/dist/components/IconButton/index.js +1 -1
  249. package/dist/components/List/index.cjs +1 -1
  250. package/dist/components/List/index.js +2 -2
  251. package/dist/components/Loader/index.cjs +1 -1
  252. package/dist/components/Loader/index.js +1 -1
  253. package/dist/components/Masonry/Masonry.d.cts +11 -11
  254. package/dist/components/Masonry/Masonry.d.ts +11 -11
  255. package/dist/components/Masonry/index.cjs +1 -1
  256. package/dist/components/Masonry/index.js +1 -1
  257. package/dist/components/Modal/index.cjs +1 -1
  258. package/dist/components/Modal/index.js +1 -1
  259. package/dist/components/MultiSelect/index.cjs +1 -1
  260. package/dist/components/MultiSelect/index.js +1 -1
  261. package/dist/components/NumberField/index.cjs +1 -1
  262. package/dist/components/NumberField/index.js +1 -1
  263. package/dist/components/OtpField/index.cjs +1 -1
  264. package/dist/components/OtpField/index.js +1 -1
  265. package/dist/components/PageLayout/index.cjs +1 -1
  266. package/dist/components/PageLayout/index.js +1 -1
  267. package/dist/components/PageNotFound/PageNotFound.d.cts +34 -0
  268. package/dist/components/PageNotFound/PageNotFound.d.ts +34 -0
  269. package/dist/components/PageNotFound/index.cjs +2 -0
  270. package/dist/components/PageNotFound/index.cjs.map +1 -0
  271. package/dist/components/PageNotFound/index.d.cts +2 -0
  272. package/dist/components/PageNotFound/index.d.ts +2 -0
  273. package/dist/components/PageNotFound/index.js +6 -0
  274. package/dist/components/PageNotFound/index.js.map +1 -0
  275. package/dist/components/Pagination/index.cjs +1 -1
  276. package/dist/components/Pagination/index.js +1 -1
  277. package/dist/components/RemoveDialog/index.cjs +1 -1
  278. package/dist/components/RemoveDialog/index.js +1 -1
  279. package/dist/components/RichTextEditor/index.cjs +1 -1
  280. package/dist/components/RichTextEditor/index.js +1 -1
  281. package/dist/components/RootLayout/index.cjs +1 -1
  282. package/dist/components/RootLayout/index.js +1 -1
  283. package/dist/components/Select/index.cjs +1 -1
  284. package/dist/components/Select/index.js +1 -1
  285. package/dist/components/Sidebar/index.cjs +1 -1
  286. package/dist/components/Sidebar/index.js +1 -1
  287. package/dist/components/SpeedDial/index.cjs +1 -1
  288. package/dist/components/SpeedDial/index.js +1 -1
  289. package/dist/components/Stepper/index.cjs +1 -1
  290. package/dist/components/Stepper/index.js +1 -1
  291. package/dist/components/Table/index.cjs +1 -1
  292. package/dist/components/Table/index.js +1 -1
  293. package/dist/components/Tabs/index.cjs +1 -1
  294. package/dist/components/Tabs/index.js +1 -1
  295. package/dist/components/TagsField/index.cjs +1 -1
  296. package/dist/components/TagsField/index.js +1 -1
  297. package/dist/components/TextField/index.cjs +1 -1
  298. package/dist/components/TextField/index.js +1 -1
  299. package/dist/components/ThemeToggle/index.cjs +1 -1
  300. package/dist/components/ThemeToggle/index.js +1 -1
  301. package/dist/components/TimePicker/index.cjs +1 -1
  302. package/dist/components/TimePicker/index.js +1 -1
  303. package/dist/components/Toast/index.cjs +1 -1
  304. package/dist/components/Toast/index.js +1 -1
  305. package/dist/components/TranslatedFields/index.cjs +1 -1
  306. package/dist/components/TranslatedFields/index.js +1 -1
  307. package/dist/components/UserCard/index.cjs +1 -1
  308. package/dist/components/UserCard/index.js +1 -1
  309. package/dist/components/index.d.cts +2 -0
  310. package/dist/components/index.d.ts +2 -0
  311. package/dist/entries/components.cjs +1 -1
  312. package/dist/entries/components.js +130 -126
  313. package/dist/entries/components.js.map +1 -1
  314. package/dist/entries/hooks.cjs +1 -1
  315. package/dist/entries/hooks.d.cts +1 -1
  316. package/dist/entries/hooks.d.ts +1 -1
  317. package/dist/entries/hooks.js +4 -3
  318. package/dist/entries/i18n.cjs +1 -1
  319. package/dist/entries/i18n.js +2 -2
  320. package/dist/entries/theme.cjs +1 -1
  321. package/dist/entries/theme.d.cts +2 -2
  322. package/dist/entries/theme.d.ts +2 -2
  323. package/dist/entries/theme.js +16 -14
  324. package/dist/hooks/index.d.cts +1 -1
  325. package/dist/hooks/index.d.ts +1 -1
  326. package/dist/hooks/useMediaQuery.d.cts +21 -8
  327. package/dist/hooks/useMediaQuery.d.ts +21 -8
  328. package/dist/i18n/messages.d.cts +3 -0
  329. package/dist/i18n/messages.d.ts +3 -0
  330. package/dist/index.cjs +1 -1
  331. package/dist/index.css +1 -1
  332. package/dist/index.js +183 -176
  333. package/dist/index.js.map +1 -1
  334. package/dist/messages-BJiUtJ2E.cjs +36 -0
  335. package/dist/messages-BJiUtJ2E.cjs.map +1 -0
  336. package/dist/{messages-C-zecFBE.js → messages-CVISEA5N.js} +37 -16
  337. package/dist/messages-CVISEA5N.js.map +1 -0
  338. package/dist/theme/ConfigProvider.d.cts +9 -0
  339. package/dist/theme/ConfigProvider.d.ts +9 -0
  340. package/dist/theme/breakpoints.d.cts +48 -13
  341. package/dist/theme/breakpoints.d.ts +48 -13
  342. package/dist/theme/index.d.cts +2 -2
  343. package/dist/theme/index.d.ts +2 -2
  344. package/dist/useMediaQuery-CHMrI6Dy.cjs +2 -0
  345. package/dist/useMediaQuery-CHMrI6Dy.cjs.map +1 -0
  346. package/dist/useMediaQuery-DrDUrkmJ.js +32 -0
  347. package/dist/useMediaQuery-DrDUrkmJ.js.map +1 -0
  348. package/package.json +1 -1
  349. package/dist/ConfigProvider-2c94kUOk.js +0 -291
  350. package/dist/ConfigProvider-2c94kUOk.js.map +0 -1
  351. package/dist/ConfigProvider-ByOFXVyP.cjs +0 -2
  352. package/dist/ConfigProvider-ByOFXVyP.cjs.map +0 -1
  353. package/dist/Flex-Bj3mMF5A.js +0 -50
  354. package/dist/Flex-Bj3mMF5A.js.map +0 -1
  355. package/dist/Flex-CqL3Ghda.cjs +0 -2
  356. package/dist/Flex-CqL3Ghda.cjs.map +0 -1
  357. package/dist/Grid-Bw95bKkJ.cjs +0 -2
  358. package/dist/Grid-Bw95bKkJ.cjs.map +0 -1
  359. package/dist/Grid-CY-syhTX.js +0 -24
  360. package/dist/Grid-CY-syhTX.js.map +0 -1
  361. package/dist/Masonry-BTvtDdnt.js +0 -104
  362. package/dist/Masonry-BTvtDdnt.js.map +0 -1
  363. package/dist/Masonry-Bl1Mlzqw.cjs +0 -2
  364. package/dist/Masonry-Bl1Mlzqw.cjs.map +0 -1
  365. package/dist/RootLayout-Cp-9CVjP.cjs +0 -2
  366. package/dist/RootLayout-Cp-9CVjP.cjs.map +0 -1
  367. package/dist/RootLayout-DCpfuFWF.js.map +0 -1
  368. package/dist/breakpoints-BNPC2_Te.cjs +0 -2
  369. package/dist/breakpoints-BNPC2_Te.cjs.map +0 -1
  370. package/dist/breakpoints-o3dzSzrU.js +0 -12
  371. package/dist/breakpoints-o3dzSzrU.js.map +0 -1
  372. package/dist/messages-C-zecFBE.js.map +0 -1
  373. package/dist/messages-Cy-qK5xU.cjs +0 -36
  374. package/dist/messages-Cy-qK5xU.cjs.map +0 -1
  375. package/dist/useMediaQuery-BCsNfMA1.cjs +0 -2
  376. package/dist/useMediaQuery-BCsNfMA1.cjs.map +0 -1
  377. package/dist/useMediaQuery-_1EcFoC5.js +0 -17
  378. package/dist/useMediaQuery-_1EcFoC5.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"FullscreenToggle-oWzYqUPH.js","sources":["../src/components/FullscreenToggle/FullscreenToggle.tsx"],"sourcesContent":["import { forwardRef, useEffect, useState } from 'react'\nimport { useT } from '../../theme'\nimport { Icon } from '../Icon'\nimport { IconButton, type IconButtonProps } from '../IconButton'\n\n/** Inherits `IconButton`'s look (variant, color, size); the icon and toggle behavior are built in. */\nexport type FullscreenToggleProps = Omit<IconButtonProps, 'children'>\n\n/**\n * A one-tap browser fullscreen switch. Renders an `IconButton` that calls the Fullscreen API —\n * `requestFullscreen` to maximize, `exitFullscreen` to restore — and flips its `Maximize3` icon 180°\n * while fullscreen (so it reads as \"minimize\"), keeping state in sync via the `fullscreenchange`\n * event. Renders **nothing** where the Fullscreen API is unavailable (e.g. iOS Safari on iPhone), so\n * it auto-hides on devices that can't go fullscreen. Styling comes from `IconButton`, so `variant`,\n * `color` and `size` pass through.\n */\nexport const FullscreenToggle = forwardRef<HTMLButtonElement, FullscreenToggleProps>(\n function FullscreenToggle({ variant = 'outlined', ...props }, ref) {\n // The Fullscreen API is absent on some devices (notably iOS Safari on iPhone); hide the control\n // there, since tapping it could never do anything.\n const [supported] = useState(\n () =>\n typeof document !== 'undefined' &&\n typeof document.documentElement.requestFullscreen === 'function',\n )\n const [isFullscreen, setIsFullscreen] = useState(false)\n const t = useT()\n\n useEffect(() => {\n const sync = () => setIsFullscreen(document.fullscreenElement != null)\n sync() // pick up a session that's already fullscreen on mount\n document.addEventListener('fullscreenchange', sync)\n return () => document.removeEventListener('fullscreenchange', sync)\n }, [])\n\n if (!supported) return null\n\n const toggle = () => {\n // `?.` guards environments without the Fullscreen API; `.catch` swallows a blocked request\n if (document.fullscreenElement) {\n document.exitFullscreen?.()?.catch(() => {})\n } else {\n document.documentElement.requestFullscreen?.()?.catch(() => {})\n }\n }\n\n return (\n <IconButton\n ref={ref}\n variant={variant}\n role=\"switch\"\n aria-checked={isFullscreen}\n aria-label={t('fullscreenToggle.label')}\n {...props}\n onClick={(event) => {\n props.onClick?.(event) // preserve a caller-supplied handler, then toggle\n toggle()\n }}\n >\n <Icon name=\"Maximize3\" style={isFullscreen ? { transform: 'rotate(180deg)' } : undefined} />\n </IconButton>\n )\n },\n)\n"],"names":["FullscreenToggle","forwardRef","variant","props","ref","supported","useState","isFullscreen","setIsFullscreen","t","useT","useEffect","sync","toggle","_b","_a","_e","_d","_c","jsx","IconButton","event","Icon"],"mappings":";;;;;AAgBO,MAAMA,IAAmBC;AAAA,EAC9B,SAA0B,EAAE,SAAAC,IAAU,YAAY,GAAGC,EAAA,GAASC,GAAK;AAGjE,UAAM,CAACC,CAAS,IAAIC;AAAA,MAClB,MACE,OAAO,WAAa,OACpB,OAAO,SAAS,gBAAgB,qBAAsB;AAAA,IAAA,GAEpD,CAACC,GAAcC,CAAe,IAAIF,EAAS,EAAK,GAChDG,IAAIC,EAAA;AASV,QAPAC,EAAU,MAAM;AACd,YAAMC,IAAO,MAAMJ,EAAgB,SAAS,qBAAqB,IAAI;AACrE,aAAAI,EAAA,GACA,SAAS,iBAAiB,oBAAoBA,CAAI,GAC3C,MAAM,SAAS,oBAAoB,oBAAoBA,CAAI;AAAA,IACpE,GAAG,CAAA,CAAE,GAED,CAACP,EAAW,QAAO;AAEvB,UAAMQ,IAAS,MAAM;;AAEnB,MAAI,SAAS,qBACXC,KAAAC,IAAA,SAAS,mBAAT,gBAAAA,EAAA,2BAAAD,EAA6B,MAAM,MAAM;AAAA,MAAC,MAE1CE,KAAAC,KAAAC,IAAA,SAAS,iBAAgB,sBAAzB,gBAAAD,EAAA,KAAAC,OAAA,QAAAF,EAAgD,MAAM,MAAM;AAAA,MAAC;AAAA,IAEjE;AAEA,WACE,gBAAAG;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,KAAAhB;AAAA,QACA,SAAAF;AAAA,QACA,MAAK;AAAA,QACL,gBAAcK;AAAA,QACd,cAAYE,EAAE,wBAAwB;AAAA,QACrC,GAAGN;AAAA,QACJ,SAAS,CAACkB,MAAU;;AAClB,WAAAN,IAAAZ,EAAM,YAAN,QAAAY,EAAA,KAAAZ,GAAgBkB,IAChBR,EAAA;AAAA,QACF;AAAA,QAEA,UAAA,gBAAAM,EAACG,GAAA,EAAK,MAAK,aAAY,OAAOf,IAAe,EAAE,WAAW,iBAAA,IAAqB,OAAA,CAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EAGhG;AACF;"}
1
+ {"version":3,"file":"FullscreenToggle-CRMGYmB8.js","sources":["../src/components/FullscreenToggle/FullscreenToggle.tsx"],"sourcesContent":["import { forwardRef, useEffect, useState } from 'react'\nimport { useT } from '../../theme'\nimport { Icon } from '../Icon'\nimport { IconButton, type IconButtonProps } from '../IconButton'\n\n/** Inherits `IconButton`'s look (variant, color, size); the icon and toggle behavior are built in. */\nexport type FullscreenToggleProps = Omit<IconButtonProps, 'children'>\n\n/**\n * A one-tap browser fullscreen switch. Renders an `IconButton` that calls the Fullscreen API —\n * `requestFullscreen` to maximize, `exitFullscreen` to restore — and flips its `Maximize3` icon 180°\n * while fullscreen (so it reads as \"minimize\"), keeping state in sync via the `fullscreenchange`\n * event. Renders **nothing** where the Fullscreen API is unavailable (e.g. iOS Safari on iPhone), so\n * it auto-hides on devices that can't go fullscreen. Styling comes from `IconButton`, so `variant`,\n * `color` and `size` pass through.\n */\nexport const FullscreenToggle = forwardRef<HTMLButtonElement, FullscreenToggleProps>(\n function FullscreenToggle({ variant = 'outlined', ...props }, ref) {\n // The Fullscreen API is absent on some devices (notably iOS Safari on iPhone); hide the control\n // there, since tapping it could never do anything.\n const [supported] = useState(\n () =>\n typeof document !== 'undefined' &&\n typeof document.documentElement.requestFullscreen === 'function',\n )\n const [isFullscreen, setIsFullscreen] = useState(false)\n const t = useT()\n\n useEffect(() => {\n const sync = () => setIsFullscreen(document.fullscreenElement != null)\n sync() // pick up a session that's already fullscreen on mount\n document.addEventListener('fullscreenchange', sync)\n return () => document.removeEventListener('fullscreenchange', sync)\n }, [])\n\n if (!supported) return null\n\n const toggle = () => {\n // `?.` guards environments without the Fullscreen API; `.catch` swallows a blocked request\n if (document.fullscreenElement) {\n document.exitFullscreen?.()?.catch(() => {})\n } else {\n document.documentElement.requestFullscreen?.()?.catch(() => {})\n }\n }\n\n return (\n <IconButton\n ref={ref}\n variant={variant}\n role=\"switch\"\n aria-checked={isFullscreen}\n aria-label={t('fullscreenToggle.label')}\n {...props}\n onClick={(event) => {\n props.onClick?.(event) // preserve a caller-supplied handler, then toggle\n toggle()\n }}\n >\n <Icon name=\"Maximize3\" style={isFullscreen ? { transform: 'rotate(180deg)' } : undefined} />\n </IconButton>\n )\n },\n)\n"],"names":["FullscreenToggle","forwardRef","variant","props","ref","supported","useState","isFullscreen","setIsFullscreen","t","useT","useEffect","sync","toggle","_b","_a","_e","_d","_c","jsx","IconButton","event","Icon"],"mappings":";;;;;AAgBO,MAAMA,IAAmBC;AAAA,EAC9B,SAA0B,EAAE,SAAAC,IAAU,YAAY,GAAGC,EAAA,GAASC,GAAK;AAGjE,UAAM,CAACC,CAAS,IAAIC;AAAA,MAClB,MACE,OAAO,WAAa,OACpB,OAAO,SAAS,gBAAgB,qBAAsB;AAAA,IAAA,GAEpD,CAACC,GAAcC,CAAe,IAAIF,EAAS,EAAK,GAChDG,IAAIC,EAAA;AASV,QAPAC,EAAU,MAAM;AACd,YAAMC,IAAO,MAAMJ,EAAgB,SAAS,qBAAqB,IAAI;AACrE,aAAAI,EAAA,GACA,SAAS,iBAAiB,oBAAoBA,CAAI,GAC3C,MAAM,SAAS,oBAAoB,oBAAoBA,CAAI;AAAA,IACpE,GAAG,CAAA,CAAE,GAED,CAACP,EAAW,QAAO;AAEvB,UAAMQ,IAAS,MAAM;;AAEnB,MAAI,SAAS,qBACXC,KAAAC,IAAA,SAAS,mBAAT,gBAAAA,EAAA,2BAAAD,EAA6B,MAAM,MAAM;AAAA,MAAC,MAE1CE,KAAAC,KAAAC,IAAA,SAAS,iBAAgB,sBAAzB,gBAAAD,EAAA,KAAAC,OAAA,QAAAF,EAAgD,MAAM,MAAM;AAAA,MAAC;AAAA,IAEjE;AAEA,WACE,gBAAAG;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,KAAAhB;AAAA,QACA,SAAAF;AAAA,QACA,MAAK;AAAA,QACL,gBAAcK;AAAA,QACd,cAAYE,EAAE,wBAAwB;AAAA,QACrC,GAAGN;AAAA,QACJ,SAAS,CAACkB,MAAU;;AAClB,WAAAN,IAAAZ,EAAM,YAAN,QAAAY,EAAA,KAAAZ,GAAgBkB,IAChBR,EAAA;AAAA,QACF;AAAA,QAEA,UAAA,gBAAAM,EAACG,GAAA,EAAK,MAAK,aAAY,OAAOf,IAAe,EAAE,WAAW,iBAAA,IAAqB,OAAA,CAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EAGhG;AACF;"}
@@ -0,0 +1,26 @@
1
+ import { jsx as v } from "react/jsx-runtime";
2
+ import { forwardRef as x } from "react";
3
+ import { s } from "./Flex-BFn4P1tJ.js";
4
+ import { r } from "./breakpoints-BbDakdqF.js";
5
+ import { u as y } from "./useMediaQuery-DrDUrkmJ.js";
6
+ const b = {
7
+ start: "start",
8
+ center: "center",
9
+ end: "end",
10
+ stretch: "stretch",
11
+ baseline: "baseline"
12
+ }, k = x(function({ cols: n, minItemWidth: o, fill: i = !1, gap: l, align: m, padding: p, inline: c = !1, style: f, ...d }, u) {
13
+ const e = y(), t = r(n, e), a = r(m, e), g = o != null ? `repeat(${i ? "auto-fill" : "auto-fit"}, minmax(${s(o)}, 1fr))` : typeof t == "number" ? `repeat(${t}, minmax(0, 1fr))` : t, G = {
14
+ display: c ? "inline-grid" : "grid",
15
+ gridTemplateColumns: g,
16
+ gap: s(r(l, e)),
17
+ alignItems: a && b[a],
18
+ padding: s(r(p, e)),
19
+ ...f
20
+ };
21
+ return /* @__PURE__ */ v("div", { ref: u, style: G, ...d });
22
+ });
23
+ export {
24
+ k as G
25
+ };
26
+ //# sourceMappingURL=Grid-5k6dy-F5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid-5k6dy-F5.js","sources":["../src/components/Flex/Grid.tsx"],"sourcesContent":["import { forwardRef, type CSSProperties, type HTMLAttributes } from 'react'\nimport { space, type FlexAlign, type Spacing } from './Flex'\nimport { resolveResponsive, type Responsive } from '../../theme/breakpoints'\nimport { useBreakpointMatches } from '../../hooks/useMediaQuery'\n\nconst GRID_ALIGN: Record<FlexAlign, string> = {\n start: 'start',\n center: 'center',\n end: 'end',\n stretch: 'stretch',\n baseline: 'baseline',\n}\n\nexport interface GridProps extends HTMLAttributes<HTMLDivElement> {\n /** Fixed column count (`repeat(n, minmax(0,1fr))`) or a raw `grid-template-columns` string. Responsive: a breakpoint map, e.g. `{ xs: 1, md: 3 }`. */\n cols?: Responsive<number | string>\n /** Responsive columns: every cell at least this wide, auto-fitting to the width (overrides `cols`). */\n minItemWidth?: Spacing\n /**\n * With `minItemWidth`, use `auto-fill` instead of `auto-fit` — keeps empty tracks at the min width\n * so a few items stay their natural size rather than stretching to fill the row. Defaults to `false`.\n */\n fill?: boolean\n /** Gap between cells (token key, px number, or CSS value). Responsive: a breakpoint map. */\n gap?: Responsive<Spacing>\n /** `align-items` for the cells. Responsive: a breakpoint map. */\n align?: Responsive<FlexAlign>\n /** Padding (token key, px number, or CSS value). Responsive: a breakpoint map. */\n padding?: Responsive<Spacing>\n /** Render as `inline-grid`. */\n inline?: boolean\n}\n\n/**\n * A CSS-grid layout primitive — lay children out in columns via props. Use `cols` for a fixed count\n * or `minItemWidth` for a responsive grid that auto-fits as many equal columns as fit (collapsing to\n * one on narrow widths). Spacing accepts `--tz-space-*` keys, px numbers, or any CSS value; consumer\n * `style` merges last. `cols` / `gap` / `align` / `padding` are **responsive** — pass a **desktop-first**\n * breakpoint map (`{ xs, sm, md, lg, xl }`) to vary by viewport (e.g. `cols={{ xs: 1, md: 3 }}`).\n */\nexport const Grid = forwardRef<HTMLDivElement, GridProps>(function Grid(\n { cols, minItemWidth, fill = false, gap, align, padding, inline = false, style, ...props },\n ref,\n) {\n const matches = useBreakpointMatches()\n const resolvedCols = resolveResponsive(cols, matches)\n const al = resolveResponsive(align, matches)\n\n const gridTemplateColumns =\n minItemWidth != null\n ? `repeat(${fill ? 'auto-fill' : 'auto-fit'}, minmax(${space(minItemWidth)}, 1fr))`\n : typeof resolvedCols === 'number'\n ? `repeat(${resolvedCols}, minmax(0, 1fr))`\n : resolvedCols\n\n const gridStyle: CSSProperties = {\n display: inline ? 'inline-grid' : 'grid',\n gridTemplateColumns,\n gap: space(resolveResponsive(gap, matches)),\n alignItems: al && GRID_ALIGN[al],\n padding: space(resolveResponsive(padding, matches)),\n ...style,\n }\n return <div ref={ref} style={gridStyle} {...props} />\n})\n"],"names":["GRID_ALIGN","Grid","forwardRef","cols","minItemWidth","fill","gap","align","padding","inline","style","props","ref","matches","useBreakpointMatches","resolvedCols","resolveResponsive","al","gridTemplateColumns","space","gridStyle"],"mappings":";;;;;AAKA,MAAMA,IAAwC;AAAA,EAC5C,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,SAAS;AAAA,EACT,UAAU;AACZ,GA6BaC,IAAOC,EAAsC,SACxD,EAAE,MAAAC,GAAM,cAAAC,GAAc,MAAAC,IAAO,IAAO,KAAAC,GAAK,OAAAC,GAAO,SAAAC,GAAS,QAAAC,IAAS,IAAO,OAAAC,GAAO,GAAGC,EAAA,GACnFC,GACA;AACA,QAAMC,IAAUC,EAAA,GACVC,IAAeC,EAAkBb,GAAMU,CAAO,GAC9CI,IAAKD,EAAkBT,GAAOM,CAAO,GAErCK,IACJd,KAAgB,OACZ,UAAUC,IAAO,cAAc,UAAU,YAAYc,EAAMf,CAAY,CAAC,YACxE,OAAOW,KAAiB,WACtB,UAAUA,CAAY,sBACtBA,GAEFK,IAA2B;AAAA,IAC/B,SAASX,IAAS,gBAAgB;AAAA,IAClC,qBAAAS;AAAA,IACA,KAAKC,EAAMH,EAAkBV,GAAKO,CAAO,CAAC;AAAA,IAC1C,YAAYI,KAAMjB,EAAWiB,CAAE;AAAA,IAC/B,SAASE,EAAMH,EAAkBR,GAASK,CAAO,CAAC;AAAA,IAClD,GAAGH;AAAA,EAAA;AAEL,2BAAQ,OAAA,EAAI,KAAAE,GAAU,OAAOQ,GAAY,GAAGT,GAAO;AACrD,CAAC;"}
@@ -0,0 +1,2 @@
1
+ "use strict";const R=require("react/jsx-runtime"),q=require("react"),t=require("./Flex-C6tHC8n7.cjs"),s=require("./breakpoints-Dpnh6BbG.cjs"),x=require("./useMediaQuery-CHMrI6Dy.cjs"),y={start:"start",center:"center",end:"end",stretch:"stretch",baseline:"baseline"},G=q.forwardRef(function({cols:o,minItemWidth:n,fill:a=!1,gap:c,align:l,padding:u,inline:p=!1,style:d,...f},v){const e=x.useBreakpointMatches(),r=s.resolveResponsive(o,e),i=s.resolveResponsive(l,e),m=n!=null?`repeat(${a?"auto-fill":"auto-fit"}, minmax(${t.space(n)}, 1fr))`:typeof r=="number"?`repeat(${r}, minmax(0, 1fr))`:r,g={display:p?"inline-grid":"grid",gridTemplateColumns:m,gap:t.space(s.resolveResponsive(c,e)),alignItems:i&&y[i],padding:t.space(s.resolveResponsive(u,e)),...d};return R.jsx("div",{ref:v,style:g,...f})});exports.Grid=G;
2
+ //# sourceMappingURL=Grid-frN0D9lR.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid-frN0D9lR.cjs","sources":["../src/components/Flex/Grid.tsx"],"sourcesContent":["import { forwardRef, type CSSProperties, type HTMLAttributes } from 'react'\nimport { space, type FlexAlign, type Spacing } from './Flex'\nimport { resolveResponsive, type Responsive } from '../../theme/breakpoints'\nimport { useBreakpointMatches } from '../../hooks/useMediaQuery'\n\nconst GRID_ALIGN: Record<FlexAlign, string> = {\n start: 'start',\n center: 'center',\n end: 'end',\n stretch: 'stretch',\n baseline: 'baseline',\n}\n\nexport interface GridProps extends HTMLAttributes<HTMLDivElement> {\n /** Fixed column count (`repeat(n, minmax(0,1fr))`) or a raw `grid-template-columns` string. Responsive: a breakpoint map, e.g. `{ xs: 1, md: 3 }`. */\n cols?: Responsive<number | string>\n /** Responsive columns: every cell at least this wide, auto-fitting to the width (overrides `cols`). */\n minItemWidth?: Spacing\n /**\n * With `minItemWidth`, use `auto-fill` instead of `auto-fit` — keeps empty tracks at the min width\n * so a few items stay their natural size rather than stretching to fill the row. Defaults to `false`.\n */\n fill?: boolean\n /** Gap between cells (token key, px number, or CSS value). Responsive: a breakpoint map. */\n gap?: Responsive<Spacing>\n /** `align-items` for the cells. Responsive: a breakpoint map. */\n align?: Responsive<FlexAlign>\n /** Padding (token key, px number, or CSS value). Responsive: a breakpoint map. */\n padding?: Responsive<Spacing>\n /** Render as `inline-grid`. */\n inline?: boolean\n}\n\n/**\n * A CSS-grid layout primitive — lay children out in columns via props. Use `cols` for a fixed count\n * or `minItemWidth` for a responsive grid that auto-fits as many equal columns as fit (collapsing to\n * one on narrow widths). Spacing accepts `--tz-space-*` keys, px numbers, or any CSS value; consumer\n * `style` merges last. `cols` / `gap` / `align` / `padding` are **responsive** — pass a **desktop-first**\n * breakpoint map (`{ xs, sm, md, lg, xl }`) to vary by viewport (e.g. `cols={{ xs: 1, md: 3 }}`).\n */\nexport const Grid = forwardRef<HTMLDivElement, GridProps>(function Grid(\n { cols, minItemWidth, fill = false, gap, align, padding, inline = false, style, ...props },\n ref,\n) {\n const matches = useBreakpointMatches()\n const resolvedCols = resolveResponsive(cols, matches)\n const al = resolveResponsive(align, matches)\n\n const gridTemplateColumns =\n minItemWidth != null\n ? `repeat(${fill ? 'auto-fill' : 'auto-fit'}, minmax(${space(minItemWidth)}, 1fr))`\n : typeof resolvedCols === 'number'\n ? `repeat(${resolvedCols}, minmax(0, 1fr))`\n : resolvedCols\n\n const gridStyle: CSSProperties = {\n display: inline ? 'inline-grid' : 'grid',\n gridTemplateColumns,\n gap: space(resolveResponsive(gap, matches)),\n alignItems: al && GRID_ALIGN[al],\n padding: space(resolveResponsive(padding, matches)),\n ...style,\n }\n return <div ref={ref} style={gridStyle} {...props} />\n})\n"],"names":["GRID_ALIGN","Grid","forwardRef","cols","minItemWidth","fill","gap","align","padding","inline","style","props","ref","matches","useBreakpointMatches","resolvedCols","resolveResponsive","al","gridTemplateColumns","space","gridStyle"],"mappings":"wLAKMA,EAAwC,CAC5C,MAAO,QACP,OAAQ,SACR,IAAK,MACL,QAAS,UACT,SAAU,UACZ,EA6BaC,EAAOC,EAAAA,WAAsC,SACxD,CAAE,KAAAC,EAAM,aAAAC,EAAc,KAAAC,EAAO,GAAO,IAAAC,EAAK,MAAAC,EAAO,QAAAC,EAAS,OAAAC,EAAS,GAAO,MAAAC,EAAO,GAAGC,CAAA,EACnFC,EACA,CACA,MAAMC,EAAUC,EAAAA,qBAAA,EACVC,EAAeC,EAAAA,kBAAkBb,EAAMU,CAAO,EAC9CI,EAAKD,EAAAA,kBAAkBT,EAAOM,CAAO,EAErCK,EACJd,GAAgB,KACZ,UAAUC,EAAO,YAAc,UAAU,YAAYc,EAAAA,MAAMf,CAAY,CAAC,UACxE,OAAOW,GAAiB,SACtB,UAAUA,CAAY,oBACtBA,EAEFK,EAA2B,CAC/B,QAASX,EAAS,cAAgB,OAClC,oBAAAS,EACA,IAAKC,EAAAA,MAAMH,EAAAA,kBAAkBV,EAAKO,CAAO,CAAC,EAC1C,WAAYI,GAAMjB,EAAWiB,CAAE,EAC/B,QAASE,EAAAA,MAAMH,EAAAA,kBAAkBR,EAASK,CAAO,CAAC,EAClD,GAAGH,CAAA,EAEL,aAAQ,MAAA,CAAI,IAAAE,EAAU,MAAOQ,EAAY,GAAGT,EAAO,CACrD,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _ } from "react/jsx-runtime";
2
2
  import { forwardRef as j, isValidElement as p, cloneElement as x } from "react";
3
3
  import { clsx as B } from "clsx";
4
- import { L as v } from "./Loader-C4JoXOyA.js";
4
+ import { L as v } from "./Loader-DFlpw5Zc.js";
5
5
  const z = "_iconButton_1ja9g_1", I = "_sm_1ja9g_22", y = "_md_1ja9g_27", k = "_lg_1ja9g_32", C = "_contained_1ja9g_38", E = "_filled_1ja9g_48", L = "_outlined_1ja9g_57", $ = "_text_1ja9g_68", w = "_rounded_1ja9g_78", N = "_disabled_1ja9g_86", R = "_loading_1ja9g_90", V = "_nonClickable_1ja9g_95", t = {
6
6
  iconButton: z,
7
7
  sm: I,
@@ -65,4 +65,4 @@ const z = "_iconButton_1ja9g_1", I = "_sm_1ja9g_22", y = "_md_1ja9g_27", k = "_l
65
65
  export {
66
66
  H as I
67
67
  };
68
- //# sourceMappingURL=IconButton-CBusrDa9.js.map
68
+ //# sourceMappingURL=IconButton-BZ2jJn_T.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton-CBusrDa9.js","sources":["../src/components/IconButton/IconButton.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 './IconButton.module.css'\n\nexport type IconButtonVariant = 'contained' | 'filled' | 'outlined' | 'text'\nexport type IconButtonSize = 'sm' | 'md' | 'lg'\n\nexport interface IconButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'color'> {\n /** Visual style. `contained` solid · `filled` soft tint · `outlined` border · `text` bare. */\n variant?: IconButtonVariant\n /** Theme palette token that tints the button. Defaults to `accent`. */\n color?: ThemeColor\n /** Preset size — square: width === height === `--tz-control-height-*` (matches `Button` heights). */\n size?: IconButtonSize\n /** Shows the loader in the icon's place and blocks interaction (also sets the native `disabled`). */\n loading?: boolean\n /** Circular shape instead of the default rounded square. */\n rounded?: boolean\n /** Ignores all interaction (no clicks, hover or focus) while keeping the normal look — unlike `disabled`, it's not dimmed. */\n nonClickable?: boolean\n /** The icon to render — typically an `<Icon />`. Swapped for the loader while `loading`. */\n children?: ReactNode\n}\n\n/**\n * A square, text-less button for a single icon. Shares `Button`'s variants,\n * colors and sizing, but its width equals its height (the matching\n * `--tz-control-height-*`). Pass an `<Icon />` (or any node) as the child;\n * while `loading` it's replaced by the `Loader`. Provide an `aria-label` since\n * there's no visible text.\n */\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n {\n variant = 'contained',\n color = 'accent',\n size = 'md',\n loading = false,\n rounded = false,\n disabled = false,\n nonClickable = false,\n className,\n style,\n type = 'button',\n tabIndex,\n children,\n ...props\n },\n ref,\n) {\n // size the icon child to match the button (an explicit icon `size` still wins)\n const icon =\n isValidElement(children) && !loading\n ? cloneElement(children as ReactElement<{ size?: IconButtonSize }>, {\n size: (children.props as { size?: IconButtonSize }).size ?? size,\n })\n : children\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n aria-disabled={nonClickable || undefined}\n tabIndex={nonClickable ? -1 : tabIndex}\n className={clsx(\n styles.iconButton,\n styles[variant],\n styles[size],\n rounded && styles.rounded,\n loading && styles.loading,\n disabled && styles.disabled,\n nonClickable && styles.nonClickable,\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 {loading ? <Loader size={size} aria-hidden=\"true\" /> : icon}\n </button>\n )\n})\n"],"names":["IconButton","forwardRef","variant","color","size","loading","rounded","disabled","nonClickable","className","style","type","tabIndex","children","props","ref","icon","isValidElement","cloneElement","jsx","clsx","styles","Loader"],"mappings":";;;;;;;;;;;;;;;;;GAyCaA,IAAaC,EAA+C,SACvE;AAAA,EACE,SAAAC,IAAU;AAAA,EACV,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,SAAAC,IAAU;AAAA,EACV,SAAAC,IAAU;AAAA,EACV,UAAAC,IAAW;AAAA,EACX,cAAAC,IAAe;AAAA,EACf,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AAEA,QAAMC,IACJC,EAAeJ,CAAQ,KAAK,CAACR,IACzBa,EAAaL,GAAqD;AAAA,IAChE,MAAOA,EAAS,MAAoC,QAAQT;AAAA,EAAA,CAC7D,IACDS;AAEN,SACE,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAJ;AAAA,MACA,MAAAJ;AAAA,MACA,UAAUJ,KAAYF;AAAA,MACtB,aAAWA,KAAW;AAAA,MACtB,iBAAeG,KAAgB;AAAA,MAC/B,UAAUA,IAAe,KAAKI;AAAA,MAC9B,WAAWQ;AAAA,QACTC,EAAO;AAAA,QACPA,EAAOnB,CAAO;AAAA,QACdmB,EAAOjB,CAAI;AAAA,QACXE,KAAWe,EAAO;AAAA,QAClBhB,KAAWgB,EAAO;AAAA,QAClBd,KAAYc,EAAO;AAAA,QACnBb,KAAgBa,EAAO;AAAA,QACvBZ;AAAA,MAAA;AAAA,MAEF,OACE;AAAA,QACE,gBAAgB,kBAAkBN,CAAK;AAAA,QACvC,eAAe,kBAAkBA,CAAK;AAAA,QACtC,GAAGO;AAAA,MAAA;AAAA,MAGN,GAAGI;AAAA,MAEH,cAAU,gBAAAK,EAACG,GAAA,EAAO,MAAAlB,GAAY,eAAY,QAAO,IAAKY;AAAA,IAAA;AAAA,EAAA;AAG7D,CAAC;"}
1
+ {"version":3,"file":"IconButton-BZ2jJn_T.js","sources":["../src/components/IconButton/IconButton.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 './IconButton.module.css'\n\nexport type IconButtonVariant = 'contained' | 'filled' | 'outlined' | 'text'\nexport type IconButtonSize = 'sm' | 'md' | 'lg'\n\nexport interface IconButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'color'> {\n /** Visual style. `contained` solid · `filled` soft tint · `outlined` border · `text` bare. */\n variant?: IconButtonVariant\n /** Theme palette token that tints the button. Defaults to `accent`. */\n color?: ThemeColor\n /** Preset size — square: width === height === `--tz-control-height-*` (matches `Button` heights). */\n size?: IconButtonSize\n /** Shows the loader in the icon's place and blocks interaction (also sets the native `disabled`). */\n loading?: boolean\n /** Circular shape instead of the default rounded square. */\n rounded?: boolean\n /** Ignores all interaction (no clicks, hover or focus) while keeping the normal look — unlike `disabled`, it's not dimmed. */\n nonClickable?: boolean\n /** The icon to render — typically an `<Icon />`. Swapped for the loader while `loading`. */\n children?: ReactNode\n}\n\n/**\n * A square, text-less button for a single icon. Shares `Button`'s variants,\n * colors and sizing, but its width equals its height (the matching\n * `--tz-control-height-*`). Pass an `<Icon />` (or any node) as the child;\n * while `loading` it's replaced by the `Loader`. Provide an `aria-label` since\n * there's no visible text.\n */\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n {\n variant = 'contained',\n color = 'accent',\n size = 'md',\n loading = false,\n rounded = false,\n disabled = false,\n nonClickable = false,\n className,\n style,\n type = 'button',\n tabIndex,\n children,\n ...props\n },\n ref,\n) {\n // size the icon child to match the button (an explicit icon `size` still wins)\n const icon =\n isValidElement(children) && !loading\n ? cloneElement(children as ReactElement<{ size?: IconButtonSize }>, {\n size: (children.props as { size?: IconButtonSize }).size ?? size,\n })\n : children\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n aria-disabled={nonClickable || undefined}\n tabIndex={nonClickable ? -1 : tabIndex}\n className={clsx(\n styles.iconButton,\n styles[variant],\n styles[size],\n rounded && styles.rounded,\n loading && styles.loading,\n disabled && styles.disabled,\n nonClickable && styles.nonClickable,\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 {loading ? <Loader size={size} aria-hidden=\"true\" /> : icon}\n </button>\n )\n})\n"],"names":["IconButton","forwardRef","variant","color","size","loading","rounded","disabled","nonClickable","className","style","type","tabIndex","children","props","ref","icon","isValidElement","cloneElement","jsx","clsx","styles","Loader"],"mappings":";;;;;;;;;;;;;;;;;GAyCaA,IAAaC,EAA+C,SACvE;AAAA,EACE,SAAAC,IAAU;AAAA,EACV,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,SAAAC,IAAU;AAAA,EACV,SAAAC,IAAU;AAAA,EACV,UAAAC,IAAW;AAAA,EACX,cAAAC,IAAe;AAAA,EACf,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AAEA,QAAMC,IACJC,EAAeJ,CAAQ,KAAK,CAACR,IACzBa,EAAaL,GAAqD;AAAA,IAChE,MAAOA,EAAS,MAAoC,QAAQT;AAAA,EAAA,CAC7D,IACDS;AAEN,SACE,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAJ;AAAA,MACA,MAAAJ;AAAA,MACA,UAAUJ,KAAYF;AAAA,MACtB,aAAWA,KAAW;AAAA,MACtB,iBAAeG,KAAgB;AAAA,MAC/B,UAAUA,IAAe,KAAKI;AAAA,MAC9B,WAAWQ;AAAA,QACTC,EAAO;AAAA,QACPA,EAAOnB,CAAO;AAAA,QACdmB,EAAOjB,CAAI;AAAA,QACXE,KAAWe,EAAO;AAAA,QAClBhB,KAAWgB,EAAO;AAAA,QAClBd,KAAYc,EAAO;AAAA,QACnBb,KAAgBa,EAAO;AAAA,QACvBZ;AAAA,MAAA;AAAA,MAEF,OACE;AAAA,QACE,gBAAgB,kBAAkBN,CAAK;AAAA,QACvC,eAAe,kBAAkBA,CAAK;AAAA,QACtC,GAAGO;AAAA,MAAA;AAAA,MAGN,GAAGI;AAAA,MAEH,cAAU,gBAAAK,EAACG,GAAA,EAAO,MAAAlB,GAAY,eAAY,QAAO,IAAKY;AAAA,IAAA;AAAA,EAAA;AAG7D,CAAC;"}
@@ -1,2 +1,2 @@
1
- "use strict";const _=require("react/jsx-runtime"),a=require("react"),x=require("clsx"),B=require("./Loader-D1MtlQOH.cjs"),q="_iconButton_1ja9g_1",v="_sm_1ja9g_22",z="_md_1ja9g_27",I="_lg_1ja9g_32",y="_contained_1ja9g_38",k="_filled_1ja9g_48",p="_outlined_1ja9g_57",C="_text_1ja9g_68",E="_rounded_1ja9g_78",L="_disabled_1ja9g_86",R="_loading_1ja9g_90",$="_nonClickable_1ja9g_95",t={iconButton:q,sm:v,md:z,lg:I,contained:y,filled:k,outlined:p,text:C,rounded:E,disabled:L,loading:R,nonClickable:$},w=a.forwardRef(function({variant:i="contained",color:c="accent",size:e="md",loading:n=!1,rounded:l=!1,disabled:d=!1,nonClickable:s=!1,className:r,style:u,type:g="button",tabIndex:b,children:o,...j},f){const m=a.isValidElement(o)&&!n?a.cloneElement(o,{size:o.props.size??e}):o;return _.jsx("button",{ref:f,type:g,disabled:d||n,"aria-busy":n||void 0,"aria-disabled":s||void 0,tabIndex:s?-1:b,className:x.clsx(t.iconButton,t[i],t[e],l&&t.rounded,n&&t.loading,d&&t.disabled,s&&t.nonClickable,r),style:{"--tz-btn-rgb":`var(--tz-color-${c}-rgb)`,"--tz-btn-on":`var(--tz-color-${c}-contrast, #fff)`,...u},...j,children:n?_.jsx(B.Loader,{size:e,"aria-hidden":"true"}):m})});exports.IconButton=w;
2
- //# sourceMappingURL=IconButton-D6TenQZ_.cjs.map
1
+ "use strict";const _=require("react/jsx-runtime"),a=require("react"),x=require("clsx"),B=require("./Loader-plA9fgHf.cjs"),q="_iconButton_1ja9g_1",v="_sm_1ja9g_22",z="_md_1ja9g_27",I="_lg_1ja9g_32",y="_contained_1ja9g_38",k="_filled_1ja9g_48",p="_outlined_1ja9g_57",C="_text_1ja9g_68",E="_rounded_1ja9g_78",L="_disabled_1ja9g_86",R="_loading_1ja9g_90",$="_nonClickable_1ja9g_95",t={iconButton:q,sm:v,md:z,lg:I,contained:y,filled:k,outlined:p,text:C,rounded:E,disabled:L,loading:R,nonClickable:$},w=a.forwardRef(function({variant:i="contained",color:c="accent",size:e="md",loading:n=!1,rounded:l=!1,disabled:d=!1,nonClickable:s=!1,className:r,style:u,type:g="button",tabIndex:b,children:o,...j},f){const m=a.isValidElement(o)&&!n?a.cloneElement(o,{size:o.props.size??e}):o;return _.jsx("button",{ref:f,type:g,disabled:d||n,"aria-busy":n||void 0,"aria-disabled":s||void 0,tabIndex:s?-1:b,className:x.clsx(t.iconButton,t[i],t[e],l&&t.rounded,n&&t.loading,d&&t.disabled,s&&t.nonClickable,r),style:{"--tz-btn-rgb":`var(--tz-color-${c}-rgb)`,"--tz-btn-on":`var(--tz-color-${c}-contrast, #fff)`,...u},...j,children:n?_.jsx(B.Loader,{size:e,"aria-hidden":"true"}):m})});exports.IconButton=w;
2
+ //# sourceMappingURL=IconButton-ChUfK0pG.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton-D6TenQZ_.cjs","sources":["../src/components/IconButton/IconButton.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 './IconButton.module.css'\n\nexport type IconButtonVariant = 'contained' | 'filled' | 'outlined' | 'text'\nexport type IconButtonSize = 'sm' | 'md' | 'lg'\n\nexport interface IconButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'color'> {\n /** Visual style. `contained` solid · `filled` soft tint · `outlined` border · `text` bare. */\n variant?: IconButtonVariant\n /** Theme palette token that tints the button. Defaults to `accent`. */\n color?: ThemeColor\n /** Preset size — square: width === height === `--tz-control-height-*` (matches `Button` heights). */\n size?: IconButtonSize\n /** Shows the loader in the icon's place and blocks interaction (also sets the native `disabled`). */\n loading?: boolean\n /** Circular shape instead of the default rounded square. */\n rounded?: boolean\n /** Ignores all interaction (no clicks, hover or focus) while keeping the normal look — unlike `disabled`, it's not dimmed. */\n nonClickable?: boolean\n /** The icon to render — typically an `<Icon />`. Swapped for the loader while `loading`. */\n children?: ReactNode\n}\n\n/**\n * A square, text-less button for a single icon. Shares `Button`'s variants,\n * colors and sizing, but its width equals its height (the matching\n * `--tz-control-height-*`). Pass an `<Icon />` (or any node) as the child;\n * while `loading` it's replaced by the `Loader`. Provide an `aria-label` since\n * there's no visible text.\n */\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n {\n variant = 'contained',\n color = 'accent',\n size = 'md',\n loading = false,\n rounded = false,\n disabled = false,\n nonClickable = false,\n className,\n style,\n type = 'button',\n tabIndex,\n children,\n ...props\n },\n ref,\n) {\n // size the icon child to match the button (an explicit icon `size` still wins)\n const icon =\n isValidElement(children) && !loading\n ? cloneElement(children as ReactElement<{ size?: IconButtonSize }>, {\n size: (children.props as { size?: IconButtonSize }).size ?? size,\n })\n : children\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n aria-disabled={nonClickable || undefined}\n tabIndex={nonClickable ? -1 : tabIndex}\n className={clsx(\n styles.iconButton,\n styles[variant],\n styles[size],\n rounded && styles.rounded,\n loading && styles.loading,\n disabled && styles.disabled,\n nonClickable && styles.nonClickable,\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 {loading ? <Loader size={size} aria-hidden=\"true\" /> : icon}\n </button>\n )\n})\n"],"names":["IconButton","forwardRef","variant","color","size","loading","rounded","disabled","nonClickable","className","style","type","tabIndex","children","props","ref","icon","isValidElement","cloneElement","jsx","clsx","styles","Loader"],"mappings":"+eAyCaA,EAAaC,EAAAA,WAA+C,SACvE,CACE,QAAAC,EAAU,YACV,MAAAC,EAAQ,SACR,KAAAC,EAAO,KACP,QAAAC,EAAU,GACV,QAAAC,EAAU,GACV,SAAAC,EAAW,GACX,aAAAC,EAAe,GACf,UAAAC,EACA,MAAAC,EACA,KAAAC,EAAO,SACP,SAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EACAC,EACA,CAEA,MAAMC,EACJC,EAAAA,eAAeJ,CAAQ,GAAK,CAACR,EACzBa,EAAAA,aAAaL,EAAqD,CAChE,KAAOA,EAAS,MAAoC,MAAQT,CAAA,CAC7D,EACDS,EAEN,OACEM,EAAAA,IAAC,SAAA,CACC,IAAAJ,EACA,KAAAJ,EACA,SAAUJ,GAAYF,EACtB,YAAWA,GAAW,OACtB,gBAAeG,GAAgB,OAC/B,SAAUA,EAAe,GAAKI,EAC9B,UAAWQ,EAAAA,KACTC,EAAO,WACPA,EAAOnB,CAAO,EACdmB,EAAOjB,CAAI,EACXE,GAAWe,EAAO,QAClBhB,GAAWgB,EAAO,QAClBd,GAAYc,EAAO,SACnBb,GAAgBa,EAAO,aACvBZ,CAAA,EAEF,MACE,CACE,eAAgB,kBAAkBN,CAAK,QACvC,cAAe,kBAAkBA,CAAK,mBACtC,GAAGO,CAAA,EAGN,GAAGI,EAEH,WAAUK,EAAAA,IAACG,EAAAA,OAAA,CAAO,KAAAlB,EAAY,cAAY,OAAO,EAAKY,CAAA,CAAA,CAG7D,CAAC"}
1
+ {"version":3,"file":"IconButton-ChUfK0pG.cjs","sources":["../src/components/IconButton/IconButton.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 './IconButton.module.css'\n\nexport type IconButtonVariant = 'contained' | 'filled' | 'outlined' | 'text'\nexport type IconButtonSize = 'sm' | 'md' | 'lg'\n\nexport interface IconButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'color'> {\n /** Visual style. `contained` solid · `filled` soft tint · `outlined` border · `text` bare. */\n variant?: IconButtonVariant\n /** Theme palette token that tints the button. Defaults to `accent`. */\n color?: ThemeColor\n /** Preset size — square: width === height === `--tz-control-height-*` (matches `Button` heights). */\n size?: IconButtonSize\n /** Shows the loader in the icon's place and blocks interaction (also sets the native `disabled`). */\n loading?: boolean\n /** Circular shape instead of the default rounded square. */\n rounded?: boolean\n /** Ignores all interaction (no clicks, hover or focus) while keeping the normal look — unlike `disabled`, it's not dimmed. */\n nonClickable?: boolean\n /** The icon to render — typically an `<Icon />`. Swapped for the loader while `loading`. */\n children?: ReactNode\n}\n\n/**\n * A square, text-less button for a single icon. Shares `Button`'s variants,\n * colors and sizing, but its width equals its height (the matching\n * `--tz-control-height-*`). Pass an `<Icon />` (or any node) as the child;\n * while `loading` it's replaced by the `Loader`. Provide an `aria-label` since\n * there's no visible text.\n */\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n {\n variant = 'contained',\n color = 'accent',\n size = 'md',\n loading = false,\n rounded = false,\n disabled = false,\n nonClickable = false,\n className,\n style,\n type = 'button',\n tabIndex,\n children,\n ...props\n },\n ref,\n) {\n // size the icon child to match the button (an explicit icon `size` still wins)\n const icon =\n isValidElement(children) && !loading\n ? cloneElement(children as ReactElement<{ size?: IconButtonSize }>, {\n size: (children.props as { size?: IconButtonSize }).size ?? size,\n })\n : children\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n aria-disabled={nonClickable || undefined}\n tabIndex={nonClickable ? -1 : tabIndex}\n className={clsx(\n styles.iconButton,\n styles[variant],\n styles[size],\n rounded && styles.rounded,\n loading && styles.loading,\n disabled && styles.disabled,\n nonClickable && styles.nonClickable,\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 {loading ? <Loader size={size} aria-hidden=\"true\" /> : icon}\n </button>\n )\n})\n"],"names":["IconButton","forwardRef","variant","color","size","loading","rounded","disabled","nonClickable","className","style","type","tabIndex","children","props","ref","icon","isValidElement","cloneElement","jsx","clsx","styles","Loader"],"mappings":"+eAyCaA,EAAaC,EAAAA,WAA+C,SACvE,CACE,QAAAC,EAAU,YACV,MAAAC,EAAQ,SACR,KAAAC,EAAO,KACP,QAAAC,EAAU,GACV,QAAAC,EAAU,GACV,SAAAC,EAAW,GACX,aAAAC,EAAe,GACf,UAAAC,EACA,MAAAC,EACA,KAAAC,EAAO,SACP,SAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EACAC,EACA,CAEA,MAAMC,EACJC,EAAAA,eAAeJ,CAAQ,GAAK,CAACR,EACzBa,EAAAA,aAAaL,EAAqD,CAChE,KAAOA,EAAS,MAAoC,MAAQT,CAAA,CAC7D,EACDS,EAEN,OACEM,EAAAA,IAAC,SAAA,CACC,IAAAJ,EACA,KAAAJ,EACA,SAAUJ,GAAYF,EACtB,YAAWA,GAAW,OACtB,gBAAeG,GAAgB,OAC/B,SAAUA,EAAe,GAAKI,EAC9B,UAAWQ,EAAAA,KACTC,EAAO,WACPA,EAAOnB,CAAO,EACdmB,EAAOjB,CAAI,EACXE,GAAWe,EAAO,QAClBhB,GAAWgB,EAAO,QAClBd,GAAYc,EAAO,SACnBb,GAAgBa,EAAO,aACvBZ,CAAA,EAEF,MACE,CACE,eAAgB,kBAAkBN,CAAK,QACvC,cAAe,kBAAkBA,CAAK,mBACtC,GAAGO,CAAA,EAGN,GAAGI,EAEH,WAAUK,EAAAA,IAACG,EAAAA,OAAA,CAAO,KAAAlB,EAAY,cAAY,OAAO,EAAKY,CAAA,CAAA,CAG7D,CAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";const i=require("react/jsx-runtime"),e=require("react"),n=require("./Flex-CqL3Ghda.cjs"),o=e.createContext(void 0),L=()=>e.useContext(o),f=e.forwardRef(function({as:r,gap:c=2,padding:u,role:a="list",size:t,style:x,children:s,...l},d){const p=r??"div";return i.jsx(p,{ref:d,role:a,style:{display:"flex",flexDirection:"column",gap:n.space(c),padding:n.space(u),...x},...l,children:t?i.jsx(o.Provider,{value:t,children:s}):s})});exports.List=f;exports.useListSize=L;
2
- //# sourceMappingURL=List-CNz2M3-q.cjs.map
1
+ "use strict";const i=require("react/jsx-runtime"),e=require("react"),n=require("./Flex-C6tHC8n7.cjs"),o=e.createContext(void 0),L=()=>e.useContext(o),f=e.forwardRef(function({as:r,gap:c=2,padding:u,role:a="list",size:t,style:x,children:s,...l},d){const p=r??"div";return i.jsx(p,{ref:d,role:a,style:{display:"flex",flexDirection:"column",gap:n.space(c),padding:n.space(u),...x},...l,children:t?i.jsx(o.Provider,{value:t,children:s}):s})});exports.List=f;exports.useListSize=L;
2
+ //# sourceMappingURL=List-ChXO0Hz-.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"List-CNz2M3-q.cjs","sources":["../src/components/List/listContext.ts","../src/components/List/List.tsx"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport type { ListItemSize } from './ListItem'\n\n/** Lets a `List` set a default size that its `ListItem`s inherit (an explicit item `size` still wins). */\nexport const ListSizeContext = createContext<ListItemSize | undefined>(undefined)\n\n/** Read the size provided by a surrounding `List`, if any. */\nexport const useListSize = (): ListItemSize | undefined => useContext(ListSizeContext)\n","import {\n forwardRef,\n type CSSProperties,\n type ElementType,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { space, type Spacing } from '../Flex/Flex'\nimport { ListSizeContext } from './listContext'\nimport type { ListItemSize } from './ListItem'\n\nexport interface ListProps extends HTMLAttributes<HTMLElement> {\n /** Render a different element — e.g. `'ul'`, `'nav'`, `'menu'`. Defaults to `div`. */\n as?: ElementType\n /** Gap between items (token key, px number, or CSS value). Defaults to `2px`. */\n gap?: Spacing\n /** Padding around the list (token key, px number, or CSS value). */\n padding?: Spacing\n /** Default size for the contained `ListItem`s — each item can still override its own `size`. */\n size?: ListItemSize\n children?: ReactNode\n}\n\n/**\n * A thin semantic container for `ListItem`s — a vertical stack with a configurable `gap`/`padding`\n * and `role=\"list\"` (override `role` to `\"menu\"` for a dropdown, etc.). `size` sets a default for all\n * contained `ListItem`s. Layout is set via inline style, matching the `Flex`/`Grid` primitives.\n */\nexport const List = forwardRef<HTMLElement, ListProps>(function List(\n { as, gap = 2, padding, role = 'list', size, style, children, ...props },\n ref,\n) {\n const Component = (as ?? 'div') as ElementType\n return (\n <Component\n ref={ref}\n role={role}\n style={\n {\n display: 'flex',\n flexDirection: 'column',\n gap: space(gap),\n padding: space(padding),\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n {size ? (\n <ListSizeContext.Provider value={size}>{children}</ListSizeContext.Provider>\n ) : (\n children\n )}\n </Component>\n )\n})\n"],"names":["ListSizeContext","createContext","useListSize","useContext","List","forwardRef","as","gap","padding","role","size","style","children","props","ref","Component","jsx","space"],"mappings":"sGAIaA,EAAkBC,EAAAA,cAAwC,MAAS,EAGnEC,EAAc,IAAgCC,EAAAA,WAAWH,CAAe,ECqBxEI,EAAOC,EAAAA,WAAmC,SACrD,CAAE,GAAAC,EAAI,IAAAC,EAAM,EAAG,QAAAC,EAAS,KAAAC,EAAO,OAAQ,KAAAC,EAAM,MAAAC,EAAO,SAAAC,EAAU,GAAGC,CAAA,EACjEC,EACA,CACA,MAAMC,EAAaT,GAAM,MACzB,OACEU,EAAAA,IAACD,EAAA,CACC,IAAAD,EACA,KAAAL,EACA,MACE,CACE,QAAS,OACT,cAAe,SACf,IAAKQ,EAAAA,MAAMV,CAAG,EACd,QAASU,EAAAA,MAAMT,CAAO,EACtB,GAAGG,CAAA,EAGN,GAAGE,EAEH,SAAAH,QACEV,EAAgB,SAAhB,CAAyB,MAAOU,EAAO,SAAAE,EAAS,EAEjDA,CAAA,CAAA,CAIR,CAAC"}
1
+ {"version":3,"file":"List-ChXO0Hz-.cjs","sources":["../src/components/List/listContext.ts","../src/components/List/List.tsx"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport type { ListItemSize } from './ListItem'\n\n/** Lets a `List` set a default size that its `ListItem`s inherit (an explicit item `size` still wins). */\nexport const ListSizeContext = createContext<ListItemSize | undefined>(undefined)\n\n/** Read the size provided by a surrounding `List`, if any. */\nexport const useListSize = (): ListItemSize | undefined => useContext(ListSizeContext)\n","import {\n forwardRef,\n type CSSProperties,\n type ElementType,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { space, type Spacing } from '../Flex/Flex'\nimport { ListSizeContext } from './listContext'\nimport type { ListItemSize } from './ListItem'\n\nexport interface ListProps extends HTMLAttributes<HTMLElement> {\n /** Render a different element — e.g. `'ul'`, `'nav'`, `'menu'`. Defaults to `div`. */\n as?: ElementType\n /** Gap between items (token key, px number, or CSS value). Defaults to `2px`. */\n gap?: Spacing\n /** Padding around the list (token key, px number, or CSS value). */\n padding?: Spacing\n /** Default size for the contained `ListItem`s — each item can still override its own `size`. */\n size?: ListItemSize\n children?: ReactNode\n}\n\n/**\n * A thin semantic container for `ListItem`s — a vertical stack with a configurable `gap`/`padding`\n * and `role=\"list\"` (override `role` to `\"menu\"` for a dropdown, etc.). `size` sets a default for all\n * contained `ListItem`s. Layout is set via inline style, matching the `Flex`/`Grid` primitives.\n */\nexport const List = forwardRef<HTMLElement, ListProps>(function List(\n { as, gap = 2, padding, role = 'list', size, style, children, ...props },\n ref,\n) {\n const Component = (as ?? 'div') as ElementType\n return (\n <Component\n ref={ref}\n role={role}\n style={\n {\n display: 'flex',\n flexDirection: 'column',\n gap: space(gap),\n padding: space(padding),\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n {size ? (\n <ListSizeContext.Provider value={size}>{children}</ListSizeContext.Provider>\n ) : (\n children\n )}\n </Component>\n )\n})\n"],"names":["ListSizeContext","createContext","useListSize","useContext","List","forwardRef","as","gap","padding","role","size","style","children","props","ref","Component","jsx","space"],"mappings":"sGAIaA,EAAkBC,EAAAA,cAAwC,MAAS,EAGnEC,EAAc,IAAgCC,EAAAA,WAAWH,CAAe,ECqBxEI,EAAOC,EAAAA,WAAmC,SACrD,CAAE,GAAAC,EAAI,IAAAC,EAAM,EAAG,QAAAC,EAAS,KAAAC,EAAO,OAAQ,KAAAC,EAAM,MAAAC,EAAO,SAAAC,EAAU,GAAGC,CAAA,EACjEC,EACA,CACA,MAAMC,EAAaT,GAAM,MACzB,OACEU,EAAAA,IAACD,EAAA,CACC,IAAAD,EACA,KAAAL,EACA,MACE,CACE,QAAS,OACT,cAAe,SACf,IAAKQ,EAAAA,MAAMV,CAAG,EACd,QAASU,EAAAA,MAAMT,CAAO,EACtB,GAAGG,CAAA,EAGN,GAAGE,EAEH,SAAAH,QACEV,EAAgB,SAAhB,CAAyB,MAAOU,EAAO,SAAAE,EAAS,EAEjDA,CAAA,CAAA,CAIR,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
2
  import { createContext as d, useContext as l, forwardRef as u } from "react";
3
- import { s } from "./Flex-Bj3mMF5A.js";
3
+ import { s } from "./Flex-BFn4P1tJ.js";
4
4
  const i = d(void 0), y = () => l(i), S = u(function({ as: n, gap: r = 2, padding: a, role: p = "list", size: t, style: c, children: o, ...m }, f) {
5
5
  return /* @__PURE__ */ e(
6
6
  n ?? "div",
@@ -23,4 +23,4 @@ export {
23
23
  S as L,
24
24
  y as u
25
25
  };
26
- //# sourceMappingURL=List-BHgFI9Ll.js.map
26
+ //# sourceMappingURL=List-LqbfF6gU.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"List-BHgFI9Ll.js","sources":["../src/components/List/listContext.ts","../src/components/List/List.tsx"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport type { ListItemSize } from './ListItem'\n\n/** Lets a `List` set a default size that its `ListItem`s inherit (an explicit item `size` still wins). */\nexport const ListSizeContext = createContext<ListItemSize | undefined>(undefined)\n\n/** Read the size provided by a surrounding `List`, if any. */\nexport const useListSize = (): ListItemSize | undefined => useContext(ListSizeContext)\n","import {\n forwardRef,\n type CSSProperties,\n type ElementType,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { space, type Spacing } from '../Flex/Flex'\nimport { ListSizeContext } from './listContext'\nimport type { ListItemSize } from './ListItem'\n\nexport interface ListProps extends HTMLAttributes<HTMLElement> {\n /** Render a different element — e.g. `'ul'`, `'nav'`, `'menu'`. Defaults to `div`. */\n as?: ElementType\n /** Gap between items (token key, px number, or CSS value). Defaults to `2px`. */\n gap?: Spacing\n /** Padding around the list (token key, px number, or CSS value). */\n padding?: Spacing\n /** Default size for the contained `ListItem`s — each item can still override its own `size`. */\n size?: ListItemSize\n children?: ReactNode\n}\n\n/**\n * A thin semantic container for `ListItem`s — a vertical stack with a configurable `gap`/`padding`\n * and `role=\"list\"` (override `role` to `\"menu\"` for a dropdown, etc.). `size` sets a default for all\n * contained `ListItem`s. Layout is set via inline style, matching the `Flex`/`Grid` primitives.\n */\nexport const List = forwardRef<HTMLElement, ListProps>(function List(\n { as, gap = 2, padding, role = 'list', size, style, children, ...props },\n ref,\n) {\n const Component = (as ?? 'div') as ElementType\n return (\n <Component\n ref={ref}\n role={role}\n style={\n {\n display: 'flex',\n flexDirection: 'column',\n gap: space(gap),\n padding: space(padding),\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n {size ? (\n <ListSizeContext.Provider value={size}>{children}</ListSizeContext.Provider>\n ) : (\n children\n )}\n </Component>\n )\n})\n"],"names":["ListSizeContext","createContext","useListSize","useContext","List","forwardRef","as","gap","padding","role","size","style","children","props","ref","jsx","space"],"mappings":";;;AAIO,MAAMA,IAAkBC,EAAwC,MAAS,GAGnEC,IAAc,MAAgCC,EAAWH,CAAe,GCqBxEI,IAAOC,EAAmC,SACrD,EAAE,IAAAC,GAAI,KAAAC,IAAM,GAAG,SAAAC,GAAS,MAAAC,IAAO,QAAQ,MAAAC,GAAM,OAAAC,GAAO,UAAAC,GAAU,GAAGC,EAAA,GACjEC,GACA;AAEA,SACE,gBAAAC;AAAA,IAFiBT,KAAM;AAAA,IAEtB;AAAA,MACC,KAAAQ;AAAA,MACA,MAAAL;AAAA,MACA,OACE;AAAA,QACE,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAKO,EAAMT,CAAG;AAAA,QACd,SAASS,EAAMR,CAAO;AAAA,QACtB,GAAGG;AAAA,MAAA;AAAA,MAGN,GAAGE;AAAA,MAEH,UAAAH,sBACEV,EAAgB,UAAhB,EAAyB,OAAOU,GAAO,UAAAE,GAAS,IAEjDA;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC;"}
1
+ {"version":3,"file":"List-LqbfF6gU.js","sources":["../src/components/List/listContext.ts","../src/components/List/List.tsx"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport type { ListItemSize } from './ListItem'\n\n/** Lets a `List` set a default size that its `ListItem`s inherit (an explicit item `size` still wins). */\nexport const ListSizeContext = createContext<ListItemSize | undefined>(undefined)\n\n/** Read the size provided by a surrounding `List`, if any. */\nexport const useListSize = (): ListItemSize | undefined => useContext(ListSizeContext)\n","import {\n forwardRef,\n type CSSProperties,\n type ElementType,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { space, type Spacing } from '../Flex/Flex'\nimport { ListSizeContext } from './listContext'\nimport type { ListItemSize } from './ListItem'\n\nexport interface ListProps extends HTMLAttributes<HTMLElement> {\n /** Render a different element — e.g. `'ul'`, `'nav'`, `'menu'`. Defaults to `div`. */\n as?: ElementType\n /** Gap between items (token key, px number, or CSS value). Defaults to `2px`. */\n gap?: Spacing\n /** Padding around the list (token key, px number, or CSS value). */\n padding?: Spacing\n /** Default size for the contained `ListItem`s — each item can still override its own `size`. */\n size?: ListItemSize\n children?: ReactNode\n}\n\n/**\n * A thin semantic container for `ListItem`s — a vertical stack with a configurable `gap`/`padding`\n * and `role=\"list\"` (override `role` to `\"menu\"` for a dropdown, etc.). `size` sets a default for all\n * contained `ListItem`s. Layout is set via inline style, matching the `Flex`/`Grid` primitives.\n */\nexport const List = forwardRef<HTMLElement, ListProps>(function List(\n { as, gap = 2, padding, role = 'list', size, style, children, ...props },\n ref,\n) {\n const Component = (as ?? 'div') as ElementType\n return (\n <Component\n ref={ref}\n role={role}\n style={\n {\n display: 'flex',\n flexDirection: 'column',\n gap: space(gap),\n padding: space(padding),\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n {size ? (\n <ListSizeContext.Provider value={size}>{children}</ListSizeContext.Provider>\n ) : (\n children\n )}\n </Component>\n )\n})\n"],"names":["ListSizeContext","createContext","useListSize","useContext","List","forwardRef","as","gap","padding","role","size","style","children","props","ref","jsx","space"],"mappings":";;;AAIO,MAAMA,IAAkBC,EAAwC,MAAS,GAGnEC,IAAc,MAAgCC,EAAWH,CAAe,GCqBxEI,IAAOC,EAAmC,SACrD,EAAE,IAAAC,GAAI,KAAAC,IAAM,GAAG,SAAAC,GAAS,MAAAC,IAAO,QAAQ,MAAAC,GAAM,OAAAC,GAAO,UAAAC,GAAU,GAAGC,EAAA,GACjEC,GACA;AAEA,SACE,gBAAAC;AAAA,IAFiBT,KAAM;AAAA,IAEtB;AAAA,MACC,KAAAQ;AAAA,MACA,MAAAL;AAAA,MACA,OACE;AAAA,QACE,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAKO,EAAMT,CAAG;AAAA,QACd,SAASS,EAAMR,CAAO;AAAA,QACtB,GAAGG;AAAA,MAAA;AAAA,MAGN,GAAGE;AAAA,MAEH,UAAAH,sBACEV,EAAgB,UAAhB,EAAyB,OAAOU,GAAO,UAAAE,GAAS,IAEjDA;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC;"}
@@ -3,7 +3,7 @@ import { forwardRef as S } from "react";
3
3
  import { clsx as v } from "clsx";
4
4
  import { I as y } from "./Icon-CophpkHo.js";
5
5
  import { a as C } from "./names-D8ABK2Wk.js";
6
- import { u as E } from "./List-BHgFI9Ll.js";
6
+ import { u as E } from "./List-LqbfF6gU.js";
7
7
  const O = "_item_1d91m_3", j = "_sm_1d91m_25", D = "_md_1d91m_31", A = "_lg_1d91m_36", M = "_itemIcon_1d91m_43", w = "_itemText_1d91m_51", B = "_itemLabel_1d91m_59", R = "_itemDescription_1d91m_66", Z = "_itemTrailing_1d91m_76", $ = "_clickable_1d91m_86", q = "_selected_1d91m_103", F = "_disabled_1d91m_124", t = {
8
8
  item: O,
9
9
  sm: j,
@@ -71,4 +71,4 @@ const O = "_item_1d91m_3", j = "_sm_1d91m_25", D = "_md_1d91m_31", A = "_lg_1d91
71
71
  export {
72
72
  K as L
73
73
  };
74
- //# sourceMappingURL=ListItem-B4yqZR-Z.js.map
74
+ //# sourceMappingURL=ListItem-B4Upc0Hy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListItem-B4yqZR-Z.js","sources":["../src/components/List/ListItem.tsx"],"sourcesContent":["import {\n forwardRef,\n type AnchorHTMLAttributes,\n type CSSProperties,\n type ElementType,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { Icon } from '../Icon'\nimport type { ThemeColor } from '../../theme'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport { useListSize } from './listContext'\nimport styles from './List.module.css'\n\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\nexport type ListItemSize = 'sm' | 'md' | 'lg'\n\n/** Leading `<Icon>` size per row size. */\nconst ICON_SIZE: Record<ListItemSize, 'sm' | 'md'> = { sm: 'sm', md: 'md', lg: 'md' }\n\nexport interface ListItemProps\n extends\n Omit<HTMLAttributes<HTMLElement>, 'color'>,\n Pick<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'target' | 'rel' | 'download'> {\n /** Leading element — a known `IconName` (rendered as `<Icon>`) or any node (e.g. an `Avatar`). */\n icon?: IconName | ReactNode\n /** Secondary muted line shown under the label. */\n description?: ReactNode\n /** Trailing content pinned to the right (icon, `Badge`, shortcut text, chevron, …). */\n trailing?: ReactNode\n /** Highlights the row as selected/active (menu selection, current nav route). */\n selected?: boolean\n /** Makes the row interactive (hover + cursor; adds `role`/`tabIndex`/keyboard when rendered plain). */\n clickable?: boolean\n /** Dims and inerts the row. */\n disabled?: boolean\n /** Row size — height / padding / font. Defaults to `md`. */\n size?: ListItemSize\n /** Theme color for the selected tint and clickable hover. Defaults to `primary`. */\n color?: ThemeColor\n /** Render a different element/component — e.g. `'a'`, `'button'`, or a router `Link`. Defaults to `div`. */\n as?: ElementType\n /** Primary label / content. */\n children?: ReactNode\n}\n\n/**\n * A flexible, reusable list row: leading `icon`, a label (`children`) with optional `description`, and\n * a `trailing` slot. `clickable` turns it interactive (hover + keyboard when rendered as a plain\n * element), `selected` highlights it, `disabled` inerts it. Render as a link/button/router `Link` via\n * `as`. Designed to compose inside `List` — for menus, the sidebar, or a standalone styled list.\n */\nexport const ListItem = forwardRef<HTMLElement, ListItemProps>(function ListItem(\n {\n icon,\n description,\n trailing,\n selected = false,\n clickable = false,\n disabled = false,\n size: sizeProp,\n color = 'primary',\n as,\n className,\n style,\n children,\n onClick,\n onKeyDown,\n ...props\n },\n ref,\n) {\n // an explicit `size` wins; otherwise inherit a surrounding `List`'s size, falling back to `md`\n const listSize = useListSize()\n const size = sizeProp ?? listSize ?? 'md'\n const Component = (as ?? 'div') as ElementType\n // Anchors, buttons, and custom components (e.g. a router Link) carry their own click + keyboard\n // semantics — only a plain element needs the button role/tabIndex/Enter-Space shim.\n const handlesOwnInteraction =\n as === 'a' || as === 'button' || typeof as === 'function' || typeof as === 'object'\n const isDivButton = clickable && !handlesOwnInteraction\n\n const renderedIcon =\n icon == null ? null : typeof icon === 'string' && ICON_NAME_SET.has(icon) ? (\n <Icon name={icon as IconName} size={ICON_SIZE[size]} />\n ) : (\n icon\n )\n\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (isDivButton && !disabled && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault()\n event.currentTarget.click()\n }\n onKeyDown?.(event)\n }\n\n return (\n <Component\n ref={ref}\n className={clsx(\n styles.item,\n styles[size],\n selected && styles.selected,\n clickable && styles.clickable,\n disabled && styles.disabled,\n className,\n )}\n style={{ '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`, ...style } as CSSProperties}\n role={isDivButton ? 'button' : undefined}\n tabIndex={isDivButton ? (disabled ? -1 : 0) : undefined}\n aria-disabled={disabled || undefined}\n aria-current={selected || undefined}\n onClick={disabled ? undefined : onClick}\n onKeyDown={clickable ? handleKeyDown : onKeyDown}\n {...props}\n >\n {renderedIcon != null && <span className={styles.itemIcon}>{renderedIcon}</span>}\n {(children != null || description != null) && (\n <span className={styles.itemText}>\n {children != null && <span className={styles.itemLabel}>{children}</span>}\n {description != null && <span className={styles.itemDescription}>{description}</span>}\n </span>\n )}\n {trailing != null && <span className={styles.itemTrailing}>{trailing}</span>}\n </Component>\n )\n})\n"],"names":["ICON_NAME_SET","ICON_NAMES","ICON_SIZE","ListItem","forwardRef","icon","description","trailing","selected","clickable","disabled","sizeProp","color","as","className","style","children","onClick","onKeyDown","props","ref","listSize","useListSize","size","Component","isDivButton","renderedIcon","jsx","Icon","handleKeyDown","event","jsxs","clsx","styles"],"mappings":";;;;;;;;;;;;;;;;;;;GAgBMA,IAAgB,IAAI,IAAYC,CAAU,GAK1CC,IAA+C,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,KAAA,GAkClEC,IAAWC,EAAuC,SAC7D;AAAA,EACE,MAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,UAAAC,IAAW;AAAA,EACX,MAAMC;AAAA,EACN,OAAAC,IAAQ;AAAA,EACR,IAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AAEA,QAAMC,IAAWC,EAAA,GACXC,IAAOZ,KAAYU,KAAY,MAC/BG,IAAaX,KAAM,OAKnBY,IAAchB,KAAa,EAD/BI,MAAO,OAAOA,MAAO,YAAY,OAAOA,KAAO,cAAc,OAAOA,KAAO,WAGvEa,IACJrB,KAAQ,OAAO,OAAO,OAAOA,KAAS,YAAYL,EAAc,IAAIK,CAAI,IACtE,gBAAAsB,EAACC,KAAK,MAAMvB,GAAkB,MAAMH,EAAUqB,CAAI,GAAG,IAErDlB,GAGEwB,IAAgB,CAACC,MAAsC;AAC3D,IAAIL,KAAe,CAACf,MAAaoB,EAAM,QAAQ,WAAWA,EAAM,QAAQ,SACtEA,EAAM,eAAA,GACNA,EAAM,cAAc,MAAA,IAEtBZ,KAAA,QAAAA,EAAYY;AAAA,EACd;AAEA,SACE,gBAAAC;AAAA,IAACP;AAAA,IAAA;AAAA,MACC,KAAAJ;AAAA,MACA,WAAWY;AAAA,QACTC,EAAO;AAAA,QACPA,EAAOV,CAAI;AAAA,QACXf,KAAYyB,EAAO;AAAA,QACnBxB,KAAawB,EAAO;AAAA,QACpBvB,KAAYuB,EAAO;AAAA,QACnBnB;AAAA,MAAA;AAAA,MAEF,OAAO,EAAE,gBAAgB,kBAAkBF,CAAK,SAAS,GAAGG,EAAA;AAAA,MAC5D,MAAMU,IAAc,WAAW;AAAA,MAC/B,UAAUA,IAAef,IAAW,KAAK,IAAK;AAAA,MAC9C,iBAAeA,KAAY;AAAA,MAC3B,gBAAcF,KAAY;AAAA,MAC1B,SAASE,IAAW,SAAYO;AAAA,MAChC,WAAWR,IAAYoB,IAAgBX;AAAA,MACtC,GAAGC;AAAA,MAEH,UAAA;AAAA,QAAAO,KAAgB,QAAQ,gBAAAC,EAAC,QAAA,EAAK,WAAWM,EAAO,UAAW,UAAAP,GAAa;AAAA,SACvEV,KAAY,QAAQV,KAAe,2BAClC,QAAA,EAAK,WAAW2B,EAAO,UACrB,UAAA;AAAA,UAAAjB,KAAY,QAAQ,gBAAAW,EAAC,QAAA,EAAK,WAAWM,EAAO,WAAY,UAAAjB,GAAS;AAAA,UACjEV,KAAe,QAAQ,gBAAAqB,EAAC,UAAK,WAAWM,EAAO,iBAAkB,UAAA3B,EAAA,CAAY;AAAA,QAAA,GAChF;AAAA,QAEDC,KAAY,QAAQ,gBAAAoB,EAAC,UAAK,WAAWM,EAAO,cAAe,UAAA1B,EAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG3E,CAAC;"}
1
+ {"version":3,"file":"ListItem-B4Upc0Hy.js","sources":["../src/components/List/ListItem.tsx"],"sourcesContent":["import {\n forwardRef,\n type AnchorHTMLAttributes,\n type CSSProperties,\n type ElementType,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { Icon } from '../Icon'\nimport type { ThemeColor } from '../../theme'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport { useListSize } from './listContext'\nimport styles from './List.module.css'\n\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\nexport type ListItemSize = 'sm' | 'md' | 'lg'\n\n/** Leading `<Icon>` size per row size. */\nconst ICON_SIZE: Record<ListItemSize, 'sm' | 'md'> = { sm: 'sm', md: 'md', lg: 'md' }\n\nexport interface ListItemProps\n extends\n Omit<HTMLAttributes<HTMLElement>, 'color'>,\n Pick<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'target' | 'rel' | 'download'> {\n /** Leading element — a known `IconName` (rendered as `<Icon>`) or any node (e.g. an `Avatar`). */\n icon?: IconName | ReactNode\n /** Secondary muted line shown under the label. */\n description?: ReactNode\n /** Trailing content pinned to the right (icon, `Badge`, shortcut text, chevron, …). */\n trailing?: ReactNode\n /** Highlights the row as selected/active (menu selection, current nav route). */\n selected?: boolean\n /** Makes the row interactive (hover + cursor; adds `role`/`tabIndex`/keyboard when rendered plain). */\n clickable?: boolean\n /** Dims and inerts the row. */\n disabled?: boolean\n /** Row size — height / padding / font. Defaults to `md`. */\n size?: ListItemSize\n /** Theme color for the selected tint and clickable hover. Defaults to `primary`. */\n color?: ThemeColor\n /** Render a different element/component — e.g. `'a'`, `'button'`, or a router `Link`. Defaults to `div`. */\n as?: ElementType\n /** Primary label / content. */\n children?: ReactNode\n}\n\n/**\n * A flexible, reusable list row: leading `icon`, a label (`children`) with optional `description`, and\n * a `trailing` slot. `clickable` turns it interactive (hover + keyboard when rendered as a plain\n * element), `selected` highlights it, `disabled` inerts it. Render as a link/button/router `Link` via\n * `as`. Designed to compose inside `List` — for menus, the sidebar, or a standalone styled list.\n */\nexport const ListItem = forwardRef<HTMLElement, ListItemProps>(function ListItem(\n {\n icon,\n description,\n trailing,\n selected = false,\n clickable = false,\n disabled = false,\n size: sizeProp,\n color = 'primary',\n as,\n className,\n style,\n children,\n onClick,\n onKeyDown,\n ...props\n },\n ref,\n) {\n // an explicit `size` wins; otherwise inherit a surrounding `List`'s size, falling back to `md`\n const listSize = useListSize()\n const size = sizeProp ?? listSize ?? 'md'\n const Component = (as ?? 'div') as ElementType\n // Anchors, buttons, and custom components (e.g. a router Link) carry their own click + keyboard\n // semantics — only a plain element needs the button role/tabIndex/Enter-Space shim.\n const handlesOwnInteraction =\n as === 'a' || as === 'button' || typeof as === 'function' || typeof as === 'object'\n const isDivButton = clickable && !handlesOwnInteraction\n\n const renderedIcon =\n icon == null ? null : typeof icon === 'string' && ICON_NAME_SET.has(icon) ? (\n <Icon name={icon as IconName} size={ICON_SIZE[size]} />\n ) : (\n icon\n )\n\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (isDivButton && !disabled && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault()\n event.currentTarget.click()\n }\n onKeyDown?.(event)\n }\n\n return (\n <Component\n ref={ref}\n className={clsx(\n styles.item,\n styles[size],\n selected && styles.selected,\n clickable && styles.clickable,\n disabled && styles.disabled,\n className,\n )}\n style={{ '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`, ...style } as CSSProperties}\n role={isDivButton ? 'button' : undefined}\n tabIndex={isDivButton ? (disabled ? -1 : 0) : undefined}\n aria-disabled={disabled || undefined}\n aria-current={selected || undefined}\n onClick={disabled ? undefined : onClick}\n onKeyDown={clickable ? handleKeyDown : onKeyDown}\n {...props}\n >\n {renderedIcon != null && <span className={styles.itemIcon}>{renderedIcon}</span>}\n {(children != null || description != null) && (\n <span className={styles.itemText}>\n {children != null && <span className={styles.itemLabel}>{children}</span>}\n {description != null && <span className={styles.itemDescription}>{description}</span>}\n </span>\n )}\n {trailing != null && <span className={styles.itemTrailing}>{trailing}</span>}\n </Component>\n )\n})\n"],"names":["ICON_NAME_SET","ICON_NAMES","ICON_SIZE","ListItem","forwardRef","icon","description","trailing","selected","clickable","disabled","sizeProp","color","as","className","style","children","onClick","onKeyDown","props","ref","listSize","useListSize","size","Component","isDivButton","renderedIcon","jsx","Icon","handleKeyDown","event","jsxs","clsx","styles"],"mappings":";;;;;;;;;;;;;;;;;;;GAgBMA,IAAgB,IAAI,IAAYC,CAAU,GAK1CC,IAA+C,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,KAAA,GAkClEC,IAAWC,EAAuC,SAC7D;AAAA,EACE,MAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,UAAAC,IAAW;AAAA,EACX,MAAMC;AAAA,EACN,OAAAC,IAAQ;AAAA,EACR,IAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AAEA,QAAMC,IAAWC,EAAA,GACXC,IAAOZ,KAAYU,KAAY,MAC/BG,IAAaX,KAAM,OAKnBY,IAAchB,KAAa,EAD/BI,MAAO,OAAOA,MAAO,YAAY,OAAOA,KAAO,cAAc,OAAOA,KAAO,WAGvEa,IACJrB,KAAQ,OAAO,OAAO,OAAOA,KAAS,YAAYL,EAAc,IAAIK,CAAI,IACtE,gBAAAsB,EAACC,KAAK,MAAMvB,GAAkB,MAAMH,EAAUqB,CAAI,GAAG,IAErDlB,GAGEwB,IAAgB,CAACC,MAAsC;AAC3D,IAAIL,KAAe,CAACf,MAAaoB,EAAM,QAAQ,WAAWA,EAAM,QAAQ,SACtEA,EAAM,eAAA,GACNA,EAAM,cAAc,MAAA,IAEtBZ,KAAA,QAAAA,EAAYY;AAAA,EACd;AAEA,SACE,gBAAAC;AAAA,IAACP;AAAA,IAAA;AAAA,MACC,KAAAJ;AAAA,MACA,WAAWY;AAAA,QACTC,EAAO;AAAA,QACPA,EAAOV,CAAI;AAAA,QACXf,KAAYyB,EAAO;AAAA,QACnBxB,KAAawB,EAAO;AAAA,QACpBvB,KAAYuB,EAAO;AAAA,QACnBnB;AAAA,MAAA;AAAA,MAEF,OAAO,EAAE,gBAAgB,kBAAkBF,CAAK,SAAS,GAAGG,EAAA;AAAA,MAC5D,MAAMU,IAAc,WAAW;AAAA,MAC/B,UAAUA,IAAef,IAAW,KAAK,IAAK;AAAA,MAC9C,iBAAeA,KAAY;AAAA,MAC3B,gBAAcF,KAAY;AAAA,MAC1B,SAASE,IAAW,SAAYO;AAAA,MAChC,WAAWR,IAAYoB,IAAgBX;AAAA,MACtC,GAAGC;AAAA,MAEH,UAAA;AAAA,QAAAO,KAAgB,QAAQ,gBAAAC,EAAC,QAAA,EAAK,WAAWM,EAAO,UAAW,UAAAP,GAAa;AAAA,SACvEV,KAAY,QAAQV,KAAe,2BAClC,QAAA,EAAK,WAAW2B,EAAO,UACrB,UAAA;AAAA,UAAAjB,KAAY,QAAQ,gBAAAW,EAAC,QAAA,EAAK,WAAWM,EAAO,WAAY,UAAAjB,GAAS;AAAA,UACjEV,KAAe,QAAQ,gBAAAqB,EAAC,UAAK,WAAWM,EAAO,iBAAkB,UAAA3B,EAAA,CAAY;AAAA,QAAA,GAChF;AAAA,QAEDC,KAAY,QAAQ,gBAAAoB,EAAC,UAAK,WAAWM,EAAO,cAAe,UAAA1B,EAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG3E,CAAC;"}
@@ -1,2 +1,2 @@
1
- "use strict";const t=require("react/jsx-runtime"),z=require("react"),k=require("clsx"),q=require("./Icon-CXTl_QAP.cjs"),S=require("./names-C2Yj1p3u.cjs"),v=require("./List-CNz2M3-q.cjs"),y="_item_1d91m_3",C="_sm_1d91m_25",E="_md_1d91m_31",O="_lg_1d91m_36",D="_itemIcon_1d91m_43",A="_itemText_1d91m_51",M="_itemLabel_1d91m_59",R="_itemDescription_1d91m_66",w="_itemTrailing_1d91m_76",B="_clickable_1d91m_86",Z="_selected_1d91m_103",$="_disabled_1d91m_124",e={item:y,sm:C,md:E,lg:O,itemIcon:D,itemText:A,itemLabel:M,itemDescription:R,itemTrailing:w,clickable:B,selected:Z,disabled:$},F=new Set(S.ICON_NAMES),G={sm:"sm",md:"md",lg:"md"},H=z.forwardRef(function({icon:s,description:l,trailing:_,selected:d=!1,clickable:o=!1,disabled:i=!1,size:x,color:b="primary",as:n,className:p,style:f,children:r,onClick:g,onKeyDown:m,...N},T){const j=v.useListSize(),u=x??j??"md",L=n??"div",a=o&&!(n==="a"||n==="button"||typeof n=="function"||typeof n=="object"),I=s==null?null:typeof s=="string"&&F.has(s)?t.jsx(q.Icon,{name:s,size:G[u]}):s,h=c=>{a&&!i&&(c.key==="Enter"||c.key===" ")&&(c.preventDefault(),c.currentTarget.click()),m==null||m(c)};return t.jsxs(L,{ref:T,className:k.clsx(e.item,e[u],d&&e.selected,o&&e.clickable,i&&e.disabled,p),style:{"--tz-btn-rgb":`var(--tz-color-${b}-rgb)`,...f},role:a?"button":void 0,tabIndex:a?i?-1:0:void 0,"aria-disabled":i||void 0,"aria-current":d||void 0,onClick:i?void 0:g,onKeyDown:o?h:m,...N,children:[I!=null&&t.jsx("span",{className:e.itemIcon,children:I}),(r!=null||l!=null)&&t.jsxs("span",{className:e.itemText,children:[r!=null&&t.jsx("span",{className:e.itemLabel,children:r}),l!=null&&t.jsx("span",{className:e.itemDescription,children:l})]}),_!=null&&t.jsx("span",{className:e.itemTrailing,children:_})]})});exports.ListItem=H;
2
- //# sourceMappingURL=ListItem-RH-D-Wey.cjs.map
1
+ "use strict";const t=require("react/jsx-runtime"),z=require("react"),k=require("clsx"),q=require("./Icon-CXTl_QAP.cjs"),S=require("./names-C2Yj1p3u.cjs"),v=require("./List-ChXO0Hz-.cjs"),y="_item_1d91m_3",C="_sm_1d91m_25",E="_md_1d91m_31",O="_lg_1d91m_36",D="_itemIcon_1d91m_43",A="_itemText_1d91m_51",M="_itemLabel_1d91m_59",R="_itemDescription_1d91m_66",w="_itemTrailing_1d91m_76",B="_clickable_1d91m_86",Z="_selected_1d91m_103",$="_disabled_1d91m_124",e={item:y,sm:C,md:E,lg:O,itemIcon:D,itemText:A,itemLabel:M,itemDescription:R,itemTrailing:w,clickable:B,selected:Z,disabled:$},F=new Set(S.ICON_NAMES),G={sm:"sm",md:"md",lg:"md"},H=z.forwardRef(function({icon:s,description:l,trailing:_,selected:d=!1,clickable:o=!1,disabled:i=!1,size:x,color:b="primary",as:n,className:p,style:f,children:r,onClick:g,onKeyDown:m,...N},T){const j=v.useListSize(),u=x??j??"md",L=n??"div",a=o&&!(n==="a"||n==="button"||typeof n=="function"||typeof n=="object"),I=s==null?null:typeof s=="string"&&F.has(s)?t.jsx(q.Icon,{name:s,size:G[u]}):s,h=c=>{a&&!i&&(c.key==="Enter"||c.key===" ")&&(c.preventDefault(),c.currentTarget.click()),m==null||m(c)};return t.jsxs(L,{ref:T,className:k.clsx(e.item,e[u],d&&e.selected,o&&e.clickable,i&&e.disabled,p),style:{"--tz-btn-rgb":`var(--tz-color-${b}-rgb)`,...f},role:a?"button":void 0,tabIndex:a?i?-1:0:void 0,"aria-disabled":i||void 0,"aria-current":d||void 0,onClick:i?void 0:g,onKeyDown:o?h:m,...N,children:[I!=null&&t.jsx("span",{className:e.itemIcon,children:I}),(r!=null||l!=null)&&t.jsxs("span",{className:e.itemText,children:[r!=null&&t.jsx("span",{className:e.itemLabel,children:r}),l!=null&&t.jsx("span",{className:e.itemDescription,children:l})]}),_!=null&&t.jsx("span",{className:e.itemTrailing,children:_})]})});exports.ListItem=H;
2
+ //# sourceMappingURL=ListItem-DWQorRxG.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListItem-RH-D-Wey.cjs","sources":["../src/components/List/ListItem.tsx"],"sourcesContent":["import {\n forwardRef,\n type AnchorHTMLAttributes,\n type CSSProperties,\n type ElementType,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { Icon } from '../Icon'\nimport type { ThemeColor } from '../../theme'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport { useListSize } from './listContext'\nimport styles from './List.module.css'\n\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\nexport type ListItemSize = 'sm' | 'md' | 'lg'\n\n/** Leading `<Icon>` size per row size. */\nconst ICON_SIZE: Record<ListItemSize, 'sm' | 'md'> = { sm: 'sm', md: 'md', lg: 'md' }\n\nexport interface ListItemProps\n extends\n Omit<HTMLAttributes<HTMLElement>, 'color'>,\n Pick<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'target' | 'rel' | 'download'> {\n /** Leading element — a known `IconName` (rendered as `<Icon>`) or any node (e.g. an `Avatar`). */\n icon?: IconName | ReactNode\n /** Secondary muted line shown under the label. */\n description?: ReactNode\n /** Trailing content pinned to the right (icon, `Badge`, shortcut text, chevron, …). */\n trailing?: ReactNode\n /** Highlights the row as selected/active (menu selection, current nav route). */\n selected?: boolean\n /** Makes the row interactive (hover + cursor; adds `role`/`tabIndex`/keyboard when rendered plain). */\n clickable?: boolean\n /** Dims and inerts the row. */\n disabled?: boolean\n /** Row size — height / padding / font. Defaults to `md`. */\n size?: ListItemSize\n /** Theme color for the selected tint and clickable hover. Defaults to `primary`. */\n color?: ThemeColor\n /** Render a different element/component — e.g. `'a'`, `'button'`, or a router `Link`. Defaults to `div`. */\n as?: ElementType\n /** Primary label / content. */\n children?: ReactNode\n}\n\n/**\n * A flexible, reusable list row: leading `icon`, a label (`children`) with optional `description`, and\n * a `trailing` slot. `clickable` turns it interactive (hover + keyboard when rendered as a plain\n * element), `selected` highlights it, `disabled` inerts it. Render as a link/button/router `Link` via\n * `as`. Designed to compose inside `List` — for menus, the sidebar, or a standalone styled list.\n */\nexport const ListItem = forwardRef<HTMLElement, ListItemProps>(function ListItem(\n {\n icon,\n description,\n trailing,\n selected = false,\n clickable = false,\n disabled = false,\n size: sizeProp,\n color = 'primary',\n as,\n className,\n style,\n children,\n onClick,\n onKeyDown,\n ...props\n },\n ref,\n) {\n // an explicit `size` wins; otherwise inherit a surrounding `List`'s size, falling back to `md`\n const listSize = useListSize()\n const size = sizeProp ?? listSize ?? 'md'\n const Component = (as ?? 'div') as ElementType\n // Anchors, buttons, and custom components (e.g. a router Link) carry their own click + keyboard\n // semantics — only a plain element needs the button role/tabIndex/Enter-Space shim.\n const handlesOwnInteraction =\n as === 'a' || as === 'button' || typeof as === 'function' || typeof as === 'object'\n const isDivButton = clickable && !handlesOwnInteraction\n\n const renderedIcon =\n icon == null ? null : typeof icon === 'string' && ICON_NAME_SET.has(icon) ? (\n <Icon name={icon as IconName} size={ICON_SIZE[size]} />\n ) : (\n icon\n )\n\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (isDivButton && !disabled && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault()\n event.currentTarget.click()\n }\n onKeyDown?.(event)\n }\n\n return (\n <Component\n ref={ref}\n className={clsx(\n styles.item,\n styles[size],\n selected && styles.selected,\n clickable && styles.clickable,\n disabled && styles.disabled,\n className,\n )}\n style={{ '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`, ...style } as CSSProperties}\n role={isDivButton ? 'button' : undefined}\n tabIndex={isDivButton ? (disabled ? -1 : 0) : undefined}\n aria-disabled={disabled || undefined}\n aria-current={selected || undefined}\n onClick={disabled ? undefined : onClick}\n onKeyDown={clickable ? handleKeyDown : onKeyDown}\n {...props}\n >\n {renderedIcon != null && <span className={styles.itemIcon}>{renderedIcon}</span>}\n {(children != null || description != null) && (\n <span className={styles.itemText}>\n {children != null && <span className={styles.itemLabel}>{children}</span>}\n {description != null && <span className={styles.itemDescription}>{description}</span>}\n </span>\n )}\n {trailing != null && <span className={styles.itemTrailing}>{trailing}</span>}\n </Component>\n )\n})\n"],"names":["ICON_NAME_SET","ICON_NAMES","ICON_SIZE","ListItem","forwardRef","icon","description","trailing","selected","clickable","disabled","sizeProp","color","as","className","style","children","onClick","onKeyDown","props","ref","listSize","useListSize","size","Component","isDivButton","renderedIcon","jsx","Icon","handleKeyDown","event","jsxs","clsx","styles"],"mappings":"skBAgBMA,EAAgB,IAAI,IAAYC,YAAU,EAK1CC,EAA+C,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,IAAA,EAkClEC,EAAWC,EAAAA,WAAuC,SAC7D,CACE,KAAAC,EACA,YAAAC,EACA,SAAAC,EACA,SAAAC,EAAW,GACX,UAAAC,EAAY,GACZ,SAAAC,EAAW,GACX,KAAMC,EACN,MAAAC,EAAQ,UACR,GAAAC,EACA,UAAAC,EACA,MAAAC,EACA,SAAAC,EACA,QAAAC,EACA,UAAAC,EACA,GAAGC,CACL,EACAC,EACA,CAEA,MAAMC,EAAWC,EAAAA,YAAA,EACXC,EAAOZ,GAAYU,GAAY,KAC/BG,EAAaX,GAAM,MAKnBY,EAAchB,GAAa,EAD/BI,IAAO,KAAOA,IAAO,UAAY,OAAOA,GAAO,YAAc,OAAOA,GAAO,UAGvEa,EACJrB,GAAQ,KAAO,KAAO,OAAOA,GAAS,UAAYL,EAAc,IAAIK,CAAI,EACtEsB,MAACC,EAAAA,MAAK,KAAMvB,EAAkB,KAAMH,EAAUqB,CAAI,EAAG,EAErDlB,EAGEwB,EAAiBC,GAAsC,CACvDL,GAAe,CAACf,IAAaoB,EAAM,MAAQ,SAAWA,EAAM,MAAQ,OACtEA,EAAM,eAAA,EACNA,EAAM,cAAc,MAAA,GAEtBZ,GAAA,MAAAA,EAAYY,EACd,EAEA,OACEC,EAAAA,KAACP,EAAA,CACC,IAAAJ,EACA,UAAWY,EAAAA,KACTC,EAAO,KACPA,EAAOV,CAAI,EACXf,GAAYyB,EAAO,SACnBxB,GAAawB,EAAO,UACpBvB,GAAYuB,EAAO,SACnBnB,CAAA,EAEF,MAAO,CAAE,eAAgB,kBAAkBF,CAAK,QAAS,GAAGG,CAAA,EAC5D,KAAMU,EAAc,SAAW,OAC/B,SAAUA,EAAef,EAAW,GAAK,EAAK,OAC9C,gBAAeA,GAAY,OAC3B,eAAcF,GAAY,OAC1B,QAASE,EAAW,OAAYO,EAChC,UAAWR,EAAYoB,EAAgBX,EACtC,GAAGC,EAEH,SAAA,CAAAO,GAAgB,MAAQC,EAAAA,IAAC,OAAA,CAAK,UAAWM,EAAO,SAAW,SAAAP,EAAa,GACvEV,GAAY,MAAQV,GAAe,cAClC,OAAA,CAAK,UAAW2B,EAAO,SACrB,SAAA,CAAAjB,GAAY,MAAQW,EAAAA,IAAC,OAAA,CAAK,UAAWM,EAAO,UAAY,SAAAjB,EAAS,EACjEV,GAAe,MAAQqB,EAAAA,IAAC,QAAK,UAAWM,EAAO,gBAAkB,SAAA3B,CAAA,CAAY,CAAA,EAChF,EAEDC,GAAY,MAAQoB,EAAAA,IAAC,QAAK,UAAWM,EAAO,aAAe,SAAA1B,CAAA,CAAS,CAAA,CAAA,CAAA,CAG3E,CAAC"}
1
+ {"version":3,"file":"ListItem-DWQorRxG.cjs","sources":["../src/components/List/ListItem.tsx"],"sourcesContent":["import {\n forwardRef,\n type AnchorHTMLAttributes,\n type CSSProperties,\n type ElementType,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { Icon } from '../Icon'\nimport type { ThemeColor } from '../../theme'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport { useListSize } from './listContext'\nimport styles from './List.module.css'\n\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\nexport type ListItemSize = 'sm' | 'md' | 'lg'\n\n/** Leading `<Icon>` size per row size. */\nconst ICON_SIZE: Record<ListItemSize, 'sm' | 'md'> = { sm: 'sm', md: 'md', lg: 'md' }\n\nexport interface ListItemProps\n extends\n Omit<HTMLAttributes<HTMLElement>, 'color'>,\n Pick<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'target' | 'rel' | 'download'> {\n /** Leading element — a known `IconName` (rendered as `<Icon>`) or any node (e.g. an `Avatar`). */\n icon?: IconName | ReactNode\n /** Secondary muted line shown under the label. */\n description?: ReactNode\n /** Trailing content pinned to the right (icon, `Badge`, shortcut text, chevron, …). */\n trailing?: ReactNode\n /** Highlights the row as selected/active (menu selection, current nav route). */\n selected?: boolean\n /** Makes the row interactive (hover + cursor; adds `role`/`tabIndex`/keyboard when rendered plain). */\n clickable?: boolean\n /** Dims and inerts the row. */\n disabled?: boolean\n /** Row size — height / padding / font. Defaults to `md`. */\n size?: ListItemSize\n /** Theme color for the selected tint and clickable hover. Defaults to `primary`. */\n color?: ThemeColor\n /** Render a different element/component — e.g. `'a'`, `'button'`, or a router `Link`. Defaults to `div`. */\n as?: ElementType\n /** Primary label / content. */\n children?: ReactNode\n}\n\n/**\n * A flexible, reusable list row: leading `icon`, a label (`children`) with optional `description`, and\n * a `trailing` slot. `clickable` turns it interactive (hover + keyboard when rendered as a plain\n * element), `selected` highlights it, `disabled` inerts it. Render as a link/button/router `Link` via\n * `as`. Designed to compose inside `List` — for menus, the sidebar, or a standalone styled list.\n */\nexport const ListItem = forwardRef<HTMLElement, ListItemProps>(function ListItem(\n {\n icon,\n description,\n trailing,\n selected = false,\n clickable = false,\n disabled = false,\n size: sizeProp,\n color = 'primary',\n as,\n className,\n style,\n children,\n onClick,\n onKeyDown,\n ...props\n },\n ref,\n) {\n // an explicit `size` wins; otherwise inherit a surrounding `List`'s size, falling back to `md`\n const listSize = useListSize()\n const size = sizeProp ?? listSize ?? 'md'\n const Component = (as ?? 'div') as ElementType\n // Anchors, buttons, and custom components (e.g. a router Link) carry their own click + keyboard\n // semantics — only a plain element needs the button role/tabIndex/Enter-Space shim.\n const handlesOwnInteraction =\n as === 'a' || as === 'button' || typeof as === 'function' || typeof as === 'object'\n const isDivButton = clickable && !handlesOwnInteraction\n\n const renderedIcon =\n icon == null ? null : typeof icon === 'string' && ICON_NAME_SET.has(icon) ? (\n <Icon name={icon as IconName} size={ICON_SIZE[size]} />\n ) : (\n icon\n )\n\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (isDivButton && !disabled && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault()\n event.currentTarget.click()\n }\n onKeyDown?.(event)\n }\n\n return (\n <Component\n ref={ref}\n className={clsx(\n styles.item,\n styles[size],\n selected && styles.selected,\n clickable && styles.clickable,\n disabled && styles.disabled,\n className,\n )}\n style={{ '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`, ...style } as CSSProperties}\n role={isDivButton ? 'button' : undefined}\n tabIndex={isDivButton ? (disabled ? -1 : 0) : undefined}\n aria-disabled={disabled || undefined}\n aria-current={selected || undefined}\n onClick={disabled ? undefined : onClick}\n onKeyDown={clickable ? handleKeyDown : onKeyDown}\n {...props}\n >\n {renderedIcon != null && <span className={styles.itemIcon}>{renderedIcon}</span>}\n {(children != null || description != null) && (\n <span className={styles.itemText}>\n {children != null && <span className={styles.itemLabel}>{children}</span>}\n {description != null && <span className={styles.itemDescription}>{description}</span>}\n </span>\n )}\n {trailing != null && <span className={styles.itemTrailing}>{trailing}</span>}\n </Component>\n )\n})\n"],"names":["ICON_NAME_SET","ICON_NAMES","ICON_SIZE","ListItem","forwardRef","icon","description","trailing","selected","clickable","disabled","sizeProp","color","as","className","style","children","onClick","onKeyDown","props","ref","listSize","useListSize","size","Component","isDivButton","renderedIcon","jsx","Icon","handleKeyDown","event","jsxs","clsx","styles"],"mappings":"skBAgBMA,EAAgB,IAAI,IAAYC,YAAU,EAK1CC,EAA+C,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,IAAA,EAkClEC,EAAWC,EAAAA,WAAuC,SAC7D,CACE,KAAAC,EACA,YAAAC,EACA,SAAAC,EACA,SAAAC,EAAW,GACX,UAAAC,EAAY,GACZ,SAAAC,EAAW,GACX,KAAMC,EACN,MAAAC,EAAQ,UACR,GAAAC,EACA,UAAAC,EACA,MAAAC,EACA,SAAAC,EACA,QAAAC,EACA,UAAAC,EACA,GAAGC,CACL,EACAC,EACA,CAEA,MAAMC,EAAWC,EAAAA,YAAA,EACXC,EAAOZ,GAAYU,GAAY,KAC/BG,EAAaX,GAAM,MAKnBY,EAAchB,GAAa,EAD/BI,IAAO,KAAOA,IAAO,UAAY,OAAOA,GAAO,YAAc,OAAOA,GAAO,UAGvEa,EACJrB,GAAQ,KAAO,KAAO,OAAOA,GAAS,UAAYL,EAAc,IAAIK,CAAI,EACtEsB,MAACC,EAAAA,MAAK,KAAMvB,EAAkB,KAAMH,EAAUqB,CAAI,EAAG,EAErDlB,EAGEwB,EAAiBC,GAAsC,CACvDL,GAAe,CAACf,IAAaoB,EAAM,MAAQ,SAAWA,EAAM,MAAQ,OACtEA,EAAM,eAAA,EACNA,EAAM,cAAc,MAAA,GAEtBZ,GAAA,MAAAA,EAAYY,EACd,EAEA,OACEC,EAAAA,KAACP,EAAA,CACC,IAAAJ,EACA,UAAWY,EAAAA,KACTC,EAAO,KACPA,EAAOV,CAAI,EACXf,GAAYyB,EAAO,SACnBxB,GAAawB,EAAO,UACpBvB,GAAYuB,EAAO,SACnBnB,CAAA,EAEF,MAAO,CAAE,eAAgB,kBAAkBF,CAAK,QAAS,GAAGG,CAAA,EAC5D,KAAMU,EAAc,SAAW,OAC/B,SAAUA,EAAef,EAAW,GAAK,EAAK,OAC9C,gBAAeA,GAAY,OAC3B,eAAcF,GAAY,OAC1B,QAASE,EAAW,OAAYO,EAChC,UAAWR,EAAYoB,EAAgBX,EACtC,GAAGC,EAEH,SAAA,CAAAO,GAAgB,MAAQC,EAAAA,IAAC,OAAA,CAAK,UAAWM,EAAO,SAAW,SAAAP,EAAa,GACvEV,GAAY,MAAQV,GAAe,cAClC,OAAA,CAAK,UAAW2B,EAAO,SACrB,SAAA,CAAAjB,GAAY,MAAQW,EAAAA,IAAC,OAAA,CAAK,UAAWM,EAAO,UAAY,SAAAjB,EAAS,EACjEV,GAAe,MAAQqB,EAAAA,IAAC,QAAK,UAAWM,EAAO,gBAAkB,SAAA3B,CAAA,CAAY,CAAA,EAChF,EAEDC,GAAY,MAAQoB,EAAAA,IAAC,QAAK,UAAWM,EAAO,aAAe,SAAA1B,CAAA,CAAS,CAAA,CAAA,CAAA,CAG3E,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _ } from "react/jsx-runtime";
2
2
  import { forwardRef as d } from "react";
3
3
  import { clsx as n } from "clsx";
4
- import { a as c } from "./ConfigProvider-2c94kUOk.js";
4
+ import { a as c } from "./ConfigProvider-sEZzNTeU.js";
5
5
  const q = "_loader_qv0xq_2", i = "_sm_qv0xq_16", p = "_md_qv0xq_22", x = "_lg_qv0xq_28", s = {
6
6
  loader: q,
7
7
  "tz-loader-spin": "_tz-loader-spin_qv0xq_1",
@@ -25,4 +25,4 @@ const q = "_loader_qv0xq_2", i = "_sm_qv0xq_16", p = "_md_qv0xq_22", x = "_lg_qv
25
25
  export {
26
26
  L
27
27
  };
28
- //# sourceMappingURL=Loader-C4JoXOyA.js.map
28
+ //# sourceMappingURL=Loader-DFlpw5Zc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Loader-C4JoXOyA.js","sources":["../src/components/Loader/Loader.tsx"],"sourcesContent":["import { forwardRef, type CSSProperties, type HTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type ThemeColor } from '../../theme'\nimport styles from './Loader.module.css'\n\nexport type LoaderSize = 'sm' | 'md' | 'lg'\n\nexport interface LoaderProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'color'> {\n /** Preset size — matches the Icon sizes: `sm` 14px · `md` 18px · `lg` 22px. Defaults to `md`. */\n size?: LoaderSize\n /** Theme palette token used to color the spinner. Omit to inherit the surrounding text color (`currentColor`). */\n color?: ThemeColor\n}\n\n/**\n * A circular spinner. Works standalone as a loading indicator or inside a\n * `Button`, where it inherits the button color via `currentColor` unless an\n * explicit `color` is given.\n */\nexport const Loader = forwardRef<HTMLSpanElement, LoaderProps>(function Loader(\n { size = 'md', color, className, style, ...props },\n ref,\n) {\n const t = useT()\n return (\n <span\n ref={ref}\n role=\"status\"\n aria-label={t('loader.label')}\n {...props}\n className={clsx(styles.loader, styles[size], className)}\n style={color ? ({ color: `var(--tz-color-${color})`, ...style } as CSSProperties) : style}\n />\n )\n})\n"],"names":["Loader","forwardRef","size","color","className","style","props","ref","t","useT","jsx","clsx","styles"],"mappings":";;;;;;;;;;GAmBaA,IAASC,EAAyC,SAC7D,EAAE,MAAAC,IAAO,MAAM,OAAAC,GAAO,WAAAC,GAAW,OAAAC,GAAO,GAAGC,EAAA,GAC3CC,GACA;AACA,QAAMC,IAAIC,EAAA;AACV,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAH;AAAA,MACA,MAAK;AAAA,MACL,cAAYC,EAAE,cAAc;AAAA,MAC3B,GAAGF;AAAA,MACJ,WAAWK,EAAKC,EAAO,QAAQA,EAAOV,CAAI,GAAGE,CAAS;AAAA,MACtD,OAAOD,IAAS,EAAE,OAAO,kBAAkBA,CAAK,KAAK,GAAGE,MAA4BA;AAAA,IAAA;AAAA,EAAA;AAG1F,CAAC;"}
1
+ {"version":3,"file":"Loader-DFlpw5Zc.js","sources":["../src/components/Loader/Loader.tsx"],"sourcesContent":["import { forwardRef, type CSSProperties, type HTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type ThemeColor } from '../../theme'\nimport styles from './Loader.module.css'\n\nexport type LoaderSize = 'sm' | 'md' | 'lg'\n\nexport interface LoaderProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'color'> {\n /** Preset size — matches the Icon sizes: `sm` 14px · `md` 18px · `lg` 22px. Defaults to `md`. */\n size?: LoaderSize\n /** Theme palette token used to color the spinner. Omit to inherit the surrounding text color (`currentColor`). */\n color?: ThemeColor\n}\n\n/**\n * A circular spinner. Works standalone as a loading indicator or inside a\n * `Button`, where it inherits the button color via `currentColor` unless an\n * explicit `color` is given.\n */\nexport const Loader = forwardRef<HTMLSpanElement, LoaderProps>(function Loader(\n { size = 'md', color, className, style, ...props },\n ref,\n) {\n const t = useT()\n return (\n <span\n ref={ref}\n role=\"status\"\n aria-label={t('loader.label')}\n {...props}\n className={clsx(styles.loader, styles[size], className)}\n style={color ? ({ color: `var(--tz-color-${color})`, ...style } as CSSProperties) : style}\n />\n )\n})\n"],"names":["Loader","forwardRef","size","color","className","style","props","ref","t","useT","jsx","clsx","styles"],"mappings":";;;;;;;;;;GAmBaA,IAASC,EAAyC,SAC7D,EAAE,MAAAC,IAAO,MAAM,OAAAC,GAAO,WAAAC,GAAW,OAAAC,GAAO,GAAGC,EAAA,GAC3CC,GACA;AACA,QAAMC,IAAIC,EAAA;AACV,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAH;AAAA,MACA,MAAK;AAAA,MACL,cAAYC,EAAE,cAAc;AAAA,MAC3B,GAAGF;AAAA,MACJ,WAAWK,EAAKC,EAAO,QAAQA,EAAOV,CAAI,GAAGE,CAAS;AAAA,MACtD,OAAOD,IAAS,EAAE,OAAO,kBAAkBA,CAAK,KAAK,GAAGE,MAA4BA;AAAA,IAAA;AAAA,EAAA;AAG1F,CAAC;"}
@@ -1,2 +1,2 @@
1
- "use strict";const c=require("react/jsx-runtime"),d=require("react"),_=require("clsx"),q=require("./ConfigProvider-ByOFXVyP.cjs"),i="_loader_qv0xq_2",u="_sm_qv0xq_16",m="_md_qv0xq_22",x="_lg_qv0xq_28",s={loader:i,"tz-loader-spin":"_tz-loader-spin_qv0xq_1",sm:u,md:m,lg:x},v=d.forwardRef(function({size:o="md",color:e,className:t,style:r,...a},l){const n=q.useT();return c.jsx("span",{ref:l,role:"status","aria-label":n("loader.label"),...a,className:_.clsx(s.loader,s[o],t),style:e?{color:`var(--tz-color-${e})`,...r}:r})});exports.Loader=v;
2
- //# sourceMappingURL=Loader-D1MtlQOH.cjs.map
1
+ "use strict";const c=require("react/jsx-runtime"),d=require("react"),_=require("clsx"),q=require("./ConfigProvider-DFy6pL-C.cjs"),i="_loader_qv0xq_2",u="_sm_qv0xq_16",m="_md_qv0xq_22",x="_lg_qv0xq_28",s={loader:i,"tz-loader-spin":"_tz-loader-spin_qv0xq_1",sm:u,md:m,lg:x},v=d.forwardRef(function({size:o="md",color:e,className:t,style:r,...a},l){const n=q.useT();return c.jsx("span",{ref:l,role:"status","aria-label":n("loader.label"),...a,className:_.clsx(s.loader,s[o],t),style:e?{color:`var(--tz-color-${e})`,...r}:r})});exports.Loader=v;
2
+ //# sourceMappingURL=Loader-plA9fgHf.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Loader-D1MtlQOH.cjs","sources":["../src/components/Loader/Loader.tsx"],"sourcesContent":["import { forwardRef, type CSSProperties, type HTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type ThemeColor } from '../../theme'\nimport styles from './Loader.module.css'\n\nexport type LoaderSize = 'sm' | 'md' | 'lg'\n\nexport interface LoaderProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'color'> {\n /** Preset size — matches the Icon sizes: `sm` 14px · `md` 18px · `lg` 22px. Defaults to `md`. */\n size?: LoaderSize\n /** Theme palette token used to color the spinner. Omit to inherit the surrounding text color (`currentColor`). */\n color?: ThemeColor\n}\n\n/**\n * A circular spinner. Works standalone as a loading indicator or inside a\n * `Button`, where it inherits the button color via `currentColor` unless an\n * explicit `color` is given.\n */\nexport const Loader = forwardRef<HTMLSpanElement, LoaderProps>(function Loader(\n { size = 'md', color, className, style, ...props },\n ref,\n) {\n const t = useT()\n return (\n <span\n ref={ref}\n role=\"status\"\n aria-label={t('loader.label')}\n {...props}\n className={clsx(styles.loader, styles[size], className)}\n style={color ? ({ color: `var(--tz-color-${color})`, ...style } as CSSProperties) : style}\n />\n )\n})\n"],"names":["Loader","forwardRef","size","color","className","style","props","ref","t","useT","jsx","clsx","styles"],"mappings":"gRAmBaA,EAASC,EAAAA,WAAyC,SAC7D,CAAE,KAAAC,EAAO,KAAM,MAAAC,EAAO,UAAAC,EAAW,MAAAC,EAAO,GAAGC,CAAA,EAC3CC,EACA,CACA,MAAMC,EAAIC,EAAAA,KAAA,EACV,OACEC,EAAAA,IAAC,OAAA,CACC,IAAAH,EACA,KAAK,SACL,aAAYC,EAAE,cAAc,EAC3B,GAAGF,EACJ,UAAWK,EAAAA,KAAKC,EAAO,OAAQA,EAAOV,CAAI,EAAGE,CAAS,EACtD,MAAOD,EAAS,CAAE,MAAO,kBAAkBA,CAAK,IAAK,GAAGE,GAA4BA,CAAA,CAAA,CAG1F,CAAC"}
1
+ {"version":3,"file":"Loader-plA9fgHf.cjs","sources":["../src/components/Loader/Loader.tsx"],"sourcesContent":["import { forwardRef, type CSSProperties, type HTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type ThemeColor } from '../../theme'\nimport styles from './Loader.module.css'\n\nexport type LoaderSize = 'sm' | 'md' | 'lg'\n\nexport interface LoaderProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'color'> {\n /** Preset size — matches the Icon sizes: `sm` 14px · `md` 18px · `lg` 22px. Defaults to `md`. */\n size?: LoaderSize\n /** Theme palette token used to color the spinner. Omit to inherit the surrounding text color (`currentColor`). */\n color?: ThemeColor\n}\n\n/**\n * A circular spinner. Works standalone as a loading indicator or inside a\n * `Button`, where it inherits the button color via `currentColor` unless an\n * explicit `color` is given.\n */\nexport const Loader = forwardRef<HTMLSpanElement, LoaderProps>(function Loader(\n { size = 'md', color, className, style, ...props },\n ref,\n) {\n const t = useT()\n return (\n <span\n ref={ref}\n role=\"status\"\n aria-label={t('loader.label')}\n {...props}\n className={clsx(styles.loader, styles[size], className)}\n style={color ? ({ color: `var(--tz-color-${color})`, ...style } as CSSProperties) : style}\n />\n )\n})\n"],"names":["Loader","forwardRef","size","color","className","style","props","ref","t","useT","jsx","clsx","styles"],"mappings":"gRAmBaA,EAASC,EAAAA,WAAyC,SAC7D,CAAE,KAAAC,EAAO,KAAM,MAAAC,EAAO,UAAAC,EAAW,MAAAC,EAAO,GAAGC,CAAA,EAC3CC,EACA,CACA,MAAMC,EAAIC,EAAAA,KAAA,EACV,OACEC,EAAAA,IAAC,OAAA,CACC,IAAAH,EACA,KAAK,SACL,aAAYC,EAAE,cAAc,EAC3B,GAAGF,EACJ,UAAWK,EAAAA,KAAKC,EAAO,OAAQA,EAAOV,CAAI,EAAGE,CAAS,EACtD,MAAOD,EAAS,CAAE,MAAO,kBAAkBA,CAAK,IAAK,GAAGE,GAA4BA,CAAA,CAAA,CAG1F,CAAC"}
@@ -0,0 +1,82 @@
1
+ import { jsx as x } from "react/jsx-runtime";
2
+ import { forwardRef as _, useMemo as E, Children as j, useState as C, useRef as b, useCallback as I, useLayoutEffect as q, useEffect as B } from "react";
3
+ import { s as w } from "./Flex-BFn4P1tJ.js";
4
+ import { r as A } from "./breakpoints-BbDakdqF.js";
5
+ import { u as F } from "./useMediaQuery-DrDUrkmJ.js";
6
+ const L = 200, V = (u, i) => u.length === i.length && u.every((l, m) => l === i[m]), Q = _(function({ columns: i = 3, minColumnWidth: l, gap: m = "md", padding: H, className: T, style: k, children: M, ...S }, a) {
7
+ const p = E(() => j.toArray(M), [M]), r = p.length, v = F(), h = Math.max(1, A(i, v) ?? 1), d = w(A(m, v)), [n, z] = C(h), [R, D] = C([]), y = b(null), g = b([]), G = I(
8
+ (e) => {
9
+ y.current = e, typeof a == "function" ? a(e) : a && (a.current = e);
10
+ },
11
+ [a]
12
+ ), f = I(() => {
13
+ const e = y.current;
14
+ if (!e) return;
15
+ let o = h;
16
+ if (l != null) {
17
+ const t = parseFloat(getComputedStyle(e).columnGap) || 0, c = e.clientWidth;
18
+ o = Math.max(1, Math.floor((c + t) / (l + t)));
19
+ }
20
+ z((t) => t === o ? t : o);
21
+ const s = g.current.slice(0, r).map((t) => t ? t.offsetHeight : 0);
22
+ D((t) => V(t, s) ? t : s);
23
+ }, [h, l, r]);
24
+ q(f, [f, p, n, d]), B(() => {
25
+ const e = y.current;
26
+ if (!e || typeof ResizeObserver > "u") return;
27
+ const o = new ResizeObserver(() => f());
28
+ return o.observe(e), g.current.slice(0, r).forEach((s) => s && o.observe(s)), () => o.disconnect();
29
+ }, [f, r, n]);
30
+ const O = E(() => {
31
+ const e = Array.from({ length: n }, () => []), o = new Array(n).fill(0);
32
+ for (let s = 0; s < r; s++) {
33
+ let t = 0;
34
+ for (let c = 1; c < n; c++) o[c] < o[t] && (t = c);
35
+ e[t].push(s), o[t] += R[s] || L;
36
+ }
37
+ return e;
38
+ }, [n, r, R]);
39
+ return /* @__PURE__ */ x(
40
+ "div",
41
+ {
42
+ ref: G,
43
+ className: T,
44
+ style: {
45
+ display: "flex",
46
+ alignItems: "flex-start",
47
+ gap: d,
48
+ padding: w(H),
49
+ ...k
50
+ },
51
+ ...S,
52
+ children: O.map((e, o) => /* @__PURE__ */ x(
53
+ "div",
54
+ {
55
+ style: {
56
+ display: "flex",
57
+ flexDirection: "column",
58
+ gap: d,
59
+ flex: "1 1 0",
60
+ minWidth: 0
61
+ },
62
+ children: e.map((s) => /* @__PURE__ */ x(
63
+ "div",
64
+ {
65
+ ref: (t) => {
66
+ g.current[s] = t;
67
+ },
68
+ style: { minWidth: 0 },
69
+ children: p[s]
70
+ },
71
+ s
72
+ ))
73
+ },
74
+ o
75
+ ))
76
+ }
77
+ );
78
+ });
79
+ export {
80
+ Q as M
81
+ };
82
+ //# sourceMappingURL=Masonry-BObKcPmo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Masonry-BObKcPmo.js","sources":["../src/components/Masonry/Masonry.tsx"],"sourcesContent":["import {\n Children,\n forwardRef,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { space, type Spacing } from '../Flex/Flex'\nimport { resolveResponsive, type Responsive } from '../../theme/breakpoints'\nimport { useBreakpointMatches } from '../../hooks/useMediaQuery'\n\n// nominal height for a not-yet-measured item, so the first (pre-measure) pass spreads items across\n// columns round-robin instead of dumping them all into the first one; corrected on the layout pass.\nconst ESTIMATED_ITEM_HEIGHT = 200\n\nexport interface MasonryProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Number of columns. Either a fixed number, or a **desktop-first** map keyed by the shared\n * `Breakpoint`s (`xs`/`sm`/`md`/`lg`/`xl`) — each entry applies at that breakpoint's max-width and\n * below, until a smaller one overrides it, with the largest defined key as the base for wider screens.\n * Defaults to `3`. Ignored when `minColumnWidth` is set.\n *\n * @example columns={2} // always 2\n * @example columns={{ xs: 1, md: 3 }} // 1 on phones (≤767.98), 3 up to md, 3 above\n */\n columns?: Responsive<number>\n /** Responsive: fit as many equal columns as this min pixel width allows (overrides `columns`). */\n minColumnWidth?: number\n /**\n * Gap between items, horizontally and vertically. Either a single value (a `--tz-space-*` key, a px\n * number, or any CSS value) or a **desktop-first** breakpoint map — same resolution as `columns`.\n * Defaults to `md`.\n *\n * @example gap=\"md\"\n * @example gap={{ xs: 'sm', md: 'lg' }} // tighter on phones, looser from md up\n */\n gap?: Responsive<Spacing>\n /** Padding around the grid (token key, px number, or CSS value). */\n padding?: Spacing\n /** The items to lay out. */\n children?: ReactNode\n}\n\nconst arraysEqual = (a: number[], b: number[]) =>\n a.length === b.length && a.every((v, i) => v === b[i])\n\n/**\n * A masonry layout — packs items of varying heights into balanced columns, always adding the next item\n * to the **shortest** column (Pinterest-style), so columns stay level rather than following a fixed\n * grid. Item heights are measured in the DOM (a `ResizeObserver` re-balances on content/size changes),\n * so it works with any children. `columns` is either a fixed number or a desktop-first breakpoint map\n * (`{ xs: 1, md: 3 }`); `minColumnWidth` is a responsive alternative (and overrides `columns`); `gap`\n * spaces items on both axes and is itself responsive the same way (`{ xs: 'sm', md: 'lg' }`).\n * Inline-styled like the other layout primitives (`Flex` / `Grid`); consumer `style` merges last.\n * Reading order flows left-to-right across the columns.\n */\nexport const Masonry = forwardRef<HTMLDivElement, MasonryProps>(function Masonry(\n { columns = 3, minColumnWidth, gap = 'md', padding, className, style, children, ...props },\n ref,\n) {\n const items = useMemo(() => Children.toArray(children), [children])\n const count = items.length\n\n // the current breakpoint matches drive the responsive `columns` / `gap` (SSR-safe, no first-paint flash)\n const matches = useBreakpointMatches()\n const resolvedColumns = Math.max(1, resolveResponsive(columns, matches) ?? 1)\n const gapValue = space(resolveResponsive(gap, matches))\n\n const [colCount, setColCount] = useState(resolvedColumns)\n const [heights, setHeights] = useState<number[]>([])\n\n const rootRef = useRef<HTMLDivElement | null>(null)\n const itemRefs = useRef<Array<HTMLDivElement | null>>([])\n\n // merge the internal measuring ref with the forwarded ref\n const setRootRef = useCallback(\n (node: HTMLDivElement | null) => {\n rootRef.current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) ref.current = node\n },\n [ref],\n )\n\n // measure the container width → column count, and each item's height → the balance\n const measure = useCallback(() => {\n const root = rootRef.current\n if (!root) return\n\n let nextCols = resolvedColumns\n if (minColumnWidth != null) {\n const g = parseFloat(getComputedStyle(root).columnGap) || 0\n const width = root.clientWidth\n nextCols = Math.max(1, Math.floor((width + g) / (minColumnWidth + g)))\n }\n setColCount((prev) => (prev === nextCols ? prev : nextCols))\n\n const next = itemRefs.current.slice(0, count).map((el) => (el ? el.offsetHeight : 0))\n setHeights((prev) => (arraysEqual(prev, next) ? prev : next))\n }, [resolvedColumns, minColumnWidth, count])\n\n // measure before paint (mount + whenever the item set, column count, or gap changes — a gap change\n // shifts column widths, so heights and the minColumnWidth count need re-reading)\n useLayoutEffect(measure, [measure, items, colCount, gapValue])\n\n // re-balance on container resize and on any item resizing (image loads, dynamic content, …)\n useEffect(() => {\n const root = rootRef.current\n if (!root || typeof ResizeObserver === 'undefined') return\n const ro = new ResizeObserver(() => measure())\n ro.observe(root)\n itemRefs.current.slice(0, count).forEach((el) => el && ro.observe(el))\n return () => ro.disconnect()\n }, [measure, count, colCount])\n\n // greedily assign each item (in order) to the currently shortest column\n const columnsItems = useMemo(() => {\n const buckets: number[][] = Array.from({ length: colCount }, () => [])\n const acc = new Array(colCount).fill(0)\n for (let i = 0; i < count; i++) {\n let min = 0\n for (let c = 1; c < colCount; c++) if (acc[c] < acc[min]) min = c\n buckets[min].push(i)\n acc[min] += heights[i] || ESTIMATED_ITEM_HEIGHT\n }\n return buckets\n }, [colCount, count, heights])\n\n return (\n <div\n ref={setRootRef}\n className={className}\n style={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: gapValue,\n padding: space(padding),\n ...style,\n }}\n {...props}\n >\n {columnsItems.map((indices, c) => (\n <div\n key={c}\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: gapValue,\n flex: '1 1 0',\n minWidth: 0,\n }}\n >\n {indices.map((i) => (\n <div\n key={i}\n ref={(el) => {\n itemRefs.current[i] = el\n }}\n style={{ minWidth: 0 } as CSSProperties}\n >\n {items[i]}\n </div>\n ))}\n </div>\n ))}\n </div>\n )\n})\n"],"names":["ESTIMATED_ITEM_HEIGHT","arraysEqual","a","b","v","i","Masonry","forwardRef","columns","minColumnWidth","gap","padding","className","style","children","props","ref","items","useMemo","Children","count","matches","useBreakpointMatches","resolvedColumns","resolveResponsive","gapValue","space","colCount","setColCount","useState","heights","setHeights","rootRef","useRef","itemRefs","setRootRef","useCallback","node","measure","root","nextCols","g","width","prev","next","el","useLayoutEffect","useEffect","ro","columnsItems","buckets","acc","min","jsx","indices","c"],"mappings":";;;;;AAmBA,MAAMA,IAAwB,KA8BxBC,IAAc,CAACC,GAAaC,MAChCD,EAAE,WAAWC,EAAE,UAAUD,EAAE,MAAM,CAACE,GAAGC,MAAMD,MAAMD,EAAEE,CAAC,CAAC,GAY1CC,IAAUC,EAAyC,SAC9D,EAAE,SAAAC,IAAU,GAAG,gBAAAC,GAAgB,KAAAC,IAAM,MAAM,SAAAC,GAAS,WAAAC,GAAW,OAAAC,GAAO,UAAAC,GAAU,GAAGC,EAAA,GACnFC,GACA;AACA,QAAMC,IAAQC,EAAQ,MAAMC,EAAS,QAAQL,CAAQ,GAAG,CAACA,CAAQ,CAAC,GAC5DM,IAAQH,EAAM,QAGdI,IAAUC,EAAA,GACVC,IAAkB,KAAK,IAAI,GAAGC,EAAkBhB,GAASa,CAAO,KAAK,CAAC,GACtEI,IAAWC,EAAMF,EAAkBd,GAAKW,CAAO,CAAC,GAEhD,CAACM,GAAUC,CAAW,IAAIC,EAASN,CAAe,GAClD,CAACO,GAASC,CAAU,IAAIF,EAAmB,CAAA,CAAE,GAE7CG,IAAUC,EAA8B,IAAI,GAC5CC,IAAWD,EAAqC,EAAE,GAGlDE,IAAaC;AAAA,IACjB,CAACC,MAAgC;AAC/B,MAAAL,EAAQ,UAAUK,GACd,OAAOrB,KAAQ,aAAYA,EAAIqB,CAAI,IAC9BrB,QAAS,UAAUqB;AAAA,IAC9B;AAAA,IACA,CAACrB,CAAG;AAAA,EAAA,GAIAsB,IAAUF,EAAY,MAAM;AAChC,UAAMG,IAAOP,EAAQ;AACrB,QAAI,CAACO,EAAM;AAEX,QAAIC,IAAWjB;AACf,QAAId,KAAkB,MAAM;AAC1B,YAAMgC,IAAI,WAAW,iBAAiBF,CAAI,EAAE,SAAS,KAAK,GACpDG,IAAQH,EAAK;AACnB,MAAAC,IAAW,KAAK,IAAI,GAAG,KAAK,OAAOE,IAAQD,MAAMhC,IAAiBgC,EAAE,CAAC;AAAA,IACvE;AACA,IAAAb,EAAY,CAACe,MAAUA,MAASH,IAAWG,IAAOH,CAAS;AAE3D,UAAMI,IAAOV,EAAS,QAAQ,MAAM,GAAGd,CAAK,EAAE,IAAI,CAACyB,MAAQA,IAAKA,EAAG,eAAe,CAAE;AACpF,IAAAd,EAAW,CAACY,MAAU1C,EAAY0C,GAAMC,CAAI,IAAID,IAAOC,CAAK;AAAA,EAC9D,GAAG,CAACrB,GAAiBd,GAAgBW,CAAK,CAAC;AAI3C,EAAA0B,EAAgBR,GAAS,CAACA,GAASrB,GAAOU,GAAUF,CAAQ,CAAC,GAG7DsB,EAAU,MAAM;AACd,UAAMR,IAAOP,EAAQ;AACrB,QAAI,CAACO,KAAQ,OAAO,iBAAmB,IAAa;AACpD,UAAMS,IAAK,IAAI,eAAe,MAAMV,GAAS;AAC7C,WAAAU,EAAG,QAAQT,CAAI,GACfL,EAAS,QAAQ,MAAM,GAAGd,CAAK,EAAE,QAAQ,CAACyB,MAAOA,KAAMG,EAAG,QAAQH,CAAE,CAAC,GAC9D,MAAMG,EAAG,WAAA;AAAA,EAClB,GAAG,CAACV,GAASlB,GAAOO,CAAQ,CAAC;AAG7B,QAAMsB,IAAe/B,EAAQ,MAAM;AACjC,UAAMgC,IAAsB,MAAM,KAAK,EAAE,QAAQvB,EAAA,GAAY,MAAM,EAAE,GAC/DwB,IAAM,IAAI,MAAMxB,CAAQ,EAAE,KAAK,CAAC;AACtC,aAAStB,IAAI,GAAGA,IAAIe,GAAOf,KAAK;AAC9B,UAAI+C,IAAM;AACV,eAAS,IAAI,GAAG,IAAIzB,GAAU,IAAK,CAAIwB,EAAI,CAAC,IAAIA,EAAIC,CAAG,MAAGA,IAAM;AAChE,MAAAF,EAAQE,CAAG,EAAE,KAAK/C,CAAC,GACnB8C,EAAIC,CAAG,KAAKtB,EAAQzB,CAAC,KAAKL;AAAA,IAC5B;AACA,WAAOkD;AAAA,EACT,GAAG,CAACvB,GAAUP,GAAOU,CAAO,CAAC;AAE7B,SACE,gBAAAuB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKlB;AAAA,MACL,WAAAvB;AAAA,MACA,OAAO;AAAA,QACL,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,KAAKa;AAAA,QACL,SAASC,EAAMf,CAAO;AAAA,QACtB,GAAGE;AAAA,MAAA;AAAA,MAEJ,GAAGE;AAAA,MAEH,UAAAkC,EAAa,IAAI,CAACK,GAASC,MAC1B,gBAAAF;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,OAAO;AAAA,YACL,SAAS;AAAA,YACT,eAAe;AAAA,YACf,KAAK5B;AAAA,YACL,MAAM;AAAA,YACN,UAAU;AAAA,UAAA;AAAA,UAGX,UAAA6B,EAAQ,IAAI,CAACjD,MACZ,gBAAAgD;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,KAAK,CAACR,MAAO;AACX,gBAAAX,EAAS,QAAQ7B,CAAC,IAAIwC;AAAA,cACxB;AAAA,cACA,OAAO,EAAE,UAAU,EAAA;AAAA,cAElB,YAAMxC,CAAC;AAAA,YAAA;AAAA,YANHA;AAAA,UAAA,CAQR;AAAA,QAAA;AAAA,QAnBIkD;AAAA,MAAA,CAqBR;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;"}
@@ -0,0 +1,2 @@
1
+ "use strict";const M=require("react/jsx-runtime"),o=require("react"),b=require("./Flex-C6tHC8n7.cjs"),C=require("./breakpoints-Dpnh6BbG.cjs"),T=require("./useMediaQuery-CHMrI6Dy.cjs"),z=200,D=(h,i)=>h.length===i.length&&h.every((l,m)=>l===i[m]),F=o.forwardRef(function({columns:i=3,minColumnWidth:l,gap:m="md",padding:q,className:k,style:I,children:R,...j},a){const p=o.useMemo(()=>o.Children.toArray(R),[R]),r=p.length,v=T.useBreakpointMatches(),d=Math.max(1,C.resolveResponsive(i,v)??1),y=b.space(C.resolveResponsive(m,v)),[c,w]=o.useState(d),[E,A]=o.useState([]),g=o.useRef(null),x=o.useRef([]),H=o.useCallback(t=>{g.current=t,typeof a=="function"?a(t):a&&(a.current=t)},[a]),f=o.useCallback(()=>{const t=g.current;if(!t)return;let n=d;if(l!=null){const e=parseFloat(getComputedStyle(t).columnGap)||0,u=t.clientWidth;n=Math.max(1,Math.floor((u+e)/(l+e)))}w(e=>e===n?e:n);const s=x.current.slice(0,r).map(e=>e?e.offsetHeight:0);A(e=>D(e,s)?e:s)},[d,l,r]);o.useLayoutEffect(f,[f,p,c,y]),o.useEffect(()=>{const t=g.current;if(!t||typeof ResizeObserver>"u")return;const n=new ResizeObserver(()=>f());return n.observe(t),x.current.slice(0,r).forEach(s=>s&&n.observe(s)),()=>n.disconnect()},[f,r,c]);const S=o.useMemo(()=>{const t=Array.from({length:c},()=>[]),n=new Array(c).fill(0);for(let s=0;s<r;s++){let e=0;for(let u=1;u<c;u++)n[u]<n[e]&&(e=u);t[e].push(s),n[e]+=E[s]||z}return t},[c,r,E]);return M.jsx("div",{ref:H,className:k,style:{display:"flex",alignItems:"flex-start",gap:y,padding:b.space(q),...I},...j,children:S.map((t,n)=>M.jsx("div",{style:{display:"flex",flexDirection:"column",gap:y,flex:"1 1 0",minWidth:0},children:t.map(s=>M.jsx("div",{ref:e=>{x.current[s]=e},style:{minWidth:0},children:p[s]},s))},n))})});exports.Masonry=F;
2
+ //# sourceMappingURL=Masonry-BVphuk2X.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Masonry-BVphuk2X.cjs","sources":["../src/components/Masonry/Masonry.tsx"],"sourcesContent":["import {\n Children,\n forwardRef,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { space, type Spacing } from '../Flex/Flex'\nimport { resolveResponsive, type Responsive } from '../../theme/breakpoints'\nimport { useBreakpointMatches } from '../../hooks/useMediaQuery'\n\n// nominal height for a not-yet-measured item, so the first (pre-measure) pass spreads items across\n// columns round-robin instead of dumping them all into the first one; corrected on the layout pass.\nconst ESTIMATED_ITEM_HEIGHT = 200\n\nexport interface MasonryProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Number of columns. Either a fixed number, or a **desktop-first** map keyed by the shared\n * `Breakpoint`s (`xs`/`sm`/`md`/`lg`/`xl`) — each entry applies at that breakpoint's max-width and\n * below, until a smaller one overrides it, with the largest defined key as the base for wider screens.\n * Defaults to `3`. Ignored when `minColumnWidth` is set.\n *\n * @example columns={2} // always 2\n * @example columns={{ xs: 1, md: 3 }} // 1 on phones (≤767.98), 3 up to md, 3 above\n */\n columns?: Responsive<number>\n /** Responsive: fit as many equal columns as this min pixel width allows (overrides `columns`). */\n minColumnWidth?: number\n /**\n * Gap between items, horizontally and vertically. Either a single value (a `--tz-space-*` key, a px\n * number, or any CSS value) or a **desktop-first** breakpoint map — same resolution as `columns`.\n * Defaults to `md`.\n *\n * @example gap=\"md\"\n * @example gap={{ xs: 'sm', md: 'lg' }} // tighter on phones, looser from md up\n */\n gap?: Responsive<Spacing>\n /** Padding around the grid (token key, px number, or CSS value). */\n padding?: Spacing\n /** The items to lay out. */\n children?: ReactNode\n}\n\nconst arraysEqual = (a: number[], b: number[]) =>\n a.length === b.length && a.every((v, i) => v === b[i])\n\n/**\n * A masonry layout — packs items of varying heights into balanced columns, always adding the next item\n * to the **shortest** column (Pinterest-style), so columns stay level rather than following a fixed\n * grid. Item heights are measured in the DOM (a `ResizeObserver` re-balances on content/size changes),\n * so it works with any children. `columns` is either a fixed number or a desktop-first breakpoint map\n * (`{ xs: 1, md: 3 }`); `minColumnWidth` is a responsive alternative (and overrides `columns`); `gap`\n * spaces items on both axes and is itself responsive the same way (`{ xs: 'sm', md: 'lg' }`).\n * Inline-styled like the other layout primitives (`Flex` / `Grid`); consumer `style` merges last.\n * Reading order flows left-to-right across the columns.\n */\nexport const Masonry = forwardRef<HTMLDivElement, MasonryProps>(function Masonry(\n { columns = 3, minColumnWidth, gap = 'md', padding, className, style, children, ...props },\n ref,\n) {\n const items = useMemo(() => Children.toArray(children), [children])\n const count = items.length\n\n // the current breakpoint matches drive the responsive `columns` / `gap` (SSR-safe, no first-paint flash)\n const matches = useBreakpointMatches()\n const resolvedColumns = Math.max(1, resolveResponsive(columns, matches) ?? 1)\n const gapValue = space(resolveResponsive(gap, matches))\n\n const [colCount, setColCount] = useState(resolvedColumns)\n const [heights, setHeights] = useState<number[]>([])\n\n const rootRef = useRef<HTMLDivElement | null>(null)\n const itemRefs = useRef<Array<HTMLDivElement | null>>([])\n\n // merge the internal measuring ref with the forwarded ref\n const setRootRef = useCallback(\n (node: HTMLDivElement | null) => {\n rootRef.current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) ref.current = node\n },\n [ref],\n )\n\n // measure the container width → column count, and each item's height → the balance\n const measure = useCallback(() => {\n const root = rootRef.current\n if (!root) return\n\n let nextCols = resolvedColumns\n if (minColumnWidth != null) {\n const g = parseFloat(getComputedStyle(root).columnGap) || 0\n const width = root.clientWidth\n nextCols = Math.max(1, Math.floor((width + g) / (minColumnWidth + g)))\n }\n setColCount((prev) => (prev === nextCols ? prev : nextCols))\n\n const next = itemRefs.current.slice(0, count).map((el) => (el ? el.offsetHeight : 0))\n setHeights((prev) => (arraysEqual(prev, next) ? prev : next))\n }, [resolvedColumns, minColumnWidth, count])\n\n // measure before paint (mount + whenever the item set, column count, or gap changes — a gap change\n // shifts column widths, so heights and the minColumnWidth count need re-reading)\n useLayoutEffect(measure, [measure, items, colCount, gapValue])\n\n // re-balance on container resize and on any item resizing (image loads, dynamic content, …)\n useEffect(() => {\n const root = rootRef.current\n if (!root || typeof ResizeObserver === 'undefined') return\n const ro = new ResizeObserver(() => measure())\n ro.observe(root)\n itemRefs.current.slice(0, count).forEach((el) => el && ro.observe(el))\n return () => ro.disconnect()\n }, [measure, count, colCount])\n\n // greedily assign each item (in order) to the currently shortest column\n const columnsItems = useMemo(() => {\n const buckets: number[][] = Array.from({ length: colCount }, () => [])\n const acc = new Array(colCount).fill(0)\n for (let i = 0; i < count; i++) {\n let min = 0\n for (let c = 1; c < colCount; c++) if (acc[c] < acc[min]) min = c\n buckets[min].push(i)\n acc[min] += heights[i] || ESTIMATED_ITEM_HEIGHT\n }\n return buckets\n }, [colCount, count, heights])\n\n return (\n <div\n ref={setRootRef}\n className={className}\n style={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: gapValue,\n padding: space(padding),\n ...style,\n }}\n {...props}\n >\n {columnsItems.map((indices, c) => (\n <div\n key={c}\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: gapValue,\n flex: '1 1 0',\n minWidth: 0,\n }}\n >\n {indices.map((i) => (\n <div\n key={i}\n ref={(el) => {\n itemRefs.current[i] = el\n }}\n style={{ minWidth: 0 } as CSSProperties}\n >\n {items[i]}\n </div>\n ))}\n </div>\n ))}\n </div>\n )\n})\n"],"names":["ESTIMATED_ITEM_HEIGHT","arraysEqual","a","b","v","i","Masonry","forwardRef","columns","minColumnWidth","gap","padding","className","style","children","props","ref","items","useMemo","Children","count","matches","useBreakpointMatches","resolvedColumns","resolveResponsive","gapValue","space","colCount","setColCount","useState","heights","setHeights","rootRef","useRef","itemRefs","setRootRef","useCallback","node","measure","root","nextCols","g","width","prev","next","el","useLayoutEffect","useEffect","ro","columnsItems","buckets","acc","min","c","jsx","indices"],"mappings":"wLAmBMA,EAAwB,IA8BxBC,EAAc,CAACC,EAAaC,IAChCD,EAAE,SAAWC,EAAE,QAAUD,EAAE,MAAM,CAACE,EAAGC,IAAMD,IAAMD,EAAEE,CAAC,CAAC,EAY1CC,EAAUC,EAAAA,WAAyC,SAC9D,CAAE,QAAAC,EAAU,EAAG,eAAAC,EAAgB,IAAAC,EAAM,KAAM,QAAAC,EAAS,UAAAC,EAAW,MAAAC,EAAO,SAAAC,EAAU,GAAGC,CAAA,EACnFC,EACA,CACA,MAAMC,EAAQC,EAAAA,QAAQ,IAAMC,EAAAA,SAAS,QAAQL,CAAQ,EAAG,CAACA,CAAQ,CAAC,EAC5DM,EAAQH,EAAM,OAGdI,EAAUC,EAAAA,qBAAA,EACVC,EAAkB,KAAK,IAAI,EAAGC,EAAAA,kBAAkBhB,EAASa,CAAO,GAAK,CAAC,EACtEI,EAAWC,EAAAA,MAAMF,EAAAA,kBAAkBd,EAAKW,CAAO,CAAC,EAEhD,CAACM,EAAUC,CAAW,EAAIC,EAAAA,SAASN,CAAe,EAClD,CAACO,EAASC,CAAU,EAAIF,EAAAA,SAAmB,CAAA,CAAE,EAE7CG,EAAUC,EAAAA,OAA8B,IAAI,EAC5CC,EAAWD,EAAAA,OAAqC,EAAE,EAGlDE,EAAaC,EAAAA,YAChBC,GAAgC,CAC/BL,EAAQ,QAAUK,EACd,OAAOrB,GAAQ,WAAYA,EAAIqB,CAAI,EAC9BrB,MAAS,QAAUqB,EAC9B,EACA,CAACrB,CAAG,CAAA,EAIAsB,EAAUF,EAAAA,YAAY,IAAM,CAChC,MAAMG,EAAOP,EAAQ,QACrB,GAAI,CAACO,EAAM,OAEX,IAAIC,EAAWjB,EACf,GAAId,GAAkB,KAAM,CAC1B,MAAMgC,EAAI,WAAW,iBAAiBF,CAAI,EAAE,SAAS,GAAK,EACpDG,EAAQH,EAAK,YACnBC,EAAW,KAAK,IAAI,EAAG,KAAK,OAAOE,EAAQD,IAAMhC,EAAiBgC,EAAE,CAAC,CACvE,CACAb,EAAae,GAAUA,IAASH,EAAWG,EAAOH,CAAS,EAE3D,MAAMI,EAAOV,EAAS,QAAQ,MAAM,EAAGd,CAAK,EAAE,IAAKyB,GAAQA,EAAKA,EAAG,aAAe,CAAE,EACpFd,EAAYY,GAAU1C,EAAY0C,EAAMC,CAAI,EAAID,EAAOC,CAAK,CAC9D,EAAG,CAACrB,EAAiBd,EAAgBW,CAAK,CAAC,EAI3C0B,EAAAA,gBAAgBR,EAAS,CAACA,EAASrB,EAAOU,EAAUF,CAAQ,CAAC,EAG7DsB,EAAAA,UAAU,IAAM,CACd,MAAMR,EAAOP,EAAQ,QACrB,GAAI,CAACO,GAAQ,OAAO,eAAmB,IAAa,OACpD,MAAMS,EAAK,IAAI,eAAe,IAAMV,GAAS,EAC7C,OAAAU,EAAG,QAAQT,CAAI,EACfL,EAAS,QAAQ,MAAM,EAAGd,CAAK,EAAE,QAASyB,GAAOA,GAAMG,EAAG,QAAQH,CAAE,CAAC,EAC9D,IAAMG,EAAG,WAAA,CAClB,EAAG,CAACV,EAASlB,EAAOO,CAAQ,CAAC,EAG7B,MAAMsB,EAAe/B,EAAAA,QAAQ,IAAM,CACjC,MAAMgC,EAAsB,MAAM,KAAK,CAAE,OAAQvB,CAAA,EAAY,IAAM,EAAE,EAC/DwB,EAAM,IAAI,MAAMxB,CAAQ,EAAE,KAAK,CAAC,EACtC,QAAStB,EAAI,EAAGA,EAAIe,EAAOf,IAAK,CAC9B,IAAI+C,EAAM,EACV,QAASC,EAAI,EAAGA,EAAI1B,EAAU0B,IAASF,EAAIE,CAAC,EAAIF,EAAIC,CAAG,IAAGA,EAAMC,GAChEH,EAAQE,CAAG,EAAE,KAAK/C,CAAC,EACnB8C,EAAIC,CAAG,GAAKtB,EAAQzB,CAAC,GAAKL,CAC5B,CACA,OAAOkD,CACT,EAAG,CAACvB,EAAUP,EAAOU,CAAO,CAAC,EAE7B,OACEwB,EAAAA,IAAC,MAAA,CACC,IAAKnB,EACL,UAAAvB,EACA,MAAO,CACL,QAAS,OACT,WAAY,aACZ,IAAKa,EACL,QAASC,EAAAA,MAAMf,CAAO,EACtB,GAAGE,CAAA,EAEJ,GAAGE,EAEH,SAAAkC,EAAa,IAAI,CAACM,EAASF,IAC1BC,EAAAA,IAAC,MAAA,CAEC,MAAO,CACL,QAAS,OACT,cAAe,SACf,IAAK7B,EACL,KAAM,QACN,SAAU,CAAA,EAGX,SAAA8B,EAAQ,IAAKlD,GACZiD,EAAAA,IAAC,MAAA,CAEC,IAAMT,GAAO,CACXX,EAAS,QAAQ7B,CAAC,EAAIwC,CACxB,EACA,MAAO,CAAE,SAAU,CAAA,EAElB,WAAMxC,CAAC,CAAA,EANHA,CAAA,CAQR,CAAA,EAnBIgD,CAAA,CAqBR,CAAA,CAAA,CAGP,CAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";const r=require("react/jsx-runtime"),l=require("react"),A=require("clsx"),Q=require("./names-C2Yj1p3u.cjs"),L=require("./Icon-CXTl_QAP.cjs"),$=require("./IconButton-D6TenQZ_.cjs"),W=require("react-dom"),X=require("./useLockBodyScroll-CIXHZo-Q.cjs"),Y=require("./ConfigProvider-ByOFXVyP.cjs"),Z="_overlay_gwv2a_6",w={overlay:Z},H=l.forwardRef(function({open:a,onClose:s,closeOnBackdrop:k=!0,closeOnEscape:g=!0,lockScroll:N=!0,dim:c,className:i,style:d,children:q,onKeyDown:u,onMouseDown:_,onClick:x,...I},T){const j=l.useRef(null),[E,m]=l.useState(!1);X.useLockBodyScroll(a&&N),l.useEffect(()=>{if(!a){m(!1);return}const e=requestAnimationFrame(()=>m(!0));return()=>cancelAnimationFrame(e)},[a]);const D=e=>{e.key==="Escape"&&(e.stopPropagation(),g&&(s==null||s())),u==null||u(e)},h=e=>{j.current=e.target,_==null||_(e)},R=e=>{k&&e.target===e.currentTarget&&j.current===e.currentTarget&&(s==null||s()),x==null||x(e)};return!a||typeof document>"u"?null:W.createPortal(r.jsx("div",{ref:T,className:A.clsx(w.overlay,i),"data-open":E?"true":"false",style:c!=null?{"--tz-overlay-dim":c,...d}:d,onKeyDown:D,onMouseDown:h,onClick:R,...I,children:q}),document.body)}),C="_overlay_1d22k_3",ee="_modal_1d22k_14",te="_sm_1d22k_37",re="_md_1d22k_40",ne="_lg_1d22k_43",le="_fullScreen_1d22k_46",ae="_header_1d22k_58",se="_headerDivided_1d22k_67",ce="_headerMain_1d22k_70",de="_icon_1d22k_77",oe="_headerText_1d22k_80",ie="_title_1d22k_87",ue="_subtitle_1d22k_99",fe="_close_1d22k_111",_e="_body_1d22k_116",me="_footer_1d22k_124",n={overlay:C,modal:ee,sm:te,md:re,lg:ne,fullScreen:le,header:ae,headerDivided:se,headerMain:ce,icon:de,headerText:oe,title:ie,subtitle:ue,close:fe,body:_e,footer:me},he=new Set(Q.ICON_NAMES),S='a[href]:not([tabindex="-1"]), button:not(:disabled):not([tabindex="-1"]), textarea:not(:disabled):not([tabindex="-1"]), input:not(:disabled):not([tabindex="-1"]), select:not(:disabled):not([tabindex="-1"]), [tabindex]:not([tabindex="-1"])',be=l.forwardRef(function({open:a,onClose:s,size:k="md",scrollBehavior:g="outside",placement:N="center",title:c,description:i,icon:d,color:q="accent",footer:u,showCloseButton:_=!0,closeOnBackdrop:x=!0,closeOnEscape:I=!0,ariaLabel:T,className:j,style:E,children:m,...D},h){const R=Y.useT(),e=l.useRef(null),O=l.useRef(null),B=l.useRef(null),P=l.useId(),p=l.useId();l.useEffect(()=>{var f,y,v;if(!a)return;const t=document.activeElement,o=((f=O.current)==null?void 0:f.querySelector(S))??((y=B.current)==null?void 0:y.querySelector(S))??((v=e.current)==null?void 0:v.querySelector(S))??e.current;return o==null||o.focus({preventScroll:!0}),()=>{var b;t!=null&&t.isConnected&&((b=t.focus)==null||b.call(t))}},[a]);const U=t=>{e.current=t,typeof h=="function"?h(t):h&&(h.current=t)},V=t=>{if(t.key!=="Tab")return;const o=e.current;if(!o)return;const f=[...o.querySelectorAll(S)].filter(z=>z.offsetParent!==null||z===document.activeElement);if(f.length===0){t.preventDefault(),o.focus();return}const y=f[0],v=f[f.length-1],b=document.activeElement;t.shiftKey&&(b===y||b===o)?(t.preventDefault(),v.focus()):!t.shiftKey&&b===v&&(t.preventDefault(),y.focus())};if(!a)return null;const F=N!=="center",M=d==null?null:typeof d=="string"&&he.has(d)?r.jsx(L.Icon,{name:d}):d,G=c!=null||i!=null||M!=null||_,J=m!=null||u!=null;return r.jsx(H,{open:a,onClose:s,closeOnBackdrop:x,closeOnEscape:I,onKeyDown:V,className:n.overlay,"data-size":k,"data-placement":N,"data-scroll":F?"inside":g,children:r.jsxs("div",{ref:U,className:A.clsx(n.modal,n[k],j),role:"dialog","aria-modal":"true","aria-labelledby":c!=null?P:void 0,"aria-label":c==null?T:void 0,"aria-describedby":i!=null?p:void 0,tabIndex:-1,style:E,...D,children:[G&&r.jsxs("div",{className:A.clsx(n.header,J&&n.headerDivided),children:[r.jsxs("div",{className:n.headerMain,children:[M!=null&&r.jsx($.IconButton,{variant:"filled",size:"sm",color:q,nonClickable:!0,"aria-hidden":!0,className:n.icon,children:M}),(c!=null||i!=null)&&r.jsxs("div",{className:n.headerText,children:[c!=null&&r.jsx("div",{id:P,className:n.title,children:c}),i!=null&&r.jsx("div",{id:p,className:n.subtitle,children:i})]})]}),_&&r.jsx($.IconButton,{variant:"filled",color:"primary",size:"sm",className:n.close,"aria-label":R("common.close"),onClick:s,children:r.jsx(L.Icon,{name:"Close"})})]}),m!=null&&r.jsx("div",{ref:O,className:n.body,children:m}),u!=null&&r.jsx("div",{ref:B,className:n.footer,children:u})]})})});exports.Modal=be;exports.Overlay=H;
2
- //# sourceMappingURL=Modal-B2YSCVVt.cjs.map
1
+ "use strict";const r=require("react/jsx-runtime"),l=require("react"),A=require("clsx"),Q=require("./names-C2Yj1p3u.cjs"),L=require("./Icon-CXTl_QAP.cjs"),$=require("./IconButton-ChUfK0pG.cjs"),W=require("react-dom"),X=require("./useLockBodyScroll-CIXHZo-Q.cjs"),Y=require("./ConfigProvider-DFy6pL-C.cjs"),Z="_overlay_gwv2a_6",w={overlay:Z},H=l.forwardRef(function({open:a,onClose:s,closeOnBackdrop:k=!0,closeOnEscape:g=!0,lockScroll:N=!0,dim:c,className:i,style:d,children:q,onKeyDown:u,onMouseDown:_,onClick:x,...I},T){const j=l.useRef(null),[E,m]=l.useState(!1);X.useLockBodyScroll(a&&N),l.useEffect(()=>{if(!a){m(!1);return}const e=requestAnimationFrame(()=>m(!0));return()=>cancelAnimationFrame(e)},[a]);const D=e=>{e.key==="Escape"&&(e.stopPropagation(),g&&(s==null||s())),u==null||u(e)},h=e=>{j.current=e.target,_==null||_(e)},R=e=>{k&&e.target===e.currentTarget&&j.current===e.currentTarget&&(s==null||s()),x==null||x(e)};return!a||typeof document>"u"?null:W.createPortal(r.jsx("div",{ref:T,className:A.clsx(w.overlay,i),"data-open":E?"true":"false",style:c!=null?{"--tz-overlay-dim":c,...d}:d,onKeyDown:D,onMouseDown:h,onClick:R,...I,children:q}),document.body)}),C="_overlay_1d22k_3",ee="_modal_1d22k_14",te="_sm_1d22k_37",re="_md_1d22k_40",ne="_lg_1d22k_43",le="_fullScreen_1d22k_46",ae="_header_1d22k_58",se="_headerDivided_1d22k_67",ce="_headerMain_1d22k_70",de="_icon_1d22k_77",oe="_headerText_1d22k_80",ie="_title_1d22k_87",ue="_subtitle_1d22k_99",fe="_close_1d22k_111",_e="_body_1d22k_116",me="_footer_1d22k_124",n={overlay:C,modal:ee,sm:te,md:re,lg:ne,fullScreen:le,header:ae,headerDivided:se,headerMain:ce,icon:de,headerText:oe,title:ie,subtitle:ue,close:fe,body:_e,footer:me},he=new Set(Q.ICON_NAMES),S='a[href]:not([tabindex="-1"]), button:not(:disabled):not([tabindex="-1"]), textarea:not(:disabled):not([tabindex="-1"]), input:not(:disabled):not([tabindex="-1"]), select:not(:disabled):not([tabindex="-1"]), [tabindex]:not([tabindex="-1"])',be=l.forwardRef(function({open:a,onClose:s,size:k="md",scrollBehavior:g="outside",placement:N="center",title:c,description:i,icon:d,color:q="accent",footer:u,showCloseButton:_=!0,closeOnBackdrop:x=!0,closeOnEscape:I=!0,ariaLabel:T,className:j,style:E,children:m,...D},h){const R=Y.useT(),e=l.useRef(null),O=l.useRef(null),B=l.useRef(null),P=l.useId(),p=l.useId();l.useEffect(()=>{var f,y,v;if(!a)return;const t=document.activeElement,o=((f=O.current)==null?void 0:f.querySelector(S))??((y=B.current)==null?void 0:y.querySelector(S))??((v=e.current)==null?void 0:v.querySelector(S))??e.current;return o==null||o.focus({preventScroll:!0}),()=>{var b;t!=null&&t.isConnected&&((b=t.focus)==null||b.call(t))}},[a]);const U=t=>{e.current=t,typeof h=="function"?h(t):h&&(h.current=t)},V=t=>{if(t.key!=="Tab")return;const o=e.current;if(!o)return;const f=[...o.querySelectorAll(S)].filter(z=>z.offsetParent!==null||z===document.activeElement);if(f.length===0){t.preventDefault(),o.focus();return}const y=f[0],v=f[f.length-1],b=document.activeElement;t.shiftKey&&(b===y||b===o)?(t.preventDefault(),v.focus()):!t.shiftKey&&b===v&&(t.preventDefault(),y.focus())};if(!a)return null;const F=N!=="center",M=d==null?null:typeof d=="string"&&he.has(d)?r.jsx(L.Icon,{name:d}):d,G=c!=null||i!=null||M!=null||_,J=m!=null||u!=null;return r.jsx(H,{open:a,onClose:s,closeOnBackdrop:x,closeOnEscape:I,onKeyDown:V,className:n.overlay,"data-size":k,"data-placement":N,"data-scroll":F?"inside":g,children:r.jsxs("div",{ref:U,className:A.clsx(n.modal,n[k],j),role:"dialog","aria-modal":"true","aria-labelledby":c!=null?P:void 0,"aria-label":c==null?T:void 0,"aria-describedby":i!=null?p:void 0,tabIndex:-1,style:E,...D,children:[G&&r.jsxs("div",{className:A.clsx(n.header,J&&n.headerDivided),children:[r.jsxs("div",{className:n.headerMain,children:[M!=null&&r.jsx($.IconButton,{variant:"filled",size:"sm",color:q,nonClickable:!0,"aria-hidden":!0,className:n.icon,children:M}),(c!=null||i!=null)&&r.jsxs("div",{className:n.headerText,children:[c!=null&&r.jsx("div",{id:P,className:n.title,children:c}),i!=null&&r.jsx("div",{id:p,className:n.subtitle,children:i})]})]}),_&&r.jsx($.IconButton,{variant:"filled",color:"primary",size:"sm",className:n.close,"aria-label":R("common.close"),onClick:s,children:r.jsx(L.Icon,{name:"Close"})})]}),m!=null&&r.jsx("div",{ref:O,className:n.body,children:m}),u!=null&&r.jsx("div",{ref:B,className:n.footer,children:u})]})})});exports.Modal=be;exports.Overlay=H;
2
+ //# sourceMappingURL=Modal-BaieUdge.cjs.map