@keboola/design 2.0.1 → 2.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 (663) hide show
  1. package/README.md +57 -1
  2. package/dist/icon-names.d.cts +7 -0
  3. package/dist/icon-names.d.ts +7 -0
  4. package/dist/icons.cjs +4 -0
  5. package/dist/icons.d.cts +6 -0
  6. package/dist/icons.d.ts +6 -0
  7. package/dist/icons.js +1 -1
  8. package/dist/index.cjs +127 -97
  9. package/dist/index.cjs.map +1 -1
  10. package/dist/index.d.cts +10184 -0
  11. package/dist/index.d.ts +10184 -0
  12. package/dist/index.js +163 -133
  13. package/dist/index.js.map +1 -1
  14. package/dist/markdown-editor.cjs +30 -33
  15. package/dist/markdown-editor.cjs.map +1 -1
  16. package/dist/markdown-editor.d.cts +74 -0
  17. package/dist/markdown-editor.d.ts +74 -0
  18. package/dist/markdown-editor.js +30 -33
  19. package/dist/markdown-editor.js.map +1 -1
  20. package/dist/mermaid.cjs +18 -14
  21. package/dist/mermaid.cjs.map +1 -1
  22. package/dist/mermaid.d.cts +11 -0
  23. package/dist/mermaid.d.ts +11 -0
  24. package/dist/mermaid.js +18 -14
  25. package/dist/mermaid.js.map +1 -1
  26. package/dist/styles.css +1 -1
  27. package/package.json +79 -9
  28. package/src/blocks/AIKit/AnswerSummary.stories.tsx +0 -38
  29. package/src/blocks/AIKit/AnswerSummary.tsx +0 -63
  30. package/src/blocks/AIKit/CollapsibleStepHeader.stories.tsx +0 -53
  31. package/src/blocks/AIKit/CollapsibleStepHeader.tsx +0 -64
  32. package/src/blocks/AIKit/InlineStepDetail.stories.tsx +0 -25
  33. package/src/blocks/AIKit/InlineStepDetail.tsx +0 -13
  34. package/src/blocks/AIKit/InlineStepLabel.stories.tsx +0 -37
  35. package/src/blocks/AIKit/InlineStepLabel.tsx +0 -36
  36. package/src/blocks/AIKit/MessageBubble.stories.tsx +0 -145
  37. package/src/blocks/AIKit/MessageBubble.tsx +0 -68
  38. package/src/blocks/AIKit/PlanApproval.stories.tsx +0 -121
  39. package/src/blocks/AIKit/PlanApproval.test.tsx +0 -241
  40. package/src/blocks/AIKit/PlanApproval.tsx +0 -363
  41. package/src/blocks/AIKit/PlanRewritingIndicator.test.tsx +0 -17
  42. package/src/blocks/AIKit/PlanRewritingIndicator.tsx +0 -20
  43. package/src/blocks/AIKit/PromptInput.stories.tsx +0 -106
  44. package/src/blocks/AIKit/PromptInput.test.tsx +0 -53
  45. package/src/blocks/AIKit/PromptInput.tsx +0 -218
  46. package/src/blocks/AIKit/PromptInputAction.tsx +0 -18
  47. package/src/blocks/AIKit/PromptInputSubmit.tsx +0 -59
  48. package/src/blocks/AIKit/Question.stories.tsx +0 -235
  49. package/src/blocks/AIKit/Question.tsx +0 -350
  50. package/src/blocks/AIKit/QuestionBlock.stories.tsx +0 -99
  51. package/src/blocks/AIKit/QuestionBlock.tsx +0 -83
  52. package/src/blocks/AIKit/SuggestedPrompt.stories.tsx +0 -82
  53. package/src/blocks/AIKit/SuggestedPrompt.tsx +0 -42
  54. package/src/blocks/AIKit/ThinkingIndicator.stories.tsx +0 -21
  55. package/src/blocks/AIKit/ThinkingIndicator.tsx +0 -14
  56. package/src/blocks/AIKit/index.ts +0 -12
  57. package/src/blocks/AutoSaveTextarea/AutoSaveTextarea.stories.tsx +0 -78
  58. package/src/blocks/AutoSaveTextarea/AutoSaveTextarea.tsx +0 -103
  59. package/src/blocks/AutoSaveTextarea/index.ts +0 -1
  60. package/src/blocks/ClipboardButton/ClipboardButton.stories.tsx +0 -28
  61. package/src/blocks/ClipboardButton/ClipboardButton.tsx +0 -43
  62. package/src/blocks/ClipboardButton/ClipboardInline.tsx +0 -40
  63. package/src/blocks/ClipboardButton/index.ts +0 -2
  64. package/src/blocks/ColorInput/ColorInput.stories.tsx +0 -109
  65. package/src/blocks/ColorInput/ColorInput.test.tsx +0 -163
  66. package/src/blocks/ColorInput/ColorInput.tsx +0 -171
  67. package/src/blocks/ColorInput/ColorPicker.tsx +0 -42
  68. package/src/blocks/ColorInput/index.ts +0 -1
  69. package/src/blocks/ColorInput/utils.test.ts +0 -189
  70. package/src/blocks/ColorInput/utils.ts +0 -74
  71. package/src/blocks/EmptyConfigurationActionCard/EmptyConfigurationActionCard.stories.tsx +0 -30
  72. package/src/blocks/EmptyConfigurationActionCard/EmptyConfigurationActionCard.tsx +0 -20
  73. package/src/blocks/EmptyConfigurationActionCard/index.ts +0 -1
  74. package/src/blocks/EmptyState/EmptyState.stories.tsx +0 -93
  75. package/src/blocks/EmptyState/EmptyState.tsx +0 -146
  76. package/src/blocks/EmptyState/index.ts +0 -1
  77. package/src/blocks/ErrorState/ErrorState.stories.tsx +0 -125
  78. package/src/blocks/ErrorState/ErrorState.tsx +0 -162
  79. package/src/blocks/ErrorState/index.ts +0 -1
  80. package/src/blocks/Form/components/FormBody.tsx +0 -27
  81. package/src/blocks/Form/components/SubmitButton.tsx +0 -30
  82. package/src/blocks/Form/connectors/CheckboxField.tsx +0 -34
  83. package/src/blocks/Form/connectors/FieldShell.tsx +0 -46
  84. package/src/blocks/Form/connectors/NumberField.tsx +0 -36
  85. package/src/blocks/Form/connectors/PasswordField.tsx +0 -38
  86. package/src/blocks/Form/connectors/SelectField.tsx +0 -73
  87. package/src/blocks/Form/connectors/SwitchField.tsx +0 -34
  88. package/src/blocks/Form/connectors/TextAreaField.tsx +0 -36
  89. package/src/blocks/Form/connectors/TextField.tsx +0 -36
  90. package/src/blocks/Form/contexts.ts +0 -4
  91. package/src/blocks/Form/formHook.ts +0 -45
  92. package/src/blocks/Form/index.ts +0 -2
  93. package/src/blocks/Form/setServerFieldErrors.test.ts +0 -38
  94. package/src/blocks/Form/setServerFieldErrors.ts +0 -21
  95. package/src/blocks/InputOtp/InputOtp.stories.tsx +0 -214
  96. package/src/blocks/InputOtp/InputOtp.test.tsx +0 -162
  97. package/src/blocks/InputOtp/InputOtp.tsx +0 -62
  98. package/src/blocks/InputOtp/InputOtpGroup.tsx +0 -13
  99. package/src/blocks/InputOtp/InputOtpSeparator.tsx +0 -23
  100. package/src/blocks/InputOtp/InputOtpSlot.styles.ts +0 -52
  101. package/src/blocks/InputOtp/InputOtpSlot.tsx +0 -44
  102. package/src/blocks/InputOtp/context.ts +0 -23
  103. package/src/blocks/InputOtp/index.ts +0 -23
  104. package/src/blocks/MermaidDiagram/MermaidDiagram.stories.tsx +0 -87
  105. package/src/blocks/MermaidDiagram/MermaidDiagram.tsx +0 -266
  106. package/src/blocks/MermaidDiagram/index.ts +0 -1
  107. package/src/blocks/MultiActionButtonGroup/MultiActionButton.stories.tsx +0 -119
  108. package/src/blocks/MultiActionButtonGroup/MultiActionButton.tsx +0 -41
  109. package/src/blocks/MultiActionButtonGroup/MultiActionButtonGroup.tsx +0 -16
  110. package/src/blocks/MultiActionButtonGroup/index.ts +0 -1
  111. package/src/blocks/MultiCombobox/MultiCombobox.stories.tsx +0 -324
  112. package/src/blocks/MultiCombobox/MultiCombobox.tsx +0 -257
  113. package/src/blocks/MultiCombobox/index.ts +0 -1
  114. package/src/blocks/NumberInput/NumberInput.stories.tsx +0 -112
  115. package/src/blocks/NumberInput/NumberInput.test.tsx +0 -148
  116. package/src/blocks/NumberInput/NumberInput.tsx +0 -89
  117. package/src/blocks/NumberInput/index.ts +0 -1
  118. package/src/blocks/PageHeader/AGENTS.md +0 -137
  119. package/src/blocks/PageHeader/PageHeader.stories.tsx +0 -371
  120. package/src/blocks/PageHeader/PageHeader.tsx +0 -22
  121. package/src/blocks/PageHeader/PageHeaderDetail.tsx +0 -84
  122. package/src/blocks/PageHeader/PageHeaderIndex.tsx +0 -75
  123. package/src/blocks/PageHeader/index.ts +0 -1
  124. package/src/blocks/PageHeader/styles.ts +0 -6
  125. package/src/blocks/PageLayout/AGENTS.md +0 -94
  126. package/src/blocks/PageLayout/PageLayout.stories.tsx +0 -146
  127. package/src/blocks/PageLayout/PageLayout.tsx +0 -139
  128. package/src/blocks/PageLayout/index.ts +0 -1
  129. package/src/blocks/PageToolbar/PageToolbar.stories.tsx +0 -353
  130. package/src/blocks/PageToolbar/PageToolbar.tsx +0 -160
  131. package/src/blocks/PageToolbar/PageToolbarToken.tsx +0 -61
  132. package/src/blocks/PageToolbar/index.ts +0 -1
  133. package/src/blocks/PasswordInput/PasswordInput.stories.tsx +0 -114
  134. package/src/blocks/PasswordInput/PasswordInput.test.tsx +0 -219
  135. package/src/blocks/PasswordInput/PasswordInput.tsx +0 -180
  136. package/src/blocks/PasswordInput/index.ts +0 -1
  137. package/src/blocks/SearchInput/SearchInput.stories.tsx +0 -127
  138. package/src/blocks/SearchInput/SearchInput.test.tsx +0 -162
  139. package/src/blocks/SearchInput/SearchInput.tsx +0 -172
  140. package/src/blocks/SearchInput/index.ts +0 -1
  141. package/src/blocks/SearchInputWithNavigation/SearchInputWithNavigation.stories.tsx +0 -73
  142. package/src/blocks/SearchInputWithNavigation/SearchInputWithNavigation.tsx +0 -92
  143. package/src/blocks/SearchInputWithNavigation/index.ts +0 -1
  144. package/src/blocks/SplitButton/SplitButton.stories.tsx +0 -91
  145. package/src/blocks/SplitButton/SplitButton.tsx +0 -81
  146. package/src/blocks/SplitButton/index.ts +0 -1
  147. package/src/blocks/Tagger/TagItem.tsx +0 -32
  148. package/src/blocks/Tagger/TagSelectPopover/TagSelectCreateItem.tsx +0 -44
  149. package/src/blocks/Tagger/TagSelectPopover/TagSelectItem.tsx +0 -31
  150. package/src/blocks/Tagger/TagSelectPopover/TagSelectList.tsx +0 -67
  151. package/src/blocks/Tagger/TagSelectPopover/TagSelectPopover.tsx +0 -34
  152. package/src/blocks/Tagger/TagSelectPopover/TagSelectValue.tsx +0 -47
  153. package/src/blocks/Tagger/TagSelectPopover/index.ts +0 -1
  154. package/src/blocks/Tagger/Tagger.stories.tsx +0 -80
  155. package/src/blocks/Tagger/Tagger.tsx +0 -101
  156. package/src/blocks/Tagger/index.ts +0 -1
  157. package/src/blocks/Tagger/types.ts +0 -11
  158. package/src/blocks/Textarea/Textarea.stories.tsx +0 -47
  159. package/src/blocks/Textarea/Textarea.tsx +0 -50
  160. package/src/blocks/Textarea/index.ts +0 -1
  161. package/src/components/Alert/Alert.stories.tsx +0 -101
  162. package/src/components/Alert/Alert.tsx +0 -121
  163. package/src/components/Alert/AlertAction.tsx +0 -31
  164. package/src/components/Alert/AlertCollapsibleIcon.tsx +0 -25
  165. package/src/components/Alert/AlertDescription.tsx +0 -36
  166. package/src/components/Alert/AlertIcon.tsx +0 -40
  167. package/src/components/Alert/AlertRoot.tsx +0 -64
  168. package/src/components/Alert/AlertTitle.tsx +0 -25
  169. package/src/components/Alert/index.ts +0 -1
  170. package/src/components/Avatar.stories.tsx +0 -22
  171. package/src/components/Avatar.tsx +0 -88
  172. package/src/components/Badge/Badge.stories.tsx +0 -122
  173. package/src/components/Badge/Badge.tsx +0 -71
  174. package/src/components/Badge/BadgeAddon.tsx +0 -63
  175. package/src/components/Badge/BadgeButton.tsx +0 -40
  176. package/src/components/Badge/BadgeLabel.tsx +0 -37
  177. package/src/components/Badge/BadgeRoot.tsx +0 -21
  178. package/src/components/Badge/index.ts +0 -1
  179. package/src/components/Badge/styles.ts +0 -74
  180. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +0 -135
  181. package/src/components/Breadcrumb/Breadcrumb.tsx +0 -23
  182. package/src/components/Breadcrumb/BreadcrumbEllipsis.tsx +0 -43
  183. package/src/components/Breadcrumb/BreadcrumbItem.tsx +0 -9
  184. package/src/components/Breadcrumb/BreadcrumbLink.tsx +0 -48
  185. package/src/components/Breadcrumb/BreadcrumbList.tsx +0 -26
  186. package/src/components/Breadcrumb/BreadcrumbPage.tsx +0 -22
  187. package/src/components/Breadcrumb/BreadcrumbSeparator.tsx +0 -28
  188. package/src/components/Breadcrumb/index.ts +0 -1
  189. package/src/components/Button/Button.stories.tsx +0 -80
  190. package/src/components/Button/Button.tsx +0 -110
  191. package/src/components/Button/ButtonInline.stories.tsx +0 -54
  192. package/src/components/Button/ButtonInline.tsx +0 -77
  193. package/src/components/Button/index.ts +0 -3
  194. package/src/components/Button/styles.ts +0 -313
  195. package/src/components/ButtonGroup/ButtonGroup.stories.tsx +0 -140
  196. package/src/components/ButtonGroup/ButtonGroup.tsx +0 -79
  197. package/src/components/ButtonGroup/index.ts +0 -1
  198. package/src/components/Calendar/Calendar.stories.tsx +0 -101
  199. package/src/components/Calendar/Calendar.tsx +0 -44
  200. package/src/components/Calendar/index.ts +0 -2
  201. package/src/components/Card/Card.stories.tsx +0 -60
  202. package/src/components/Card/Card.tsx +0 -42
  203. package/src/components/Card/CardContent.tsx +0 -5
  204. package/src/components/Card/CardHeader.tsx +0 -5
  205. package/src/components/Card/CardTitle.tsx +0 -13
  206. package/src/components/Card/index.ts +0 -1
  207. package/src/components/Card/styles.ts +0 -32
  208. package/src/components/Checkbox/Checkbox.stories.tsx +0 -210
  209. package/src/components/Checkbox/Checkbox.test.tsx +0 -140
  210. package/src/components/Checkbox/Checkbox.tsx +0 -83
  211. package/src/components/Checkbox/index.ts +0 -1
  212. package/src/components/Checkbox/styles.ts +0 -77
  213. package/src/components/Clipboard/Clipboard.stories.tsx +0 -44
  214. package/src/components/Clipboard/Clipboard.tsx +0 -89
  215. package/src/components/Clipboard/index.ts +0 -1
  216. package/src/components/CodeEditor/ButtonToolbar.tsx +0 -14
  217. package/src/components/CodeEditor/CodeEditor.tsx +0 -155
  218. package/src/components/CodeEditor/SqlEditor.stories.tsx +0 -76
  219. package/src/components/CodeEditor/SqlEditor.tsx +0 -206
  220. package/src/components/CodeEditor/ToggleComponentHelp.tsx +0 -7
  221. package/src/components/CodeEditor/activeQueryHighlight.test.ts +0 -178
  222. package/src/components/CodeEditor/activeQueryHighlight.ts +0 -245
  223. package/src/components/CodeEditor/helpers.ts +0 -100
  224. package/src/components/CodeEditor/highlighting.ts +0 -184
  225. package/src/components/CodeEditor/index.ts +0 -3
  226. package/src/components/CodeEditor/search.ts +0 -186
  227. package/src/components/Collapse.stories.tsx +0 -56
  228. package/src/components/Collapse.tsx +0 -61
  229. package/src/components/Collapsible/Collapsible.stories.tsx +0 -55
  230. package/src/components/Collapsible/Collapsible.tsx +0 -11
  231. package/src/components/Collapsible/CollapsibleContent.tsx +0 -25
  232. package/src/components/Collapsible/index.ts +0 -1
  233. package/src/components/CollapsiblePanel.stories.tsx +0 -25
  234. package/src/components/CollapsiblePanel.tsx +0 -127
  235. package/src/components/Combobox/Combobox.stories.tsx +0 -426
  236. package/src/components/Combobox/Combobox.test.tsx +0 -165
  237. package/src/components/Combobox/Combobox.tsx +0 -345
  238. package/src/components/Combobox/ComboboxChips.tsx +0 -68
  239. package/src/components/Combobox/ComboboxContent.tsx +0 -95
  240. package/src/components/Combobox/ComboboxEmpty.tsx +0 -30
  241. package/src/components/Combobox/ComboboxInput.tsx +0 -10
  242. package/src/components/Combobox/ComboboxInputGroup.tsx +0 -38
  243. package/src/components/Combobox/ComboboxItem.tsx +0 -70
  244. package/src/components/Combobox/ComboboxItemIndicator.tsx +0 -78
  245. package/src/components/Combobox/ComboboxList.tsx +0 -32
  246. package/src/components/Combobox/ComboboxRoot.tsx +0 -5
  247. package/src/components/Combobox/ComboboxSeparator.tsx +0 -20
  248. package/src/components/Combobox/Group/ComboboxCollection.tsx +0 -7
  249. package/src/components/Combobox/Group/ComboboxGroup.tsx +0 -23
  250. package/src/components/Combobox/Group/ComboboxGroupLabel.tsx +0 -38
  251. package/src/components/Combobox/Group/index.ts +0 -3
  252. package/src/components/Combobox/index.ts +0 -1
  253. package/src/components/Combobox/types.ts +0 -22
  254. package/src/components/Combobox/utils.test.ts +0 -95
  255. package/src/components/Combobox/utils.ts +0 -103
  256. package/src/components/Command/Command.stories.tsx +0 -367
  257. package/src/components/Command/Command.tsx +0 -37
  258. package/src/components/Command/CommandContent.tsx +0 -19
  259. package/src/components/Command/CommandEmpty.tsx +0 -6
  260. package/src/components/Command/CommandGroup.tsx +0 -26
  261. package/src/components/Command/CommandInput.tsx +0 -27
  262. package/src/components/Command/CommandItem/CheckIndicator.tsx +0 -86
  263. package/src/components/Command/CommandItem/CommandItem.tsx +0 -94
  264. package/src/components/Command/CommandItem/index.ts +0 -1
  265. package/src/components/Command/CommandList.tsx +0 -32
  266. package/src/components/Command/CommandSeparator.tsx +0 -13
  267. package/src/components/Command/index.ts +0 -6
  268. package/src/components/DatePicker/DatePicker.tsx +0 -37
  269. package/src/components/DatePicker/index.ts +0 -1
  270. package/src/components/DiffView/DiffView.stories.tsx +0 -80
  271. package/src/components/DiffView/DiffView.tsx +0 -131
  272. package/src/components/DiffView/DiffViewMark.tsx +0 -21
  273. package/src/components/DiffView/DiffViewTd.tsx +0 -84
  274. package/src/components/DiffView/DiffViewTh.tsx +0 -23
  275. package/src/components/DiffView/index.ts +0 -11
  276. package/src/components/DiffView/util.test.ts +0 -231
  277. package/src/components/DiffView/util.ts +0 -311
  278. package/src/components/DotsLoader.tsx +0 -22
  279. package/src/components/DropdownMenu/DropdownMenu.stories.tsx +0 -310
  280. package/src/components/DropdownMenu/DropdownMenu.tsx +0 -61
  281. package/src/components/DropdownMenu/DropdownMenuCheckboxItem.tsx +0 -55
  282. package/src/components/DropdownMenu/DropdownMenuContent.tsx +0 -52
  283. package/src/components/DropdownMenu/DropdownMenuContext.tsx +0 -13
  284. package/src/components/DropdownMenu/DropdownMenuItem.tsx +0 -80
  285. package/src/components/DropdownMenu/DropdownMenuItemDescription.tsx +0 -42
  286. package/src/components/DropdownMenu/DropdownMenuItemIndicator.tsx +0 -104
  287. package/src/components/DropdownMenu/DropdownMenuLabel.tsx +0 -21
  288. package/src/components/DropdownMenu/DropdownMenuRadioGroup/DropdownMenuRadioGroup.tsx +0 -31
  289. package/src/components/DropdownMenu/DropdownMenuRadioGroup/DropdownMenuRadioItem.tsx +0 -67
  290. package/src/components/DropdownMenu/DropdownMenuRadioGroup/index.ts +0 -2
  291. package/src/components/DropdownMenu/DropdownMenuSeparator.tsx +0 -35
  292. package/src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSub.tsx +0 -3
  293. package/src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSubContent.tsx +0 -21
  294. package/src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSubTrigger.tsx +0 -17
  295. package/src/components/DropdownMenu/DropdownMenuSub/index.ts +0 -3
  296. package/src/components/DropdownMenu/DropdownMenuTrigger.tsx +0 -19
  297. package/src/components/DropdownMenu/ItemIcon.tsx +0 -30
  298. package/src/components/DropdownMenu/index.ts +0 -1
  299. package/src/components/DropdownMenu/styles.ts +0 -82
  300. package/src/components/EmptySearchContent.stories.tsx +0 -12
  301. package/src/components/EmptySearchContent.tsx +0 -13
  302. package/src/components/FieldBox/FieldBox.stories.tsx +0 -138
  303. package/src/components/FieldBox/FieldBox.tsx +0 -43
  304. package/src/components/FieldBox/FieldBoxDescription.tsx +0 -18
  305. package/src/components/FieldBox/FieldBoxTitle.tsx +0 -20
  306. package/src/components/FieldBox/index.ts +0 -1
  307. package/src/components/FieldBox/styles.ts +0 -37
  308. package/src/components/FormGroup/FormGroup.stories.tsx +0 -120
  309. package/src/components/FormGroup/FormGroup.tsx +0 -48
  310. package/src/components/FormGroup/FormGroupColorInput.tsx +0 -15
  311. package/src/components/FormGroup/FormGroupHelp.tsx +0 -17
  312. package/src/components/FormGroup/FormGroupNumberInput.tsx +0 -15
  313. package/src/components/FormGroup/FormGroupTextInput.tsx +0 -15
  314. package/src/components/FormGroup/FormGroupTextarea.tsx +0 -12
  315. package/src/components/FormGroup/context.ts +0 -11
  316. package/src/components/FormGroup/index.ts +0 -2
  317. package/src/components/FormGroup/types.ts +0 -5
  318. package/src/components/FullScreenModal/FullScreenModal.tsx +0 -8
  319. package/src/components/FullScreenModal/FullScreenModalBody.tsx +0 -16
  320. package/src/components/FullScreenModal/FullScreenModalHeader.tsx +0 -92
  321. package/src/components/FullScreenModal/FullScreenModalRoot.tsx +0 -79
  322. package/src/components/FullScreenModal/index.ts +0 -3
  323. package/src/components/HelpBlock/HelpBlock.stories.tsx +0 -28
  324. package/src/components/HelpBlock/HelpBlock.tsx +0 -31
  325. package/src/components/HelpBlock/index.ts +0 -1
  326. package/src/components/HoverCard/HoverCard.stories.tsx +0 -77
  327. package/src/components/HoverCard/HoverCard.tsx +0 -13
  328. package/src/components/HoverCard/HoverCardContent.tsx +0 -68
  329. package/src/components/HoverCard/index.ts +0 -1
  330. package/src/components/Icon/Icon.stories.tsx +0 -26
  331. package/src/components/Icon/Icon.tsx +0 -10
  332. package/src/components/Icon/Icons.mdx +0 -28
  333. package/src/components/Icon/constants.ts +0 -1
  334. package/src/components/Icon/index.ts +0 -27
  335. package/src/components/Input/DateInput/DateInput.stories.tsx +0 -58
  336. package/src/components/Input/DateInput/DateInput.tsx +0 -143
  337. package/src/components/Input/DateInput/helpers.test.ts +0 -102
  338. package/src/components/Input/DateInput/helpers.ts +0 -59
  339. package/src/components/Input/DateInput/index.ts +0 -1
  340. package/src/components/Input/DateRangeInput/DateRangeInput.stories.tsx +0 -66
  341. package/src/components/Input/DateRangeInput/DateRangeInput.tsx +0 -139
  342. package/src/components/Input/DateRangeInput/helpers.test.ts +0 -146
  343. package/src/components/Input/DateRangeInput/helpers.ts +0 -36
  344. package/src/components/Input/DateRangeInput/index.ts +0 -1
  345. package/src/components/Input/Input.stories.tsx +0 -93
  346. package/src/components/Input/Input.test.tsx +0 -112
  347. package/src/components/Input/Input.tsx +0 -163
  348. package/src/components/Input/TextInput/TextInput.stories.tsx +0 -68
  349. package/src/components/Input/TextInput/TextInput.test.tsx +0 -52
  350. package/src/components/Input/TextInput/TextInput.tsx +0 -73
  351. package/src/components/Input/TextInput/index.ts +0 -1
  352. package/src/components/Input/TimeInput/TimeInput.stories.tsx +0 -89
  353. package/src/components/Input/TimeInput/TimeInput.tsx +0 -106
  354. package/src/components/Input/TimeInput/index.ts +0 -1
  355. package/src/components/Input/index.ts +0 -4
  356. package/src/components/Input/utils.ts +0 -11
  357. package/src/components/InputGroup/InputGroup.stories.tsx +0 -215
  358. package/src/components/InputGroup/InputGroup.tsx +0 -228
  359. package/src/components/InputGroup/InputGroupAddon.tsx +0 -57
  360. package/src/components/InputGroup/InputGroupButton.tsx +0 -25
  361. package/src/components/InputGroup/InputGroupInput.tsx +0 -34
  362. package/src/components/InputGroup/InputGroupText.tsx +0 -21
  363. package/src/components/InputGroup/InputGroupTextArea.tsx +0 -78
  364. package/src/components/InputGroup/index.ts +0 -1
  365. package/src/components/Kbd/Kbd.stories.tsx +0 -82
  366. package/src/components/Kbd/Kbd.tsx +0 -17
  367. package/src/components/Kbd/KbdGroup.tsx +0 -35
  368. package/src/components/Kbd/KbdSeparator.tsx +0 -9
  369. package/src/components/Kbd/index.ts +0 -3
  370. package/src/components/Kbd/keyboardKeys.ts +0 -40
  371. package/src/components/Kbd/styles.ts +0 -39
  372. package/src/components/Label/Label.stories.tsx +0 -53
  373. package/src/components/Label/Label.tsx +0 -31
  374. package/src/components/Label/index.ts +0 -1
  375. package/src/components/Link.stories.tsx +0 -19
  376. package/src/components/Link.tsx +0 -37
  377. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +0 -182
  378. package/src/components/MarkdownEditor/MarkdownEditor.test.ts +0 -171
  379. package/src/components/MarkdownEditor/MarkdownEditor.tsx +0 -245
  380. package/src/components/MarkdownEditor/context.ts +0 -10
  381. package/src/components/MarkdownEditor/index.ts +0 -1
  382. package/src/components/MarkdownEditor/nodes/ImageNode.tsx +0 -115
  383. package/src/components/MarkdownEditor/nodes/ImageNodeComponent.tsx +0 -18
  384. package/src/components/MarkdownEditor/nodes/MermaidNode.tsx +0 -72
  385. package/src/components/MarkdownEditor/nodes/MermaidNodeComponent.tsx +0 -35
  386. package/src/components/MarkdownEditor/plugins/ImagePastePlugin.tsx +0 -149
  387. package/src/components/MarkdownEditor/plugins/KeyboardPlugin.tsx +0 -81
  388. package/src/components/MarkdownEditor/plugins/MarkdownSyncPlugin.tsx +0 -65
  389. package/src/components/MarkdownEditor/plugins/ToolbarPlugin.tsx +0 -284
  390. package/src/components/MarkdownEditor/plugins/toolbar/AlignmentDropdown.tsx +0 -99
  391. package/src/components/MarkdownEditor/plugins/toolbar/BlockTypeDropdown.tsx +0 -142
  392. package/src/components/MarkdownEditor/plugins/toolbar/LinkPanel.tsx +0 -160
  393. package/src/components/MarkdownEditor/plugins/toolbar/ToolbarButton.tsx +0 -36
  394. package/src/components/MarkdownEditor/plugins/toolbar/ToolbarDivider.tsx +0 -1
  395. package/src/components/MarkdownEditor/theme.ts +0 -39
  396. package/src/components/MarkdownEditor/transformers.ts +0 -189
  397. package/src/components/MarkedText/MarkedText.stories.tsx +0 -46
  398. package/src/components/MarkedText/MarkedText.tsx +0 -36
  399. package/src/components/MarkedText/index.ts +0 -1
  400. package/src/components/MarkedText/utils.test.ts +0 -193
  401. package/src/components/MarkedText/utils.ts +0 -37
  402. package/src/components/MergeEditor/AcceptControls/AcceptButton.tsx +0 -25
  403. package/src/components/MergeEditor/AcceptControls/AcceptControls.tsx +0 -77
  404. package/src/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.tsx +0 -38
  405. package/src/components/MergeEditor/MergeEditor.stories.tsx +0 -226
  406. package/src/components/MergeEditor/MergeEditor.tsx +0 -125
  407. package/src/components/MergeEditor/MergePane.tsx +0 -113
  408. package/src/components/MergeEditor/PaneHeader.tsx +0 -11
  409. package/src/components/MergeEditor/constants.ts +0 -48
  410. package/src/components/MergeEditor/decorations.ts +0 -126
  411. package/src/components/MergeEditor/helpers.test.ts +0 -172
  412. package/src/components/MergeEditor/helpers.ts +0 -118
  413. package/src/components/MergeEditor/index.ts +0 -5
  414. package/src/components/MergeEditor/useMergeDiff.ts +0 -573
  415. package/src/components/MergeEditor/useScrollSync.ts +0 -79
  416. package/src/components/Modal/Modal.stories.tsx +0 -680
  417. package/src/components/Modal/Modal.tsx +0 -49
  418. package/src/components/Modal/ModalBody.tsx +0 -33
  419. package/src/components/Modal/ModalCloseIcon.tsx +0 -31
  420. package/src/components/Modal/ModalContent.tsx +0 -95
  421. package/src/components/Modal/ModalDescription.tsx +0 -20
  422. package/src/components/Modal/ModalFooter.tsx +0 -20
  423. package/src/components/Modal/ModalHeader.tsx +0 -61
  424. package/src/components/Modal/ModalIcon.tsx +0 -109
  425. package/src/components/Modal/ModalOverlay.tsx +0 -42
  426. package/src/components/Modal/ModalTitle.tsx +0 -12
  427. package/src/components/Modal/index.ts +0 -1
  428. package/src/components/Navbar/Navbar.stories.tsx +0 -191
  429. package/src/components/Navbar/Navbar.tsx +0 -80
  430. package/src/components/Navbar/NavbarContent.tsx +0 -20
  431. package/src/components/Navbar/NavbarFooter.tsx +0 -11
  432. package/src/components/Navbar/NavbarHeader.tsx +0 -11
  433. package/src/components/Navbar/NavbarMenu.tsx +0 -30
  434. package/src/components/Navbar/NavbarMenuAvatar.tsx +0 -67
  435. package/src/components/Navbar/NavbarMenuButton.tsx +0 -135
  436. package/src/components/Navbar/NavbarMenuItem.tsx +0 -9
  437. package/src/components/Navbar/NavbarMenuItemAdornment.tsx +0 -65
  438. package/src/components/Navbar/index.ts +0 -1
  439. package/src/components/Pagination/Pagination.stories.tsx +0 -131
  440. package/src/components/Pagination/Pagination.tsx +0 -34
  441. package/src/components/Pagination/PaginationButton.tsx +0 -36
  442. package/src/components/Pagination/PaginationContent.tsx +0 -12
  443. package/src/components/Pagination/PaginationEllipsis.tsx +0 -26
  444. package/src/components/Pagination/PaginationItem.tsx +0 -9
  445. package/src/components/Pagination/PaginationNext.tsx +0 -20
  446. package/src/components/Pagination/PaginationPrevious.tsx +0 -14
  447. package/src/components/Pagination/index.ts +0 -1
  448. package/src/components/PanelWithDetails.stories.tsx +0 -28
  449. package/src/components/PanelWithDetails.tsx +0 -65
  450. package/src/components/Popconfirm/Popconfirm.stories.tsx +0 -373
  451. package/src/components/Popconfirm/Popconfirm.tsx +0 -82
  452. package/src/components/Popconfirm/PopconfirmBody.tsx +0 -5
  453. package/src/components/Popconfirm/PopconfirmCancel.tsx +0 -45
  454. package/src/components/Popconfirm/PopconfirmConfirm.tsx +0 -57
  455. package/src/components/Popconfirm/PopconfirmContent.tsx +0 -33
  456. package/src/components/Popconfirm/PopconfirmFooter.tsx +0 -9
  457. package/src/components/Popconfirm/PopconfirmTrigger.tsx +0 -22
  458. package/src/components/Popconfirm/context.ts +0 -19
  459. package/src/components/Popconfirm/index.ts +0 -1
  460. package/src/components/Popover/Popover.stories.tsx +0 -85
  461. package/src/components/Popover/Popover.tsx +0 -15
  462. package/src/components/Popover/PopoverContent.tsx +0 -103
  463. package/src/components/Popover/index.ts +0 -1
  464. package/src/components/Progress/Progress.stories.tsx +0 -67
  465. package/src/components/Progress/Progress.tsx +0 -45
  466. package/src/components/Progress/index.ts +0 -1
  467. package/src/components/RadioGroup/Radio.tsx +0 -61
  468. package/src/components/RadioGroup/RadioGroup.stories.tsx +0 -300
  469. package/src/components/RadioGroup/RadioGroup.tsx +0 -64
  470. package/src/components/RadioGroup/RadioGroupItem.tsx +0 -60
  471. package/src/components/RadioGroup/RadioGroupItemButton.tsx +0 -79
  472. package/src/components/RadioGroup/RadioGroupSeparator.tsx +0 -12
  473. package/src/components/RadioGroup/context.ts +0 -13
  474. package/src/components/RadioGroup/index.ts +0 -1
  475. package/src/components/Resizable/Resizable.stories.tsx +0 -50
  476. package/src/components/Resizable/ResizableHandle.tsx +0 -50
  477. package/src/components/Resizable/ResizablePanel.tsx +0 -12
  478. package/src/components/Resizable/ResizablePanelGroup.tsx +0 -19
  479. package/src/components/Resizable/index.ts +0 -3
  480. package/src/components/ScrollArea/ScrollArea.stories.tsx +0 -43
  481. package/src/components/ScrollArea/ScrollArea.tsx +0 -50
  482. package/src/components/ScrollArea/ScrollBar.tsx +0 -32
  483. package/src/components/ScrollArea/index.ts +0 -2
  484. package/src/components/Search/ClearButton.tsx +0 -42
  485. package/src/components/Search/Search.stories.tsx +0 -77
  486. package/src/components/Search/Search.test.tsx +0 -224
  487. package/src/components/Search/Search.tsx +0 -139
  488. package/src/components/Search/SearchForm.tsx +0 -37
  489. package/src/components/Search/index.ts +0 -2
  490. package/src/components/Search/styles.ts +0 -88
  491. package/src/components/Search/utils.ts +0 -11
  492. package/src/components/Select/Select.stories.tsx +0 -109
  493. package/src/components/Select/Select.tsx +0 -141
  494. package/src/components/Select/SelectContent.tsx +0 -110
  495. package/src/components/Select/SelectGroup.tsx +0 -10
  496. package/src/components/Select/SelectItem.tsx +0 -72
  497. package/src/components/Select/SelectLabel.tsx +0 -32
  498. package/src/components/Select/SelectRoot.tsx +0 -6
  499. package/src/components/Select/SelectSeparator.tsx +0 -13
  500. package/src/components/Select/SelectTrigger.tsx +0 -161
  501. package/src/components/Select/index.ts +0 -1
  502. package/src/components/Separator/Separator.stories.tsx +0 -60
  503. package/src/components/Separator/Separator.test.tsx +0 -39
  504. package/src/components/Separator/Separator.tsx +0 -115
  505. package/src/components/Separator/index.ts +0 -1
  506. package/src/components/Sheet/Sheet.stories.tsx +0 -63
  507. package/src/components/Sheet/Sheet.tsx +0 -21
  508. package/src/components/Sheet/SheetBody.tsx +0 -12
  509. package/src/components/Sheet/SheetContent.tsx +0 -131
  510. package/src/components/Sheet/SheetFooter.tsx +0 -9
  511. package/src/components/Sheet/SheetHeader.tsx +0 -39
  512. package/src/components/Sheet/SheetOverlay.tsx +0 -11
  513. package/src/components/Sheet/SheetTitle.tsx +0 -12
  514. package/src/components/Sheet/index.ts +0 -1
  515. package/src/components/Sidebar/Sidebar.stories.tsx +0 -849
  516. package/src/components/Sidebar/Sidebar.tsx +0 -225
  517. package/src/components/Sidebar/SidebarContent.tsx +0 -61
  518. package/src/components/Sidebar/SidebarFillTrigger.tsx +0 -25
  519. package/src/components/Sidebar/SidebarFooter.tsx +0 -13
  520. package/src/components/Sidebar/SidebarGroup/SidebarGroup.tsx +0 -23
  521. package/src/components/Sidebar/SidebarGroup/SidebarGroupAction.tsx +0 -53
  522. package/src/components/Sidebar/SidebarGroup/SidebarGroupContent.tsx +0 -20
  523. package/src/components/Sidebar/SidebarGroup/SidebarGroupLabel.tsx +0 -76
  524. package/src/components/Sidebar/SidebarGroup/index.ts +0 -4
  525. package/src/components/Sidebar/SidebarHeader.tsx +0 -20
  526. package/src/components/Sidebar/SidebarInstanceContext.ts +0 -18
  527. package/src/components/Sidebar/SidebarMenu/SidebarMenu.tsx +0 -28
  528. package/src/components/Sidebar/SidebarMenu/SidebarMenuAction.tsx +0 -69
  529. package/src/components/Sidebar/SidebarMenu/SidebarMenuBadge.tsx +0 -56
  530. package/src/components/Sidebar/SidebarMenu/SidebarMenuButton.tsx +0 -110
  531. package/src/components/Sidebar/SidebarMenu/SidebarMenuCard.tsx +0 -108
  532. package/src/components/Sidebar/SidebarMenu/SidebarMenuIcon.tsx +0 -30
  533. package/src/components/Sidebar/SidebarMenu/SidebarMenuItem.tsx +0 -9
  534. package/src/components/Sidebar/SidebarMenu/SidebarMenuSub.tsx +0 -139
  535. package/src/components/Sidebar/SidebarMenu/SidebarMenuSubItem.tsx +0 -106
  536. package/src/components/Sidebar/SidebarMenu/SidebarSearchInput.tsx +0 -88
  537. package/src/components/Sidebar/SidebarMenu/index.ts +0 -10
  538. package/src/components/Sidebar/SidebarProvider/SidebarProvider.tsx +0 -171
  539. package/src/components/Sidebar/SidebarProvider/context.ts +0 -35
  540. package/src/components/Sidebar/SidebarProvider/index.ts +0 -2
  541. package/src/components/Sidebar/SidebarProvider/useHoverTracking.test.ts +0 -199
  542. package/src/components/Sidebar/SidebarProvider/useHoverTracking.ts +0 -72
  543. package/src/components/Sidebar/SidebarProvider/useSidebarState.ts +0 -50
  544. package/src/components/Sidebar/SidebarProvider/useTransitionPresence.test.ts +0 -179
  545. package/src/components/Sidebar/SidebarProvider/useTransitionPresence.ts +0 -53
  546. package/src/components/Sidebar/SidebarResizeHandle.tsx +0 -28
  547. package/src/components/Sidebar/SidebarSeparator.tsx +0 -15
  548. package/src/components/Sidebar/SidebarTrigger.tsx +0 -40
  549. package/src/components/Sidebar/index.ts +0 -3
  550. package/src/components/Sidebar/types.ts +0 -6
  551. package/src/components/Sidebar/useResizeSidebar.ts +0 -112
  552. package/src/components/Sidebar/utils.test.ts +0 -178
  553. package/src/components/Sidebar/utils.ts +0 -70
  554. package/src/components/Skeleton/Skeleton.stories.tsx +0 -106
  555. package/src/components/Skeleton/Skeleton.tsx +0 -77
  556. package/src/components/Skeleton/SkeletonList.stories.tsx +0 -11
  557. package/src/components/Skeleton/SkeletonList.tsx +0 -65
  558. package/src/components/Slider/Slider.stories.tsx +0 -99
  559. package/src/components/Slider/Slider.tsx +0 -85
  560. package/src/components/Slider/SliderThumb.tsx +0 -57
  561. package/src/components/Slider/SliderTrack.tsx +0 -49
  562. package/src/components/Slider/index.ts +0 -1
  563. package/src/components/Slider/useInteracting.test.ts +0 -159
  564. package/src/components/Slider/useInteracting.ts +0 -64
  565. package/src/components/Switch/Switch.stories.tsx +0 -177
  566. package/src/components/Switch/Switch.tsx +0 -58
  567. package/src/components/Switch/index.ts +0 -1
  568. package/src/components/Switch/styles.ts +0 -173
  569. package/src/components/Table/Table.stories.tsx +0 -328
  570. package/src/components/Table/Table.tsx +0 -68
  571. package/src/components/Table/TableBody.tsx +0 -22
  572. package/src/components/Table/TableCell.tsx +0 -7
  573. package/src/components/Table/TableFooter.tsx +0 -15
  574. package/src/components/Table/TableHead.tsx +0 -15
  575. package/src/components/Table/TableHeader.tsx +0 -20
  576. package/src/components/Table/TableRow.tsx +0 -11
  577. package/src/components/Table/index.ts +0 -1
  578. package/src/components/Tabs.stories.tsx +0 -123
  579. package/src/components/Tabs.tsx +0 -134
  580. package/src/components/ThemeProvider/AIGradientSvg.tsx +0 -18
  581. package/src/components/ThemeProvider/ThemeProvider.tsx +0 -25
  582. package/src/components/ThemeProvider/index.ts +0 -1
  583. package/src/components/TimePicker/TimePicker.tsx +0 -95
  584. package/src/components/TimePicker/TimePickerButton.tsx +0 -39
  585. package/src/components/TimePicker/index.ts +0 -1
  586. package/src/components/TimePicker/utils.ts +0 -31
  587. package/src/components/Timeline/Timeline.stories.tsx +0 -246
  588. package/src/components/Timeline/Timeline.tsx +0 -35
  589. package/src/components/Timeline/TimelineConnector.tsx +0 -158
  590. package/src/components/Timeline/TimelineContent.tsx +0 -18
  591. package/src/components/Timeline/TimelineItem.tsx +0 -14
  592. package/src/components/Timeline/index.ts +0 -1
  593. package/src/components/Timeline/useLastLineHeight.ts +0 -36
  594. package/src/components/Toast/Toast.stories.tsx +0 -178
  595. package/src/components/Toast/ToastAction.tsx +0 -40
  596. package/src/components/Toast/ToastDescription.tsx +0 -28
  597. package/src/components/Toast/ToastDismiss.tsx +0 -36
  598. package/src/components/Toast/ToastDuration.tsx +0 -43
  599. package/src/components/Toast/ToastRoot.tsx +0 -135
  600. package/src/components/Toast/ToastTitle.tsx +0 -33
  601. package/src/components/Toast/Toaster.tsx +0 -25
  602. package/src/components/Toast/index.ts +0 -3
  603. package/src/components/Toast/toast.tsx +0 -94
  604. package/src/components/Toast/useNotification.tsx +0 -33
  605. package/src/components/Toggle/Toggle.stories.tsx +0 -67
  606. package/src/components/Toggle/Toggle.tsx +0 -202
  607. package/src/components/Toggle/index.ts +0 -1
  608. package/src/components/ToggleGroup/ToggleGroup.stories.tsx +0 -60
  609. package/src/components/ToggleGroup/ToggleGroup.tsx +0 -99
  610. package/src/components/ToggleGroup/index.ts +0 -1
  611. package/src/components/Tooltip/Tooltip.stories.tsx +0 -82
  612. package/src/components/Tooltip/Tooltip.tsx +0 -110
  613. package/src/components/Tooltip/TooltipContent.tsx +0 -90
  614. package/src/components/Tooltip/TooltipRoot.tsx +0 -12
  615. package/src/components/Tooltip/TooltipTrigger.tsx +0 -42
  616. package/src/components/Tooltip/index.ts +0 -1
  617. package/src/components/Truncated.stories.tsx +0 -72
  618. package/src/components/Truncated.tsx +0 -78
  619. package/src/components/ZoomableSvg/ZoomableSvg.stories.tsx +0 -53
  620. package/src/components/ZoomableSvg/ZoomableSvg.tsx +0 -200
  621. package/src/components/ZoomableSvg/index.ts +0 -1
  622. package/src/constants/keyCodes.ts +0 -5
  623. package/src/docs/Colors.mdx +0 -19
  624. package/src/docs/Spacing.mdx +0 -35
  625. package/src/docs/Typography.mdx +0 -63
  626. package/src/docs/components/Typeset.tsx +0 -35
  627. package/src/hooks/useAutosizeInput.stories.tsx +0 -142
  628. package/src/hooks/useAutosizeInput.test.tsx +0 -77
  629. package/src/hooks/useAutosizeInput.tsx +0 -107
  630. package/src/hooks/useElement.ts +0 -16
  631. package/src/hooks/useScrollbarPosition.ts +0 -68
  632. package/src/icon-names.ts +0 -20
  633. package/src/icons/Keboola.tsx +0 -28
  634. package/src/icons/icons.stories.tsx +0 -174
  635. package/src/icons/index.ts +0 -188
  636. package/src/index.ts +0 -90
  637. package/src/patterns/AlertWithAction.stories.tsx +0 -30
  638. package/src/patterns/CardWithEmptyState.stories.tsx +0 -66
  639. package/src/patterns/ConfirmDialog.stories.tsx +0 -72
  640. package/src/patterns/CreatableMultiCombobox.stories.tsx +0 -33
  641. package/src/patterns/DataCardWithSkeleton.stories.tsx +0 -48
  642. package/src/patterns/DisabledButtonTooltip.stories.tsx +0 -30
  643. package/src/patterns/FilterToolbar.stories.tsx +0 -275
  644. package/src/patterns/InfoTooltip.stories.tsx +0 -56
  645. package/src/patterns/ListDetail.stories.tsx +0 -65
  646. package/src/patterns/ModalForm.stories.tsx +0 -59
  647. package/src/patterns/PageHeaderTabs.stories.tsx +0 -48
  648. package/src/utils/classNames.test.ts +0 -16
  649. package/src/utils/classNames.ts +0 -27
  650. package/src/utils/copyToClipboard.ts +0 -3
  651. package/src/utils/createChangeInputEvent.ts +0 -28
  652. package/src/utils/createPrefixedString.ts +0 -2
  653. package/src/utils/debounce.test.ts +0 -63
  654. package/src/utils/debounce.ts +0 -17
  655. package/src/utils/decorators.tsx +0 -16
  656. package/src/utils/escapeStringRegexp.ts +0 -4
  657. package/src/utils/index.ts +0 -11
  658. package/src/utils/isMac.ts +0 -26
  659. package/src/utils/legacyIcon.tsx +0 -28
  660. package/src/utils/mergeRefs.ts +0 -23
  661. package/src/utils/noop.ts +0 -1
  662. package/src/utils/useSHA256.ts +0 -21
  663. package/src/vite-env.d.ts +0 -1
