@keboola/design 11.9.0 → 13.0.0

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 (367) hide show
  1. package/AGENTS.md +45 -14
  2. package/CHANGELOG.md +246 -0
  3. package/COMPONENT-API.md +352 -294
  4. package/README.md +11 -1
  5. package/dist/{AIKit-ELIsegJz.js → AIKit-DcOlHIBr.js} +420 -247
  6. package/dist/AIKit-DcOlHIBr.js.map +1 -0
  7. package/dist/{Alert-BsIM_oFK.js → Alert-UI-CIs-1.js} +16 -16
  8. package/dist/Alert-UI-CIs-1.js.map +1 -0
  9. package/dist/{AlertModal-BGJdaRRj.js → AlertModal-mbSnuuka.js} +8 -8
  10. package/dist/AlertModal-mbSnuuka.js.map +1 -0
  11. package/dist/{AppShell-DRgJxpXW.js → AppShell-WSQabK8r.js} +15 -52
  12. package/dist/AppShell-WSQabK8r.js.map +1 -0
  13. package/dist/{AutoSaveTextarea-BeuWuszr.js → AutoSaveTextarea-C5iIr2Ts.js} +2 -2
  14. package/dist/{AutoSaveTextarea-BeuWuszr.js.map → AutoSaveTextarea-C5iIr2Ts.js.map} +1 -1
  15. package/dist/{Badge-o5jURtpB.js → Badge-DIjhwPvh.js} +4 -9
  16. package/dist/Badge-DIjhwPvh.js.map +1 -0
  17. package/dist/{BrandEditor-BsTBM3s6.js → BrandEditor-Bkd6dhb8.js} +7 -7
  18. package/dist/{BrandEditor-BsTBM3s6.js.map → BrandEditor-Bkd6dhb8.js.map} +1 -1
  19. package/dist/{BrandLogo-CoKBk4MI.js → BrandLogo-CKpVSZb6.js} +4 -4
  20. package/dist/BrandLogo-CKpVSZb6.js.map +1 -0
  21. package/dist/{Breadcrumb-xqEUxfwn.js → Breadcrumb-BUoAZyhO.js} +8 -14
  22. package/dist/Breadcrumb-BUoAZyhO.js.map +1 -0
  23. package/dist/{Button-DsRrU5F1.js → Button-B21oVcPU.js} +31 -14
  24. package/dist/Button-B21oVcPU.js.map +1 -0
  25. package/dist/{Calendar-cG5NIJ4O.js → Calendar-DFtmZzbF.js} +99 -99
  26. package/dist/Calendar-DFtmZzbF.js.map +1 -0
  27. package/dist/{Card-Dyo7055Q.js → Card-BQmBWHXl.js} +35 -7
  28. package/dist/Card-BQmBWHXl.js.map +1 -0
  29. package/dist/{Checkbox-Dq5fPNrO.js → Checkbox-8yIIgY7g.js} +4 -4
  30. package/dist/Checkbox-8yIIgY7g.js.map +1 -0
  31. package/dist/{Clipboard-BZitKiSA.js → Clipboard-_xf6hMDD.js} +2 -2
  32. package/dist/{Clipboard-BZitKiSA.js.map → Clipboard-_xf6hMDD.js.map} +1 -1
  33. package/dist/{ClipboardButton-KHQnPEh_.js → ClipboardButton-srUgWgwH.js} +4 -4
  34. package/dist/{ClipboardButton-KHQnPEh_.js.map → ClipboardButton-srUgWgwH.js.map} +1 -1
  35. package/dist/{CodeEditor-BJKJXA0c.js → CodeEditor-jZMw1ioj.js} +55 -165
  36. package/dist/CodeEditor-jZMw1ioj.js.map +1 -0
  37. package/dist/{ColorInput-Bj3dfPFA.js → ColorInput-B3gBZ8Ya.js} +12 -27
  38. package/dist/ColorInput-B3gBZ8Ya.js.map +1 -0
  39. package/dist/{ColorModeSwitch-CWt-DZGC.js → ColorModeSwitch-Bw9wMyoL.js} +7 -17
  40. package/dist/ColorModeSwitch-Bw9wMyoL.js.map +1 -0
  41. package/dist/Combobox-C_MTpQ1l.js +1081 -0
  42. package/dist/Combobox-C_MTpQ1l.js.map +1 -0
  43. package/dist/{Command-BDU3C1gg.js → Command-BQPiZCNz.js} +4 -4
  44. package/dist/{Command-BDU3C1gg.js.map → Command-BQPiZCNz.js.map} +1 -1
  45. package/dist/{CopyField-BHRQUyuF.js → CopyField-Ba7h8MqZ.js} +19 -55
  46. package/dist/{CopyField-BHRQUyuF.js.map → CopyField-Ba7h8MqZ.js.map} +1 -1
  47. package/dist/{DateInput-B6N8g0ra.js → DateInput-D0nWUasV.js} +6 -6
  48. package/dist/{DateInput-B6N8g0ra.js.map → DateInput-D0nWUasV.js.map} +1 -1
  49. package/dist/{DatePicker-nA8YdE84.js → DatePicker-CtSa9b3V.js} +3 -3
  50. package/dist/{DatePicker-nA8YdE84.js.map → DatePicker-CtSa9b3V.js.map} +1 -1
  51. package/dist/{DateRangeInput-7M9Z4cVO.js → DateRangeInput-i6wE45-V.js} +10 -14
  52. package/dist/DateRangeInput-i6wE45-V.js.map +1 -0
  53. package/dist/{DateRangePicker-DjSUFjh4.js → DateRangePicker-BAnuz6vO.js} +9 -13
  54. package/dist/DateRangePicker-BAnuz6vO.js.map +1 -0
  55. package/dist/DiffView-ppTIzh2h.js.map +1 -1
  56. package/dist/{DropdownMenu-CgVwhDvl.js → DropdownMenu-gRM-A8qU.js} +3 -3
  57. package/dist/DropdownMenu-gRM-A8qU.js.map +1 -0
  58. package/dist/{FieldItem-DZGIdiXE.js → FieldItem-BHViBJS3.js} +12 -25
  59. package/dist/FieldItem-BHViBJS3.js.map +1 -0
  60. package/dist/{FieldItem-vhIJW4pj.d.ts → FieldItem-CPN1xjN5.d.ts} +11 -25
  61. package/dist/{FileUpload-DYQCTGjU.js → FileUpload-Ch2hrIWq.js} +11 -16
  62. package/dist/{FileUpload-DYQCTGjU.js.map → FileUpload-Ch2hrIWq.js.map} +1 -1
  63. package/dist/{Form-CcK7dRrC.js → Form-VkzfVPyT.js} +15 -23
  64. package/dist/{Form-CcK7dRrC.js.map → Form-VkzfVPyT.js.map} +1 -1
  65. package/dist/{FormGroup-DR_gZ25-.js → FormGroup-CmCppxOn.js} +11 -17
  66. package/dist/FormGroup-CmCppxOn.js.map +1 -0
  67. package/dist/{FullScreenModal-CN9nAs72.js → FullScreenModal-Cwnm8WdM.js} +15 -29
  68. package/dist/FullScreenModal-Cwnm8WdM.js.map +1 -0
  69. package/dist/{HoverCard-B9ZMJxjn.js → HoverCard-B8OKu9XZ.js} +2 -2
  70. package/dist/{HoverCard-B9ZMJxjn.js.map → HoverCard-B8OKu9XZ.js.map} +1 -1
  71. package/dist/{InputGroup-Do8K2hvD.js → InputGroup-CrlMRz4X.js} +11 -13
  72. package/dist/InputGroup-CrlMRz4X.js.map +1 -0
  73. package/dist/{Kbd-LCFMumoq.js → Kbd-J4n1J6i4.js} +23 -13
  74. package/dist/Kbd-J4n1J6i4.js.map +1 -0
  75. package/dist/{MarkedText-DNGEUVWc.js → MarkedText-DlmlJO0u.js} +2 -2
  76. package/dist/{MarkedText-DNGEUVWc.js.map → MarkedText-DlmlJO0u.js.map} +1 -1
  77. package/dist/{MermaidDiagram-ZG0iiDV_.js → MermaidDiagram-B30x2yV7.js} +16 -34
  78. package/dist/MermaidDiagram-B30x2yV7.js.map +1 -0
  79. package/dist/{Modal-I3VWk2oo.js → Modal-BkSuS9Yz.js} +17 -34
  80. package/dist/Modal-BkSuS9Yz.js.map +1 -0
  81. package/dist/{ModalTitle-CeLM_mX9.js → ModalTitle-BxopkIoQ.js} +3 -3
  82. package/dist/ModalTitle-BxopkIoQ.js.map +1 -0
  83. package/dist/{MultiActionButtonGroup-CYZ8IgSf.js → MultiActionButtonGroup-AWLj1Tg7.js} +3 -3
  84. package/dist/{MultiActionButtonGroup-CYZ8IgSf.js.map → MultiActionButtonGroup-AWLj1Tg7.js.map} +1 -1
  85. package/dist/{Navbar-Liy1TPI7.js → Navbar-B_DNpv5s.js} +9 -13
  86. package/dist/{Navbar-Liy1TPI7.js.map → Navbar-B_DNpv5s.js.map} +1 -1
  87. package/dist/{OtpInput-CbbymqYs.js → OtpInput-I8B8Vjdl.js} +2 -2
  88. package/dist/{OtpInput-CbbymqYs.js.map → OtpInput-I8B8Vjdl.js.map} +1 -1
  89. package/dist/{PageHeader-Q3IpCnQd.js → PageHeader-CgfyXpf1.js} +13 -26
  90. package/dist/PageHeader-CgfyXpf1.js.map +1 -0
  91. package/dist/{PageLayout-DSVM-ASz.js → PageLayout-DiAAILuS.js} +12 -20
  92. package/dist/PageLayout-DiAAILuS.js.map +1 -0
  93. package/dist/{PageToolbar-BKVJiDAL.js → PageToolbar-CIW0VmKe.js} +12 -42
  94. package/dist/PageToolbar-CIW0VmKe.js.map +1 -0
  95. package/dist/{Pagination-C_b7Xhey.js → Pagination-DH3f6LN0.js} +3 -3
  96. package/dist/{Pagination-C_b7Xhey.js.map → Pagination-DH3f6LN0.js.map} +1 -1
  97. package/dist/{Popconfirm-5pBzT_HQ.js → Popconfirm-Dhzn7sy6.js} +3 -3
  98. package/dist/{Popconfirm-5pBzT_HQ.js.map → Popconfirm-Dhzn7sy6.js.map} +1 -1
  99. package/dist/{Popover-BEbQrC_P.js → Popover-CEk915I1.js} +4 -3
  100. package/dist/Popover-CEk915I1.js.map +1 -0
  101. package/dist/{RadioGroup-Byc2mym4.js → RadioGroup-CBPRLRN0.js} +4 -4
  102. package/dist/{RadioGroup-Byc2mym4.js.map → RadioGroup-CBPRLRN0.js.map} +1 -1
  103. package/dist/{Search-Dhig_hPD.js → Search-DmkQo716.js} +3 -3
  104. package/dist/{Search-Dhig_hPD.js.map → Search-DmkQo716.js.map} +1 -1
  105. package/dist/{SearchInput-92r2bkA7.js → SearchInput-D3qMkHaW.js} +8 -13
  106. package/dist/SearchInput-D3qMkHaW.js.map +1 -0
  107. package/dist/{SectionNav-CNLJsiVG.js → SectionNav-TU5i3JeM.js} +10 -42
  108. package/dist/SectionNav-TU5i3JeM.js.map +1 -0
  109. package/dist/{Select-DV3Hak_l.js → Select-B4uK0QVm.js} +10 -12
  110. package/dist/Select-B4uK0QVm.js.map +1 -0
  111. package/dist/{Sheet-OparjIi-.js → Sheet-D0fAE14T.js} +5 -9
  112. package/dist/Sheet-D0fAE14T.js.map +1 -0
  113. package/dist/{Sidebar-CLEbBtNY.js → Sidebar-ZLMNIbg5.js} +16 -33
  114. package/dist/Sidebar-ZLMNIbg5.js.map +1 -0
  115. package/dist/{Slider-DLclvRws.js → Slider-B0ou9r0B.js} +3 -3
  116. package/dist/{Slider-DLclvRws.js.map → Slider-B0ou9r0B.js.map} +1 -1
  117. package/dist/{Stepper-C8sm9ZFM.js → Stepper-BLkLhfnd.js} +6 -9
  118. package/dist/{Stepper-C8sm9ZFM.js.map → Stepper-BLkLhfnd.js.map} +1 -1
  119. package/dist/{Switch-B0WdGSjz.js → Switch-DZvNePOm.js} +2 -2
  120. package/dist/{Switch-B0WdGSjz.js.map → Switch-DZvNePOm.js.map} +1 -1
  121. package/dist/{Table-CvYuTuNU.js → Table-BaVT5Tkn.js} +6 -11
  122. package/dist/{Table-CvYuTuNU.js.map → Table-BaVT5Tkn.js.map} +1 -1
  123. package/dist/{Tabs-eB974xJf.js → Tabs-CTDmye1N.js} +3 -3
  124. package/dist/{Tabs-eB974xJf.js.map → Tabs-CTDmye1N.js.map} +1 -1
  125. package/dist/{TextInput-CFTf4Cz1.js → TextInput-BWYXbfs4.js} +10 -14
  126. package/dist/TextInput-BWYXbfs4.js.map +1 -0
  127. package/dist/{ThemeProvider-DAmNn9Sd.js → ThemeProvider-VF38VfUa.js} +13 -31
  128. package/dist/ThemeProvider-VF38VfUa.js.map +1 -0
  129. package/dist/{TimePicker-BGeqc-Ed.js → TimePicker-CDGYrRxi.js} +2 -2
  130. package/dist/{TimePicker-BGeqc-Ed.js.map → TimePicker-CDGYrRxi.js.map} +1 -1
  131. package/dist/{Timeline-C8-wnRRr.js → Timeline-B-I6sb0M.js} +2 -2
  132. package/dist/{Timeline-C8-wnRRr.js.map → Timeline-B-I6sb0M.js.map} +1 -1
  133. package/dist/{Toast-Dr6Uw7ao.js → Toast-PfQf3vj-.js} +2 -2
  134. package/dist/{Toast-Dr6Uw7ao.js.map → Toast-PfQf3vj-.js.map} +1 -1
  135. package/dist/{Workbench-UR2FBC7I.js → Workbench-DmZzpkj7.js} +2 -2
  136. package/dist/{Workbench-UR2FBC7I.js.map → Workbench-DmZzpkj7.js.map} +1 -1
  137. package/dist/{ZoomableSvg-BZlk3PFJ.js → ZoomableSvg-C65nta_r.js} +5 -19
  138. package/dist/ZoomableSvg-C65nta_r.js.map +1 -0
  139. package/dist/charts.d.ts +21 -52
  140. package/dist/charts.js +13 -39
  141. package/dist/charts.js.map +1 -1
  142. package/dist/{context-D7X470dy.js → context-U293r3v-.js} +5 -9
  143. package/dist/context-U293r3v-.js.map +1 -0
  144. package/dist/editors.d.ts +27 -124
  145. package/dist/editors.js +29 -71
  146. package/dist/editors.js.map +1 -1
  147. package/dist/{findLiteralMatches-BGBw8Vbl.js → findLiteralMatches-DgGLzyG0.js} +8 -20
  148. package/dist/findLiteralMatches-DgGLzyG0.js.map +1 -0
  149. package/dist/flint.d.ts +3 -6
  150. package/dist/flint.js +31 -80
  151. package/dist/flint.js.map +1 -1
  152. package/dist/{icons-Cek151jC.js → icons-wcA70iQx.js} +105 -2
  153. package/dist/icons-wcA70iQx.js.map +1 -0
  154. package/dist/icons.d.ts +2 -2
  155. package/dist/icons.js +2 -2
  156. package/dist/{index-m-kQEWiY.d.ts → index-B7k-09i1.d.ts} +14 -2
  157. package/dist/index.d.ts +1180 -1867
  158. package/dist/index.js +69 -68
  159. package/dist/internal/blocks/AIKit.js +2 -2
  160. package/dist/internal/blocks/AppShell.js +1 -1
  161. package/dist/internal/blocks/AuthLayout.js +7 -27
  162. package/dist/internal/blocks/AuthLayout.js.map +1 -1
  163. package/dist/internal/blocks/AutoSaveTextarea.js +1 -1
  164. package/dist/internal/blocks/BrandEditor.js +1 -1
  165. package/dist/internal/blocks/ChartPanel.js +4 -8
  166. package/dist/internal/blocks/ChartPanel.js.map +1 -1
  167. package/dist/internal/blocks/ChipEditor.js +13 -21
  168. package/dist/internal/blocks/ChipEditor.js.map +1 -1
  169. package/dist/internal/blocks/ClipboardButton.js +1 -1
  170. package/dist/internal/blocks/ColorInput.js +1 -1
  171. package/dist/internal/blocks/ColorModeSwitch.js +1 -1
  172. package/dist/internal/blocks/Command.js +1 -1
  173. package/dist/internal/blocks/CopyField.js +1 -1
  174. package/dist/internal/blocks/DashboardHero.js +4 -7
  175. package/dist/internal/blocks/DashboardHero.js.map +1 -1
  176. package/dist/internal/blocks/DateInput.js +1 -1
  177. package/dist/internal/blocks/DateRangeInput.js +1 -1
  178. package/dist/internal/blocks/EmptyConfigurationActionCard.js +1 -1
  179. package/dist/internal/blocks/EmptyState.js +5 -9
  180. package/dist/internal/blocks/EmptyState.js.map +1 -1
  181. package/dist/internal/blocks/ErrorState.js +5 -9
  182. package/dist/internal/blocks/ErrorState.js.map +1 -1
  183. package/dist/internal/blocks/ExportMenu.js +6 -10
  184. package/dist/internal/blocks/ExportMenu.js.map +1 -1
  185. package/dist/internal/blocks/Form/connectors/ComboboxField.js +40 -0
  186. package/dist/internal/blocks/Form/connectors/ComboboxField.js.map +1 -0
  187. package/dist/internal/blocks/Form/connectors/MultiComboboxField.js +5 -22
  188. package/dist/internal/blocks/Form/connectors/MultiComboboxField.js.map +1 -1
  189. package/dist/internal/blocks/Form.js +1 -1
  190. package/dist/internal/blocks/FormGroup.js +1 -1
  191. package/dist/internal/blocks/GoogleButton.js +1 -1
  192. package/dist/internal/blocks/MicrosoftButton.js +1 -1
  193. package/dist/internal/blocks/MultiActionButtonGroup.js +1 -1
  194. package/dist/internal/blocks/MultiCombobox.js +160 -154
  195. package/dist/internal/blocks/MultiCombobox.js.map +1 -1
  196. package/dist/internal/blocks/NumberInput.js +1 -1
  197. package/dist/internal/blocks/OtpInput.js +1 -1
  198. package/dist/internal/blocks/PageHeader.js +1 -1
  199. package/dist/internal/blocks/PageLayout.js +1 -1
  200. package/dist/internal/blocks/PageToolbar.js +1 -1
  201. package/dist/internal/blocks/PasswordInput.js +4 -4
  202. package/dist/internal/blocks/PasswordInput.js.map +1 -1
  203. package/dist/internal/blocks/SearchInput.js +1 -1
  204. package/dist/internal/blocks/SearchInputWithNavigation.js +4 -4
  205. package/dist/internal/blocks/SectionNav.js +1 -1
  206. package/dist/internal/blocks/SplitButton.js +3 -3
  207. package/dist/internal/blocks/StatCard.js +4 -8
  208. package/dist/internal/blocks/StatCard.js.map +1 -1
  209. package/dist/internal/blocks/TextInput.js +1 -1
  210. package/dist/internal/blocks/Textarea.js +2 -2
  211. package/dist/internal/blocks/TimeInput.js +5 -5
  212. package/dist/internal/blocks/TimeInput.js.map +1 -1
  213. package/dist/internal/components/Alert.js +1 -1
  214. package/dist/internal/components/AlertModal.js +1 -1
  215. package/dist/internal/components/Avatar.js +1 -1
  216. package/dist/internal/components/Badge.js +1 -1
  217. package/dist/internal/components/BrandLogo.js +1 -1
  218. package/dist/internal/components/Breadcrumb.js +1 -1
  219. package/dist/internal/components/Button.js +1 -1
  220. package/dist/internal/components/ButtonGroup.js.map +1 -1
  221. package/dist/internal/components/Calendar.js +1 -1
  222. package/dist/internal/components/Card.js +1 -1
  223. package/dist/internal/components/Checkbox.js +1 -1
  224. package/dist/internal/components/Clipboard.js +1 -1
  225. package/dist/internal/components/CollapsiblePanel.js +3 -3
  226. package/dist/internal/components/CollapsiblePanel.js.map +1 -1
  227. package/dist/internal/components/Combobox.js +2 -2
  228. package/dist/internal/components/DatePicker.js +1 -1
  229. package/dist/internal/components/DateRangePicker.js +1 -1
  230. package/dist/internal/components/DropdownMenu.js +1 -1
  231. package/dist/internal/components/FileUpload.js +1 -1
  232. package/dist/internal/components/FullScreenModal.js +1 -1
  233. package/dist/internal/components/HoverCard.js +1 -1
  234. package/dist/internal/components/InputGroup.js +1 -1
  235. package/dist/internal/components/Kbd.js +1 -1
  236. package/dist/internal/components/MarkedText.js +1 -1
  237. package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js +1 -1
  238. package/dist/internal/components/Modal.js +1 -1
  239. package/dist/internal/components/Navbar.js +1 -1
  240. package/dist/internal/components/Pagination.js +1 -1
  241. package/dist/internal/components/PanelWithDetails.js +1 -1
  242. package/dist/internal/components/Popconfirm.js +1 -1
  243. package/dist/internal/components/Popover.js +1 -1
  244. package/dist/internal/components/RadioGroup.js +1 -1
  245. package/dist/internal/components/Search.js +1 -1
  246. package/dist/internal/components/Select.js +1 -1
  247. package/dist/internal/components/Separator.js.map +1 -1
  248. package/dist/internal/components/Sheet.js +1 -1
  249. package/dist/internal/components/Sidebar.js +1 -1
  250. package/dist/internal/components/Skeleton/Skeleton.js +5 -9
  251. package/dist/internal/components/Skeleton/Skeleton.js.map +1 -1
  252. package/dist/internal/components/Slider.js +1 -1
  253. package/dist/internal/components/SpotlightBackdrop.js +3 -8
  254. package/dist/internal/components/SpotlightBackdrop.js.map +1 -1
  255. package/dist/internal/components/Stepper.js +1 -1
  256. package/dist/internal/components/Switch.js +1 -1
  257. package/dist/internal/components/Table.js +1 -1
  258. package/dist/internal/components/Tabs.js +1 -1
  259. package/dist/internal/components/ThemeProvider.js +3 -3
  260. package/dist/internal/components/TimePicker.js +1 -1
  261. package/dist/internal/components/Timeline.js +1 -1
  262. package/dist/internal/components/Toast.js +2 -2
  263. package/dist/internal/components/Tooltip.js +1 -1
  264. package/dist/internal/components/Truncated.js +4 -8
  265. package/dist/internal/components/Truncated.js.map +1 -1
  266. package/dist/internal/components/Workbench.js +1 -1
  267. package/dist/internal/components/ZoomableSvg.js +1 -1
  268. package/dist/internal/hooks/useScrollbarPosition.js +1 -1
  269. package/dist/internal/hooks/useStableCallback.js +4 -13
  270. package/dist/internal/hooks/useStableCallback.js.map +1 -1
  271. package/dist/internal/utils/accessibleName.js +11 -0
  272. package/dist/internal/utils/accessibleName.js.map +1 -0
  273. package/dist/internal/utils.js +2 -2
  274. package/dist/markdown-editor.d.ts +15 -37
  275. package/dist/markdown-editor.js +17 -23
  276. package/dist/markdown-editor.js.map +1 -1
  277. package/dist/mermaid.d.ts +4 -6
  278. package/dist/mermaid.js +1 -1
  279. package/dist/rjsf.d.ts +9 -19
  280. package/dist/rjsf.js +44 -84
  281. package/dist/rjsf.js.map +1 -1
  282. package/dist/{styles-BAFscjSV.js → styles-gzcjOyKv.js} +6 -6
  283. package/dist/styles-gzcjOyKv.js.map +1 -0
  284. package/dist/styles.css +1 -1
  285. package/dist/svgTransforms-Dw2hRA-i.js +51 -0
  286. package/dist/svgTransforms-Dw2hRA-i.js.map +1 -0
  287. package/dist/testing.d.ts +3 -10
  288. package/dist/testing.js +7 -15
  289. package/dist/testing.js.map +1 -1
  290. package/dist/themeTokens-7DEab0kp.js +31 -0
  291. package/dist/themeTokens-7DEab0kp.js.map +1 -0
  292. package/dist/{toast-DIC0iNRf.js → toast-CyXEdaCZ.js} +3 -3
  293. package/dist/toast-CyXEdaCZ.js.map +1 -0
  294. package/dist/{themeScopeContext-D7fSyb06.js → useColorSchemeState-Cw4MCXUs.js} +14 -14
  295. package/dist/useColorSchemeState-Cw4MCXUs.js.map +1 -0
  296. package/dist/{useControllableState-M6494mCT.js → useControllableState-CUYXMsfz.js} +3 -7
  297. package/dist/useControllableState-CUYXMsfz.js.map +1 -0
  298. package/dist/useElement-D-RjrGa4.js +21 -0
  299. package/dist/useElement-D-RjrGa4.js.map +1 -0
  300. package/dist/useThemeAttributes-B199Regy.js +67 -0
  301. package/dist/useThemeAttributes-B199Regy.js.map +1 -0
  302. package/dist/{utils-BW4AE8VP.js → utils-Bd28bWgm.js} +31 -26
  303. package/dist/utils-Bd28bWgm.js.map +1 -0
  304. package/dist/vega.d.ts +8 -30
  305. package/dist/vega.js +5 -13
  306. package/dist/vega.js.map +1 -1
  307. package/dist/{vegaTheme-CSvFEMBl.js → vegaTheme-VQMWTlBw.js} +7 -21
  308. package/dist/vegaTheme-VQMWTlBw.js.map +1 -0
  309. package/package.json +28 -27
  310. package/src/styles.css +120 -14
  311. package/src/theme.css +130 -5
  312. package/dist/AIKit-ELIsegJz.js.map +0 -1
  313. package/dist/Alert-BsIM_oFK.js.map +0 -1
  314. package/dist/AlertModal-BGJdaRRj.js.map +0 -1
  315. package/dist/AppShell-DRgJxpXW.js.map +0 -1
  316. package/dist/Badge-o5jURtpB.js.map +0 -1
  317. package/dist/BrandLogo-CoKBk4MI.js.map +0 -1
  318. package/dist/Breadcrumb-xqEUxfwn.js.map +0 -1
  319. package/dist/Button-DsRrU5F1.js.map +0 -1
  320. package/dist/Calendar-cG5NIJ4O.js.map +0 -1
  321. package/dist/Card-Dyo7055Q.js.map +0 -1
  322. package/dist/Checkbox-Dq5fPNrO.js.map +0 -1
  323. package/dist/CodeEditor-BJKJXA0c.js.map +0 -1
  324. package/dist/ColorInput-Bj3dfPFA.js.map +0 -1
  325. package/dist/ColorModeSwitch-CWt-DZGC.js.map +0 -1
  326. package/dist/Combobox-D8PrEqTG.js +0 -619
  327. package/dist/Combobox-D8PrEqTG.js.map +0 -1
  328. package/dist/DateRangeInput-7M9Z4cVO.js.map +0 -1
  329. package/dist/DateRangePicker-DjSUFjh4.js.map +0 -1
  330. package/dist/DropdownMenu-CgVwhDvl.js.map +0 -1
  331. package/dist/FieldItem-DZGIdiXE.js.map +0 -1
  332. package/dist/FormGroup-DR_gZ25-.js.map +0 -1
  333. package/dist/FullScreenModal-CN9nAs72.js.map +0 -1
  334. package/dist/InputGroup-Do8K2hvD.js.map +0 -1
  335. package/dist/Kbd-LCFMumoq.js.map +0 -1
  336. package/dist/MermaidDiagram-ZG0iiDV_.js.map +0 -1
  337. package/dist/Modal-I3VWk2oo.js.map +0 -1
  338. package/dist/ModalTitle-CeLM_mX9.js.map +0 -1
  339. package/dist/PageHeader-Q3IpCnQd.js.map +0 -1
  340. package/dist/PageLayout-DSVM-ASz.js.map +0 -1
  341. package/dist/PageToolbar-BKVJiDAL.js.map +0 -1
  342. package/dist/Popover-BEbQrC_P.js.map +0 -1
  343. package/dist/SearchInput-92r2bkA7.js.map +0 -1
  344. package/dist/SectionNav-CNLJsiVG.js.map +0 -1
  345. package/dist/Select-DV3Hak_l.js.map +0 -1
  346. package/dist/Sheet-OparjIi-.js.map +0 -1
  347. package/dist/Sidebar-CLEbBtNY.js.map +0 -1
  348. package/dist/TextInput-CFTf4Cz1.js.map +0 -1
  349. package/dist/ThemeProvider-DAmNn9Sd.js.map +0 -1
  350. package/dist/ZoomableSvg-BZlk3PFJ.js.map +0 -1
  351. package/dist/context-D7X470dy.js.map +0 -1
  352. package/dist/findLiteralMatches-BGBw8Vbl.js.map +0 -1
  353. package/dist/icons-Cek151jC.js.map +0 -1
  354. package/dist/internal/components/StatusDot.js +0 -67
  355. package/dist/internal/components/StatusDot.js.map +0 -1
  356. package/dist/styles-BAFscjSV.js.map +0 -1
  357. package/dist/svgTransforms-CJAYPk7o.js +0 -81
  358. package/dist/svgTransforms-CJAYPk7o.js.map +0 -1
  359. package/dist/themeScopeContext-D7fSyb06.js.map +0 -1
  360. package/dist/themeTokens-qP1-55O7.js +0 -119
  361. package/dist/themeTokens-qP1-55O7.js.map +0 -1
  362. package/dist/toast-DIC0iNRf.js.map +0 -1
  363. package/dist/useControllableState-M6494mCT.js.map +0 -1
  364. package/dist/useElement-BK3AAiIf.js +0 -24
  365. package/dist/useElement-BK3AAiIf.js.map +0 -1
  366. package/dist/utils-BW4AE8VP.js.map +0 -1
  367. package/dist/vegaTheme-CSvFEMBl.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordInput.js","names":[],"sources":["../../../src/blocks/PasswordInput/PasswordInput.tsx"],"sourcesContent":["import { useRef, useState } from 'react';\nimport type {\n ChangeEventHandler,\n ComponentProps,\n ComponentRef,\n FocusEventHandler,\n KeyboardEventHandler,\n MouseEventHandler,\n} from 'react';\n\nimport { InputGroup } from '../../components/InputGroup';\nimport { useControllableState } from '../../hooks/useControllableState';\nimport { ArrowBigUpDash, Eye, EyeOff, X } from '../../icons';\nimport { createChangeInputEvent, mergeRefs } from '../../utils';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'focusVariant' | 'state' | 'sizing'\n>;\n\ntype InputGroupInputProps = Omit<\n ComponentProps<typeof InputGroup.Input>,\n 'value' | 'defaultValue' | 'type' | 'autoComplete'\n>;\n\ntype Props = InputGroupProps &\n InputGroupInputProps & {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string) => void;\n onValueBlur?: (value: string) => void;\n allowClear?: boolean;\n allowPasswordToggle?: boolean;\n /**\n * Suffix appended to the reveal button's accessible name, e.g. the field\n * title. Use it to disambiguate multiple password fields on one form —\n * \"Show password: API token\" / \"Hide password: API token\". Omit for a\n * single field.\n */\n passwordToggleLabel?: string;\n autoComplete?: 'new-password' | 'current-password' | 'off';\n defaultPasswordVisibility?: boolean;\n };\n\nexport const PasswordInput = ({\n ref,\n\n // group props\n state,\n variant,\n focusVariant,\n sizing,\n className,\n\n // own props\n value: valueProp,\n defaultValue,\n onValueChange,\n onValueBlur,\n onChange,\n onBlur,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n allowClear = false,\n allowPasswordToggle = false,\n passwordToggleLabel,\n autoComplete = 'new-password',\n defaultPasswordVisibility = false,\n\n // input props\n disabled,\n readOnly,\n ...restInputProps\n}: Props) => {\n const inputRef = useRef<ComponentRef<'input'>>(null);\n\n const [value, setValue] = useControllableState<string>({\n // A `null` controlled value stays controlled (coerced to ''); `undefined` is uncontrolled.\n prop: valueProp === null ? '' : valueProp,\n defaultProp: defaultValue ?? '',\n onChange: onValueChange,\n });\n\n const [capsLock, setCapsLock] = useState(false);\n const [isPasswordVisible, setIsPasswordVisible] = useState(defaultPasswordVisibility);\n\n const canClear = allowClear && !!value && !disabled && !readOnly;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n setValue(event.target.value);\n onChange?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n if (capsLock) setCapsLock(false);\n onValueBlur?.(event.target.value);\n onBlur?.(event);\n };\n\n // Both keyDown and keyUp are needed: pressing the Caps Lock key itself\n // reports the *old* state on keyDown and the *new* state on keyUp, so\n // toggling Caps Lock off mid-typing is only caught on keyUp.\n const handleKeyDown: KeyboardEventHandler<HTMLInputElement> = (event) => {\n const isOn = event.getModifierState('CapsLock');\n if (isOn !== capsLock) setCapsLock(isOn);\n onKeyDown?.(event);\n };\n\n const handleKeyUp: KeyboardEventHandler<HTMLInputElement> = (event) => {\n const isOn = event.getModifierState('CapsLock');\n if (isOn !== capsLock) setCapsLock(isOn);\n onKeyUp?.(event);\n };\n\n // Catches the case where the user clicks into the field with Caps Lock\n // already on. Tab-focus / autofocus have no API to query modifier state.\n const handleMouseDown: MouseEventHandler<HTMLInputElement> = (event) => {\n const isOn = event.getModifierState('CapsLock');\n if (isOn !== capsLock) setCapsLock(isOn);\n onMouseDown?.(event);\n };\n\n const handleClear: MouseEventHandler<HTMLButtonElement> = () => {\n if (!inputRef.current) return;\n inputRef.current.value = '';\n setValue('');\n onChange?.(createChangeInputEvent(inputRef.current));\n };\n\n const handleTogglePasswordVisibility = () => {\n setIsPasswordVisible((prev) => !prev);\n };\n\n return (\n <InputGroup\n state={state}\n variant={variant}\n sizing={sizing}\n focusVariant={focusVariant}\n className={className}\n >\n <InputGroup.Input\n {...restInputProps}\n ref={mergeRefs(ref ?? null, inputRef)}\n type={isPasswordVisible ? 'text' : 'password'}\n autoComplete={autoComplete}\n value={value}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onMouseDown={handleMouseDown}\n disabled={disabled}\n readOnly={readOnly}\n />\n\n {(capsLock || canClear || allowPasswordToggle) && (\n <InputGroup.Addon align=\"inline-end\">\n {capsLock && (\n <ArrowBigUpDash className=\"tw:size-4 tw:text-primary\">\n <title>Caps Lock is on</title>\n </ArrowBigUpDash>\n )}\n {canClear && (\n <InputGroup.Button\n aria-label=\"Clear password\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleClear}\n >\n <X className=\"tw:size-4\" />\n </InputGroup.Button>\n )}\n {allowPasswordToggle && (\n <InputGroup.Button\n aria-label={`${isPasswordVisible ? 'Hide password' : 'Show password'}${\n passwordToggleLabel ? `: ${passwordToggleLabel}` : ''\n }`}\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleTogglePasswordVisibility}\n >\n {isPasswordVisible ? <EyeOff className=\"tw:size-4\" /> : <Eye className=\"tw:size-4\" />}\n </InputGroup.Button>\n )}\n </InputGroup.Addon>\n )}\n </InputGroup>\n );\n};\n"],"mappings":";;;;;;;;AA4CA,MAAa,iBAAiB,EAC5B,KAGA,OACA,SACA,cACA,QACA,WAGA,OAAO,WACP,cACA,eACA,aACA,UACA,QACA,WACA,SACA,aACA,aAAa,OACb,sBAAsB,OACtB,qBACA,eAAe,gBACf,4BAA4B,OAG5B,UACA,UACA,GAAG,qBACQ;CACX,MAAM,WAAW,OAA8B,IAAI;CAEnD,MAAM,CAAC,OAAO,YAAY,qBAA6B;EAErD,MAAM,cAAc,OAAO,KAAK;EAChC,aAAa,gBAAgB;EAC7B,UAAU;CACZ,CAAC;CAED,MAAM,CAAC,UAAU,eAAe,SAAS,KAAK;CAC9C,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,yBAAyB;CAEpF,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC;CAExD,MAAM,gBAAsD,UAAU;EACpE,SAAS,MAAM,OAAO,KAAK;EAC3B,WAAW,KAAK;CAClB;CAEA,MAAM,cAAmD,UAAU;EACjE,IAAI,UAAU,YAAY,KAAK;EAC/B,cAAc,MAAM,OAAO,KAAK;EAChC,SAAS,KAAK;CAChB;CAKA,MAAM,iBAAyD,UAAU;EACvE,MAAM,OAAO,MAAM,iBAAiB,UAAU;EAC9C,IAAI,SAAS,UAAU,YAAY,IAAI;EACvC,YAAY,KAAK;CACnB;CAEA,MAAM,eAAuD,UAAU;EACrE,MAAM,OAAO,MAAM,iBAAiB,UAAU;EAC9C,IAAI,SAAS,UAAU,YAAY,IAAI;EACvC,UAAU,KAAK;CACjB;CAIA,MAAM,mBAAwD,UAAU;EACtE,MAAM,OAAO,MAAM,iBAAiB,UAAU;EAC9C,IAAI,SAAS,UAAU,YAAY,IAAI;EACvC,cAAc,KAAK;CACrB;CAEA,MAAM,oBAA0D;EAC9D,IAAI,CAAC,SAAS,SAAS;EACvB,SAAS,QAAQ,QAAQ;EACzB,SAAS,EAAE;EACX,WAAW,uBAAuB,SAAS,OAAO,CAAC;CACrD;CAEA,MAAM,uCAAuC;EAC3C,sBAAsB,SAAS,CAAC,IAAI;CACtC;CAEA,OACE,qBAAC,YAAD;EACS;EACE;EACD;EACM;EACH;EALb,UAAA,CAOE,oBAAC,WAAW,OAAZ;GACE,GAAI;GACJ,KAAK,UAAU,OAAO,MAAM,QAAQ;GACpC,MAAM,oBAAoB,SAAS;GACrB;GACP;GACP,UAAU;GACV,QAAQ;GACR,WAAW;GACX,SAAS;GACT,aAAa;GACH;GACA;EACX,CAAA,IAEC,YAAY,YAAY,wBACxB,qBAAC,WAAW,OAAZ;GAAkB,OAAM;GAAxB,UAAA;IACG,YACC,oBAAC,gBAAD;KAAgB,WAAU;KACxB,UAAA,oBAAC,SAAD,EAAA,UAAO,kBAAsB,CAAA;IACf,CAAA;IAEjB,YACC,oBAAC,WAAW,QAAZ;KACE,cAAW;KACX,cAAc,UAAU,MAAM,eAAe;KAC7C,SAAS;KAET,UAAA,oBAAC,GAAD,EAAG,WAAU,YAAa,CAAA;IACT,CAAA;IAEpB,uBACC,oBAAC,WAAW,QAAZ;KACE,cAAY,GAAG,oBAAoB,kBAAkB,kBACnD,sBAAsB,KAAK,wBAAwB;KAErD,cAAc,UAAU,MAAM,eAAe;KAC7C,SAAS;KAER,UAAA,oBAAoB,oBAAC,QAAD,EAAQ,WAAU,YAAa,CAAA,IAAI,oBAAC,KAAD,EAAK,WAAU,YAAa,CAAA;IACnE,CAAA;GAEL;EAEV,CAAA,CAAA;;AAEhB"}
1
+ {"version":3,"file":"PasswordInput.js","names":[],"sources":["../../../src/blocks/PasswordInput/PasswordInput.tsx"],"sourcesContent":["import { useRef, useState } from 'react';\nimport type {\n ChangeEventHandler,\n ComponentProps,\n ComponentRef,\n FocusEventHandler,\n KeyboardEventHandler,\n MouseEventHandler,\n} from 'react';\n\nimport { InputGroup } from '../../components/InputGroup';\nimport { useControllableState } from '../../hooks/useControllableState';\nimport { ArrowBigUpDash, Eye, EyeOff, X } from '../../icons';\nimport { createChangeInputEvent, mergeRefs } from '../../utils';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'focusVariant' | 'state' | 'sizing'\n>;\n\ntype InputGroupInputProps = Omit<\n ComponentProps<typeof InputGroup.Input>,\n 'value' | 'defaultValue' | 'type' | 'autoComplete'\n>;\n\ntype Props = InputGroupProps &\n InputGroupInputProps & {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string) => void;\n onValueBlur?: (value: string) => void;\n allowClear?: boolean;\n allowPasswordToggle?: boolean;\n /** Suffix of the reveal button's accessible name, to tell several password fields apart. */\n passwordToggleLabel?: string;\n autoComplete?: 'new-password' | 'current-password' | 'off';\n defaultPasswordVisibility?: boolean;\n };\n\nexport const PasswordInput = ({\n ref,\n\n // group props\n state,\n variant,\n focusVariant,\n sizing,\n className,\n\n // own props\n value: valueProp,\n defaultValue,\n onValueChange,\n onValueBlur,\n onChange,\n onBlur,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n allowClear = false,\n allowPasswordToggle = false,\n passwordToggleLabel,\n autoComplete = 'new-password',\n defaultPasswordVisibility = false,\n\n // input props\n disabled,\n readOnly,\n ...restInputProps\n}: Props) => {\n const inputRef = useRef<ComponentRef<'input'>>(null);\n\n const [value, setValue] = useControllableState<string>({\n // A `null` controlled value stays controlled (coerced to ''); `undefined` is uncontrolled.\n prop: valueProp === null ? '' : valueProp,\n defaultProp: defaultValue ?? '',\n onChange: onValueChange,\n });\n\n const [capsLock, setCapsLock] = useState(false);\n const [isPasswordVisible, setIsPasswordVisible] = useState(defaultPasswordVisibility);\n\n const canClear = allowClear && !!value && !disabled && !readOnly;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n setValue(event.target.value);\n onChange?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n if (capsLock) setCapsLock(false);\n onValueBlur?.(event.target.value);\n onBlur?.(event);\n };\n\n // keyUp too: pressing Caps Lock itself reports the old state on keyDown.\n const handleKeyDown: KeyboardEventHandler<HTMLInputElement> = (event) => {\n const isOn = event.getModifierState('CapsLock');\n if (isOn !== capsLock) setCapsLock(isOn);\n onKeyDown?.(event);\n };\n\n const handleKeyUp: KeyboardEventHandler<HTMLInputElement> = (event) => {\n const isOn = event.getModifierState('CapsLock');\n if (isOn !== capsLock) setCapsLock(isOn);\n onKeyUp?.(event);\n };\n\n // Caps Lock already on when clicking in; focus events cannot read modifier state.\n const handleMouseDown: MouseEventHandler<HTMLInputElement> = (event) => {\n const isOn = event.getModifierState('CapsLock');\n if (isOn !== capsLock) setCapsLock(isOn);\n onMouseDown?.(event);\n };\n\n const handleClear: MouseEventHandler<HTMLButtonElement> = () => {\n if (!inputRef.current) return;\n inputRef.current.value = '';\n setValue('');\n onChange?.(createChangeInputEvent(inputRef.current));\n };\n\n const handleTogglePasswordVisibility = () => {\n setIsPasswordVisible((prev) => !prev);\n };\n\n return (\n <InputGroup\n state={state}\n variant={variant}\n sizing={sizing}\n focusVariant={focusVariant}\n className={className}\n >\n <InputGroup.Input\n {...restInputProps}\n ref={mergeRefs(ref ?? null, inputRef)}\n type={isPasswordVisible ? 'text' : 'password'}\n autoComplete={autoComplete}\n value={value}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onMouseDown={handleMouseDown}\n disabled={disabled}\n readOnly={readOnly}\n />\n\n {(capsLock || canClear || allowPasswordToggle) && (\n <InputGroup.Addon align=\"inline-end\">\n {capsLock && (\n <ArrowBigUpDash className=\"tw:size-4 tw:text-primary\">\n <title>Caps Lock is on</title>\n </ArrowBigUpDash>\n )}\n {canClear && (\n <InputGroup.Button\n aria-label=\"Clear password\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleClear}\n >\n <X className=\"tw:size-4\" />\n </InputGroup.Button>\n )}\n {allowPasswordToggle && (\n <InputGroup.Button\n aria-label={`${isPasswordVisible ? 'Hide password' : 'Show password'}${\n passwordToggleLabel ? `: ${passwordToggleLabel}` : ''\n }`}\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleTogglePasswordVisibility}\n >\n {isPasswordVisible ? <EyeOff className=\"tw:size-4\" /> : <Eye className=\"tw:size-4\" />}\n </InputGroup.Button>\n )}\n </InputGroup.Addon>\n )}\n </InputGroup>\n );\n};\n"],"mappings":";;;;;;;;AAuCA,MAAa,iBAAiB,EAC5B,KAGA,OACA,SACA,cACA,QACA,WAGA,OAAO,WACP,cACA,eACA,aACA,UACA,QACA,WACA,SACA,aACA,aAAa,OACb,sBAAsB,OACtB,qBACA,eAAe,gBACf,4BAA4B,OAG5B,UACA,UACA,GAAG,qBACQ;CACX,MAAM,WAAW,OAA8B,IAAI;CAEnD,MAAM,CAAC,OAAO,YAAY,qBAA6B;EAErD,MAAM,cAAc,OAAO,KAAK;EAChC,aAAa,gBAAgB;EAC7B,UAAU;CACZ,CAAC;CAED,MAAM,CAAC,UAAU,eAAe,SAAS,KAAK;CAC9C,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,yBAAyB;CAEpF,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC;CAExD,MAAM,gBAAsD,UAAU;EACpE,SAAS,MAAM,OAAO,KAAK;EAC3B,WAAW,KAAK;CAClB;CAEA,MAAM,cAAmD,UAAU;EACjE,IAAI,UAAU,YAAY,KAAK;EAC/B,cAAc,MAAM,OAAO,KAAK;EAChC,SAAS,KAAK;CAChB;CAGA,MAAM,iBAAyD,UAAU;EACvE,MAAM,OAAO,MAAM,iBAAiB,UAAU;EAC9C,IAAI,SAAS,UAAU,YAAY,IAAI;EACvC,YAAY,KAAK;CACnB;CAEA,MAAM,eAAuD,UAAU;EACrE,MAAM,OAAO,MAAM,iBAAiB,UAAU;EAC9C,IAAI,SAAS,UAAU,YAAY,IAAI;EACvC,UAAU,KAAK;CACjB;CAGA,MAAM,mBAAwD,UAAU;EACtE,MAAM,OAAO,MAAM,iBAAiB,UAAU;EAC9C,IAAI,SAAS,UAAU,YAAY,IAAI;EACvC,cAAc,KAAK;CACrB;CAEA,MAAM,oBAA0D;EAC9D,IAAI,CAAC,SAAS,SAAS;EACvB,SAAS,QAAQ,QAAQ;EACzB,SAAS,EAAE;EACX,WAAW,uBAAuB,SAAS,OAAO,CAAC;CACrD;CAEA,MAAM,uCAAuC;EAC3C,sBAAsB,SAAS,CAAC,IAAI;CACtC;CAEA,OACE,qBAAC,YAAD;EACS;EACE;EACD;EACM;EACH;EALb,UAAA,CAOE,oBAAC,WAAW,OAAZ;GACE,GAAI;GACJ,KAAK,UAAU,OAAO,MAAM,QAAQ;GACpC,MAAM,oBAAoB,SAAS;GACrB;GACP;GACP,UAAU;GACV,QAAQ;GACR,WAAW;GACX,SAAS;GACT,aAAa;GACH;GACA;EACX,CAAA,IAEC,YAAY,YAAY,wBACxB,qBAAC,WAAW,OAAZ;GAAkB,OAAM;GAAxB,UAAA;IACG,YACC,oBAAC,gBAAD;KAAgB,WAAU;KACxB,UAAA,oBAAC,SAAD,EAAA,UAAO,kBAAsB,CAAA;IACf,CAAA;IAEjB,YACC,oBAAC,WAAW,QAAZ;KACE,cAAW;KACX,cAAc,UAAU,MAAM,eAAe;KAC7C,SAAS;KAET,UAAA,oBAAC,GAAD,EAAG,WAAU,YAAa,CAAA;IACT,CAAA;IAEpB,uBACC,oBAAC,WAAW,QAAZ;KACE,cAAY,GAAG,oBAAoB,kBAAkB,kBACnD,sBAAsB,KAAK,wBAAwB;KAErD,cAAc,UAAU,MAAM,eAAe;KAC7C,SAAS;KAER,UAAA,oBAAoB,oBAAC,QAAD,EAAQ,WAAU,YAAa,CAAA,IAAI,oBAAC,KAAD,EAAK,WAAU,YAAa,CAAA;IACnE,CAAA;GAEL;EAEV,CAAA,CAAA;;AAEhB"}
@@ -1,2 +1,2 @@
1
- import { SearchInput } from "../../SearchInput-92r2bkA7.js";
1
+ import { SearchInput } from "../../SearchInput-D3qMkHaW.js";
2
2
  export { SearchInput };
@@ -1,10 +1,10 @@
1
1
  import { cn } from "../../classNames-BzrkDnOD.js";
2
- import { keyCodes } from "../../utils-BW4AE8VP.js";
3
- import { ChevronDown, ChevronUp, Search } from "../../icons-Cek151jC.js";
4
- import { Button } from "../../Button-DsRrU5F1.js";
2
+ import { keyCodes } from "../../utils-Bd28bWgm.js";
3
+ import { ChevronDown, ChevronUp, Search } from "../../icons-wcA70iQx.js";
4
+ import { Button } from "../../Button-B21oVcPU.js";
5
5
  import { ButtonGroup } from "../components/ButtonGroup.js";
6
6
  import { Separator } from "../components/Separator.js";
7
- import { TextInput } from "../../TextInput-CFTf4Cz1.js";
7
+ import { TextInput } from "../../TextInput-BWYXbfs4.js";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
  //#region src/blocks/SearchInputWithNavigation/SearchInputWithNavigation.tsx
10
10
  const SearchInputWithNavigation = ({ ref, value, onValueChange, placeholder = "Search...", variant = "secondary", onClear, focusVariant, currentIndex, totalResults, onNavigateNext, onNavigatePrevious, className }) => {
@@ -1,2 +1,2 @@
1
- import { SectionNav } from "../../SectionNav-CNLJsiVG.js";
1
+ import { SectionNav } from "../../SectionNav-TU5i3JeM.js";
2
2
  export { SectionNav };
@@ -1,7 +1,7 @@
1
- import { ChevronDown } from "../../icons-Cek151jC.js";
2
- import { Button } from "../../Button-DsRrU5F1.js";
1
+ import { ChevronDown } from "../../icons-wcA70iQx.js";
2
+ import { Button } from "../../Button-B21oVcPU.js";
3
3
  import { ButtonGroup } from "../components/ButtonGroup.js";
4
- import { DropdownMenu } from "../../DropdownMenu-CgVwhDvl.js";
4
+ import { DropdownMenu } from "../../DropdownMenu-gRM-A8qU.js";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region src/blocks/SplitButton/SplitButton.tsx
7
7
  const iconSizeMap = {
@@ -1,5 +1,5 @@
1
1
  import { cn } from "../../classNames-BzrkDnOD.js";
2
- import { Card } from "../../Card-Dyo7055Q.js";
2
+ import { Card } from "../../Card-BQmBWHXl.js";
3
3
  import { cva } from "class-variance-authority";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  //#region src/blocks/StatCard/StatCard.tsx
@@ -18,14 +18,10 @@ const trendClassnames = cva([
18
18
  defaultVariants: { direction: "flat" }
19
19
  });
20
20
  /**
21
- * A single KPI / metric tile — a signature composition over `Card` with a label,
22
- * a large value, an optional trend delta, and an optional leading icon + footnote.
21
+ * A single KPI / metric tile over `Card`.
23
22
  *
24
- * **When to use:** the headline numbers of a dashboard (revenue, active users, uptime),
25
- * usually in a `StatCardGrid` strip at the top of a page.
26
- * **When NOT to use:** for a chart use `ChartPanel`; for a generic content surface use `Card`.
27
- * **Composition:** `StatCard.Icon`, `StatCard.Label`, `StatCard.Value`, `StatCard.Trend`,
28
- * `StatCard.Footnote`. All colours read semantic tokens, so the tile re-skins with the brand.
23
+ * **When to use:** dashboard headline numbers, usually in a `StatCardGrid`.
24
+ * **When NOT to use:** charts (`ChartPanel`) or generic surfaces (`Card`).
29
25
  */
30
26
  const StatCardRoot = ({ className, children, bordered = true, ...rest }) => /* @__PURE__ */ jsx(Card, {
31
27
  bordered,
@@ -1 +1 @@
1
- {"version":3,"file":"StatCard.js","names":[],"sources":["../../../src/blocks/StatCard/StatCard.tsx","../../../src/blocks/StatCard/StatCardGrid.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { Card } from '../../components/Card';\nimport { cn } from '../../utils';\n\nconst trendClassnames = cva(\n ['tw:inline-flex', 'tw:items-center', 'tw:gap-1', 'tw:text-sm', 'tw:font-medium'],\n {\n variants: {\n direction: {\n up: 'tw:text-success',\n down: 'tw:text-destructive',\n flat: 'tw:text-muted-foreground',\n },\n },\n defaultVariants: {\n direction: 'flat',\n },\n },\n);\n\ntype TrendDirection = NonNullable<VariantProps<typeof trendClassnames>['direction']>;\n\ntype RootProps = ComponentProps<typeof Card>;\n\n/**\n * A single KPI / metric tile — a signature composition over `Card` with a label,\n * a large value, an optional trend delta, and an optional leading icon + footnote.\n *\n * **When to use:** the headline numbers of a dashboard (revenue, active users, uptime),\n * usually in a `StatCardGrid` strip at the top of a page.\n * **When NOT to use:** for a chart use `ChartPanel`; for a generic content surface use `Card`.\n * **Composition:** `StatCard.Icon`, `StatCard.Label`, `StatCard.Value`, `StatCard.Trend`,\n * `StatCard.Footnote`. All colours read semantic tokens, so the tile re-skins with the brand.\n */\nconst StatCardRoot = ({ className, children, bordered = true, ...rest }: RootProps) => (\n <Card bordered={bordered} className={cn('tw:gap-2', className)} role=\"group\" {...rest}>\n {children}\n </Card>\n);\n\ntype IconProps = ComponentProps<'div'>;\n\nconst StatCardIcon = ({ className, children, ...rest }: IconProps) => (\n <div\n className={cn(\n 'tw:flex tw:size-9 tw:items-center tw:justify-center tw:rounded-md tw:bg-accent tw:text-accent-foreground',\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-5',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n);\n\ntype LabelProps = ComponentProps<'p'>;\n\nconst StatCardLabel = ({ className, children, ...rest }: LabelProps) => (\n <p\n className={cn('tw:m-0 tw:text-sm tw:font-medium tw:text-muted-foreground', className)}\n {...rest}\n >\n {children}\n </p>\n);\n\ntype ValueProps = ComponentProps<'p'>;\n\nconst StatCardValue = ({ className, children, ...rest }: ValueProps) => (\n <p\n className={cn(\n 'tw:m-0 tw:text-3xl tw:font-semibold tw:leading-tight tw:tracking-tight tw:text-foreground',\n className,\n )}\n {...rest}\n >\n {children}\n </p>\n);\n\ntype TrendProps = ComponentProps<'span'> & {\n /** Which way the metric moved — sets the semantic colour (`success` / `destructive` / muted). */\n direction?: TrendDirection;\n /** Optional leading icon (e.g. an arrow). */\n icon?: ReactNode;\n};\n\nconst StatCardTrend = ({ className, direction = 'flat', icon, children, ...rest }: TrendProps) => (\n <span className={trendClassnames({ direction, className })} {...rest}>\n {icon}\n {children}\n </span>\n);\n\ntype FootnoteProps = ComponentProps<'p'>;\n\nconst StatCardFootnote = ({ className, children, ...rest }: FootnoteProps) => (\n <p className={cn('tw:m-0 tw:text-xs tw:text-muted-foreground', className)} {...rest}>\n {children}\n </p>\n);\n\nexport const StatCard = StatCardRoot as typeof StatCardRoot & {\n Icon: typeof StatCardIcon;\n Label: typeof StatCardLabel;\n Value: typeof StatCardValue;\n Trend: typeof StatCardTrend;\n Footnote: typeof StatCardFootnote;\n};\n\nStatCard.Icon = StatCardIcon;\nStatCard.Label = StatCardLabel;\nStatCard.Value = StatCardValue;\nStatCard.Trend = StatCardTrend;\nStatCard.Footnote = StatCardFootnote;\n\nexport type {\n RootProps as StatCardProps,\n TrendProps as StatCardTrendProps,\n TrendDirection as StatCardTrendDirection,\n};\n","import type { ComponentProps } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nconst gridClassnames = cva(['tw:grid', 'tw:gap-4'], {\n variants: {\n columns: {\n 2: 'tw:grid-cols-1 tw:sm:grid-cols-2',\n 3: 'tw:grid-cols-1 tw:sm:grid-cols-2 tw:lg:grid-cols-3',\n 4: 'tw:grid-cols-1 tw:sm:grid-cols-2 tw:lg:grid-cols-4',\n },\n },\n defaultVariants: {\n columns: 4,\n },\n});\n\ntype Props = ComponentProps<'div'> & VariantProps<typeof gridClassnames>;\n\n/**\n * Responsive strip of KPI tiles. Lay `StatCard`s inside it at the top of a dashboard.\n * `columns` caps the tiles per row on large screens; the grid collapses to one column on\n * mobile and two on small screens.\n */\nexport const StatCardGrid = ({ className, columns = 4, children, ...rest }: Props) => (\n <div className={gridClassnames({ columns, className })} {...rest}>\n {children}\n </div>\n);\n\nexport type { Props as StatCardGridProps };\n"],"mappings":";;;;;AAOA,MAAM,kBAAkB,IACtB;CAAC;CAAkB;CAAmB;CAAY;CAAc;AAAgB,GAChF;CACE,UAAU,EACR,WAAW;EACT,IAAI;EACJ,MAAM;EACN,MAAM;CACR,EACF;CACA,iBAAiB,EACf,WAAW,OACb;AACF,CACF;;;;;;;;;;;AAgBA,MAAM,gBAAgB,EAAE,WAAW,UAAU,WAAW,MAAM,GAAG,WAC/D,oBAAC,MAAD;CAAgB;CAAU,WAAW,GAAG,YAAY,SAAS;CAAG,MAAK;CAAQ,GAAI;CAC9E;AACG,CAAA;AAKR,MAAM,gBAAgB,EAAE,WAAW,UAAU,GAAG,WAC9C,oBAAC,OAAD;CACE,WAAW,GACT,4GACA,gDACA,SACF;CACA,GAAI;CAEH;AACE,CAAA;AAKP,MAAM,iBAAiB,EAAE,WAAW,UAAU,GAAG,WAC/C,oBAAC,KAAD;CACE,WAAW,GAAG,6DAA6D,SAAS;CACpF,GAAI;CAEH;AACA,CAAA;AAKL,MAAM,iBAAiB,EAAE,WAAW,UAAU,GAAG,WAC/C,oBAAC,KAAD;CACE,WAAW,GACT,6FACA,SACF;CACA,GAAI;CAEH;AACA,CAAA;AAUL,MAAM,iBAAiB,EAAE,WAAW,YAAY,QAAQ,MAAM,UAAU,GAAG,WACzE,qBAAC,QAAD;CAAM,WAAW,gBAAgB;EAAE;EAAW;CAAU,CAAC;CAAG,GAAI;CAAhE,UAAA,CACG,MACA,QACG;;AAKR,MAAM,oBAAoB,EAAE,WAAW,UAAU,GAAG,WAClD,oBAAC,KAAD;CAAG,WAAW,GAAG,8CAA8C,SAAS;CAAG,GAAI;CAC5E;AACA,CAAA;AAGL,MAAa,WAAW;AAQxB,SAAS,OAAO;AAChB,SAAS,QAAQ;AACjB,SAAS,QAAQ;AACjB,SAAS,QAAQ;AACjB,SAAS,WAAW;;;ACjHpB,MAAM,iBAAiB,IAAI,CAAC,WAAW,UAAU,GAAG;CAClD,UAAU,EACR,SAAS;EACP,GAAG;EACH,GAAG;EACH,GAAG;CACL,EACF;CACA,iBAAiB,EACf,SAAS,EACX;AACF,CAAC;;;;;;AASD,MAAa,gBAAgB,EAAE,WAAW,UAAU,GAAG,UAAU,GAAG,WAClE,oBAAC,OAAD;CAAK,WAAW,eAAe;EAAE;EAAS;CAAU,CAAC;CAAG,GAAI;CACzD;AACE,CAAA"}
1
+ {"version":3,"file":"StatCard.js","names":[],"sources":["../../../src/blocks/StatCard/StatCard.tsx","../../../src/blocks/StatCard/StatCardGrid.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { Card } from '../../components/Card';\nimport { cn } from '../../utils';\n\nconst trendClassnames = cva(\n ['tw:inline-flex', 'tw:items-center', 'tw:gap-1', 'tw:text-sm', 'tw:font-medium'],\n {\n variants: {\n direction: {\n up: 'tw:text-success',\n down: 'tw:text-destructive',\n flat: 'tw:text-muted-foreground',\n },\n },\n defaultVariants: {\n direction: 'flat',\n },\n },\n);\n\ntype TrendDirection = NonNullable<VariantProps<typeof trendClassnames>['direction']>;\n\ntype RootProps = ComponentProps<typeof Card>;\n\n/**\n * A single KPI / metric tile over `Card`.\n *\n * **When to use:** dashboard headline numbers, usually in a `StatCardGrid`.\n * **When NOT to use:** charts (`ChartPanel`) or generic surfaces (`Card`).\n */\nconst StatCardRoot = ({ className, children, bordered = true, ...rest }: RootProps) => (\n <Card bordered={bordered} className={cn('tw:gap-2', className)} role=\"group\" {...rest}>\n {children}\n </Card>\n);\n\ntype IconProps = ComponentProps<'div'>;\n\nconst StatCardIcon = ({ className, children, ...rest }: IconProps) => (\n <div\n className={cn(\n 'tw:flex tw:size-9 tw:items-center tw:justify-center tw:rounded-md tw:bg-accent tw:text-accent-foreground',\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-5',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n);\n\ntype LabelProps = ComponentProps<'p'>;\n\nconst StatCardLabel = ({ className, children, ...rest }: LabelProps) => (\n <p\n className={cn('tw:m-0 tw:text-sm tw:font-medium tw:text-muted-foreground', className)}\n {...rest}\n >\n {children}\n </p>\n);\n\ntype ValueProps = ComponentProps<'p'>;\n\nconst StatCardValue = ({ className, children, ...rest }: ValueProps) => (\n <p\n className={cn(\n 'tw:m-0 tw:text-3xl tw:font-semibold tw:leading-tight tw:tracking-tight tw:text-foreground',\n className,\n )}\n {...rest}\n >\n {children}\n </p>\n);\n\ntype TrendProps = ComponentProps<'span'> & {\n /** Sets the semantic colour. */\n direction?: TrendDirection;\n icon?: ReactNode;\n};\n\nconst StatCardTrend = ({ className, direction = 'flat', icon, children, ...rest }: TrendProps) => (\n <span className={trendClassnames({ direction, className })} {...rest}>\n {icon}\n {children}\n </span>\n);\n\ntype FootnoteProps = ComponentProps<'p'>;\n\nconst StatCardFootnote = ({ className, children, ...rest }: FootnoteProps) => (\n <p className={cn('tw:m-0 tw:text-xs tw:text-muted-foreground', className)} {...rest}>\n {children}\n </p>\n);\n\nexport const StatCard = StatCardRoot as typeof StatCardRoot & {\n Icon: typeof StatCardIcon;\n Label: typeof StatCardLabel;\n Value: typeof StatCardValue;\n Trend: typeof StatCardTrend;\n Footnote: typeof StatCardFootnote;\n};\n\nStatCard.Icon = StatCardIcon;\nStatCard.Label = StatCardLabel;\nStatCard.Value = StatCardValue;\nStatCard.Trend = StatCardTrend;\nStatCard.Footnote = StatCardFootnote;\n\nexport type {\n RootProps as StatCardProps,\n TrendProps as StatCardTrendProps,\n TrendDirection as StatCardTrendDirection,\n};\n","import type { ComponentProps } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nconst gridClassnames = cva(['tw:grid', 'tw:gap-4'], {\n variants: {\n columns: {\n 2: 'tw:grid-cols-1 tw:sm:grid-cols-2',\n 3: 'tw:grid-cols-1 tw:sm:grid-cols-2 tw:lg:grid-cols-3',\n 4: 'tw:grid-cols-1 tw:sm:grid-cols-2 tw:lg:grid-cols-4',\n },\n },\n defaultVariants: {\n columns: 4,\n },\n});\n\ntype Props = ComponentProps<'div'> & VariantProps<typeof gridClassnames>;\n\n/**\n * Responsive strip of KPI tiles. Lay `StatCard`s inside it at the top of a dashboard.\n * `columns` caps the tiles per row on large screens; the grid collapses to one column on\n * mobile and two on small screens.\n */\nexport const StatCardGrid = ({ className, columns = 4, children, ...rest }: Props) => (\n <div className={gridClassnames({ columns, className })} {...rest}>\n {children}\n </div>\n);\n\nexport type { Props as StatCardGridProps };\n"],"mappings":";;;;;AAOA,MAAM,kBAAkB,IACtB;CAAC;CAAkB;CAAmB;CAAY;CAAc;AAAgB,GAChF;CACE,UAAU,EACR,WAAW;EACT,IAAI;EACJ,MAAM;EACN,MAAM;CACR,EACF;CACA,iBAAiB,EACf,WAAW,OACb;AACF,CACF;;;;;;;AAYA,MAAM,gBAAgB,EAAE,WAAW,UAAU,WAAW,MAAM,GAAG,WAC/D,oBAAC,MAAD;CAAgB;CAAU,WAAW,GAAG,YAAY,SAAS;CAAG,MAAK;CAAQ,GAAI;CAC9E;AACG,CAAA;AAKR,MAAM,gBAAgB,EAAE,WAAW,UAAU,GAAG,WAC9C,oBAAC,OAAD;CACE,WAAW,GACT,4GACA,gDACA,SACF;CACA,GAAI;CAEH;AACE,CAAA;AAKP,MAAM,iBAAiB,EAAE,WAAW,UAAU,GAAG,WAC/C,oBAAC,KAAD;CACE,WAAW,GAAG,6DAA6D,SAAS;CACpF,GAAI;CAEH;AACA,CAAA;AAKL,MAAM,iBAAiB,EAAE,WAAW,UAAU,GAAG,WAC/C,oBAAC,KAAD;CACE,WAAW,GACT,6FACA,SACF;CACA,GAAI;CAEH;AACA,CAAA;AASL,MAAM,iBAAiB,EAAE,WAAW,YAAY,QAAQ,MAAM,UAAU,GAAG,WACzE,qBAAC,QAAD;CAAM,WAAW,gBAAgB;EAAE;EAAW;CAAU,CAAC;CAAG,GAAI;CAAhE,UAAA,CACG,MACA,QACG;;AAKR,MAAM,oBAAoB,EAAE,WAAW,UAAU,GAAG,WAClD,oBAAC,KAAD;CAAG,WAAW,GAAG,8CAA8C,SAAS;CAAG,GAAI;CAC5E;AACA,CAAA;AAGL,MAAa,WAAW;AAQxB,SAAS,OAAO;AAChB,SAAS,QAAQ;AACjB,SAAS,QAAQ;AACjB,SAAS,QAAQ;AACjB,SAAS,WAAW;;;AC5GpB,MAAM,iBAAiB,IAAI,CAAC,WAAW,UAAU,GAAG;CAClD,UAAU,EACR,SAAS;EACP,GAAG;EACH,GAAG;EACH,GAAG;CACL,EACF;CACA,iBAAiB,EACf,SAAS,EACX;AACF,CAAC;;;;;;AASD,MAAa,gBAAgB,EAAE,WAAW,UAAU,GAAG,UAAU,GAAG,WAClE,oBAAC,OAAD;CAAK,WAAW,eAAe;EAAE;EAAS;CAAU,CAAC;CAAG,GAAI;CACzD;AACE,CAAA"}
@@ -1,2 +1,2 @@
1
- import { TextInput } from "../../TextInput-CFTf4Cz1.js";
1
+ import { TextInput } from "../../TextInput-BWYXbfs4.js";
2
2
  export { TextInput };
@@ -1,5 +1,5 @@
1
- import { InputGroup } from "../../InputGroup-Do8K2hvD.js";
2
- import { useControllableState } from "../../useControllableState-M6494mCT.js";
1
+ import { InputGroup } from "../../InputGroup-CrlMRz4X.js";
2
+ import { useControllableState } from "../../useControllableState-CUYXMsfz.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  //#region src/blocks/Textarea/Textarea.tsx
5
5
  /**
@@ -1,9 +1,9 @@
1
- import { createChangeInputEvent } from "../../utils-BW4AE8VP.js";
1
+ import { createChangeInputEvent } from "../../utils-Bd28bWgm.js";
2
2
  import { mergeRefs } from "../utils/mergeRefs.js";
3
- import { Clock, X } from "../../icons-Cek151jC.js";
4
- import { InputGroup } from "../../InputGroup-Do8K2hvD.js";
5
- import { useControllableState } from "../../useControllableState-M6494mCT.js";
6
- import { TimePicker } from "../../TimePicker-BGeqc-Ed.js";
3
+ import { Clock, X } from "../../icons-wcA70iQx.js";
4
+ import { InputGroup } from "../../InputGroup-CrlMRz4X.js";
5
+ import { useControllableState } from "../../useControllableState-CUYXMsfz.js";
6
+ import { TimePicker } from "../../TimePicker-CDGYrRxi.js";
7
7
  import { useRef, useState } from "react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
  //#region src/blocks/TimeInput/TimeInput.tsx
@@ -1 +1 @@
1
- {"version":3,"file":"TimeInput.js","names":[],"sources":["../../../src/blocks/TimeInput/TimeInput.tsx"],"sourcesContent":["import { useRef, useState } from 'react';\nimport type {\n ChangeEventHandler,\n ComponentProps,\n ComponentRef,\n FocusEventHandler,\n MouseEventHandler,\n} from 'react';\n\nimport { InputGroup } from '../../components/InputGroup';\nimport { TimePicker } from '../../components/TimePicker';\nimport { useControllableState } from '../../hooks/useControllableState';\nimport { Clock, X } from '../../icons';\nimport { createChangeInputEvent, mergeRefs } from '../../utils';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'focusVariant' | 'state' | 'sizing'\n>;\n\ntype InputGroupInputProps = Omit<\n ComponentProps<typeof InputGroup.Input>,\n 'value' | 'defaultValue' | 'type'\n>;\n\ntype Props = InputGroupProps &\n InputGroupInputProps & {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string | null) => void;\n onValueBlur?: (value: string | null) => void;\n allowClear?: boolean;\n };\n\nexport const TimeInput = ({\n ref,\n\n // group props\n state,\n variant,\n focusVariant,\n sizing,\n className,\n\n // own props\n value: valueProp,\n defaultValue,\n onValueChange,\n onValueBlur,\n onChange,\n onBlur,\n allowClear = false,\n\n // input props\n disabled,\n readOnly,\n placeholder = 'Select time',\n ...restInputProps\n}: Props) => {\n const inputRef = useRef<ComponentRef<'input'>>(null);\n\n const [isOpen, setIsOpen] = useState(false);\n\n const [value, setValue] = useControllableState<string | null>({\n prop: valueProp,\n defaultProp: defaultValue ?? null,\n onChange: onValueChange,\n });\n\n const canClear = allowClear && !!value && !disabled && !readOnly;\n const showPicker = !disabled && !readOnly;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n setValue(event.target.value || null);\n onChange?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n // The value is already committed on change via `setValue`, so blur only needs to notify.\n onValueBlur?.(event.target.value || null);\n onBlur?.(event);\n };\n\n const handleTimePickerSelect = (time: string) => {\n setValue(time);\n };\n\n const handleClear: MouseEventHandler<HTMLButtonElement> = () => {\n if (!inputRef.current) return;\n inputRef.current.value = '';\n setValue(null);\n onChange?.(createChangeInputEvent(inputRef.current));\n };\n\n return (\n <InputGroup\n state={state}\n variant={variant}\n sizing={sizing}\n focusVariant={focusVariant}\n className={className}\n >\n <InputGroup.Input\n {...restInputProps}\n ref={mergeRefs(ref ?? null, inputRef)}\n type=\"time\"\n // hide native time picker indicator to avoid confusion with custom picker;\n // zero the UA `::-webkit-datetime-edit-fields-wrapper` padding (1px top/bottom) so\n // the field matches the InputGroup input height instead of rendering 2px taller\n className=\"tw:[&::-webkit-calendar-picker-indicator]:hidden tw:[&::-webkit-datetime-edit-fields-wrapper]:py-0\"\n value={value ?? ''}\n placeholder={placeholder}\n onChange={handleChange}\n onBlur={handleBlur}\n disabled={disabled}\n readOnly={readOnly}\n />\n\n {(canClear || showPicker) && (\n <InputGroup.Addon align=\"inline-end\">\n {canClear && (\n <InputGroup.Button\n aria-label=\"Clear time\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleClear}\n >\n <X className=\"tw:size-4\" />\n </InputGroup.Button>\n )}\n {showPicker && (\n <TimePicker\n open={isOpen}\n onOpenChange={setIsOpen}\n onSelect={handleTimePickerSelect}\n selected={value}\n >\n <InputGroup.Button aria-label=\"Select time\">\n <Clock className=\"tw:size-4\" />\n </InputGroup.Button>\n </TimePicker>\n )}\n </InputGroup.Addon>\n )}\n </InputGroup>\n );\n};\n"],"mappings":";;;;;;;;;AAkCA,MAAa,aAAa,EACxB,KAGA,OACA,SACA,cACA,QACA,WAGA,OAAO,WACP,cACA,eACA,aACA,UACA,QACA,aAAa,OAGb,UACA,UACA,cAAc,eACd,GAAG,qBACQ;CACX,MAAM,WAAW,OAA8B,IAAI;CAEnD,MAAM,CAAC,QAAQ,aAAa,SAAS,KAAK;CAE1C,MAAM,CAAC,OAAO,YAAY,qBAAoC;EAC5D,MAAM;EACN,aAAa,gBAAgB;EAC7B,UAAU;CACZ,CAAC;CAED,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC;CACxD,MAAM,aAAa,CAAC,YAAY,CAAC;CAEjC,MAAM,gBAAsD,UAAU;EACpE,SAAS,MAAM,OAAO,SAAS,IAAI;EACnC,WAAW,KAAK;CAClB;CAEA,MAAM,cAAmD,UAAU;EAEjE,cAAc,MAAM,OAAO,SAAS,IAAI;EACxC,SAAS,KAAK;CAChB;CAEA,MAAM,0BAA0B,SAAiB;EAC/C,SAAS,IAAI;CACf;CAEA,MAAM,oBAA0D;EAC9D,IAAI,CAAC,SAAS,SAAS;EACvB,SAAS,QAAQ,QAAQ;EACzB,SAAS,IAAI;EACb,WAAW,uBAAuB,SAAS,OAAO,CAAC;CACrD;CAEA,OACE,qBAAC,YAAD;EACS;EACE;EACD;EACM;EACH;EALb,UAAA,CAOE,oBAAC,WAAW,OAAZ;GACE,GAAI;GACJ,KAAK,UAAU,OAAO,MAAM,QAAQ;GACpC,MAAK;GAIL,WAAU;GACV,OAAO,SAAS;GACH;GACb,UAAU;GACV,QAAQ;GACE;GACA;EACX,CAAA,IAEC,YAAY,eACZ,qBAAC,WAAW,OAAZ;GAAkB,OAAM;GAAxB,UAAA,CACG,YACC,oBAAC,WAAW,QAAZ;IACE,cAAW;IACX,cAAc,UAAU,MAAM,eAAe;IAC7C,SAAS;IAET,UAAA,oBAAC,GAAD,EAAG,WAAU,YAAa,CAAA;GACT,CAAA,GAEpB,cACC,oBAAC,YAAD;IACE,MAAM;IACN,cAAc;IACd,UAAU;IACV,UAAU;IAEV,UAAA,oBAAC,WAAW,QAAZ;KAAmB,cAAW;KAC5B,UAAA,oBAAC,OAAD,EAAO,WAAU,YAAa,CAAA;IACb,CAAA;GACT,CAAA,CAEE;EAEV,CAAA,CAAA;;AAEhB"}
1
+ {"version":3,"file":"TimeInput.js","names":[],"sources":["../../../src/blocks/TimeInput/TimeInput.tsx"],"sourcesContent":["import { useRef, useState } from 'react';\nimport type {\n ChangeEventHandler,\n ComponentProps,\n ComponentRef,\n FocusEventHandler,\n MouseEventHandler,\n} from 'react';\n\nimport { InputGroup } from '../../components/InputGroup';\nimport { TimePicker } from '../../components/TimePicker';\nimport { useControllableState } from '../../hooks/useControllableState';\nimport { Clock, X } from '../../icons';\nimport { createChangeInputEvent, mergeRefs } from '../../utils';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'focusVariant' | 'state' | 'sizing'\n>;\n\ntype InputGroupInputProps = Omit<\n ComponentProps<typeof InputGroup.Input>,\n 'value' | 'defaultValue' | 'type'\n>;\n\ntype Props = InputGroupProps &\n InputGroupInputProps & {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string | null) => void;\n onValueBlur?: (value: string | null) => void;\n allowClear?: boolean;\n };\n\nexport const TimeInput = ({\n ref,\n\n // group props\n state,\n variant,\n focusVariant,\n sizing,\n className,\n\n // own props\n value: valueProp,\n defaultValue,\n onValueChange,\n onValueBlur,\n onChange,\n onBlur,\n allowClear = false,\n\n // input props\n disabled,\n readOnly,\n placeholder = 'Select time',\n ...restInputProps\n}: Props) => {\n const inputRef = useRef<ComponentRef<'input'>>(null);\n\n const [isOpen, setIsOpen] = useState(false);\n\n const [value, setValue] = useControllableState<string | null>({\n prop: valueProp,\n defaultProp: defaultValue ?? null,\n onChange: onValueChange,\n });\n\n const canClear = allowClear && !!value && !disabled && !readOnly;\n const showPicker = !disabled && !readOnly;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n setValue(event.target.value || null);\n onChange?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n // The value is already committed on change via `setValue`, so blur only needs to notify.\n onValueBlur?.(event.target.value || null);\n onBlur?.(event);\n };\n\n const handleTimePickerSelect = (time: string) => {\n setValue(time);\n };\n\n const handleClear: MouseEventHandler<HTMLButtonElement> = () => {\n if (!inputRef.current) return;\n inputRef.current.value = '';\n setValue(null);\n onChange?.(createChangeInputEvent(inputRef.current));\n };\n\n return (\n <InputGroup\n state={state}\n variant={variant}\n sizing={sizing}\n focusVariant={focusVariant}\n className={className}\n >\n <InputGroup.Input\n {...restInputProps}\n ref={mergeRefs(ref ?? null, inputRef)}\n type=\"time\"\n // Hide the native picker indicator (custom picker); zero the UA fields-wrapper padding\n // so the input isn't 2px taller than the InputGroup input.\n className=\"tw:[&::-webkit-calendar-picker-indicator]:hidden tw:[&::-webkit-datetime-edit-fields-wrapper]:py-0\"\n value={value ?? ''}\n placeholder={placeholder}\n onChange={handleChange}\n onBlur={handleBlur}\n disabled={disabled}\n readOnly={readOnly}\n />\n\n {(canClear || showPicker) && (\n <InputGroup.Addon align=\"inline-end\">\n {canClear && (\n <InputGroup.Button\n aria-label=\"Clear time\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleClear}\n >\n <X className=\"tw:size-4\" />\n </InputGroup.Button>\n )}\n {showPicker && (\n <TimePicker\n open={isOpen}\n onOpenChange={setIsOpen}\n onSelect={handleTimePickerSelect}\n selected={value}\n >\n <InputGroup.Button aria-label=\"Select time\">\n <Clock className=\"tw:size-4\" />\n </InputGroup.Button>\n </TimePicker>\n )}\n </InputGroup.Addon>\n )}\n </InputGroup>\n );\n};\n"],"mappings":";;;;;;;;;AAkCA,MAAa,aAAa,EACxB,KAGA,OACA,SACA,cACA,QACA,WAGA,OAAO,WACP,cACA,eACA,aACA,UACA,QACA,aAAa,OAGb,UACA,UACA,cAAc,eACd,GAAG,qBACQ;CACX,MAAM,WAAW,OAA8B,IAAI;CAEnD,MAAM,CAAC,QAAQ,aAAa,SAAS,KAAK;CAE1C,MAAM,CAAC,OAAO,YAAY,qBAAoC;EAC5D,MAAM;EACN,aAAa,gBAAgB;EAC7B,UAAU;CACZ,CAAC;CAED,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC;CACxD,MAAM,aAAa,CAAC,YAAY,CAAC;CAEjC,MAAM,gBAAsD,UAAU;EACpE,SAAS,MAAM,OAAO,SAAS,IAAI;EACnC,WAAW,KAAK;CAClB;CAEA,MAAM,cAAmD,UAAU;EAEjE,cAAc,MAAM,OAAO,SAAS,IAAI;EACxC,SAAS,KAAK;CAChB;CAEA,MAAM,0BAA0B,SAAiB;EAC/C,SAAS,IAAI;CACf;CAEA,MAAM,oBAA0D;EAC9D,IAAI,CAAC,SAAS,SAAS;EACvB,SAAS,QAAQ,QAAQ;EACzB,SAAS,IAAI;EACb,WAAW,uBAAuB,SAAS,OAAO,CAAC;CACrD;CAEA,OACE,qBAAC,YAAD;EACS;EACE;EACD;EACM;EACH;EALb,UAAA,CAOE,oBAAC,WAAW,OAAZ;GACE,GAAI;GACJ,KAAK,UAAU,OAAO,MAAM,QAAQ;GACpC,MAAK;GAGL,WAAU;GACV,OAAO,SAAS;GACH;GACb,UAAU;GACV,QAAQ;GACE;GACA;EACX,CAAA,IAEC,YAAY,eACZ,qBAAC,WAAW,OAAZ;GAAkB,OAAM;GAAxB,UAAA,CACG,YACC,oBAAC,WAAW,QAAZ;IACE,cAAW;IACX,cAAc,UAAU,MAAM,eAAe;IAC7C,SAAS;IAET,UAAA,oBAAC,GAAD,EAAG,WAAU,YAAa,CAAA;GACT,CAAA,GAEpB,cACC,oBAAC,YAAD;IACE,MAAM;IACN,cAAc;IACd,UAAU;IACV,UAAU;IAEV,UAAA,oBAAC,WAAW,QAAZ;KAAmB,cAAW;KAC5B,UAAA,oBAAC,OAAD,EAAO,WAAU,YAAa,CAAA;IACb,CAAA;GACT,CAAA,CAEE;EAEV,CAAA,CAAA;;AAEhB"}
@@ -1,2 +1,2 @@
1
- import { Alert } from "../../Alert-BsIM_oFK.js";
1
+ import { Alert } from "../../Alert-UI-CIs-1.js";
2
2
  export { Alert };
@@ -1,2 +1,2 @@
1
- import { AlertModal } from "../../AlertModal-BGJdaRRj.js";
1
+ import { AlertModal } from "../../AlertModal-mbSnuuka.js";
2
2
  export { AlertModal };
@@ -1,5 +1,5 @@
1
1
  import { cn } from "../../classNames-BzrkDnOD.js";
2
- import { useSHA256 } from "../../utils-BW4AE8VP.js";
2
+ import { useSHA256 } from "../../utils-Bd28bWgm.js";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  import BoringAvatar from "boring-avatars";
5
5
  //#region src/components/Avatar.tsx
@@ -1,2 +1,2 @@
1
- import { Badge } from "../../Badge-o5jURtpB.js";
1
+ import { Badge } from "../../Badge-DIjhwPvh.js";
2
2
  export { Badge };
@@ -1,2 +1,2 @@
1
- import { BrandLogo } from "../../BrandLogo-CoKBk4MI.js";
1
+ import { BrandLogo } from "../../BrandLogo-CKpVSZb6.js";
2
2
  export { BrandLogo };
@@ -1,2 +1,2 @@
1
- import { Breadcrumb } from "../../Breadcrumb-xqEUxfwn.js";
1
+ import { Breadcrumb } from "../../Breadcrumb-BUoAZyhO.js";
2
2
  export { Breadcrumb };
@@ -1,2 +1,2 @@
1
- import { Button, ButtonInline, argoVariants } from "../../Button-DsRrU5F1.js";
1
+ import { Button, ButtonInline, argoVariants } from "../../Button-B21oVcPU.js";
2
2
  export { Button, ButtonInline, argoVariants };
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonGroup.js","names":[],"sources":["../../../src/components/ButtonGroup/ButtonGroup.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst buttonGroupVariant = cva(\n ['tailwindcss-preflight', 'tw:inline-flex', 'tw:items-center', 'tw:group/button-group'],\n {\n defaultVariants: {\n variant: 'inline',\n space: 'small',\n },\n variants: {\n variant: {\n inline: [],\n block: [\n 'tw:w-full',\n 'tw:flex-col',\n 'tw:sm:flex-row',\n 'tw:[&_a]:flex-1',\n 'tw:[&>button:not([data-icon-only=true])]:flex-1',\n ],\n },\n space: {\n 'extra-small': 'tw:gap-1',\n 'little-small': 'tw:gap-2',\n small: 'tw:gap-3',\n medium: 'tw:gap-4',\n large: 'tw:gap-6',\n compact: [\n 'tw:border-collapse',\n 'tw:!gap-0',\n\n // ensure that focus visible outline is at the top\n 'tw:[&>*:focus-visible]:!z-10',\n\n 'tw:[&>*:not(:first-child)]:rounded-l-none',\n 'tw:[&>*:not(:last-child)]:rounded-r-none',\n 'tw:[&>*:not(:last-child)]:border-r-0',\n 'tw:[&>*:not(:first-child)]:border-l-0',\n\n // separator\n 'tw:[&>*:not(:first-child)]:before:content',\n 'tw:[&>*:not(:first-child)]:before:absolute',\n 'tw:[&>*:not(:first-child)]:before:left-0',\n 'tw:[&>*:not(:first-child)]:before:h-full',\n 'tw:[&>*:not(:first-child)]:before:w-px',\n 'tw:[&>*:not(:first-child)]:before:bg-black/10',\n ],\n },\n },\n },\n);\n\ntype Props = {\n children: ReactNode;\n className?: string;\n} & VariantProps<typeof buttonGroupVariant> &\n ComponentProps<'div'>;\n\nexport const ButtonGroup = ({\n ref,\n children,\n space = 'small',\n className,\n variant,\n ...rest\n}: Props) => {\n return (\n <div\n ref={ref}\n {...rest}\n role=\"group\"\n data-variant={variant}\n // cn (tailwind-merge), not cva's raw className append: a caller passing e.g.\n // `tw:hidden` must override the base `tw:inline-flex`. cva only concatenates, so both\n // land on the element and the winner is decided by CSS source order — which flipped in\n // v4 (`inline-flex` now sorts after `hidden`), leaving hover-reveal groups always visible.\n className={cn(buttonGroupVariant({ variant, space }), className)}\n >\n {children}\n </div>\n );\n};\n"],"mappings":";;;;AAMA,MAAM,qBAAqB,IACzB;CAAC;CAAyB;CAAkB;CAAmB;AAAuB,GACtF;CACE,iBAAiB;EACf,SAAS;EACT,OAAO;CACT;CACA,UAAU;EACR,SAAS;GACP,QAAQ,CAAC;GACT,OAAO;IACL;IACA;IACA;IACA;IACA;GACF;EACF;EACA,OAAO;GACL,eAAe;GACf,gBAAgB;GAChB,OAAO;GACP,QAAQ;GACR,OAAO;GACP,SAAS;IACP;IACA;IAGA;IAEA;IACA;IACA;IACA;IAGA;IACA;IACA;IACA;IACA;IACA;GACF;EACF;CACF;AACF,CACF;AAQA,MAAa,eAAe,EAC1B,KACA,UACA,QAAQ,SACR,WACA,SACA,GAAG,WACQ;CACX,OACE,oBAAC,OAAD;EACO;EACL,GAAI;EACJ,MAAK;EACL,gBAAc;EAKd,WAAW,GAAG,mBAAmB;GAAE;GAAS;EAAM,CAAC,GAAG,SAAS;EAE9D;CACE,CAAA;AAET"}
1
+ {"version":3,"file":"ButtonGroup.js","names":[],"sources":["../../../src/components/ButtonGroup/ButtonGroup.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst buttonGroupVariant = cva(\n ['tailwindcss-preflight', 'tw:inline-flex', 'tw:items-center', 'tw:group/button-group'],\n {\n defaultVariants: {\n variant: 'inline',\n space: 'small',\n },\n variants: {\n variant: {\n inline: [],\n block: [\n 'tw:w-full',\n 'tw:flex-col',\n 'tw:sm:flex-row',\n 'tw:[&_a]:flex-1',\n 'tw:[&>button:not([data-icon-only=true])]:flex-1',\n ],\n },\n space: {\n 'extra-small': 'tw:gap-1',\n 'little-small': 'tw:gap-2',\n small: 'tw:gap-3',\n medium: 'tw:gap-4',\n large: 'tw:gap-6',\n compact: [\n 'tw:border-collapse',\n 'tw:!gap-0',\n\n // ensure that focus visible outline is at the top\n 'tw:[&>*:focus-visible]:!z-10',\n\n 'tw:[&>*:not(:first-child)]:rounded-l-none',\n 'tw:[&>*:not(:last-child)]:rounded-r-none',\n 'tw:[&>*:not(:last-child)]:border-r-0',\n 'tw:[&>*:not(:first-child)]:border-l-0',\n\n // separator\n 'tw:[&>*:not(:first-child)]:before:content',\n 'tw:[&>*:not(:first-child)]:before:absolute',\n 'tw:[&>*:not(:first-child)]:before:left-0',\n 'tw:[&>*:not(:first-child)]:before:h-full',\n 'tw:[&>*:not(:first-child)]:before:w-px',\n 'tw:[&>*:not(:first-child)]:before:bg-black/10',\n ],\n },\n },\n },\n);\n\ntype Props = {\n children: ReactNode;\n className?: string;\n} & VariantProps<typeof buttonGroupVariant> &\n ComponentProps<'div'>;\n\nexport const ButtonGroup = ({\n ref,\n children,\n space = 'small',\n className,\n variant,\n ...rest\n}: Props) => {\n return (\n <div\n ref={ref}\n {...rest}\n role=\"group\"\n data-variant={variant}\n // `cn` (tailwind-merge), not cva's className: a caller's `tw:hidden` must beat `tw:inline-flex`.\n className={cn(buttonGroupVariant({ variant, space }), className)}\n >\n {children}\n </div>\n );\n};\n"],"mappings":";;;;AAMA,MAAM,qBAAqB,IACzB;CAAC;CAAyB;CAAkB;CAAmB;AAAuB,GACtF;CACE,iBAAiB;EACf,SAAS;EACT,OAAO;CACT;CACA,UAAU;EACR,SAAS;GACP,QAAQ,CAAC;GACT,OAAO;IACL;IACA;IACA;IACA;IACA;GACF;EACF;EACA,OAAO;GACL,eAAe;GACf,gBAAgB;GAChB,OAAO;GACP,QAAQ;GACR,OAAO;GACP,SAAS;IACP;IACA;IAGA;IAEA;IACA;IACA;IACA;IAGA;IACA;IACA;IACA;IACA;IACA;GACF;EACF;CACF;AACF,CACF;AAQA,MAAa,eAAe,EAC1B,KACA,UACA,QAAQ,SACR,WACA,SACA,GAAG,WACQ;CACX,OACE,oBAAC,OAAD;EACO;EACL,GAAI;EACJ,MAAK;EACL,gBAAc;EAEd,WAAW,GAAG,mBAAmB;GAAE;GAAS;EAAM,CAAC,GAAG,SAAS;EAE9D;CACE,CAAA;AAET"}
@@ -1,2 +1,2 @@
1
- import { Calendar } from "../../Calendar-cG5NIJ4O.js";
1
+ import { Calendar } from "../../Calendar-DFtmZzbF.js";
2
2
  export { Calendar };
@@ -1,2 +1,2 @@
1
- import { Card } from "../../Card-Dyo7055Q.js";
1
+ import { Card } from "../../Card-BQmBWHXl.js";
2
2
  export { Card };
@@ -1,2 +1,2 @@
1
- import { Checkbox } from "../../Checkbox-Dq5fPNrO.js";
1
+ import { Checkbox } from "../../Checkbox-8yIIgY7g.js";
2
2
  export { Checkbox };
@@ -1,2 +1,2 @@
1
- import { Clipboard } from "../../Clipboard-BZitKiSA.js";
1
+ import { Clipboard } from "../../Clipboard-_xf6hMDD.js";
2
2
  export { Clipboard };
@@ -1,6 +1,6 @@
1
1
  import { cn } from "../../classNames-BzrkDnOD.js";
2
- import { keyCodes } from "../../utils-BW4AE8VP.js";
3
- import { ChevronDown } from "../../icons-Cek151jC.js";
2
+ import { keyCodes } from "../../utils-Bd28bWgm.js";
3
+ import { ChevronDown } from "../../icons-wcA70iQx.js";
4
4
  import { Collapsible } from "../../Collapsible-BQXWEOBC.js";
5
5
  import { useState } from "react";
6
6
  import { cva } from "class-variance-authority";
@@ -66,7 +66,7 @@ const CollapsiblePanel = ({ header, className, bodyClassName, headerClassName, d
66
66
  onKeyUp: handleKeyUp
67
67
  },
68
68
  children: [/* @__PURE__ */ jsx("div", {
69
- className: "tw:flex tw:flex-1 tw:items-center tw:gap-2 tw:py-px tw:text-sm tw:font-medium tw:text-foreground",
69
+ className: "tw:flex tw:min-w-0 tw:flex-1 tw:items-center tw:gap-2 tw:py-px tw:text-sm tw:font-medium tw:text-foreground",
70
70
  children: header
71
71
  }), !isDisabled && /* @__PURE__ */ jsx("div", {
72
72
  className: "tw:ml-auto tw:shrink-0",
@@ -1 +1 @@
1
- {"version":3,"file":"CollapsiblePanel.js","names":[],"sources":["../../../src/components/CollapsiblePanel.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { KeyboardEvent, MouseEvent, ReactNode } from 'react';\nimport { cva } from 'class-variance-authority';\n\nimport { keyCodes } from '../constants/keyCodes';\nimport { ChevronDown } from '../icons';\nimport { cn } from '../utils';\n\nimport { Collapsible } from './Collapsible';\n\nconst headerVariants = cva(\n 'tw:flex tw:flex-1 tw:items-center tw:gap-2 tw:rounded tw:px-4 tw:py-2.5 tw:text-sm tw:text-muted-foreground',\n {\n variants: {\n variant: {\n default: 'tw:bg-muted',\n white: 'tw:bg-card',\n },\n isDisabled: {\n true: 'tw:cursor-not-allowed tw:opacity-50',\n false: '',\n },\n hasEnforcedState: {\n true: '',\n false: '',\n },\n },\n compoundVariants: [\n {\n isDisabled: false,\n hasEnforcedState: false,\n class: 'tw:cursor-pointer tw:hover:text-primary',\n },\n ],\n defaultVariants: {\n variant: 'default',\n isDisabled: false,\n hasEnforcedState: false,\n },\n },\n);\n\ntype Props = {\n header: ReactNode;\n isDisabled?: boolean;\n defaultExpanded?: boolean;\n className?: string;\n bodyClassName?: string;\n headerClassName?: string;\n isOpen?: boolean;\n onToggle?: (event?: MouseEvent<HTMLDivElement> | KeyboardEvent<HTMLDivElement>) => void;\n variant?: 'default' | 'white';\n children: ReactNode;\n};\n\nexport const CollapsiblePanel = ({\n header,\n className,\n bodyClassName,\n headerClassName,\n defaultExpanded = false,\n isDisabled = false,\n children,\n isOpen,\n onToggle,\n variant = 'default',\n}: Props) => {\n const [isUncontrolledOpen, setIsUncontrolledOpen] = useState(defaultExpanded);\n const open = isOpen ?? isUncontrolledOpen;\n const hasEnforcedState = isOpen !== undefined && onToggle === undefined;\n\n const handleCollapse = (event: MouseEvent<HTMLDivElement> | KeyboardEvent<HTMLDivElement>) => {\n if (event) {\n event.stopPropagation();\n }\n if (!isDisabled) {\n setIsUncontrolledOpen(!isUncontrolledOpen);\n }\n };\n\n const handleClick = (e: MouseEvent<HTMLDivElement> | KeyboardEvent<HTMLDivElement>) => {\n if (onToggle) {\n onToggle(e);\n return;\n }\n handleCollapse(e);\n };\n\n const handleKeyUp = (e: KeyboardEvent<HTMLDivElement>) => {\n if ([keyCodes.ENTER, keyCodes.SPACE].includes(e.key)) {\n handleClick(e);\n }\n };\n\n return (\n // `header` is caller-supplied and routinely contains its own buttons, so the toggle stays on\n // this wrapper — `Collapsible.Trigger` renders a `<button>` and would nest them.\n <Collapsible\n open={open}\n className={cn(\n 'tw:group tw:flex tw:flex-col tw:rounded tw:!border tw:!border-solid tw:!border-border tw:bg-card',\n className,\n )}\n >\n <div\n className={cn(headerVariants({ variant, isDisabled, hasEnforcedState }), headerClassName)}\n {...(!hasEnforcedState &&\n !isDisabled && {\n role: 'button',\n tabIndex: 0,\n onClick: handleClick,\n onKeyUp: handleKeyUp,\n })}\n >\n <div className=\"tw:flex tw:flex-1 tw:items-center tw:gap-2 tw:py-px tw:text-sm tw:font-medium tw:text-foreground\">\n {header}\n </div>\n {!isDisabled && (\n <div className=\"tw:ml-auto tw:shrink-0\">\n {/* `group-*` matches *any* ancestor `.group`, so a nested panel's chevron would\n follow the outer panel's state. */}\n <ChevronDown\n data-state={open ? 'open' : 'closed'}\n className=\"tw:size-5 tw:data-[state=open]:rotate-180\"\n />\n </div>\n )}\n </div>\n <Collapsible.Content>\n <div className={cn('tw:px-4 tw:py-3', bodyClassName)}>{children}</div>\n </Collapsible.Content>\n </Collapsible>\n );\n};\n"],"mappings":";;;;;;;;AAUA,MAAM,iBAAiB,IACrB,+GACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,OAAO;EACT;EACA,YAAY;GACV,MAAM;GACN,OAAO;EACT;EACA,kBAAkB;GAChB,MAAM;GACN,OAAO;EACT;CACF;CACA,kBAAkB,CAChB;EACE,YAAY;EACZ,kBAAkB;EAClB,OAAO;CACT,CACF;CACA,iBAAiB;EACf,SAAS;EACT,YAAY;EACZ,kBAAkB;CACpB;AACF,CACF;AAeA,MAAa,oBAAoB,EAC/B,QACA,WACA,eACA,iBACA,kBAAkB,OAClB,aAAa,OACb,UACA,QACA,UACA,UAAU,gBACC;CACX,MAAM,CAAC,oBAAoB,yBAAyB,SAAS,eAAe;CAC5E,MAAM,OAAO,UAAU;CACvB,MAAM,mBAAmB,WAAW,KAAA,KAAa,aAAa,KAAA;CAE9D,MAAM,kBAAkB,UAAsE;EAC5F,IAAI,OACF,MAAM,gBAAgB;EAExB,IAAI,CAAC,YACH,sBAAsB,CAAC,kBAAkB;CAE7C;CAEA,MAAM,eAAe,MAAkE;EACrF,IAAI,UAAU;GACZ,SAAS,CAAC;GACV;EACF;EACA,eAAe,CAAC;CAClB;CAEA,MAAM,eAAe,MAAqC;EACxD,IAAI,CAAC,SAAS,OAAO,SAAS,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,GACjD,YAAY,CAAC;CAEjB;CAEA,OAGE,qBAAC,aAAD;EACQ;EACN,WAAW,GACT,oGACA,SACF;EALF,UAAA,CAOE,qBAAC,OAAD;GACE,WAAW,GAAG,eAAe;IAAE;IAAS;IAAY;GAAiB,CAAC,GAAG,eAAe;GACxF,GAAK,CAAC,oBACJ,CAAC,cAAc;IACb,MAAM;IACN,UAAU;IACV,SAAS;IACT,SAAS;GACX;GARJ,UAAA,CAUE,oBAAC,OAAD;IAAK,WAAU;IACZ,UAAA;GACE,CAAA,GACJ,CAAC,cACA,oBAAC,OAAD;IAAK,WAAU;IAGb,UAAA,oBAAC,aAAD;KACE,cAAY,OAAO,SAAS;KAC5B,WAAU;IACX,CAAA;GACE,CAAA,CAEJ;EACL,CAAA,GAAA,oBAAC,YAAY,SAAb,EAAA,UACE,oBAAC,OAAD;GAAK,WAAW,GAAG,mBAAmB,aAAa;GAAI;EAAc,CAAA,EAClD,CAAA,CACV;;AAEjB"}
1
+ {"version":3,"file":"CollapsiblePanel.js","names":[],"sources":["../../../src/components/CollapsiblePanel.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { KeyboardEvent, MouseEvent, ReactNode } from 'react';\nimport { cva } from 'class-variance-authority';\n\nimport { keyCodes } from '../constants/keyCodes';\nimport { ChevronDown } from '../icons';\nimport { cn } from '../utils';\n\nimport { Collapsible } from './Collapsible';\n\nconst headerVariants = cva(\n 'tw:flex tw:flex-1 tw:items-center tw:gap-2 tw:rounded tw:px-4 tw:py-2.5 tw:text-sm tw:text-muted-foreground',\n {\n variants: {\n variant: {\n default: 'tw:bg-muted',\n white: 'tw:bg-card',\n },\n isDisabled: {\n true: 'tw:cursor-not-allowed tw:opacity-50',\n false: '',\n },\n hasEnforcedState: {\n true: '',\n false: '',\n },\n },\n compoundVariants: [\n {\n isDisabled: false,\n hasEnforcedState: false,\n class: 'tw:cursor-pointer tw:hover:text-primary',\n },\n ],\n defaultVariants: {\n variant: 'default',\n isDisabled: false,\n hasEnforcedState: false,\n },\n },\n);\n\ntype Props = {\n header: ReactNode;\n isDisabled?: boolean;\n defaultExpanded?: boolean;\n className?: string;\n bodyClassName?: string;\n headerClassName?: string;\n isOpen?: boolean;\n onToggle?: (event?: MouseEvent<HTMLDivElement> | KeyboardEvent<HTMLDivElement>) => void;\n variant?: 'default' | 'white';\n children: ReactNode;\n};\n\nexport const CollapsiblePanel = ({\n header,\n className,\n bodyClassName,\n headerClassName,\n defaultExpanded = false,\n isDisabled = false,\n children,\n isOpen,\n onToggle,\n variant = 'default',\n}: Props) => {\n const [isUncontrolledOpen, setIsUncontrolledOpen] = useState(defaultExpanded);\n const open = isOpen ?? isUncontrolledOpen;\n const hasEnforcedState = isOpen !== undefined && onToggle === undefined;\n\n const handleCollapse = (event: MouseEvent<HTMLDivElement> | KeyboardEvent<HTMLDivElement>) => {\n if (event) {\n event.stopPropagation();\n }\n if (!isDisabled) {\n setIsUncontrolledOpen(!isUncontrolledOpen);\n }\n };\n\n const handleClick = (e: MouseEvent<HTMLDivElement> | KeyboardEvent<HTMLDivElement>) => {\n if (onToggle) {\n onToggle(e);\n return;\n }\n handleCollapse(e);\n };\n\n const handleKeyUp = (e: KeyboardEvent<HTMLDivElement>) => {\n if ([keyCodes.ENTER, keyCodes.SPACE].includes(e.key)) {\n handleClick(e);\n }\n };\n\n return (\n // `header` is caller-supplied and routinely contains its own buttons, so the toggle stays on\n // this wrapper — `Collapsible.Trigger` renders a `<button>` and would nest them.\n <Collapsible\n open={open}\n className={cn(\n 'tw:group tw:flex tw:flex-col tw:rounded tw:!border tw:!border-solid tw:!border-border tw:bg-card',\n className,\n )}\n >\n <div\n className={cn(headerVariants({ variant, isDisabled, hasEnforcedState }), headerClassName)}\n {...(!hasEnforcedState &&\n !isDisabled && {\n role: 'button',\n tabIndex: 0,\n onClick: handleClick,\n onKeyUp: handleKeyUp,\n })}\n >\n <div className=\"tw:flex tw:min-w-0 tw:flex-1 tw:items-center tw:gap-2 tw:py-px tw:text-sm tw:font-medium tw:text-foreground\">\n {header}\n </div>\n {!isDisabled && (\n <div className=\"tw:ml-auto tw:shrink-0\">\n {/* `group-*` matches *any* ancestor `.group`, so a nested panel's chevron would\n follow the outer panel's state. */}\n <ChevronDown\n data-state={open ? 'open' : 'closed'}\n className=\"tw:size-5 tw:data-[state=open]:rotate-180\"\n />\n </div>\n )}\n </div>\n <Collapsible.Content>\n <div className={cn('tw:px-4 tw:py-3', bodyClassName)}>{children}</div>\n </Collapsible.Content>\n </Collapsible>\n );\n};\n"],"mappings":";;;;;;;;AAUA,MAAM,iBAAiB,IACrB,+GACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,OAAO;EACT;EACA,YAAY;GACV,MAAM;GACN,OAAO;EACT;EACA,kBAAkB;GAChB,MAAM;GACN,OAAO;EACT;CACF;CACA,kBAAkB,CAChB;EACE,YAAY;EACZ,kBAAkB;EAClB,OAAO;CACT,CACF;CACA,iBAAiB;EACf,SAAS;EACT,YAAY;EACZ,kBAAkB;CACpB;AACF,CACF;AAeA,MAAa,oBAAoB,EAC/B,QACA,WACA,eACA,iBACA,kBAAkB,OAClB,aAAa,OACb,UACA,QACA,UACA,UAAU,gBACC;CACX,MAAM,CAAC,oBAAoB,yBAAyB,SAAS,eAAe;CAC5E,MAAM,OAAO,UAAU;CACvB,MAAM,mBAAmB,WAAW,KAAA,KAAa,aAAa,KAAA;CAE9D,MAAM,kBAAkB,UAAsE;EAC5F,IAAI,OACF,MAAM,gBAAgB;EAExB,IAAI,CAAC,YACH,sBAAsB,CAAC,kBAAkB;CAE7C;CAEA,MAAM,eAAe,MAAkE;EACrF,IAAI,UAAU;GACZ,SAAS,CAAC;GACV;EACF;EACA,eAAe,CAAC;CAClB;CAEA,MAAM,eAAe,MAAqC;EACxD,IAAI,CAAC,SAAS,OAAO,SAAS,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,GACjD,YAAY,CAAC;CAEjB;CAEA,OAGE,qBAAC,aAAD;EACQ;EACN,WAAW,GACT,oGACA,SACF;EALF,UAAA,CAOE,qBAAC,OAAD;GACE,WAAW,GAAG,eAAe;IAAE;IAAS;IAAY;GAAiB,CAAC,GAAG,eAAe;GACxF,GAAK,CAAC,oBACJ,CAAC,cAAc;IACb,MAAM;IACN,UAAU;IACV,SAAS;IACT,SAAS;GACX;GARJ,UAAA,CAUE,oBAAC,OAAD;IAAK,WAAU;IACZ,UAAA;GACE,CAAA,GACJ,CAAC,cACA,oBAAC,OAAD;IAAK,WAAU;IAGb,UAAA,oBAAC,aAAD;KACE,cAAY,OAAO,SAAS;KAC5B,WAAU;IACX,CAAA;GACE,CAAA,CAEJ;EACL,CAAA,GAAA,oBAAC,YAAY,SAAb,EAAA,UACE,oBAAC,OAAD;GAAK,WAAW,GAAG,mBAAmB,aAAa;GAAI;EAAc,CAAA,EAClD,CAAA,CACV;;AAEjB"}
@@ -1,2 +1,2 @@
1
- import { Combobox, filterByWords, matchByWords, namedLabel, withBlankValues } from "../../Combobox-D8PrEqTG.js";
2
- export { Combobox, filterByWords, matchByWords, namedLabel, withBlankValues };
1
+ import { BLANK_VALUES, Combobox, filterByWords, matchByWords, namedLabel, withBlankValues } from "../../Combobox-C_MTpQ1l.js";
2
+ export { BLANK_VALUES, Combobox, filterByWords, matchByWords, namedLabel, withBlankValues };
@@ -1,2 +1,2 @@
1
- import { DatePicker } from "../../DatePicker-nA8YdE84.js";
1
+ import { DatePicker } from "../../DatePicker-CtSa9b3V.js";
2
2
  export { DatePicker };
@@ -1,2 +1,2 @@
1
- import { DateRangePicker } from "../../DateRangePicker-DjSUFjh4.js";
1
+ import { DateRangePicker } from "../../DateRangePicker-BAnuz6vO.js";
2
2
  export { DateRangePicker };
@@ -1,2 +1,2 @@
1
- import { DropdownMenu } from "../../DropdownMenu-CgVwhDvl.js";
1
+ import { DropdownMenu } from "../../DropdownMenu-gRM-A8qU.js";
2
2
  export { DropdownMenu };
@@ -1,2 +1,2 @@
1
- import { FileUpload, useFileDropTarget, useFileUploadRejections } from "../../FileUpload-DYQCTGjU.js";
1
+ import { FileUpload, useFileDropTarget, useFileUploadRejections } from "../../FileUpload-Ch2hrIWq.js";
2
2
  export { FileUpload, useFileDropTarget, useFileUploadRejections };
@@ -1,2 +1,2 @@
1
- import { FullScreenModal, FullScreenModalBody, FullScreenModalHeader } from "../../FullScreenModal-CN9nAs72.js";
1
+ import { FullScreenModal, FullScreenModalBody, FullScreenModalHeader } from "../../FullScreenModal-Cwnm8WdM.js";
2
2
  export { FullScreenModal, FullScreenModalBody, FullScreenModalHeader };
@@ -1,2 +1,2 @@
1
- import { HoverCard } from "../../HoverCard-B9ZMJxjn.js";
1
+ import { HoverCard } from "../../HoverCard-B8OKu9XZ.js";
2
2
  export { HoverCard };
@@ -1,2 +1,2 @@
1
- import { InputGroup } from "../../InputGroup-Do8K2hvD.js";
1
+ import { InputGroup } from "../../InputGroup-CrlMRz4X.js";
2
2
  export { InputGroup };
@@ -1,2 +1,2 @@
1
- import { Kbd, kbdVariants, keys } from "../../Kbd-LCFMumoq.js";
1
+ import { Kbd, kbdVariants, keys } from "../../Kbd-J4n1J6i4.js";
2
2
  export { Kbd, kbdVariants, keys };
@@ -1,2 +1,2 @@
1
- import { MarkedText } from "../../MarkedText-DNGEUVWc.js";
1
+ import { MarkedText } from "../../MarkedText-DlmlJO0u.js";
2
2
  export { MarkedText };
@@ -1,5 +1,5 @@
1
1
  import { cn } from "../../../../classNames-BzrkDnOD.js";
2
- import { AlertTriangle, CircleCheck } from "../../../../icons-Cek151jC.js";
2
+ import { AlertTriangle, CircleCheck } from "../../../../icons-wcA70iQx.js";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  //#region src/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.tsx
5
5
  const ConflictStatusIndicator = ({ remainingConflicts, remainingSafeChanges }) => {
@@ -1,2 +1,2 @@
1
- import { Modal } from "../../Modal-I3VWk2oo.js";
1
+ import { Modal } from "../../Modal-BkSuS9Yz.js";
2
2
  export { Modal };
@@ -1,2 +1,2 @@
1
- import { Navbar } from "../../Navbar-Liy1TPI7.js";
1
+ import { Navbar } from "../../Navbar-B_DNpv5s.js";
2
2
  export { Navbar };
@@ -1,2 +1,2 @@
1
- import { Pagination } from "../../Pagination-C_b7Xhey.js";
1
+ import { Pagination } from "../../Pagination-DH3f6LN0.js";
2
2
  export { Pagination };
@@ -1,5 +1,5 @@
1
1
  import { cn } from "../../classNames-BzrkDnOD.js";
2
- import { ChevronDown } from "../../icons-Cek151jC.js";
2
+ import { ChevronDown } from "../../icons-wcA70iQx.js";
3
3
  import { Collapsible } from "../../Collapsible-BQXWEOBC.js";
4
4
  import { useState } from "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,2 +1,2 @@
1
- import { Popconfirm } from "../../Popconfirm-5pBzT_HQ.js";
1
+ import { Popconfirm } from "../../Popconfirm-Dhzn7sy6.js";
2
2
  export { Popconfirm };
@@ -1,2 +1,2 @@
1
- import { Popover } from "../../Popover-BEbQrC_P.js";
1
+ import { Popover } from "../../Popover-CEk915I1.js";
2
2
  export { Popover };
@@ -1,2 +1,2 @@
1
- import { RadioGroup } from "../../RadioGroup-Byc2mym4.js";
1
+ import { RadioGroup } from "../../RadioGroup-CBPRLRN0.js";
2
2
  export { RadioGroup };
@@ -1,2 +1,2 @@
1
- import { Search, SearchForm } from "../../Search-Dhig_hPD.js";
1
+ import { Search, SearchForm } from "../../Search-DmkQo716.js";
2
2
  export { Search, SearchForm };
@@ -1,2 +1,2 @@
1
- import { Select } from "../../Select-DV3Hak_l.js";
1
+ import { Select } from "../../Select-B4uK0QVm.js";
2
2
  export { Select };
@@ -1 +1 @@
1
- {"version":3,"file":"Separator.js","names":[],"sources":["../../../src/components/Separator/Separator.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\nimport * as RSeparator from '@radix-ui/react-separator';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst separatorVariants = cva(\n [\n // position\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:self-stretch',\n\n // before\n \"tw:before:content-['']\",\n 'tw:before:bg-border',\n ],\n {\n defaultVariants: {\n orientation: 'vertical',\n size: 'full',\n },\n compoundVariants: [\n {\n orientation: 'horizontal',\n size: 'full',\n className: ['tw:before:w-full'],\n },\n {\n orientation: 'horizontal',\n size: '1/2',\n className: ['tw:before:w-1/2'],\n },\n {\n orientation: 'horizontal',\n size: '3/4',\n className: ['tw:before:w-3/4'],\n },\n {\n orientation: 'vertical',\n size: 'full',\n className: ['tw:before:h-full'],\n },\n {\n orientation: 'vertical',\n size: '1/2',\n className: ['tw:before:h-1/2'],\n },\n {\n orientation: 'vertical',\n size: '3/4',\n className: ['tw:before:h-3/4'],\n },\n ],\n variants: {\n size: {\n full: ['tw:before:h-full'],\n '1/2': [],\n '3/4': [],\n },\n orientation: {\n vertical: ['tw:before:w-px'],\n horizontal: ['tw:before:h-px'],\n },\n },\n },\n);\n\ntype Props = VariantProps<typeof separatorVariants> &\n Omit<ComponentProps<typeof RSeparator.Root>, 'decorative'> & {\n /**\n * Optional label rendered centered between two line segments\n * (typical \"OR\" divider). Implies `orientation=\"horizontal\"`.\n * Overrides any `children` passed to the component.\n */\n label?: ReactNode;\n };\n\nexport const Separator = ({\n className,\n orientation = 'vertical',\n size = 'full',\n label,\n ...props\n}: Props) => {\n if (label != null && label !== false) {\n return (\n <RSeparator.Root\n {...props}\n decorative\n orientation=\"horizontal\"\n className={cn(\n 'tw:flex tw:w-full tw:items-center tw:gap-3 tw:self-stretch',\n 'tw:text-xs tw:font-medium tw:text-muted-foreground',\n \"tw:before:content-[''] tw:before:h-px tw:before:flex-1 tw:before:bg-border\",\n \"tw:after:content-[''] tw:after:h-px tw:after:flex-1 tw:after:bg-border\",\n className,\n )}\n >\n {label}\n </RSeparator.Root>\n );\n }\n\n return (\n <RSeparator.Root\n {...props}\n decorative\n orientation={orientation}\n className={separatorVariants({ size, orientation, className })}\n />\n );\n};\n"],"mappings":";;;;;AAOA,MAAM,oBAAoB,IACxB;CAEE;CACA;CACA;CACA;CAGA;CACA;AACF,GACA;CACE,iBAAiB;EACf,aAAa;EACb,MAAM;CACR;CACA,kBAAkB;EAChB;GACE,aAAa;GACb,MAAM;GACN,WAAW,CAAC,kBAAkB;EAChC;EACA;GACE,aAAa;GACb,MAAM;GACN,WAAW,CAAC,iBAAiB;EAC/B;EACA;GACE,aAAa;GACb,MAAM;GACN,WAAW,CAAC,iBAAiB;EAC/B;EACA;GACE,aAAa;GACb,MAAM;GACN,WAAW,CAAC,kBAAkB;EAChC;EACA;GACE,aAAa;GACb,MAAM;GACN,WAAW,CAAC,iBAAiB;EAC/B;EACA;GACE,aAAa;GACb,MAAM;GACN,WAAW,CAAC,iBAAiB;EAC/B;CACF;CACA,UAAU;EACR,MAAM;GACJ,MAAM,CAAC,kBAAkB;GACzB,OAAO,CAAC;GACR,OAAO,CAAC;EACV;EACA,aAAa;GACX,UAAU,CAAC,gBAAgB;GAC3B,YAAY,CAAC,gBAAgB;EAC/B;CACF;AACF,CACF;AAYA,MAAa,aAAa,EACxB,WACA,cAAc,YACd,OAAO,QACP,OACA,GAAG,YACQ;CACX,IAAI,SAAS,QAAQ,UAAU,OAC7B,OACE,oBAAC,WAAW,MAAZ;EACE,GAAI;EACJ,YAAA;EACA,aAAY;EACZ,WAAW,GACT,8DACA,sDACA,8EACA,0EACA,SACF;EAEC,UAAA;CACc,CAAA;CAIrB,OACE,oBAAC,WAAW,MAAZ;EACE,GAAI;EACJ,YAAA;EACa;EACb,WAAW,kBAAkB;GAAE;GAAM;GAAa;EAAU,CAAC;CAC9D,CAAA;AAEL"}
1
+ {"version":3,"file":"Separator.js","names":[],"sources":["../../../src/components/Separator/Separator.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\nimport * as RSeparator from '@radix-ui/react-separator';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst separatorVariants = cva(\n [\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:self-stretch',\n\n \"tw:before:content-['']\",\n 'tw:before:bg-border',\n ],\n {\n defaultVariants: {\n orientation: 'vertical',\n size: 'full',\n },\n compoundVariants: [\n {\n orientation: 'horizontal',\n size: 'full',\n className: ['tw:before:w-full'],\n },\n {\n orientation: 'horizontal',\n size: '1/2',\n className: ['tw:before:w-1/2'],\n },\n {\n orientation: 'horizontal',\n size: '3/4',\n className: ['tw:before:w-3/4'],\n },\n {\n orientation: 'vertical',\n size: 'full',\n className: ['tw:before:h-full'],\n },\n {\n orientation: 'vertical',\n size: '1/2',\n className: ['tw:before:h-1/2'],\n },\n {\n orientation: 'vertical',\n size: '3/4',\n className: ['tw:before:h-3/4'],\n },\n ],\n variants: {\n size: {\n full: ['tw:before:h-full'],\n '1/2': [],\n '3/4': [],\n },\n orientation: {\n vertical: ['tw:before:w-px'],\n horizontal: ['tw:before:h-px'],\n },\n },\n },\n);\n\ntype Props = VariantProps<typeof separatorVariants> &\n Omit<ComponentProps<typeof RSeparator.Root>, 'decorative'> & {\n /** Centered \"OR\"-style label; implies `orientation=\"horizontal\"`, overrides `children`. */\n label?: ReactNode;\n };\n\nexport const Separator = ({\n className,\n orientation = 'vertical',\n size = 'full',\n label,\n ...props\n}: Props) => {\n if (label != null && label !== false) {\n return (\n <RSeparator.Root\n {...props}\n decorative\n orientation=\"horizontal\"\n className={cn(\n 'tw:flex tw:w-full tw:items-center tw:gap-3 tw:self-stretch',\n 'tw:text-xs tw:font-medium tw:text-muted-foreground',\n \"tw:before:content-[''] tw:before:h-px tw:before:flex-1 tw:before:bg-border\",\n \"tw:after:content-[''] tw:after:h-px tw:after:flex-1 tw:after:bg-border\",\n className,\n )}\n >\n {label}\n </RSeparator.Root>\n );\n }\n\n return (\n <RSeparator.Root\n {...props}\n decorative\n orientation={orientation}\n className={separatorVariants({ size, orientation, className })}\n />\n );\n};\n"],"mappings":";;;;;AAOA,MAAM,oBAAoB,IACxB;CACE;CACA;CACA;CACA;CAEA;CACA;AACF,GACA;CACE,iBAAiB;EACf,aAAa;EACb,MAAM;CACR;CACA,kBAAkB;EAChB;GACE,aAAa;GACb,MAAM;GACN,WAAW,CAAC,kBAAkB;EAChC;EACA;GACE,aAAa;GACb,MAAM;GACN,WAAW,CAAC,iBAAiB;EAC/B;EACA;GACE,aAAa;GACb,MAAM;GACN,WAAW,CAAC,iBAAiB;EAC/B;EACA;GACE,aAAa;GACb,MAAM;GACN,WAAW,CAAC,kBAAkB;EAChC;EACA;GACE,aAAa;GACb,MAAM;GACN,WAAW,CAAC,iBAAiB;EAC/B;EACA;GACE,aAAa;GACb,MAAM;GACN,WAAW,CAAC,iBAAiB;EAC/B;CACF;CACA,UAAU;EACR,MAAM;GACJ,MAAM,CAAC,kBAAkB;GACzB,OAAO,CAAC;GACR,OAAO,CAAC;EACV;EACA,aAAa;GACX,UAAU,CAAC,gBAAgB;GAC3B,YAAY,CAAC,gBAAgB;EAC/B;CACF;AACF,CACF;AAQA,MAAa,aAAa,EACxB,WACA,cAAc,YACd,OAAO,QACP,OACA,GAAG,YACQ;CACX,IAAI,SAAS,QAAQ,UAAU,OAC7B,OACE,oBAAC,WAAW,MAAZ;EACE,GAAI;EACJ,YAAA;EACA,aAAY;EACZ,WAAW,GACT,8DACA,sDACA,8EACA,0EACA,SACF;EAEC,UAAA;CACc,CAAA;CAIrB,OACE,oBAAC,WAAW,MAAZ;EACE,GAAI;EACJ,YAAA;EACa;EACb,WAAW,kBAAkB;GAAE;GAAM;GAAa;EAAU,CAAC;CAC9D,CAAA;AAEL"}
@@ -1,2 +1,2 @@
1
- import { Sheet } from "../../Sheet-OparjIi-.js";
1
+ import { Sheet } from "../../Sheet-D0fAE14T.js";
2
2
  export { Sheet };
@@ -1,2 +1,2 @@
1
- import { Sidebar, SidebarProvider, useOptionalSidebar, useSidebar } from "../../Sidebar-CLEbBtNY.js";
1
+ import { Sidebar, SidebarProvider, useOptionalSidebar, useSidebar } from "../../Sidebar-ZLMNIbg5.js";
2
2
  export { Sidebar, SidebarProvider, useOptionalSidebar, useSidebar };
@@ -13,17 +13,13 @@ const HEIGHT_CLASS_NAME = {
13
13
  };
14
14
  const ANIMATION_CLASS_NAME = cn("tw:relative", "tw:overflow-hidden", "tw:pointer-events-none", "tw:bg-skeleton", "tw:before:content-[\"\"]", "tw:before:opacity-100", "tw:before:absolute", "tw:before:inset-0", "tw:before:-translate-x-full", "tw:before:animate-[shimmer_2s_infinite]", "tw:before:bg-gradient-to-r", "tw:before:from-transparent", "tw:before:to-transparent", "tw:before:via-white/40");
15
15
  /**
16
- * Animated placeholder shown in place of content that is still loading.
16
+ * Placeholder in the slot of loading content.
17
17
  *
18
- * **When to use:** during initial page or section load while the real content is fetched. Match the
19
- * placeholder shape to the eventual content (one `Skeleton height="lg"` per title row, several `xs` for
20
- * paragraph lines). For list shells use `count` to render N stacked placeholders.
21
- * **When NOT to use:** for indeterminate background work without a layout slot use `DotsLoader` or
22
- * `Button isLoading`; for empty / error states once the request resolves use `EmptyState` / `ErrorState`.
23
- * **Composition:** drop directly into the slot the real content will occupy. `SkeletonList` is the typical
24
- * shell for `Table` / `Card`-list pages.
18
+ * - Match the eventual shape (`lg` per title row, `xs` per text line).
19
+ * - Not for slotless work (`DotsLoader`, `Button isLoading`) or empty / error states.
20
+ * - `SkeletonList` shells `Table` / `Card`-list pages.
25
21
  *
26
- * @see RECIPES.md#data-card-with-skeleton — for a loading card pattern
22
+ * @see RECIPES.md#data-card-with-skeleton
27
23
  */
28
24
  const Skeleton = ({ height = "md", className, count = 1 }) => {
29
25
  const prefixId = useId();
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.js","names":[],"sources":["../../../../src/components/Skeleton/Skeleton.tsx"],"sourcesContent":["import { useId } from 'react';\n\nimport { cn } from '../../utils';\n\nexport type Height = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\n/**\n * Props for `Skeleton`. `height` maps to the named token (xxs 12px → 2xl 48px); `count` renders multiple\n * stacked placeholders sharing the same shape.\n */\ntype SkeletonProps = {\n /** Named height token — `xxs` (12px) through `2xl` (48px). */\n height?: Height;\n className?: string;\n /** Number of stacked placeholder rows. Use for list-style loading states. */\n count?: number;\n};\n\nconst HEIGHT_CLASS_NAME: Record<Height, string> = {\n xxs: 'tw:h-3 tw:rounded',\n xs: 'tw:h-4 tw:rounded',\n sm: 'tw:h-5 tw:rounded',\n md: 'tw:h-6 tw:rounded-md',\n lg: 'tw:h-8 tw:rounded-lg',\n xl: 'tw:h-10 tw:rounded-lg',\n '2xl': 'tw:h-12 tw:rounded-lg',\n};\n\nconst ANIMATION_CLASS_NAME = cn(\n // base styles\n 'tw:relative',\n 'tw:overflow-hidden',\n 'tw:pointer-events-none',\n 'tw:bg-skeleton',\n\n // before\n 'tw:before:content-[\"\"]',\n 'tw:before:opacity-100',\n 'tw:before:absolute',\n 'tw:before:inset-0',\n 'tw:before:-translate-x-full',\n 'tw:before:animate-[shimmer_2s_infinite]',\n 'tw:before:bg-gradient-to-r',\n 'tw:before:from-transparent',\n 'tw:before:to-transparent',\n 'tw:before:via-white/40',\n);\n\n/**\n * Animated placeholder shown in place of content that is still loading.\n *\n * **When to use:** during initial page or section load while the real content is fetched. Match the\n * placeholder shape to the eventual content (one `Skeleton height=\"lg\"` per title row, several `xs` for\n * paragraph lines). For list shells use `count` to render N stacked placeholders.\n * **When NOT to use:** for indeterminate background work without a layout slot use `DotsLoader` or\n * `Button isLoading`; for empty / error states once the request resolves use `EmptyState` / `ErrorState`.\n * **Composition:** drop directly into the slot the real content will occupy. `SkeletonList` is the typical\n * shell for `Table` / `Card`-list pages.\n *\n * @see RECIPES.md#data-card-with-skeleton — for a loading card pattern\n */\nexport const Skeleton = ({ height = 'md', className, count = 1 }: SkeletonProps) => {\n const prefixId = useId();\n const keys = Array.from({ length: count }, (_, i) => `${prefixId}-${i}`);\n\n return (\n <>\n {keys.map((key) => (\n <div\n key={key}\n data-skeleton=\"true\"\n className={cn(HEIGHT_CLASS_NAME[height], ANIMATION_CLASS_NAME, className)}\n />\n ))}\n </>\n );\n};\n"],"mappings":";;;;AAkBA,MAAM,oBAA4C;CAChD,KAAK;CACL,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,OAAO;AACT;AAEA,MAAM,uBAAuB,GAE3B,eACA,sBACA,0BACA,kBAGA,4BACA,yBACA,sBACA,qBACA,+BACA,2CACA,8BACA,8BACA,4BACA,wBACF;;;;;;;;;;;;;;AAeA,MAAa,YAAY,EAAE,SAAS,MAAM,WAAW,QAAQ,QAAuB;CAClF,MAAM,WAAW,MAAM;CACvB,MAAM,OAAO,MAAM,KAAK,EAAE,QAAQ,MAAM,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,GAAG;CAEvE,OACE,oBAAA,YAAA,EAAA,UACG,KAAK,KAAK,QACT,oBAAC,OAAD;EAEE,iBAAc;EACd,WAAW,GAAG,kBAAkB,SAAS,sBAAsB,SAAS;CACzE,GAHM,GAGN,CACF,EACD,CAAA;AAEN"}
1
+ {"version":3,"file":"Skeleton.js","names":[],"sources":["../../../../src/components/Skeleton/Skeleton.tsx"],"sourcesContent":["import { useId } from 'react';\n\nimport { cn } from '../../utils';\n\nexport type Height = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\ntype SkeletonProps = {\n /** `xxs` (12px) through `2xl` (48px). */\n height?: Height;\n className?: string;\n /** Stacked rows. */\n count?: number;\n};\n\nconst HEIGHT_CLASS_NAME: Record<Height, string> = {\n xxs: 'tw:h-3 tw:rounded',\n xs: 'tw:h-4 tw:rounded',\n sm: 'tw:h-5 tw:rounded',\n md: 'tw:h-6 tw:rounded-md',\n lg: 'tw:h-8 tw:rounded-lg',\n xl: 'tw:h-10 tw:rounded-lg',\n '2xl': 'tw:h-12 tw:rounded-lg',\n};\n\nconst ANIMATION_CLASS_NAME = cn(\n 'tw:relative',\n 'tw:overflow-hidden',\n 'tw:pointer-events-none',\n 'tw:bg-skeleton',\n\n 'tw:before:content-[\"\"]',\n 'tw:before:opacity-100',\n 'tw:before:absolute',\n 'tw:before:inset-0',\n 'tw:before:-translate-x-full',\n 'tw:before:animate-[shimmer_2s_infinite]',\n 'tw:before:bg-gradient-to-r',\n 'tw:before:from-transparent',\n 'tw:before:to-transparent',\n 'tw:before:via-white/40',\n);\n\n/**\n * Placeholder in the slot of loading content.\n *\n * - Match the eventual shape (`lg` per title row, `xs` per text line).\n * - Not for slotless work (`DotsLoader`, `Button isLoading`) or empty / error states.\n * - `SkeletonList` shells `Table` / `Card`-list pages.\n *\n * @see RECIPES.md#data-card-with-skeleton\n */\nexport const Skeleton = ({ height = 'md', className, count = 1 }: SkeletonProps) => {\n const prefixId = useId();\n const keys = Array.from({ length: count }, (_, i) => `${prefixId}-${i}`);\n\n return (\n <>\n {keys.map((key) => (\n <div\n key={key}\n data-skeleton=\"true\"\n className={cn(HEIGHT_CLASS_NAME[height], ANIMATION_CLASS_NAME, className)}\n />\n ))}\n </>\n );\n};\n"],"mappings":";;;;AAcA,MAAM,oBAA4C;CAChD,KAAK;CACL,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,OAAO;AACT;AAEA,MAAM,uBAAuB,GAC3B,eACA,sBACA,0BACA,kBAEA,4BACA,yBACA,sBACA,qBACA,+BACA,2CACA,8BACA,8BACA,4BACA,wBACF;;;;;;;;;;AAWA,MAAa,YAAY,EAAE,SAAS,MAAM,WAAW,QAAQ,QAAuB;CAClF,MAAM,WAAW,MAAM;CACvB,MAAM,OAAO,MAAM,KAAK,EAAE,QAAQ,MAAM,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,GAAG;CAEvE,OACE,oBAAA,YAAA,EAAA,UACG,KAAK,KAAK,QACT,oBAAC,OAAD;EAEE,iBAAc;EACd,WAAW,GAAG,kBAAkB,SAAS,sBAAsB,SAAS;CACzE,GAHM,GAGN,CACF,EACD,CAAA;AAEN"}
@@ -1,2 +1,2 @@
1
- import { Slider } from "../../Slider-DLclvRws.js";
1
+ import { Slider } from "../../Slider-B0ou9r0B.js";
2
2
  export { Slider };
@@ -3,15 +3,10 @@ import { useId, useLayoutEffect, useState } from "react";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  //#region src/components/SpotlightBackdrop/SpotlightBackdrop.tsx
5
5
  /**
6
- * Full-viewport dimmed layer with an SVG-mask cut-out around a target rect,
7
- * producing a spotlight highlight. With `rect={null}` it dims the whole viewport
8
- * (no cut-out). The dim tone uses the semantic `foreground` token, so it re-skins
9
- * with the active brand.
6
+ * Full-viewport dim with a spotlight cut-out around `rect`.
10
7
  *
11
- * **Presentational primitive** — pass a `rect` from `useTargetRect`, and compose
12
- * with `Popover` for an anchored callout. Tour / coachmark orchestration
13
- * (steps, next/prev, "seen" persistence) is intentionally app-owned; see the
14
- * "Guided tour (recipe)" story for the composition.
8
+ * - Presentational: `rect` from `useTargetRect`, callout via `Popover`.
9
+ * - Tour steps and "seen" persistence are app-owned — see the "Guided tour (recipe)" story.
15
10
  */
16
11
  const SpotlightBackdrop = ({ rect, padding = 8, radius = 8, className, onClick }) => {
17
12
  const maskId = useId();