@techzyapp/ui-library 1.0.27 → 1.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (601) hide show
  1. package/dist/AdminRoot-BTvmassR.js +55 -0
  2. package/dist/AdminRoot-BTvmassR.js.map +1 -0
  3. package/dist/AdminRoot-DM-cZCpN.cjs +2 -0
  4. package/dist/AdminRoot-DM-cZCpN.cjs.map +1 -0
  5. package/dist/{Alert-DeGgilkH.cjs → Alert-CFm6MU0u.cjs} +2 -2
  6. package/dist/{Alert-DeGgilkH.cjs.map → Alert-CFm6MU0u.cjs.map} +1 -1
  7. package/dist/{Alert-rNjfqj2Z.js → Alert-v-lelDih.js} +3 -3
  8. package/dist/{Alert-rNjfqj2Z.js.map → Alert-v-lelDih.js.map} +1 -1
  9. package/dist/{AuthLayout-zAS3jlYc.js → AuthLayout-DOFYw_z5.js} +3 -3
  10. package/dist/{AuthLayout-zAS3jlYc.js.map → AuthLayout-DOFYw_z5.js.map} +1 -1
  11. package/dist/{AuthLayout-ChILVWZ-.cjs → AuthLayout-QAtW2GAT.cjs} +2 -2
  12. package/dist/{AuthLayout-ChILVWZ-.cjs.map → AuthLayout-QAtW2GAT.cjs.map} +1 -1
  13. package/dist/Avatar-DXNPg23a.js +90 -0
  14. package/dist/Avatar-DXNPg23a.js.map +1 -0
  15. package/dist/Avatar-DrV_F7Ex.cjs +2 -0
  16. package/dist/Avatar-DrV_F7Ex.cjs.map +1 -0
  17. package/dist/{AvatarGroup-Bnf_RSc9.cjs → AvatarGroup-CHesdo-M.cjs} +2 -2
  18. package/dist/{AvatarGroup-Bnf_RSc9.cjs.map → AvatarGroup-CHesdo-M.cjs.map} +1 -1
  19. package/dist/{AvatarGroup-Difz4lLR.js → AvatarGroup-CwlYqDCI.js} +2 -2
  20. package/dist/{AvatarGroup-Difz4lLR.js.map → AvatarGroup-CwlYqDCI.js.map} +1 -1
  21. package/dist/{Breadcrumbs-CGcpMlxm.cjs → Breadcrumbs-3wHPNa0P.cjs} +2 -2
  22. package/dist/{Breadcrumbs-CGcpMlxm.cjs.map → Breadcrumbs-3wHPNa0P.cjs.map} +1 -1
  23. package/dist/{Breadcrumbs-BJHKk0Sn.js → Breadcrumbs-Cgd-u3aK.js} +3 -3
  24. package/dist/{Breadcrumbs-BJHKk0Sn.js.map → Breadcrumbs-Cgd-u3aK.js.map} +1 -1
  25. package/dist/{Button-obe6rono.js → Button-BLW9yV8W.js} +2 -2
  26. package/dist/{Button-obe6rono.js.map → Button-BLW9yV8W.js.map} +1 -1
  27. package/dist/{Button-BZ_o-akc.cjs → Button-KRGjJdMV.cjs} +2 -2
  28. package/dist/{Button-BZ_o-akc.cjs.map → Button-KRGjJdMV.cjs.map} +1 -1
  29. package/dist/{Calendar-lfpNwivC.cjs → Calendar-CoTCOOUu.cjs} +2 -2
  30. package/dist/{Calendar-lfpNwivC.cjs.map → Calendar-CoTCOOUu.cjs.map} +1 -1
  31. package/dist/{Calendar-SCih0NtS.js → Calendar-sLA-xa0B.js} +3 -3
  32. package/dist/{Calendar-SCih0NtS.js.map → Calendar-sLA-xa0B.js.map} +1 -1
  33. package/dist/Card-6fiSEC0z.js +121 -0
  34. package/dist/Card-6fiSEC0z.js.map +1 -0
  35. package/dist/Card-zTkvreQu.cjs +2 -0
  36. package/dist/Card-zTkvreQu.cjs.map +1 -0
  37. package/dist/Checkbox-CTp1xFW7.cjs +2 -0
  38. package/dist/{Checkbox-fzJCwe0j.cjs.map → Checkbox-CTp1xFW7.cjs.map} +1 -1
  39. package/dist/Checkbox-DyKBIgVT.js +98 -0
  40. package/dist/{Checkbox-ZYOSBYRt.js.map → Checkbox-DyKBIgVT.js.map} +1 -1
  41. package/dist/{Chip-CQ4cYVl_.js → Chip-C-5Z5wsC.js} +2 -2
  42. package/dist/{Chip-CQ4cYVl_.js.map → Chip-C-5Z5wsC.js.map} +1 -1
  43. package/dist/{Chip-CYz4vxHm.cjs → Chip-CqOqfafx.cjs} +2 -2
  44. package/dist/{Chip-CYz4vxHm.cjs.map → Chip-CqOqfafx.cjs.map} +1 -1
  45. package/dist/{ChoiceCardGroup-pIOKIUI0.cjs → ChoiceCardGroup-BSagRbPI.cjs} +2 -2
  46. package/dist/{ChoiceCardGroup-pIOKIUI0.cjs.map → ChoiceCardGroup-BSagRbPI.cjs.map} +1 -1
  47. package/dist/{ChoiceCardGroup-D3HL7dHj.js → ChoiceCardGroup-CEniY_HJ.js} +2 -2
  48. package/dist/{ChoiceCardGroup-D3HL7dHj.js.map → ChoiceCardGroup-CEniY_HJ.js.map} +1 -1
  49. package/dist/{CodeBlock-H75dbOvg.cjs → CodeBlock-DFiHDZXh.cjs} +2 -2
  50. package/dist/{CodeBlock-H75dbOvg.cjs.map → CodeBlock-DFiHDZXh.cjs.map} +1 -1
  51. package/dist/{CodeBlock-DddGTLu1.js → CodeBlock-rPaqO7yD.js} +3 -3
  52. package/dist/{CodeBlock-DddGTLu1.js.map → CodeBlock-rPaqO7yD.js.map} +1 -1
  53. package/dist/{ColorPicker-CKc8k-Dp.cjs → ColorPicker-Bqypsy5E.cjs} +2 -2
  54. package/dist/{ColorPicker-CKc8k-Dp.cjs.map → ColorPicker-Bqypsy5E.cjs.map} +1 -1
  55. package/dist/{ColorPicker-Cw-2X6u9.js → ColorPicker-DXDAXvlA.js} +5 -5
  56. package/dist/{ColorPicker-Cw-2X6u9.js.map → ColorPicker-DXDAXvlA.js.map} +1 -1
  57. package/dist/{ColorPickerPanel-PYaF5wPL.js → ColorPickerPanel-6lQC1URc.js} +2 -2
  58. package/dist/{ColorPickerPanel-PYaF5wPL.js.map → ColorPickerPanel-6lQC1URc.js.map} +1 -1
  59. package/dist/{ColorPickerPanel-DQ4CFnGa.cjs → ColorPickerPanel-C9ARc_uD.cjs} +2 -2
  60. package/dist/{ColorPickerPanel-DQ4CFnGa.cjs.map → ColorPickerPanel-C9ARc_uD.cjs.map} +1 -1
  61. package/dist/{ColorRamp-AkY9gq6Y.cjs → ColorRamp-B9OWxCOK.cjs} +2 -2
  62. package/dist/{ColorRamp-AkY9gq6Y.cjs.map → ColorRamp-B9OWxCOK.cjs.map} +1 -1
  63. package/dist/{ColorRamp-DnlJNKfy.js → ColorRamp-DQ8wkgvF.js} +3 -3
  64. package/dist/{ColorRamp-DnlJNKfy.js.map → ColorRamp-DQ8wkgvF.js.map} +1 -1
  65. package/dist/{ConfigProvider-BicoaBLj.cjs → ConfigProvider-BElY0HuV.cjs} +2 -2
  66. package/dist/{ConfigProvider-BicoaBLj.cjs.map → ConfigProvider-BElY0HuV.cjs.map} +1 -1
  67. package/dist/{ConfigProvider-DL9fylMo.js → ConfigProvider-B_RSn9bb.js} +2 -2
  68. package/dist/{ConfigProvider-DL9fylMo.js.map → ConfigProvider-B_RSn9bb.js.map} +1 -1
  69. package/dist/{CopyButton-BqFGC-Ca.cjs → CopyButton-B5aicGl3.cjs} +2 -2
  70. package/dist/{CopyButton-BqFGC-Ca.cjs.map → CopyButton-B5aicGl3.cjs.map} +1 -1
  71. package/dist/{CopyButton-D6-kcVCA.js → CopyButton-BplPYm8i.js} +3 -3
  72. package/dist/{CopyButton-D6-kcVCA.js.map → CopyButton-BplPYm8i.js.map} +1 -1
  73. package/dist/{DatePicker-BvGFP2AL.cjs → DatePicker-Cdl2JYBd.cjs} +2 -2
  74. package/dist/{DatePicker-BvGFP2AL.cjs.map → DatePicker-Cdl2JYBd.cjs.map} +1 -1
  75. package/dist/{DatePicker-DP7yASzq.js → DatePicker-U5TJ9FYM.js} +6 -6
  76. package/dist/{DatePicker-DP7yASzq.js.map → DatePicker-U5TJ9FYM.js.map} +1 -1
  77. package/dist/{DateTimePicker-DOzft9kg.cjs → DateTimePicker-DUFtddxJ.cjs} +2 -2
  78. package/dist/{DateTimePicker-DOzft9kg.cjs.map → DateTimePicker-DUFtddxJ.cjs.map} +1 -1
  79. package/dist/{DateTimePicker-CzRduOFz.js → DateTimePicker-laJsZYJX.js} +9 -9
  80. package/dist/{DateTimePicker-CzRduOFz.js.map → DateTimePicker-laJsZYJX.js.map} +1 -1
  81. package/dist/DescriptionList-BCvOX8fg.cjs +2 -0
  82. package/dist/DescriptionList-BCvOX8fg.cjs.map +1 -0
  83. package/dist/DescriptionList-Y9jF_4L0.js +176 -0
  84. package/dist/DescriptionList-Y9jF_4L0.js.map +1 -0
  85. package/dist/{Dropdown-FfkmluRu.js → Dropdown--1mNTVZJ.js} +2 -2
  86. package/dist/{Dropdown-FfkmluRu.js.map → Dropdown--1mNTVZJ.js.map} +1 -1
  87. package/dist/{Dropdown-Ui7h2TGd.cjs → Dropdown-DNZ9S_zQ.cjs} +2 -2
  88. package/dist/{Dropdown-Ui7h2TGd.cjs.map → Dropdown-DNZ9S_zQ.cjs.map} +1 -1
  89. package/dist/EmptyState-BtwuzX9Z.js +58 -0
  90. package/dist/EmptyState-BtwuzX9Z.js.map +1 -0
  91. package/dist/EmptyState-CO_NRZ6w.cjs +2 -0
  92. package/dist/EmptyState-CO_NRZ6w.cjs.map +1 -0
  93. package/dist/ErrorBoundary-DJ6R1M9k.js +126 -0
  94. package/dist/ErrorBoundary-DJ6R1M9k.js.map +1 -0
  95. package/dist/ErrorBoundary-unvC1vZQ.cjs +2 -0
  96. package/dist/ErrorBoundary-unvC1vZQ.cjs.map +1 -0
  97. package/dist/FileCard-C3a2yDhK.js +149 -0
  98. package/dist/FileCard-C3a2yDhK.js.map +1 -0
  99. package/dist/FileCard-DKjDQRzZ.cjs +2 -0
  100. package/dist/FileCard-DKjDQRzZ.cjs.map +1 -0
  101. package/dist/FileUploader-CuOHWkiG.js +707 -0
  102. package/dist/FileUploader-CuOHWkiG.js.map +1 -0
  103. package/dist/FileUploader-VIOg03pl.cjs +2 -0
  104. package/dist/FileUploader-VIOg03pl.cjs.map +1 -0
  105. package/dist/{Flag-BM_2VJ1v.cjs → Flag-aOQncoEZ.cjs} +2 -2
  106. package/dist/{Flag-BM_2VJ1v.cjs.map → Flag-aOQncoEZ.cjs.map} +1 -1
  107. package/dist/{Flag-CzCEpB8E.js → Flag-kpUfmrwC.js} +2 -2
  108. package/dist/{Flag-CzCEpB8E.js.map → Flag-kpUfmrwC.js.map} +1 -1
  109. package/dist/FloatingPanel-BIC4WrFa.cjs +2 -0
  110. package/dist/FloatingPanel-BIC4WrFa.cjs.map +1 -0
  111. package/dist/FloatingPanel-CeSOtE_D.js +135 -0
  112. package/dist/FloatingPanel-CeSOtE_D.js.map +1 -0
  113. package/dist/{FullscreenToggle-BL0nBrsL.cjs → FullscreenToggle-BSwxQEaG.cjs} +2 -2
  114. package/dist/{FullscreenToggle-BL0nBrsL.cjs.map → FullscreenToggle-BSwxQEaG.cjs.map} +1 -1
  115. package/dist/{FullscreenToggle-HZQOIa21.js → FullscreenToggle-CMifmPD3.js} +3 -3
  116. package/dist/{FullscreenToggle-HZQOIa21.js.map → FullscreenToggle-CMifmPD3.js.map} +1 -1
  117. package/dist/{IconButton-B87ipBK3.cjs → IconButton-A2B0bqC-.cjs} +2 -2
  118. package/dist/{IconButton-B87ipBK3.cjs.map → IconButton-A2B0bqC-.cjs.map} +1 -1
  119. package/dist/{IconButton-CBp8QuTO.js → IconButton-Dq17Fekm.js} +2 -2
  120. package/dist/{IconButton-CBp8QuTO.js.map → IconButton-Dq17Fekm.js.map} +1 -1
  121. package/dist/List-9lUjapQ5.cjs +2 -0
  122. package/dist/List-9lUjapQ5.cjs.map +1 -0
  123. package/dist/List-CZwNGxuP.js +107 -0
  124. package/dist/List-CZwNGxuP.js.map +1 -0
  125. package/dist/{Loader-fffFnQqS.js → Loader-CwyoKoWY.js} +2 -2
  126. package/dist/{Loader-fffFnQqS.js.map → Loader-CwyoKoWY.js.map} +1 -1
  127. package/dist/{Loader-0Imnbael.cjs → Loader-D9nteBXt.cjs} +2 -2
  128. package/dist/{Loader-0Imnbael.cjs.map → Loader-D9nteBXt.cjs.map} +1 -1
  129. package/dist/Modal-CQDcYS-Y.cjs +2 -0
  130. package/dist/Modal-CQDcYS-Y.cjs.map +1 -0
  131. package/dist/Modal-cz6JIsZn.js +196 -0
  132. package/dist/Modal-cz6JIsZn.js.map +1 -0
  133. package/dist/MultiSelect-BIwE6wb7.cjs +2 -0
  134. package/dist/MultiSelect-BIwE6wb7.cjs.map +1 -0
  135. package/dist/MultiSelect-C6l0LpIs.js +219 -0
  136. package/dist/MultiSelect-C6l0LpIs.js.map +1 -0
  137. package/dist/{MultilineTextField-Dz6Fg8RJ.cjs → MultilineTextField-B6EYAdik.cjs} +2 -2
  138. package/dist/{MultilineTextField-Dz6Fg8RJ.cjs.map → MultilineTextField-B6EYAdik.cjs.map} +1 -1
  139. package/dist/{MultilineTextField-CwNCJ9lZ.js → MultilineTextField-BgfBFeeF.js} +2 -2
  140. package/dist/{MultilineTextField-CwNCJ9lZ.js.map → MultilineTextField-BgfBFeeF.js.map} +1 -1
  141. package/dist/{NumberField-DYGVQdL5.js → NumberField-BpUTV_Qn.js} +4 -4
  142. package/dist/{NumberField-DYGVQdL5.js.map → NumberField-BpUTV_Qn.js.map} +1 -1
  143. package/dist/{NumberField-C_HZXBuw.cjs → NumberField-IyhO4OpJ.cjs} +2 -2
  144. package/dist/{NumberField-C_HZXBuw.cjs.map → NumberField-IyhO4OpJ.cjs.map} +1 -1
  145. package/dist/{OtpField-CpQr_ZqL.js → OtpField-BoLxbGtY.js} +3 -3
  146. package/dist/{OtpField-CpQr_ZqL.js.map → OtpField-BoLxbGtY.js.map} +1 -1
  147. package/dist/{OtpField-DKbUP0F6.cjs → OtpField-HMrxkdiy.cjs} +2 -2
  148. package/dist/{OtpField-DKbUP0F6.cjs.map → OtpField-HMrxkdiy.cjs.map} +1 -1
  149. package/dist/{PageLayout-CuWXukUv.cjs → PageLayout-DtWG-6dn.cjs} +2 -2
  150. package/dist/{PageLayout-CuWXukUv.cjs.map → PageLayout-DtWG-6dn.cjs.map} +1 -1
  151. package/dist/{PageLayout-CCcPCfJF.js → PageLayout-G8F1WgC-.js} +2 -2
  152. package/dist/{PageLayout-CCcPCfJF.js.map → PageLayout-G8F1WgC-.js.map} +1 -1
  153. package/dist/{PageNotFound-LWH2tU5E.js → PageNotFound-CeKIMZ55.js} +5 -5
  154. package/dist/PageNotFound-CeKIMZ55.js.map +1 -0
  155. package/dist/{PageNotFound-JKOnpyHD.cjs → PageNotFound-DG8xXPL3.cjs} +2 -2
  156. package/dist/PageNotFound-DG8xXPL3.cjs.map +1 -0
  157. package/dist/{Pagination-M7njqOUt.cjs → Pagination-Br8P3KwE.cjs} +2 -2
  158. package/dist/{Pagination-M7njqOUt.cjs.map → Pagination-Br8P3KwE.cjs.map} +1 -1
  159. package/dist/{Pagination-BwtbmITJ.js → Pagination-CE1uKrR4.js} +2 -2
  160. package/dist/{Pagination-BwtbmITJ.js.map → Pagination-CE1uKrR4.js.map} +1 -1
  161. package/dist/{PaletteField-CUyzLrny.js → PaletteField-BBPbkDcp.js} +3 -3
  162. package/dist/{PaletteField-CUyzLrny.js.map → PaletteField-BBPbkDcp.js.map} +1 -1
  163. package/dist/{PaletteField-iBIvOvNi.cjs → PaletteField-DwvSn6V6.cjs} +2 -2
  164. package/dist/{PaletteField-iBIvOvNi.cjs.map → PaletteField-DwvSn6V6.cjs.map} +1 -1
  165. package/dist/PhoneField-B-L0xAtD.js +372 -0
  166. package/dist/PhoneField-B-L0xAtD.js.map +1 -0
  167. package/dist/PhoneField-BclMbl7L.cjs +2 -0
  168. package/dist/PhoneField-BclMbl7L.cjs.map +1 -0
  169. package/dist/Popconfirm-BgpvCBy1.js +113 -0
  170. package/dist/Popconfirm-BgpvCBy1.js.map +1 -0
  171. package/dist/Popconfirm-DD8F8SXn.cjs +2 -0
  172. package/dist/Popconfirm-DD8F8SXn.cjs.map +1 -0
  173. package/dist/{Popover-CgIU4Rhg.js → Popover-B82Id9Ut.js} +2 -2
  174. package/dist/{Popover-CgIU4Rhg.js.map → Popover-B82Id9Ut.js.map} +1 -1
  175. package/dist/{Popover-CBI1icIM.cjs → Popover-DAT6DcM9.cjs} +2 -2
  176. package/dist/{Popover-CBI1icIM.cjs.map → Popover-DAT6DcM9.cjs.map} +1 -1
  177. package/dist/Progress-L5koRRJp.js +119 -0
  178. package/dist/Progress-L5koRRJp.js.map +1 -0
  179. package/dist/Progress-_aZ8XOJr.cjs +2 -0
  180. package/dist/Progress-_aZ8XOJr.cjs.map +1 -0
  181. package/dist/QrCode-BQ1eUiAJ.cjs +2 -0
  182. package/dist/QrCode-BQ1eUiAJ.cjs.map +1 -0
  183. package/dist/QrCode-osD23Vkt.js +80 -0
  184. package/dist/QrCode-osD23Vkt.js.map +1 -0
  185. package/dist/QueryError-BMH8X69O.cjs +2 -0
  186. package/dist/QueryError-BMH8X69O.cjs.map +1 -0
  187. package/dist/QueryError-tBuIQRgv.js +19 -0
  188. package/dist/QueryError-tBuIQRgv.js.map +1 -0
  189. package/dist/RadioGroup-BcFBdFhh.cjs +2 -0
  190. package/dist/{RadioGroup-Byy-eSY3.cjs.map → RadioGroup-BcFBdFhh.cjs.map} +1 -1
  191. package/dist/RadioGroup-dVx_hMCY.js +141 -0
  192. package/dist/{RadioGroup-D_1_Heta.js.map → RadioGroup-dVx_hMCY.js.map} +1 -1
  193. package/dist/RemoveDialog-C9_UzFBf.js +109 -0
  194. package/dist/RemoveDialog-C9_UzFBf.js.map +1 -0
  195. package/dist/RemoveDialog-DBKYnTYU.cjs +2 -0
  196. package/dist/RemoveDialog-DBKYnTYU.cjs.map +1 -0
  197. package/dist/RichTextEditor-DTz7Qcn_.cjs +2 -0
  198. package/dist/{RichTextEditor-mpMCG8jX.cjs.map → RichTextEditor-DTz7Qcn_.cjs.map} +1 -1
  199. package/dist/{RichTextEditor-CG6LoNiw.js → RichTextEditor-fXcbUjTl.js} +11 -11
  200. package/dist/{RichTextEditor-CG6LoNiw.js.map → RichTextEditor-fXcbUjTl.js.map} +1 -1
  201. package/dist/RootLayout-DG2dXhXn.cjs +2 -0
  202. package/dist/{RootLayout-CPxDqfGb.cjs.map → RootLayout-DG2dXhXn.cjs.map} +1 -1
  203. package/dist/{RootLayout-D3K-pAMO.js → RootLayout-p8ArA6wA.js} +19 -19
  204. package/dist/{RootLayout-D3K-pAMO.js.map → RootLayout-p8ArA6wA.js.map} +1 -1
  205. package/dist/Select-BAR_aVSz.js +199 -0
  206. package/dist/Select-BAR_aVSz.js.map +1 -0
  207. package/dist/Select-BuVfUiw-.cjs +2 -0
  208. package/dist/Select-BuVfUiw-.cjs.map +1 -0
  209. package/dist/{Sidebar-CsPnv4mu.js → Sidebar-CsWcjSTx.js} +173 -163
  210. package/dist/Sidebar-CsWcjSTx.js.map +1 -0
  211. package/dist/Sidebar-NI5HGGYF.cjs +2 -0
  212. package/dist/Sidebar-NI5HGGYF.cjs.map +1 -0
  213. package/dist/Skeleton-DK0lAjS9.cjs +2 -0
  214. package/dist/Skeleton-DK0lAjS9.cjs.map +1 -0
  215. package/dist/Skeleton-_-uGax2j.js +56 -0
  216. package/dist/Skeleton-_-uGax2j.js.map +1 -0
  217. package/dist/{Slider-D3dbEOQY.cjs → Slider-Cu1FhxR2.cjs} +2 -2
  218. package/dist/{Slider-D3dbEOQY.cjs.map → Slider-Cu1FhxR2.cjs.map} +1 -1
  219. package/dist/{Slider-D7SvowmM.js → Slider-DoQJWgGU.js} +2 -2
  220. package/dist/{Slider-D7SvowmM.js.map → Slider-DoQJWgGU.js.map} +1 -1
  221. package/dist/{SpeedDial-CZ22T8GL.cjs → SpeedDial-C_rZkHmF.cjs} +2 -2
  222. package/dist/{SpeedDial-CZ22T8GL.cjs.map → SpeedDial-C_rZkHmF.cjs.map} +1 -1
  223. package/dist/{SpeedDial-B8XMUATN.js → SpeedDial-DF-ILheU.js} +2 -2
  224. package/dist/{SpeedDial-B8XMUATN.js.map → SpeedDial-DF-ILheU.js.map} +1 -1
  225. package/dist/{Stepper-B_e_PGZE.js → Stepper-B39Ax_w6.js} +2 -2
  226. package/dist/{Stepper-B_e_PGZE.js.map → Stepper-B39Ax_w6.js.map} +1 -1
  227. package/dist/{Stepper-BjkkWawQ.cjs → Stepper-CT7n113R.cjs} +2 -2
  228. package/dist/{Stepper-BjkkWawQ.cjs.map → Stepper-CT7n113R.cjs.map} +1 -1
  229. package/dist/{SwatchPicker-C8amdDnA.cjs → SwatchPicker-BWXqgsEy.cjs} +2 -2
  230. package/dist/{SwatchPicker-C8amdDnA.cjs.map → SwatchPicker-BWXqgsEy.cjs.map} +1 -1
  231. package/dist/{SwatchPicker-DXEE9xqY.js → SwatchPicker-Bpxk0IOe.js} +2 -2
  232. package/dist/{SwatchPicker-DXEE9xqY.js.map → SwatchPicker-Bpxk0IOe.js.map} +1 -1
  233. package/dist/Switch-DSs2Y0IR.cjs +2 -0
  234. package/dist/{Switch-CodRZD3y.cjs.map → Switch-DSs2Y0IR.cjs.map} +1 -1
  235. package/dist/Switch-Jh2Ch8GO.js +85 -0
  236. package/dist/{Switch-ESrhkpJC.js.map → Switch-Jh2Ch8GO.js.map} +1 -1
  237. package/dist/Table-CH_oiEP3.js +1170 -0
  238. package/dist/Table-CH_oiEP3.js.map +1 -0
  239. package/dist/Table-DD_uysnY.cjs +2 -0
  240. package/dist/Table-DD_uysnY.cjs.map +1 -0
  241. package/dist/{Tabs-v1GEGUDQ.js → Tabs-By86Cmpw.js} +2 -2
  242. package/dist/{Tabs-v1GEGUDQ.js.map → Tabs-By86Cmpw.js.map} +1 -1
  243. package/dist/{Tabs-CZDX7BN-.cjs → Tabs-C1N9FgAq.cjs} +2 -2
  244. package/dist/{Tabs-CZDX7BN-.cjs.map → Tabs-C1N9FgAq.cjs.map} +1 -1
  245. package/dist/{TagsField-B389eDp4.js → TagsField-BiOyAadf.js} +5 -5
  246. package/dist/{TagsField-B389eDp4.js.map → TagsField-BiOyAadf.js.map} +1 -1
  247. package/dist/{TagsField-OfrpyHZO.cjs → TagsField-RX-x45-j.cjs} +2 -2
  248. package/dist/{TagsField-OfrpyHZO.cjs.map → TagsField-RX-x45-j.cjs.map} +1 -1
  249. package/dist/{TextField-B785pRgK.cjs → TextField-CdbanZuk.cjs} +2 -2
  250. package/dist/{TextField-B785pRgK.cjs.map → TextField-CdbanZuk.cjs.map} +1 -1
  251. package/dist/{TextField-7MobCad5.js → TextField-CkronCRC.js} +4 -4
  252. package/dist/{TextField-7MobCad5.js.map → TextField-CkronCRC.js.map} +1 -1
  253. package/dist/{ThemeToggle-BGdvqXad.js → ThemeToggle-BYUEH6be.js} +3 -3
  254. package/dist/{ThemeToggle-BGdvqXad.js.map → ThemeToggle-BYUEH6be.js.map} +1 -1
  255. package/dist/{ThemeToggle-BkmZ7s_u.cjs → ThemeToggle-C4QhDd76.cjs} +2 -2
  256. package/dist/{ThemeToggle-BkmZ7s_u.cjs.map → ThemeToggle-C4QhDd76.cjs.map} +1 -1
  257. package/dist/{TimeColumns-B-xm1DGM.cjs → TimeColumns-Cl0_IRf0.cjs} +2 -2
  258. package/dist/{TimeColumns-B-xm1DGM.cjs.map → TimeColumns-Cl0_IRf0.cjs.map} +1 -1
  259. package/dist/{TimeColumns-BRlDKx_i.js → TimeColumns-yzjScNU8.js} +2 -2
  260. package/dist/{TimeColumns-BRlDKx_i.js.map → TimeColumns-yzjScNU8.js.map} +1 -1
  261. package/dist/{TimePicker-DvEIdE4v.cjs → TimePicker-CJGVGETl.cjs} +2 -2
  262. package/dist/{TimePicker-DvEIdE4v.cjs.map → TimePicker-CJGVGETl.cjs.map} +1 -1
  263. package/dist/{TimePicker-B_3Ubip0.js → TimePicker-CoIdMv1S.js} +7 -7
  264. package/dist/{TimePicker-B_3Ubip0.js.map → TimePicker-CoIdMv1S.js.map} +1 -1
  265. package/dist/{Toaster-DuzcRbio.js → Toaster-Dhz2mYq_.js} +2 -2
  266. package/dist/{Toaster-DuzcRbio.js.map → Toaster-Dhz2mYq_.js.map} +1 -1
  267. package/dist/{Toaster-BIFRuqbC.cjs → Toaster-lv5cJhib.cjs} +2 -2
  268. package/dist/{Toaster-BIFRuqbC.cjs.map → Toaster-lv5cJhib.cjs.map} +1 -1
  269. package/dist/{TranslatedFields-D_a0NVKI.cjs → TranslatedFields-BCJ86Tqp.cjs} +2 -2
  270. package/dist/{TranslatedFields-D_a0NVKI.cjs.map → TranslatedFields-BCJ86Tqp.cjs.map} +1 -1
  271. package/dist/{TranslatedFields-HmP0Mg5t.js → TranslatedFields-BtNUAyrY.js} +5 -5
  272. package/dist/{TranslatedFields-HmP0Mg5t.js.map → TranslatedFields-BtNUAyrY.js.map} +1 -1
  273. package/dist/Typography-B6ASPrzT.cjs +2 -0
  274. package/dist/Typography-B6ASPrzT.cjs.map +1 -0
  275. package/dist/Typography-CJv5AnRP.js +70 -0
  276. package/dist/Typography-CJv5AnRP.js.map +1 -0
  277. package/dist/UserCard-B-eNyZuT.js +78 -0
  278. package/dist/UserCard-B-eNyZuT.js.map +1 -0
  279. package/dist/UserCard-CiQUrZjb.cjs +2 -0
  280. package/dist/UserCard-CiQUrZjb.cjs.map +1 -0
  281. package/dist/app/AdminRoot.d.cts +10 -3
  282. package/dist/app/AdminRoot.d.ts +10 -3
  283. package/dist/components/Alert/index.cjs +1 -1
  284. package/dist/components/Alert/index.js +1 -1
  285. package/dist/components/AuthLayout/index.cjs +1 -1
  286. package/dist/components/AuthLayout/index.js +1 -1
  287. package/dist/components/Avatar/Avatar.d.cts +7 -1
  288. package/dist/components/Avatar/Avatar.d.ts +7 -1
  289. package/dist/components/Avatar/index.cjs +1 -1
  290. package/dist/components/Avatar/index.js +2 -2
  291. package/dist/components/Breadcrumbs/index.cjs +1 -1
  292. package/dist/components/Breadcrumbs/index.js +1 -1
  293. package/dist/components/Button/index.cjs +1 -1
  294. package/dist/components/Button/index.js +1 -1
  295. package/dist/components/Card/Card.d.cts +2 -0
  296. package/dist/components/Card/Card.d.ts +2 -0
  297. package/dist/components/Card/index.cjs +1 -1
  298. package/dist/components/Card/index.js +1 -1
  299. package/dist/components/Checkbox/index.cjs +1 -1
  300. package/dist/components/Checkbox/index.js +1 -1
  301. package/dist/components/Chip/index.cjs +1 -1
  302. package/dist/components/Chip/index.js +1 -1
  303. package/dist/components/ChoiceCard/index.cjs +1 -1
  304. package/dist/components/ChoiceCard/index.js +1 -1
  305. package/dist/components/CodeBlock/index.cjs +1 -1
  306. package/dist/components/CodeBlock/index.js +1 -1
  307. package/dist/components/ColorPicker/index.cjs +1 -1
  308. package/dist/components/ColorPicker/index.js +1 -1
  309. package/dist/components/ColorRamp/index.cjs +1 -1
  310. package/dist/components/ColorRamp/index.js +1 -1
  311. package/dist/components/CopyButton/index.cjs +1 -1
  312. package/dist/components/CopyButton/index.js +1 -1
  313. package/dist/components/DatePicker/index.cjs +1 -1
  314. package/dist/components/DatePicker/index.js +1 -1
  315. package/dist/components/DateTimePicker/index.cjs +1 -1
  316. package/dist/components/DateTimePicker/index.js +1 -1
  317. package/dist/components/DescriptionList/DescriptionList.d.cts +76 -0
  318. package/dist/components/DescriptionList/DescriptionList.d.ts +76 -0
  319. package/dist/components/DescriptionList/index.cjs +2 -0
  320. package/dist/components/DescriptionList/index.cjs.map +1 -0
  321. package/dist/components/DescriptionList/index.d.cts +2 -0
  322. package/dist/components/DescriptionList/index.d.ts +2 -0
  323. package/dist/components/DescriptionList/index.js +6 -0
  324. package/dist/components/DescriptionList/index.js.map +1 -0
  325. package/dist/components/Dropdown/index.cjs +1 -1
  326. package/dist/components/Dropdown/index.js +1 -1
  327. package/dist/components/EmptyState/EmptyState.d.cts +4 -1
  328. package/dist/components/EmptyState/EmptyState.d.ts +4 -1
  329. package/dist/components/EmptyState/index.cjs +1 -1
  330. package/dist/components/EmptyState/index.js +1 -1
  331. package/dist/components/ErrorState/ErrorBoundary.d.cts +35 -0
  332. package/dist/components/ErrorState/ErrorBoundary.d.ts +35 -0
  333. package/dist/components/ErrorState/ErrorState.d.cts +36 -0
  334. package/dist/components/ErrorState/ErrorState.d.ts +36 -0
  335. package/dist/components/ErrorState/QueryError.d.cts +18 -0
  336. package/dist/components/ErrorState/QueryError.d.ts +18 -0
  337. package/dist/components/ErrorState/errorMessage.d.cts +14 -0
  338. package/dist/components/ErrorState/errorMessage.d.ts +14 -0
  339. package/dist/components/ErrorState/index.cjs +2 -0
  340. package/dist/components/ErrorState/index.cjs.map +1 -0
  341. package/dist/components/ErrorState/index.d.cts +7 -0
  342. package/dist/components/ErrorState/index.d.ts +7 -0
  343. package/dist/components/ErrorState/index.js +11 -0
  344. package/dist/components/ErrorState/index.js.map +1 -0
  345. package/dist/components/FileCard/index.cjs +1 -1
  346. package/dist/components/FileCard/index.js +1 -1
  347. package/dist/components/FileUploader/index.cjs +1 -1
  348. package/dist/components/FileUploader/index.js +1 -1
  349. package/dist/components/Flag/index.cjs +1 -1
  350. package/dist/components/Flag/index.js +1 -1
  351. package/dist/components/FloatingPanel/FloatingPanel.d.cts +4 -0
  352. package/dist/components/FloatingPanel/FloatingPanel.d.ts +4 -0
  353. package/dist/components/FullscreenToggle/index.cjs +1 -1
  354. package/dist/components/FullscreenToggle/index.js +1 -1
  355. package/dist/components/IconButton/index.cjs +1 -1
  356. package/dist/components/IconButton/index.js +1 -1
  357. package/dist/components/List/List.d.cts +13 -3
  358. package/dist/components/List/List.d.ts +13 -3
  359. package/dist/components/List/ListItem.d.cts +5 -0
  360. package/dist/components/List/ListItem.d.ts +5 -0
  361. package/dist/components/List/index.cjs +1 -1
  362. package/dist/components/List/index.js +4 -5
  363. package/dist/components/List/index.js.map +1 -1
  364. package/dist/components/List/listContext.d.cts +9 -3
  365. package/dist/components/List/listContext.d.ts +9 -3
  366. package/dist/components/Loader/index.cjs +1 -1
  367. package/dist/components/Loader/index.js +1 -1
  368. package/dist/components/Modal/Modal.d.cts +2 -0
  369. package/dist/components/Modal/Modal.d.ts +2 -0
  370. package/dist/components/Modal/index.cjs +1 -1
  371. package/dist/components/Modal/index.js +1 -1
  372. package/dist/components/MultiSelect/index.cjs +1 -1
  373. package/dist/components/MultiSelect/index.js +1 -1
  374. package/dist/components/MultilineTextField/index.cjs +1 -1
  375. package/dist/components/MultilineTextField/index.js +1 -1
  376. package/dist/components/NumberField/index.cjs +1 -1
  377. package/dist/components/NumberField/index.js +1 -1
  378. package/dist/components/OptionMenu/OptionMenu.d.cts +40 -0
  379. package/dist/components/OptionMenu/OptionMenu.d.ts +40 -0
  380. package/dist/components/OptionMenu/useOptionMenu.d.cts +81 -0
  381. package/dist/components/OptionMenu/useOptionMenu.d.ts +81 -0
  382. package/dist/components/OtpField/index.cjs +1 -1
  383. package/dist/components/OtpField/index.js +1 -1
  384. package/dist/components/PageLayout/index.cjs +1 -1
  385. package/dist/components/PageLayout/index.js +1 -1
  386. package/dist/components/PageNotFound/PageNotFound.d.cts +1 -1
  387. package/dist/components/PageNotFound/PageNotFound.d.ts +1 -1
  388. package/dist/components/PageNotFound/index.cjs +1 -1
  389. package/dist/components/PageNotFound/index.js +1 -1
  390. package/dist/components/Pagination/index.cjs +1 -1
  391. package/dist/components/Pagination/index.js +1 -1
  392. package/dist/components/PaletteField/index.cjs +1 -1
  393. package/dist/components/PaletteField/index.js +1 -1
  394. package/dist/components/PhoneField/PhoneField.d.cts +54 -0
  395. package/dist/components/PhoneField/PhoneField.d.ts +54 -0
  396. package/dist/components/PhoneField/index.cjs +2 -0
  397. package/dist/components/PhoneField/index.cjs.map +1 -0
  398. package/dist/components/PhoneField/index.d.cts +4 -0
  399. package/dist/components/PhoneField/index.d.ts +4 -0
  400. package/dist/components/PhoneField/index.js +7 -0
  401. package/dist/components/PhoneField/index.js.map +1 -0
  402. package/dist/components/PhoneField/phone.d.cts +50 -0
  403. package/dist/components/PhoneField/phone.d.ts +50 -0
  404. package/dist/components/Popconfirm/Popconfirm.d.cts +53 -0
  405. package/dist/components/Popconfirm/Popconfirm.d.ts +53 -0
  406. package/dist/components/Popconfirm/index.cjs +2 -0
  407. package/dist/components/Popconfirm/index.cjs.map +1 -0
  408. package/dist/components/Popconfirm/index.d.cts +2 -0
  409. package/dist/components/Popconfirm/index.d.ts +2 -0
  410. package/dist/components/Popconfirm/index.js +6 -0
  411. package/dist/components/Popconfirm/index.js.map +1 -0
  412. package/dist/components/Popover/index.cjs +1 -1
  413. package/dist/components/Popover/index.js +1 -1
  414. package/dist/components/Progress/Progress.d.cts +50 -0
  415. package/dist/components/Progress/Progress.d.ts +50 -0
  416. package/dist/components/Progress/index.cjs +2 -0
  417. package/dist/components/Progress/index.cjs.map +1 -0
  418. package/dist/components/Progress/index.d.cts +2 -0
  419. package/dist/components/Progress/index.d.ts +2 -0
  420. package/dist/components/Progress/index.js +6 -0
  421. package/dist/components/Progress/index.js.map +1 -0
  422. package/dist/components/QrCode/QrCode.d.cts +3 -0
  423. package/dist/components/QrCode/QrCode.d.ts +3 -0
  424. package/dist/components/QrCode/index.cjs +1 -1
  425. package/dist/components/QrCode/index.js +1 -1
  426. package/dist/components/Radio/index.cjs +1 -1
  427. package/dist/components/Radio/index.js +1 -1
  428. package/dist/components/RemoveDialog/RemoveDialog.d.cts +8 -1
  429. package/dist/components/RemoveDialog/RemoveDialog.d.ts +8 -1
  430. package/dist/components/RemoveDialog/index.cjs +1 -1
  431. package/dist/components/RemoveDialog/index.js +1 -1
  432. package/dist/components/RichTextEditor/index.cjs +1 -1
  433. package/dist/components/RichTextEditor/index.js +1 -1
  434. package/dist/components/RootLayout/index.cjs +1 -1
  435. package/dist/components/RootLayout/index.js +1 -1
  436. package/dist/components/Select/Select.d.cts +2 -12
  437. package/dist/components/Select/Select.d.ts +2 -12
  438. package/dist/components/Select/index.cjs +1 -1
  439. package/dist/components/Select/index.js +1 -1
  440. package/dist/components/Sidebar/index.cjs +1 -1
  441. package/dist/components/Sidebar/index.js +1 -1
  442. package/dist/components/Skeleton/Skeleton.d.cts +31 -0
  443. package/dist/components/Skeleton/Skeleton.d.ts +31 -0
  444. package/dist/components/Skeleton/index.cjs +2 -0
  445. package/dist/components/Skeleton/index.cjs.map +1 -0
  446. package/dist/components/Skeleton/index.d.cts +2 -0
  447. package/dist/components/Skeleton/index.d.ts +2 -0
  448. package/dist/components/Skeleton/index.js +6 -0
  449. package/dist/components/Skeleton/index.js.map +1 -0
  450. package/dist/components/Slider/index.cjs +1 -1
  451. package/dist/components/Slider/index.js +1 -1
  452. package/dist/components/SpeedDial/index.cjs +1 -1
  453. package/dist/components/SpeedDial/index.js +1 -1
  454. package/dist/components/Stepper/index.cjs +1 -1
  455. package/dist/components/Stepper/index.js +1 -1
  456. package/dist/components/SwatchPicker/index.cjs +1 -1
  457. package/dist/components/SwatchPicker/index.js +1 -1
  458. package/dist/components/Switch/index.cjs +1 -1
  459. package/dist/components/Switch/index.js +1 -1
  460. package/dist/components/Table/Table.d.cts +7 -1
  461. package/dist/components/Table/Table.d.ts +7 -1
  462. package/dist/components/Table/index.cjs +1 -1
  463. package/dist/components/Table/index.js +1 -1
  464. package/dist/components/Tabs/index.cjs +1 -1
  465. package/dist/components/Tabs/index.js +1 -1
  466. package/dist/components/TagsField/index.cjs +1 -1
  467. package/dist/components/TagsField/index.js +1 -1
  468. package/dist/components/TextField/index.cjs +1 -1
  469. package/dist/components/TextField/index.js +1 -1
  470. package/dist/components/ThemeToggle/index.cjs +1 -1
  471. package/dist/components/ThemeToggle/index.js +1 -1
  472. package/dist/components/TimePicker/index.cjs +1 -1
  473. package/dist/components/TimePicker/index.js +1 -1
  474. package/dist/components/Toast/index.cjs +1 -1
  475. package/dist/components/Toast/index.js +1 -1
  476. package/dist/components/TranslatedFields/index.cjs +1 -1
  477. package/dist/components/TranslatedFields/index.js +1 -1
  478. package/dist/components/Typography/Typography.d.cts +10 -3
  479. package/dist/components/Typography/Typography.d.ts +10 -3
  480. package/dist/components/Typography/index.cjs +1 -1
  481. package/dist/components/Typography/index.js +1 -1
  482. package/dist/components/UserCard/UserCard.d.cts +3 -1
  483. package/dist/components/UserCard/UserCard.d.ts +3 -1
  484. package/dist/components/UserCard/index.cjs +1 -1
  485. package/dist/components/UserCard/index.js +1 -1
  486. package/dist/components/index.d.cts +6 -0
  487. package/dist/components/index.d.ts +6 -0
  488. package/dist/entries/app.cjs +1 -1
  489. package/dist/entries/app.js +1 -1
  490. package/dist/entries/components.cjs +1 -1
  491. package/dist/entries/components.js +169 -152
  492. package/dist/entries/components.js.map +1 -1
  493. package/dist/entries/i18n.cjs +1 -1
  494. package/dist/entries/i18n.js +2 -2
  495. package/dist/entries/theme.cjs +1 -1
  496. package/dist/entries/theme.js +1 -1
  497. package/dist/hooks/useOptionalPeer.d.cts +21 -0
  498. package/dist/hooks/useOptionalPeer.d.ts +21 -0
  499. package/dist/i18n/messages.d.cts +13 -0
  500. package/dist/i18n/messages.d.ts +13 -0
  501. package/dist/index.cjs +1 -1
  502. package/dist/index.css +1 -1
  503. package/dist/index.js +183 -166
  504. package/dist/index.js.map +1 -1
  505. package/dist/{messages-B06Kl5rI.js → messages-BF2ft7yD.js} +120 -29
  506. package/dist/messages-BF2ft7yD.js.map +1 -0
  507. package/dist/messages-ihnE1jVG.cjs +36 -0
  508. package/dist/messages-ihnE1jVG.cjs.map +1 -0
  509. package/dist/useOptionMenu-C0xSaZ4t.cjs +2 -0
  510. package/dist/useOptionMenu-C0xSaZ4t.cjs.map +1 -0
  511. package/dist/useOptionMenu-Cq_eHdab.js +286 -0
  512. package/dist/useOptionMenu-Cq_eHdab.js.map +1 -0
  513. package/dist/useOptionalPeer-49f3XcO5.js +28 -0
  514. package/dist/useOptionalPeer-49f3XcO5.js.map +1 -0
  515. package/dist/useOptionalPeer-9Fkx5Leb.cjs +2 -0
  516. package/dist/useOptionalPeer-9Fkx5Leb.cjs.map +1 -0
  517. package/package.json +6 -1
  518. package/dist/AdminRoot-C4OyuOIr.js +0 -50
  519. package/dist/AdminRoot-C4OyuOIr.js.map +0 -1
  520. package/dist/AdminRoot-bHywlbML.cjs +0 -2
  521. package/dist/AdminRoot-bHywlbML.cjs.map +0 -1
  522. package/dist/Avatar-BGPGxry2.js +0 -60
  523. package/dist/Avatar-BGPGxry2.js.map +0 -1
  524. package/dist/Avatar-D_YivyqV.cjs +0 -2
  525. package/dist/Avatar-D_YivyqV.cjs.map +0 -1
  526. package/dist/Card-BRJV2JZE.js +0 -118
  527. package/dist/Card-BRJV2JZE.js.map +0 -1
  528. package/dist/Card-KvvNlchc.cjs +0 -2
  529. package/dist/Card-KvvNlchc.cjs.map +0 -1
  530. package/dist/Checkbox-ZYOSBYRt.js +0 -98
  531. package/dist/Checkbox-fzJCwe0j.cjs +0 -2
  532. package/dist/EmptyState-A5nPGnHA.js +0 -38
  533. package/dist/EmptyState-A5nPGnHA.js.map +0 -1
  534. package/dist/EmptyState-CTTOy9aY.cjs +0 -2
  535. package/dist/EmptyState-CTTOy9aY.cjs.map +0 -1
  536. package/dist/FileCard-BmPEEcue.js +0 -148
  537. package/dist/FileCard-BmPEEcue.js.map +0 -1
  538. package/dist/FileCard-C4BkGMtK.cjs +0 -2
  539. package/dist/FileCard-C4BkGMtK.cjs.map +0 -1
  540. package/dist/FileUploader-D_F64mob.cjs +0 -2
  541. package/dist/FileUploader-D_F64mob.cjs.map +0 -1
  542. package/dist/FileUploader-Dv_3bjZA.js +0 -684
  543. package/dist/FileUploader-Dv_3bjZA.js.map +0 -1
  544. package/dist/FloatingPanel-BG9Uag__.js +0 -131
  545. package/dist/FloatingPanel-BG9Uag__.js.map +0 -1
  546. package/dist/FloatingPanel-U6sGYiSK.cjs +0 -2
  547. package/dist/FloatingPanel-U6sGYiSK.cjs.map +0 -1
  548. package/dist/List-ChXO0Hz-.cjs +0 -2
  549. package/dist/List-ChXO0Hz-.cjs.map +0 -1
  550. package/dist/List-LqbfF6gU.js +0 -26
  551. package/dist/List-LqbfF6gU.js.map +0 -1
  552. package/dist/ListItem-Cn15lJBr.js +0 -74
  553. package/dist/ListItem-Cn15lJBr.js.map +0 -1
  554. package/dist/ListItem-yXXjtepZ.cjs +0 -2
  555. package/dist/ListItem-yXXjtepZ.cjs.map +0 -1
  556. package/dist/Modal--e2qGisF.cjs +0 -2
  557. package/dist/Modal--e2qGisF.cjs.map +0 -1
  558. package/dist/Modal-DJljaPqV.js +0 -195
  559. package/dist/Modal-DJljaPqV.js.map +0 -1
  560. package/dist/MultiSelect-CvecZeMU.cjs +0 -2
  561. package/dist/MultiSelect-CvecZeMU.cjs.map +0 -1
  562. package/dist/MultiSelect-DLoS04lZ.js +0 -350
  563. package/dist/MultiSelect-DLoS04lZ.js.map +0 -1
  564. package/dist/PageNotFound-JKOnpyHD.cjs.map +0 -1
  565. package/dist/PageNotFound-LWH2tU5E.js.map +0 -1
  566. package/dist/QrCode-Bcj9_Emc.js +0 -70
  567. package/dist/QrCode-Bcj9_Emc.js.map +0 -1
  568. package/dist/QrCode-DfDfGhG-.cjs +0 -2
  569. package/dist/QrCode-DfDfGhG-.cjs.map +0 -1
  570. package/dist/RadioGroup-Byy-eSY3.cjs +0 -2
  571. package/dist/RadioGroup-D_1_Heta.js +0 -141
  572. package/dist/RemoveDialog-DUrD2Em8.js +0 -47
  573. package/dist/RemoveDialog-DUrD2Em8.js.map +0 -1
  574. package/dist/RemoveDialog-FZWYAxRy.cjs +0 -2
  575. package/dist/RemoveDialog-FZWYAxRy.cjs.map +0 -1
  576. package/dist/RichTextEditor-mpMCG8jX.cjs +0 -2
  577. package/dist/RootLayout-CPxDqfGb.cjs +0 -2
  578. package/dist/Select-BB9oOoWZ.js +0 -338
  579. package/dist/Select-BB9oOoWZ.js.map +0 -1
  580. package/dist/Select-iP2p5jad.cjs +0 -2
  581. package/dist/Select-iP2p5jad.cjs.map +0 -1
  582. package/dist/Sidebar-Boi7UgHV.cjs +0 -2
  583. package/dist/Sidebar-Boi7UgHV.cjs.map +0 -1
  584. package/dist/Sidebar-CsPnv4mu.js.map +0 -1
  585. package/dist/Switch-CodRZD3y.cjs +0 -2
  586. package/dist/Switch-ESrhkpJC.js +0 -85
  587. package/dist/Table-Cr1zUtNQ.cjs +0 -2
  588. package/dist/Table-Cr1zUtNQ.cjs.map +0 -1
  589. package/dist/Table-DdoUcZoN.js +0 -1099
  590. package/dist/Table-DdoUcZoN.js.map +0 -1
  591. package/dist/Typography-BFatE1_A.cjs +0 -2
  592. package/dist/Typography-BFatE1_A.cjs.map +0 -1
  593. package/dist/Typography-Cta6Rg4L.js +0 -51
  594. package/dist/Typography-Cta6Rg4L.js.map +0 -1
  595. package/dist/UserCard-B1phOVKj.js +0 -74
  596. package/dist/UserCard-B1phOVKj.js.map +0 -1
  597. package/dist/UserCard-BvOcDm5W.cjs +0 -2
  598. package/dist/UserCard-BvOcDm5W.cjs.map +0 -1
  599. package/dist/messages-B06Kl5rI.js.map +0 -1
  600. package/dist/messages-CJqxqL3t.cjs +0 -36
  601. package/dist/messages-CJqxqL3t.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ColorPickerPanel-DQ4CFnGa.cjs","sources":["../src/components/ColorPicker/colorUtils.ts","../src/components/ColorPicker/ColorPickerPanel.tsx"],"sourcesContent":["/** Color math for the ColorPicker: hex ⇄ rgb ⇄ hsv, plus hex validation. All internal, no deps. */\n\nexport interface HSV {\n /** Hue 0–360 */\n h: number\n /** Saturation 0–1 */\n s: number\n /** Value/brightness 0–1 */\n v: number\n}\n\nimport { clamp01, hexToRgb, rgbToHex, type RGB } from '../../helpers/color'\n\n// the hex ⇄ rgb primitives are shared with the palette helpers — re-exported so nothing else changes\nexport { clamp01, normalizeHex, isValidHex, hexToRgb, rgbToHex } from '../../helpers/color'\nexport type { RGB } from '../../helpers/color'\n\nexport interface RGBA extends RGB {\n /** Alpha 0–1 */\n a: number\n}\n\nconst clamp255 = (n: number): number => Math.min(255, Math.max(0, Math.round(n)))\n\n/** RGB (0–255) → HSV. */\nexport function rgbToHsv({ r, g, b }: RGB): HSV {\n const rn = r / 255\n const gn = g / 255\n const bn = b / 255\n const max = Math.max(rn, gn, bn)\n const min = Math.min(rn, gn, bn)\n const d = max - min\n\n let h = 0\n if (d !== 0) {\n if (max === rn) h = ((gn - bn) / d) % 6\n else if (max === gn) h = (bn - rn) / d + 2\n else h = (rn - gn) / d + 4\n h *= 60\n if (h < 0) h += 360\n }\n const s = max === 0 ? 0 : d / max\n return { h, s, v: max }\n}\n\n/** HSV → RGB (0–255). */\nexport function hsvToRgb({ h, s, v }: HSV): RGB {\n const c = v * s\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1))\n const m = v - c\n let r = 0\n let g = 0\n let b = 0\n if (h < 60) [r, g, b] = [c, x, 0]\n else if (h < 120) [r, g, b] = [x, c, 0]\n else if (h < 180) [r, g, b] = [0, c, x]\n else if (h < 240) [r, g, b] = [0, x, c]\n else if (h < 300) [r, g, b] = [x, 0, c]\n else [r, g, b] = [c, 0, x]\n return { r: (r + m) * 255, g: (g + m) * 255, b: (b + m) * 255 }\n}\n\nexport const hexToHsv = (hex: string): HSV => rgbToHsv(hexToRgb(hex))\nexport const hsvToHex = (hsv: HSV): string => rgbToHex(hsvToRgb(hsv))\n\n/** A readable text/handle color (near-black or white) for sitting on top of a given hex fill. */\nexport function contrastOn(hex: string): string {\n const { r, g, b } = hexToRgb(hex)\n return (r * 299 + g * 587 + b * 114) / 1000 >= 150 ? '#04202b' : '#ffffff'\n}\n\nconst RGB_FUNC =\n /^rgba?\\(\\s*([\\d.]+)\\s*[, ]\\s*([\\d.]+)\\s*[, ]\\s*([\\d.]+)\\s*(?:[,/]\\s*([\\d.]+%?)\\s*)?\\)$/i\n\n/**\n * Parses any CSS color the picker understands — `#rgb` / `#rgba` / `#rrggbb` / `#rrggbbaa` hex (with\n * or without `#`), or `rgb()` / `rgba()` (alpha as `0–1` or a `%`) — to `{ r, g, b, a }` (`a` is\n * `0–1`), or `null` when it doesn't match.\n */\nexport function parseColor(input: string): RGBA | null {\n const s = input.trim()\n if (!s) return null\n\n // hex (with or without #) — 3 / 4 / 6 / 8 digits (3 & 4 expand each nibble to a byte)\n let h = s.replace(/^#/, '')\n if (/^[0-9a-fA-F]{3,4}$/.test(h)) {\n h = h\n .split('')\n .map((c) => c + c)\n .join('')\n }\n if (/^[0-9a-fA-F]{6}$/.test(h)) {\n return {\n r: parseInt(h.slice(0, 2), 16),\n g: parseInt(h.slice(2, 4), 16),\n b: parseInt(h.slice(4, 6), 16),\n a: 1,\n }\n }\n if (/^[0-9a-fA-F]{8}$/.test(h)) {\n return {\n r: parseInt(h.slice(0, 2), 16),\n g: parseInt(h.slice(2, 4), 16),\n b: parseInt(h.slice(4, 6), 16),\n a: clamp01(parseInt(h.slice(6, 8), 16) / 255),\n }\n }\n\n // rgb() / rgba()\n const m = s.match(RGB_FUNC)\n if (m) {\n let a = 1\n if (m[4] != null) {\n a = m[4].endsWith('%') ? clamp01(parseFloat(m[4]) / 100) : clamp01(parseFloat(m[4]))\n }\n return { r: clamp255(+m[1]), g: clamp255(+m[2]), b: clamp255(+m[3]), a }\n }\n return null\n}\n\n/**\n * Formats `{ r, g, b, a }` back to a CSS string: `#rrggbb` when fully opaque (`a >= 1`), else\n * `rgba(r, g, b, a)` with alpha rounded to 2 decimals.\n */\nexport function formatColor({ r, g, b, a }: RGBA): string {\n if (a >= 1) return rgbToHex({ r, g, b })\n return `rgba(${clamp255(r)}, ${clamp255(g)}, ${clamp255(b)}, ${Math.round(clamp01(a) * 100) / 100})`\n}\n","import {\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type KeyboardEvent as ReactKeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useT } from '../../theme'\nimport { Icon } from '../Icon'\nimport {\n clamp01,\n contrastOn,\n formatColor,\n hexToHsv,\n hsvToRgb,\n parseColor,\n rgbToHex,\n rgbToHsv,\n type HSV,\n} from './colorUtils'\nimport styles from './ColorPicker.module.css'\n\n/** A pleasant default palette shown as quick-pick swatches. */\nexport const DEFAULT_SWATCHES = [\n '#13404e',\n '#039aa1',\n '#00a854',\n '#0ea5e9',\n '#6366f1',\n '#7c3aed',\n '#f04134',\n '#f59e0b',\n '#ffbf00',\n '#10b981',\n '#64748b',\n '#0f172a',\n '#ffffff',\n]\n\nconst FALLBACK_HSV: HSV = hexToHsv('#13404e')\n\nexport interface ColorPickerPanelProps {\n /** Current color — a CSS color string (`#rrggbb`, `rgba(...)`, or `''` when unset). */\n value: string\n /** Fires with the next color: `#rrggbb` when opaque, `rgba(r, g, b, a)` when translucent, `''` when cleared. */\n onChange: (color: string) => void\n /** Quick-pick swatches. Defaults to a curated palette. */\n swatches?: string[]\n /** Show the leading \"no color\" swatch that clears the value. Defaults to `true`. */\n clearable?: boolean\n /**\n * Offer opacity. Defaults to `true`. `false` hides the alpha rail and pins alpha to `1`, so the\n * panel only ever emits `#rrggbb` — for values that must be opaque (brand colors).\n */\n alpha?: boolean\n}\n\n/**\n * The color-picking surface — a saturation/value square, hue + alpha sliders, a color input and\n * quick-pick swatches. Controlled by a single color `string` (`value` / `onChange`), so it drops into\n * any popover. Working state is kept as HSV + alpha (hue survives dragging at grey/black), re-derived\n * from `value` only on external changes. Used by `ColorPicker` (the field) and the `RichTextEditor`\n * text-color control. Token-styled except the spectrum gradients + alpha checkerboard (literal colors).\n */\nexport function ColorPickerPanel({\n value,\n onChange,\n swatches = DEFAULT_SWATCHES,\n clearable = true,\n alpha: alphaEnabled = true,\n}: ColorPickerPanelProps) {\n // with opacity off every emitted color is opaque, whatever the working alpha happens to be\n const emitAlpha = (a: number) => (alphaEnabled ? a : 1)\n const t = useT()\n const parsed = parseColor(value || '')\n // canonical string for the value (`#rrggbb` when opaque, `rgba(...)` when not), null when unset\n const displayValue = parsed ? formatColor(parsed) : null\n\n // working HSV + alpha (HSV keeps hue stable while dragging at grey/black; alpha is the opacity)\n const [hsv, setHsv] = useState<HSV>(parsed ? rgbToHsv(parsed) : FALLBACK_HSV)\n const hsvRef = useRef(hsv)\n hsvRef.current = hsv\n const [alpha, setAlpha] = useState<number>(parsed?.a ?? 1)\n const alphaRef = useRef(alpha)\n alphaRef.current = alpha\n\n // re-derive HSV + alpha only when the value changes from OUTSIDE our own edits (prop/preset/input)\n useEffect(() => {\n if (!parsed) return\n const cur = formatColor({ ...hsvToRgb(hsvRef.current), a: alphaRef.current })\n if (displayValue !== cur) {\n setHsv(rgbToHsv(parsed))\n setAlpha(parsed.a)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [displayValue])\n\n const applyHsv = (next: HSV) => {\n setHsv(next)\n onChange(formatColor({ ...hsvToRgb(next), a: emitAlpha(alphaRef.current) }))\n }\n\n const applyAlpha = (next: number) => {\n setAlpha(next)\n onChange(formatColor({ ...hsvToRgb(hsvRef.current), a: emitAlpha(next) }))\n }\n\n // drag (SV square + hue/alpha sliders)\n const drag =\n (onMove: (clientX: number, clientY: number, rect: DOMRect) => void) =>\n (event: ReactPointerEvent<HTMLDivElement>) => {\n event.preventDefault()\n const el = event.currentTarget\n const move = (clientX: number, clientY: number) =>\n onMove(clientX, clientY, el.getBoundingClientRect())\n move(event.clientX, event.clientY)\n const onPointerMove = (e: PointerEvent) => move(e.clientX, e.clientY)\n const onPointerUp = () => {\n window.removeEventListener('pointermove', onPointerMove)\n window.removeEventListener('pointerup', onPointerUp)\n }\n window.addEventListener('pointermove', onPointerMove)\n window.addEventListener('pointerup', onPointerUp)\n }\n\n const onSvDown = drag((x, y, rect) => {\n const s = clamp01((x - rect.left) / rect.width)\n const v = clamp01(1 - (y - rect.top) / rect.height)\n applyHsv({ ...hsvRef.current, s, v })\n })\n\n const onHueDown = drag((x, _y, rect) => {\n const h = clamp01((x - rect.left) / rect.width) * 360\n applyHsv({ ...hsvRef.current, h })\n })\n\n const onAlphaDown = drag((x, _y, rect) => {\n applyAlpha(clamp01((x - rect.left) / rect.width))\n })\n\n // keyboard control — arrows nudge, Home/End jump to the extents (mirrors Calendar/TimeColumns a11y)\n const SV_STEP = 0.01\n const onSvKey = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n const { h, s, v } = hsvRef.current\n let ns = s\n let nv = v\n switch (event.key) {\n case 'ArrowLeft':\n ns = clamp01(s - SV_STEP)\n break\n case 'ArrowRight':\n ns = clamp01(s + SV_STEP)\n break\n case 'ArrowUp':\n nv = clamp01(v + SV_STEP)\n break\n case 'ArrowDown':\n nv = clamp01(v - SV_STEP)\n break\n default:\n return\n }\n event.preventDefault()\n applyHsv({ h, s: ns, v: nv })\n }\n const onHueKey = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n const { h } = hsvRef.current\n let nh = h\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowDown':\n nh = Math.max(0, h - 1)\n break\n case 'ArrowRight':\n case 'ArrowUp':\n nh = Math.min(360, h + 1)\n break\n case 'Home':\n nh = 0\n break\n case 'End':\n nh = 360\n break\n default:\n return\n }\n event.preventDefault()\n applyHsv({ ...hsvRef.current, h: nh })\n }\n const onAlphaKey = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n let na = alphaRef.current\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowDown':\n na = clamp01(alphaRef.current - 0.01)\n break\n case 'ArrowRight':\n case 'ArrowUp':\n na = clamp01(alphaRef.current + 0.01)\n break\n case 'Home':\n na = 0\n break\n case 'End':\n na = 1\n break\n default:\n return\n }\n event.preventDefault()\n applyAlpha(na)\n }\n\n // color input (accepts hex / rgb() / rgba()) + clear\n const [colorDraft, setColorDraft] = useState('')\n useEffect(() => {\n setColorDraft(displayValue ?? '')\n }, [displayValue])\n\n const onColorInput = (raw: string) => {\n setColorDraft(raw)\n const p = parseColor(raw)\n if (p) {\n setHsv(rgbToHsv(p))\n setAlpha(p.a)\n onChange(formatColor({ ...p, a: emitAlpha(p.a) }))\n }\n }\n\n const handleClear = () => {\n onChange('')\n setHsv(FALLBACK_HSV)\n setAlpha(1)\n }\n\n // working color (hsv + alpha): the current swatch + the SV thumb (opaque) + the alpha track base\n const workingColor = formatColor({ ...hsvToRgb(hsv), a: alpha })\n const solidHex = rgbToHex(hsvToRgb(hsv))\n const cur = hsvToRgb(hsv)\n const cpRgb = `${Math.round(cur.r)}, ${Math.round(cur.g)}, ${Math.round(cur.b)}`\n\n return (\n <div className={styles.popover} style={{ '--cp-hue': hsv.h } as CSSProperties}>\n <div\n className={styles.sv}\n onPointerDown={onSvDown}\n onKeyDown={onSvKey}\n role=\"slider\"\n tabIndex={0}\n aria-label={t('colorPicker.saturation')}\n aria-valuetext={`${Math.round(hsv.s * 100)}% saturation, ${Math.round(hsv.v * 100)}% brightness`}\n >\n <span\n className={styles.svThumb}\n style={{ left: `${hsv.s * 100}%`, top: `${(1 - hsv.v) * 100}%`, background: solidHex }}\n />\n </div>\n\n <div\n className={styles.hue}\n onPointerDown={onHueDown}\n onKeyDown={onHueKey}\n role=\"slider\"\n tabIndex={0}\n aria-label={t('colorPicker.hue')}\n aria-valuemin={0}\n aria-valuemax={360}\n aria-valuenow={Math.round(hsv.h)}\n >\n <span className={styles.hueThumb} style={{ left: `${(hsv.h / 360) * 100}%` }} />\n </div>\n\n {alphaEnabled && (\n <div\n className={styles.alpha}\n onPointerDown={onAlphaDown}\n onKeyDown={onAlphaKey}\n role=\"slider\"\n tabIndex={0}\n aria-label={t('colorPicker.opacity')}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={Math.round(alpha * 100)}\n style={{ '--cp-rgb': cpRgb } as CSSProperties}\n >\n <span className={styles.alphaThumb} style={{ left: `${alpha * 100}%` }} />\n </div>\n )}\n\n <div className={styles.hexRow}>\n <span\n className={styles.currentSwatch}\n style={{ '--cp-fill': workingColor } as CSSProperties}\n />\n <span className={styles.hexField}>\n <input\n className={styles.hexInput}\n value={colorDraft}\n spellCheck={false}\n maxLength={28}\n aria-label={t('colorPicker.value')}\n onChange={(e) => onColorInput(e.target.value)}\n />\n </span>\n </div>\n\n <div className={styles.swatches}>\n {/* \"no color\" — clears the value (the diagonal-stripe swatch); hidden when not clearable */}\n {clearable && (\n <button\n type=\"button\"\n className={clsx(styles.swatch, styles.swatchClear)}\n aria-label={t('colorPicker.noColor')}\n aria-pressed={!parsed}\n onClick={handleClear}\n >\n {!parsed && <Icon name=\"TickCircle\" size=\"sm\" />}\n </button>\n )}\n {swatches.map((sw) => {\n const p = parseColor(sw)\n if (!p) return null\n const swHex = formatColor({ r: p.r, g: p.g, b: p.b, a: 1 })\n const selected = displayValue === swHex\n return (\n <button\n key={sw}\n type=\"button\"\n className={styles.swatch}\n style={{ background: swHex, color: contrastOn(swHex) }}\n aria-label={swHex}\n aria-pressed={selected}\n onClick={() => {\n setHsv(rgbToHsv(p))\n onChange(formatColor({ r: p.r, g: p.g, b: p.b, a: emitAlpha(alphaRef.current) }))\n }}\n >\n {selected && <Icon name=\"TickCircle\" size=\"sm\" />}\n </button>\n )\n })}\n </div>\n </div>\n )\n}\n"],"names":["clamp255","n","rgbToHsv","r","g","b","rn","gn","bn","max","min","d","h","s","hsvToRgb","v","c","x","m","hexToHsv","hex","hexToRgb","contrastOn","RGB_FUNC","parseColor","input","clamp01","a","formatColor","rgbToHex","DEFAULT_SWATCHES","FALLBACK_HSV","ColorPickerPanel","value","onChange","swatches","clearable","alphaEnabled","emitAlpha","t","useT","parsed","displayValue","hsv","setHsv","useState","hsvRef","useRef","alpha","setAlpha","alphaRef","useEffect","cur","applyHsv","next","applyAlpha","drag","onMove","event","el","move","clientX","clientY","onPointerMove","e","onPointerUp","onSvDown","y","rect","onHueDown","_y","onAlphaDown","SV_STEP","onSvKey","ns","nv","onHueKey","nh","onAlphaKey","na","colorDraft","setColorDraft","onColorInput","raw","p","handleClear","workingColor","solidHex","cpRgb","jsxs","styles","jsx","clsx","Icon","sw","swHex","selected"],"mappings":"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"}
