@d4gger/design-system 3.0.1 → 4.0.1

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 (502) hide show
  1. package/README.md +19 -0
  2. package/dist/brand-effects.css +5 -3
  3. package/dist/components/accordion.css +9 -2
  4. package/dist/components/alert/Alert.cjs +27 -9
  5. package/dist/components/alert/Alert.cjs.map +2 -2
  6. package/dist/components/alert/Alert.d.cts +6 -0
  7. package/dist/components/alert/Alert.d.cts.map +1 -1
  8. package/dist/components/alert/Alert.d.mts +6 -0
  9. package/dist/components/alert/Alert.d.mts.map +1 -1
  10. package/dist/components/alert/Alert.d.ts +6 -0
  11. package/dist/components/alert/Alert.d.ts.map +1 -1
  12. package/dist/components/alert/Alert.js +28 -10
  13. package/dist/components/alert/Alert.js.map +2 -2
  14. package/dist/components/alert.css +73 -3
  15. package/dist/components/article-nodes.css +16 -1
  16. package/dist/components/articleNodes/ArticleNodes.cjs +46 -5
  17. package/dist/components/articleNodes/ArticleNodes.cjs.map +2 -2
  18. package/dist/components/articleNodes/ArticleNodes.d.cts +7 -3
  19. package/dist/components/articleNodes/ArticleNodes.d.cts.map +1 -1
  20. package/dist/components/articleNodes/ArticleNodes.d.mts +7 -3
  21. package/dist/components/articleNodes/ArticleNodes.d.mts.map +1 -1
  22. package/dist/components/articleNodes/ArticleNodes.d.ts +7 -3
  23. package/dist/components/articleNodes/ArticleNodes.d.ts.map +1 -1
  24. package/dist/components/articleNodes/ArticleNodes.js +46 -5
  25. package/dist/components/articleNodes/ArticleNodes.js.map +2 -2
  26. package/dist/components/articleNodes/articleExtensions.cjs +21 -4
  27. package/dist/components/articleNodes/articleExtensions.cjs.map +2 -2
  28. package/dist/components/articleNodes/articleExtensions.d.cts +8 -2
  29. package/dist/components/articleNodes/articleExtensions.d.cts.map +1 -1
  30. package/dist/components/articleNodes/articleExtensions.d.mts +8 -2
  31. package/dist/components/articleNodes/articleExtensions.d.mts.map +1 -1
  32. package/dist/components/articleNodes/articleExtensions.d.ts +8 -2
  33. package/dist/components/articleNodes/articleExtensions.d.ts.map +1 -1
  34. package/dist/components/articleNodes/articleExtensions.js +21 -4
  35. package/dist/components/articleNodes/articleExtensions.js.map +2 -2
  36. package/dist/components/articleNodes/articleNodeViews.cjs +154 -0
  37. package/dist/components/articleNodes/articleNodeViews.cjs.map +7 -0
  38. package/dist/components/articleNodes/articleNodeViews.d.cts +3 -0
  39. package/dist/components/articleNodes/articleNodeViews.d.cts.map +1 -0
  40. package/dist/components/articleNodes/articleNodeViews.d.mts +3 -0
  41. package/dist/components/articleNodes/articleNodeViews.d.mts.map +1 -0
  42. package/dist/components/articleNodes/articleNodeViews.d.ts +3 -0
  43. package/dist/components/articleNodes/articleNodeViews.d.ts.map +1 -0
  44. package/dist/components/articleNodes/articleNodeViews.js +124 -0
  45. package/dist/components/articleNodes/articleNodeViews.js.map +7 -0
  46. package/dist/components/articleNodes/articleNodes.props.cjs.map +1 -1
  47. package/dist/components/articleNodes/articleNodes.props.d.cts +25 -2
  48. package/dist/components/articleNodes/articleNodes.props.d.cts.map +1 -1
  49. package/dist/components/articleNodes/articleNodes.props.d.mts +25 -2
  50. package/dist/components/articleNodes/articleNodes.props.d.mts.map +1 -1
  51. package/dist/components/articleNodes/articleNodes.props.d.ts +25 -2
  52. package/dist/components/articleNodes/articleNodes.props.d.ts.map +1 -1
  53. package/dist/components/banner.css +5 -4
  54. package/dist/components/blockquote.css +7 -4
  55. package/dist/components/bottom-dock.css +140 -0
  56. package/dist/components/bottomDock/BottomDock.cjs +140 -0
  57. package/dist/components/bottomDock/BottomDock.cjs.map +7 -0
  58. package/dist/components/bottomDock/BottomDock.d.cts +25 -0
  59. package/dist/components/bottomDock/BottomDock.d.cts.map +1 -0
  60. package/dist/components/bottomDock/BottomDock.d.mts +25 -0
  61. package/dist/components/bottomDock/BottomDock.d.mts.map +1 -0
  62. package/dist/components/bottomDock/BottomDock.d.ts +25 -0
  63. package/dist/components/bottomDock/BottomDock.d.ts.map +1 -0
  64. package/dist/components/bottomDock/BottomDock.js +110 -0
  65. package/dist/components/bottomDock/BottomDock.js.map +7 -0
  66. package/dist/components/bottomDock/bottomDock.props.cjs +49 -0
  67. package/dist/components/bottomDock/bottomDock.props.cjs.map +7 -0
  68. package/dist/components/bottomDock/bottomDock.props.d.cts +29 -0
  69. package/dist/components/bottomDock/bottomDock.props.d.cts.map +1 -0
  70. package/dist/components/bottomDock/bottomDock.props.d.mts +29 -0
  71. package/dist/components/bottomDock/bottomDock.props.d.mts.map +1 -0
  72. package/dist/components/bottomDock/bottomDock.props.d.ts +29 -0
  73. package/dist/components/bottomDock/bottomDock.props.d.ts.map +1 -0
  74. package/dist/components/bottomDock/bottomDock.props.js +29 -0
  75. package/dist/components/bottomDock/bottomDock.props.js.map +7 -0
  76. package/dist/components/breadcrumb.css +24 -3
  77. package/dist/components/callout.css +20 -7
  78. package/dist/components/card.css +9 -1
  79. package/dist/components/code.css +29 -13
  80. package/dist/components/collapsible/Collapsible.cjs +14 -0
  81. package/dist/components/collapsible/Collapsible.cjs.map +2 -2
  82. package/dist/components/collapsible/Collapsible.d.cts.map +1 -1
  83. package/dist/components/collapsible/Collapsible.d.mts.map +1 -1
  84. package/dist/components/collapsible/Collapsible.d.ts.map +1 -1
  85. package/dist/components/collapsible/Collapsible.js +14 -0
  86. package/dist/components/collapsible/Collapsible.js.map +2 -2
  87. package/dist/components/collapsible.css +10 -1
  88. package/dist/components/command.css +0 -2
  89. package/dist/components/comment-thread.css +15 -7
  90. package/dist/components/commentThread/CommentThread.cjs +45 -17
  91. package/dist/components/commentThread/CommentThread.cjs.map +2 -2
  92. package/dist/components/commentThread/CommentThread.d.cts +6 -6
  93. package/dist/components/commentThread/CommentThread.d.cts.map +1 -1
  94. package/dist/components/commentThread/CommentThread.d.mts +6 -6
  95. package/dist/components/commentThread/CommentThread.d.mts.map +1 -1
  96. package/dist/components/commentThread/CommentThread.d.ts +6 -6
  97. package/dist/components/commentThread/CommentThread.d.ts.map +1 -1
  98. package/dist/components/commentThread/CommentThread.js +45 -17
  99. package/dist/components/commentThread/CommentThread.js.map +2 -2
  100. package/dist/components/commentThread/commentThread.props.cjs.map +1 -1
  101. package/dist/components/commentThread/commentThread.props.d.cts +24 -0
  102. package/dist/components/commentThread/commentThread.props.d.cts.map +1 -1
  103. package/dist/components/commentThread/commentThread.props.d.mts +24 -0
  104. package/dist/components/commentThread/commentThread.props.d.mts.map +1 -1
  105. package/dist/components/commentThread/commentThread.props.d.ts +24 -0
  106. package/dist/components/commentThread/commentThread.props.d.ts.map +1 -1
  107. package/dist/components/config-drawer.css +7 -3
  108. package/dist/components/configDrawer/ConfigDrawer.cjs +1 -1
  109. package/dist/components/configDrawer/ConfigDrawer.cjs.map +2 -2
  110. package/dist/components/configDrawer/ConfigDrawer.js +1 -1
  111. package/dist/components/configDrawer/ConfigDrawer.js.map +2 -2
  112. package/dist/components/context-menu.css +3 -1
  113. package/dist/components/contextMenu/ContextMenu.cjs +37 -6
  114. package/dist/components/contextMenu/ContextMenu.cjs.map +2 -2
  115. package/dist/components/contextMenu/ContextMenu.d.cts +1 -1
  116. package/dist/components/contextMenu/ContextMenu.d.cts.map +1 -1
  117. package/dist/components/contextMenu/ContextMenu.d.mts +1 -1
  118. package/dist/components/contextMenu/ContextMenu.d.mts.map +1 -1
  119. package/dist/components/contextMenu/ContextMenu.d.ts +1 -1
  120. package/dist/components/contextMenu/ContextMenu.d.ts.map +1 -1
  121. package/dist/components/contextMenu/ContextMenu.js +37 -6
  122. package/dist/components/contextMenu/ContextMenu.js.map +2 -2
  123. package/dist/components/dialog.css +1 -1
  124. package/dist/components/drawer.css +23 -6
  125. package/dist/components/dropdownMenu/DropdownMenu.cjs +10 -5
  126. package/dist/components/dropdownMenu/DropdownMenu.cjs.map +2 -2
  127. package/dist/components/dropdownMenu/DropdownMenu.d.cts.map +1 -1
  128. package/dist/components/dropdownMenu/DropdownMenu.d.mts.map +1 -1
  129. package/dist/components/dropdownMenu/DropdownMenu.d.ts.map +1 -1
  130. package/dist/components/dropdownMenu/DropdownMenu.js +10 -5
  131. package/dist/components/dropdownMenu/DropdownMenu.js.map +2 -2
  132. package/dist/components/environment-ribbon.css +73 -0
  133. package/dist/components/environmentRibbon/EnvironmentRibbon.cjs +69 -0
  134. package/dist/components/environmentRibbon/EnvironmentRibbon.cjs.map +7 -0
  135. package/dist/components/environmentRibbon/EnvironmentRibbon.d.cts +15 -0
  136. package/dist/components/environmentRibbon/EnvironmentRibbon.d.cts.map +1 -0
  137. package/dist/components/environmentRibbon/EnvironmentRibbon.d.mts +15 -0
  138. package/dist/components/environmentRibbon/EnvironmentRibbon.d.mts.map +1 -0
  139. package/dist/components/environmentRibbon/EnvironmentRibbon.d.ts +15 -0
  140. package/dist/components/environmentRibbon/EnvironmentRibbon.d.ts.map +1 -0
  141. package/dist/components/environmentRibbon/EnvironmentRibbon.js +39 -0
  142. package/dist/components/environmentRibbon/EnvironmentRibbon.js.map +7 -0
  143. package/dist/components/environmentRibbon/environmentRibbon.props.cjs +39 -0
  144. package/dist/components/environmentRibbon/environmentRibbon.props.cjs.map +7 -0
  145. package/dist/components/environmentRibbon/environmentRibbon.props.d.cts +18 -0
  146. package/dist/components/environmentRibbon/environmentRibbon.props.d.cts.map +1 -0
  147. package/dist/components/environmentRibbon/environmentRibbon.props.d.mts +18 -0
  148. package/dist/components/environmentRibbon/environmentRibbon.props.d.mts.map +1 -0
  149. package/dist/components/environmentRibbon/environmentRibbon.props.d.ts +18 -0
  150. package/dist/components/environmentRibbon/environmentRibbon.props.d.ts.map +1 -0
  151. package/dist/components/environmentRibbon/environmentRibbon.props.js +19 -0
  152. package/dist/components/environmentRibbon/environmentRibbon.props.js.map +7 -0
  153. package/dist/components/field.css +5 -0
  154. package/dist/components/file-upload.css +36 -9
  155. package/dist/components/floating-panel.css +49 -18
  156. package/dist/components/floatingPanel/FloatingPanel.cjs +156 -58
  157. package/dist/components/floatingPanel/FloatingPanel.cjs.map +2 -2
  158. package/dist/components/floatingPanel/FloatingPanel.d.cts.map +1 -1
  159. package/dist/components/floatingPanel/FloatingPanel.d.mts.map +1 -1
  160. package/dist/components/floatingPanel/FloatingPanel.d.ts.map +1 -1
  161. package/dist/components/floatingPanel/FloatingPanel.js +156 -58
  162. package/dist/components/floatingPanel/FloatingPanel.js.map +2 -2
  163. package/dist/components/grid/Grid.cjs +24 -35
  164. package/dist/components/grid/Grid.cjs.map +2 -2
  165. package/dist/components/grid/Grid.d.cts.map +1 -1
  166. package/dist/components/grid/Grid.d.mts.map +1 -1
  167. package/dist/components/grid/Grid.d.ts.map +1 -1
  168. package/dist/components/grid/Grid.js +24 -35
  169. package/dist/components/grid/Grid.js.map +2 -2
  170. package/dist/components/heading/Heading.cjs +1 -8
  171. package/dist/components/heading/Heading.cjs.map +2 -2
  172. package/dist/components/heading/Heading.d.cts.map +1 -1
  173. package/dist/components/heading/Heading.d.mts.map +1 -1
  174. package/dist/components/heading/Heading.d.ts.map +1 -1
  175. package/dist/components/heading/Heading.js +1 -8
  176. package/dist/components/heading/Heading.js.map +2 -2
  177. package/dist/components/heading/heading.props.cjs +9 -9
  178. package/dist/components/heading/heading.props.cjs.map +2 -2
  179. package/dist/components/heading/heading.props.d.cts +42 -43
  180. package/dist/components/heading/heading.props.d.cts.map +1 -1
  181. package/dist/components/heading/heading.props.d.mts +42 -43
  182. package/dist/components/heading/heading.props.d.mts.map +1 -1
  183. package/dist/components/heading/heading.props.d.ts +42 -43
  184. package/dist/components/heading/heading.props.d.ts.map +1 -1
  185. package/dist/components/heading/heading.props.js +9 -9
  186. package/dist/components/heading/heading.props.js.map +2 -2
  187. package/dist/components/heading.css +127 -104
  188. package/dist/components/hover-card.css +5 -2
  189. package/dist/components/icon/Icon.cjs +19 -0
  190. package/dist/components/icon/Icon.cjs.map +2 -2
  191. package/dist/components/icon/Icon.d.cts +29 -1
  192. package/dist/components/icon/Icon.d.cts.map +1 -1
  193. package/dist/components/icon/Icon.d.mts +29 -1
  194. package/dist/components/icon/Icon.d.mts.map +1 -1
  195. package/dist/components/icon/Icon.d.ts +29 -1
  196. package/dist/components/icon/Icon.d.ts.map +1 -1
  197. package/dist/components/icon/Icon.js +25 -0
  198. package/dist/components/icon/Icon.js.map +2 -2
  199. package/dist/components/icon/icons.cjs +14 -0
  200. package/dist/components/icon/icons.cjs.map +2 -2
  201. package/dist/components/icon/icons.d.cts +35 -0
  202. package/dist/components/icon/icons.d.cts.map +1 -1
  203. package/dist/components/icon/icons.d.mts +35 -0
  204. package/dist/components/icon/icons.d.mts.map +1 -1
  205. package/dist/components/icon/icons.d.ts +35 -0
  206. package/dist/components/icon/icons.d.ts.map +1 -1
  207. package/dist/components/icon/icons.js +14 -0
  208. package/dist/components/icon/icons.js.map +2 -2
  209. package/dist/components/index.cjs +2 -0
  210. package/dist/components/index.cjs.map +2 -2
  211. package/dist/components/index.d.cts +2 -0
  212. package/dist/components/index.d.cts.map +1 -1
  213. package/dist/components/index.d.mts +2 -0
  214. package/dist/components/index.d.mts.map +1 -1
  215. package/dist/components/index.d.ts +2 -0
  216. package/dist/components/index.d.ts.map +1 -1
  217. package/dist/components/index.js +2 -0
  218. package/dist/components/index.js.map +2 -2
  219. package/dist/components/label.css +3 -0
  220. package/dist/components/link.css +33 -97
  221. package/dist/components/notification-center.css +58 -10
  222. package/dist/components/notificationCenter/NotificationCenter.cjs +27 -17
  223. package/dist/components/notificationCenter/NotificationCenter.cjs.map +2 -2
  224. package/dist/components/notificationCenter/NotificationCenter.d.cts +2 -0
  225. package/dist/components/notificationCenter/NotificationCenter.d.cts.map +1 -1
  226. package/dist/components/notificationCenter/NotificationCenter.d.mts +2 -0
  227. package/dist/components/notificationCenter/NotificationCenter.d.mts.map +1 -1
  228. package/dist/components/notificationCenter/NotificationCenter.d.ts +2 -0
  229. package/dist/components/notificationCenter/NotificationCenter.d.ts.map +1 -1
  230. package/dist/components/notificationCenter/NotificationCenter.js +28 -18
  231. package/dist/components/notificationCenter/NotificationCenter.js.map +2 -2
  232. package/dist/components/page-header.css +21 -0
  233. package/dist/components/pageHeader/PageHeader.cjs +10 -2
  234. package/dist/components/pageHeader/PageHeader.cjs.map +2 -2
  235. package/dist/components/pageHeader/PageHeader.d.cts.map +1 -1
  236. package/dist/components/pageHeader/PageHeader.d.mts.map +1 -1
  237. package/dist/components/pageHeader/PageHeader.d.ts.map +1 -1
  238. package/dist/components/pageHeader/PageHeader.js +10 -2
  239. package/dist/components/pageHeader/PageHeader.js.map +2 -2
  240. package/dist/components/pageHeader/pageHeader.props.cjs +7 -1
  241. package/dist/components/pageHeader/pageHeader.props.cjs.map +2 -2
  242. package/dist/components/pageHeader/pageHeader.props.d.cts +5 -0
  243. package/dist/components/pageHeader/pageHeader.props.d.cts.map +1 -1
  244. package/dist/components/pageHeader/pageHeader.props.d.mts +5 -0
  245. package/dist/components/pageHeader/pageHeader.props.d.mts.map +1 -1
  246. package/dist/components/pageHeader/pageHeader.props.d.ts +5 -0
  247. package/dist/components/pageHeader/pageHeader.props.d.ts.map +1 -1
  248. package/dist/components/pageHeader/pageHeader.props.js +7 -1
  249. package/dist/components/pageHeader/pageHeader.props.js.map +2 -2
  250. package/dist/components/pills/Pills.cjs +1 -1
  251. package/dist/components/pills/Pills.cjs.map +2 -2
  252. package/dist/components/pills/Pills.js +2 -2
  253. package/dist/components/pills/Pills.js.map +2 -2
  254. package/dist/components/pills.css +6 -0
  255. package/dist/components/popover.css +45 -6
  256. package/dist/components/prose.css +3 -3
  257. package/dist/components/qr-code.css +5 -2
  258. package/dist/components/qrCode/QrCode.cjs +14 -11
  259. package/dist/components/qrCode/QrCode.cjs.map +2 -2
  260. package/dist/components/qrCode/QrCode.d.cts.map +1 -1
  261. package/dist/components/qrCode/QrCode.d.mts.map +1 -1
  262. package/dist/components/qrCode/QrCode.d.ts.map +1 -1
  263. package/dist/components/qrCode/QrCode.js +14 -11
  264. package/dist/components/qrCode/QrCode.js.map +2 -2
  265. package/dist/components/resizable.css +20 -4
  266. package/dist/components/rich-text-editor.css +50 -14
  267. package/dist/components/richTextEditor/EditorTools.cjs +226 -0
  268. package/dist/components/richTextEditor/EditorTools.cjs.map +7 -0
  269. package/dist/components/richTextEditor/EditorTools.d.cts +22 -0
  270. package/dist/components/richTextEditor/EditorTools.d.cts.map +1 -0
  271. package/dist/components/richTextEditor/EditorTools.d.mts +22 -0
  272. package/dist/components/richTextEditor/EditorTools.d.mts.map +1 -0
  273. package/dist/components/richTextEditor/EditorTools.d.ts +22 -0
  274. package/dist/components/richTextEditor/EditorTools.d.ts.map +1 -0
  275. package/dist/components/richTextEditor/EditorTools.js +196 -0
  276. package/dist/components/richTextEditor/EditorTools.js.map +7 -0
  277. package/dist/components/richTextEditor/MentionSuggestions.cjs +96 -0
  278. package/dist/components/richTextEditor/MentionSuggestions.cjs.map +7 -0
  279. package/dist/components/richTextEditor/MentionSuggestions.d.cts +7 -0
  280. package/dist/components/richTextEditor/MentionSuggestions.d.cts.map +1 -0
  281. package/dist/components/richTextEditor/MentionSuggestions.d.mts +7 -0
  282. package/dist/components/richTextEditor/MentionSuggestions.d.mts.map +1 -0
  283. package/dist/components/richTextEditor/MentionSuggestions.d.ts +7 -0
  284. package/dist/components/richTextEditor/MentionSuggestions.d.ts.map +1 -0
  285. package/dist/components/richTextEditor/MentionSuggestions.js +66 -0
  286. package/dist/components/richTextEditor/MentionSuggestions.js.map +7 -0
  287. package/dist/components/richTextEditor/RichTextEditor.cjs +53 -206
  288. package/dist/components/richTextEditor/RichTextEditor.cjs.map +3 -3
  289. package/dist/components/richTextEditor/RichTextEditor.d.cts +17 -7
  290. package/dist/components/richTextEditor/RichTextEditor.d.cts.map +1 -1
  291. package/dist/components/richTextEditor/RichTextEditor.d.mts +17 -7
  292. package/dist/components/richTextEditor/RichTextEditor.d.mts.map +1 -1
  293. package/dist/components/richTextEditor/RichTextEditor.d.ts +17 -7
  294. package/dist/components/richTextEditor/RichTextEditor.d.ts.map +1 -1
  295. package/dist/components/richTextEditor/RichTextEditor.js +53 -206
  296. package/dist/components/richTextEditor/RichTextEditor.js.map +3 -3
  297. package/dist/components/richTextEditor/editorTokens.cjs +75 -0
  298. package/dist/components/richTextEditor/editorTokens.cjs.map +7 -0
  299. package/dist/components/richTextEditor/editorTokens.d.cts +21 -0
  300. package/dist/components/richTextEditor/editorTokens.d.cts.map +1 -0
  301. package/dist/components/richTextEditor/editorTokens.d.mts +21 -0
  302. package/dist/components/richTextEditor/editorTokens.d.mts.map +1 -0
  303. package/dist/components/richTextEditor/editorTokens.d.ts +21 -0
  304. package/dist/components/richTextEditor/editorTokens.d.ts.map +1 -0
  305. package/dist/components/richTextEditor/editorTokens.js +55 -0
  306. package/dist/components/richTextEditor/editorTokens.js.map +7 -0
  307. package/dist/components/scroll-area.css +12 -0
  308. package/dist/components/scrollArea/ScrollArea.cjs +12 -1
  309. package/dist/components/scrollArea/ScrollArea.cjs.map +2 -2
  310. package/dist/components/scrollArea/ScrollArea.d.cts.map +1 -1
  311. package/dist/components/scrollArea/ScrollArea.d.mts.map +1 -1
  312. package/dist/components/scrollArea/ScrollArea.d.ts.map +1 -1
  313. package/dist/components/scrollArea/ScrollArea.js +12 -1
  314. package/dist/components/scrollArea/ScrollArea.js.map +2 -2
  315. package/dist/components/segmentedControl/SegmentedControl.cjs +2 -2
  316. package/dist/components/segmentedControl/SegmentedControl.cjs.map +2 -2
  317. package/dist/components/segmentedControl/SegmentedControl.d.cts.map +1 -1
  318. package/dist/components/segmentedControl/SegmentedControl.d.mts.map +1 -1
  319. package/dist/components/segmentedControl/SegmentedControl.d.ts.map +1 -1
  320. package/dist/components/segmentedControl/SegmentedControl.js +2 -2
  321. package/dist/components/segmentedControl/SegmentedControl.js.map +2 -2
  322. package/dist/components/separator.css +3 -9
  323. package/dist/components/sidebar/Sidebar.cjs +17 -5
  324. package/dist/components/sidebar/Sidebar.cjs.map +2 -2
  325. package/dist/components/sidebar/Sidebar.d.cts +12 -1
  326. package/dist/components/sidebar/Sidebar.d.cts.map +1 -1
  327. package/dist/components/sidebar/Sidebar.d.mts +12 -1
  328. package/dist/components/sidebar/Sidebar.d.mts.map +1 -1
  329. package/dist/components/sidebar/Sidebar.d.ts +12 -1
  330. package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
  331. package/dist/components/sidebar/Sidebar.js +17 -5
  332. package/dist/components/sidebar/Sidebar.js.map +2 -2
  333. package/dist/components/sidebar/sidebar.props.cjs +8 -1
  334. package/dist/components/sidebar/sidebar.props.cjs.map +2 -2
  335. package/dist/components/sidebar/sidebar.props.d.cts +9 -1
  336. package/dist/components/sidebar/sidebar.props.d.cts.map +1 -1
  337. package/dist/components/sidebar/sidebar.props.d.mts +9 -1
  338. package/dist/components/sidebar/sidebar.props.d.mts.map +1 -1
  339. package/dist/components/sidebar/sidebar.props.d.ts +9 -1
  340. package/dist/components/sidebar/sidebar.props.d.ts.map +1 -1
  341. package/dist/components/sidebar/sidebar.props.js +8 -1
  342. package/dist/components/sidebar/sidebar.props.js.map +2 -2
  343. package/dist/components/sidebar.css +86 -13
  344. package/dist/components/sonner.css +78 -16
  345. package/dist/components/stepper.css +23 -12
  346. package/dist/components/tab-nav.css +25 -13
  347. package/dist/components/tabNav/TabNav.cjs +1 -4
  348. package/dist/components/tabNav/TabNav.cjs.map +2 -2
  349. package/dist/components/tabNav/TabNav.d.cts.map +1 -1
  350. package/dist/components/tabNav/TabNav.d.mts.map +1 -1
  351. package/dist/components/tabNav/TabNav.d.ts.map +1 -1
  352. package/dist/components/tabNav/TabNav.js +1 -4
  353. package/dist/components/tabNav/TabNav.js.map +2 -2
  354. package/dist/components/table-of-contents.css +12 -2
  355. package/dist/components/tableOfContents/TableOfContents.cjs +11 -4
  356. package/dist/components/tableOfContents/TableOfContents.cjs.map +2 -2
  357. package/dist/components/tableOfContents/TableOfContents.d.cts.map +1 -1
  358. package/dist/components/tableOfContents/TableOfContents.d.mts.map +1 -1
  359. package/dist/components/tableOfContents/TableOfContents.d.ts.map +1 -1
  360. package/dist/components/tableOfContents/TableOfContents.js +11 -4
  361. package/dist/components/tableOfContents/TableOfContents.js.map +2 -2
  362. package/dist/components/tabs/Tabs.cjs +39 -54
  363. package/dist/components/tabs/Tabs.cjs.map +2 -2
  364. package/dist/components/tabs/Tabs.d.cts.map +1 -1
  365. package/dist/components/tabs/Tabs.d.mts.map +1 -1
  366. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  367. package/dist/components/tabs/Tabs.js +39 -54
  368. package/dist/components/tabs/Tabs.js.map +2 -2
  369. package/dist/components/tabs.css +52 -7
  370. package/dist/components/text/text.props.cjs +9 -9
  371. package/dist/components/text/text.props.cjs.map +2 -2
  372. package/dist/components/text/text.props.d.cts +42 -43
  373. package/dist/components/text/text.props.d.cts.map +1 -1
  374. package/dist/components/text/text.props.d.mts +42 -43
  375. package/dist/components/text/text.props.d.mts.map +1 -1
  376. package/dist/components/text/text.props.d.ts +42 -43
  377. package/dist/components/text/text.props.d.ts.map +1 -1
  378. package/dist/components/text/text.props.js +9 -9
  379. package/dist/components/text/text.props.js.map +2 -2
  380. package/dist/components/text/typography.props.cjs +32 -0
  381. package/dist/components/text/typography.props.cjs.map +7 -0
  382. package/dist/components/text/typography.props.d.cts +3 -0
  383. package/dist/components/text/typography.props.d.cts.map +1 -0
  384. package/dist/components/text/typography.props.d.mts +3 -0
  385. package/dist/components/text/typography.props.d.mts.map +1 -0
  386. package/dist/components/text/typography.props.d.ts +3 -0
  387. package/dist/components/text/typography.props.d.ts.map +1 -0
  388. package/dist/components/text/typography.props.js +12 -0
  389. package/dist/components/text/typography.props.js.map +7 -0
  390. package/dist/components/text-field.css +1 -0
  391. package/dist/components/text.css +41 -6
  392. package/dist/components/theme-panel.css +6 -0
  393. package/dist/components/toast/Toast.cjs +3 -1
  394. package/dist/components/toast/Toast.cjs.map +2 -2
  395. package/dist/components/toast/Toast.d.cts.map +1 -1
  396. package/dist/components/toast/Toast.d.mts.map +1 -1
  397. package/dist/components/toast/Toast.d.ts.map +1 -1
  398. package/dist/components/toast/Toast.js +3 -1
  399. package/dist/components/toast/Toast.js.map +2 -2
  400. package/dist/components/toast.css +36 -36
  401. package/dist/components/toggle-tip.css +58 -9
  402. package/dist/components/toggleTip/ToggleTip.cjs +9 -5
  403. package/dist/components/toggleTip/ToggleTip.cjs.map +2 -2
  404. package/dist/components/toggleTip/ToggleTip.d.cts.map +1 -1
  405. package/dist/components/toggleTip/ToggleTip.d.mts.map +1 -1
  406. package/dist/components/toggleTip/ToggleTip.d.ts.map +1 -1
  407. package/dist/components/toggleTip/ToggleTip.js +9 -5
  408. package/dist/components/toggleTip/ToggleTip.js.map +2 -2
  409. package/dist/components/toolbar/Toolbar.cjs +10 -7
  410. package/dist/components/toolbar/Toolbar.cjs.map +2 -2
  411. package/dist/components/toolbar/Toolbar.js +10 -7
  412. package/dist/components/toolbar/Toolbar.js.map +2 -2
  413. package/dist/components/toolbar.css +58 -4
  414. package/dist/components/tooltip.css +9 -5
  415. package/dist/components/tree-view.css +17 -3
  416. package/dist/components/treeView/TreeView.cjs +76 -21
  417. package/dist/components/treeView/TreeView.cjs.map +2 -2
  418. package/dist/components/treeView/TreeView.d.cts.map +1 -1
  419. package/dist/components/treeView/TreeView.d.mts.map +1 -1
  420. package/dist/components/treeView/TreeView.d.ts.map +1 -1
  421. package/dist/components/treeView/TreeView.js +76 -21
  422. package/dist/components/treeView/TreeView.js.map +2 -2
  423. package/dist/components.css +2 -0
  424. package/dist/docs/README.md +2 -0
  425. package/dist/docs/component-contract.md +7 -4
  426. package/dist/docs/component-index.json +17 -1
  427. package/dist/docs/components/accordion.md +5 -36
  428. package/dist/docs/components/alert.md +44 -17
  429. package/dist/docs/components/article-nodes.md +59 -2
  430. package/dist/docs/components/aspect-ratio.md +3 -26
  431. package/dist/docs/components/banner.md +7 -7
  432. package/dist/docs/components/blockquote.md +15 -14
  433. package/dist/docs/components/bottom-dock.md +146 -0
  434. package/dist/docs/components/box.md +3 -34
  435. package/dist/docs/components/breadcrumb.md +13 -8
  436. package/dist/docs/components/callout.md +18 -7
  437. package/dist/docs/components/card.md +10 -3
  438. package/dist/docs/components/code.md +33 -220
  439. package/dist/docs/components/collapsible.md +16 -35
  440. package/dist/docs/components/command.md +2 -0
  441. package/dist/docs/components/comment-thread.md +51 -1
  442. package/dist/docs/components/config-drawer.md +72 -171
  443. package/dist/docs/components/container.md +2 -0
  444. package/dist/docs/components/context-menu.md +19 -5
  445. package/dist/docs/components/dialog.md +4 -2
  446. package/dist/docs/components/drawer.md +17 -6
  447. package/dist/docs/components/dropdown-menu.md +11 -2
  448. package/dist/docs/components/em.md +1 -1
  449. package/dist/docs/components/environment-ribbon.md +126 -0
  450. package/dist/docs/components/field.md +2 -0
  451. package/dist/docs/components/file-upload.md +13 -7
  452. package/dist/docs/components/floating-panel.md +79 -285
  453. package/dist/docs/components/form.md +4 -0
  454. package/dist/docs/components/grid.md +11 -60
  455. package/dist/docs/components/heading.md +35 -32
  456. package/dist/docs/components/hover-card.md +9 -1
  457. package/dist/docs/components/icon.md +1 -0
  458. package/dist/docs/components/kbd.md +2 -0
  459. package/dist/docs/components/label.md +11 -9
  460. package/dist/docs/components/link.md +31 -209
  461. package/dist/docs/components/notification-center.md +30 -15
  462. package/dist/docs/components/page-header.md +20 -6
  463. package/dist/docs/components/pagination.md +4 -0
  464. package/dist/docs/components/pills.md +13 -4
  465. package/dist/docs/components/popover.md +10 -3
  466. package/dist/docs/components/prose.md +9 -0
  467. package/dist/docs/components/qr-code.md +12 -12
  468. package/dist/docs/components/quote.md +9 -4
  469. package/dist/docs/components/resizable.md +26 -18
  470. package/dist/docs/components/rich-text-editor.md +68 -18
  471. package/dist/docs/components/scroll-area.md +17 -9
  472. package/dist/docs/components/section.md +3 -38
  473. package/dist/docs/components/segmented-control.md +1 -1
  474. package/dist/docs/components/segmented-meter.md +9 -0
  475. package/dist/docs/components/separator.md +10 -46
  476. package/dist/docs/components/sidebar.md +34 -9
  477. package/dist/docs/components/sonner.md +25 -16
  478. package/dist/docs/components/stepper.md +8 -33
  479. package/dist/docs/components/strong.md +1 -1
  480. package/dist/docs/components/tab-nav.md +33 -96
  481. package/dist/docs/components/table-of-contents.md +8 -2
  482. package/dist/docs/components/tabs.md +19 -50
  483. package/dist/docs/components/text-field.md +1 -0
  484. package/dist/docs/components/text.md +34 -28
  485. package/dist/docs/components/theme-panel.md +3 -28
  486. package/dist/docs/components/theme.md +7 -3
  487. package/dist/docs/components/toast.md +27 -13
  488. package/dist/docs/components/toggle-tip.md +58 -241
  489. package/dist/docs/components/toolbar.md +16 -39
  490. package/dist/docs/components/tooltip.md +13 -7
  491. package/dist/docs/components/tree-view.md +22 -55
  492. package/dist/docs/consumer-guide.md +11 -4
  493. package/dist/generated/tokens.cjs +1 -0
  494. package/dist/generated/tokens.cjs.map +2 -2
  495. package/dist/generated/tokens.d.cts.map +1 -1
  496. package/dist/generated/tokens.d.mts.map +1 -1
  497. package/dist/generated/tokens.d.ts.map +1 -1
  498. package/dist/generated/tokens.js +1 -0
  499. package/dist/generated/tokens.js.map +2 -2
  500. package/dist/styles.css +1921 -1349
  501. package/dist/tokens.css +346 -362
  502. package/package.json +1 -1
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var articleNodeViews_exports = {};
30
+ __export(articleNodeViews_exports, {
31
+ ArticleBlockView: () => ArticleBlockView
32
+ });
33
+ module.exports = __toCommonJS(articleNodeViews_exports);
34
+ var React = __toESM(require("react"), 1);
35
+ var import_react = require("@tiptap/react");
36
+ var import_Button = require("../button/Button");
37
+ var import_TextField = require("../textField/TextField");
38
+ var import_ArticleNodes = require("./ArticleNodes");
39
+ var import_jsx_runtime = require("react/jsx-runtime");
40
+ const fields = {
41
+ image: [["src", "Image URL"], ["alt", "Alternative text"], ["caption", "Caption"], ["mediaId", "Media ID"]],
42
+ dsxVideo: [["src", "Video URL"], ["caption", "Caption"], ["mediaId", "Media ID"]],
43
+ dsxEmbed: [["url", "Embed URL"]],
44
+ dsxComparison: [["beforeSrc", "Before image URL"], ["beforeAlt", "Before alternative text"], ["afterSrc", "After image URL"], ["afterAlt", "After alternative text"]],
45
+ dsxCallout: [["title", "Callout title"], ["tone", "Tone"]],
46
+ dsxPoll: [["pollId", "Poll ID"], ["question", "Question"]],
47
+ dsxMaterialLink: [["materialId", "Material ID"], ["label", "Link label"], ["href", "Resolved URL"]],
48
+ dsxTab: [["platform", "Platform key"], ["label", "Tab label"]]
49
+ };
50
+ const titles = { image: "Image", dsxVideo: "Video", dsxEmbed: "Embed", dsxComparison: "Comparison", dsxCallout: "Callout", dsxPoll: "Poll", dsxMaterialLink: "Material reference", dsxTabs: "Platform tabs", dsxTab: "Platform" };
51
+ function ArticleBlockView({ node, editor, getPos, updateAttributes, deleteNode, selected }) {
52
+ const [editing, setEditing] = React.useState(false);
53
+ const [draft, setDraft] = React.useState(node.attrs);
54
+ const [error, setError] = React.useState("");
55
+ const fieldsId = React.useId();
56
+ const name = node.type.name;
57
+ const pos = getPos();
58
+ const $pos = typeof pos === "number" ? editor.state.doc.resolve(pos) : null;
59
+ const index = $pos?.index() ?? 0;
60
+ const parent = $pos?.parent;
61
+ const [editable, setEditable] = React.useState(editor.isEditable);
62
+ React.useEffect(() => {
63
+ const refresh = () => {
64
+ setEditable(editor.isEditable);
65
+ if (!editor.isEditable) setEditing(false);
66
+ };
67
+ editor.on("update", refresh);
68
+ editor.on("transaction", refresh);
69
+ refresh();
70
+ return () => {
71
+ editor.off("update", refresh);
72
+ editor.off("transaction", refresh);
73
+ };
74
+ }, [editor]);
75
+ const move = (direction) => {
76
+ if (!editor.isEditable || typeof pos !== "number" || !parent) return;
77
+ const neighbor = parent.maybeChild(index + direction);
78
+ if (!neighbor) return;
79
+ editor.commands.command(({ tr }) => {
80
+ tr.delete(pos, pos + node.nodeSize).insert(direction === -1 ? pos - neighbor.nodeSize : pos + neighbor.nodeSize, node);
81
+ return true;
82
+ });
83
+ editor.commands.focus();
84
+ };
85
+ const save = () => {
86
+ if (!editor.isEditable) return;
87
+ if (name === "dsxPoll") {
88
+ const options = draft.options;
89
+ if (!String(draft.pollId ?? "").trim() || !String(draft.question ?? "").trim() || options.length < 2 || options.some((option) => !option.id.trim() || !option.label.trim()) || new Set(options.map((option) => option.id)).size !== options.length) {
90
+ setError("Supply a poll ID, question and at least two options with unique IDs.");
91
+ return;
92
+ }
93
+ }
94
+ for (const key of ["src", "url", "href", "beforeSrc", "afterSrc"]) {
95
+ if (!draft[key]) continue;
96
+ try {
97
+ const url = new URL(String(draft[key]), window.location.href);
98
+ if (!["http:", "https:"].includes(url.protocol)) throw new Error();
99
+ } catch {
100
+ setError("Use an http or https media/link URL.");
101
+ return;
102
+ }
103
+ }
104
+ updateAttributes(draft);
105
+ setEditing(false);
106
+ editor.commands.focus();
107
+ };
108
+ const preview = name === "image" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ArticleNodes.ArticleImage, { src: node.attrs.src, alt: node.attrs.alt, caption: node.attrs.caption }) : name === "dsxVideo" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ArticleNodes.ArticleVideo, { src: node.attrs.src, caption: node.attrs.caption }) : name === "dsxEmbed" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ArticleNodes.ArticleEmbed, { url: node.attrs.url ?? "" }) : name === "dsxComparison" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ArticleNodes.BeforeAfterComparison, { ...node.attrs }) : name === "dsxPoll" ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
109
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("strong", { children: node.attrs.question || "Untitled poll" }),
110
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", { children: node.attrs.options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: option.label }, option.id)) }),
111
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("small", { children: [
112
+ node.attrs.multiple ? "Multiple choices" : "Single choice",
113
+ " \xB7 ",
114
+ node.attrs.pollId || "Missing poll ID"
115
+ ] })
116
+ ] }) : name === "dsxMaterialLink" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: node.attrs.label || node.attrs.materialId || "Material reference" }) : null;
117
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react.NodeViewWrapper, { className: "dsx-article-editor-block", "aria-label": `${titles[name] ?? name} block`, "aria-current": selected || void 0, children: [
118
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { contentEditable: false, className: "dsx-article-editor-block__controls", children: [
119
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("strong", { children: name === "dsxTab" ? node.attrs.label || titles[name] : titles[name] }),
120
+ editable ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "dsx-article-editor-block__actions", children: [
121
+ fields[name] ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Button.Button, { type: "button", size: "lg", variant: "ghost", onClick: () => {
122
+ setDraft({ ...node.attrs });
123
+ setError("");
124
+ setEditing((value) => !value);
125
+ }, children: editing ? "Cancel" : "Edit" }) : null,
126
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Button.Button, { type: "button", size: "lg", variant: "ghost", "aria-label": `Move ${titles[name]} up`, disabled: !parent?.maybeChild(index - 1), onClick: () => move(-1), children: "\u2191" }),
127
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Button.Button, { type: "button", size: "lg", variant: "ghost", "aria-label": `Move ${titles[name]} down`, disabled: !parent?.maybeChild(index + 1), onClick: () => move(1), children: "\u2193" }),
128
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Button.Button, { type: "button", size: "lg", variant: "ghost", "aria-label": `Remove ${titles[name]}`, onClick: () => {
129
+ if (editor.isEditable) {
130
+ deleteNode();
131
+ editor.commands.focus();
132
+ }
133
+ }, children: "Remove" })
134
+ ] }) : null
135
+ ] }),
136
+ editing ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { contentEditable: false, className: "dsx-article-editor-block__fields", children: [
137
+ fields[name]?.map(([key, label]) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TextField.TextField, { id: `${fieldsId}-${key}`, label, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TextField.TextField.Input, { value: String(draft[key] ?? ""), onChange: (event) => setDraft((current) => ({ ...current, [key]: event.target.value })) }) }, key)),
138
+ name === "dsxPoll" ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
139
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", { children: [
140
+ "Options \u2014 one stable ID | label per line",
141
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("textarea", { className: "dsx-article-editor-block__textarea", value: draft.options.map((option) => `${option.id}|${option.label}`).join("\n"), onChange: (event) => setDraft((current) => ({ ...current, options: event.target.value.split("\n").map((line) => {
142
+ const divider = line.indexOf("|");
143
+ return { id: divider < 0 ? "" : line.slice(0, divider), label: divider < 0 ? line : line.slice(divider + 1) };
144
+ }) })) })
145
+ ] }),
146
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Button.Button, { type: "button", size: "lg", variant: "outline", "aria-pressed": Boolean(draft.multiple), onClick: () => setDraft((current) => ({ ...current, multiple: !current.multiple })), children: "Allow multiple choices" })
147
+ ] }) : null,
148
+ error ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { role: "alert", children: error }) : null,
149
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Button.Button, { type: "button", size: "lg", onClick: save, children: "Save block" })
150
+ ] }) : null,
151
+ !node.isAtom ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.NodeViewContent, { className: "dsx-article-editor-block__content" }) : !editing ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { contentEditable: false, children: preview }) : null
152
+ ] });
153
+ }
154
+ //# sourceMappingURL=articleNodeViews.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/articleNodes/articleNodeViews.tsx"],
4
+ "sourcesContent": ["import * as React from 'react'\nimport { NodeViewWrapper, NodeViewContent, type NodeViewProps } from '@tiptap/react'\nimport { Button } from '../button/Button'\nimport { TextField } from '../textField/TextField'\nimport { ArticleImage, ArticleEmbed, BeforeAfterComparison, ArticleVideo } from './ArticleNodes'\n\nconst fields: Record<string, Array<[string, string]>> = {\n image: [['src', 'Image URL'], ['alt', 'Alternative text'], ['caption', 'Caption'], ['mediaId', 'Media ID']],\n dsxVideo: [['src', 'Video URL'], ['caption', 'Caption'], ['mediaId', 'Media ID']],\n dsxEmbed: [['url', 'Embed URL']],\n dsxComparison: [['beforeSrc', 'Before image URL'], ['beforeAlt', 'Before alternative text'], ['afterSrc', 'After image URL'], ['afterAlt', 'After alternative text']],\n dsxCallout: [['title', 'Callout title'], ['tone', 'Tone']],\n dsxPoll: [['pollId', 'Poll ID'], ['question', 'Question']],\n dsxMaterialLink: [['materialId', 'Material ID'], ['label', 'Link label'], ['href', 'Resolved URL']],\n dsxTab: [['platform', 'Platform key'], ['label', 'Tab label']],\n}\nconst titles: Record<string, string> = { image: 'Image', dsxVideo: 'Video', dsxEmbed: 'Embed', dsxComparison: 'Comparison', dsxCallout: 'Callout', dsxPoll: 'Poll', dsxMaterialLink: 'Material reference', dsxTabs: 'Platform tabs', dsxTab: 'Platform' }\nexport function ArticleBlockView({ node, editor, getPos, updateAttributes, deleteNode, selected }: NodeViewProps) {\n const [editing, setEditing] = React.useState(false)\n const [draft, setDraft] = React.useState<Record<string, unknown>>(node.attrs)\n const [error, setError] = React.useState('')\n const fieldsId = React.useId()\n const name = node.type.name\n const pos = getPos()\n const $pos = typeof pos === 'number' ? editor.state.doc.resolve(pos) : null\n const index = $pos?.index() ?? 0\n const parent = $pos?.parent\n const [editable, setEditable] = React.useState(editor.isEditable)\n React.useEffect(() => {\n const refresh = () => {\n setEditable(editor.isEditable)\n if (!editor.isEditable) setEditing(false)\n }\n editor.on('update', refresh)\n editor.on('transaction', refresh)\n refresh()\n return () => { editor.off('update', refresh); editor.off('transaction', refresh) }\n }, [editor])\n const move = (direction: -1 | 1) => {\n if (!editor.isEditable || typeof pos !== 'number' || !parent) return\n const neighbor = parent.maybeChild(index + direction)\n if (!neighbor) return\n editor.commands.command(({ tr }) => {\n tr.delete(pos, pos + node.nodeSize).insert(direction === -1 ? pos - neighbor.nodeSize : pos + neighbor.nodeSize, node)\n return true\n })\n editor.commands.focus()\n }\n const save = () => {\n if (!editor.isEditable) return\n if (name === 'dsxPoll') {\n const options = draft.options as Array<{ id: string; label: string }>\n if (!String(draft.pollId ?? '').trim() || !String(draft.question ?? '').trim() || options.length < 2 || options.some(option => !option.id.trim() || !option.label.trim()) || new Set(options.map(option => option.id)).size !== options.length) { setError('Supply a poll ID, question and at least two options with unique IDs.'); return }\n }\n for (const key of ['src', 'url', 'href', 'beforeSrc', 'afterSrc']) {\n if (!draft[key]) continue\n try { const url = new URL(String(draft[key]), window.location.href); if (!['http:', 'https:'].includes(url.protocol)) throw new Error() } catch { setError('Use an http or https media/link URL.'); return }\n }\n updateAttributes(draft); setEditing(false); editor.commands.focus()\n }\n const preview = name === 'image' ? <ArticleImage src={node.attrs.src} alt={node.attrs.alt} caption={node.attrs.caption} />\n : name === 'dsxVideo' ? <ArticleVideo src={node.attrs.src} caption={node.attrs.caption} />\n : name === 'dsxEmbed' ? <ArticleEmbed url={node.attrs.url ?? ''} />\n : name === 'dsxComparison' ? <BeforeAfterComparison {...node.attrs as React.ComponentProps<typeof BeforeAfterComparison>} />\n : name === 'dsxPoll' ? <div><strong>{node.attrs.question || 'Untitled poll'}</strong><ul>{(node.attrs.options as Array<{ id: string; label: string }>).map(option => <li key={option.id}>{option.label}</li>)}</ul><small>{node.attrs.multiple ? 'Multiple choices' : 'Single choice'} \u00B7 {node.attrs.pollId || 'Missing poll ID'}</small></div>\n : name === 'dsxMaterialLink' ? <span>{node.attrs.label || node.attrs.materialId || 'Material reference'}</span> : null\n return <NodeViewWrapper className=\"dsx-article-editor-block\" aria-label={`${titles[name] ?? name} block`} aria-current={selected || undefined}>\n <div contentEditable={false} className=\"dsx-article-editor-block__controls\">\n <strong>{name === 'dsxTab' ? node.attrs.label || titles[name] : titles[name]}</strong>\n {editable ? <div className=\"dsx-article-editor-block__actions\">\n {fields[name] ? <Button type=\"button\" size=\"lg\" variant=\"ghost\" onClick={() => { setDraft({ ...node.attrs }); setError(''); setEditing(value => !value) }}>{editing ? 'Cancel' : 'Edit'}</Button> : null}\n <Button type=\"button\" size=\"lg\" variant=\"ghost\" aria-label={`Move ${titles[name]} up`} disabled={!parent?.maybeChild(index - 1)} onClick={() => move(-1)}>\u2191</Button>\n <Button type=\"button\" size=\"lg\" variant=\"ghost\" aria-label={`Move ${titles[name]} down`} disabled={!parent?.maybeChild(index + 1)} onClick={() => move(1)}>\u2193</Button>\n <Button type=\"button\" size=\"lg\" variant=\"ghost\" aria-label={`Remove ${titles[name]}`} onClick={() => { if (editor.isEditable) { deleteNode(); editor.commands.focus() } }}>Remove</Button>\n </div> : null}\n </div>\n {editing ? <div contentEditable={false} className=\"dsx-article-editor-block__fields\">\n {fields[name]?.map(([key, label]) => <TextField key={key} id={`${fieldsId}-${key}`} label={label}><TextField.Input value={String(draft[key] ?? '')} onChange={event => setDraft(current => ({ ...current, [key]: event.target.value }))} /></TextField>)}\n {name === 'dsxPoll' ? <>\n <label>Options \u2014 one stable ID | label per line<textarea className=\"dsx-article-editor-block__textarea\" value={(draft.options as Array<{ id: string; label: string }>).map(option => `${option.id}|${option.label}`).join('\\n')} onChange={event => setDraft(current => ({ ...current, options: event.target.value.split('\\n').map(line => { const divider = line.indexOf('|'); return { id: divider < 0 ? '' : line.slice(0, divider), label: divider < 0 ? line : line.slice(divider + 1) } }) }))} /></label>\n <Button type=\"button\" size=\"lg\" variant=\"outline\" aria-pressed={Boolean(draft.multiple)} onClick={() => setDraft(current => ({ ...current, multiple: !current.multiple }))}>Allow multiple choices</Button>\n </> : null}\n {error ? <span role=\"alert\">{error}</span> : null}\n <Button type=\"button\" size=\"lg\" onClick={save}>Save block</Button>\n </div> : null}\n {!node.isAtom ? <NodeViewContent className=\"dsx-article-editor-block__content\" /> : !editing ? <div contentEditable={false}>{preview}</div> : null}\n </NodeViewWrapper>\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,3 @@
1
+ import { type NodeViewProps } from '@tiptap/react';
2
+ export declare function ArticleBlockView({ node, editor, getPos, updateAttributes, deleteNode, selected }: NodeViewProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=articleNodeViews.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"articleNodeViews.d.cts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleNodeViews.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoC,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAgBpF,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAsE/G"}
@@ -0,0 +1,3 @@
1
+ import { type NodeViewProps } from '@tiptap/react';
2
+ export declare function ArticleBlockView({ node, editor, getPos, updateAttributes, deleteNode, selected }: NodeViewProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=articleNodeViews.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"articleNodeViews.d.mts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleNodeViews.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoC,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAgBpF,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAsE/G"}
@@ -0,0 +1,3 @@
1
+ import { type NodeViewProps } from '@tiptap/react';
2
+ export declare function ArticleBlockView({ node, editor, getPos, updateAttributes, deleteNode, selected }: NodeViewProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=articleNodeViews.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"articleNodeViews.d.ts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleNodeViews.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoC,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAgBpF,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAsE/G"}
@@ -0,0 +1,124 @@
1
+ import * as React from "react";
2
+ import { NodeViewWrapper, NodeViewContent } from "@tiptap/react";
3
+ import { Button } from "../button/Button.js";
4
+ import { TextField } from "../textField/TextField.js";
5
+ import { ArticleImage, ArticleEmbed, BeforeAfterComparison, ArticleVideo } from "./ArticleNodes.js";
6
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
+ const fields = {
8
+ image: [["src", "Image URL"], ["alt", "Alternative text"], ["caption", "Caption"], ["mediaId", "Media ID"]],
9
+ dsxVideo: [["src", "Video URL"], ["caption", "Caption"], ["mediaId", "Media ID"]],
10
+ dsxEmbed: [["url", "Embed URL"]],
11
+ dsxComparison: [["beforeSrc", "Before image URL"], ["beforeAlt", "Before alternative text"], ["afterSrc", "After image URL"], ["afterAlt", "After alternative text"]],
12
+ dsxCallout: [["title", "Callout title"], ["tone", "Tone"]],
13
+ dsxPoll: [["pollId", "Poll ID"], ["question", "Question"]],
14
+ dsxMaterialLink: [["materialId", "Material ID"], ["label", "Link label"], ["href", "Resolved URL"]],
15
+ dsxTab: [["platform", "Platform key"], ["label", "Tab label"]]
16
+ };
17
+ const titles = { image: "Image", dsxVideo: "Video", dsxEmbed: "Embed", dsxComparison: "Comparison", dsxCallout: "Callout", dsxPoll: "Poll", dsxMaterialLink: "Material reference", dsxTabs: "Platform tabs", dsxTab: "Platform" };
18
+ function ArticleBlockView({ node, editor, getPos, updateAttributes, deleteNode, selected }) {
19
+ const [editing, setEditing] = React.useState(false);
20
+ const [draft, setDraft] = React.useState(node.attrs);
21
+ const [error, setError] = React.useState("");
22
+ const fieldsId = React.useId();
23
+ const name = node.type.name;
24
+ const pos = getPos();
25
+ const $pos = typeof pos === "number" ? editor.state.doc.resolve(pos) : null;
26
+ const index = $pos?.index() ?? 0;
27
+ const parent = $pos?.parent;
28
+ const [editable, setEditable] = React.useState(editor.isEditable);
29
+ React.useEffect(() => {
30
+ const refresh = () => {
31
+ setEditable(editor.isEditable);
32
+ if (!editor.isEditable) setEditing(false);
33
+ };
34
+ editor.on("update", refresh);
35
+ editor.on("transaction", refresh);
36
+ refresh();
37
+ return () => {
38
+ editor.off("update", refresh);
39
+ editor.off("transaction", refresh);
40
+ };
41
+ }, [editor]);
42
+ const move = (direction) => {
43
+ if (!editor.isEditable || typeof pos !== "number" || !parent) return;
44
+ const neighbor = parent.maybeChild(index + direction);
45
+ if (!neighbor) return;
46
+ editor.commands.command(({ tr }) => {
47
+ tr.delete(pos, pos + node.nodeSize).insert(direction === -1 ? pos - neighbor.nodeSize : pos + neighbor.nodeSize, node);
48
+ return true;
49
+ });
50
+ editor.commands.focus();
51
+ };
52
+ const save = () => {
53
+ if (!editor.isEditable) return;
54
+ if (name === "dsxPoll") {
55
+ const options = draft.options;
56
+ if (!String(draft.pollId ?? "").trim() || !String(draft.question ?? "").trim() || options.length < 2 || options.some((option) => !option.id.trim() || !option.label.trim()) || new Set(options.map((option) => option.id)).size !== options.length) {
57
+ setError("Supply a poll ID, question and at least two options with unique IDs.");
58
+ return;
59
+ }
60
+ }
61
+ for (const key of ["src", "url", "href", "beforeSrc", "afterSrc"]) {
62
+ if (!draft[key]) continue;
63
+ try {
64
+ const url = new URL(String(draft[key]), window.location.href);
65
+ if (!["http:", "https:"].includes(url.protocol)) throw new Error();
66
+ } catch {
67
+ setError("Use an http or https media/link URL.");
68
+ return;
69
+ }
70
+ }
71
+ updateAttributes(draft);
72
+ setEditing(false);
73
+ editor.commands.focus();
74
+ };
75
+ const preview = name === "image" ? /* @__PURE__ */ jsx(ArticleImage, { src: node.attrs.src, alt: node.attrs.alt, caption: node.attrs.caption }) : name === "dsxVideo" ? /* @__PURE__ */ jsx(ArticleVideo, { src: node.attrs.src, caption: node.attrs.caption }) : name === "dsxEmbed" ? /* @__PURE__ */ jsx(ArticleEmbed, { url: node.attrs.url ?? "" }) : name === "dsxComparison" ? /* @__PURE__ */ jsx(BeforeAfterComparison, { ...node.attrs }) : name === "dsxPoll" ? /* @__PURE__ */ jsxs("div", { children: [
76
+ /* @__PURE__ */ jsx("strong", { children: node.attrs.question || "Untitled poll" }),
77
+ /* @__PURE__ */ jsx("ul", { children: node.attrs.options.map((option) => /* @__PURE__ */ jsx("li", { children: option.label }, option.id)) }),
78
+ /* @__PURE__ */ jsxs("small", { children: [
79
+ node.attrs.multiple ? "Multiple choices" : "Single choice",
80
+ " \xB7 ",
81
+ node.attrs.pollId || "Missing poll ID"
82
+ ] })
83
+ ] }) : name === "dsxMaterialLink" ? /* @__PURE__ */ jsx("span", { children: node.attrs.label || node.attrs.materialId || "Material reference" }) : null;
84
+ return /* @__PURE__ */ jsxs(NodeViewWrapper, { className: "dsx-article-editor-block", "aria-label": `${titles[name] ?? name} block`, "aria-current": selected || void 0, children: [
85
+ /* @__PURE__ */ jsxs("div", { contentEditable: false, className: "dsx-article-editor-block__controls", children: [
86
+ /* @__PURE__ */ jsx("strong", { children: name === "dsxTab" ? node.attrs.label || titles[name] : titles[name] }),
87
+ editable ? /* @__PURE__ */ jsxs("div", { className: "dsx-article-editor-block__actions", children: [
88
+ fields[name] ? /* @__PURE__ */ jsx(Button, { type: "button", size: "lg", variant: "ghost", onClick: () => {
89
+ setDraft({ ...node.attrs });
90
+ setError("");
91
+ setEditing((value) => !value);
92
+ }, children: editing ? "Cancel" : "Edit" }) : null,
93
+ /* @__PURE__ */ jsx(Button, { type: "button", size: "lg", variant: "ghost", "aria-label": `Move ${titles[name]} up`, disabled: !parent?.maybeChild(index - 1), onClick: () => move(-1), children: "\u2191" }),
94
+ /* @__PURE__ */ jsx(Button, { type: "button", size: "lg", variant: "ghost", "aria-label": `Move ${titles[name]} down`, disabled: !parent?.maybeChild(index + 1), onClick: () => move(1), children: "\u2193" }),
95
+ /* @__PURE__ */ jsx(Button, { type: "button", size: "lg", variant: "ghost", "aria-label": `Remove ${titles[name]}`, onClick: () => {
96
+ if (editor.isEditable) {
97
+ deleteNode();
98
+ editor.commands.focus();
99
+ }
100
+ }, children: "Remove" })
101
+ ] }) : null
102
+ ] }),
103
+ editing ? /* @__PURE__ */ jsxs("div", { contentEditable: false, className: "dsx-article-editor-block__fields", children: [
104
+ fields[name]?.map(([key, label]) => /* @__PURE__ */ jsx(TextField, { id: `${fieldsId}-${key}`, label, children: /* @__PURE__ */ jsx(TextField.Input, { value: String(draft[key] ?? ""), onChange: (event) => setDraft((current) => ({ ...current, [key]: event.target.value })) }) }, key)),
105
+ name === "dsxPoll" ? /* @__PURE__ */ jsxs(Fragment, { children: [
106
+ /* @__PURE__ */ jsxs("label", { children: [
107
+ "Options \u2014 one stable ID | label per line",
108
+ /* @__PURE__ */ jsx("textarea", { className: "dsx-article-editor-block__textarea", value: draft.options.map((option) => `${option.id}|${option.label}`).join("\n"), onChange: (event) => setDraft((current) => ({ ...current, options: event.target.value.split("\n").map((line) => {
109
+ const divider = line.indexOf("|");
110
+ return { id: divider < 0 ? "" : line.slice(0, divider), label: divider < 0 ? line : line.slice(divider + 1) };
111
+ }) })) })
112
+ ] }),
113
+ /* @__PURE__ */ jsx(Button, { type: "button", size: "lg", variant: "outline", "aria-pressed": Boolean(draft.multiple), onClick: () => setDraft((current) => ({ ...current, multiple: !current.multiple })), children: "Allow multiple choices" })
114
+ ] }) : null,
115
+ error ? /* @__PURE__ */ jsx("span", { role: "alert", children: error }) : null,
116
+ /* @__PURE__ */ jsx(Button, { type: "button", size: "lg", onClick: save, children: "Save block" })
117
+ ] }) : null,
118
+ !node.isAtom ? /* @__PURE__ */ jsx(NodeViewContent, { className: "dsx-article-editor-block__content" }) : !editing ? /* @__PURE__ */ jsx("div", { contentEditable: false, children: preview }) : null
119
+ ] });
120
+ }
121
+ export {
122
+ ArticleBlockView
123
+ };
124
+ //# sourceMappingURL=articleNodeViews.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/articleNodes/articleNodeViews.tsx"],
4
+ "sourcesContent": ["import * as React from 'react'\nimport { NodeViewWrapper, NodeViewContent, type NodeViewProps } from '@tiptap/react'\nimport { Button } from '../button/Button'\nimport { TextField } from '../textField/TextField'\nimport { ArticleImage, ArticleEmbed, BeforeAfterComparison, ArticleVideo } from './ArticleNodes'\n\nconst fields: Record<string, Array<[string, string]>> = {\n image: [['src', 'Image URL'], ['alt', 'Alternative text'], ['caption', 'Caption'], ['mediaId', 'Media ID']],\n dsxVideo: [['src', 'Video URL'], ['caption', 'Caption'], ['mediaId', 'Media ID']],\n dsxEmbed: [['url', 'Embed URL']],\n dsxComparison: [['beforeSrc', 'Before image URL'], ['beforeAlt', 'Before alternative text'], ['afterSrc', 'After image URL'], ['afterAlt', 'After alternative text']],\n dsxCallout: [['title', 'Callout title'], ['tone', 'Tone']],\n dsxPoll: [['pollId', 'Poll ID'], ['question', 'Question']],\n dsxMaterialLink: [['materialId', 'Material ID'], ['label', 'Link label'], ['href', 'Resolved URL']],\n dsxTab: [['platform', 'Platform key'], ['label', 'Tab label']],\n}\nconst titles: Record<string, string> = { image: 'Image', dsxVideo: 'Video', dsxEmbed: 'Embed', dsxComparison: 'Comparison', dsxCallout: 'Callout', dsxPoll: 'Poll', dsxMaterialLink: 'Material reference', dsxTabs: 'Platform tabs', dsxTab: 'Platform' }\nexport function ArticleBlockView({ node, editor, getPos, updateAttributes, deleteNode, selected }: NodeViewProps) {\n const [editing, setEditing] = React.useState(false)\n const [draft, setDraft] = React.useState<Record<string, unknown>>(node.attrs)\n const [error, setError] = React.useState('')\n const fieldsId = React.useId()\n const name = node.type.name\n const pos = getPos()\n const $pos = typeof pos === 'number' ? editor.state.doc.resolve(pos) : null\n const index = $pos?.index() ?? 0\n const parent = $pos?.parent\n const [editable, setEditable] = React.useState(editor.isEditable)\n React.useEffect(() => {\n const refresh = () => {\n setEditable(editor.isEditable)\n if (!editor.isEditable) setEditing(false)\n }\n editor.on('update', refresh)\n editor.on('transaction', refresh)\n refresh()\n return () => { editor.off('update', refresh); editor.off('transaction', refresh) }\n }, [editor])\n const move = (direction: -1 | 1) => {\n if (!editor.isEditable || typeof pos !== 'number' || !parent) return\n const neighbor = parent.maybeChild(index + direction)\n if (!neighbor) return\n editor.commands.command(({ tr }) => {\n tr.delete(pos, pos + node.nodeSize).insert(direction === -1 ? pos - neighbor.nodeSize : pos + neighbor.nodeSize, node)\n return true\n })\n editor.commands.focus()\n }\n const save = () => {\n if (!editor.isEditable) return\n if (name === 'dsxPoll') {\n const options = draft.options as Array<{ id: string; label: string }>\n if (!String(draft.pollId ?? '').trim() || !String(draft.question ?? '').trim() || options.length < 2 || options.some(option => !option.id.trim() || !option.label.trim()) || new Set(options.map(option => option.id)).size !== options.length) { setError('Supply a poll ID, question and at least two options with unique IDs.'); return }\n }\n for (const key of ['src', 'url', 'href', 'beforeSrc', 'afterSrc']) {\n if (!draft[key]) continue\n try { const url = new URL(String(draft[key]), window.location.href); if (!['http:', 'https:'].includes(url.protocol)) throw new Error() } catch { setError('Use an http or https media/link URL.'); return }\n }\n updateAttributes(draft); setEditing(false); editor.commands.focus()\n }\n const preview = name === 'image' ? <ArticleImage src={node.attrs.src} alt={node.attrs.alt} caption={node.attrs.caption} />\n : name === 'dsxVideo' ? <ArticleVideo src={node.attrs.src} caption={node.attrs.caption} />\n : name === 'dsxEmbed' ? <ArticleEmbed url={node.attrs.url ?? ''} />\n : name === 'dsxComparison' ? <BeforeAfterComparison {...node.attrs as React.ComponentProps<typeof BeforeAfterComparison>} />\n : name === 'dsxPoll' ? <div><strong>{node.attrs.question || 'Untitled poll'}</strong><ul>{(node.attrs.options as Array<{ id: string; label: string }>).map(option => <li key={option.id}>{option.label}</li>)}</ul><small>{node.attrs.multiple ? 'Multiple choices' : 'Single choice'} \u00B7 {node.attrs.pollId || 'Missing poll ID'}</small></div>\n : name === 'dsxMaterialLink' ? <span>{node.attrs.label || node.attrs.materialId || 'Material reference'}</span> : null\n return <NodeViewWrapper className=\"dsx-article-editor-block\" aria-label={`${titles[name] ?? name} block`} aria-current={selected || undefined}>\n <div contentEditable={false} className=\"dsx-article-editor-block__controls\">\n <strong>{name === 'dsxTab' ? node.attrs.label || titles[name] : titles[name]}</strong>\n {editable ? <div className=\"dsx-article-editor-block__actions\">\n {fields[name] ? <Button type=\"button\" size=\"lg\" variant=\"ghost\" onClick={() => { setDraft({ ...node.attrs }); setError(''); setEditing(value => !value) }}>{editing ? 'Cancel' : 'Edit'}</Button> : null}\n <Button type=\"button\" size=\"lg\" variant=\"ghost\" aria-label={`Move ${titles[name]} up`} disabled={!parent?.maybeChild(index - 1)} onClick={() => move(-1)}>\u2191</Button>\n <Button type=\"button\" size=\"lg\" variant=\"ghost\" aria-label={`Move ${titles[name]} down`} disabled={!parent?.maybeChild(index + 1)} onClick={() => move(1)}>\u2193</Button>\n <Button type=\"button\" size=\"lg\" variant=\"ghost\" aria-label={`Remove ${titles[name]}`} onClick={() => { if (editor.isEditable) { deleteNode(); editor.commands.focus() } }}>Remove</Button>\n </div> : null}\n </div>\n {editing ? <div contentEditable={false} className=\"dsx-article-editor-block__fields\">\n {fields[name]?.map(([key, label]) => <TextField key={key} id={`${fieldsId}-${key}`} label={label}><TextField.Input value={String(draft[key] ?? '')} onChange={event => setDraft(current => ({ ...current, [key]: event.target.value }))} /></TextField>)}\n {name === 'dsxPoll' ? <>\n <label>Options \u2014 one stable ID | label per line<textarea className=\"dsx-article-editor-block__textarea\" value={(draft.options as Array<{ id: string; label: string }>).map(option => `${option.id}|${option.label}`).join('\\n')} onChange={event => setDraft(current => ({ ...current, options: event.target.value.split('\\n').map(line => { const divider = line.indexOf('|'); return { id: divider < 0 ? '' : line.slice(0, divider), label: divider < 0 ? line : line.slice(divider + 1) } }) }))} /></label>\n <Button type=\"button\" size=\"lg\" variant=\"outline\" aria-pressed={Boolean(draft.multiple)} onClick={() => setDraft(current => ({ ...current, multiple: !current.multiple }))}>Allow multiple choices</Button>\n </> : null}\n {error ? <span role=\"alert\">{error}</span> : null}\n <Button type=\"button\" size=\"lg\" onClick={save}>Save block</Button>\n </div> : null}\n {!node.isAtom ? <NodeViewContent className=\"dsx-article-editor-block__content\" /> : !editing ? <div contentEditable={false}>{preview}</div> : null}\n </NodeViewWrapper>\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/articleNodes/articleNodes.props.ts"],
4
- "sourcesContent": ["import type * as React from 'react'\n\ninterface ArticleImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n caption?: React.ReactNode\n}\n\ninterface ArticleEmbedProps extends React.HTMLAttributes<HTMLDivElement> {\n url: string\n render?: (url: string) => React.ReactNode\n isAllowed?: (url: string) => boolean\n}\n\ninterface BeforeAfterComparisonProps extends React.HTMLAttributes<HTMLElement> {\n beforeSrc: string\n afterSrc: string\n beforeAlt: string\n afterAlt: string\n beforeLabel?: React.ReactNode\n afterLabel?: React.ReactNode\n}\n\ntype PollState = 'loading' | 'ready' | 'error' | 'voted'\n\ninterface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onLoad'> {\n pollId: string\n question?: React.ReactNode\n options?: Array<{ id: string; label: React.ReactNode; votes?: number }>\n state?: PollState\n onLoad?: (pollId: string) => void\n onVote?: (pollId: string, optionId: string) => void\n}\n\nexport type {\n ArticleEmbedProps,\n ArticleImageProps,\n ArticlePollProps,\n BeforeAfterComparisonProps,\n PollState,\n}\n"],
4
+ "sourcesContent": ["import type * as React from 'react'\n\ninterface ArticleImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n caption?: React.ReactNode\n}\n\ninterface ArticleEmbedProps extends React.HTMLAttributes<HTMLDivElement> {\n url: string\n render?: (url: string) => React.ReactNode\n isAllowed?: (url: string) => boolean\n}\n\ninterface BeforeAfterComparisonProps extends React.HTMLAttributes<HTMLElement> {\n beforeSrc: string\n afterSrc: string\n beforeAlt: string\n afterAlt: string\n beforeLabel?: React.ReactNode\n afterLabel?: React.ReactNode\n}\n\ntype PollState = 'loading' | 'ready' | 'error' | 'voted' | 'closed'\n\ninterface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onLoad' | 'onSubmit'> {\n pollId: string\n question?: React.ReactNode\n options?: Array<{ id: string; label: React.ReactNode; votes?: number }>\n state?: PollState\n onLoad?: (pollId: string) => void\n onVote?: (pollId: string, optionId: string) => void\n selection?: readonly string[]\n multiple?: boolean\n onSelectionChange?: (selection: string[]) => void\n onSubmit?: (pollId: string, selection: readonly string[]) => void\n onRetract?: (pollId: string) => void\n totalVotes?: number\n}\n\nexport type {\n ArticleEmbedProps,\n ArticleImageProps,\n ArticlePollProps,\n BeforeAfterComparisonProps,\n PollState,\n}\n\nexport interface ArticleVideoProps extends React.VideoHTMLAttributes<HTMLVideoElement> { caption?: React.ReactNode }\nexport interface ArticleMaterialLinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> { materialId: string; href?: string; unavailableLabel?: React.ReactNode }\nexport interface ArticlePlatformTabsProps extends React.HTMLAttributes<HTMLDivElement> {\n tabs: readonly { platform: string; label: React.ReactNode; content: React.ReactNode }[]\n value?: string\n onValueChange?: (value: string) => void\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -15,8 +15,8 @@ interface BeforeAfterComparisonProps extends React.HTMLAttributes<HTMLElement> {
15
15
  beforeLabel?: React.ReactNode;
16
16
  afterLabel?: React.ReactNode;
17
17
  }
18
- type PollState = 'loading' | 'ready' | 'error' | 'voted';
19
- interface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onLoad'> {
18
+ type PollState = 'loading' | 'ready' | 'error' | 'voted' | 'closed';
19
+ interface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onLoad' | 'onSubmit'> {
20
20
  pollId: string;
21
21
  question?: React.ReactNode;
22
22
  options?: Array<{
@@ -27,6 +27,29 @@ interface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'o
27
27
  state?: PollState;
28
28
  onLoad?: (pollId: string) => void;
29
29
  onVote?: (pollId: string, optionId: string) => void;
30
+ selection?: readonly string[];
31
+ multiple?: boolean;
32
+ onSelectionChange?: (selection: string[]) => void;
33
+ onSubmit?: (pollId: string, selection: readonly string[]) => void;
34
+ onRetract?: (pollId: string) => void;
35
+ totalVotes?: number;
30
36
  }
31
37
  export type { ArticleEmbedProps, ArticleImageProps, ArticlePollProps, BeforeAfterComparisonProps, PollState, };
38
+ export interface ArticleVideoProps extends React.VideoHTMLAttributes<HTMLVideoElement> {
39
+ caption?: React.ReactNode;
40
+ }
41
+ export interface ArticleMaterialLinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {
42
+ materialId: string;
43
+ href?: string;
44
+ unavailableLabel?: React.ReactNode;
45
+ }
46
+ export interface ArticlePlatformTabsProps extends React.HTMLAttributes<HTMLDivElement> {
47
+ tabs: readonly {
48
+ platform: string;
49
+ label: React.ReactNode;
50
+ content: React.ReactNode;
51
+ }[];
52
+ value?: string;
53
+ onValueChange?: (value: string) => void;
54
+ }
32
55
  //# sourceMappingURL=articleNodes.props.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"articleNodes.props.d.cts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleNodes.props.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAEnC,UAAU,iBAAkB,SAAQ,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;IAC3E,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED,UAAU,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACtE,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAA;IACzC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;CACrC;AAED,UAAU,0BAA2B,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IAC5E,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC7B;AAED,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;AAExD,UAAU,gBAAiB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC;IACrF,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvE,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;CACpD;AAED,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC1B,SAAS,GACV,CAAA"}
1
+ {"version":3,"file":"articleNodes.props.d.cts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleNodes.props.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAEnC,UAAU,iBAAkB,SAAQ,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;IAC3E,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED,UAAU,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACtE,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAA;IACzC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;CACrC;AAED,UAAU,0BAA2B,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IAC5E,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC7B;AAED,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEnE,UAAU,gBAAiB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAClG,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvE,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACnD,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IACjD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAA;IACjE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC1B,SAAS,GACV,CAAA;AAED,MAAM,WAAW,iBAAkB,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;IAAG,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE;AACpH,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAAG,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE;AACvL,MAAM,WAAW,wBAAyB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACpF,IAAI,EAAE,SAAS;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,EAAE,CAAA;IACvF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC"}
@@ -15,8 +15,8 @@ interface BeforeAfterComparisonProps extends React.HTMLAttributes<HTMLElement> {
15
15
  beforeLabel?: React.ReactNode;
16
16
  afterLabel?: React.ReactNode;
17
17
  }
18
- type PollState = 'loading' | 'ready' | 'error' | 'voted';
19
- interface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onLoad'> {
18
+ type PollState = 'loading' | 'ready' | 'error' | 'voted' | 'closed';
19
+ interface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onLoad' | 'onSubmit'> {
20
20
  pollId: string;
21
21
  question?: React.ReactNode;
22
22
  options?: Array<{
@@ -27,6 +27,29 @@ interface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'o
27
27
  state?: PollState;
28
28
  onLoad?: (pollId: string) => void;
29
29
  onVote?: (pollId: string, optionId: string) => void;
30
+ selection?: readonly string[];
31
+ multiple?: boolean;
32
+ onSelectionChange?: (selection: string[]) => void;
33
+ onSubmit?: (pollId: string, selection: readonly string[]) => void;
34
+ onRetract?: (pollId: string) => void;
35
+ totalVotes?: number;
30
36
  }
31
37
  export type { ArticleEmbedProps, ArticleImageProps, ArticlePollProps, BeforeAfterComparisonProps, PollState, };
38
+ export interface ArticleVideoProps extends React.VideoHTMLAttributes<HTMLVideoElement> {
39
+ caption?: React.ReactNode;
40
+ }
41
+ export interface ArticleMaterialLinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {
42
+ materialId: string;
43
+ href?: string;
44
+ unavailableLabel?: React.ReactNode;
45
+ }
46
+ export interface ArticlePlatformTabsProps extends React.HTMLAttributes<HTMLDivElement> {
47
+ tabs: readonly {
48
+ platform: string;
49
+ label: React.ReactNode;
50
+ content: React.ReactNode;
51
+ }[];
52
+ value?: string;
53
+ onValueChange?: (value: string) => void;
54
+ }
32
55
  //# sourceMappingURL=articleNodes.props.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"articleNodes.props.d.mts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleNodes.props.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAEnC,UAAU,iBAAkB,SAAQ,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;IAC3E,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED,UAAU,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACtE,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAA;IACzC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;CACrC;AAED,UAAU,0BAA2B,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IAC5E,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC7B;AAED,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;AAExD,UAAU,gBAAiB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC;IACrF,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvE,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;CACpD;AAED,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC1B,SAAS,GACV,CAAA"}
1
+ {"version":3,"file":"articleNodes.props.d.mts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleNodes.props.ts"],"names":[],"mappings":"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"}
@@ -15,8 +15,8 @@ interface BeforeAfterComparisonProps extends React.HTMLAttributes<HTMLElement> {
15
15
  beforeLabel?: React.ReactNode;
16
16
  afterLabel?: React.ReactNode;
17
17
  }
