@keboola/design 10.1.0 → 11.0.1

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 (382) hide show
  1. package/AGENTS.md +2 -0
  2. package/dist/AIKit-Dre37SJr.js +1320 -0
  3. package/dist/AIKit-Dre37SJr.js.map +1 -0
  4. package/dist/Alert-DfZq9kGe.js +133 -0
  5. package/dist/Alert-DfZq9kGe.js.map +1 -0
  6. package/dist/AlertModal-BUC4Es8o.js +222 -0
  7. package/dist/AlertModal-BUC4Es8o.js.map +1 -0
  8. package/dist/AppShell-B5GQN6Zs.js +143 -0
  9. package/dist/AppShell-B5GQN6Zs.js.map +1 -0
  10. package/dist/AutoSaveTextarea-BeuWuszr.js +58 -0
  11. package/dist/AutoSaveTextarea-BeuWuszr.js.map +1 -0
  12. package/dist/Badge-Ch26CXoP.js +195 -0
  13. package/dist/Badge-Ch26CXoP.js.map +1 -0
  14. package/dist/BrandEditor-B8o9zdZO.js +903 -0
  15. package/dist/BrandEditor-B8o9zdZO.js.map +1 -0
  16. package/dist/BrandLogo-CJkRd0F8.js +46 -0
  17. package/dist/BrandLogo-CJkRd0F8.js.map +1 -0
  18. package/dist/Breadcrumb-DJp7WwSv.js +330 -0
  19. package/dist/Breadcrumb-DJp7WwSv.js.map +1 -0
  20. package/dist/Button-nzmDNS2q.js +391 -0
  21. package/dist/Button-nzmDNS2q.js.map +1 -0
  22. package/dist/Calendar-cG5NIJ4O.js +6768 -0
  23. package/dist/Calendar-cG5NIJ4O.js.map +1 -0
  24. package/dist/Card-BAoZ35CV.js +105 -0
  25. package/dist/Card-BAoZ35CV.js.map +1 -0
  26. package/dist/Checkbox-GJ8-srt4.js +97 -0
  27. package/dist/Checkbox-GJ8-srt4.js.map +1 -0
  28. package/dist/Clipboard-CBJZiviP.js +58 -0
  29. package/dist/Clipboard-CBJZiviP.js.map +1 -0
  30. package/dist/ClipboardButton-ez5V3fkk.js +43 -0
  31. package/dist/ClipboardButton-ez5V3fkk.js.map +1 -0
  32. package/dist/CodeEditor-BfQJfbhL.js +952 -0
  33. package/dist/CodeEditor-BfQJfbhL.js.map +1 -0
  34. package/dist/Collapsible-BQXWEOBC.js +34 -0
  35. package/dist/Collapsible-BQXWEOBC.js.map +1 -0
  36. package/dist/ColorInput-Dx8Dsv7Y.js +180 -0
  37. package/dist/ColorInput-Dx8Dsv7Y.js.map +1 -0
  38. package/dist/ColorModeSwitch-CCqj7tjE.js +77 -0
  39. package/dist/ColorModeSwitch-CCqj7tjE.js.map +1 -0
  40. package/dist/Combobox-c_xBjf0P.js +439 -0
  41. package/dist/Combobox-c_xBjf0P.js.map +1 -0
  42. package/dist/Command-CQ_bQsJp.js +102 -0
  43. package/dist/Command-CQ_bQsJp.js.map +1 -0
  44. package/dist/CopyField-BJ96zvXs.js +322 -0
  45. package/dist/CopyField-BJ96zvXs.js.map +1 -0
  46. package/dist/DateInput-CMD3dY-T.js +141 -0
  47. package/dist/DateInput-CMD3dY-T.js.map +1 -0
  48. package/dist/DatePicker-BbFbmsGl.js +24 -0
  49. package/dist/DatePicker-BbFbmsGl.js.map +1 -0
  50. package/dist/DateRangeInput-D3BhiKyk.js +139 -0
  51. package/dist/DateRangeInput-D3BhiKyk.js.map +1 -0
  52. package/dist/DateRangePicker-BiUgtt_M.js +159 -0
  53. package/dist/DateRangePicker-BiUgtt_M.js.map +1 -0
  54. package/dist/DiagramSkeleton-lwBS2YBa.js +11 -0
  55. package/dist/DiagramSkeleton-lwBS2YBa.js.map +1 -0
  56. package/dist/DiffView-ppTIzh2h.js +429 -0
  57. package/dist/DiffView-ppTIzh2h.js.map +1 -0
  58. package/dist/DropdownMenu-B6ZbYvaM.js +327 -0
  59. package/dist/DropdownMenu-B6ZbYvaM.js.map +1 -0
  60. package/dist/FieldBox-D7DYtX_m.js +70 -0
  61. package/dist/FieldBox-D7DYtX_m.js.map +1 -0
  62. package/dist/FileUpload-sXRv7JiY.js +2527 -0
  63. package/dist/FileUpload-sXRv7JiY.js.map +1 -0
  64. package/dist/Form-BDCef6O9.js +371 -0
  65. package/dist/Form-BDCef6O9.js.map +1 -0
  66. package/dist/FormGroup-S9mPNHKH.js +124 -0
  67. package/dist/FormGroup-S9mPNHKH.js.map +1 -0
  68. package/dist/FullScreenModal-CJa2VkJ2.js +96 -0
  69. package/dist/FullScreenModal-CJa2VkJ2.js.map +1 -0
  70. package/dist/HoverCard-WfDkLK1s.js +31 -0
  71. package/dist/HoverCard-WfDkLK1s.js.map +1 -0
  72. package/dist/InputGroup-BJWsI35s.js +292 -0
  73. package/dist/InputGroup-BJWsI35s.js.map +1 -0
  74. package/dist/Kbd-CxHAo1oo.js +111 -0
  75. package/dist/Kbd-CxHAo1oo.js.map +1 -0
  76. package/dist/MarkedText-Ckbft5mw.js +44 -0
  77. package/dist/MarkedText-Ckbft5mw.js.map +1 -0
  78. package/dist/MermaidDiagram-BB06gymm.js +399 -0
  79. package/dist/MermaidDiagram-BB06gymm.js.map +1 -0
  80. package/dist/Modal-BA5Wc3sx.js +185 -0
  81. package/dist/Modal-BA5Wc3sx.js.map +1 -0
  82. package/dist/ModalTitle-C76ke2eo.js +28 -0
  83. package/dist/ModalTitle-C76ke2eo.js.map +1 -0
  84. package/dist/MultiActionButtonGroup-CiBHxsSk.js +33 -0
  85. package/dist/MultiActionButtonGroup-CiBHxsSk.js.map +1 -0
  86. package/dist/Navbar-t16usFZQ.js +322 -0
  87. package/dist/Navbar-t16usFZQ.js.map +1 -0
  88. package/dist/OtpInput-CbbymqYs.js +93 -0
  89. package/dist/OtpInput-CbbymqYs.js.map +1 -0
  90. package/dist/PageHeader-Q3IpCnQd.js +177 -0
  91. package/dist/PageHeader-Q3IpCnQd.js.map +1 -0
  92. package/dist/PageLayout-DSVM-ASz.js +176 -0
  93. package/dist/PageLayout-DSVM-ASz.js.map +1 -0
  94. package/dist/PageToolbar-0_1OBzaZ.js +153 -0
  95. package/dist/PageToolbar-0_1OBzaZ.js.map +1 -0
  96. package/dist/Pagination-CM_Rszz-.js +70 -0
  97. package/dist/Pagination-CM_Rszz-.js.map +1 -0
  98. package/dist/Popconfirm-BGe1jLov.js +170 -0
  99. package/dist/Popconfirm-BGe1jLov.js.map +1 -0
  100. package/dist/Popover-Ca0V6AD1.js +92 -0
  101. package/dist/Popover-Ca0V6AD1.js.map +1 -0
  102. package/dist/RadioGroup-sIveSsNa.js +233 -0
  103. package/dist/RadioGroup-sIveSsNa.js.map +1 -0
  104. package/dist/Resizable-D3vYToZH.js +52 -0
  105. package/dist/Resizable-D3vYToZH.js.map +1 -0
  106. package/dist/Search-3UiqNZRj.js +184 -0
  107. package/dist/Search-3UiqNZRj.js.map +1 -0
  108. package/dist/SearchInput-D2fcOv7E.js +102 -0
  109. package/dist/SearchInput-D2fcOv7E.js.map +1 -0
  110. package/dist/SectionNav--7bw2b6u.js +276 -0
  111. package/dist/SectionNav--7bw2b6u.js.map +1 -0
  112. package/dist/Select-4YX38G5h.js +181 -0
  113. package/dist/Select-4YX38G5h.js.map +1 -0
  114. package/dist/Sheet-BQrX8-h5.js +169 -0
  115. package/dist/Sheet-BQrX8-h5.js.map +1 -0
  116. package/dist/Sidebar-ROaR_AqC.js +799 -0
  117. package/dist/Sidebar-ROaR_AqC.js.map +1 -0
  118. package/dist/Slider-Da_3mS5v.js +127 -0
  119. package/dist/Slider-Da_3mS5v.js.map +1 -0
  120. package/dist/Stepper-C8sm9ZFM.js +325 -0
  121. package/dist/Stepper-C8sm9ZFM.js.map +1 -0
  122. package/dist/Switch-CX2A0v50.js +201 -0
  123. package/dist/Switch-CX2A0v50.js.map +1 -0
  124. package/dist/Table-CvYuTuNU.js +104 -0
  125. package/dist/Table-CvYuTuNU.js.map +1 -0
  126. package/dist/Tabs-EAihyqCt.js +74 -0
  127. package/dist/Tabs-EAihyqCt.js.map +1 -0
  128. package/dist/TextInput-BGed-V13.js +110 -0
  129. package/dist/TextInput-BGed-V13.js.map +1 -0
  130. package/dist/ThemeProvider-QncUrfJn.js +203 -0
  131. package/dist/ThemeProvider-QncUrfJn.js.map +1 -0
  132. package/dist/TimePicker-B_NegL-7.js +98 -0
  133. package/dist/TimePicker-B_NegL-7.js.map +1 -0
  134. package/dist/Timeline-6btyJl4D.js +154 -0
  135. package/dist/Timeline-6btyJl4D.js.map +1 -0
  136. package/dist/Toast-DQSbs3oA.js +49 -0
  137. package/dist/Toast-DQSbs3oA.js.map +1 -0
  138. package/dist/ToggleGroup-Cy_10Mvu.js +47 -0
  139. package/dist/ToggleGroup-Cy_10Mvu.js.map +1 -0
  140. package/dist/Workbench-BzE-Vvd9.js +293 -0
  141. package/dist/Workbench-BzE-Vvd9.js.map +1 -0
  142. package/dist/ZoomableSvg-DG9PnAm8.js +248 -0
  143. package/dist/ZoomableSvg-DG9PnAm8.js.map +1 -0
  144. package/dist/charts.d.ts +124 -111
  145. package/dist/charts.js +303 -249
  146. package/dist/charts.js.map +1 -1
  147. package/dist/classNames-BzrkDnOD.js +9 -0
  148. package/dist/classNames-BzrkDnOD.js.map +1 -0
  149. package/dist/constants-D6JcsD4_.d.ts +41 -0
  150. package/dist/context-KxxeMHbR.js +62 -0
  151. package/dist/context-KxxeMHbR.js.map +1 -0
  152. package/dist/editors.d.ts +180 -173
  153. package/dist/editors.js +747 -420
  154. package/dist/editors.js.map +1 -1
  155. package/dist/escapeStringRegexp-8MxP2knR.js +6 -0
  156. package/dist/escapeStringRegexp-8MxP2knR.js.map +1 -0
  157. package/dist/icons-Cek151jC.js +640 -0
  158. package/dist/icons-Cek151jC.js.map +1 -0
  159. package/dist/icons.d.ts +2 -41
  160. package/dist/icons.js +2 -4
  161. package/dist/index-m-kQEWiY.d.ts +54 -0
  162. package/dist/index.d.ts +6192 -9904
  163. package/dist/index.js +112 -15803
  164. package/dist/internal/blocks/AIKit.js +2 -0
  165. package/dist/internal/blocks/AppShell.js +2 -0
  166. package/dist/internal/blocks/AutoSaveTextarea.js +2 -0
  167. package/dist/internal/blocks/BrandEditor.js +2 -0
  168. package/dist/internal/blocks/ChartPanel.js +46 -0
  169. package/dist/internal/blocks/ChartPanel.js.map +1 -0
  170. package/dist/internal/blocks/ClipboardButton.js +2 -0
  171. package/dist/internal/blocks/ColorInput.js +2 -0
  172. package/dist/internal/blocks/ColorModeSwitch.js +2 -0
  173. package/dist/internal/blocks/Command.js +2 -0
  174. package/dist/internal/blocks/CopyField.js +2 -0
  175. package/dist/internal/blocks/DashboardHero.js +59 -0
  176. package/dist/internal/blocks/DashboardHero.js.map +1 -0
  177. package/dist/internal/blocks/DateInput.js +2 -0
  178. package/dist/internal/blocks/DateRangeInput.js +2 -0
  179. package/dist/internal/blocks/EmptyConfigurationActionCard.js +16 -0
  180. package/dist/internal/blocks/EmptyConfigurationActionCard.js.map +1 -0
  181. package/dist/internal/blocks/EmptyState.js +142 -0
  182. package/dist/internal/blocks/EmptyState.js.map +1 -0
  183. package/dist/internal/blocks/ErrorState.js +179 -0
  184. package/dist/internal/blocks/ErrorState.js.map +1 -0
  185. package/dist/internal/blocks/ExportMenu.js +41 -0
  186. package/dist/internal/blocks/ExportMenu.js.map +1 -0
  187. package/dist/internal/blocks/Form.js +2 -0
  188. package/dist/internal/blocks/FormGroup.js +2 -0
  189. package/dist/internal/blocks/GoogleButton.js +95 -0
  190. package/dist/internal/blocks/GoogleButton.js.map +1 -0
  191. package/dist/internal/blocks/MicrosoftButton.js +64 -0
  192. package/dist/internal/blocks/MicrosoftButton.js.map +1 -0
  193. package/dist/internal/blocks/MultiActionButtonGroup.js +2 -0
  194. package/dist/internal/blocks/MultiCombobox.js +188 -0
  195. package/dist/internal/blocks/MultiCombobox.js.map +1 -0
  196. package/dist/internal/blocks/NumberInput.js +44 -0
  197. package/dist/internal/blocks/NumberInput.js.map +1 -0
  198. package/dist/internal/blocks/OtpInput.js +2 -0
  199. package/dist/internal/blocks/PageHeader.js +2 -0
  200. package/dist/internal/blocks/PageLayout.js +2 -0
  201. package/dist/internal/blocks/PageToolbar.js +2 -0
  202. package/dist/internal/blocks/PasswordInput.js +97 -0
  203. package/dist/internal/blocks/PasswordInput.js.map +1 -0
  204. package/dist/internal/blocks/SearchInput.js +2 -0
  205. package/dist/internal/blocks/SearchInputWithNavigation.js +65 -0
  206. package/dist/internal/blocks/SearchInputWithNavigation.js.map +1 -0
  207. package/dist/internal/blocks/SectionNav.js +2 -0
  208. package/dist/internal/blocks/SplitButton.js +46 -0
  209. package/dist/internal/blocks/SplitButton.js.map +1 -0
  210. package/dist/internal/blocks/StatCard.js +97 -0
  211. package/dist/internal/blocks/StatCard.js.map +1 -0
  212. package/dist/internal/blocks/TextInput.js +2 -0
  213. package/dist/internal/blocks/Textarea.js +32 -0
  214. package/dist/internal/blocks/Textarea.js.map +1 -0
  215. package/dist/internal/blocks/TimeInput.js +77 -0
  216. package/dist/internal/blocks/TimeInput.js.map +1 -0
  217. package/dist/internal/components/Alert.js +2 -0
  218. package/dist/internal/components/AlertModal.js +2 -0
  219. package/dist/internal/components/Avatar.js +53 -0
  220. package/dist/internal/components/Avatar.js.map +1 -0
  221. package/dist/internal/components/Badge.js +2 -0
  222. package/dist/internal/components/BrandLogo.js +2 -0
  223. package/dist/internal/components/Breadcrumb.js +2 -0
  224. package/dist/internal/components/Button.js +2 -0
  225. package/dist/internal/components/ButtonGroup.js +66 -0
  226. package/dist/internal/components/ButtonGroup.js.map +1 -0
  227. package/dist/internal/components/Calendar.js +2 -0
  228. package/dist/internal/components/Card.js +2 -0
  229. package/dist/internal/components/Checkbox.js +2 -0
  230. package/dist/internal/components/Clipboard.js +2 -0
  231. package/dist/internal/components/Collapsible.js +2 -0
  232. package/dist/internal/components/CollapsiblePanel.js +87 -0
  233. package/dist/internal/components/CollapsiblePanel.js.map +1 -0
  234. package/dist/internal/components/Combobox.js +2 -0
  235. package/dist/internal/components/DatePicker.js +2 -0
  236. package/dist/internal/components/DateRangePicker.js +2 -0
  237. package/dist/internal/components/DiffView.js +2 -0
  238. package/dist/internal/components/DotsLoader.js +18 -0
  239. package/dist/internal/components/DotsLoader.js.map +1 -0
  240. package/dist/internal/components/DropdownMenu.js +2 -0
  241. package/dist/internal/components/EmptySearchContent.js +12 -0
  242. package/dist/internal/components/EmptySearchContent.js.map +1 -0
  243. package/dist/internal/components/FileUpload.js +2 -0
  244. package/dist/internal/components/FullScreenModal.js +2 -0
  245. package/dist/internal/components/HelpBlock.js +25 -0
  246. package/dist/internal/components/HelpBlock.js.map +1 -0
  247. package/dist/internal/components/HoverCard.js +2 -0
  248. package/dist/internal/components/InputGroup.js +2 -0
  249. package/dist/internal/components/Kbd.js +2 -0
  250. package/dist/internal/components/Label.js +39 -0
  251. package/dist/internal/components/Label.js.map +1 -0
  252. package/dist/internal/components/Link.js +22 -0
  253. package/dist/internal/components/Link.js.map +1 -0
  254. package/dist/internal/components/MarkedText.js +2 -0
  255. package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js +20 -0
  256. package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js.map +1 -0
  257. package/dist/internal/components/MergeEditor/PaneHeader.js +13 -0
  258. package/dist/internal/components/MergeEditor/PaneHeader.js.map +1 -0
  259. package/dist/internal/components/MergeEditor/constants.js +18 -0
  260. package/dist/internal/components/MergeEditor/constants.js.map +1 -0
  261. package/dist/internal/components/MergeEditor/useMergeDiff.js +2 -0
  262. package/dist/internal/components/Modal.js +2 -0
  263. package/dist/internal/components/Navbar.js +2 -0
  264. package/dist/internal/components/Pagination.js +2 -0
  265. package/dist/internal/components/PanelWithDetails.js +31 -0
  266. package/dist/internal/components/PanelWithDetails.js.map +1 -0
  267. package/dist/internal/components/Popconfirm.js +2 -0
  268. package/dist/internal/components/Popover.js +2 -0
  269. package/dist/internal/components/Progress.js +47 -0
  270. package/dist/internal/components/Progress.js.map +1 -0
  271. package/dist/internal/components/RadioGroup.js +2 -0
  272. package/dist/internal/components/Resizable.js +2 -0
  273. package/dist/internal/components/ScrollArea.js +42 -0
  274. package/dist/internal/components/ScrollArea.js.map +1 -0
  275. package/dist/internal/components/Search.js +2 -0
  276. package/dist/internal/components/Select.js +2 -0
  277. package/dist/internal/components/Separator.js +84 -0
  278. package/dist/internal/components/Separator.js.map +1 -0
  279. package/dist/internal/components/Sheet.js +2 -0
  280. package/dist/internal/components/Sidebar.js +2 -0
  281. package/dist/internal/components/Skeleton/Skeleton.js +39 -0
  282. package/dist/internal/components/Skeleton/Skeleton.js.map +1 -0
  283. package/dist/internal/components/Skeleton/SkeletonList.js +41 -0
  284. package/dist/internal/components/Skeleton/SkeletonList.js.map +1 -0
  285. package/dist/internal/components/Slider.js +2 -0
  286. package/dist/internal/components/SpotlightBackdrop.js +132 -0
  287. package/dist/internal/components/SpotlightBackdrop.js.map +1 -0
  288. package/dist/internal/components/Stepper.js +2 -0
  289. package/dist/internal/components/Switch.js +2 -0
  290. package/dist/internal/components/Table.js +2 -0
  291. package/dist/internal/components/Tabs.js +2 -0
  292. package/dist/internal/components/ThemeProvider.js +3 -0
  293. package/dist/internal/components/TimePicker.js +2 -0
  294. package/dist/internal/components/Timeline.js +2 -0
  295. package/dist/internal/components/Toast.js +3 -0
  296. package/dist/internal/components/Toggle.js +169 -0
  297. package/dist/internal/components/Toggle.js.map +1 -0
  298. package/dist/internal/components/ToggleGroup.js +2 -0
  299. package/dist/internal/components/Tooltip.js +2 -0
  300. package/dist/internal/components/Truncated.js +45 -0
  301. package/dist/internal/components/Truncated.js.map +1 -0
  302. package/dist/internal/components/Workbench.js +2 -0
  303. package/dist/internal/components/ZoomableSvg.js +2 -0
  304. package/dist/internal/hooks/useAutosizeInput.js +77 -0
  305. package/dist/internal/hooks/useAutosizeInput.js.map +1 -0
  306. package/dist/internal/hooks/useScrollbarPosition.js +45 -0
  307. package/dist/internal/hooks/useScrollbarPosition.js.map +1 -0
  308. package/dist/internal/hooks/useStableCallback.js +29 -0
  309. package/dist/internal/hooks/useStableCallback.js.map +1 -0
  310. package/dist/internal/utils/mergeRefs.js +20 -0
  311. package/dist/internal/utils/mergeRefs.js.map +1 -0
  312. package/dist/internal/utils.js +5 -0
  313. package/dist/markdown-editor.d.ts +72 -72
  314. package/dist/markdown-editor.js +1122 -1193
  315. package/dist/markdown-editor.js.map +1 -1
  316. package/dist/mermaid.d.ts +12 -12
  317. package/dist/mermaid.js +2 -10
  318. package/dist/rjsf.d.ts +33 -34
  319. package/dist/rjsf.js +1543 -1600
  320. package/dist/rjsf.js.map +1 -1
  321. package/dist/rolldown-runtime-Bdc48AWt.js +33 -0
  322. package/dist/styles-DSUP_-9Z.js +158 -0
  323. package/dist/styles-DSUP_-9Z.js.map +1 -0
  324. package/dist/styles.css +1 -1
  325. package/dist/testing.d.ts +8 -7
  326. package/dist/testing.js +36 -16
  327. package/dist/testing.js.map +1 -1
  328. package/dist/themeTokens-BNg98Mu9.js +85 -0
  329. package/dist/themeTokens-BNg98Mu9.js.map +1 -0
  330. package/dist/toast-CjkURw0M.js +184 -0
  331. package/dist/toast-CjkURw0M.js.map +1 -0
  332. package/dist/useColorSchemeState-CYqcUfSH.js +61 -0
  333. package/dist/useColorSchemeState-CYqcUfSH.js.map +1 -0
  334. package/dist/useControllableState-M6494mCT.js +31 -0
  335. package/dist/useControllableState-M6494mCT.js.map +1 -0
  336. package/dist/useElement-DkF6esWL.js +15 -0
  337. package/dist/useElement-DkF6esWL.js.map +1 -0
  338. package/dist/useMergeDiff-CvowEXJ1.js +465 -0
  339. package/dist/useMergeDiff-CvowEXJ1.js.map +1 -0
  340. package/dist/utils-D0c5VAyF.js +308 -0
  341. package/dist/utils-D0c5VAyF.js.map +1 -0
  342. package/package.json +10 -9
  343. package/src/styles.css +35 -7
  344. package/src/theme.css +64 -0
  345. package/dist/MermaidDiagram-EOKJHQQV.js +0 -10
  346. package/dist/MermaidDiagram-EOKJHQQV.js.map +0 -1
  347. package/dist/chunk-63NSN2VL.js +0 -274
  348. package/dist/chunk-63NSN2VL.js.map +0 -1
  349. package/dist/chunk-6FPEI4EM.js +0 -6683
  350. package/dist/chunk-6FPEI4EM.js.map +0 -1
  351. package/dist/chunk-7PUUHEJQ.js +0 -1313
  352. package/dist/chunk-7PUUHEJQ.js.map +0 -1
  353. package/dist/chunk-BOHNXTMM.js +0 -606
  354. package/dist/chunk-BOHNXTMM.js.map +0 -1
  355. package/dist/chunk-C3L3TBBT.js +0 -242
  356. package/dist/chunk-C3L3TBBT.js.map +0 -1
  357. package/dist/chunk-CTCFYWJC.js +0 -407
  358. package/dist/chunk-CTCFYWJC.js.map +0 -1
  359. package/dist/chunk-ESBL3IPF.js +0 -23
  360. package/dist/chunk-ESBL3IPF.js.map +0 -1
  361. package/dist/chunk-IJTHFNNJ.js +0 -261
  362. package/dist/chunk-IJTHFNNJ.js.map +0 -1
  363. package/dist/chunk-JP7PNHLH.js +0 -40
  364. package/dist/chunk-JP7PNHLH.js.map +0 -1
  365. package/dist/chunk-KPNAW5MU.js +0 -229
  366. package/dist/chunk-KPNAW5MU.js.map +0 -1
  367. package/dist/chunk-L37JJ6MR.js +0 -152
  368. package/dist/chunk-L37JJ6MR.js.map +0 -1
  369. package/dist/chunk-Q7NWXLCT.js +0 -90
  370. package/dist/chunk-Q7NWXLCT.js.map +0 -1
  371. package/dist/chunk-SYIEF644.js +0 -1016
  372. package/dist/chunk-SYIEF644.js.map +0 -1
  373. package/dist/chunk-VMFSRV5H.js +0 -16
  374. package/dist/chunk-VMFSRV5H.js.map +0 -1
  375. package/dist/chunk-VPPM7UUQ.js +0 -47
  376. package/dist/chunk-VPPM7UUQ.js.map +0 -1
  377. package/dist/chunk-XV3UUOYF.js +0 -845
  378. package/dist/chunk-XV3UUOYF.js.map +0 -1
  379. package/dist/constants-D3gaMY-W.d.ts +0 -39
  380. package/dist/icons.js.map +0 -1
  381. package/dist/index.js.map +0 -1
  382. package/dist/mermaid.js.map +0 -1
