@d4gger/design-system 3.0.0 → 4.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 (772) hide show
  1. package/README.md +19 -0
  2. package/dist/{components/controlGroup/ControlGroup.cjs → _internal/floatingLayer.cjs} +11 -26
  3. package/dist/_internal/floatingLayer.cjs.map +7 -0
  4. package/dist/_internal/floatingLayer.d.cts +28 -0
  5. package/dist/_internal/floatingLayer.d.cts.map +1 -0
  6. package/dist/_internal/floatingLayer.d.mts +28 -0
  7. package/dist/_internal/floatingLayer.d.mts.map +1 -0
  8. package/dist/_internal/floatingLayer.d.ts +28 -0
  9. package/dist/_internal/floatingLayer.d.ts.map +1 -0
  10. package/dist/_internal/floatingLayer.js +11 -0
  11. package/dist/_internal/floatingLayer.js.map +7 -0
  12. package/dist/components/accordion.css +9 -2
  13. package/dist/components/alert/Alert.cjs +11 -7
  14. package/dist/components/alert/Alert.cjs.map +2 -2
  15. package/dist/components/alert/Alert.d.cts.map +1 -1
  16. package/dist/components/alert/Alert.d.mts.map +1 -1
  17. package/dist/components/alert/Alert.d.ts.map +1 -1
  18. package/dist/components/alert/Alert.js +12 -8
  19. package/dist/components/alert/Alert.js.map +2 -2
  20. package/dist/components/alert.css +13 -0
  21. package/dist/components/article-nodes.css +16 -1
  22. package/dist/components/articleNodes/ArticleNodes.cjs +46 -5
  23. package/dist/components/articleNodes/ArticleNodes.cjs.map +2 -2
  24. package/dist/components/articleNodes/ArticleNodes.d.cts +7 -3
  25. package/dist/components/articleNodes/ArticleNodes.d.cts.map +1 -1
  26. package/dist/components/articleNodes/ArticleNodes.d.mts +7 -3
  27. package/dist/components/articleNodes/ArticleNodes.d.mts.map +1 -1
  28. package/dist/components/articleNodes/ArticleNodes.d.ts +7 -3
  29. package/dist/components/articleNodes/ArticleNodes.d.ts.map +1 -1
  30. package/dist/components/articleNodes/ArticleNodes.js +46 -5
  31. package/dist/components/articleNodes/ArticleNodes.js.map +2 -2
  32. package/dist/components/articleNodes/articleExtensions.cjs +21 -4
  33. package/dist/components/articleNodes/articleExtensions.cjs.map +2 -2
  34. package/dist/components/articleNodes/articleExtensions.d.cts +8 -2
  35. package/dist/components/articleNodes/articleExtensions.d.cts.map +1 -1
  36. package/dist/components/articleNodes/articleExtensions.d.mts +8 -2
  37. package/dist/components/articleNodes/articleExtensions.d.mts.map +1 -1
  38. package/dist/components/articleNodes/articleExtensions.d.ts +8 -2
  39. package/dist/components/articleNodes/articleExtensions.d.ts.map +1 -1
  40. package/dist/components/articleNodes/articleExtensions.js +21 -4
  41. package/dist/components/articleNodes/articleExtensions.js.map +2 -2
  42. package/dist/components/articleNodes/articleNodeViews.cjs +154 -0
  43. package/dist/components/articleNodes/articleNodeViews.cjs.map +7 -0
  44. package/dist/components/articleNodes/articleNodeViews.d.cts +3 -0
  45. package/dist/components/articleNodes/articleNodeViews.d.cts.map +1 -0
  46. package/dist/components/articleNodes/articleNodeViews.d.mts +3 -0
  47. package/dist/components/articleNodes/articleNodeViews.d.mts.map +1 -0
  48. package/dist/components/articleNodes/articleNodeViews.d.ts +3 -0
  49. package/dist/components/articleNodes/articleNodeViews.d.ts.map +1 -0
  50. package/dist/components/articleNodes/articleNodeViews.js +124 -0
  51. package/dist/components/articleNodes/articleNodeViews.js.map +7 -0
  52. package/dist/components/articleNodes/articleNodes.props.cjs.map +1 -1
  53. package/dist/components/articleNodes/articleNodes.props.d.cts +25 -2
  54. package/dist/components/articleNodes/articleNodes.props.d.cts.map +1 -1
  55. package/dist/components/articleNodes/articleNodes.props.d.mts +25 -2
  56. package/dist/components/articleNodes/articleNodes.props.d.mts.map +1 -1
  57. package/dist/components/articleNodes/articleNodes.props.d.ts +25 -2
  58. package/dist/components/articleNodes/articleNodes.props.d.ts.map +1 -1
  59. package/dist/components/banner/Banner.cjs +105 -0
  60. package/dist/components/banner/Banner.cjs.map +7 -0
  61. package/dist/components/banner/Banner.d.cts +27 -0
  62. package/dist/components/banner/Banner.d.cts.map +1 -0
  63. package/dist/components/banner/Banner.d.mts +27 -0
  64. package/dist/components/banner/Banner.d.mts.map +1 -0
  65. package/dist/components/banner/Banner.d.ts +27 -0
  66. package/dist/components/banner/Banner.d.ts.map +1 -0
  67. package/dist/components/banner/Banner.js +80 -0
  68. package/dist/components/banner/Banner.js.map +7 -0
  69. package/dist/components/{controlGroup/controlGroup.props.cjs → banner/banner.props.cjs} +23 -16
  70. package/dist/components/banner/banner.props.cjs.map +7 -0
  71. package/dist/components/banner/banner.props.d.cts +32 -0
  72. package/dist/components/banner/banner.props.d.cts.map +1 -0
  73. package/dist/components/banner/banner.props.d.mts +32 -0
  74. package/dist/components/banner/banner.props.d.mts.map +1 -0
  75. package/dist/components/banner/banner.props.d.ts +32 -0
  76. package/dist/components/banner/banner.props.d.ts.map +1 -0
  77. package/dist/components/banner/banner.props.js +27 -0
  78. package/dist/components/banner/banner.props.js.map +7 -0
  79. package/dist/components/banner.css +61 -0
  80. package/dist/components/blockquote.css +7 -4
  81. package/dist/components/bottom-dock.css +132 -0
  82. package/dist/components/bottomDock/BottomDock.cjs +140 -0
  83. package/dist/components/bottomDock/BottomDock.cjs.map +7 -0
  84. package/dist/components/bottomDock/BottomDock.d.cts +25 -0
  85. package/dist/components/bottomDock/BottomDock.d.cts.map +1 -0
  86. package/dist/components/bottomDock/BottomDock.d.mts +25 -0
  87. package/dist/components/bottomDock/BottomDock.d.mts.map +1 -0
  88. package/dist/components/bottomDock/BottomDock.d.ts +25 -0
  89. package/dist/components/bottomDock/BottomDock.d.ts.map +1 -0
  90. package/dist/components/bottomDock/BottomDock.js +110 -0
  91. package/dist/components/bottomDock/BottomDock.js.map +7 -0
  92. package/dist/components/bottomDock/bottomDock.props.cjs +49 -0
  93. package/dist/components/bottomDock/bottomDock.props.cjs.map +7 -0
  94. package/dist/components/bottomDock/bottomDock.props.d.cts +29 -0
  95. package/dist/components/bottomDock/bottomDock.props.d.cts.map +1 -0
  96. package/dist/components/bottomDock/bottomDock.props.d.mts +29 -0
  97. package/dist/components/bottomDock/bottomDock.props.d.mts.map +1 -0
  98. package/dist/components/bottomDock/bottomDock.props.d.ts +29 -0
  99. package/dist/components/bottomDock/bottomDock.props.d.ts.map +1 -0
  100. package/dist/components/bottomDock/bottomDock.props.js +29 -0
  101. package/dist/components/bottomDock/bottomDock.props.js.map +7 -0
  102. package/dist/components/breadcrumb.css +24 -3
  103. package/dist/components/button-group.css +25 -0
  104. package/dist/components/button.css +9 -0
  105. package/dist/components/callout.css +20 -7
  106. package/dist/components/card.css +11 -0
  107. package/dist/components/carousel/Carousel.cjs +109 -39
  108. package/dist/components/carousel/Carousel.cjs.map +3 -3
  109. package/dist/components/carousel/Carousel.d.cts.map +1 -1
  110. package/dist/components/carousel/Carousel.d.mts.map +1 -1
  111. package/dist/components/carousel/Carousel.d.ts.map +1 -1
  112. package/dist/components/carousel/Carousel.js +111 -41
  113. package/dist/components/carousel/Carousel.js.map +3 -3
  114. package/dist/components/carousel.css +93 -26
  115. package/dist/components/chart/Chart.cjs +61 -11
  116. package/dist/components/chart/Chart.cjs.map +2 -2
  117. package/dist/components/chart/Chart.d.cts.map +1 -1
  118. package/dist/components/chart/Chart.d.mts.map +1 -1
  119. package/dist/components/chart/Chart.d.ts.map +1 -1
  120. package/dist/components/chart/Chart.js +62 -11
  121. package/dist/components/chart/Chart.js.map +2 -2
  122. package/dist/components/chart.css +10 -1
  123. package/dist/components/checkbox.css +14 -0
  124. package/dist/components/code.css +29 -13
  125. package/dist/components/collapsible/Collapsible.cjs +4 -0
  126. package/dist/components/collapsible/Collapsible.cjs.map +2 -2
  127. package/dist/components/collapsible/Collapsible.d.cts.map +1 -1
  128. package/dist/components/collapsible/Collapsible.d.mts.map +1 -1
  129. package/dist/components/collapsible/Collapsible.d.ts.map +1 -1
  130. package/dist/components/collapsible/Collapsible.js +4 -0
  131. package/dist/components/collapsible/Collapsible.js.map +2 -2
  132. package/dist/components/collapsible.css +10 -1
  133. package/dist/components/combobox/Combobox.cjs +3 -1
  134. package/dist/components/combobox/Combobox.cjs.map +2 -2
  135. package/dist/components/combobox/Combobox.d.cts.map +1 -1
  136. package/dist/components/combobox/Combobox.d.mts.map +1 -1
  137. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  138. package/dist/components/combobox/Combobox.js +3 -1
  139. package/dist/components/combobox/Combobox.js.map +2 -2
  140. package/dist/components/combobox.css +5 -1
  141. package/dist/components/command/Command.cjs +1 -1
  142. package/dist/components/command/Command.cjs.map +2 -2
  143. package/dist/components/command/Command.js +1 -1
  144. package/dist/components/command/Command.js.map +2 -2
  145. package/dist/components/command.css +0 -2
  146. package/dist/components/comment-thread.css +15 -7
  147. package/dist/components/commentThread/CommentThread.cjs +45 -17
  148. package/dist/components/commentThread/CommentThread.cjs.map +2 -2
  149. package/dist/components/commentThread/CommentThread.d.cts +6 -6
  150. package/dist/components/commentThread/CommentThread.d.cts.map +1 -1
  151. package/dist/components/commentThread/CommentThread.d.mts +6 -6
  152. package/dist/components/commentThread/CommentThread.d.mts.map +1 -1
  153. package/dist/components/commentThread/CommentThread.d.ts +6 -6
  154. package/dist/components/commentThread/CommentThread.d.ts.map +1 -1
  155. package/dist/components/commentThread/CommentThread.js +45 -17
  156. package/dist/components/commentThread/CommentThread.js.map +2 -2
  157. package/dist/components/commentThread/commentThread.props.cjs.map +1 -1
  158. package/dist/components/commentThread/commentThread.props.d.cts +24 -0
  159. package/dist/components/commentThread/commentThread.props.d.cts.map +1 -1
  160. package/dist/components/commentThread/commentThread.props.d.mts +24 -0
  161. package/dist/components/commentThread/commentThread.props.d.mts.map +1 -1
  162. package/dist/components/commentThread/commentThread.props.d.ts +24 -0
  163. package/dist/components/commentThread/commentThread.props.d.ts.map +1 -1
  164. package/dist/components/config-drawer.css +7 -3
  165. package/dist/components/configDrawer/ConfigDrawer.cjs +1 -1
  166. package/dist/components/configDrawer/ConfigDrawer.cjs.map +2 -2
  167. package/dist/components/configDrawer/ConfigDrawer.js +1 -1
  168. package/dist/components/configDrawer/ConfigDrawer.js.map +2 -2
  169. package/dist/components/context-menu.css +4 -2
  170. package/dist/components/contextMenu/ContextMenu.cjs +37 -6
  171. package/dist/components/contextMenu/ContextMenu.cjs.map +2 -2
  172. package/dist/components/contextMenu/ContextMenu.d.cts +1 -1
  173. package/dist/components/contextMenu/ContextMenu.d.cts.map +1 -1
  174. package/dist/components/contextMenu/ContextMenu.d.mts +1 -1
  175. package/dist/components/contextMenu/ContextMenu.d.mts.map +1 -1
  176. package/dist/components/contextMenu/ContextMenu.d.ts +1 -1
  177. package/dist/components/contextMenu/ContextMenu.d.ts.map +1 -1
  178. package/dist/components/contextMenu/ContextMenu.js +37 -6
  179. package/dist/components/contextMenu/ContextMenu.js.map +2 -2
  180. package/dist/components/copy-field.css +18 -0
  181. package/dist/components/copyField/CopyField.cjs +3 -3
  182. package/dist/components/copyField/CopyField.cjs.map +2 -2
  183. package/dist/components/copyField/CopyField.d.cts.map +1 -1
  184. package/dist/components/copyField/CopyField.d.mts.map +1 -1
  185. package/dist/components/copyField/CopyField.d.ts.map +1 -1
  186. package/dist/components/copyField/CopyField.js +3 -3
  187. package/dist/components/copyField/CopyField.js.map +2 -2
  188. package/dist/components/data-list.css +19 -4
  189. package/dist/components/data-table.css +190 -0
  190. package/dist/components/dataTable/DataTable.cjs +193 -68
  191. package/dist/components/dataTable/DataTable.cjs.map +3 -3
  192. package/dist/components/dataTable/DataTable.d.cts +29 -1
  193. package/dist/components/dataTable/DataTable.d.cts.map +1 -1
  194. package/dist/components/dataTable/DataTable.d.mts +29 -1
  195. package/dist/components/dataTable/DataTable.d.mts.map +1 -1
  196. package/dist/components/dataTable/DataTable.d.ts +29 -1
  197. package/dist/components/dataTable/DataTable.d.ts.map +1 -1
  198. package/dist/components/dataTable/DataTable.js +193 -68
  199. package/dist/components/dataTable/DataTable.js.map +2 -2
  200. package/dist/components/dataTable/DataTableContext.cjs +41 -0
  201. package/dist/components/dataTable/DataTableContext.cjs.map +7 -0
  202. package/dist/components/dataTable/DataTableContext.d.cts +23 -0
  203. package/dist/components/dataTable/DataTableContext.d.cts.map +1 -0
  204. package/dist/components/dataTable/DataTableContext.d.mts +23 -0
  205. package/dist/components/dataTable/DataTableContext.d.mts.map +1 -0
  206. package/dist/components/dataTable/DataTableContext.d.ts +23 -0
  207. package/dist/components/dataTable/DataTableContext.d.ts.map +1 -0
  208. package/dist/components/dataTable/DataTableContext.js +11 -0
  209. package/dist/components/dataTable/DataTableContext.js.map +7 -0
  210. package/dist/components/dataTable/DataTablePagination.cjs +72 -47
  211. package/dist/components/dataTable/DataTablePagination.cjs.map +2 -2
  212. package/dist/components/dataTable/DataTablePagination.d.cts +5 -1
  213. package/dist/components/dataTable/DataTablePagination.d.cts.map +1 -1
  214. package/dist/components/dataTable/DataTablePagination.d.mts +5 -1
  215. package/dist/components/dataTable/DataTablePagination.d.mts.map +1 -1
  216. package/dist/components/dataTable/DataTablePagination.d.ts +5 -1
  217. package/dist/components/dataTable/DataTablePagination.d.ts.map +1 -1
  218. package/dist/components/dataTable/DataTablePagination.js +75 -47
  219. package/dist/components/dataTable/DataTablePagination.js.map +2 -2
  220. package/dist/components/dataTable/DataTableToolbar.cjs +122 -93
  221. package/dist/components/dataTable/DataTableToolbar.cjs.map +2 -2
  222. package/dist/components/dataTable/DataTableToolbar.d.cts +6 -5
  223. package/dist/components/dataTable/DataTableToolbar.d.cts.map +1 -1
  224. package/dist/components/dataTable/DataTableToolbar.d.mts +6 -5
  225. package/dist/components/dataTable/DataTableToolbar.d.mts.map +1 -1
  226. package/dist/components/dataTable/DataTableToolbar.d.ts +6 -5
  227. package/dist/components/dataTable/DataTableToolbar.d.ts.map +1 -1
  228. package/dist/components/dataTable/DataTableToolbar.js +123 -94
  229. package/dist/components/dataTable/DataTableToolbar.js.map +2 -2
  230. package/dist/components/dataTable/dataTable.export.cjs +83 -0
  231. package/dist/components/dataTable/dataTable.export.cjs.map +7 -0
  232. package/dist/components/dataTable/dataTable.export.d.cts +11 -0
  233. package/dist/components/dataTable/dataTable.export.d.cts.map +1 -0
  234. package/dist/components/dataTable/dataTable.export.d.mts +11 -0
  235. package/dist/components/dataTable/dataTable.export.d.mts.map +1 -0
  236. package/dist/components/dataTable/dataTable.export.d.ts +11 -0
  237. package/dist/components/dataTable/dataTable.export.d.ts.map +1 -0
  238. package/dist/components/dataTable/dataTable.export.js +63 -0
  239. package/dist/components/dataTable/dataTable.export.js.map +7 -0
  240. package/dist/components/dataTable/dataTable.props.cjs +23 -1
  241. package/dist/components/dataTable/dataTable.props.cjs.map +2 -2
  242. package/dist/components/dataTable/dataTable.props.d.cts +21 -1
  243. package/dist/components/dataTable/dataTable.props.d.cts.map +1 -1
  244. package/dist/components/dataTable/dataTable.props.d.mts +21 -1
  245. package/dist/components/dataTable/dataTable.props.d.mts.map +1 -1
  246. package/dist/components/dataTable/dataTable.props.d.ts +21 -1
  247. package/dist/components/dataTable/dataTable.props.d.ts.map +1 -1
  248. package/dist/components/dataTable/dataTable.props.js +23 -1
  249. package/dist/components/dataTable/dataTable.props.js.map +2 -2
  250. package/dist/components/dialog/Dialog.cjs +2 -1
  251. package/dist/components/dialog/Dialog.cjs.map +2 -2
  252. package/dist/components/dialog/Dialog.d.cts.map +1 -1
  253. package/dist/components/dialog/Dialog.d.mts.map +1 -1
  254. package/dist/components/dialog/Dialog.d.ts.map +1 -1
  255. package/dist/components/dialog/Dialog.js +2 -1
  256. package/dist/components/dialog/Dialog.js.map +2 -2
  257. package/dist/components/drawer.css +23 -6
  258. package/dist/components/dropdown-menu.css +1 -1
  259. package/dist/components/dropdownMenu/DropdownMenu.cjs +10 -5
  260. package/dist/components/dropdownMenu/DropdownMenu.cjs.map +2 -2
  261. package/dist/components/dropdownMenu/DropdownMenu.d.cts.map +1 -1
  262. package/dist/components/dropdownMenu/DropdownMenu.d.mts.map +1 -1
  263. package/dist/components/dropdownMenu/DropdownMenu.d.ts.map +1 -1
  264. package/dist/components/dropdownMenu/DropdownMenu.js +10 -5
  265. package/dist/components/dropdownMenu/DropdownMenu.js.map +2 -2
  266. package/dist/components/empty-state.css +5 -0
  267. package/dist/components/file-upload.css +36 -9
  268. package/dist/components/fileUpload/FileUpload.cjs +10 -1
  269. package/dist/components/fileUpload/FileUpload.cjs.map +2 -2
  270. package/dist/components/fileUpload/FileUpload.d.cts +1 -0
  271. package/dist/components/fileUpload/FileUpload.d.cts.map +1 -1
  272. package/dist/components/fileUpload/FileUpload.d.mts +1 -0
  273. package/dist/components/fileUpload/FileUpload.d.mts.map +1 -1
  274. package/dist/components/fileUpload/FileUpload.d.ts +1 -0
  275. package/dist/components/fileUpload/FileUpload.d.ts.map +1 -1
  276. package/dist/components/fileUpload/FileUpload.js +10 -1
  277. package/dist/components/fileUpload/FileUpload.js.map +2 -2
  278. package/dist/components/filter-bar.css +380 -8
  279. package/dist/components/filterBar/FilterBar.cjs +630 -1
  280. package/dist/components/filterBar/FilterBar.cjs.map +2 -2
  281. package/dist/components/filterBar/FilterBar.d.cts +132 -2
  282. package/dist/components/filterBar/FilterBar.d.cts.map +1 -1
  283. package/dist/components/filterBar/FilterBar.d.mts +132 -2
  284. package/dist/components/filterBar/FilterBar.d.mts.map +1 -1
  285. package/dist/components/filterBar/FilterBar.d.ts +132 -2
  286. package/dist/components/filterBar/FilterBar.d.ts.map +1 -1
  287. package/dist/components/filterBar/FilterBar.js +631 -2
  288. package/dist/components/filterBar/FilterBar.js.map +2 -2
  289. package/dist/components/floating-panel.css +50 -19
  290. package/dist/components/floatingPanel/FloatingPanel.cjs +156 -58
  291. package/dist/components/floatingPanel/FloatingPanel.cjs.map +2 -2
  292. package/dist/components/floatingPanel/FloatingPanel.d.cts.map +1 -1
  293. package/dist/components/floatingPanel/FloatingPanel.d.mts.map +1 -1
  294. package/dist/components/floatingPanel/FloatingPanel.d.ts.map +1 -1
  295. package/dist/components/floatingPanel/FloatingPanel.js +156 -58
  296. package/dist/components/floatingPanel/FloatingPanel.js.map +2 -2
  297. package/dist/components/fontProvider/FontProvider.cjs +1 -1
  298. package/dist/components/fontProvider/FontProvider.cjs.map +1 -1
  299. package/dist/components/fontProvider/FontProvider.js +1 -1
  300. package/dist/components/fontProvider/FontProvider.js.map +1 -1
  301. package/dist/components/grid/Grid.cjs +24 -35
  302. package/dist/components/grid/Grid.cjs.map +2 -2
  303. package/dist/components/grid/Grid.d.cts.map +1 -1
  304. package/dist/components/grid/Grid.d.mts.map +1 -1
  305. package/dist/components/grid/Grid.d.ts.map +1 -1
  306. package/dist/components/grid/Grid.js +24 -35
  307. package/dist/components/grid/Grid.js.map +2 -2
  308. package/dist/components/heading/Heading.cjs +1 -8
  309. package/dist/components/heading/Heading.cjs.map +2 -2
  310. package/dist/components/heading/Heading.d.cts.map +1 -1
  311. package/dist/components/heading/Heading.d.mts.map +1 -1
  312. package/dist/components/heading/Heading.d.ts.map +1 -1
  313. package/dist/components/heading/Heading.js +1 -8
  314. package/dist/components/heading/Heading.js.map +2 -2
  315. package/dist/components/heading/heading.props.cjs +9 -9
  316. package/dist/components/heading/heading.props.cjs.map +2 -2
  317. package/dist/components/heading/heading.props.d.cts +42 -43
  318. package/dist/components/heading/heading.props.d.cts.map +1 -1
  319. package/dist/components/heading/heading.props.d.mts +42 -43
  320. package/dist/components/heading/heading.props.d.mts.map +1 -1
  321. package/dist/components/heading/heading.props.d.ts +42 -43
  322. package/dist/components/heading/heading.props.d.ts.map +1 -1
  323. package/dist/components/heading/heading.props.js +9 -9
  324. package/dist/components/heading/heading.props.js.map +2 -2
  325. package/dist/components/heading.css +127 -104
  326. package/dist/components/hover-card.css +5 -2
  327. package/dist/components/icon/Icon.cjs +28 -2
  328. package/dist/components/icon/Icon.cjs.map +2 -2
  329. package/dist/components/icon/Icon.d.cts +33 -1
  330. package/dist/components/icon/Icon.d.cts.map +1 -1
  331. package/dist/components/icon/Icon.d.mts +33 -1
  332. package/dist/components/icon/Icon.d.mts.map +1 -1
  333. package/dist/components/icon/Icon.d.ts +33 -1
  334. package/dist/components/icon/Icon.d.ts.map +1 -1
  335. package/dist/components/icon/Icon.js +37 -2
  336. package/dist/components/icon/Icon.js.map +2 -2
  337. package/dist/components/icon/icons.cjs +18 -0
  338. package/dist/components/icon/icons.cjs.map +2 -2
  339. package/dist/components/icon/icons.d.cts +45 -0
  340. package/dist/components/icon/icons.d.cts.map +1 -1
  341. package/dist/components/icon/icons.d.mts +45 -0
  342. package/dist/components/icon/icons.d.mts.map +1 -1
  343. package/dist/components/icon/icons.d.ts +45 -0
  344. package/dist/components/icon/icons.d.ts.map +1 -1
  345. package/dist/components/icon/icons.js +18 -0
  346. package/dist/components/icon/icons.js.map +2 -2
  347. package/dist/components/icon-button.css +29 -0
  348. package/dist/components/index.cjs +2 -1
  349. package/dist/components/index.cjs.map +2 -2
  350. package/dist/components/index.d.cts +2 -1
  351. package/dist/components/index.d.cts.map +1 -1
  352. package/dist/components/index.d.mts +2 -1
  353. package/dist/components/index.d.mts.map +1 -1
  354. package/dist/components/index.d.ts +2 -1
  355. package/dist/components/index.d.ts.map +1 -1
  356. package/dist/components/index.js +2 -1
  357. package/dist/components/index.js.map +2 -2
  358. package/dist/components/item/Item.cjs +1 -1
  359. package/dist/components/item/Item.cjs.map +2 -2
  360. package/dist/components/item/Item.js +1 -1
  361. package/dist/components/item/Item.js.map +2 -2
  362. package/dist/components/item.css +12 -1
  363. package/dist/components/label.css +3 -0
  364. package/dist/components/link.css +33 -97
  365. package/dist/components/marquee/Marquee.cjs +1 -1
  366. package/dist/components/marquee/Marquee.cjs.map +2 -2
  367. package/dist/components/marquee/Marquee.js +1 -1
  368. package/dist/components/marquee/Marquee.js.map +2 -2
  369. package/dist/components/marquee.css +6 -0
  370. package/dist/components/menu/Menu.cjs +3 -1
  371. package/dist/components/menu/Menu.cjs.map +2 -2
  372. package/dist/components/menu/Menu.d.cts.map +1 -1
  373. package/dist/components/menu/Menu.d.mts.map +1 -1
  374. package/dist/components/menu/Menu.d.ts.map +1 -1
  375. package/dist/components/menu/Menu.js +3 -1
  376. package/dist/components/menu/Menu.js.map +2 -2
  377. package/dist/components/menubar.css +1 -1
  378. package/dist/components/metric.css +5 -0
  379. package/dist/components/notification-center.css +49 -9
  380. package/dist/components/notificationCenter/NotificationCenter.cjs +21 -16
  381. package/dist/components/notificationCenter/NotificationCenter.cjs.map +2 -2
  382. package/dist/components/notificationCenter/NotificationCenter.d.cts.map +1 -1
  383. package/dist/components/notificationCenter/NotificationCenter.d.mts.map +1 -1
  384. package/dist/components/notificationCenter/NotificationCenter.d.ts.map +1 -1
  385. package/dist/components/notificationCenter/NotificationCenter.js +22 -17
  386. package/dist/components/notificationCenter/NotificationCenter.js.map +2 -2
  387. package/dist/components/pagination/Pagination.cjs +143 -17
  388. package/dist/components/pagination/Pagination.cjs.map +2 -2
  389. package/dist/components/pagination/Pagination.d.cts +64 -4
  390. package/dist/components/pagination/Pagination.d.cts.map +1 -1
  391. package/dist/components/pagination/Pagination.d.mts +64 -4
  392. package/dist/components/pagination/Pagination.d.mts.map +1 -1
  393. package/dist/components/pagination/Pagination.d.ts +64 -4
  394. package/dist/components/pagination/Pagination.d.ts.map +1 -1
  395. package/dist/components/pagination/Pagination.js +143 -17
  396. package/dist/components/pagination/Pagination.js.map +2 -2
  397. package/dist/components/pagination.css +50 -8
  398. package/dist/components/phoneInput/PhoneInput.cjs +18 -13
  399. package/dist/components/phoneInput/PhoneInput.cjs.map +2 -2
  400. package/dist/components/phoneInput/PhoneInput.d.cts.map +1 -1
  401. package/dist/components/phoneInput/PhoneInput.d.mts.map +1 -1
  402. package/dist/components/phoneInput/PhoneInput.d.ts.map +1 -1
  403. package/dist/components/phoneInput/PhoneInput.js +19 -14
  404. package/dist/components/phoneInput/PhoneInput.js.map +2 -2
  405. package/dist/components/pills/Pills.cjs +1 -1
  406. package/dist/components/pills/Pills.cjs.map +2 -2
  407. package/dist/components/pills/Pills.js +2 -2
  408. package/dist/components/pills/Pills.js.map +2 -2
  409. package/dist/components/pills.css +6 -0
  410. package/dist/components/popover/Popover.cjs +2 -1
  411. package/dist/components/popover/Popover.cjs.map +2 -2
  412. package/dist/components/popover/Popover.d.cts.map +1 -1
  413. package/dist/components/popover/Popover.d.mts.map +1 -1
  414. package/dist/components/popover/Popover.d.ts.map +1 -1
  415. package/dist/components/popover/Popover.js +2 -1
  416. package/dist/components/popover/Popover.js.map +2 -2
  417. package/dist/components/popover.css +45 -6
  418. package/dist/components/prose.css +4 -4
  419. package/dist/components/qr-code.css +10 -17
  420. package/dist/components/qrCode/QrCode.cjs +14 -11
  421. package/dist/components/qrCode/QrCode.cjs.map +2 -2
  422. package/dist/components/qrCode/QrCode.d.cts.map +1 -1
  423. package/dist/components/qrCode/QrCode.d.mts.map +1 -1
  424. package/dist/components/qrCode/QrCode.d.ts.map +1 -1
  425. package/dist/components/qrCode/QrCode.js +14 -11
  426. package/dist/components/qrCode/QrCode.js.map +2 -2
  427. package/dist/components/radio-group.css +19 -0
  428. package/dist/components/radioGroup/RadioGroup.cjs +3 -2
  429. package/dist/components/radioGroup/RadioGroup.cjs.map +2 -2
  430. package/dist/components/radioGroup/RadioGroup.d.cts.map +1 -1
  431. package/dist/components/radioGroup/RadioGroup.d.mts.map +1 -1
  432. package/dist/components/radioGroup/RadioGroup.d.ts.map +1 -1
  433. package/dist/components/radioGroup/RadioGroup.js +3 -2
  434. package/dist/components/radioGroup/RadioGroup.js.map +2 -2
  435. package/dist/components/radioGroup/radioGroup.props.cjs +1 -1
  436. package/dist/components/radioGroup/radioGroup.props.cjs.map +2 -2
  437. package/dist/components/radioGroup/radioGroup.props.d.cts +1 -1
  438. package/dist/components/radioGroup/radioGroup.props.d.mts +1 -1
  439. package/dist/components/radioGroup/radioGroup.props.d.ts +1 -1
  440. package/dist/components/radioGroup/radioGroup.props.js +1 -1
  441. package/dist/components/radioGroup/radioGroup.props.js.map +2 -2
  442. package/dist/components/rating.css +12 -0
  443. package/dist/components/resizable.css +20 -4
  444. package/dist/components/result.css +2 -1
  445. package/dist/components/rich-text-editor.css +50 -14
  446. package/dist/components/richTextEditor/EditorTools.cjs +226 -0
  447. package/dist/components/richTextEditor/EditorTools.cjs.map +7 -0
  448. package/dist/components/richTextEditor/EditorTools.d.cts +22 -0
  449. package/dist/components/richTextEditor/EditorTools.d.cts.map +1 -0
  450. package/dist/components/richTextEditor/EditorTools.d.mts +22 -0
  451. package/dist/components/richTextEditor/EditorTools.d.mts.map +1 -0
  452. package/dist/components/richTextEditor/EditorTools.d.ts +22 -0
  453. package/dist/components/richTextEditor/EditorTools.d.ts.map +1 -0
  454. package/dist/components/richTextEditor/EditorTools.js +196 -0
  455. package/dist/components/richTextEditor/EditorTools.js.map +7 -0
  456. package/dist/components/richTextEditor/MentionSuggestions.cjs +96 -0
  457. package/dist/components/richTextEditor/MentionSuggestions.cjs.map +7 -0
  458. package/dist/components/richTextEditor/MentionSuggestions.d.cts +7 -0
  459. package/dist/components/richTextEditor/MentionSuggestions.d.cts.map +1 -0
  460. package/dist/components/richTextEditor/MentionSuggestions.d.mts +7 -0
  461. package/dist/components/richTextEditor/MentionSuggestions.d.mts.map +1 -0
  462. package/dist/components/richTextEditor/MentionSuggestions.d.ts +7 -0
  463. package/dist/components/richTextEditor/MentionSuggestions.d.ts.map +1 -0
  464. package/dist/components/richTextEditor/MentionSuggestions.js +66 -0
  465. package/dist/components/richTextEditor/MentionSuggestions.js.map +7 -0
  466. package/dist/components/richTextEditor/RichTextEditor.cjs +63 -208
  467. package/dist/components/richTextEditor/RichTextEditor.cjs.map +3 -3
  468. package/dist/components/richTextEditor/RichTextEditor.d.cts +17 -7
  469. package/dist/components/richTextEditor/RichTextEditor.d.cts.map +1 -1
  470. package/dist/components/richTextEditor/RichTextEditor.d.mts +17 -7
  471. package/dist/components/richTextEditor/RichTextEditor.d.mts.map +1 -1
  472. package/dist/components/richTextEditor/RichTextEditor.d.ts +17 -7
  473. package/dist/components/richTextEditor/RichTextEditor.d.ts.map +1 -1
  474. package/dist/components/richTextEditor/RichTextEditor.js +63 -208
  475. package/dist/components/richTextEditor/RichTextEditor.js.map +3 -3
  476. package/dist/components/richTextEditor/editorTokens.cjs +75 -0
  477. package/dist/components/richTextEditor/editorTokens.cjs.map +7 -0
  478. package/dist/components/richTextEditor/editorTokens.d.cts +21 -0
  479. package/dist/components/richTextEditor/editorTokens.d.cts.map +1 -0
  480. package/dist/components/richTextEditor/editorTokens.d.mts +21 -0
  481. package/dist/components/richTextEditor/editorTokens.d.mts.map +1 -0
  482. package/dist/components/richTextEditor/editorTokens.d.ts +21 -0
  483. package/dist/components/richTextEditor/editorTokens.d.ts.map +1 -0
  484. package/dist/components/richTextEditor/editorTokens.js +55 -0
  485. package/dist/components/richTextEditor/editorTokens.js.map +7 -0
  486. package/dist/components/scroll-area.css +12 -0
  487. package/dist/components/scrollArea/ScrollArea.cjs +12 -1
  488. package/dist/components/scrollArea/ScrollArea.cjs.map +2 -2
  489. package/dist/components/scrollArea/ScrollArea.d.cts.map +1 -1
  490. package/dist/components/scrollArea/ScrollArea.d.mts.map +1 -1
  491. package/dist/components/scrollArea/ScrollArea.d.ts.map +1 -1
  492. package/dist/components/scrollArea/ScrollArea.js +12 -1
  493. package/dist/components/scrollArea/ScrollArea.js.map +2 -2
  494. package/dist/components/segmented-control.css +80 -4
  495. package/dist/components/segmentedControl/SegmentedControl.cjs +18 -5
  496. package/dist/components/segmentedControl/SegmentedControl.cjs.map +2 -2
  497. package/dist/components/segmentedControl/SegmentedControl.d.cts.map +1 -1
  498. package/dist/components/segmentedControl/SegmentedControl.d.mts.map +1 -1
  499. package/dist/components/segmentedControl/SegmentedControl.d.ts.map +1 -1
  500. package/dist/components/segmentedControl/SegmentedControl.js +18 -5
  501. package/dist/components/segmentedControl/SegmentedControl.js.map +2 -2
  502. package/dist/components/segmentedControl/segmentedControl.props.cjs +10 -0
  503. package/dist/components/segmentedControl/segmentedControl.props.cjs.map +2 -2
  504. package/dist/components/segmentedControl/segmentedControl.props.d.cts +9 -0
  505. package/dist/components/segmentedControl/segmentedControl.props.d.cts.map +1 -1
  506. package/dist/components/segmentedControl/segmentedControl.props.d.mts +9 -0
  507. package/dist/components/segmentedControl/segmentedControl.props.d.mts.map +1 -1
  508. package/dist/components/segmentedControl/segmentedControl.props.d.ts +9 -0
  509. package/dist/components/segmentedControl/segmentedControl.props.d.ts.map +1 -1
  510. package/dist/components/segmentedControl/segmentedControl.props.js +10 -0
  511. package/dist/components/segmentedControl/segmentedControl.props.js.map +2 -2
  512. package/dist/components/select/Select.cjs +3 -1
  513. package/dist/components/select/Select.cjs.map +2 -2
  514. package/dist/components/select/Select.d.cts.map +1 -1
  515. package/dist/components/select/Select.d.mts.map +1 -1
  516. package/dist/components/select/Select.d.ts.map +1 -1
  517. package/dist/components/select/Select.js +3 -1
  518. package/dist/components/select/Select.js.map +2 -2
  519. package/dist/components/select.css +1 -1
  520. package/dist/components/separator.css +3 -9
  521. package/dist/components/sidebar/Sidebar.cjs +12 -4
  522. package/dist/components/sidebar/Sidebar.cjs.map +2 -2
  523. package/dist/components/sidebar/Sidebar.d.cts +4 -1
  524. package/dist/components/sidebar/Sidebar.d.cts.map +1 -1
  525. package/dist/components/sidebar/Sidebar.d.mts +4 -1
  526. package/dist/components/sidebar/Sidebar.d.mts.map +1 -1
  527. package/dist/components/sidebar/Sidebar.d.ts +4 -1
  528. package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
  529. package/dist/components/sidebar/Sidebar.js +12 -4
  530. package/dist/components/sidebar/Sidebar.js.map +2 -2
  531. package/dist/components/sidebar/sidebar.props.cjs +8 -1
  532. package/dist/components/sidebar/sidebar.props.cjs.map +2 -2
  533. package/dist/components/sidebar/sidebar.props.d.cts +9 -1
  534. package/dist/components/sidebar/sidebar.props.d.cts.map +1 -1
  535. package/dist/components/sidebar/sidebar.props.d.mts +9 -1
  536. package/dist/components/sidebar/sidebar.props.d.mts.map +1 -1
  537. package/dist/components/sidebar/sidebar.props.d.ts +9 -1
  538. package/dist/components/sidebar/sidebar.props.d.ts.map +1 -1
  539. package/dist/components/sidebar/sidebar.props.js +8 -1
  540. package/dist/components/sidebar/sidebar.props.js.map +2 -2
  541. package/dist/components/sidebar.css +28 -0
  542. package/dist/components/sonner.css +79 -17
  543. package/dist/components/sortableList/SortableList.cjs +8 -2
  544. package/dist/components/sortableList/SortableList.cjs.map +2 -2
  545. package/dist/components/sortableList/SortableList.d.cts.map +1 -1
  546. package/dist/components/sortableList/SortableList.d.mts.map +1 -1
  547. package/dist/components/sortableList/SortableList.d.ts.map +1 -1
  548. package/dist/components/sortableList/SortableList.js +8 -2
  549. package/dist/components/sortableList/SortableList.js.map +2 -2
  550. package/dist/components/stat-card.css +2 -0
  551. package/dist/components/stepper.css +23 -12
  552. package/dist/components/tab-nav.css +25 -13
  553. package/dist/components/tabNav/TabNav.cjs +1 -4
  554. package/dist/components/tabNav/TabNav.cjs.map +2 -2
  555. package/dist/components/tabNav/TabNav.d.cts.map +1 -1
  556. package/dist/components/tabNav/TabNav.d.mts.map +1 -1
  557. package/dist/components/tabNav/TabNav.d.ts.map +1 -1
  558. package/dist/components/tabNav/TabNav.js +1 -4
  559. package/dist/components/tabNav/TabNav.js.map +2 -2
  560. package/dist/components/table/Table.cjs +3 -2
  561. package/dist/components/table/Table.cjs.map +2 -2
  562. package/dist/components/table/Table.d.cts.map +1 -1
  563. package/dist/components/table/Table.d.mts.map +1 -1
  564. package/dist/components/table/Table.d.ts.map +1 -1
  565. package/dist/components/table/Table.js +3 -2
  566. package/dist/components/table/Table.js.map +2 -2
  567. package/dist/components/table/table.props.cjs +6 -0
  568. package/dist/components/table/table.props.cjs.map +2 -2
  569. package/dist/components/table/table.props.d.cts +5 -0
  570. package/dist/components/table/table.props.d.cts.map +1 -1
  571. package/dist/components/table/table.props.d.mts +5 -0
  572. package/dist/components/table/table.props.d.mts.map +1 -1
  573. package/dist/components/table/table.props.d.ts +5 -0
  574. package/dist/components/table/table.props.d.ts.map +1 -1
  575. package/dist/components/table/table.props.js +6 -0
  576. package/dist/components/table/table.props.js.map +2 -2
  577. package/dist/components/table-of-contents.css +12 -2
  578. package/dist/components/table.css +20 -13
  579. package/dist/components/tableOfContents/TableOfContents.cjs +11 -4
  580. package/dist/components/tableOfContents/TableOfContents.cjs.map +2 -2
  581. package/dist/components/tableOfContents/TableOfContents.d.cts.map +1 -1
  582. package/dist/components/tableOfContents/TableOfContents.d.mts.map +1 -1
  583. package/dist/components/tableOfContents/TableOfContents.d.ts.map +1 -1
  584. package/dist/components/tableOfContents/TableOfContents.js +11 -4
  585. package/dist/components/tableOfContents/TableOfContents.js.map +2 -2
  586. package/dist/components/tabs/Tabs.cjs +39 -54
  587. package/dist/components/tabs/Tabs.cjs.map +2 -2
  588. package/dist/components/tabs/Tabs.d.cts.map +1 -1
  589. package/dist/components/tabs/Tabs.d.mts.map +1 -1
  590. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  591. package/dist/components/tabs/Tabs.js +39 -54
  592. package/dist/components/tabs/Tabs.js.map +2 -2
  593. package/dist/components/tabs.css +62 -7
  594. package/dist/components/text/text.props.cjs +9 -9
  595. package/dist/components/text/text.props.cjs.map +2 -2
  596. package/dist/components/text/text.props.d.cts +42 -43
  597. package/dist/components/text/text.props.d.cts.map +1 -1
  598. package/dist/components/text/text.props.d.mts +42 -43
  599. package/dist/components/text/text.props.d.mts.map +1 -1
  600. package/dist/components/text/text.props.d.ts +42 -43
  601. package/dist/components/text/text.props.d.ts.map +1 -1
  602. package/dist/components/text/text.props.js +9 -9
  603. package/dist/components/text/text.props.js.map +2 -2
  604. package/dist/components/text/typography.props.cjs +32 -0
  605. package/dist/components/text/typography.props.cjs.map +7 -0
  606. package/dist/components/text/typography.props.d.cts +3 -0
  607. package/dist/components/text/typography.props.d.cts.map +1 -0
  608. package/dist/components/text/typography.props.d.mts +3 -0
  609. package/dist/components/text/typography.props.d.mts.map +1 -0
  610. package/dist/components/text/typography.props.d.ts +3 -0
  611. package/dist/components/text/typography.props.d.ts.map +1 -0
  612. package/dist/components/text/typography.props.js +12 -0
  613. package/dist/components/text/typography.props.js.map +7 -0
  614. package/dist/components/text-field.css +1 -0
  615. package/dist/components/text.css +41 -6
  616. package/dist/components/theme-panel.css +6 -0
  617. package/dist/components/timeline.css +54 -18
  618. package/dist/components/toast/Toast.cjs +3 -1
  619. package/dist/components/toast/Toast.cjs.map +2 -2
  620. package/dist/components/toast/Toast.d.cts.map +1 -1
  621. package/dist/components/toast/Toast.d.mts.map +1 -1
  622. package/dist/components/toast/Toast.d.ts.map +1 -1
  623. package/dist/components/toast/Toast.js +3 -1
  624. package/dist/components/toast/Toast.js.map +2 -2
  625. package/dist/components/toast.css +50 -18
  626. package/dist/components/toggle-group.css +5 -0
  627. package/dist/components/toggle-tip.css +58 -9
  628. package/dist/components/toggleTip/ToggleTip.cjs +9 -5
  629. package/dist/components/toggleTip/ToggleTip.cjs.map +2 -2
  630. package/dist/components/toggleTip/ToggleTip.d.cts.map +1 -1
  631. package/dist/components/toggleTip/ToggleTip.d.mts.map +1 -1
  632. package/dist/components/toggleTip/ToggleTip.d.ts.map +1 -1
  633. package/dist/components/toggleTip/ToggleTip.js +9 -5
  634. package/dist/components/toggleTip/ToggleTip.js.map +2 -2
  635. package/dist/components/toolbar/Toolbar.cjs +10 -7
  636. package/dist/components/toolbar/Toolbar.cjs.map +2 -2
  637. package/dist/components/toolbar/Toolbar.js +10 -7
  638. package/dist/components/toolbar/Toolbar.js.map +2 -2
  639. package/dist/components/toolbar.css +58 -4
  640. package/dist/components/tooltip.css +9 -5
  641. package/dist/components/tree-view.css +17 -3
  642. package/dist/components/treeView/TreeView.cjs +76 -21
  643. package/dist/components/treeView/TreeView.cjs.map +2 -2
  644. package/dist/components/treeView/TreeView.d.cts.map +1 -1
  645. package/dist/components/treeView/TreeView.d.mts.map +1 -1
  646. package/dist/components/treeView/TreeView.d.ts.map +1 -1
  647. package/dist/components/treeView/TreeView.js +76 -21
  648. package/dist/components/treeView/TreeView.js.map +2 -2
  649. package/dist/components.css +2 -2
  650. package/dist/docs/README.md +2 -1
  651. package/dist/docs/component-contract.md +7 -6
  652. package/dist/docs/component-index.json +17 -9
  653. package/dist/docs/components/accordion.md +5 -36
  654. package/dist/docs/components/alert.md +17 -10
  655. package/dist/docs/components/article-nodes.md +59 -2
  656. package/dist/docs/components/aspect-ratio.md +3 -26
  657. package/dist/docs/components/banner.md +152 -0
  658. package/dist/docs/components/blockquote.md +15 -14
  659. package/dist/docs/components/bottom-dock.md +146 -0
  660. package/dist/docs/components/box.md +3 -34
  661. package/dist/docs/components/breadcrumb.md +13 -8
  662. package/dist/docs/components/button-group.md +4 -3
  663. package/dist/docs/components/button.md +2 -2
  664. package/dist/docs/components/callout.md +18 -7
  665. package/dist/docs/components/card.md +10 -2
  666. package/dist/docs/components/carousel.md +55 -32
  667. package/dist/docs/components/chart.md +25 -7
  668. package/dist/docs/components/checkbox.md +4 -0
  669. package/dist/docs/components/code.md +33 -220
  670. package/dist/docs/components/collapsible.md +11 -35
  671. package/dist/docs/components/combobox.md +3 -1
  672. package/dist/docs/components/command.md +4 -2
  673. package/dist/docs/components/comment-thread.md +51 -1
  674. package/dist/docs/components/config-drawer.md +72 -171
  675. package/dist/docs/components/container.md +2 -0
  676. package/dist/docs/components/context-menu.md +19 -5
  677. package/dist/docs/components/copy-field.md +2 -2
  678. package/dist/docs/components/data-list.md +15 -3
  679. package/dist/docs/components/data-table.md +98 -17
  680. package/dist/docs/components/dialog.md +7 -1
  681. package/dist/docs/components/drawer.md +17 -6
  682. package/dist/docs/components/dropdown-menu.md +13 -3
  683. package/dist/docs/components/em.md +1 -1
  684. package/dist/docs/components/empty-state.md +3 -1
  685. package/dist/docs/components/file-upload.md +14 -7
  686. package/dist/docs/components/filter-bar.md +193 -8
  687. package/dist/docs/components/floating-panel.md +79 -285
  688. package/dist/docs/components/form.md +4 -0
  689. package/dist/docs/components/grid.md +11 -60
  690. package/dist/docs/components/heading.md +35 -32
  691. package/dist/docs/components/hover-card.md +9 -1
  692. package/dist/docs/components/icon-button.md +4 -1
  693. package/dist/docs/components/item.md +18 -13
  694. package/dist/docs/components/kbd.md +2 -0
  695. package/dist/docs/components/label.md +11 -9
  696. package/dist/docs/components/link.md +31 -209
  697. package/dist/docs/components/marquee.md +2 -2
  698. package/dist/docs/components/menu.md +4 -1
  699. package/dist/docs/components/metric.md +4 -1
  700. package/dist/docs/components/notification-center.md +24 -14
  701. package/dist/docs/components/page-header.md +2 -0
  702. package/dist/docs/components/pagination.md +92 -17
  703. package/dist/docs/components/pills.md +13 -4
  704. package/dist/docs/components/popover.md +12 -3
  705. package/dist/docs/components/prose.md +14 -1
  706. package/dist/docs/components/qr-code.md +25 -24
  707. package/dist/docs/components/quote.md +9 -4
  708. package/dist/docs/components/radio-group.md +5 -2
  709. package/dist/docs/components/rating.md +2 -0
  710. package/dist/docs/components/resizable.md +26 -18
  711. package/dist/docs/components/result.md +6 -0
  712. package/dist/docs/components/rich-text-editor.md +68 -18
  713. package/dist/docs/components/scroll-area.md +17 -9
  714. package/dist/docs/components/section.md +3 -38
  715. package/dist/docs/components/segmented-control.md +8 -3
  716. package/dist/docs/components/segmented-meter.md +9 -0
  717. package/dist/docs/components/select.md +3 -2
  718. package/dist/docs/components/separator.md +10 -46
  719. package/dist/docs/components/sidebar.md +20 -4
  720. package/dist/docs/components/sonner.md +26 -17
  721. package/dist/docs/components/sortable-list.md +2 -0
  722. package/dist/docs/components/stat-card.md +5 -4
  723. package/dist/docs/components/stepper.md +8 -32
  724. package/dist/docs/components/strong.md +1 -1
  725. package/dist/docs/components/tab-nav.md +33 -96
  726. package/dist/docs/components/table-of-contents.md +8 -2
  727. package/dist/docs/components/table.md +14 -5
  728. package/dist/docs/components/tabs.md +19 -50
  729. package/dist/docs/components/tag.md +4 -2
  730. package/dist/docs/components/text-field.md +1 -0
  731. package/dist/docs/components/text.md +34 -28
  732. package/dist/docs/components/theme-panel.md +3 -28
  733. package/dist/docs/components/theme.md +7 -3
  734. package/dist/docs/components/timeline.md +9 -5
  735. package/dist/docs/components/toast.md +28 -14
  736. package/dist/docs/components/toggle-group.md +2 -1
  737. package/dist/docs/components/toggle-tip.md +58 -241
  738. package/dist/docs/components/toolbar.md +16 -39
  739. package/dist/docs/components/tooltip.md +13 -7
  740. package/dist/docs/components/tree-view.md +22 -55
  741. package/dist/fonts.css +1 -1
  742. package/dist/generated/tokens.cjs +2 -1
  743. package/dist/generated/tokens.cjs.map +2 -2
  744. package/dist/generated/tokens.d.cts.map +1 -1
  745. package/dist/generated/tokens.d.mts.map +1 -1
  746. package/dist/generated/tokens.d.ts.map +1 -1
  747. package/dist/generated/tokens.js +2 -1
  748. package/dist/generated/tokens.js.map +2 -2
  749. package/dist/motion.css +18 -3
  750. package/dist/styles.css +3045 -1756
  751. package/dist/tokens.css +349 -361
  752. package/package.json +1 -1
  753. package/dist/components/control-group.css +0 -142
  754. package/dist/components/controlGroup/ControlGroup.cjs.map +0 -7
  755. package/dist/components/controlGroup/ControlGroup.d.cts +0 -16
  756. package/dist/components/controlGroup/ControlGroup.d.cts.map +0 -1
  757. package/dist/components/controlGroup/ControlGroup.d.mts +0 -16
  758. package/dist/components/controlGroup/ControlGroup.d.mts.map +0 -1
  759. package/dist/components/controlGroup/ControlGroup.d.ts +0 -16
  760. package/dist/components/controlGroup/ControlGroup.d.ts.map +0 -1
  761. package/dist/components/controlGroup/ControlGroup.js +0 -26
  762. package/dist/components/controlGroup/ControlGroup.js.map +0 -7
  763. package/dist/components/controlGroup/controlGroup.props.cjs.map +0 -7
  764. package/dist/components/controlGroup/controlGroup.props.d.cts +0 -18
  765. package/dist/components/controlGroup/controlGroup.props.d.cts.map +0 -1
  766. package/dist/components/controlGroup/controlGroup.props.d.mts +0 -18
  767. package/dist/components/controlGroup/controlGroup.props.d.mts.map +0 -1
  768. package/dist/components/controlGroup/controlGroup.props.d.ts +0 -18
  769. package/dist/components/controlGroup/controlGroup.props.d.ts.map +0 -1
  770. package/dist/components/controlGroup/controlGroup.props.js +0 -20
  771. package/dist/components/controlGroup/controlGroup.props.js.map +0 -7
  772. package/dist/docs/components/control-group.md +0 -261
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/articleNodes/ArticleNodes.tsx"],
4
- "sourcesContent": ["import * as React from 'react'\nimport classNames from 'classnames'\n\nimport type {\n ArticleEmbedProps,\n ArticleImageProps,\n ArticlePollProps,\n BeforeAfterComparisonProps,\n} from './articleNodes.props'\n\nconst ArticleImage = ({ caption, className, alt = '', ...props }: ArticleImageProps) => <figure className=\"dsx-article-image\"><img {...props} alt={alt} className={classNames('dsx-article-image__media', className)} />{caption ? <figcaption>{caption}</figcaption> : null}</figure>\n\nconst ArticleEmbed = ({ url, render, isAllowed, className, ...props }: ArticleEmbedProps) => {\n let canonical: string | undefined\n try { const parsed = new URL(url); if (parsed.protocol === 'https:' || parsed.protocol === 'http:') canonical = parsed.href } catch {}\n const allowed = Boolean(canonical && (isAllowed?.(canonical) ?? true))\n return <div {...props} className={classNames('dsx-article-embed', className)} data-dsx-url={allowed ? canonical : undefined}>{allowed && canonical ? (render?.(canonical) ?? <a href={canonical}>{canonical}</a>) : <span role=\"alert\">Embed unavailable</span>}</div>\n}\n\nconst BeforeAfterComparison = ({ beforeSrc, afterSrc, beforeAlt, afterAlt, beforeLabel = 'Before', afterLabel = 'After', className, ...props }: BeforeAfterComparisonProps) => <figure {...props} className={classNames('dsx-before-after', className)}><div><img src={beforeSrc} alt={beforeAlt}/><span>{beforeLabel}</span></div><div><img src={afterSrc} alt={afterAlt}/><span>{afterLabel}</span></div></figure>\n\nconst ArticlePoll = ({ pollId, question, options = [], state = 'ready', onLoad, onVote, className, ...props }: ArticlePollProps) => {\n React.useEffect(() => { onLoad?.(pollId) }, [pollId, onLoad])\n return <div {...props} className={classNames('dsx-article-poll', className)} data-dsx-poll-id={pollId} data-state={state} aria-busy={state === 'loading' || undefined}>{question ? <strong>{question}</strong> : null}{state === 'error' ? <span role=\"alert\">Poll unavailable</span> : options.map((option) => <button key={option.id} type=\"button\" disabled={state !== 'ready'} onClick={() => onVote?.(pollId, option.id)}>{option.label}{option.votes === undefined ? null : ` (${option.votes})`}</button>)}</div>\n}\n\nexport { ArticleEmbed, ArticleImage, ArticlePoll, BeforeAfterComparison }\nexport type {\n ArticleEmbedProps,\n ArticleImageProps,\n ArticlePollProps,\n BeforeAfterComparisonProps,\n PollState,\n} from './articleNodes.props'\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAuB;AACvB,wBAAuB;AASiE;AAAxF,MAAM,eAAe,CAAC,EAAE,SAAS,WAAW,MAAM,IAAI,GAAG,MAAM,MAAyB,6CAAC,YAAO,WAAU,qBAAoB;AAAA,8CAAC,SAAK,GAAG,OAAO,KAAU,eAAW,kBAAAA,SAAW,4BAA4B,SAAS,GAAG;AAAA,EAAG,UAAU,4CAAC,gBAAY,mBAAQ,IAAgB;AAAA,GAAK;AAE7Q,MAAM,eAAe,CAAC,EAAE,KAAK,QAAQ,WAAW,WAAW,GAAG,MAAM,MAAyB;AAC3F,MAAI;AACJ,MAAI;AAAE,UAAM,SAAS,IAAI,IAAI,GAAG;AAAG,QAAI,OAAO,aAAa,YAAY,OAAO,aAAa,QAAS,aAAY,OAAO;AAAA,EAAK,QAAQ;AAAA,EAAC;AACrI,QAAM,UAAU,QAAQ,cAAc,YAAY,SAAS,KAAK,KAAK;AACrE,SAAO,4CAAC,SAAK,GAAG,OAAO,eAAW,kBAAAA,SAAW,qBAAqB,SAAS,GAAG,gBAAc,UAAU,YAAY,QAAY,qBAAW,YAAa,SAAS,SAAS,KAAK,4CAAC,OAAE,MAAM,WAAY,qBAAU,IAAQ,4CAAC,UAAK,MAAK,SAAQ,+BAAiB,GAAQ;AAClQ;AAEA,MAAM,wBAAwB,CAAC,EAAE,WAAW,UAAU,WAAW,UAAU,cAAc,UAAU,aAAa,SAAS,WAAW,GAAG,MAAM,MAAkC,6CAAC,YAAQ,GAAG,OAAO,eAAW,kBAAAA,SAAW,oBAAoB,SAAS,GAAG;AAAA,+CAAC,SAAI;AAAA,gDAAC,SAAI,KAAK,WAAW,KAAK,WAAU;AAAA,IAAE,4CAAC,UAAM,uBAAY;AAAA,KAAO;AAAA,EAAM,6CAAC,SAAI;AAAA,gDAAC,SAAI,KAAK,UAAU,KAAK,UAAS;AAAA,IAAE,4CAAC,UAAM,sBAAW;AAAA,KAAO;AAAA,GAAM;AAE3Y,MAAM,cAAc,CAAC,EAAE,QAAQ,UAAU,UAAU,CAAC,GAAG,QAAQ,SAAS,QAAQ,QAAQ,WAAW,GAAG,MAAM,MAAwB;AAClI,QAAM,UAAU,MAAM;AAAE,aAAS,MAAM;AAAA,EAAE,GAAG,CAAC,QAAQ,MAAM,CAAC;AAC5D,SAAO,6CAAC,SAAK,GAAG,OAAO,eAAW,kBAAAA,SAAW,oBAAoB,SAAS,GAAG,oBAAkB,QAAQ,cAAY,OAAO,aAAW,UAAU,aAAa,QAAY;AAAA,eAAW,4CAAC,YAAQ,oBAAS,IAAY;AAAA,IAAM,UAAU,UAAU,4CAAC,UAAK,MAAK,SAAQ,8BAAgB,IAAU,QAAQ,IAAI,CAAC,WAAW,6CAAC,YAAuB,MAAK,UAAS,UAAU,UAAU,SAAS,SAAS,MAAM,SAAS,QAAQ,OAAO,EAAE,GAAI;AAAA,aAAO;AAAA,MAAO,OAAO,UAAU,SAAY,OAAO,KAAK,OAAO,KAAK;AAAA,SAAtK,OAAO,EAAmK,CAAS;AAAA,KAAE;AACpf;",
4
+ "sourcesContent": ["import * as React from 'react'\nimport classNames from 'classnames'\nimport { Button } from '../button/Button'\nimport { Tabs } from '../tabs/Tabs'\nimport type { ArticleVideoProps, ArticleMaterialLinkProps, ArticlePlatformTabsProps } from './articleNodes.props'\n\nimport type {\n ArticleEmbedProps,\n ArticleImageProps,\n ArticlePollProps,\n BeforeAfterComparisonProps,\n} from './articleNodes.props'\n\nconst ArticleImage = ({ caption, className, alt = '', ...props }: ArticleImageProps) => <figure className=\"dsx-article-image\"><img {...props} alt={alt} className={classNames('dsx-article-image__media', className)} />{caption ? <figcaption>{caption}</figcaption> : null}</figure>\n\nconst ArticleEmbed = ({ url, render, isAllowed, className, ...props }: ArticleEmbedProps) => {\n let canonical: string | undefined\n try { const parsed = new URL(url); if (parsed.protocol === 'https:' || parsed.protocol === 'http:') canonical = parsed.href } catch {}\n const allowed = Boolean(canonical && (isAllowed?.(canonical) ?? true))\n return <div {...props} className={classNames('dsx-article-embed', className)} data-dsx-url={allowed ? canonical : undefined}>{allowed && canonical ? (render?.(canonical) ?? <a href={canonical}>{canonical}</a>) : <span role=\"alert\">Embed unavailable</span>}</div>\n}\n\nconst BeforeAfterComparison = ({ beforeSrc, afterSrc, beforeAlt, afterAlt, beforeLabel = 'Before', afterLabel = 'After', className, ...props }: BeforeAfterComparisonProps) => <figure {...props} className={classNames('dsx-before-after', className)}><div><img src={beforeSrc} alt={beforeAlt}/><span>{beforeLabel}</span></div><div><img src={afterSrc} alt={afterAlt}/><span>{afterLabel}</span></div></figure>\n\nconst ArticleVideo = ({ caption, className, controls = true, ...props }: ArticleVideoProps) => <figure className=\"dsx-article-video\"><video {...props} controls={controls} className={classNames('dsx-article-video__media', className)} />{caption ? <figcaption>{caption}</figcaption> : null}</figure>\nconst ArticleMaterialLink = ({ materialId, href, children, unavailableLabel = 'Material unavailable', ...props }: ArticleMaterialLinkProps) => {\n let allowed = false\n try { allowed = ['http:', 'https:'].includes(new URL(href ?? '', 'https://example.invalid').protocol) } catch {}\n return href && allowed ? <a {...props} href={href} data-dsx-material-id={materialId}>{children}</a> : <span role=\"status\" data-dsx-material-id={materialId}>{unavailableLabel}</span>\n}\nconst ArticlePlatformTabs = ({ tabs, value, onValueChange, className, dir, ...props }: ArticlePlatformTabsProps) => <Tabs {...props} dir={dir === 'rtl' || dir === 'ltr' ? dir : undefined} className={classNames('dsx-article-platform-tabs', className)} defaultValue={tabs[0]?.platform} value={value} onValueChange={onValueChange}>\n <Tabs.List aria-label=\"Platform instructions\">{tabs.map(tab => <Tabs.Trigger key={tab.platform} value={tab.platform}>{tab.label}</Tabs.Trigger>)}<Tabs.Indicator /></Tabs.List>\n {tabs.map(tab => <Tabs.Content key={tab.platform} value={tab.platform}>{tab.content}</Tabs.Content>)}\n</Tabs>\nconst ArticlePoll = ({ pollId, question, options = [], state = 'ready', onLoad, onVote, selection, multiple = false, onSelectionChange, onSubmit, onRetract, totalVotes, className, ...props }: ArticlePollProps) => {\n React.useEffect(() => { onLoad?.(pollId) }, [pollId, onLoad])\n const controlled = selection !== undefined\n const total = totalVotes ?? options.reduce((sum, option) => sum + (option.votes ?? 0), 0)\n const inert = state === 'closed' || state === 'loading' || state === 'error' || (!controlled && state !== 'ready')\n return <div {...props} className={classNames('dsx-article-poll', className)} data-dsx-poll-id={pollId} data-state={state} aria-busy={state === 'loading' || undefined}>\n {question ? <strong>{question}</strong> : null}\n {state === 'closed' ? <span role=\"status\">Poll closed</span> : null}\n {state === 'error' ? <span role=\"alert\">Poll unavailable</span> : options.map(option => <div className=\"dsx-article-poll__result\" key={option.id}>\n <Button className=\"dsx-article-poll__option\" type=\"button\" size=\"lg\" variant={selection?.includes(option.id) ? 'secondary' : 'outline'} aria-pressed={controlled ? selection.includes(option.id) : undefined} disabled={inert} onClick={() => {\n if (!controlled) { onVote?.(pollId, option.id); return }\n onSelectionChange?.(multiple ? selection.includes(option.id) ? selection.filter(id => id !== option.id) : [...selection, option.id] : [option.id])\n }}>{option.label}{option.votes === undefined ? null : ` (${option.votes})`}</Button>\n {option.votes !== undefined ? <progress aria-label={`${String(option.label)} results`} value={option.votes} max={Math.max(total, 1)} /> : null}\n </div>)}\n {controlled && !inert ? <div className=\"dsx-article-poll__actions\"><Button type=\"button\" size=\"lg\" disabled={!selection.length || !onSubmit} onClick={() => onSubmit?.(pollId, selection)}>{state === 'voted' ? 'Change vote' : 'Vote'}</Button>{state === 'voted' && onRetract ? <Button type=\"button\" size=\"lg\" variant=\"outline\" onClick={() => onRetract(pollId)}>Retract vote</Button> : null}</div> : null}\n </div>\n}\n\nexport { ArticleEmbed, ArticleImage, ArticlePoll, BeforeAfterComparison, ArticleVideo, ArticleMaterialLink, ArticlePlatformTabs }\nexport type {\n ArticleEmbedProps,\n ArticleImageProps,\n ArticlePollProps,\n BeforeAfterComparisonProps,\n PollState, ArticleVideoProps, ArticleMaterialLinkProps, ArticlePlatformTabsProps,\n} from './articleNodes.props'\n"],
5
+ "mappings": "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",
6
6
  "names": ["classNames"]
7
7
  }