18
- type PollState = 'loading' | 'ready' | 'error' | 'voted';
19
- interface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onLoad'> {
18
+ type PollState = 'loading' | 'ready' | 'error' | 'voted' | 'closed';
19
+ interface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onLoad' | 'onSubmit'> {
20
20
  pollId: string;
21
21
  question?: React.ReactNode;
22
22
  options?: Array<{
@@ -27,6 +27,29 @@ interface ArticlePollProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'o
27
27
  state?: PollState;
28
28
  onLoad?: (pollId: string) => void;
29
29
  onVote?: (pollId: string, optionId: string) => void;
30
+ selection?: readonly string[];
31
+ multiple?: boolean;
32
+ onSelectionChange?: (selection: string[]) => void;
33
+ onSubmit?: (pollId: string, selection: readonly string[]) => void;
34
+ onRetract?: (pollId: string) => void;
35
+ totalVotes?: number;
30
36
  }
31
37
  export type { ArticleEmbedProps, ArticleImageProps, ArticlePollProps, BeforeAfterComparisonProps, PollState, };
38
+ export interface ArticleVideoProps extends React.VideoHTMLAttributes<HTMLVideoElement> {
39
+ caption?: React.ReactNode;
40
+ }
41
+ export interface ArticleMaterialLinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {
42
+ materialId: string;
43
+ href?: string;
44
+ unavailableLabel?: React.ReactNode;
45
+ }
46
+ export interface ArticlePlatformTabsProps extends React.HTMLAttributes<HTMLDivElement> {
47
+ tabs: readonly {
48
+ platform: string;
49
+ label: React.ReactNode;
50
+ content: React.ReactNode;
51
+ }[];
52
+ value?: string;
53
+ onValueChange?: (value: string) => void;
54
+ }
32
55
  //# sourceMappingURL=articleNodes.props.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"articleNodes.props.d.ts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleNodes.props.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAEnC,UAAU,iBAAkB,SAAQ,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;IAC3E,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED,UAAU,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACtE,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAA;IACzC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;CACrC;AAED,UAAU,0BAA2B,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IAC5E,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC7B;AAED,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;AAExD,UAAU,gBAAiB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC;IACrF,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvE,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;CACpD;AAED,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC1B,SAAS,GACV,CAAA"}
