@keboola/design 10.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 (504) hide show
  1. package/AGENTS.md +2 -0
  2. package/dist/MermaidDiagram-ZU5KAVRT.js +18 -0
  3. package/dist/{MermaidDiagram-EOKJHQQV.js.map → MermaidDiagram-ZU5KAVRT.js.map} +1 -1
  4. package/dist/charts.d.ts +14 -8
  5. package/dist/charts.js +6 -1
  6. package/dist/charts.js.map +1 -1
  7. package/dist/chunk-2YYJDKSP.js +51 -0
  8. package/dist/chunk-2YYJDKSP.js.map +1 -0
  9. package/dist/chunk-3P5UUCFI.js +385 -0
  10. package/dist/chunk-3P5UUCFI.js.map +1 -0
  11. package/dist/chunk-3QDFDDWZ.js +99 -0
  12. package/dist/chunk-3QDFDDWZ.js.map +1 -0
  13. package/dist/chunk-3W27OLK5.js +15 -0
  14. package/dist/chunk-3W27OLK5.js.map +1 -0
  15. package/dist/chunk-4FIZZONW.js +40 -0
  16. package/dist/chunk-4FIZZONW.js.map +1 -0
  17. package/dist/chunk-4GIAXOJG.js +133 -0
  18. package/dist/chunk-4GIAXOJG.js.map +1 -0
  19. package/dist/chunk-52NDNMK7.js +99 -0
  20. package/dist/chunk-52NDNMK7.js.map +1 -0
  21. package/dist/chunk-576G5OES.js +201 -0
  22. package/dist/chunk-576G5OES.js.map +1 -0
  23. package/dist/chunk-5AIE6SET.js +659 -0
  24. package/dist/chunk-5AIE6SET.js.map +1 -0
  25. package/dist/chunk-5FTNAZRW.js +327 -0
  26. package/dist/chunk-5FTNAZRW.js.map +1 -0
  27. package/dist/chunk-5IG2S7ZY.js +70 -0
  28. package/dist/chunk-5IG2S7ZY.js.map +1 -0
  29. package/dist/chunk-5QCXHNCW.js +404 -0
  30. package/dist/chunk-5QCXHNCW.js.map +1 -0
  31. package/dist/chunk-6DUMGC7Y.js +105 -0
  32. package/dist/chunk-6DUMGC7Y.js.map +1 -0
  33. package/dist/chunk-6J25CVST.js +174 -0
  34. package/dist/chunk-6J25CVST.js.map +1 -0
  35. package/dist/chunk-6NN35XOP.js +120 -0
  36. package/dist/chunk-6NN35XOP.js.map +1 -0
  37. package/dist/chunk-6NZBVA4T.js +24 -0
  38. package/dist/chunk-6NZBVA4T.js.map +1 -0
  39. package/dist/chunk-6W5BHRCL.js +295 -0
  40. package/dist/chunk-6W5BHRCL.js.map +1 -0
  41. package/dist/chunk-72BKRCEG.js +409 -0
  42. package/dist/chunk-72BKRCEG.js.map +1 -0
  43. package/dist/{chunk-Q7NWXLCT.js → chunk-7GTI3PPI.js} +53 -48
  44. package/dist/chunk-7GTI3PPI.js.map +1 -0
  45. package/dist/chunk-7P6PLZ4B.js +74 -0
  46. package/dist/chunk-7P6PLZ4B.js.map +1 -0
  47. package/dist/chunk-7WZWY5IA.js +46 -0
  48. package/dist/chunk-7WZWY5IA.js.map +1 -0
  49. package/dist/chunk-AIYO2632.js +489 -0
  50. package/dist/chunk-AIYO2632.js.map +1 -0
  51. package/dist/chunk-ANFZWPNE.js +112 -0
  52. package/dist/chunk-ANFZWPNE.js.map +1 -0
  53. package/dist/chunk-ANZTVAJU.js +73 -0
  54. package/dist/chunk-ANZTVAJU.js.map +1 -0
  55. package/dist/chunk-BD5BTJKX.js +166 -0
  56. package/dist/chunk-BD5BTJKX.js.map +1 -0
  57. package/dist/chunk-BHGIDSRJ.js +140 -0
  58. package/dist/chunk-BHGIDSRJ.js.map +1 -0
  59. package/dist/chunk-BSQWZITZ.js +507 -0
  60. package/dist/chunk-BSQWZITZ.js.map +1 -0
  61. package/dist/chunk-D3LAIK62.js +23 -0
  62. package/dist/chunk-D3LAIK62.js.map +1 -0
  63. package/dist/chunk-DODCR43C.js +155 -0
  64. package/dist/chunk-DODCR43C.js.map +1 -0
  65. package/dist/chunk-EEK5NGZF.js +40 -0
  66. package/dist/chunk-EEK5NGZF.js.map +1 -0
  67. package/dist/chunk-ENRG7TXA.js +11 -0
  68. package/dist/chunk-ENRG7TXA.js.map +1 -0
  69. package/dist/chunk-EQRMGIGY.js +239 -0
  70. package/dist/chunk-EQRMGIGY.js.map +1 -0
  71. package/dist/{chunk-XV3UUOYF.js → chunk-ERAHK5YQ.js} +9 -359
  72. package/dist/chunk-ERAHK5YQ.js.map +1 -0
  73. package/dist/chunk-F3FOFY2P.js +124 -0
  74. package/dist/chunk-F3FOFY2P.js.map +1 -0
  75. package/dist/chunk-F6BTWFOC.js +507 -0
  76. package/dist/chunk-F6BTWFOC.js.map +1 -0
  77. package/dist/chunk-F6J6NNAL.js +34 -0
  78. package/dist/chunk-F6J6NNAL.js.map +1 -0
  79. package/dist/chunk-FCHJ7D5O.js +59 -0
  80. package/dist/chunk-FCHJ7D5O.js.map +1 -0
  81. package/dist/chunk-FFJTEQCC.js +80 -0
  82. package/dist/chunk-FFJTEQCC.js.map +1 -0
  83. package/dist/chunk-FUFMVW7O.js +64 -0
  84. package/dist/chunk-FUFMVW7O.js.map +1 -0
  85. package/dist/chunk-FVPGQ6UE.js +25 -0
  86. package/dist/chunk-FVPGQ6UE.js.map +1 -0
  87. package/dist/{chunk-JP7PNHLH.js → chunk-G3PMV62Z.js} +3 -10
  88. package/dist/chunk-G3PMV62Z.js.map +1 -0
  89. package/dist/chunk-GACFOW3E.js +51 -0
  90. package/dist/chunk-GACFOW3E.js.map +1 -0
  91. package/dist/chunk-GDT6HQMK.js +42 -0
  92. package/dist/chunk-GDT6HQMK.js.map +1 -0
  93. package/dist/chunk-HLGU22C6.js +2589 -0
  94. package/dist/chunk-HLGU22C6.js.map +1 -0
  95. package/dist/chunk-HPMYYGP7.js +134 -0
  96. package/dist/chunk-HPMYYGP7.js.map +1 -0
  97. package/dist/chunk-I2UCOD45.js +197 -0
  98. package/dist/chunk-I2UCOD45.js.map +1 -0
  99. package/dist/chunk-IEGDZUVM.js +75 -0
  100. package/dist/chunk-IEGDZUVM.js.map +1 -0
  101. package/dist/chunk-IIS7INHF.js +47 -0
  102. package/dist/chunk-IIS7INHF.js.map +1 -0
  103. package/dist/chunk-ITELSEFU.js +256 -0
  104. package/dist/chunk-ITELSEFU.js.map +1 -0
  105. package/dist/{chunk-CTCFYWJC.js → chunk-IXAYNBOY.js} +6 -6
  106. package/dist/{chunk-CTCFYWJC.js.map → chunk-IXAYNBOY.js.map} +1 -1
  107. package/dist/chunk-JUW2ETEI.js +191 -0
  108. package/dist/chunk-JUW2ETEI.js.map +1 -0
  109. package/dist/chunk-K65C7CVE.js +127 -0
  110. package/dist/chunk-K65C7CVE.js.map +1 -0
  111. package/dist/chunk-KDI64MCY.js +189 -0
  112. package/dist/chunk-KDI64MCY.js.map +1 -0
  113. package/dist/chunk-KN4ASMH5.js +160 -0
  114. package/dist/chunk-KN4ASMH5.js.map +1 -0
  115. package/dist/chunk-KQW7QNTU.js +1549 -0
  116. package/dist/chunk-KQW7QNTU.js.map +1 -0
  117. package/dist/chunk-KR7NXXHC.js +66 -0
  118. package/dist/chunk-KR7NXXHC.js.map +1 -0
  119. package/dist/chunk-KRZKIVMA.js +142 -0
  120. package/dist/chunk-KRZKIVMA.js.map +1 -0
  121. package/dist/{chunk-C3L3TBBT.js → chunk-KTTLLKGQ.js} +6 -63
  122. package/dist/chunk-KTTLLKGQ.js.map +1 -0
  123. package/dist/chunk-KWKSHPDP.js +234 -0
  124. package/dist/chunk-KWKSHPDP.js.map +1 -0
  125. package/dist/chunk-KZVC7OYG.js +57 -0
  126. package/dist/chunk-KZVC7OYG.js.map +1 -0
  127. package/dist/chunk-L5DHUN2V.js +204 -0
  128. package/dist/chunk-L5DHUN2V.js.map +1 -0
  129. package/dist/chunk-LCTGEH57.js +1376 -0
  130. package/dist/chunk-LCTGEH57.js.map +1 -0
  131. package/dist/chunk-LXLIQ2D6.js +12 -0
  132. package/dist/chunk-LXLIQ2D6.js.map +1 -0
  133. package/dist/chunk-M4CTURKX.js +84 -0
  134. package/dist/chunk-M4CTURKX.js.map +1 -0
  135. package/dist/chunk-M6LTUPVP.js +301 -0
  136. package/dist/chunk-M6LTUPVP.js.map +1 -0
  137. package/dist/chunk-MA6RRHDT.js +291 -0
  138. package/dist/chunk-MA6RRHDT.js.map +1 -0
  139. package/dist/chunk-MODE4QIA.js +6 -0
  140. package/dist/chunk-MODE4QIA.js.map +1 -0
  141. package/dist/chunk-MVILMVGG.js +118 -0
  142. package/dist/chunk-MVILMVGG.js.map +1 -0
  143. package/dist/chunk-MWS4VCLV.js +17 -0
  144. package/dist/chunk-MWS4VCLV.js.map +1 -0
  145. package/dist/chunk-NEUX74SO.js +315 -0
  146. package/dist/chunk-NEUX74SO.js.map +1 -0
  147. package/dist/chunk-NFHKYBRD.js +156 -0
  148. package/dist/chunk-NFHKYBRD.js.map +1 -0
  149. package/dist/chunk-NHJNNXD3.js +89 -0
  150. package/dist/chunk-NHJNNXD3.js.map +1 -0
  151. package/dist/chunk-O2BF3HZL.js +33 -0
  152. package/dist/chunk-O2BF3HZL.js.map +1 -0
  153. package/dist/chunk-OANXCZYD.js +212 -0
  154. package/dist/chunk-OANXCZYD.js.map +1 -0
  155. package/dist/chunk-ODJF7YIP.js +230 -0
  156. package/dist/chunk-ODJF7YIP.js.map +1 -0
  157. package/dist/chunk-ON4BJTHI.js +101 -0
  158. package/dist/chunk-ON4BJTHI.js.map +1 -0
  159. package/dist/{chunk-VMFSRV5H.js → chunk-OTL5WXIJ.js} +2 -2
  160. package/dist/{chunk-VMFSRV5H.js.map → chunk-OTL5WXIJ.js.map} +1 -1
  161. package/dist/{chunk-VPPM7UUQ.js → chunk-PACNBKJV.js} +3 -3
  162. package/dist/{chunk-VPPM7UUQ.js.map → chunk-PACNBKJV.js.map} +1 -1
  163. package/dist/{chunk-ESBL3IPF.js → chunk-PROCA7K7.js} +2 -2
  164. package/dist/{chunk-ESBL3IPF.js.map → chunk-PROCA7K7.js.map} +1 -1
  165. package/dist/chunk-QGMIPA67.js +85 -0
  166. package/dist/chunk-QGMIPA67.js.map +1 -0
  167. package/dist/chunk-QQA37LFB.js +190 -0
  168. package/dist/chunk-QQA37LFB.js.map +1 -0
  169. package/dist/chunk-QZAWRSEB.js +61 -0
  170. package/dist/chunk-QZAWRSEB.js.map +1 -0
  171. package/dist/chunk-R74KGWNS.js +699 -0
  172. package/dist/chunk-R74KGWNS.js.map +1 -0
  173. package/dist/chunk-RFDLHMKL.js +110 -0
  174. package/dist/chunk-RFDLHMKL.js.map +1 -0
  175. package/dist/chunk-RL64HN7S.js +40 -0
  176. package/dist/chunk-RL64HN7S.js.map +1 -0
  177. package/dist/chunk-RMRQKPL7.js +115 -0
  178. package/dist/chunk-RMRQKPL7.js.map +1 -0
  179. package/dist/{chunk-BOHNXTMM.js → chunk-RQVK4IYC.js} +3 -3
  180. package/dist/{chunk-BOHNXTMM.js.map → chunk-RQVK4IYC.js.map} +1 -1
  181. package/dist/chunk-RTW56PWZ.js +59 -0
  182. package/dist/chunk-RTW56PWZ.js.map +1 -0
  183. package/dist/chunk-RUTPQNLR.js +266 -0
  184. package/dist/chunk-RUTPQNLR.js.map +1 -0
  185. package/dist/chunk-S6TAF63G.js +25 -0
  186. package/dist/chunk-S6TAF63G.js.map +1 -0
  187. package/dist/chunk-SBGAUGXY.js +224 -0
  188. package/dist/chunk-SBGAUGXY.js.map +1 -0
  189. package/dist/chunk-SC275NHZ.js +407 -0
  190. package/dist/chunk-SC275NHZ.js.map +1 -0
  191. package/dist/chunk-SCQPU4UE.js +97 -0
  192. package/dist/chunk-SCQPU4UE.js.map +1 -0
  193. package/dist/chunk-SFFF2WQP.js +8 -0
  194. package/dist/chunk-SFFF2WQP.js.map +1 -0
  195. package/dist/chunk-SJYMHZKA.js +36 -0
  196. package/dist/chunk-SJYMHZKA.js.map +1 -0
  197. package/dist/chunk-SLCCUJVN.js +125 -0
  198. package/dist/chunk-SLCCUJVN.js.map +1 -0
  199. package/dist/{chunk-IJTHFNNJ.js → chunk-SVBSNSD4.js} +10 -12
  200. package/dist/chunk-SVBSNSD4.js.map +1 -0
  201. package/dist/chunk-SVPLTL35.js +62 -0
  202. package/dist/chunk-SVPLTL35.js.map +1 -0
  203. package/dist/{chunk-63NSN2VL.js → chunk-SWQFYNYG.js} +115 -51
  204. package/dist/chunk-SWQFYNYG.js.map +1 -0
  205. package/dist/chunk-THHB4EWS.js +72 -0
  206. package/dist/chunk-THHB4EWS.js.map +1 -0
  207. package/dist/chunk-TUCDD33E.js +246 -0
  208. package/dist/chunk-TUCDD33E.js.map +1 -0
  209. package/dist/chunk-TV4WAP2R.js +14 -0
  210. package/dist/chunk-TV4WAP2R.js.map +1 -0
  211. package/dist/chunk-U3A6YBTZ.js +134 -0
  212. package/dist/chunk-U3A6YBTZ.js.map +1 -0
  213. package/dist/chunk-UGT6DKWM.js +95 -0
  214. package/dist/chunk-UGT6DKWM.js.map +1 -0
  215. package/dist/chunk-VSERHUWD.js +212 -0
  216. package/dist/chunk-VSERHUWD.js.map +1 -0
  217. package/dist/chunk-VYG7BDXC.js +49 -0
  218. package/dist/chunk-VYG7BDXC.js.map +1 -0
  219. package/dist/chunk-WETKNYZX.js +52 -0
  220. package/dist/chunk-WETKNYZX.js.map +1 -0
  221. package/dist/chunk-WGG4AML3.js +216 -0
  222. package/dist/chunk-WGG4AML3.js.map +1 -0
  223. package/dist/chunk-WKAUEL6I.js +30 -0
  224. package/dist/chunk-WKAUEL6I.js.map +1 -0
  225. package/dist/chunk-WPOLA5CG.js +81 -0
  226. package/dist/chunk-WPOLA5CG.js.map +1 -0
  227. package/dist/chunk-WPVETCGJ.js +254 -0
  228. package/dist/chunk-WPVETCGJ.js.map +1 -0
  229. package/dist/chunk-WTSM3A7E.js +13 -0
  230. package/dist/chunk-WTSM3A7E.js.map +1 -0
  231. package/dist/chunk-WU3F2K3T.js +148 -0
  232. package/dist/chunk-WU3F2K3T.js.map +1 -0
  233. package/dist/chunk-WZZK2DTZ.js +39 -0
  234. package/dist/chunk-WZZK2DTZ.js.map +1 -0
  235. package/dist/chunk-X4IHLKRD.js +42 -0
  236. package/dist/chunk-X4IHLKRD.js.map +1 -0
  237. package/dist/chunk-XAHEXZJC.js +80 -0
  238. package/dist/chunk-XAHEXZJC.js.map +1 -0
  239. package/dist/chunk-XCYGJDUX.js +31 -0
  240. package/dist/chunk-XCYGJDUX.js.map +1 -0
  241. package/dist/chunk-Y4W3JORC.js +104 -0
  242. package/dist/chunk-Y4W3JORC.js.map +1 -0
  243. package/dist/{chunk-7PUUHEJQ.js → chunk-YFZJ3ZLG.js} +26 -42
  244. package/dist/chunk-YFZJ3ZLG.js.map +1 -0
  245. package/dist/{chunk-6FPEI4EM.js → chunk-YI3WLXEN.js} +27 -2323
  246. package/dist/chunk-YI3WLXEN.js.map +1 -0
  247. package/dist/chunk-ZBKFSPD3.js +29 -0
  248. package/dist/chunk-ZBKFSPD3.js.map +1 -0
  249. package/dist/chunk-ZOERRQ6A.js +79 -0
  250. package/dist/chunk-ZOERRQ6A.js.map +1 -0
  251. package/dist/chunk-ZSTGUKHU.js +10 -0
  252. package/dist/chunk-ZSTGUKHU.js.map +1 -0
  253. package/dist/chunk-ZUEHDL27.js +65 -0
  254. package/dist/chunk-ZUEHDL27.js.map +1 -0
  255. package/dist/editors.js +22 -14
  256. package/dist/editors.js.map +1 -1
  257. package/dist/icons.js +7 -2
  258. package/dist/index.d.ts +8 -18
  259. package/dist/index.js +121 -15800
  260. package/dist/index.js.map +1 -1
  261. package/dist/internal/blocks/AIKit.js +30 -0
  262. package/dist/internal/blocks/AIKit.js.map +1 -0
  263. package/dist/internal/blocks/AppShell.js +11 -0
  264. package/dist/internal/blocks/AppShell.js.map +1 -0
  265. package/dist/internal/blocks/AutoSaveTextarea.js +14 -0
  266. package/dist/internal/blocks/AutoSaveTextarea.js.map +1 -0
  267. package/dist/internal/blocks/BrandEditor.js +23 -0
  268. package/dist/internal/blocks/BrandEditor.js.map +1 -0
  269. package/dist/internal/blocks/ChartPanel.js +10 -0
  270. package/dist/internal/blocks/ChartPanel.js.map +1 -0
  271. package/dist/internal/blocks/ClipboardButton.js +12 -0
  272. package/dist/internal/blocks/ClipboardButton.js.map +1 -0
  273. package/dist/internal/blocks/ColorInput.js +13 -0
  274. package/dist/internal/blocks/ColorInput.js.map +1 -0
  275. package/dist/internal/blocks/ColorModeSwitch.js +13 -0
  276. package/dist/internal/blocks/ColorModeSwitch.js.map +1 -0
  277. package/dist/internal/blocks/Command.js +15 -0
  278. package/dist/internal/blocks/Command.js.map +1 -0
  279. package/dist/internal/blocks/CopyField.js +11 -0
  280. package/dist/internal/blocks/CopyField.js.map +1 -0
  281. package/dist/internal/blocks/DashboardHero.js +9 -0
  282. package/dist/internal/blocks/DashboardHero.js.map +1 -0
  283. package/dist/internal/blocks/DateInput.js +16 -0
  284. package/dist/internal/blocks/DateInput.js.map +1 -0
  285. package/dist/internal/blocks/DateRangeInput.js +16 -0
  286. package/dist/internal/blocks/DateRangeInput.js.map +1 -0
  287. package/dist/internal/blocks/EmptyConfigurationActionCard.js +10 -0
  288. package/dist/internal/blocks/EmptyConfigurationActionCard.js.map +1 -0
  289. package/dist/internal/blocks/EmptyState.js +4 -0
  290. package/dist/internal/blocks/EmptyState.js.map +1 -0
  291. package/dist/internal/blocks/ErrorState.js +5 -0
  292. package/dist/internal/blocks/ErrorState.js.map +1 -0
  293. package/dist/internal/blocks/ExportMenu.js +13 -0
  294. package/dist/internal/blocks/ExportMenu.js.map +1 -0
  295. package/dist/internal/blocks/Form.js +29 -0
  296. package/dist/internal/blocks/Form.js.map +1 -0
  297. package/dist/internal/blocks/FormGroup.js +18 -0
  298. package/dist/internal/blocks/FormGroup.js.map +1 -0
  299. package/dist/internal/blocks/GoogleButton.js +10 -0
  300. package/dist/internal/blocks/GoogleButton.js.map +1 -0
  301. package/dist/internal/blocks/MicrosoftButton.js +10 -0
  302. package/dist/internal/blocks/MicrosoftButton.js.map +1 -0
  303. package/dist/internal/blocks/MultiActionButtonGroup.js +12 -0
  304. package/dist/internal/blocks/MultiActionButtonGroup.js.map +1 -0
  305. package/dist/internal/blocks/MultiCombobox.js +14 -0
  306. package/dist/internal/blocks/MultiCombobox.js.map +1 -0
  307. package/dist/internal/blocks/NumberInput.js +12 -0
  308. package/dist/internal/blocks/NumberInput.js.map +1 -0
  309. package/dist/internal/blocks/OtpInput.js +10 -0
  310. package/dist/internal/blocks/OtpInput.js.map +1 -0
  311. package/dist/internal/blocks/PageHeader.js +9 -0
  312. package/dist/internal/blocks/PageHeader.js.map +1 -0
  313. package/dist/internal/blocks/PageLayout.js +9 -0
  314. package/dist/internal/blocks/PageLayout.js.map +1 -0
  315. package/dist/internal/blocks/PageToolbar.js +13 -0
  316. package/dist/internal/blocks/PageToolbar.js.map +1 -0
  317. package/dist/internal/blocks/PasswordInput.js +13 -0
  318. package/dist/internal/blocks/PasswordInput.js.map +1 -0
  319. package/dist/internal/blocks/SearchInput.js +12 -0
  320. package/dist/internal/blocks/SearchInput.js.map +1 -0
  321. package/dist/internal/blocks/SearchInputWithNavigation.js +16 -0
  322. package/dist/internal/blocks/SearchInputWithNavigation.js.map +1 -0
  323. package/dist/internal/blocks/SectionNav.js +15 -0
  324. package/dist/internal/blocks/SectionNav.js.map +1 -0
  325. package/dist/internal/blocks/SplitButton.js +14 -0
  326. package/dist/internal/blocks/SplitButton.js.map +1 -0
  327. package/dist/internal/blocks/StatCard.js +10 -0
  328. package/dist/internal/blocks/StatCard.js.map +1 -0
  329. package/dist/internal/blocks/TextInput.js +13 -0
  330. package/dist/internal/blocks/TextInput.js.map +1 -0
  331. package/dist/internal/blocks/Textarea.js +13 -0
  332. package/dist/internal/blocks/Textarea.js.map +1 -0
  333. package/dist/internal/blocks/TimeInput.js +17 -0
  334. package/dist/internal/blocks/TimeInput.js.map +1 -0
  335. package/dist/internal/components/Alert.js +11 -0
  336. package/dist/internal/components/Alert.js.map +1 -0
  337. package/dist/internal/components/AlertModal.js +11 -0
  338. package/dist/internal/components/AlertModal.js.map +1 -0
  339. package/dist/internal/components/Avatar.js +9 -0
  340. package/dist/internal/components/Avatar.js.map +1 -0
  341. package/dist/internal/components/Badge.js +9 -0
  342. package/dist/internal/components/Badge.js.map +1 -0
  343. package/dist/internal/components/BrandLogo.js +11 -0
  344. package/dist/internal/components/BrandLogo.js.map +1 -0
  345. package/dist/internal/components/Breadcrumb.js +14 -0
  346. package/dist/internal/components/Breadcrumb.js.map +1 -0
  347. package/dist/internal/components/Button.js +10 -0
  348. package/dist/internal/components/Button.js.map +1 -0
  349. package/dist/internal/components/ButtonGroup.js +9 -0
  350. package/dist/internal/components/ButtonGroup.js.map +1 -0
  351. package/dist/internal/components/Calendar.js +9 -0
  352. package/dist/internal/components/Calendar.js.map +1 -0
  353. package/dist/internal/components/Card.js +9 -0
  354. package/dist/internal/components/Card.js.map +1 -0
  355. package/dist/internal/components/Checkbox.js +11 -0
  356. package/dist/internal/components/Checkbox.js.map +1 -0
  357. package/dist/internal/components/Clipboard.js +9 -0
  358. package/dist/internal/components/Clipboard.js.map +1 -0
  359. package/dist/internal/components/Collapsible.js +9 -0
  360. package/dist/internal/components/Collapsible.js.map +1 -0
  361. package/dist/internal/components/CollapsiblePanel.js +11 -0
  362. package/dist/internal/components/CollapsiblePanel.js.map +1 -0
  363. package/dist/internal/components/Combobox.js +13 -0
  364. package/dist/internal/components/Combobox.js.map +1 -0
  365. package/dist/internal/components/DatePicker.js +11 -0
  366. package/dist/internal/components/DatePicker.js.map +1 -0
  367. package/dist/internal/components/DateRangePicker.js +17 -0
  368. package/dist/internal/components/DateRangePicker.js.map +1 -0
  369. package/dist/internal/components/DiffView.js +9 -0
  370. package/dist/internal/components/DiffView.js.map +1 -0
  371. package/dist/internal/components/DotsLoader.js +5 -0
  372. package/dist/internal/components/DotsLoader.js.map +1 -0
  373. package/dist/internal/components/DropdownMenu.js +11 -0
  374. package/dist/internal/components/DropdownMenu.js.map +1 -0
  375. package/dist/internal/components/EmptySearchContent.js +4 -0
  376. package/dist/internal/components/EmptySearchContent.js.map +1 -0
  377. package/dist/internal/components/FileUpload.js +11 -0
  378. package/dist/internal/components/FileUpload.js.map +1 -0
  379. package/dist/internal/components/FullScreenModal.js +12 -0
  380. package/dist/internal/components/FullScreenModal.js.map +1 -0
  381. package/dist/internal/components/HelpBlock.js +4 -0
  382. package/dist/internal/components/HelpBlock.js.map +1 -0
  383. package/dist/internal/components/HoverCard.js +9 -0
  384. package/dist/internal/components/HoverCard.js.map +1 -0
  385. package/dist/internal/components/InputGroup.js +11 -0
  386. package/dist/internal/components/InputGroup.js.map +1 -0
  387. package/dist/internal/components/Kbd.js +9 -0
  388. package/dist/internal/components/Kbd.js.map +1 -0
  389. package/dist/internal/components/Label.js +9 -0
  390. package/dist/internal/components/Label.js.map +1 -0
  391. package/dist/internal/components/Link.js +9 -0
  392. package/dist/internal/components/Link.js.map +1 -0
  393. package/dist/internal/components/MarkedText.js +5 -0
  394. package/dist/internal/components/MarkedText.js.map +1 -0
  395. package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js +10 -0
  396. package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js.map +1 -0
  397. package/dist/internal/components/MergeEditor/PaneHeader.js +4 -0
  398. package/dist/internal/components/MergeEditor/PaneHeader.js.map +1 -0
  399. package/dist/internal/components/MergeEditor/constants.js +4 -0
  400. package/dist/internal/components/MergeEditor/constants.js.map +1 -0
  401. package/dist/internal/components/MergeEditor/useMergeDiff.js +5 -0
  402. package/dist/internal/components/MergeEditor/useMergeDiff.js.map +1 -0
  403. package/dist/internal/components/Modal.js +13 -0
  404. package/dist/internal/components/Modal.js.map +1 -0
  405. package/dist/internal/components/Navbar.js +14 -0
  406. package/dist/internal/components/Navbar.js.map +1 -0
  407. package/dist/internal/components/Pagination.js +11 -0
  408. package/dist/internal/components/Pagination.js.map +1 -0
  409. package/dist/internal/components/PanelWithDetails.js +11 -0
  410. package/dist/internal/components/PanelWithDetails.js.map +1 -0
  411. package/dist/internal/components/Popconfirm.js +12 -0
  412. package/dist/internal/components/Popconfirm.js.map +1 -0
  413. package/dist/internal/components/Popover.js +9 -0
  414. package/dist/internal/components/Popover.js.map +1 -0
  415. package/dist/internal/components/Progress.js +9 -0
  416. package/dist/internal/components/Progress.js.map +1 -0
  417. package/dist/internal/components/RadioGroup.js +12 -0
  418. package/dist/internal/components/RadioGroup.js.map +1 -0
  419. package/dist/internal/components/Resizable.js +9 -0
  420. package/dist/internal/components/Resizable.js.map +1 -0
  421. package/dist/internal/components/ScrollArea.js +9 -0
  422. package/dist/internal/components/ScrollArea.js.map +1 -0
  423. package/dist/internal/components/Search.js +10 -0
  424. package/dist/internal/components/Search.js.map +1 -0
  425. package/dist/internal/components/Select.js +12 -0
  426. package/dist/internal/components/Select.js.map +1 -0
  427. package/dist/internal/components/Separator.js +9 -0
  428. package/dist/internal/components/Separator.js.map +1 -0
  429. package/dist/internal/components/Sheet.js +12 -0
  430. package/dist/internal/components/Sheet.js.map +1 -0
  431. package/dist/internal/components/Sidebar.js +20 -0
  432. package/dist/internal/components/Sidebar.js.map +1 -0
  433. package/dist/internal/components/Skeleton/Skeleton.js +9 -0
  434. package/dist/internal/components/Skeleton/Skeleton.js.map +1 -0
  435. package/dist/internal/components/Skeleton/SkeletonList.js +10 -0
  436. package/dist/internal/components/Skeleton/SkeletonList.js.map +1 -0
  437. package/dist/internal/components/Slider.js +11 -0
  438. package/dist/internal/components/Slider.js.map +1 -0
  439. package/dist/internal/components/SpotlightBackdrop.js +9 -0
  440. package/dist/internal/components/SpotlightBackdrop.js.map +1 -0
  441. package/dist/internal/components/Stepper.js +10 -0
  442. package/dist/internal/components/Stepper.js.map +1 -0
  443. package/dist/internal/components/Switch.js +10 -0
  444. package/dist/internal/components/Switch.js.map +1 -0
  445. package/dist/internal/components/Table.js +10 -0
  446. package/dist/internal/components/Table.js.map +1 -0
  447. package/dist/internal/components/Tabs.js +12 -0
  448. package/dist/internal/components/Tabs.js.map +1 -0
  449. package/dist/internal/components/ThemeProvider.js +10 -0
  450. package/dist/internal/components/ThemeProvider.js.map +1 -0
  451. package/dist/internal/components/TimePicker.js +12 -0
  452. package/dist/internal/components/TimePicker.js.map +1 -0
  453. package/dist/internal/components/Timeline.js +10 -0
  454. package/dist/internal/components/Timeline.js.map +1 -0
  455. package/dist/internal/components/Toast.js +11 -0
  456. package/dist/internal/components/Toast.js.map +1 -0
  457. package/dist/internal/components/Toggle.js +9 -0
  458. package/dist/internal/components/Toggle.js.map +1 -0
  459. package/dist/internal/components/ToggleGroup.js +9 -0
  460. package/dist/internal/components/ToggleGroup.js.map +1 -0
  461. package/dist/internal/components/Tooltip.js +8 -0
  462. package/dist/internal/components/Tooltip.js.map +1 -0
  463. package/dist/internal/components/Truncated.js +9 -0
  464. package/dist/internal/components/Truncated.js.map +1 -0
  465. package/dist/internal/components/Workbench.js +11 -0
  466. package/dist/internal/components/Workbench.js.map +1 -0
  467. package/dist/internal/components/ZoomableSvg.js +13 -0
  468. package/dist/internal/components/ZoomableSvg.js.map +1 -0
  469. package/dist/internal/hooks/useAutosizeInput.js +4 -0
  470. package/dist/internal/hooks/useAutosizeInput.js.map +1 -0
  471. package/dist/internal/hooks/useScrollbarPosition.js +5 -0
  472. package/dist/internal/hooks/useScrollbarPosition.js.map +1 -0
  473. package/dist/internal/hooks/useStableCallback.js +4 -0
  474. package/dist/internal/hooks/useStableCallback.js.map +1 -0
  475. package/dist/internal/utils/mergeRefs.js +4 -0
  476. package/dist/internal/utils/mergeRefs.js.map +1 -0
  477. package/dist/internal/utils.js +8 -0
  478. package/dist/internal/utils.js.map +1 -0
  479. package/dist/markdown-editor.js +23 -9
  480. package/dist/markdown-editor.js.map +1 -1
  481. package/dist/mermaid.js +16 -8
  482. package/dist/rjsf.js +102 -29
  483. package/dist/rjsf.js.map +1 -1
  484. package/dist/styles.css +1 -1
  485. package/dist/testing.js +8 -3
  486. package/dist/testing.js.map +1 -1
  487. package/package.json +9 -8
  488. package/src/styles.css +35 -7
  489. package/src/theme.css +64 -0
  490. package/dist/MermaidDiagram-EOKJHQQV.js +0 -10
  491. package/dist/chunk-63NSN2VL.js.map +0 -1
  492. package/dist/chunk-6FPEI4EM.js.map +0 -1
  493. package/dist/chunk-7PUUHEJQ.js.map +0 -1
  494. package/dist/chunk-C3L3TBBT.js.map +0 -1
  495. package/dist/chunk-IJTHFNNJ.js.map +0 -1
  496. package/dist/chunk-JP7PNHLH.js.map +0 -1
  497. package/dist/chunk-KPNAW5MU.js +0 -229
  498. package/dist/chunk-KPNAW5MU.js.map +0 -1
  499. package/dist/chunk-L37JJ6MR.js +0 -152
  500. package/dist/chunk-L37JJ6MR.js.map +0 -1
  501. package/dist/chunk-Q7NWXLCT.js.map +0 -1
  502. package/dist/chunk-SYIEF644.js +0 -1016
  503. package/dist/chunk-SYIEF644.js.map +0 -1
  504. package/dist/chunk-XV3UUOYF.js.map +0 -1