@@ -1,8 +1,12 @@
1
+ import type { ArticleVideoProps, ArticleMaterialLinkProps, ArticlePlatformTabsProps } from './articleNodes.props.cjs';
1
2
  import type { ArticleEmbedProps, ArticleImageProps, ArticlePollProps, BeforeAfterComparisonProps } from './articleNodes.props.cjs';
2
3
  declare const ArticleImage: ({ caption, className, alt, ...props }: ArticleImageProps) => import("react/jsx-runtime").JSX.Element;
3
4
  declare const ArticleEmbed: ({ url, render, isAllowed, className, ...props }: ArticleEmbedProps) => import("react/jsx-runtime").JSX.Element;
4
5
  declare const BeforeAfterComparison: ({ beforeSrc, afterSrc, beforeAlt, afterAlt, beforeLabel, afterLabel, className, ...props }: BeforeAfterComparisonProps) => import("react/jsx-runtime").JSX.Element;
5
- declare const ArticlePoll: ({ pollId, question, options, state, onLoad, onVote, className, ...props }: ArticlePollProps) => import("react/jsx-runtime").JSX.Element;
6
- export { ArticleEmbed, ArticleImage, ArticlePoll, BeforeAfterComparison };
7
- export type { ArticleEmbedProps, ArticleImageProps, ArticlePollProps, BeforeAfterComparisonProps, PollState, } from './articleNodes.props.cjs';
6
+ declare const ArticleVideo: ({ caption, className, controls, ...props }: ArticleVideoProps) => import("react/jsx-runtime").JSX.Element;
7
+ declare const ArticleMaterialLink: ({ materialId, href, children, unavailableLabel, ...props }: ArticleMaterialLinkProps) => import("react/jsx-runtime").JSX.Element;
8
+ declare const ArticlePlatformTabs: ({ tabs, value, onValueChange, className, dir, ...props }: ArticlePlatformTabsProps) => import("react/jsx-runtime").JSX.Element;
9
+ declare const ArticlePoll: ({ pollId, question, options, state, onLoad, onVote, selection, multiple, onSelectionChange, onSubmit, onRetract, totalVotes, className, ...props }: ArticlePollProps) => import("react/jsx-runtime").JSX.Element;
10
+ export { ArticleEmbed, ArticleImage, ArticlePoll, BeforeAfterComparison, ArticleVideo, ArticleMaterialLink, ArticlePlatformTabs };
11
+ export type { ArticleEmbedProps, ArticleImageProps, ArticlePollProps, BeforeAfterComparisonProps, PollState, ArticleVideoProps, ArticleMaterialLinkProps, ArticlePlatformTabsProps, } from './articleNodes.props.cjs';
8
12
  //# sourceMappingURL=ArticleNodes.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArticleNodes.d.cts","sourceRoot":"","sources":["../../../src/components/articleNodes/ArticleNodes.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC3B,MAAM,sBAAsB,CAAA;AAE7B,QAAA,MAAM,YAAY,GAAI,uCAA4C,iBAAiB,4CAAmM,CAAA;AAEtR,QAAA,MAAM,YAAY,GAAI,iDAAiD,iBAAiB,4CAKvF,CAAA;AAED,QAAA,MAAM,qBAAqB,GAAI,4FAAiH,0BAA0B,4CAA0O,CAAA;AAEpZ,QAAA,MAAM,WAAW,GAAI,2EAA0F,gBAAgB,4CAG9H,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAA;AACzE,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC1B,SAAS,GACV,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"ArticleNodes.d.cts","sourceRoot":"","sources":["../../../src/components/articleNodes/ArticleNodes.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAEjH,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC3B,MAAM,sBAAsB,CAAA;AAE7B,QAAA,MAAM,YAAY,GAAI,uCAA4C,iBAAiB,4CAAmM,CAAA;AAEtR,QAAA,MAAM,YAAY,GAAI,iDAAiD,iBAAiB,4CAKvF,CAAA;AAED,QAAA,MAAM,qBAAqB,GAAI,4FAAiH,0BAA0B,4CAA0O,CAAA;AAEpZ,QAAA,MAAM,YAAY,GAAI,4CAAmD,iBAAiB,4CAA+M,CAAA;AACzS,QAAA,MAAM,mBAAmB,GAAI,4DAAqF,wBAAwB,4CAIzI,CAAA;AACD,QAAA,MAAM,mBAAmB,GAAI,0DAA0D,wBAAwB,4CAGxG,CAAA;AACP,QAAA,MAAM,WAAW,GAAI,oJAA2K,gBAAgB,4CAiB/M,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAA;AACjI,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC1B,SAAS,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,wBAAwB,GACjF,MAAM,sBAAsB,CAAA"}