@@ -0,0 +1,84 @@
1
+ import { cn } from "../../classNames-BzrkDnOD.js";
2
+ import { cva } from "class-variance-authority";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import * as RSeparator from "@radix-ui/react-separator";
5
+ //#region src/components/Separator/Separator.tsx
6
+ const separatorVariants = cva([
7
+ "tw:flex",
8
+ "tw:items-center",
9
+ "tw:justify-center",
10
+ "tw:self-stretch",
11
+ "tw:before:content-['']",
12
+ "tw:before:bg-border"
13
+ ], {
14
+ defaultVariants: {
15
+ orientation: "vertical",
16
+ size: "full"
17
+ },
18
+ compoundVariants: [
19
+ {
20
+ orientation: "horizontal",
21
+ size: "full",
22
+ className: ["tw:before:w-full"]
23
+ },
24
+ {
25
+ orientation: "horizontal",
26
+ size: "1/2",
27
+ className: ["tw:before:w-1/2"]
28
+ },
29
+ {
30
+ orientation: "horizontal",
31
+ size: "3/4",
32
+ className: ["tw:before:w-3/4"]
33
+ },
34
+ {
35
+ orientation: "vertical",
36
+ size: "full",
37
+ className: ["tw:before:h-full"]
38
+ },
39
+ {
40
+ orientation: "vertical",
41
+ size: "1/2",
42
+ className: ["tw:before:h-1/2"]
43
+ },
44
+ {
45
+ orientation: "vertical",
46
+ size: "3/4",
47
+ className: ["tw:before:h-3/4"]
48
+ }
49
+ ],
50
+ variants: {
51
+ size: {
52
+ full: ["tw:before:h-full"],
53
+ "1/2": [],
54
+ "3/4": []
55
+ },
56
+ orientation: {
57
+ vertical: ["tw:before:w-px"],
58
+ horizontal: ["tw:before:h-px"]
59
+ }
60
+ }
61
+ });
62
+ const Separator = ({ className, orientation = "vertical", size = "full", label, ...props }) => {
63
+ if (label != null && label !== false) return /* @__PURE__ */ jsx(RSeparator.Root, {
64
+ ...props,
65
+ decorative: true,
66
+ orientation: "horizontal",
67
+ className: cn("tw:flex tw:w-full tw:items-center tw:gap-3 tw:self-stretch", "tw:text-xs tw:font-medium tw:text-muted-foreground", "tw:before:content-[''] tw:before:h-px tw:before:flex-1 tw:before:bg-border", "tw:after:content-[''] tw:after:h-px tw:after:flex-1 tw:after:bg-border", className),
68
+ children: label
69
+ });
70
+ return /* @__PURE__ */ jsx(RSeparator.Root, {
71
+ ...props,
72
+ decorative: true,
73
+ orientation,
74
+ className: separatorVariants({
75
+ size,
76
+ orientation,
77
+ className
78
+ })
79
+ });
80
+ };
81
+ //#endregion
82
+ export { Separator };
83
+
84
+ //# sourceMappingURL=Separator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Separator.js","names":[],"sources":["../../../src/components/Separator/Separator.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\nimport * as RSeparator from '@radix-ui/react-separator';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst separatorVariants = cva(\n [\n // position\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:self-stretch',\n\n // before\n \"tw:before:content-['']\",\n 'tw:before:bg-border',\n ],\n {\n defaultVariants: {\n orientation: 'vertical',\n size: 'full',\n },\n compoundVariants: [\n {\n orientation: 'horizontal',\n size: 'full',\n className: ['tw:before:w-full'],\n },\n {\n orientation: 'horizontal',\n size: '1/2',\n className: ['tw:before:w-1/2'],\n },\n {\n orientation: 'horizontal',\n size: '3/4',\n className: ['tw:before:w-3/4'],\n },\n {\n orientation: 'vertical',\n size: 'full',\n className: ['tw:before:h-full'],\n },\n {\n orientation: 'vertical',\n size: '1/2',\n className: ['tw:before:h-1/2'],\n },\n {\n orientation: 'vertical',\n size: '3/4',\n className: ['tw:before:h-3/4'],\n },\n ],\n variants: {\n size: {\n full: ['tw:before:h-full'],\n '1/2': [],\n '3/4': [],\n },\n orientation: {\n vertical: ['tw:before:w-px'],\n horizontal: ['tw:before:h-px'],\n },\n },\n },\n);\n\ntype Props = VariantProps<typeof separatorVariants> &\n Omit<ComponentProps<typeof RSeparator.Root>, 'decorative'> & {\n /**\n * Optional label rendered centered between two line segments\n * (typical \"OR\" divider). Implies `orientation=\"horizontal\"`.\n * Overrides any `children` passed to the component.\n */\n label?: ReactNode;\n };\n\nexport const Separator = ({\n className,\n orientation = 'vertical',\n size = 'full',\n label,\n ...props\n}: Props) => {\n if (label != null && label !== false) {\n return (\n <RSeparator.Root\n {...props}\n decorative\n orientation=\"horizontal\"\n className={cn(\n 'tw:flex tw:w-full tw:items-center tw:gap-3 tw:self-stretch',\n 'tw:text-xs tw:font-medium tw:text-muted-foreground',\n \"tw:before:content-[''] tw:before:h-px tw:before:flex-1 tw:before:bg-border\",\n \"tw:after:content-[''] tw:after:h-px tw:after:flex-1 tw:after:bg-border\",\n className,\n )}\n >\n {label}\n </RSeparator.Root>\n );\n }\n\n return (\n <RSeparator.Root\n {...props}\n decorative\n orientation={orientation}\n className={separatorVariants({ size, orientation, className })}\n />\n );\n};\n"],"mappings":";;;;;AAOA,MAAM,oBAAoB,IACxB;CAEE;CACA;CACA;CACA;CAGA;CACA;AACF,GACA;CACE,iBAAiB;EACf,aAAa;EACb,MAAM;CACR;CACA,kBAAkB;EAChB;GACE,aAAa;GACb,MAAM;GACN,WAAW,CAAC,kBAAkB;EAChC;EACA;GACE,aAAa;GACb,MAAM;GACN,WAAW,CAAC,iBAAiB;EAC/B;EACA;GACE,aAAa;GACb,MAAM;GACN,WAAW,CAAC,iBAAiB;EAC/B;EACA;GACE,aAAa;GACb,MAAM;GACN,WAAW,CAAC,kBAAkB;EAChC;EACA;GACE,aAAa;GACb,MAAM;GACN,WAAW,CAAC,iBAAiB;EAC/B;EACA;GACE,aAAa;GACb,MAAM;GACN,WAAW,CAAC,iBAAiB;EAC/B;CACF;CACA,UAAU;EACR,MAAM;GACJ,MAAM,CAAC,kBAAkB;GACzB,OAAO,CAAC;GACR,OAAO,CAAC;EACV;EACA,aAAa;GACX,UAAU,CAAC,gBAAgB;GAC3B,YAAY,CAAC,gBAAgB;EAC/B;CACF;AACF,CACF;AAYA,MAAa,aAAa,EACxB,WACA,cAAc,YACd,OAAO,QACP,OACA,GAAG,YACQ;CACX,IAAI,SAAS,QAAQ,UAAU,OAC7B,OACE,oBAAC,WAAW,MAAZ;EACE,GAAI;EACJ,YAAA;EACA,aAAY;EACZ,WAAW,GACT,8DACA,sDACA,8EACA,0EACA,SACF;EAEC,UAAA;CACc,CAAA;CAIrB,OACE,oBAAC,WAAW,MAAZ;EACE,GAAI;EACJ,YAAA;EACa;EACb,WAAW,kBAAkB;GAAE;GAAM;GAAa;EAAU,CAAC;CAC9D,CAAA;AAEL"}
@@ -0,0 +1,2 @@
1
+ import { Sheet } from "../../Sheet-BQrX8-h5.js";
2
+ export { Sheet };
@@ -0,0 +1,2 @@
1
+ import { Sidebar, SidebarProvider, useOptionalSidebar, useSidebar } from "../../Sidebar-ROaR_AqC.js";
2
+ export { Sidebar, SidebarProvider, useOptionalSidebar, useSidebar };
@@ -0,0 +1,39 @@
1
+ import { cn } from "../../../classNames-BzrkDnOD.js";
2
+ import { useId } from "react";
3
+ import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
4
+ //#region src/components/Skeleton/Skeleton.tsx
5
+ const HEIGHT_CLASS_NAME = {
6
+ xxs: "tw:h-3 tw:rounded",
7
+ xs: "tw:h-4 tw:rounded",
8
+ sm: "tw:h-5 tw:rounded",
9
+ md: "tw:h-6 tw:rounded-md",
10
+ lg: "tw:h-8 tw:rounded-lg",
11
+ xl: "tw:h-10 tw:rounded-lg",
12
+ "2xl": "tw:h-12 tw:rounded-lg"
13
+ };
14
+ const ANIMATION_CLASS_NAME = cn("tw:relative", "tw:overflow-hidden", "tw:pointer-events-none", "tw:bg-skeleton", "tw:before:content-[\"\"]", "tw:before:opacity-100", "tw:before:absolute", "tw:before:inset-0", "tw:before:-translate-x-full", "tw:before:animate-[shimmer_2s_infinite]", "tw:before:bg-gradient-to-r", "tw:before:from-transparent", "tw:before:to-transparent", "tw:before:via-white/40");
15
+ /**
16
+ * Animated placeholder shown in place of content that is still loading.
17
+ *
18
+ * **When to use:** during initial page or section load while the real content is fetched. Match the
19
+ * placeholder shape to the eventual content (one `Skeleton height="lg"` per title row, several `xs` for
20
+ * paragraph lines). For list shells use `count` to render N stacked placeholders.
21
+ * **When NOT to use:** for indeterminate background work without a layout slot use `DotsLoader` or
22
+ * `Button isLoading`; for empty / error states once the request resolves use `EmptyState` / `ErrorState`.
23
+ * **Composition:** drop directly into the slot the real content will occupy. `SkeletonList` is the typical
24
+ * shell for `Table` / `Card`-list pages.
25
+ *
26
+ * @see RECIPES.md#data-card-with-skeleton — for a loading card pattern
27
+ */
28
+ const Skeleton = ({ height = "md", className, count = 1 }) => {
29
+ const prefixId = useId();
30
+ const keys = Array.from({ length: count }, (_, i) => `${prefixId}-${i}`);
31
+ return /* @__PURE__ */ jsx(Fragment$1, { children: keys.map((key) => /* @__PURE__ */ jsx("div", {
32
+ "data-skeleton": "true",
33
+ className: cn(HEIGHT_CLASS_NAME[height], ANIMATION_CLASS_NAME, className)
34
+ }, key)) });
35
+ };
36
+ //#endregion
37
+ export { Skeleton };
38
+
39
+ //# sourceMappingURL=Skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Skeleton.js","names":[],"sources":["../../../../src/components/Skeleton/Skeleton.tsx"],"sourcesContent":["import { useId } from 'react';\n\nimport { cn } from '../../utils';\n\nexport type Height = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\n/**\n * Props for `Skeleton`. `height` maps to the named token (xxs 12px → 2xl 48px); `count` renders multiple\n * stacked placeholders sharing the same shape.\n */\ntype SkeletonProps = {\n /** Named height token — `xxs` (12px) through `2xl` (48px). */\n height?: Height;\n className?: string;\n /** Number of stacked placeholder rows. Use for list-style loading states. */\n count?: number;\n};\n\nconst HEIGHT_CLASS_NAME: Record<Height, string> = {\n xxs: 'tw:h-3 tw:rounded',\n xs: 'tw:h-4 tw:rounded',\n sm: 'tw:h-5 tw:rounded',\n md: 'tw:h-6 tw:rounded-md',\n lg: 'tw:h-8 tw:rounded-lg',\n xl: 'tw:h-10 tw:rounded-lg',\n '2xl': 'tw:h-12 tw:rounded-lg',\n};\n\nconst ANIMATION_CLASS_NAME = cn(\n // base styles\n 'tw:relative',\n 'tw:overflow-hidden',\n 'tw:pointer-events-none',\n 'tw:bg-skeleton',\n\n // before\n 'tw:before:content-[\"\"]',\n 'tw:before:opacity-100',\n 'tw:before:absolute',\n 'tw:before:inset-0',\n 'tw:before:-translate-x-full',\n 'tw:before:animate-[shimmer_2s_infinite]',\n 'tw:before:bg-gradient-to-r',\n 'tw:before:from-transparent',\n 'tw:before:to-transparent',\n 'tw:before:via-white/40',\n);\n\n/**\n * Animated placeholder shown in place of content that is still loading.\n *\n * **When to use:** during initial page or section load while the real content is fetched. Match the\n * placeholder shape to the eventual content (one `Skeleton height=\"lg\"` per title row, several `xs` for\n * paragraph lines). For list shells use `count` to render N stacked placeholders.\n * **When NOT to use:** for indeterminate background work without a layout slot use `DotsLoader` or\n * `Button isLoading`; for empty / error states once the request resolves use `EmptyState` / `ErrorState`.\n * **Composition:** drop directly into the slot the real content will occupy. `SkeletonList` is the typical\n * shell for `Table` / `Card`-list pages.\n *\n * @see RECIPES.md#data-card-with-skeleton — for a loading card pattern\n */\nexport const Skeleton = ({ height = 'md', className, count = 1 }: SkeletonProps) => {\n const prefixId = useId();\n const keys = Array.from({ length: count }, (_, i) => `${prefixId}-${i}`);\n\n return (\n <>\n {keys.map((key) => (\n <div\n key={key}\n data-skeleton=\"true\"\n className={cn(HEIGHT_CLASS_NAME[height], ANIMATION_CLASS_NAME, className)}\n />\n ))}\n </>\n );\n};\n"],"mappings":";;;;AAkBA,MAAM,oBAA4C;CAChD,KAAK;CACL,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,OAAO;AACT;AAEA,MAAM,uBAAuB,GAE3B,eACA,sBACA,0BACA,kBAGA,4BACA,yBACA,sBACA,qBACA,+BACA,2CACA,8BACA,8BACA,4BACA,wBACF;;;;;;;;;;;;;;AAeA,MAAa,YAAY,EAAE,SAAS,MAAM,WAAW,QAAQ,QAAuB;CAClF,MAAM,WAAW,MAAM;CACvB,MAAM,OAAO,MAAM,KAAK,EAAE,QAAQ,MAAM,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,GAAG;CAEvE,OACE,oBAAA,YAAA,EAAA,UACG,KAAK,KAAK,QACT,oBAAC,OAAD;EAEE,iBAAc;EACd,WAAW,GAAG,kBAAkB,SAAS,sBAAsB,SAAS;CACzE,GAHM,GAGN,CACF,EACD,CAAA;AAEN"}
@@ -0,0 +1,41 @@
1
+ import { cn } from "../../../classNames-BzrkDnOD.js";
2
+ import { Skeleton } from "./Skeleton.js";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ //#region src/components/Skeleton/SkeletonList.tsx
5
+ const duplicateArray = (arr, times) => {
6
+ return Array(times).fill(arr).flat();
7
+ };
8
+ const Item = ({ className, iconHeight = "md", rowHeight = "sm", iconClassName = "tw:w-6 " }) => /* @__PURE__ */ jsxs("div", {
9
+ className: "tw:flex tw:items-center tw:gap-3",
10
+ children: [/* @__PURE__ */ jsx(Skeleton, {
11
+ height: iconHeight,
12
+ className: cn("tw:rounded-full tw:shrink-0", iconClassName)
13
+ }), /* @__PURE__ */ jsx(Skeleton, {
14
+ height: rowHeight,
15
+ className
16
+ })]
17
+ });
18
+ const SkeletonList = ({ hasHeading = false, groups = 3, className, iconHeight = "md", rowHeight = "sm", iconClassName }) => /* @__PURE__ */ jsxs("div", {
19
+ className: cn("tw:flex tw:flex-col tw:gap-4", className),
20
+ children: [hasHeading ? /* @__PURE__ */ jsx(Skeleton, {
21
+ height: "xxs",
22
+ className: "tw:w-28"
23
+ }) : null, /* @__PURE__ */ jsx("div", {
24
+ className: cn("tw:flex tw:flex-col", ["xxs", "xs"].includes(rowHeight) ? "tw:gap-3" : "tw:gap-4"),
25
+ children: duplicateArray([
26
+ "tw:w-5/6",
27
+ "tw:w-3/4",
28
+ "tw:w-4/5",
29
+ "tw:w-2/3"
30
+ ], groups).map((className, index) => /* @__PURE__ */ jsx(Item, {
31
+ iconHeight,
32
+ rowHeight,
33
+ iconClassName,
34
+ className
35
+ }, `${className}-${index}`))
36
+ })]
37
+ });
38
+ //#endregion
39
+ export { SkeletonList };
40
+
41
+ //# sourceMappingURL=SkeletonList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkeletonList.js","names":[],"sources":["../../../../src/components/Skeleton/SkeletonList.tsx"],"sourcesContent":["import { cn } from '../../utils';\n\nimport type { Height } from './Skeleton';\nimport { Skeleton } from './Skeleton';\n\nconst duplicateArray = (arr: string[], times: number) => {\n return Array(times).fill(arr).flat();\n};\n\nconst Item = ({\n className,\n iconHeight = 'md',\n rowHeight = 'sm',\n iconClassName = 'tw:w-6 ',\n}: {\n className: string;\n iconHeight?: Height;\n rowHeight?: Height;\n iconClassName?: string;\n}) => (\n <div className=\"tw:flex tw:items-center tw:gap-3\">\n <Skeleton height={iconHeight} className={cn('tw:rounded-full tw:shrink-0', iconClassName)} />\n <Skeleton height={rowHeight} className={className} />\n </div>\n);\n\nexport const SkeletonList = ({\n hasHeading = false,\n groups = 3,\n className,\n iconHeight = 'md',\n rowHeight = 'sm',\n iconClassName,\n}: {\n hasHeading?: boolean;\n groups?: number;\n className?: string;\n iconHeight?: Height;\n rowHeight?: Height;\n iconClassName?: string;\n}) => (\n <div className={cn('tw:flex tw:flex-col tw:gap-4', className)}>\n {hasHeading ? <Skeleton height=\"xxs\" className=\"tw:w-28\" /> : null}\n\n <div\n className={cn(\n 'tw:flex tw:flex-col',\n ['xxs', 'xs'].includes(rowHeight) ? 'tw:gap-3' : 'tw:gap-4',\n )}\n >\n {duplicateArray(['tw:w-5/6', 'tw:w-3/4', 'tw:w-4/5', 'tw:w-2/3'], groups).map(\n (className, index) => (\n <Item\n // oxlint-disable-next-line react/no-array-index-key\n key={`${className}-${index}`}\n iconHeight={iconHeight}\n rowHeight={rowHeight}\n iconClassName={iconClassName}\n className={className}\n />\n ),\n )}\n </div>\n </div>\n);\n"],"mappings":";;;;AAKA,MAAM,kBAAkB,KAAe,UAAkB;CACvD,OAAO,MAAM,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;AACrC;AAEA,MAAM,QAAQ,EACZ,WACA,aAAa,MACb,YAAY,MACZ,gBAAgB,gBAOhB,qBAAC,OAAD;CAAK,WAAU;CAAf,UAAA,CACE,oBAAC,UAAD;EAAU,QAAQ;EAAY,WAAW,GAAG,+BAA+B,aAAa;CAAI,CAAA,GAC5F,oBAAC,UAAD;EAAU,QAAQ;EAAsB;CAAY,CAAA,CACjD;;AAGP,MAAa,gBAAgB,EAC3B,aAAa,OACb,SAAS,GACT,WACA,aAAa,MACb,YAAY,MACZ,oBASA,qBAAC,OAAD;CAAK,WAAW,GAAG,gCAAgC,SAAS;CAA5D,UAAA,CACG,aAAa,oBAAC,UAAD;EAAU,QAAO;EAAM,WAAU;CAAW,CAAA,IAAI,MAE9D,oBAAC,OAAD;EACE,WAAW,GACT,uBACA,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,SAAS,IAAI,aAAa,UACnD;EAEC,UAAA,eAAe;GAAC;GAAY;GAAY;GAAY;EAAU,GAAG,MAAM,CAAC,CAAC,KACvE,WAAW,UACV,oBAAC,MAAD;GAGc;GACD;GACI;GACJ;EACZ,GALM,GAAG,UAAU,GAAG,OAKtB,CAEL;CACG,CAAA,CACF"}
@@ -0,0 +1,2 @@
1
+ import { Slider } from "../../Slider-Da_3mS5v.js";
2
+ export { Slider };
@@ -0,0 +1,132 @@
1
+ import { cn } from "../../classNames-BzrkDnOD.js";
2
+ import { useId, useLayoutEffect, useState } from "react";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ //#region src/components/SpotlightBackdrop/SpotlightBackdrop.tsx
5
+ /**
6
+ * Full-viewport dimmed layer with an SVG-mask cut-out around a target rect,
7
+ * producing a spotlight highlight. With `rect={null}` it dims the whole viewport
8
+ * (no cut-out). The dim tone uses the semantic `foreground` token, so it re-skins
9
+ * with the active brand.
10
+ *
11
+ * **Presentational primitive** — pass a `rect` from `useTargetRect`, and compose
12
+ * with `Popover` for an anchored callout. Tour / coachmark orchestration
13
+ * (steps, next/prev, "seen" persistence) is intentionally app-owned; see the
14
+ * "Guided tour (recipe)" story for the composition.
15
+ */
16
+ const SpotlightBackdrop = ({ rect, padding = 8, radius = 8, className, onClick }) => {
17
+ const maskId = useId();
18
+ const cutout = rect ? {
19
+ x: rect.left - padding,
20
+ y: rect.top - padding,
21
+ width: rect.width + padding * 2,
22
+ height: rect.height + padding * 2
23
+ } : null;
24
+ return /* @__PURE__ */ jsx("div", {
25
+ "aria-hidden": true,
26
+ onClick,
27
+ className: cn("tw:pointer-events-none tw:fixed tw:inset-0 tw:z-[1056]", className),
28
+ children: /* @__PURE__ */ jsxs("svg", {
29
+ width: "100%",
30
+ height: "100%",
31
+ className: "tw:size-full",
32
+ children: [/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("mask", {
33
+ id: maskId,
34
+ children: [/* @__PURE__ */ jsx("rect", {
35
+ x: "0",
36
+ y: "0",
37
+ width: "100%",
38
+ height: "100%",
39
+ fill: "white"
40
+ }), cutout && /* @__PURE__ */ jsx("rect", {
41
+ x: cutout.x,
42
+ y: cutout.y,
43
+ width: cutout.width,
44
+ height: cutout.height,
45
+ rx: radius,
46
+ ry: radius,
47
+ fill: "black"
48
+ })]
49
+ }) }), /* @__PURE__ */ jsx("rect", {
50
+ x: "0",
51
+ y: "0",
52
+ width: "100%",
53
+ height: "100%",
54
+ mask: `url(#${maskId})`,
55
+ className: "tw:pointer-events-auto tw:fill-foreground/50"
56
+ })]
57
+ })
58
+ });
59
+ };
60
+ //#endregion
61
+ //#region src/components/SpotlightBackdrop/useTargetRect.ts
62
+ const resolveElement = (target) => {
63
+ if (!target) return null;
64
+ if (typeof target !== "string") return target.current;
65
+ try {
66
+ return document.querySelector(target);
67
+ } catch (error) {
68
+ console.error(`useTargetRect: invalid target selector "${target}"`, error);
69
+ return null;
70
+ }
71
+ };
72
+ /**
73
+ * Resolves a `target` (CSS selector or React ref) to a live viewport rect and
74
+ * keeps it in sync while `enabled` — re-measuring on resize and scroll so an
75
+ * anchored overlay (e.g. `SpotlightBackdrop` + `Popover`) follows the element.
76
+ * Returns `null` when disabled or the target is absent, so callers can fall
77
+ * back to a centered/full-dim layout.
78
+ */
79
+ const useTargetRect = (target, enabled) => {
80
+ const [rect, setRect] = useState(null);
81
+ useLayoutEffect(() => {
82
+ if (!enabled || !target) {
83
+ setRect(null);
84
+ return;
85
+ }
86
+ let frame = 0;
87
+ let attemptsLeft = 60;
88
+ const same = (a, b) => {
89
+ if (a === null) return false;
90
+ return a.top === b.top && a.left === b.left && a.width === b.width && a.height === b.height;
91
+ };
92
+ const measure = () => {
93
+ const element = resolveElement(target);
94
+ if (!element) {
95
+ setRect(null);
96
+ if (attemptsLeft > 0) {
97
+ attemptsLeft -= 1;
98
+ frame = requestAnimationFrame(measure);
99
+ }
100
+ return;
101
+ }
102
+ const box = element.getBoundingClientRect();
103
+ const next = {
104
+ top: box.top,
105
+ left: box.left,
106
+ width: box.width,
107
+ height: box.height
108
+ };
109
+ setRect((prev) => same(prev, next) ? prev : next);
110
+ };
111
+ const scheduleMeasure = () => {
112
+ cancelAnimationFrame(frame);
113
+ frame = requestAnimationFrame(measure);
114
+ };
115
+ measure();
116
+ window.addEventListener("resize", scheduleMeasure, { passive: true });
117
+ window.addEventListener("scroll", scheduleMeasure, {
118
+ capture: true,
119
+ passive: true
120
+ });
121
+ return () => {
122
+ cancelAnimationFrame(frame);
123
+ window.removeEventListener("resize", scheduleMeasure);
124
+ window.removeEventListener("scroll", scheduleMeasure, true);
125
+ };
126
+ }, [target, enabled]);
127
+ return rect;
128
+ };
129
+ //#endregion
130
+ export { SpotlightBackdrop, useTargetRect };
131
+
132
+ //# sourceMappingURL=SpotlightBackdrop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpotlightBackdrop.js","names":[],"sources":["../../../src/components/SpotlightBackdrop/SpotlightBackdrop.tsx","../../../src/components/SpotlightBackdrop/useTargetRect.ts"],"sourcesContent":["import { type MouseEventHandler, useId } from 'react';\n\nimport { cn } from '../../utils';\n\nimport type { TargetRect } from './useTargetRect';\n\ntype Props = {\n /** Target box to cut out of the dim layer, or `null` for a full dim (no highlight). */\n rect: TargetRect | null;\n /** Padding around the target inside the cut-out, in px. */\n padding?: number;\n /** Corner radius of the cut-out, in px. */\n radius?: number;\n className?: string;\n /** Fired when the dim layer is clicked (e.g. to dismiss). Receives the click event. */\n onClick?: MouseEventHandler<HTMLDivElement>;\n};\n\n/**\n * Full-viewport dimmed layer with an SVG-mask cut-out around a target rect,\n * producing a spotlight highlight. With `rect={null}` it dims the whole viewport\n * (no cut-out). The dim tone uses the semantic `foreground` token, so it re-skins\n * with the active brand.\n *\n * **Presentational primitive** — pass a `rect` from `useTargetRect`, and compose\n * with `Popover` for an anchored callout. Tour / coachmark orchestration\n * (steps, next/prev, \"seen\" persistence) is intentionally app-owned; see the\n * \"Guided tour (recipe)\" story for the composition.\n */\nexport const SpotlightBackdrop = ({ rect, padding = 8, radius = 8, className, onClick }: Props) => {\n const maskId = useId();\n\n const cutout = rect\n ? {\n x: rect.left - padding,\n y: rect.top - padding,\n width: rect.width + padding * 2,\n height: rect.height + padding * 2,\n }\n : null;\n\n return (\n // Sits above the standard portalled surface tier (z 1055) so stray popovers\n // can't punch through the dim; the anchored callout must set a higher z.\n // The wrapper ignores pointer events and only the painted dim (the masked\n // rect) captures them, bubbling to the wrapper's `onClick`. A click inside\n // the masked-out cut-out isn't painted, so it falls through to the target.\n <div\n aria-hidden\n onClick={onClick}\n className={cn('tw:pointer-events-none tw:fixed tw:inset-0 tw:z-[1056]', className)}\n >\n <svg width=\"100%\" height=\"100%\" className=\"tw:size-full\">\n <defs>\n <mask id={maskId}>\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"white\" />\n {cutout && (\n <rect\n x={cutout.x}\n y={cutout.y}\n width={cutout.width}\n height={cutout.height}\n rx={radius}\n ry={radius}\n fill=\"black\"\n />\n )}\n </mask>\n </defs>\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n mask={`url(#${maskId})`}\n className=\"tw:pointer-events-auto tw:fill-foreground/50\"\n />\n </svg>\n </div>\n );\n};\n","import { type RefObject, useLayoutEffect, useState } from 'react';\n\n/** Viewport-relative box of the highlighted target. */\nexport type TargetRect = {\n top: number;\n left: number;\n width: number;\n height: number;\n};\n\n/** Element to track: a CSS selector, a React ref, or nothing (centered/no target). */\nexport type SpotlightTarget = string | RefObject<Element | null> | undefined;\n\nconst resolveElement = (target: SpotlightTarget): Element | null => {\n if (!target) return null;\n if (typeof target !== 'string') return target.current;\n try {\n return document.querySelector(target);\n } catch (error) {\n // An invalid selector throws a DOMException; don't crash the render.\n console.error(`useTargetRect: invalid target selector \"${target}\"`, error);\n return null;\n }\n};\n\n/**\n * Resolves a `target` (CSS selector or React ref) to a live viewport rect and\n * keeps it in sync while `enabled` — re-measuring on resize and scroll so an\n * anchored overlay (e.g. `SpotlightBackdrop` + `Popover`) follows the element.\n * Returns `null` when disabled or the target is absent, so callers can fall\n * back to a centered/full-dim layout.\n */\nexport const useTargetRect = (target: SpotlightTarget, enabled: boolean): TargetRect | null => {\n const [rect, setRect] = useState<TargetRect | null>(null);\n\n useLayoutEffect(() => {\n if (!enabled || !target) {\n setRect(null);\n return;\n }\n\n let frame = 0;\n // Cap the lazy-mount poll so a permanently-absent target settles on `null`\n // instead of spinning a frame forever. ~1s at 60fps is ample for a target\n // that mounts a tick or two after the overlay opens.\n let attemptsLeft = 60;\n\n const same = (a: TargetRect | null, b: TargetRect) => {\n if (a === null) return false;\n return a.top === b.top && a.left === b.left && a.width === b.width && a.height === b.height;\n };\n\n // Re-resolve on every measure: the target may mount lazily after the overlay\n // opens, so we poll (rAF) until it appears — up to `attemptsLeft` frames —\n // then track it on resize/scroll. Until then `rect` stays `null` and the\n // caller falls back to a centered/full-dim layout. State only updates when\n // the rect actually changed, avoiding needless re-renders.\n const measure = () => {\n const element = resolveElement(target);\n if (!element) {\n setRect(null);\n if (attemptsLeft > 0) {\n attemptsLeft -= 1;\n frame = requestAnimationFrame(measure);\n }\n return;\n }\n const box = element.getBoundingClientRect();\n const next = { top: box.top, left: box.left, width: box.width, height: box.height };\n setRect((prev) => (same(prev, next) ? prev : next));\n };\n\n // Coalesce scroll/resize bursts to at most one measure per animation frame.\n const scheduleMeasure = () => {\n cancelAnimationFrame(frame);\n frame = requestAnimationFrame(measure);\n };\n\n measure();\n window.addEventListener('resize', scheduleMeasure, { passive: true });\n window.addEventListener('scroll', scheduleMeasure, { capture: true, passive: true });\n\n return () => {\n cancelAnimationFrame(frame);\n window.removeEventListener('resize', scheduleMeasure);\n window.removeEventListener('scroll', scheduleMeasure, true);\n };\n }, [target, enabled]);\n\n return rect;\n};\n"],"mappings":";;;;;;;;;;;;;;;AA6BA,MAAa,qBAAqB,EAAE,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,cAAqB;CACjG,MAAM,SAAS,MAAM;CAErB,MAAM,SAAS,OACX;EACE,GAAG,KAAK,OAAO;EACf,GAAG,KAAK,MAAM;EACd,OAAO,KAAK,QAAQ,UAAU;EAC9B,QAAQ,KAAK,SAAS,UAAU;CAClC,IACA;CAEJ,OAME,oBAAC,OAAD;EACE,eAAA;EACS;EACT,WAAW,GAAG,0DAA0D,SAAS;EAEjF,UAAA,qBAAC,OAAD;GAAK,OAAM;GAAO,QAAO;GAAO,WAAU;GAA1C,UAAA,CACE,oBAAC,QAAD,EAAA,UACE,qBAAC,QAAD;IAAM,IAAI;IAAV,UAAA,CACE,oBAAC,QAAD;KAAM,GAAE;KAAI,GAAE;KAAI,OAAM;KAAO,QAAO;KAAO,MAAK;IAAS,CAAA,GAC1D,UACC,oBAAC,QAAD;KACE,GAAG,OAAO;KACV,GAAG,OAAO;KACV,OAAO,OAAO;KACd,QAAQ,OAAO;KACf,IAAI;KACJ,IAAI;KACJ,MAAK;IACN,CAAA,CAEC;GACF,CAAA,EAAA,CAAA,GACN,oBAAC,QAAD;IACE,GAAE;IACF,GAAE;IACF,OAAM;IACN,QAAO;IACP,MAAM,QAAQ,OAAO;IACrB,WAAU;GACX,CAAA,CACE;;CACF,CAAA;AAET;;;ACnEA,MAAM,kBAAkB,WAA4C;CAClE,IAAI,CAAC,QAAQ,OAAO;CACpB,IAAI,OAAO,WAAW,UAAU,OAAO,OAAO;CAC9C,IAAI;EACF,OAAO,SAAS,cAAc,MAAM;CACtC,SAAS,OAAO;EAEd,QAAQ,MAAM,2CAA2C,OAAO,IAAI,KAAK;EACzE,OAAO;CACT;AACF;;;;;;;;AASA,MAAa,iBAAiB,QAAyB,YAAwC;CAC7F,MAAM,CAAC,MAAM,WAAW,SAA4B,IAAI;CAExD,sBAAsB;EACpB,IAAI,CAAC,WAAW,CAAC,QAAQ;GACvB,QAAQ,IAAI;GACZ;EACF;EAEA,IAAI,QAAQ;EAIZ,IAAI,eAAe;EAEnB,MAAM,QAAQ,GAAsB,MAAkB;GACpD,IAAI,MAAM,MAAM,OAAO;GACvB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE;EACvF;EAOA,MAAM,gBAAgB;GACpB,MAAM,UAAU,eAAe,MAAM;GACrC,IAAI,CAAC,SAAS;IACZ,QAAQ,IAAI;IACZ,IAAI,eAAe,GAAG;KACpB,gBAAgB;KAChB,QAAQ,sBAAsB,OAAO;IACvC;IACA;GACF;GACA,MAAM,MAAM,QAAQ,sBAAsB;GAC1C,MAAM,OAAO;IAAE,KAAK,IAAI;IAAK,MAAM,IAAI;IAAM,OAAO,IAAI;IAAO,QAAQ,IAAI;GAAO;GAClF,SAAS,SAAU,KAAK,MAAM,IAAI,IAAI,OAAO,IAAK;EACpD;EAGA,MAAM,wBAAwB;GAC5B,qBAAqB,KAAK;GAC1B,QAAQ,sBAAsB,OAAO;EACvC;EAEA,QAAQ;EACR,OAAO,iBAAiB,UAAU,iBAAiB,EAAE,SAAS,KAAK,CAAC;EACpE,OAAO,iBAAiB,UAAU,iBAAiB;GAAE,SAAS;GAAM,SAAS;EAAK,CAAC;EAEnF,aAAa;GACX,qBAAqB,KAAK;GAC1B,OAAO,oBAAoB,UAAU,eAAe;GACpD,OAAO,oBAAoB,UAAU,iBAAiB,IAAI;EAC5D;CACF,GAAG,CAAC,QAAQ,OAAO,CAAC;CAEpB,OAAO;AACT"}
@@ -0,0 +1,2 @@
1
+ import { Stepper } from "../../Stepper-C8sm9ZFM.js";
2
+ export { Stepper };
@@ -0,0 +1,2 @@
1
+ import { Switch } from "../../Switch-CX2A0v50.js";
2
+ export { Switch };
@@ -0,0 +1,2 @@
1
+ import { Table, TableSortHeader, tableAriaSort } from "../../Table-CvYuTuNU.js";
2
+ export { Table, TableSortHeader, tableAriaSort };
@@ -0,0 +1,2 @@
1
+ import { Tabs, TabsContent } from "../../Tabs-EAihyqCt.js";
2
+ export { Tabs, TabsContent };
@@ -0,0 +1,3 @@
1
+ import { ArgoDesignContext, DEFAULT_BRAND_ID, DEFAULT_COLOR_SCHEME, useArgoDesign, useTheme } from "../../context-KxxeMHbR.js";
2
+ import { ThemeProvider, brandSchema, exampleCustomer, keboola, keboolaLegacySidebar, keboolaLegacyTopnav } from "../../ThemeProvider-QncUrfJn.js";
3
+ export { ArgoDesignContext, DEFAULT_COLOR_SCHEME, DEFAULT_BRAND_ID as DEFAULT_KEBOOLA_BRAND_ID, ThemeProvider, brandSchema, exampleCustomer, keboola, keboolaLegacySidebar, keboolaLegacyTopnav, useArgoDesign, useTheme };
@@ -0,0 +1,2 @@
1
+ import { TimePicker } from "../../TimePicker-B_NegL-7.js";
2
+ export { TimePicker };
@@ -0,0 +1,2 @@
1
+ import { Timeline } from "../../Timeline-6btyJl4D.js";
2
+ export { Timeline };
@@ -0,0 +1,3 @@
1
+ import { toast } from "../../toast-CjkURw0M.js";
2
+ import { Toaster, useNotification } from "../../Toast-DQSbs3oA.js";
3
+ export { Toaster, toast, useNotification };
@@ -0,0 +1,169 @@
1
+ import { cn } from "../../classNames-BzrkDnOD.js";
2
+ import { cva } from "class-variance-authority";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { Root } from "@radix-ui/react-toggle";
5
+ //#region src/components/Toggle/Toggle.tsx
6
+ const toggleVariants = cva([
7
+ "tailwindcss-preflight",
8
+ "tw:relative",
9
+ "tw:flex",
10
+ "tw:items-center",
11
+ "tw:justify-center",
12
+ "tw:gap-2",
13
+ "tw:uppercase",
14
+ "tw:text-xs",
15
+ "tw:leading-5",
16
+ "tw:font-medium",
17
+ "tw:tracking-[1px]",
18
+ "tw:border",
19
+ "tw:rounded",
20
+ "tw:whitespace-nowrap",
21
+ "tw:transition-colors",
22
+ "tw:duration-100",
23
+ "tw:ease-linear",
24
+ "tw:[&_svg]:transition-colors",
25
+ "tw:[&_svg]:duration-100",
26
+ "tw:[&_svg]:ease-linear",
27
+ "tw:not-disabled:hover:border-neutral-300",
28
+ "tw:not-disabled:hover:bg-neutral-100",
29
+ "tw:disabled:opacity-50",
30
+ "tw:disabled:cursor-not-allowed",
31
+ "tw:[&:not(:active)]:not-disabled:focus-visible:outline",
32
+ "tw:!outline-offset-0",
33
+ "tw:[&:not(:active)]:not-disabled:focus-visible:outline-ring",
34
+ "tw:[&:not(:active)]:not-disabled:focus-visible:outline-1",
35
+ "tw:[&:not(:active)]:not-disabled:focus-visible:ring-4",
36
+ "tw:[&:not(:active)]:not-disabled:focus-visible:ring-ring/20"
37
+ ], {
38
+ variants: {
39
+ variant: {
40
+ ai: [
41
+ "tw:border-0",
42
+ "tw:aria-[pressed=false]:bg-gradient-to-br",
43
+ "tw:aria-[pressed=false]:from-secondary-100",
44
+ "tw:aria-[pressed=false]:to-purple-100",
45
+ "tw:hover:aria-[pressed=false]:from-secondary-200",
46
+ "tw:hover:aria-[pressed=false]:to-purple-200",
47
+ "tw:aria-pressed:bg-gradient-to-br",
48
+ "tw:aria-pressed:from-secondary-600",
49
+ "tw:aria-pressed:to-purple-600",
50
+ "tw:hover:aria-pressed:from-secondary-700",
51
+ "tw:hover:aria-pressed:to-purple-700",
52
+ "tw:[&_*]:stroke-aigradient-600",
53
+ "tw:aria-pressed:[&_*]:stroke-white",
54
+ "tw:*:aria-pressed:text-white"
55
+ ],
56
+ "ai-vivid": [
57
+ "tw:border-0",
58
+ "tw:rounded-lg",
59
+ "tw:normal-case",
60
+ "tw:tracking-normal",
61
+ "tw:gap-1.5",
62
+ "tw:bg-gradient-to-br",
63
+ "tw:from-sky-400",
64
+ "tw:via-sky-600",
65
+ "tw:to-violet-600",
66
+ "tw:text-white",
67
+ "tw:not-disabled:hover:bg-none",
68
+ "tw:not-disabled:hover:bg-sky-100",
69
+ "tw:not-disabled:hover:border-transparent",
70
+ "tw:not-disabled:hover:text-sky-700",
71
+ "tw:not-disabled:hover:[&_svg]:text-sky-700",
72
+ "tw:aria-[pressed=true]:bg-gradient-to-br",
73
+ "tw:aria-[pressed=true]:from-sky-700",
74
+ "tw:aria-[pressed=true]:to-sky-900",
75
+ "tw:aria-[pressed=true]:text-white",
76
+ "tw:aria-[pressed=true]:[&_svg]:text-white"
77
+ ],
78
+ ghost: [
79
+ "tw:border-0",
80
+ "tw:rounded-lg",
81
+ "tw:normal-case",
82
+ "tw:bg-transparent",
83
+ "tw:[&_svg]:text-muted-foreground",
84
+ "tw:not-disabled:hover:bg-muted",
85
+ "tw:not-disabled:hover:[&_svg]:text-secondary-500",
86
+ "tw:aria-pressed:bg-secondary-500/15",
87
+ "tw:aria-pressed:[&_svg]:text-secondary-500",
88
+ "tw:not-disabled:hover:aria-pressed:bg-secondary-500/25",
89
+ "tw:not-disabled:hover:aria-pressed:[&_svg]:text-secondary-500"
90
+ ]
91
+ },
92
+ size: {
93
+ small: "tw:max-h-8 tw:min-h-8 tw:px-2 tw:py-1.5",
94
+ medium: "tw:max-h-10 tw:min-h-10 tw:px-4 tw:py-2.5",
95
+ large: "tw:max-h-12 tw:min-h-12 tw:px-4 tw:py-3.5"
96
+ },
97
+ orientation: {
98
+ horizontal: "",
99
+ vertical: [
100
+ "tw:flex-col",
101
+ "tw:gap-1",
102
+ "tw:whitespace-normal",
103
+ "tw:break-words",
104
+ "tw:text-center"
105
+ ]
106
+ },
107
+ iconOnly: {
108
+ true: "tw:p-0",
109
+ false: ""
110
+ }
111
+ },
112
+ compoundVariants: [
113
+ {
114
+ iconOnly: true,
115
+ size: "small",
116
+ className: "tw:size-8"
117
+ },
118
+ {
119
+ iconOnly: true,
120
+ size: "medium",
121
+ className: "tw:size-10"
122
+ },
123
+ {
124
+ iconOnly: true,
125
+ size: "large",
126
+ className: "tw:size-12"
127
+ }
128
+ ],
129
+ defaultVariants: {
130
+ variant: "ai",
131
+ size: "medium",
132
+ iconOnly: false,
133
+ orientation: "horizontal"
134
+ }
135
+ });
136
+ const Toggle = ({ ref, className, variant = "ai", size = "medium", orientation = "horizontal", children, icon, badge, disabled = false, ...props }) => {
137
+ const isAiVariant = variant === "ai";
138
+ const isIconOnly = Boolean(icon && children == null);
139
+ return /* @__PURE__ */ jsxs(Root, {
140
+ ...props,
141
+ ref,
142
+ className: cn(toggleVariants({
143
+ variant,
144
+ size,
145
+ orientation,
146
+ iconOnly: isIconOnly,
147
+ className
148
+ })),
149
+ disabled,
150
+ children: [
151
+ badge && /* @__PURE__ */ jsx("span", {
152
+ className: "tw:absolute tw:right-0 tw:top-0 tw:-translate-y-1/2 tw:translate-x-1/4",
153
+ children: badge
154
+ }),
155
+ icon && /* @__PURE__ */ jsx("span", {
156
+ className: "tw:inline-flex tw:size-4 tw:shrink-0 tw:items-center tw:justify-center tw:align-middle tw:[&_svg:not([class*='tw:size-'])]:size-4",
157
+ children: icon
158
+ }),
159
+ isAiVariant ? /* @__PURE__ */ jsx("div", {
160
+ className: "tw:bg-gradient-to-br tw:from-secondary-700 tw:to-purple-700 tw:bg-clip-text tw:text-transparent",
161
+ children
162
+ }) : children
163
+ ]
164
+ });
165
+ };
166
+ //#endregion
167
+ export { Toggle };
168
+
169
+ //# sourceMappingURL=Toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toggle.js","names":[],"sources":["../../../src/components/Toggle/Toggle.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\nimport { Root } from '@radix-ui/react-toggle';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst toggleVariants = cva(\n [\n 'tailwindcss-preflight',\n\n // layout\n 'tw:relative',\n 'tw:flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:gap-2',\n\n // text\n 'tw:uppercase',\n 'tw:text-xs',\n 'tw:leading-5',\n 'tw:font-medium',\n 'tw:tracking-[1px]',\n\n // border\n 'tw:border',\n\n // style\n 'tw:rounded',\n 'tw:whitespace-nowrap',\n\n // transitions\n 'tw:transition-colors',\n 'tw:duration-100',\n 'tw:ease-linear',\n 'tw:[&_svg]:transition-colors',\n 'tw:[&_svg]:duration-100',\n 'tw:[&_svg]:ease-linear',\n\n // hover\n 'tw:not-disabled:hover:border-neutral-300',\n 'tw:not-disabled:hover:bg-neutral-100',\n\n 'tw:disabled:opacity-50',\n 'tw:disabled:cursor-not-allowed',\n\n // focus-visible\n 'tw:[&:not(:active)]:not-disabled:focus-visible:outline',\n 'tw:!outline-offset-0',\n 'tw:[&:not(:active)]:not-disabled:focus-visible:outline-ring',\n 'tw:[&:not(:active)]:not-disabled:focus-visible:outline-1',\n 'tw:[&:not(:active)]:not-disabled:focus-visible:ring-4',\n 'tw:[&:not(:active)]:not-disabled:focus-visible:ring-ring/20',\n ],\n {\n variants: {\n variant: {\n ai: [\n 'tw:border-0',\n\n // off state\n 'tw:aria-[pressed=false]:bg-gradient-to-br',\n 'tw:aria-[pressed=false]:from-secondary-100',\n 'tw:aria-[pressed=false]:to-purple-100',\n 'tw:hover:aria-[pressed=false]:from-secondary-200',\n 'tw:hover:aria-[pressed=false]:to-purple-200',\n\n // on state\n 'tw:aria-pressed:bg-gradient-to-br',\n 'tw:aria-pressed:from-secondary-600',\n 'tw:aria-pressed:to-purple-600',\n 'tw:hover:aria-pressed:from-secondary-700',\n 'tw:hover:aria-pressed:to-purple-700',\n\n // icon color - gradient stroke when off, white stroke when on.\n // Lucide icons are stroke-based; targeting every shape (`*`)\n // catches paths, circles, and other non-path sub-shapes so the\n // whole glyph picks up the gradient.\n 'tw:[&_*]:stroke-aigradient-600',\n 'tw:aria-pressed:[&_*]:stroke-white',\n 'tw:*:aria-pressed:text-white',\n ],\n 'ai-vivid': [\n 'tw:border-0',\n 'tw:rounded-lg',\n 'tw:normal-case',\n 'tw:tracking-normal',\n 'tw:gap-1.5',\n\n // default: sky → violet gradient, white text\n 'tw:bg-gradient-to-br',\n 'tw:from-sky-400',\n 'tw:via-sky-600',\n 'tw:to-violet-600',\n 'tw:text-white',\n\n // hover: light sky bg, dark text\n 'tw:not-disabled:hover:bg-none',\n 'tw:not-disabled:hover:bg-sky-100',\n 'tw:not-disabled:hover:border-transparent',\n 'tw:not-disabled:hover:text-sky-700',\n 'tw:not-disabled:hover:[&_svg]:text-sky-700',\n\n // pressed: dark navy gradient, white\n 'tw:aria-[pressed=true]:bg-gradient-to-br',\n 'tw:aria-[pressed=true]:from-sky-700',\n 'tw:aria-[pressed=true]:to-sky-900',\n 'tw:aria-[pressed=true]:text-white',\n 'tw:aria-[pressed=true]:[&_svg]:text-white',\n ],\n ghost: [\n 'tw:border-0',\n 'tw:rounded-lg',\n\n // The neutral utility variant — mostly icon-only, and where it does carry a label that\n // label is content (a value, an identifier), not chrome, so it keeps its own casing.\n // `ai` / `ai-vivid` stay on the house `uppercase` (`ai-vivid` already opts out).\n 'tw:normal-case',\n\n // The fills are surface-relative — `muted` for hover, a translucent\n // blue tint for pressed — rather than the fixed pale `neutral-100` /\n // `secondary-100`, which glared as bright blocks on the dark scheme.\n // The blue mark itself is unchanged and reads on either surface.\n // default state - transparent background\n 'tw:bg-transparent',\n 'tw:[&_svg]:text-muted-foreground',\n\n // hover state\n 'tw:not-disabled:hover:bg-muted',\n 'tw:not-disabled:hover:[&_svg]:text-secondary-500',\n\n // pressed state\n 'tw:aria-pressed:bg-secondary-500/15',\n 'tw:aria-pressed:[&_svg]:text-secondary-500',\n\n // hover on pressed state\n 'tw:not-disabled:hover:aria-pressed:bg-secondary-500/25',\n 'tw:not-disabled:hover:aria-pressed:[&_svg]:text-secondary-500',\n ],\n },\n size: {\n small: 'tw:max-h-8 tw:min-h-8 tw:px-2 tw:py-1.5',\n medium: 'tw:max-h-10 tw:min-h-10 tw:px-4 tw:py-2.5',\n large: 'tw:max-h-12 tw:min-h-12 tw:px-4 tw:py-3.5',\n },\n // A stacked label wraps (`break-words` splits an identifier too long for its column) instead\n // of forcing every cell as wide as its longest label.\n orientation: {\n horizontal: '',\n vertical: [\n 'tw:flex-col',\n 'tw:gap-1',\n 'tw:whitespace-normal',\n 'tw:break-words',\n 'tw:text-center',\n ],\n },\n iconOnly: {\n true: 'tw:p-0',\n false: '',\n },\n },\n compoundVariants: [\n { iconOnly: true, size: 'small', className: 'tw:size-8' },\n { iconOnly: true, size: 'medium', className: 'tw:size-10' },\n { iconOnly: true, size: 'large', className: 'tw:size-12' },\n ],\n defaultVariants: {\n variant: 'ai',\n size: 'medium',\n iconOnly: false,\n orientation: 'horizontal',\n },\n },\n);\n\ntype Props = {\n icon?: ReactNode;\n badge?: ReactNode;\n orientation?: 'horizontal' | 'vertical';\n} & ComponentProps<typeof Root> &\n Omit<VariantProps<typeof toggleVariants>, 'iconOnly' | 'orientation'>;\n\nexport const Toggle = ({\n ref,\n className,\n variant = 'ai',\n size = 'medium',\n orientation = 'horizontal',\n children,\n icon,\n badge,\n disabled = false,\n ...props\n}: Props) => {\n const isAiVariant = variant === 'ai';\n const isIconOnly = Boolean(icon && children == null);\n\n return (\n <Root\n {...props}\n ref={ref}\n className={cn(\n toggleVariants({ variant, size, orientation, iconOnly: isIconOnly, className }),\n )}\n disabled={disabled}\n >\n {badge && (\n <span className=\"tw:absolute tw:right-0 tw:top-0 tw:-translate-y-1/2 tw:translate-x-1/4\">\n {badge}\n </span>\n )}\n {icon && (\n <span className=\"tw:inline-flex tw:size-4 tw:shrink-0 tw:items-center tw:justify-center tw:align-middle tw:[&_svg:not([class*='tw:size-'])]:size-4\">\n {icon}\n </span>\n )}\n\n {isAiVariant ? (\n <div className=\"tw:bg-gradient-to-br tw:from-secondary-700 tw:to-purple-700 tw:bg-clip-text tw:text-transparent\">\n {children}\n </div>\n ) : (\n children\n )}\n </Root>\n );\n};\n"],"mappings":";;;;;AAMA,MAAM,iBAAiB,IACrB;CACE;CAGA;CACA;CACA;CACA;CACA;CAGA;CACA;CACA;CACA;CACA;CAGA;CAGA;CACA;CAGA;CACA;CACA;CACA;CACA;CACA;CAGA;CACA;CAEA;CACA;CAGA;CACA;CACA;CACA;CACA;CACA;AACF,GACA;CACE,UAAU;EACR,SAAS;GACP,IAAI;IACF;IAGA;IACA;IACA;IACA;IACA;IAGA;IACA;IACA;IACA;IACA;IAMA;IACA;IACA;GACF;GACA,YAAY;IACV;IACA;IACA;IACA;IACA;IAGA;IACA;IACA;IACA;IACA;IAGA;IACA;IACA;IACA;IACA;IAGA;IACA;IACA;IACA;IACA;GACF;GACA,OAAO;IACL;IACA;IAKA;IAOA;IACA;IAGA;IACA;IAGA;IACA;IAGA;IACA;GACF;EACF;EACA,MAAM;GACJ,OAAO;GACP,QAAQ;GACR,OAAO;EACT;EAGA,aAAa;GACX,YAAY;GACZ,UAAU;IACR;IACA;IACA;IACA;IACA;GACF;EACF;EACA,UAAU;GACR,MAAM;GACN,OAAO;EACT;CACF;CACA,kBAAkB;EAChB;GAAE,UAAU;GAAM,MAAM;GAAS,WAAW;EAAY;EACxD;GAAE,UAAU;GAAM,MAAM;GAAU,WAAW;EAAa;EAC1D;GAAE,UAAU;GAAM,MAAM;GAAS,WAAW;EAAa;CAC3D;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;EACN,UAAU;EACV,aAAa;CACf;AACF,CACF;AASA,MAAa,UAAU,EACrB,KACA,WACA,UAAU,MACV,OAAO,UACP,cAAc,cACd,UACA,MACA,OACA,WAAW,OACX,GAAG,YACQ;CACX,MAAM,cAAc,YAAY;CAChC,MAAM,aAAa,QAAQ,QAAQ,YAAY,IAAI;CAEnD,OACE,qBAAC,MAAD;EACE,GAAI;EACC;EACL,WAAW,GACT,eAAe;GAAE;GAAS;GAAM;GAAa,UAAU;GAAY;EAAU,CAAC,CAChF;EACU;EANZ,UAAA;GAQG,SACC,oBAAC,QAAD;IAAM,WAAU;IACb,UAAA;GACG,CAAA;GAEP,QACC,oBAAC,QAAD;IAAM,WAAU;IACb,UAAA;GACG,CAAA;GAGP,cACC,oBAAC,OAAD;IAAK,WAAU;IACZ;GACE,CAAA,IAEL;EAEE;;AAEV"}
@@ -0,0 +1,2 @@
1
+ import { ToggleGroup } from "../../ToggleGroup-Cy_10Mvu.js";
2
+ export { ToggleGroup };
@@ -0,0 +1,2 @@
1
+ import { Tooltip, TooltipProvider } from "../../utils-D0c5VAyF.js";
2
+ export { Tooltip, TooltipProvider };
@@ -0,0 +1,45 @@
1
+ import { cn } from "../../classNames-BzrkDnOD.js";
2
+ import { Tooltip } from "../../utils-D0c5VAyF.js";
3
+ import { useState } from "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region src/components/Truncated.tsx
6
+ const OFFSET_TOLERANCE = 2;
7
+ const Truncated = ({ ref, text, tooltip = text, className, twoLines = false, noTooltip = false, tooltipVariant = "explanatory", tooltipPlacement = "top", ...rest }) => {
8
+ const tooltipText = typeof tooltip === "string" ? tooltip : "";
9
+ const [showTooltip, setShowTooltip] = useState(false);
10
+ const isScrollableTarget = (e) => {
11
+ return e.scrollHeight - OFFSET_TOLERANCE >= e.clientHeight;
12
+ };
13
+ const truncatedClasses = cn(className, "tw:[word-break:break-all]", twoLines ? "tw:line-clamp-2 tw:[word-break:break-word]" : "tw:line-clamp-1");
14
+ if (noTooltip || !tooltipText) return /* @__PURE__ */ jsx("span", {
15
+ ref,
16
+ className: truncatedClasses,
17
+ ...rest,
18
+ children: text
19
+ });
20
+ return /* @__PURE__ */ jsx(Tooltip, {
21
+ placement: tooltipPlacement,
22
+ variant: tooltipVariant,
23
+ forceHide: !showTooltip,
24
+ tooltip: /* @__PURE__ */ jsx("div", { children: tooltipText }),
25
+ triggerAsChild: true,
26
+ children: /* @__PURE__ */ jsx("span", {
27
+ ref,
28
+ className: truncatedClasses,
29
+ ...rest,
30
+ onMouseOver: (e) => {
31
+ setShowTooltip(isScrollableTarget(e.currentTarget));
32
+ rest.onMouseOver?.(e);
33
+ },
34
+ onFocus: (e) => {
35
+ setShowTooltip(isScrollableTarget(e.currentTarget));
36
+ rest.onFocus?.(e);
37
+ },
38
+ children: text
39
+ })
40
+ });
41
+ };
42
+ //#endregion
43
+ export { Truncated };
44
+
45
+ //# sourceMappingURL=Truncated.js.map