@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
@@ -16,7 +16,7 @@ depends_on: []
16
16
 
17
17
  ## Purpose
18
18
 
19
- A bordered inline notice: an icon, a message, and an optional trailing action column. Distinct from `Alert` (in-page flow banner) and `Toast`/`Sonner` (transient) — `Callout` is a persistent, bordered box, most often used for contextual tips, warnings, or dismissible product notices.
19
+ A bordered inline notice: an icon, a message, and an optional action row. Distinct from `Alert` (in-page flow banner) and `Toast`/`Sonner` (transient) — `Callout` is a persistent, bordered box, most often used for contextual tips, warnings, or dismissible product notices.
20
20
 
21
21
  ## Anatomy & slots
22
22
 
@@ -26,10 +26,10 @@ A bordered inline notice: an icon, a message, and an optional trailing action co
26
26
 
27
27
  | Slot | Element | Renders | Notes |
28
28
  |---|---|---|---|
29
- | `Callout.Root` | `<div>` | `dsx-callout` | 3-column grid: `auto 1fr auto` (icon, text, actions). |
29
+ | `Callout.Root` | `<div>` | `dsx-callout` | Two-column grid: icon plus minmax(0, 1fr) content. Title, text and actions stack in column 2. |
30
30
  | `Callout.Icon` | `<div>` | `dsx-callout__icon` | Grid column 1. Sized by the `size` prop. |
31
31
  | `Callout.Text` | `<p>` | `dsx-callout__text` | Grid column 2. The message body. |
32
- | `Callout.Actions` | `<div>` | `dsx-callout__actions` | Grid column 3. **Optional** — a callout with no actions renders correctly; the 3rd grid track collapses to 0 width when nothing occupies it. Holds a dismiss button and/or other actions. |
32
+ | `Callout.Actions` | `<div>` | `dsx-callout__actions` | Optional wrapping action row in content column 2, below title/text. Without an Icon, all content uses column 1. |
33
33
 
34
34
  ## Props contract
35
35
 
@@ -94,7 +94,9 @@ Rules that apply to this row:
94
94
 
95
95
  Rules:
96
96
 
97
- - No raw color, spacing, or radius values in `callout.css`. The action column introduced no new tokens — it reuses `--dsx-space-xs` for its internal gap.
97
+ - No raw color, spacing, or radius values in `callout.css`. The action row introduces no new tokens — it reuses `--dsx-space-xs` for its internal gap.
98
+
99
+ When no `Callout.Icon` is rendered, Title, Text and Actions occupy the first grid column. No empty icon gutter is reserved.
98
100
 
99
101
  ## Motion contract
100
102
 
@@ -178,7 +180,7 @@ Rules:
178
180
 
179
181
  **State boundaries:**
180
182
 
181
- - Owned by `Callout`: the root class, variant/size modifier classes, the grid layout, and the three slot classes.
183
+ - Owned by `Callout`: the root class, variant/size modifier classes, the grid layout, and its slot classes.
182
184
  - Owned by the consumer: the message content, which action(s) render inside `Callout.Actions`, and any dismissal state/persistence (e.g. per-user dismissal tracked on the backend, per the `dashboard_notices` ask this slot was added for).
183
185
 
184
186
  **Boundary rules:**
@@ -193,7 +195,7 @@ Rules:
193
195
  ### Root board
194
196
 
195
197
  - **Name**: `Components / Callout`.
196
- - **Layout**: `Grid`, columns `auto 1fr auto`, gap per `size`.
198
+ - **Layout**: `Grid`, columns `auto minmax(0, 1fr)`, gap per `size`.
197
199
 
198
200
  ### Layer tree
199
201
 
@@ -217,4 +219,13 @@ Rules:
217
219
 
218
220
  - [ ] Token bindings resolve at the values `DESIGN.md` describes.
219
221
  - [ ] Component is promoted to Main Component under `Components`.
220
- - [ ] Grid renders correctly with `Actions` present and absent (3rd column collapses to 0 width when empty).
222
+ - [ ] Grid renders with optional Title, Icon and Actions; actions wrap below copy.
223
+
224
+ ## Overlay review composition
225
+
226
+ `Callout.Title` is an existing h3 slot with class `dsx-callout__title`. Its
227
+ heading, Text and wrapping Actions stack beside an Icon that spans the rows.
228
+ Without Icon the root becomes a single column. Text has margin=0 and
229
+ min-width=0; long copy wraps. Existing tone values info/warning/success/danger
230
+ select semantic border and icon colors; highContrast uses the high-contrast
231
+ foreground. `/docs/callout` shows all tones and real dismiss/restore actions.
@@ -132,9 +132,9 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
132
132
  | Surface (filled) | `var(--dsx-color-surface)` | Filled surface (no shadow) |
