@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
@@ -12,21 +12,18 @@ depends_on:
12
12
 
13
13
  # ToggleTip
14
14
 
15
- > Consumer note: this document describes public intent and contracts; the package TypeScript declarations are the exact API.
16
-
17
15
  ## Purpose
18
16
 
19
- A click-to-toggle tooltip variant for touch and keyboard parity. The trigger stays a button; the content opens on click and stays open until the user clicks the trigger again, the content loses focus, or the `Escape` key fires. Pairs with brief, non-essential explanatory copy.
17
+ Click-operated, persistent help for touch and keyboard users. Keep essential
18
+ instructions visible in the page. Click again, click outside or press Escape
19
+ to dismiss. The component has internal open state and no controlled-open API.
20
20
 
21
21
  ## Anatomy & slots
22
22
 
23
- **Parent:** `ToggleTip` (no compound; flat export).
24
-
25
- **Slots:**
26
-
27
- No slots: flat export. The component renders a `<div>` (or `Slot` host) that wraps a `Popover.Root`. The Popover wires a `Popover.Trigger` (defaulting to the `Info` Icon) and a portal-mounted `Popover.Content` with a `Popover.Arrow`. The component does not expose named subcomponents; the trigger and content are internal Popover children.
28
-
29
- The runtime uses Radix Popover directly rather than the `Tooltip` primitive. The content is a click-toggled floating panel; the visual treatment borrows from the `dsx-tooltip` aesthetic at small size.
23
+ A `dsx-toggle-tip` div (or Slot root) owns a Radix Popover inside
24
+ `PortalThemeBoundary`. Its button is `dsx-toggle-tip__trigger`; its portal
25
+ uses `PortalThemeWrapper` around `dsx-toggle-tip__content` and
26
+ `dsx-toggle-tip__arrow`. There are no public compound parts.
30
27
 
31
28
  ## Props contract
32
29
 
@@ -35,11 +32,11 @@ The runtime uses Radix Popover directly rather than the `Tooltip` primitive. The
35
32
  | `content` | `React.ReactNode` | (none) | yes | The popover body. Rendered inside `Popover.Content`. | no |
36
33
  | `triggerLabel` | `string` | `'Show information'` | no | Accessible name for the trigger button. The trigger is icon-only by default; this prop supplies the `aria-label`. | no |
37
34
  | `side` | `'top' \| 'right' \| 'bottom' \| 'left'` | `'top'` | no | Which side of the trigger the content appears on. Drives the `dsx-toggle-tip--side-{side}` modifier class on `Popover.Content` and the Radix `side` placement. | no |
38
- | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | no | Visual scale hint. Drives `data-size` on the root. The CSS does not currently consume `data-size`; see Anomalies. | no |
35
+ | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | no | Trigger and bubble scale. Writes `data-size`; sm/md/lg control boxes are 24/32/40px, with bubble padding 4×8 / 8×16 / 16×24px. Large content uses body-medium; smaller content uses body-small. | no |
39
36
  | `asChild` | `boolean` | `false` | no | Renders the root through `Slot` from `@radix-ui/react-slot`. | no |
40
37
  | `className` | `string` | `undefined` | no | Extra classes appended to `dsx-toggle-tip`. | no |
41
38
  | `style` | `React.CSSProperties` | `undefined` | no | Inline style forwarded to the root. | no |
42
- | `children` | `React.ReactNode` | the `Info` Icon | no | Custom trigger content. When omitted, the trigger renders `<Info size={16} />` from `lucide-react`. | no |
39
+ | `children` | `React.ReactNode` | the `Info` Icon | no | Custom trigger content. When omitted, the Info glyph is 12/16/20px for sm/md/lg. | no |
43
40
  | `id` | `string` | `undefined` | no | Forwarded to the root. | no |
44
41
 
45
42
  The component also accepts every `React.ComponentPropsWithoutRef<'div'>` key (omitting the conflicting `content` attribute) via `Omit<React.ComponentPropsWithoutRef<'div'>, 'content'>`.
@@ -53,254 +50,74 @@ Rules that apply to this row:
53
50
 
54
51
  ## CSS class contract
55
52
 
