@d4gger/design-system 3.0.1 → 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 (450) hide show
  1. package/README.md +19 -0
  2. package/dist/components/accordion.css +9 -2
  3. package/dist/components/alert/Alert.cjs +11 -7
  4. package/dist/components/alert/Alert.cjs.map +2 -2
  5. package/dist/components/alert/Alert.d.cts.map +1 -1
  6. package/dist/components/alert/Alert.d.mts.map +1 -1
  7. package/dist/components/alert/Alert.d.ts.map +1 -1
  8. package/dist/components/alert/Alert.js +12 -8
  9. package/dist/components/alert/Alert.js.map +2 -2
  10. package/dist/components/alert.css +13 -0
  11. package/dist/components/article-nodes.css +16 -1
  12. package/dist/components/articleNodes/ArticleNodes.cjs +46 -5
  13. package/dist/components/articleNodes/ArticleNodes.cjs.map +2 -2
  14. package/dist/components/articleNodes/ArticleNodes.d.cts +7 -3
  15. package/dist/components/articleNodes/ArticleNodes.d.cts.map +1 -1
  16. package/dist/components/articleNodes/ArticleNodes.d.mts +7 -3
  17. package/dist/components/articleNodes/ArticleNodes.d.mts.map +1 -1
  18. package/dist/components/articleNodes/ArticleNodes.d.ts +7 -3
  19. package/dist/components/articleNodes/ArticleNodes.d.ts.map +1 -1
  20. package/dist/components/articleNodes/ArticleNodes.js +46 -5
  21. package/dist/components/articleNodes/ArticleNodes.js.map +2 -2
  22. package/dist/components/articleNodes/articleExtensions.cjs +21 -4
  23. package/dist/components/articleNodes/articleExtensions.cjs.map +2 -2
  24. package/dist/components/articleNodes/articleExtensions.d.cts +8 -2
  25. package/dist/components/articleNodes/articleExtensions.d.cts.map +1 -1
  26. package/dist/components/articleNodes/articleExtensions.d.mts +8 -2
  27. package/dist/components/articleNodes/articleExtensions.d.mts.map +1 -1
  28. package/dist/components/articleNodes/articleExtensions.d.ts +8 -2
  29. package/dist/components/articleNodes/articleExtensions.d.ts.map +1 -1
  30. package/dist/components/articleNodes/articleExtensions.js +21 -4
  31. package/dist/components/articleNodes/articleExtensions.js.map +2 -2
  32. package/dist/components/articleNodes/articleNodeViews.cjs +154 -0
  33. package/dist/components/articleNodes/articleNodeViews.cjs.map +7 -0
  34. package/dist/components/articleNodes/articleNodeViews.d.cts +3 -0
  35. package/dist/components/articleNodes/articleNodeViews.d.cts.map +1 -0
  36. package/dist/components/articleNodes/articleNodeViews.d.mts +3 -0
  37. package/dist/components/articleNodes/articleNodeViews.d.mts.map +1 -0
  38. package/dist/components/articleNodes/articleNodeViews.d.ts +3 -0
  39. package/dist/components/articleNodes/articleNodeViews.d.ts.map +1 -0
  40. package/dist/components/articleNodes/articleNodeViews.js +124 -0
  41. package/dist/components/articleNodes/articleNodeViews.js.map +7 -0
  42. package/dist/components/articleNodes/articleNodes.props.cjs.map +1 -1
  43. package/dist/components/articleNodes/articleNodes.props.d.cts +25 -2
  44. package/dist/components/articleNodes/articleNodes.props.d.cts.map +1 -1
  45. package/dist/components/articleNodes/articleNodes.props.d.mts +25 -2
  46. package/dist/components/articleNodes/articleNodes.props.d.mts.map +1 -1
  47. package/dist/components/articleNodes/articleNodes.props.d.ts +25 -2
  48. package/dist/components/articleNodes/articleNodes.props.d.ts.map +1 -1
  49. package/dist/components/banner.css +5 -4
  50. package/dist/components/blockquote.css +7 -4
  51. package/dist/components/bottom-dock.css +132 -0
  52. package/dist/components/bottomDock/BottomDock.cjs +140 -0
  53. package/dist/components/bottomDock/BottomDock.cjs.map +7 -0
  54. package/dist/components/bottomDock/BottomDock.d.cts +25 -0
  55. package/dist/components/bottomDock/BottomDock.d.cts.map +1 -0
  56. package/dist/components/bottomDock/BottomDock.d.mts +25 -0
  57. package/dist/components/bottomDock/BottomDock.d.mts.map +1 -0
  58. package/dist/components/bottomDock/BottomDock.d.ts +25 -0
  59. package/dist/components/bottomDock/BottomDock.d.ts.map +1 -0
  60. package/dist/components/bottomDock/BottomDock.js +110 -0
  61. package/dist/components/bottomDock/BottomDock.js.map +7 -0
  62. package/dist/components/bottomDock/bottomDock.props.cjs +49 -0
  63. package/dist/components/bottomDock/bottomDock.props.cjs.map +7 -0
  64. package/dist/components/bottomDock/bottomDock.props.d.cts +29 -0
  65. package/dist/components/bottomDock/bottomDock.props.d.cts.map +1 -0
  66. package/dist/components/bottomDock/bottomDock.props.d.mts +29 -0
  67. package/dist/components/bottomDock/bottomDock.props.d.mts.map +1 -0
  68. package/dist/components/bottomDock/bottomDock.props.d.ts +29 -0
  69. package/dist/components/bottomDock/bottomDock.props.d.ts.map +1 -0
  70. package/dist/components/bottomDock/bottomDock.props.js +29 -0
  71. package/dist/components/bottomDock/bottomDock.props.js.map +7 -0
  72. package/dist/components/breadcrumb.css +24 -3
  73. package/dist/components/callout.css +20 -7
  74. package/dist/components/card.css +8 -0
  75. package/dist/components/code.css +29 -13
  76. package/dist/components/collapsible/Collapsible.cjs +4 -0
  77. package/dist/components/collapsible/Collapsible.cjs.map +2 -2
  78. package/dist/components/collapsible/Collapsible.d.cts.map +1 -1
  79. package/dist/components/collapsible/Collapsible.d.mts.map +1 -1
  80. package/dist/components/collapsible/Collapsible.d.ts.map +1 -1
  81. package/dist/components/collapsible/Collapsible.js +4 -0
  82. package/dist/components/collapsible/Collapsible.js.map +2 -2
  83. package/dist/components/collapsible.css +10 -1
  84. package/dist/components/command.css +0 -2
  85. package/dist/components/comment-thread.css +15 -7
  86. package/dist/components/commentThread/CommentThread.cjs +45 -17
  87. package/dist/components/commentThread/CommentThread.cjs.map +2 -2
  88. package/dist/components/commentThread/CommentThread.d.cts +6 -6
  89. package/dist/components/commentThread/CommentThread.d.cts.map +1 -1
  90. package/dist/components/commentThread/CommentThread.d.mts +6 -6
  91. package/dist/components/commentThread/CommentThread.d.mts.map +1 -1
  92. package/dist/components/commentThread/CommentThread.d.ts +6 -6
  93. package/dist/components/commentThread/CommentThread.d.ts.map +1 -1
  94. package/dist/components/commentThread/CommentThread.js +45 -17
  95. package/dist/components/commentThread/CommentThread.js.map +2 -2
  96. package/dist/components/commentThread/commentThread.props.cjs.map +1 -1
  97. package/dist/components/commentThread/commentThread.props.d.cts +24 -0
  98. package/dist/components/commentThread/commentThread.props.d.cts.map +1 -1
  99. package/dist/components/commentThread/commentThread.props.d.mts +24 -0
  100. package/dist/components/commentThread/commentThread.props.d.mts.map +1 -1
  101. package/dist/components/commentThread/commentThread.props.d.ts +24 -0
  102. package/dist/components/commentThread/commentThread.props.d.ts.map +1 -1
  103. package/dist/components/config-drawer.css +7 -3
  104. package/dist/components/configDrawer/ConfigDrawer.cjs +1 -1
  105. package/dist/components/configDrawer/ConfigDrawer.cjs.map +2 -2
  106. package/dist/components/configDrawer/ConfigDrawer.js +1 -1
  107. package/dist/components/configDrawer/ConfigDrawer.js.map +2 -2
  108. package/dist/components/context-menu.css +3 -1
  109. package/dist/components/contextMenu/ContextMenu.cjs +37 -6
  110. package/dist/components/contextMenu/ContextMenu.cjs.map +2 -2
  111. package/dist/components/contextMenu/ContextMenu.d.cts +1 -1
  112. package/dist/components/contextMenu/ContextMenu.d.cts.map +1 -1
  113. package/dist/components/contextMenu/ContextMenu.d.mts +1 -1
  114. package/dist/components/contextMenu/ContextMenu.d.mts.map +1 -1
  115. package/dist/components/contextMenu/ContextMenu.d.ts +1 -1
  116. package/dist/components/contextMenu/ContextMenu.d.ts.map +1 -1
  117. package/dist/components/contextMenu/ContextMenu.js +37 -6
  118. package/dist/components/contextMenu/ContextMenu.js.map +2 -2
  119. package/dist/components/drawer.css +23 -6
  120. package/dist/components/dropdownMenu/DropdownMenu.cjs +10 -5
  121. package/dist/components/dropdownMenu/DropdownMenu.cjs.map +2 -2
  122. package/dist/components/dropdownMenu/DropdownMenu.d.cts.map +1 -1
  123. package/dist/components/dropdownMenu/DropdownMenu.d.mts.map +1 -1
  124. package/dist/components/dropdownMenu/DropdownMenu.d.ts.map +1 -1
  125. package/dist/components/dropdownMenu/DropdownMenu.js +10 -5
  126. package/dist/components/dropdownMenu/DropdownMenu.js.map +2 -2
  127. package/dist/components/file-upload.css +36 -9
  128. package/dist/components/floating-panel.css +49 -18
  129. package/dist/components/floatingPanel/FloatingPanel.cjs +156 -58
  130. package/dist/components/floatingPanel/FloatingPanel.cjs.map +2 -2
  131. package/dist/components/floatingPanel/FloatingPanel.d.cts.map +1 -1
  132. package/dist/components/floatingPanel/FloatingPanel.d.mts.map +1 -1
  133. package/dist/components/floatingPanel/FloatingPanel.d.ts.map +1 -1
  134. package/dist/components/floatingPanel/FloatingPanel.js +156 -58
  135. package/dist/components/floatingPanel/FloatingPanel.js.map +2 -2
  136. package/dist/components/grid/Grid.cjs +24 -35
  137. package/dist/components/grid/Grid.cjs.map +2 -2
  138. package/dist/components/grid/Grid.d.cts.map +1 -1
  139. package/dist/components/grid/Grid.d.mts.map +1 -1
  140. package/dist/components/grid/Grid.d.ts.map +1 -1
  141. package/dist/components/grid/Grid.js +24 -35
  142. package/dist/components/grid/Grid.js.map +2 -2
  143. package/dist/components/heading/Heading.cjs +1 -8
  144. package/dist/components/heading/Heading.cjs.map +2 -2
  145. package/dist/components/heading/Heading.d.cts.map +1 -1
  146. package/dist/components/heading/Heading.d.mts.map +1 -1
  147. package/dist/components/heading/Heading.d.ts.map +1 -1
  148. package/dist/components/heading/Heading.js +1 -8
  149. package/dist/components/heading/Heading.js.map +2 -2
  150. package/dist/components/heading/heading.props.cjs +9 -9
  151. package/dist/components/heading/heading.props.cjs.map +2 -2
  152. package/dist/components/heading/heading.props.d.cts +42 -43
  153. package/dist/components/heading/heading.props.d.cts.map +1 -1
  154. package/dist/components/heading/heading.props.d.mts +42 -43
  155. package/dist/components/heading/heading.props.d.mts.map +1 -1
  156. package/dist/components/heading/heading.props.d.ts +42 -43
  157. package/dist/components/heading/heading.props.d.ts.map +1 -1
  158. package/dist/components/heading/heading.props.js +9 -9
  159. package/dist/components/heading/heading.props.js.map +2 -2
  160. package/dist/components/heading.css +127 -104
  161. package/dist/components/hover-card.css +5 -2
  162. package/dist/components/icon/Icon.cjs +3 -0
  163. package/dist/components/icon/Icon.cjs.map +2 -2
  164. package/dist/components/icon/Icon.d.cts +5 -1
  165. package/dist/components/icon/Icon.d.cts.map +1 -1
  166. package/dist/components/icon/Icon.d.mts +5 -1
  167. package/dist/components/icon/Icon.d.mts.map +1 -1
  168. package/dist/components/icon/Icon.d.ts +5 -1
  169. package/dist/components/icon/Icon.d.ts.map +1 -1
  170. package/dist/components/icon/Icon.js +4 -0
  171. package/dist/components/icon/Icon.js.map +2 -2
  172. package/dist/components/icon/icons.cjs +2 -0
  173. package/dist/components/icon/icons.cjs.map +2 -2
  174. package/dist/components/icon/icons.d.cts +5 -0
  175. package/dist/components/icon/icons.d.cts.map +1 -1
  176. package/dist/components/icon/icons.d.mts +5 -0
  177. package/dist/components/icon/icons.d.mts.map +1 -1
  178. package/dist/components/icon/icons.d.ts +5 -0
  179. package/dist/components/icon/icons.d.ts.map +1 -1
  180. package/dist/components/icon/icons.js +2 -0
  181. package/dist/components/icon/icons.js.map +2 -2
  182. package/dist/components/index.cjs +1 -0
  183. package/dist/components/index.cjs.map +2 -2
  184. package/dist/components/index.d.cts +1 -0
  185. package/dist/components/index.d.cts.map +1 -1
  186. package/dist/components/index.d.mts +1 -0
  187. package/dist/components/index.d.mts.map +1 -1
  188. package/dist/components/index.d.ts +1 -0
  189. package/dist/components/index.d.ts.map +1 -1
  190. package/dist/components/index.js +1 -0
  191. package/dist/components/index.js.map +2 -2
  192. package/dist/components/label.css +3 -0
  193. package/dist/components/link.css +33 -97
  194. package/dist/components/notification-center.css +49 -9
  195. package/dist/components/notificationCenter/NotificationCenter.cjs +21 -16
  196. package/dist/components/notificationCenter/NotificationCenter.cjs.map +2 -2
  197. package/dist/components/notificationCenter/NotificationCenter.d.cts.map +1 -1
  198. package/dist/components/notificationCenter/NotificationCenter.d.mts.map +1 -1
  199. package/dist/components/notificationCenter/NotificationCenter.d.ts.map +1 -1
  200. package/dist/components/notificationCenter/NotificationCenter.js +22 -17
  201. package/dist/components/notificationCenter/NotificationCenter.js.map +2 -2
  202. package/dist/components/pills/Pills.cjs +1 -1
  203. package/dist/components/pills/Pills.cjs.map +2 -2
  204. package/dist/components/pills/Pills.js +2 -2
  205. package/dist/components/pills/Pills.js.map +2 -2
  206. package/dist/components/pills.css +6 -0
  207. package/dist/components/popover.css +45 -6
  208. package/dist/components/prose.css +3 -3
  209. package/dist/components/qr-code.css +5 -2
  210. package/dist/components/qrCode/QrCode.cjs +14 -11
  211. package/dist/components/qrCode/QrCode.cjs.map +2 -2
  212. package/dist/components/qrCode/QrCode.d.cts.map +1 -1
  213. package/dist/components/qrCode/QrCode.d.mts.map +1 -1
  214. package/dist/components/qrCode/QrCode.d.ts.map +1 -1
  215. package/dist/components/qrCode/QrCode.js +14 -11
  216. package/dist/components/qrCode/QrCode.js.map +2 -2
  217. package/dist/components/resizable.css +20 -4
  218. package/dist/components/rich-text-editor.css +50 -14
  219. package/dist/components/richTextEditor/EditorTools.cjs +226 -0
  220. package/dist/components/richTextEditor/EditorTools.cjs.map +7 -0
  221. package/dist/components/richTextEditor/EditorTools.d.cts +22 -0
  222. package/dist/components/richTextEditor/EditorTools.d.cts.map +1 -0
  223. package/dist/components/richTextEditor/EditorTools.d.mts +22 -0
  224. package/dist/components/richTextEditor/EditorTools.d.mts.map +1 -0
  225. package/dist/components/richTextEditor/EditorTools.d.ts +22 -0
  226. package/dist/components/richTextEditor/EditorTools.d.ts.map +1 -0
  227. package/dist/components/richTextEditor/EditorTools.js +196 -0
  228. package/dist/components/richTextEditor/EditorTools.js.map +7 -0
  229. package/dist/components/richTextEditor/MentionSuggestions.cjs +96 -0
  230. package/dist/components/richTextEditor/MentionSuggestions.cjs.map +7 -0
  231. package/dist/components/richTextEditor/MentionSuggestions.d.cts +7 -0
  232. package/dist/components/richTextEditor/MentionSuggestions.d.cts.map +1 -0
  233. package/dist/components/richTextEditor/MentionSuggestions.d.mts +7 -0
  234. package/dist/components/richTextEditor/MentionSuggestions.d.mts.map +1 -0
  235. package/dist/components/richTextEditor/MentionSuggestions.d.ts +7 -0
  236. package/dist/components/richTextEditor/MentionSuggestions.d.ts.map +1 -0
  237. package/dist/components/richTextEditor/MentionSuggestions.js +66 -0
  238. package/dist/components/richTextEditor/MentionSuggestions.js.map +7 -0
  239. package/dist/components/richTextEditor/RichTextEditor.cjs +53 -206
  240. package/dist/components/richTextEditor/RichTextEditor.cjs.map +3 -3
  241. package/dist/components/richTextEditor/RichTextEditor.d.cts +17 -7
  242. package/dist/components/richTextEditor/RichTextEditor.d.cts.map +1 -1
  243. package/dist/components/richTextEditor/RichTextEditor.d.mts +17 -7
  244. package/dist/components/richTextEditor/RichTextEditor.d.mts.map +1 -1
  245. package/dist/components/richTextEditor/RichTextEditor.d.ts +17 -7
  246. package/dist/components/richTextEditor/RichTextEditor.d.ts.map +1 -1
  247. package/dist/components/richTextEditor/RichTextEditor.js +53 -206
  248. package/dist/components/richTextEditor/RichTextEditor.js.map +3 -3
  249. package/dist/components/richTextEditor/editorTokens.cjs +75 -0
  250. package/dist/components/richTextEditor/editorTokens.cjs.map +7 -0
  251. package/dist/components/richTextEditor/editorTokens.d.cts +21 -0
  252. package/dist/components/richTextEditor/editorTokens.d.cts.map +1 -0
  253. package/dist/components/richTextEditor/editorTokens.d.mts +21 -0
  254. package/dist/components/richTextEditor/editorTokens.d.mts.map +1 -0
  255. package/dist/components/richTextEditor/editorTokens.d.ts +21 -0
  256. package/dist/components/richTextEditor/editorTokens.d.ts.map +1 -0
  257. package/dist/components/richTextEditor/editorTokens.js +55 -0
  258. package/dist/components/richTextEditor/editorTokens.js.map +7 -0
  259. package/dist/components/scroll-area.css +12 -0
  260. package/dist/components/scrollArea/ScrollArea.cjs +12 -1
  261. package/dist/components/scrollArea/ScrollArea.cjs.map +2 -2
  262. package/dist/components/scrollArea/ScrollArea.d.cts.map +1 -1
  263. package/dist/components/scrollArea/ScrollArea.d.mts.map +1 -1
  264. package/dist/components/scrollArea/ScrollArea.d.ts.map +1 -1
  265. package/dist/components/scrollArea/ScrollArea.js +12 -1
  266. package/dist/components/scrollArea/ScrollArea.js.map +2 -2
  267. package/dist/components/segmentedControl/SegmentedControl.cjs +2 -2
  268. package/dist/components/segmentedControl/SegmentedControl.cjs.map +2 -2
  269. package/dist/components/segmentedControl/SegmentedControl.d.cts.map +1 -1
  270. package/dist/components/segmentedControl/SegmentedControl.d.mts.map +1 -1
  271. package/dist/components/segmentedControl/SegmentedControl.d.ts.map +1 -1
  272. package/dist/components/segmentedControl/SegmentedControl.js +2 -2
  273. package/dist/components/segmentedControl/SegmentedControl.js.map +2 -2
  274. package/dist/components/separator.css +3 -9
  275. package/dist/components/sidebar/Sidebar.cjs +12 -4
  276. package/dist/components/sidebar/Sidebar.cjs.map +2 -2
  277. package/dist/components/sidebar/Sidebar.d.cts +4 -1
  278. package/dist/components/sidebar/Sidebar.d.cts.map +1 -1
  279. package/dist/components/sidebar/Sidebar.d.mts +4 -1
  280. package/dist/components/sidebar/Sidebar.d.mts.map +1 -1
  281. package/dist/components/sidebar/Sidebar.d.ts +4 -1
  282. package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
  283. package/dist/components/sidebar/Sidebar.js +12 -4
  284. package/dist/components/sidebar/Sidebar.js.map +2 -2
  285. package/dist/components/sidebar/sidebar.props.cjs +8 -1
  286. package/dist/components/sidebar/sidebar.props.cjs.map +2 -2
  287. package/dist/components/sidebar/sidebar.props.d.cts +9 -1
  288. package/dist/components/sidebar/sidebar.props.d.cts.map +1 -1
  289. package/dist/components/sidebar/sidebar.props.d.mts +9 -1
  290. package/dist/components/sidebar/sidebar.props.d.mts.map +1 -1
  291. package/dist/components/sidebar/sidebar.props.d.ts +9 -1
  292. package/dist/components/sidebar/sidebar.props.d.ts.map +1 -1
  293. package/dist/components/sidebar/sidebar.props.js +8 -1
  294. package/dist/components/sidebar/sidebar.props.js.map +2 -2
  295. package/dist/components/sidebar.css +28 -0
  296. package/dist/components/sonner.css +78 -16
  297. package/dist/components/stepper.css +23 -12
  298. package/dist/components/tab-nav.css +25 -13
  299. package/dist/components/tabNav/TabNav.cjs +1 -4
  300. package/dist/components/tabNav/TabNav.cjs.map +2 -2
  301. package/dist/components/tabNav/TabNav.d.cts.map +1 -1
  302. package/dist/components/tabNav/TabNav.d.mts.map +1 -1
  303. package/dist/components/tabNav/TabNav.d.ts.map +1 -1
  304. package/dist/components/tabNav/TabNav.js +1 -4
  305. package/dist/components/tabNav/TabNav.js.map +2 -2
  306. package/dist/components/table-of-contents.css +12 -2
  307. package/dist/components/tableOfContents/TableOfContents.cjs +11 -4
  308. package/dist/components/tableOfContents/TableOfContents.cjs.map +2 -2
  309. package/dist/components/tableOfContents/TableOfContents.d.cts.map +1 -1
  310. package/dist/components/tableOfContents/TableOfContents.d.mts.map +1 -1
  311. package/dist/components/tableOfContents/TableOfContents.d.ts.map +1 -1
  312. package/dist/components/tableOfContents/TableOfContents.js +11 -4
  313. package/dist/components/tableOfContents/TableOfContents.js.map +2 -2
  314. package/dist/components/tabs/Tabs.cjs +39 -54
  315. package/dist/components/tabs/Tabs.cjs.map +2 -2
  316. package/dist/components/tabs/Tabs.d.cts.map +1 -1
  317. package/dist/components/tabs/Tabs.d.mts.map +1 -1
  318. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  319. package/dist/components/tabs/Tabs.js +39 -54
  320. package/dist/components/tabs/Tabs.js.map +2 -2
  321. package/dist/components/tabs.css +52 -7
  322. package/dist/components/text/text.props.cjs +9 -9
  323. package/dist/components/text/text.props.cjs.map +2 -2
  324. package/dist/components/text/text.props.d.cts +42 -43
  325. package/dist/components/text/text.props.d.cts.map +1 -1
  326. package/dist/components/text/text.props.d.mts +42 -43
  327. package/dist/components/text/text.props.d.mts.map +1 -1
  328. package/dist/components/text/text.props.d.ts +42 -43
  329. package/dist/components/text/text.props.d.ts.map +1 -1
  330. package/dist/components/text/text.props.js +9 -9
  331. package/dist/components/text/text.props.js.map +2 -2
  332. package/dist/components/text/typography.props.cjs +32 -0
  333. package/dist/components/text/typography.props.cjs.map +7 -0
  334. package/dist/components/text/typography.props.d.cts +3 -0
  335. package/dist/components/text/typography.props.d.cts.map +1 -0
  336. package/dist/components/text/typography.props.d.mts +3 -0
  337. package/dist/components/text/typography.props.d.mts.map +1 -0
  338. package/dist/components/text/typography.props.d.ts +3 -0
  339. package/dist/components/text/typography.props.d.ts.map +1 -0
  340. package/dist/components/text/typography.props.js +12 -0
  341. package/dist/components/text/typography.props.js.map +7 -0
  342. package/dist/components/text-field.css +1 -0
  343. package/dist/components/text.css +41 -6
  344. package/dist/components/theme-panel.css +6 -0
  345. package/dist/components/toast/Toast.cjs +3 -1
  346. package/dist/components/toast/Toast.cjs.map +2 -2
  347. package/dist/components/toast/Toast.d.cts.map +1 -1
  348. package/dist/components/toast/Toast.d.mts.map +1 -1
  349. package/dist/components/toast/Toast.d.ts.map +1 -1
  350. package/dist/components/toast/Toast.js +3 -1
  351. package/dist/components/toast/Toast.js.map +2 -2
  352. package/dist/components/toast.css +36 -36
  353. package/dist/components/toggle-tip.css +58 -9
  354. package/dist/components/toggleTip/ToggleTip.cjs +9 -5
  355. package/dist/components/toggleTip/ToggleTip.cjs.map +2 -2
  356. package/dist/components/toggleTip/ToggleTip.d.cts.map +1 -1
  357. package/dist/components/toggleTip/ToggleTip.d.mts.map +1 -1
  358. package/dist/components/toggleTip/ToggleTip.d.ts.map +1 -1
  359. package/dist/components/toggleTip/ToggleTip.js +9 -5
  360. package/dist/components/toggleTip/ToggleTip.js.map +2 -2
  361. package/dist/components/toolbar/Toolbar.cjs +10 -7
  362. package/dist/components/toolbar/Toolbar.cjs.map +2 -2
  363. package/dist/components/toolbar/Toolbar.js +10 -7
  364. package/dist/components/toolbar/Toolbar.js.map +2 -2
  365. package/dist/components/toolbar.css +58 -4
  366. package/dist/components/tooltip.css +9 -5
  367. package/dist/components/tree-view.css +17 -3
  368. package/dist/components/treeView/TreeView.cjs +76 -21
  369. package/dist/components/treeView/TreeView.cjs.map +2 -2
  370. package/dist/components/treeView/TreeView.d.cts.map +1 -1
  371. package/dist/components/treeView/TreeView.d.mts.map +1 -1
  372. package/dist/components/treeView/TreeView.d.ts.map +1 -1
  373. package/dist/components/treeView/TreeView.js +76 -21
  374. package/dist/components/treeView/TreeView.js.map +2 -2
  375. package/dist/components.css +1 -0
  376. package/dist/docs/README.md +1 -0
  377. package/dist/docs/component-contract.md +4 -3
  378. package/dist/docs/component-index.json +9 -1
  379. package/dist/docs/components/accordion.md +5 -36
  380. package/dist/docs/components/alert.md +17 -10
  381. package/dist/docs/components/article-nodes.md +59 -2
  382. package/dist/docs/components/aspect-ratio.md +3 -26
  383. package/dist/docs/components/banner.md +7 -7
  384. package/dist/docs/components/blockquote.md +15 -14
  385. package/dist/docs/components/bottom-dock.md +146 -0
  386. package/dist/docs/components/box.md +3 -34
  387. package/dist/docs/components/breadcrumb.md +13 -8
  388. package/dist/docs/components/callout.md +18 -7
  389. package/dist/docs/components/card.md +9 -2
  390. package/dist/docs/components/code.md +33 -220
  391. package/dist/docs/components/collapsible.md +11 -35
  392. package/dist/docs/components/command.md +2 -0
  393. package/dist/docs/components/comment-thread.md +51 -1
  394. package/dist/docs/components/config-drawer.md +72 -171
  395. package/dist/docs/components/container.md +2 -0
  396. package/dist/docs/components/context-menu.md +19 -5
  397. package/dist/docs/components/dialog.md +3 -1
  398. package/dist/docs/components/drawer.md +17 -6
  399. package/dist/docs/components/dropdown-menu.md +11 -2
  400. package/dist/docs/components/em.md +1 -1
  401. package/dist/docs/components/file-upload.md +13 -7
  402. package/dist/docs/components/floating-panel.md +79 -285
  403. package/dist/docs/components/form.md +4 -0
  404. package/dist/docs/components/grid.md +11 -60
  405. package/dist/docs/components/heading.md +35 -32
  406. package/dist/docs/components/hover-card.md +9 -1
  407. package/dist/docs/components/kbd.md +2 -0
  408. package/dist/docs/components/label.md +11 -9
  409. package/dist/docs/components/link.md +31 -209
  410. package/dist/docs/components/notification-center.md +24 -14
  411. package/dist/docs/components/page-header.md +2 -0
  412. package/dist/docs/components/pagination.md +4 -0
  413. package/dist/docs/components/pills.md +13 -4
  414. package/dist/docs/components/popover.md +10 -3
  415. package/dist/docs/components/prose.md +9 -0
  416. package/dist/docs/components/qr-code.md +12 -12
  417. package/dist/docs/components/quote.md +9 -4
  418. package/dist/docs/components/resizable.md +26 -18
  419. package/dist/docs/components/rich-text-editor.md +68 -18
  420. package/dist/docs/components/scroll-area.md +17 -9
  421. package/dist/docs/components/section.md +3 -38
  422. package/dist/docs/components/segmented-control.md +1 -1
  423. package/dist/docs/components/segmented-meter.md +9 -0
  424. package/dist/docs/components/separator.md +10 -46
  425. package/dist/docs/components/sidebar.md +17 -3
  426. package/dist/docs/components/sonner.md +25 -16
  427. package/dist/docs/components/stepper.md +8 -33
  428. package/dist/docs/components/strong.md +1 -1
  429. package/dist/docs/components/tab-nav.md +33 -96
  430. package/dist/docs/components/table-of-contents.md +8 -2
  431. package/dist/docs/components/tabs.md +19 -50
  432. package/dist/docs/components/text-field.md +1 -0
  433. package/dist/docs/components/text.md +34 -28
  434. package/dist/docs/components/theme-panel.md +3 -28
  435. package/dist/docs/components/theme.md +7 -3
  436. package/dist/docs/components/toast.md +27 -13
  437. package/dist/docs/components/toggle-tip.md +58 -241
  438. package/dist/docs/components/toolbar.md +16 -39
  439. package/dist/docs/components/tooltip.md +13 -7
  440. package/dist/docs/components/tree-view.md +22 -55
  441. package/dist/generated/tokens.cjs +1 -0
  442. package/dist/generated/tokens.cjs.map +2 -2
  443. package/dist/generated/tokens.d.cts.map +1 -1
  444. package/dist/generated/tokens.d.mts.map +1 -1
  445. package/dist/generated/tokens.d.ts.map +1 -1
  446. package/dist/generated/tokens.js +1 -0
  447. package/dist/generated/tokens.js.map +2 -2
  448. package/dist/styles.css +1632 -1300
  449. package/dist/tokens.css +344 -362
  450. package/package.json +1 -1
