@keboola/design 14.0.0 → 15.1.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 (303) hide show
  1. package/AGENTS.md +11 -23
  2. package/CHANGELOG.md +58 -0
  3. package/COMPONENT-API.md +109 -115
  4. package/dist/{AIKit-BRSZ3nY7.js → AIKit-BR6jfsdI.js} +69 -35
  5. package/dist/AIKit-BR6jfsdI.js.map +1 -0
  6. package/dist/{Alert-CZ0dDsuk.js → Alert-Chz6KZ7e.js} +11 -20
  7. package/dist/Alert-Chz6KZ7e.js.map +1 -0
  8. package/dist/{AlertModal-BDle9ZVQ.js → AlertModal-DMsn62JJ.js} +16 -36
  9. package/dist/AlertModal-DMsn62JJ.js.map +1 -0
  10. package/dist/{AppShell-B03fj1j7.js → AppShell-C8V1KRr_.js} +2 -2
  11. package/dist/{AppShell-B03fj1j7.js.map → AppShell-C8V1KRr_.js.map} +1 -1
  12. package/dist/{AutoSaveTextarea-jiqNeeE4.js → AutoSaveTextarea-BbMhC5Aq.js} +3 -3
  13. package/dist/AutoSaveTextarea-BbMhC5Aq.js.map +1 -0
  14. package/dist/{Badge-Ba3epgcI.js → Badge-CqlOE5A2.js} +23 -12
  15. package/dist/Badge-CqlOE5A2.js.map +1 -0
  16. package/dist/{BrandEditor-CN2HJ_12.js → BrandEditor-D61pzWRq.js} +7 -9
  17. package/dist/BrandEditor-D61pzWRq.js.map +1 -0
  18. package/dist/{BrandLogo-BfITD0im.js → BrandLogo-DkESE19K.js} +2 -2
  19. package/dist/{BrandLogo-BfITD0im.js.map → BrandLogo-DkESE19K.js.map} +1 -1
  20. package/dist/{Breadcrumb-BnIlsoIH.js → Breadcrumb-DbqvDnYl.js} +4 -4
  21. package/dist/{Breadcrumb-BnIlsoIH.js.map → Breadcrumb-DbqvDnYl.js.map} +1 -1
  22. package/dist/{Button-D2JqBAq7.js → Button-BNkyYU8u.js} +9 -185
  23. package/dist/Button-BNkyYU8u.js.map +1 -0
  24. package/dist/{Card-Bpc_ZlL4.js → Card-DxjGiqH8.js} +11 -18
  25. package/dist/Card-DxjGiqH8.js.map +1 -0
  26. package/dist/{Checkbox-uFE8XLT_.js → Checkbox-CHDDJyAA.js} +20 -45
  27. package/dist/Checkbox-CHDDJyAA.js.map +1 -0
  28. package/dist/{Clipboard-D-9XOqy4.js → Clipboard-DlwVZS1P.js} +2 -2
  29. package/dist/{Clipboard-D-9XOqy4.js.map → Clipboard-DlwVZS1P.js.map} +1 -1
  30. package/dist/{ClipboardButton-DxvZG_H0.js → ClipboardButton-B1Hr_n_Z.js} +3 -3
  31. package/dist/{ClipboardButton-DxvZG_H0.js.map → ClipboardButton-B1Hr_n_Z.js.map} +1 -1
  32. package/dist/{CodeEditor-BfRSCKEs.js → CodeEditor-DVSPdfdo.js} +24 -31
  33. package/dist/CodeEditor-DVSPdfdo.js.map +1 -0
  34. package/dist/{ColorInput-CDKH8q_f.js → ColorInput-B_eZIu39.js} +5 -7
  35. package/dist/ColorInput-B_eZIu39.js.map +1 -0
  36. package/dist/{ColorModeSwitch-DR6J2U6M.js → ColorModeSwitch-BlrH8jAi.js} +3 -3
  37. package/dist/{ColorModeSwitch-DR6J2U6M.js.map → ColorModeSwitch-BlrH8jAi.js.map} +1 -1
  38. package/dist/{Combobox-CEesMe2M.js → Combobox-BLqX-Tdh.js} +16 -24
  39. package/dist/Combobox-BLqX-Tdh.js.map +1 -0
  40. package/dist/{Command-T3MLRaen.js → Command-DhXmqFLT.js} +46 -32
  41. package/dist/Command-DhXmqFLT.js.map +1 -0
  42. package/dist/{CopyField-CNbCHw9a.js → CopyField-D0Pg4Z0R.js} +2 -2
  43. package/dist/{CopyField-CNbCHw9a.js.map → CopyField-D0Pg4Z0R.js.map} +1 -1
  44. package/dist/{DateInput-ClK1lCxz.js → DateInput-duinbI9_.js} +5 -7
  45. package/dist/DateInput-duinbI9_.js.map +1 -0
  46. package/dist/{DatePicker-CgHAu9KX.js → DatePicker-Cg_aG_N4.js} +2 -2
  47. package/dist/{DatePicker-CgHAu9KX.js.map → DatePicker-Cg_aG_N4.js.map} +1 -1
  48. package/dist/{DateRangeInput-DtlAffS1.js → DateRangeInput-BYVHf9zo.js} +5 -7
  49. package/dist/DateRangeInput-BYVHf9zo.js.map +1 -0
  50. package/dist/{DateRangePicker-CXpXPMoh.js → DateRangePicker-m47cSV1r.js} +7 -12
  51. package/dist/DateRangePicker-m47cSV1r.js.map +1 -0
  52. package/dist/{DropdownMenu-B1gGvZoh.js → DropdownMenu-Bum99mVf.js} +35 -64
  53. package/dist/DropdownMenu-Bum99mVf.js.map +1 -0
  54. package/dist/{FieldItem-CYvJyjiI.js → FieldItem-BHUqgSO1.js} +3 -3
  55. package/dist/{FieldItem-CYvJyjiI.js.map → FieldItem-BHUqgSO1.js.map} +1 -1
  56. package/dist/{FileUpload-D6vPG3WB.js → FileUpload-BYFONpEl.js} +3 -3
  57. package/dist/FileUpload-BYFONpEl.js.map +1 -0
  58. package/dist/{Form-CD55zJiy.js → Form-Dqbt_tIs.js} +8 -8
  59. package/dist/{Form-CD55zJiy.js.map → Form-Dqbt_tIs.js.map} +1 -1
  60. package/dist/{FormGroup-DiYFdEhH.js → FormGroup-V5kIgQRN.js} +3 -3
  61. package/dist/{FormGroup-DiYFdEhH.js.map → FormGroup-V5kIgQRN.js.map} +1 -1
  62. package/dist/{FullScreenModal-CUuAakh3.js → FullScreenModal-DAvvlGOz.js} +2 -5
  63. package/dist/FullScreenModal-DAvvlGOz.js.map +1 -0
  64. package/dist/HoverCard-Cf9iYyaW.js +26 -0
  65. package/dist/HoverCard-Cf9iYyaW.js.map +1 -0
  66. package/dist/{InlineEdit-D5RdunZo.js → InlineEdit-D4P0SvCB.js} +5 -9
  67. package/dist/InlineEdit-D4P0SvCB.js.map +1 -0
  68. package/dist/{InputGroup-Dm014ruw.js → InputGroup-CZv_7QlM.js} +39 -146
  69. package/dist/InputGroup-CZv_7QlM.js.map +1 -0
  70. package/dist/{Kbd-3YM7NQO4.js → Kbd-CflKthfu.js} +5 -14
  71. package/dist/Kbd-CflKthfu.js.map +1 -0
  72. package/dist/{MermaidDiagram-CeiOkI60.js → MermaidDiagram-2-EuNu1i.js} +4 -4
  73. package/dist/{MermaidDiagram-CeiOkI60.js.map → MermaidDiagram-2-EuNu1i.js.map} +1 -1
  74. package/dist/{Modal-DMZRswk4.js → Modal-DwuvuiUx.js} +17 -36
  75. package/dist/Modal-DwuvuiUx.js.map +1 -0
  76. package/dist/{ModalTitle-CTECVgL8.js → ModalTitle-RGWwIMU6.js} +3 -3
  77. package/dist/ModalTitle-RGWwIMU6.js.map +1 -0
  78. package/dist/{MultiActionButtonGroup-CEv_txvz.js → MultiActionButtonGroup-Dzig87s1.js} +3 -3
  79. package/dist/{MultiActionButtonGroup-CEv_txvz.js.map → MultiActionButtonGroup-Dzig87s1.js.map} +1 -1
  80. package/dist/{Navbar-CtVYcRFn.js → Navbar-DHUS7XiU.js} +2 -2
  81. package/dist/{Navbar-CtVYcRFn.js.map → Navbar-DHUS7XiU.js.map} +1 -1
  82. package/dist/OtpInput-CY8yCaJk.js.map +1 -1
  83. package/dist/{PageToolbar-B_e7HGva.js → PageToolbar-LKP6PiP_.js} +4 -4
  84. package/dist/{PageToolbar-B_e7HGva.js.map → PageToolbar-LKP6PiP_.js.map} +1 -1
  85. package/dist/{Pagination-DDp6PRqf.js → Pagination-D27x5KmH.js} +2 -2
  86. package/dist/{Pagination-DDp6PRqf.js.map → Pagination-D27x5KmH.js.map} +1 -1
  87. package/dist/{Popconfirm-BgV6a0sl.js → Popconfirm-p72DiagN.js} +3 -3
  88. package/dist/{Popconfirm-BgV6a0sl.js.map → Popconfirm-p72DiagN.js.map} +1 -1
  89. package/dist/{Popover-BU7nGOv-.js → Popover-DnBw5Uay.js} +25 -38
  90. package/dist/Popover-DnBw5Uay.js.map +1 -0
  91. package/dist/{RadioGroup-C8EC3fqO.js → RadioGroup-B0TwHjBb.js} +9 -13
  92. package/dist/RadioGroup-B0TwHjBb.js.map +1 -0
  93. package/dist/{Search-aaUMI4ix.js → Search-vyZwGKMU.js} +3 -3
  94. package/dist/{Search-aaUMI4ix.js.map → Search-vyZwGKMU.js.map} +1 -1
  95. package/dist/{SearchInput-Dxi2GK4n.js → SearchInput-DyYXyw3u.js} +4 -6
  96. package/dist/SearchInput-DyYXyw3u.js.map +1 -0
  97. package/dist/{SectionNav-BnHOMLtE.js → SectionNav-6hcIpZLO.js} +5 -5
  98. package/dist/{SectionNav-BnHOMLtE.js.map → SectionNav-6hcIpZLO.js.map} +1 -1
  99. package/dist/{Select-CjQgU_6K.js → Select-C6zKeip5.js} +11 -25
  100. package/dist/Select-C6zKeip5.js.map +1 -0
  101. package/dist/{Sheet-utw4_rUa.js → Sheet-DKG20J7W.js} +13 -16
  102. package/dist/Sheet-DKG20J7W.js.map +1 -0
  103. package/dist/{Sidebar-BAmux2Uj.js → Sidebar-BlYqasnX.js} +11 -11
  104. package/dist/Sidebar-BlYqasnX.js.map +1 -0
  105. package/dist/{Slider-DbzzSDRV.js → Slider-DrcsM8_G.js} +4 -4
  106. package/dist/Slider-DrcsM8_G.js.map +1 -0
  107. package/dist/{Stepper-BBPembeK.js → Stepper-CQrUPVFL.js} +2 -2
  108. package/dist/Stepper-CQrUPVFL.js.map +1 -0
  109. package/dist/Switch-DccpSpzC.js +66 -0
  110. package/dist/Switch-DccpSpzC.js.map +1 -0
  111. package/dist/{Tabs-C0uvkPHc.js → Tabs-Ck4uWf8U.js} +2 -2
  112. package/dist/{Tabs-C0uvkPHc.js.map → Tabs-Ck4uWf8U.js.map} +1 -1
  113. package/dist/{TextInput-K2DSDs5O.js → TextInput-CR0_USaY.js} +4 -7
  114. package/dist/TextInput-CR0_USaY.js.map +1 -0
  115. package/dist/{ThemeProvider-C8yaKlM1.js → ThemeProvider-BTK7AL-T.js} +21 -8
  116. package/dist/ThemeProvider-BTK7AL-T.js.map +1 -0
  117. package/dist/{TimePicker-DyyV3nw8.js → TimePicker-lk3NGqeK.js} +2 -2
  118. package/dist/{TimePicker-DyyV3nw8.js.map → TimePicker-lk3NGqeK.js.map} +1 -1
  119. package/dist/{Toast-BGnUL4jV.js → Toast-937n7n8i.js} +2 -2
  120. package/dist/{Toast-BGnUL4jV.js.map → Toast-937n7n8i.js.map} +1 -1
  121. package/dist/{ToggleAllTooltip-Dlmq-yqS.js → ToggleAllTooltip-DEjbWFoj.js} +2 -2
  122. package/dist/{ToggleAllTooltip-Dlmq-yqS.js.map → ToggleAllTooltip-DEjbWFoj.js.map} +1 -1
  123. package/dist/Workbench-CxgNCs3I.js.map +1 -1
  124. package/dist/{ZoomableSvg-Dh1OstPN.js → ZoomableSvg-CxXKanUR.js} +5 -5
  125. package/dist/{ZoomableSvg-Dh1OstPN.js.map → ZoomableSvg-CxXKanUR.js.map} +1 -1
  126. package/dist/editors.js +4 -4
  127. package/dist/flint.js +4 -4
  128. package/dist/index.d.ts +113 -125
  129. package/dist/index.js +61 -61
  130. package/dist/internal/blocks/AIKit.js +1 -1
  131. package/dist/internal/blocks/AppShell.js +1 -1
  132. package/dist/internal/blocks/AuthLayout.js +1 -1
  133. package/dist/internal/blocks/AutoSaveTextarea.js +1 -1
  134. package/dist/internal/blocks/BrandEditor.js +1 -1
  135. package/dist/internal/blocks/ChartPanel.js +1 -1
  136. package/dist/internal/blocks/ChipEditor.js +5 -9
  137. package/dist/internal/blocks/ChipEditor.js.map +1 -1
  138. package/dist/internal/blocks/ClipboardButton.js +1 -1
  139. package/dist/internal/blocks/ColorInput.js +1 -1
  140. package/dist/internal/blocks/ColorModeSwitch.js +1 -1
  141. package/dist/internal/blocks/Command.js +1 -1
  142. package/dist/internal/blocks/CopyField.js +1 -1
  143. package/dist/internal/blocks/DateInput.js +1 -1
  144. package/dist/internal/blocks/DateRangeInput.js +1 -1
  145. package/dist/internal/blocks/EmptyConfigurationActionCard.js +1 -1
  146. package/dist/internal/blocks/ErrorState.js +18 -29
  147. package/dist/internal/blocks/ErrorState.js.map +1 -1
  148. package/dist/internal/blocks/ExportMenu.js +3 -3
  149. package/dist/internal/blocks/ExportMenu.js.map +1 -1
  150. package/dist/internal/blocks/Form/connectors/ComboboxField.js +2 -2
  151. package/dist/internal/blocks/Form/connectors/MultiComboboxField.js +1 -1
  152. package/dist/internal/blocks/Form.js +1 -1
  153. package/dist/internal/blocks/FormGroup.js +1 -1
  154. package/dist/internal/blocks/InlineEdit.js +1 -1
  155. package/dist/internal/blocks/MultiActionButtonGroup.js +1 -1
  156. package/dist/internal/blocks/MultiCombobox.js +5 -9
  157. package/dist/internal/blocks/MultiCombobox.js.map +1 -1
  158. package/dist/internal/blocks/NumberInput.js +2 -4
  159. package/dist/internal/blocks/NumberInput.js.map +1 -1
  160. package/dist/internal/blocks/PageToolbar.js +1 -1
  161. package/dist/internal/blocks/PasswordInput.js +3 -5
  162. package/dist/internal/blocks/PasswordInput.js.map +1 -1
  163. package/dist/internal/blocks/SearchInput.js +1 -1
  164. package/dist/internal/blocks/SearchInputWithNavigation.js +6 -7
  165. package/dist/internal/blocks/SearchInputWithNavigation.js.map +1 -1
  166. package/dist/internal/blocks/SectionNav.js +1 -1
  167. package/dist/internal/blocks/SplitButton.js +2 -2
  168. package/dist/internal/blocks/StatCard.js +1 -1
  169. package/dist/internal/blocks/TextInput.js +1 -1
  170. package/dist/internal/blocks/Textarea.js +3 -8
  171. package/dist/internal/blocks/Textarea.js.map +1 -1
  172. package/dist/internal/blocks/TimeInput.js +4 -6
  173. package/dist/internal/blocks/TimeInput.js.map +1 -1
  174. package/dist/internal/components/Alert.js +1 -1
  175. package/dist/internal/components/AlertModal.js +1 -1
  176. package/dist/internal/components/Avatar.js +1 -1
  177. package/dist/internal/components/Badge.js +1 -1
  178. package/dist/internal/components/BrandLogo.js +1 -1
  179. package/dist/internal/components/Breadcrumb.js +1 -1
  180. package/dist/internal/components/Button.js +2 -2
  181. package/dist/internal/components/ButtonGroup.js +1 -1
  182. package/dist/internal/components/ButtonGroup.js.map +1 -1
  183. package/dist/internal/components/Card.js +1 -1
  184. package/dist/internal/components/Checkbox.js +1 -1
  185. package/dist/internal/components/Clipboard.js +1 -1
  186. package/dist/internal/components/CollapsiblePanel.js +1 -1
  187. package/dist/internal/components/Combobox.js +1 -1
  188. package/dist/internal/components/DatePicker.js +1 -1
  189. package/dist/internal/components/DateRangePicker.js +1 -1
  190. package/dist/internal/components/DropdownMenu.js +1 -1
  191. package/dist/internal/components/FileUpload.js +1 -1
  192. package/dist/internal/components/FullScreenModal.js +1 -1
  193. package/dist/internal/components/HoverCard.js +1 -1
  194. package/dist/internal/components/InputGroup.js +1 -1
  195. package/dist/internal/components/Kbd.js +1 -1
  196. package/dist/internal/components/Modal.js +1 -1
  197. package/dist/internal/components/Navbar.js +1 -1
  198. package/dist/internal/components/Pagination.js +1 -1
  199. package/dist/internal/components/Popconfirm.js +1 -1
  200. package/dist/internal/components/Popover.js +1 -1
  201. package/dist/internal/components/RadioGroup.js +1 -1
  202. package/dist/internal/components/Search.js +1 -1
  203. package/dist/internal/components/Select.js +1 -1
  204. package/dist/internal/components/Sheet.js +1 -1
  205. package/dist/internal/components/Sidebar.js +1 -1
  206. package/dist/internal/components/Skeleton/Skeleton.js +1 -1
  207. package/dist/internal/components/Skeleton/Skeleton.js.map +1 -1
  208. package/dist/internal/components/Slider.js +1 -1
  209. package/dist/internal/components/Stepper.js +1 -1
  210. package/dist/internal/components/Switch.js +1 -1
  211. package/dist/internal/components/Tabs.js +1 -1
  212. package/dist/internal/components/ThemeProvider.js +3 -4
  213. package/dist/internal/components/TimePicker.js +1 -1
  214. package/dist/internal/components/Toast.js +2 -2
  215. package/dist/internal/components/Toggle.js +13 -3
  216. package/dist/internal/components/Toggle.js.map +1 -1
  217. package/dist/internal/components/Tooltip.js +1 -1
  218. package/dist/internal/components/Truncated.js +1 -1
  219. package/dist/internal/components/ZoomableSvg.js +1 -1
  220. package/dist/internal/hooks/useTimeout.js +19 -0
  221. package/dist/internal/hooks/useTimeout.js.map +1 -0
  222. package/dist/internal/utils.js +1 -1
  223. package/dist/markdown-editor.js +16 -18
  224. package/dist/markdown-editor.js.map +1 -1
  225. package/dist/mermaid.js +1 -1
  226. package/dist/rjsf.js +33 -42
  227. package/dist/rjsf.js.map +1 -1
  228. package/dist/styles-DxazJ8Mz.js +81 -0
  229. package/dist/styles-DxazJ8Mz.js.map +1 -0
  230. package/dist/styles-T8xwr0sR.js +73 -0
  231. package/dist/styles-T8xwr0sR.js.map +1 -0
  232. package/dist/styles.css +1 -1
  233. package/dist/testing.d.ts +0 -2
  234. package/dist/testing.js +3 -10
  235. package/dist/testing.js.map +1 -1
  236. package/dist/{useColorSchemeState-Cw4MCXUs.js → themeScopeContext-CEVXbYvZ.js} +43 -15
  237. package/dist/themeScopeContext-CEVXbYvZ.js.map +1 -0
  238. package/dist/{useThemeAttributes-B199Regy.js → themeTokens-DCeb62ap.js} +22 -4
  239. package/dist/themeTokens-DCeb62ap.js.map +1 -0
  240. package/dist/{toast-D6Z6MOB5.js → toast-Y3cTMBW8.js} +7 -10
  241. package/dist/toast-Y3cTMBW8.js.map +1 -0
  242. package/dist/{utils-LQ4jJA-9.js → utils-DwC9u0tM.js} +26 -52
  243. package/dist/utils-DwC9u0tM.js.map +1 -0
  244. package/dist/vega.js +2 -2
  245. package/dist/{vegaTheme-BrmVoPEz.js → vegaTheme-ISwGXvof.js} +2 -2
  246. package/dist/{vegaTheme-BrmVoPEz.js.map → vegaTheme-ISwGXvof.js.map} +1 -1
  247. package/dist/{vegaTokens-Ce07C0DH.js → vegaTokens-DCkvpIVE.js} +2 -2
  248. package/dist/{vegaTokens-Ce07C0DH.js.map → vegaTokens-DCkvpIVE.js.map} +1 -1
  249. package/package.json +2 -2
  250. package/src/styles.css +0 -35
  251. package/src/theme.css +46 -0
  252. package/dist/AIKit-BRSZ3nY7.js.map +0 -1
  253. package/dist/Alert-CZ0dDsuk.js.map +0 -1
  254. package/dist/AlertModal-BDle9ZVQ.js.map +0 -1
  255. package/dist/AutoSaveTextarea-jiqNeeE4.js.map +0 -1
  256. package/dist/Badge-Ba3epgcI.js.map +0 -1
  257. package/dist/BrandEditor-CN2HJ_12.js.map +0 -1
  258. package/dist/Button-D2JqBAq7.js.map +0 -1
  259. package/dist/Card-Bpc_ZlL4.js.map +0 -1
  260. package/dist/Checkbox-uFE8XLT_.js.map +0 -1
  261. package/dist/CodeEditor-BfRSCKEs.js.map +0 -1
  262. package/dist/ColorInput-CDKH8q_f.js.map +0 -1
  263. package/dist/Combobox-CEesMe2M.js.map +0 -1
  264. package/dist/Command-T3MLRaen.js.map +0 -1
  265. package/dist/DateInput-ClK1lCxz.js.map +0 -1
  266. package/dist/DateRangeInput-DtlAffS1.js.map +0 -1
  267. package/dist/DateRangePicker-CXpXPMoh.js.map +0 -1
  268. package/dist/DropdownMenu-B1gGvZoh.js.map +0 -1
  269. package/dist/FileUpload-D6vPG3WB.js.map +0 -1
  270. package/dist/FullScreenModal-CUuAakh3.js.map +0 -1
  271. package/dist/HoverCard-BBdPYqEf.js +0 -31
  272. package/dist/HoverCard-BBdPYqEf.js.map +0 -1
  273. package/dist/InlineEdit-D5RdunZo.js.map +0 -1
  274. package/dist/InputGroup-Dm014ruw.js.map +0 -1
  275. package/dist/Kbd-3YM7NQO4.js.map +0 -1
  276. package/dist/Modal-DMZRswk4.js.map +0 -1
  277. package/dist/ModalTitle-CTECVgL8.js.map +0 -1
  278. package/dist/Popover-BU7nGOv-.js.map +0 -1
  279. package/dist/RadioGroup-C8EC3fqO.js.map +0 -1
  280. package/dist/SearchInput-Dxi2GK4n.js.map +0 -1
  281. package/dist/Select-CjQgU_6K.js.map +0 -1
  282. package/dist/Sheet-utw4_rUa.js.map +0 -1
  283. package/dist/Sidebar-BAmux2Uj.js.map +0 -1
  284. package/dist/Slider-DbzzSDRV.js.map +0 -1
  285. package/dist/Stepper-BBPembeK.js.map +0 -1
  286. package/dist/Switch-Dw4tvQls.js +0 -201
  287. package/dist/Switch-Dw4tvQls.js.map +0 -1
  288. package/dist/TextInput-K2DSDs5O.js.map +0 -1
  289. package/dist/ThemeProvider-C8yaKlM1.js.map +0 -1
  290. package/dist/context-U293r3v-.js +0 -29
  291. package/dist/context-U293r3v-.js.map +0 -1
  292. package/dist/defaults-i_xG2F_1.js +0 -32
  293. package/dist/defaults-i_xG2F_1.js.map +0 -1
  294. package/dist/styles-BDA5rQz3.js +0 -127
  295. package/dist/styles-BDA5rQz3.js.map +0 -1
  296. package/dist/styles-YQdM7G8c.js +0 -159
  297. package/dist/styles-YQdM7G8c.js.map +0 -1
  298. package/dist/themeTokens-l2Fsfcs7.js +0 -22
  299. package/dist/themeTokens-l2Fsfcs7.js.map +0 -1
  300. package/dist/toast-D6Z6MOB5.js.map +0 -1
  301. package/dist/useColorSchemeState-Cw4MCXUs.js.map +0 -1
  302. package/dist/useThemeAttributes-B199Regy.js.map +0 -1
  303. package/dist/utils-LQ4jJA-9.js.map +0 -1