56
- **Root class:** `dsx-toggle-tip`
57
-
58
- **Modifier classes** (driven by `data-*` attributes and the `side` prop def):
59
-
60
- | Attribute / prop | Allowed values | Class | CSS file |
61
- |---|---|---|---|
62
- | `data-size` | `sm`, `md`, `lg` | (no CSS consumer; see Anomalies) | `toggle-tip.css` |
63
- | `side` | `top`, `right`, `bottom`, `left` | `.dsx-toggle-tip--side-{side}` on the `Popover.Content` element (the prop def's `className: 'dsx-toggle-tip--side-'` drives the prefix; the CSS does not currently define the modifier) | `toggle-tip.css` |
64
-
65
- **Slot classes:**
66
-
67
- | Slot | Class | CSS file |
53
+ | Element | Class | Data slot |
68
54
  |---|---|---|
69
- | Root | `dsx-toggle-tip` | `toggle-tip.css` |
70
- | Trigger | `dsx-toggle-tip__trigger` | `toggle-tip.css` |
71
- | Content | `dsx-toggle-tip__content` | `toggle-tip.css` |
72
- | Arrow | `dsx-toggle-tip__arrow` | `toggle-tip.css` |
73
-
74
- **Data slots** (used by QA and audit tooling, not visual):
55
+ | Root | `dsx-toggle-tip` | `toggle-tip` |
56
+ | Trigger | `dsx-toggle-tip__trigger` | `toggle-tip-trigger` |
57
+ | Content | `dsx-toggle-tip__content` | `toggle-tip-content` |
58
+ | Arrow | `dsx-toggle-tip__arrow` | none |
75
59
 
76
- | Element | `data-slot` |
77
- |---|---|
78
- | Root | `toggle-tip` |
79
- | Trigger | `toggle-tip-trigger` |
80
- | Content | `toggle-tip-content` |
81
-
82
- **Responsive behavior:**
83
-
84
- - The component does not write `@media` rules. None of its prop defs are `responsive: true`. Size and side are single-value only.
85
- - The component's CSS file is breakpoint-agnostic.
86
-
87
- **Reduced motion:**
88
-
89
- - The component does not write a `prefers-reduced-motion` block. The content uses a `dsx-toggle-tip-fade` CSS keyframe animation for opacity + translate. The Popover applies the animation; when the global `prefers-reduced-motion` stylesheet is in place, the animation collapses via the standard CSS rule.
90
- - The trigger transitions `color` and `background` against `var(--dsx-motion-duration-fast)` and `var(--dsx-motion-easing-in-out)`. No explicit `prefers-reduced-motion` rule in the file.
60
+ `data-size=sm/md/lg` is consumed on the root to size its trigger and on Content to size the bubble. Content
61
+ retains `dsx-toggle-tip--side-{top,right,bottom,left}`; placement and collision
62
+ flipping are owned by Radix, without side-specific CSS rules. All props are
63
+ single values. There are no width media queries.
91
64
 
92
65
  ## Token mapping
93
66
 
94
- Every CSS value the component paints is a `var(--dsx-*)` token.
95
-
96
67
  | Property | Token | Role |
97
68
  |---|---|---|
98
- | Trigger size | `var(--dsx-size-sm)` square | Tap target. |
99
- | Trigger radius | `var(--dsx-rounded-full)` | Round affordance. |
100
- | Trigger fill | `transparent` | Resting surface. |
101
- | Trigger text | `var(--dsx-color-on-surface-variant)` | Resting glyph. |
102
- | Trigger hover fill | `var(--dsx-effect-hover-layer)` | Hover surface. |
103
- | Trigger hover text | `var(--dsx-color-primary)` | Hover glyph. |
104
- | Content padding | `var(--dsx-space-sm)` block, `var(--dsx-space-md)` inline | Inner gutter. |
105
- | Content radius | `var(--dsx-rounded-md)` | Panel corner radius. |
106
- | Content fill | `var(--dsx-color-panel-translucent)` | Panel surface. |
107
- | Content border | `var(--dsx-border-width-sm)` + `var(--dsx-color-outline)` | Panel edge. |
108
- | Content text | `var(--dsx-color-on-surface)` | Body text. |
109
- | Content typography | `var(--dsx-typography-body-small-*)` | Body type ramp. |
110
- | Content shadow | `var(--dsx-shadow-3)` | Panel elevation. |
111
- | Content max-width | `280px` (raw) | Readability cap; not a token target. |
112
- | Content entry animation | `var(--dsx-motion-duration-fast)` + `var(--dsx-motion-easing-out)` | Fade-in. |
113
- | Content entry distance | `var(--dsx-space-xs)` | Translate offset. |
114
- | Arrow fill | `var(--dsx-color-panel-translucent)` | Match content surface. |
115
- | Trigger motion | `var(--dsx-motion-duration-fast)` + `var(--dsx-motion-easing-in-out)` | Hover transitions. |
116
-
117
- Rules:
118
-
119
- - Tokens come from `DESIGN.md` and the generated `tokens.css`. The only intentional non-token value is the `280px` content max-width, which is a readability cap rather than a sizing token.
120
- - The `side` modifier class is emitted by the runtime but the CSS does not currently define a `.dsx-toggle-tip--side-{side}` rule. Side-specific styling (offset, anchor alignment) is owned by Radix Popover.
69
+ | Trigger sm/md/lg | `--dsx-size-md` / `--dsx-size-lg` / `--dsx-size-xl` | 24/32/40px control box |
70
+ | Trigger radius | `--dsx-rounded-full` | Round affordance |
71
+ | Trigger foreground | `--dsx-color-on-surface-variant` | Resting glyph |
72
+ | Hover / open fill and glyph | `--dsx-color-accent-surface` / `--dsx-color-accent-indicator` | Readable accent feedback in all five accents |
73
+ | Focus ring | `--dsx-shadow-focus-ring` | Keyboard focus |
74
+ | Content fill / arrow | `--dsx-color-panel-translucent` | Matching surface |
75
+ | Content border | `--dsx-border-width-sm`, `--dsx-panel-border-color` | Edge |
76
+ | Content radius | `--dsx-rounded-md` | Surface geometry |
77
+ | Content padding sm / md / lg | `--dsx-space-xs` × `--dsx-space-sm` / `--dsx-space-sm` × `--dsx-space-md` / `--dsx-space-md` × `--dsx-space-lg` | Bubble density |
78
+ | Content shadow | `--dsx-shadow-elevation-3` | Overlay elevation |
79
+ | Content width cap | `--dsx-size-popover-max-width` | Capped further by Radix available width |
80
+ | Content layer | `--dsx-z-index-modal` + 1 | Help above a modal |
81
+
82
+ Content uses border-box sizing and wraps long words. An inner body scrolls within Radix's available height after subtracting padding and borders. The arrow remains outside that scrolling body; it does not create a scrollbar for short help copy. Collision padding is 16px. The portal retains the originating
83
+ Theme's mode, accent, density, radius and related attributes.
121
84
 
122
85
  ## Motion contract
123
86
 
124
- | Region | Token | Default | Reduced |
125
- |---|---|---|---|
126
- | Trigger color and background | `var(--dsx-motion-duration-fast)` + `var(--dsx-motion-easing-in-out)` | Hover state swap | None declared in the file. Relies on the global `prefers-reduced-motion` stylesheet. |
127
- | Content entry | `dsx-toggle-tip-fade` keyframe, `var(--dsx-motion-duration-fast)` + `var(--dsx-motion-easing-out)` | Opacity `0 → 1` and `translateY(var(--dsx-space-xs)) → translateY(0)` | None declared in the file. Relies on the global `prefers-reduced-motion` stylesheet. |
128
-
129
- Rules:
130
-
131
- - This row does not import `MOTION_TRANSITIONS` from `src/_internal/motion.ts`. All motion is CSS-only.
132
- - A future promotion that uses framer-motion should pick a preset from `MOTION_TRANSITIONS` (likely `popover`) and gate it with `usePrefersReducedMotion`.
133
- - A future CSS-only promotion should add a `@media (prefers-reduced-motion: reduce)` block that sets `animation: none` on `.dsx-toggle-tip__content` and `transition: none` on `.dsx-toggle-tip__trigger`.
87
+ CSS-only entry uses `dsx-toggle-tip-fade`, motion-duration-fast and
88
+ motion-easing-out; the trigger uses the fast duration and in-out easing.
89
+ The local `prefers-reduced-motion: reduce` rule disables the content animation
90
+ and trigger transition. Pointer activation does not require hover.
134
91
 
135
92
  ## Accessibility
136
93
 
137
- **Roles:**
138
-
139
- - The root is a plain `<div>` with no implicit role.
140
- - The trigger is a Radix `Popover.Trigger`, which renders a `<button>` with `aria-label={triggerLabel}`. The default label is `'Show information'`. The content is a Radix `Popover.Content` with no implicit role; consumers can supply `aria-label` to name the panel.
141
-
142
- **Keyboard:**
143
-
144
- | Key | Action |
145
- |---|---|
146
- | `Tab` | Moves focus to the trigger (and to any focusable content inside the popover). |
147
- | `Enter`, `Space` | Toggles the popover open / closed. |
148
- | `Escape` | Radix Popover closes the content and returns focus to the trigger. |
149
- | Arrow keys | The component does not implement arrow-key navigation inside the content. |
150
-
151
- **Focus:**
152
-
153
- - The trigger gets the standard focus ring from the global stylesheet; the runtime does not write a custom focus style.
154
- - Radix Popover manages focus: opening moves focus to the first focusable element in the content (or keeps it on the trigger if none is focusable); closing returns focus to the trigger.
155
-
156
- **Reduced motion:**
157
-
158
- - The content entry animation is a CSS keyframe; the runtime does not gate it on `prefers-reduced-motion`. The global `prefers-reduced-motion` stylesheet is expected to collapse it; the component should add an explicit block in the next promotion.
159
-
160
- **Color and meaning:**
161
-
162
- - The trigger is an icon-only button; meaning is carried by the `aria-label` and the visible `Info` glyph. Color is not the only signal.
163
-
164
- **Naming:**
165
-
166
- - The trigger's accessible name comes from `triggerLabel`, defaulting to `'Show information'`. Consumers that pass a custom trigger through `children` are responsible for the accessible name on that trigger.
167
- - The popover content has no implicit name. Consumers that need a panel name should add `aria-label` via app-level wrapping.
94
+ The trigger is a button named by `triggerLabel` (default “Show information”).
95
+ The Popover content has role=dialog and the same accessible name. Its inner
96
+ scrolling region has tabIndex=0 and an accessible name, so Radix focus entry
97
+ allows Arrow/PageDown/End scrolling as well as wheel and touch gestures.
98
+ Overscroll is contained within the help body. Enter/Space
99
+ open it; Escape dismisses it and returns focus to the trigger. Radix owns
100
+ focus entry and dismissal. The trigger has a local visible focus ring.
101
+ The size floor is 24px; sm and md do not claim a 44px target.
168
102
 
169
103
  ## Playground demo spec
170
104
 
171
- The demo file at `demo_path` exposes the component to the playground. The playground lives at `apps/playground/app/` (Next.js app router, no per-component routes today). The `demo_path` recorded here is the current playground root; the spec assumes a single shared page that renders all components. Per-component routes are an aspirational target and not yet present in the repo.
172
-
173
- **Default story:**
174
-
175
- - Renders `ToggleTip` with `content="Some explanatory text."`. Asserts the root class is `dsx-toggle-tip` and the trigger has `aria-label="Show information"`.
176
-
177
- **Variant story** (one per side and size):
178
-
179
- - Renders with `side="top"`, `side="right"`, `side="bottom"`, and `side="left"`. Asserts the `Popover.Content` carries the matching `dsx-toggle-tip--side-{side}` modifier (the CSS does not currently define the rule; see Anomalies).
180
- - Renders with `size="sm"`, `size="md"`, and `size="lg"`. Asserts the matching `data-size` attribute on the root (the CSS does not currently consume it; see Anomalies).
181
-
182
- **Composition story** (for `asChild` and custom triggers):
183
-
184
- - Renders `ToggleTip` with `asChild` wrapping a custom host element. Asserts the host element receives the `dsx-toggle-tip` class.
185
- - Renders `ToggleTip` with a custom `children` (for example, a `HelpCircle` Icon). Asserts the custom trigger renders inside the Radix trigger button.
186
-
187
- **State story:**
188
-
189
- - Renders the default ToggleTip. Clicks the trigger and asserts the `Popover.Content` mounts with the entry animation.
190
- - Clicks the trigger again and asserts the content unmounts.
191
- - Opens the content and presses `Escape`; asserts the content unmounts and focus returns to the trigger.
192
-
193
- **Token story:**
194
-
195
- - Renders inside a `Theme` wrapper with `accentColor="amber"`, `accentColor="silver"`, and `accentColor="bronze"`. Asserts the trigger hover glyph tracks `--dsx-color-primary` (which is theme-aware).
196
-
197
- **A11y story:**
198
-
199
- - Uses `vitest-axe` against the rendered default ToggleTip. Asserts the trigger has an accessible name and the popover content region is announced as a dialog.
200
-
201
- **Props exposed in the playground controls:**
202
-
203
- | Prop | Control | Default |
204
- |---|---|---|
205
- | `content` | text | (empty) |
206
- | `triggerLabel` | text | `Show information` |
207
- | `side` | select | `top` |
208
- | `size` | select | `md` |
209
- | `asChild` | boolean | `false` |
105
+ `/docs/toggle-tip` compares all three sizes and four requested sides. Its live
106
+ example also places help in all five current nested accents (rift, warp, ray,
107
+ astral, spark). Open these examples to review the portal's surface, accessible
108
+ name, collision placement and focus return. Tests cover naming, theme ownership
109
+ and Escape; browser evidence verifies target ownership and rendered geometry.
210
110
 
211
111
  ## Wiring notes
212
112
 
213
- **Composes from:**
214
-
215
- - `Popover` (Radix `@radix-ui/react-popover`): the trigger, portal, content, and arrow are Radix Popover primitives. The open/close behavior, focus management, and the `Escape` handling come from Radix.
216
- - `Tooltip` (visual treatment): the trigger and content share the `dsx-tooltip` aesthetic at small size. The TSX does not import the `Tooltip` component.
217
- - `Icon` (lucide-react `Info`): renders the default trigger glyph.
218
- - `@radix-ui/react-slot`: enables `asChild` on the root.
219
-
220
- **Used by:**
221
-
222
- - Form rows and inline help surfaces that need touch and keyboard parity. Pairs with `Field.Description` for sighted-only context, never for essential information. No DS component currently wraps `ToggleTip`.
223
-
224
- **State boundaries:**
225
-
226
- - Owned by ToggleTip: the open/close state, the default `Info` trigger, the `aria-label` fallback, the Radix Popover wiring, and the `side` / `size` attributes.
227
- - Owned by the consumer: the `content` body, the optional `triggerLabel`, the optional custom trigger, and the host element when `asChild` is set.
228
-
229
- **Boundary rules:**
230
-
231
- - App-owned data: the explanatory copy, the trigger label, and the placement of the ToggleTip in the page.
232
- - DS-owned visuals: token bindings, the `dsx-toggle-tip` and slot classes, the `dsx-toggle-tip--side-{side}` modifier class (reserved), the `data-size` attribute (reserved), the `data-slot` attributes, and the default `aria-label="Show information"`.
233
- - The component does not forward `data-dsx-*` theme attributes into the portal. Consumers that need the theme contract mirrored into the content region should wrap ToggleTip in a `BaseDialog`-style helper, or accept that the popover content is scoped to the root theme attributes only.
234
-
235
- **Anomalies** (open items that this spec flags):
236
-
237
- 1. **`data-size` attribute has no CSS consumer.** The TSX writes `data-size` on the root and the prop def lists three values (`sm`, `md`, `lg`), but the CSS does not define any `[data-size]` rule. The attribute is a forward-looking hook; the visual treatment today is the same across all three sizes.
238
- 2. **`dsx-toggle-tip--side-{side}` modifier class has no CSS consumer.** The runtime emits the modifier on the `Popover.Content`, but the CSS does not define the rule. Side placement is owned entirely by Radix Popover.
239
- 3. **No `prefers-reduced-motion` block in `toggle-tip.css`.** The content entry animation and the trigger transitions are not explicitly collapsed on the media query. The next promotion should add a `@media (prefers-reduced-motion: reduce)` block.
240
- 4. **Popover does not mirror the `data-dsx-*` theme contract.** The component uses `Popover.Root` / `Popover.Content` directly instead of going through the `BaseDialog` portal helper. The portal content does not receive `data-accent-color`, `data-dsx-density`, etc. The next promotion should route through `BaseDialog` (or an equivalent helper) so the popover content tracks the active theme.
241
- 5. **Open state is internal.** The runtime does not expose `open` or `onOpenChange` props. Consumers that need to react to open state (for example, to dismiss a sibling popover) cannot subscribe.
242
- 6. **`size` is written to the root, but the `side` modifier is written to the content.** The split mirrors the source and is consistent with the Radix Popover placement model, but it means the consumer cannot style a `size` variant on the content region from the parent theme alone.
113
+ Radix Popover owns positioning and focus behavior. The package owns trigger
114
+ size, glyph, styling, internal open state and theme mirroring; the consumer
115
+ owns help copy, placement and trigger label. Custom children remain content
116
+ inside the trigger button. `asChild` applies to the outer host only.
243
117
 
244
118
  ## Penpot build recipe
245
119
 
246
- > Optional. Penpot is a visual reference, not a code authority. Keep this section when the component has a published Penpot asset, or when the spec needs to call out a visual decision the package does not encode. Skip the section when the component is utility or layout-primitive; the package code is the only authority.
247
-
248
- The package does not yet publish a Penpot asset for ToggleTip. Recipe is visual reference only and tracks the CSS contract.
249
-
250
- ### Root board
251
-
252
- - **Name**: `Components / ToggleTip`.
253
- - **Dimensions**: `auto × auto` (the root is an inline-flex wrapper; the content panel is a separate popover board).
254
- - **Layout**: `Flex` (row) for the root; the popover content is its own board positioned relative to the trigger.
255
- - **Sizing**: `horizontalSizing = 'auto'`, `verticalSizing = 'auto'`.
256
-
257
- ### Layer tree
258
-
259
- ```
260
- <Root Board: ToggleTip>
261
- ├── <Button: trigger (Info icon)>
262
- └── <Popover Content Board (portal-mounted)>
263
- ├── <Frame: panel>
264
- │ └── <Text: content>
265
- └── <Shape: arrow>
266
- ```
267
-
268
- ### Token bindings (Penpot properties)
269
-
270
- | Shape | Property | Token | Token type | Penpot property name |
271
- |---|---|---|---|---|
272
- | Trigger | fill | `transparent` | Color | `fills` |
273
- | Trigger | text | `--dsx-color-on-surface-variant` | Color | `fills` |
274
- | Trigger (hover) | fill | `--dsx-effect-hover-layer` | Color | `fills` (state) |
275
- | Trigger (hover) | text | `--dsx-color-primary` | Color | `fills` (state) |
276
- | Panel | fill | `--dsx-color-panel-translucent` | Color | `fills` |
277
- | Panel | stroke | `--dsx-color-outline` | Color | `strokes` |
278
- | Panel | radius | `--dsx-rounded-md` | Radius | `radius` |
279
- | Panel | shadow | `--dsx-shadow-3` | Effect | `shadow` |
280
- | Panel | typography | `--dsx-typography-body-small-*` | Typography | `typography` |
281
- | Panel | text | `--dsx-color-on-surface` | Color | `fills` |
282
- | Arrow | fill | `--dsx-color-panel-translucent` | Color | `fills` |
283
-
284
- ### State transformations
285
-
286
- | State | Trigger fill | Trigger text | Panel visibility |
287
- |---|---|---|---|
288
- | `default` | `transparent` | `--dsx-color-on-surface-variant` | hidden |
289
- | `hover` | `--dsx-effect-hover-layer` | `--dsx-color-primary` | hidden |
290
- | `open` | (per hover state) | (per hover state) | visible (with entry animation) |
291
-
292
- ### Variant model
293
-
294
- - `side`: `top`, `right`, `bottom`, `left`. Default `top`. (CSS consumer pending; see Anomalies.)
295
- - `size`: `sm`, `md`, `lg`. Default `md`. (CSS consumer pending; see Anomalies.)
296
- - Total members for the visual matrix: 1 today; the size and side axes are reserved for a future promotion.
297
-
298
- ### Validation checklist
299
-
300
- - [ ] Token bindings resolve at the values `DESIGN.md` describes.
301
- - [ ] Component is promoted to Main Component under `Components`.
302
- - [ ] `penpotUtils.shapeStructure(board, 3)` matches the expected hierarchy.
303
- - [ ] The trigger default label is `Show information`; do not treat the label as themable in Penpot.
304
- - [ ] The default trigger glyph is the `Info` Icon; do not treat the glyph as themable in Penpot.
305
- - [ ] When the `data-size` and `dsx-toggle-tip--side-{side}` CSS consumers land, re-run the spec QA and re-validate the Penpot recipe against the new CSS.
306
- - [ ] When the `BaseDialog` portal routing lands, re-run the spec QA and confirm the content region tracks `data-accent-color` and the rest of the theme contract.
120
+ No published ToggleTip asset is changed by this package review. A future mirror
121
+ must use the 24/32/40px trigger boxes, matching surface-colored arrow, active
122
+ state and current token bindings above; side is a placement axis, not another
123
+ surface treatment.
@@ -29,9 +29,9 @@ A dense editor-style action strip with roving-focus arrow-key movement, used for
29
29
  | `Toolbar` (root) | `<div role="toolbar">` (Radix `Toolbar.Root`) | `dsx-toolbar` | Root. Writes `data-size`. Forwards orientation, dir, and roving-focus props from Radix. |
30
30
  | `Toolbar.Button` | Radix `Toolbar.Button` | `dsx-toolbar__button` | Standard action button. |
31
31
  | `Toolbar.ToggleButton` | Radix `Toolbar.ToggleItem` | `dsx-toolbar__toggle-button` | Pressed / unpressed button. Reads `pressed` / `defaultPressed` from Radix. |
32
- | `Toolbar.ToggleGroup` | Radix `Toolbar.ToggleGroup` | `dsx-toolbar__toggle-group` | Co-ordinated group of `ToggleButton`s. Accepts `type="single" \| "multiple"` and `value` / `defaultValue` / `onValueChange` from Radix. Children are visually joined with shared borders and rounded corners. |
32
+ | `Toolbar.ToggleGroup` | Radix `Toolbar.ToggleGroup` | `dsx-toolbar__toggle-group` | Co-ordinated group of `ToggleButton`s. Accepts `type="single" \| "multiple"` and `value` / `defaultValue` / `onValueChange` from Radix. Children are visually joined with shared rounded ends. |
33
33
  | `Toolbar.Link` | Radix `Toolbar.Link` | `dsx-toolbar__link` | Anchor inside the toolbar. |
34
- | `Toolbar.Separator` | Radix `Toolbar.Separator` | `dsx-toolbar__separator` | Vertical divider. Renders `var(--dsx-control-separator-color)` and is sized `var(--dsx-size-md)` tall. |
34
+ | `Toolbar.Separator` | Radix `Toolbar.Separator` | `dsx-toolbar__separator` | Divider perpendicular to the root orientation. Uses `var(--dsx-control-separator-color)` and a non-shrinking 1px seam; its length follows control height minus `space-sm`. |
35
35
 
36
36
  **Internal layout:**
37
37
 
@@ -46,13 +46,13 @@ A dense editor-style action strip with roving-focus arrow-key movement, used for
46
46
 
47
47
  | Prop | Type | Default | Required | Description | Responsive |
48
48
  |---|---|---|---|---|---|
49
- | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | no | Density scale. Writes `data-size`. | no |
50
- | `orientation` | `'horizontal' \| 'vertical'` | `'horizontal'` | no | Inherited from Radix `Toolbar.Root`. Determines roving-focus direction. | no |
49
+ | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | no | Density scale: minimum button/link heights of 24/32/40px for sm/md/lg. Writes `data-size`. | no |
50
+ | `orientation` | `'horizontal' \| 'vertical'` | `'horizontal'` | no | Inherited from Radix `Toolbar.Root`. Determines both visual layout and roving-focus direction. | no |
51
51
  | `dir` | `'ltr' \| 'rtl'` | `undefined` | no | Inherited from Radix `Toolbar.Root`. | no |
52
52
  | `loop` | `boolean` | `true` | no | Inherited from Radix `Toolbar.Root`. Whether roving focus wraps. | no |
53
53
  | `asChild` | `boolean` | `false` | no | Inherited from Radix. | no |
54
54
 
55
- The root accepts every prop supported by `@radix-ui/react-toolbar`'s `Root`. The `extractProps` call strips `asChild` (Radix handles it) and `size` (consumed for `data-size`); the rest are forwarded.
55
+ The root accepts every prop supported by `@radix-ui/react-toolbar`'s `Root`. The `extractProps` call consumes and forwards `asChild` to Radix and `size` (consumed for `data-size`); the rest are forwarded.
56
56
 
57
57
  **Slot props:**
58
58
 
@@ -89,7 +89,7 @@ The root accepts every prop supported by `@radix-ui/react-toolbar`'s `Root`. The
89
89
 
90
90
  **Responsive behavior:**
91
91
 
92
- - The component does not write `@media` rules. Responsive layout comes from the layout primitives' responsive classes when the consumer wraps the toolbar in a responsive shell.
92
+ - The component does not use width breakpoints. Responsive layout comes from the layout primitives' responsive classes when the consumer wraps the toolbar in a responsive shell.
93
93
 
94
94
  **Reduced motion:**
95
95
 
@@ -109,7 +109,7 @@ Every CSS value the component paints is a `var(--dsx-*)` token. The base interac
109
109
  | Root shadow | `var(--dsx-effect-shadow-1)` | Elevation |
110
110
  | Compact root gap | `var(--dsx-space-xs)` | Compact variant gap |
111
111
  | Compact root padding | `var(--dsx-space-xs)` | Compact variant padding |
112
- | Button / Link / ToggleButton min-height | `var(--dsx-size-lg)` | Min hit target |
112
+ | Button / Link / ToggleButton min-height | sm `var(--dsx-size-md)`, md `var(--dsx-size-lg)`, lg `var(--dsx-size-xl)` | Min hit target |
113
113
  | Button / Link / ToggleButton padding-inline | `var(--dsx-space-sm)` | Horizontal padding |
114
114
  | Button / Link / ToggleButton radius | `var(--dsx-rounded-md)` | Roundness |
115
115
  | Button / Link / ToggleButton color | `var(--dsx-color-on-surface)` | Default text color |
@@ -149,7 +149,7 @@ The component has no motion. Roving focus and pressed-state transitions are hand
149
149
 
150
150
  **Focus:**
151
151
 
152
- - Visible focus ring is provided by the base button styles (`src/_internal/baseButton.css`).
152
+ - Visible focus ring is declared on the toolbar button/link/toggle slot classes using the canonical token.
153
153
  - The roving-focus ring skips disabled items.
154
154
 
155
155
  **Reduced motion:**
@@ -158,7 +158,7 @@ The component has no motion. Roving focus and pressed-state transitions are hand
158
158
 
159
159
  **Color and meaning:**
160
160
 
161
- - Pressed state is communicated by `aria-pressed` and a visual treatment from the base button. Color is not used alone.
161
+ - Pressed state is communicated by `aria-pressed` and an accent-surface treatment on the toggle slot. Color is not used alone.
162
162
  - Disabled state is communicated by `disabled` attribute and reduced opacity from the base button.
163
163
 
164
164
  **Naming:**
@@ -166,38 +166,11 @@ The component has no motion. Roving focus and pressed-state transitions are hand
166
166
  - Icon-only `Toolbar.Button` / `Toolbar.ToggleButton` slots must carry an accessible name (`aria-label` or visible label text). `Toolbar.Link` carries its anchor text.
167
167
  - The toolbar as a whole should have an accessible name via `aria-label` (Radix does not set a default).
168
168
 
169
- ## Playground demo spec
170
-
171
- **Default story:**
172
-
173
- - Renders a `Toolbar` with `aria-label="Editor toolbar"` containing two `Toolbar.Button`s and a `Toolbar.Separator`. Asserts the root has `role="toolbar"` and the matching `aria-label`.
174
-
175
- **Variant story:**
176
-
177
- - Renders a `Toolbar.ToggleGroup` with `type="multiple"` and two `Toolbar.ToggleButton`s. Asserts the toggle group renders with `role="group"` (or `role="toolbar"` when nested) and the toggle buttons are reachable by roving focus.
178
-
179
- **State story:**
180
-
181
- - Renders a `Toolbar.ToggleGroup` with one `Toolbar.ToggleButton defaultPressed`. Asserts `aria-pressed="true"` on that button.
182
-
183
- **Composition story:**
184
-
185
- - Renders a `Toolbar` containing a `Toolbar.Button`, a `Toolbar.Separator`, a `Toolbar.ToggleGroup`, and a `Toolbar.Link`. Asserts all slot classes render.
169
+ The matrix exposes size and orientation. The live formatter has multiple text-style toggles and a single alignment group, separated by the toolbar seam. Its state changes actual sample text. A named vertical action example includes a disabled control.
186
170
 
187
- **Token story:**
188
-
189
- - Renders the default toolbar inside a `Theme` wrapper with `accentColor="silver"` and `accentColor="bronze"`. Asserts the toolbar surface tracks `--dsx-color-surface-raised` and is unaffected by the accent token; pressed toggle buttons track the primary palette through the base button styles.
190
-
191
- **A11y story:**
192
-
193
- - Uses `vitest-axe` against the default story. Asserts no axe violations.
194
-
195
- **Props exposed in the playground controls:**
171
+ ## Playground demo spec
196
172
 
197
- | Prop | Control | Default |
198
- |---|---|---|
199
- | `size` | select | `md` |
200
- | `orientation` | select | `horizontal` |
173
+ The matrix exposes sm/md/lg and horizontal/vertical orientation. A working formatter uses multiple bold/italic/strikethrough toggles with supported icons, a separator, and single L/C/R alignment with full accessible names. State changes the sample text. A separate vertical action strip includes a disabled control. Seams are perpendicular, non-shrinking and density-aware.
201
174
 
202
175
  ## Wiring notes
203
176
 
@@ -225,3 +198,7 @@ The component has no motion. Roving focus and pressed-state transitions are hand
225
198
  ## Penpot build recipe
226
199
 
227
200
  > Optional. Penpot is a visual reference, not a code authority. The package source is the only authority. Skip the section when the component is fully covered by the spec above; the spec's CSS class contract and token mapping table are the binding deliverable.
201
+
202
+ Toolbar controls wrap intrinsically within the available container. Vertical orientation stacks controls; explicitly vertical ToggleGroups stack their children with the corresponding joined end radii. Disabled controls use the opacity-disabled token; hover, pressed, selected and focus treatments are declared on toolbar slots. Horizontal separators paint a 1px line when the toolbar is vertical.
203
+
204
+ Root, Button, ToggleButton, Link, and Separator forward their advertised asChild prop to Radix so consumer hosts retain slot classes and behavior.
@@ -112,7 +112,7 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
112
112
 
113
113
  | Property | Token | Role |
114
114
  |---|---|---|
115
- | Max width | `var(--dsx-tooltip-max-width)` | Content max width |
115
+ | Max width | `min(var(--dsx-tooltip-max-width), var(--radix-tooltip-content-available-width))` | Content max width |
116
116
  | Border radius | `var(--dsx-rounded-sm)` | Content corner roundness |
117
117
  | Padding (block) | `var(--dsx-space-xs)` | Vertical padding |
118
118
  | Padding (inline) | `var(--dsx-space-sm)` | Horizontal padding |
@@ -127,11 +127,11 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
127
127
  | Font size | `var(--dsx-typography-label-small-font-size)` | Label font size |
128
128
  | Font weight | `var(--dsx-typography-label-small-font-weight)` | Label font weight |
129
129
  | Line height | `var(--dsx-typography-label-small-line-height)` | Label line height |
130
- | Arrow fill | `currentColor` (CSS keyword) | Arrow picks up the content text color |
130
+ | Arrow fill | `--_tooltip-background` | Arrow matches its surface |
131
131
 
132
132
  Rules:
133
133
 
134
- - The arrow uses `currentColor` so it always matches the content's text color. This is the standard pattern for Radix tooltips; the CSS does not introduce a new token.
134
+ - The arrow uses the same local background variable as its surface. Default/primary/error resolve to panel-translucent/primary/error. No new public token is introduced.
135
135
  - No raw color, spacing, radius, or motion values in the CSS file.
136
136
 
137
137
  ## Motion contract
@@ -196,7 +196,7 @@ Rules:
196
196
 
197
197
  **Token story:**
198
198
 
199
- - Renders `TooltipContent` inside a `Theme` wrapper with `accentColor="silver"` and one with `accentColor="bronze"`. Asserts the portal-mirrored `data-accent-color` attribute resolves to the active accent on the content root.
199
+ - Renders `TooltipContent` inside a `Theme` wrapper with `accentColor="astral"` and one with `accentColor="spark"`. Asserts the portal-mirrored `data-accent-color` attribute resolves to the active accent on the content root.
200
200
 
201
201
  **A11y story:**
202
202
 
@@ -253,7 +253,7 @@ The package does not yet publish a Penpot asset for Tooltip. Recipe is visual re
253
253
  ├── <Trigger: host element (button or slotted child)>
254
254
  └── <Portal: position-relative wrapper>
255
255
  └── <Content: dsx-tooltip, dsx-tooltip--<variant>>
256
- └── <Arrow: dsx-tooltip__arrow, currentColor fill>
256
+ └── <Arrow: dsx-tooltip__arrow, surface-colored fill>
257
257
  ```
258
258
 
259
259
  ### Token bindings (Penpot properties)
@@ -272,7 +272,7 @@ The package does not yet publish a Penpot asset for Tooltip. Recipe is visual re
272
272
  | Content (error) | color | `--dsx-color-on-error` | Color | `text-color` (state) |
273
273
  | Content | shadow | `--dsx-shadow-elevation-2` | Shadow | `shadow` |
274
274
  | Content | font | `--dsx-typography-label-small-font-*` | Typography | `typography` |
275
- | Arrow | fill | `currentColor` | (CSS keyword) | `fills` |
275
+ | Arrow | fill | Same background token as current variant | Color | `fills` |
276
276
 
277
277
  ### State transformations
278
278
 
@@ -293,4 +293,10 @@ The package does not yet publish a Penpot asset for Tooltip. Recipe is visual re
293
293
  - [ ] Token bindings resolve at the values `DESIGN.md` describes.
294
294
  - [ ] Component is promoted to Main Component under `Primitives`.
295
295
  - [ ] `penpotUtils.shapeStructure(board, 3)` matches the expected hierarchy.
296
- - [ ] The arrow shape uses `currentColor` so it tracks the variant text color.
296
+ - [ ] The arrow shape matches the variant background.
297
+
298
+ ## Overlay review constraints
299
+
300
+ The tooltip uses border-box sizing, wraps long words and caps to Radix available
301
+ width. Its layer is modal + 1. `/docs/tooltip` keeps Save usable with or without
302
+ its shortcut hint, and compares three variants and all requested sides.