@keboola/design 11.9.0 → 12.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 (363) hide show
  1. package/AGENTS.md +34 -8
  2. package/CHANGELOG.md +155 -0
  3. package/COMPONENT-API.md +337 -289
  4. package/README.md +11 -1
  5. package/dist/{AIKit-ELIsegJz.js → AIKit-BD4r7ff-.js} +404 -243
  6. package/dist/AIKit-BD4r7ff-.js.map +1 -0
  7. package/dist/{Alert-BsIM_oFK.js → Alert-UI-CIs-1.js} +16 -16
  8. package/dist/Alert-UI-CIs-1.js.map +1 -0
  9. package/dist/{AlertModal-BGJdaRRj.js → AlertModal-Th2khjPi.js} +5 -5
  10. package/dist/AlertModal-Th2khjPi.js.map +1 -0
  11. package/dist/{AppShell-DRgJxpXW.js → AppShell-WSQabK8r.js} +15 -52
  12. package/dist/AppShell-WSQabK8r.js.map +1 -0
  13. package/dist/{AutoSaveTextarea-BeuWuszr.js → AutoSaveTextarea-C5iIr2Ts.js} +2 -2
  14. package/dist/{AutoSaveTextarea-BeuWuszr.js.map → AutoSaveTextarea-C5iIr2Ts.js.map} +1 -1
  15. package/dist/{Badge-o5jURtpB.js → Badge-DIjhwPvh.js} +4 -9
  16. package/dist/Badge-DIjhwPvh.js.map +1 -0
  17. package/dist/{BrandEditor-BsTBM3s6.js → BrandEditor-BU23Vl8V.js} +7 -7
  18. package/dist/{BrandEditor-BsTBM3s6.js.map → BrandEditor-BU23Vl8V.js.map} +1 -1
  19. package/dist/{BrandLogo-CoKBk4MI.js → BrandLogo-CKpVSZb6.js} +4 -4
  20. package/dist/BrandLogo-CKpVSZb6.js.map +1 -0
  21. package/dist/{Breadcrumb-xqEUxfwn.js → Breadcrumb-p9HtMLCc.js} +8 -14
  22. package/dist/Breadcrumb-p9HtMLCc.js.map +1 -0
  23. package/dist/{Button-DsRrU5F1.js → Button-Ca4Q3VJU.js} +31 -13
  24. package/dist/Button-Ca4Q3VJU.js.map +1 -0
  25. package/dist/{Calendar-cG5NIJ4O.js → Calendar-DFtmZzbF.js} +99 -99
  26. package/dist/Calendar-DFtmZzbF.js.map +1 -0
  27. package/dist/{Card-Dyo7055Q.js → Card-Cr9MBNHu.js} +4 -4
  28. package/dist/Card-Cr9MBNHu.js.map +1 -0
  29. package/dist/{Checkbox-Dq5fPNrO.js → Checkbox-8yIIgY7g.js} +4 -4
  30. package/dist/Checkbox-8yIIgY7g.js.map +1 -0
  31. package/dist/{Clipboard-BZitKiSA.js → Clipboard-_xf6hMDD.js} +2 -2
  32. package/dist/{Clipboard-BZitKiSA.js.map → Clipboard-_xf6hMDD.js.map} +1 -1
  33. package/dist/{ClipboardButton-KHQnPEh_.js → ClipboardButton-DHa1trtI.js} +4 -4
  34. package/dist/{ClipboardButton-KHQnPEh_.js.map → ClipboardButton-DHa1trtI.js.map} +1 -1
  35. package/dist/{CodeEditor-BJKJXA0c.js → CodeEditor-BSo-oLFG.js} +55 -165
  36. package/dist/CodeEditor-BSo-oLFG.js.map +1 -0
  37. package/dist/{ColorInput-Bj3dfPFA.js → ColorInput-DSMqrs2-.js} +12 -27
  38. package/dist/ColorInput-DSMqrs2-.js.map +1 -0
  39. package/dist/{ColorModeSwitch-CWt-DZGC.js → ColorModeSwitch-D7EuWyJz.js} +7 -17
  40. package/dist/ColorModeSwitch-D7EuWyJz.js.map +1 -0
  41. package/dist/Combobox-CxRAYOBt.js +1069 -0
  42. package/dist/Combobox-CxRAYOBt.js.map +1 -0
  43. package/dist/{Command-BDU3C1gg.js → Command-BU_cVurn.js} +4 -4
  44. package/dist/{Command-BDU3C1gg.js.map → Command-BU_cVurn.js.map} +1 -1
  45. package/dist/{CopyField-BHRQUyuF.js → CopyField-6_c-NdLO.js} +17 -53
  46. package/dist/{CopyField-BHRQUyuF.js.map → CopyField-6_c-NdLO.js.map} +1 -1
  47. package/dist/{DateInput-B6N8g0ra.js → DateInput-DyEErfJf.js} +6 -6
  48. package/dist/{DateInput-B6N8g0ra.js.map → DateInput-DyEErfJf.js.map} +1 -1
  49. package/dist/{DatePicker-nA8YdE84.js → DatePicker-CtSa9b3V.js} +3 -3
  50. package/dist/{DatePicker-nA8YdE84.js.map → DatePicker-CtSa9b3V.js.map} +1 -1
  51. package/dist/{DateRangeInput-7M9Z4cVO.js → DateRangeInput-Dg7-VUd9.js} +10 -14
  52. package/dist/DateRangeInput-Dg7-VUd9.js.map +1 -0
  53. package/dist/{DateRangePicker-DjSUFjh4.js → DateRangePicker-BoPnh4aH.js} +9 -13
  54. package/dist/DateRangePicker-BoPnh4aH.js.map +1 -0
  55. package/dist/DiffView-ppTIzh2h.js.map +1 -1
  56. package/dist/{DropdownMenu-CgVwhDvl.js → DropdownMenu-gRM-A8qU.js} +3 -3
  57. package/dist/DropdownMenu-gRM-A8qU.js.map +1 -0
  58. package/dist/{FieldItem-DZGIdiXE.js → FieldItem-2wMXQ0Qw.js} +12 -25
  59. package/dist/FieldItem-2wMXQ0Qw.js.map +1 -0
  60. package/dist/{FieldItem-vhIJW4pj.d.ts → FieldItem-CPN1xjN5.d.ts} +11 -25
  61. package/dist/{FileUpload-DYQCTGjU.js → FileUpload-C83tXuE2.js} +11 -16
  62. package/dist/{FileUpload-DYQCTGjU.js.map → FileUpload-C83tXuE2.js.map} +1 -1
  63. package/dist/{Form-CcK7dRrC.js → Form-95rVLfX8.js} +15 -23
  64. package/dist/{Form-CcK7dRrC.js.map → Form-95rVLfX8.js.map} +1 -1
  65. package/dist/{FormGroup-DR_gZ25-.js → FormGroup-CmNiAtU6.js} +11 -17
  66. package/dist/FormGroup-CmNiAtU6.js.map +1 -0
  67. package/dist/{FullScreenModal-CN9nAs72.js → FullScreenModal-CD7mYeTz.js} +15 -29
  68. package/dist/FullScreenModal-CD7mYeTz.js.map +1 -0
  69. package/dist/{HoverCard-B9ZMJxjn.js → HoverCard-B8OKu9XZ.js} +2 -2
  70. package/dist/{HoverCard-B9ZMJxjn.js.map → HoverCard-B8OKu9XZ.js.map} +1 -1
  71. package/dist/{InputGroup-Do8K2hvD.js → InputGroup-B4QOPxHl.js} +11 -13
  72. package/dist/InputGroup-B4QOPxHl.js.map +1 -0
  73. package/dist/{Kbd-LCFMumoq.js → Kbd-J4n1J6i4.js} +23 -13
  74. package/dist/Kbd-J4n1J6i4.js.map +1 -0
  75. package/dist/{MarkedText-DNGEUVWc.js → MarkedText-DlmlJO0u.js} +2 -2
  76. package/dist/{MarkedText-DNGEUVWc.js.map → MarkedText-DlmlJO0u.js.map} +1 -1
  77. package/dist/{MermaidDiagram-ZG0iiDV_.js → MermaidDiagram-BQvz6bhv.js} +16 -34
  78. package/dist/MermaidDiagram-BQvz6bhv.js.map +1 -0
  79. package/dist/{Modal-I3VWk2oo.js → Modal-Driyqs_N.js} +17 -34
  80. package/dist/Modal-Driyqs_N.js.map +1 -0
  81. package/dist/{ModalTitle-CeLM_mX9.js → ModalTitle-BxopkIoQ.js} +3 -3
  82. package/dist/ModalTitle-BxopkIoQ.js.map +1 -0
  83. package/dist/{MultiActionButtonGroup-CYZ8IgSf.js → MultiActionButtonGroup-BPnmzBtw.js} +3 -3
  84. package/dist/{MultiActionButtonGroup-CYZ8IgSf.js.map → MultiActionButtonGroup-BPnmzBtw.js.map} +1 -1
  85. package/dist/{Navbar-Liy1TPI7.js → Navbar-B_DNpv5s.js} +9 -13
  86. package/dist/{Navbar-Liy1TPI7.js.map → Navbar-B_DNpv5s.js.map} +1 -1
  87. package/dist/{OtpInput-CbbymqYs.js → OtpInput-I8B8Vjdl.js} +2 -2
  88. package/dist/{OtpInput-CbbymqYs.js.map → OtpInput-I8B8Vjdl.js.map} +1 -1
  89. package/dist/{PageHeader-Q3IpCnQd.js → PageHeader-CgfyXpf1.js} +13 -26
  90. package/dist/PageHeader-CgfyXpf1.js.map +1 -0
  91. package/dist/{PageLayout-DSVM-ASz.js → PageLayout-DiAAILuS.js} +12 -20
  92. package/dist/PageLayout-DiAAILuS.js.map +1 -0
  93. package/dist/{PageToolbar-BKVJiDAL.js → PageToolbar-DOAtAnfL.js} +12 -42
  94. package/dist/PageToolbar-DOAtAnfL.js.map +1 -0
  95. package/dist/{Pagination-C_b7Xhey.js → Pagination-LaSg-5cl.js} +3 -3
  96. package/dist/{Pagination-C_b7Xhey.js.map → Pagination-LaSg-5cl.js.map} +1 -1
  97. package/dist/{Popconfirm-5pBzT_HQ.js → Popconfirm-SLz0zodk.js} +3 -3
  98. package/dist/{Popconfirm-5pBzT_HQ.js.map → Popconfirm-SLz0zodk.js.map} +1 -1
  99. package/dist/{Popover-BEbQrC_P.js → Popover-CEk915I1.js} +4 -3
  100. package/dist/Popover-CEk915I1.js.map +1 -0
  101. package/dist/{RadioGroup-Byc2mym4.js → RadioGroup-CBPRLRN0.js} +4 -4
  102. package/dist/{RadioGroup-Byc2mym4.js.map → RadioGroup-CBPRLRN0.js.map} +1 -1
  103. package/dist/{Search-Dhig_hPD.js → Search-DmkQo716.js} +3 -3
  104. package/dist/{Search-Dhig_hPD.js.map → Search-DmkQo716.js.map} +1 -1
  105. package/dist/{SearchInput-92r2bkA7.js → SearchInput-CEfQDNl3.js} +8 -13
  106. package/dist/SearchInput-CEfQDNl3.js.map +1 -0
  107. package/dist/{SectionNav-CNLJsiVG.js → SectionNav-B_qf0AXi.js} +10 -42
  108. package/dist/SectionNav-B_qf0AXi.js.map +1 -0
  109. package/dist/{Select-DV3Hak_l.js → Select-ByRvkZ3D.js} +8 -11
  110. package/dist/{Select-DV3Hak_l.js.map → Select-ByRvkZ3D.js.map} +1 -1
  111. package/dist/{Sheet-OparjIi-.js → Sheet-C-yXk5Da.js} +5 -9
  112. package/dist/Sheet-C-yXk5Da.js.map +1 -0
  113. package/dist/{Sidebar-CLEbBtNY.js → Sidebar-Ds0E6PbR.js} +16 -33
  114. package/dist/Sidebar-Ds0E6PbR.js.map +1 -0
  115. package/dist/{Slider-DLclvRws.js → Slider-DWdu9NuM.js} +3 -3
  116. package/dist/{Slider-DLclvRws.js.map → Slider-DWdu9NuM.js.map} +1 -1
  117. package/dist/{Stepper-C8sm9ZFM.js → Stepper-BLkLhfnd.js} +6 -9
  118. package/dist/{Stepper-C8sm9ZFM.js.map → Stepper-BLkLhfnd.js.map} +1 -1
  119. package/dist/{Switch-B0WdGSjz.js → Switch-DZvNePOm.js} +2 -2
  120. package/dist/{Switch-B0WdGSjz.js.map → Switch-DZvNePOm.js.map} +1 -1
  121. package/dist/{Table-CvYuTuNU.js → Table-BaVT5Tkn.js} +6 -11
  122. package/dist/{Table-CvYuTuNU.js.map → Table-BaVT5Tkn.js.map} +1 -1
  123. package/dist/{Tabs-eB974xJf.js → Tabs-Dt9oLYHC.js} +3 -3
  124. package/dist/{Tabs-eB974xJf.js.map → Tabs-Dt9oLYHC.js.map} +1 -1
  125. package/dist/{TextInput-CFTf4Cz1.js → TextInput-CDG2XpBl.js} +10 -14
  126. package/dist/TextInput-CDG2XpBl.js.map +1 -0
  127. package/dist/{ThemeProvider-DAmNn9Sd.js → ThemeProvider-DXsxFg1U.js} +13 -31
  128. package/dist/ThemeProvider-DXsxFg1U.js.map +1 -0
  129. package/dist/{TimePicker-BGeqc-Ed.js → TimePicker-CDGYrRxi.js} +2 -2
  130. package/dist/{TimePicker-BGeqc-Ed.js.map → TimePicker-CDGYrRxi.js.map} +1 -1
  131. package/dist/{Timeline-C8-wnRRr.js → Timeline-B-I6sb0M.js} +2 -2
  132. package/dist/{Timeline-C8-wnRRr.js.map → Timeline-B-I6sb0M.js.map} +1 -1
  133. package/dist/{Toast-Dr6Uw7ao.js → Toast-PfQf3vj-.js} +2 -2
  134. package/dist/{Toast-Dr6Uw7ao.js.map → Toast-PfQf3vj-.js.map} +1 -1
  135. package/dist/{Workbench-UR2FBC7I.js → Workbench-DmZzpkj7.js} +2 -2
  136. package/dist/{Workbench-UR2FBC7I.js.map → Workbench-DmZzpkj7.js.map} +1 -1
  137. package/dist/{ZoomableSvg-BZlk3PFJ.js → ZoomableSvg-BzXVfgnI.js} +5 -19
  138. package/dist/ZoomableSvg-BzXVfgnI.js.map +1 -0
  139. package/dist/charts.d.ts +21 -52
  140. package/dist/charts.js +13 -39
  141. package/dist/charts.js.map +1 -1
  142. package/dist/{context-D7X470dy.js → context-U293r3v-.js} +5 -9
  143. package/dist/context-U293r3v-.js.map +1 -0
  144. package/dist/editors.d.ts +27 -124
  145. package/dist/editors.js +29 -71
  146. package/dist/editors.js.map +1 -1
  147. package/dist/{findLiteralMatches-BGBw8Vbl.js → findLiteralMatches-DgGLzyG0.js} +8 -20
  148. package/dist/findLiteralMatches-DgGLzyG0.js.map +1 -0
  149. package/dist/flint.d.ts +3 -6
  150. package/dist/flint.js +31 -80
  151. package/dist/flint.js.map +1 -1
  152. package/dist/{icons-Cek151jC.js → icons-wcA70iQx.js} +105 -2
  153. package/dist/icons-wcA70iQx.js.map +1 -0
  154. package/dist/icons.d.ts +2 -2
  155. package/dist/icons.js +2 -2
  156. package/dist/{index-m-kQEWiY.d.ts → index-B7k-09i1.d.ts} +14 -2
  157. package/dist/index.d.ts +1151 -1838
  158. package/dist/index.js +68 -67
  159. package/dist/internal/blocks/AIKit.js +2 -2
  160. package/dist/internal/blocks/AppShell.js +1 -1
  161. package/dist/internal/blocks/AuthLayout.js +7 -27
  162. package/dist/internal/blocks/AuthLayout.js.map +1 -1
  163. package/dist/internal/blocks/AutoSaveTextarea.js +1 -1
  164. package/dist/internal/blocks/BrandEditor.js +1 -1
  165. package/dist/internal/blocks/ChartPanel.js +4 -8
  166. package/dist/internal/blocks/ChartPanel.js.map +1 -1
  167. package/dist/internal/blocks/ChipEditor.js +13 -21
  168. package/dist/internal/blocks/ChipEditor.js.map +1 -1
  169. package/dist/internal/blocks/ClipboardButton.js +1 -1
  170. package/dist/internal/blocks/ColorInput.js +1 -1
  171. package/dist/internal/blocks/ColorModeSwitch.js +1 -1
  172. package/dist/internal/blocks/Command.js +1 -1
  173. package/dist/internal/blocks/CopyField.js +1 -1
  174. package/dist/internal/blocks/DashboardHero.js +4 -7
  175. package/dist/internal/blocks/DashboardHero.js.map +1 -1
  176. package/dist/internal/blocks/DateInput.js +1 -1
  177. package/dist/internal/blocks/DateRangeInput.js +1 -1
  178. package/dist/internal/blocks/EmptyConfigurationActionCard.js +1 -1
  179. package/dist/internal/blocks/EmptyState.js +5 -9
  180. package/dist/internal/blocks/EmptyState.js.map +1 -1
  181. package/dist/internal/blocks/ErrorState.js +5 -9
  182. package/dist/internal/blocks/ErrorState.js.map +1 -1
  183. package/dist/internal/blocks/ExportMenu.js +6 -10
  184. package/dist/internal/blocks/ExportMenu.js.map +1 -1
  185. package/dist/internal/blocks/Form/connectors/ComboboxField.js +40 -0
  186. package/dist/internal/blocks/Form/connectors/ComboboxField.js.map +1 -0
  187. package/dist/internal/blocks/Form/connectors/MultiComboboxField.js +5 -22
  188. package/dist/internal/blocks/Form/connectors/MultiComboboxField.js.map +1 -1
  189. package/dist/internal/blocks/Form.js +1 -1
  190. package/dist/internal/blocks/FormGroup.js +1 -1
  191. package/dist/internal/blocks/GoogleButton.js +1 -1
  192. package/dist/internal/blocks/MicrosoftButton.js +1 -1
  193. package/dist/internal/blocks/MultiActionButtonGroup.js +1 -1
  194. package/dist/internal/blocks/MultiCombobox.js +161 -154
  195. package/dist/internal/blocks/MultiCombobox.js.map +1 -1
  196. package/dist/internal/blocks/NumberInput.js +1 -1
  197. package/dist/internal/blocks/OtpInput.js +1 -1
  198. package/dist/internal/blocks/PageHeader.js +1 -1
  199. package/dist/internal/blocks/PageLayout.js +1 -1
  200. package/dist/internal/blocks/PageToolbar.js +1 -1
  201. package/dist/internal/blocks/PasswordInput.js +4 -4
  202. package/dist/internal/blocks/PasswordInput.js.map +1 -1
  203. package/dist/internal/blocks/SearchInput.js +1 -1
  204. package/dist/internal/blocks/SearchInputWithNavigation.js +4 -4
  205. package/dist/internal/blocks/SectionNav.js +1 -1
  206. package/dist/internal/blocks/SplitButton.js +3 -3
  207. package/dist/internal/blocks/StatCard.js +4 -8
  208. package/dist/internal/blocks/StatCard.js.map +1 -1
  209. package/dist/internal/blocks/TextInput.js +1 -1
  210. package/dist/internal/blocks/Textarea.js +2 -2
  211. package/dist/internal/blocks/TimeInput.js +5 -5
  212. package/dist/internal/blocks/TimeInput.js.map +1 -1
  213. package/dist/internal/components/Alert.js +1 -1
  214. package/dist/internal/components/AlertModal.js +1 -1
  215. package/dist/internal/components/Avatar.js +1 -1
  216. package/dist/internal/components/Badge.js +1 -1
  217. package/dist/internal/components/BrandLogo.js +1 -1
  218. package/dist/internal/components/Breadcrumb.js +1 -1
  219. package/dist/internal/components/Button.js +1 -1
  220. package/dist/internal/components/ButtonGroup.js.map +1 -1
  221. package/dist/internal/components/Calendar.js +1 -1
  222. package/dist/internal/components/Card.js +1 -1
  223. package/dist/internal/components/Checkbox.js +1 -1
  224. package/dist/internal/components/Clipboard.js +1 -1
  225. package/dist/internal/components/CollapsiblePanel.js +2 -2
  226. package/dist/internal/components/Combobox.js +2 -2
  227. package/dist/internal/components/DatePicker.js +1 -1
  228. package/dist/internal/components/DateRangePicker.js +1 -1
  229. package/dist/internal/components/DropdownMenu.js +1 -1
  230. package/dist/internal/components/FileUpload.js +1 -1
  231. package/dist/internal/components/FullScreenModal.js +1 -1
  232. package/dist/internal/components/HoverCard.js +1 -1
  233. package/dist/internal/components/InputGroup.js +1 -1
  234. package/dist/internal/components/Kbd.js +1 -1
  235. package/dist/internal/components/MarkedText.js +1 -1
  236. package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js +1 -1
  237. package/dist/internal/components/Modal.js +1 -1
  238. package/dist/internal/components/Navbar.js +1 -1
  239. package/dist/internal/components/Pagination.js +1 -1
  240. package/dist/internal/components/PanelWithDetails.js +1 -1
  241. package/dist/internal/components/Popconfirm.js +1 -1
  242. package/dist/internal/components/Popover.js +1 -1
  243. package/dist/internal/components/RadioGroup.js +1 -1
  244. package/dist/internal/components/Search.js +1 -1
  245. package/dist/internal/components/Select.js +1 -1
  246. package/dist/internal/components/Separator.js.map +1 -1
  247. package/dist/internal/components/Sheet.js +1 -1
  248. package/dist/internal/components/Sidebar.js +1 -1
  249. package/dist/internal/components/Skeleton/Skeleton.js +5 -9
  250. package/dist/internal/components/Skeleton/Skeleton.js.map +1 -1
  251. package/dist/internal/components/Slider.js +1 -1
  252. package/dist/internal/components/SpotlightBackdrop.js +3 -8
  253. package/dist/internal/components/SpotlightBackdrop.js.map +1 -1
  254. package/dist/internal/components/StatusDot.js +8 -15
  255. package/dist/internal/components/StatusDot.js.map +1 -1
  256. package/dist/internal/components/Stepper.js +1 -1
  257. package/dist/internal/components/Switch.js +1 -1
  258. package/dist/internal/components/Table.js +1 -1
  259. package/dist/internal/components/Tabs.js +1 -1
  260. package/dist/internal/components/ThemeProvider.js +3 -3
  261. package/dist/internal/components/TimePicker.js +1 -1
  262. package/dist/internal/components/Timeline.js +1 -1
  263. package/dist/internal/components/Toast.js +2 -2
  264. package/dist/internal/components/Tooltip.js +1 -1
  265. package/dist/internal/components/Truncated.js +4 -8
  266. package/dist/internal/components/Truncated.js.map +1 -1
  267. package/dist/internal/components/Workbench.js +1 -1
  268. package/dist/internal/components/ZoomableSvg.js +1 -1
  269. package/dist/internal/hooks/useScrollbarPosition.js +1 -1
  270. package/dist/internal/hooks/useStableCallback.js +4 -13
  271. package/dist/internal/hooks/useStableCallback.js.map +1 -1
  272. package/dist/internal/utils.js +2 -2
  273. package/dist/markdown-editor.d.ts +15 -37
  274. package/dist/markdown-editor.js +17 -23
  275. package/dist/markdown-editor.js.map +1 -1
  276. package/dist/mermaid.d.ts +4 -6
  277. package/dist/mermaid.js +1 -1
  278. package/dist/rjsf.d.ts +9 -19
  279. package/dist/rjsf.js +44 -84
  280. package/dist/rjsf.js.map +1 -1
  281. package/dist/{styles-BAFscjSV.js → styles-gzcjOyKv.js} +6 -6
  282. package/dist/styles-gzcjOyKv.js.map +1 -0
  283. package/dist/styles.css +1 -1
  284. package/dist/svgTransforms-Dw2hRA-i.js +51 -0
  285. package/dist/svgTransforms-Dw2hRA-i.js.map +1 -0
  286. package/dist/testing.d.ts +3 -10
  287. package/dist/testing.js +5 -12
  288. package/dist/testing.js.map +1 -1
  289. package/dist/themeTokens-7DEab0kp.js +31 -0
  290. package/dist/themeTokens-7DEab0kp.js.map +1 -0
  291. package/dist/{toast-DIC0iNRf.js → toast-CyXEdaCZ.js} +3 -3
  292. package/dist/toast-CyXEdaCZ.js.map +1 -0
  293. package/dist/{themeScopeContext-D7fSyb06.js → useColorSchemeState-Cw4MCXUs.js} +14 -14
  294. package/dist/useColorSchemeState-Cw4MCXUs.js.map +1 -0
  295. package/dist/{useControllableState-M6494mCT.js → useControllableState-CUYXMsfz.js} +3 -7
  296. package/dist/useControllableState-CUYXMsfz.js.map +1 -0
  297. package/dist/useElement-D-RjrGa4.js +21 -0
  298. package/dist/useElement-D-RjrGa4.js.map +1 -0
  299. package/dist/useThemeAttributes-B199Regy.js +67 -0
  300. package/dist/useThemeAttributes-B199Regy.js.map +1 -0
  301. package/dist/{utils-BW4AE8VP.js → utils-Bd28bWgm.js} +31 -26
  302. package/dist/utils-Bd28bWgm.js.map +1 -0
  303. package/dist/vega.d.ts +8 -30
  304. package/dist/vega.js +5 -13
  305. package/dist/vega.js.map +1 -1
  306. package/dist/{vegaTheme-CSvFEMBl.js → vegaTheme-VQMWTlBw.js} +7 -21
  307. package/dist/vegaTheme-VQMWTlBw.js.map +1 -0
  308. package/package.json +10 -9
  309. package/src/styles.css +120 -14
  310. package/src/theme.css +126 -6
  311. package/dist/AIKit-ELIsegJz.js.map +0 -1
  312. package/dist/Alert-BsIM_oFK.js.map +0 -1
  313. package/dist/AlertModal-BGJdaRRj.js.map +0 -1
  314. package/dist/AppShell-DRgJxpXW.js.map +0 -1
  315. package/dist/Badge-o5jURtpB.js.map +0 -1
  316. package/dist/BrandLogo-CoKBk4MI.js.map +0 -1
  317. package/dist/Breadcrumb-xqEUxfwn.js.map +0 -1
  318. package/dist/Button-DsRrU5F1.js.map +0 -1
  319. package/dist/Calendar-cG5NIJ4O.js.map +0 -1
  320. package/dist/Card-Dyo7055Q.js.map +0 -1
  321. package/dist/Checkbox-Dq5fPNrO.js.map +0 -1
  322. package/dist/CodeEditor-BJKJXA0c.js.map +0 -1
  323. package/dist/ColorInput-Bj3dfPFA.js.map +0 -1
  324. package/dist/ColorModeSwitch-CWt-DZGC.js.map +0 -1
  325. package/dist/Combobox-D8PrEqTG.js +0 -619
  326. package/dist/Combobox-D8PrEqTG.js.map +0 -1
  327. package/dist/DateRangeInput-7M9Z4cVO.js.map +0 -1
  328. package/dist/DateRangePicker-DjSUFjh4.js.map +0 -1
  329. package/dist/DropdownMenu-CgVwhDvl.js.map +0 -1
  330. package/dist/FieldItem-DZGIdiXE.js.map +0 -1
  331. package/dist/FormGroup-DR_gZ25-.js.map +0 -1
  332. package/dist/FullScreenModal-CN9nAs72.js.map +0 -1
  333. package/dist/InputGroup-Do8K2hvD.js.map +0 -1
  334. package/dist/Kbd-LCFMumoq.js.map +0 -1
  335. package/dist/MermaidDiagram-ZG0iiDV_.js.map +0 -1
  336. package/dist/Modal-I3VWk2oo.js.map +0 -1
  337. package/dist/ModalTitle-CeLM_mX9.js.map +0 -1
  338. package/dist/PageHeader-Q3IpCnQd.js.map +0 -1
  339. package/dist/PageLayout-DSVM-ASz.js.map +0 -1
  340. package/dist/PageToolbar-BKVJiDAL.js.map +0 -1
  341. package/dist/Popover-BEbQrC_P.js.map +0 -1
  342. package/dist/SearchInput-92r2bkA7.js.map +0 -1
  343. package/dist/SectionNav-CNLJsiVG.js.map +0 -1
  344. package/dist/Sheet-OparjIi-.js.map +0 -1
  345. package/dist/Sidebar-CLEbBtNY.js.map +0 -1
  346. package/dist/TextInput-CFTf4Cz1.js.map +0 -1
  347. package/dist/ThemeProvider-DAmNn9Sd.js.map +0 -1
  348. package/dist/ZoomableSvg-BZlk3PFJ.js.map +0 -1
  349. package/dist/context-D7X470dy.js.map +0 -1
  350. package/dist/findLiteralMatches-BGBw8Vbl.js.map +0 -1
  351. package/dist/icons-Cek151jC.js.map +0 -1
  352. package/dist/styles-BAFscjSV.js.map +0 -1
  353. package/dist/svgTransforms-CJAYPk7o.js +0 -81
  354. package/dist/svgTransforms-CJAYPk7o.js.map +0 -1
  355. package/dist/themeScopeContext-D7fSyb06.js.map +0 -1
  356. package/dist/themeTokens-qP1-55O7.js +0 -119
  357. package/dist/themeTokens-qP1-55O7.js.map +0 -1
  358. package/dist/toast-DIC0iNRf.js.map +0 -1
  359. package/dist/useControllableState-M6494mCT.js.map +0 -1
  360. package/dist/useElement-BK3AAiIf.js +0 -24
  361. package/dist/useElement-BK3AAiIf.js.map +0 -1
  362. package/dist/utils-BW4AE8VP.js.map +0 -1
  363. package/dist/vegaTheme-CSvFEMBl.js.map +0 -1