package/dist/mermaid.cjs CHANGED
@@ -10,8 +10,6 @@ var classVarianceAuthority = require('class-variance-authority');
10
10
  var jsxRuntime = require('react/jsx-runtime');
11
11
  var reactSlot = require('@radix-ui/react-slot');
12
12
  var lucideReact = require('lucide-react');
13
- var reactFontawesome = require('@fortawesome/react-fontawesome');
14
- var design = require('@keboola/design');
15
13
 
16
14
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
17
15
 
@@ -120,7 +118,7 @@ var TooltipTrigger = ({
120
118
  if (keepOpenOnClick) event.preventDefault();
121
119
  onClick?.(event);
122
120
  };
123
- const handePointerDown = (event) => {
121
+ const handlePointerDown = (event) => {
124
122
  if (keepOpenOnClick) event.preventDefault();
125
123
  onPointerDown?.(event);
126
124
  };
@@ -132,8 +130,16 @@ var TooltipTrigger = ({
132
130
  ref,
133
131
  className: cn("tailwindcss-preflight", className),
134
132
  onClick: handleClick,
135
- onPointerDown: handePointerDown,
136
- children: asChild ? children : /* @__PURE__ */ jsxRuntime.jsx("span", { children })
133
+ onPointerDown: handlePointerDown,
134
+ children: asChild ? children : (
135
+ // Default-mode trigger wraps children in a span so Radix has a
136
+ // single DOM element to attach handlers to. `tailwindcss-preflight`
137
+ // (merged in via Slot) activates Tailwind's preflight inside the
138
+ // span, which sets `svg { display: block }` — without an inline-flex
139
+ // container that would stack any bare Lucide icon onto its own
140
+ // line. `tw-inline-flex tw-items-center` keeps icon + text aligned.
141
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw-inline-flex tw-items-center", children })
142
+ )
137
143
  }
138
144
  );
139
145
  };
@@ -233,7 +239,6 @@ var Skeleton = ({ height = "md", className, count = 1 }) => {
233
239
  key
234
240
  )) });