1
+ {"version":3,"file":"articleNodes.props.d.ts","sourceRoot":"","sources":["../../../src/components/articleNodes/articleNodes.props.ts"],"names":[],"mappings":"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"}
@@ -4,12 +4,16 @@
4
4
  gap: var(--dsx-space-xs);
5
5
  padding: var(--dsx-space-lg);
6
6
  border-radius: var(--dsx-rounded-lg);
7
- background: var(--dsx-color-accent-surface);
7
+ background: var(--dsx-color-primary-container);
8
8
  box-sizing: border-box;
9
9
  min-width: 0;
10
10
  overflow-wrap: anywhere;
11
11
  }
12
12
 
13
+ .dsx-banner :is(.dsx-banner__label, .dsx-banner__value, .dsx-banner__footnote) {
14
+ color: var(--dsx-color-on-primary-container);
15
+ }
16
+
13
17
  /* Fill: solid accent mass reusing Button primary's solved compliance —
14
18
  accent-track background with accent-contrast text (near-black on spark,
15
19
  white elsewhere, per the token). Wash stays the default hero. */
@@ -32,7 +36,6 @@
32
36
  font-variation-settings: var(--dsx-typography-label-small-font-variation-settings);
33
37
  text-transform: var(--dsx-typography-label-small-text-transform);
34
38
  text-decoration: var(--dsx-typography-label-small-text-decoration);
35
- color: var(--dsx-color-on-surface-variant);
36
39
  }
37
40
 
38
41
  .dsx-banner__value {
@@ -44,7 +47,6 @@
44
47
  font-variation-settings: var(--dsx-typography-display-medium-font-variation-settings);
45
48
  text-transform: var(--dsx-typography-display-medium-text-transform);
46
49
  text-decoration: var(--dsx-typography-display-medium-text-decoration);
47
- color: var(--dsx-color-on-surface);
48
50
  }
49
51
 
50
52
  .dsx-banner__footnote {
@@ -56,5 +58,4 @@
56
58
  font-variation-settings: var(--dsx-typography-body-small-font-variation-settings);
57
59
  text-transform: var(--dsx-typography-body-small-text-transform);
58
60
  text-decoration: var(--dsx-typography-body-small-text-decoration);
59
- color: var(--dsx-color-on-surface-variant);
60
61
  }