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