@keboola/design 9.1.0 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (520) hide show
  1. package/AGENTS.md +119 -40
  2. package/COMPONENT-API.md +31 -9
  3. package/README.md +3 -3
  4. package/dist/MermaidDiagram-ZU5KAVRT.js +18 -0
  5. package/dist/MermaidDiagram-ZU5KAVRT.js.map +1 -0
  6. package/dist/charts.d.ts +37 -2
  7. package/dist/charts.js +11 -9
  8. package/dist/charts.js.map +1 -1
  9. package/dist/chunk-2YYJDKSP.js +51 -0
  10. package/dist/chunk-2YYJDKSP.js.map +1 -0
  11. package/dist/chunk-3P5UUCFI.js +385 -0
  12. package/dist/chunk-3P5UUCFI.js.map +1 -0
  13. package/dist/chunk-3QDFDDWZ.js +99 -0
  14. package/dist/chunk-3QDFDDWZ.js.map +1 -0
  15. package/dist/chunk-3W27OLK5.js +15 -0
  16. package/dist/chunk-3W27OLK5.js.map +1 -0
  17. package/dist/chunk-4FIZZONW.js +40 -0
  18. package/dist/chunk-4FIZZONW.js.map +1 -0
  19. package/dist/chunk-4GIAXOJG.js +133 -0
  20. package/dist/chunk-4GIAXOJG.js.map +1 -0
  21. package/dist/chunk-52NDNMK7.js +99 -0
  22. package/dist/chunk-52NDNMK7.js.map +1 -0
  23. package/dist/chunk-576G5OES.js +201 -0
  24. package/dist/chunk-576G5OES.js.map +1 -0
  25. package/dist/chunk-5AIE6SET.js +659 -0
  26. package/dist/chunk-5AIE6SET.js.map +1 -0
  27. package/dist/chunk-5FTNAZRW.js +327 -0
  28. package/dist/chunk-5FTNAZRW.js.map +1 -0
  29. package/dist/chunk-5IG2S7ZY.js +70 -0
  30. package/dist/chunk-5IG2S7ZY.js.map +1 -0
  31. package/dist/chunk-5QCXHNCW.js +404 -0
  32. package/dist/chunk-5QCXHNCW.js.map +1 -0
  33. package/dist/chunk-6DUMGC7Y.js +105 -0
  34. package/dist/chunk-6DUMGC7Y.js.map +1 -0
  35. package/dist/chunk-6J25CVST.js +174 -0
  36. package/dist/chunk-6J25CVST.js.map +1 -0
  37. package/dist/chunk-6NN35XOP.js +120 -0
  38. package/dist/chunk-6NN35XOP.js.map +1 -0
  39. package/dist/chunk-6NZBVA4T.js +24 -0
  40. package/dist/chunk-6NZBVA4T.js.map +1 -0
  41. package/dist/chunk-6W5BHRCL.js +295 -0
  42. package/dist/chunk-6W5BHRCL.js.map +1 -0
  43. package/dist/chunk-72BKRCEG.js +409 -0
  44. package/dist/chunk-72BKRCEG.js.map +1 -0
  45. package/dist/chunk-7GTI3PPI.js +95 -0
  46. package/dist/chunk-7GTI3PPI.js.map +1 -0
  47. package/dist/chunk-7P6PLZ4B.js +74 -0
  48. package/dist/chunk-7P6PLZ4B.js.map +1 -0
  49. package/dist/chunk-7WZWY5IA.js +46 -0
  50. package/dist/chunk-7WZWY5IA.js.map +1 -0
  51. package/dist/chunk-AIYO2632.js +489 -0
  52. package/dist/chunk-AIYO2632.js.map +1 -0
  53. package/dist/chunk-ANFZWPNE.js +112 -0
  54. package/dist/chunk-ANFZWPNE.js.map +1 -0
  55. package/dist/chunk-ANZTVAJU.js +73 -0
  56. package/dist/chunk-ANZTVAJU.js.map +1 -0
  57. package/dist/chunk-BD5BTJKX.js +166 -0
  58. package/dist/chunk-BD5BTJKX.js.map +1 -0
  59. package/dist/chunk-BHGIDSRJ.js +140 -0
  60. package/dist/chunk-BHGIDSRJ.js.map +1 -0
  61. package/dist/chunk-BSQWZITZ.js +507 -0
  62. package/dist/chunk-BSQWZITZ.js.map +1 -0
  63. package/dist/chunk-D3LAIK62.js +23 -0
  64. package/dist/chunk-D3LAIK62.js.map +1 -0
  65. package/dist/chunk-DODCR43C.js +155 -0
  66. package/dist/chunk-DODCR43C.js.map +1 -0
  67. package/dist/chunk-EEK5NGZF.js +40 -0
  68. package/dist/chunk-EEK5NGZF.js.map +1 -0
  69. package/dist/chunk-ENRG7TXA.js +11 -0
  70. package/dist/chunk-ENRG7TXA.js.map +1 -0
  71. package/dist/chunk-EQRMGIGY.js +239 -0
  72. package/dist/chunk-EQRMGIGY.js.map +1 -0
  73. package/dist/chunk-ERAHK5YQ.js +495 -0
  74. package/dist/chunk-ERAHK5YQ.js.map +1 -0
  75. package/dist/chunk-F3FOFY2P.js +124 -0
  76. package/dist/chunk-F3FOFY2P.js.map +1 -0
  77. package/dist/chunk-F6BTWFOC.js +507 -0
  78. package/dist/chunk-F6BTWFOC.js.map +1 -0
  79. package/dist/chunk-F6J6NNAL.js +34 -0
  80. package/dist/chunk-F6J6NNAL.js.map +1 -0
  81. package/dist/chunk-FCHJ7D5O.js +59 -0
  82. package/dist/chunk-FCHJ7D5O.js.map +1 -0
  83. package/dist/chunk-FFJTEQCC.js +80 -0
  84. package/dist/chunk-FFJTEQCC.js.map +1 -0
  85. package/dist/chunk-FUFMVW7O.js +64 -0
  86. package/dist/chunk-FUFMVW7O.js.map +1 -0
  87. package/dist/chunk-FVPGQ6UE.js +25 -0
  88. package/dist/chunk-FVPGQ6UE.js.map +1 -0
  89. package/dist/chunk-G3PMV62Z.js +33 -0
  90. package/dist/chunk-G3PMV62Z.js.map +1 -0
  91. package/dist/chunk-GACFOW3E.js +51 -0
  92. package/dist/chunk-GACFOW3E.js.map +1 -0
  93. package/dist/chunk-GDT6HQMK.js +42 -0
  94. package/dist/chunk-GDT6HQMK.js.map +1 -0
  95. package/dist/chunk-HLGU22C6.js +2589 -0
  96. package/dist/chunk-HLGU22C6.js.map +1 -0
  97. package/dist/chunk-HPMYYGP7.js +134 -0
  98. package/dist/chunk-HPMYYGP7.js.map +1 -0
  99. package/dist/chunk-I2UCOD45.js +197 -0
  100. package/dist/chunk-I2UCOD45.js.map +1 -0
  101. package/dist/chunk-IEGDZUVM.js +75 -0
  102. package/dist/chunk-IEGDZUVM.js.map +1 -0
  103. package/dist/chunk-IIS7INHF.js +47 -0
  104. package/dist/chunk-IIS7INHF.js.map +1 -0
  105. package/dist/chunk-ITELSEFU.js +256 -0
  106. package/dist/chunk-ITELSEFU.js.map +1 -0
  107. package/dist/chunk-IXAYNBOY.js +407 -0
  108. package/dist/chunk-IXAYNBOY.js.map +1 -0
  109. package/dist/chunk-JUW2ETEI.js +191 -0
  110. package/dist/chunk-JUW2ETEI.js.map +1 -0
  111. package/dist/chunk-K65C7CVE.js +127 -0
  112. package/dist/chunk-K65C7CVE.js.map +1 -0
  113. package/dist/chunk-KDI64MCY.js +189 -0
  114. package/dist/chunk-KDI64MCY.js.map +1 -0
  115. package/dist/chunk-KN4ASMH5.js +160 -0
  116. package/dist/chunk-KN4ASMH5.js.map +1 -0
  117. package/dist/chunk-KQW7QNTU.js +1549 -0
  118. package/dist/chunk-KQW7QNTU.js.map +1 -0
  119. package/dist/chunk-KR7NXXHC.js +66 -0
  120. package/dist/chunk-KR7NXXHC.js.map +1 -0
  121. package/dist/chunk-KRZKIVMA.js +142 -0
  122. package/dist/chunk-KRZKIVMA.js.map +1 -0
  123. package/dist/chunk-KTTLLKGQ.js +185 -0
  124. package/dist/chunk-KTTLLKGQ.js.map +1 -0
  125. package/dist/chunk-KWKSHPDP.js +234 -0
  126. package/dist/chunk-KWKSHPDP.js.map +1 -0
  127. package/dist/chunk-KZVC7OYG.js +57 -0
  128. package/dist/chunk-KZVC7OYG.js.map +1 -0
  129. package/dist/chunk-L5DHUN2V.js +204 -0
  130. package/dist/chunk-L5DHUN2V.js.map +1 -0
  131. package/dist/chunk-LCTGEH57.js +1376 -0
  132. package/dist/chunk-LCTGEH57.js.map +1 -0
  133. package/dist/chunk-LXLIQ2D6.js +12 -0
  134. package/dist/chunk-LXLIQ2D6.js.map +1 -0
  135. package/dist/chunk-M4CTURKX.js +84 -0
  136. package/dist/chunk-M4CTURKX.js.map +1 -0
  137. package/dist/chunk-M6LTUPVP.js +301 -0
  138. package/dist/chunk-M6LTUPVP.js.map +1 -0
  139. package/dist/chunk-MA6RRHDT.js +291 -0
  140. package/dist/chunk-MA6RRHDT.js.map +1 -0
  141. package/dist/chunk-MODE4QIA.js +6 -0
  142. package/dist/chunk-MODE4QIA.js.map +1 -0
  143. package/dist/chunk-MVILMVGG.js +118 -0
  144. package/dist/chunk-MVILMVGG.js.map +1 -0
  145. package/dist/chunk-MWS4VCLV.js +17 -0
  146. package/dist/chunk-MWS4VCLV.js.map +1 -0
  147. package/dist/chunk-NEUX74SO.js +315 -0
  148. package/dist/chunk-NEUX74SO.js.map +1 -0
  149. package/dist/chunk-NFHKYBRD.js +156 -0
  150. package/dist/chunk-NFHKYBRD.js.map +1 -0
  151. package/dist/chunk-NHJNNXD3.js +89 -0
  152. package/dist/chunk-NHJNNXD3.js.map +1 -0
  153. package/dist/chunk-O2BF3HZL.js +33 -0
  154. package/dist/chunk-O2BF3HZL.js.map +1 -0
  155. package/dist/chunk-OANXCZYD.js +212 -0
  156. package/dist/chunk-OANXCZYD.js.map +1 -0
  157. package/dist/chunk-ODJF7YIP.js +230 -0
  158. package/dist/chunk-ODJF7YIP.js.map +1 -0
  159. package/dist/chunk-ON4BJTHI.js +101 -0
  160. package/dist/chunk-ON4BJTHI.js.map +1 -0
  161. package/dist/chunk-OTL5WXIJ.js +16 -0
  162. package/dist/chunk-OTL5WXIJ.js.map +1 -0
  163. package/dist/chunk-PACNBKJV.js +47 -0
  164. package/dist/chunk-PACNBKJV.js.map +1 -0
  165. package/dist/chunk-PROCA7K7.js +23 -0
  166. package/dist/chunk-PROCA7K7.js.map +1 -0
  167. package/dist/chunk-QGMIPA67.js +85 -0
  168. package/dist/chunk-QGMIPA67.js.map +1 -0
  169. package/dist/chunk-QQA37LFB.js +190 -0
  170. package/dist/chunk-QQA37LFB.js.map +1 -0
  171. package/dist/chunk-QZAWRSEB.js +61 -0
  172. package/dist/chunk-QZAWRSEB.js.map +1 -0
  173. package/dist/chunk-R74KGWNS.js +699 -0
  174. package/dist/chunk-R74KGWNS.js.map +1 -0
  175. package/dist/chunk-RFDLHMKL.js +110 -0
  176. package/dist/chunk-RFDLHMKL.js.map +1 -0
  177. package/dist/chunk-RL64HN7S.js +40 -0
  178. package/dist/chunk-RL64HN7S.js.map +1 -0
  179. package/dist/chunk-RMRQKPL7.js +115 -0
  180. package/dist/chunk-RMRQKPL7.js.map +1 -0
  181. package/dist/chunk-RQVK4IYC.js +606 -0
  182. package/dist/chunk-RQVK4IYC.js.map +1 -0
  183. package/dist/chunk-RTW56PWZ.js +59 -0
  184. package/dist/chunk-RTW56PWZ.js.map +1 -0
  185. package/dist/chunk-RUTPQNLR.js +266 -0
  186. package/dist/chunk-RUTPQNLR.js.map +1 -0
  187. package/dist/chunk-S6TAF63G.js +25 -0
  188. package/dist/chunk-S6TAF63G.js.map +1 -0
  189. package/dist/chunk-SBGAUGXY.js +224 -0
  190. package/dist/chunk-SBGAUGXY.js.map +1 -0
  191. package/dist/chunk-SC275NHZ.js +407 -0
  192. package/dist/chunk-SC275NHZ.js.map +1 -0
  193. package/dist/chunk-SCQPU4UE.js +97 -0
  194. package/dist/chunk-SCQPU4UE.js.map +1 -0
  195. package/dist/chunk-SFFF2WQP.js +8 -0
  196. package/dist/chunk-SFFF2WQP.js.map +1 -0
  197. package/dist/chunk-SJYMHZKA.js +36 -0
  198. package/dist/chunk-SJYMHZKA.js.map +1 -0
  199. package/dist/chunk-SLCCUJVN.js +125 -0
  200. package/dist/chunk-SLCCUJVN.js.map +1 -0
  201. package/dist/chunk-SVBSNSD4.js +259 -0
  202. package/dist/chunk-SVBSNSD4.js.map +1 -0
  203. package/dist/chunk-SVPLTL35.js +62 -0
  204. package/dist/chunk-SVPLTL35.js.map +1 -0
  205. package/dist/chunk-SWQFYNYG.js +338 -0
  206. package/dist/chunk-SWQFYNYG.js.map +1 -0
  207. package/dist/chunk-THHB4EWS.js +72 -0
  208. package/dist/chunk-THHB4EWS.js.map +1 -0
  209. package/dist/chunk-TUCDD33E.js +246 -0
  210. package/dist/chunk-TUCDD33E.js.map +1 -0
  211. package/dist/chunk-TV4WAP2R.js +14 -0
  212. package/dist/chunk-TV4WAP2R.js.map +1 -0
  213. package/dist/chunk-U3A6YBTZ.js +134 -0
  214. package/dist/chunk-U3A6YBTZ.js.map +1 -0
  215. package/dist/chunk-UGT6DKWM.js +95 -0
  216. package/dist/chunk-UGT6DKWM.js.map +1 -0
  217. package/dist/chunk-VSERHUWD.js +212 -0
  218. package/dist/chunk-VSERHUWD.js.map +1 -0
  219. package/dist/chunk-VYG7BDXC.js +49 -0
  220. package/dist/chunk-VYG7BDXC.js.map +1 -0
  221. package/dist/chunk-WETKNYZX.js +52 -0
  222. package/dist/chunk-WETKNYZX.js.map +1 -0
  223. package/dist/chunk-WGG4AML3.js +216 -0
  224. package/dist/chunk-WGG4AML3.js.map +1 -0
  225. package/dist/chunk-WKAUEL6I.js +30 -0
  226. package/dist/chunk-WKAUEL6I.js.map +1 -0
  227. package/dist/chunk-WPOLA5CG.js +81 -0
  228. package/dist/chunk-WPOLA5CG.js.map +1 -0
  229. package/dist/chunk-WPVETCGJ.js +254 -0
  230. package/dist/chunk-WPVETCGJ.js.map +1 -0
  231. package/dist/chunk-WTSM3A7E.js +13 -0
  232. package/dist/chunk-WTSM3A7E.js.map +1 -0
  233. package/dist/chunk-WU3F2K3T.js +148 -0
  234. package/dist/chunk-WU3F2K3T.js.map +1 -0
  235. package/dist/chunk-WZZK2DTZ.js +39 -0
  236. package/dist/chunk-WZZK2DTZ.js.map +1 -0
  237. package/dist/chunk-X4IHLKRD.js +42 -0
  238. package/dist/chunk-X4IHLKRD.js.map +1 -0
  239. package/dist/chunk-XAHEXZJC.js +80 -0
  240. package/dist/chunk-XAHEXZJC.js.map +1 -0
  241. package/dist/chunk-XCYGJDUX.js +31 -0
  242. package/dist/chunk-XCYGJDUX.js.map +1 -0
  243. package/dist/chunk-Y4W3JORC.js +104 -0
  244. package/dist/chunk-Y4W3JORC.js.map +1 -0
  245. package/dist/chunk-YFZJ3ZLG.js +1297 -0
  246. package/dist/chunk-YFZJ3ZLG.js.map +1 -0
  247. package/dist/chunk-YI3WLXEN.js +4387 -0
  248. package/dist/chunk-YI3WLXEN.js.map +1 -0
  249. package/dist/chunk-ZBKFSPD3.js +29 -0
  250. package/dist/chunk-ZBKFSPD3.js.map +1 -0
  251. package/dist/chunk-ZOERRQ6A.js +79 -0
  252. package/dist/chunk-ZOERRQ6A.js.map +1 -0
  253. package/dist/chunk-ZSTGUKHU.js +10 -0
  254. package/dist/chunk-ZSTGUKHU.js.map +1 -0
  255. package/dist/chunk-ZUEHDL27.js +65 -0
  256. package/dist/chunk-ZUEHDL27.js.map +1 -0
  257. package/dist/editors.d.ts +27 -3
  258. package/dist/editors.js +93 -2081
  259. package/dist/editors.js.map +1 -1
  260. package/dist/icons.d.ts +29 -8
  261. package/dist/icons.js +7 -361
  262. package/dist/icons.js.map +1 -1
  263. package/dist/index.d.ts +715 -441
  264. package/dist/index.js +121 -24643
  265. package/dist/index.js.map +1 -1
  266. package/dist/internal/blocks/AIKit.js +30 -0
  267. package/dist/internal/blocks/AIKit.js.map +1 -0
  268. package/dist/internal/blocks/AppShell.js +11 -0
  269. package/dist/internal/blocks/AppShell.js.map +1 -0
  270. package/dist/internal/blocks/AutoSaveTextarea.js +14 -0
  271. package/dist/internal/blocks/AutoSaveTextarea.js.map +1 -0
  272. package/dist/internal/blocks/BrandEditor.js +23 -0
  273. package/dist/internal/blocks/BrandEditor.js.map +1 -0
  274. package/dist/internal/blocks/ChartPanel.js +10 -0
  275. package/dist/internal/blocks/ChartPanel.js.map +1 -0
  276. package/dist/internal/blocks/ClipboardButton.js +12 -0
  277. package/dist/internal/blocks/ClipboardButton.js.map +1 -0
  278. package/dist/internal/blocks/ColorInput.js +13 -0
  279. package/dist/internal/blocks/ColorInput.js.map +1 -0
  280. package/dist/internal/blocks/ColorModeSwitch.js +13 -0
  281. package/dist/internal/blocks/ColorModeSwitch.js.map +1 -0
  282. package/dist/internal/blocks/Command.js +15 -0
  283. package/dist/internal/blocks/Command.js.map +1 -0
  284. package/dist/internal/blocks/CopyField.js +11 -0
  285. package/dist/internal/blocks/CopyField.js.map +1 -0
  286. package/dist/internal/blocks/DashboardHero.js +9 -0
  287. package/dist/internal/blocks/DashboardHero.js.map +1 -0
  288. package/dist/internal/blocks/DateInput.js +16 -0
  289. package/dist/internal/blocks/DateInput.js.map +1 -0
  290. package/dist/internal/blocks/DateRangeInput.js +16 -0
  291. package/dist/internal/blocks/DateRangeInput.js.map +1 -0
  292. package/dist/internal/blocks/EmptyConfigurationActionCard.js +10 -0
  293. package/dist/internal/blocks/EmptyConfigurationActionCard.js.map +1 -0
  294. package/dist/internal/blocks/EmptyState.js +4 -0
  295. package/dist/internal/blocks/EmptyState.js.map +1 -0
  296. package/dist/internal/blocks/ErrorState.js +5 -0
  297. package/dist/internal/blocks/ErrorState.js.map +1 -0
  298. package/dist/internal/blocks/ExportMenu.js +13 -0
  299. package/dist/internal/blocks/ExportMenu.js.map +1 -0
  300. package/dist/internal/blocks/Form.js +29 -0
  301. package/dist/internal/blocks/Form.js.map +1 -0
  302. package/dist/internal/blocks/FormGroup.js +18 -0
  303. package/dist/internal/blocks/FormGroup.js.map +1 -0
  304. package/dist/internal/blocks/GoogleButton.js +10 -0
  305. package/dist/internal/blocks/GoogleButton.js.map +1 -0
  306. package/dist/internal/blocks/MicrosoftButton.js +10 -0
  307. package/dist/internal/blocks/MicrosoftButton.js.map +1 -0
  308. package/dist/internal/blocks/MultiActionButtonGroup.js +12 -0
  309. package/dist/internal/blocks/MultiActionButtonGroup.js.map +1 -0
  310. package/dist/internal/blocks/MultiCombobox.js +14 -0
  311. package/dist/internal/blocks/MultiCombobox.js.map +1 -0
  312. package/dist/internal/blocks/NumberInput.js +12 -0
  313. package/dist/internal/blocks/NumberInput.js.map +1 -0
  314. package/dist/internal/blocks/OtpInput.js +10 -0
  315. package/dist/internal/blocks/OtpInput.js.map +1 -0
  316. package/dist/internal/blocks/PageHeader.js +9 -0
  317. package/dist/internal/blocks/PageHeader.js.map +1 -0
  318. package/dist/internal/blocks/PageLayout.js +9 -0
  319. package/dist/internal/blocks/PageLayout.js.map +1 -0
  320. package/dist/internal/blocks/PageToolbar.js +13 -0
  321. package/dist/internal/blocks/PageToolbar.js.map +1 -0
  322. package/dist/internal/blocks/PasswordInput.js +13 -0
  323. package/dist/internal/blocks/PasswordInput.js.map +1 -0
  324. package/dist/internal/blocks/SearchInput.js +12 -0
  325. package/dist/internal/blocks/SearchInput.js.map +1 -0
  326. package/dist/internal/blocks/SearchInputWithNavigation.js +16 -0
  327. package/dist/internal/blocks/SearchInputWithNavigation.js.map +1 -0
  328. package/dist/internal/blocks/SectionNav.js +15 -0
  329. package/dist/internal/blocks/SectionNav.js.map +1 -0
  330. package/dist/internal/blocks/SplitButton.js +14 -0
  331. package/dist/internal/blocks/SplitButton.js.map +1 -0
  332. package/dist/internal/blocks/StatCard.js +10 -0
  333. package/dist/internal/blocks/StatCard.js.map +1 -0
  334. package/dist/internal/blocks/TextInput.js +13 -0
  335. package/dist/internal/blocks/TextInput.js.map +1 -0
  336. package/dist/internal/blocks/Textarea.js +13 -0
  337. package/dist/internal/blocks/Textarea.js.map +1 -0
  338. package/dist/internal/blocks/TimeInput.js +17 -0
  339. package/dist/internal/blocks/TimeInput.js.map +1 -0
  340. package/dist/internal/components/Alert.js +11 -0
  341. package/dist/internal/components/Alert.js.map +1 -0
  342. package/dist/internal/components/AlertModal.js +11 -0
  343. package/dist/internal/components/AlertModal.js.map +1 -0
  344. package/dist/internal/components/Avatar.js +9 -0
  345. package/dist/internal/components/Avatar.js.map +1 -0
  346. package/dist/internal/components/Badge.js +9 -0
  347. package/dist/internal/components/Badge.js.map +1 -0
  348. package/dist/internal/components/BrandLogo.js +11 -0
  349. package/dist/internal/components/BrandLogo.js.map +1 -0
  350. package/dist/internal/components/Breadcrumb.js +14 -0
  351. package/dist/internal/components/Breadcrumb.js.map +1 -0
  352. package/dist/internal/components/Button.js +10 -0
  353. package/dist/internal/components/Button.js.map +1 -0
  354. package/dist/internal/components/ButtonGroup.js +9 -0
  355. package/dist/internal/components/ButtonGroup.js.map +1 -0
  356. package/dist/internal/components/Calendar.js +9 -0
  357. package/dist/internal/components/Calendar.js.map +1 -0
  358. package/dist/internal/components/Card.js +9 -0
  359. package/dist/internal/components/Card.js.map +1 -0
  360. package/dist/internal/components/Checkbox.js +11 -0
  361. package/dist/internal/components/Checkbox.js.map +1 -0
  362. package/dist/internal/components/Clipboard.js +9 -0
  363. package/dist/internal/components/Clipboard.js.map +1 -0
  364. package/dist/internal/components/Collapsible.js +9 -0
  365. package/dist/internal/components/Collapsible.js.map +1 -0
  366. package/dist/internal/components/CollapsiblePanel.js +11 -0
  367. package/dist/internal/components/CollapsiblePanel.js.map +1 -0
  368. package/dist/internal/components/Combobox.js +13 -0
  369. package/dist/internal/components/Combobox.js.map +1 -0
  370. package/dist/internal/components/DatePicker.js +11 -0
  371. package/dist/internal/components/DatePicker.js.map +1 -0
  372. package/dist/internal/components/DateRangePicker.js +17 -0
  373. package/dist/internal/components/DateRangePicker.js.map +1 -0
  374. package/dist/internal/components/DiffView.js +9 -0
  375. package/dist/internal/components/DiffView.js.map +1 -0
  376. package/dist/internal/components/DotsLoader.js +5 -0
  377. package/dist/internal/components/DotsLoader.js.map +1 -0
  378. package/dist/internal/components/DropdownMenu.js +11 -0
  379. package/dist/internal/components/DropdownMenu.js.map +1 -0
  380. package/dist/internal/components/EmptySearchContent.js +4 -0
  381. package/dist/internal/components/EmptySearchContent.js.map +1 -0
  382. package/dist/internal/components/FileUpload.js +11 -0
  383. package/dist/internal/components/FileUpload.js.map +1 -0
  384. package/dist/internal/components/FullScreenModal.js +12 -0
  385. package/dist/internal/components/FullScreenModal.js.map +1 -0
  386. package/dist/internal/components/HelpBlock.js +4 -0
  387. package/dist/internal/components/HelpBlock.js.map +1 -0
  388. package/dist/internal/components/HoverCard.js +9 -0
  389. package/dist/internal/components/HoverCard.js.map +1 -0
  390. package/dist/internal/components/InputGroup.js +11 -0
  391. package/dist/internal/components/InputGroup.js.map +1 -0
  392. package/dist/internal/components/Kbd.js +9 -0
  393. package/dist/internal/components/Kbd.js.map +1 -0
  394. package/dist/internal/components/Label.js +9 -0
  395. package/dist/internal/components/Label.js.map +1 -0
  396. package/dist/internal/components/Link.js +9 -0
  397. package/dist/internal/components/Link.js.map +1 -0
  398. package/dist/internal/components/MarkedText.js +5 -0
  399. package/dist/internal/components/MarkedText.js.map +1 -0
  400. package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js +10 -0
  401. package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js.map +1 -0
  402. package/dist/internal/components/MergeEditor/PaneHeader.js +4 -0
  403. package/dist/internal/components/MergeEditor/PaneHeader.js.map +1 -0
  404. package/dist/internal/components/MergeEditor/constants.js +4 -0
  405. package/dist/internal/components/MergeEditor/constants.js.map +1 -0
  406. package/dist/internal/components/MergeEditor/useMergeDiff.js +5 -0
  407. package/dist/internal/components/MergeEditor/useMergeDiff.js.map +1 -0
  408. package/dist/internal/components/Modal.js +13 -0
  409. package/dist/internal/components/Modal.js.map +1 -0
  410. package/dist/internal/components/Navbar.js +14 -0
  411. package/dist/internal/components/Navbar.js.map +1 -0
  412. package/dist/internal/components/Pagination.js +11 -0
  413. package/dist/internal/components/Pagination.js.map +1 -0
  414. package/dist/internal/components/PanelWithDetails.js +11 -0
  415. package/dist/internal/components/PanelWithDetails.js.map +1 -0
  416. package/dist/internal/components/Popconfirm.js +12 -0
  417. package/dist/internal/components/Popconfirm.js.map +1 -0
  418. package/dist/internal/components/Popover.js +9 -0
  419. package/dist/internal/components/Popover.js.map +1 -0
  420. package/dist/internal/components/Progress.js +9 -0
  421. package/dist/internal/components/Progress.js.map +1 -0
  422. package/dist/internal/components/RadioGroup.js +12 -0
  423. package/dist/internal/components/RadioGroup.js.map +1 -0
  424. package/dist/internal/components/Resizable.js +9 -0
  425. package/dist/internal/components/Resizable.js.map +1 -0
  426. package/dist/internal/components/ScrollArea.js +9 -0
  427. package/dist/internal/components/ScrollArea.js.map +1 -0
  428. package/dist/internal/components/Search.js +10 -0
  429. package/dist/internal/components/Search.js.map +1 -0
  430. package/dist/internal/components/Select.js +12 -0
  431. package/dist/internal/components/Select.js.map +1 -0
  432. package/dist/internal/components/Separator.js +9 -0
  433. package/dist/internal/components/Separator.js.map +1 -0
  434. package/dist/internal/components/Sheet.js +12 -0
  435. package/dist/internal/components/Sheet.js.map +1 -0
  436. package/dist/internal/components/Sidebar.js +20 -0
  437. package/dist/internal/components/Sidebar.js.map +1 -0
  438. package/dist/internal/components/Skeleton/Skeleton.js +9 -0
  439. package/dist/internal/components/Skeleton/Skeleton.js.map +1 -0
  440. package/dist/internal/components/Skeleton/SkeletonList.js +10 -0
  441. package/dist/internal/components/Skeleton/SkeletonList.js.map +1 -0
  442. package/dist/internal/components/Slider.js +11 -0
  443. package/dist/internal/components/Slider.js.map +1 -0
  444. package/dist/internal/components/SpotlightBackdrop.js +9 -0
  445. package/dist/internal/components/SpotlightBackdrop.js.map +1 -0
  446. package/dist/internal/components/Stepper.js +10 -0
  447. package/dist/internal/components/Stepper.js.map +1 -0
  448. package/dist/internal/components/Switch.js +10 -0
  449. package/dist/internal/components/Switch.js.map +1 -0
  450. package/dist/internal/components/Table.js +10 -0
  451. package/dist/internal/components/Table.js.map +1 -0
  452. package/dist/internal/components/Tabs.js +12 -0
  453. package/dist/internal/components/Tabs.js.map +1 -0
  454. package/dist/internal/components/ThemeProvider.js +10 -0
  455. package/dist/internal/components/ThemeProvider.js.map +1 -0
  456. package/dist/internal/components/TimePicker.js +12 -0
  457. package/dist/internal/components/TimePicker.js.map +1 -0
  458. package/dist/internal/components/Timeline.js +10 -0
  459. package/dist/internal/components/Timeline.js.map +1 -0
  460. package/dist/internal/components/Toast.js +11 -0
  461. package/dist/internal/components/Toast.js.map +1 -0
  462. package/dist/internal/components/Toggle.js +9 -0
  463. package/dist/internal/components/Toggle.js.map +1 -0
  464. package/dist/internal/components/ToggleGroup.js +9 -0
  465. package/dist/internal/components/ToggleGroup.js.map +1 -0
  466. package/dist/internal/components/Tooltip.js +8 -0
  467. package/dist/internal/components/Tooltip.js.map +1 -0
  468. package/dist/internal/components/Truncated.js +9 -0
  469. package/dist/internal/components/Truncated.js.map +1 -0
  470. package/dist/internal/components/Workbench.js +11 -0
  471. package/dist/internal/components/Workbench.js.map +1 -0
  472. package/dist/internal/components/ZoomableSvg.js +13 -0
  473. package/dist/internal/components/ZoomableSvg.js.map +1 -0
  474. package/dist/internal/hooks/useAutosizeInput.js +4 -0
  475. package/dist/internal/hooks/useAutosizeInput.js.map +1 -0
  476. package/dist/internal/hooks/useScrollbarPosition.js +5 -0
  477. package/dist/internal/hooks/useScrollbarPosition.js.map +1 -0
  478. package/dist/internal/hooks/useStableCallback.js +4 -0
  479. package/dist/internal/hooks/useStableCallback.js.map +1 -0
  480. package/dist/internal/utils/mergeRefs.js +4 -0
  481. package/dist/internal/utils/mergeRefs.js.map +1 -0
  482. package/dist/internal/utils.js +8 -0
  483. package/dist/internal/utils.js.map +1 -0
  484. package/dist/markdown-editor.js +55 -3426
  485. package/dist/markdown-editor.js.map +1 -1
  486. package/dist/mermaid.js +16 -1129
  487. package/dist/mermaid.js.map +1 -1
  488. package/dist/rjsf.js +252 -9380
  489. package/dist/rjsf.js.map +1 -1
  490. package/dist/styles.css +1 -1
  491. package/dist/testing.js +10 -357
  492. package/dist/testing.js.map +1 -1
  493. package/package.json +31 -75
  494. package/src/styles.css +95 -10
  495. package/src/theme.css +65 -0
  496. package/dist/charts.cjs +0 -268
  497. package/dist/charts.cjs.map +0 -1
  498. package/dist/charts.d.cts +0 -181
  499. package/dist/constants-D3gaMY-W.d.cts +0 -39
  500. package/dist/editors.cjs +0 -2440
  501. package/dist/editors.cjs.map +0 -1
  502. package/dist/editors.d.cts +0 -165
  503. package/dist/icons.cjs +0 -23888
  504. package/dist/icons.cjs.map +0 -1
  505. package/dist/icons.d.cts +0 -20
  506. package/dist/index.cjs +0 -24894
  507. package/dist/index.cjs.map +0 -1
  508. package/dist/index.d.cts +0 -10438
  509. package/dist/markdown-editor.cjs +0 -4636
  510. package/dist/markdown-editor.cjs.map +0 -1
  511. package/dist/markdown-editor.d.cts +0 -75
  512. package/dist/mermaid.cjs +0 -1138
  513. package/dist/mermaid.cjs.map +0 -1
  514. package/dist/mermaid.d.cts +0 -15
  515. package/dist/rjsf.cjs +0 -10893
  516. package/dist/rjsf.cjs.map +0 -1
  517. package/dist/rjsf.d.cts +0 -55
  518. package/dist/testing.cjs +0 -373
  519. package/dist/testing.cjs.map +0 -1
  520. package/dist/testing.d.cts +0 -25