133
133
  | Surface (outline) | `transparent` (plus `--dsx-effect-panel-solid-backdrop-filter`) | Compatibility outline surface |
134
134
  | Active / selected surface | `var(--dsx-color-accent-surface)` | Active / selected card |
135
- | Active / selected border | `var(--dsx-color-accent-indicator)` | Active / selected card edge |
135
+ | Active / selected edge | `var(--dsx-boundary-selected-ring)` | Local accent-indicator 2px inset ring on every variant, including legacy outline; physical border is transparent, including under an outer light Theme |
136
136
  | High-contrast surface | `var(--dsx-color-high-contrast-container)` | High-contrast card |
137
- | High-contrast border | `var(--dsx-color-high-contrast-border)` | High-contrast card edge |
137
+ | High-contrast edge | `var(--dsx-boundary-high-contrast-ring)` | Local 2px inset ring; physical border is transparent |
138
138
  | High-contrast text | `var(--dsx-color-high-contrast)` | High-contrast text |
139
139
  | Hover border | `var(--dsx-color-outline-variant)` | Hover border color |
140
140
  | Hover background | `var(--dsx-effect-hover-layer)` over surface-raised | Hover surface |
@@ -148,6 +148,13 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
148
148
 
149
149
  The component is static. Hover state changes are instant; no transition is applied.
150
150
 
151
+ Selected and high-contrast edges survive hover. For the color-role repair,
152
+ the owning spec explicitly permits the narrow `baseCard.css` selector change:
153
+ exclude selected/high-contrast cards from generic hover and static-accent
154
+ edge/hover paint, and exclude selected cards from the light glass shadow override. This
155
+ keeps the shared engine from replacing their inset rings; Alert and FileUpload
156
+ behavior is unchanged by these Card-only exclusions.
157
+
151
158
  ## Accessibility
152
159
 
153
160
  **Roles:**
@@ -8,256 +8,69 @@ depends_on: []
8
8
 
9
9
  # Code
10
10
 
11
- > Consumer note: this document describes public intent and contracts; the package TypeScript declarations are the exact API.
11
+ > Source of truth: the package source at `package_path`. The spec mirrors source in the same change.
12
12
 
13
13
  ## Purpose
14
14
 
15
- An inline monospace code token that renders a `<code>` element with a `variant` background and border treatment, a `tone` color override, a `size` scale, an optional `color` accent, a `highContrast` toggle, and the shared `asChild` infra. For multi-line code, compose inside a `<pre>`.
15
+ Monospace inline code with four treatments, three genuine sizes, optional accent foreground, tone and high contrast. Multi-line code uses a consumer-owned `pre > Code` composition and an overflow container.
16
16
 
17
17
  ## Anatomy & slots
18
18
 