@@ -1,8 +1,12 @@
1
+ import type { ArticleVideoProps, ArticleMaterialLinkProps, ArticlePlatformTabsProps } from './articleNodes.props.js';
1
2
  import type { ArticleEmbedProps, ArticleImageProps, ArticlePollProps, BeforeAfterComparisonProps } from './articleNodes.props.js';
2
3
  declare const ArticleImage: ({ caption, className, alt, ...props }: ArticleImageProps) => import("react/jsx-runtime").JSX.Element;
3
4
  declare const ArticleEmbed: ({ url, render, isAllowed, className, ...props }: ArticleEmbedProps) => import("react/jsx-runtime").JSX.Element;
4
5
  declare const BeforeAfterComparison: ({ beforeSrc, afterSrc, beforeAlt, afterAlt, beforeLabel, afterLabel, className, ...props }: BeforeAfterComparisonProps) => import("react/jsx-runtime").JSX.Element;
5
- declare const ArticlePoll: ({ pollId, question, options, state, onLoad, onVote, className, ...props }: ArticlePollProps) => import("react/jsx-runtime").JSX.Element;
6
- export { ArticleEmbed, ArticleImage, ArticlePoll, BeforeAfterComparison };
7
- export type { ArticleEmbedProps, ArticleImageProps, ArticlePollProps, BeforeAfterComparisonProps, PollState, } from './articleNodes.props.js';
6
+ declare const ArticleVideo: ({ caption, className, controls, ...props }: ArticleVideoProps) => import("react/jsx-runtime").JSX.Element;
7
+ declare const ArticleMaterialLink: ({ materialId, href, children, unavailableLabel, ...props }: ArticleMaterialLinkProps) => import("react/jsx-runtime").JSX.Element;
8
+ declare const ArticlePlatformTabs: ({ tabs, value, onValueChange, className, dir, ...props }: ArticlePlatformTabsProps) => import("react/jsx-runtime").JSX.Element;
9
+ declare const ArticlePoll: ({ pollId, question, options, state, onLoad, onVote, selection, multiple, onSelectionChange, onSubmit, onRetract, totalVotes, className, ...props }: ArticlePollProps) => import("react/jsx-runtime").JSX.Element;
10
+ export { ArticleEmbed, ArticleImage, ArticlePoll, BeforeAfterComparison, ArticleVideo, ArticleMaterialLink, ArticlePlatformTabs };
11
+ export type { ArticleEmbedProps, ArticleImageProps, ArticlePollProps, BeforeAfterComparisonProps, PollState, ArticleVideoProps, ArticleMaterialLinkProps, ArticlePlatformTabsProps, } from './articleNodes.props.js';
8
12
  //# sourceMappingURL=ArticleNodes.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArticleNodes.d.mts","sourceRoot":"","sources":["../../../src/components/articleNodes/ArticleNodes.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC3B,MAAM,sBAAsB,CAAA;AAE7B,QAAA,MAAM,YAAY,GAAI,uCAA4C,iBAAiB,4CAAmM,CAAA;AAEtR,QAAA,MAAM,YAAY,GAAI,iDAAiD,iBAAiB,4CAKvF,CAAA;AAED,QAAA,MAAM,qBAAqB,GAAI,4FAAiH,0BAA0B,4CAA0O,CAAA;AAEpZ,QAAA,MAAM,WAAW,GAAI,2EAA0F,gBAAgB,4CAG9H,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAA;AACzE,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC1B,SAAS,GACV,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"ArticleNodes.d.mts","sourceRoot":"","sources":["../../../src/components/articleNodes/ArticleNodes.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAEjH,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC3B,MAAM,sBAAsB,CAAA;AAE7B,QAAA,MAAM,YAAY,GAAI,uCAA4C,iBAAiB,4CAAmM,CAAA;AAEtR,QAAA,MAAM,YAAY,GAAI,iDAAiD,iBAAiB,4CAKvF,CAAA;AAED,QAAA,MAAM,qBAAqB,GAAI,4FAAiH,0BAA0B,4CAA0O,CAAA;AAEpZ,QAAA,MAAM,YAAY,GAAI,4CAAmD,iBAAiB,4CAA+M,CAAA;AACzS,QAAA,MAAM,mBAAmB,GAAI,4DAAqF,wBAAwB,4CAIzI,CAAA;AACD,QAAA,MAAM,mBAAmB,GAAI,0DAA0D,wBAAwB,4CAGxG,CAAA;AACP,QAAA,MAAM,WAAW,GAAI,oJAA2K,gBAAgB,4CAiB/M,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAA;AACjI,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC1B,SAAS,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,wBAAwB,GACjF,MAAM,sBAAsB,CAAA"}