package/dist/mermaid.js CHANGED
@@ -1,1131 +1,18 @@
1
- import { createContext, useId, useState, useRef, useEffect, useMemo, useCallback, use } from 'react';
2
- import { renderMermaidSVG } from 'beautiful-mermaid';
3
- import colors from '@keboola/tailwind-config/colors';
4
- import { createPortal } from 'react-dom';
5
- import DOMPurify from 'dompurify';
6
- import { Root, Slottable } from '@radix-ui/react-slot';
7
- import { Minimize2, Maximize2, Loader2, Copy } from 'lucide-react';
8
- import { clsx } from 'clsx';
9
- import { extendTailwindMerge } from 'tailwind-merge';
10
- import { Root as Root$1, Trigger, Portal, Content } from '@radix-ui/react-tooltip';
11
- import { cva } from 'class-variance-authority';
12
- import { keboolaLegacySidebar, keboolaLegacyTopnav } from '@keboola/brand-registry';
13
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
14
-
15
- // src/blocks/MermaidDiagram/MermaidDiagram.tsx
16
- var twMerge = extendTailwindMerge({
17
- prefix: "tw"
18
- });
19
- var cn = (...classes) => twMerge(clsx(...classes));
20
-
21
- // src/utils/copyToClipboard.ts
22
- var copyToClipboard = (text) => {
23
- return navigator.clipboard.writeText(text);
24
- };
25
-
26
- // src/constants/keyCodes.ts
27
- var keyCodes = {
28
- ENTER: "Enter",
29
- SPACE: " "
30
- };
31
-
32
- // src/components/ThemeProvider/utils.ts
33
- var createTheme = (brand) => ({
34
- id: brand.id,
35
- name: brand.name,
36
- shell: brand.shell,
37
- logo: brand.logo
38
- });
39
-
40
- // src/components/ThemeProvider/defaults.ts
41
- [keboolaLegacySidebar.id, keboolaLegacyTopnav.id];
42
- var DEFAULT_COLOR_SCHEME = "light";
43
- var DEFAULT_BRAND_ID = "design-system";
44
- var defaultBrand = {
45
- id: DEFAULT_BRAND_ID,
46
- name: "Design System",
47
- shell: "sidebar"};
48
- var defaultTheme = createTheme(defaultBrand);
49
-
50
- // src/components/ThemeProvider/context.tsx
51
- var noop = () => void 0;
52
- var defaultContext = {
53
- scheme: DEFAULT_COLOR_SCHEME,
54
- resolvedScheme: DEFAULT_COLOR_SCHEME,
55
- setScheme: noop,
56
- brandId: defaultTheme.id,
57
- setBrand: noop,
58
- themes: [defaultTheme],
59
- currentTheme: defaultTheme
60
- };
61
- createContext(defaultContext);
62
- var ArgoDesignContext = createContext(true);
63
- var useArgoDesign = () => use(ArgoDesignContext);
64
- var tooltipVariants = cva(
65
- [
66
- "tailwindcss-preflight",
67
- "tw:inline-block",
68
- "tw:break-anywhere",
69
- "tw:max-h-96",
70
- "tw:overflow-y-auto",
71
- "tw:z-[1060]",
72
- // legacy (dark) chrome — default
73
- "tw:rounded",
74
- "tw:bg-neutral-800",
75
- "tw:text-white",
76
- // argo chrome overrides — semantic floating-panel tokens
77
- "tw:data-[argo=true]:rounded-2xl",
78
- "tw:data-[argo=true]:border",
79
- "tw:data-[argo=true]:border-solid",
80
- "tw:data-[argo=true]:border-border",
81
- "tw:data-[argo=true]:bg-popover",
82
- "tw:data-[argo=true]:text-popover-foreground",
83
- "tw:data-[argo=true]:shadow-md",
84
- // argo open animation
85
- "tw:data-[argo=true]:data-[state=delayed-open]:animate-in",
86
- "tw:data-[argo=true]:data-[state=instant-open]:animate-in",
87
- "tw:data-[argo=true]:data-[state=delayed-open]:fade-in-0",
88
- "tw:data-[argo=true]:data-[state=instant-open]:fade-in-0",
89
- "tw:data-[argo=true]:data-[state=delayed-open]:zoom-in-95",
90
- "tw:data-[argo=true]:data-[state=instant-open]:zoom-in-95",
91
- // argo closed animation
92
- "tw:data-[argo=true]:data-[state=closed]:animate-out",
93
- "tw:data-[argo=true]:data-[state=closed]:fade-out-0",
94
- "tw:data-[argo=true]:data-[state=closed]:zoom-out-95",
95
- // argo position animation
96
- "tw:data-[argo=true]:data-[side=bottom]:slide-in-from-top-2",
97
- "tw:data-[argo=true]:data-[side=left]:slide-in-from-right-2",
98
- "tw:data-[argo=true]:data-[side=right]:slide-in-from-left-2",
99
- "tw:data-[argo=true]:data-[side=top]:slide-in-from-bottom-2"
100
- ],
101
- {
102
- defaultVariants: {
103
- variant: "action"
104
- },
105
- variants: {
106
- variant: {
107
- action: [
108
- "tw:max-w-fit",
109
- "tw:px-3",
110
- "tw:py-2",
111
- "tw:text-center",
112
- "tw:text-xs",
113
- "tw:font-medium",
114
- // Legacy chrome uppercases the action tooltip; the Keboola V2 brand
115
- // (`data-brand="keboola"`) renders it in standard case instead.
116
- "tw:uppercase",
117
- "tw:tracking-wider",
118
- "tw:[[data-brand=keboola]_&]:normal-case",
119
- "tw:[[data-brand=keboola]_&]:tracking-normal"
120
- ],
121
- explanatory: [
122
- "tw:max-w-80",
123
- "tw:px-4",
124
- "tw:py-3",
125
- "tw:text-left",
126
- "tw:text-sm",
127
- "tw:font-normal"
128
- ]
129
- }
130
- }
131
- }
132
- );
133
- var TooltipContent = ({
134
- className,
135
- variant,
136
- keepOpenOnPointerDownOutside = false,
137
- children,
138
- onPointerDownOutside,
139
- sideOffset = 8,
140
- collisionPadding = 8,
141
- hideWhenDetached = true,
142
- placement = "right",
143
- ...rest
144
- }) => {
145
- const renderArgo = useArgoDesign();
146
- const handlePointerDownOutside = (event) => {
147
- if (keepOpenOnPointerDownOutside) event.preventDefault();
148
- onPointerDownOutside?.(event);
149
- };
150
- return /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsx(
151
- Content,
152
- {
153
- ...rest,
154
- "data-tooltip-content": renderArgo ? void 0 : true,
155
- "data-argo": renderArgo,
156
- sideOffset,
157
- collisionPadding,
158
- onPointerDownOutside: handlePointerDownOutside,
159
- className: tooltipVariants({ className, variant }),
160
- hideWhenDetached,
161
- side: placement,
162
- children
163
- }
164
- ) });
165
- };
166
- var DELAY_SHOW_TOOLTIP = 300;
167
- var TooltipRoot = ({ children, delayDuration = DELAY_SHOW_TOOLTIP, ...rest }) => /* @__PURE__ */ jsx(Root$1, { ...rest, delayDuration, children });
168
- var TooltipTrigger = ({
169
- ref,
170
- children,
171
- className,
172
- keepOpenOnClick = false,
173
- onClick,
174
- onPointerDown,
175
- asChild,
176
- ...rest
177
- }) => {
178
- const handleClick = (event) => {
179
- if (keepOpenOnClick) event.preventDefault();
180
- onClick?.(event);
181
- };
182
- const handlePointerDown = (event) => {
183
- if (keepOpenOnClick) event.preventDefault();
184
- onPointerDown?.(event);
185
- };
186
- return /* @__PURE__ */ jsx(
187
- Trigger,
188
- {
189
- ...rest,
190
- asChild: true,
191
- ref,
192
- className: cn("tailwindcss-preflight", className),
193
- onClick: handleClick,
194
- onPointerDown: handlePointerDown,
195
- children: asChild ? children : (
196
- // Default-mode trigger wraps children in a span so Radix has a
197
- // single DOM element to attach handlers to. `tailwindcss-preflight`
198
- // (merged in via Slot) activates Tailwind's preflight inside the
199
- // span, which sets `svg { display: block }` — without an inline-flex
200
- // container that would stack any bare Lucide icon onto its own
201
- // line. `tw:inline-flex tw:items-center` keeps icon + text aligned.
202
- /* @__PURE__ */ jsx("span", { className: "tw:inline-flex tw:items-center", children })
203
- )
204
- }
205
- );
206
- };
207
- var ACTION_TOOLTIP_LIMIT = 30;
208
- var Tooltip = ({
209
- tooltip,
210
- children,
211
- className,
212
- keepOpenOnTriggerClick = false,
213
- variant,
214
- placement = "right",
215
- forceHide = false,
216
- forceShow = false,
217
- delayDuration,
218
- // trigger props
219
- triggerAsChild = false
220
- }) => {
221
- const [open, setOpen] = useState(false);
222
- const resolvedVariant = (() => {
223
- if (!!variant) return variant;
224
- if (typeof tooltip === "string" && tooltip.length > ACTION_TOOLTIP_LIMIT) return "explanatory";
225
- return "action";
226
- })();
227
- const isActionVariant = resolvedVariant === "action";
228
- const handleKeyUp = (event) => {
229
- if (![keyCodes.ENTER, keyCodes.SPACE].includes(event.key)) return;
230
- event.stopPropagation();
231
- };
232
- return /* @__PURE__ */ jsxs(
233
- TooltipRoot,
234
- {
235
- open: !!tooltip && (open || forceShow) && !forceHide,
236
- onOpenChange: setOpen,
237
- delayDuration,
238
- disableHoverableContent: isActionVariant,
239
- children: [
240
- /* @__PURE__ */ jsx(
241
- TooltipTrigger,
242
- {
243
- asChild: triggerAsChild,
244
- keepOpenOnClick: keepOpenOnTriggerClick,
245
- onKeyUp: handleKeyUp,
246
- children
247
- }
248
- ),
249
- /* @__PURE__ */ jsx(
250
- TooltipContent,
251
- {
252
- className,
253
- variant: resolvedVariant,
254
- placement,
255
- keepOpenOnPointerDownOutside: keepOpenOnTriggerClick,
256
- children: tooltip
257
- }
258
- )
259
- ]
260
- }
261
- );
262
- };
263
- Tooltip.Root = TooltipRoot;
264
- Tooltip.Content = TooltipContent;
265
- Tooltip.Trigger = TooltipTrigger;
266
- var variants = cva(
267
- [
268
- "tailwindcss-preflight",
269
- "tw:group/button",
270
- "tw:border-box",
271
- // layout
272
- "tw:relative",
273
- "tw:flex",
274
- "tw:items-center",
275
- "tw:justify-center",
276
- "tw:gap-2",
277
- // text — chrome weight/tracking are brand-overridable tokens
278
- // (`--font-weight-medium` / `--letter-spacing-chrome`). Casing: standard case is
279
- // the default; only legacy brands (`keboola-legacy-*`) uppercase the chrome, so
280
- // modern brands (incl. Keboola V2) read naturally. Mirrors the V2 standard-case
281
- // treatment shipped for Tooltip/Badge (PR 7629).
282
- "tw:text-xs",
283
- "tw:leading-5",
284
- "tw:font-medium",
285
- "tw:[[data-brand^=keboola-legacy]_&]:tracking-chrome",
286
- "tw:[[data-brand^=keboola-legacy]_&]:uppercase",
287
- // border — legacy (non-argo) chrome uses a fixed radius, not the brand token.
288
- "tw:rounded",
289
- "tw:border",
290
- "tw:border-transparent",
291
- // styling
292
- "tw:shadow-none",
293
- "tw:[a]:cursor-pointer",
294
- // explicitly set for anchor
295
- "tw:focus-visible:outline",
296
- "tw:focus-visible:outline-1",
297
- "tw:focus-visible:-outline-offset-1",
298
- "tw:focus-visible:outline-ring",
299
- "tw:focus-visible:ring-4",
300
- "tw:focus-visible:ring-ring/30",
301
- // disabled
302
- "tw:disabled:opacity-40",
303
- "tw:disabled:cursor-not-allowed",
304
- // anchor support
305
- "tw:!no-underline",
306
- "tw:aria-disabled:opacity-40",
307
- "tw:aria-disabled:cursor-not-allowed",
308
- "tw:[&_svg]:shrink-0"
309
- ],
310
- {
311
- defaultVariants: {
312
- size: "medium",
313
- variant: "primary",
314
- block: false
315
- },
316
- variants: {
317
- block: {
318
- true: ["tw:w-full"]
319
- },
320
- variant: {
321
- primary: [
322
- "tw:text-white",
323
- "tw:bg-primary-500",
324
- "tw:focus:text-white",
325
- "tw:hover:text-white",
326
- "tw:hover:not-disabled:bg-primary-600",
327
- "tw:active:not-disabled:bg-primary-800",
328
- // anchor disabled override
329
- "tw:aria-disabled:!bg-primary-500"
330
- ],
331
- secondary: [
332
- "tw:text-white",
333
- "tw:bg-secondary-500",
334
- "tw:focus:text-white",
335
- "tw:hover:text-white",
336
- "tw:hover:not-disabled:bg-secondary-700",
337
- "tw:active:not-disabled:bg-secondary-800",
338
- // anchor disabled override
339
- "tw:aria-disabled:!bg-secondary-500"
340
- ],
341
- danger: [
342
- "tw:text-white",
343
- "tw:bg-error-500",
344
- "tw:focus:text-white",
345
- "tw:hover:text-white",
346
- "tw:hover:not-disabled:bg-error-600",
347
- "tw:active:not-disabled:bg-error-700",
348
- // anchor disabled override
349
- "tw:aria-disabled:!bg-error-500"
350
- ],
351
- invisible: [
352
- "tw:text-neutral-800",
353
- "tw:bg-transparent",
354
- "tw:focus:text-neutral-800",
355
- "tw:hover:not-disabled:bg-neutral-100",
356
- "tw:hover:text-neutral-800",
357
- "tw:active:not-disabled:bg-neutral-150",
358
- // contrasting icon on hover/active
359
- "tw:[&_svg]:text-neutral-400",
360
- "tw:hover:not-disabled:[&_svg]:text-secondary-600",
361
- "tw:active:not-disabled:[&_svg]:text-secondary-600",
362
- // anchor disabled override
363
- "tw:aria-disabled:!bg-transparent"
364
- ],
365
- outline: [
366
- "tw:text-neutral-800",
367
- "tw:bg-white",
368
- // border
369
- "tw:!border-neutral-200",
370
- "tw:hover:text-neutral-800",
371
- "tw:focus:text-neutral-800",
372
- "tw:hover:not-disabled:!border-neutral-300",
373
- "tw:hover:not-disabled:bg-neutral-100",
374
- "tw:active:not-disabled:bg-neutral-200",
375
- // contrasting icon hover, same as invisible
376
- "tw:[&_svg]:text-neutral-400",
377
- "tw:not-disabled:hover:[&_svg]:text-secondary-600",
378
- "tw:active:not-disabled:[&_svg]:text-secondary-600",
379
- // anchor disabled override
380
- "tw:aria-disabled:!bg-white",
381
- "tw:aria-disabled:!border-neutral-200"
382
- ],
383
- inline: [
384
- "tw:text-neutral-800",
385
- "tw:bg-transparent",
386
- "tw:rounded-full",
387
- "tw:[&_svg]:text-neutral-400",
388
- "tw:not-disabled:hover:[&_svg]:text-secondary-600",
389
- "tw:not-disabled:focus:[&_svg]:text-secondary-600"
390
- ]
391
- },
392
- size: {
393
- medium: [
394
- "tw:max-h-10",
395
- "tw:min-h-10",
396
- "tw:px-4",
397
- "tw:py-2.5",
398
- 'tw:[&_svg:not([class*="tw:size-"])]:size-4'
399
- ],
400
- small: [
401
- "tw:max-h-8",
402
- "tw:min-h-8",
403
- "tw:px-4",
404
- "tw:py-1.5",
405
- 'tw:[&_svg:not([class*="tw:size-"])]:size-4'
406
- ],
407
- large: [
408
- "tw:max-h-12",
409
- "tw:min-h-12",
410
- "tw:px-4",
411
- "tw:py-3.5",
412
- 'tw:[&_svg:not([class*="tw:size-"])]:size-4'
413
- ],
414
- "icon-lg": ["tw:size-12", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-6'],
415
- icon: ["tw:size-10", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-4'],
416
- "icon-sm": ["tw:size-8", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-4'],
417
- "icon-xs": ["tw:size-6", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-4'],
418
- "icon-2xs": [
419
- "tw:!inline-flex",
420
- "tw:size-5",
421
- "tw:max-h-5",
422
- 'tw:[&_svg:not([class*="tw:size-"])]:size-3'
423
- ],
424
- "icon-3xs": ["tw:h-fit", "tw:w-fit", 'tw:[&_svg:not([class*="tw:size-"])]:size-4']
425
- }
426
- }
427
- }
428
- );
429
- var argoVariants = cva(
430
- [
431
- "tailwindcss-preflight",
432
- // layout
433
- "tw:relative",
434
- "tw:inline-flex",
435
- "tw:items-center",
436
- "tw:justify-center",
437
- "tw:whitespace-nowrap",
438
- "tw:gap-2",
439
- // border
440
- "tw:border",
441
- "tw:border-transparent",
442
- "tw:rounded-[var(--radius-lg,0.25rem)]",
443
- // text
444
- "tw:font-medium",
445
- "tw:select-none",
446
- // focus visible
447
- "tw:!outline-hidden",
448
- "tw:focus-visible:ring-2",
449
- // disabled
450
- "tw:disabled:cursor-not-allowed",
451
- "tw:disabled:opacity-50",
452
- "tw:active:opacity-60",
453
- "tw:transition-all",
454
- "tw:bg-clip-padding",
455
- // anchor support
456
- "tw:!no-underline",
457
- "tw:aria-disabled:cursor-not-allowed",
458
- "tw:aria-disabled:opacity-50",
459
- // icon
460
- "tw:shrink-0",
461
- "tw:[&_svg]:pointer-events-none",
462
- "tw:[&_svg]:shrink-0",
463
- "tw:[&_svg:not([class*='tw:size-'])]:size-4"
464
- ],
465
- {
466
- defaultVariants: {
467
- variant: "primary",
468
- size: "medium"
469
- },
470
- variants: {
471
- block: {
472
- true: ["tw:w-full"]
473
- },
474
- variant: {
475
- primary: [
476
- "tw:bg-primary",
477
- "tw:text-primary-foreground",
478
- "tw:[a]:hover:bg-primary/80",
479
- "tw:hover:not-disabled:bg-primary/90",
480
- "tw:hover:text-primary-foreground",
481
- "tw:focus:text-primary-foreground",
482
- "tw:focus-visible:border-primary",
483
- "tw:focus-visible:ring-ring/50"
484
- ],
485
- secondary: [
486
- "tw:bg-primary/10",
487
- "tw:text-primary",
488
- "tw:hover:not-disabled:bg-primary/20",
489
- "tw:focus-visible:border-primary",
490
- "tw:focus-visible:ring-ring/50"
491
- ],
492
- // should be called "destructive" by Figma
493
- danger: [
494
- "tw:bg-destructive",
495
- "tw:text-destructive-foreground",
496
- "tw:hover:text-destructive-foreground",
497
- "tw:focus:text-destructive-foreground",
498
- "tw:focus-visible:border-destructive",
499
- "tw:focus-visible:ring-destructive/20"
500
- ],
501
- outline: [
502
- "tw:!border-input",
503
- "tw:bg-background",
504
- // Semantic base text color so the label/icon flips in dark mode
505
- // (matches `invisible`); previously unset → inherited a fixed dark color.
506
- "tw:text-foreground",
507
- // Hover follows the brand primary (translucent tint), matching the
508
- // `secondary` variant — not the fixed `accent` blue.
509
- "tw:hover:not-disabled:bg-primary/10",
510
- "tw:hover:not-disabled:text-primary",
511
- "tw:hover:active:bg-background",
512
- "tw:focus-visible:!border-primary",
513
- "tw:focus-visible:ring-ring/50"
514
- ],
515
- // should be called "ghost" by Figma
516
- invisible: [
517
- "tw:bg-transparent",
518
- "tw:text-foreground",
519
- "tw:hover:not-disabled:bg-primary/10",
520
- "tw:hover:not-disabled:text-primary",
521
- "tw:hover:not-disabled:border-primary/10",
522
- "tw:focus-visible:ring-ring/50"
523
- ],
524
- // should be called "link" by Figma
525
- inline: [
526
- "tw:bg-transparent",
527
- "tw:text-primary",
528
- "tw:hover:underline",
529
- "tw:hover:active:bg-transparent",
530
- "tw:focus-visible:ring-ring/50"
531
- ]
532
- },
533
- size: {
534
- // should be called "default" by Figma
535
- medium: ["tw:max-h-9", "tw:py-2", "tw:px-4", "tw:text-sm"],
536
- // should be called "small" by Figma
537
- small: ["tw:max-h-8", "tw:py-2", "tw:px-3", "tw:text-xs"],
538
- // should be called "large" by Figma
539
- large: ["tw:max-h-10", "tw:py-2.5", "tw:px-6", "tw:text-sm"],
540
- "icon-lg": ["tw:size-10"],
541
- icon: ["tw:size-9"],
542
- "icon-sm": ["tw:size-8"],
543
- // unsupported in ARGO, remove when old design is gone
544
- "icon-xs": [],
545
- "icon-2xs": [],
546
- "icon-3xs": []
547
- }
548
- }
549
- }
550
- );
551
- var Button = ({
552
- ref,
553
- children,
554
- disabled = false,
555
- className,
556
- type = "button",
557
- isLoading = false,
558
- asChild = false,
559
- onClick,
560
- variant = "primary",
561
- size = "medium",
562
- block = false,
563
- ...buttonProps
564
- }) => {
565
- const renderArgo = useArgoDesign();
566
- const Comp = asChild ? Root : "button";
567
- const isIconOnly = String(size).startsWith("icon");
568
- const classNames = renderArgo ? argoVariants({ variant, size, block, className }) : variants({ size, variant, block, className });
569
- const handleClick = (event) => {
570
- const isAnchor = event.currentTarget.tagName === "A";
571
- if (isAnchor && disabled) {
572
- event.preventDefault();
573
- return;
574
- }
575
- onClick?.(event);
576
- };
577
- return /* @__PURE__ */ jsxs(
578
- Comp,
579
- {
580
- ...buttonProps,
581
- ref,
582
- disabled,
583
- "aria-disabled": disabled,
584
- "data-variant": variant,
585
- "data-icon-only": isIconOnly,
586
- type,
587
- onClick: handleClick,
588
- className: cn(classNames),
589
- children: [
590
- isLoading && /* @__PURE__ */ jsx(Loader2, { className: "tw:size-4 tw:shrink-0 tw:animate-spin" }),
591
- /* @__PURE__ */ jsx(Slottable, { children: isLoading && isIconOnly ? null : children })
592
- ]
593
- }
594
- );
595
- };
596
- var Clipboard2 = ({
597
- ref,
598
- text: textProp,
599
- children,
600
- tooltip = "Copy to Clipboard",
601
- tooltipPlacement = "top",
602
- tooltipVariant: tooltipVariantProp = "action",
603
- asChild = false,
604
- onClick,
605
- className,
606
- ...restButtonProps
607
- }) => {
608
- const [isTooltipOpen, setIsTooltipOpen] = useState(false);
609
- const [state, setState] = useState("ready");
610
- const text = typeof textProp === "function" ? textProp() : textProp;
611
- const copy = async (text2) => {
612
- try {
613
- if (!document.hasFocus()) window.focus();
614
- await copyToClipboard(text2);
615
- setState("copied");
616
- } catch {
617
- setState("error");
618
- }
619
- };
620
- const handleOnClick = (event) => {
621
- setIsTooltipOpen(true);
622
- if (text && state === "ready") void copy(text);
623
- onClick?.(event);
624
- };
625
- const handleOnOpenChange = (open) => {
626
- if (!open && state !== "ready") setState("ready");
627
- setIsTooltipOpen(open);
628
- };
629
- const tooltipContent = (() => {
630
- if (!text) return "Nothing to copy";
631
- if (state === "error") return "Failed to copy";
632
- if (state === "copied") return "Copied to Clipboard";
633
- return tooltip;
634
- })();
635
- const tooltipVariant = state === "ready" && !!text ? tooltipVariantProp : "action";
636
- const hasTooltipContent = tooltipContent !== null && tooltipContent !== void 0;
637
- return /* @__PURE__ */ jsxs(Tooltip.Root, { open: isTooltipOpen, onOpenChange: handleOnOpenChange, children: [
638
- /* @__PURE__ */ jsx(
639
- Tooltip.Trigger,
640
- {
641
- ...restButtonProps,
642
- asChild,
643
- keepOpenOnClick: true,
644
- onClick: handleOnClick,
645
- className: cn("tw:cursor-pointer", className),
646
- ref,
647
- children: children ?? text
648
- }
649
- ),
650
- hasTooltipContent && /* @__PURE__ */ jsx(
651
- Tooltip.Content,
652
- {
653
- keepOpenOnPointerDownOutside: true,
654
- placement: tooltipPlacement,
655
- variant: tooltipVariant,
656
- children: tooltipContent
657
- }
658
- )
659
- ] });
660
- };
661
- var DEFAULT_ICON = /* @__PURE__ */ jsx(Copy, {});
662
- var DEFAULT_ARIA_LABEL = "Copy";
663
- var ClipboardButton = ({
664
- // clipboard props
665
- text,
666
- tooltip,
667
- tooltipPlacement,
668
- tooltipVariant,
669
- // button props
670
- icon = DEFAULT_ICON,
671
- variant = "outline",
672
- children,
673
- ...rest
674
- }) => {
675
- const defaultAriaLabel = typeof tooltip === "string" && tooltip.trim() ? tooltip : DEFAULT_ARIA_LABEL;
676
- const ariaLabel = rest["aria-label"] ?? (children == null ? defaultAriaLabel : void 0);
677
- return /* @__PURE__ */ jsx(
678
- Clipboard2,
679
- {
680
- asChild: true,
681
- tooltip,
682
- tooltipPlacement,
683
- tooltipVariant,
684
- text,
685
- children: /* @__PURE__ */ jsxs(Button, { ...rest, "aria-label": ariaLabel, variant, disabled: !text, children: [
686
- icon,
687
- children
688
- ] })
689
- }
690
- );
691
- };
692
- var MIN_SCALE = 0.5;
693
- var MAX_SCALE = 3;
694
- var ZOOM_STEP = 0.1;
695
- var ZoomableSvg = ({
696
- html,
697
- copyText,
698
- className,
699
- allowForeignObject,
700
- renderActions
701
- }) => {
702
- const safeHtml = useMemo(
703
- () => DOMPurify.sanitize(html, {
704
- USE_PROFILES: { svg: true, svgFilters: true },
705
- ...allowForeignObject ? { ADD_TAGS: ["foreignObject"] } : {}
706
- }),
707
- [html, allowForeignObject]
708
- );
709
- const containerRef = useRef(null);
710
- const [scale, setScale] = useState(1);
711
- const [translate, setTranslate] = useState({ x: 0, y: 0 });
712
- const [isFullscreen, setIsFullscreen] = useState(false);
713
- useEffect(() => {
714
- if (!isFullscreen) return;
715
- const onKeyDown = (e) => {
716
- if (e.key === "Escape") {
717
- e.stopPropagation();
718
- setIsFullscreen(false);
719
- }
720
- };
721
- document.addEventListener("keydown", onKeyDown, { capture: true });
722
- return () => document.removeEventListener("keydown", onKeyDown, { capture: true });
723
- }, [isFullscreen]);
724
- const dragRef = useRef(null);
725
- useEffect(() => {
726
- const el = containerRef.current;
727
- if (!el) return;
728
- const onWheel = (e) => {
729
- if (!e.ctrlKey && !e.metaKey) return;
730
- e.preventDefault();
731
- const delta = e.deltaY > 0 ? -ZOOM_STEP : ZOOM_STEP;
732
- setScale((s) => Math.min(MAX_SCALE, Math.max(MIN_SCALE, s + delta)));
733
- };
734
- el.addEventListener("wheel", onWheel, { passive: false });
735
- return () => el.removeEventListener("wheel", onWheel);
736
- }, [isFullscreen]);
737
- const didDragRef = useRef(false);
738
- const handleMouseDown = useCallback(
739
- (e) => {
740
- if (e.button !== 0) return;
741
- e.preventDefault();
742
- didDragRef.current = false;
743
- dragRef.current = {
744
- startX: e.clientX,
745
- startY: e.clientY,
746
- startTx: translate.x,
747
- startTy: translate.y
748
- };
749
- },
750
- [translate]
751
- );
752
- const handleMouseMove = useCallback((e) => {
753
- if (!dragRef.current) return;
754
- didDragRef.current = true;
755
- setTranslate({
756
- x: dragRef.current.startTx + e.clientX - dragRef.current.startX,
757
- y: dragRef.current.startTy + e.clientY - dragRef.current.startY
758
- });
759
- }, []);
760
- const handleMouseUp = useCallback(() => {
761
- dragRef.current = null;
762
- }, []);
763
- const handleReset = useCallback(() => {
764
- setScale(1);
765
- setTranslate({ x: 0, y: 0 });
766
- }, []);
767
- const isZoomed = Math.abs(scale - 1) > 1e-3 || translate.x !== 0 || translate.y !== 0;
768
- const handleClick = useCallback((e) => {
769
- if (didDragRef.current) {
770
- e.stopPropagation();
771
- }
772
- }, []);
773
- const stopPropagation = useCallback((e) => {
774
- e.stopPropagation();
775
- }, []);
776
- const diagramContent = /* @__PURE__ */ jsxs(
777
- "div",
778
- {
779
- role: "presentation",
780
- className: cn("tw:group/zoom tw:relative", isFullscreen && "tw:h-full"),
781
- onClick: handleClick,
782
- children: [
783
- /* @__PURE__ */ jsx(
784
- "div",
785
- {
786
- role: "presentation",
787
- ref: containerRef,
788
- className: cn(
789
- "tw:overflow-hidden tw:cursor-grab tw:active:cursor-grabbing tw:p-3",
790
- isFullscreen && "tw:h-full"
791
- ),
792
- onMouseDown: handleMouseDown,
793
- onMouseMove: handleMouseMove,
794
- onMouseUp: handleMouseUp,
795
- onMouseLeave: handleMouseUp,
796
- children: /* @__PURE__ */ jsx(
797
- "div",
798
- {
799
- className: cn(
800
- "tw:flex tw:justify-center tw:origin-center",
801
- isFullscreen && "tw:h-full tw:[&>svg]:h-full"
802
- ),
803
- style: { transform: `translate(${translate.x}px, ${translate.y}px) scale(${scale})` },
804
- dangerouslySetInnerHTML: { __html: safeHtml }
805
- }
806
- )
807
- }
808
- ),
809
- /* @__PURE__ */ jsxs(
810
- "div",
811
- {
812
- role: "presentation",
813
- className: "tw:absolute tw:right-1 tw:top-1 tw:flex tw:gap-1 tw:opacity-0 tw:transition-opacity tw:focus-within:opacity-100 tw:group-hover/zoom:opacity-100",
814
- onClick: stopPropagation,
815
- children: [
816
- isZoomed && /* @__PURE__ */ jsx(Tooltip, { tooltip: "Reset zoom", placement: "top", triggerAsChild: true, children: /* @__PURE__ */ jsx(Button, { size: "small", variant: "outline", onClick: handleReset, children: "Reset" }) }),
817
- copyText && /* @__PURE__ */ jsx(ClipboardButton, { text: copyText, tooltip: "Copy code", size: "icon-sm", variant: "outline" }),
818
- renderActions?.(safeHtml),
819
- /* @__PURE__ */ jsx(
820
- Tooltip,
821
- {
822
- tooltip: isFullscreen ? "Exit fullscreen" : "Fullscreen",
823
- placement: "top",
824
- triggerAsChild: true,
825
- children: /* @__PURE__ */ jsx(
826
- Button,
827
- {
828
- size: "icon-sm",
829
- variant: "outline",
830
- "aria-label": isFullscreen ? "Exit fullscreen" : "Fullscreen",
831
- onClick: () => setIsFullscreen((f) => !f),
832
- children: isFullscreen ? /* @__PURE__ */ jsx(Minimize2, { className: "tw:size-4" }) : /* @__PURE__ */ jsx(Maximize2, { className: "tw:size-4" })
833
- }
834
- )
835
- }
836
- )
837
- ]
838
- }
839
- )
840
- ]
841
- }
842
- );
843
- if (isFullscreen) {
844
- return createPortal(
845
- /* @__PURE__ */ jsx(
846
- "div",
847
- {
848
- role: "presentation",
849
- "data-testid": "zoomable-svg-fullscreen",
850
- className: "tw:fixed tw:inset-0 tw:z-[1060] tw:bg-muted tw:p-4 tailwindcss-preflight",
851
- onClick: stopPropagation,
852
- children: diagramContent
853
- }
854
- ),
855
- document.body
856
- );
857
- }
858
- return /* @__PURE__ */ jsx(
859
- "div",
860
- {
861
- className: cn(
862
- "tw:overflow-hidden tw:rounded-md tw:border tw:border-border tw:bg-muted",
863
- className
864
- ),
865
- children: diagramContent
866
- }
867
- );
868
- };
869
- var HEIGHT_CLASS_NAME = {
870
- xxs: "tw:h-3 tw:rounded",
871
- xs: "tw:h-4 tw:rounded",
872
- sm: "tw:h-5 tw:rounded",
873
- md: "tw:h-6 tw:rounded-md",
874
- lg: "tw:h-8 tw:rounded-lg",
875
- xl: "tw:h-10 tw:rounded-lg",
876
- "2xl": "tw:h-12 tw:rounded-lg"
877
- };
878
- var ANIMATION_CLASS_NAME = cn(
879
- // base styles
880
- "tw:relative",
881
- "tw:overflow-hidden",
882
- "tw:pointer-events-none",
883
- "tw:bg-skeleton",
884
- // before
885
- 'tw:before:content-[""]',
886
- "tw:before:opacity-100",
887
- "tw:before:absolute",
888
- "tw:before:inset-0",
889
- "tw:before:-translate-x-full",
890
- "tw:before:animate-[shimmer_2s_infinite]",
891
- "tw:before:bg-gradient-to-r",
892
- "tw:before:from-transparent",
893
- "tw:before:to-transparent",
894
- "tw:before:via-white/40"
895
- );
896
- var Skeleton = ({ height = "md", className, count = 1 }) => {
897
- const prefixId = useId();
898
- const keys = Array.from({ length: count }, (_, i) => `${prefixId}-${i}`);
899
- return /* @__PURE__ */ jsx(Fragment, { children: keys.map((key) => /* @__PURE__ */ jsx(
900
- "div",
901
- {
902
- "data-skeleton": "true",
903
- className: cn(HEIGHT_CLASS_NAME[height], ANIMATION_CLASS_NAME, className)
904
- },
905
- key
906
- )) });
907
- };
908
- var DiagramSkeleton = () => /* @__PURE__ */ jsx("div", { className: "tw:my-3 tw:overflow-hidden tw:rounded-md tw:border tw:border-neutral-150 tw:bg-neutral-50 tw:p-6", children: /* @__PURE__ */ jsx(Skeleton, { className: "tw:h-40" }) });
909
-
910
- // src/blocks/MermaidDiagram/svgTransforms.ts
911
- var HTML_TAG = /<[^>]+>/g;
912
- var FOREIGN_OBJECT = /(<foreignObject\b[^>]*>)([\s\S]*?)(<\/foreignObject>)/g;
913
- var ROOT_SVG_TAG = /^(\s*<svg\b)([^>]*)(>)/i;
914
- var flattenForeignObjectLabels = (svg) => svg.replace(FOREIGN_OBJECT, (_match, open, inner, close) => {
915
- const text = inner.replace(HTML_TAG, " ").replace(/\s+/g, " ").trim();
916
- return `${open}${text}${close}`;
917
- });
918
- var STYLE_ATTR = /\s+style="([^"]*)"/i;
919
- var makeResponsive = (svgString) => {
920
- const viewBoxMatch = svgString.match(/viewBox="[^"]*\s([\d.]+)\s[\d.]+"/);
921
- const vbWidth = viewBoxMatch ? Math.round(Number(viewBoxMatch[1])) : void 0;
922
- return svgString.replace(ROOT_SVG_TAG, (_match, open, attrs, close) => {
923
- const existingStyle = attrs.match(STYLE_ATTR)?.[1] ?? "";
924
- const styleDecls = existingStyle.replace(/max-width:\s*[^;"]*;?\s*/gi, "").replace(/\s+/g, " ").trim().replace(/;$/, "");
925
- let nextAttrs = attrs.replace(/\s+width="[^"]*"/i, "").replace(/\s+height="[^"]*"/i, "").replace(STYLE_ATTR, "");
926
- nextAttrs += ' width="100%"';
927
- const styleParts = [styleDecls, vbWidth ? `max-width: ${vbWidth}px` : ""].filter(Boolean).join("; ");
928
- if (styleParts) nextAttrs += ` style="${styleParts}"`;
929
- return `${open}${nextAttrs}${close}`;
930
- });
931
- };
932
- var PRIMARY_FALLBACK_CHANNELS = "31 143 255";
933
- var resolvePrimary = () => {
934
- const channels = typeof document === "undefined" ? PRIMARY_FALLBACK_CHANNELS : getComputedStyle(document.documentElement).getPropertyValue("--primary").trim() || PRIMARY_FALLBACK_CHANNELS;
935
- return `rgb(${channels})`;
936
- };
937
- var mermaidPromise = null;
938
- var registerLucideIconPack = (m) => {
939
- m.registerIconPacks([
940
- {
941
- name: "lucide",
942
- loader: () => import('@iconify-json/lucide/icons.json').then((mod) => mod.default)
943
- }
944
- ]);
945
- };
946
- var getMermaid = () => {
947
- if (!mermaidPromise) {
948
- mermaidPromise = import('mermaid').then((m) => {
949
- registerLucideIconPack(m.default);
950
- m.default.initialize({
951
- startOnLoad: false,
952
- securityLevel: "strict",
953
- theme: "base",
954
- themeVariables: {
955
- primaryColor: colors.blue[100],
956
- primaryTextColor: colors.neutral[800],
957
- primaryBorderColor: colors.blue[700],
958
- secondaryColor: colors.white,
959
- secondaryTextColor: colors.neutral[800],
960
- secondaryBorderColor: colors.neutral[150],
961
- tertiaryColor: colors.warning[100],
962
- tertiaryTextColor: colors.neutral[800],
963
- tertiaryBorderColor: colors.warning[500],
964
- lineColor: colors.neutral[300],
965
- textColor: colors.neutral[800],
966
- mainBkg: colors.blue[100],
967
- nodeBorder: colors.blue[700],
968
- clusterBkg: colors.white,
969
- clusterBorder: colors.neutral[150],
970
- titleColor: colors.neutral[800],
971
- edgeLabelBackground: colors.white,
972
- nodeTextColor: colors.neutral[800],
973
- actorBorder: colors.blue[700],
974
- actorBkg: colors.blue[100],
975
- actorTextColor: colors.neutral[800],
976
- actorLineColor: colors.neutral[300],
977
- signalColor: colors.neutral[800],
978
- signalTextColor: colors.neutral[800],
979
- labelBoxBkgColor: colors.blue[100],
980
- labelBoxBorderColor: colors.blue[700],
981
- labelTextColor: colors.neutral[800],
982
- loopTextColor: colors.neutral[800],
983
- noteBorderColor: colors.warning[500],
984
- noteBkgColor: colors.warning[100],
985
- noteTextColor: colors.neutral[800],
986
- sectionBkgColor: colors.blue[100],
987
- altSectionBkgColor: colors.white,
988
- sectionBkgColor2: colors.neutral[100],
989
- taskBorderColor: colors.blue[700],
990
- taskBkgColor: colors.blue[100],
991
- taskTextColor: colors.neutral[800],
992
- taskTextDarkColor: colors.neutral[800],
993
- taskTextLightColor: colors.neutral[800],
994
- activeTaskBorderColor: resolvePrimary(),
995
- activeTaskBkgColor: colors.blue[200],
996
- doneTaskBorderColor: colors.green[600],
997
- doneTaskBkgColor: colors.green[100],
998
- critBorderColor: colors.error[500],
999
- critBkgColor: colors.error[100],
1000
- fontFamily: "Inter, system-ui, sans-serif",
1001
- fontSize: "14px"
1002
- }
1003
- });
1004
- return m;
1005
- }).catch((err) => {
1006
- mermaidPromise = null;
1007
- throw err;
1008
- });
1009
- }
1010
- return mermaidPromise;
1011
- };
1012
- var stripFontImports = (svg) => svg.replace(/@import\s+url\([^)]*fonts\.googleapis\.com[^)]*\);?\s*/g, "");
1013
- var hasIconSyntax = (code) => /@\{[^}]*\bicon\s*:/.test(code) || /\b(?:icon|service|group)\b[^\n(]*\(\s*[\w-]+:/.test(code) || /\bfa[bslr]?:fa-/.test(code);
1014
- var tryFastRender = (code) => {
1015
- if (hasIconSyntax(code)) return null;
1016
- try {
1017
- return stripFontImports(
1018
- renderMermaidSVG(code, {
1019
- bg: colors.white,
1020
- fg: colors.neutral[800],
1021
- transparent: true,
1022
- font: "Inter, system-ui, sans-serif"
1023
- })
1024
- );
1025
- } catch (err) {
1026
- console.debug("[MermaidDiagram] fast render unavailable, using async fallback:", err);
1027
- return null;
1028
- }
1029
- };
1030
- var RENDER_DEBOUNCE_MS = 300;
1031
- var svgCache = /* @__PURE__ */ new Map();
1032
- var resolveSyncSvg = (code) => {
1033
- const cached = svgCache.get(code);
1034
- if (cached) return cached;
1035
- const fast = tryFastRender(code);
1036
- if (fast) svgCache.set(code, fast);
1037
- return fast;
1038
- };
1039
- var MermaidDiagram = ({ code, renderActions }) => {
1040
- const id = useId();
1041
- const [svg, setSvg] = useState(() => resolveSyncSvg(code));
1042
- const [renderFailed, setRenderFailed] = useState(false);
1043
- const debounceRef = useRef(null);
1044
- const renderIdRef = useRef(0);
1045
- const [prevCode, setPrevCode] = useState(code);
1046
- if (code !== prevCode) {
1047
- setPrevCode(code);
1048
- setSvg(resolveSyncSvg(code));
1049
- setRenderFailed(false);
1050
- }
1051
- useEffect(() => {
1052
- if (svgCache.has(code)) return;
1053
- const currentRenderId = ++renderIdRef.current;
1054
- if (debounceRef.current) {
1055
- clearTimeout(debounceRef.current);
1056
- }
1057
- debounceRef.current = setTimeout(() => {
1058
- getMermaid().then(async (mermaidModule) => {
1059
- if (renderIdRef.current !== currentRenderId) return;
1060
- const rendererId = `mermaid-${id.replaceAll(":", "")}`;
1061
- const container = document.createElement("div");
1062
- container.style.visibility = "hidden";
1063
- container.style.position = "absolute";
1064
- container.style.top = "-9999px";
1065
- container.style.width = "900px";
1066
- document.body.appendChild(container);
1067
- try {
1068
- const result = await mermaidModule.default.render(rendererId, code, container);
1069
- if (renderIdRef.current === currentRenderId && result) {
1070
- const svgOutput = flattenForeignObjectLabels(result.svg);
1071
- svgCache.set(code, svgOutput);
1072
- setSvg(svgOutput);
1073
- setRenderFailed(false);
1074
- }
1075
- } finally {
1076
- container.remove();
1077
- }
1078
- }).catch((err) => {
1079
- if (renderIdRef.current === currentRenderId) {
1080
- console.error("[MermaidDiagram] fallback failed:", err);
1081
- setSvg(null);
1082
- setRenderFailed(true);
1083
- }
1084
- });
1085
- }, RENDER_DEBOUNCE_MS);
1086
- const timer = debounceRef.current;
1087
- const renderId = renderIdRef;
1088
- return () => {
1089
- renderId.current++;
1090
- if (timer) {
1091
- clearTimeout(timer);
1092
- }
1093
- };
1094
- }, [code, id]);
1095
- const processedSvg = svg ? makeResponsive(svg) : null;
1096
- if (renderFailed) {
1097
- return /* @__PURE__ */ jsx(
1098
- "pre",
1099
- {
1100
- className: cn(
1101
- "tw:my-3 tw:overflow-auto tw:whitespace-pre-wrap tw:break-all",
1102
- "tw:py-3 tw:px-4",
1103
- "tw:bg-neutral-50",
1104
- "tw:rounded-md tw:text-neutral-400",
1105
- "tw:text-sm tw:font-mono"
1106
- ),
1107
- children: /* @__PURE__ */ jsx("code", { children: code })
1108
- }
1109
- );
1110
- }
1111
- if (processedSvg) {
1112
- return /* @__PURE__ */ jsx(
1113
- ZoomableSvg,
1114
- {
1115
- html: processedSvg,
1116
- copyText: `\`\`\`mermaid
1117
- ${code}
1118
- \`\`\``,
1119
- className: "tw:my-3",
1120
- allowForeignObject: true,
1121
- renderActions
1122
- },
1123
- code
1124
- );
1125
- }
1126
- return /* @__PURE__ */ jsx(DiagramSkeleton, {});
1127
- };
1128
-
1129
- export { MermaidDiagram };
1
+ export { MermaidDiagram } from './chunk-MA6RRHDT.js';
2
+ import './chunk-SVBSNSD4.js';
3
+ import './chunk-SFFF2WQP.js';
4
+ import './chunk-PACNBKJV.js';
5
+ import './chunk-IIS7INHF.js';
6
+ import './chunk-FUFMVW7O.js';
7
+ import './chunk-7P6PLZ4B.js';
8
+ import './chunk-IXAYNBOY.js';
9
+ import './chunk-RQVK4IYC.js';
10
+ import './chunk-KR7NXXHC.js';
11
+ import './chunk-SWQFYNYG.js';
12
+ import './chunk-3W27OLK5.js';
13
+ import './chunk-MODE4QIA.js';
14
+ import './chunk-WETKNYZX.js';
15
+ import './chunk-LXLIQ2D6.js';
16
+ import './chunk-G3PMV62Z.js';
1130
17
  //# sourceMappingURL=mermaid.js.map
1131
18
  //# sourceMappingURL=mermaid.js.map