19
- **Parent:** `Code` (no compound; flat polymorphic export).
20
-
21
- **Slots:**
22
-
23
- No slots: flat export. The component renders a single `<code>` host element (or the consumer's host element when `as` or `asChild` is set) with the `dsx-code` root class, the variant modifier class, and any `tone` modifier class.
19
+ A single `<code>` root with `dsx-code`; no compound slots. `asChild` slots a consumer host. Native code attributes and refs are forwarded.
24
20
 
25
21
  ## Props contract
26
22
 
27
23
  | Prop | Type | Default | Required | Description | Responsive |
28
24
  |---|---|---|---|---|---|
29
- | `variant` | `'solid' \| 'soft' \| 'outline' \| 'ghost'` | `'soft'` | no | Code treatment. Writes the `dsx-code--{variant}` modifier class and the `data-variant` attribute. `solid` paints a primary background; `soft` paints a sunken surface with an outline; `outline` paints a transparent background with an inset outline; `ghost` paints nothing. | no |
30
- | `tone` | `'default' \| 'muted' \| 'inverse'` | `'default'` | no | Tone modifier. Writes `dsx-code--{tone}` for `muted` and `inverse`. The CSS combines `dsx-code--solid.dsx-code--muted` and `dsx-code--soft.dsx-code--inverse` for tone-on-variant pairings. | no |
31
- | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | no | Code cap size. Writes the `data-size` attribute. | no |
32
- | `color` | `string` | `undefined` | no | Free-form accent color. Writes the `data-accent-color` attribute. The component is not opinionated about the value; consumers that pass it get the `data-accent-color` attribute for downstream CSS targeting. | no |
33
- | `highContrast` | `boolean` | `false` | no | When `true`, writes `data-high-contrast="true"`. | no |
34
- | `asChild` | `boolean` | `false` | no | Renders the host through `Slot` from `@radix-ui/react-slot`; consumer supplies the host element. | no |
35
- | `className` | `string` | `undefined` | no | Extra classes appended to `dsx-code`. | no |
36
- | `style` | `React.CSSProperties` | `undefined` | no | Extra inline style forwarded to the host element. | no |
37
- | `children` | `React.ReactNode` | `undefined` | no | Code body (typically a short token, a function name, or a small literal). | no |
38
-
39
- Rules that apply to this row:
40
-
41
- - `Code` extends `Omit<ComponentPropsWithoutRef<'code'>, 'color'>` because `color` is redefined by the prop def bag.
42
- - `variant`, `tone`, `size`, `color`, `highContrast`, and `asChild` flow through `extractProps` and the prop def bag.
43
- - `data-variant`, `data-size`, `data-accent-color`, and `data-high-contrast` are written alongside the modifier classes so the CSS can target them through attribute selectors.
44
- - The `color` prop in the prop def has `default: undefined` and an empty `values: [] as const` array, so the runtime accepts any string but the prop def does not enumerate values. The TS type resolves to `string | undefined`.
25
+ | `variant` | `'solid' \| 'soft' \| 'outline' \| 'ghost'` | `'soft'` | no | Writes `dsx-code--{variant}` and `data-variant`. | no |
26
+ | `tone` | `'default' \| 'muted' \| 'inverse'` | `'default'` | no | Non-default tones write `dsx-code--{tone}`. | no |
27
+ | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | no | Writes `data-size`; small is 0.85×, default 1× and large 1.15× the code font-size token. Inline gutter remains compact at all sizes; ghost has none. | no |
28
+ | `color` | `'rift' \| 'warp' \| 'ray' \| string` | `undefined` | no | Writes `data-accent-color`; recognized accents resolve semantic tokens, including astral/spark. Unknown strings retain ambient tokens. | no |
29
+ | `highContrast` | `boolean` | `false` | no | Writes `data-high-contrast="true"` and paints a real contrast treatment. | no |
30
+ | `asChild` | `boolean` | `false` | no | Slot the consumer host. | no |
31
+ | `className` | `string` | `undefined` | no | Additional classes. | no |
32
+ | `style` | `React.CSSProperties` | `undefined` | no | Forwarded style. | no |
33
+ | `children` | `React.ReactNode` | `undefined` | no | Code content. | no |
45
34
 
46
35
  ## CSS class contract
47
36
 
48
- **Root class:** `dsx-code`
49
-
50
- **Modifier classes** (driven by the `variant` and `tone` prop defs and the `data-*` attributes):
51
-
52
- | Attribute | Allowed values | Class | CSS file |
53
- |---|---|---|---|
54
- | (class) | `solid`, `soft`, `outline`, `ghost` | `dsx-code--{variant}` | `code.css` |
55
- | (class) | `muted`, `inverse` | `dsx-code--muted`, `dsx-code--inverse` | `code.css` |
56
- | `data-variant` | `solid`, `soft`, `outline`, `ghost` | `.dsx-code[data-variant='{variant}']` | `code.css` |
57
- | `data-size` | `sm`, `md`, `lg` | (CSS contract for size) | n/a |
58
- | `data-accent-color` | any custom string | (no rule in the source CSS) | n/a |
59
- | `data-high-contrast` | `true` | (no rule in the source CSS) | n/a |
60
-
61
- **Slot classes:** none.
62
-
63
- **Responsive behavior:**
64
-
65
- - The component does not write `@media` rules. `size` is single-value only; the prop def is not `responsive: true`. The CSS for `data-size` is left to downstream CSS.
37
+ Root: `dsx-code`. Modifier classes: `dsx-code--solid`, `--soft`, `--outline`, `--ghost`, `--muted`, `--inverse`. Attributes: `data-variant`, `data-size`, `data-accent-color`, `data-high-contrast`. There are no viewport breakpoints.
66
38
 
67
- **Reduced motion:**
68
-
69
- - Code has no motion. No transitions or animations are declared in `code.css`.
39
+ - Soft: contextual neutral wash, normal foreground, no outline. It remains an inline text treatment rather than an input frame.
40
+ - Solid: accent-track fill with accent-contrast foreground. Muted and inverse retain that readable filled pairing.
41
+ - Outline: transparent with an inset outline.
42
+ - Ghost: transparent, no outline or padding at every size.
43
+ - A non-solid explicit color uses accent-indicator, except inverse tone, which preserves its inverse foreground.
44
+ - Soft inverse uses the inverse-background / on-inverse-background pair and no shadow.
45
+ - High contrast: soft uses high-contrast-container / high-contrast; solid uses high-contrast / on-high-contrast; outline and ghost use high-contrast ink. Inverse soft/outline/ghost retain their inverse foreground and surface pairing when high contrast is enabled. The inverse context already supplies the contrasting pair; a normal-surface ink must not replace it.
70
46
 
71
47
  ## Token mapping
72
48
 
73
- Every CSS value the component paints is a `var(--dsx-*)` token.
74
-
75
49
  | Property | Token | Role |
76
50
  |---|---|---|
77
- | Font family | `var(--dsx-typography-code-font-family)` | Monospace stack (token-backed; see rules). |
78
- | Font size | `var(--dsx-typography-code-font-size)` | Default code size. |
79
- | Font weight | `var(--dsx-typography-code-font-weight)` | Code weight. |
80
- | Line height | `var(--dsx-typography-code-line-height)` | Code rhythm. |
81
- | Letter spacing | `var(--dsx-typography-code-letter-spacing)` | Code tracking. |
82
- | Border radius | `var(--dsx-rounded-sm)` | Code cap roundness. |
83
- | Padding | `var(--dsx-space-0-5, 2px) var(--dsx-space-1-5, 6px)` | Inline gutter. |
84
- | Background (soft) | `var(--dsx-color-surface-sunken)` | Soft surface (Direction #3 Q1 pick: sunken, pressed into the page). |
85
- | Border (soft) | `var(--dsx-color-outline-variant)` | Soft outline (via `inset 0 0 0 1px`). |
86
- | Background (solid) | `var(--dsx-color-primary)` | Solid surface. |
87
- | Color (solid) | `var(--dsx-color-on-primary)` | Solid text. |
88
- | Outline (outline) | `var(--dsx-shadow-inset-outline)` | Inset outline. |
89
- | Color (outline) | `var(--dsx-color-on-surface)` | Outline text. |
90
- | Color (ghost) | `var(--dsx-color-on-surface)` | Ghost text. |
91
- | Color (muted) | `var(--dsx-color-on-surface-variant)` | Muted tone. |
92
- | Color (solid + muted) | `color-mix(in srgb, var(--dsx-color-on-primary) 65%, transparent)` | Muted text on solid. |
93
- | Color (inverse) | `var(--dsx-color-on-inverse-background)` | Inverse-context color. |
94
- | Background (soft + inverse) | `color-mix(in srgb, var(--dsx-color-on-high-contrast) 15%, transparent)` | Inverse soft surface. |
95
- | Color (soft + inverse) | `var(--dsx-color-on-high-contrast)` | Inverse soft text. |
51
+ | Typography | `--dsx-typography-code-*` | JetBrains Mono family, font size, weight, line height, tracking, axes, case and decoration. |
52
+ | Small / large font size | code font-size × 0.85 / × 1.15 | Existing scale preserved. |
53
+ | Padding | `--dsx-space-0-5`, `--dsx-space-1-5` | Compact inline gutters at every size; ghost has zero padding. |
54
+ | Radius / outline | `--dsx-rounded-sm` / `--dsx-shadow-inset-outline` | Cap geometry; edge belongs to the outline variant only. |
55
+ | Soft | `--dsx-code-soft-background`, `--dsx-color-on-surface` | Neutral wash from the dedicated gray-alpha-3 effect; also used by the consumer preformatted example. |
56
+ | Solid | `--dsx-color-accent-track`, `--dsx-color-accent-contrast` | Filled code with readable foreground. |
57
+ | Accent / muted / inverse | `--dsx-color-accent-indicator`, `--dsx-color-on-surface-variant`, inverse-background + on-inverse-background | Context roles. |
58
+ | High contrast | high-contrast-container + high-contrast, high-contrast + on-high-contrast | Self-contained soft/solid pairs. |
96
59
 
97
- Rules:
98
-
99
- - The monospace font stack resolves from `var(--dsx-typography-code-font-family)` (the `code` node in `tokens/typography.json`); it is token-backed, not a CSS hard-code.
100
- - The `color-mix` expressions are token-driven; the alpha is encoded in the token, not as a raw value.
60
+ No local alpha mixing or primitive accent ramp reference is authored here. The component bridge references the existing gray-12-at-10% effect and is rebound at local theme/accent/gray boundaries. Soft and ghost stay distinct on page, shell and raised backgrounds.
101
61
 
102
62
  ## Motion contract
103
63
 
104
- | Region | Token | Default | Reduced |
105
- |---|---|---|---|
106
- | (none) | `none` | `none` | `none` |
107
-
108
- Rules:
109
-
110
- - Code has no motion. The motion section is intentionally empty.
64
+ Static typography; no animation or transition.
111
65
 
112
66
  ## Accessibility
113
67
 
114
- **Roles:**
115
-
116
- - The component renders a `<code>` by default (or the consumer's host element when `as` / `asChild` is set). The semantic role of an inline code token is preserved.
117
-
118
- **Keyboard:**
119
-
120
- - Code is not interactive. No keyboard contract beyond the page-level Tab order.
121
-
122
- **Focus:**
123
-
124
- - Code has no focusable surface. Focus management is the consumer's responsibility when the code is wrapped in a focusable container.
125
-
126
- **Reduced motion:**
127
-
128
- - N/A. Code has no motion.
129
-
130
- **Color and meaning:**
131
-
132
- - The `variant` and `tone` props are visual modifiers. The code body itself carries the meaning.
133
-
134
- **Naming:**
135
-
136
- - No accessible name is required by default. Consumers that need an announced label for a code token (e.g. an inline icon) should supply `aria-label`.
68
+ Native `<code>` semantics are preserved. The component is non-interactive; no focus or touch target is required. Consumer hosts through `asChild` own their semantics. Surrounding copy explains the snippet. Preformatted content keeps its whitespace and can scroll horizontally in the consumer's bounded overflow region.
137
69
 
138
70
  ## Playground demo spec
139
71
 
140
- `Code` is registered in `apps/playground/lib/registry/typography.tsx` under the `code` key. The registry entry imports `codePropDefs` and renders the component with a sample code token. Per-component route: `/docs/code`.
141
-
142
- **Default story:**
143
-
144
- - Renders `Code` with a default code string. Asserts the root class is `dsx-code` and the variant modifier is `dsx-code--soft`. The `data-variant` attribute is `soft` and the `data-size` attribute is `md`. Host element is `CODE`.
145
-
146
- **Variant story:**
147
-
148
- - Renders Code with each `variant` value. Asserts the matching `dsx-code--{variant}` class and the matching `data-variant` attribute.
149
-
150
- **Size story:**
151
-
152
- - Renders Code with each `size` value. Asserts the `data-size` attribute on the root.
153
-
154
- **Color story:**
155
-
156
- - Renders Code with a `color` value (e.g. `color="blue"`). Asserts the `data-accent-color` attribute on the root.
157
-
158
- **Composition story** (for `asChild`):
159
-
160
- - Renders Code with `asChild` wrapping a `<span>` element. Asserts the host element is `SPAN` and the `dsx-code` class is preserved.
161
-
162
- **State story:**
163
-
164
- - Renders Code in muted and inverse states, including the variant-on-tone pairings (`solid` + `muted`, `soft` + `inverse`).
165
-
166
- **Token story:**
167
-
168
- - Renders inside a `Theme` wrapper. Code is not themed by `data-accent-color`; the story documents that the variant surfaces are visually unchanged across accent colors.
169
-
170
- **A11y story:**
171
-
172
- - The default render passes the `vitest-axe` no-violations check.
173
-
174
- **Props exposed in the playground controls:**
175
-
176
- | Prop | Control | Default |
177
- |---|---|---|
178
- | `variant` | select | `soft` |
179
- | `tone` | select | `default` |
180
- | `size` | select | `md` |
181
- | `color` | text | (empty) |
182
- | `highContrast` | boolean | `false` |
183
- | `asChild` | boolean | `false` |
72
+ `/docs/code`, typography registry. Matrix forwards all props. The live example compares all variants and sizes, muted/inverse/high-contrast states, all five accent strings, a slotted host, real inline configuration names and a preformatted snippet, and soft/ghost comparisons on page, shell and raised backgrounds. Inverse code has its paired background. Solid foreground remains readable on every accent in both appearances.
184
73
 
185
74
  ## Wiring notes
186
75
 
187
- **Composes from:**
188
-
189
- - `@radix-ui/react-slot` for `asChild`.
190
- - `_internal/helpers/extractProps` for the prop def bag.
191
- - `_internal/props/{asChild,highContrast}.prop` for the shared prop defs.
192
- - `_internal/cn` (via `classNames`) for class merging.
193
- - No DS component composition. Code is a leaf primitive.
194
-
195
- **Used by:**
196
-
197
- - The Playground typography registry, in-product inline code tokens, and any app surface that needs a monospace accent (command palettes, key hints, code samples, file paths).
198
-
199
- **State boundaries:**
200
-
201
- - Owned by Code: the root class, the variant and tone modifier classes, the `data-variant`, `data-size`, `data-accent-color`, and `data-high-contrast` attributes, and the prop def bag.
202
- - Owned by the consumer: the code body, the host element when `as` / `asChild` is set, and any extra `className` / `style` applied through prop forwarding.
203
-
204
- **Boundary rules:**
205
-
206
- - App-owned data: the code string, the surrounding prose context, and the host element when `asChild` is set.
207
- - DS-owned visuals: the `dsx-code` root class, the variant and tone modifier classes, the data attributes, and the prop def bag.
208
-
209
- ## Penpot build recipe
210
-
211
- > Optional. Penpot is a visual reference, not a code authority. The Code recipe tracks the variant, tone, size, color, and high-contrast contract.
212
-
213
- The package does not yet publish a Penpot asset for Code. The recipe is visual reference only and tracks the CSS contract.
214
-
215
- ### Root board
216
-
217
- - **Name**: `Primitives / Code`.
218
- - **Dimensions**: `auto × auto` (inline token).
219
- - **Layout**: `Flex` (inline).
220
- - **Sizing**: `horizontalSizing = 'auto'`, `verticalSizing = 'auto'`.
221
-
222
- ### Layer tree
223
-
224
- ```
225
- <Root Board: Code>
226
- └── <Text: code body (monospace)>
227
- ```
228
-
229
- ### Token bindings (Penpot properties)
230
-
231
- | Shape | Property | Token | Token type | Penpot property name |
232
- |---|---|---|---|---|
233
- | Root | typography | `--dsx-typography-code-*` token family | Typography | `typography` |
234
- | Root | radius | `--dsx-rounded-sm` | Radius | `radius` |
235
- | Root (soft) | fill | `--dsx-color-surface-raised` | Color | `fills` (state) |
236
- | Root (soft) | stroke | `--dsx-color-outline-variant` | Color | `strokes` (state) |
237
- | Root (solid) | fill | `--dsx-color-primary` | Color | `fills` (state) |
238
- | Root (solid) | text fill | `--dsx-color-on-primary` | Color | `fills` (state) |
239
- | Root (outline) | stroke | `--dsx-shadow-inset-outline` | Color | `strokes` (state) |
240
-
241
- ### State transformations
242
-
243
- | State | Root fill | Root stroke | Text fill |
244
- |---|---|---|---|
245
- | `soft` (default) | `--dsx-color-surface-raised` | `--dsx-color-outline-variant` | `--dsx-color-on-surface` |
246
- | `solid` | `--dsx-color-primary` | (none) | `--dsx-color-on-primary` |
247
- | `outline` | `transparent` | `--dsx-shadow-inset-outline` | `--dsx-color-on-surface` |
248
- | `ghost` | `transparent` | (none) | `--dsx-color-on-surface` |
249
-
250
- ### Variant model
251
-
252
- - `variant`: `soft`, `solid`, `outline`, `ghost`. Default `soft`.
253
- - `tone`: `default`, `muted`, `inverse`. Default `default`.
254
- - `size`: `sm`, `md`, `lg`. Default `md`.
255
- - `color` and `highContrast` documented in the spec body.
256
- - Total members: variant × tone × size = 4 × 3 × 3 = 36, plus the high-contrast toggle.
257
-
258
- ### Validation checklist
259
-
260
- - [ ] Token bindings resolve at the values `DESIGN.md` describes.
261
- - [ ] Component is promoted to Main Component under `Primitives`.
262
- - [ ] `penpotUtils.shapeStructure(board, 3)` matches the expected hierarchy.
263
- - [ ] Monospace font stack resolves from `--dsx-typography-code-font-family`; treat it as token-backed in Penpot.
76
+ Radix Slot implements `asChild`; `extractProps` consumes `codePropDefs`; classnames merges the root/modifiers. Code is a leaf primitive; the token layer scopes accent values. Apps own text, host, code language, syntax highlighting and preformatted overflow layout.
@@ -73,7 +73,7 @@ Rules:
73
73
 
74
74
  **Responsive behavior:**
75
75
 
76
- - The component does not write `@media` rules. The motion and layout are single-value only.
76
+ - The component does not use width breakpoints. The motion and layout are single-value only.
77
77
 
78
78
  **Reduced motion:**
79
79
 
@@ -86,7 +86,7 @@ Rules:
86
86
  }
87
87
  }
88
88
  ```
89
- The expand/collapse keyframes (`dsx-collapsible-expand`, `dsx-collapsible-collapse`) are gated off when the user prefers reduced motion. The chevron rotation uses `var(--dsx-motion-duration-fast)` and is not explicitly gated at the CSS level; the token layer should map it to `0` under reduced motion.
89
+ The expand/collapse keyframes (`dsx-collapsible-expand`, `dsx-collapsible-collapse`) are gated off when the user prefers reduced motion. The chevron rotation uses `var(--dsx-motion-duration-fast)` and is disabled in component CSS under reduced motion.
90
90
 
91
91
  ## Token mapping
92
92
 
@@ -98,7 +98,7 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
98
98
  | Trigger padding | `var(--dsx-space-md)` | Internal gutter |
99
99
  | Trigger color | `var(--dsx-color-on-surface)` | Closed trigger text |
100
100
  | Trigger label type | `var(--dsx-typography-label-large-font-family)`, `var(--dsx-typography-label-large-font-size)` | Trigger text ramp |
101
- | Trigger open color | `var(--dsx-color-primary)` | Open trigger text |
101
+ | Trigger open color | `var(--dsx-color-accent-indicator)` | Open trigger text |
102
102
  | Trigger focus ring | `var(--dsx-shadow-focus-ring)` | Focus indicator |
103
103
  | Chevron transition | `var(--dsx-motion-duration-fast, 150ms) var(--dsx-motion-easing-standard, ease)` | Rotate transition |
104
104
  | Content padding | `var(--dsx-space-md)` | Inner content gutter |
@@ -107,12 +107,14 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
107
107
  | Expand/collapse duration | `var(--dsx-motion-duration-normal)` | Keyframe duration |
108
108
  | Expand/collapse easing | `var(--dsx-motion-easing-in-out)` | Keyframe easing |
109
109
 
110
+ Content height and vertical padding animate together from zero to their measured/underlying values. This prevents padding from clamping the first animation frames. The underlying endpoint retains consumer padding overrides, including `asChild` hosts. No wrapper is added.
111
+
110
112
  ## Motion contract
111
113
 
112
114
  | Region | Token | Default | Reduced |
113
115
  |---|---|---|---|
114
- | `dsx-collapsible__content` height + opacity | `var(--dsx-motion-duration-normal)` + `var(--dsx-motion-easing-in-out)` | 200ms in-out (token-dependent) | `animation: none !important` via the runtime-inserted `prefers-reduced-motion` block |
115
- | `dsx-collapsible__chevron` rotate | `var(--dsx-motion-duration-fast)` + `var(--dsx-motion-easing-standard)` | 150ms standard (token-dependent) | Token-layer override; the chevron transition is not explicitly gated at the CSS level |
116
+ | `dsx-collapsible__content` height + block-axis padding + opacity | `var(--dsx-motion-duration-normal)` + `var(--dsx-motion-easing-in-out)` | motion-duration-normal (token-dependent) | `animation: none !important` via the runtime-inserted `prefers-reduced-motion` block |
117
+ | `dsx-collapsible__chevron` rotate | `var(--dsx-motion-duration-fast)` + `var(--dsx-motion-easing-standard)` | 150ms standard (token-dependent) | Transition disabled in component CSS |
116
118
 
117
119
  ## Accessibility
118
120
 
@@ -126,7 +128,6 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
126
128
  |---|---|
127
129
  | `Tab` | Moves focus to the trigger. |
128
130
  | `Enter`, `Space` | Toggles the open state. |
129
- | `Escape` | Collapses the content if the content has focus. Behavior is owned by Radix. |
130
131
 
131
132
  **Focus:**
132
133
 
@@ -134,7 +135,7 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
134
135
 
135
136
  **Reduced motion:**
136
137
 
137
- - The runtime-inserted style block disables the expand/collapse keyframes when `prefers-reduced-motion: reduce` matches. The chevron rotation is not explicitly gated; consumers should rely on the global motion token override.
138
+ - The runtime-inserted style block disables the expand/collapse keyframes when `prefers-reduced-motion: reduce` matches. The chevron transition is disabled in component CSS as well.
138
139
 
139
140
  **Color and meaning:**
140
141
 
@@ -144,36 +145,11 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
144
145
 
145
146
  - `Collapsible.Trigger` is the interactive element; the consumer's `children` become the button's accessible name.
146
147
 
147
- ## Playground demo spec
148
-
149
- **Default story:**
150
-
151
- - Renders a `Collapsible` with a trigger and content. Asserts the root renders as a transparent host and the trigger and content are present.
152
-
153
- **State story:**
154
-
155
- - Renders with `open`. Asserts the trigger has `data-state="open"` and the content is visible.
156
- - Renders with `defaultOpen={false}` and triggers a click. Asserts the trigger's `data-state` flips from `closed` to `open`.
157
- - Renders with `disabled`. Asserts the trigger is disabled and the content does not toggle.
158
-
159
- **Composition story:**
148
+ The live example embeds a disclosure and moving footer in a project card. Disabled and initially expanded warp/ray examples remain separate.
160
149
 
161
- - Renders the root wrapped in a `Card` to demonstrate the surface composition pattern. Asserts the trigger and content are present inside the card.
162
-
163
- **Token story:**
164
-
165
- - Renders inside a `Theme` wrapper with `accentColor="silver"` and `accentColor="bronze"`. Collapsible does not track `data-accent-color`; the story asserts the open trigger color continues to resolve through `var(--dsx-color-primary)`.
166
-
167
- **A11y story:**
168
-
169
- - Uses `vitest-axe` against the rendered default story. Asserts no axe violations.
170
-
171
- **Props exposed in the playground controls:**
150
+ ## Playground demo spec
172
151
 
173
- | Prop | Control | Default |
174
- |---|---|---|
175
- | `open` | boolean | `false` |
176
- | `disabled` | boolean | `false` |
152
+ The default render is a disclosure within a bounded consumer surface. The live project card includes fixed introductory content, optional project details, and a footer that moves with the disclosure. Separate disabled and initially expanded warp/ray examples expose the behavior and accent state. Normal-motion probes sample expansion and collapse; reduced motion skips both animations.
177
153
 
178
154
  ## Wiring notes
179
155
 
@@ -236,6 +236,8 @@ The palette has no mount or exit motion. Item selection and hover animate throug
236
236
  - `Command` accepts an optional `label` for the palette. When omitted, the input placeholder and surrounding context must provide a meaningful name.
237
237
  - Each `CommandItem` needs a meaningful label. The optional `CommandShortcut` is decorative.
238
238
 
239
+ `Command.Shortcut` displays a hint; consumers wire the handler. The live playground example implements ⌘P/⌘S and Ctrl+P/Ctrl+S while focus is inside the palette and explains that scope. `Command.Separator` owns the group boundary; headings do not add a second rule.
240
+
239
241
  ## Playground demo spec
240
242
 
241
243
  **Default story:**
@@ -15,6 +15,56 @@ Controlled one-reply-level discussion UI. Data, relative-time localization, mode
15
15
 
16
16
  `CommentThread.Root`, `Comment`, `Replies`, `Tombstone`, `Composer`, and `Locked`. Comment renders avatar initials or image, author badge content, semantic `time`, body, and report/reply actions. Composer owns no remote state and exposes value, character limit, locked, and submission state. Tombstones remain visibly present to preserve thread structure.
17
17
 
18
+ - Root forwards native div attributes/ref. Comment forwards article attributes/ref;
19
+ `author` and `dateTime` are strings, `timeLabel`, `badge`, `actions` and body accept
20
+ React nodes, and `avatarSrc` optionally replaces initials with a decorative image.
21
+ - Replies forwards native div attributes/ref and defaults to role group. One nested
22
+ reply level is supported; a second Replies inside Replies throws explicitly.
23
+ - Tombstone defaults to `Comment removed`, role status and `data-removed="true"`.
24
+ Locked defaults to `Comments are locked` and role status. Both accept custom children.
25
+ - Composer forwards form attributes/ref while managing submission. `value` and
26
+ `onValueChange` are required; `onSubmit`, `maxLength` (default 2000), `locked` and
27
+ `submitting` are optional. It prevents native navigation and calls onSubmit only
28
+ for nonblank, within-limit, valid, unlocked, non-submitting content. The app owns asynchronous work.
29
+ - Its controlled native textarea has the default accessible name `Comment` and an
30
+ associated polite character counter. Locked/submitting disables editing; submitting
31
+ sets form `aria-busy`. Default submit composes the large DS Button, disabled for
32
+ empty/locked/submitting content. Custom children replace that default action.
33
+
34
+ ## Paint and containment
35
+
36
+ Comment uses an avatar column and a zero-minimum content track. Author metadata and
37
+ actions and action labels wrap intrinsically; long body words wrap. Body/actions remain in the content
38
+ column and Replies retains its logical-start indent. No component breakpoint is used.
39
+
40
+ Composer textarea explicitly fits its parent, uses body-medium typography, keeps
41
+ native vertical resize, and consumes the existing focus ring and disabled roles.
42
+ The `dsx-comment-thread__count` and `dsx-comment-thread__submit` classes identify
43
+ the counter and default action. Button owns focus/pressed/disabled treatment and
44
+ target dimensions (44px at comfortable density). The component adds no motion.
45
+
18
46
  ## Playground demo spec
19
47
 
20
- Show initials and image avatars, badge and time, one reply level, report/reply actions, character count, submitting/locked composers, and a removed tombstone.
48
+ `/docs/comment-thread` composes `blocks-examples.tsx` through the display registry.
49
+ It shows initial/image avatars, author badge/time, one reply level, report/reply
50
+ actions and a removed tombstone. The controlled composer updates its count, shows
51
+ submitting, adds a local comment, and can be locked/unlocked. Separate submitting
52
+ and locked examples remain visible. All demo persistence and action feedback is
53
+ playground-owned; no network or moderation service is implied.
54
+
55
+ ## Discussion enhancement — approved 2026-10-04
56
+
57
+ `Composer` adds `input(context)` to replace the textarea without duplication,
58
+ `label`, `error`, `status` and `actions`. Context supplies `id`, `value`,
59
+ `onValueChange`, `maxLength`, `disabled`, `describedBy` and `invalid` for accessible
60
+ custom controls. Children retain their existing submit-action override. Count,
61
+ error and status are associated with the input. Blank, over-limit, submitting,
62
+ locked or invalid drafts cannot submit. Consumers own rich-text plain count and
63
+ validation. `Comment.metadata` supports edited state.
64
+
65
+ `Replies` adds optional `limit`, controlled/uncontrolled `expanded`,
66
+ `onExpandedChange` and `moreLabel`; defaults still show all children. Exactly one
67
+ reply level remains supported. `Tombstone.state` distinguishes `hidden`,
68
+ `removed` and `deleted`, with localized children. Legacy `data-removed` persists.
69
+ Support is demonstrated as a linear composition with a restricted rich editor,
70
+ separate FileUpload/attachments, visibility and failed-send retry, not nested replies.