@@ -1,8 +1,12 @@
1
+ import type { ArticleVideoProps, ArticleMaterialLinkProps, ArticlePlatformTabsProps } from './articleNodes.props.js';
1
2
  import type { ArticleEmbedProps, ArticleImageProps, ArticlePollProps, BeforeAfterComparisonProps } from './articleNodes.props.js';
2
3
  declare const ArticleImage: ({ caption, className, alt, ...props }: ArticleImageProps) => import("react/jsx-runtime").JSX.Element;
3
4
  declare const ArticleEmbed: ({ url, render, isAllowed, className, ...props }: ArticleEmbedProps) => import("react/jsx-runtime").JSX.Element;
4
5
  declare const BeforeAfterComparison: ({ beforeSrc, afterSrc, beforeAlt, afterAlt, beforeLabel, afterLabel, className, ...props }: BeforeAfterComparisonProps) => import("react/jsx-runtime").JSX.Element;
5
- declare const ArticlePoll: ({ pollId, question, options, state, onLoad, onVote, className, ...props }: ArticlePollProps) => import("react/jsx-runtime").JSX.Element;
6
- export { ArticleEmbed, ArticleImage, ArticlePoll, BeforeAfterComparison };
7
- export type { ArticleEmbedProps, ArticleImageProps, ArticlePollProps, BeforeAfterComparisonProps, PollState, } from './articleNodes.props.js';
6
+ declare const ArticleVideo: ({ caption, className, controls, ...props }: ArticleVideoProps) => import("react/jsx-runtime").JSX.Element;
7
+ declare const ArticleMaterialLink: ({ materialId, href, children, unavailableLabel, ...props }: ArticleMaterialLinkProps) => import("react/jsx-runtime").JSX.Element;
8
+ declare const ArticlePlatformTabs: ({ tabs, value, onValueChange, className, dir, ...props }: ArticlePlatformTabsProps) => import("react/jsx-runtime").JSX.Element;
9
+ declare const ArticlePoll: ({ pollId, question, options, state, onLoad, onVote, selection, multiple, onSelectionChange, onSubmit, onRetract, totalVotes, className, ...props }: ArticlePollProps) => import("react/jsx-runtime").JSX.Element;
10
+ export { ArticleEmbed, ArticleImage, ArticlePoll, BeforeAfterComparison, ArticleVideo, ArticleMaterialLink, ArticlePlatformTabs };
11
+ export type { ArticleEmbedProps, ArticleImageProps, ArticlePollProps, BeforeAfterComparisonProps, PollState, ArticleVideoProps, ArticleMaterialLinkProps, ArticlePlatformTabsProps, } from './articleNodes.props.js';
8
12
  //# sourceMappingURL=ArticleNodes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArticleNodes.d.ts","sourceRoot":"","sources":["../../../src/components/articleNodes/ArticleNodes.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC3B,MAAM,sBAAsB,CAAA;AAE7B,QAAA,MAAM,YAAY,GAAI,uCAA4C,iBAAiB,4CAAmM,CAAA;AAEtR,QAAA,MAAM,YAAY,GAAI,iDAAiD,iBAAiB,4CAKvF,CAAA;AAED,QAAA,MAAM,qBAAqB,GAAI,4FAAiH,0BAA0B,4CAA0O,CAAA;AAEpZ,QAAA,MAAM,WAAW,GAAI,2EAA0F,gBAAgB,4CAG9H,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAA;AACzE,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC1B,SAAS,GACV,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"ArticleNodes.d.ts","sourceRoot":"","sources":["../../../src/components/articleNodes/ArticleNodes.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAEjH,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC3B,MAAM,sBAAsB,CAAA;AAE7B,QAAA,MAAM,YAAY,GAAI,uCAA4C,iBAAiB,4CAAmM,CAAA;AAEtR,QAAA,MAAM,YAAY,GAAI,iDAAiD,iBAAiB,4CAKvF,CAAA;AAED,QAAA,MAAM,qBAAqB,GAAI,4FAAiH,0BAA0B,4CAA0O,CAAA;AAEpZ,QAAA,MAAM,YAAY,GAAI,4CAAmD,iBAAiB,4CAA+M,CAAA;AACzS,QAAA,MAAM,mBAAmB,GAAI,4DAAqF,wBAAwB,4CAIzI,CAAA;AACD,QAAA,MAAM,mBAAmB,GAAI,0DAA0D,wBAAwB,4CAGxG,CAAA;AACP,QAAA,MAAM,WAAW,GAAI,oJAA2K,gBAAgB,4CAiB/M,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAA;AACjI,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC1B,SAAS,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,wBAAwB,GACjF,MAAM,sBAAsB,CAAA"}