@@ -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":"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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.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":"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"}
@@ -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
  }
@@ -3,10 +3,13 @@
3
3
  .dsx-blockquote {
4
4
  box-sizing: border-box;
5
5
  margin: 0;
6
- padding-left: var(--dsx-space-lg);
7
- border-left: var(--dsx-border-width-xl) solid var(--dsx-color-primary);
6
+ padding-inline-start: var(--dsx-space-lg);
7
+ border-inline-start: var(--dsx-boundary-divider-width) solid var(--dsx-color-accent-border);
8
8
  font-family: var(--dsx-typography-body-large-font-family), sans-serif;
9
9
  font-size: var(--dsx-typography-body-large-font-size);
10
+ font-weight: var(--dsx-typography-body-large-font-weight);
11
+ letter-spacing: var(--dsx-typography-body-large-letter-spacing);
12
+ font-variation-settings: var(--dsx-typography-body-large-font-variation-settings);
10
13
  font-style: italic;
11
14
  line-height: var(--dsx-typography-body-large-line-height);
12
15
  color: var(--dsx-color-on-surface-variant);
@@ -14,10 +17,10 @@
14
17
 
15
18
  .dsx-blockquote--muted {
16
19
  color: var(--dsx-color-on-surface-variant);
17
- border-left-color: var(--dsx-color-outline-variant);
20
+ border-inline-start-color: var(--dsx-color-outline-variant);
18
21
  }
19
22
 
20
23
  .dsx-blockquote--inverse {
21
24
  color: var(--dsx-color-on-inverse-background);
22
- border-left-color: var(--dsx-color-on-inverse-background);
25
+ border-inline-start-color: var(--dsx-color-on-inverse-background);
23
26
  }
@@ -0,0 +1,132 @@
1
+ /* BottomDock — a floating pill of primary destinations for phone widths.
2
+ Tokens only. No breakpoints: the app renders the dock at phone widths. */
3
+
4
+ .dsx-bottom-dock {
5
+ position: fixed;
6
+ inset-inline: var(--dsx-space-3);
7
+ inset-block-end: calc(var(--dsx-space-3) + var(--dsx-safe-area-inset-bottom, 0px));
8
+ z-index: var(--dsx-z-index-fixed);
9
+ display: flex;
10
+ align-items: center;
11
+ justify-content: space-around;
12
+ gap: var(--dsx-space-xs);
13
+ padding: var(--dsx-space-xs);
14
+ box-sizing: border-box;
15
+ border: var(--dsx-border-width-sm) solid var(--dsx-panel-border-color);
16
+ border-radius: var(--dsx-rounded-xl);
17
+ background: var(--dsx-color-panel-translucent);
18
+ backdrop-filter: var(--dsx-effect-panel-glass-backdrop-filter);
19
+ box-shadow: var(--dsx-panel-shadow);
20
+ color: var(--dsx-color-on-surface);
21
+ }
22
+
23
+ .dsx-bottom-dock:where([data-placement='contained']) {
24
+ position: absolute;
25
+ }
26
+
27
+ .dsx-bottom-dock__item {
28
+ position: relative;
29
+ display: inline-flex;
30
+ align-items: center;
31
+ justify-content: center;
32
+ gap: var(--dsx-space-xs);
33
+ min-block-size: calc(var(--dsx-size-xl) + var(--dsx-space-xs));
34
+ min-inline-size: calc(var(--dsx-size-xl) + var(--dsx-space-xs));
35
+ padding: 0 var(--dsx-space-3);
36
+ box-sizing: border-box;
37
+ border: 0;
38
+ border-radius: var(--dsx-rounded-lg);
39
+ background: transparent;
40
+ color: var(--dsx-color-on-surface-variant);
41
+ font: inherit;
42
+ text-decoration: none;
43
+ cursor: pointer;
44
+ transition:
45
+ background-color var(--dsx-motion-duration-fast) var(--dsx-motion-easing-standard),
46
+ color var(--dsx-motion-duration-fast) var(--dsx-motion-easing-standard);
47
+ }
48
+
49
+ /* Hover only on inactive items, so an active item never loses its container to the ghost wash. */
50
+ .dsx-bottom-dock__item:where(:not([data-active='true'])):hover {
51
+ background: var(--dsx-effect-hover-ghost);
52
+ color: var(--dsx-color-on-surface);
53
+ }
54
+
55
+ .dsx-bottom-dock__item:focus-visible {
56
+ outline: none;
57
+ box-shadow: var(--dsx-shadow-focus-ring);
58
+ }
59
+
60
+ .dsx-bottom-dock__item:where([data-active='true']) {
61
+ background: var(--dsx-color-primary-container);
62
+ color: var(--dsx-color-on-primary-container);
63
+ }
64
+
65
+ /* labels="always": icon over label, items share the width (Material 3 / HIG). */
66
+ .dsx-bottom-dock:where([data-labels='always']) .dsx-bottom-dock__item {
67
+ flex: 1 1 0;
68
+ flex-direction: column;
69
+ gap: 0;
70
+ padding: var(--dsx-space-xs) var(--dsx-space-sm);
71
+ }
72
+
73
+ .dsx-bottom-dock__icon {
74
+ position: relative;
75
+ display: inline-flex;
76
+ align-items: center;
77
+ justify-content: center;
78
+ inline-size: var(--dsx-size-md);
79
+ block-size: var(--dsx-size-md);
80
+ }
81
+
82
+ .dsx-bottom-dock__label {
83
+ font-family: var(--dsx-typography-label-small-font-family), sans-serif;
84
+ font-size: var(--dsx-typography-label-small-font-size);
85
+ font-weight: var(--dsx-typography-label-small-font-weight);
86
+ line-height: var(--dsx-typography-label-small-line-height);
87
+ letter-spacing: var(--dsx-typography-label-small-letter-spacing);
88
+ font-variation-settings: var(--dsx-typography-label-small-font-variation-settings);
89
+ text-transform: var(--dsx-typography-label-small-text-transform);
90
+ text-decoration: var(--dsx-typography-label-small-text-decoration);
91
+ white-space: nowrap;
92
+ /* A long label truncates inside its item instead of poking out of the pill on a narrow phone. */
93
+ min-inline-size: 0;
94
+ max-inline-size: 100%;
95
+ overflow: hidden;
96
+ text-overflow: ellipsis;
97
+ }
98
+
99
+ /* Place the badge inside BottomDock.Icon to sit on the glyph; outside it, it sits on the item corner. */
100
+ .dsx-bottom-dock__badge {
101
+ position: absolute;
102
+ inset-block-start: calc(var(--dsx-space-xs) * -1);
103
+ inset-inline-end: calc(var(--dsx-space-xs) * -1);
104
+ display: inline-flex;
105
+ align-items: center;
106
+ justify-content: center;
107
+ min-inline-size: var(--dsx-space-md);
108
+ block-size: var(--dsx-space-md);
109
+ padding: 0 var(--dsx-space-xs);
110
+ box-sizing: border-box;
111
+ border-radius: var(--dsx-rounded-full);
112
+ background: var(--dsx-color-primary);
113
+ color: var(--dsx-color-on-primary);
114
+ font-family: var(--dsx-typography-label-small-font-family), sans-serif;
115
+ font-size: var(--dsx-typography-label-small-font-size);
116
+ font-weight: var(--dsx-typography-label-small-font-weight);
117
+ line-height: var(--dsx-typography-label-small-line-height);
118
+ pointer-events: none;
119
+ }
120
+
121
+ /* An empty badge is a dot. */
122
+ .dsx-bottom-dock__badge:empty {
123
+ min-inline-size: var(--dsx-space-sm);
124
+ block-size: var(--dsx-space-sm);
125
+ padding: 0;
126
+ }
127
+
128
+ @media (prefers-reduced-motion: reduce) {
129
+ .dsx-bottom-dock__item {
130
+ transition: none;
131
+ }
132
+ }