1
+ {"version":3,"file":"ColorPickerPanel-C9ARc_uD.cjs","sources":["../src/components/ColorPicker/colorUtils.ts","../src/components/ColorPicker/ColorPickerPanel.tsx"],"sourcesContent":["/** Color math for the ColorPicker: hex ⇄ rgb ⇄ hsv, plus hex validation. All internal, no deps. */\n\nexport interface HSV {\n /** Hue 0–360 */\n h: number\n /** Saturation 0–1 */\n s: number\n /** Value/brightness 0–1 */\n v: number\n}\n\nimport { clamp01, hexToRgb, rgbToHex, type RGB } from '../../helpers/color'\n\n// the hex ⇄ rgb primitives are shared with the palette helpers — re-exported so nothing else changes\nexport { clamp01, normalizeHex, isValidHex, hexToRgb, rgbToHex } from '../../helpers/color'\nexport type { RGB } from '../../helpers/color'\n\nexport interface RGBA extends RGB {\n /** Alpha 0–1 */\n a: number\n}\n\nconst clamp255 = (n: number): number => Math.min(255, Math.max(0, Math.round(n)))\n\n/** RGB (0–255) → HSV. */\nexport function rgbToHsv({ r, g, b }: RGB): HSV {\n const rn = r / 255\n const gn = g / 255\n const bn = b / 255\n const max = Math.max(rn, gn, bn)\n const min = Math.min(rn, gn, bn)\n const d = max - min\n\n let h = 0\n if (d !== 0) {\n if (max === rn) h = ((gn - bn) / d) % 6\n else if (max === gn) h = (bn - rn) / d + 2\n else h = (rn - gn) / d + 4\n h *= 60\n if (h < 0) h += 360\n }\n const s = max === 0 ? 0 : d / max\n return { h, s, v: max }\n}\n\n/** HSV → RGB (0–255). */\nexport function hsvToRgb({ h, s, v }: HSV): RGB {\n const c = v * s\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1))\n const m = v - c\n let r = 0\n let g = 0\n let b = 0\n if (h < 60) [r, g, b] = [c, x, 0]\n else if (h < 120) [r, g, b] = [x, c, 0]\n else if (h < 180) [r, g, b] = [0, c, x]\n else if (h < 240) [r, g, b] = [0, x, c]\n else if (h < 300) [r, g, b] = [x, 0, c]\n else [r, g, b] = [c, 0, x]\n return { r: (r + m) * 255, g: (g + m) * 255, b: (b + m) * 255 }\n}\n\nexport const hexToHsv = (hex: string): HSV => rgbToHsv(hexToRgb(hex))\nexport const hsvToHex = (hsv: HSV): string => rgbToHex(hsvToRgb(hsv))\n\n/** A readable text/handle color (near-black or white) for sitting on top of a given hex fill. */\nexport function contrastOn(hex: string): string {\n const { r, g, b } = hexToRgb(hex)\n return (r * 299 + g * 587 + b * 114) / 1000 >= 150 ? '#04202b' : '#ffffff'\n}\n\nconst RGB_FUNC =\n /^rgba?\\(\\s*([\\d.]+)\\s*[, ]\\s*([\\d.]+)\\s*[, ]\\s*([\\d.]+)\\s*(?:[,/]\\s*([\\d.]+%?)\\s*)?\\)$/i\n\n/**\n * Parses any CSS color the picker understands — `#rgb` / `#rgba` / `#rrggbb` / `#rrggbbaa` hex (with\n * or without `#`), or `rgb()` / `rgba()` (alpha as `0–1` or a `%`) — to `{ r, g, b, a }` (`a` is\n * `0–1`), or `null` when it doesn't match.\n */\nexport function parseColor(input: string): RGBA | null {\n const s = input.trim()\n if (!s) return null\n\n // hex (with or without #) — 3 / 4 / 6 / 8 digits (3 & 4 expand each nibble to a byte)\n let h = s.replace(/^#/, '')\n if (/^[0-9a-fA-F]{3,4}$/.test(h)) {\n h = h\n .split('')\n .map((c) => c + c)\n .join('')\n }\n if (/^[0-9a-fA-F]{6}$/.test(h)) {\n return {\n r: parseInt(h.slice(0, 2), 16),\n g: parseInt(h.slice(2, 4), 16),\n b: parseInt(h.slice(4, 6), 16),\n a: 1,\n }\n }\n if (/^[0-9a-fA-F]{8}$/.test(h)) {\n return {\n r: parseInt(h.slice(0, 2), 16),\n g: parseInt(h.slice(2, 4), 16),\n b: parseInt(h.slice(4, 6), 16),\n a: clamp01(parseInt(h.slice(6, 8), 16) / 255),\n }\n }\n\n // rgb() / rgba()\n const m = s.match(RGB_FUNC)\n if (m) {\n let a = 1\n if (m[4] != null) {\n a = m[4].endsWith('%') ? clamp01(parseFloat(m[4]) / 100) : clamp01(parseFloat(m[4]))\n }\n return { r: clamp255(+m[1]), g: clamp255(+m[2]), b: clamp255(+m[3]), a }\n }\n return null\n}\n\n/**\n * Formats `{ r, g, b, a }` back to a CSS string: `#rrggbb` when fully opaque (`a >= 1`), else\n * `rgba(r, g, b, a)` with alpha rounded to 2 decimals.\n */\nexport function formatColor({ r, g, b, a }: RGBA): string {\n if (a >= 1) return rgbToHex({ r, g, b })\n return `rgba(${clamp255(r)}, ${clamp255(g)}, ${clamp255(b)}, ${Math.round(clamp01(a) * 100) / 100})`\n}\n","import {\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type KeyboardEvent as ReactKeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useT } from '../../theme'\nimport { Icon } from '../Icon'\nimport {\n clamp01,\n contrastOn,\n formatColor,\n hexToHsv,\n hsvToRgb,\n parseColor,\n rgbToHex,\n rgbToHsv,\n type HSV,\n} from './colorUtils'\nimport styles from './ColorPicker.module.css'\n\n/** A pleasant default palette shown as quick-pick swatches. */\nexport const DEFAULT_SWATCHES = [\n '#13404e',\n '#039aa1',\n '#00a854',\n '#0ea5e9',\n '#6366f1',\n '#7c3aed',\n '#f04134',\n '#f59e0b',\n '#ffbf00',\n '#10b981',\n '#64748b',\n '#0f172a',\n '#ffffff',\n]\n\nconst FALLBACK_HSV: HSV = hexToHsv('#13404e')\n\nexport interface ColorPickerPanelProps {\n /** Current color — a CSS color string (`#rrggbb`, `rgba(...)`, or `''` when unset). */\n value: string\n /** Fires with the next color: `#rrggbb` when opaque, `rgba(r, g, b, a)` when translucent, `''` when cleared. */\n onChange: (color: string) => void\n /** Quick-pick swatches. Defaults to a curated palette. */\n swatches?: string[]\n /** Show the leading \"no color\" swatch that clears the value. Defaults to `true`. */\n clearable?: boolean\n /**\n * Offer opacity. Defaults to `true`. `false` hides the alpha rail and pins alpha to `1`, so the\n * panel only ever emits `#rrggbb` — for values that must be opaque (brand colors).\n */\n alpha?: boolean\n}\n\n/**\n * The color-picking surface — a saturation/value square, hue + alpha sliders, a color input and\n * quick-pick swatches. Controlled by a single color `string` (`value` / `onChange`), so it drops into\n * any popover. Working state is kept as HSV + alpha (hue survives dragging at grey/black), re-derived\n * from `value` only on external changes. Used by `ColorPicker` (the field) and the `RichTextEditor`\n * text-color control. Token-styled except the spectrum gradients + alpha checkerboard (literal colors).\n */\nexport function ColorPickerPanel({\n value,\n onChange,\n swatches = DEFAULT_SWATCHES,\n clearable = true,\n alpha: alphaEnabled = true,\n}: ColorPickerPanelProps) {\n // with opacity off every emitted color is opaque, whatever the working alpha happens to be\n const emitAlpha = (a: number) => (alphaEnabled ? a : 1)\n const t = useT()\n const parsed = parseColor(value || '')\n // canonical string for the value (`#rrggbb` when opaque, `rgba(...)` when not), null when unset\n const displayValue = parsed ? formatColor(parsed) : null\n\n // working HSV + alpha (HSV keeps hue stable while dragging at grey/black; alpha is the opacity)\n const [hsv, setHsv] = useState<HSV>(parsed ? rgbToHsv(parsed) : FALLBACK_HSV)\n const hsvRef = useRef(hsv)\n hsvRef.current = hsv\n const [alpha, setAlpha] = useState<number>(parsed?.a ?? 1)\n const alphaRef = useRef(alpha)\n alphaRef.current = alpha\n\n // re-derive HSV + alpha only when the value changes from OUTSIDE our own edits (prop/preset/input)\n useEffect(() => {\n if (!parsed) return\n const cur = formatColor({ ...hsvToRgb(hsvRef.current), a: alphaRef.current })\n if (displayValue !== cur) {\n setHsv(rgbToHsv(parsed))\n setAlpha(parsed.a)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [displayValue])\n\n const applyHsv = (next: HSV) => {\n setHsv(next)\n onChange(formatColor({ ...hsvToRgb(next), a: emitAlpha(alphaRef.current) }))\n }\n\n const applyAlpha = (next: number) => {\n setAlpha(next)\n onChange(formatColor({ ...hsvToRgb(hsvRef.current), a: emitAlpha(next) }))\n }\n\n // drag (SV square + hue/alpha sliders)\n const drag =\n (onMove: (clientX: number, clientY: number, rect: DOMRect) => void) =>\n (event: ReactPointerEvent<HTMLDivElement>) => {\n event.preventDefault()\n const el = event.currentTarget\n const move = (clientX: number, clientY: number) =>\n onMove(clientX, clientY, el.getBoundingClientRect())\n move(event.clientX, event.clientY)\n const onPointerMove = (e: PointerEvent) => move(e.clientX, e.clientY)\n const onPointerUp = () => {\n window.removeEventListener('pointermove', onPointerMove)\n window.removeEventListener('pointerup', onPointerUp)\n }\n window.addEventListener('pointermove', onPointerMove)\n window.addEventListener('pointerup', onPointerUp)\n }\n\n const onSvDown = drag((x, y, rect) => {\n const s = clamp01((x - rect.left) / rect.width)\n const v = clamp01(1 - (y - rect.top) / rect.height)\n applyHsv({ ...hsvRef.current, s, v })\n })\n\n const onHueDown = drag((x, _y, rect) => {\n const h = clamp01((x - rect.left) / rect.width) * 360\n applyHsv({ ...hsvRef.current, h })\n })\n\n const onAlphaDown = drag((x, _y, rect) => {\n applyAlpha(clamp01((x - rect.left) / rect.width))\n })\n\n // keyboard control — arrows nudge, Home/End jump to the extents (mirrors Calendar/TimeColumns a11y)\n const SV_STEP = 0.01\n const onSvKey = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n const { h, s, v } = hsvRef.current\n let ns = s\n let nv = v\n switch (event.key) {\n case 'ArrowLeft':\n ns = clamp01(s - SV_STEP)\n break\n case 'ArrowRight':\n ns = clamp01(s + SV_STEP)\n break\n case 'ArrowUp':\n nv = clamp01(v + SV_STEP)\n break\n case 'ArrowDown':\n nv = clamp01(v - SV_STEP)\n break\n default:\n return\n }\n event.preventDefault()\n applyHsv({ h, s: ns, v: nv })\n }\n const onHueKey = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n const { h } = hsvRef.current\n let nh = h\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowDown':\n nh = Math.max(0, h - 1)\n break\n case 'ArrowRight':\n case 'ArrowUp':\n nh = Math.min(360, h + 1)\n break\n case 'Home':\n nh = 0\n break\n case 'End':\n nh = 360\n break\n default:\n return\n }\n event.preventDefault()\n applyHsv({ ...hsvRef.current, h: nh })\n }\n const onAlphaKey = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n let na = alphaRef.current\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowDown':\n na = clamp01(alphaRef.current - 0.01)\n break\n case 'ArrowRight':\n case 'ArrowUp':\n na = clamp01(alphaRef.current + 0.01)\n break\n case 'Home':\n na = 0\n break\n case 'End':\n na = 1\n break\n default:\n return\n }\n event.preventDefault()\n applyAlpha(na)\n }\n\n // color input (accepts hex / rgb() / rgba()) + clear\n const [colorDraft, setColorDraft] = useState('')\n useEffect(() => {\n setColorDraft(displayValue ?? '')\n }, [displayValue])\n\n const onColorInput = (raw: string) => {\n setColorDraft(raw)\n const p = parseColor(raw)\n if (p) {\n setHsv(rgbToHsv(p))\n setAlpha(p.a)\n onChange(formatColor({ ...p, a: emitAlpha(p.a) }))\n }\n }\n\n const handleClear = () => {\n onChange('')\n setHsv(FALLBACK_HSV)\n setAlpha(1)\n }\n\n // working color (hsv + alpha): the current swatch + the SV thumb (opaque) + the alpha track base\n const workingColor = formatColor({ ...hsvToRgb(hsv), a: alpha })\n const solidHex = rgbToHex(hsvToRgb(hsv))\n const cur = hsvToRgb(hsv)\n const cpRgb = `${Math.round(cur.r)}, ${Math.round(cur.g)}, ${Math.round(cur.b)}`\n\n return (\n <div className={styles.popover} style={{ '--cp-hue': hsv.h } as CSSProperties}>\n <div\n className={styles.sv}\n onPointerDown={onSvDown}\n onKeyDown={onSvKey}\n role=\"slider\"\n tabIndex={0}\n aria-label={t('colorPicker.saturation')}\n aria-valuetext={`${Math.round(hsv.s * 100)}% saturation, ${Math.round(hsv.v * 100)}% brightness`}\n >\n <span\n className={styles.svThumb}\n style={{ left: `${hsv.s * 100}%`, top: `${(1 - hsv.v) * 100}%`, background: solidHex }}\n />\n </div>\n\n <div\n className={styles.hue}\n onPointerDown={onHueDown}\n onKeyDown={onHueKey}\n role=\"slider\"\n tabIndex={0}\n aria-label={t('colorPicker.hue')}\n aria-valuemin={0}\n aria-valuemax={360}\n aria-valuenow={Math.round(hsv.h)}\n >\n <span className={styles.hueThumb} style={{ left: `${(hsv.h / 360) * 100}%` }} />\n </div>\n\n {alphaEnabled && (\n <div\n className={styles.alpha}\n onPointerDown={onAlphaDown}\n onKeyDown={onAlphaKey}\n role=\"slider\"\n tabIndex={0}\n aria-label={t('colorPicker.opacity')}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={Math.round(alpha * 100)}\n style={{ '--cp-rgb': cpRgb } as CSSProperties}\n >\n <span className={styles.alphaThumb} style={{ left: `${alpha * 100}%` }} />\n </div>\n )}\n\n <div className={styles.hexRow}>\n <span\n className={styles.currentSwatch}\n style={{ '--cp-fill': workingColor } as CSSProperties}\n />\n <span className={styles.hexField}>\n <input\n className={styles.hexInput}\n value={colorDraft}\n spellCheck={false}\n maxLength={28}\n aria-label={t('colorPicker.value')}\n onChange={(e) => onColorInput(e.target.value)}\n />\n </span>\n </div>\n\n <div className={styles.swatches}>\n {/* \"no color\" — clears the value (the diagonal-stripe swatch); hidden when not clearable */}\n {clearable && (\n <button\n type=\"button\"\n className={clsx(styles.swatch, styles.swatchClear)}\n aria-label={t('colorPicker.noColor')}\n aria-pressed={!parsed}\n onClick={handleClear}\n >\n {!parsed && <Icon name=\"TickCircle\" size=\"sm\" />}\n </button>\n )}\n {swatches.map((sw) => {\n const p = parseColor(sw)\n if (!p) return null\n const swHex = formatColor({ r: p.r, g: p.g, b: p.b, a: 1 })\n const selected = displayValue === swHex\n return (\n <button\n key={sw}\n type=\"button\"\n className={styles.swatch}\n style={{ background: swHex, color: contrastOn(swHex) }}\n aria-label={swHex}\n aria-pressed={selected}\n onClick={() => {\n setHsv(rgbToHsv(p))\n onChange(formatColor({ r: p.r, g: p.g, b: p.b, a: emitAlpha(alphaRef.current) }))\n }}\n >\n {selected && <Icon name=\"TickCircle\" size=\"sm\" />}\n </button>\n )\n })}\n </div>\n </div>\n )\n}\n"],"names":["clamp255","n","rgbToHsv","r","g","b","rn","gn","bn","max","min","d","h","s","hsvToRgb","v","c","x","m","hexToHsv","hex","hexToRgb","contrastOn","RGB_FUNC","parseColor","input","clamp01","a","formatColor","rgbToHex","DEFAULT_SWATCHES","FALLBACK_HSV","ColorPickerPanel","value","onChange","swatches","clearable","alphaEnabled","emitAlpha","t","useT","parsed","displayValue","hsv","setHsv","useState","hsvRef","useRef","alpha","setAlpha","alphaRef","useEffect","cur","applyHsv","next","applyAlpha","drag","onMove","event","el","move","clientX","clientY","onPointerMove","e","onPointerUp","onSvDown","y","rect","onHueDown","_y","onAlphaDown","SV_STEP","onSvKey","ns","nv","onHueKey","nh","onAlphaKey","na","colorDraft","setColorDraft","onColorInput","raw","p","handleClear","workingColor","solidHex","cpRgb","jsxs","styles","jsx","clsx","Icon","sw","swHex","selected"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const s=require("react/jsx-runtime"),v=require("react"),m=require("clsx"),L=require("./useClipboard-BjTIX-4g.cjs"),h=require("./palette-BycMHbED.cjs"),D=require("./Tooltip-Ao7az09p.cjs"),i=require("./Typography-BFatE1_A.cjs"),T=require("./toastStore-B4Tk2Xk7.cjs"),n=require("./TextField.module-DsNCo8vN.cjs"),W=require("./ConfigProvider-BicoaBLj.cjs"),z="_band_1d0th_5",G="_sm_1d0th_15",H="_md_1d0th_18",J="_lg_1d0th_21",K="_num_1d0th_42",M="_step_1d0th_47",O="_bounds_1d0th_94",Q="_tip_1d0th_101",U="_tipTitle_1d0th_107",o={band:z,sm:G,md:H,lg:J,num:K,step:M,static:"_static_1d0th_61",bounds:O,tip:Q,tipTitle:U},$=(x,l)=>`${x} ${l.ratio.toFixed(2)}${l.small?` ${l.small}`:""}`,V=v.forwardRef(function({baseColor:l,name:a="color",options:f,size:N="md",copyable:_=!0,onCopy:c,showBounds:S=!0,label:d,helperText:p,error:b=!1,required:q=!1,className:k,...C},E){const t=W.useT(),y=v.useId(),j=`${y}-label`,g=`${y}-helper`,{copy:F}=L.useClipboard(),R=h.generatePalette(l,f),P=async e=>{const r=`${a}-${e.step}`;await F(e.hex)?(T.toast.success(t("colorRamp.copied",{step:r,hex:e.hex})),c==null||c(e)):T.toast.error(t("colorRamp.copyFailed",{step:r}))},A=e=>s.jsxs("span",{className:o.tip,children:[s.jsxs("span",{className:o.tipTitle,children:[a,"-",e.step,e.step===h.BASE_STEP?` · ${t("colorRamp.base")}`:""]}),s.jsx("span",{children:e.hex}),s.jsxs("span",{children:[$(t("colorRamp.black"),e.onDark)," ·"," ",$(t("colorRamp.white"),e.onWhite)]}),_&&s.jsx("span",{children:t("colorRamp.clickToCopy")})]});return s.jsxs("div",{ref:E,className:m.clsx(n.fieldStyles.field,b&&n.fieldStyles.error,k),...C,children:[d!=null&&s.jsxs("label",{id:j,className:n.fieldStyles.label,children:[s.jsx(i.Typography,{as:"span",variant:"bodySmall",color:"muted",children:d}),q&&s.jsx("span",{className:n.fieldStyles.required,"aria-hidden":"true",children:"*"})]}),R?s.jsxs(s.Fragment,{children:[s.jsx("div",{role:"group","aria-label":t("colorRamp.groupLabel",{name:a}),"aria-labelledby":d!=null?j:void 0,"aria-describedby":p!=null?g:void 0,className:m.clsx(o.band,o[N]),children:R.map(e=>{const r=e.step===h.BASE_STEP,u={backgroundColor:e.hex,color:e.textColor},B=`${a}-${e.step}`,I=_?s.jsx("button",{type:"button",className:o.step,style:u,"data-base":r||void 0,"aria-label":t("colorRamp.copyAria",{name:a,step:e.step,hex:e.hex}),onClick:()=>void P(e),children:s.jsx("span",{className:o.num,"aria-hidden":"true",children:e.step})}):s.jsx("span",{className:m.clsx(o.step,o.static),style:u,"data-base":r||void 0,role:"img","aria-label":`${B} ${e.hex}`,children:s.jsx("span",{className:o.num,"aria-hidden":"true",children:e.step})});return s.jsx(D.Tooltip,{content:A(e),children:I},e.step)})}),S&&s.jsxs("div",{className:o.bounds,children:[s.jsx(i.Typography,{as:"span",variant:"caption",color:"muted",children:t("colorRamp.lightest")}),s.jsx(i.Typography,{as:"span",variant:"caption",color:"muted",children:t("colorRamp.darkest")})]})]}):s.jsx(i.Typography,{as:"span",variant:"caption",color:"muted",children:t("colorRamp.invalid")}),p!=null&&s.jsx(i.Typography,{as:"span",id:g,variant:"bodySmall",color:b?"error":"muted",className:n.fieldStyles.helper,children:p})]})});exports.ColorRamp=V;
2
- //# sourceMappingURL=ColorRamp-AkY9gq6Y.cjs.map
1
+ "use strict";const s=require("react/jsx-runtime"),v=require("react"),m=require("clsx"),L=require("./useClipboard-BjTIX-4g.cjs"),h=require("./palette-BycMHbED.cjs"),D=require("./Tooltip-Ao7az09p.cjs"),i=require("./Typography-B6ASPrzT.cjs"),T=require("./toastStore-B4Tk2Xk7.cjs"),n=require("./TextField.module-DsNCo8vN.cjs"),W=require("./ConfigProvider-BElY0HuV.cjs"),z="_band_1d0th_5",G="_sm_1d0th_15",H="_md_1d0th_18",J="_lg_1d0th_21",K="_num_1d0th_42",M="_step_1d0th_47",O="_bounds_1d0th_94",Q="_tip_1d0th_101",U="_tipTitle_1d0th_107",o={band:z,sm:G,md:H,lg:J,num:K,step:M,static:"_static_1d0th_61",bounds:O,tip:Q,tipTitle:U},$=(x,l)=>`${x} ${l.ratio.toFixed(2)}${l.small?` ${l.small}`:""}`,V=v.forwardRef(function({baseColor:l,name:a="color",options:f,size:N="md",copyable:_=!0,onCopy:c,showBounds:S=!0,label:d,helperText:p,error:b=!1,required:q=!1,className:k,...C},E){const t=W.useT(),y=v.useId(),j=`${y}-label`,g=`${y}-helper`,{copy:F}=L.useClipboard(),R=h.generatePalette(l,f),P=async e=>{const r=`${a}-${e.step}`;await F(e.hex)?(T.toast.success(t("colorRamp.copied",{step:r,hex:e.hex})),c==null||c(e)):T.toast.error(t("colorRamp.copyFailed",{step:r}))},A=e=>s.jsxs("span",{className:o.tip,children:[s.jsxs("span",{className:o.tipTitle,children:[a,"-",e.step,e.step===h.BASE_STEP?` · ${t("colorRamp.base")}`:""]}),s.jsx("span",{children:e.hex}),s.jsxs("span",{children:[$(t("colorRamp.black"),e.onDark)," ·"," ",$(t("colorRamp.white"),e.onWhite)]}),_&&s.jsx("span",{children:t("colorRamp.clickToCopy")})]});return s.jsxs("div",{ref:E,className:m.clsx(n.fieldStyles.field,b&&n.fieldStyles.error,k),...C,children:[d!=null&&s.jsxs("label",{id:j,className:n.fieldStyles.label,children:[s.jsx(i.Typography,{as:"span",variant:"bodySmall",color:"muted",children:d}),q&&s.jsx("span",{className:n.fieldStyles.required,"aria-hidden":"true",children:"*"})]}),R?s.jsxs(s.Fragment,{children:[s.jsx("div",{role:"group","aria-label":t("colorRamp.groupLabel",{name:a}),"aria-labelledby":d!=null?j:void 0,"aria-describedby":p!=null?g:void 0,className:m.clsx(o.band,o[N]),children:R.map(e=>{const r=e.step===h.BASE_STEP,u={backgroundColor:e.hex,color:e.textColor},B=`${a}-${e.step}`,I=_?s.jsx("button",{type:"button",className:o.step,style:u,"data-base":r||void 0,"aria-label":t("colorRamp.copyAria",{name:a,step:e.step,hex:e.hex}),onClick:()=>void P(e),children:s.jsx("span",{className:o.num,"aria-hidden":"true",children:e.step})}):s.jsx("span",{className:m.clsx(o.step,o.static),style:u,"data-base":r||void 0,role:"img","aria-label":`${B} ${e.hex}`,children:s.jsx("span",{className:o.num,"aria-hidden":"true",children:e.step})});return s.jsx(D.Tooltip,{content:A(e),children:I},e.step)})}),S&&s.jsxs("div",{className:o.bounds,children:[s.jsx(i.Typography,{as:"span",variant:"caption",color:"muted",children:t("colorRamp.lightest")}),s.jsx(i.Typography,{as:"span",variant:"caption",color:"muted",children:t("colorRamp.darkest")})]})]}):s.jsx(i.Typography,{as:"span",variant:"caption",color:"muted",children:t("colorRamp.invalid")}),p!=null&&s.jsx(i.Typography,{as:"span",id:g,variant:"bodySmall",color:b?"error":"muted",className:n.fieldStyles.helper,children:p})]})});exports.ColorRamp=V;
2
+ //# sourceMappingURL=ColorRamp-B9OWxCOK.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColorRamp-AkY9gq6Y.cjs","sources":["../src/components/ColorRamp/ColorRamp.tsx"],"sourcesContent":["import { forwardRef, useId, type CSSProperties, type HTMLAttributes, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport { useT } from '../../theme'\nimport { useClipboard } from '../../hooks/useClipboard'\nimport {\n BASE_STEP,\n generatePalette,\n type GeneratePaletteOptions,\n type Legibility,\n type PaletteSwatch,\n} from '../../helpers/palette'\nimport { Tooltip } from '../Tooltip'\nimport { Typography } from '../Typography'\nimport { toast } from '../Toast'\n// shared field chrome (wrapper / label / helper / required / error)\nimport fieldStyles from '../TextField/TextField.module.css'\nimport styles from './ColorRamp.module.css'\n\nexport type ColorRampSize = 'sm' | 'md' | 'lg'\n\n// `onCopy` here is the swatch callback, so the DOM clipboard `onCopy` handler is omitted alongside `color`\nexport interface ColorRampProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color' | 'onCopy'> {\n /** The base (500) color — any value `generatePalette` accepts. Invalid → the empty-state caption. */\n baseColor: string\n /** Token prefix for step names (`primary` → \"primary-500\") — used in tooltips, aria-labels and the copy toast. Default `'color'`. */\n name?: string\n /** Passed to `generatePalette` (override any subset of the tint / shade fractions). */\n options?: GeneratePaletteOptions\n /** Band height. `sm` 32 · `md` 40 (default) · `lg` 48 px. */\n size?: ColorRampSize\n /** Click a step to copy its hex (default `true`). `false` renders the steps as non-interactive cells. */\n copyable?: boolean\n /** After a successful copy — in addition to the built-in toast. */\n onCopy?: (swatch: PaletteSwatch) => void\n /** Show the \"Lightest … Darkest\" caption row under the band (default `true`). */\n showBounds?: boolean\n /** Label rendered above the band (field-family chrome, like `Slider` / `SwatchPicker`). */\n label?: ReactNode\n /** Helper / validation text under the band. Adopts the error color while `error`. */\n helperText?: ReactNode\n /** Marks the field invalid — reddens the label/asterisk and shows `helperText` in the error color. */\n error?: boolean\n /** Adds a red asterisk after the label. */\n required?: boolean\n}\n\n/** `black 4.52 AA` — ratio to 2 decimals, the body-text rating appended when it exists. */\nconst contrastLine = (who: string, l: Legibility) =>\n `${who} ${l.ratio.toFixed(2)}${l.small ? ` ${l.small}` : ''}`\n\n/**\n * The generated tonal scale for one color as **a single horizontal band of ten equal steps** sharing\n * one rounded, clipped frame (reads as a continuous ramp, not ten chips). Display + copy only — it never\n * edits the color; pair it with `ColorPicker` (or use `PaletteField`, which composes both). Each step\n * is a `Tooltip`-wrapped button whose fill / ink are the swatch's own colors (inline — the color IS the\n * data), showing its number on the base step and on hover / focus; clicking copies the hex with a toast.\n * `role=\"group\"` labelled \"{name} color scale\"; an invalid `baseColor` renders only a muted caption.\n */\nexport const ColorRamp = forwardRef<HTMLDivElement, ColorRampProps>(function ColorRamp(\n {\n baseColor,\n name = 'color',\n options,\n size = 'md',\n copyable = true,\n onCopy,\n showBounds = true,\n label,\n helperText,\n error = false,\n required = false,\n className,\n ...props\n },\n ref,\n) {\n const t = useT()\n const id = useId()\n const labelId = `${id}-label`\n const helperId = `${id}-helper`\n const { copy } = useClipboard()\n const palette = generatePalette(baseColor, options)\n\n const handleCopy = async (swatch: PaletteSwatch) => {\n const step = `${name}-${swatch.step}`\n const ok = await copy(swatch.hex)\n if (ok) {\n toast.success(t('colorRamp.copied', { step, hex: swatch.hex }))\n onCopy?.(swatch)\n } else {\n toast.error(t('colorRamp.copyFailed', { step }))\n }\n }\n\n const tip = (swatch: PaletteSwatch) => (\n <span className={styles.tip}>\n <span className={styles.tipTitle}>\n {name}-{swatch.step}\n {swatch.step === BASE_STEP ? ` · ${t('colorRamp.base')}` : ''}\n </span>\n <span>{swatch.hex}</span>\n <span>\n {contrastLine(t('colorRamp.black'), swatch.onDark)} ·{' '}\n {contrastLine(t('colorRamp.white'), swatch.onWhite)}\n </span>\n {copyable && <span>{t('colorRamp.clickToCopy')}</span>}\n </span>\n )\n\n return (\n <div\n ref={ref}\n className={clsx(fieldStyles.field, error && fieldStyles.error, className)}\n {...props}\n >\n {label != null && (\n <label id={labelId} className={fieldStyles.label}>\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\">\n {label}\n </Typography>\n {required && (\n <span className={fieldStyles.required} aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n\n {palette ? (\n <>\n <div\n role=\"group\"\n aria-label={t('colorRamp.groupLabel', { name })}\n aria-labelledby={label != null ? labelId : undefined}\n aria-describedby={helperText != null ? helperId : undefined}\n className={clsx(styles.band, styles[size])}\n >\n {palette.map((swatch) => {\n const isBase = swatch.step === BASE_STEP\n // the swatch's own colors are the data — the one legitimate inline-color exception\n const ink = { backgroundColor: swatch.hex, color: swatch.textColor } as CSSProperties\n const stepName = `${name}-${swatch.step}`\n const cell = copyable ? (\n <button\n type=\"button\"\n className={styles.step}\n style={ink}\n data-base={isBase || undefined}\n aria-label={t('colorRamp.copyAria', { name, step: swatch.step, hex: swatch.hex })}\n onClick={() => void handleCopy(swatch)}\n >\n <span className={styles.num} aria-hidden=\"true\">\n {swatch.step}\n </span>\n </button>\n ) : (\n <span\n className={clsx(styles.step, styles.static)}\n style={ink}\n data-base={isBase || undefined}\n role=\"img\"\n aria-label={`${stepName} ${swatch.hex}`}\n >\n <span className={styles.num} aria-hidden=\"true\">\n {swatch.step}\n </span>\n </span>\n )\n // the Tooltip's wrapper span is the band's real flex child (sized by `.band > *`)\n return (\n <Tooltip key={swatch.step} content={tip(swatch)}>\n {cell}\n </Tooltip>\n )\n })}\n </div>\n {showBounds && (\n <div className={styles.bounds}>\n <Typography as=\"span\" variant=\"caption\" color=\"muted\">\n {t('colorRamp.lightest')}\n </Typography>\n <Typography as=\"span\" variant=\"caption\" color=\"muted\">\n {t('colorRamp.darkest')}\n </Typography>\n </div>\n )}\n </>\n ) : (\n <Typography as=\"span\" variant=\"caption\" color=\"muted\">\n {t('colorRamp.invalid')}\n </Typography>\n )}\n\n {helperText != null && (\n <Typography\n as=\"span\"\n id={helperId}\n variant=\"bodySmall\"\n color={error ? 'error' : 'muted'}\n className={fieldStyles.helper}\n >\n {helperText}\n </Typography>\n )}\n </div>\n )\n})\n"],"names":["contrastLine","who","ColorRamp","forwardRef","baseColor","name","options","size","copyable","onCopy","showBounds","label","helperText","error","required","className","props","ref","useT","id","useId","labelId","helperId","copy","useClipboard","palette","generatePalette","handleCopy","swatch","step","toast","tip","styles","jsxs","BASE_STEP","jsx","clsx","fieldStyles","Typography","Fragment","isBase","ink","stepName","cell","Tooltip"],"mappings":"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"}
1
+ {"version":3,"file":"ColorRamp-B9OWxCOK.cjs","sources":["../src/components/ColorRamp/ColorRamp.tsx"],"sourcesContent":["import { forwardRef, useId, type CSSProperties, type HTMLAttributes, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport { useT } from '../../theme'\nimport { useClipboard } from '../../hooks/useClipboard'\nimport {\n BASE_STEP,\n generatePalette,\n type GeneratePaletteOptions,\n type Legibility,\n type PaletteSwatch,\n} from '../../helpers/palette'\nimport { Tooltip } from '../Tooltip'\nimport { Typography } from '../Typography'\nimport { toast } from '../Toast'\n// shared field chrome (wrapper / label / helper / required / error)\nimport fieldStyles from '../TextField/TextField.module.css'\nimport styles from './ColorRamp.module.css'\n\nexport type ColorRampSize = 'sm' | 'md' | 'lg'\n\n// `onCopy` here is the swatch callback, so the DOM clipboard `onCopy` handler is omitted alongside `color`\nexport interface ColorRampProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color' | 'onCopy'> {\n /** The base (500) color — any value `generatePalette` accepts. Invalid → the empty-state caption. */\n baseColor: string\n /** Token prefix for step names (`primary` → \"primary-500\") — used in tooltips, aria-labels and the copy toast. Default `'color'`. */\n name?: string\n /** Passed to `generatePalette` (override any subset of the tint / shade fractions). */\n options?: GeneratePaletteOptions\n /** Band height. `sm` 32 · `md` 40 (default) · `lg` 48 px. */\n size?: ColorRampSize\n /** Click a step to copy its hex (default `true`). `false` renders the steps as non-interactive cells. */\n copyable?: boolean\n /** After a successful copy — in addition to the built-in toast. */\n onCopy?: (swatch: PaletteSwatch) => void\n /** Show the \"Lightest … Darkest\" caption row under the band (default `true`). */\n showBounds?: boolean\n /** Label rendered above the band (field-family chrome, like `Slider` / `SwatchPicker`). */\n label?: ReactNode\n /** Helper / validation text under the band. Adopts the error color while `error`. */\n helperText?: ReactNode\n /** Marks the field invalid — reddens the label/asterisk and shows `helperText` in the error color. */\n error?: boolean\n /** Adds a red asterisk after the label. */\n required?: boolean\n}\n\n/** `black 4.52 AA` — ratio to 2 decimals, the body-text rating appended when it exists. */\nconst contrastLine = (who: string, l: Legibility) =>\n `${who} ${l.ratio.toFixed(2)}${l.small ? ` ${l.small}` : ''}`\n\n/**\n * The generated tonal scale for one color as **a single horizontal band of ten equal steps** sharing\n * one rounded, clipped frame (reads as a continuous ramp, not ten chips). Display + copy only — it never\n * edits the color; pair it with `ColorPicker` (or use `PaletteField`, which composes both). Each step\n * is a `Tooltip`-wrapped button whose fill / ink are the swatch's own colors (inline — the color IS the\n * data), showing its number on the base step and on hover / focus; clicking copies the hex with a toast.\n * `role=\"group\"` labelled \"{name} color scale\"; an invalid `baseColor` renders only a muted caption.\n */\nexport const ColorRamp = forwardRef<HTMLDivElement, ColorRampProps>(function ColorRamp(\n {\n baseColor,\n name = 'color',\n options,\n size = 'md',\n copyable = true,\n onCopy,\n showBounds = true,\n label,\n helperText,\n error = false,\n required = false,\n className,\n ...props\n },\n ref,\n) {\n const t = useT()\n const id = useId()\n const labelId = `${id}-label`\n const helperId = `${id}-helper`\n const { copy } = useClipboard()\n const palette = generatePalette(baseColor, options)\n\n const handleCopy = async (swatch: PaletteSwatch) => {\n const step = `${name}-${swatch.step}`\n const ok = await copy(swatch.hex)\n if (ok) {\n toast.success(t('colorRamp.copied', { step, hex: swatch.hex }))\n onCopy?.(swatch)\n } else {\n toast.error(t('colorRamp.copyFailed', { step }))\n }\n }\n\n const tip = (swatch: PaletteSwatch) => (\n <span className={styles.tip}>\n <span className={styles.tipTitle}>\n {name}-{swatch.step}\n {swatch.step === BASE_STEP ? ` · ${t('colorRamp.base')}` : ''}\n </span>\n <span>{swatch.hex}</span>\n <span>\n {contrastLine(t('colorRamp.black'), swatch.onDark)} ·{' '}\n {contrastLine(t('colorRamp.white'), swatch.onWhite)}\n </span>\n {copyable && <span>{t('colorRamp.clickToCopy')}</span>}\n </span>\n )\n\n return (\n <div\n ref={ref}\n className={clsx(fieldStyles.field, error && fieldStyles.error, className)}\n {...props}\n >\n {label != null && (\n <label id={labelId} className={fieldStyles.label}>\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\">\n {label}\n </Typography>\n {required && (\n <span className={fieldStyles.required} aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n\n {palette ? (\n <>\n <div\n role=\"group\"\n aria-label={t('colorRamp.groupLabel', { name })}\n aria-labelledby={label != null ? labelId : undefined}\n aria-describedby={helperText != null ? helperId : undefined}\n className={clsx(styles.band, styles[size])}\n >\n {palette.map((swatch) => {\n const isBase = swatch.step === BASE_STEP\n // the swatch's own colors are the data — the one legitimate inline-color exception\n const ink = { backgroundColor: swatch.hex, color: swatch.textColor } as CSSProperties\n const stepName = `${name}-${swatch.step}`\n const cell = copyable ? (\n <button\n type=\"button\"\n className={styles.step}\n style={ink}\n data-base={isBase || undefined}\n aria-label={t('colorRamp.copyAria', { name, step: swatch.step, hex: swatch.hex })}\n onClick={() => void handleCopy(swatch)}\n >\n <span className={styles.num} aria-hidden=\"true\">\n {swatch.step}\n </span>\n </button>\n ) : (\n <span\n className={clsx(styles.step, styles.static)}\n style={ink}\n data-base={isBase || undefined}\n role=\"img\"\n aria-label={`${stepName} ${swatch.hex}`}\n >\n <span className={styles.num} aria-hidden=\"true\">\n {swatch.step}\n </span>\n </span>\n )\n // the Tooltip's wrapper span is the band's real flex child (sized by `.band > *`)\n return (\n <Tooltip key={swatch.step} content={tip(swatch)}>\n {cell}\n </Tooltip>\n )\n })}\n </div>\n {showBounds && (\n <div className={styles.bounds}>\n <Typography as=\"span\" variant=\"caption\" color=\"muted\">\n {t('colorRamp.lightest')}\n </Typography>\n <Typography as=\"span\" variant=\"caption\" color=\"muted\">\n {t('colorRamp.darkest')}\n </Typography>\n </div>\n )}\n </>\n ) : (\n <Typography as=\"span\" variant=\"caption\" color=\"muted\">\n {t('colorRamp.invalid')}\n </Typography>\n )}\n\n {helperText != null && (\n <Typography\n as=\"span\"\n id={helperId}\n variant=\"bodySmall\"\n color={error ? 'error' : 'muted'}\n className={fieldStyles.helper}\n >\n {helperText}\n </Typography>\n )}\n </div>\n )\n})\n"],"names":["contrastLine","who","ColorRamp","forwardRef","baseColor","name","options","size","copyable","onCopy","showBounds","label","helperText","error","required","className","props","ref","useT","id","useId","labelId","helperId","copy","useClipboard","palette","generatePalette","handleCopy","swatch","step","toast","tip","styles","jsxs","BASE_STEP","jsx","clsx","fieldStyles","Typography","Fragment","isBase","ink","stepName","cell","Tooltip"],"mappings":"mnBA+CMA,EAAe,CAACC,EAAa,IACjC,GAAGA,CAAG,IAAI,EAAE,MAAM,QAAQ,CAAC,CAAC,GAAG,EAAE,MAAQ,IAAI,EAAE,KAAK,GAAK,EAAE,GAUhDC,EAAYC,EAAAA,WAA2C,SAClE,CACE,UAAAC,EACA,KAAAC,EAAO,QACP,QAAAC,EACA,KAAAC,EAAO,KACP,SAAAC,EAAW,GACX,OAAAC,EACA,WAAAC,EAAa,GACb,MAAAC,EACA,WAAAC,EACA,MAAAC,EAAQ,GACR,SAAAC,EAAW,GACX,UAAAC,EACA,GAAGC,CACL,EACAC,EACA,CACA,MAAM,EAAIC,EAAAA,KAAA,EACJC,EAAKC,EAAAA,MAAA,EACLC,EAAU,GAAGF,CAAE,SACfG,EAAW,GAAGH,CAAE,UAChB,CAAE,KAAAI,CAAA,EAASC,eAAA,EACXC,EAAUC,EAAAA,gBAAgBtB,EAAWE,CAAO,EAE5CqB,EAAa,MAAOC,GAA0B,CAClD,MAAMC,EAAO,GAAGxB,CAAI,IAAIuB,EAAO,IAAI,GACxB,MAAML,EAAKK,EAAO,GAAG,GAE9BE,QAAM,QAAQ,EAAE,mBAAoB,CAAE,KAAAD,EAAM,IAAKD,EAAO,GAAA,CAAK,CAAC,EAC9DnB,GAAA,MAAAA,EAASmB,IAETE,EAAAA,MAAM,MAAM,EAAE,uBAAwB,CAAE,KAAAD,CAAA,CAAM,CAAC,CAEnD,EAEME,EAAOH,UACV,OAAA,CAAK,UAAWI,EAAO,IACtB,SAAA,CAAAC,EAAAA,KAAC,OAAA,CAAK,UAAWD,EAAO,SACrB,SAAA,CAAA3B,EAAK,IAAEuB,EAAO,KACdA,EAAO,OAASM,YAAY,MAAM,EAAE,gBAAgB,CAAC,GAAK,EAAA,EAC7D,EACAC,EAAAA,IAAC,OAAA,CAAM,SAAAP,EAAO,GAAA,CAAI,SACjB,OAAA,CACE,SAAA,CAAA5B,EAAa,EAAE,iBAAiB,EAAG4B,EAAO,MAAM,EAAE,KAAG,IACrD5B,EAAa,EAAE,iBAAiB,EAAG4B,EAAO,OAAO,CAAA,EACpD,EACCpB,GAAY2B,EAAAA,IAAC,OAAA,CAAM,SAAA,EAAE,uBAAuB,CAAA,CAAE,CAAA,EACjD,EAGF,OACEF,EAAAA,KAAC,MAAA,CACC,IAAAhB,EACA,UAAWmB,EAAAA,KAAKC,cAAY,MAAOxB,GAASwB,EAAAA,YAAY,MAAOtB,CAAS,EACvE,GAAGC,EAEH,SAAA,CAAAL,GAAS,MACRsB,OAAC,QAAA,CAAM,GAAIZ,EAAS,UAAWgB,EAAAA,YAAY,MACzC,SAAA,CAAAF,EAAAA,IAACG,EAAAA,YAAW,GAAG,OAAO,QAAQ,YAAY,MAAM,QAC7C,SAAA3B,CAAA,CACH,EACCG,SACE,OAAA,CAAK,UAAWuB,EAAAA,YAAY,SAAU,cAAY,OAAO,SAAA,GAAA,CAE1D,CAAA,EAEJ,EAGDZ,EACCQ,EAAAA,KAAAM,WAAA,CACE,SAAA,CAAAJ,EAAAA,IAAC,MAAA,CACC,KAAK,QACL,aAAY,EAAE,uBAAwB,CAAE,KAAA9B,EAAM,EAC9C,kBAAiBM,GAAS,KAAOU,EAAU,OAC3C,mBAAkBT,GAAc,KAAOU,EAAW,OAClD,UAAWc,EAAAA,KAAKJ,EAAO,KAAMA,EAAOzB,CAAI,CAAC,EAExC,SAAAkB,EAAQ,IAAKG,GAAW,CACvB,MAAMY,EAASZ,EAAO,OAASM,EAAAA,UAEzBO,EAAM,CAAE,gBAAiBb,EAAO,IAAK,MAAOA,EAAO,SAAA,EACnDc,EAAW,GAAGrC,CAAI,IAAIuB,EAAO,IAAI,GACjCe,EAAOnC,EACX2B,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAWH,EAAO,KAClB,MAAOS,EACP,YAAWD,GAAU,OACrB,aAAY,EAAE,qBAAsB,CAAE,KAAAnC,EAAM,KAAMuB,EAAO,KAAM,IAAKA,EAAO,GAAA,CAAK,EAChF,QAAS,IAAM,KAAKD,EAAWC,CAAM,EAErC,SAAAO,EAAAA,IAAC,QAAK,UAAWH,EAAO,IAAK,cAAY,OACtC,WAAO,IAAA,CACV,CAAA,CAAA,EAGFG,EAAAA,IAAC,OAAA,CACC,UAAWC,EAAAA,KAAKJ,EAAO,KAAMA,EAAO,MAAM,EAC1C,MAAOS,EACP,YAAWD,GAAU,OACrB,KAAK,MACL,aAAY,GAAGE,CAAQ,IAAId,EAAO,GAAG,GAErC,SAAAO,EAAAA,IAAC,QAAK,UAAWH,EAAO,IAAK,cAAY,OACtC,WAAO,IAAA,CACV,CAAA,CAAA,EAIJ,OACEG,MAACS,EAAAA,SAA0B,QAASb,EAAIH,CAAM,EAC3C,SAAAe,GADWf,EAAO,IAErB,CAEJ,CAAC,CAAA,CAAA,EAEFlB,GACCuB,EAAAA,KAAC,MAAA,CAAI,UAAWD,EAAO,OACrB,SAAA,CAAAG,EAAAA,IAACG,EAAAA,WAAA,CAAW,GAAG,OAAO,QAAQ,UAAU,MAAM,QAC3C,SAAA,EAAE,oBAAoB,CAAA,CACzB,EACAH,EAAAA,IAACG,EAAAA,WAAA,CAAW,GAAG,OAAO,QAAQ,UAAU,MAAM,QAC3C,SAAA,EAAE,mBAAmB,CAAA,CACxB,CAAA,CAAA,CACF,CAAA,CAAA,CAEJ,EAEAH,EAAAA,IAACG,EAAAA,WAAA,CAAW,GAAG,OAAO,QAAQ,UAAU,MAAM,QAC3C,SAAA,EAAE,mBAAmB,CAAA,CACxB,EAGD1B,GAAc,MACbuB,EAAAA,IAACG,EAAAA,WAAA,CACC,GAAG,OACH,GAAIhB,EACJ,QAAQ,YACR,MAAOT,EAAQ,QAAU,QACzB,UAAWwB,EAAAA,YAAY,OAEtB,SAAAzB,CAAA,CAAA,CACH,CAAA,CAAA,CAIR,CAAC"}
@@ -4,10 +4,10 @@ import { clsx as _ } from "clsx";
4
4
  import { u as z } from "./useClipboard-CEw_Juiq.js";
5
5
  import { g as G, B as g } from "./palette-B031dM4E.js";
6
6
  import { T as H } from "./Tooltip-Cb_FKxT9.js";
7
- import { T as n } from "./Typography-Cta6Rg4L.js";
7
+ import { T as n } from "./Typography-CJv5AnRP.js";
8
8
  import { t as x } from "./toastStore-Cx_JOKwS.js";
9
9
  import { f as d } from "./TextField.module-6gYcR9TL.js";
10
- import { a as J } from "./ConfigProvider-DL9fylMo.js";
10
+ import { a as J } from "./ConfigProvider-B_RSn9bb.js";
11
11
  const K = "_band_1d0th_5", M = "_sm_1d0th_15", O = "_md_1d0th_18", Q = "_lg_1d0th_21", U = "_num_1d0th_42", V = "_step_1d0th_47", X = "_bounds_1d0th_94", Y = "_tip_1d0th_101", Z = "_tipTitle_1d0th_107", t = {
12
12
  band: K,
13
13
  sm: M,
@@ -123,4 +123,4 @@ const K = "_band_1d0th_5", M = "_sm_1d0th_15", O = "_md_1d0th_18", Q = "_lg_1d0t
123
123
  export {
124
124
  de as C
125
125
  };
126
- //# sourceMappingURL=ColorRamp-DnlJNKfy.js.map
126
+ //# sourceMappingURL=ColorRamp-DQ8wkgvF.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColorRamp-DnlJNKfy.js","sources":["../src/components/ColorRamp/ColorRamp.tsx"],"sourcesContent":["import { forwardRef, useId, type CSSProperties, type HTMLAttributes, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport { useT } from '../../theme'\nimport { useClipboard } from '../../hooks/useClipboard'\nimport {\n BASE_STEP,\n generatePalette,\n type GeneratePaletteOptions,\n type Legibility,\n type PaletteSwatch,\n} from '../../helpers/palette'\nimport { Tooltip } from '../Tooltip'\nimport { Typography } from '../Typography'\nimport { toast } from '../Toast'\n// shared field chrome (wrapper / label / helper / required / error)\nimport fieldStyles from '../TextField/TextField.module.css'\nimport styles from './ColorRamp.module.css'\n\nexport type ColorRampSize = 'sm' | 'md' | 'lg'\n\n// `onCopy` here is the swatch callback, so the DOM clipboard `onCopy` handler is omitted alongside `color`\nexport interface ColorRampProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color' | 'onCopy'> {\n /** The base (500) color — any value `generatePalette` accepts. Invalid → the empty-state caption. */\n baseColor: string\n /** Token prefix for step names (`primary` → \"primary-500\") — used in tooltips, aria-labels and the copy toast. Default `'color'`. */\n name?: string\n /** Passed to `generatePalette` (override any subset of the tint / shade fractions). */\n options?: GeneratePaletteOptions\n /** Band height. `sm` 32 · `md` 40 (default) · `lg` 48 px. */\n size?: ColorRampSize\n /** Click a step to copy its hex (default `true`). `false` renders the steps as non-interactive cells. */\n copyable?: boolean\n /** After a successful copy — in addition to the built-in toast. */\n onCopy?: (swatch: PaletteSwatch) => void\n /** Show the \"Lightest … Darkest\" caption row under the band (default `true`). */\n showBounds?: boolean\n /** Label rendered above the band (field-family chrome, like `Slider` / `SwatchPicker`). */\n label?: ReactNode\n /** Helper / validation text under the band. Adopts the error color while `error`. */\n helperText?: ReactNode\n /** Marks the field invalid — reddens the label/asterisk and shows `helperText` in the error color. */\n error?: boolean\n /** Adds a red asterisk after the label. */\n required?: boolean\n}\n\n/** `black 4.52 AA` — ratio to 2 decimals, the body-text rating appended when it exists. */\nconst contrastLine = (who: string, l: Legibility) =>\n `${who} ${l.ratio.toFixed(2)}${l.small ? ` ${l.small}` : ''}`\n\n/**\n * The generated tonal scale for one color as **a single horizontal band of ten equal steps** sharing\n * one rounded, clipped frame (reads as a continuous ramp, not ten chips). Display + copy only — it never\n * edits the color; pair it with `ColorPicker` (or use `PaletteField`, which composes both). Each step\n * is a `Tooltip`-wrapped button whose fill / ink are the swatch's own colors (inline — the color IS the\n * data), showing its number on the base step and on hover / focus; clicking copies the hex with a toast.\n * `role=\"group\"` labelled \"{name} color scale\"; an invalid `baseColor` renders only a muted caption.\n */\nexport const ColorRamp = forwardRef<HTMLDivElement, ColorRampProps>(function ColorRamp(\n {\n baseColor,\n name = 'color',\n options,\n size = 'md',\n copyable = true,\n onCopy,\n showBounds = true,\n label,\n helperText,\n error = false,\n required = false,\n className,\n ...props\n },\n ref,\n) {\n const t = useT()\n const id = useId()\n const labelId = `${id}-label`\n const helperId = `${id}-helper`\n const { copy } = useClipboard()\n const palette = generatePalette(baseColor, options)\n\n const handleCopy = async (swatch: PaletteSwatch) => {\n const step = `${name}-${swatch.step}`\n const ok = await copy(swatch.hex)\n if (ok) {\n toast.success(t('colorRamp.copied', { step, hex: swatch.hex }))\n onCopy?.(swatch)\n } else {\n toast.error(t('colorRamp.copyFailed', { step }))\n }\n }\n\n const tip = (swatch: PaletteSwatch) => (\n <span className={styles.tip}>\n <span className={styles.tipTitle}>\n {name}-{swatch.step}\n {swatch.step === BASE_STEP ? ` · ${t('colorRamp.base')}` : ''}\n </span>\n <span>{swatch.hex}</span>\n <span>\n {contrastLine(t('colorRamp.black'), swatch.onDark)} ·{' '}\n {contrastLine(t('colorRamp.white'), swatch.onWhite)}\n </span>\n {copyable && <span>{t('colorRamp.clickToCopy')}</span>}\n </span>\n )\n\n return (\n <div\n ref={ref}\n className={clsx(fieldStyles.field, error && fieldStyles.error, className)}\n {...props}\n >\n {label != null && (\n <label id={labelId} className={fieldStyles.label}>\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\">\n {label}\n </Typography>\n {required && (\n <span className={fieldStyles.required} aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n\n {palette ? (\n <>\n <div\n role=\"group\"\n aria-label={t('colorRamp.groupLabel', { name })}\n aria-labelledby={label != null ? labelId : undefined}\n aria-describedby={helperText != null ? helperId : undefined}\n className={clsx(styles.band, styles[size])}\n >\n {palette.map((swatch) => {\n const isBase = swatch.step === BASE_STEP\n // the swatch's own colors are the data — the one legitimate inline-color exception\n const ink = { backgroundColor: swatch.hex, color: swatch.textColor } as CSSProperties\n const stepName = `${name}-${swatch.step}`\n const cell = copyable ? (\n <button\n type=\"button\"\n className={styles.step}\n style={ink}\n data-base={isBase || undefined}\n aria-label={t('colorRamp.copyAria', { name, step: swatch.step, hex: swatch.hex })}\n onClick={() => void handleCopy(swatch)}\n >\n <span className={styles.num} aria-hidden=\"true\">\n {swatch.step}\n </span>\n </button>\n ) : (\n <span\n className={clsx(styles.step, styles.static)}\n style={ink}\n data-base={isBase || undefined}\n role=\"img\"\n aria-label={`${stepName} ${swatch.hex}`}\n >\n <span className={styles.num} aria-hidden=\"true\">\n {swatch.step}\n </span>\n </span>\n )\n // the Tooltip's wrapper span is the band's real flex child (sized by `.band > *`)\n return (\n <Tooltip key={swatch.step} content={tip(swatch)}>\n {cell}\n </Tooltip>\n )\n })}\n </div>\n {showBounds && (\n <div className={styles.bounds}>\n <Typography as=\"span\" variant=\"caption\" color=\"muted\">\n {t('colorRamp.lightest')}\n </Typography>\n <Typography as=\"span\" variant=\"caption\" color=\"muted\">\n {t('colorRamp.darkest')}\n </Typography>\n </div>\n )}\n </>\n ) : (\n <Typography as=\"span\" variant=\"caption\" color=\"muted\">\n {t('colorRamp.invalid')}\n </Typography>\n )}\n\n {helperText != null && (\n <Typography\n as=\"span\"\n id={helperId}\n variant=\"bodySmall\"\n color={error ? 'error' : 'muted'}\n className={fieldStyles.helper}\n >\n {helperText}\n </Typography>\n )}\n </div>\n )\n})\n"],"names":["contrastLine","who","ColorRamp","forwardRef","baseColor","name","options","size","copyable","onCopy","showBounds","label","helperText","error","required","className","props","ref","t","useT","id","useId","labelId","helperId","copy","useClipboard","palette","generatePalette","handleCopy","swatch","step","toast","tip","styles","jsxs","BASE_STEP","jsx","clsx","fieldStyles","Typography","Fragment","isBase","ink","stepName","cell","Tooltip"],"mappings":"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"}
1
+ {"version":3,"file":"ColorRamp-DQ8wkgvF.js","sources":["../src/components/ColorRamp/ColorRamp.tsx"],"sourcesContent":["import { forwardRef, useId, type CSSProperties, type HTMLAttributes, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport { useT } from '../../theme'\nimport { useClipboard } from '../../hooks/useClipboard'\nimport {\n BASE_STEP,\n generatePalette,\n type GeneratePaletteOptions,\n type Legibility,\n type PaletteSwatch,\n} from '../../helpers/palette'\nimport { Tooltip } from '../Tooltip'\nimport { Typography } from '../Typography'\nimport { toast } from '../Toast'\n// shared field chrome (wrapper / label / helper / required / error)\nimport fieldStyles from '../TextField/TextField.module.css'\nimport styles from './ColorRamp.module.css'\n\nexport type ColorRampSize = 'sm' | 'md' | 'lg'\n\n// `onCopy` here is the swatch callback, so the DOM clipboard `onCopy` handler is omitted alongside `color`\nexport interface ColorRampProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color' | 'onCopy'> {\n /** The base (500) color — any value `generatePalette` accepts. Invalid → the empty-state caption. */\n baseColor: string\n /** Token prefix for step names (`primary` → \"primary-500\") — used in tooltips, aria-labels and the copy toast. Default `'color'`. */\n name?: string\n /** Passed to `generatePalette` (override any subset of the tint / shade fractions). */\n options?: GeneratePaletteOptions\n /** Band height. `sm` 32 · `md` 40 (default) · `lg` 48 px. */\n size?: ColorRampSize\n /** Click a step to copy its hex (default `true`). `false` renders the steps as non-interactive cells. */\n copyable?: boolean\n /** After a successful copy — in addition to the built-in toast. */\n onCopy?: (swatch: PaletteSwatch) => void\n /** Show the \"Lightest … Darkest\" caption row under the band (default `true`). */\n showBounds?: boolean\n /** Label rendered above the band (field-family chrome, like `Slider` / `SwatchPicker`). */\n label?: ReactNode\n /** Helper / validation text under the band. Adopts the error color while `error`. */\n helperText?: ReactNode\n /** Marks the field invalid — reddens the label/asterisk and shows `helperText` in the error color. */\n error?: boolean\n /** Adds a red asterisk after the label. */\n required?: boolean\n}\n\n/** `black 4.52 AA` — ratio to 2 decimals, the body-text rating appended when it exists. */\nconst contrastLine = (who: string, l: Legibility) =>\n `${who} ${l.ratio.toFixed(2)}${l.small ? ` ${l.small}` : ''}`\n\n/**\n * The generated tonal scale for one color as **a single horizontal band of ten equal steps** sharing\n * one rounded, clipped frame (reads as a continuous ramp, not ten chips). Display + copy only — it never\n * edits the color; pair it with `ColorPicker` (or use `PaletteField`, which composes both). Each step\n * is a `Tooltip`-wrapped button whose fill / ink are the swatch's own colors (inline — the color IS the\n * data), showing its number on the base step and on hover / focus; clicking copies the hex with a toast.\n * `role=\"group\"` labelled \"{name} color scale\"; an invalid `baseColor` renders only a muted caption.\n */\nexport const ColorRamp = forwardRef<HTMLDivElement, ColorRampProps>(function ColorRamp(\n {\n baseColor,\n name = 'color',\n options,\n size = 'md',\n copyable = true,\n onCopy,\n showBounds = true,\n label,\n helperText,\n error = false,\n required = false,\n className,\n ...props\n },\n ref,\n) {\n const t = useT()\n const id = useId()\n const labelId = `${id}-label`\n const helperId = `${id}-helper`\n const { copy } = useClipboard()\n const palette = generatePalette(baseColor, options)\n\n const handleCopy = async (swatch: PaletteSwatch) => {\n const step = `${name}-${swatch.step}`\n const ok = await copy(swatch.hex)\n if (ok) {\n toast.success(t('colorRamp.copied', { step, hex: swatch.hex }))\n onCopy?.(swatch)\n } else {\n toast.error(t('colorRamp.copyFailed', { step }))\n }\n }\n\n const tip = (swatch: PaletteSwatch) => (\n <span className={styles.tip}>\n <span className={styles.tipTitle}>\n {name}-{swatch.step}\n {swatch.step === BASE_STEP ? ` · ${t('colorRamp.base')}` : ''}\n </span>\n <span>{swatch.hex}</span>\n <span>\n {contrastLine(t('colorRamp.black'), swatch.onDark)} ·{' '}\n {contrastLine(t('colorRamp.white'), swatch.onWhite)}\n </span>\n {copyable && <span>{t('colorRamp.clickToCopy')}</span>}\n </span>\n )\n\n return (\n <div\n ref={ref}\n className={clsx(fieldStyles.field, error && fieldStyles.error, className)}\n {...props}\n >\n {label != null && (\n <label id={labelId} className={fieldStyles.label}>\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\">\n {label}\n </Typography>\n {required && (\n <span className={fieldStyles.required} aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n\n {palette ? (\n <>\n <div\n role=\"group\"\n aria-label={t('colorRamp.groupLabel', { name })}\n aria-labelledby={label != null ? labelId : undefined}\n aria-describedby={helperText != null ? helperId : undefined}\n className={clsx(styles.band, styles[size])}\n >\n {palette.map((swatch) => {\n const isBase = swatch.step === BASE_STEP\n // the swatch's own colors are the data — the one legitimate inline-color exception\n const ink = { backgroundColor: swatch.hex, color: swatch.textColor } as CSSProperties\n const stepName = `${name}-${swatch.step}`\n const cell = copyable ? (\n <button\n type=\"button\"\n className={styles.step}\n style={ink}\n data-base={isBase || undefined}\n aria-label={t('colorRamp.copyAria', { name, step: swatch.step, hex: swatch.hex })}\n onClick={() => void handleCopy(swatch)}\n >\n <span className={styles.num} aria-hidden=\"true\">\n {swatch.step}\n </span>\n </button>\n ) : (\n <span\n className={clsx(styles.step, styles.static)}\n style={ink}\n data-base={isBase || undefined}\n role=\"img\"\n aria-label={`${stepName} ${swatch.hex}`}\n >\n <span className={styles.num} aria-hidden=\"true\">\n {swatch.step}\n </span>\n </span>\n )\n // the Tooltip's wrapper span is the band's real flex child (sized by `.band > *`)\n return (\n <Tooltip key={swatch.step} content={tip(swatch)}>\n {cell}\n </Tooltip>\n )\n })}\n </div>\n {showBounds && (\n <div className={styles.bounds}>\n <Typography as=\"span\" variant=\"caption\" color=\"muted\">\n {t('colorRamp.lightest')}\n </Typography>\n <Typography as=\"span\" variant=\"caption\" color=\"muted\">\n {t('colorRamp.darkest')}\n </Typography>\n </div>\n )}\n </>\n ) : (\n <Typography as=\"span\" variant=\"caption\" color=\"muted\">\n {t('colorRamp.invalid')}\n </Typography>\n )}\n\n {helperText != null && (\n <Typography\n as=\"span\"\n id={helperId}\n variant=\"bodySmall\"\n color={error ? 'error' : 'muted'}\n className={fieldStyles.helper}\n >\n {helperText}\n </Typography>\n )}\n </div>\n )\n})\n"],"names":["contrastLine","who","ColorRamp","forwardRef","baseColor","name","options","size","copyable","onCopy","showBounds","label","helperText","error","required","className","props","ref","t","useT","id","useId","labelId","helperId","copy","useClipboard","palette","generatePalette","handleCopy","swatch","step","toast","tip","styles","jsxs","BASE_STEP","jsx","clsx","fieldStyles","Typography","Fragment","isBase","ink","stepName","cell","Tooltip"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const be=require("react/jsx-runtime"),a=require("react"),Ce=require("./breakpoints-Dpnh6BbG.cjs"),ne=require("./translations-CXEeeUDL.cjs"),b=require("./messages-CJqxqL3t.cjs");function _e(e){let s=e.trim().replace(/^#/,"");s.length===3&&(s=s[0]+s[0]+s[1]+s[1]+s[2]+s[2]);const n=parseInt(s,16);return`${n>>16&255}, ${n>>8&255}, ${n&255}`}function Le(e){const[s,n,u]=e.split(",").map(L=>Number(L.trim()));return(s*299+n*587+u*114)/1e3>=150?"#04202b":"#ffffff"}const ke={secondary:"rgb(var(--tz-color-primary-rgb))",warning:"#ffffff"};function re(e,s=document.documentElement){for(const[n,u]of Object.entries(e)){if(!u)continue;const r=_e(u);s.style.setProperty(`--tz-color-${n}-rgb`,r),s.style.setProperty(`--tz-color-${n}-contrast`,ke[n]??Le(r))}}const o=a.createContext(null),oe="tz-theme-mode",C=e=>`tz-accent-color-${e}`,ue="tz-header-sticky",le="tz-font-family",ce="tz-shape",de="tz-locale",me=[{code:"en-US",label:"English"}],_="Inter",Ie=[_],fe=e=>`'${e}', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif`;function Fe(){if(typeof document>"u"||document.getElementById("tz-font-preconnect"))return;const e=document.createElement("link");e.id="tz-font-preconnect",e.rel="preconnect",e.href="https://fonts.googleapis.com",document.head.appendChild(e);const s=document.createElement("link");s.rel="preconnect",s.href="https://fonts.gstatic.com",s.crossOrigin="anonymous",document.head.appendChild(s)}function Ke(e){if(typeof document>"u"||Ie.includes(e))return;const s=`tz-font-${e.trim().replace(/\s+/g,"-").toLowerCase()}`;if(document.getElementById(s))return;Fe();const n=document.createElement("link");n.id=s,n.rel="stylesheet",n.href=`https://fonts.googleapis.com/css2?family=${encodeURIComponent(e.trim()).replace(/%20/g,"+")}&display=swap`,document.head.appendChild(n)}const I="tab",f="nestedTab",F="step",ye=[],pe={},Ee={},Ue={primary:"#13404e",secondary:"#ffffff",background:"#f9f9f9",surface:"#ffffff",accent:"#056472",success:"#00a854",error:"#f04134",info:"#039aa1",warning:"#ffbf00"},Re={primary:"#e6e8eb",secondary:"#191919",background:"#0f0f0f",surface:"#191919",accent:"#16a6b4",success:"#00a854",error:"#f04134",info:"#039aa1",warning:"#ffbf00"};function Ne(e){const s=localStorage.getItem(oe);return s==="light"||s==="dark"?s:e}function Qe(){return{light:localStorage.getItem(C("light"))||null,dark:localStorage.getItem(C("dark"))||null}}function Ye(e){const s=localStorage.getItem(ue);return s==="1"?!0:s==="0"?!1:e}function De(e){return localStorage.getItem(le)||e}function Oe(e){const s=localStorage.getItem(ce);return s==="rounded"||s==="square"?s:e}function Me(e,s){const n=e.map(r=>r.code),u=localStorage.getItem(de);return u&&n.includes(u)?u:s&&n.includes(s)?s:n.find(r=>r.toLowerCase().startsWith("en"))??n[0]??"en-US"}function Pe({config:e,children:s}){var j,J,V,W,X,Z,ee,te,se,ae;const[n,u]=a.useState(()=>{var t;return Ne(((t=e==null?void 0:e.theme)==null?void 0:t.mode)??"light")}),[r,L]=a.useState(Qe),[K,Te]=a.useState(()=>{var t;return Ye(((t=e==null?void 0:e.header)==null?void 0:t.sticky)??!1)}),[E,ie]=a.useState(()=>{var t;return De(((t=e==null?void 0:e.theme)==null?void 0:t.fontFamily)??_)}),[T,Se]=a.useState(()=>{var t;return Oe(((t=e==null?void 0:e.theme)==null?void 0:t.shape)??"rounded")}),k=((j=e==null?void 0:e.i18n)==null?void 0:j.languages)??me,U=(J=e==null?void 0:e.i18n)==null?void 0:J.messages,R=(V=e==null?void 0:e.i18n)==null?void 0:V.appMessages,[m,he]=a.useState(()=>{var t;return Me(k,(t=e==null?void 0:e.i18n)==null?void 0:t.language)}),c=(W=e==null?void 0:e.theme)==null?void 0:W.colors,p=a.useMemo(()=>{const t={...Ue,...c==null?void 0:c.light},l={...t,...Re,...c==null?void 0:c.dark};return{light:t,dark:l}},[c]),N=a.useMemo(()=>({light:p.light.accent,dark:p.dark.accent}),[p]),y=a.useCallback((t,l=r[t])=>{const d=p[t];re(l?{...d,accent:l}:d);const A=document.documentElement;A.setAttribute("data-tz-theme",t),A.style.setProperty("color-scheme",t),localStorage.setItem(oe,t)},[p,r]);a.useLayoutEffect(()=>{y(n)},[y,n]);const Q=(X=e==null?void 0:e.theme)==null?void 0:X.breakpoints;a.useLayoutEffect(()=>{Ce.setBreakpoints(Q)},[JSON.stringify(Q??null)]);const i=a.useCallback(t=>{y(t),u(t)},[y]),Y=a.useCallback(()=>i(n==="light"?"dark":"light"),[n,i]),D=a.useCallback((t,l)=>{const d=l??n;L(A=>({...A,[d]:t})),t?localStorage.setItem(C(d),t):localStorage.removeItem(C(d)),d===n&&y(n,t)},[n,y]),O=a.useCallback(t=>{Te(t),localStorage.setItem(ue,t?"1":"0")},[]),S=a.useCallback(t=>{Ke(t),document.documentElement.style.setProperty("--tz-font-family",fe(t))},[]);a.useLayoutEffect(()=>{S(E)},[S,E]);const M=a.useCallback(t=>{const l=t.trim()||_;S(l),ie(l),localStorage.setItem(le,l)},[S]),h=a.useCallback(t=>{document.documentElement.setAttribute("data-tz-shape",t)},[]);a.useLayoutEffect(()=>{h(T)},[h,T]);const P=a.useCallback(t=>{h(t),Se(t),localStorage.setItem(ce,t)},[h]),g=a.useCallback(t=>{he(t),localStorage.setItem(de,t)},[]),z=a.useMemo(()=>b.createTranslator(m,U),[m,U]),B=a.useMemo(()=>b.createAppTranslator(m,R),[m,R]),v=(e==null?void 0:e.locales)??ye,H=((Z=e==null?void 0:e.keys)==null?void 0:Z.translationsNamespace)??ne.DEFAULT_TRANSLATIONS_NAMESPACE,q=((ee=e==null?void 0:e.keys)==null?void 0:ee.tabQueryKey)??I,w=((te=e==null?void 0:e.keys)==null?void 0:te.nestedTabQueryKey)??f,$=((se=e==null?void 0:e.keys)==null?void 0:se.stepQueryKey)??F,G=((ae=e==null?void 0:e.table)==null?void 0:ae.query)??pe,x=(e==null?void 0:e.header)??Ee,Ae=a.useMemo(()=>({mode:n,setMode:i,toggleMode:Y,accentColors:r,defaultAccentColors:N,setAccentColor:D,locales:v,translationsNamespace:H,tabQueryKey:q,nestedTabQueryKey:w,stepQueryKey:$,tableQuery:G,header:x,headerSticky:K,setHeaderSticky:O,fontFamily:E,setFontFamily:M,shape:T,setShape:P,language:m,setLanguage:g,languages:k,t:z,appT:B}),[n,i,Y,r,N,D,v,H,q,w,$,G,x,K,O,E,M,T,P,m,g,k,z,B]);return be.jsx(o.Provider,{value:Ae,children:s})}function ge(){const e=a.useContext(o);if(!e)throw new Error("useTheme must be used within a <ConfigProvider>");return e}function ze(){var e;return((e=a.useContext(o))==null?void 0:e.locales)??ye}const Be=b.createTranslator("en"),ve=b.createAppTranslator("en");function He(){var e;return((e=a.useContext(o))==null?void 0:e.t)??Be}function qe(){var e;return((e=a.useContext(o))==null?void 0:e.appT)??ve}function we(){const e=a.useContext(o);return{language:(e==null?void 0:e.language)??"en-US",setLanguage:(e==null?void 0:e.setLanguage)??(()=>{}),languages:(e==null?void 0:e.languages)??me}}function $e(){var e;return((e=a.useContext(o))==null?void 0:e.translationsNamespace)??ne.DEFAULT_TRANSLATIONS_NAMESPACE}function Ge(){var e;return((e=a.useContext(o))==null?void 0:e.tabQueryKey)??I}function xe(){var e;return((e=a.useContext(o))==null?void 0:e.nestedTabQueryKey)??f}function je(){var e;return((e=a.useContext(o))==null?void 0:e.stepQueryKey)??F}function Je(){var e;return((e=a.useContext(o))==null?void 0:e.tableQuery)??pe}function Ve(){var e;return((e=a.useContext(o))==null?void 0:e.header)??Ee}exports.ConfigProvider=Pe;exports.DEFAULT_FONT_FAMILY=_;exports.DEFAULT_NESTED_TAB_QUERY_KEY=f;exports.DEFAULT_STEP_QUERY_KEY=F;exports.DEFAULT_TABS_QUERY_KEY=I;exports.applyTheme=re;exports.useHeaderConfig=Ve;exports.useLanguage=we;exports.useLocales=ze;exports.useNestedTabQueryKey=xe;exports.useStepQueryKey=je;exports.useT=He;exports.useTableQueryConfig=Je;exports.useTabsQueryKey=Ge;exports.useTheme=ge;exports.useTranslations=qe;exports.useTranslationsNamespace=$e;
2
- //# sourceMappingURL=ConfigProvider-BicoaBLj.cjs.map
1
+ "use strict";const be=require("react/jsx-runtime"),a=require("react"),Ce=require("./breakpoints-Dpnh6BbG.cjs"),ne=require("./translations-CXEeeUDL.cjs"),b=require("./messages-ihnE1jVG.cjs");function _e(e){let s=e.trim().replace(/^#/,"");s.length===3&&(s=s[0]+s[0]+s[1]+s[1]+s[2]+s[2]);const n=parseInt(s,16);return`${n>>16&255}, ${n>>8&255}, ${n&255}`}function Le(e){const[s,n,u]=e.split(",").map(L=>Number(L.trim()));return(s*299+n*587+u*114)/1e3>=150?"#04202b":"#ffffff"}const ke={secondary:"rgb(var(--tz-color-primary-rgb))",warning:"#ffffff"};function re(e,s=document.documentElement){for(const[n,u]of Object.entries(e)){if(!u)continue;const r=_e(u);s.style.setProperty(`--tz-color-${n}-rgb`,r),s.style.setProperty(`--tz-color-${n}-contrast`,ke[n]??Le(r))}}const o=a.createContext(null),oe="tz-theme-mode",C=e=>`tz-accent-color-${e}`,ue="tz-header-sticky",le="tz-font-family",ce="tz-shape",de="tz-locale",me=[{code:"en-US",label:"English"}],_="Inter",Ie=[_],fe=e=>`'${e}', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif`;function Fe(){if(typeof document>"u"||document.getElementById("tz-font-preconnect"))return;const e=document.createElement("link");e.id="tz-font-preconnect",e.rel="preconnect",e.href="https://fonts.googleapis.com",document.head.appendChild(e);const s=document.createElement("link");s.rel="preconnect",s.href="https://fonts.gstatic.com",s.crossOrigin="anonymous",document.head.appendChild(s)}function Ke(e){if(typeof document>"u"||Ie.includes(e))return;const s=`tz-font-${e.trim().replace(/\s+/g,"-").toLowerCase()}`;if(document.getElementById(s))return;Fe();const n=document.createElement("link");n.id=s,n.rel="stylesheet",n.href=`https://fonts.googleapis.com/css2?family=${encodeURIComponent(e.trim()).replace(/%20/g,"+")}&display=swap`,document.head.appendChild(n)}const I="tab",f="nestedTab",F="step",ye=[],pe={},Ee={},Ue={primary:"#13404e",secondary:"#ffffff",background:"#f9f9f9",surface:"#ffffff",accent:"#056472",success:"#00a854",error:"#f04134",info:"#039aa1",warning:"#ffbf00"},Re={primary:"#e6e8eb",secondary:"#191919",background:"#0f0f0f",surface:"#191919",accent:"#16a6b4",success:"#00a854",error:"#f04134",info:"#039aa1",warning:"#ffbf00"};function Ne(e){const s=localStorage.getItem(oe);return s==="light"||s==="dark"?s:e}function Qe(){return{light:localStorage.getItem(C("light"))||null,dark:localStorage.getItem(C("dark"))||null}}function Ye(e){const s=localStorage.getItem(ue);return s==="1"?!0:s==="0"?!1:e}function De(e){return localStorage.getItem(le)||e}function Oe(e){const s=localStorage.getItem(ce);return s==="rounded"||s==="square"?s:e}function Me(e,s){const n=e.map(r=>r.code),u=localStorage.getItem(de);return u&&n.includes(u)?u:s&&n.includes(s)?s:n.find(r=>r.toLowerCase().startsWith("en"))??n[0]??"en-US"}function Pe({config:e,children:s}){var j,J,V,W,X,Z,ee,te,se,ae;const[n,u]=a.useState(()=>{var t;return Ne(((t=e==null?void 0:e.theme)==null?void 0:t.mode)??"light")}),[r,L]=a.useState(Qe),[K,Te]=a.useState(()=>{var t;return Ye(((t=e==null?void 0:e.header)==null?void 0:t.sticky)??!1)}),[E,ie]=a.useState(()=>{var t;return De(((t=e==null?void 0:e.theme)==null?void 0:t.fontFamily)??_)}),[T,Se]=a.useState(()=>{var t;return Oe(((t=e==null?void 0:e.theme)==null?void 0:t.shape)??"rounded")}),k=((j=e==null?void 0:e.i18n)==null?void 0:j.languages)??me,U=(J=e==null?void 0:e.i18n)==null?void 0:J.messages,R=(V=e==null?void 0:e.i18n)==null?void 0:V.appMessages,[m,he]=a.useState(()=>{var t;return Me(k,(t=e==null?void 0:e.i18n)==null?void 0:t.language)}),c=(W=e==null?void 0:e.theme)==null?void 0:W.colors,p=a.useMemo(()=>{const t={...Ue,...c==null?void 0:c.light},l={...t,...Re,...c==null?void 0:c.dark};return{light:t,dark:l}},[c]),N=a.useMemo(()=>({light:p.light.accent,dark:p.dark.accent}),[p]),y=a.useCallback((t,l=r[t])=>{const d=p[t];re(l?{...d,accent:l}:d);const A=document.documentElement;A.setAttribute("data-tz-theme",t),A.style.setProperty("color-scheme",t),localStorage.setItem(oe,t)},[p,r]);a.useLayoutEffect(()=>{y(n)},[y,n]);const Q=(X=e==null?void 0:e.theme)==null?void 0:X.breakpoints;a.useLayoutEffect(()=>{Ce.setBreakpoints(Q)},[JSON.stringify(Q??null)]);const i=a.useCallback(t=>{y(t),u(t)},[y]),Y=a.useCallback(()=>i(n==="light"?"dark":"light"),[n,i]),D=a.useCallback((t,l)=>{const d=l??n;L(A=>({...A,[d]:t})),t?localStorage.setItem(C(d),t):localStorage.removeItem(C(d)),d===n&&y(n,t)},[n,y]),O=a.useCallback(t=>{Te(t),localStorage.setItem(ue,t?"1":"0")},[]),S=a.useCallback(t=>{Ke(t),document.documentElement.style.setProperty("--tz-font-family",fe(t))},[]);a.useLayoutEffect(()=>{S(E)},[S,E]);const M=a.useCallback(t=>{const l=t.trim()||_;S(l),ie(l),localStorage.setItem(le,l)},[S]),h=a.useCallback(t=>{document.documentElement.setAttribute("data-tz-shape",t)},[]);a.useLayoutEffect(()=>{h(T)},[h,T]);const P=a.useCallback(t=>{h(t),Se(t),localStorage.setItem(ce,t)},[h]),g=a.useCallback(t=>{he(t),localStorage.setItem(de,t)},[]),z=a.useMemo(()=>b.createTranslator(m,U),[m,U]),B=a.useMemo(()=>b.createAppTranslator(m,R),[m,R]),v=(e==null?void 0:e.locales)??ye,H=((Z=e==null?void 0:e.keys)==null?void 0:Z.translationsNamespace)??ne.DEFAULT_TRANSLATIONS_NAMESPACE,q=((ee=e==null?void 0:e.keys)==null?void 0:ee.tabQueryKey)??I,w=((te=e==null?void 0:e.keys)==null?void 0:te.nestedTabQueryKey)??f,$=((se=e==null?void 0:e.keys)==null?void 0:se.stepQueryKey)??F,G=((ae=e==null?void 0:e.table)==null?void 0:ae.query)??pe,x=(e==null?void 0:e.header)??Ee,Ae=a.useMemo(()=>({mode:n,setMode:i,toggleMode:Y,accentColors:r,defaultAccentColors:N,setAccentColor:D,locales:v,translationsNamespace:H,tabQueryKey:q,nestedTabQueryKey:w,stepQueryKey:$,tableQuery:G,header:x,headerSticky:K,setHeaderSticky:O,fontFamily:E,setFontFamily:M,shape:T,setShape:P,language:m,setLanguage:g,languages:k,t:z,appT:B}),[n,i,Y,r,N,D,v,H,q,w,$,G,x,K,O,E,M,T,P,m,g,k,z,B]);return be.jsx(o.Provider,{value:Ae,children:s})}function ge(){const e=a.useContext(o);if(!e)throw new Error("useTheme must be used within a <ConfigProvider>");return e}function ze(){var e;return((e=a.useContext(o))==null?void 0:e.locales)??ye}const Be=b.createTranslator("en"),ve=b.createAppTranslator("en");function He(){var e;return((e=a.useContext(o))==null?void 0:e.t)??Be}function qe(){var e;return((e=a.useContext(o))==null?void 0:e.appT)??ve}function we(){const e=a.useContext(o);return{language:(e==null?void 0:e.language)??"en-US",setLanguage:(e==null?void 0:e.setLanguage)??(()=>{}),languages:(e==null?void 0:e.languages)??me}}function $e(){var e;return((e=a.useContext(o))==null?void 0:e.translationsNamespace)??ne.DEFAULT_TRANSLATIONS_NAMESPACE}function Ge(){var e;return((e=a.useContext(o))==null?void 0:e.tabQueryKey)??I}function xe(){var e;return((e=a.useContext(o))==null?void 0:e.nestedTabQueryKey)??f}function je(){var e;return((e=a.useContext(o))==null?void 0:e.stepQueryKey)??F}function Je(){var e;return((e=a.useContext(o))==null?void 0:e.tableQuery)??pe}function Ve(){var e;return((e=a.useContext(o))==null?void 0:e.header)??Ee}exports.ConfigProvider=Pe;exports.DEFAULT_FONT_FAMILY=_;exports.DEFAULT_NESTED_TAB_QUERY_KEY=f;exports.DEFAULT_STEP_QUERY_KEY=F;exports.DEFAULT_TABS_QUERY_KEY=I;exports.applyTheme=re;exports.useHeaderConfig=Ve;exports.useLanguage=we;exports.useLocales=ze;exports.useNestedTabQueryKey=xe;exports.useStepQueryKey=je;exports.useT=He;exports.useTableQueryConfig=Je;exports.useTabsQueryKey=Ge;exports.useTheme=ge;exports.useTranslations=qe;exports.useTranslationsNamespace=$e;
2
+ //# sourceMappingURL=ConfigProvider-BElY0HuV.cjs.map