@@ -1,5 +1,7 @@
1
1
  import * as React from "react";
2
2
  import classNames from "classnames";
3
+ import { Button } from "../button/Button.js";
4
+ import { Tabs } from "../tabs/Tabs.js";
3
5
  import { jsx, jsxs } from "react/jsx-runtime";
4
6
  const ArticleImage = ({ caption, className, alt = "", ...props }) => /* @__PURE__ */ jsxs("figure", { className: "dsx-article-image", children: [
5
7
  /* @__PURE__ */ jsx("img", { ...props, alt, className: classNames("dsx-article-image__media", className) }),
@@ -25,22 +27,61 @@ const BeforeAfterComparison = ({ beforeSrc, afterSrc, beforeAlt, afterAlt, befor
25
27
  /* @__PURE__ */ jsx("span", { children: afterLabel })
26
28
  ] })
27
29
  ] });
28
- const ArticlePoll = ({ pollId, question, options = [], state = "ready", onLoad, onVote, className, ...props }) => {
30
+ const ArticleVideo = ({ caption, className, controls = true, ...props }) => /* @__PURE__ */ jsxs("figure", { className: "dsx-article-video", children: [
31
+ /* @__PURE__ */ jsx("video", { ...props, controls, className: classNames("dsx-article-video__media", className) }),
32
+ caption ? /* @__PURE__ */ jsx("figcaption", { children: caption }) : null
33
+ ] });
34
+ const ArticleMaterialLink = ({ materialId, href, children, unavailableLabel = "Material unavailable", ...props }) => {
35
+ let allowed = false;
36
+ try {
37
+ allowed = ["http:", "https:"].includes(new URL(href ?? "", "https://example.invalid").protocol);
38
+ } catch {
39
+ }
40
+ return href && allowed ? /* @__PURE__ */ jsx("a", { ...props, href, "data-dsx-material-id": materialId, children }) : /* @__PURE__ */ jsx("span", { role: "status", "data-dsx-material-id": materialId, children: unavailableLabel });
41
+ };
42
+ const ArticlePlatformTabs = ({ tabs, value, onValueChange, className, dir, ...props }) => /* @__PURE__ */ jsxs(Tabs, { ...props, dir: dir === "rtl" || dir === "ltr" ? dir : void 0, className: classNames("dsx-article-platform-tabs", className), defaultValue: tabs[0]?.platform, value, onValueChange, children: [
43
+ /* @__PURE__ */ jsxs(Tabs.List, { "aria-label": "Platform instructions", children: [
44
+ tabs.map((tab) => /* @__PURE__ */ jsx(Tabs.Trigger, { value: tab.platform, children: tab.label }, tab.platform)),
45
+ /* @__PURE__ */ jsx(Tabs.Indicator, {})
46
+ ] }),
47
+ tabs.map((tab) => /* @__PURE__ */ jsx(Tabs.Content, { value: tab.platform, children: tab.content }, tab.platform))
48
+ ] });
49
+ const ArticlePoll = ({ pollId, question, options = [], state = "ready", onLoad, onVote, selection, multiple = false, onSelectionChange, onSubmit, onRetract, totalVotes, className, ...props }) => {
29
50
  React.useEffect(() => {
30
51
  onLoad?.(pollId);
31
52
  }, [pollId, onLoad]);
53
+ const controlled = selection !== void 0;
54
+ const total = totalVotes ?? options.reduce((sum, option) => sum + (option.votes ?? 0), 0);
55
+ const inert = state === "closed" || state === "loading" || state === "error" || !controlled && state !== "ready";
32
56
  return /* @__PURE__ */ jsxs("div", { ...props, className: classNames("dsx-article-poll", className), "data-dsx-poll-id": pollId, "data-state": state, "aria-busy": state === "loading" || void 0, children: [
33
57
  question ? /* @__PURE__ */ jsx("strong", { children: question }) : null,
34
- state === "error" ? /* @__PURE__ */ jsx("span", { role: "alert", children: "Poll unavailable" }) : options.map((option) => /* @__PURE__ */ jsxs("button", { type: "button", disabled: state !== "ready", onClick: () => onVote?.(pollId, option.id), children: [
35
- option.label,
36
- option.votes === void 0 ? null : ` (${option.votes})`
37
- ] }, option.id))
58
+ state === "closed" ? /* @__PURE__ */ jsx("span", { role: "status", children: "Poll closed" }) : null,
59
+ state === "error" ? /* @__PURE__ */ jsx("span", { role: "alert", children: "Poll unavailable" }) : options.map((option) => /* @__PURE__ */ jsxs("div", { className: "dsx-article-poll__result", children: [
60
+ /* @__PURE__ */ jsxs(Button, { className: "dsx-article-poll__option", type: "button", size: "lg", variant: selection?.includes(option.id) ? "secondary" : "outline", "aria-pressed": controlled ? selection.includes(option.id) : void 0, disabled: inert, onClick: () => {
61
+ if (!controlled) {
62
+ onVote?.(pollId, option.id);
63
+ return;
64
+ }
65
+ onSelectionChange?.(multiple ? selection.includes(option.id) ? selection.filter((id) => id !== option.id) : [...selection, option.id] : [option.id]);
66
+ }, children: [
67
+ option.label,
68
+ option.votes === void 0 ? null : ` (${option.votes})`
69
+ ] }),
70
+ option.votes !== void 0 ? /* @__PURE__ */ jsx("progress", { "aria-label": `${String(option.label)} results`, value: option.votes, max: Math.max(total, 1) }) : null
71
+ ] }, option.id)),
72
+ controlled && !inert ? /* @__PURE__ */ jsxs("div", { className: "dsx-article-poll__actions", children: [
73
+ /* @__PURE__ */ jsx(Button, { type: "button", size: "lg", disabled: !selection.length || !onSubmit, onClick: () => onSubmit?.(pollId, selection), children: state === "voted" ? "Change vote" : "Vote" }),
74
+ state === "voted" && onRetract ? /* @__PURE__ */ jsx(Button, { type: "button", size: "lg", variant: "outline", onClick: () => onRetract(pollId), children: "Retract vote" }) : null
75
+ ] }) : null
38
76
  ] });
39
77
  };
40
78
  export {
41
79
  ArticleEmbed,
42
80
  ArticleImage,
81
+ ArticleMaterialLink,
82
+ ArticlePlatformTabs,
43
83
  ArticlePoll,
84
+ ArticleVideo,
44
85
  BeforeAfterComparison
45
86
  };
46
87
  //# sourceMappingURL=ArticleNodes.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/articleNodes/ArticleNodes.tsx"],
4
- "sourcesContent": ["import * as React from 'react'\nimport classNames from 'classnames'\n\nimport type {\n ArticleEmbedProps,\n ArticleImageProps,\n ArticlePollProps,\n BeforeAfterComparisonProps,\n} from './articleNodes.props'\n\nconst ArticleImage = ({ caption, className, alt = '', ...props }: ArticleImageProps) => <figure className=\"dsx-article-image\"><img {...props} alt={alt} className={classNames('dsx-article-image__media', className)} />{caption ? <figcaption>{caption}</figcaption> : null}</figure>\n\nconst ArticleEmbed = ({ url, render, isAllowed, className, ...props }: ArticleEmbedProps) => {\n let canonical: string | undefined\n try { const parsed = new URL(url); if (parsed.protocol === 'https:' || parsed.protocol === 'http:') canonical = parsed.href } catch {}\n const allowed = Boolean(canonical && (isAllowed?.(canonical) ?? true))\n return <div {...props} className={classNames('dsx-article-embed', className)} data-dsx-url={allowed ? canonical : undefined}>{allowed && canonical ? (render?.(canonical) ?? <a href={canonical}>{canonical}</a>) : <span role=\"alert\">Embed unavailable</span>}</div>\n}\n\nconst BeforeAfterComparison = ({ beforeSrc, afterSrc, beforeAlt, afterAlt, beforeLabel = 'Before', afterLabel = 'After', className, ...props }: BeforeAfterComparisonProps) => <figure {...props} className={classNames('dsx-before-after', className)}><div><img src={beforeSrc} alt={beforeAlt}/><span>{beforeLabel}</span></div><div><img src={afterSrc} alt={afterAlt}/><span>{afterLabel}</span></div></figure>\n\nconst ArticlePoll = ({ pollId, question, options = [], state = 'ready', onLoad, onVote, className, ...props }: ArticlePollProps) => {\n React.useEffect(() => { onLoad?.(pollId) }, [pollId, onLoad])\n return <div {...props} className={classNames('dsx-article-poll', className)} data-dsx-poll-id={pollId} data-state={state} aria-busy={state === 'loading' || undefined}>{question ? <strong>{question}</strong> : null}{state === 'error' ? <span role=\"alert\">Poll unavailable</span> : options.map((option) => <button key={option.id} type=\"button\" disabled={state !== 'ready'} onClick={() => onVote?.(pollId, option.id)}>{option.label}{option.votes === undefined ? null : ` (${option.votes})`}</button>)}</div>\n}\n\nexport { ArticleEmbed, ArticleImage, ArticlePoll, BeforeAfterComparison }\nexport type {\n ArticleEmbedProps,\n ArticleImageProps,\n ArticlePollProps,\n BeforeAfterComparisonProps,\n PollState,\n} from './articleNodes.props'\n"],
5
- "mappings": "AAAA,YAAY,WAAW;AACvB,OAAO,gBAAgB;AASiE,SAAsC,KAAtC;AAAxF,MAAM,eAAe,CAAC,EAAE,SAAS,WAAW,MAAM,IAAI,GAAG,MAAM,MAAyB,qBAAC,YAAO,WAAU,qBAAoB;AAAA,sBAAC,SAAK,GAAG,OAAO,KAAU,WAAW,WAAW,4BAA4B,SAAS,GAAG;AAAA,EAAG,UAAU,oBAAC,gBAAY,mBAAQ,IAAgB;AAAA,GAAK;AAE7Q,MAAM,eAAe,CAAC,EAAE,KAAK,QAAQ,WAAW,WAAW,GAAG,MAAM,MAAyB;AAC3F,MAAI;AACJ,MAAI;AAAE,UAAM,SAAS,IAAI,IAAI,GAAG;AAAG,QAAI,OAAO,aAAa,YAAY,OAAO,aAAa,QAAS,aAAY,OAAO;AAAA,EAAK,QAAQ;AAAA,EAAC;AACrI,QAAM,UAAU,QAAQ,cAAc,YAAY,SAAS,KAAK,KAAK;AACrE,SAAO,oBAAC,SAAK,GAAG,OAAO,WAAW,WAAW,qBAAqB,SAAS,GAAG,gBAAc,UAAU,YAAY,QAAY,qBAAW,YAAa,SAAS,SAAS,KAAK,oBAAC,OAAE,MAAM,WAAY,qBAAU,IAAQ,oBAAC,UAAK,MAAK,SAAQ,+BAAiB,GAAQ;AAClQ;AAEA,MAAM,wBAAwB,CAAC,EAAE,WAAW,UAAU,WAAW,UAAU,cAAc,UAAU,aAAa,SAAS,WAAW,GAAG,MAAM,MAAkC,qBAAC,YAAQ,GAAG,OAAO,WAAW,WAAW,oBAAoB,SAAS,GAAG;AAAA,uBAAC,SAAI;AAAA,wBAAC,SAAI,KAAK,WAAW,KAAK,WAAU;AAAA,IAAE,oBAAC,UAAM,uBAAY;AAAA,KAAO;AAAA,EAAM,qBAAC,SAAI;AAAA,wBAAC,SAAI,KAAK,UAAU,KAAK,UAAS;AAAA,IAAE,oBAAC,UAAM,sBAAW;AAAA,KAAO;AAAA,GAAM;AAE3Y,MAAM,cAAc,CAAC,EAAE,QAAQ,UAAU,UAAU,CAAC,GAAG,QAAQ,SAAS,QAAQ,QAAQ,WAAW,GAAG,MAAM,MAAwB;AAClI,QAAM,UAAU,MAAM;AAAE,aAAS,MAAM;AAAA,EAAE,GAAG,CAAC,QAAQ,MAAM,CAAC;AAC5D,SAAO,qBAAC,SAAK,GAAG,OAAO,WAAW,WAAW,oBAAoB,SAAS,GAAG,oBAAkB,QAAQ,cAAY,OAAO,aAAW,UAAU,aAAa,QAAY;AAAA,eAAW,oBAAC,YAAQ,oBAAS,IAAY;AAAA,IAAM,UAAU,UAAU,oBAAC,UAAK,MAAK,SAAQ,8BAAgB,IAAU,QAAQ,IAAI,CAAC,WAAW,qBAAC,YAAuB,MAAK,UAAS,UAAU,UAAU,SAAS,SAAS,MAAM,SAAS,QAAQ,OAAO,EAAE,GAAI;AAAA,aAAO;AAAA,MAAO,OAAO,UAAU,SAAY,OAAO,KAAK,OAAO,KAAK;AAAA,SAAtK,OAAO,EAAmK,CAAS;AAAA,KAAE;AACpf;",
4
+ "sourcesContent": ["import * as React from 'react'\nimport classNames from 'classnames'\nimport { Button } from '../button/Button'\nimport { Tabs } from '../tabs/Tabs'\nimport type { ArticleVideoProps, ArticleMaterialLinkProps, ArticlePlatformTabsProps } from './articleNodes.props'\n\nimport type {\n ArticleEmbedProps,\n ArticleImageProps,\n ArticlePollProps,\n BeforeAfterComparisonProps,\n} from './articleNodes.props'\n\nconst ArticleImage = ({ caption, className, alt = '', ...props }: ArticleImageProps) => <figure className=\"dsx-article-image\"><img {...props} alt={alt} className={classNames('dsx-article-image__media', className)} />{caption ? <figcaption>{caption}</figcaption> : null}</figure>\n\nconst ArticleEmbed = ({ url, render, isAllowed, className, ...props }: ArticleEmbedProps) => {\n let canonical: string | undefined\n try { const parsed = new URL(url); if (parsed.protocol === 'https:' || parsed.protocol === 'http:') canonical = parsed.href } catch {}\n const allowed = Boolean(canonical && (isAllowed?.(canonical) ?? true))\n return <div {...props} className={classNames('dsx-article-embed', className)} data-dsx-url={allowed ? canonical : undefined}>{allowed && canonical ? (render?.(canonical) ?? <a href={canonical}>{canonical}</a>) : <span role=\"alert\">Embed unavailable</span>}</div>\n}\n\nconst BeforeAfterComparison = ({ beforeSrc, afterSrc, beforeAlt, afterAlt, beforeLabel = 'Before', afterLabel = 'After', className, ...props }: BeforeAfterComparisonProps) => <figure {...props} className={classNames('dsx-before-after', className)}><div><img src={beforeSrc} alt={beforeAlt}/><span>{beforeLabel}</span></div><div><img src={afterSrc} alt={afterAlt}/><span>{afterLabel}</span></div></figure>\n\nconst ArticleVideo = ({ caption, className, controls = true, ...props }: ArticleVideoProps) => <figure className=\"dsx-article-video\"><video {...props} controls={controls} className={classNames('dsx-article-video__media', className)} />{caption ? <figcaption>{caption}</figcaption> : null}</figure>\nconst ArticleMaterialLink = ({ materialId, href, children, unavailableLabel = 'Material unavailable', ...props }: ArticleMaterialLinkProps) => {\n let allowed = false\n try { allowed = ['http:', 'https:'].includes(new URL(href ?? '', 'https://example.invalid').protocol) } catch {}\n return href && allowed ? <a {...props} href={href} data-dsx-material-id={materialId}>{children}</a> : <span role=\"status\" data-dsx-material-id={materialId}>{unavailableLabel}</span>\n}\nconst ArticlePlatformTabs = ({ tabs, value, onValueChange, className, dir, ...props }: ArticlePlatformTabsProps) => <Tabs {...props} dir={dir === 'rtl' || dir === 'ltr' ? dir : undefined} className={classNames('dsx-article-platform-tabs', className)} defaultValue={tabs[0]?.platform} value={value} onValueChange={onValueChange}>\n <Tabs.List aria-label=\"Platform instructions\">{tabs.map(tab => <Tabs.Trigger key={tab.platform} value={tab.platform}>{tab.label}</Tabs.Trigger>)}<Tabs.Indicator /></Tabs.List>\n {tabs.map(tab => <Tabs.Content key={tab.platform} value={tab.platform}>{tab.content}</Tabs.Content>)}\n</Tabs>\nconst ArticlePoll = ({ pollId, question, options = [], state = 'ready', onLoad, onVote, selection, multiple = false, onSelectionChange, onSubmit, onRetract, totalVotes, className, ...props }: ArticlePollProps) => {\n React.useEffect(() => { onLoad?.(pollId) }, [pollId, onLoad])\n const controlled = selection !== undefined\n const total = totalVotes ?? options.reduce((sum, option) => sum + (option.votes ?? 0), 0)\n const inert = state === 'closed' || state === 'loading' || state === 'error' || (!controlled && state !== 'ready')\n return <div {...props} className={classNames('dsx-article-poll', className)} data-dsx-poll-id={pollId} data-state={state} aria-busy={state === 'loading' || undefined}>\n {question ? <strong>{question}</strong> : null}\n {state === 'closed' ? <span role=\"status\">Poll closed</span> : null}\n {state === 'error' ? <span role=\"alert\">Poll unavailable</span> : options.map(option => <div className=\"dsx-article-poll__result\" key={option.id}>\n <Button className=\"dsx-article-poll__option\" type=\"button\" size=\"lg\" variant={selection?.includes(option.id) ? 'secondary' : 'outline'} aria-pressed={controlled ? selection.includes(option.id) : undefined} disabled={inert} onClick={() => {\n if (!controlled) { onVote?.(pollId, option.id); return }\n onSelectionChange?.(multiple ? selection.includes(option.id) ? selection.filter(id => id !== option.id) : [...selection, option.id] : [option.id])\n }}>{option.label}{option.votes === undefined ? null : ` (${option.votes})`}</Button>\n {option.votes !== undefined ? <progress aria-label={`${String(option.label)} results`} value={option.votes} max={Math.max(total, 1)} /> : null}\n </div>)}\n {controlled && !inert ? <div className=\"dsx-article-poll__actions\"><Button type=\"button\" size=\"lg\" disabled={!selection.length || !onSubmit} onClick={() => onSubmit?.(pollId, selection)}>{state === 'voted' ? 'Change vote' : 'Vote'}</Button>{state === 'voted' && onRetract ? <Button type=\"button\" size=\"lg\" variant=\"outline\" onClick={() => onRetract(pollId)}>Retract vote</Button> : null}</div> : null}\n </div>\n}\n\nexport { ArticleEmbed, ArticleImage, ArticlePoll, BeforeAfterComparison, ArticleVideo, ArticleMaterialLink, ArticlePlatformTabs }\nexport type {\n ArticleEmbedProps,\n ArticleImageProps,\n ArticlePollProps,\n BeforeAfterComparisonProps,\n PollState, ArticleVideoProps, ArticleMaterialLinkProps, ArticlePlatformTabsProps,\n} from './articleNodes.props'\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -32,7 +32,11 @@ __export(articleExtensions_exports, {
32
32
  CalloutExtension: () => CalloutExtension,
33
33
  ComparisonExtension: () => ComparisonExtension,
34
34
  EmbedExtension: () => EmbedExtension,
35
+ MaterialLinkExtension: () => MaterialLinkExtension,
36
+ PlatformTabExtension: () => PlatformTabExtension,
37
+ PlatformTabsExtension: () => PlatformTabsExtension,
35
38
  PollExtension: () => PollExtension,
39
+ VideoExtension: () => VideoExtension,
36
40
  createArticleExtensions: () => createArticleExtensions
37
41
  });