@@ -5,11 +5,9 @@ import { jsx } from "react/jsx-runtime";
5
5
  /**
6
6
  * The dot's fill.
7
7
  *
8
- * - One class per state, each a brand-overridable status token — never a primitive hue.
9
- * - `neutral` is chrome, not a status: an entity that has no state yet, or one the caller cannot
10
- * resolve.
11
- * - A solid fill is the whole mark, so the "tint + legible foreground" rule for status _surfaces_
12
- * does not apply — there is no foreground on top of it.
8
+ * - Brand-overridable status tokens only, never a primitive hue.
9
+ * - `neutral`: no state yet, or one the caller cannot resolve.
10
+ * - No foreground on top, so the status-surface "tint + foreground" rule does not apply.
13
11
  */
14
12
  const statusDotVariants = cva([
15
13
  "tw:inline-block",
@@ -35,17 +33,12 @@ const statusDotVariants = cva([
35
33
  }
36
34
  });
37
35
  /**
38
- * A small round state mark — the one way the platform paints status as a colour.
36
+ * A small round state mark — the platform's one way to paint status as a colour.
39
37
  *
40
- * **When to use:** an entity's state beside its name in a row, a header or a chip — running,
41
- * failed, stale, idle. `status` is the whole colour API, so a customer brand recolours every dot
42
- * on the platform at once.
43
- * **When NOT to use:** as the only carrier of meaning where colour is the sole difference between
44
- * two rows — pair it with text, or use `Badge` (a labelled pill) / `Alert` (a contextual message).
45
- * For an in-flight *step* use `Stepper`, and for indeterminate background work `DotsLoader`.
46
- * **Composition:** `tw:flex tw:items-center tw:gap-2` with the label next to it. An overlay dot on
47
- * top of an icon needs a ring in the surface's own colour (`tw:ring-2 tw:ring-card`) — pass it in
48
- * `className` at the call site, since only the call site knows what it overlaps.
38
+ * **When to use:** an entity's state beside its name in a row, header or chip.
39
+ * **When NOT to use:** colour alone as meaning — pair with text, or use `Badge` / `Alert`;
40
+ * a flow step → `Stepper`; background work → `DotsLoader`.
41
+ * **Composition:** a dot overlaying an icon needs a surface-coloured ring via `className`.
49
42
  */
50
43
  const StatusDot = ({ ref, status, size, pulse = false, label, className, ...rest }) => /* @__PURE__ */ jsx("span", {
51
44
  ...rest,
@@ -1 +1 @@
1
- {"version":3,"file":"StatusDot.js","names":[],"sources":["../../../src/components/StatusDot/StatusDot.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\n/**\n * The dot's fill.\n *\n * - One class per state, each a brand-overridable status token — never a primitive hue.\n * - `neutral` is chrome, not a status: an entity that has no state yet, or one the caller cannot\n * resolve.\n * - A solid fill is the whole mark, so the \"tint + legible foreground\" rule for status _surfaces_\n * does not apply — there is no foreground on top of it.\n */\nexport const statusDotVariants = cva(['tw:inline-block', 'tw:shrink-0', 'tw:rounded-full'], {\n defaultVariants: {\n status: 'neutral',\n size: 'default',\n },\n variants: {\n status: {\n success: ['tw:bg-success'],\n warning: ['tw:bg-warning'],\n info: ['tw:bg-info'],\n destructive: ['tw:bg-destructive'],\n neutral: ['tw:bg-muted-foreground'],\n },\n size: {\n default: ['tw:size-1.5'],\n large: ['tw:size-2'],\n },\n },\n});\n\ntype Props = Omit<ComponentProps<'span'>, 'children'> &\n VariantProps<typeof statusDotVariants> & {\n /** Animates the dot. Reserve it for work that is still running. */\n pulse?: boolean;\n /**\n * What the dot says on its own.\n *\n * - Omitted, the dot is decorative (`aria-hidden`) — the right choice whenever a visible label\n * sits beside it, which would otherwise be announced twice.\n * - Given, the dot becomes an image with that name: the only state a screen reader gets.\n */\n label?: string;\n };\n\n/**\n * A small round state mark — the one way the platform paints status as a colour.\n *\n * **When to use:** an entity's state beside its name in a row, a header or a chip — running,\n * failed, stale, idle. `status` is the whole colour API, so a customer brand recolours every dot\n * on the platform at once.\n * **When NOT to use:** as the only carrier of meaning where colour is the sole difference between\n * two rows — pair it with text, or use `Badge` (a labelled pill) / `Alert` (a contextual message).\n * For an in-flight *step* use `Stepper`, and for indeterminate background work `DotsLoader`.\n * **Composition:** `tw:flex tw:items-center tw:gap-2` with the label next to it. An overlay dot on\n * top of an icon needs a ring in the surface's own colour (`tw:ring-2 tw:ring-card`) — pass it in\n * `className` at the call site, since only the call site knows what it overlaps.\n */\nexport const StatusDot = ({\n ref,\n status,\n size,\n pulse = false,\n label,\n className,\n ...rest\n}: Props) => (\n <span\n {...rest}\n ref={ref}\n data-slot=\"status-dot\"\n data-status={status ?? 'neutral'}\n {...(label == null ? { 'aria-hidden': true } : { role: 'img', 'aria-label': label })}\n className={cn(statusDotVariants({ status, size }), pulse && 'tw:animate-pulse', className)}\n />\n);\n"],"mappings":";;;;;;;;;;;;;AAcA,MAAa,oBAAoB,IAAI;CAAC;CAAmB;CAAe;AAAiB,GAAG;CAC1F,iBAAiB;EACf,QAAQ;EACR,MAAM;CACR;CACA,UAAU;EACR,QAAQ;GACN,SAAS,CAAC,eAAe;GACzB,SAAS,CAAC,eAAe;GACzB,MAAM,CAAC,YAAY;GACnB,aAAa,CAAC,mBAAmB;GACjC,SAAS,CAAC,wBAAwB;EACpC;EACA,MAAM;GACJ,SAAS,CAAC,aAAa;GACvB,OAAO,CAAC,WAAW;EACrB;CACF;AACF,CAAC;;;;;;;;;;;;;;AA6BD,MAAa,aAAa,EACxB,KACA,QACA,MACA,QAAQ,OACR,OACA,WACA,GAAG,WAEH,oBAAC,QAAD;CACE,GAAI;CACC;CACL,aAAU;CACV,eAAa,UAAU;CACvB,GAAK,SAAS,OAAO,EAAE,eAAe,KAAK,IAAI;EAAE,MAAM;EAAO,cAAc;CAAM;CAClF,WAAW,GAAG,kBAAkB;EAAE;EAAQ;CAAK,CAAC,GAAG,SAAS,oBAAoB,SAAS;AAC1F,CAAA"}
1
+ {"version":3,"file":"StatusDot.js","names":[],"sources":["../../../src/components/StatusDot/StatusDot.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\n/**\n * The dot's fill.\n *\n * - Brand-overridable status tokens only, never a primitive hue.\n * - `neutral`: no state yet, or one the caller cannot resolve.\n * - No foreground on top, so the status-surface \"tint + foreground\" rule does not apply.\n */\nexport const statusDotVariants = cva(['tw:inline-block', 'tw:shrink-0', 'tw:rounded-full'], {\n defaultVariants: {\n status: 'neutral',\n size: 'default',\n },\n variants: {\n status: {\n success: ['tw:bg-success'],\n warning: ['tw:bg-warning'],\n info: ['tw:bg-info'],\n destructive: ['tw:bg-destructive'],\n neutral: ['tw:bg-muted-foreground'],\n },\n size: {\n default: ['tw:size-1.5'],\n large: ['tw:size-2'],\n },\n },\n});\n\ntype Props = Omit<ComponentProps<'span'>, 'children'> &\n VariantProps<typeof statusDotVariants> & {\n /** Only for work still running. */\n pulse?: boolean;\n /** Accessible name; omit when a visible label sits beside it (the dot is then `aria-hidden`). */\n label?: string;\n };\n\n/**\n * A small round state mark — the platform's one way to paint status as a colour.\n *\n * **When to use:** an entity's state beside its name in a row, header or chip.\n * **When NOT to use:** colour alone as meaning — pair with text, or use `Badge` / `Alert`;\n * a flow step → `Stepper`; background work → `DotsLoader`.\n * **Composition:** a dot overlaying an icon needs a surface-coloured ring via `className`.\n */\nexport const StatusDot = ({\n ref,\n status,\n size,\n pulse = false,\n label,\n className,\n ...rest\n}: Props) => (\n <span\n {...rest}\n ref={ref}\n data-slot=\"status-dot\"\n data-status={status ?? 'neutral'}\n {...(label == null ? { 'aria-hidden': true } : { role: 'img', 'aria-label': label })}\n className={cn(statusDotVariants({ status, size }), pulse && 'tw:animate-pulse', className)}\n />\n);\n"],"mappings":";;;;;;;;;;;AAYA,MAAa,oBAAoB,IAAI;CAAC;CAAmB;CAAe;AAAiB,GAAG;CAC1F,iBAAiB;EACf,QAAQ;EACR,MAAM;CACR;CACA,UAAU;EACR,QAAQ;GACN,SAAS,CAAC,eAAe;GACzB,SAAS,CAAC,eAAe;GACzB,MAAM,CAAC,YAAY;GACnB,aAAa,CAAC,mBAAmB;GACjC,SAAS,CAAC,wBAAwB;EACpC;EACA,MAAM;GACJ,SAAS,CAAC,aAAa;GACvB,OAAO,CAAC,WAAW;EACrB;CACF;AACF,CAAC;;;;;;;;;AAkBD,MAAa,aAAa,EACxB,KACA,QACA,MACA,QAAQ,OACR,OACA,WACA,GAAG,WAEH,oBAAC,QAAD;CACE,GAAI;CACC;CACL,aAAU;CACV,eAAa,UAAU;CACvB,GAAK,SAAS,OAAO,EAAE,eAAe,KAAK,IAAI;EAAE,MAAM;EAAO,cAAc;CAAM;CAClF,WAAW,GAAG,kBAAkB;EAAE;EAAQ;CAAK,CAAC,GAAG,SAAS,oBAAoB,SAAS;AAC1F,CAAA"}
@@ -1,2 +1,2 @@
1
- import { Stepper } from "../../Stepper-C8sm9ZFM.js";
1
+ import { Stepper } from "../../Stepper-BLkLhfnd.js";
2
2
  export { Stepper };
@@ -1,2 +1,2 @@
1
- import { Switch } from "../../Switch-B0WdGSjz.js";
1
+ import { Switch } from "../../Switch-DZvNePOm.js";
2
2
  export { Switch };
@@ -1,2 +1,2 @@
1
- import { Table, TableSortHeader, tableAriaSort } from "../../Table-CvYuTuNU.js";
1
+ import { Table, TableSortHeader, tableAriaSort } from "../../Table-BaVT5Tkn.js";
2
2
  export { Table, TableSortHeader, tableAriaSort };
@@ -1,2 +1,2 @@
1
- import { Tabs, TabsContent } from "../../Tabs-eB974xJf.js";
1
+ import { Tabs, TabsContent } from "../../Tabs-Dt9oLYHC.js";
2
2
  export { Tabs, TabsContent };
@@ -1,4 +1,4 @@
1
1
  import { DEFAULT_BRAND_ID, DEFAULT_COLOR_SCHEME } from "../../defaults-i_xG2F_1.js";
2
- import { ArgoDesignContext, useArgoDesign, useTheme } from "../../context-D7X470dy.js";
3
- import { ThemeProvider, ThemeScope, brandSchema, exampleCustomer, keboola, keboolaLegacySidebar, keboolaLegacyTopnav, useThemeScopeContainer } from "../../ThemeProvider-DAmNn9Sd.js";
4
- export { ArgoDesignContext, DEFAULT_COLOR_SCHEME, DEFAULT_BRAND_ID as DEFAULT_KEBOOLA_BRAND_ID, ThemeProvider, ThemeScope, brandSchema, exampleCustomer, keboola, keboolaLegacySidebar, keboolaLegacyTopnav, useArgoDesign, useTheme, useThemeScopeContainer };
2
+ import { ArgoDesignContext, useArgoDesign, useTheme } from "../../context-U293r3v-.js";
3
+ import { ThemeProvider, ThemeScope, agnes, brandSchema, exampleCustomer, harbor, keboola, keboolaLegacySidebar, keboolaLegacyTopnav, useThemeScopeContainer } from "../../ThemeProvider-DXsxFg1U.js";
4
+ export { ArgoDesignContext, DEFAULT_COLOR_SCHEME, DEFAULT_BRAND_ID as DEFAULT_KEBOOLA_BRAND_ID, ThemeProvider, ThemeScope, agnes, brandSchema, exampleCustomer, harbor, keboola, keboolaLegacySidebar, keboolaLegacyTopnav, useArgoDesign, useTheme, useThemeScopeContainer };
@@ -1,2 +1,2 @@
1
- import { TimePicker } from "../../TimePicker-BGeqc-Ed.js";
1
+ import { TimePicker } from "../../TimePicker-CDGYrRxi.js";
2
2
  export { TimePicker };
@@ -1,2 +1,2 @@
1
- import { Timeline } from "../../Timeline-C8-wnRRr.js";
1
+ import { Timeline } from "../../Timeline-B-I6sb0M.js";
2
2
  export { Timeline };
@@ -1,3 +1,3 @@
1
- import { toast } from "../../toast-DIC0iNRf.js";
2
- import { Toaster, useNotification } from "../../Toast-Dr6Uw7ao.js";
1
+ import { toast } from "../../toast-CyXEdaCZ.js";
2
+ import { Toaster, useNotification } from "../../Toast-PfQf3vj-.js";
3
3
  export { Toaster, toast, useNotification };
@@ -1,2 +1,2 @@
1
- import { HINT_UNDERLINE_CLASS_NAME, Tooltip, TooltipProvider } from "../../utils-BW4AE8VP.js";
1
+ import { HINT_UNDERLINE_CLASS_NAME, Tooltip, TooltipProvider } from "../../utils-Bd28bWgm.js";
2
2
  export { HINT_UNDERLINE_CLASS_NAME, Tooltip, TooltipProvider };
@@ -1,18 +1,14 @@
1
1
  import { cn } from "../../classNames-BzrkDnOD.js";
2
- import { Tooltip } from "../../utils-BW4AE8VP.js";
2
+ import { Tooltip } from "../../utils-Bd28bWgm.js";
3
3
  import { useState } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  //#region src/components/Truncated.tsx
6
6
  const OFFSET_TOLERANCE = 2;
7
7
  /**
8
- * Whether the text is actually cut off, on either axis.
8
+ * Whether the text is cut off, on either axis.
9
9
  *
10
- * - A clamp that wraps overflows **vertically**.
11
- * - A single line that cannot wrap overflows **horizontally** — the case an
12
- * inherited `white-space: nowrap` produces (e.g. inside a `Button` under a
13
- * non-legacy brand).
14
- * - The tolerance absorbs subpixel rounding, which would otherwise report
15
- * overflow on text that fits exactly.
10
+ * - Horizontal covers text that cannot wrap (inherited `white-space: nowrap`).
11
+ * - The tolerance absorbs subpixel rounding on text that fits exactly.
16
12
  */
17
13
  const hasTruncationOverflow = (m) => m.scrollHeight - OFFSET_TOLERANCE >= m.clientHeight || m.scrollWidth - OFFSET_TOLERANCE >= m.clientWidth;
18
14
  const Truncated = ({ ref, text, tooltip = text, className, twoLines = false, noTooltip = false, tooltipVariant = "explanatory", tooltipPlacement = "top", ...rest }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Truncated.js","names":[],"sources":["../../../src/components/Truncated.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { cn } from '../utils';\n\nimport { type Props as TooltipProps, Tooltip } from './Tooltip';\n\nconst OFFSET_TOLERANCE = 2;\n\ntype Metrics = Pick<HTMLElement, 'scrollWidth' | 'clientWidth' | 'scrollHeight' | 'clientHeight'>;\n\n/**\n * Whether the text is actually cut off, on either axis.\n *\n * - A clamp that wraps overflows **vertically**.\n * - A single line that cannot wrap overflows **horizontally** — the case an\n * inherited `white-space: nowrap` produces (e.g. inside a `Button` under a\n * non-legacy brand).\n * - The tolerance absorbs subpixel rounding, which would otherwise report\n * overflow on text that fits exactly.\n */\nexport const hasTruncationOverflow = (m: Metrics): boolean =>\n m.scrollHeight - OFFSET_TOLERANCE >= m.clientHeight ||\n m.scrollWidth - OFFSET_TOLERANCE >= m.clientWidth;\n\ntype Props = {\n text: ReactNode;\n tooltip?: ReactNode;\n twoLines?: boolean;\n noTooltip?: boolean;\n tooltipVariant?: TooltipProps['variant'];\n tooltipPlacement?: TooltipProps['placement'];\n} & Omit<ComponentProps<'span'>, 'children'>;\n\nexport const Truncated = ({\n ref,\n text,\n tooltip = text,\n className,\n twoLines = false,\n noTooltip = false,\n tooltipVariant = 'explanatory',\n tooltipPlacement = 'top',\n ...rest\n}: Props) => {\n const tooltipText = typeof tooltip === 'string' ? tooltip : '';\n const [showTooltip, setShowTooltip] = useState(false);\n\n // v4's native `line-clamp-*` emits the full `-webkit-box` recipe (display,\n // box-orient, line-clamp, overflow). The old hand-rolled `[display:-webkit-box!important]`\n // arbitrary property produced NO rule under v4 — it doesn't support `!important` inside\n // arbitrary-property brackets (v3 did) — so the clamp silently stopped applying and long\n // text wrapped instead of truncating.\n //\n // `text-ellipsis` covers what the clamp cannot: `-webkit-line-clamp` draws its ellipsis\n // only on text it wrapped itself, so text that cannot wrap (an inherited\n // `white-space: nowrap`) was cut mid-word with no ellipsis at all.\n const truncatedClasses = cn(\n className,\n 'tw:[word-break:break-all] tw:text-ellipsis',\n twoLines ? 'tw:line-clamp-2 tw:[word-break:break-word]' : 'tw:line-clamp-1',\n );\n\n if (noTooltip || !tooltipText) {\n return (\n <span ref={ref} className={truncatedClasses} {...rest}>\n {text}\n </span>\n );\n }\n\n return (\n <Tooltip\n placement={tooltipPlacement}\n variant={tooltipVariant}\n forceHide={!showTooltip}\n tooltip={<div>{tooltipText}</div>}\n triggerAsChild\n >\n <span\n ref={ref}\n className={truncatedClasses}\n {...rest}\n onMouseOver={(e) => {\n setShowTooltip(hasTruncationOverflow(e.currentTarget));\n rest.onMouseOver?.(e);\n }}\n onFocus={(e) => {\n setShowTooltip(hasTruncationOverflow(e.currentTarget));\n rest.onFocus?.(e);\n }}\n >\n {text}\n </span>\n </Tooltip>\n );\n};\n"],"mappings":";;;;;AAOA,MAAM,mBAAmB;;;;;;;;;;;AAczB,MAAa,yBAAyB,MACpC,EAAE,eAAe,oBAAoB,EAAE,gBACvC,EAAE,cAAc,oBAAoB,EAAE;AAWxC,MAAa,aAAa,EACxB,KACA,MACA,UAAU,MACV,WACA,WAAW,OACX,YAAY,OACZ,iBAAiB,eACjB,mBAAmB,OACnB,GAAG,WACQ;CACX,MAAM,cAAc,OAAO,YAAY,WAAW,UAAU;CAC5D,MAAM,CAAC,aAAa,kBAAkB,SAAS,KAAK;CAWpD,MAAM,mBAAmB,GACvB,WACA,8CACA,WAAW,+CAA+C,iBAC5D;CAEA,IAAI,aAAa,CAAC,aAChB,OACE,oBAAC,QAAD;EAAW;EAAK,WAAW;EAAkB,GAAI;EAC9C,UAAA;CACG,CAAA;CAIV,OACE,oBAAC,SAAD;EACE,WAAW;EACX,SAAS;EACT,WAAW,CAAC;EACZ,SAAS,oBAAC,OAAD,EAAA,UAAM,YAAiB,CAAA;EAChC,gBAAA;EAEA,UAAA,oBAAC,QAAD;GACO;GACL,WAAW;GACX,GAAI;GACJ,cAAc,MAAM;IAClB,eAAe,sBAAsB,EAAE,aAAa,CAAC;IACrD,KAAK,cAAc,CAAC;GACtB;GACA,UAAU,MAAM;IACd,eAAe,sBAAsB,EAAE,aAAa,CAAC;IACrD,KAAK,UAAU,CAAC;GAClB;GAEC,UAAA;EACG,CAAA;CACC,CAAA;AAEb"}
1
+ {"version":3,"file":"Truncated.js","names":[],"sources":["../../../src/components/Truncated.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { cn } from '../utils';\n\nimport { type Props as TooltipProps, Tooltip } from './Tooltip';\n\nconst OFFSET_TOLERANCE = 2;\n\ntype Metrics = Pick<HTMLElement, 'scrollWidth' | 'clientWidth' | 'scrollHeight' | 'clientHeight'>;\n\n/**\n * Whether the text is cut off, on either axis.\n *\n * - Horizontal covers text that cannot wrap (inherited `white-space: nowrap`).\n * - The tolerance absorbs subpixel rounding on text that fits exactly.\n */\nexport const hasTruncationOverflow = (m: Metrics): boolean =>\n m.scrollHeight - OFFSET_TOLERANCE >= m.clientHeight ||\n m.scrollWidth - OFFSET_TOLERANCE >= m.clientWidth;\n\ntype Props = {\n text: ReactNode;\n tooltip?: ReactNode;\n twoLines?: boolean;\n noTooltip?: boolean;\n tooltipVariant?: TooltipProps['variant'];\n tooltipPlacement?: TooltipProps['placement'];\n} & Omit<ComponentProps<'span'>, 'children'>;\n\nexport const Truncated = ({\n ref,\n text,\n tooltip = text,\n className,\n twoLines = false,\n noTooltip = false,\n tooltipVariant = 'explanatory',\n tooltipPlacement = 'top',\n ...rest\n}: Props) => {\n const tooltipText = typeof tooltip === 'string' ? tooltip : '';\n const [showTooltip, setShowTooltip] = useState(false);\n\n // `text-ellipsis`: the clamp draws an ellipsis only on text it wrapped, not on `nowrap` text.\n const truncatedClasses = cn(\n className,\n 'tw:[word-break:break-all] tw:text-ellipsis',\n twoLines ? 'tw:line-clamp-2 tw:[word-break:break-word]' : 'tw:line-clamp-1',\n );\n\n if (noTooltip || !tooltipText) {\n return (\n <span ref={ref} className={truncatedClasses} {...rest}>\n {text}\n </span>\n );\n }\n\n return (\n <Tooltip\n placement={tooltipPlacement}\n variant={tooltipVariant}\n forceHide={!showTooltip}\n tooltip={<div>{tooltipText}</div>}\n triggerAsChild\n >\n <span\n ref={ref}\n className={truncatedClasses}\n {...rest}\n onMouseOver={(e) => {\n setShowTooltip(hasTruncationOverflow(e.currentTarget));\n rest.onMouseOver?.(e);\n }}\n onFocus={(e) => {\n setShowTooltip(hasTruncationOverflow(e.currentTarget));\n rest.onFocus?.(e);\n }}\n >\n {text}\n </span>\n </Tooltip>\n );\n};\n"],"mappings":";;;;;AAOA,MAAM,mBAAmB;;;;;;;AAUzB,MAAa,yBAAyB,MACpC,EAAE,eAAe,oBAAoB,EAAE,gBACvC,EAAE,cAAc,oBAAoB,EAAE;AAWxC,MAAa,aAAa,EACxB,KACA,MACA,UAAU,MACV,WACA,WAAW,OACX,YAAY,OACZ,iBAAiB,eACjB,mBAAmB,OACnB,GAAG,WACQ;CACX,MAAM,cAAc,OAAO,YAAY,WAAW,UAAU;CAC5D,MAAM,CAAC,aAAa,kBAAkB,SAAS,KAAK;CAGpD,MAAM,mBAAmB,GACvB,WACA,8CACA,WAAW,+CAA+C,iBAC5D;CAEA,IAAI,aAAa,CAAC,aAChB,OACE,oBAAC,QAAD;EAAW;EAAK,WAAW;EAAkB,GAAI;EAC9C,UAAA;CACG,CAAA;CAIV,OACE,oBAAC,SAAD;EACE,WAAW;EACX,SAAS;EACT,WAAW,CAAC;EACZ,SAAS,oBAAC,OAAD,EAAA,UAAM,YAAiB,CAAA;EAChC,gBAAA;EAEA,UAAA,oBAAC,QAAD;GACO;GACL,WAAW;GACX,GAAI;GACJ,cAAc,MAAM;IAClB,eAAe,sBAAsB,EAAE,aAAa,CAAC;IACrD,KAAK,cAAc,CAAC;GACtB;GACA,UAAU,MAAM;IACd,eAAe,sBAAsB,EAAE,aAAa,CAAC;IACrD,KAAK,UAAU,CAAC;GAClB;GAEC,UAAA;EACG,CAAA;CACC,CAAA;AAEb"}
@@ -1,2 +1,2 @@
1
- import { DEFAULT_WORKBENCH_BAR_HEIGHT_IN_REM, DEFAULT_WORKBENCH_PANEL_HEIGHT_IN_PX, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX, Workbench, useWorkbench } from "../../Workbench-UR2FBC7I.js";
1
+ import { DEFAULT_WORKBENCH_BAR_HEIGHT_IN_REM, DEFAULT_WORKBENCH_PANEL_HEIGHT_IN_PX, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX, Workbench, useWorkbench } from "../../Workbench-DmZzpkj7.js";
2
2
  export { DEFAULT_WORKBENCH_BAR_HEIGHT_IN_REM, DEFAULT_WORKBENCH_PANEL_HEIGHT_IN_PX, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX, Workbench, useWorkbench };
@@ -1,2 +1,2 @@
1
- import { ZoomableSvg, svgToPngBlob, toSvgFileContent } from "../../ZoomableSvg-BZlk3PFJ.js";
1
+ import { ZoomableSvg, svgToPngBlob, toSvgFileContent } from "../../ZoomableSvg-BzXVfgnI.js";
2
2
  export { ZoomableSvg, svgToPngBlob, toSvgFileContent };
@@ -1,4 +1,4 @@
1
- import { useElement } from "../../useElement-BK3AAiIf.js";
1
+ import { useElement } from "../../useElement-D-RjrGa4.js";
2
2
  import { useEffect, useState } from "react";
3
3
  //#region src/hooks/useScrollbarPosition.ts
4
4
  const calcPosition = ({ scrollHeight, clientHeight, scrollTop }) => {
@@ -1,20 +1,11 @@
1
1
  import { useCallback, useLayoutEffect, useRef } from "react";
2
2
  //#region src/hooks/useStableCallback.ts
3
3
  /**
4
- * A callback with a permanently stable identity that always sees the latest
5
- * render's values — for any consumer that keys off the handler's identity: a
6
- * third-party component that redoes expensive work when it changes, or a
7
- * memoized context value.
4
+ * A callback with a stable identity that always sees the latest render's values.
8
5
  *
9
- * React 19.2's `useEffectEvent` does this in one line, but it is scoped to
10
- * Effects and explicitly not to be passed to another component, which is the
11
- * whole point here.
12
- *
13
- * The swap is a layout effect rather than a passive one so it lands before the
14
- * browser can paint and accept input against the previous render's handler. It
15
- * is still an effect, and a child's runs before its parent's — so a consumer
16
- * calling the returned function from its own layout effect can still see the
17
- * previous render's closure.
6
+ * - Not `useEffectEvent`: that one must not be passed to other components.
7
+ * - Updated in a layout effect, so it lands before paint and input.
8
+ * - A child's layout effect calling it still sees the previous render's closure.
18
9
  */
19
10
  const useStableCallback = (callback) => {
20
11
  const latestRef = useRef(callback);
@@ -1 +1 @@
1
- {"version":3,"file":"useStableCallback.js","names":[],"sources":["../../../src/hooks/useStableCallback.ts"],"sourcesContent":["import { useCallback, useLayoutEffect, useRef } from 'react';\n\n/**\n * A callback with a permanently stable identity that always sees the latest\n * render's values — for any consumer that keys off the handler's identity: a\n * third-party component that redoes expensive work when it changes, or a\n * memoized context value.\n *\n * React 19.2's `useEffectEvent` does this in one line, but it is scoped to\n * Effects and explicitly not to be passed to another component, which is the\n * whole point here.\n *\n * The swap is a layout effect rather than a passive one so it lands before the\n * browser can paint and accept input against the previous render's handler. It\n * is still an effect, and a child's runs before its parent's — so a consumer\n * calling the returned function from its own layout effect can still see the\n * previous render's closure.\n */\nexport const useStableCallback = <Args extends unknown[], Result>(\n callback: (...args: Args) => Result,\n): ((...args: Args) => Result) => {\n const latestRef = useRef(callback);\n\n useLayoutEffect(() => {\n latestRef.current = callback;\n }, [callback]);\n\n return useCallback((...args: Args) => latestRef.current(...args), []);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,MAAa,qBACX,aACgC;CAChC,MAAM,YAAY,OAAO,QAAQ;CAEjC,sBAAsB;EACpB,UAAU,UAAU;CACtB,GAAG,CAAC,QAAQ,CAAC;CAEb,OAAO,aAAa,GAAG,SAAe,UAAU,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC;AACtE"}
1
+ {"version":3,"file":"useStableCallback.js","names":[],"sources":["../../../src/hooks/useStableCallback.ts"],"sourcesContent":["import { useCallback, useLayoutEffect, useRef } from 'react';\n\n/**\n * A callback with a stable identity that always sees the latest render's values.\n *\n * - Not `useEffectEvent`: that one must not be passed to other components.\n * - Updated in a layout effect, so it lands before paint and input.\n * - A child's layout effect calling it still sees the previous render's closure.\n */\nexport const useStableCallback = <Args extends unknown[], Result>(\n callback: (...args: Args) => Result,\n): ((...args: Args) => Result) => {\n const latestRef = useRef(callback);\n\n useLayoutEffect(() => {\n latestRef.current = callback;\n }, [callback]);\n\n return useCallback((...args: Args) => latestRef.current(...args), []);\n};\n"],"mappings":";;;;;;;;;AASA,MAAa,qBACX,aACgC;CAChC,MAAM,YAAY,OAAO,QAAQ;CAEjC,sBAAsB;EACpB,UAAU,UAAU;CACtB,GAAG,CAAC,QAAQ,CAAC;CAEb,OAAO,aAAa,GAAG,SAAe,UAAU,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC;AACtE"}
@@ -1,5 +1,5 @@
1
1
  import { cn } from "../classNames-BzrkDnOD.js";
2
- import { DEFAULT_ENTRY_SEPARATOR, copyToClipboard, createChangeInputEvent, createPrefixedString, debounce, isMac, noop, splitEntry, useSHA256, withHiddenFullscreen, withTooltipProvider, withVisualSettle } from "../utils-BW4AE8VP.js";
3
- import { findLiteralMatches, findLiteralTermMatches, hasLiteralMatch } from "../findLiteralMatches-BGBw8Vbl.js";
2
+ import { DEFAULT_ENTRY_SEPARATOR, copyToClipboard, createChangeInputEvent, createPrefixedString, debounce, isMac, noop, splitEntry, useSHA256, withHiddenFullscreen, withTooltipProvider, withVisualSettle } from "../utils-Bd28bWgm.js";
3
+ import { findLiteralMatches, findLiteralTermMatches, hasLiteralMatch } from "../findLiteralMatches-DgGLzyG0.js";
4
4
  import { mergeRefs } from "./utils/mergeRefs.js";
5
5
  export { DEFAULT_ENTRY_SEPARATOR, cn, copyToClipboard, createChangeInputEvent, createPrefixedString, debounce, findLiteralMatches, findLiteralTermMatches, hasLiteralMatch, isMac, mergeRefs, noop, splitEntry, useSHA256, withHiddenFullscreen, withTooltipProvider, withVisualSettle };
@@ -4,30 +4,20 @@ type MarkdownEditorProps = {
4
4
  /** Markdown string (controlled) */
5
5
  value: string;
6
6
  onChange?: (markdown: string) => void;
7
- /**
8
- * Renders content but never accepts input. Use for permanent view-only contexts
9
- * (e.g. a current user lacks edit permission). Toolbar is hidden.
10
- */
7
+ /** Permanent view-only (e.g. no edit permission). Hides the toolbar. */
11
8
  readOnly?: boolean;
12
- /**
13
- * Temporarily blocks input but signals intent to re-enable
14
- * (e.g. while a save is in flight). Functionally identical to `readOnly` today.
15
- */
9
+ /** Temporary block (e.g. save in flight). Behaves like `readOnly`. */
16
10
  disabled?: boolean;
17
11
  placeholder?: string;
18
12
  autoFocus?: boolean;
19
- /** Invoked on Cmd/Ctrl+Enter — typically used to commit a form. */
13
+ /** Invoked on Cmd/Ctrl+Enter. */
20
14
  onSave?: () => void;
21
15
  /**
22
- * Invoked on Escape in inline-edit mode (`singleLine || saveOnBlur`). Per the
23
- * inline-editable-text pattern spec, Esc reverts the in-progress edit — callers
24
- * reset `value` to the last-committed state inside this handler.
16
+ * Escape in inline-edit mode (`singleLine || saveOnBlur`).
17
+ * Callers reset `value` to the last-committed state here.
25
18
  */
26
19
  onCancel?: () => void;
27
- /**
28
- * Async image upload. Resolved URL is embedded as the image src
29
- * (`![alt](url)` in the underlying markdown).
30
- */
20
+ /** The resolved URL becomes the image src in the markdown. */
31
21
  onImageUpload?: (file: File) => Promise<{
32
22
  url: string;
33
23
  }>;
@@ -38,38 +28,26 @@ type MarkdownEditorProps = {
38
28
  }) => ReactNode;
39
29
  showToolbar?: boolean;
40
30
  /**
41
- * Strips the prose typography wrapper, removes the min-height, and tightens padding so
42
- * the editor visually blends with surrounding text. Use for inline / Linear-style edit
43
- * affordances inside headings, list rows, or table cells. Pair with `className` to set
44
- * the caller's typography.
31
+ * No prose wrapper, min-height or padding — blends into surrounding text for inline editing.
32
+ * Set typography via `className`.
45
33
  */
46
34
  compact?: boolean;
47
- /**
48
- * Calls `onSave` when focus leaves the editor (and is not moved into the toolbar).
49
- * `onChange` already keeps the caller's value in sync — `onSave` is the "commit" signal.
50
- */
35
+ /** Calls `onSave` when focus leaves the editor (the toolbar doesn't count). */
51
36
  saveOnBlur?: boolean;
52
37
  /**
53
- * Disables block-level markdown (lists, headings, code blocks, HR) and makes a plain
54
- * Enter press trigger `onSave` and blur the editor. Shift+Enter still inserts a soft
55
- * line break. Use for editable titles.
38
+ * No block-level markdown; Enter blurs the editor, Shift+Enter inserts a soft break.
39
+ * Use for editable titles.
56
40
  */
57
41
  singleLine?: boolean;
58
- /**
59
- * Clamps content to 2 lines (truncating with an ellipsis) in the display (not-focused)
60
- * state; focus expands the editor to full height (no clamp). `line-clamp` is self-gating,
61
- * so short/empty content renders fully with no truncation. Per the inline-editable-text
62
- * pattern spec for description-style slots.
63
- */
42
+ /** Clamps to 2 lines with an ellipsis while not focused; focus shows everything. */
64
43
  clampDisplay?: boolean;
65
44
  /**
66
- * Minimum visible height in lines. `1` renders as a single line that grows with
67
- * content (Linear/Slack/GitHub-PR-comment pattern); `0` removes the floor entirely.
68
- * Omit to keep the default ~4-line floor. Ignored in `compact` mode (which has no floor).
45
+ * Minimum height in lines; `0` removes the floor. Default ~4 lines.
46
+ * Ignored in `compact` mode.
69
47
  */
70
48
  minRows?: number;
71
49
  };
72
- declare const MarkdownEditor: ({ value, onChange, readOnly, placeholder, autoFocus, disabled, onSave, onCancel, onImageUpload, className, imageRenderer, showToolbar, compact, saveOnBlur, singleLine, clampDisplay, minRows }: MarkdownEditorProps) => import("react/jsx-runtime").JSX.Element;
50
+ declare const MarkdownEditor: ({ value, onChange, readOnly, placeholder, autoFocus, disabled, onSave, onCancel, onImageUpload, className, imageRenderer, showToolbar, compact, saveOnBlur, singleLine, clampDisplay, minRows }: MarkdownEditorProps) => import("react").JSX.Element;
73
51
  //#endregion
74
52
  export { MarkdownEditor, type MarkdownEditorProps };
75
53
  //# sourceMappingURL=markdown-editor.d.ts.map
@@ -1,15 +1,15 @@
1
1
  import { cn } from "./classNames-BzrkDnOD.js";
2
- import { Tooltip } from "./utils-BW4AE8VP.js";
3
- import { AlignCenter, AlignJustify, AlignLeft, AlignRight, Bold, ChevronDown, Code, Heading1, Heading2, Heading3, Italic, Link, List, ListOrdered, Quote, SquareCode, Strikethrough, Type, Underline } from "./icons-Cek151jC.js";
4
- import { Button } from "./Button-DsRrU5F1.js";
2
+ import { Tooltip } from "./utils-Bd28bWgm.js";
3
+ import { AlignCenter, AlignJustify, AlignLeft, AlignRight, Bold, ChevronDown, Code, Heading1, Heading2, Heading3, Italic, Link, List, ListOrdered, Quote, SquareCode, Strikethrough, Type, Underline } from "./icons-wcA70iQx.js";
4
+ import { Button } from "./Button-Ca4Q3VJU.js";
5
5
  import { ButtonGroup } from "./internal/components/ButtonGroup.js";
6
- import { DropdownMenu } from "./DropdownMenu-CgVwhDvl.js";
6
+ import { DropdownMenu } from "./DropdownMenu-gRM-A8qU.js";
7
7
  import { Label } from "./internal/components/Label.js";
8
8
  import { useStableCallback } from "./internal/hooks/useStableCallback.js";
9
- import { TextInput } from "./TextInput-CFTf4Cz1.js";
10
- import { FormGroup } from "./FormGroup-DR_gZ25-.js";
9
+ import { TextInput } from "./TextInput-CDG2XpBl.js";
10
+ import { FormGroup } from "./FormGroup-CmNiAtU6.js";
11
11
  import { Skeleton } from "./internal/components/Skeleton/Skeleton.js";
12
- import { toast } from "./toast-DIC0iNRf.js";
12
+ import { toast } from "./toast-CyXEdaCZ.js";
13
13
  import { Suspense, createContext, lazy, use, useCallback, useEffect, useRef, useState } from "react";
14
14
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
15
15
  import { createPortal } from "react-dom";
@@ -141,7 +141,7 @@ const $isImageNode = (node) => {
141
141
  };
142
142
  //#endregion
143
143
  //#region src/blocks/MarkdownEditor/nodes/MermaidNodeComponent.tsx
144
- const MermaidDiagram = lazy(() => import("./MermaidDiagram-ZG0iiDV_.js").then((n) => n.MermaidDiagram_exports).then((m) => ({ default: m.MermaidDiagram }), (error) => {
144
+ const MermaidDiagram = lazy(() => import("./MermaidDiagram-BQvz6bhv.js").then((n) => n.MermaidDiagram_exports).then((m) => ({ default: m.MermaidDiagram }), (error) => {
145
145
  console.error("[MarkdownEditor] failed to load MermaidDiagram chunk", error);
146
146
  return { default: ({ code }) => /* @__PURE__ */ jsx("pre", { children: /* @__PURE__ */ jsx("code", { children: code }) }) };
147
147
  }));
@@ -340,9 +340,10 @@ const KeyboardPlugin = ({ onSave, onCancel, singleLine, blurOnEscape, skipBlurSa
340
340
  return null;
341
341
  };
342
342
  /**
343
- * Custom transformers = our additions + built-in Lexical transformers.
344
- * MERMAID is placed before TRANSFORMERS so it intercepts ` ```mermaid ``` ` before the generic CODE transformer.
345
- * IMAGE is placed before built-in LINK to prevent `![alt](url)` from being parsed as `!` + link.
343
+ * Our transformers plus Lexical's built-ins; order matters.
344
+ *
345
+ * - MERMAID precedes TRANSFORMERS, so it wins over the generic CODE transformer.
346
+ * - IMAGE precedes LINK, so `![alt](url)` is not parsed as `!` + link.
346
347
  */
347
348
  const CUSTOM_TRANSFORMERS = [
348
349
  {
@@ -409,13 +410,10 @@ const CUSTOM_TRANSFORMERS = [
409
410
  ...TRANSFORMERS
410
411
  ];
411
412
  /**
412
- * No transformers = plain text. `singleLine` mode edits entity names / titles, which are
413
- * plain text, not markdown. Parsing inline formatting here corrupts ordinary names: e.g.
414
- * `staging_chargebee_invoices` would render the `_chargebee_` span as italics, and Lexical
415
- * escapes the underscores on export (`\_`) to prevent exactly that — but those backslashes
416
- * then leak into the persisted name. Dropping every transformer keeps `_`, `*`, `` ` ``, `~`
417
- * literal on both import and export; pair the empty set with `unescapeMarkdownText` on export
418
- * to strip Lexical's escaping (see MarkdownSyncPlugin).
413
+ * No transformers: `singleLine` mode edits plain-text entity names, not markdown.
414
+ *
415
+ * - Inline formatting would corrupt names like `a_b_c` (italics, then `\_` on export).
416
+ * - Pair with `unescapeMarkdownText` on export (see MarkdownSyncPlugin).
419
417
  */
420
418
  const SINGLE_LINE_TRANSFORMERS = [];
421
419
  const TABLE_FENCE_LANG = "__kbc_table__";
@@ -463,11 +461,7 @@ const postprocessMarkdown = (markdown) => {
463
461
  const regex = new RegExp(`\`\`\`${TABLE_FENCE_LANG}\\n([\\s\\S]*?)\\n\`\`\``, "g");
464
462
  return markdown.replace(regex, "$1");
465
463
  };
466
- /**
467
- * Reverses the backslash-escaping Lexical applies to markdown punctuation (`* _ ` ~ \`) when
468
- * exporting text nodes. Used for `singleLine` (plain-text) mode, where the export value is a
469
- * bare entity name — the escaping would otherwise persist as literal backslashes in the name.
470
- */
464
+ /** Reverses Lexical's export escaping of `* _ ` ~ \`, for `singleLine` plain-text names. */
471
465
  const unescapeMarkdownText = (markdown) => markdown.replace(/\\([*_`~\\])/g, "$1");
472
466
  //#endregion
473
467
  //#region src/blocks/MarkdownEditor/plugins/MarkdownSyncPlugin.tsx