@@ -1,9 +1,9 @@
1
- import { createChangeInputEvent } from "./utils-LQ4jJA-9.js";
1
+ import { createChangeInputEvent } from "./utils-DwC9u0tM.js";
2
2
  import { mergeRefs } from "./internal/utils/mergeRefs.js";
3
3
  import { Calendar, X } from "./icons-ZIeZXXS7.js";
4
- import { InputGroup } from "./InputGroup-Dm014ruw.js";
4
+ import { InputGroup } from "./InputGroup-CZv_7QlM.js";
5
5
  import { useControllableState } from "./useControllableState-CUYXMsfz.js";
6
- import { DatePicker } from "./DatePicker-CgHAu9KX.js";
6
+ import { DatePicker } from "./DatePicker-Cg_aG_N4.js";
7
7
  import { useRef, useState } from "react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
  //#region src/blocks/DateInput/helpers.ts
@@ -39,7 +39,7 @@ const parseDate = (value) => {
39
39
  };
40
40
  //#endregion
41
41
  //#region src/blocks/DateInput/DateInput.tsx
42
- const DateInput = ({ ref, state, variant, focusVariant, sizing, className, value, defaultValue, onValueChange, onValueBlur, onChange, onBlur, onFocus, allowClear = false, disabledDays, endMonth, startMonth, disabled, readOnly, placeholder = "Select a date", ...restInputProps }) => {
42
+ const DateInput = ({ ref, state, focusVariant, className, value, defaultValue, onValueChange, onValueBlur, onChange, onBlur, onFocus, allowClear = false, disabledDays, endMonth, startMonth, disabled, readOnly, placeholder = "Select a date", ...restInputProps }) => {
43
43
  const inputRef = useRef(null);
44
44
  const [inputValue, setInputValue] = useState("");
45
45
  const [hasFocus, setHasFocus] = useState(false);
@@ -94,8 +94,6 @@ const DateInput = ({ ref, state, variant, focusVariant, sizing, className, value
94
94
  const displayValue = hasFocus ? inputValue : formatDate(currentValue, "");
95
95
  return /* @__PURE__ */ jsxs(InputGroup, {
96
96
  state,
97
- variant,
98
- sizing,
99
97
  focusVariant,
100
98
  className,
101
99
  children: [/* @__PURE__ */ jsx(InputGroup.Input, {
@@ -138,4 +136,4 @@ const DateInput = ({ ref, state, variant, focusVariant, sizing, className, value
138
136
  //#endregion
139
137
  export { DateInput };
140
138
 
141
- //# sourceMappingURL=DateInput-ClK1lCxz.js.map
139
+ //# sourceMappingURL=DateInput-duinbI9_.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateInput-duinbI9_.js","names":["CalendarIcon"],"sources":["../src/blocks/DateInput/helpers.ts","../src/blocks/DateInput/DateInput.tsx"],"sourcesContent":["export const formatDate = (date: Date | null | undefined, inputValue: string): string => {\n if (!date) {\n return inputValue;\n }\n return date.toLocaleDateString();\n};\n\n// Detect locale day/month/year order once, matching toLocaleDateString() output\nconst datePartOrder = new Intl.DateTimeFormat()\n .formatToParts(new Date(2000, 0, 2))\n .filter(\n (p): p is { type: 'day' | 'month' | 'year'; value: string } =>\n p.type === 'day' || p.type === 'month' || p.type === 'year',\n )\n .map((p) => p.type);\n\nexport const parseDate = (value: string): Date | null => {\n if (!value.trim()) return null;\n\n // Try locale-aware parsing first (matches toLocaleDateString round-trip)\n const nums = value.match(/\\d+/g)?.map(Number);\n if (nums && nums.length >= 3) {\n const parts = Object.fromEntries(datePartOrder.map((type, i) => [type, nums[i]]));\n const year = parts.year;\n const month = parts.month;\n const day = parts.day;\n\n if (\n year != null &&\n month != null &&\n day != null &&\n month >= 1 &&\n month <= 12 &&\n day >= 1 &&\n day <= 31\n ) {\n const date = new Date(year, month - 1, day);\n if (date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day) {\n return date;\n }\n }\n }\n\n // Fallback: detect ISO YYYY-MM-DD and construct as local midnight to avoid UTC offset issues\n const isoMatch = value.match(/^(\\d{4})-(\\d{1,2})-(\\d{1,2})$/);\n if (isoMatch) {\n const y = Number(isoMatch[1]);\n const m = Number(isoMatch[2]) - 1;\n const d = Number(isoMatch[3]);\n const date = new Date(y, m, d);\n if (date.getFullYear() === y && date.getMonth() === m && date.getDate() === d) {\n return date;\n }\n return null;\n }\n\n const fallback = new Date(value);\n return isNaN(fallback.getTime()) ? null : fallback;\n};\n","import { useRef, useState } from 'react';\nimport type {\n ChangeEventHandler,\n ComponentProps,\n ComponentRef,\n FocusEventHandler,\n MouseEventHandler,\n} from 'react';\nimport type { Matcher } from 'react-day-picker';\n\nimport { DatePicker } from '../../components/DatePicker';\nimport { InputGroup } from '../../components/InputGroup';\nimport { useControllableState } from '../../hooks/useControllableState';\nimport { Calendar as CalendarIcon, X } from '../../icons';\nimport { createChangeInputEvent, mergeRefs } from '../../utils';\n\nimport { formatDate, parseDate } from './helpers';\n\ntype InputGroupProps = Pick<ComponentProps<typeof InputGroup>, 'focusVariant' | 'state'>;\n\ntype InputGroupInputProps = Omit<\n ComponentProps<typeof InputGroup.Input>,\n 'value' | 'defaultValue' | 'type'\n>;\n\ntype Props = InputGroupProps &\n InputGroupInputProps & {\n value?: Date | null;\n defaultValue?: Date | null;\n onValueChange?: (value: Date | null) => void;\n onValueBlur?: (value: Date | null) => void;\n allowClear?: boolean;\n disabledDays?: Matcher | Matcher[];\n endMonth?: Date;\n startMonth?: Date;\n };\n\nexport const DateInput = ({\n ref,\n\n // group props\n state,\n focusVariant,\n className,\n\n // own props\n value,\n defaultValue,\n onValueChange,\n onValueBlur,\n onChange,\n onBlur,\n onFocus,\n allowClear = false,\n disabledDays,\n endMonth,\n startMonth,\n\n // input props\n disabled,\n readOnly,\n placeholder = 'Select a date',\n ...restInputProps\n}: Props) => {\n const inputRef = useRef<ComponentRef<'input'>>(null);\n\n const [inputValue, setInputValue] = useState('');\n const [hasFocus, setHasFocus] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n const [month, setMonth] = useState<Date>(new Date());\n\n // `onValueChange` is fired explicitly per-path below (not through the hook), because commits\n // happen on blur / picker-select rather than on every keystroke.\n const [currentValue, setCurrentValue] = useControllableState<Date | null>({\n prop: value,\n defaultProp: defaultValue ?? null,\n });\n\n const canClear = allowClear && !!currentValue && !disabled && !readOnly;\n const showPicker = !disabled && !readOnly;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n const newValue = event.target.value;\n setInputValue(newValue);\n onChange?.(event);\n\n const parsedDate = parseDate(newValue);\n if (parsedDate !== null || !newValue.trim()) {\n onValueChange?.(parsedDate);\n }\n };\n\n const handleFocus: FocusEventHandler<HTMLInputElement> = (event) => {\n const formatted = formatDate(currentValue, '');\n setInputValue(formatted);\n setHasFocus(true);\n onFocus?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n setHasFocus(false);\n onBlur?.(event);\n\n // If the field still shows the formatted current value (focused and blurred\n // without editing), keep it as-is. `formatDate` uses `toLocaleDateString`,\n // whose output is not reliably parseable by `parseDate` in every locale, so\n // round-tripping an untouched value could wrongly null it.\n const text = event.target.value;\n const parsedDate = text === formatDate(currentValue, '') ? currentValue : parseDate(text);\n onValueBlur?.(parsedDate);\n\n setCurrentValue(parsedDate);\n };\n\n const handleDatePickerChange = (newValue?: Date) => {\n const dateValue = newValue ?? null;\n\n setCurrentValue(dateValue);\n onValueChange?.(dateValue);\n\n setHasFocus(false);\n setIsOpen(false);\n };\n\n const handleClear: MouseEventHandler<HTMLButtonElement> = () => {\n if (!inputRef.current) return;\n inputRef.current.value = '';\n setInputValue('');\n setCurrentValue(null);\n onValueChange?.(null);\n onChange?.(createChangeInputEvent(inputRef.current));\n };\n\n const handleOpenChange = (open: boolean) => {\n if (open) {\n setMonth(currentValue ?? new Date());\n }\n setIsOpen(open);\n };\n\n const displayValue = hasFocus ? inputValue : formatDate(currentValue, '');\n\n return (\n <InputGroup state={state} focusVariant={focusVariant} className={className}>\n <InputGroup.Input\n {...restInputProps}\n ref={mergeRefs(ref ?? null, inputRef)}\n type=\"text\"\n value={displayValue}\n placeholder={placeholder}\n onChange={handleChange}\n onFocus={handleFocus}\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 date\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleClear}\n >\n <X className=\"tw:size-4\" />\n </InputGroup.Button>\n )}\n {showPicker && (\n <DatePicker\n disabled={disabledDays}\n endMonth={endMonth}\n mode=\"single\"\n month={month}\n onMonthChange={setMonth}\n onOpenChange={handleOpenChange}\n onSelect={handleDatePickerChange}\n open={isOpen}\n selected={currentValue ?? undefined}\n startMonth={startMonth}\n >\n <InputGroup.Button aria-label=\"Select Date\">\n <CalendarIcon className=\"tw:size-4\" />\n </InputGroup.Button>\n </DatePicker>\n )}\n </InputGroup.Addon>\n )}\n </InputGroup>\n );\n};\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Popover } from "./Popover-BU7nGOv-.js";
1
+ import { Popover } from "./Popover-DnBw5Uay.js";
2
2
  import { Calendar } from "./Calendar-BnKi1kPu.js";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  //#region src/components/DatePicker/DatePicker.tsx
@@ -21,4 +21,4 @@ DatePicker.displayName = "DatePicker";
21
21
  //#endregion
22
22
  export { DatePicker };
23
23
 
24
- //# sourceMappingURL=DatePicker-CgHAu9KX.js.map
24
+ //# sourceMappingURL=DatePicker-Cg_aG_N4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker-CgHAu9KX.js","names":[],"sources":["../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react';\nimport type { PopoverContentProps, PopoverProps } from '@radix-ui/react-popover';\n\nimport type { CalendarProps } from '../Calendar';\nimport { Calendar } from '../Calendar';\nimport { Popover } from '../Popover';\n\ntype OwnPopoverProps = PropsWithChildren &\n Pick<PopoverProps, 'open' | 'onOpenChange' | 'defaultOpen'> &\n Pick<PopoverContentProps, 'align' | 'alignOffset' | 'sideOffset'>;\n\ntype DatePickerProps = OwnPopoverProps & CalendarProps;\n\nexport const DatePicker = ({\n align = 'end',\n alignOffset = -18,\n children,\n defaultOpen,\n onOpenChange,\n open,\n sideOffset = 12,\n ...calendarProps\n}: DatePickerProps) => (\n <Popover defaultOpen={defaultOpen} open={open} onOpenChange={onOpenChange}>\n <Popover.Trigger asChild>{children}</Popover.Trigger>\n <Popover.Content\n align={align}\n alignOffset={alignOffset}\n className=\"tw:w-auto tw:p-0\"\n sideOffset={sideOffset}\n >\n <Calendar {...calendarProps} />\n </Popover.Content>\n </Popover>\n);\n\nDatePicker.displayName = 'DatePicker';\n"],"mappings":";;;;AAaA,MAAa,cAAc,EACzB,QAAQ,OACR,cAAc,KACd,UACA,aACA,cACA,MACA,aAAa,IACb,GAAG,oBAEH,qBAAC,SAAD;CAAsB;CAAmB;CAAoB;CAA7D,UAAA,CACE,oBAAC,QAAQ,SAAT;EAAiB,SAAA;EAAS;CAA0B,CAAA,GACpD,oBAAC,QAAQ,SAAT;EACS;EACM;EACb,WAAU;EACE;EAEZ,UAAA,oBAAC,UAAD,EAAU,GAAI,cAAgB,CAAA;CACf,CAAA,CACV;;AAGX,WAAW,cAAc"}
1
+ {"version":3,"file":"DatePicker-Cg_aG_N4.js","names":[],"sources":["../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react';\nimport type { PopoverContentProps, PopoverProps } from '@radix-ui/react-popover';\n\nimport type { CalendarProps } from '../Calendar';\nimport { Calendar } from '../Calendar';\nimport { Popover } from '../Popover';\n\ntype OwnPopoverProps = PropsWithChildren &\n Pick<PopoverProps, 'open' | 'onOpenChange' | 'defaultOpen'> &\n Pick<PopoverContentProps, 'align' | 'alignOffset' | 'sideOffset'>;\n\ntype DatePickerProps = OwnPopoverProps & CalendarProps;\n\nexport const DatePicker = ({\n align = 'end',\n alignOffset = -18,\n children,\n defaultOpen,\n onOpenChange,\n open,\n sideOffset = 12,\n ...calendarProps\n}: DatePickerProps) => (\n <Popover defaultOpen={defaultOpen} open={open} onOpenChange={onOpenChange}>\n <Popover.Trigger asChild>{children}</Popover.Trigger>\n <Popover.Content\n align={align}\n alignOffset={alignOffset}\n className=\"tw:w-auto tw:p-0\"\n sideOffset={sideOffset}\n >\n <Calendar {...calendarProps} />\n </Popover.Content>\n </Popover>\n);\n\nDatePicker.displayName = 'DatePicker';\n"],"mappings":";;;;AAaA,MAAa,cAAc,EACzB,QAAQ,OACR,cAAc,KACd,UACA,aACA,cACA,MACA,aAAa,IACb,GAAG,oBAEH,qBAAC,SAAD;CAAsB;CAAmB;CAAoB;CAA7D,UAAA,CACE,oBAAC,QAAQ,SAAT;EAAiB,SAAA;EAAS;CAA0B,CAAA,GACpD,oBAAC,QAAQ,SAAT;EACS;EACM;EACb,WAAU;EACE;EAEZ,UAAA,oBAAC,UAAD,EAAU,GAAI,cAAgB,CAAA;CACf,CAAA,CACV;;AAGX,WAAW,cAAc"}
@@ -1,9 +1,9 @@
1
- import { createChangeInputEvent } from "./utils-LQ4jJA-9.js";
1
+ import { createChangeInputEvent } from "./utils-DwC9u0tM.js";
2
2
  import { mergeRefs } from "./internal/utils/mergeRefs.js";
3
3
  import { Calendar, X } from "./icons-ZIeZXXS7.js";
4
- import { InputGroup } from "./InputGroup-Dm014ruw.js";
4
+ import { InputGroup } from "./InputGroup-CZv_7QlM.js";
5
5
  import { useControllableState } from "./useControllableState-CUYXMsfz.js";
6
- import { DatePicker } from "./DatePicker-CgHAu9KX.js";
6
+ import { DatePicker } from "./DatePicker-Cg_aG_N4.js";
7
7
  import { useRef, useState } from "react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
  //#region src/blocks/DateRangeInput/helpers.ts
@@ -36,7 +36,7 @@ const parseDateRange = (value) => {
36
36
  };
37
37
  //#endregion
38
38
  //#region src/blocks/DateRangeInput/DateRangeInput.tsx
39
- const DateRangeInput = ({ ref, state, variant, focusVariant, sizing, className, value: valueProp, defaultValue, onValueChange, onValueBlur, onChange, onBlur, onFocus, allowClear = false, startMonth, endMonth, disabled, readOnly, placeholder = "Select a date range", ...restInputProps }) => {
39
+ const DateRangeInput = ({ ref, state, focusVariant, className, value: valueProp, defaultValue, onValueChange, onValueBlur, onChange, onBlur, onFocus, allowClear = false, startMonth, endMonth, disabled, readOnly, placeholder = "Select a date range", ...restInputProps }) => {
40
40
  const inputRef = useRef(null);
41
41
  const [inputValue, setInputValue] = useState("");
42
42
  const [hasFocus, setHasFocus] = useState(false);
@@ -89,8 +89,6 @@ const DateRangeInput = ({ ref, state, variant, focusVariant, sizing, className,
89
89
  const displayValue = hasFocus ? inputValue : formatDateRange(currentValue, "");
90
90
  return /* @__PURE__ */ jsxs(InputGroup, {
91
91
  state,
92
- variant,
93
- sizing,
94
92
  focusVariant,
95
93
  className,
96
94
  children: [/* @__PURE__ */ jsx(InputGroup.Input, {
@@ -132,4 +130,4 @@ const DateRangeInput = ({ ref, state, variant, focusVariant, sizing, className,
132
130
  //#endregion
133
131
  export { DateRangeInput };
134
132
 
135
- //# sourceMappingURL=DateRangeInput-DtlAffS1.js.map
133
+ //# sourceMappingURL=DateRangeInput-BYVHf9zo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateRangeInput-BYVHf9zo.js","names":["CalendarIcon"],"sources":["../src/blocks/DateRangeInput/helpers.ts","../src/blocks/DateRangeInput/DateRangeInput.tsx"],"sourcesContent":["import type { DateRange } from 'react-day-picker';\n\nexport const formatDateRange = (\n range: DateRange | null | undefined,\n inputValue: string,\n): string => {\n if (!range) {\n return inputValue;\n }\n\n const { from, to } = range;\n const fromStr = from?.toLocaleDateString();\n const toStr = to?.toLocaleDateString();\n return `${fromStr} - ${toStr}`;\n};\n\nconst ISO_DATE_ONLY = /^\\d{4}-\\d{2}-\\d{2}$/;\n\n/**\n * Parses date-only ISO (`2024-01-15`) as local time, not UTC midnight.\n *\n * - UTC midnight reads back as the previous day west of UTC.\n * - Keeps `new Date` validation; `new Date(y, m - 1, d)` would roll `2024-13-45` over.\n * - Other accepted formats already parse as local time.\n */\nconst parseLocalDate = (value: string): Date =>\n ISO_DATE_ONLY.test(value) ? new Date(`${value}T00:00:00`) : new Date(value);\n\nexport const parseDateRange = (value: string): DateRange | null => {\n const parts = value.split(' - ');\n if (parts.length !== 2) {\n return null;\n }\n\n const [fromPart, toPart] = parts;\n if (!fromPart || !toPart) {\n return null;\n }\n\n const from = parseLocalDate(fromPart.trim());\n const to = parseLocalDate(toPart.trim());\n\n if (isNaN(from.getTime()) || isNaN(to.getTime())) {\n return null;\n }\n\n return { from, to };\n};\n","import { useRef, useState } from 'react';\nimport type { ChangeEventHandler, ComponentProps, ComponentRef, FocusEventHandler } from 'react';\nimport type { DateRange } from 'react-day-picker';\n\nimport { DatePicker } from '../../components/DatePicker';\nimport { InputGroup } from '../../components/InputGroup';\nimport { useControllableState } from '../../hooks/useControllableState';\nimport { Calendar as CalendarIcon, X } from '../../icons';\nimport { createChangeInputEvent, mergeRefs } from '../../utils';\n\nimport { formatDateRange, parseDateRange } from './helpers';\n\ntype InputGroupProps = Pick<ComponentProps<typeof InputGroup>, 'focusVariant' | 'state'>;\n\ntype InputGroupInputProps = Omit<\n ComponentProps<typeof InputGroup.Input>,\n 'value' | 'defaultValue' | 'type'\n>;\n\ntype Props = InputGroupProps &\n InputGroupInputProps & {\n value?: DateRange | null;\n defaultValue?: DateRange | null;\n onValueChange?: (value: DateRange | null) => void;\n onValueBlur?: (value: DateRange | null) => void;\n allowClear?: boolean;\n startMonth?: Date;\n endMonth?: Date;\n };\n\nexport const DateRangeInput = ({\n ref,\n\n // group props\n state,\n focusVariant,\n className,\n\n // own props\n value: valueProp,\n defaultValue,\n onValueChange,\n onValueBlur,\n onChange,\n onBlur,\n onFocus,\n allowClear = false,\n startMonth,\n endMonth,\n\n // input props\n disabled,\n readOnly,\n placeholder = 'Select a date range',\n ...restInputProps\n}: Props) => {\n const inputRef = useRef<ComponentRef<'input'>>(null);\n\n const [inputValue, setInputValue] = useState('');\n const [hasFocus, setHasFocus] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n const [month, setMonth] = useState<Date>(new Date());\n\n // `onValueChange` is fired explicitly per-path below (not through the hook), because commits\n // happen on blur / picker-select rather than on every keystroke.\n const [currentValue, setCurrentValue] = useControllableState<DateRange | null>({\n prop: valueProp,\n defaultProp: defaultValue ?? null,\n });\n\n const canClear = allowClear && !!currentValue && !disabled && !readOnly;\n const showPicker = !disabled && !readOnly;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n const newValue = event.target.value;\n setInputValue(newValue);\n onChange?.(event);\n\n const parsedRange = parseDateRange(newValue);\n if (parsedRange !== null || !newValue.trim()) {\n onValueChange?.(parsedRange);\n }\n };\n\n const handleFocus: FocusEventHandler<HTMLInputElement> = (event) => {\n setInputValue(formatDateRange(currentValue, ''));\n setHasFocus(true);\n onFocus?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n setHasFocus(false);\n onBlur?.(event);\n\n // If the field still shows the formatted current value (focused and blurred\n // without editing), keep it as-is. `formatDateRange` uses `toLocaleDateString`,\n // whose output is not reliably parseable by `new Date(...)` in every locale, so\n // round-tripping an untouched value through `parseDateRange` could wrongly null it.\n const text = event.target.value;\n const parsedRange =\n text === formatDateRange(currentValue, '') ? currentValue : parseDateRange(text);\n onValueBlur?.(parsedRange);\n\n setCurrentValue(parsedRange);\n };\n\n const handleDatePickerChange = (newValue: DateRange | undefined) => {\n const rangeValue = newValue ?? null;\n\n setCurrentValue(rangeValue);\n onValueChange?.(rangeValue);\n\n setHasFocus(false);\n };\n\n const handleClear = () => {\n if (!inputRef.current) return;\n inputRef.current.value = '';\n setInputValue('');\n setCurrentValue(null);\n onValueChange?.(null);\n onChange?.(createChangeInputEvent(inputRef.current));\n };\n\n const handleOpenChange = (open: boolean) => {\n if (open) {\n setMonth(currentValue?.from ?? new Date());\n }\n setIsOpen(open);\n };\n\n const displayValue = hasFocus ? inputValue : formatDateRange(currentValue, '');\n\n return (\n <InputGroup state={state} focusVariant={focusVariant} className={className}>\n <InputGroup.Input\n {...restInputProps}\n ref={mergeRefs(ref ?? null, inputRef)}\n type=\"text\"\n value={displayValue}\n placeholder={placeholder}\n onChange={handleChange}\n onFocus={handleFocus}\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 date range\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleClear}\n >\n <X className=\"tw:size-4\" />\n </InputGroup.Button>\n )}\n {showPicker && (\n <DatePicker\n endMonth={endMonth}\n mode=\"range\"\n month={month}\n onMonthChange={setMonth}\n onOpenChange={handleOpenChange}\n onSelect={handleDatePickerChange}\n open={isOpen}\n startMonth={startMonth}\n selected={currentValue ?? undefined}\n >\n <InputGroup.Button aria-label=\"Select date range\">\n <CalendarIcon className=\"tw:size-4\" />\n </InputGroup.Button>\n </DatePicker>\n )}\n </InputGroup.Addon>\n )}\n </InputGroup>\n );\n};\n"],"mappings":"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"}
@@ -1,11 +1,10 @@
1
1
  import { cn } from "./classNames-DcGnTh2N.js";
2
- import { useArgoDesign } from "./context-U293r3v-.js";
3
2
  import { ChevronDown } from "./icons-ZIeZXXS7.js";
4
- import { Button } from "./Button-D2JqBAq7.js";
5
- import { Popover } from "./Popover-BU7nGOv-.js";
3
+ import { Button } from "./Button-BNkyYU8u.js";
4
+ import { Popover } from "./Popover-DnBw5Uay.js";
6
5
  import { Calendar } from "./Calendar-BnKi1kPu.js";
7
- import { overlayTriggerVariants } from "./styles-YQdM7G8c.js";
8
- import { TimePicker, formatTime, pad, parseTime } from "./TimePicker-DyyV3nw8.js";
6
+ import { overlayTriggerVariants } from "./styles-T8xwr0sR.js";
7
+ import { TimePicker, formatTime, pad, parseTime } from "./TimePicker-lk3NGqeK.js";
9
8
  import { useState } from "react";
10
9
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
11
10
  //#region src/components/DateRangePicker/DateRangePicker.tsx
@@ -45,8 +44,7 @@ const TimeField = ({ label, date, onChange }) => /* @__PURE__ */ jsxs("div", {
45
44
  })]
46
45
  });
47
46
  /** Picks a `{ from, to }` range, with optional presets, time row and Apply step; single date: `DatePicker`. */
48
- const DateRangePicker = ({ align = "start", alignOffset, className, defaultOpen, disabled = false, disabledDays, formatDate, label, onChange, onOpenChange, onPresetSelect, open, placeholder = "Pick a date range", presets, requireApply = false, sideOffset, value, variant, withTime = false }) => {
49
- const isArgoDesign = useArgoDesign();
47
+ const DateRangePicker = ({ align = "start", alignOffset, className, defaultOpen, disabled = false, disabledDays, formatDate, label, onChange, onOpenChange, onPresetSelect, open, placeholder = "Pick a date range", presets, requireApply = false, sideOffset, value, withTime = false }) => {
50
48
  const [draft, setDraft] = useState(value);
51
49
  const handleOpenChange = (nextOpen) => {
52
50
  if (nextOpen) setDraft(value);
@@ -74,10 +72,7 @@ const DateRangePicker = ({ align = "start", alignOffset, className, defaultOpen,
74
72
  onOpenChange: handleOpenChange,
75
73
  children: [/* @__PURE__ */ jsxs(Popover.Trigger, {
76
74
  disabled,
77
- className: cn(overlayTriggerVariants({
78
- variant: isArgoDesign ? "argo" : variant,
79
- sizing: "medium"
80
- }), className),
75
+ className: cn(overlayTriggerVariants(), className),
81
76
  children: [/* @__PURE__ */ jsx("span", {
82
77
  className: cn("tw:truncate", !triggerLabel && "tw:text-muted-foreground"),
83
78
  children: triggerLabel ?? placeholder
@@ -152,4 +147,4 @@ DateRangePicker.displayName = "DateRangePicker";
152
147
  //#endregion
153
148
  export { DateRangePicker };
154
149
 
155
- //# sourceMappingURL=DateRangePicker-CXpXPMoh.js.map
150
+ //# sourceMappingURL=DateRangePicker-m47cSV1r.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateRangePicker-m47cSV1r.js","names":[],"sources":["../src/components/DateRangePicker/DateRangePicker.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { ReactNode } from 'react';\nimport type { DateRange as DayPickerDateRange, Matcher } from 'react-day-picker';\nimport type { PopoverContentProps, PopoverProps } from '@radix-ui/react-popover';\n\nimport { ChevronDown } from '../../icons';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { Calendar } from '../Calendar';\nimport { overlayTriggerVariants } from '../OverlayTrigger/styles';\nimport { Popover } from '../Popover';\nimport { TimePicker } from '../TimePicker';\nimport { formatTime, pad, parseTime } from '../TimePicker/utils';\n\nexport type DateRange = {\n from: Date;\n to?: Date;\n};\n\nexport type DateRangePreset = {\n label: string;\n /** Omit for a `value` preset, or for a clear preset (\"All time\") that calls `onChange(undefined)`. */\n range?: DateRange;\n /** Echoed through `onPresetSelect` instead of `range` — e.g. a server-resolved token like `-7 days`. */\n value?: string;\n};\n\ntype DateRangePickerProps = {\n value: DateRange | undefined;\n onChange: (range: DateRange | undefined) => void;\n /** Replaces the trigger's whole range text, e.g. the active preset name; to restyle dates use `formatDate`. */\n label?: ReactNode;\n /** Formats each end of the range on the trigger in place of ISO; the from → to join stays. */\n formatDate?: (date: Date) => string;\n placeholder?: string;\n presets?: readonly DateRangePreset[];\n /** Called instead of `onChange` when a preset is picked, with the preset itself. */\n onPresetSelect?: (preset: DateRangePreset) => void;\n /** Adds a start/end time-of-day row; the emitted `from` / `to` then carry hours and minutes. */\n withTime?: boolean;\n /** Hold edits in a draft and emit only on Apply, so one range costs one `onChange`. */\n requireApply?: boolean;\n /** Days that cannot be picked, as a react-day-picker matcher — e.g. `{ after: new Date() }`. */\n disabledDays?: Matcher | Matcher[];\n disabled?: boolean;\n className?: string;\n} & Pick<PopoverProps, 'open' | 'onOpenChange' | 'defaultOpen'> &\n Pick<PopoverContentProps, 'align' | 'alignOffset' | 'sideOffset'>;\n\nconst timeOf = (date: Date) => formatTime(date.getHours(), date.getMinutes());\n\nconst isoDate = (date: Date) =>\n `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;\n\nconst formatRange = (\n range: DateRange | undefined,\n format: (date: Date) => string,\n): string | null => {\n if (!range?.from) return null;\n return range.to ? `${format(range.from)} → ${format(range.to)}` : format(range.from);\n};\n\nconst withHoursMinutes = (target: Date, hour: number, minute: number) => {\n const next = new Date(target);\n next.setHours(hour, minute, 0, 0);\n return next;\n};\n\nconst withTimeOf = (target: Date, source: Date) =>\n withHoursMinutes(target, source.getHours(), source.getMinutes());\n\n/** Returns `target` at `time` (\"HH:mm\"); unparseable input leaves it alone. */\nconst atTime = (target: Date, time: string) => {\n const { hour, minute } = parseTime(time);\n return hour === null || minute === null ? target : withHoursMinutes(target, hour, minute);\n};\n\ntype TimeFieldProps = {\n label: string;\n date: Date | undefined;\n onChange: (time: string) => void;\n};\n\n/** Time-of-day for one end of the range, on the same `TimePicker` the rest of the app uses. */\nconst TimeField = ({ label, date, onChange }: TimeFieldProps) => (\n <div className=\"tw:flex tw:items-center tw:gap-2 tw:text-sm\">\n <span className=\"tw:text-muted-foreground\">{label}</span>\n <TimePicker selected={date ? timeOf(date) : null} onSelect={onChange}>\n <Button variant=\"outline\" size=\"small\" disabled={!date} aria-label={`${label} time`}>\n {date ? timeOf(date) : '--:--'}\n </Button>\n </TimePicker>\n </div>\n);\n\n/** Picks a `{ from, to }` range, with optional presets, time row and Apply step; single date: `DatePicker`. */\nexport const DateRangePicker = ({\n align = 'start',\n alignOffset,\n className,\n defaultOpen,\n disabled = false,\n disabledDays,\n formatDate,\n label,\n onChange,\n onOpenChange,\n onPresetSelect,\n open,\n placeholder = 'Pick a date range',\n presets,\n requireApply = false,\n sideOffset,\n value,\n withTime = false,\n}: DateRangePickerProps) => {\n const [draft, setDraft] = useState<DateRange | undefined>(value);\n\n const handleOpenChange = (nextOpen: boolean) => {\n // Reopening discards a cancelled draft.\n if (nextOpen) setDraft(value);\n onOpenChange?.(nextOpen);\n };\n\n const current = requireApply ? draft : value;\n\n const edit = (range: DateRange | undefined) => {\n if (requireApply) setDraft(range);\n else onChange(range);\n };\n\n const handleSelect = (range: DayPickerDateRange | undefined) => {\n if (!range?.from) {\n edit(undefined);\n return;\n }\n\n // Keeps the set time-of-day; otherwise a day click resets it to midnight.\n edit({\n from: current?.from ? withTimeOf(range.from, current.from) : range.from,\n to: range.to && current?.to ? withTimeOf(range.to, current.to) : range.to,\n });\n };\n\n const format =\n formatDate ?? ((date: Date) => (withTime ? `${isoDate(date)} ${timeOf(date)}` : isoDate(date)));\n const triggerLabel = label ?? formatRange(value, format);\n\n return (\n <Popover open={open} defaultOpen={defaultOpen} onOpenChange={handleOpenChange}>\n <Popover.Trigger disabled={disabled} className={cn(overlayTriggerVariants(), className)}>\n <span className={cn('tw:truncate', !triggerLabel && 'tw:text-muted-foreground')}>\n {triggerLabel ?? placeholder}\n </span>\n <ChevronDown className=\"tw:size-4 tw:text-muted-foreground\" />\n </Popover.Trigger>\n <Popover.Content\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className=\"tw:w-auto tw:p-0\"\n >\n <div className=\"tw:flex\">\n {presets && presets.length > 0 ? (\n <div className=\"tw:flex tw:flex-col tw:gap-1 tw:border-r tw:border-solid tw:border-border tw:p-2\">\n {presets.map((preset) => (\n <Popover.Close asChild key={preset.label}>\n <Button\n variant=\"invisible\"\n size=\"small\"\n className=\"tw:justify-start\"\n onClick={() =>\n onPresetSelect ? onPresetSelect(preset) : onChange(preset.range)\n }\n >\n {preset.label}\n </Button>\n </Popover.Close>\n ))}\n </div>\n ) : null}\n <Calendar\n mode=\"range\"\n selected={current}\n onSelect={handleSelect}\n numberOfMonths={2}\n defaultMonth={current?.from}\n disabled={disabledDays}\n />\n </div>\n {(withTime || requireApply) && (\n <div className=\"tw:flex tw:items-center tw:gap-3 tw:border-t tw:border-solid tw:border-border tw:p-3\">\n {withTime && (\n <>\n <TimeField\n label=\"From\"\n date={current?.from}\n onChange={(time) =>\n current?.from && edit({ ...current, from: atTime(current.from, time) })\n }\n />\n <TimeField\n label=\"To\"\n date={current?.to}\n onChange={(time) =>\n current?.to && edit({ ...current, to: atTime(current.to, time) })\n }\n />\n </>\n )}\n {requireApply && (\n <div className=\"tw:ml-auto tw:flex tw:gap-2\">\n <Popover.Close asChild>\n <Button variant=\"outline\" size=\"small\">\n Cancel\n </Button>\n </Popover.Close>\n <Popover.Close asChild>\n <Button size=\"small\" disabled={!draft?.from} onClick={() => onChange(draft)}>\n Apply\n </Button>\n </Popover.Close>\n </div>\n )}\n </div>\n )}\n </Popover.Content>\n </Popover>\n );\n};\n\nDateRangePicker.displayName = 'DateRangePicker';\n"],"mappings":"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"}
@@ -1,18 +1,12 @@
1
1
  import { cn } from "./classNames-DcGnTh2N.js";
2
- import { useArgoDesign } from "./context-U293r3v-.js";
3
2
  import { Check, ChevronRight, Circle, Loader2, ToggleRight } from "./icons-ZIeZXXS7.js";
4
- import { radioCircleVariants, radioIndicatorVariants } from "./styles-BDA5rQz3.js";
3
+ import { radioCircleVariants, radioIndicatorVariants } from "./styles-DxazJ8Mz.js";
5
4
  import { ScrollArea } from "./internal/components/ScrollArea.js";
6
- import { createContext, use, useMemo } from "react";
7
5
  import { Root, Slottable } from "@radix-ui/react-slot";
8
6
  import { cva } from "class-variance-authority";
9
7
  import { jsx, jsxs } from "react/jsx-runtime";
10
8
  import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
11
9
  import { Group, Root as Root$1, Trigger } from "@radix-ui/react-dropdown-menu";
12
- //#region src/components/DropdownMenu/DropdownMenuContext.tsx
13
- const DropdownMenuContext = createContext({ variant: "default" });
14
- const useDropdownMenuContext = () => use(DropdownMenuContext);
15
- //#endregion
16
10
  //#region src/components/DropdownMenu/DropdownMenuItemIndicator.tsx
17
11
  const variants = cva([
18
12
  "tailwindcss-preflight",
@@ -32,26 +26,21 @@ const variants = cva([
32
26
  "tw:border",
33
27
  "tw:border-solid",
34
28
  "tw:rounded",
35
- "tw:group-data-[variant=default]/dropdown-menu-content:border-input",
36
- "tw:group-data-[variant=argo]/dropdown-menu-content:border-input",
29
+ "tw:border-input",
37
30
  "tw:[&_svg:not([class*=\"tw:size-\"])]:size-3",
38
31
  "tw:data-[state=unchecked]:[&_svg]:hidden",
39
- "tw:group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:border-primary",
40
- "tw:group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:bg-primary",
41
- "tw:group-data-[variant=default]/dropdown-menu-content:data-[state=checked]:border-primary",
42
- "tw:group-data-[variant=default]/dropdown-menu-content:data-[state=checked]:bg-primary"
32
+ "tw:data-[state=checked]:border-primary",
33
+ "tw:data-[state=checked]:bg-primary"
43
34
  ],
44
35
  switch: [
45
36
  "tw:size-5",
46
37
  "tw:[&_svg:not([class*=\"tw:size-\"])]:size-5",
47
38
  "tw:text-muted-foreground",
48
39
  "tw:data-[state=unchecked]:rotate-180",
49
- "tw:group-data-[variant=default]/dropdown-menu-content:data-[state=checked]:text-primary",
50
- "tw:group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:text-primary"
40
+ "tw:data-[state=checked]:text-primary"
51
41
  ]
52
42
  } } });
53
43
  const DropdownMenuItemIndicator = ({ variant, className, forceMount: forceMountProp, ...rest }) => {
54
- const { variant: menuVariant } = useDropdownMenuContext();
55
44
  const isRadio = variant === "radio";
56
45
  const IconComp = (() => {
57
46
  if (variant === "switch") return ToggleRight;
@@ -66,21 +55,21 @@ const DropdownMenuItemIndicator = ({ variant, className, forceMount: forceMountP
66
55
  return /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, {
67
56
  ...rest,
68
57
  forceMount,
69
- className: cn(variants({ variant }), isRadio && radioCircleVariants({ variant: menuVariant }), className),
70
- children: /* @__PURE__ */ jsx(IconComp, { className: isRadio ? radioIndicatorVariants({ variant: menuVariant }) : void 0 })
58
+ className: cn(variants({ variant }), isRadio && radioCircleVariants(), className),
59
+ children: /* @__PURE__ */ jsx(IconComp, { className: isRadio ? radioIndicatorVariants() : void 0 })
71
60
  });
72
61
  };
73
62
  //#endregion
74
63
  //#region src/components/DropdownMenu/ItemIcon.tsx
75
64
  const ItemIcon = ({ className, children, ...props }) => /* @__PURE__ */ jsx("span", {
76
65
  ...props,
77
- className: cn("tw:inline-flex", "tw:items-center", "tw:justify-center", "tw:aspect-square", "tw:size-5", "tw:[&_svg:not([class*=\"tw:size-\"])]:size-4", "tw:group-data-[variant=default]/dropdown-menu-content:text-muted-foreground", "tw:group-data-[variant=argo]/dropdown-menu-content:text-primary", "tw:group-data-[variant=argo]/dropdown-menu-content:group-aria-disabled:text-muted-foreground", "tw:group-data-[variant=default]/dropdown-menu-content:group-hover:text-primary", className),
66
+ className: cn("tw:inline-flex", "tw:items-center", "tw:justify-center", "tw:aspect-square", "tw:size-5", "tw:[&_svg:not([class*=\"tw:size-\"])]:size-4", "tw:text-primary", "tw:group-aria-disabled:text-muted-foreground", className),
78
67
  children
79
68
  });
80
69
  //#endregion
81
70
  //#region src/components/DropdownMenu/styles.ts
82
- const itemVariants = cn("tailwindcss-preflight", "tw:outline-hidden", "tw:group", "tw:peer", "tw:relative", "tw:flex", "tw:flex-1", "tw:items-center", "tw:gap-2", "tw:[&_svg:not([class*=\"tw:size-\"])]:size-4", "tw:cursor-pointer", "tw:select-none", "tw:transition-colors", "tw:p-2", "tw:font-sans", "tw:text-sm", "tw:aria-disabled:pointer-events-none", "tw:aria-disabled:opacity-disabled", "tw:focus-visible:outline-hidden", "tw:group-data-[variant=default]/dropdown-menu-content:rounded", "tw:group-data-[variant=default]/dropdown-menu-content:focus:bg-muted", "tw:group-data-[variant=default]/dropdown-menu-content:focus:text-foreground", "tw:group-data-[variant=default]/dropdown-menu-content:hover:bg-muted", "tw:group-data-[variant=default]/dropdown-menu-content:hover:text-foreground", "tw:group-data-[variant=argo]/dropdown-menu-content:rounded-md", "tw:group-data-[variant=argo]/dropdown-menu-content:text-popover-foreground", "tw:group-data-[variant=argo]/dropdown-menu-content:focus:text-[var(--hover-foreground,rgb(var(--primary)))]", "tw:group-data-[variant=argo]/dropdown-menu-content:focus:bg-[var(--hover,color-mix(in_oklab,rgb(var(--primary))_10%,transparent))]", "tw:group-data-[variant=argo]/dropdown-menu-content:hover:text-[var(--hover-foreground,rgb(var(--primary)))]", "tw:group-data-[variant=argo]/dropdown-menu-content:hover:bg-[var(--hover,color-mix(in_oklab,rgb(var(--primary))_10%,transparent))]");
83
- const contentVariants = cn("tailwindcss-preflight", "tw:group/dropdown-menu-content", "tw:z-[1055]", "tw:flex", "tw:flex-col", "tw:origin-(--radix-dropdown-menu-content-transform-origin)", "tw:max-h-[var(--radix-dropdown-menu-content-available-height)]", "tw:min-w-32", "tw:border", "tw:border-border", "tw:shadow-md", "tw:bg-popover", "tw:text-popover-foreground", "tw:data-[variant=default]:rounded-md", "tw:data-[variant=argo]:rounded-popover", "tw:data-[state=open]:animate-in", "tw:data-[state=open]:fade-in-0", "tw:data-[state=open]:zoom-in-95", "tw:data-[state=closed]:animate-out", "tw:data-[state=closed]:fade-out-0", "tw:data-[state=closed]:zoom-out-95", "tw:data-[side=bottom]:slide-in-from-top-2", "tw:data-[side=left]:slide-in-from-right-2", "tw:data-[side=right]:slide-in-from-left-2", "tw:data-[side=top]:slide-in-from-bottom-2");
71
+ const itemVariants = cn("tailwindcss-preflight", "tw:outline-hidden", "tw:group", "tw:peer", "tw:relative", "tw:flex", "tw:flex-1", "tw:items-center", "tw:gap-2", "tw:[&_svg:not([class*=\"tw:size-\"])]:size-4", "tw:cursor-pointer", "tw:select-none", "tw:transition-colors", "tw:p-2", "tw:font-sans", "tw:text-sm", "tw:aria-disabled:pointer-events-none", "tw:aria-disabled:opacity-disabled", "tw:focus-visible:outline-hidden", "tw:rounded-md", "tw:text-popover-foreground", "tw:focus:text-[var(--hover-foreground,rgb(var(--primary)))]", "tw:focus:bg-[var(--hover,color-mix(in_oklab,rgb(var(--primary))_10%,transparent))]", "tw:hover:text-[var(--hover-foreground,rgb(var(--primary)))]", "tw:hover:bg-[var(--hover,color-mix(in_oklab,rgb(var(--primary))_10%,transparent))]");
72
+ const contentVariants = cn("tailwindcss-preflight", "tw:z-overlay", "tw:flex", "tw:flex-col", "tw:origin-(--radix-dropdown-menu-content-transform-origin)", "tw:max-h-[var(--radix-dropdown-menu-content-available-height)]", "tw:min-w-32", "tw:border", "tw:border-border", "tw:rounded-popover", "tw:shadow-md", "tw:bg-popover", "tw:text-popover-foreground", "tw:data-[state=open]:animate-in", "tw:data-[state=open]:fade-in-0", "tw:data-[state=open]:zoom-in-95", "tw:data-[state=closed]:animate-out", "tw:data-[state=closed]:fade-out-0", "tw:data-[state=closed]:zoom-out-95", "tw:data-[side=bottom]:slide-in-from-top-2", "tw:data-[side=left]:slide-in-from-right-2", "tw:data-[side=right]:slide-in-from-left-2", "tw:data-[side=top]:slide-in-from-bottom-2");
84
73
  //#endregion
85
74
  //#region src/components/DropdownMenu/DropdownMenuCheckboxItem.tsx
86
75
  const DropdownMenuCheckboxItem = ({ className, children, checked, closeOnSelect = false, onSelect, indicatorAlign = "start", indicator = "checkbox", isLoading = false, icon, ...props }) => {
@@ -111,25 +100,21 @@ const DropdownMenuCheckboxItem = ({ className, children, checked, closeOnSelect
111
100
  };
112
101
  //#endregion
113
102
  //#region src/components/DropdownMenu/DropdownMenuContent.tsx
114
- const DropdownMenuContent = ({ className, sideOffset = 4, forceMount, children, viewPortClassName, container, ...props }) => {
115
- const { variant } = useDropdownMenuContext();
116
- return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, {
117
- forceMount: forceMount || void 0,
118
- container,
119
- children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.Content, {
120
- ...props,
121
- "data-variant": variant,
122
- sideOffset,
123
- className: contentVariants,
124
- children: /* @__PURE__ */ jsx(ScrollArea, {
125
- className,
126
- viewPortClassName: cn("tw:p-2", "tw:max-h-[var(--radix-dropdown-menu-content-available-height)]", viewPortClassName),
127
- scrollBarClassName: "tw:w-1.5",
128
- children
129
- })
103
+ const DropdownMenuContent = ({ className, sideOffset = 4, forceMount, children, viewPortClassName, container, ...props }) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, {
104
+ forceMount: forceMount || void 0,
105
+ container,
106
+ children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.Content, {
107
+ ...props,
108
+ sideOffset,
109
+ className: contentVariants,
110
+ children: /* @__PURE__ */ jsx(ScrollArea, {
111
+ className,
112
+ viewPortClassName: cn("tw:p-2", "tw:max-h-[var(--radix-dropdown-menu-content-available-height)]", viewPortClassName),
113
+ scrollBarClassName: "tw:w-1.5",
114
+ children
130
115
  })
131
- });
132
- };
116
+ })
117
+ });
133
118
  //#endregion
134
119
  //#region src/components/DropdownMenu/DropdownMenuItem.tsx
135
120
  const DropdownMenuItem = ({ ref, className, asModalTrigger = false, onSelect, onPointerLeave, onPointerMove, children, asChild, icon, iconClassName, isLoading = false, ...props }) => {
@@ -219,10 +204,7 @@ const DropdownMenuRadioItem = ({ className, children, closeOnSelect, onSelect, i
219
204
  onSelect?.(event);
220
205
  };
221
206
  return /* @__PURE__ */ jsxs(DropdownMenuPrimitive.RadioItem, {
222
- className: cn(itemVariants, "tw:data-[state=checked]:cursor-default", {
223
- "tw:group-data-[variant=default]/dropdown-menu-content:data-[state=checked]:bg-secondary": indicator === "none",
224
- "tw:group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:bg-[var(--selected,color-mix(in_oklab,rgb(var(--primary))_10%,transparent))]": indicator !== "radio"
225
- }, className),
207
+ className: cn(itemVariants, "tw:data-[state=checked]:cursor-default", { "tw:data-[state=checked]:bg-[var(--selected,color-mix(in_oklab,rgb(var(--primary))_10%,transparent))]": indicator !== "radio" }, className),
226
208
  onSelect: handleSelect,
227
209
  ...props,
228
210
  children: [
@@ -242,7 +224,7 @@ const DropdownMenuRadioItem = ({ className, children, closeOnSelect, onSelect, i
242
224
  //#endregion
243
225
  //#region src/components/DropdownMenu/DropdownMenuSeparator.tsx
244
226
  const DropdownMenuSeparator = ({ className, ...props }) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Separator, {
245
- className: cn("tw:relative", "tw:z-10", "tw:flex", "tw:items-center", "tw:justify-center", "tw:w-full", "tw:before:content-[\"\"]", "tw:before:w-full", "tw:before:h-px", "tw:group-data-[variant=default]/dropdown-menu-content:py-2", "tw:group-data-[variant=default]/dropdown-menu-content:before:bg-border", "tw:group-data-[variant=argo]/dropdown-menu-content:py-1", "tw:group-data-[variant=argo]/dropdown-menu-content:before:bg-border", className),
227
+ className: cn("tw:relative", "tw:z-10", "tw:flex", "tw:items-center", "tw:justify-center", "tw:w-full", "tw:before:content-[\"\"]", "tw:before:w-full", "tw:before:h-px", "tw:before:bg-border", "tw:py-1", className),
246
228
  ...props
247
229
  });
248
230
  //#endregion
@@ -250,14 +232,10 @@ const DropdownMenuSeparator = ({ className, ...props }) => /* @__PURE__ */ jsx(D
250
232
  const DropdownMenuSub = DropdownMenuPrimitive.Sub;
251
233
  //#endregion
252
234
  //#region src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSubContent.tsx
253
- const DropdownMenuSubContent = ({ className, ...props }) => {
254
- const { variant } = useDropdownMenuContext();
255
- return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.SubContent, {
256
- "data-variant": variant,
257
- className: cn(contentVariants, "tw:p-2", className),
258
- ...props
259
- }) });
260
- };
235
+ const DropdownMenuSubContent = ({ className, ...props }) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.SubContent, {
236
+ className: cn(contentVariants, "tw:p-2", className),
237
+ ...props
238
+ }) });
261
239
  //#endregion
262
240
  //#region src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSubTrigger.tsx
263
241
  const DropdownMenuSubTrigger = ({ className, children, icon, ...props }) => {
@@ -281,17 +259,10 @@ const DropdownMenuTrigger = ({ ref, className, ...props }) => /* @__PURE__ */ js
281
259
  });
282
260
  //#endregion
283
261
  //#region src/components/DropdownMenu/DropdownMenu.tsx
284
- const DropdownMenu = ({ modal = false, ...props }) => {
285
- const effectiveVariant = useArgoDesign() ? "argo" : "default";
286
- const contextValue = useMemo(() => ({ variant: effectiveVariant }), [effectiveVariant]);
287
- return /* @__PURE__ */ jsx(DropdownMenuContext, {
288
- value: contextValue,
289
- children: /* @__PURE__ */ jsx(Root$1, {
290
- ...props,
291
- modal
292
- })
293
- });
294
- };
262
+ const DropdownMenu = ({ modal = false, ...props }) => /* @__PURE__ */ jsx(Root$1, {
263
+ ...props,
264
+ modal
265
+ });
295
266
  /**
296
267
  * Main Layout
297
268
  */
@@ -317,4 +288,4 @@ DropdownMenu.ItemDescription = DropdownMenuItemDescription;
317
288
  //#endregion
318
289
  export { DropdownMenu };
319
290
 
320
- //# sourceMappingURL=DropdownMenu-B1gGvZoh.js.map
291
+ //# sourceMappingURL=DropdownMenu-Bum99mVf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropdownMenu-Bum99mVf.js","names":["Root"],"sources":["../src/components/DropdownMenu/DropdownMenuItemIndicator.tsx","../src/components/DropdownMenu/ItemIcon.tsx","../src/components/DropdownMenu/styles.ts","../src/components/DropdownMenu/DropdownMenuCheckboxItem.tsx","../src/components/DropdownMenu/DropdownMenuContent.tsx","../src/components/DropdownMenu/DropdownMenuItem.tsx","../src/components/DropdownMenu/DropdownMenuItemDescription.tsx","../src/components/DropdownMenu/DropdownMenuLabel.tsx","../src/components/DropdownMenu/DropdownMenuRadioGroup/DropdownMenuRadioGroup.tsx","../src/components/DropdownMenu/DropdownMenuRadioGroup/DropdownMenuRadioItem.tsx","../src/components/DropdownMenu/DropdownMenuSeparator.tsx","../src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSub.tsx","../src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSubContent.tsx","../src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSubTrigger.tsx","../src/components/DropdownMenu/DropdownMenuTrigger.tsx","../src/components/DropdownMenu/DropdownMenu.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { Check, Circle, ToggleRight } from '../../icons';\nimport { cn } from '../../utils';\nimport { radioCircleVariants, radioIndicatorVariants } from '../RadioGroup/styles';\n\nconst variants = cva(\n [\n 'tailwindcss-preflight',\n 'tw:pointer-events-none',\n\n // sizing\n 'tw:size-4',\n 'tw:aspect-square',\n 'tw:shrink-0',\n\n // layout\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n ],\n {\n variants: {\n variant: {\n none: [],\n radio: ['tw:data-[state=unchecked]:[&_svg]:hidden'],\n check: ['tw:[&_svg:not([class*=\"tw:size-\"])]:size-3.5', 'tw:[&_svg]:text-primary'],\n checkbox: [\n 'tw:[&_svg]:text-primary-foreground',\n 'tw:border',\n 'tw:border-solid',\n 'tw:rounded',\n 'tw:border-input',\n\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-3',\n 'tw:data-[state=unchecked]:[&_svg]:hidden',\n 'tw:data-[state=checked]:border-primary',\n 'tw:data-[state=checked]:bg-primary',\n ],\n switch: [\n 'tw:size-5',\n // Lucide SVGs default to 24×24 — constrain the rendered ToggleRight\n // to the indicator slot so it doesn't overflow.\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-5',\n 'tw:text-muted-foreground',\n 'tw:data-[state=unchecked]:rotate-180',\n 'tw:data-[state=checked]:text-primary',\n ],\n },\n },\n },\n);\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.ItemIndicator> &\n VariantProps<typeof variants>;\n\nexport const DropdownMenuItemIndicator = ({\n variant,\n className,\n forceMount: forceMountProp,\n ...rest\n}: Props) => {\n const isRadio = variant === 'radio';\n const IconComp = (() => {\n if (variant === 'switch') return ToggleRight;\n if (isRadio) return Circle;\n return Check;\n })();\n\n const forceMount = (() => {\n if (forceMountProp) return true;\n // All variants, except for check, require rendering at all times.\n return variant === 'check' ? undefined : true;\n })();\n\n if (variant === 'none') return null;\n\n return (\n <DropdownMenuPrimitive.ItemIndicator\n {...rest}\n forceMount={forceMount}\n className={cn(variants({ variant }), isRadio && radioCircleVariants(), className)}\n >\n <IconComp className={isRadio ? radioIndicatorVariants() : undefined} />\n </DropdownMenuPrimitive.ItemIndicator>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'span'> & {\n children: ReactNode;\n};\n\nexport const ItemIcon = ({ className, children, ...props }: Props) => (\n <span\n {...props}\n className={cn(\n 'tw:inline-flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:aspect-square',\n // 20px container fits the 16px Lucide glyph plus 2px breathing room\n // each side — the previous tw:size-4 + tw:p-0.5 clipped the 16px child.\n 'tw:size-5',\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-4',\n 'tw:text-primary',\n 'tw:group-aria-disabled:text-muted-foreground',\n className,\n )}\n >\n {children}\n </span>\n);\n","import { cn } from '../../utils';\n\nexport const itemVariants = cn(\n // reset\n 'tailwindcss-preflight',\n 'tw:outline-hidden',\n 'tw:group',\n 'tw:peer',\n 'tw:relative',\n\n // positioning\n 'tw:flex',\n 'tw:flex-1',\n 'tw:items-center',\n 'tw:gap-2',\n\n // An icon passed as `children` rather than via the `icon` prop misses `ItemIcon`,\n // so without this it falls back to Lucide's 24px default and towers over the\n // siblings this row is laid out for. The `:not()` keeps a call-site size winning.\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-4',\n\n 'tw:cursor-pointer',\n 'tw:select-none',\n 'tw:transition-colors',\n\n // spacing\n 'tw:p-2',\n\n // typography\n 'tw:font-sans',\n 'tw:text-sm',\n\n 'tw:aria-disabled:pointer-events-none',\n 'tw:aria-disabled:opacity-disabled',\n\n 'tw:focus-visible:outline-hidden',\n\n 'tw:rounded-md',\n 'tw:text-popover-foreground',\n // Hover and keyboard focus: the theme's `--hover` pair when set; unset, a `primary` tint.\n 'tw:focus:text-[var(--hover-foreground,rgb(var(--primary)))]',\n 'tw:focus:bg-[var(--hover,color-mix(in_oklab,rgb(var(--primary))_10%,transparent))]',\n 'tw:hover:text-[var(--hover-foreground,rgb(var(--primary)))]',\n 'tw:hover:bg-[var(--hover,color-mix(in_oklab,rgb(var(--primary))_10%,transparent))]',\n);\n\nexport const contentVariants = cn(\n 'tailwindcss-preflight',\n 'tw:z-overlay',\n\n // positioning\n 'tw:flex',\n 'tw:flex-col',\n 'tw:origin-(--radix-dropdown-menu-content-transform-origin)',\n\n // sizing\n 'tw:max-h-[var(--radix-dropdown-menu-content-available-height)]',\n 'tw:min-w-32',\n\n // border\n 'tw:border',\n 'tw:border-border',\n 'tw:rounded-popover',\n 'tw:shadow-md',\n\n // surface — semantic tokens, so a portalled menu follows the brand and the scheme\n 'tw:bg-popover',\n 'tw:text-popover-foreground',\n\n // animations\n 'tw:data-[state=open]:animate-in',\n 'tw:data-[state=open]:fade-in-0',\n 'tw:data-[state=open]:zoom-in-95',\n\n 'tw:data-[state=closed]:animate-out',\n 'tw:data-[state=closed]:fade-out-0',\n 'tw:data-[state=closed]:zoom-out-95',\n\n 'tw:data-[side=bottom]:slide-in-from-top-2',\n 'tw:data-[side=left]:slide-in-from-right-2',\n 'tw:data-[side=right]:slide-in-from-left-2',\n 'tw:data-[side=top]:slide-in-from-bottom-2',\n);\n","import type { ComponentProps, ReactNode } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { Loader2 } from '../../icons';\nimport { cn } from '../../utils';\n\nimport { DropdownMenuItemIndicator } from './DropdownMenuItemIndicator';\nimport { ItemIcon } from './ItemIcon';\nimport { itemVariants } from './styles';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\n closeOnSelect?: boolean;\n indicator?: 'switch' | 'checkbox' | 'check';\n indicatorAlign?: 'start' | 'end';\n isLoading?: boolean;\n /** Leading Lucide icon, drawn like `DropdownMenu.Item`'s so mixed menus line up. */\n icon?: ReactNode;\n};\n\nexport const DropdownMenuCheckboxItem = ({\n className,\n children,\n checked,\n closeOnSelect = false,\n onSelect,\n indicatorAlign = 'start',\n indicator = 'checkbox',\n isLoading = false,\n icon,\n ...props\n}: Props) => {\n const isAtStart = indicatorAlign === 'start';\n const indicatorEle = isLoading ? (\n <ItemIcon className={isAtStart ? '' : 'tw:ml-auto'}>\n <Loader2 className=\"tw:animate-spin\" />\n </ItemIcon>\n ) : (\n <DropdownMenuItemIndicator variant={indicator} className={isAtStart ? '' : 'tw:ml-auto'} />\n );\n\n const handleSelect = (event: Event) => {\n if (!closeOnSelect) event.preventDefault();\n onSelect?.(event);\n };\n\n return (\n <DropdownMenuPrimitive.CheckboxItem\n className={cn(itemVariants, className)}\n checked={checked}\n onSelect={handleSelect}\n {...props}\n >\n {isAtStart && indicatorEle}\n {icon && <ItemIcon>{icon}</ItemIcon>}\n {children}\n {!isAtStart && indicatorEle}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n};\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../utils';\nimport { ScrollArea } from '../ScrollArea';\n\nimport { contentVariants } from './styles';\n\ntype Props = Omit<\n ComponentProps<typeof DropdownMenuPrimitive.Content>,\n 'forceMount' | 'asChild'\n> & {\n forceMount?: boolean;\n /** Classes for the inner scroll area, not the popup. Set a width, not a `max-width` (clips rows). */\n className?: string;\n viewPortClassName?: string;\n container?: HTMLElement | null;\n};\n\nexport const DropdownMenuContent = ({\n className,\n sideOffset = 4,\n forceMount,\n children,\n viewPortClassName,\n container,\n ...props\n}: Props) => (\n <DropdownMenuPrimitive.Portal forceMount={forceMount || undefined} container={container}>\n <DropdownMenuPrimitive.Content {...props} sideOffset={sideOffset} className={contentVariants}>\n <ScrollArea\n className={className}\n viewPortClassName={cn(\n 'tw:p-2',\n 'tw:max-h-[var(--radix-dropdown-menu-content-available-height)]',\n viewPortClassName,\n )}\n scrollBarClassName=\"tw:w-1.5\"\n >\n {children}\n </ScrollArea>\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n);\n","import type { ComponentProps, PointerEventHandler, ReactNode } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { Root, Slottable } from '@radix-ui/react-slot';\n\nimport { Loader2 } from '../../icons';\nimport { cn } from '../../utils';\n\nimport { ItemIcon } from './ItemIcon';\nimport { itemVariants } from './styles';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n /**\n * Stops the closing item stealing focus from the modal it opens (breaks `autoFocus`).\n * https://github.com/radix-ui/primitives/issues/2193#issuecomment-2758461323\n */\n asModalTrigger?: boolean;\n /** Leading Lucide icon. */\n icon?: ReactNode;\n isLoading?: boolean;\n iconClassName?: string;\n};\n\nexport const DropdownMenuItem = ({\n ref,\n className,\n asModalTrigger = false,\n onSelect,\n onPointerLeave,\n onPointerMove,\n children,\n asChild,\n icon,\n iconClassName,\n isLoading = false,\n ...props\n}: Props) => {\n const Comp = asChild ? Root : 'div';\n const adornment = isLoading ? <Loader2 className=\"tw:animate-spin\" /> : icon;\n\n const handleOnSelect = (event: Event) => {\n // keeps the menu open so the modal is not unmounted\n if (asModalTrigger) event.preventDefault();\n onSelect?.(event);\n };\n\n const handlePointerLeave: PointerEventHandler<HTMLDivElement> = (event) => {\n // prevents focus stealing from modal\n if (asModalTrigger) event.preventDefault();\n onPointerLeave?.(event);\n };\n\n const handlePointerMove: PointerEventHandler<HTMLDivElement> = (event) => {\n // prevents focus stealing from modal\n if (asModalTrigger) event.preventDefault();\n onPointerMove?.(event);\n };\n\n return (\n <DropdownMenuPrimitive.Item\n {...props}\n ref={ref}\n onSelect={handleOnSelect}\n onPointerLeave={handlePointerLeave}\n onPointerMove={handlePointerMove}\n className={cn(itemVariants, asChild && 'tw:text-inherit', className)}\n asChild\n >\n <Comp>\n {adornment && <ItemIcon className={iconClassName}>{adornment}</ItemIcon>}\n <Slottable>{children}</Slottable>\n </Comp>\n </DropdownMenuPrimitive.Item>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { cva } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst descriptionVariants = cva(\n [\n 'tw:box-border',\n 'tw:ml-auto',\n 'tw:font-sans',\n 'tw:tracking-normal',\n 'tw:font-normal',\n 'tw:text-xs',\n 'tw:text-muted-foreground',\n ],\n {\n variants: {\n hideOnHover: {\n true: ['tw:group-focus-within:hidden', 'tw:group-hover:hidden'],\n false: [],\n },\n },\n defaultVariants: {},\n },\n);\n\ntype Props = ComponentProps<'span'> & {\n hideOnHover?: boolean;\n};\n\nexport const DropdownMenuItemDescription = ({\n className,\n children,\n hideOnHover = false,\n ...props\n}: Props) => {\n return (\n <span {...props} className={cn(descriptionVariants({ hideOnHover }), className)}>\n {children}\n </span>\n );\n};\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.Label>;\n\nexport const DropdownMenuLabel = ({ className, ...props }: Props) => {\n return (\n <DropdownMenuPrimitive.Label\n className={cn(\n 'tw:p-2',\n 'tw:font-medium',\n 'tw:text-xs',\n 'tw:text-muted-foreground',\n className,\n )}\n {...props}\n />\n );\n};\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\ntype Props<Value> = Omit<\n ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>,\n 'value' | 'onValueChange' | 'defaultValue'\n> & {\n value?: Value;\n defaultValue?: Value;\n onValueChange?: (value: Value) => void;\n};\n\nexport const DropdownMenuRadioGroup = <Value extends string = string>({\n value,\n defaultValue,\n onValueChange,\n ...props\n}: Props<Value>) => {\n const handleChange = (value: string) => {\n onValueChange?.(value as Value);\n };\n\n return (\n <DropdownMenuPrimitive.RadioGroup\n {...props}\n value={value}\n defaultValue={defaultValue}\n onValueChange={handleChange}\n />\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { Loader2 } from '../../../icons';\nimport { cn } from '../../../utils';\nimport { DropdownMenuItemIndicator } from '../DropdownMenuItemIndicator';\nimport { ItemIcon } from '../ItemIcon';\nimport { itemVariants } from '../styles';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\n closeOnSelect?: boolean;\n indicatorAlign?: 'start' | 'end';\n indicator?: 'radio' | 'check' | 'none';\n icon?: ReactNode;\n iconClassName?: string;\n isLoading?: boolean;\n};\n\nexport const DropdownMenuRadioItem = ({\n className,\n children,\n closeOnSelect,\n onSelect,\n indicatorAlign = 'start',\n indicator = 'radio',\n icon,\n iconClassName,\n isLoading = false,\n ...props\n}: Props) => {\n const isAtStart = indicatorAlign === 'start';\n const indicatorEle = isLoading ? (\n <ItemIcon className={iconClassName}>\n <Loader2 className=\"tw:animate-spin\" />\n </ItemIcon>\n ) : (\n <DropdownMenuItemIndicator variant={indicator} />\n );\n\n const handleSelect = (event: Event) => {\n if (!closeOnSelect) event.preventDefault();\n onSelect?.(event);\n };\n\n return (\n <DropdownMenuPrimitive.RadioItem\n className={cn(\n itemVariants,\n 'tw:data-[state=checked]:cursor-default',\n {\n // The theme's `--selected` when set; unset, a `primary` tint.\n 'tw:data-[state=checked]:bg-[var(--selected,color-mix(in_oklab,rgb(var(--primary))_10%,transparent))]':\n indicator !== 'radio',\n },\n className,\n )}\n onSelect={handleSelect}\n {...props}\n >\n {isAtStart && indicatorEle}\n {icon && <ItemIcon className={iconClassName}>{icon}</ItemIcon>}\n <span className=\"tw:flex tw:min-w-0 tw:flex-1 tw:items-center tw:gap-2\">{children}</span>\n {!isAtStart && indicatorEle}\n </DropdownMenuPrimitive.RadioItem>\n );\n};\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.Separator>;\n\nexport const DropdownMenuSeparator = ({ className, ...props }: Props) => (\n <DropdownMenuPrimitive.Separator\n className={cn(\n 'tw:relative',\n 'tw:z-10',\n\n // layout\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:w-full',\n\n // separator line\n 'tw:before:content-[\"\"]',\n 'tw:before:w-full',\n 'tw:before:h-px',\n 'tw:before:bg-border',\n 'tw:py-1',\n\n className,\n )}\n {...props}\n />\n);\n","import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nexport const DropdownMenuSub = DropdownMenuPrimitive.Sub;\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../../utils';\nimport { contentVariants } from '../styles';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.SubContent>;\n\nexport const DropdownMenuSubContent = ({ className, ...props }: Props) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.SubContent\n className={cn(contentVariants, 'tw:p-2', className)}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n);\n","import type { ComponentProps, ReactNode } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { ChevronRight } from '../../../icons';\nimport { cn } from '../../../utils';\nimport { ItemIcon } from '../ItemIcon';\nimport { itemVariants } from '../styles';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n /** Leading Lucide icon, drawn like `DropdownMenu.Item`'s so the trigger lines up with items. */\n icon?: ReactNode;\n};\n\nexport const DropdownMenuSubTrigger = ({ className, children, icon, ...props }: Props) => {\n return (\n <DropdownMenuPrimitive.SubTrigger className={cn(itemVariants, className)} {...props}>\n {icon && <ItemIcon>{icon}</ItemIcon>}\n {children}\n <ChevronRight className=\"tw:ml-auto tw:size-5\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { Trigger } from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof Trigger>;\n\nexport const DropdownMenuTrigger = ({ ref, className, ...props }: Props) => (\n <Trigger\n {...props}\n ref={ref}\n data-slot=\"dropdown-menu-trigger\"\n className={cn('tw:group/dropdown-menu-trigger', className)}\n />\n);\n","import type { ComponentProps } from 'react';\nimport { Group, Root } from '@radix-ui/react-dropdown-menu';\n\nimport { DropdownMenuCheckboxItem } from './DropdownMenuCheckboxItem';\nimport { DropdownMenuContent } from './DropdownMenuContent';\nimport { DropdownMenuItem } from './DropdownMenuItem';\nimport { DropdownMenuItemDescription } from './DropdownMenuItemDescription';\nimport { DropdownMenuLabel } from './DropdownMenuLabel';\nimport { DropdownMenuRadioGroup, DropdownMenuRadioItem } from './DropdownMenuRadioGroup';\nimport { DropdownMenuSeparator } from './DropdownMenuSeparator';\nimport { DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger } from './DropdownMenuSub';\nimport { DropdownMenuTrigger } from './DropdownMenuTrigger';\n\ntype Props = ComponentProps<typeof Root>;\n\nexport const DropdownMenu = ({\n // change a default value to false, for modal property, as it is not used in most cases\n modal = false,\n ...props\n}: Props) => <Root {...props} modal={modal} />;\n\n/**\n * Main Layout\n */\nDropdownMenu.Trigger = DropdownMenuTrigger;\nDropdownMenu.Content = DropdownMenuContent;\nDropdownMenu.Group = Group;\n\n/**\n * Sub Layout\n */\nDropdownMenu.Sub = DropdownMenuSub;\nDropdownMenu.SubContent = DropdownMenuSubContent;\nDropdownMenu.SubTrigger = DropdownMenuSubTrigger;\n\n/**\n * Items can be used either Sub ar Main Layout\n */\nDropdownMenu.Separator = DropdownMenuSeparator;\nDropdownMenu.Label = DropdownMenuLabel;\nDropdownMenu.Item = DropdownMenuItem;\nDropdownMenu.CheckboxItem = DropdownMenuCheckboxItem;\nDropdownMenu.RadioGroup = DropdownMenuRadioGroup;\nDropdownMenu.RadioItem = DropdownMenuRadioItem;\n\n// item content\nDropdownMenu.ItemDescription = DropdownMenuItemDescription;\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { Tooltip } from "./utils-LQ4jJA-9.js";
1
+ import { Tooltip } from "./utils-DwC9u0tM.js";
2
2
  import { Info } from "./icons-ZIeZXXS7.js";
3
3
  import { Label } from "./internal/components/Label.js";
4
- import { FormGroup } from "./FormGroup-DiYFdEhH.js";
4
+ import { FormGroup } from "./FormGroup-V5kIgQRN.js";
5
5
  import { useRef } from "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  import { createFormHookContexts, useStore } from "@tanstack/react-form";
@@ -92,4 +92,4 @@ const FieldItem = ({ label, action, required, requiredMark = "required", labelli
92
92
  //#endregion
93
93
  export { FieldItem, fieldContext, formContext, useFieldContext, useFormContext };
94
94
 
95
- //# sourceMappingURL=FieldItem-CYvJyjiI.js.map
95
+ //# sourceMappingURL=FieldItem-BHUqgSO1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldItem-CYvJyjiI.js","names":[],"sources":["../src/blocks/Form/contexts.ts","../src/blocks/Form/connectors/FieldItem.tsx"],"sourcesContent":["import { createFormHookContexts } from '@tanstack/react-form';\n\nexport const { fieldContext, useFieldContext, formContext, useFormContext } =\n createFormHookContexts();\n","import { type ReactNode, useRef } from 'react';\nimport { useStore } from '@tanstack/react-form';\n\nimport { Label } from '../../../components/Label';\nimport { Tooltip } from '../../../components/Tooltip';\nimport { Info } from '../../../icons';\nimport { FormGroup } from '../../FormGroup';\nimport { useFieldContext, useFormContext } from '../contexts';\n\n/** The a11y wiring `FieldItem` derives for the control — spread it onto the rendered element. */\ntype FieldControlProps = {\n id: string;\n name: string;\n 'aria-required'?: true;\n 'aria-invalid'?: true;\n 'aria-describedby'?: string;\n /** Present only under `labelling: 'aria-labelledby'` — see the prop. */\n 'aria-labelledby'?: string;\n};\n\n/** Which marker sits next to the label. Purely visual — `aria-required` is driven by `required`. */\ntype RequiredMark = 'required' | 'optional' | 'hidden';\n\n/**\n * How the control takes its accessible name from the label.\n *\n * - `'for'` (default) — `<label for>` at the control's `id`; for labelable elements (`input` etc.).\n * - `'aria-labelledby'` — the label id comes back in `control['aria-labelledby']`, no `for`. For\n * non-labelable controls (CodeMirror, Lexical, `div[role]`), which `<label for>` never names.\n */\ntype Labelling = 'for' | 'aria-labelledby';\n\ntype Props = {\n label?: ReactNode;\n /** Trailing node on the label row (e.g. a `Link`); not part of the accessible name. */\n action?: ReactNode;\n required?: boolean;\n /**\n * Gated by `required`: `'required'` shows `*` only if required, `'optional'` shows `(optional)`\n * only if not, `'hidden'` neither. Defaults to `'required'`.\n */\n requiredMark?: RequiredMark;\n /** See {@link Labelling}. Defaults to `'for'`. */\n labelling?: Labelling;\n help?: ReactNode;\n tooltip?: ReactNode;\n className?: string;\n 'aria-describedby'?: string;\n children: (control: FieldControlProps) => ReactNode;\n};\n\n/**\n * The frame props a connector re-exposes to its callers.\n *\n * - No `labelling`: the connector picks it from what its control is.\n * - Left in, it would fall into the rest spread and reach the DOM `<input>`.\n */\nexport type FieldItemProps = Omit<Props, 'children' | 'labelling'>;\n\n/**\n * Shared form-field frame: label, control, help/error text. Owns validity, ids and `aria-*` wiring,\n * so a connector only picks a control and binds its value.\n */\nexport const FieldItem = ({\n label,\n action,\n required,\n requiredMark = 'required',\n labelling = 'for',\n help,\n tooltip,\n className,\n 'aria-describedby': ariaDescribedBy,\n children,\n}: Props) => {\n const field = useFieldContext();\n const form = useFormContext();\n const { errors, isBlurred } = field.state.meta;\n const submissionAttempts = useStore(form.store, (state) => state.submissionAttempts);\n\n /**\n * The submit count as of this field's first render.\n *\n * - A bare `> 0` would flag fields mounted after a failed submit.\n * - `form.reset()` zeroes the counter, so the baseline follows it down.\n */\n const attemptsAtMountRef = useRef(submissionAttempts);\n if (submissionAttempts < attemptsAtMountRef.current)\n attemptsAtMountRef.current = submissionAttempts;\n\n /**\n * ⚠️ Blurred, not touched.\n *\n * - `setFieldValue` and `validateField` set `isTouched`, so code-filled fields would show errors.\n * - Only a real blur sets `isBlurred` — and `setServerFieldErrors`, for failures outside a submit.\n * - A submit attempt reveals every field that was on screen for it.\n */\n const isInvalid =\n (isBlurred || submissionAttempts > attemptsAtMountRef.current) && errors.length > 0;\n\n const errorId = `${field.name}-error`;\n const descriptionId = `${field.name}-description`;\n const labelId = `${field.name}-label`;\n const namesByAria = labelling === 'aria-labelledby';\n // Help and error can both apply; `undefined` when empty so the attr is omitted.\n const describedBy =\n [ariaDescribedBy, !!help && descriptionId, isInvalid && errorId].filter(Boolean).join(' ') ||\n undefined;\n\n return (\n <FormGroup className={className}>\n {(label || action) && (\n <div className=\"tw:flex tw:items-center tw:justify-between tw:gap-2\">\n <div className=\"tw:flex tw:items-center tw:gap-1\">\n {/* Marker binds to the label text; the interactive tooltip button is a sibling. */}\n {label && (\n // `htmlFor` only for labelable controls — see `Labelling`.\n <Label\n htmlFor={namesByAria ? undefined : field.name}\n id={namesByAria ? labelId : undefined}\n >\n {label}\n {requiredMark === 'required' && required && <Label.Required />}\n {requiredMark === 'optional' && !required && <Label.Optional />}\n </Label>\n )}\n\n {tooltip && (\n <Tooltip tooltip={tooltip} placement=\"top\" triggerAsChild>\n <button\n type=\"button\"\n aria-label={\n typeof label === 'string'\n ? `More information about ${label}`\n : 'More information'\n }\n className=\"tw:text-muted-foreground tw:focus:outline-hidden tw:focus-visible:text-primary tailwindcss-preflight\"\n >\n <Info className=\"tw:size-3\" />\n </button>\n </Tooltip>\n )}\n </div>\n\n {action}\n </div>\n )}\n\n {children({\n id: field.name,\n name: field.name,\n 'aria-required': required || undefined,\n 'aria-invalid': isInvalid || undefined,\n 'aria-describedby': describedBy,\n 'aria-labelledby': namesByAria && label ? labelId : undefined,\n })}\n\n {(help || isInvalid) && (\n <div>\n {help && <FormGroup.Help id={descriptionId}>{help}</FormGroup.Help>}\n {isInvalid && <FormGroup.Error id={errorId} errors={errors} />}\n </div>\n )}\n </FormGroup>\n );\n};\n"],"mappings":";;;;;;;;AAEA,MAAa,EAAE,cAAc,iBAAiB,aAAa,mBACzD,uBAAuB;;;;;;;AC4DzB,MAAa,aAAa,EACxB,OACA,QACA,UACA,eAAe,YACf,YAAY,OACZ,MACA,SACA,WACA,oBAAoB,iBACpB,eACW;CACX,MAAM,QAAQ,gBAAgB;CAC9B,MAAM,OAAO,eAAe;CAC5B,MAAM,EAAE,QAAQ,cAAc,MAAM,MAAM;CAC1C,MAAM,qBAAqB,SAAS,KAAK,QAAQ,UAAU,MAAM,kBAAkB;;;;;;;CAQnF,MAAM,qBAAqB,OAAO,kBAAkB;CACpD,IAAI,qBAAqB,mBAAmB,SAC1C,mBAAmB,UAAU;;;;;;;;CAS/B,MAAM,aACH,aAAa,qBAAqB,mBAAmB,YAAY,OAAO,SAAS;CAEpF,MAAM,UAAU,GAAG,MAAM,KAAK;CAC9B,MAAM,gBAAgB,GAAG,MAAM,KAAK;CACpC,MAAM,UAAU,GAAG,MAAM,KAAK;CAC9B,MAAM,cAAc,cAAc;CAElC,MAAM,cACJ;EAAC;EAAiB,CAAC,CAAC,QAAQ;EAAe,aAAa;CAAO,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,KACzF,KAAA;CAEF,OACE,qBAAC,WAAD;EAAsB;EAAtB,UAAA;IACI,SAAS,WACT,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CAEG,SAEC,qBAAC,OAAD;MACE,SAAS,cAAc,KAAA,IAAY,MAAM;MACzC,IAAI,cAAc,UAAU,KAAA;MAF9B,UAAA;OAIG;OACA,iBAAiB,cAAc,YAAY,oBAAC,MAAM,UAAP,CAAiB,CAAA;OAC5D,iBAAiB,cAAc,CAAC,YAAY,oBAAC,MAAM,UAAP,CAAiB,CAAA;MACzD;KAGR,CAAA,GAAA,WACC,oBAAC,SAAD;MAAkB;MAAS,WAAU;MAAM,gBAAA;MACzC,UAAA,oBAAC,UAAD;OACE,MAAK;OACL,cACE,OAAO,UAAU,WACb,0BAA0B,UAC1B;OAEN,WAAU;OAEV,UAAA,oBAAC,MAAD,EAAM,WAAU,YAAa,CAAA;MACvB,CAAA;KACD,CAAA,CAER;IAEJ,CAAA,GAAA,MACE;;GAGN,SAAS;IACR,IAAI,MAAM;IACV,MAAM,MAAM;IACZ,iBAAiB,YAAY,KAAA;IAC7B,gBAAgB,aAAa,KAAA;IAC7B,oBAAoB;IACpB,mBAAmB,eAAe,QAAQ,UAAU,KAAA;GACtD,CAAC;IAEC,QAAQ,cACR,qBAAC,OAAD,EAAA,UAAA,CACG,QAAQ,oBAAC,UAAU,MAAX;IAAgB,IAAI;IAAgB,UAAA;GAAqB,CAAA,GACjE,aAAa,oBAAC,UAAU,OAAX;IAAiB,IAAI;IAAiB;GAAS,CAAA,CAC1D,EAAA,CAAA;EAEE;;AAEf"}
1
+ {"version":3,"file":"FieldItem-BHUqgSO1.js","names":[],"sources":["../src/blocks/Form/contexts.ts","../src/blocks/Form/connectors/FieldItem.tsx"],"sourcesContent":["import { createFormHookContexts } from '@tanstack/react-form';\n\nexport const { fieldContext, useFieldContext, formContext, useFormContext } =\n createFormHookContexts();\n","import { type ReactNode, useRef } from 'react';\nimport { useStore } from '@tanstack/react-form';\n\nimport { Label } from '../../../components/Label';\nimport { Tooltip } from '../../../components/Tooltip';\nimport { Info } from '../../../icons';\nimport { FormGroup } from '../../FormGroup';\nimport { useFieldContext, useFormContext } from '../contexts';\n\n/** The a11y wiring `FieldItem` derives for the control — spread it onto the rendered element. */\ntype FieldControlProps = {\n id: string;\n name: string;\n 'aria-required'?: true;\n 'aria-invalid'?: true;\n 'aria-describedby'?: string;\n /** Present only under `labelling: 'aria-labelledby'` — see the prop. */\n 'aria-labelledby'?: string;\n};\n\n/** Which marker sits next to the label. Purely visual — `aria-required` is driven by `required`. */\ntype RequiredMark = 'required' | 'optional' | 'hidden';\n\n/**\n * How the control takes its accessible name from the label.\n *\n * - `'for'` (default) — `<label for>` at the control's `id`; for labelable elements (`input` etc.).\n * - `'aria-labelledby'` — the label id comes back in `control['aria-labelledby']`, no `for`. For\n * non-labelable controls (CodeMirror, Lexical, `div[role]`), which `<label for>` never names.\n */\ntype Labelling = 'for' | 'aria-labelledby';\n\ntype Props = {\n label?: ReactNode;\n /** Trailing node on the label row (e.g. a `Link`); not part of the accessible name. */\n action?: ReactNode;\n required?: boolean;\n /**\n * Gated by `required`: `'required'` shows `*` only if required, `'optional'` shows `(optional)`\n * only if not, `'hidden'` neither. Defaults to `'required'`.\n */\n requiredMark?: RequiredMark;\n /** See {@link Labelling}. Defaults to `'for'`. */\n labelling?: Labelling;\n help?: ReactNode;\n tooltip?: ReactNode;\n className?: string;\n 'aria-describedby'?: string;\n children: (control: FieldControlProps) => ReactNode;\n};\n\n/**\n * The frame props a connector re-exposes to its callers.\n *\n * - No `labelling`: the connector picks it from what its control is.\n * - Left in, it would fall into the rest spread and reach the DOM `<input>`.\n */\nexport type FieldItemProps = Omit<Props, 'children' | 'labelling'>;\n\n/**\n * Shared form-field frame: label, control, help/error text. Owns validity, ids and `aria-*` wiring,\n * so a connector only picks a control and binds its value.\n */\nexport const FieldItem = ({\n label,\n action,\n required,\n requiredMark = 'required',\n labelling = 'for',\n help,\n tooltip,\n className,\n 'aria-describedby': ariaDescribedBy,\n children,\n}: Props) => {\n const field = useFieldContext();\n const form = useFormContext();\n const { errors, isBlurred } = field.state.meta;\n const submissionAttempts = useStore(form.store, (state) => state.submissionAttempts);\n\n /**\n * The submit count as of this field's first render.\n *\n * - A bare `> 0` would flag fields mounted after a failed submit.\n * - `form.reset()` zeroes the counter, so the baseline follows it down.\n */\n const attemptsAtMountRef = useRef(submissionAttempts);\n if (submissionAttempts < attemptsAtMountRef.current)\n attemptsAtMountRef.current = submissionAttempts;\n\n /**\n * ⚠️ Blurred, not touched.\n *\n * - `setFieldValue` and `validateField` set `isTouched`, so code-filled fields would show errors.\n * - Only a real blur sets `isBlurred` — and `setServerFieldErrors`, for failures outside a submit.\n * - A submit attempt reveals every field that was on screen for it.\n */\n const isInvalid =\n (isBlurred || submissionAttempts > attemptsAtMountRef.current) && errors.length > 0;\n\n const errorId = `${field.name}-error`;\n const descriptionId = `${field.name}-description`;\n const labelId = `${field.name}-label`;\n const namesByAria = labelling === 'aria-labelledby';\n // Help and error can both apply; `undefined` when empty so the attr is omitted.\n const describedBy =\n [ariaDescribedBy, !!help && descriptionId, isInvalid && errorId].filter(Boolean).join(' ') ||\n undefined;\n\n return (\n <FormGroup className={className}>\n {(label || action) && (\n <div className=\"tw:flex tw:items-center tw:justify-between tw:gap-2\">\n <div className=\"tw:flex tw:items-center tw:gap-1\">\n {/* Marker binds to the label text; the interactive tooltip button is a sibling. */}\n {label && (\n // `htmlFor` only for labelable controls — see `Labelling`.\n <Label\n htmlFor={namesByAria ? undefined : field.name}\n id={namesByAria ? labelId : undefined}\n >\n {label}\n {requiredMark === 'required' && required && <Label.Required />}\n {requiredMark === 'optional' && !required && <Label.Optional />}\n </Label>\n )}\n\n {tooltip && (\n <Tooltip tooltip={tooltip} placement=\"top\" triggerAsChild>\n <button\n type=\"button\"\n aria-label={\n typeof label === 'string'\n ? `More information about ${label}`\n : 'More information'\n }\n className=\"tw:text-muted-foreground tw:focus:outline-hidden tw:focus-visible:text-primary tailwindcss-preflight\"\n >\n <Info className=\"tw:size-3\" />\n </button>\n </Tooltip>\n )}\n </div>\n\n {action}\n </div>\n )}\n\n {children({\n id: field.name,\n name: field.name,\n 'aria-required': required || undefined,\n 'aria-invalid': isInvalid || undefined,\n 'aria-describedby': describedBy,\n 'aria-labelledby': namesByAria && label ? labelId : undefined,\n })}\n\n {(help || isInvalid) && (\n <div>\n {help && <FormGroup.Help id={descriptionId}>{help}</FormGroup.Help>}\n {isInvalid && <FormGroup.Error id={errorId} errors={errors} />}\n </div>\n )}\n </FormGroup>\n );\n};\n"],"mappings":";;;;;;;;AAEA,MAAa,EAAE,cAAc,iBAAiB,aAAa,mBACzD,uBAAuB;;;;;;;AC4DzB,MAAa,aAAa,EACxB,OACA,QACA,UACA,eAAe,YACf,YAAY,OACZ,MACA,SACA,WACA,oBAAoB,iBACpB,eACW;CACX,MAAM,QAAQ,gBAAgB;CAC9B,MAAM,OAAO,eAAe;CAC5B,MAAM,EAAE,QAAQ,cAAc,MAAM,MAAM;CAC1C,MAAM,qBAAqB,SAAS,KAAK,QAAQ,UAAU,MAAM,kBAAkB;;;;;;;CAQnF,MAAM,qBAAqB,OAAO,kBAAkB;CACpD,IAAI,qBAAqB,mBAAmB,SAC1C,mBAAmB,UAAU;;;;;;;;CAS/B,MAAM,aACH,aAAa,qBAAqB,mBAAmB,YAAY,OAAO,SAAS;CAEpF,MAAM,UAAU,GAAG,MAAM,KAAK;CAC9B,MAAM,gBAAgB,GAAG,MAAM,KAAK;CACpC,MAAM,UAAU,GAAG,MAAM,KAAK;CAC9B,MAAM,cAAc,cAAc;CAElC,MAAM,cACJ;EAAC;EAAiB,CAAC,CAAC,QAAQ;EAAe,aAAa;CAAO,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,KACzF,KAAA;CAEF,OACE,qBAAC,WAAD;EAAsB;EAAtB,UAAA;IACI,SAAS,WACT,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CAEG,SAEC,qBAAC,OAAD;MACE,SAAS,cAAc,KAAA,IAAY,MAAM;MACzC,IAAI,cAAc,UAAU,KAAA;MAF9B,UAAA;OAIG;OACA,iBAAiB,cAAc,YAAY,oBAAC,MAAM,UAAP,CAAiB,CAAA;OAC5D,iBAAiB,cAAc,CAAC,YAAY,oBAAC,MAAM,UAAP,CAAiB,CAAA;MACzD;KAGR,CAAA,GAAA,WACC,oBAAC,SAAD;MAAkB;MAAS,WAAU;MAAM,gBAAA;MACzC,UAAA,oBAAC,UAAD;OACE,MAAK;OACL,cACE,OAAO,UAAU,WACb,0BAA0B,UAC1B;OAEN,WAAU;OAEV,UAAA,oBAAC,MAAD,EAAM,WAAU,YAAa,CAAA;MACvB,CAAA;KACD,CAAA,CAER;IAEJ,CAAA,GAAA,MACE;;GAGN,SAAS;IACR,IAAI,MAAM;IACV,MAAM,MAAM;IACZ,iBAAiB,YAAY,KAAA;IAC7B,gBAAgB,aAAa,KAAA;IAC7B,oBAAoB;IACpB,mBAAmB,eAAe,QAAQ,UAAU,KAAA;GACtD,CAAC;IAEC,QAAQ,cACR,qBAAC,OAAD,EAAA,UAAA,CACG,QAAQ,oBAAC,UAAU,MAAX;IAAgB,IAAI;IAAgB,UAAA;GAAqB,CAAA,GACjE,aAAa,oBAAC,UAAU,OAAX;IAAiB,IAAI;IAAiB;GAAS,CAAA,CAC1D,EAAA,CAAA;EAEE;;AAEf"}
@@ -1,7 +1,7 @@
1
1
  import { __commonJSMin, __toESM } from "./rolldown-runtime-Bdc48AWt.js";
2
2
  import { cn } from "./classNames-DcGnTh2N.js";
3
3
  import { File, FileSpreadsheet, FileText, Upload, X } from "./icons-ZIeZXXS7.js";
4
- import { Button } from "./Button-D2JqBAq7.js";
4
+ import { Button } from "./Button-BNkyYU8u.js";
5
5
  import React, { Fragment, createContext, forwardRef, use, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from "react";
6
6
  import { cva } from "class-variance-authority";
7
7
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -2483,7 +2483,7 @@ const useFileDropTarget = ({ accept, maxSize, maxFiles, multiple = true, disable
2483
2483
  /**
2484
2484
  * Drop-zone primitive — the caller owns the `File[]`; the component only signals drops.
2485
2485
  *
2486
- * - Brand-neutral (semantic tokens), so it renders under legacy chrome too.
2486
+ * - Brand-neutral: semantic tokens only.
2487
2487
  * - Compose `<FileUpload.DropZone />` + `<FileUpload.FileList />`; pass the `File[]` to `FileList`.
2488
2488
  * - Upload progress/lifecycle is app-level state on top of `onFilesChange`.
2489
2489
  * - For a drop target you style yourself, use `useFileDropTarget`.
@@ -2519,4 +2519,4 @@ const FileUpload = Object.assign(FileUploadInner, {
2519
2519
  //#endregion
2520
2520
  export { FileUpload, useFileDropTarget, useFileUploadRejections };
2521
2521
 
2522
- //# sourceMappingURL=FileUpload-D6vPG3WB.js.map
2522
+ //# sourceMappingURL=FileUpload-BYFONpEl.js.map