38
42
  module.exports = __toCommonJS(articleExtensions_exports);
@@ -41,6 +45,8 @@ var import_extension_image = __toESM(require("@tiptap/extension-image"), 1);
41
45
  var import_extension_table = require("@tiptap/extension-table");
42
46
  var import_extension_code_block_lowlight = __toESM(require("@tiptap/extension-code-block-lowlight"), 1);
43
47
  var import_lowlight = require("lowlight");
48
+ var import_react = require("@tiptap/react");
49
+ var import_articleNodeViews = require("./articleNodeViews");
44
50
  const lowlight = (0, import_lowlight.createLowlight)(import_lowlight.common);
45
51
  const dataAttributes = (attributes) => Object.fromEntries(Object.entries(attributes).filter(([, value]) => value != null));
46
52
  const attribute = (key, htmlName = key, defaultValue = null) => ({ default: defaultValue, parseHTML: (element) => element.getAttribute(`data-dsx-${htmlName}`), renderHTML: (attributes) => attributes[key] == null ? {} : { [`data-dsx-${htmlName}`]: attributes[key] } });
@@ -54,7 +60,7 @@ const canonicalUrl = (value) => {
54
60
  };
55
61
  const ArticleImageExtension = import_extension_image.default.extend({
56
62
  addAttributes() {
57
- return { ...this.parent?.(), caption: { default: null, parseHTML: (element) => element.getAttribute("data-dsx-caption"), renderHTML: ({ caption }) => caption ? { "data-dsx-caption": caption } : {} } };
63
+ return { ...this.parent?.(), mediaId: attribute("mediaId", "media-id"), caption: { default: null, parseHTML: (element) => element.getAttribute("data-dsx-caption"), renderHTML: ({ caption }) => caption ? { "data-dsx-caption": caption } : {} } };
58
64
  }
59
65
  });