@@ -0,0 +1,140 @@
1
+ import { ChevronsUpDown, ChevronUp, ChevronDown } from './chunk-RQVK4IYC.js';
2
+ import { cn } from './chunk-LXLIQ2D6.js';
3
+ import { jsxs, jsx } from 'react/jsx-runtime';
4
+
5
+ var TableBody = ({
6
+ withBorderSeparator = true,
7
+ className,
8
+ ...props
9
+ }) => {
10
+ return /* @__PURE__ */ jsx(
11
+ "tbody",
12
+ {
13
+ className: cn(
14
+ {
15
+ "tw:[&_tr]:border-0 tw:[&_tr]:border-b-border tw:[&_tr]:border-b tw:[&_tr]:border-solid tw:[&_tr:last-child]:border-0": withBorderSeparator
16
+ },
17
+ className
18
+ ),
19
+ ...props
20
+ }
21
+ );
22
+ };
23
+ var TableCell = ({ className, ...props }) => {
24
+ return /* @__PURE__ */ jsx("td", { className: cn("tw:px-3 tw:py-2", className), ...props });
25
+ };
26
+ var TableFooter = ({ className, ...props }) => {
27
+ return /* @__PURE__ */ jsx(
28
+ "tfoot",
29
+ {
30
+ className: cn(
31
+ "tw:bg-muted/50 tw:border-t tw:border-border tw:font-medium tw:[&>tr]:last:border-b-0",
32
+ className
33
+ ),
34
+ ...props
35
+ }
36
+ );
37
+ };
38
+ var TableHead = ({ className, ...props }) => {
39
+ return /* @__PURE__ */ jsx(
40
+ "th",
41
+ {
42
+ className: cn(
43
+ "tw:px-3 tw:py-2 tw:text-left tw:font-medium tw:whitespace-nowrap tw:[&:has([role=checkbox])]:pr-0 tw:[&>[role=checkbox]]:translate-y-[2px] tw:focus-within:ring-2 tw:focus-within:ring-ring/50",
44
+ className
45
+ ),
46
+ ...props
47
+ }
48
+ );
49
+ };
50
+ var TableHeader = ({
51
+ withShadow = false,
52
+ className,
53
+ ...props
54
+ }) => {
55
+ return /* @__PURE__ */ jsx(
56
+ "thead",
57
+ {
58
+ className: cn(
59
+ // `[&_tr]:hover:` (0,2,1) outranks `TableRow`'s own `hover:bg-muted/50` (0,2,0), so the
60
+ // header row keeps its background instead of flashing muted — a header is not hoverable.
61
+ "tw:sticky tw:top-0 tw:z-10 tw:[&_tr]:bg-table-header tw:[&_tr]:hover:bg-table-header tw:[&_tr]:border-b tw:[&_tr]:border-border",
62
+ { "tw:shadow-table": withShadow },
63
+ className
64
+ ),
65
+ ...props
66
+ }
67
+ );
68
+ };
69
+ var TableRow = ({ ref, className, ...props }) => /* @__PURE__ */ jsx(
70
+ "tr",
71
+ {
72
+ ref,
73
+ className: cn(
74
+ "tw:hover:bg-muted/50 tw:aria-selected:bg-accent tw:aria-selected:hover:bg-accent",
75
+ className
76
+ ),
77
+ ...props
78
+ }
79
+ );
80
+ var tableAriaSort = (sorted) => sorted === "asc" ? "ascending" : sorted === "desc" ? "descending" : "none";
81
+ var TableSortHeader = ({ sorted, children, className, ...props }) => {
82
+ const Icon = sorted === false ? ChevronsUpDown : sorted === "asc" ? ChevronUp : ChevronDown;
83
+ return /* @__PURE__ */ jsxs(
84
+ "button",
85
+ {
86
+ className: cn(
87
+ "tw:group tw:flex tw:cursor-pointer tw:items-center tw:gap-1 tw:border-0 tw:bg-transparent tw:p-0 tw:font-medium tw:text-inherit",
88
+ className
89
+ ),
90
+ ...props,
91
+ type: "button",
92
+ children: [
93
+ children,
94
+ /* @__PURE__ */ jsx(Icon, { className: "tw:size-3 tw:text-muted-foreground" })
95
+ ]
96
+ }
97
+ );
98
+ };
99
+ var Table = ({
100
+ borderCollapsed = true,
101
+ bordered = false,
102
+ containerClassName,
103
+ className,
104
+ ...props
105
+ }) => {
106
+ return /* @__PURE__ */ jsx(
107
+ "div",
108
+ {
109
+ className: cn(
110
+ "tw:relative tw:w-full",
111
+ bordered && "tw:overflow-auto tw:rounded-[10px] tw:border tw:border-solid tw:border-border",
112
+ containerClassName
113
+ ),
114
+ children: /* @__PURE__ */ jsx(
115
+ "table",
116
+ {
117
+ className: cn(
118
+ // `tw:text-foreground` (a semantic token) so header + cell text flips
119
+ // under `[data-theme='dark']` instead of inheriting a fixed dark color.
120
+ "tw:w-full tw:caption-bottom tw:text-sm tw:text-foreground",
121
+ borderCollapsed ? "tw:border-collapse" : "tw:border-separate tw:border-spacing-y-1",
122
+ className
123
+ ),
124
+ ...props
125
+ }
126
+ )
127
+ }
128
+ );
129
+ };
130
+ Table.Header = TableHeader;
131
+ Table.Head = TableHead;
132
+ Table.Body = TableBody;
133
+ Table.Row = TableRow;
134
+ Table.Cell = TableCell;
135
+ Table.Footer = TableFooter;
136
+ Table.SortHeader = TableSortHeader;
137
+
138
+ export { Table, TableSortHeader, tableAriaSort };
139
+ //# sourceMappingURL=chunk-BHGIDSRJ.js.map
140
+ //# sourceMappingURL=chunk-BHGIDSRJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Table/TableBody.tsx","../src/components/Table/TableCell.tsx","../src/components/Table/TableFooter.tsx","../src/components/Table/TableHead.tsx","../src/components/Table/TableHeader.tsx","../src/components/Table/TableRow.tsx","../src/components/Table/TableSortHeader.tsx","../src/components/Table/Table.tsx"],"names":["jsx"],"mappings":"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","file":"chunk-BHGIDSRJ.js","sourcesContent":["import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nexport const TableBody = ({\n withBorderSeparator = true,\n className,\n ...props\n}: { withBorderSeparator?: boolean } & ComponentProps<'tbody'>) => {\n return (\n <tbody\n className={cn(\n {\n 'tw:[&_tr]:border-0 tw:[&_tr]:border-b-border tw:[&_tr]:border-b tw:[&_tr]:border-solid tw:[&_tr:last-child]:border-0':\n withBorderSeparator,\n },\n className,\n )}\n {...props}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nexport const TableCell = ({ className, ...props }: ComponentProps<'td'>) => {\n return <td className={cn('tw:px-3 tw:py-2', className)} {...props} />;\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nexport const TableFooter = ({ className, ...props }: ComponentProps<'tfoot'>) => {\n return (\n <tfoot\n className={cn(\n 'tw:bg-muted/50 tw:border-t tw:border-border tw:font-medium tw:[&>tr]:last:border-b-0',\n className,\n )}\n {...props}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nexport const TableHead = ({ className, ...props }: ComponentProps<'th'>) => {\n return (\n <th\n className={cn(\n 'tw:px-3 tw:py-2 tw:text-left tw:font-medium tw:whitespace-nowrap tw:[&:has([role=checkbox])]:pr-0 tw:[&>[role=checkbox]]:translate-y-[2px] tw:focus-within:ring-2 tw:focus-within:ring-ring/50',\n className,\n )}\n {...props}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nexport const TableHeader = ({\n withShadow = false,\n className,\n ...props\n}: { withShadow?: boolean } & ComponentProps<'thead'>) => {\n return (\n <thead\n className={cn(\n // `[&_tr]:hover:` (0,2,1) outranks `TableRow`'s own `hover:bg-muted/50` (0,2,0), so the\n // header row keeps its background instead of flashing muted — a header is not hoverable.\n 'tw:sticky tw:top-0 tw:z-10 tw:[&_tr]:bg-table-header tw:[&_tr]:hover:bg-table-header tw:[&_tr]:border-b tw:[&_tr]:border-border',\n { 'tw:shadow-table': withShadow },\n className,\n )}\n {...props}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nexport const TableRow = ({ ref, className, ...props }: ComponentProps<'tr'>) => (\n <tr\n ref={ref}\n className={cn(\n 'tw:hover:bg-muted/50 tw:aria-selected:bg-accent tw:aria-selected:hover:bg-accent',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { ChevronDown, ChevronsUpDown, ChevronUp } from '../../icons';\nimport { cn } from '../../utils';\n\nexport type TableSortDirection = 'asc' | 'desc' | false;\n\n/** Maps a sort direction to the `aria-sort` value for the enclosing `Table.Head`. */\nexport const tableAriaSort = (sorted: TableSortDirection): ComponentProps<'th'>['aria-sort'] =>\n sorted === 'asc' ? 'ascending' : sorted === 'desc' ? 'descending' : 'none';\n\ntype Props = {\n /** Current sort state for this column: `'asc'`, `'desc'`, or `false` when unsorted. */\n sorted: TableSortDirection;\n children: ReactNode;\n} & Omit<ComponentProps<'button'>, 'children' | 'type'>;\n\n/**\n * Clickable column-header label with a sort-direction chevron, for use inside `Table.Head`.\n *\n * Presentational only — it owns no sort state. Pair it with your sort model (a `useState`\n * key/direction pair, or `@tanstack/react-table`'s `getToggleSortingHandler()` / `getIsSorted()`)\n * and set `aria-sort` on the enclosing `Table.Head` via {@link tableAriaSort}.\n */\nexport const TableSortHeader = ({ sorted, children, className, ...props }: Props) => {\n const Icon = sorted === false ? ChevronsUpDown : sorted === 'asc' ? ChevronUp : ChevronDown;\n return (\n <button\n className={cn(\n 'tw:group tw:flex tw:cursor-pointer tw:items-center tw:gap-1 tw:border-0 tw:bg-transparent tw:p-0 tw:font-medium tw:text-inherit',\n className,\n )}\n {...props}\n type=\"button\"\n >\n {children}\n <Icon className=\"tw:size-3 tw:text-muted-foreground\" />\n </button>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { TableBody } from './TableBody';\nimport { TableCell } from './TableCell';\nimport { TableFooter } from './TableFooter';\nimport { TableHead } from './TableHead';\nimport { TableHeader } from './TableHeader';\nimport { TableRow } from './TableRow';\nimport { TableSortHeader } from './TableSortHeader';\n\n/**\n * Props for `Table`. `borderCollapsed` toggles standard collapsed borders vs separate row spacing;\n * `bordered` wraps the table in a rounded bordered container with overflow scrolling.\n */\ntype Props = {\n borderCollapsed?: boolean;\n bordered?: boolean;\n containerClassName?: string;\n} & ComponentProps<'table'>;\n\n/**\n * Tabular data surface with header / body / row / cell compound parts.\n *\n * **When to use:** tabular data with named columns — entity lists with shared schema (jobs, buckets,\n * tables), sortable rows, row-level actions. Compose `Table.Header` + `Table.Body` + `Table.Row` +\n * `Table.Head` / `Table.Cell`.\n * **When NOT to use:** for heterogeneous lists where each row has its own shape use a `Card` list;\n * for tree / hierarchy layouts use a custom recursive list with `Table` per level.\n * **Composition:** wrap in `PageLayout.Content`. For sortable / filterable behaviour bring your own\n * state library (TanStack Table is a common pairing); this component is presentational.\n *\n * @see RECIPES.md#list-detail — for a list-table + row-click-to-detail pattern\n */\nexport const Table = ({\n borderCollapsed = true,\n bordered = false,\n containerClassName,\n className,\n ...props\n}: Props) => {\n return (\n <div\n className={cn(\n 'tw:relative tw:w-full',\n bordered && 'tw:overflow-auto tw:rounded-[10px] tw:border tw:border-solid tw:border-border',\n containerClassName,\n )}\n >\n <table\n className={cn(\n // `tw:text-foreground` (a semantic token) so header + cell text flips\n // under `[data-theme='dark']` instead of inheriting a fixed dark color.\n 'tw:w-full tw:caption-bottom tw:text-sm tw:text-foreground',\n borderCollapsed ? 'tw:border-collapse' : 'tw:border-separate tw:border-spacing-y-1',\n className,\n )}\n {...props}\n />\n </div>\n );\n};\n\nTable.Header = TableHeader;\nTable.Head = TableHead;\nTable.Body = TableBody;\nTable.Row = TableRow;\nTable.Cell = TableCell;\nTable.Footer = TableFooter;\nTable.SortHeader = TableSortHeader;\n"]}
@@ -0,0 +1,507 @@
1
+ import { CHANGE_CLASS, CHUNK_TYPE } from './chunk-OTL5WXIJ.js';
2
+ import { useState, useRef, useCallback, useLayoutEffect, useEffect, useMemo } from 'react';
3
+ import { diff3Merge } from 'node-diff3';
4
+ import { diffLines } from 'diff';
5
+
6
+ var computeDiffChunks = (oldText, newText) => {
7
+ const changes = diffLines(oldText, newText);
8
+ const chunks = [];
9
+ let oldLine = 1;
10
+ let newLine = 1;
11
+ for (const change of changes) {
12
+ if (change.value === "") continue;
13
+ const lineCount = change.count || change.value.replace(/\n$/, "").split("\n").length;
14
+ if (change.removed) {
15
+ chunks.push({
16
+ type: CHUNK_TYPE.REMOVED,
17
+ value: change.value,
18
+ oldStart: oldLine,
19
+ oldEnd: oldLine + lineCount - 1,
20
+ newStart: newLine,
21
+ newEnd: newLine
22
+ });
23
+ oldLine += lineCount;
24
+ } else if (change.added) {
25
+ chunks.push({
26
+ type: CHUNK_TYPE.ADDED,
27
+ value: change.value,
28
+ oldStart: oldLine,
29
+ oldEnd: oldLine,
30
+ newStart: newLine,
31
+ newEnd: newLine + lineCount - 1
32
+ });
33
+ newLine += lineCount;
34
+ } else {
35
+ chunks.push({
36
+ type: CHUNK_TYPE.UNCHANGED,
37
+ value: change.value,
38
+ oldStart: oldLine,
39
+ oldEnd: oldLine + lineCount - 1,
40
+ newStart: newLine,
41
+ newEnd: newLine + lineCount - 1
42
+ });
43
+ oldLine += lineCount;
44
+ newLine += lineCount;
45
+ }
46
+ }
47
+ return chunks;
48
+ };
49
+ var getChangedLineNumbers = (chunks, side) => {
50
+ const lines = /* @__PURE__ */ new Set();
51
+ for (const chunk of chunks) {
52
+ if (chunk.type === CHUNK_TYPE.UNCHANGED) continue;
53
+ if (side === "old" && chunk.type === CHUNK_TYPE.REMOVED) {
54
+ for (let i = chunk.oldStart; i <= chunk.oldEnd; i++) lines.add(i);
55
+ }
56
+ if (side === "new" && chunk.type === CHUNK_TYPE.ADDED) {
57
+ for (let i = chunk.newStart; i <= chunk.newEnd; i++) lines.add(i);
58
+ }
59
+ }
60
+ return lines;
61
+ };
62
+ var filterHighlightedLines = (chunks, side, classification, suppressedLines) => {
63
+ const filtered = /* @__PURE__ */ new Set();
64
+ for (const line of getChangedLineNumbers(chunks, side)) {
65
+ if (classification.has(line) && !suppressedLines.has(line)) filtered.add(line);
66
+ }
67
+ return filtered;
68
+ };
69
+ var replaceLines = (text, startLine, endLine, replacement) => {
70
+ const lines = text.split("\n");
71
+ const before = lines.slice(0, startLine - 1);
72
+ const after = startLine > endLine ? lines.slice(startLine - 1) : lines.slice(endLine);
73
+ const replacementArr = replacement === "" ? [] : replacement.replace(/\n$/, "").split("\n");
74
+ return [...before, ...replacementArr, ...after].join("\n");
75
+ };
76
+
77
+ // src/components/MergeEditor/useMergeDiff.ts
78
+ var DEBOUNCE_MS = 150;
79
+ var rangesOverlap = (s1, e1, s2, e2) => s1 <= e2 && e1 >= s2;
80
+ var computeSuppressedLines = (dismissedLines, pairs, resolvedIds, getRange) => {
81
+ const lines = new Set(dismissedLines);
82
+ for (const pair of pairs) {
83
+ if (resolvedIds.has(pair.id)) {
84
+ const [start, end] = getRange(pair);
85
+ for (let i = start; i <= end; i++) lines.add(i);
86
+ }
87
+ }
88
+ return lines;
89
+ };
90
+ var filterVisibleConflicts = (conflicts, classification, dismissedLines, getRange, findPair, fullyResolvedPairIds) => conflicts.filter((c) => {
91
+ const [start, end] = getRange(c);
92
+ let hasClassifiedLine = false;
93
+ let allDismissed = true;
94
+ for (let i = start; i <= end; i++) {
95
+ if (classification.has(i)) hasClassifiedLine = true;
96
+ if (!dismissedLines.has(i)) allDismissed = false;
97
+ }
98
+ if (!hasClassifiedLine || allDismissed) return false;
99
+ const pair = findPair(c);
100
+ return !pair || !fullyResolvedPairIds.has(pair.id);
101
+ });
102
+ var useMergeDiff = (baseText, leftText, rightText) => {
103
+ const [mergeValue, setMergeValue] = useState(baseText);
104
+ const debounceRef = useRef(null);
105
+ const [debouncedMergeValue, setDebouncedMergeValue] = useState(mergeValue);
106
+ const [acceptedPairSides, setAcceptedPairSides] = useState(
107
+ () => /* @__PURE__ */ new Map()
108
+ );
109
+ const [dismissedLeftLines, setDismissedLeftLines] = useState(() => /* @__PURE__ */ new Set());
110
+ const [dismissedRightLines, setDismissedRightLines] = useState(() => /* @__PURE__ */ new Set());
111
+ const reset = useCallback(() => {
112
+ if (debounceRef.current) {
113
+ clearTimeout(debounceRef.current);
114
+ debounceRef.current = null;
115
+ }
116
+ setMergeValue(baseText);
117
+ setDebouncedMergeValue(baseText);
118
+ setAcceptedPairSides(/* @__PURE__ */ new Map());
119
+ setDismissedLeftLines(/* @__PURE__ */ new Set());
120
+ setDismissedRightLines(/* @__PURE__ */ new Set());
121
+ }, [baseText]);
122
+ useLayoutEffect(() => {
123
+ reset();
124
+ }, [baseText, leftText, rightText]);
125
+ useEffect(() => {
126
+ return () => {
127
+ if (debounceRef.current) clearTimeout(debounceRef.current);
128
+ };
129
+ }, []);
130
+ const handleMergeChange = useCallback((value) => {
131
+ setMergeValue(value);
132
+ if (debounceRef.current) {
133
+ clearTimeout(debounceRef.current);
134
+ }
135
+ debounceRef.current = setTimeout(() => {
136
+ setDebouncedMergeValue(value);
137
+ }, DEBOUNCE_MS);
138
+ }, []);
139
+ const leftDiffChunks = useMemo(
140
+ () => computeDiffChunks(leftText, debouncedMergeValue),
141
+ [leftText, debouncedMergeValue]
142
+ );
143
+ const rightDiffChunks = useMemo(
144
+ () => computeDiffChunks(debouncedMergeValue, rightText),
145
+ [debouncedMergeValue, rightText]
146
+ );
147
+ const leftConflicts = useMemo(() => pairChunksIntoConflicts(leftDiffChunks), [leftDiffChunks]);
148
+ const rightConflicts = useMemo(() => pairChunksIntoConflicts(rightDiffChunks), [rightDiffChunks]);
149
+ const leftVsBase = useMemo(() => computeDiffChunks(baseText, leftText), [baseText, leftText]);
150
+ const rightVsBase = useMemo(() => computeDiffChunks(baseText, rightText), [baseText, rightText]);
151
+ const { leftClassification, rightClassification, conflictPairs } = useMemo(() => {
152
+ const baseLines = baseText.split("\n");
153
+ const leftLines = leftText.split("\n");
154
+ const rightLines = rightText.split("\n");
155
+ const result = diff3Merge(leftLines, baseLines, rightLines);
156
+ const leftConflictLineSet = /* @__PURE__ */ new Set();
157
+ const rightConflictLineSet = /* @__PURE__ */ new Set();
158
+ const pairs = [];
159
+ for (const block of result) {
160
+ if ("conflict" in block && block.conflict) {
161
+ const { a, aIndex, b, bIndex } = block.conflict;
162
+ for (let i = 0; i < a.length; i++) leftConflictLineSet.add(aIndex + i + 1);
163
+ for (let i = 0; i < b.length; i++) rightConflictLineSet.add(bIndex + i + 1);
164
+ pairs.push({
165
+ id: `pair-${aIndex}-${bIndex}`,
166
+ leftStart: aIndex + 1,
167
+ leftEnd: aIndex + a.length,
168
+ rightStart: bIndex + 1,
169
+ rightEnd: bIndex + b.length
170
+ });
171
+ }
172
+ }
173
+ const leftChanged = getChangedLineNumbers(leftVsBase, "new");
174
+ const rightChanged = getChangedLineNumbers(rightVsBase, "new");
175
+ const leftMap = /* @__PURE__ */ new Map();
176
+ for (const line of leftChanged) {
177
+ leftMap.set(line, leftConflictLineSet.has(line) ? CHANGE_CLASS.CONFLICT : CHANGE_CLASS.SAFE);
178
+ }
179
+ const rightMap = /* @__PURE__ */ new Map();
180
+ for (const line of rightChanged) {
181
+ rightMap.set(
182
+ line,
183
+ rightConflictLineSet.has(line) ? CHANGE_CLASS.CONFLICT : CHANGE_CLASS.SAFE
184
+ );
185
+ }
186
+ return {
187
+ leftClassification: leftMap,
188
+ rightClassification: rightMap,
189
+ conflictPairs: pairs
190
+ };
191
+ }, [baseText, leftText, rightText, leftVsBase, rightVsBase]);
192
+ const findPairForLeft = useCallback(
193
+ (conflict) => conflictPairs.find(
194
+ (p) => rangesOverlap(conflict.oldStartLine, conflict.oldEndLine, p.leftStart, p.leftEnd)
195
+ ),
196
+ [conflictPairs]
197
+ );
198
+ const findPairForRight = useCallback(
199
+ (conflict) => conflictPairs.find(
200
+ (p) => rangesOverlap(conflict.newStartLine, conflict.newEndLine, p.rightStart, p.rightEnd)
201
+ ),
202
+ [conflictPairs]
203
+ );
204
+ const markSideAccepted = useCallback((pair, side) => {
205
+ if (!pair) return;
206
+ setAcceptedPairSides((prev) => {
207
+ const next = new Map(prev);
208
+ const sides = new Set(prev.get(pair.id) ?? []);
209
+ sides.add(side);
210
+ next.set(pair.id, sides);
211
+ return next;
212
+ });
213
+ }, []);
214
+ const isOtherSideAccepted = useCallback(
215
+ (pair, side) => {
216
+ if (!pair) return false;
217
+ const otherSide = side === "left" ? "right" : "left";
218
+ return acceptedPairSides.get(pair.id)?.has(otherSide) ?? false;
219
+ },
220
+ [acceptedPairSides]
221
+ );
222
+ const acceptSide = useCallback(
223
+ (conflict, side) => {
224
+ const findPair = side === "left" ? findPairForLeft : findPairForRight;
225
+ const pair = findPair(conflict);
226
+ const otherAccepted = isOtherSideAccepted(pair, side);
227
+ const sourceValue = side === "left" ? conflict.oldValue : conflict.newValue;
228
+ const targetStart = side === "left" ? conflict.newStartLine : conflict.oldStartLine;
229
+ const targetEnd = side === "left" ? conflict.newEndLine : conflict.oldEndLine;
230
+ if (debounceRef.current) {
231
+ clearTimeout(debounceRef.current);
232
+ debounceRef.current = null;
233
+ }
234
+ const mergeTargetEmpty = side === "left" ? conflict.newValue === "" : conflict.oldValue === "";
235
+ const newValue = otherAccepted ? replaceLines(mergeValue, targetEnd + 1, targetEnd, sourceValue) : mergeTargetEmpty ? replaceLines(mergeValue, targetStart, targetStart - 1, sourceValue) : replaceLines(mergeValue, targetStart, targetEnd, sourceValue);
236
+ setMergeValue(newValue);
237
+ setDebouncedMergeValue(newValue);
238
+ markSideAccepted(pair, side);
239
+ if (!pair) {
240
+ const setDismissedSide = side === "left" ? setDismissedLeftLines : setDismissedRightLines;
241
+ const [sideStart, sideEnd] = side === "left" ? [conflict.oldStartLine, conflict.oldEndLine] : [conflict.newStartLine, conflict.newEndLine];
242
+ setDismissedSide((prev) => {
243
+ const next = new Set(prev);
244
+ for (let i = sideStart; i <= sideEnd; i++) next.add(i);
245
+ return next;
246
+ });
247
+ }
248
+ },
249
+ [mergeValue, findPairForLeft, findPairForRight, isOtherSideAccepted, markSideAccepted]
250
+ );
251
+ const acceptLeft = useCallback(
252
+ (conflict) => acceptSide(conflict, "left"),
253
+ [acceptSide]
254
+ );
255
+ const acceptRight = useCallback(
256
+ (conflict) => acceptSide(conflict, "right"),
257
+ [acceptSide]
258
+ );
259
+ const dismissSide = useCallback((conflict, side) => {
260
+ const setDismissed = side === "left" ? setDismissedLeftLines : setDismissedRightLines;
261
+ const [sideStart, sideEnd] = side === "left" ? [conflict.oldStartLine, conflict.oldEndLine] : [conflict.newStartLine, conflict.newEndLine];
262
+ setDismissed((prev) => {
263
+ const next = new Set(prev);
264
+ for (let i = sideStart; i <= sideEnd; i++) next.add(i);
265
+ return next;
266
+ });
267
+ }, []);
268
+ const dismissLeft = useCallback(
269
+ (conflict) => dismissSide(conflict, "left"),
270
+ [dismissSide]
271
+ );
272
+ const dismissRight = useCallback(
273
+ (conflict) => dismissSide(conflict, "right"),
274
+ [dismissSide]
275
+ );
276
+ const fullyResolvedPairIds = useMemo(() => {
277
+ const ids = /* @__PURE__ */ new Set();
278
+ for (const pair of conflictPairs) {
279
+ const leftAccepted = acceptedPairSides.get(pair.id)?.has("left") ?? false;
280
+ const rightAccepted = acceptedPairSides.get(pair.id)?.has("right") ?? false;
281
+ let leftDismissed = true;
282
+ for (let i = pair.leftStart; i <= pair.leftEnd; i++) {
283
+ if (!dismissedLeftLines.has(i)) {
284
+ leftDismissed = false;
285
+ break;
286
+ }
287
+ }
288
+ let rightDismissed = true;
289
+ for (let i = pair.rightStart; i <= pair.rightEnd; i++) {
290
+ if (!dismissedRightLines.has(i)) {
291
+ rightDismissed = false;
292
+ break;
293
+ }
294
+ }
295
+ if ((leftAccepted || leftDismissed) && (rightAccepted || rightDismissed)) {
296
+ ids.add(pair.id);
297
+ }
298
+ }
299
+ return ids;
300
+ }, [conflictPairs, acceptedPairSides, dismissedLeftLines, dismissedRightLines]);
301
+ const visibleLeftConflicts = useMemo(
302
+ () => filterVisibleConflicts(
303
+ leftConflicts,
304
+ leftClassification,
305
+ dismissedLeftLines,
306
+ (c) => [c.oldStartLine, c.oldEndLine],
307
+ findPairForLeft,
308
+ fullyResolvedPairIds
309
+ ),
310
+ [leftConflicts, leftClassification, dismissedLeftLines, findPairForLeft, fullyResolvedPairIds]
311
+ );
312
+ const visibleRightConflicts = useMemo(
313
+ () => filterVisibleConflicts(
314
+ rightConflicts,
315
+ rightClassification,
316
+ dismissedRightLines,
317
+ (c) => [c.newStartLine, c.newEndLine],
318
+ findPairForRight,
319
+ fullyResolvedPairIds
320
+ ),
321
+ [
322
+ rightConflicts,
323
+ rightClassification,
324
+ dismissedRightLines,
325
+ findPairForRight,
326
+ fullyResolvedPairIds
327
+ ]
328
+ );
329
+ const suppressedLeftLines = useMemo(
330
+ () => computeSuppressedLines(dismissedLeftLines, conflictPairs, fullyResolvedPairIds, (p) => [
331
+ p.leftStart,
332
+ p.leftEnd
333
+ ]),
334
+ [conflictPairs, fullyResolvedPairIds, dismissedLeftLines]
335
+ );
336
+ const suppressedRightLines = useMemo(
337
+ () => computeSuppressedLines(dismissedRightLines, conflictPairs, fullyResolvedPairIds, (p) => [
338
+ p.rightStart,
339
+ p.rightEnd
340
+ ]),
341
+ [conflictPairs, fullyResolvedPairIds, dismissedRightLines]
342
+ );
343
+ const { mergeHighlightedLines, mergeClassification } = useMemo(() => {
344
+ const mergeLeftLines = getChangedLineNumbers(leftDiffChunks, "new");
345
+ const mergeRightLines = getChangedLineNumbers(rightDiffChunks, "old");
346
+ const mergeLineToPair = /* @__PURE__ */ new Map();
347
+ for (const conflict of leftConflicts) {
348
+ const pair = findPairForLeft(conflict);
349
+ if (pair) {
350
+ for (let i = conflict.newStartLine; i <= conflict.newEndLine; i++) {
351
+ mergeLineToPair.set(i, pair.id);
352
+ }
353
+ }
354
+ }
355
+ for (const conflict of rightConflicts) {
356
+ const pair = findPairForRight(conflict);
357
+ if (pair) {
358
+ for (let i = conflict.oldStartLine; i <= conflict.oldEndLine; i++) {
359
+ mergeLineToPair.set(i, pair.id);
360
+ }
361
+ }
362
+ }
363
+ const suppressedMergeLines = /* @__PURE__ */ new Set();
364
+ for (const conflict of leftConflicts) {
365
+ if (findPairForLeft(conflict)) continue;
366
+ if (conflict.oldStartLine > conflict.oldEndLine) continue;
367
+ let allDismissed = true;
368
+ for (let i = conflict.oldStartLine; i <= conflict.oldEndLine; i++) {
369
+ if (!dismissedLeftLines.has(i)) {
370
+ allDismissed = false;
371
+ break;
372
+ }
373
+ }
374
+ if (allDismissed) {
375
+ for (let i = conflict.newStartLine; i <= conflict.newEndLine; i++) {
376
+ suppressedMergeLines.add(i);
377
+ }
378
+ }
379
+ }
380
+ for (const conflict of rightConflicts) {
381
+ if (findPairForRight(conflict)) continue;
382
+ if (conflict.newStartLine > conflict.newEndLine) continue;
383
+ let allDismissed = true;
384
+ for (let i = conflict.newStartLine; i <= conflict.newEndLine; i++) {
385
+ if (!dismissedRightLines.has(i)) {
386
+ allDismissed = false;
387
+ break;
388
+ }
389
+ }
390
+ if (allDismissed) {
391
+ for (let i = conflict.oldStartLine; i <= conflict.oldEndLine; i++) {
392
+ suppressedMergeLines.add(i);
393
+ }
394
+ }
395
+ }
396
+ const allMergeLines = /* @__PURE__ */ new Set();
397
+ for (const line of mergeLeftLines) allMergeLines.add(line);
398
+ for (const line of mergeRightLines) allMergeLines.add(line);
399
+ const highlighted = /* @__PURE__ */ new Set();
400
+ const classification = /* @__PURE__ */ new Map();
401
+ for (const line of allMergeLines) {
402
+ if (suppressedMergeLines.has(line)) continue;
403
+ const pairId = mergeLineToPair.get(line);
404
+ if (pairId && fullyResolvedPairIds.has(pairId)) continue;
405
+ highlighted.add(line);
406
+ classification.set(line, pairId ? CHANGE_CLASS.CONFLICT : CHANGE_CLASS.SAFE);
407
+ }
408
+ return { mergeHighlightedLines: highlighted, mergeClassification: classification };
409
+ }, [
410
+ leftDiffChunks,
411
+ rightDiffChunks,
412
+ leftConflicts,
413
+ rightConflicts,
414
+ findPairForLeft,
415
+ findPairForRight,
416
+ fullyResolvedPairIds,
417
+ dismissedLeftLines,
418
+ dismissedRightLines
419
+ ]);
420
+ const leftHighlightedLines = useMemo(
421
+ () => filterHighlightedLines(leftDiffChunks, "old", leftClassification, suppressedLeftLines),
422
+ [leftDiffChunks, leftClassification, suppressedLeftLines]
423
+ );
424
+ const rightHighlightedLines = useMemo(
425
+ () => filterHighlightedLines(rightDiffChunks, "new", rightClassification, suppressedRightLines),
426
+ [rightDiffChunks, rightClassification, suppressedRightLines]
427
+ );
428
+ const remainingSafeChanges = useMemo(() => {
429
+ const leftSafe = visibleLeftConflicts.filter((c) => !findPairForLeft(c)).length;
430
+ const rightSafe = visibleRightConflicts.filter((c) => !findPairForRight(c)).length;
431
+ return leftSafe + rightSafe;
432
+ }, [visibleLeftConflicts, visibleRightConflicts, findPairForLeft, findPairForRight]);
433
+ return {
434
+ mergeValue,
435
+ handleMergeChange,
436
+ leftConflicts: visibleLeftConflicts,
437
+ rightConflicts: visibleRightConflicts,
438
+ leftHighlightedLines,
439
+ rightHighlightedLines,
440
+ leftClassification,
441
+ rightClassification,
442
+ mergeHighlightedLines,
443
+ mergeClassification,
444
+ acceptLeft,
445
+ acceptRight,
446
+ dismissLeft,
447
+ dismissRight,
448
+ totalConflicts: conflictPairs.length,
449
+ resolvedConflicts: fullyResolvedPairIds.size,
450
+ remainingSafeChanges,
451
+ isDirty: mergeValue !== baseText || dismissedLeftLines.size > 0 || dismissedRightLines.size > 0,
452
+ reset
453
+ };
454
+ };
455
+ var pairChunksIntoConflicts = (chunks) => {
456
+ const conflicts = [];
457
+ let i = 0;
458
+ while (i < chunks.length) {
459
+ const chunk = chunks[i];
460
+ if (chunk.type === CHUNK_TYPE.UNCHANGED) {
461
+ i++;
462
+ continue;
463
+ }
464
+ if (chunk.type === CHUNK_TYPE.REMOVED) {
465
+ const next = chunks[i + 1];
466
+ if (next?.type === CHUNK_TYPE.ADDED) {
467
+ conflicts.push({
468
+ id: `${chunk.oldStart}-${next.newStart}`,
469
+ oldValue: chunk.value,
470
+ oldStartLine: chunk.oldStart,
471
+ oldEndLine: chunk.oldEnd,
472
+ newValue: next.value,
473
+ newStartLine: next.newStart,
474
+ newEndLine: next.newEnd
475
+ });
476
+ i += 2;
477
+ } else {
478
+ conflicts.push({
479
+ id: `${chunk.oldStart}-del`,
480
+ oldValue: chunk.value,
481
+ oldStartLine: chunk.oldStart,
482
+ oldEndLine: chunk.oldEnd,
483
+ newValue: "",
484
+ newStartLine: chunk.newStart,
485
+ newEndLine: chunk.newStart
486
+ });
487
+ i++;
488
+ }
489
+ } else {
490
+ conflicts.push({
491
+ id: `add-${chunk.newStart}`,
492
+ oldValue: "",
493
+ oldStartLine: chunk.oldStart,
494
+ oldEndLine: chunk.oldStart,
495
+ newValue: chunk.value,
496
+ newStartLine: chunk.newStart,
497
+ newEndLine: chunk.newEnd
498
+ });
499
+ i++;
500
+ }
501
+ }
502
+ return conflicts;
503
+ };
504
+
505
+ export { useMergeDiff };
506
+ //# sourceMappingURL=chunk-BSQWZITZ.js.map
507
+ //# sourceMappingURL=chunk-BSQWZITZ.js.map