235
241
  };
236
- var Icon = ({ ref, icon, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(reactFontawesome.FontAwesomeIcon, { ...rest, ref, icon });
237
242
  var variants = classVarianceAuthority.cva(
238
243
  [
239
244
  "tailwindcss-preflight",
@@ -521,10 +526,10 @@ var Button = ({
521
526
  variant = "primary",
522
527
  size = "medium",
523
528
  block = false,
524
- icon,
525
529
  ...buttonProps
526
530
  }) => {
527
531
  const Comp = asChild ? reactSlot.Root : "button";
532
+ const isIconOnly = String(size).startsWith("icon");
528
533
  const classNames = argo ? argoVariants({ variant, size, block, className }) : variants({
529
534
  size,
530
535
  variant,
@@ -547,14 +552,13 @@ var Button = ({
547
552
  disabled,
548
553
  "aria-disabled": disabled,
549
554
  "data-variant": variant,
550
- "data-icon-only": String(size).startsWith("icon"),
555
+ "data-icon-only": isIconOnly,
551
556
  type,
552
557
  onClick: handleClick,
553
558
  className: cn(classNames),
554
559
  children: [
555
560
  isLoading && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "tw-size-4 tw-shrink-0 tw-animate-spin" }),
556
- !isLoading && icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon }),
557
- /* @__PURE__ */ jsxRuntime.jsx(reactSlot.Slottable, { children })
561
+ /* @__PURE__ */ jsxRuntime.jsx(reactSlot.Slottable, { children: isLoading && isIconOnly ? null : children })
558
562
  ]
559
563
  }
560
564
  );
@@ -598,21 +602,21 @@ var Clipboard = ({
598
602
  return tooltip;
599
603
  })();
600
604
  const tooltipVariant = state === "ready" && !!text ? tooltipVariantProp : "action";
601
- return /* @__PURE__ */ jsxRuntime.jsxs(design.Tooltip.Root, { open: isTooltipOpen, onOpenChange: handleOnOpenChange, children: [
605
+ return /* @__PURE__ */ jsxRuntime.jsxs(Tooltip.Root, { open: isTooltipOpen, onOpenChange: handleOnOpenChange, children: [
602
606
  /* @__PURE__ */ jsxRuntime.jsx(
603
- design.Tooltip.Trigger,
607
+ Tooltip.Trigger,
604
608
  {
605
609
  ...restButtonProps,
606
610
  asChild,
607
611
  keepOpenOnClick: true,
608
612
  onClick: handleOnClick,
609
- className: design.cn("tw-cursor-pointer", className),
613
+ className: cn("tw-cursor-pointer", className),
610
614
  ref,
611
615
  children: children ?? text
612
616
  }
613
617
  ),
614
618
  /* @__PURE__ */ jsxRuntime.jsx(
615
- design.Tooltip.Content,
619
+ Tooltip.Content,
616
620
  {
617
621
  keepOpenOnPointerDownOutside: true,
618
622
  placement: tooltipPlacement,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/classNames.ts","../src/utils/copyToClipboard.ts","../src/constants/keyCodes.ts","../src/components/Tooltip/TooltipContent.tsx","../src/components/Tooltip/TooltipRoot.tsx","../src/components/Tooltip/TooltipTrigger.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Icon/Icon.tsx","../src/components/Button/styles.ts","../src/components/Button/Button.tsx","../src/components/Clipboard/Clipboard.tsx","../src/blocks/ClipboardButton/ClipboardButton.tsx","../src/components/ZoomableSvg/ZoomableSvg.tsx","../src/blocks/MermaidDiagram/MermaidDiagram.tsx"],"names":["extendTailwindMerge","clsx","cva","Portal","jsx","Content","Root","Trigger","useState","jsxs","useId","Fragment","FontAwesomeIcon","Loader2","Slottable","text","Tooltip","cn","Copy","useRef","useEffect","useCallback","Minimize2","Maximize2","colors","renderMermaidSVG"],"mappings":"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","file":"mermaid.cjs","sourcesContent":["import { clsx } from 'clsx';\nimport { extendTailwindMerge } from 'tailwind-merge';\n\nconst twMerge = extendTailwindMerge({\n prefix: 'tw-',\n});\n\ntype Mapping = Record<string, unknown>;\ntype Argument = string | boolean | undefined | Mapping;\n\nexport const cn = (...classes: Argument[]) => twMerge(clsx(...classes));\n\nexport const extractExternalClasses = (className?: string) => {\n if (!className) {\n return ['', ''];\n }\n\n const [extCls, rest] = className.split(' ').reduce(\n (acc, cls) => {\n acc[cls.startsWith('extCls-') ? 0 : 1].push(cls);\n return acc;\n },\n [[], []] as [string[], string[]],\n );\n\n return [extCls.join(' '), rest.join(' ')];\n};\n","export const copyToClipboard = (text: string) => {\n return navigator.clipboard.writeText(text);\n};\n","export const keyCodes = {\n ENTER: 'Enter',\n ESCAPE: 'Escape',\n SPACE: ' ',\n};\n","import type { ComponentProps } from 'react';\nimport { Content, Portal } from '@radix-ui/react-tooltip';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nconst tooltipVariants = cva(\n [\n 'tailwindcss-preflight',\n 'tw-inline-block',\n 'tw-rounded',\n 'tw-bg-neutral-800',\n 'tw-text-white',\n 'tw-break-anywhere',\n 'tw-max-h-96',\n 'tw-overflow-y-auto',\n 'tw-z-[1060]',\n ],\n {\n defaultVariants: {\n variant: 'action',\n },\n variants: {\n variant: {\n action: [\n 'tw-max-w-fit',\n 'tw-px-3',\n 'tw-py-2',\n\n 'tw-text-center',\n 'tw-text-xs',\n 'tw-font-medium',\n 'tw-uppercase',\n 'tw-tracking-wider',\n ],\n explanatory: [\n 'tw-max-w-80',\n 'tw-px-4',\n 'tw-py-3',\n 'tw-text-left',\n\n 'tw-text-sm',\n 'tw-font-normal',\n ],\n },\n },\n },\n);\n\ntype Props = {\n keepOpenOnPointerDownOutside?: boolean;\n placement?: ComponentProps<typeof Content>['side'];\n} & Omit<ComponentProps<typeof Content>, 'side'> &\n VariantProps<typeof tooltipVariants>;\n\nexport const TooltipContent = ({\n className,\n variant,\n keepOpenOnPointerDownOutside = false,\n children,\n onPointerDownOutside,\n sideOffset = 8,\n collisionPadding = 8,\n hideWhenDetached = true,\n placement = 'right',\n ...rest\n}: Props) => {\n const handlePointerDownOutside: ComponentProps<typeof Content>['onPointerDownOutside'] = (\n event,\n ) => {\n if (keepOpenOnPointerDownOutside) event.preventDefault();\n onPointerDownOutside?.(event);\n };\n\n return (\n <Portal>\n <Content\n {...rest}\n data-tooltip-content\n sideOffset={sideOffset}\n collisionPadding={collisionPadding}\n onPointerDownOutside={handlePointerDownOutside}\n className={tooltipVariants({ className, variant: variant })}\n hideWhenDetached={hideWhenDetached}\n side={placement}\n >\n {children}\n </Content>\n </Portal>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { Root } from '@radix-ui/react-tooltip';\n\ntype Props = ComponentProps<typeof Root>;\n\nconst DELAY_SHOW_TOOLTIP = 300;\n\nexport const TooltipRoot = ({ children, delayDuration = DELAY_SHOW_TOOLTIP, ...rest }: Props) => (\n <Root {...rest} delayDuration={delayDuration}>\n {children}\n </Root>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Trigger } from '@radix-ui/react-tooltip';\n\nimport { cn } from '../../utils';\n\ntype Props = {\n keepOpenOnClick?: boolean;\n} & ComponentProps<typeof Trigger>;\n\nexport const TooltipTrigger = ({\n ref,\n children,\n className,\n keepOpenOnClick = false,\n onClick,\n onPointerDown,\n asChild,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const handleClick: ComponentProps<typeof Trigger>['onClick'] = (event) => {\n if (keepOpenOnClick) event.preventDefault();\n onClick?.(event);\n };\n\n const handePointerDown: ComponentProps<typeof Trigger>['onPointerDown'] = (event) => {\n if (keepOpenOnClick) event.preventDefault();\n onPointerDown?.(event);\n };\n\n return (\n <Trigger\n {...rest}\n asChild\n ref={ref}\n className={cn('tailwindcss-preflight', className)}\n onClick={handleClick}\n onPointerDown={handePointerDown}\n >\n {asChild ? children : <span>{children}</span>}\n </Trigger>\n );\n};\n","import { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport type { Content, Trigger } from '@radix-ui/react-tooltip';\nimport { Provider } from '@radix-ui/react-tooltip';\n\nimport { keyCodes } from '../../constants/keyCodes';\n\nimport { TooltipContent } from './TooltipContent';\nimport { TooltipRoot } from './TooltipRoot';\nimport { TooltipTrigger } from './TooltipTrigger';\n\nconst ACTION_TOOLTIP_LIMIT = 30;\n\ntype TriggerProps = {\n triggerAsChild?: boolean;\n};\n\n/**\n * Props for `Tooltip`. `tooltip` is the popup content; `children` is the trigger element.\n * `variant` auto-resolves to `\"explanatory\"` for strings >30 chars, else `\"action\"`.\n */\nexport type Props = {\n /** Keep the tooltip visible when the user clicks the trigger (useful for click-to-copy feedback). */\n keepOpenOnTriggerClick?: boolean;\n /** Content rendered inside the tooltip. Plain text only — no interactive elements (use `HoverCard` or `Popover` for that). */\n tooltip: ReactNode;\n children: ReactNode;\n placement?: ComponentProps<typeof Content>['side'];\n /** Forcibly hide the tooltip regardless of hover state. */\n forceHide?: boolean;\n /** Forcibly show the tooltip regardless of hover state. Useful for guided-tour overlays. */\n forceShow?: boolean;\n className?: string;\n} & TriggerProps &\n Pick<ComponentProps<typeof TooltipContent>, 'variant' | 'className'>;\n\n/** Re-export of Radix `Tooltip.Provider`. Mount once at the app root so tooltips share delay state. */\nexport const TooltipProvider = Provider;\n\n/**\n * Short plain-text label that appears on hover or focus.\n *\n * **When to use:** describing an icon-only `Button`, explaining a disabled control, or labelling a\n * truncated value. Plain text only — auto-switches to the longer `\"explanatory\"` variant when the string\n * exceeds 30 characters.\n * **When NOT to use:** for rich preview content (multiple lines, formatted text, structured data) use\n * `HoverCard`; for tooltips containing links or buttons use `Popover` (interactive elements break a11y\n * inside a `Tooltip`).\n * **Composition:** wrap any focusable element via `triggerAsChild` so the tooltip targets the underlying\n * native element. Mount `TooltipProvider` once at the app root.\n *\n * @see RECIPES.md#disabled-button-tooltip — for the disabled-button + tooltip pattern\n */\nexport const Tooltip = ({\n tooltip,\n children,\n className,\n keepOpenOnTriggerClick = false,\n variant,\n placement = 'right',\n forceHide = false,\n forceShow = false,\n // trigger props\n triggerAsChild = false,\n}: Props) => {\n const [open, setOpen] = useState(false);\n\n const resolvedVariant = (() => {\n if (!!variant) return variant;\n if (typeof tooltip === 'string' && tooltip.length > ACTION_TOOLTIP_LIMIT) return 'explanatory';\n\n return 'action';\n })();\n\n const isActionVariant = resolvedVariant === 'action';\n\n const handleKeyUp: ComponentProps<typeof Trigger>['onKeyUp'] = (event) => {\n if (![keyCodes.ENTER, keyCodes.SPACE].includes(event.key)) return;\n event.stopPropagation();\n };\n\n return (\n <TooltipRoot\n open={!!tooltip && (open || forceShow) && !forceHide}\n onOpenChange={setOpen}\n disableHoverableContent={isActionVariant}\n >\n <TooltipTrigger\n asChild={triggerAsChild}\n keepOpenOnClick={keepOpenOnTriggerClick}\n onKeyUp={handleKeyUp}\n >\n {children}\n </TooltipTrigger>\n\n <TooltipContent\n className={className}\n variant={resolvedVariant}\n placement={placement}\n keepOpenOnPointerDownOutside={keepOpenOnTriggerClick}\n >\n {tooltip}\n </TooltipContent>\n </TooltipRoot>\n );\n};\n\nTooltip.Root = TooltipRoot;\nTooltip.Content = TooltipContent;\nTooltip.Trigger = TooltipTrigger;\n","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-neutral-150',\n\n // before\n 'before:tw-content-[\"\"]',\n 'before:tw-opacity-100',\n 'before:tw-absolute',\n 'before:tw-inset-0',\n 'before:-tw-translate-x-full',\n 'before:tw-animate-[shimmer_2s_infinite]',\n 'before:tw-bg-gradient-to-r',\n 'before:tw-from-transparent',\n 'before:tw-to-transparent',\n 'before:tw-via-neutral-50',\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","import type { ElementRef, Ref } from 'react';\nimport type { IconName, IconPrefix } from '@awesome.me/kit-be8bcf7e5e/icons';\nimport type { IconProp } from '@fortawesome/fontawesome-svg-core';\nimport { FontAwesomeIcon, type FontAwesomeIconProps } from '@fortawesome/react-fontawesome';\n\ntype Props = Omit<FontAwesomeIconProps, 'icon'> & { icon: IconName | [IconPrefix, IconName] };\n\nexport const Icon = ({ ref, icon, ...rest }: Props & { ref?: Ref<ElementRef<'svg'>> }) => (\n <FontAwesomeIcon {...rest} ref={ref} icon={icon as IconProp} />\n);\n","import { cva } from 'class-variance-authority';\n\nexport const variants = cva(\n [\n 'tailwindcss-preflight',\n 'tw-group/button',\n 'tw-border-box',\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-text-xs',\n 'tw-leading-5',\n 'tw-font-medium',\n 'tw-tracking-[1px]',\n 'tw-uppercase',\n\n // border\n 'tw-rounded',\n 'tw-border',\n 'tw-border-transparent',\n\n // styling\n 'tw-shadow-none',\n '[a]:tw-cursor-pointer', // explicitly set for anchor\n\n 'focus-visible:tw-outline',\n 'focus-visible:tw-outline-1',\n 'focus-visible:-tw-outline-offset-1',\n 'focus-visible:tw-outline-secondary-500',\n 'focus-visible:tw-ring-4',\n 'focus-visible:tw-ring-secondary-200',\n\n // disabled\n 'disabled:tw-opacity-40',\n 'disabled:tw-cursor-not-allowed',\n\n // anchor support\n '!tw-no-underline',\n 'aria-disabled:tw-opacity-40',\n 'aria-disabled:tw-cursor-not-allowed',\n\n '[&_svg]:tw-shrink-0',\n ],\n {\n defaultVariants: {\n size: 'medium',\n variant: 'primary',\n block: false,\n },\n variants: {\n block: {\n true: ['tw-w-full'],\n },\n variant: {\n primary: [\n 'tw-text-white',\n 'tw-bg-primary-500',\n\n 'focus:tw-text-white',\n 'hover:tw-text-white',\n 'hover:not-disabled:tw-bg-primary-600',\n 'active:not-disabled:tw-bg-primary-800',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-primary-500',\n ],\n secondary: [\n 'tw-text-white',\n 'tw-bg-secondary-500',\n\n 'focus:tw-text-white',\n 'hover:tw-text-white',\n 'hover:not-disabled:tw-bg-secondary-700',\n 'active:not-disabled:tw-bg-secondary-800',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-secondary-500',\n ],\n danger: [\n 'tw-text-white',\n 'tw-bg-error-500',\n\n 'focus:tw-text-white',\n 'hover:tw-text-white',\n 'hover:not-disabled:tw-bg-error-600',\n 'active:not-disabled:tw-bg-error-700',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-error-500',\n ],\n invisible: [\n 'tw-text-neutral-800',\n 'tw-bg-transparent',\n\n 'focus:tw-text-neutral-800',\n 'hover:not-disabled:tw-bg-neutral-100',\n 'hover:tw-text-neutral-800',\n 'active:not-disabled:tw-bg-neutral-150',\n\n // contrasting icon on hover/active\n '[&_svg]:tw-text-neutral-400',\n '[&_svg]:hover:not-disabled:tw-text-secondary-600',\n '[&_svg]:active:not-disabled:tw-text-secondary-600',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-transparent',\n ],\n outline: [\n 'tw-text-neutral-800',\n 'tw-bg-white',\n // border\n '!tw-border-neutral-200',\n 'hover:tw-text-neutral-800',\n 'focus:tw-text-neutral-800',\n 'hover:not-disabled:!tw-border-neutral-300',\n 'hover:not-disabled:tw-bg-neutral-100',\n 'active:not-disabled:tw-bg-neutral-200',\n\n // contrasting icon hover, same as invisible\n '[&_svg]:tw-text-neutral-400',\n '[&_svg]:not-disabled:hover:tw-text-secondary-600',\n '[&_svg]:active:not-disabled:tw-text-secondary-600',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-white',\n 'aria-disabled:!tw-border-neutral-200',\n ],\n\n inline: [\n 'tw-text-neutral-800',\n 'tw-bg-transparent',\n 'tw-rounded-full',\n\n '[&_svg]:tw-text-neutral-400',\n '[&_svg]:not-disabled:hover:tw-text-secondary-600',\n '[&_svg]:not-disabled:focus:tw-text-secondary-600',\n ],\n },\n size: {\n medium: [\n 'tw-max-h-10',\n 'tw-min-h-10',\n 'tw-px-4',\n 'tw-py-2.5',\n '[&_svg:not([class*=\"tw-size-\"])]:tw-size-4',\n ],\n small: [\n 'tw-max-h-8',\n 'tw-min-h-8',\n 'tw-px-4',\n 'tw-py-1.5',\n '[&_svg:not([class*=\"tw-size-\"])]:tw-size-4',\n ],\n large: [\n 'tw-max-h-12',\n 'tw-min-h-12',\n 'tw-px-4',\n 'tw-py-3.5',\n '[&_svg:not([class*=\"tw-size-\"])]:tw-size-4',\n ],\n\n 'icon-lg': ['tw-size-12', 'tw-p-0', '[&_svg:not([class*=\"tw-size-\"])]:tw-size-6'],\n icon: ['tw-size-10', 'tw-p-0', '[&_svg:not([class*=\"tw-size-\"])]:tw-size-4'],\n 'icon-sm': ['tw-size-8', 'tw-p-0', '[&_svg:not([class*=\"tw-size-\"])]:tw-size-4'],\n 'icon-xs': ['tw-size-6', 'tw-p-0', '[&_svg:not([class*=\"tw-size-\"])]:tw-size-4'],\n 'icon-2xs': [\n '!tw-inline-flex',\n 'tw-size-5',\n 'tw-max-h-5',\n '[&_svg:not([class*=\"tw-size-\"])]:tw-size-3',\n ],\n 'icon-3xs': ['tw-h-fit', 'tw-w-fit', '[&_svg:not([class*=\"tw-size-\"])]:tw-size-4'],\n },\n },\n },\n);\n\nexport const argoVariants = cva(\n [\n 'tailwindcss-preflight',\n\n // layout\n 'tw-relative',\n 'tw-inline-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-whitespace-nowrap',\n 'tw-gap-2',\n\n // border\n 'tw-border',\n 'tw-border-transparent',\n 'tw-rounded-lg',\n\n // text\n 'tw-font-medium',\n 'tw-select-none',\n\n // focus visible\n '!tw-outline-none',\n 'focus-visible:tw-ring-2',\n\n // disabled\n 'disabled:tw-cursor-not-allowed',\n 'disabled:tw-opacity-50',\n 'active:tw-opacity-60',\n\n 'tw-transition-all',\n 'tw-bg-clip-padding',\n\n // anchor support\n '!tw-no-underline',\n\n // icon\n 'tw-shrink-0',\n '[&_svg]:tw-pointer-events-none',\n '[&_svg]:tw-shrink-0',\n \"[&_svg:not([class*='tw-size-'])]:tw-size-4\",\n ],\n {\n defaultVariants: {\n variant: 'primary',\n size: 'medium',\n },\n variants: {\n block: {\n true: ['tw-w-full'],\n },\n variant: {\n primary: [\n 'tw-bg-primary',\n 'tw-text-primary-foreground',\n '[a]:hover:tw-bg-primary/80',\n 'hover:not-disabled:tw-bg-primary/90',\n 'hover:tw-text-primary-foreground',\n 'focus:tw-text-primary-foreground',\n\n 'focus-visible:tw-border-primary',\n 'focus-visible:tw-ring-primary/50',\n ],\n secondary: [\n 'tw-bg-primary/10',\n 'tw-text-primary',\n 'hover:not-disabled:tw-bg-primary/20',\n\n 'focus-visible:tw-border-primary',\n 'focus-visible:tw-ring-primary/50',\n ],\n\n // should be called \"destructive\" by Figma\n danger: [\n 'tw-bg-destructive',\n 'tw-text-destructive-foreground',\n 'hover:tw-text-destructive-foreground',\n 'focus:tw-text-destructive-foreground',\n\n 'focus-visible:tw-border-destructive',\n 'focus-visible:tw-ring-destructive/20',\n ],\n outline: [\n '!tw-border-input',\n 'tw-bg-background',\n 'hover:not-disabled:tw-bg-accent',\n 'hover:not-disabled:tw-text-accent-foreground',\n 'hover:active:tw-bg-background',\n 'focus-visible:!tw-border-primary',\n 'focus-visible:tw-ring-primary/50',\n ],\n\n // should be called \"ghost\" by Figma\n invisible: [\n 'tw-bg-transparent',\n 'tw-text-foreground',\n 'hover:not-disabled:tw-bg-accent',\n 'hover:not-disabled:tw-text-accent-foreground',\n 'hover:not-disabled:tw-border-accent',\n\n 'focus-visible:tw-ring-primary/50',\n ],\n // should be called \"link\" by Figma\n inline: [\n 'tw-bg-transparent',\n 'tw-text-primary',\n 'hover:tw-underline',\n 'hover:active:tw-bg-transparent',\n 'focus-visible:tw-ring-primary/50',\n ],\n },\n size: {\n // should be called \"default\" by Figma\n medium: ['tw-max-h-9', 'tw-py-2', 'tw-px-4', 'tw-text-sm'],\n // should be called \"small\" by Figma\n small: ['tw-max-h-8', 'tw-py-2', 'tw-px-3', 'tw-text-xs'],\n // should be called \"large\" by Figma\n large: ['tw-max-h-10', 'tw-py-2.5', 'tw-px-6', 'tw-text-sm'],\n\n 'icon-lg': ['tw-size-10'],\n icon: ['tw-size-9'],\n 'icon-sm': ['tw-size-8'],\n // unsupported in ARGO, remove when old design is gone\n 'icon-xs': [],\n 'icon-2xs': [],\n 'icon-3xs': [],\n },\n },\n },\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Root, Slottable } from '@radix-ui/react-slot';\nimport type { VariantProps } from 'class-variance-authority';\n\nimport { Loader2 } from '../../icons';\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\nimport { argoVariants, variants } from './styles';\n\n/**\n * Props for the `Button` component.\n *\n * Pass `variant` for primary/secondary/danger/outline/invisible looks, `size`\n * for height (including `icon-*` sizes when rendering icon-only). Icons are\n * composed as children — `<Button><Trash2 className=\"tw-size-4\" /> Delete</Button>`.\n * `argo` opts into the Argo redesign styling (PageHeader / sidebar contexts) —\n * required when nested inside `PageHeader` or `PageLayout.Footer` slots.\n */\ntype Props = {\n /** Replaces the leading content with a spinner and disables the button visually. The caller still controls `disabled`. */\n isLoading?: boolean;\n /** Render as a Radix `Slot` so the parent JSX (e.g. a `react-router` `<Link>`) becomes the button element. */\n asChild?: boolean;\n /** Opt into the Argo redesign variant. Required inside `PageHeader` slots and other Argo surfaces. */\n argo?: boolean;\n /**\n * @deprecated FA-name icon prop kept as a shim during the kbc-ui consumer\n * migration sweep (UT-4109 C2). New code should compose icons as children\n * via direct Lucide imports — `<Button><Trash2 className=\"tw-size-4\" /> Delete</Button>`.\n * Removed in the final C2 cleanup once every consumer is migrated.\n */\n icon?: ComponentProps<typeof Icon>['icon'];\n} & ComponentProps<'button'> &\n VariantProps<typeof variants>;\n\n/**\n * Primary action surface for the design system — covers all clickable controls except inline text links.\n *\n * **When to use:** any user-initiated action (submit, save, open modal, run job). Use `size=\"icon-*\"` with no\n * children for an icon-only button; there is no separate `IconButton` component.\n * **When NOT to use:** for inline text-link actions inside body copy use `ButtonInline`; for navigation that\n * opens a URL use `Link`; for \"primary action + dropdown of related actions\" use `SplitButton`.\n * **Composition:** wrap in `Tooltip` when icon-only or when disabled state needs an explanation; pair with\n * `Popconfirm` for destructive confirmations; pass through `Modal.Trigger` / `DropdownMenu.Trigger` via `asChild`.\n *\n * @see RECIPES.md#disabled-button-tooltip — for the disabled-button + tooltip pattern\n * @see RECIPES.md#confirm-dialog — for destructive-action confirmation\n */\nexport const Button = ({\n ref,\n children,\n disabled = false,\n className,\n type = 'button',\n isLoading = false,\n asChild = false,\n onClick,\n argo = false,\n variant = 'primary',\n size = 'medium',\n block = false,\n icon,\n ...buttonProps\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const Comp = asChild ? Root : 'button';\n const classNames = argo\n ? argoVariants({ variant: variant, size, block, className })\n : variants({\n size,\n variant,\n block,\n className,\n });\n\n const handleClick: ComponentProps<'button'>['onClick'] = (event) => {\n const isAnchor = event.currentTarget.tagName === 'A';\n\n // <a/> does not support disabled by default, and we cannot use pointer-events: none because cursor-not-allowed would not work.\n if (isAnchor && disabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n };\n\n return (\n <Comp\n {...buttonProps}\n ref={ref}\n disabled={disabled}\n aria-disabled={disabled}\n data-variant={variant}\n // `size=\"icon\"` / `size=\"icon-*\"` flags the button as icon-only — needed\n // by `ButtonGroup space=\"block\"` which stretches non-icon children to\n // equal width. Detection by `size` works for both the legacy shim path\n // (no children, FA icon prop) and shadcn composition (icon as the only\n // child).\n data-icon-only={String(size).startsWith('icon')}\n type={type}\n onClick={handleClick}\n className={cn(classNames)}\n >\n {isLoading && <Loader2 className=\"tw-size-4 tw-shrink-0 tw-animate-spin\" />}\n {!isLoading && icon && <Icon icon={icon} />}\n <Slottable>{children}</Slottable>\n </Comp>\n );\n};\n","import { useState } from 'react';\nimport type { ComponentProps, ElementRef, MouseEventHandler, Ref } from 'react';\n\nimport type { TooltipProps } from '@keboola/design';\nimport { cn, Tooltip } from '@keboola/design';\n\nimport { copyToClipboard } from '../../utils';\n\ntype Props = {\n tooltip?: TooltipProps['tooltip'];\n tooltipPlacement?: TooltipProps['placement'];\n tooltipVariant?: TooltipProps['variant'];\n asChild?: TooltipProps['triggerAsChild'];\n text?: string | (() => string);\n} & ComponentProps<'button'>;\n\nexport const Clipboard = ({\n ref,\n text: textProp,\n children,\n tooltip = 'Copy to Clipboard',\n tooltipPlacement = 'top',\n tooltipVariant: tooltipVariantProp = 'action',\n asChild = false,\n onClick,\n className,\n ...restButtonProps\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const [isTooltipOpen, setIsTooltipOpen] = useState(false);\n const [state, setState] = useState<'ready' | 'copied' | 'error'>('ready');\n const text = typeof textProp === 'function' ? textProp() : textProp;\n\n const copy = async (text: string) => {\n try {\n // For the clipboard feature to work reliably, the window must be in focus for security reasons.\n // However, the button can be clicked without the window being focused.\n if (!document.hasFocus()) window.focus();\n\n await copyToClipboard(text);\n setState('copied');\n } catch {\n setState('error');\n }\n };\n\n const handleOnClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n if (text && state === 'ready') void copy(text);\n onClick?.(event);\n };\n\n const handleOnOpenChange: ComponentProps<typeof Tooltip.Root>['onOpenChange'] = (open) => {\n // Reset when the tooltip closes, allowing the user to leave the copy button.\n if (!open && state !== 'ready') setState('ready');\n setIsTooltipOpen(open);\n };\n\n const tooltipContent = (() => {\n if (!text) return 'Nothing to copy';\n if (state === 'error') return 'Failed to copy';\n if (state === 'copied') return 'Copied to Clipboard';\n return tooltip;\n })();\n\n const tooltipVariant: TooltipProps['variant'] =\n state === 'ready' && !!text ? tooltipVariantProp : 'action';\n\n return (\n <Tooltip.Root open={isTooltipOpen} onOpenChange={handleOnOpenChange}>\n <Tooltip.Trigger\n {...restButtonProps}\n asChild={asChild}\n keepOpenOnClick\n onClick={handleOnClick}\n className={cn('tw-cursor-pointer', className)}\n ref={ref}\n >\n {children ?? text}\n </Tooltip.Trigger>\n\n <Tooltip.Content\n keepOpenOnPointerDownOutside\n placement={tooltipPlacement}\n variant={tooltipVariant}\n >\n {tooltipContent}\n </Tooltip.Content>\n </Tooltip.Root>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { Button } from '../../components/Button';\nimport { Clipboard } from '../../components/Clipboard';\nimport { Copy } from '../../icons';\n\ntype ClipboardProps = Pick<\n ComponentProps<typeof Clipboard>,\n 'text' | 'tooltip' | 'tooltipPlacement' | 'tooltipVariant'\n>;\n\ntype ButtonProps = Omit<ComponentProps<typeof Button>, 'disabled' | 'icon'>;\n\ntype Props = ClipboardProps & ButtonProps & { icon?: ReactNode };\n\nconst DEFAULT_ICON: ReactNode = <Copy />;\n\nexport const ClipboardButton = ({\n // clipboard props\n text,\n tooltip,\n tooltipPlacement,\n tooltipVariant,\n\n // button props\n icon = DEFAULT_ICON,\n variant = 'outline',\n children,\n ...rest\n}: Props) => (\n <Clipboard\n asChild\n tooltip={tooltip}\n tooltipPlacement={tooltipPlacement}\n tooltipVariant={tooltipVariant}\n text={text}\n >\n <Button {...rest} variant={variant} disabled={!text}>\n {icon}\n {children}\n </Button>\n </Clipboard>\n);\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { ClipboardButton } from '../../blocks/ClipboardButton';\nimport { Maximize2, Minimize2 } from '../../icons';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { Tooltip } from '../Tooltip';\n\nconst MIN_SCALE = 0.5;\nconst MAX_SCALE = 3;\nconst ZOOM_STEP = 0.1;\n\ntype Props = {\n /** Raw HTML/SVG string. Caller is responsible for sanitizing user-generated content before passing. */\n html: string;\n copyText?: string;\n className?: string;\n};\n\nexport const ZoomableSvg = ({ html, copyText, className }: Props) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [scale, setScale] = useState(1);\n const [translate, setTranslate] = useState({ x: 0, y: 0 });\n const [isFullscreen, setIsFullscreen] = useState(false);\n\n useEffect(() => {\n if (!isFullscreen) return;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n setIsFullscreen(false);\n }\n };\n document.addEventListener('keydown', onKeyDown, { capture: true });\n return () => document.removeEventListener('keydown', onKeyDown, { capture: true });\n }, [isFullscreen]);\n\n const dragRef = useRef<{\n startX: number;\n startY: number;\n startTx: number;\n startTy: number;\n } | null>(null);\n\n useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n\n const onWheel = (e: WheelEvent) => {\n if (!e.ctrlKey && !e.metaKey) return;\n e.preventDefault();\n const delta = e.deltaY > 0 ? -ZOOM_STEP : ZOOM_STEP;\n setScale((s) => Math.min(MAX_SCALE, Math.max(MIN_SCALE, s + delta)));\n };\n\n el.addEventListener('wheel', onWheel, { passive: false });\n return () => el.removeEventListener('wheel', onWheel);\n }, []);\n\n const didDragRef = useRef(false);\n\n const handleMouseDown = useCallback(\n (e: React.MouseEvent) => {\n if (e.button !== 0) return;\n e.preventDefault();\n didDragRef.current = false;\n dragRef.current = {\n startX: e.clientX,\n startY: e.clientY,\n startTx: translate.x,\n startTy: translate.y,\n };\n },\n [translate],\n );\n\n const handleMouseMove = useCallback((e: React.MouseEvent) => {\n if (!dragRef.current) return;\n didDragRef.current = true;\n setTranslate({\n x: dragRef.current.startTx + e.clientX - dragRef.current.startX,\n y: dragRef.current.startTy + e.clientY - dragRef.current.startY,\n });\n }, []);\n\n const handleMouseUp = useCallback(() => {\n dragRef.current = null;\n }, []);\n\n const handleReset = useCallback(() => {\n setScale(1);\n setTranslate({ x: 0, y: 0 });\n }, []);\n\n const isZoomed = Math.abs(scale - 1) > 0.001 || translate.x !== 0 || translate.y !== 0;\n\n const handleClick = useCallback((e: React.MouseEvent) => {\n if (didDragRef.current) {\n e.stopPropagation();\n }\n }, []);\n\n const stopPropagation = useCallback((e: React.SyntheticEvent) => {\n e.stopPropagation();\n }, []);\n\n const diagramContent = (\n <div\n role=\"presentation\"\n className={cn('tw-group/zoom tw-relative', isFullscreen && 'tw-h-full')}\n onClick={handleClick}\n >\n <div\n role=\"presentation\"\n ref={containerRef}\n className={cn(\n 'tw-overflow-hidden tw-cursor-grab active:tw-cursor-grabbing tw-p-3',\n isFullscreen && 'tw-h-full',\n )}\n onMouseDown={handleMouseDown}\n onMouseMove={handleMouseMove}\n onMouseUp={handleMouseUp}\n onMouseLeave={handleMouseUp}\n >\n <div\n className={cn(\n 'tw-flex tw-justify-center tw-origin-center',\n isFullscreen && 'tw-h-full [&>svg]:tw-h-full',\n )}\n style={{ transform: `translate(${translate.x}px, ${translate.y}px) scale(${scale})` }}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n </div>\n <div\n role=\"presentation\"\n className=\"tw-absolute tw-right-1 tw-top-1 tw-flex tw-gap-1 tw-opacity-0 tw-transition-opacity group-hover/zoom:tw-opacity-100\"\n onClick={stopPropagation}\n >\n {isZoomed && (\n <Tooltip tooltip=\"Reset zoom\" placement=\"top\" triggerAsChild>\n <Button size=\"small\" variant=\"outline\" onClick={handleReset} argo>\n Reset\n </Button>\n </Tooltip>\n )}\n {copyText && (\n <ClipboardButton\n text={copyText}\n tooltip=\"Copy code\"\n size=\"icon-sm\"\n variant=\"outline\"\n argo\n />\n )}\n <Tooltip\n tooltip={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'}\n placement=\"top\"\n triggerAsChild\n >\n <Button\n size=\"icon-sm\"\n variant=\"outline\"\n aria-label={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'}\n onClick={() => setIsFullscreen((f) => !f)}\n argo\n >\n {isFullscreen ? (\n <Minimize2 className=\"tw-size-4\" />\n ) : (\n <Maximize2 className=\"tw-size-4\" />\n )}\n </Button>\n </Tooltip>\n </div>\n </div>\n );\n\n if (isFullscreen) {\n return (\n <div\n role=\"presentation\"\n className=\"tw-fixed tw-inset-0 tw-z-[1060] tw-bg-neutral-50 tw-p-4\"\n onClick={stopPropagation}\n >\n {diagramContent}\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n 'tw-overflow-hidden tw-rounded-md tw-border tw-border-neutral-150 tw-bg-neutral-50',\n className,\n )}\n >\n {diagramContent}\n </div>\n );\n};\n","import { useEffect, useId, useRef, useState } from 'react';\nimport { renderMermaidSVG } from 'beautiful-mermaid';\nimport type mermaid from 'mermaid';\n\nimport colors from '@keboola/tailwind-config/colors';\n\nimport { Skeleton } from '../../components/Skeleton/Skeleton';\nimport { ZoomableSvg } from '../../components/ZoomableSvg';\nimport { cn } from '../../utils';\n\ntype MermaidModule = { default: typeof mermaid };\n\nlet mermaidPromise: Promise<MermaidModule> | null = null;\n\nconst getMermaid = (): Promise<MermaidModule> => {\n if (!mermaidPromise) {\n mermaidPromise = import('mermaid')\n .then((m) => {\n m.default.initialize({\n startOnLoad: false,\n securityLevel: 'strict',\n theme: 'base',\n themeVariables: {\n primaryColor: colors.secondary[100],\n primaryTextColor: colors.neutral[800],\n primaryBorderColor: colors.secondary[700],\n secondaryColor: colors.white,\n secondaryTextColor: colors.neutral[800],\n secondaryBorderColor: colors.neutral[150],\n tertiaryColor: colors.warning[100],\n tertiaryTextColor: colors.neutral[800],\n tertiaryBorderColor: colors.warning[500],\n lineColor: colors.neutral[300],\n textColor: colors.neutral[800],\n mainBkg: colors.secondary[100],\n nodeBorder: colors.secondary[700],\n clusterBkg: colors.white,\n clusterBorder: colors.neutral[150],\n titleColor: colors.neutral[800],\n edgeLabelBackground: colors.white,\n nodeTextColor: colors.neutral[800],\n actorBorder: colors.secondary[700],\n actorBkg: colors.secondary[100],\n actorTextColor: colors.neutral[800],\n actorLineColor: colors.neutral[300],\n signalColor: colors.neutral[800],\n signalTextColor: colors.neutral[800],\n labelBoxBkgColor: colors.secondary[100],\n labelBoxBorderColor: colors.secondary[700],\n labelTextColor: colors.neutral[800],\n loopTextColor: colors.neutral[800],\n noteBorderColor: colors.warning[500],\n noteBkgColor: colors.warning[100],\n noteTextColor: colors.neutral[800],\n sectionBkgColor: colors.secondary[100],\n altSectionBkgColor: colors.white,\n sectionBkgColor2: colors.neutral[100],\n taskBorderColor: colors.secondary[700],\n taskBkgColor: colors.secondary[100],\n taskTextColor: colors.neutral[800],\n taskTextDarkColor: colors.neutral[800],\n taskTextLightColor: colors.neutral[800],\n activeTaskBorderColor: colors.primary.DEFAULT,\n activeTaskBkgColor: colors.secondary[200],\n doneTaskBorderColor: colors.primary[600],\n doneTaskBkgColor: colors.primary[100],\n critBorderColor: colors.error[500],\n critBkgColor: colors.error[100],\n fontFamily: 'Inter, system-ui, sans-serif',\n fontSize: '14px',\n },\n });\n return m;\n })\n .catch((err) => {\n mermaidPromise = null;\n throw err;\n });\n }\n return mermaidPromise;\n};\n\nconst stripFontImports = (svg: string): string =>\n svg.replace(/@import\\s+url\\([^)]*fonts\\.googleapis\\.com[^)]*\\);?\\s*/g, '');\n\nconst tryFastRender = (code: string): string | null => {\n try {\n return stripFontImports(\n renderMermaidSVG(code, {\n bg: colors.white,\n fg: colors.neutral[800],\n transparent: true,\n font: 'Inter, system-ui, sans-serif',\n }),\n );\n } catch {\n return null;\n }\n};\n\nconst makeResponsive = (svgString: string): string => {\n const viewBoxMatch = svgString.match(/viewBox=\"[^\"]*\\s([\\d.]+)\\s[\\d.]+\"/);\n const vbWidth = viewBoxMatch ? Math.round(Number(viewBoxMatch[1])) : undefined;\n\n let result = svgString\n .replace(/(<svg[^>]*?)\\s+width=\"[^\"]*\"/i, '$1 width=\"100%\"')\n .replace(/(<svg[^>]*?)\\s+height=\"[^\"]*\"/i, '$1');\n\n if (!vbWidth) return result;\n\n const hasStyle = /(<svg[^>]*?)\\s+style=\"([^\"]*)\"/i.test(result);\n if (hasStyle) {\n result = result.replace(/(<svg[^>]*?)\\s+style=\"([^\"]*)\"/i, (_m, pre, styles) => {\n const cleaned = styles.replace(/max-width:\\s*[^;\"]*;?\\s*/g, '').trim();\n const combined = [cleaned, `max-width: ${vbWidth}px`].filter(Boolean).join('; ');\n return `${pre} style=\"${combined}\"`;\n });\n } else {\n result = result.replace(/<svg/, `<svg style=\"max-width: ${vbWidth}px\"`);\n }\n\n return result;\n};\n\nconst RENDER_DEBOUNCE_MS = 300;\n\n// Module-level SVG cache — persists across component remounts (e.g. tab switches\n// that cause React to remount the tree). Same code always produces the same SVG.\nconst svgCache = new Map<string, string>();\n\ntype Props = {\n /** Mermaid diagram source code. Supports flowchart, sequence, class, state, ER,\n * pie, gantt, and mindmap. Gantt `dateFormat HH:mm` (time-only) is not supported\n * by mermaid's dayjs parser — use `dateFormat YYYY-MM-DD HH:mm` with `axisFormat %H:%M` instead. */\n code: string;\n};\n\nexport const MermaidDiagram = ({ code }: Props) => {\n const id = useId();\n const [svg, setSvg] = useState<string | null>(() => {\n const cached = svgCache.get(code);\n if (cached) return cached;\n const fast = tryFastRender(code);\n if (fast) {\n svgCache.set(code, fast);\n return fast;\n }\n return null;\n });\n const [renderFailed, setRenderFailed] = useState(false);\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const renderIdRef = useRef(0);\n\n // Synchronously reset stale state when code changes to avoid one-frame flash\n const [prevCode, setPrevCode] = useState(code);\n if (code !== prevCode) {\n setPrevCode(code);\n const cached = svgCache.get(code);\n const fast = cached ?? tryFastRender(code);\n if (fast && !cached) svgCache.set(code, fast);\n setSvg(fast);\n setRenderFailed(false);\n }\n\n useEffect(() => {\n // Skip if we already have a cached result (instant on remount)\n if (svgCache.has(code)) {\n setSvg(svgCache.get(code)!);\n setRenderFailed(false);\n return;\n }\n\n // Try fast synchronous render immediately\n const fastResult = tryFastRender(code);\n if (fastResult) {\n svgCache.set(code, fastResult);\n setSvg(fastResult);\n setRenderFailed(false);\n return;\n }\n\n // Fallback: debounce the async mermaid render\n setSvg(null);\n const currentRenderId = ++renderIdRef.current;\n setRenderFailed(false);\n\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n\n debounceRef.current = setTimeout(() => {\n getMermaid()\n .then(async (mermaidModule) => {\n if (renderIdRef.current !== currentRenderId) return;\n const rendererId = `mermaid-${id.replaceAll(':', '')}`;\n const container = document.createElement('div');\n container.style.visibility = 'hidden';\n container.style.position = 'absolute';\n container.style.top = '-9999px';\n container.style.width = '900px';\n document.body.appendChild(container);\n try {\n const result = await mermaidModule.default.render(rendererId, code, container);\n if (renderIdRef.current === currentRenderId && result) {\n svgCache.set(code, result.svg);\n setSvg(result.svg);\n setRenderFailed(false);\n }\n } finally {\n container.remove();\n }\n })\n .catch((err) => {\n if (renderIdRef.current === currentRenderId) {\n console.error('[MermaidDiagram] fallback failed:', err);\n setSvg(null);\n setRenderFailed(true);\n }\n });\n }, RENDER_DEBOUNCE_MS);\n\n const timer = debounceRef.current;\n const renderId = renderIdRef;\n return () => {\n renderId.current++;\n if (timer) {\n clearTimeout(timer);\n }\n };\n }, [code, id]);\n\n const processedSvg = svg ? makeResponsive(svg) : null;\n\n if (renderFailed) {\n return (\n <pre\n className={cn(\n 'tw-my-3 tw-overflow-auto tw-whitespace-pre-wrap tw-break-all',\n 'tw-py-3 tw-px-4',\n 'tw-bg-neutral-50',\n 'tw-rounded-md tw-text-neutral-400',\n 'tw-text-sm tw-font-mono',\n )}\n >\n <code>{code}</code>\n </pre>\n );\n }\n\n if (processedSvg) {\n return (\n <ZoomableSvg\n key={code}\n html={processedSvg}\n copyText={`\\`\\`\\`mermaid\\n${code}\\n\\`\\`\\``}\n className=\"tw-my-3\"\n />\n );\n }\n\n return (\n <div className=\"tw-my-3 tw-overflow-hidden tw-rounded-md tw-border tw-border-neutral-150 tw-bg-neutral-50 tw-p-6\">\n <Skeleton className=\"tw-h-40\" />\n </div>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/utils/classNames.ts","../src/utils/copyToClipboard.ts","../src/constants/keyCodes.ts","../src/components/Tooltip/TooltipContent.tsx","../src/components/Tooltip/TooltipRoot.tsx","../src/components/Tooltip/TooltipTrigger.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Button/styles.ts","../src/components/Button/Button.tsx","../src/components/Clipboard/Clipboard.tsx","../src/blocks/ClipboardButton/ClipboardButton.tsx","../src/components/ZoomableSvg/ZoomableSvg.tsx","../src/blocks/MermaidDiagram/MermaidDiagram.tsx"],"names":["extendTailwindMerge","clsx","cva","Portal","jsx","Content","Root","Trigger","useState","jsxs","useId","Fragment","Loader2","Slottable","text","Copy","useRef","useEffect","useCallback","Minimize2","Maximize2","colors","renderMermaidSVG"],"mappings":"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","file":"mermaid.cjs","sourcesContent":["import { clsx } from 'clsx';\nimport { extendTailwindMerge } from 'tailwind-merge';\n\nconst twMerge = extendTailwindMerge({\n prefix: 'tw-',\n});\n\ntype Mapping = Record<string, unknown>;\ntype Argument = string | boolean | undefined | Mapping;\n\nexport const cn = (...classes: Argument[]) => twMerge(clsx(...classes));\n\nexport const extractExternalClasses = (className?: string) => {\n if (!className) {\n return ['', ''];\n }\n\n const [extCls, rest] = className.split(' ').reduce(\n (acc, cls) => {\n acc[cls.startsWith('extCls-') ? 0 : 1].push(cls);\n return acc;\n },\n [[], []] as [string[], string[]],\n );\n\n return [extCls.join(' '), rest.join(' ')];\n};\n","export const copyToClipboard = (text: string) => {\n return navigator.clipboard.writeText(text);\n};\n","export const keyCodes = {\n ENTER: 'Enter',\n ESCAPE: 'Escape',\n SPACE: ' ',\n};\n","import type { ComponentProps } from 'react';\nimport { Content, Portal } from '@radix-ui/react-tooltip';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nconst tooltipVariants = cva(\n [\n 'tailwindcss-preflight',\n 'tw-inline-block',\n 'tw-rounded',\n 'tw-bg-neutral-800',\n 'tw-text-white',\n 'tw-break-anywhere',\n 'tw-max-h-96',\n 'tw-overflow-y-auto',\n 'tw-z-[1060]',\n ],\n {\n defaultVariants: {\n variant: 'action',\n },\n variants: {\n variant: {\n action: [\n 'tw-max-w-fit',\n 'tw-px-3',\n 'tw-py-2',\n\n 'tw-text-center',\n 'tw-text-xs',\n 'tw-font-medium',\n 'tw-uppercase',\n 'tw-tracking-wider',\n ],\n explanatory: [\n 'tw-max-w-80',\n 'tw-px-4',\n 'tw-py-3',\n 'tw-text-left',\n\n 'tw-text-sm',\n 'tw-font-normal',\n ],\n },\n },\n },\n);\n\ntype Props = {\n keepOpenOnPointerDownOutside?: boolean;\n placement?: ComponentProps<typeof Content>['side'];\n} & Omit<ComponentProps<typeof Content>, 'side'> &\n VariantProps<typeof tooltipVariants>;\n\nexport const TooltipContent = ({\n className,\n variant,\n keepOpenOnPointerDownOutside = false,\n children,\n onPointerDownOutside,\n sideOffset = 8,\n collisionPadding = 8,\n hideWhenDetached = true,\n placement = 'right',\n ...rest\n}: Props) => {\n const handlePointerDownOutside: ComponentProps<typeof Content>['onPointerDownOutside'] = (\n event,\n ) => {\n if (keepOpenOnPointerDownOutside) event.preventDefault();\n onPointerDownOutside?.(event);\n };\n\n return (\n <Portal>\n <Content\n {...rest}\n data-tooltip-content\n sideOffset={sideOffset}\n collisionPadding={collisionPadding}\n onPointerDownOutside={handlePointerDownOutside}\n className={tooltipVariants({ className, variant: variant })}\n hideWhenDetached={hideWhenDetached}\n side={placement}\n >\n {children}\n </Content>\n </Portal>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { Root } from '@radix-ui/react-tooltip';\n\ntype Props = ComponentProps<typeof Root>;\n\nconst DELAY_SHOW_TOOLTIP = 300;\n\nexport const TooltipRoot = ({ children, delayDuration = DELAY_SHOW_TOOLTIP, ...rest }: Props) => (\n <Root {...rest} delayDuration={delayDuration}>\n {children}\n </Root>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Trigger } from '@radix-ui/react-tooltip';\n\nimport { cn } from '../../utils';\n\ntype Props = {\n keepOpenOnClick?: boolean;\n} & ComponentProps<typeof Trigger>;\n\nexport const TooltipTrigger = ({\n ref,\n children,\n className,\n keepOpenOnClick = false,\n onClick,\n onPointerDown,\n asChild,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const handleClick: ComponentProps<typeof Trigger>['onClick'] = (event) => {\n if (keepOpenOnClick) event.preventDefault();\n onClick?.(event);\n };\n\n const handlePointerDown: ComponentProps<typeof Trigger>['onPointerDown'] = (event) => {\n if (keepOpenOnClick) event.preventDefault();\n onPointerDown?.(event);\n };\n\n return (\n <Trigger\n {...rest}\n asChild\n ref={ref}\n className={cn('tailwindcss-preflight', className)}\n onClick={handleClick}\n onPointerDown={handlePointerDown}\n >\n {asChild ? (\n children\n ) : (\n // Default-mode trigger wraps children in a span so Radix has a\n // single DOM element to attach handlers to. `tailwindcss-preflight`\n // (merged in via Slot) activates Tailwind's preflight inside the\n // span, which sets `svg { display: block }` — without an inline-flex\n // container that would stack any bare Lucide icon onto its own\n // line. `tw-inline-flex tw-items-center` keeps icon + text aligned.\n <span className=\"tw-inline-flex tw-items-center\">{children}</span>\n )}\n </Trigger>\n );\n};\n","import { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport type { Content, Trigger } from '@radix-ui/react-tooltip';\nimport { Provider } from '@radix-ui/react-tooltip';\n\nimport { keyCodes } from '../../constants/keyCodes';\n\nimport { TooltipContent } from './TooltipContent';\nimport { TooltipRoot } from './TooltipRoot';\nimport { TooltipTrigger } from './TooltipTrigger';\n\nconst ACTION_TOOLTIP_LIMIT = 30;\n\ntype TriggerProps = {\n triggerAsChild?: boolean;\n};\n\n/**\n * Props for `Tooltip`. `tooltip` is the popup content; `children` is the trigger element.\n * `variant` auto-resolves to `\"explanatory\"` for strings >30 chars, else `\"action\"`.\n */\nexport type Props = {\n /** Keep the tooltip visible when the user clicks the trigger (useful for click-to-copy feedback). */\n keepOpenOnTriggerClick?: boolean;\n /** Content rendered inside the tooltip. Plain text only — no interactive elements (use `HoverCard` or `Popover` for that). */\n tooltip: ReactNode;\n children: ReactNode;\n placement?: ComponentProps<typeof Content>['side'];\n /** Forcibly hide the tooltip regardless of hover state. */\n forceHide?: boolean;\n /** Forcibly show the tooltip regardless of hover state. Useful for guided-tour overlays. */\n forceShow?: boolean;\n className?: string;\n} & TriggerProps &\n Pick<ComponentProps<typeof TooltipContent>, 'variant' | 'className'>;\n\n/** Re-export of Radix `Tooltip.Provider`. Mount once at the app root so tooltips share delay state. */\nexport const TooltipProvider = Provider;\n\n/**\n * Short plain-text label that appears on hover or focus.\n *\n * **When to use:** describing an icon-only `Button`, explaining a disabled control, or labelling a\n * truncated value. Plain text only — auto-switches to the longer `\"explanatory\"` variant when the string\n * exceeds 30 characters.\n * **When NOT to use:** for rich preview content (multiple lines, formatted text, structured data) use\n * `HoverCard`; for tooltips containing links or buttons use `Popover` (interactive elements break a11y\n * inside a `Tooltip`).\n * **Composition:** wrap any focusable element via `triggerAsChild` so the tooltip targets the underlying\n * native element. Mount `TooltipProvider` once at the app root.\n *\n * @see RECIPES.md#disabled-button-tooltip — for the disabled-button + tooltip pattern\n */\nexport const Tooltip = ({\n tooltip,\n children,\n className,\n keepOpenOnTriggerClick = false,\n variant,\n placement = 'right',\n forceHide = false,\n forceShow = false,\n // trigger props\n triggerAsChild = false,\n}: Props) => {\n const [open, setOpen] = useState(false);\n\n const resolvedVariant = (() => {\n if (!!variant) return variant;\n if (typeof tooltip === 'string' && tooltip.length > ACTION_TOOLTIP_LIMIT) return 'explanatory';\n\n return 'action';\n })();\n\n const isActionVariant = resolvedVariant === 'action';\n\n const handleKeyUp: ComponentProps<typeof Trigger>['onKeyUp'] = (event) => {\n if (![keyCodes.ENTER, keyCodes.SPACE].includes(event.key)) return;\n event.stopPropagation();\n };\n\n return (\n <TooltipRoot\n open={!!tooltip && (open || forceShow) && !forceHide}\n onOpenChange={setOpen}\n disableHoverableContent={isActionVariant}\n >\n <TooltipTrigger\n asChild={triggerAsChild}\n keepOpenOnClick={keepOpenOnTriggerClick}\n onKeyUp={handleKeyUp}\n >\n {children}\n </TooltipTrigger>\n\n <TooltipContent\n className={className}\n variant={resolvedVariant}\n placement={placement}\n keepOpenOnPointerDownOutside={keepOpenOnTriggerClick}\n >\n {tooltip}\n </TooltipContent>\n </TooltipRoot>\n );\n};\n\nTooltip.Root = TooltipRoot;\nTooltip.Content = TooltipContent;\nTooltip.Trigger = TooltipTrigger;\n","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-neutral-150',\n\n // before\n 'before:tw-content-[\"\"]',\n 'before:tw-opacity-100',\n 'before:tw-absolute',\n 'before:tw-inset-0',\n 'before:-tw-translate-x-full',\n 'before:tw-animate-[shimmer_2s_infinite]',\n 'before:tw-bg-gradient-to-r',\n 'before:tw-from-transparent',\n 'before:tw-to-transparent',\n 'before:tw-via-neutral-50',\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","import { cva } from 'class-variance-authority';\n\nexport const variants = cva(\n [\n 'tailwindcss-preflight',\n 'tw-group/button',\n 'tw-border-box',\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-text-xs',\n 'tw-leading-5',\n 'tw-font-medium',\n 'tw-tracking-[1px]',\n 'tw-uppercase',\n\n // border\n 'tw-rounded',\n 'tw-border',\n 'tw-border-transparent',\n\n // styling\n 'tw-shadow-none',\n '[a]:tw-cursor-pointer', // explicitly set for anchor\n\n 'focus-visible:tw-outline',\n 'focus-visible:tw-outline-1',\n 'focus-visible:-tw-outline-offset-1',\n 'focus-visible:tw-outline-secondary-500',\n 'focus-visible:tw-ring-4',\n 'focus-visible:tw-ring-secondary-200',\n\n // disabled\n 'disabled:tw-opacity-40',\n 'disabled:tw-cursor-not-allowed',\n\n // anchor support\n '!tw-no-underline',\n 'aria-disabled:tw-opacity-40',\n 'aria-disabled:tw-cursor-not-allowed',\n\n '[&_svg]:tw-shrink-0',\n ],\n {\n defaultVariants: {\n size: 'medium',\n variant: 'primary',\n block: false,\n },\n variants: {\n block: {\n true: ['tw-w-full'],\n },\n variant: {\n primary: [\n 'tw-text-white',\n 'tw-bg-primary-500',\n\n 'focus:tw-text-white',\n 'hover:tw-text-white',\n 'hover:not-disabled:tw-bg-primary-600',\n 'active:not-disabled:tw-bg-primary-800',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-primary-500',\n ],\n secondary: [\n 'tw-text-white',\n 'tw-bg-secondary-500',\n\n 'focus:tw-text-white',\n 'hover:tw-text-white',\n 'hover:not-disabled:tw-bg-secondary-700',\n 'active:not-disabled:tw-bg-secondary-800',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-secondary-500',\n ],\n danger: [\n 'tw-text-white',\n 'tw-bg-error-500',\n\n 'focus:tw-text-white',\n 'hover:tw-text-white',\n 'hover:not-disabled:tw-bg-error-600',\n 'active:not-disabled:tw-bg-error-700',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-error-500',\n ],\n invisible: [\n 'tw-text-neutral-800',\n 'tw-bg-transparent',\n\n 'focus:tw-text-neutral-800',\n 'hover:not-disabled:tw-bg-neutral-100',\n 'hover:tw-text-neutral-800',\n 'active:not-disabled:tw-bg-neutral-150',\n\n // contrasting icon on hover/active\n '[&_svg]:tw-text-neutral-400',\n '[&_svg]:hover:not-disabled:tw-text-secondary-600',\n '[&_svg]:active:not-disabled:tw-text-secondary-600',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-transparent',\n ],\n outline: [\n 'tw-text-neutral-800',\n 'tw-bg-white',\n // border\n '!tw-border-neutral-200',\n 'hover:tw-text-neutral-800',\n 'focus:tw-text-neutral-800',\n 'hover:not-disabled:!tw-border-neutral-300',\n 'hover:not-disabled:tw-bg-neutral-100',\n 'active:not-disabled:tw-bg-neutral-200',\n\n // contrasting icon hover, same as invisible\n '[&_svg]:tw-text-neutral-400',\n '[&_svg]:not-disabled:hover:tw-text-secondary-600',\n '[&_svg]:active:not-disabled:tw-text-secondary-600',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-white',\n 'aria-disabled:!tw-border-neutral-200',\n ],\n\n inline: [\n 'tw-text-neutral-800',\n 'tw-bg-transparent',\n 'tw-rounded-full',\n\n '[&_svg]:tw-text-neutral-400',\n '[&_svg]:not-disabled:hover:tw-text-secondary-600',\n '[&_svg]:not-disabled:focus:tw-text-secondary-600',\n ],\n },\n size: {\n medium: [\n 'tw-max-h-10',\n 'tw-min-h-10',\n 'tw-px-4',\n 'tw-py-2.5',\n '[&_svg:not([class*=\"tw-size-\"])]:tw-size-4',\n ],\n small: [\n 'tw-max-h-8',\n 'tw-min-h-8',\n 'tw-px-4',\n 'tw-py-1.5',\n '[&_svg:not([class*=\"tw-size-\"])]:tw-size-4',\n ],\n large: [\n 'tw-max-h-12',\n 'tw-min-h-12',\n 'tw-px-4',\n 'tw-py-3.5',\n '[&_svg:not([class*=\"tw-size-\"])]:tw-size-4',\n ],\n\n 'icon-lg': ['tw-size-12', 'tw-p-0', '[&_svg:not([class*=\"tw-size-\"])]:tw-size-6'],\n icon: ['tw-size-10', 'tw-p-0', '[&_svg:not([class*=\"tw-size-\"])]:tw-size-4'],\n 'icon-sm': ['tw-size-8', 'tw-p-0', '[&_svg:not([class*=\"tw-size-\"])]:tw-size-4'],\n 'icon-xs': ['tw-size-6', 'tw-p-0', '[&_svg:not([class*=\"tw-size-\"])]:tw-size-4'],\n 'icon-2xs': [\n '!tw-inline-flex',\n 'tw-size-5',\n 'tw-max-h-5',\n '[&_svg:not([class*=\"tw-size-\"])]:tw-size-3',\n ],\n 'icon-3xs': ['tw-h-fit', 'tw-w-fit', '[&_svg:not([class*=\"tw-size-\"])]:tw-size-4'],\n },\n },\n },\n);\n\nexport const argoVariants = cva(\n [\n 'tailwindcss-preflight',\n\n // layout\n 'tw-relative',\n 'tw-inline-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-whitespace-nowrap',\n 'tw-gap-2',\n\n // border\n 'tw-border',\n 'tw-border-transparent',\n 'tw-rounded-lg',\n\n // text\n 'tw-font-medium',\n 'tw-select-none',\n\n // focus visible\n '!tw-outline-none',\n 'focus-visible:tw-ring-2',\n\n // disabled\n 'disabled:tw-cursor-not-allowed',\n 'disabled:tw-opacity-50',\n 'active:tw-opacity-60',\n\n 'tw-transition-all',\n 'tw-bg-clip-padding',\n\n // anchor support\n '!tw-no-underline',\n\n // icon\n 'tw-shrink-0',\n '[&_svg]:tw-pointer-events-none',\n '[&_svg]:tw-shrink-0',\n \"[&_svg:not([class*='tw-size-'])]:tw-size-4\",\n ],\n {\n defaultVariants: {\n variant: 'primary',\n size: 'medium',\n },\n variants: {\n block: {\n true: ['tw-w-full'],\n },\n variant: {\n primary: [\n 'tw-bg-primary',\n 'tw-text-primary-foreground',\n '[a]:hover:tw-bg-primary/80',\n 'hover:not-disabled:tw-bg-primary/90',\n 'hover:tw-text-primary-foreground',\n 'focus:tw-text-primary-foreground',\n\n 'focus-visible:tw-border-primary',\n 'focus-visible:tw-ring-primary/50',\n ],\n secondary: [\n 'tw-bg-primary/10',\n 'tw-text-primary',\n 'hover:not-disabled:tw-bg-primary/20',\n\n 'focus-visible:tw-border-primary',\n 'focus-visible:tw-ring-primary/50',\n ],\n\n // should be called \"destructive\" by Figma\n danger: [\n 'tw-bg-destructive',\n 'tw-text-destructive-foreground',\n 'hover:tw-text-destructive-foreground',\n 'focus:tw-text-destructive-foreground',\n\n 'focus-visible:tw-border-destructive',\n 'focus-visible:tw-ring-destructive/20',\n ],\n outline: [\n '!tw-border-input',\n 'tw-bg-background',\n 'hover:not-disabled:tw-bg-accent',\n 'hover:not-disabled:tw-text-accent-foreground',\n 'hover:active:tw-bg-background',\n 'focus-visible:!tw-border-primary',\n 'focus-visible:tw-ring-primary/50',\n ],\n\n // should be called \"ghost\" by Figma\n invisible: [\n 'tw-bg-transparent',\n 'tw-text-foreground',\n 'hover:not-disabled:tw-bg-accent',\n 'hover:not-disabled:tw-text-accent-foreground',\n 'hover:not-disabled:tw-border-accent',\n\n 'focus-visible:tw-ring-primary/50',\n ],\n // should be called \"link\" by Figma\n inline: [\n 'tw-bg-transparent',\n 'tw-text-primary',\n 'hover:tw-underline',\n 'hover:active:tw-bg-transparent',\n 'focus-visible:tw-ring-primary/50',\n ],\n },\n size: {\n // should be called \"default\" by Figma\n medium: ['tw-max-h-9', 'tw-py-2', 'tw-px-4', 'tw-text-sm'],\n // should be called \"small\" by Figma\n small: ['tw-max-h-8', 'tw-py-2', 'tw-px-3', 'tw-text-xs'],\n // should be called \"large\" by Figma\n large: ['tw-max-h-10', 'tw-py-2.5', 'tw-px-6', 'tw-text-sm'],\n\n 'icon-lg': ['tw-size-10'],\n icon: ['tw-size-9'],\n 'icon-sm': ['tw-size-8'],\n // unsupported in ARGO, remove when old design is gone\n 'icon-xs': [],\n 'icon-2xs': [],\n 'icon-3xs': [],\n },\n },\n },\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Root, Slottable } from '@radix-ui/react-slot';\nimport type { VariantProps } from 'class-variance-authority';\n\nimport { Loader2 } from '../../icons';\nimport { cn } from '../../utils';\n\nimport { argoVariants, variants } from './styles';\n\n/**\n * Props for the `Button` component.\n *\n * Pass `variant` for primary/secondary/danger/outline/invisible looks, `size`\n * for height (including `icon-*` sizes when rendering icon-only). Icons are\n * composed as children — `<Button><Trash2 className=\"tw-size-4\" /> Delete</Button>`.\n * `argo` opts into the Argo redesign styling (PageHeader / sidebar contexts) —\n * required when nested inside `PageHeader` or `PageLayout.Footer` slots.\n */\ntype Props = {\n /** Replaces the leading content with a spinner and disables the button visually. The caller still controls `disabled`. */\n isLoading?: boolean;\n /** Render as a Radix `Slot` so the parent JSX (e.g. a `react-router` `<Link>`) becomes the button element. */\n asChild?: boolean;\n /** Opt into the Argo redesign variant. Required inside `PageHeader` slots and other Argo surfaces. */\n argo?: boolean;\n} & ComponentProps<'button'> &\n VariantProps<typeof variants>;\n\n/**\n * Primary action surface for the design system — covers all clickable controls except inline text links.\n *\n * **When to use:** any user-initiated action (submit, save, open modal, run job). Use `size=\"icon-*\"` with no\n * children for an icon-only button; there is no separate `IconButton` component.\n * **When NOT to use:** for inline text-link actions inside body copy use `ButtonInline`; for navigation that\n * opens a URL use `Link`; for \"primary action + dropdown of related actions\" use `SplitButton`.\n * **Composition:** wrap in `Tooltip` when icon-only or when disabled state needs an explanation; pair with\n * `Popconfirm` for destructive confirmations; pass through `Modal.Trigger` / `DropdownMenu.Trigger` via `asChild`.\n *\n * @see RECIPES.md#disabled-button-tooltip — for the disabled-button + tooltip pattern\n * @see RECIPES.md#confirm-dialog — for destructive-action confirmation\n */\nexport const Button = ({\n ref,\n children,\n disabled = false,\n className,\n type = 'button',\n isLoading = false,\n asChild = false,\n onClick,\n argo = false,\n variant = 'primary',\n size = 'medium',\n block = false,\n ...buttonProps\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const Comp = asChild ? Root : 'button';\n const isIconOnly = String(size).startsWith('icon');\n const classNames = argo\n ? argoVariants({ variant: variant, size, block, className })\n : variants({\n size,\n variant,\n block,\n className,\n });\n\n const handleClick: ComponentProps<'button'>['onClick'] = (event) => {\n const isAnchor = event.currentTarget.tagName === 'A';\n\n // <a/> does not support disabled by default, and we cannot use pointer-events: none because cursor-not-allowed would not work.\n if (isAnchor && disabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n };\n\n return (\n <Comp\n {...buttonProps}\n ref={ref}\n disabled={disabled}\n aria-disabled={disabled}\n data-variant={variant}\n // `size=\"icon\"` / `size=\"icon-*\"` flags the button as icon-only — needed\n // by `ButtonGroup space=\"block\"` which stretches non-icon children to\n // equal width.\n data-icon-only={isIconOnly}\n type={type}\n onClick={handleClick}\n className={cn(classNames)}\n >\n {isLoading && <Loader2 className=\"tw-size-4 tw-shrink-0 tw-animate-spin\" />}\n <Slottable>{isLoading && isIconOnly ? null : children}</Slottable>\n </Comp>\n );\n};\n","import { useState } from 'react';\nimport type { ComponentProps, ElementRef, MouseEventHandler, Ref } from 'react';\n\nimport { cn, copyToClipboard } from '../../utils';\nimport { type Props as TooltipProps, Tooltip } from '../Tooltip';\n\ntype Props = {\n tooltip?: TooltipProps['tooltip'];\n tooltipPlacement?: TooltipProps['placement'];\n tooltipVariant?: TooltipProps['variant'];\n asChild?: TooltipProps['triggerAsChild'];\n text?: string | (() => string);\n} & ComponentProps<'button'>;\n\nexport const Clipboard = ({\n ref,\n text: textProp,\n children,\n tooltip = 'Copy to Clipboard',\n tooltipPlacement = 'top',\n tooltipVariant: tooltipVariantProp = 'action',\n asChild = false,\n onClick,\n className,\n ...restButtonProps\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const [isTooltipOpen, setIsTooltipOpen] = useState(false);\n const [state, setState] = useState<'ready' | 'copied' | 'error'>('ready');\n const text = typeof textProp === 'function' ? textProp() : textProp;\n\n const copy = async (text: string) => {\n try {\n // For the clipboard feature to work reliably, the window must be in focus for security reasons.\n // However, the button can be clicked without the window being focused.\n if (!document.hasFocus()) window.focus();\n\n await copyToClipboard(text);\n setState('copied');\n } catch {\n setState('error');\n }\n };\n\n const handleOnClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n if (text && state === 'ready') void copy(text);\n onClick?.(event);\n };\n\n const handleOnOpenChange: ComponentProps<typeof Tooltip.Root>['onOpenChange'] = (open) => {\n // Reset when the tooltip closes, allowing the user to leave the copy button.\n if (!open && state !== 'ready') setState('ready');\n setIsTooltipOpen(open);\n };\n\n const tooltipContent = (() => {\n if (!text) return 'Nothing to copy';\n if (state === 'error') return 'Failed to copy';\n if (state === 'copied') return 'Copied to Clipboard';\n return tooltip;\n })();\n\n const tooltipVariant: TooltipProps['variant'] =\n state === 'ready' && !!text ? tooltipVariantProp : 'action';\n\n return (\n <Tooltip.Root open={isTooltipOpen} onOpenChange={handleOnOpenChange}>\n <Tooltip.Trigger\n {...restButtonProps}\n asChild={asChild}\n keepOpenOnClick\n onClick={handleOnClick}\n className={cn('tw-cursor-pointer', className)}\n ref={ref}\n >\n {children ?? text}\n </Tooltip.Trigger>\n\n <Tooltip.Content\n keepOpenOnPointerDownOutside\n placement={tooltipPlacement}\n variant={tooltipVariant}\n >\n {tooltipContent}\n </Tooltip.Content>\n </Tooltip.Root>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { Button } from '../../components/Button';\nimport { Clipboard } from '../../components/Clipboard';\nimport { Copy } from '../../icons';\n\ntype ClipboardProps = Pick<\n ComponentProps<typeof Clipboard>,\n 'text' | 'tooltip' | 'tooltipPlacement' | 'tooltipVariant'\n>;\n\ntype ButtonProps = Omit<ComponentProps<typeof Button>, 'disabled' | 'icon'>;\n\ntype Props = ClipboardProps & ButtonProps & { icon?: ReactNode };\n\nconst DEFAULT_ICON: ReactNode = <Copy />;\n\nexport const ClipboardButton = ({\n // clipboard props\n text,\n tooltip,\n tooltipPlacement,\n tooltipVariant,\n\n // button props\n icon = DEFAULT_ICON,\n variant = 'outline',\n children,\n ...rest\n}: Props) => (\n <Clipboard\n asChild\n tooltip={tooltip}\n tooltipPlacement={tooltipPlacement}\n tooltipVariant={tooltipVariant}\n text={text}\n >\n <Button {...rest} variant={variant} disabled={!text}>\n {icon}\n {children}\n </Button>\n </Clipboard>\n);\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { ClipboardButton } from '../../blocks/ClipboardButton';\nimport { Maximize2, Minimize2 } from '../../icons';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { Tooltip } from '../Tooltip';\n\nconst MIN_SCALE = 0.5;\nconst MAX_SCALE = 3;\nconst ZOOM_STEP = 0.1;\n\ntype Props = {\n /** Raw HTML/SVG string. Caller is responsible for sanitizing user-generated content before passing. */\n html: string;\n copyText?: string;\n className?: string;\n};\n\nexport const ZoomableSvg = ({ html, copyText, className }: Props) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [scale, setScale] = useState(1);\n const [translate, setTranslate] = useState({ x: 0, y: 0 });\n const [isFullscreen, setIsFullscreen] = useState(false);\n\n useEffect(() => {\n if (!isFullscreen) return;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n setIsFullscreen(false);\n }\n };\n document.addEventListener('keydown', onKeyDown, { capture: true });\n return () => document.removeEventListener('keydown', onKeyDown, { capture: true });\n }, [isFullscreen]);\n\n const dragRef = useRef<{\n startX: number;\n startY: number;\n startTx: number;\n startTy: number;\n } | null>(null);\n\n useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n\n const onWheel = (e: WheelEvent) => {\n if (!e.ctrlKey && !e.metaKey) return;\n e.preventDefault();\n const delta = e.deltaY > 0 ? -ZOOM_STEP : ZOOM_STEP;\n setScale((s) => Math.min(MAX_SCALE, Math.max(MIN_SCALE, s + delta)));\n };\n\n el.addEventListener('wheel', onWheel, { passive: false });\n return () => el.removeEventListener('wheel', onWheel);\n }, []);\n\n const didDragRef = useRef(false);\n\n const handleMouseDown = useCallback(\n (e: React.MouseEvent) => {\n if (e.button !== 0) return;\n e.preventDefault();\n didDragRef.current = false;\n dragRef.current = {\n startX: e.clientX,\n startY: e.clientY,\n startTx: translate.x,\n startTy: translate.y,\n };\n },\n [translate],\n );\n\n const handleMouseMove = useCallback((e: React.MouseEvent) => {\n if (!dragRef.current) return;\n didDragRef.current = true;\n setTranslate({\n x: dragRef.current.startTx + e.clientX - dragRef.current.startX,\n y: dragRef.current.startTy + e.clientY - dragRef.current.startY,\n });\n }, []);\n\n const handleMouseUp = useCallback(() => {\n dragRef.current = null;\n }, []);\n\n const handleReset = useCallback(() => {\n setScale(1);\n setTranslate({ x: 0, y: 0 });\n }, []);\n\n const isZoomed = Math.abs(scale - 1) > 0.001 || translate.x !== 0 || translate.y !== 0;\n\n const handleClick = useCallback((e: React.MouseEvent) => {\n if (didDragRef.current) {\n e.stopPropagation();\n }\n }, []);\n\n const stopPropagation = useCallback((e: React.SyntheticEvent) => {\n e.stopPropagation();\n }, []);\n\n const diagramContent = (\n <div\n role=\"presentation\"\n className={cn('tw-group/zoom tw-relative', isFullscreen && 'tw-h-full')}\n onClick={handleClick}\n >\n <div\n role=\"presentation\"\n ref={containerRef}\n className={cn(\n 'tw-overflow-hidden tw-cursor-grab active:tw-cursor-grabbing tw-p-3',\n isFullscreen && 'tw-h-full',\n )}\n onMouseDown={handleMouseDown}\n onMouseMove={handleMouseMove}\n onMouseUp={handleMouseUp}\n onMouseLeave={handleMouseUp}\n >\n <div\n className={cn(\n 'tw-flex tw-justify-center tw-origin-center',\n isFullscreen && 'tw-h-full [&>svg]:tw-h-full',\n )}\n style={{ transform: `translate(${translate.x}px, ${translate.y}px) scale(${scale})` }}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n </div>\n <div\n role=\"presentation\"\n className=\"tw-absolute tw-right-1 tw-top-1 tw-flex tw-gap-1 tw-opacity-0 tw-transition-opacity group-hover/zoom:tw-opacity-100\"\n onClick={stopPropagation}\n >\n {isZoomed && (\n <Tooltip tooltip=\"Reset zoom\" placement=\"top\" triggerAsChild>\n <Button size=\"small\" variant=\"outline\" onClick={handleReset} argo>\n Reset\n </Button>\n </Tooltip>\n )}\n {copyText && (\n <ClipboardButton\n text={copyText}\n tooltip=\"Copy code\"\n size=\"icon-sm\"\n variant=\"outline\"\n argo\n />\n )}\n <Tooltip\n tooltip={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'}\n placement=\"top\"\n triggerAsChild\n >\n <Button\n size=\"icon-sm\"\n variant=\"outline\"\n aria-label={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'}\n onClick={() => setIsFullscreen((f) => !f)}\n argo\n >\n {isFullscreen ? (\n <Minimize2 className=\"tw-size-4\" />\n ) : (\n <Maximize2 className=\"tw-size-4\" />\n )}\n </Button>\n </Tooltip>\n </div>\n </div>\n );\n\n if (isFullscreen) {\n return (\n <div\n role=\"presentation\"\n className=\"tw-fixed tw-inset-0 tw-z-[1060] tw-bg-neutral-50 tw-p-4\"\n onClick={stopPropagation}\n >\n {diagramContent}\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n 'tw-overflow-hidden tw-rounded-md tw-border tw-border-neutral-150 tw-bg-neutral-50',\n className,\n )}\n >\n {diagramContent}\n </div>\n );\n};\n","import { useEffect, useId, useRef, useState } from 'react';\nimport { renderMermaidSVG } from 'beautiful-mermaid';\nimport type mermaid from 'mermaid';\n\nimport colors from '@keboola/tailwind-config/colors';\n\nimport { Skeleton } from '../../components/Skeleton/Skeleton';\nimport { ZoomableSvg } from '../../components/ZoomableSvg';\nimport { cn } from '../../utils';\n\ntype MermaidModule = { default: typeof mermaid };\n\nlet mermaidPromise: Promise<MermaidModule> | null = null;\n\nconst getMermaid = (): Promise<MermaidModule> => {\n if (!mermaidPromise) {\n mermaidPromise = import('mermaid')\n .then((m) => {\n m.default.initialize({\n startOnLoad: false,\n securityLevel: 'strict',\n theme: 'base',\n themeVariables: {\n primaryColor: colors.secondary[100],\n primaryTextColor: colors.neutral[800],\n primaryBorderColor: colors.secondary[700],\n secondaryColor: colors.white,\n secondaryTextColor: colors.neutral[800],\n secondaryBorderColor: colors.neutral[150],\n tertiaryColor: colors.warning[100],\n tertiaryTextColor: colors.neutral[800],\n tertiaryBorderColor: colors.warning[500],\n lineColor: colors.neutral[300],\n textColor: colors.neutral[800],\n mainBkg: colors.secondary[100],\n nodeBorder: colors.secondary[700],\n clusterBkg: colors.white,\n clusterBorder: colors.neutral[150],\n titleColor: colors.neutral[800],\n edgeLabelBackground: colors.white,\n nodeTextColor: colors.neutral[800],\n actorBorder: colors.secondary[700],\n actorBkg: colors.secondary[100],\n actorTextColor: colors.neutral[800],\n actorLineColor: colors.neutral[300],\n signalColor: colors.neutral[800],\n signalTextColor: colors.neutral[800],\n labelBoxBkgColor: colors.secondary[100],\n labelBoxBorderColor: colors.secondary[700],\n labelTextColor: colors.neutral[800],\n loopTextColor: colors.neutral[800],\n noteBorderColor: colors.warning[500],\n noteBkgColor: colors.warning[100],\n noteTextColor: colors.neutral[800],\n sectionBkgColor: colors.secondary[100],\n altSectionBkgColor: colors.white,\n sectionBkgColor2: colors.neutral[100],\n taskBorderColor: colors.secondary[700],\n taskBkgColor: colors.secondary[100],\n taskTextColor: colors.neutral[800],\n taskTextDarkColor: colors.neutral[800],\n taskTextLightColor: colors.neutral[800],\n activeTaskBorderColor: colors.primary.DEFAULT,\n activeTaskBkgColor: colors.secondary[200],\n doneTaskBorderColor: colors.primary[600],\n doneTaskBkgColor: colors.primary[100],\n critBorderColor: colors.error[500],\n critBkgColor: colors.error[100],\n fontFamily: 'Inter, system-ui, sans-serif',\n fontSize: '14px',\n },\n });\n return m;\n })\n .catch((err) => {\n mermaidPromise = null;\n throw err;\n });\n }\n return mermaidPromise;\n};\n\nconst stripFontImports = (svg: string): string =>\n svg.replace(/@import\\s+url\\([^)]*fonts\\.googleapis\\.com[^)]*\\);?\\s*/g, '');\n\nconst tryFastRender = (code: string): string | null => {\n try {\n return stripFontImports(\n renderMermaidSVG(code, {\n bg: colors.white,\n fg: colors.neutral[800],\n transparent: true,\n font: 'Inter, system-ui, sans-serif',\n }),\n );\n } catch {\n return null;\n }\n};\n\nconst makeResponsive = (svgString: string): string => {\n const viewBoxMatch = svgString.match(/viewBox=\"[^\"]*\\s([\\d.]+)\\s[\\d.]+\"/);\n const vbWidth = viewBoxMatch ? Math.round(Number(viewBoxMatch[1])) : undefined;\n\n let result = svgString\n .replace(/(<svg[^>]*?)\\s+width=\"[^\"]*\"/i, '$1 width=\"100%\"')\n .replace(/(<svg[^>]*?)\\s+height=\"[^\"]*\"/i, '$1');\n\n if (!vbWidth) return result;\n\n const hasStyle = /(<svg[^>]*?)\\s+style=\"([^\"]*)\"/i.test(result);\n if (hasStyle) {\n result = result.replace(/(<svg[^>]*?)\\s+style=\"([^\"]*)\"/i, (_m, pre, styles) => {\n const cleaned = styles.replace(/max-width:\\s*[^;\"]*;?\\s*/g, '').trim();\n const combined = [cleaned, `max-width: ${vbWidth}px`].filter(Boolean).join('; ');\n return `${pre} style=\"${combined}\"`;\n });\n } else {\n result = result.replace(/<svg/, `<svg style=\"max-width: ${vbWidth}px\"`);\n }\n\n return result;\n};\n\nconst RENDER_DEBOUNCE_MS = 300;\n\n// Module-level SVG cache — persists across component remounts (e.g. tab switches\n// that cause React to remount the tree). Same code always produces the same SVG.\nconst svgCache = new Map<string, string>();\n\ntype Props = {\n /** Mermaid diagram source code. Supports flowchart, sequence, class, state, ER,\n * pie, gantt, and mindmap. Gantt `dateFormat HH:mm` (time-only) is not supported\n * by mermaid's dayjs parser — use `dateFormat YYYY-MM-DD HH:mm` with `axisFormat %H:%M` instead. */\n code: string;\n};\n\nexport const MermaidDiagram = ({ code }: Props) => {\n const id = useId();\n const [svg, setSvg] = useState<string | null>(() => {\n const cached = svgCache.get(code);\n if (cached) return cached;\n const fast = tryFastRender(code);\n if (fast) {\n svgCache.set(code, fast);\n return fast;\n }\n return null;\n });\n const [renderFailed, setRenderFailed] = useState(false);\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const renderIdRef = useRef(0);\n\n // Synchronously reset stale state when code changes to avoid one-frame flash\n const [prevCode, setPrevCode] = useState(code);\n if (code !== prevCode) {\n setPrevCode(code);\n const cached = svgCache.get(code);\n const fast = cached ?? tryFastRender(code);\n if (fast && !cached) svgCache.set(code, fast);\n setSvg(fast);\n setRenderFailed(false);\n }\n\n useEffect(() => {\n // Skip if we already have a cached result (instant on remount)\n if (svgCache.has(code)) {\n setSvg(svgCache.get(code)!);\n setRenderFailed(false);\n return;\n }\n\n // Try fast synchronous render immediately\n const fastResult = tryFastRender(code);\n if (fastResult) {\n svgCache.set(code, fastResult);\n setSvg(fastResult);\n setRenderFailed(false);\n return;\n }\n\n // Fallback: debounce the async mermaid render\n setSvg(null);\n const currentRenderId = ++renderIdRef.current;\n setRenderFailed(false);\n\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n\n debounceRef.current = setTimeout(() => {\n getMermaid()\n .then(async (mermaidModule) => {\n if (renderIdRef.current !== currentRenderId) return;\n const rendererId = `mermaid-${id.replaceAll(':', '')}`;\n const container = document.createElement('div');\n container.style.visibility = 'hidden';\n container.style.position = 'absolute';\n container.style.top = '-9999px';\n container.style.width = '900px';\n document.body.appendChild(container);\n try {\n const result = await mermaidModule.default.render(rendererId, code, container);\n if (renderIdRef.current === currentRenderId && result) {\n svgCache.set(code, result.svg);\n setSvg(result.svg);\n setRenderFailed(false);\n }\n } finally {\n container.remove();\n }\n })\n .catch((err) => {\n if (renderIdRef.current === currentRenderId) {\n console.error('[MermaidDiagram] fallback failed:', err);\n setSvg(null);\n setRenderFailed(true);\n }\n });\n }, RENDER_DEBOUNCE_MS);\n\n const timer = debounceRef.current;\n const renderId = renderIdRef;\n return () => {\n renderId.current++;\n if (timer) {\n clearTimeout(timer);\n }\n };\n }, [code, id]);\n\n const processedSvg = svg ? makeResponsive(svg) : null;\n\n if (renderFailed) {\n return (\n <pre\n className={cn(\n 'tw-my-3 tw-overflow-auto tw-whitespace-pre-wrap tw-break-all',\n 'tw-py-3 tw-px-4',\n 'tw-bg-neutral-50',\n 'tw-rounded-md tw-text-neutral-400',\n 'tw-text-sm tw-font-mono',\n )}\n >\n <code>{code}</code>\n </pre>\n );\n }\n\n if (processedSvg) {\n return (\n <ZoomableSvg\n key={code}\n html={processedSvg}\n copyText={`\\`\\`\\`mermaid\\n${code}\\n\\`\\`\\``}\n className=\"tw-my-3\"\n />\n );\n }\n\n return (\n <div className=\"tw-my-3 tw-overflow-hidden tw-rounded-md tw-border tw-border-neutral-150 tw-bg-neutral-50 tw-p-6\">\n <Skeleton className=\"tw-h-40\" />\n </div>\n );\n};\n"]}
@@ -0,0 +1,11 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ type Props = {
4
+ /** Mermaid diagram source code. Supports flowchart, sequence, class, state, ER,
5
+ * pie, gantt, and mindmap. Gantt `dateFormat HH:mm` (time-only) is not supported
6
+ * by mermaid's dayjs parser — use `dateFormat YYYY-MM-DD HH:mm` with `axisFormat %H:%M` instead. */
7
+ code: string;
8
+ };
9
+ declare const MermaidDiagram: ({ code }: Props) => react_jsx_runtime.JSX.Element;
10
+
11
+ export { MermaidDiagram };
@@ -0,0 +1,11 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ type Props = {
4
+ /** Mermaid diagram source code. Supports flowchart, sequence, class, state, ER,
5
+ * pie, gantt, and mindmap. Gantt `dateFormat HH:mm` (time-only) is not supported
6
+ * by mermaid's dayjs parser — use `dateFormat YYYY-MM-DD HH:mm` with `axisFormat %H:%M` instead. */
7
+ code: string;
8
+ };
9
+ declare const MermaidDiagram: ({ code }: Props) => react_jsx_runtime.JSX.Element;
10
+
11
+ export { MermaidDiagram };
package/dist/mermaid.js CHANGED
@@ -8,8 +8,6 @@ import { cva } from 'class-variance-authority';
8
8
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
9
  import { Root, Slottable } from '@radix-ui/react-slot';
10
10
  import { Minimize2, Maximize2, Loader2, Copy } from 'lucide-react';
11
- import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
12
- import { Tooltip as Tooltip$1, cn as cn$1 } from '@keboola/design';
13
11
 
14
12
  // src/blocks/MermaidDiagram/MermaidDiagram.tsx
15
13
  var twMerge = extendTailwindMerge({
@@ -114,7 +112,7 @@ var TooltipTrigger = ({
114
112
  if (keepOpenOnClick) event.preventDefault();
115
113
  onClick?.(event);
116
114
  };
117
- const handePointerDown = (event) => {
115
+ const handlePointerDown = (event) => {
118
116
  if (keepOpenOnClick) event.preventDefault();
119
117
  onPointerDown?.(event);
120
118
  };
@@ -126,8 +124,16 @@ var TooltipTrigger = ({
126
124
  ref,
127
125
  className: cn("tailwindcss-preflight", className),
128
126
  onClick: handleClick,
129
- onPointerDown: handePointerDown,
130
- children: asChild ? children : /* @__PURE__ */ jsx("span", { children })
127
+ onPointerDown: handlePointerDown,
128
+ children: asChild ? children : (
129
+ // Default-mode trigger wraps children in a span so Radix has a
130
+ // single DOM element to attach handlers to. `tailwindcss-preflight`
131
+ // (merged in via Slot) activates Tailwind's preflight inside the
132
+ // span, which sets `svg { display: block }` — without an inline-flex
133
+ // container that would stack any bare Lucide icon onto its own
134
+ // line. `tw-inline-flex tw-items-center` keeps icon + text aligned.
135
+ /* @__PURE__ */ jsx("span", { className: "tw-inline-flex tw-items-center", children })
136
+ )
131
137
  }
132
138
  );
133
139
  };
@@ -227,7 +233,6 @@ var Skeleton = ({ height = "md", className, count = 1 }) => {
227
233
  key
228
234
  )) });
229
235
  };
230
- var Icon = ({ ref, icon, ...rest }) => /* @__PURE__ */ jsx(FontAwesomeIcon, { ...rest, ref, icon });
231
236
  var variants = cva(
232
237
  [
233
238
  "tailwindcss-preflight",
@@ -515,10 +520,10 @@ var Button = ({
515
520
  variant = "primary",
516
521
  size = "medium",
517
522
  block = false,
518
- icon,
519
523
  ...buttonProps
520
524
  }) => {
521
525
  const Comp = asChild ? Root : "button";
526
+ const isIconOnly = String(size).startsWith("icon");
522
527
  const classNames = argo ? argoVariants({ variant, size, block, className }) : variants({
523
528
  size,
524
529
  variant,
@@ -541,14 +546,13 @@ var Button = ({
541
546
  disabled,
542
547
  "aria-disabled": disabled,
543
548
  "data-variant": variant,
544
- "data-icon-only": String(size).startsWith("icon"),
549
+ "data-icon-only": isIconOnly,
545
550
  type,
546
551
  onClick: handleClick,
547
552
  className: cn(classNames),
548
553
  children: [
549
554
  isLoading && /* @__PURE__ */ jsx(Loader2, { className: "tw-size-4 tw-shrink-0 tw-animate-spin" }),
550
- !isLoading && icon && /* @__PURE__ */ jsx(Icon, { icon }),
551
- /* @__PURE__ */ jsx(Slottable, { children })
555
+ /* @__PURE__ */ jsx(Slottable, { children: isLoading && isIconOnly ? null : children })
552
556
  ]
553
557
  }
554
558
  );
@@ -592,21 +596,21 @@ var Clipboard = ({
592
596
  return tooltip;
593
597
  })();
594
598
  const tooltipVariant = state === "ready" && !!text ? tooltipVariantProp : "action";
595
- return /* @__PURE__ */ jsxs(Tooltip$1.Root, { open: isTooltipOpen, onOpenChange: handleOnOpenChange, children: [
599
+ return /* @__PURE__ */ jsxs(Tooltip.Root, { open: isTooltipOpen, onOpenChange: handleOnOpenChange, children: [
596
600
  /* @__PURE__ */ jsx(
597
- Tooltip$1.Trigger,
601
+ Tooltip.Trigger,
598
602
  {
599
603
  ...restButtonProps,
600
604
  asChild,
601
605
  keepOpenOnClick: true,
602
606
  onClick: handleOnClick,
603
- className: cn$1("tw-cursor-pointer", className),
607
+ className: cn("tw-cursor-pointer", className),
604
608
  ref,
605
609
  children: children ?? text
606
610
  }
607
611
  ),
608
612
  /* @__PURE__ */ jsx(
609
- Tooltip$1.Content,
613
+ Tooltip.Content,
610
614
  {
611
615
  keepOpenOnPointerDownOutside: true,
612
616
  placement: tooltipPlacement,