60
66
  const EmbedExtension = import_core.Node.create({ name: "dsxEmbed", group: "block", atom: true, addAttributes: () => ({ url: attribute("url") }), parseHTML: () => [{ tag: 'div[data-dsx-node="embed"]' }], renderHTML: ({ HTMLAttributes }) => {
@@ -63,8 +69,19 @@ const EmbedExtension = import_core.Node.create({ name: "dsxEmbed", group: "block
63
69
  } });
64
70
  const CalloutExtension = import_core.Node.create({ name: "dsxCallout", group: "block", content: "block+", defining: true, addAttributes: () => ({ tone: attribute("tone", "tone", "info"), title: attribute("title") }), parseHTML: () => [{ tag: 'aside[data-dsx-node="callout"]' }], renderHTML: ({ HTMLAttributes }) => ["aside", (0, import_core.mergeAttributes)({ "data-dsx-node": "callout" }, dataAttributes(HTMLAttributes)), 0] });
65
71
  const ComparisonExtension = import_core.Node.create({ name: "dsxComparison", group: "block", atom: true, addAttributes: () => ({ beforeSrc: attribute("beforeSrc", "before-src"), afterSrc: attribute("afterSrc", "after-src"), beforeAlt: attribute("beforeAlt", "before-alt", ""), afterAlt: attribute("afterAlt", "after-alt", ""), beforeLabel: attribute("beforeLabel", "before-label"), afterLabel: attribute("afterLabel", "after-label") }), parseHTML: () => [{ tag: 'figure[data-dsx-node="comparison"]' }], renderHTML: ({ HTMLAttributes }) => ["figure", (0, import_core.mergeAttributes)({ "data-dsx-node": "comparison" }, dataAttributes(HTMLAttributes))] });
66
- const PollExtension = import_core.Node.create({ name: "dsxPoll", group: "block", atom: true, addAttributes: () => ({ pollId: attribute("pollId", "poll-id"), question: attribute("question") }), parseHTML: () => [{ tag: 'div[data-dsx-node="poll"]' }], renderHTML: ({ HTMLAttributes }) => ["div", (0, import_core.mergeAttributes)({ "data-dsx-node": "poll" }, dataAttributes(HTMLAttributes))] });
67
- function createArticleExtensions() {
68
- return [ArticleImageExtension, EmbedExtension, CalloutExtension, import_extension_code_block_lowlight.default.configure({ lowlight }), import_extension_table.Table.configure({ resizable: true }), import_extension_table.TableRow, import_extension_table.TableHeader, import_extension_table.TableCell, ComparisonExtension, PollExtension];
72
+ const PollExtension = import_core.Node.create({ name: "dsxPoll", group: "block", atom: true, addAttributes: () => ({ pollId: attribute("pollId", "poll-id"), question: attribute("question"), multiple: { default: false, parseHTML: (element) => element.getAttribute("data-dsx-multiple") === "true", renderHTML: (attrs) => ({ "data-dsx-multiple": String(attrs.multiple) }) }, options: { default: [], parseHTML: (element) => {
73
+ try {
74
+ return JSON.parse(element.getAttribute("data-dsx-options") ?? "[]");
75
+ } catch {
76
+ return [];
77
+ }
78
+ }, renderHTML: (attrs) => ({ "data-dsx-options": JSON.stringify(attrs.options) }) } }), parseHTML: () => [{ tag: 'div[data-dsx-node="poll"]' }], renderHTML: ({ HTMLAttributes }) => ["div", (0, import_core.mergeAttributes)({ "data-dsx-node": "poll" }, dataAttributes(HTMLAttributes))] });
79
+ const VideoExtension = import_core.Node.create({ name: "dsxVideo", group: "block", atom: true, addAttributes: () => ({ src: attribute("src"), caption: attribute("caption"), mediaId: attribute("mediaId", "media-id") }), parseHTML: () => [{ tag: 'figure[data-dsx-node="video"]' }], renderHTML: ({ HTMLAttributes }) => ["figure", (0, import_core.mergeAttributes)({ "data-dsx-node": "video" }, dataAttributes(HTMLAttributes))] });
80
+ const MaterialLinkExtension = import_core.Node.create({ name: "dsxMaterialLink", group: "block", atom: true, addAttributes: () => ({ materialId: attribute("materialId", "material-id"), label: attribute("label"), href: attribute("href") }), parseHTML: () => [{ tag: 'div[data-dsx-node="material-link"]' }], renderHTML: ({ HTMLAttributes }) => ["div", (0, import_core.mergeAttributes)({ "data-dsx-node": "material-link" }, dataAttributes(HTMLAttributes))] });
81
+ const PlatformTabsExtension = import_core.Node.create({ name: "dsxTabs", group: "block", content: "dsxTab+", defining: true, parseHTML: () => [{ tag: 'div[data-dsx-node="tabs"]' }], renderHTML: () => ["div", { "data-dsx-node": "tabs" }, 0] });
82
+ const PlatformTabExtension = import_core.Node.create({ name: "dsxTab", content: "block+", defining: true, addAttributes: () => ({ platform: attribute("platform"), label: attribute("label") }), parseHTML: () => [{ tag: 'section[data-dsx-node="tab"]' }], renderHTML: ({ HTMLAttributes }) => ["section", (0, import_core.mergeAttributes)({ "data-dsx-node": "tab" }, dataAttributes(HTMLAttributes)), 0] });
83
+ function createArticleExtensions({ editable = true } = {}) {
84
+ const blocks = [ArticleImageExtension, EmbedExtension, CalloutExtension, ComparisonExtension, PollExtension, VideoExtension, MaterialLinkExtension, PlatformTabsExtension, PlatformTabExtension];
85
+ return [...blocks.map((extension) => editable ? extension.extend({ addNodeView: () => (0, import_react.ReactNodeViewRenderer)(import_articleNodeViews.ArticleBlockView) }) : extension), import_extension_code_block_lowlight.default.configure({ lowlight }), import_extension_table.Table.configure({ resizable: true }), import_extension_table.TableRow, import_extension_table.TableHeader, import_extension_table.TableCell];
69
86
  }
70
87
  //# sourceMappingURL=articleExtensions.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/articleNodes/articleExtensions.ts"],
4
- "sourcesContent": ["import { Node, mergeAttributes, type Extensions } from '@tiptap/core'\nimport Image from '@tiptap/extension-image'\nimport { Table, TableCell, TableHeader, TableRow } from '@tiptap/extension-table'\nimport CodeBlockLowlight from '@tiptap/extension-code-block-lowlight'\nimport { common, createLowlight } from 'lowlight'\n\nconst lowlight = createLowlight(common)\nconst dataAttributes = (attributes: Record<string, unknown>) => Object.fromEntries(Object.entries(attributes).filter(([, value]) => value != null))\nconst attribute = (key: string, htmlName = key, defaultValue: unknown = null) => ({ default: defaultValue, parseHTML: (element: HTMLElement) => element.getAttribute(`data-dsx-${htmlName}`), renderHTML: (attributes: Record<string, unknown>) => attributes[key] == null ? {} : { [`data-dsx-${htmlName}`]: attributes[key] } })\nconst canonicalUrl = (value: unknown) => { try { const url = new URL(String(value)); return url.protocol === 'https:' || url.protocol === 'http:' ? url.href : null } catch { return null } }\n\nconst ArticleImageExtension = Image.extend({\n addAttributes() { return { ...this.parent?.(), caption: { default: null, parseHTML: (element) => element.getAttribute('data-dsx-caption'), renderHTML: ({ caption }) => caption ? { 'data-dsx-caption': caption } : {} } } },\n})\nconst EmbedExtension = Node.create({ name: 'dsxEmbed', group: 'block', atom: true, addAttributes: () => ({ url: attribute('url') }), parseHTML: () => [{ tag: 'div[data-dsx-node=\"embed\"]' }], renderHTML: ({ HTMLAttributes }) => { const url = canonicalUrl(HTMLAttributes['data-dsx-url']); return ['div', { 'data-dsx-node': 'embed', ...(url ? { 'data-dsx-url': url } : { 'data-dsx-invalid': 'true' }) }] } })\nconst CalloutExtension = Node.create({ name: 'dsxCallout', group: 'block', content: 'block+', defining: true, addAttributes: () => ({ tone: attribute('tone', 'tone', 'info'), title: attribute('title') }), parseHTML: () => [{ tag: 'aside[data-dsx-node=\"callout\"]' }], renderHTML: ({ HTMLAttributes }) => ['aside', mergeAttributes({ 'data-dsx-node': 'callout' }, dataAttributes(HTMLAttributes)), 0] })\nconst ComparisonExtension = Node.create({ name: 'dsxComparison', group: 'block', atom: true, addAttributes: () => ({ beforeSrc: attribute('beforeSrc', 'before-src'), afterSrc: attribute('afterSrc', 'after-src'), beforeAlt: attribute('beforeAlt', 'before-alt', ''), afterAlt: attribute('afterAlt', 'after-alt', ''), beforeLabel: attribute('beforeLabel', 'before-label'), afterLabel: attribute('afterLabel', 'after-label') }), parseHTML: () => [{ tag: 'figure[data-dsx-node=\"comparison\"]' }], renderHTML: ({ HTMLAttributes }) => ['figure', mergeAttributes({ 'data-dsx-node': 'comparison' }, dataAttributes(HTMLAttributes))] })\nconst PollExtension = Node.create({ name: 'dsxPoll', group: 'block', atom: true, addAttributes: () => ({ pollId: attribute('pollId', 'poll-id'), question: attribute('question') }), parseHTML: () => [{ tag: 'div[data-dsx-node=\"poll\"]' }], renderHTML: ({ HTMLAttributes }) => ['div', mergeAttributes({ 'data-dsx-node': 'poll' }, dataAttributes(HTMLAttributes))] })\n\nfunction createArticleExtensions(): Extensions {\n return [ArticleImageExtension, EmbedExtension, CalloutExtension, CodeBlockLowlight.configure({ lowlight }), Table.configure({ resizable: true }), TableRow, TableHeader, TableCell, ComparisonExtension, PollExtension]\n}\n\nexport { ArticleImageExtension, CalloutExtension, ComparisonExtension, EmbedExtension, PollExtension, createArticleExtensions }\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Node, mergeAttributes, type Extensions } from '@tiptap/core'\nimport Image from '@tiptap/extension-image'\nimport { Table, TableCell, TableHeader, TableRow } from '@tiptap/extension-table'\nimport CodeBlockLowlight from '@tiptap/extension-code-block-lowlight'\nimport { common, createLowlight } from 'lowlight'\nimport { ReactNodeViewRenderer } from '@tiptap/react'\nimport { ArticleBlockView } from './articleNodeViews'\n\nconst lowlight = createLowlight(common)\nconst dataAttributes = (attributes: Record<string, unknown>) => Object.fromEntries(Object.entries(attributes).filter(([, value]) => value != null))\nconst attribute = (key: string, htmlName = key, defaultValue: unknown = null) => ({ default: defaultValue, parseHTML: (element: HTMLElement) => element.getAttribute(`data-dsx-${htmlName}`), renderHTML: (attributes: Record<string, unknown>) => attributes[key] == null ? {} : { [`data-dsx-${htmlName}`]: attributes[key] } })\nconst canonicalUrl = (value: unknown) => { try { const url = new URL(String(value)); return url.protocol === 'https:' || url.protocol === 'http:' ? url.href : null } catch { return null } }\n\nconst ArticleImageExtension = Image.extend({\n addAttributes() { return { ...this.parent?.(), mediaId: attribute('mediaId', 'media-id'), caption: { default: null, parseHTML: (element) => element.getAttribute('data-dsx-caption'), renderHTML: ({ caption }) => caption ? { 'data-dsx-caption': caption } : {} } } },\n})\nconst EmbedExtension = Node.create({ name: 'dsxEmbed', group: 'block', atom: true, addAttributes: () => ({ url: attribute('url') }), parseHTML: () => [{ tag: 'div[data-dsx-node=\"embed\"]' }], renderHTML: ({ HTMLAttributes }) => { const url = canonicalUrl(HTMLAttributes['data-dsx-url']); return ['div', { 'data-dsx-node': 'embed', ...(url ? { 'data-dsx-url': url } : { 'data-dsx-invalid': 'true' }) }] } })\nconst CalloutExtension = Node.create({ name: 'dsxCallout', group: 'block', content: 'block+', defining: true, addAttributes: () => ({ tone: attribute('tone', 'tone', 'info'), title: attribute('title') }), parseHTML: () => [{ tag: 'aside[data-dsx-node=\"callout\"]' }], renderHTML: ({ HTMLAttributes }) => ['aside', mergeAttributes({ 'data-dsx-node': 'callout' }, dataAttributes(HTMLAttributes)), 0] })\nconst ComparisonExtension = Node.create({ name: 'dsxComparison', group: 'block', atom: true, addAttributes: () => ({ beforeSrc: attribute('beforeSrc', 'before-src'), afterSrc: attribute('afterSrc', 'after-src'), beforeAlt: attribute('beforeAlt', 'before-alt', ''), afterAlt: attribute('afterAlt', 'after-alt', ''), beforeLabel: attribute('beforeLabel', 'before-label'), afterLabel: attribute('afterLabel', 'after-label') }), parseHTML: () => [{ tag: 'figure[data-dsx-node=\"comparison\"]' }], renderHTML: ({ HTMLAttributes }) => ['figure', mergeAttributes({ 'data-dsx-node': 'comparison' }, dataAttributes(HTMLAttributes))] })\nconst PollExtension = Node.create({ name: 'dsxPoll', group: 'block', atom: true, addAttributes: () => ({ pollId: attribute('pollId', 'poll-id'), question: attribute('question'), multiple: { default: false, parseHTML: element => element.getAttribute('data-dsx-multiple') === 'true', renderHTML: attrs => ({ 'data-dsx-multiple': String(attrs.multiple) }) }, options: { default: [], parseHTML: element => { try { return JSON.parse(element.getAttribute('data-dsx-options') ?? '[]') } catch { return [] } }, renderHTML: attrs => ({ 'data-dsx-options': JSON.stringify(attrs.options) }) } }), parseHTML: () => [{ tag: 'div[data-dsx-node=\"poll\"]' }], renderHTML: ({ HTMLAttributes }) => ['div', mergeAttributes({ 'data-dsx-node': 'poll' }, dataAttributes(HTMLAttributes))] })\n\nconst VideoExtension = Node.create({ name: 'dsxVideo', group: 'block', atom: true, addAttributes: () => ({ src: attribute('src'), caption: attribute('caption'), mediaId: attribute('mediaId', 'media-id') }), parseHTML: () => [{ tag: 'figure[data-dsx-node=\"video\"]' }], renderHTML: ({ HTMLAttributes }) => ['figure', mergeAttributes({ 'data-dsx-node': 'video' }, dataAttributes(HTMLAttributes))] })\nconst MaterialLinkExtension = Node.create({ name: 'dsxMaterialLink', group: 'block', atom: true, addAttributes: () => ({ materialId: attribute('materialId', 'material-id'), label: attribute('label'), href: attribute('href') }), parseHTML: () => [{ tag: 'div[data-dsx-node=\"material-link\"]' }], renderHTML: ({ HTMLAttributes }) => ['div', mergeAttributes({ 'data-dsx-node': 'material-link' }, dataAttributes(HTMLAttributes))] })\nconst PlatformTabsExtension = Node.create({ name: 'dsxTabs', group: 'block', content: 'dsxTab+', defining: true, parseHTML: () => [{ tag: 'div[data-dsx-node=\"tabs\"]' }], renderHTML: () => ['div', { 'data-dsx-node': 'tabs' }, 0] })\nconst PlatformTabExtension = Node.create({ name: 'dsxTab', content: 'block+', defining: true, addAttributes: () => ({ platform: attribute('platform'), label: attribute('label') }), parseHTML: () => [{ tag: 'section[data-dsx-node=\"tab\"]' }], renderHTML: ({ HTMLAttributes }) => ['section', mergeAttributes({ 'data-dsx-node': 'tab' }, dataAttributes(HTMLAttributes)), 0] })\n\nfunction createArticleExtensions({ editable = true }: { editable?: boolean } = {}): Extensions {\n const blocks = [ArticleImageExtension, EmbedExtension, CalloutExtension, ComparisonExtension, PollExtension, VideoExtension, MaterialLinkExtension, PlatformTabsExtension, PlatformTabExtension]\n return [...blocks.map(extension => editable ? extension.extend({ addNodeView: () => ReactNodeViewRenderer(ArticleBlockView) }) : extension), CodeBlockLowlight.configure({ lowlight }), Table.configure({ resizable: true }), TableRow, TableHeader, TableCell]\n}\n\nexport { ArticleImageExtension, CalloutExtension, ComparisonExtension, EmbedExtension, PollExtension, VideoExtension, MaterialLinkExtension, PlatformTabsExtension, PlatformTabExtension, createArticleExtensions }\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAuD;AACvD,6BAAkB;AAClB,6BAAwD;AACxD,2CAA8B;AAC9B,sBAAuC;AACvC,mBAAsC;AACtC,8BAAiC;AAEjC,MAAM,eAAW,gCAAe,sBAAM;AACtC,MAAM,iBAAiB,CAAC,eAAwC,OAAO,YAAY,OAAO,QAAQ,UAAU,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,SAAS,IAAI,CAAC;AAClJ,MAAM,YAAY,CAAC,KAAa,WAAW,KAAK,eAAwB,UAAU,EAAE,SAAS,cAAc,WAAW,CAAC,YAAyB,QAAQ,aAAa,YAAY,QAAQ,EAAE,GAAG,YAAY,CAAC,eAAwC,WAAW,GAAG,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,YAAY,QAAQ,EAAE,GAAG,WAAW,GAAG,EAAE,EAAE;AAChU,MAAM,eAAe,CAAC,UAAmB;AAAE,MAAI;AAAE,UAAM,MAAM,IAAI,IAAI,OAAO,KAAK,CAAC;AAAG,WAAO,IAAI,aAAa,YAAY,IAAI,aAAa,UAAU,IAAI,OAAO;AAAA,EAAK,QAAQ;AAAE,WAAO;AAAA,EAAK;AAAE;AAE5L,MAAM,wBAAwB,uBAAAA,QAAM,OAAO;AAAA,EACzC,gBAAgB;AAAE,WAAO,EAAE,GAAG,KAAK,SAAS,GAAG,SAAS,UAAU,WAAW,UAAU,GAAG,SAAS,EAAE,SAAS,MAAM,WAAW,CAAC,YAAY,QAAQ,aAAa,kBAAkB,GAAG,YAAY,CAAC,EAAE,QAAQ,MAAM,UAAU,EAAE,oBAAoB,QAAQ,IAAI,CAAC,EAAE,EAAE;AAAA,EAAE;AACxQ,CAAC;AACD,MAAM,iBAAiB,iBAAK,OAAO,EAAE,MAAM,YAAY,OAAO,SAAS,MAAM,MAAM,eAAe,OAAO,EAAE,KAAK,UAAU,KAAK,EAAE,IAAI,WAAW,MAAM,CAAC,EAAE,KAAK,6BAA6B,CAAC,GAAG,YAAY,CAAC,EAAE,eAAe,MAAM;AAAE,QAAM,MAAM,aAAa,eAAe,cAAc,CAAC;AAAG,SAAO,CAAC,OAAO,EAAE,iBAAiB,SAAS,GAAI,MAAM,EAAE,gBAAgB,IAAI,IAAI,EAAE,oBAAoB,OAAO,EAAG,CAAC;AAAE,EAAE,CAAC;AACpZ,MAAM,mBAAmB,iBAAK,OAAO,EAAE,MAAM,cAAc,OAAO,SAAS,SAAS,UAAU,UAAU,MAAM,eAAe,OAAO,EAAE,MAAM,UAAU,QAAQ,QAAQ,MAAM,GAAG,OAAO,UAAU,OAAO,EAAE,IAAI,WAAW,MAAM,CAAC,EAAE,KAAK,iCAAiC,CAAC,GAAG,YAAY,CAAC,EAAE,eAAe,MAAM,CAAC,aAAS,6BAAgB,EAAE,iBAAiB,UAAU,GAAG,eAAe,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;AAC9Y,MAAM,sBAAsB,iBAAK,OAAO,EAAE,MAAM,iBAAiB,OAAO,SAAS,MAAM,MAAM,eAAe,OAAO,EAAE,WAAW,UAAU,aAAa,YAAY,GAAG,UAAU,UAAU,YAAY,WAAW,GAAG,WAAW,UAAU,aAAa,cAAc,EAAE,GAAG,UAAU,UAAU,YAAY,aAAa,EAAE,GAAG,aAAa,UAAU,eAAe,cAAc,GAAG,YAAY,UAAU,cAAc,aAAa,EAAE,IAAI,WAAW,MAAM,CAAC,EAAE,KAAK,qCAAqC,CAAC,GAAG,YAAY,CAAC,EAAE,eAAe,MAAM,CAAC,cAAU,6BAAgB,EAAE,iBAAiB,aAAa,GAAG,eAAe,cAAc,CAAC,CAAC,EAAE,CAAC;AAC/mB,MAAM,gBAAgB,iBAAK,OAAO,EAAE,MAAM,WAAW,OAAO,SAAS,MAAM,MAAM,eAAe,OAAO,EAAE,QAAQ,UAAU,UAAU,SAAS,GAAG,UAAU,UAAU,UAAU,GAAG,UAAU,EAAE,SAAS,OAAO,WAAW,aAAW,QAAQ,aAAa,mBAAmB,MAAM,QAAQ,YAAY,YAAU,EAAE,qBAAqB,OAAO,MAAM,QAAQ,EAAE,GAAG,GAAG,SAAS,EAAE,SAAS,CAAC,GAAG,WAAW,aAAW;AAAE,MAAI;AAAE,WAAO,KAAK,MAAM,QAAQ,aAAa,kBAAkB,KAAK,IAAI;AAAA,EAAE,QAAQ;AAAE,WAAO,CAAC;AAAA,EAAE;AAAE,GAAG,YAAY,YAAU,EAAE,oBAAoB,KAAK,UAAU,MAAM,OAAO,EAAE,GAAG,EAAE,IAAI,WAAW,MAAM,CAAC,EAAE,KAAK,4BAA4B,CAAC,GAAG,YAAY,CAAC,EAAE,eAAe,MAAM,CAAC,WAAO,6BAAgB,EAAE,iBAAiB,OAAO,GAAG,eAAe,cAAc,CAAC,CAAC,EAAE,CAAC;AAE9vB,MAAM,iBAAiB,iBAAK,OAAO,EAAE,MAAM,YAAY,OAAO,SAAS,MAAM,MAAM,eAAe,OAAO,EAAE,KAAK,UAAU,KAAK,GAAG,SAAS,UAAU,SAAS,GAAG,SAAS,UAAU,WAAW,UAAU,EAAE,IAAI,WAAW,MAAM,CAAC,EAAE,KAAK,gCAAgC,CAAC,GAAG,YAAY,CAAC,EAAE,eAAe,MAAM,CAAC,cAAU,6BAAgB,EAAE,iBAAiB,QAAQ,GAAG,eAAe,cAAc,CAAC,CAAC,EAAE,CAAC;AAC3Y,MAAM,wBAAwB,iBAAK,OAAO,EAAE,MAAM,mBAAmB,OAAO,SAAS,MAAM,MAAM,eAAe,OAAO,EAAE,YAAY,UAAU,cAAc,aAAa,GAAG,OAAO,UAAU,OAAO,GAAG,MAAM,UAAU,MAAM,EAAE,IAAI,WAAW,MAAM,CAAC,EAAE,KAAK,qCAAqC,CAAC,GAAG,YAAY,CAAC,EAAE,eAAe,MAAM,CAAC,WAAO,6BAAgB,EAAE,iBAAiB,gBAAgB,GAAG,eAAe,cAAc,CAAC,CAAC,EAAE,CAAC;AAC1a,MAAM,wBAAwB,iBAAK,OAAO,EAAE,MAAM,WAAW,OAAO,SAAS,SAAS,WAAW,UAAU,MAAM,WAAW,MAAM,CAAC,EAAE,KAAK,4BAA4B,CAAC,GAAG,YAAY,MAAM,CAAC,OAAO,EAAE,iBAAiB,OAAO,GAAG,CAAC,EAAE,CAAC;AACrO,MAAM,uBAAuB,iBAAK,OAAO,EAAE,MAAM,UAAU,SAAS,UAAU,UAAU,MAAM,eAAe,OAAO,EAAE,UAAU,UAAU,UAAU,GAAG,OAAO,UAAU,OAAO,EAAE,IAAI,WAAW,MAAM,CAAC,EAAE,KAAK,+BAA+B,CAAC,GAAG,YAAY,CAAC,EAAE,eAAe,MAAM,CAAC,eAAW,6BAAgB,EAAE,iBAAiB,MAAM,GAAG,eAAe,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;AAElX,SAAS,wBAAwB,EAAE,WAAW,KAAK,IAA4B,CAAC,GAAe;AAC7F,QAAM,SAAS,CAAC,uBAAuB,gBAAgB,kBAAkB,qBAAqB,eAAe,gBAAgB,uBAAuB,uBAAuB,oBAAoB;AAC/L,SAAO,CAAC,GAAG,OAAO,IAAI,eAAa,WAAW,UAAU,OAAO,EAAE,aAAa,UAAM,oCAAsB,wCAAgB,EAAE,CAAC,IAAI,SAAS,GAAG,qCAAAC,QAAkB,UAAU,EAAE,SAAS,CAAC,GAAG,6BAAM,UAAU,EAAE,WAAW,KAAK,CAAC,GAAG,iCAAU,oCAAa,gCAAS;AAChQ;",
6
6
  "names": ["Image", "CodeBlockLowlight"]
7
7
  }
@@ -4,6 +4,12 @@ declare const EmbedExtension: Node<any, any>;
4
4
  declare const CalloutExtension: Node<any, any>;
5
5
  declare const ComparisonExtension: Node<any, any>;
6
6
  declare const PollExtension: Node<any, any>;
7
- declare function createArticleExtensions(): Extensions;
8
- export { ArticleImageExtension, CalloutExtension, ComparisonExtension, EmbedExtension, PollExtension, createArticleExtensions };
7
+ declare const VideoExtension: Node<any, any>;
8
+ declare const MaterialLinkExtension: Node<any, any>;
9
+ declare const PlatformTabsExtension: Node<any, any>;
10
+ declare const PlatformTabExtension: Node<any, any>;
11
+ declare function createArticleExtensions({ editable }?: {
12
+ editable?: boolean;
13
+ }): Extensions;
14
+ export { ArticleImageExtension, CalloutExtension, ComparisonExtension, EmbedExtension, PollExtension, VideoExtension, MaterialLinkExtension, PlatformTabsExtension, PlatformTabExtension, createArticleExtensions };
9
15
  //# sourceMappingURL=articleExtensions.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"articleExtensions.d.cts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleExtensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAWrE,QAAA,MAAM,qBAAqB,2DAEzB,CAAA;AACF,QAAA,MAAM,cAAc,gBAAiY,CAAA;AACrZ,QAAA,MAAM,gBAAgB,gBAAyX,CAAA;AAC/Y,QAAA,MAAM,mBAAmB,gBAAulB,CAAA;AAChnB,QAAA,MAAM,aAAa,gBAAuV,CAAA;AAE1W,iBAAS,uBAAuB,IAAI,UAAU,CAE7C;AAED,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAA"}
1
+ {"version":3,"file":"articleExtensions.d.cts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleExtensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAarE,QAAA,MAAM,qBAAqB,2DAEzB,CAAA;AACF,QAAA,MAAM,cAAc,gBAAiY,CAAA;AACrZ,QAAA,MAAM,gBAAgB,gBAAyX,CAAA;AAC/Y,QAAA,MAAM,mBAAmB,gBAAulB,CAAA;AAChnB,QAAA,MAAM,aAAa,gBAA4uB,CAAA;AAE/vB,QAAA,MAAM,cAAc,gBAAwX,CAAA;AAC5Y,QAAA,MAAM,qBAAqB,gBAAgZ,CAAA;AAC3a,QAAA,MAAM,qBAAqB,gBAA2M,CAAA;AACtO,QAAA,MAAM,oBAAoB,gBAAyV,CAAA;AAEnX,iBAAS,uBAAuB,CAAC,EAAE,QAAe,EAAE,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,UAAU,CAG7F;AAED,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,CAAA"}
@@ -4,6 +4,12 @@ declare const EmbedExtension: Node<any, any>;
4
4
  declare const CalloutExtension: Node<any, any>;
5
5
  declare const ComparisonExtension: Node<any, any>;
6
6
  declare const PollExtension: Node<any, any>;
7
- declare function createArticleExtensions(): Extensions;
8
- export { ArticleImageExtension, CalloutExtension, ComparisonExtension, EmbedExtension, PollExtension, createArticleExtensions };
7
+ declare const VideoExtension: Node<any, any>;
8
+ declare const MaterialLinkExtension: Node<any, any>;
9
+ declare const PlatformTabsExtension: Node<any, any>;
10
+ declare const PlatformTabExtension: Node<any, any>;
11
+ declare function createArticleExtensions({ editable }?: {
12
+ editable?: boolean;
13
+ }): Extensions;
14
+ export { ArticleImageExtension, CalloutExtension, ComparisonExtension, EmbedExtension, PollExtension, VideoExtension, MaterialLinkExtension, PlatformTabsExtension, PlatformTabExtension, createArticleExtensions };
9
15
  //# sourceMappingURL=articleExtensions.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"articleExtensions.d.mts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleExtensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAWrE,QAAA,MAAM,qBAAqB,2DAEzB,CAAA;AACF,QAAA,MAAM,cAAc,gBAAiY,CAAA;AACrZ,QAAA,MAAM,gBAAgB,gBAAyX,CAAA;AAC/Y,QAAA,MAAM,mBAAmB,gBAAulB,CAAA;AAChnB,QAAA,MAAM,aAAa,gBAAuV,CAAA;AAE1W,iBAAS,uBAAuB,IAAI,UAAU,CAE7C;AAED,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAA"}
1
+ {"version":3,"file":"articleExtensions.d.mts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleExtensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAarE,QAAA,MAAM,qBAAqB,2DAEzB,CAAA;AACF,QAAA,MAAM,cAAc,gBAAiY,CAAA;AACrZ,QAAA,MAAM,gBAAgB,gBAAyX,CAAA;AAC/Y,QAAA,MAAM,mBAAmB,gBAAulB,CAAA;AAChnB,QAAA,MAAM,aAAa,gBAA4uB,CAAA;AAE/vB,QAAA,MAAM,cAAc,gBAAwX,CAAA;AAC5Y,QAAA,MAAM,qBAAqB,gBAAgZ,CAAA;AAC3a,QAAA,MAAM,qBAAqB,gBAA2M,CAAA;AACtO,QAAA,MAAM,oBAAoB,gBAAyV,CAAA;AAEnX,iBAAS,uBAAuB,CAAC,EAAE,QAAe,EAAE,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,UAAU,CAG7F;AAED,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,CAAA"}
@@ -4,6 +4,12 @@ declare const EmbedExtension: Node<any, any>;
4
4
  declare const CalloutExtension: Node<any, any>;
5
5
  declare const ComparisonExtension: Node<any, any>;
6
6
  declare const PollExtension: Node<any, any>;
7
- declare function createArticleExtensions(): Extensions;
8
- export { ArticleImageExtension, CalloutExtension, ComparisonExtension, EmbedExtension, PollExtension, createArticleExtensions };
7
+ declare const VideoExtension: Node<any, any>;
8
+ declare const MaterialLinkExtension: Node<any, any>;
9
+ declare const PlatformTabsExtension: Node<any, any>;
10
+ declare const PlatformTabExtension: Node<any, any>;
11
+ declare function createArticleExtensions({ editable }?: {
12
+ editable?: boolean;
13
+ }): Extensions;
14
+ export { ArticleImageExtension, CalloutExtension, ComparisonExtension, EmbedExtension, PollExtension, VideoExtension, MaterialLinkExtension, PlatformTabsExtension, PlatformTabExtension, createArticleExtensions };
9
15
  //# sourceMappingURL=articleExtensions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"articleExtensions.d.ts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleExtensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAWrE,QAAA,MAAM,qBAAqB,2DAEzB,CAAA;AACF,QAAA,MAAM,cAAc,gBAAiY,CAAA;AACrZ,QAAA,MAAM,gBAAgB,gBAAyX,CAAA;AAC/Y,QAAA,MAAM,mBAAmB,gBAAulB,CAAA;AAChnB,QAAA,MAAM,aAAa,gBAAuV,CAAA;AAE1W,iBAAS,uBAAuB,IAAI,UAAU,CAE7C;AAED,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAA"}
1
+ {"version":3,"file":"articleExtensions.d.ts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleExtensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAarE,QAAA,MAAM,qBAAqB,2DAEzB,CAAA;AACF,QAAA,MAAM,cAAc,gBAAiY,CAAA;AACrZ,QAAA,MAAM,gBAAgB,gBAAyX,CAAA;AAC/Y,QAAA,MAAM,mBAAmB,gBAAulB,CAAA;AAChnB,QAAA,MAAM,aAAa,gBAA4uB,CAAA;AAE/vB,QAAA,MAAM,cAAc,gBAAwX,CAAA;AAC5Y,QAAA,MAAM,qBAAqB,gBAAgZ,CAAA;AAC3a,QAAA,MAAM,qBAAqB,gBAA2M,CAAA;AACtO,QAAA,MAAM,oBAAoB,gBAAyV,CAAA;AAEnX,iBAAS,uBAAuB,CAAC,EAAE,QAAe,EAAE,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,UAAU,CAG7F;AAED,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,CAAA"}
@@ -3,6 +3,8 @@ import Image from "@tiptap/extension-image";
3
3
  import { Table, TableCell, TableHeader, TableRow } from "@tiptap/extension-table";
4
4
  import CodeBlockLowlight from "@tiptap/extension-code-block-lowlight";
5
5
  import { common, createLowlight } from "lowlight";
6
+ import { ReactNodeViewRenderer } from "@tiptap/react";
7
+ import { ArticleBlockView } from "./articleNodeViews.js";
6
8
  const lowlight = createLowlight(common);
7
9
  const dataAttributes = (attributes) => Object.fromEntries(Object.entries(attributes).filter(([, value]) => value != null));
8
10
  const attribute = (key, htmlName = key, defaultValue = null) => ({ default: defaultValue, parseHTML: (element) => element.getAttribute(`data-dsx-${htmlName}`), renderHTML: (attributes) => attributes[key] == null ? {} : { [`data-dsx-${htmlName}`]: attributes[key] } });
@@ -16,7 +18,7 @@ const canonicalUrl = (value) => {
16
18
  };
17
19
  const ArticleImageExtension = Image.extend({
18
20
  addAttributes() {
19
- return { ...this.parent?.(), caption: { default: null, parseHTML: (element) => element.getAttribute("data-dsx-caption"), renderHTML: ({ caption }) => caption ? { "data-dsx-caption": caption } : {} } };
21
+ return { ...this.parent?.(), mediaId: attribute("mediaId", "media-id"), caption: { default: null, parseHTML: (element) => element.getAttribute("data-dsx-caption"), renderHTML: ({ caption }) => caption ? { "data-dsx-caption": caption } : {} } };
20
22
  }
21
23
  });
22
24
  const EmbedExtension = Node.create({ name: "dsxEmbed", group: "block", atom: true, addAttributes: () => ({ url: attribute("url") }), parseHTML: () => [{ tag: 'div[data-dsx-node="embed"]' }], renderHTML: ({ HTMLAttributes }) => {
@@ -25,16 +27,31 @@ const EmbedExtension = Node.create({ name: "dsxEmbed", group: "block", atom: tru
25
27
  } });
26
28
  const CalloutExtension = Node.create({ name: "dsxCallout", group: "block", content: "block+", defining: true, addAttributes: () => ({ tone: attribute("tone", "tone", "info"), title: attribute("title") }), parseHTML: () => [{ tag: 'aside[data-dsx-node="callout"]' }], renderHTML: ({ HTMLAttributes }) => ["aside", mergeAttributes({ "data-dsx-node": "callout" }, dataAttributes(HTMLAttributes)), 0] });
27
29
  const ComparisonExtension = Node.create({ name: "dsxComparison", group: "block", atom: true, addAttributes: () => ({ beforeSrc: attribute("beforeSrc", "before-src"), afterSrc: attribute("afterSrc", "after-src"), beforeAlt: attribute("beforeAlt", "before-alt", ""), afterAlt: attribute("afterAlt", "after-alt", ""), beforeLabel: attribute("beforeLabel", "before-label"), afterLabel: attribute("afterLabel", "after-label") }), parseHTML: () => [{ tag: 'figure[data-dsx-node="comparison"]' }], renderHTML: ({ HTMLAttributes }) => ["figure", mergeAttributes({ "data-dsx-node": "comparison" }, dataAttributes(HTMLAttributes))] });
28
- const PollExtension = Node.create({ name: "dsxPoll", group: "block", atom: true, addAttributes: () => ({ pollId: attribute("pollId", "poll-id"), question: attribute("question") }), parseHTML: () => [{ tag: 'div[data-dsx-node="poll"]' }], renderHTML: ({ HTMLAttributes }) => ["div", mergeAttributes({ "data-dsx-node": "poll" }, dataAttributes(HTMLAttributes))] });
29
- function createArticleExtensions() {
30
- return [ArticleImageExtension, EmbedExtension, CalloutExtension, CodeBlockLowlight.configure({ lowlight }), Table.configure({ resizable: true }), TableRow, TableHeader, TableCell, ComparisonExtension, PollExtension];
30
+ const PollExtension = Node.create({ name: "dsxPoll", group: "block", atom: true, addAttributes: () => ({ pollId: attribute("pollId", "poll-id"), question: attribute("question"), multiple: { default: false, parseHTML: (element) => element.getAttribute("data-dsx-multiple") === "true", renderHTML: (attrs) => ({ "data-dsx-multiple": String(attrs.multiple) }) }, options: { default: [], parseHTML: (element) => {
31
+ try {
32
+ return JSON.parse(element.getAttribute("data-dsx-options") ?? "[]");
33
+ } catch {
34
+ return [];
35
+ }
36
+ }, renderHTML: (attrs) => ({ "data-dsx-options": JSON.stringify(attrs.options) }) } }), parseHTML: () => [{ tag: 'div[data-dsx-node="poll"]' }], renderHTML: ({ HTMLAttributes }) => ["div", mergeAttributes({ "data-dsx-node": "poll" }, dataAttributes(HTMLAttributes))] });
37
+ const VideoExtension = Node.create({ name: "dsxVideo", group: "block", atom: true, addAttributes: () => ({ src: attribute("src"), caption: attribute("caption"), mediaId: attribute("mediaId", "media-id") }), parseHTML: () => [{ tag: 'figure[data-dsx-node="video"]' }], renderHTML: ({ HTMLAttributes }) => ["figure", mergeAttributes({ "data-dsx-node": "video" }, dataAttributes(HTMLAttributes))] });
38
+ const MaterialLinkExtension = Node.create({ name: "dsxMaterialLink", group: "block", atom: true, addAttributes: () => ({ materialId: attribute("materialId", "material-id"), label: attribute("label"), href: attribute("href") }), parseHTML: () => [{ tag: 'div[data-dsx-node="material-link"]' }], renderHTML: ({ HTMLAttributes }) => ["div", mergeAttributes({ "data-dsx-node": "material-link" }, dataAttributes(HTMLAttributes))] });
39
+ const PlatformTabsExtension = Node.create({ name: "dsxTabs", group: "block", content: "dsxTab+", defining: true, parseHTML: () => [{ tag: 'div[data-dsx-node="tabs"]' }], renderHTML: () => ["div", { "data-dsx-node": "tabs" }, 0] });
40
+ const PlatformTabExtension = Node.create({ name: "dsxTab", content: "block+", defining: true, addAttributes: () => ({ platform: attribute("platform"), label: attribute("label") }), parseHTML: () => [{ tag: 'section[data-dsx-node="tab"]' }], renderHTML: ({ HTMLAttributes }) => ["section", mergeAttributes({ "data-dsx-node": "tab" }, dataAttributes(HTMLAttributes)), 0] });
41
+ function createArticleExtensions({ editable = true } = {}) {
42
+ const blocks = [ArticleImageExtension, EmbedExtension, CalloutExtension, ComparisonExtension, PollExtension, VideoExtension, MaterialLinkExtension, PlatformTabsExtension, PlatformTabExtension];
43
+ return [...blocks.map((extension) => editable ? extension.extend({ addNodeView: () => ReactNodeViewRenderer(ArticleBlockView) }) : extension), CodeBlockLowlight.configure({ lowlight }), Table.configure({ resizable: true }), TableRow, TableHeader, TableCell];
31
44
  }
32
45
  export {
33
46
  ArticleImageExtension,
34
47
  CalloutExtension,
35
48
  ComparisonExtension,
36
49
  EmbedExtension,
50
+ MaterialLinkExtension,
51
+ PlatformTabExtension,
52
+ PlatformTabsExtension,
37
53
  PollExtension,
54
+ VideoExtension,
38
55
  createArticleExtensions
39
56
  };
40
57
  //# sourceMappingURL=articleExtensions.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/articleNodes/articleExtensions.ts"],
4
- "sourcesContent": ["import { Node, mergeAttributes, type Extensions } from '@tiptap/core'\nimport Image from '@tiptap/extension-image'\nimport { Table, TableCell, TableHeader, TableRow } from '@tiptap/extension-table'\nimport CodeBlockLowlight from '@tiptap/extension-code-block-lowlight'\nimport { common, createLowlight } from 'lowlight'\n\nconst lowlight = createLowlight(common)\nconst dataAttributes = (attributes: Record<string, unknown>) => Object.fromEntries(Object.entries(attributes).filter(([, value]) => value != null))\nconst attribute = (key: string, htmlName = key, defaultValue: unknown = null) => ({ default: defaultValue, parseHTML: (element: HTMLElement) => element.getAttribute(`data-dsx-${htmlName}`), renderHTML: (attributes: Record<string, unknown>) => attributes[key] == null ? {} : { [`data-dsx-${htmlName}`]: attributes[key] } })\nconst canonicalUrl = (value: unknown) => { try { const url = new URL(String(value)); return url.protocol === 'https:' || url.protocol === 'http:' ? url.href : null } catch { return null } }\n\nconst ArticleImageExtension = Image.extend({\n addAttributes() { return { ...this.parent?.(), caption: { default: null, parseHTML: (element) => element.getAttribute('data-dsx-caption'), renderHTML: ({ caption }) => caption ? { 'data-dsx-caption': caption } : {} } } },\n})\nconst EmbedExtension = Node.create({ name: 'dsxEmbed', group: 'block', atom: true, addAttributes: () => ({ url: attribute('url') }), parseHTML: () => [{ tag: 'div[data-dsx-node=\"embed\"]' }], renderHTML: ({ HTMLAttributes }) => { const url = canonicalUrl(HTMLAttributes['data-dsx-url']); return ['div', { 'data-dsx-node': 'embed', ...(url ? { 'data-dsx-url': url } : { 'data-dsx-invalid': 'true' }) }] } })\nconst CalloutExtension = Node.create({ name: 'dsxCallout', group: 'block', content: 'block+', defining: true, addAttributes: () => ({ tone: attribute('tone', 'tone', 'info'), title: attribute('title') }), parseHTML: () => [{ tag: 'aside[data-dsx-node=\"callout\"]' }], renderHTML: ({ HTMLAttributes }) => ['aside', mergeAttributes({ 'data-dsx-node': 'callout' }, dataAttributes(HTMLAttributes)), 0] })\nconst ComparisonExtension = Node.create({ name: 'dsxComparison', group: 'block', atom: true, addAttributes: () => ({ beforeSrc: attribute('beforeSrc', 'before-src'), afterSrc: attribute('afterSrc', 'after-src'), beforeAlt: attribute('beforeAlt', 'before-alt', ''), afterAlt: attribute('afterAlt', 'after-alt', ''), beforeLabel: attribute('beforeLabel', 'before-label'), afterLabel: attribute('afterLabel', 'after-label') }), parseHTML: () => [{ tag: 'figure[data-dsx-node=\"comparison\"]' }], renderHTML: ({ HTMLAttributes }) => ['figure', mergeAttributes({ 'data-dsx-node': 'comparison' }, dataAttributes(HTMLAttributes))] })\nconst PollExtension = Node.create({ name: 'dsxPoll', group: 'block', atom: true, addAttributes: () => ({ pollId: attribute('pollId', 'poll-id'), question: attribute('question') }), parseHTML: () => [{ tag: 'div[data-dsx-node=\"poll\"]' }], renderHTML: ({ HTMLAttributes }) => ['div', mergeAttributes({ 'data-dsx-node': 'poll' }, dataAttributes(HTMLAttributes))] })\n\nfunction createArticleExtensions(): Extensions {\n return [ArticleImageExtension, EmbedExtension, CalloutExtension, CodeBlockLowlight.configure({ lowlight }), Table.configure({ resizable: true }), TableRow, TableHeader, TableCell, ComparisonExtension, PollExtension]\n}\n\nexport { ArticleImageExtension, CalloutExtension, ComparisonExtension, EmbedExtension, PollExtension, createArticleExtensions }\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Node, mergeAttributes, type Extensions } from '@tiptap/core'\nimport Image from '@tiptap/extension-image'\nimport { Table, TableCell, TableHeader, TableRow } from '@tiptap/extension-table'\nimport CodeBlockLowlight from '@tiptap/extension-code-block-lowlight'\nimport { common, createLowlight } from 'lowlight'\nimport { ReactNodeViewRenderer } from '@tiptap/react'\nimport { ArticleBlockView } from './articleNodeViews'\n\nconst lowlight = createLowlight(common)\nconst dataAttributes = (attributes: Record<string, unknown>) => Object.fromEntries(Object.entries(attributes).filter(([, value]) => value != null))\nconst attribute = (key: string, htmlName = key, defaultValue: unknown = null) => ({ default: defaultValue, parseHTML: (element: HTMLElement) => element.getAttribute(`data-dsx-${htmlName}`), renderHTML: (attributes: Record<string, unknown>) => attributes[key] == null ? {} : { [`data-dsx-${htmlName}`]: attributes[key] } })\nconst canonicalUrl = (value: unknown) => { try { const url = new URL(String(value)); return url.protocol === 'https:' || url.protocol === 'http:' ? url.href : null } catch { return null } }\n\nconst ArticleImageExtension = Image.extend({\n addAttributes() { return { ...this.parent?.(), mediaId: attribute('mediaId', 'media-id'), caption: { default: null, parseHTML: (element) => element.getAttribute('data-dsx-caption'), renderHTML: ({ caption }) => caption ? { 'data-dsx-caption': caption } : {} } } },\n})\nconst EmbedExtension = Node.create({ name: 'dsxEmbed', group: 'block', atom: true, addAttributes: () => ({ url: attribute('url') }), parseHTML: () => [{ tag: 'div[data-dsx-node=\"embed\"]' }], renderHTML: ({ HTMLAttributes }) => { const url = canonicalUrl(HTMLAttributes['data-dsx-url']); return ['div', { 'data-dsx-node': 'embed', ...(url ? { 'data-dsx-url': url } : { 'data-dsx-invalid': 'true' }) }] } })\nconst CalloutExtension = Node.create({ name: 'dsxCallout', group: 'block', content: 'block+', defining: true, addAttributes: () => ({ tone: attribute('tone', 'tone', 'info'), title: attribute('title') }), parseHTML: () => [{ tag: 'aside[data-dsx-node=\"callout\"]' }], renderHTML: ({ HTMLAttributes }) => ['aside', mergeAttributes({ 'data-dsx-node': 'callout' }, dataAttributes(HTMLAttributes)), 0] })\nconst ComparisonExtension = Node.create({ name: 'dsxComparison', group: 'block', atom: true, addAttributes: () => ({ beforeSrc: attribute('beforeSrc', 'before-src'), afterSrc: attribute('afterSrc', 'after-src'), beforeAlt: attribute('beforeAlt', 'before-alt', ''), afterAlt: attribute('afterAlt', 'after-alt', ''), beforeLabel: attribute('beforeLabel', 'before-label'), afterLabel: attribute('afterLabel', 'after-label') }), parseHTML: () => [{ tag: 'figure[data-dsx-node=\"comparison\"]' }], renderHTML: ({ HTMLAttributes }) => ['figure', mergeAttributes({ 'data-dsx-node': 'comparison' }, dataAttributes(HTMLAttributes))] })\nconst PollExtension = Node.create({ name: 'dsxPoll', group: 'block', atom: true, addAttributes: () => ({ pollId: attribute('pollId', 'poll-id'), question: attribute('question'), multiple: { default: false, parseHTML: element => element.getAttribute('data-dsx-multiple') === 'true', renderHTML: attrs => ({ 'data-dsx-multiple': String(attrs.multiple) }) }, options: { default: [], parseHTML: element => { try { return JSON.parse(element.getAttribute('data-dsx-options') ?? '[]') } catch { return [] } }, renderHTML: attrs => ({ 'data-dsx-options': JSON.stringify(attrs.options) }) } }), parseHTML: () => [{ tag: 'div[data-dsx-node=\"poll\"]' }], renderHTML: ({ HTMLAttributes }) => ['div', mergeAttributes({ 'data-dsx-node': 'poll' }, dataAttributes(HTMLAttributes))] })\n\nconst VideoExtension = Node.create({ name: 'dsxVideo', group: 'block', atom: true, addAttributes: () => ({ src: attribute('src'), caption: attribute('caption'), mediaId: attribute('mediaId', 'media-id') }), parseHTML: () => [{ tag: 'figure[data-dsx-node=\"video\"]' }], renderHTML: ({ HTMLAttributes }) => ['figure', mergeAttributes({ 'data-dsx-node': 'video' }, dataAttributes(HTMLAttributes))] })\nconst MaterialLinkExtension = Node.create({ name: 'dsxMaterialLink', group: 'block', atom: true, addAttributes: () => ({ materialId: attribute('materialId', 'material-id'), label: attribute('label'), href: attribute('href') }), parseHTML: () => [{ tag: 'div[data-dsx-node=\"material-link\"]' }], renderHTML: ({ HTMLAttributes }) => ['div', mergeAttributes({ 'data-dsx-node': 'material-link' }, dataAttributes(HTMLAttributes))] })\nconst PlatformTabsExtension = Node.create({ name: 'dsxTabs', group: 'block', content: 'dsxTab+', defining: true, parseHTML: () => [{ tag: 'div[data-dsx-node=\"tabs\"]' }], renderHTML: () => ['div', { 'data-dsx-node': 'tabs' }, 0] })\nconst PlatformTabExtension = Node.create({ name: 'dsxTab', content: 'block+', defining: true, addAttributes: () => ({ platform: attribute('platform'), label: attribute('label') }), parseHTML: () => [{ tag: 'section[data-dsx-node=\"tab\"]' }], renderHTML: ({ HTMLAttributes }) => ['section', mergeAttributes({ 'data-dsx-node': 'tab' }, dataAttributes(HTMLAttributes)), 0] })\n\nfunction createArticleExtensions({ editable = true }: { editable?: boolean } = {}): Extensions {\n const blocks = [ArticleImageExtension, EmbedExtension, CalloutExtension, ComparisonExtension, PollExtension, VideoExtension, MaterialLinkExtension, PlatformTabsExtension, PlatformTabExtension]\n return [...blocks.map(extension => editable ? extension.extend({ addNodeView: () => ReactNodeViewRenderer(ArticleBlockView) }) : extension), CodeBlockLowlight.configure({ lowlight }), Table.configure({ resizable: true }), TableRow, TableHeader, TableCell]\n}\n\nexport { ArticleImageExtension, CalloutExtension, ComparisonExtension, EmbedExtension, PollExtension, VideoExtension, MaterialLinkExtension, PlatformTabsExtension, PlatformTabExtension, createArticleExtensions }\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }