@d4gger/design-system 3.0.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (772) hide show
  1. package/README.md +19 -0
  2. package/dist/{components/controlGroup/ControlGroup.cjs → _internal/floatingLayer.cjs} +11 -26
  3. package/dist/_internal/floatingLayer.cjs.map +7 -0
  4. package/dist/_internal/floatingLayer.d.cts +28 -0
  5. package/dist/_internal/floatingLayer.d.cts.map +1 -0
  6. package/dist/_internal/floatingLayer.d.mts +28 -0
  7. package/dist/_internal/floatingLayer.d.mts.map +1 -0
  8. package/dist/_internal/floatingLayer.d.ts +28 -0
  9. package/dist/_internal/floatingLayer.d.ts.map +1 -0
  10. package/dist/_internal/floatingLayer.js +11 -0
  11. package/dist/_internal/floatingLayer.js.map +7 -0
  12. package/dist/components/accordion.css +9 -2
  13. package/dist/components/alert/Alert.cjs +11 -7
  14. package/dist/components/alert/Alert.cjs.map +2 -2
  15. package/dist/components/alert/Alert.d.cts.map +1 -1
  16. package/dist/components/alert/Alert.d.mts.map +1 -1
  17. package/dist/components/alert/Alert.d.ts.map +1 -1
  18. package/dist/components/alert/Alert.js +12 -8
  19. package/dist/components/alert/Alert.js.map +2 -2
  20. package/dist/components/alert.css +13 -0
  21. package/dist/components/article-nodes.css +16 -1
  22. package/dist/components/articleNodes/ArticleNodes.cjs +46 -5
  23. package/dist/components/articleNodes/ArticleNodes.cjs.map +2 -2
  24. package/dist/components/articleNodes/ArticleNodes.d.cts +7 -3
  25. package/dist/components/articleNodes/ArticleNodes.d.cts.map +1 -1
  26. package/dist/components/articleNodes/ArticleNodes.d.mts +7 -3
  27. package/dist/components/articleNodes/ArticleNodes.d.mts.map +1 -1
  28. package/dist/components/articleNodes/ArticleNodes.d.ts +7 -3
  29. package/dist/components/articleNodes/ArticleNodes.d.ts.map +1 -1
  30. package/dist/components/articleNodes/ArticleNodes.js +46 -5
  31. package/dist/components/articleNodes/ArticleNodes.js.map +2 -2
  32. package/dist/components/articleNodes/articleExtensions.cjs +21 -4
  33. package/dist/components/articleNodes/articleExtensions.cjs.map +2 -2
  34. package/dist/components/articleNodes/articleExtensions.d.cts +8 -2
  35. package/dist/components/articleNodes/articleExtensions.d.cts.map +1 -1
  36. package/dist/components/articleNodes/articleExtensions.d.mts +8 -2
  37. package/dist/components/articleNodes/articleExtensions.d.mts.map +1 -1
  38. package/dist/components/articleNodes/articleExtensions.d.ts +8 -2
  39. package/dist/components/articleNodes/articleExtensions.d.ts.map +1 -1
  40. package/dist/components/articleNodes/articleExtensions.js +21 -4
  41. package/dist/components/articleNodes/articleExtensions.js.map +2 -2
  42. package/dist/components/articleNodes/articleNodeViews.cjs +154 -0
  43. package/dist/components/articleNodes/articleNodeViews.cjs.map +7 -0
  44. package/dist/components/articleNodes/articleNodeViews.d.cts +3 -0
  45. package/dist/components/articleNodes/articleNodeViews.d.cts.map +1 -0
  46. package/dist/components/articleNodes/articleNodeViews.d.mts +3 -0
  47. package/dist/components/articleNodes/articleNodeViews.d.mts.map +1 -0
  48. package/dist/components/articleNodes/articleNodeViews.d.ts +3 -0
  49. package/dist/components/articleNodes/articleNodeViews.d.ts.map +1 -0
  50. package/dist/components/articleNodes/articleNodeViews.js +124 -0
  51. package/dist/components/articleNodes/articleNodeViews.js.map +7 -0
  52. package/dist/components/articleNodes/articleNodes.props.cjs.map +1 -1
  53. package/dist/components/articleNodes/articleNodes.props.d.cts +25 -2
  54. package/dist/components/articleNodes/articleNodes.props.d.cts.map +1 -1
  55. package/dist/components/articleNodes/articleNodes.props.d.mts +25 -2
  56. package/dist/components/articleNodes/articleNodes.props.d.mts.map +1 -1
  57. package/dist/components/articleNodes/articleNodes.props.d.ts +25 -2
  58. package/dist/components/articleNodes/articleNodes.props.d.ts.map +1 -1
  59. package/dist/components/banner/Banner.cjs +105 -0
  60. package/dist/components/banner/Banner.cjs.map +7 -0
  61. package/dist/components/banner/Banner.d.cts +27 -0
  62. package/dist/components/banner/Banner.d.cts.map +1 -0
  63. package/dist/components/banner/Banner.d.mts +27 -0
  64. package/dist/components/banner/Banner.d.mts.map +1 -0
  65. package/dist/components/banner/Banner.d.ts +27 -0
  66. package/dist/components/banner/Banner.d.ts.map +1 -0
  67. package/dist/components/banner/Banner.js +80 -0
  68. package/dist/components/banner/Banner.js.map +7 -0
  69. package/dist/components/{controlGroup/controlGroup.props.cjs → banner/banner.props.cjs} +23 -16
  70. package/dist/components/banner/banner.props.cjs.map +7 -0
  71. package/dist/components/banner/banner.props.d.cts +32 -0
  72. package/dist/components/banner/banner.props.d.cts.map +1 -0
  73. package/dist/components/banner/banner.props.d.mts +32 -0
  74. package/dist/components/banner/banner.props.d.mts.map +1 -0
  75. package/dist/components/banner/banner.props.d.ts +32 -0
  76. package/dist/components/banner/banner.props.d.ts.map +1 -0
  77. package/dist/components/banner/banner.props.js +27 -0
  78. package/dist/components/banner/banner.props.js.map +7 -0
  79. package/dist/components/banner.css +61 -0
  80. package/dist/components/blockquote.css +7 -4
  81. package/dist/components/bottom-dock.css +132 -0
  82. package/dist/components/bottomDock/BottomDock.cjs +140 -0
  83. package/dist/components/bottomDock/BottomDock.cjs.map +7 -0
  84. package/dist/components/bottomDock/BottomDock.d.cts +25 -0
  85. package/dist/components/bottomDock/BottomDock.d.cts.map +1 -0
  86. package/dist/components/bottomDock/BottomDock.d.mts +25 -0
  87. package/dist/components/bottomDock/BottomDock.d.mts.map +1 -0
  88. package/dist/components/bottomDock/BottomDock.d.ts +25 -0
  89. package/dist/components/bottomDock/BottomDock.d.ts.map +1 -0
  90. package/dist/components/bottomDock/BottomDock.js +110 -0
  91. package/dist/components/bottomDock/BottomDock.js.map +7 -0
  92. package/dist/components/bottomDock/bottomDock.props.cjs +49 -0
  93. package/dist/components/bottomDock/bottomDock.props.cjs.map +7 -0
  94. package/dist/components/bottomDock/bottomDock.props.d.cts +29 -0
  95. package/dist/components/bottomDock/bottomDock.props.d.cts.map +1 -0
  96. package/dist/components/bottomDock/bottomDock.props.d.mts +29 -0
  97. package/dist/components/bottomDock/bottomDock.props.d.mts.map +1 -0
  98. package/dist/components/bottomDock/bottomDock.props.d.ts +29 -0
  99. package/dist/components/bottomDock/bottomDock.props.d.ts.map +1 -0
  100. package/dist/components/bottomDock/bottomDock.props.js +29 -0
  101. package/dist/components/bottomDock/bottomDock.props.js.map +7 -0
  102. package/dist/components/breadcrumb.css +24 -3
  103. package/dist/components/button-group.css +25 -0
  104. package/dist/components/button.css +9 -0
  105. package/dist/components/callout.css +20 -7
  106. package/dist/components/card.css +11 -0
  107. package/dist/components/carousel/Carousel.cjs +109 -39
  108. package/dist/components/carousel/Carousel.cjs.map +3 -3
  109. package/dist/components/carousel/Carousel.d.cts.map +1 -1
  110. package/dist/components/carousel/Carousel.d.mts.map +1 -1
  111. package/dist/components/carousel/Carousel.d.ts.map +1 -1
  112. package/dist/components/carousel/Carousel.js +111 -41
  113. package/dist/components/carousel/Carousel.js.map +3 -3
  114. package/dist/components/carousel.css +93 -26
  115. package/dist/components/chart/Chart.cjs +61 -11
  116. package/dist/components/chart/Chart.cjs.map +2 -2
  117. package/dist/components/chart/Chart.d.cts.map +1 -1
  118. package/dist/components/chart/Chart.d.mts.map +1 -1
  119. package/dist/components/chart/Chart.d.ts.map +1 -1
  120. package/dist/components/chart/Chart.js +62 -11
  121. package/dist/components/chart/Chart.js.map +2 -2
  122. package/dist/components/chart.css +10 -1
  123. package/dist/components/checkbox.css +14 -0
  124. package/dist/components/code.css +29 -13
  125. package/dist/components/collapsible/Collapsible.cjs +4 -0
  126. package/dist/components/collapsible/Collapsible.cjs.map +2 -2
  127. package/dist/components/collapsible/Collapsible.d.cts.map +1 -1
  128. package/dist/components/collapsible/Collapsible.d.mts.map +1 -1
  129. package/dist/components/collapsible/Collapsible.d.ts.map +1 -1
  130. package/dist/components/collapsible/Collapsible.js +4 -0
  131. package/dist/components/collapsible/Collapsible.js.map +2 -2
  132. package/dist/components/collapsible.css +10 -1
  133. package/dist/components/combobox/Combobox.cjs +3 -1
  134. package/dist/components/combobox/Combobox.cjs.map +2 -2
  135. package/dist/components/combobox/Combobox.d.cts.map +1 -1
  136. package/dist/components/combobox/Combobox.d.mts.map +1 -1
  137. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  138. package/dist/components/combobox/Combobox.js +3 -1
  139. package/dist/components/combobox/Combobox.js.map +2 -2
  140. package/dist/components/combobox.css +5 -1
  141. package/dist/components/command/Command.cjs +1 -1
  142. package/dist/components/command/Command.cjs.map +2 -2
  143. package/dist/components/command/Command.js +1 -1
  144. package/dist/components/command/Command.js.map +2 -2
  145. package/dist/components/command.css +0 -2
  146. package/dist/components/comment-thread.css +15 -7
  147. package/dist/components/commentThread/CommentThread.cjs +45 -17
  148. package/dist/components/commentThread/CommentThread.cjs.map +2 -2
  149. package/dist/components/commentThread/CommentThread.d.cts +6 -6
  150. package/dist/components/commentThread/CommentThread.d.cts.map +1 -1
  151. package/dist/components/commentThread/CommentThread.d.mts +6 -6
  152. package/dist/components/commentThread/CommentThread.d.mts.map +1 -1
  153. package/dist/components/commentThread/CommentThread.d.ts +6 -6
  154. package/dist/components/commentThread/CommentThread.d.ts.map +1 -1
  155. package/dist/components/commentThread/CommentThread.js +45 -17
  156. package/dist/components/commentThread/CommentThread.js.map +2 -2
  157. package/dist/components/commentThread/commentThread.props.cjs.map +1 -1
  158. package/dist/components/commentThread/commentThread.props.d.cts +24 -0
  159. package/dist/components/commentThread/commentThread.props.d.cts.map +1 -1
  160. package/dist/components/commentThread/commentThread.props.d.mts +24 -0
  161. package/dist/components/commentThread/commentThread.props.d.mts.map +1 -1
  162. package/dist/components/commentThread/commentThread.props.d.ts +24 -0
  163. package/dist/components/commentThread/commentThread.props.d.ts.map +1 -1
  164. package/dist/components/config-drawer.css +7 -3
  165. package/dist/components/configDrawer/ConfigDrawer.cjs +1 -1
  166. package/dist/components/configDrawer/ConfigDrawer.cjs.map +2 -2
  167. package/dist/components/configDrawer/ConfigDrawer.js +1 -1
  168. package/dist/components/configDrawer/ConfigDrawer.js.map +2 -2
  169. package/dist/components/context-menu.css +4 -2
  170. package/dist/components/contextMenu/ContextMenu.cjs +37 -6
  171. package/dist/components/contextMenu/ContextMenu.cjs.map +2 -2
  172. package/dist/components/contextMenu/ContextMenu.d.cts +1 -1
  173. package/dist/components/contextMenu/ContextMenu.d.cts.map +1 -1
  174. package/dist/components/contextMenu/ContextMenu.d.mts +1 -1
  175. package/dist/components/contextMenu/ContextMenu.d.mts.map +1 -1
  176. package/dist/components/contextMenu/ContextMenu.d.ts +1 -1
  177. package/dist/components/contextMenu/ContextMenu.d.ts.map +1 -1
  178. package/dist/components/contextMenu/ContextMenu.js +37 -6
  179. package/dist/components/contextMenu/ContextMenu.js.map +2 -2
  180. package/dist/components/copy-field.css +18 -0
  181. package/dist/components/copyField/CopyField.cjs +3 -3
  182. package/dist/components/copyField/CopyField.cjs.map +2 -2
  183. package/dist/components/copyField/CopyField.d.cts.map +1 -1
  184. package/dist/components/copyField/CopyField.d.mts.map +1 -1
  185. package/dist/components/copyField/CopyField.d.ts.map +1 -1
  186. package/dist/components/copyField/CopyField.js +3 -3
  187. package/dist/components/copyField/CopyField.js.map +2 -2
  188. package/dist/components/data-list.css +19 -4
  189. package/dist/components/data-table.css +190 -0
  190. package/dist/components/dataTable/DataTable.cjs +193 -68
  191. package/dist/components/dataTable/DataTable.cjs.map +3 -3
  192. package/dist/components/dataTable/DataTable.d.cts +29 -1
  193. package/dist/components/dataTable/DataTable.d.cts.map +1 -1
  194. package/dist/components/dataTable/DataTable.d.mts +29 -1
  195. package/dist/components/dataTable/DataTable.d.mts.map +1 -1
  196. package/dist/components/dataTable/DataTable.d.ts +29 -1
  197. package/dist/components/dataTable/DataTable.d.ts.map +1 -1
  198. package/dist/components/dataTable/DataTable.js +193 -68
  199. package/dist/components/dataTable/DataTable.js.map +2 -2
  200. package/dist/components/dataTable/DataTableContext.cjs +41 -0
  201. package/dist/components/dataTable/DataTableContext.cjs.map +7 -0
  202. package/dist/components/dataTable/DataTableContext.d.cts +23 -0
  203. package/dist/components/dataTable/DataTableContext.d.cts.map +1 -0
  204. package/dist/components/dataTable/DataTableContext.d.mts +23 -0
  205. package/dist/components/dataTable/DataTableContext.d.mts.map +1 -0
  206. package/dist/components/dataTable/DataTableContext.d.ts +23 -0
  207. package/dist/components/dataTable/DataTableContext.d.ts.map +1 -0
  208. package/dist/components/dataTable/DataTableContext.js +11 -0
  209. package/dist/components/dataTable/DataTableContext.js.map +7 -0
  210. package/dist/components/dataTable/DataTablePagination.cjs +72 -47
  211. package/dist/components/dataTable/DataTablePagination.cjs.map +2 -2
  212. package/dist/components/dataTable/DataTablePagination.d.cts +5 -1
  213. package/dist/components/dataTable/DataTablePagination.d.cts.map +1 -1
  214. package/dist/components/dataTable/DataTablePagination.d.mts +5 -1
  215. package/dist/components/dataTable/DataTablePagination.d.mts.map +1 -1
  216. package/dist/components/dataTable/DataTablePagination.d.ts +5 -1
  217. package/dist/components/dataTable/DataTablePagination.d.ts.map +1 -1
  218. package/dist/components/dataTable/DataTablePagination.js +75 -47
  219. package/dist/components/dataTable/DataTablePagination.js.map +2 -2
  220. package/dist/components/dataTable/DataTableToolbar.cjs +122 -93
  221. package/dist/components/dataTable/DataTableToolbar.cjs.map +2 -2
  222. package/dist/components/dataTable/DataTableToolbar.d.cts +6 -5
  223. package/dist/components/dataTable/DataTableToolbar.d.cts.map +1 -1
  224. package/dist/components/dataTable/DataTableToolbar.d.mts +6 -5
  225. package/dist/components/dataTable/DataTableToolbar.d.mts.map +1 -1
  226. package/dist/components/dataTable/DataTableToolbar.d.ts +6 -5
  227. package/dist/components/dataTable/DataTableToolbar.d.ts.map +1 -1
  228. package/dist/components/dataTable/DataTableToolbar.js +123 -94
  229. package/dist/components/dataTable/DataTableToolbar.js.map +2 -2
  230. package/dist/components/dataTable/dataTable.export.cjs +83 -0
  231. package/dist/components/dataTable/dataTable.export.cjs.map +7 -0
  232. package/dist/components/dataTable/dataTable.export.d.cts +11 -0
  233. package/dist/components/dataTable/dataTable.export.d.cts.map +1 -0
  234. package/dist/components/dataTable/dataTable.export.d.mts +11 -0
  235. package/dist/components/dataTable/dataTable.export.d.mts.map +1 -0
  236. package/dist/components/dataTable/dataTable.export.d.ts +11 -0
  237. package/dist/components/dataTable/dataTable.export.d.ts.map +1 -0
  238. package/dist/components/dataTable/dataTable.export.js +63 -0
  239. package/dist/components/dataTable/dataTable.export.js.map +7 -0
  240. package/dist/components/dataTable/dataTable.props.cjs +23 -1
  241. package/dist/components/dataTable/dataTable.props.cjs.map +2 -2
  242. package/dist/components/dataTable/dataTable.props.d.cts +21 -1
  243. package/dist/components/dataTable/dataTable.props.d.cts.map +1 -1
  244. package/dist/components/dataTable/dataTable.props.d.mts +21 -1
  245. package/dist/components/dataTable/dataTable.props.d.mts.map +1 -1
  246. package/dist/components/dataTable/dataTable.props.d.ts +21 -1
  247. package/dist/components/dataTable/dataTable.props.d.ts.map +1 -1
  248. package/dist/components/dataTable/dataTable.props.js +23 -1
  249. package/dist/components/dataTable/dataTable.props.js.map +2 -2
  250. package/dist/components/dialog/Dialog.cjs +2 -1
  251. package/dist/components/dialog/Dialog.cjs.map +2 -2
  252. package/dist/components/dialog/Dialog.d.cts.map +1 -1
  253. package/dist/components/dialog/Dialog.d.mts.map +1 -1
  254. package/dist/components/dialog/Dialog.d.ts.map +1 -1
  255. package/dist/components/dialog/Dialog.js +2 -1
  256. package/dist/components/dialog/Dialog.js.map +2 -2
  257. package/dist/components/drawer.css +23 -6
  258. package/dist/components/dropdown-menu.css +1 -1
  259. package/dist/components/dropdownMenu/DropdownMenu.cjs +10 -5
  260. package/dist/components/dropdownMenu/DropdownMenu.cjs.map +2 -2
  261. package/dist/components/dropdownMenu/DropdownMenu.d.cts.map +1 -1
  262. package/dist/components/dropdownMenu/DropdownMenu.d.mts.map +1 -1
  263. package/dist/components/dropdownMenu/DropdownMenu.d.ts.map +1 -1
  264. package/dist/components/dropdownMenu/DropdownMenu.js +10 -5
  265. package/dist/components/dropdownMenu/DropdownMenu.js.map +2 -2
  266. package/dist/components/empty-state.css +5 -0
  267. package/dist/components/file-upload.css +36 -9
  268. package/dist/components/fileUpload/FileUpload.cjs +10 -1
  269. package/dist/components/fileUpload/FileUpload.cjs.map +2 -2
  270. package/dist/components/fileUpload/FileUpload.d.cts +1 -0
  271. package/dist/components/fileUpload/FileUpload.d.cts.map +1 -1
  272. package/dist/components/fileUpload/FileUpload.d.mts +1 -0
  273. package/dist/components/fileUpload/FileUpload.d.mts.map +1 -1
  274. package/dist/components/fileUpload/FileUpload.d.ts +1 -0
  275. package/dist/components/fileUpload/FileUpload.d.ts.map +1 -1
  276. package/dist/components/fileUpload/FileUpload.js +10 -1
  277. package/dist/components/fileUpload/FileUpload.js.map +2 -2
  278. package/dist/components/filter-bar.css +380 -8
  279. package/dist/components/filterBar/FilterBar.cjs +630 -1
  280. package/dist/components/filterBar/FilterBar.cjs.map +2 -2
  281. package/dist/components/filterBar/FilterBar.d.cts +132 -2
  282. package/dist/components/filterBar/FilterBar.d.cts.map +1 -1
  283. package/dist/components/filterBar/FilterBar.d.mts +132 -2
  284. package/dist/components/filterBar/FilterBar.d.mts.map +1 -1
  285. package/dist/components/filterBar/FilterBar.d.ts +132 -2
  286. package/dist/components/filterBar/FilterBar.d.ts.map +1 -1
  287. package/dist/components/filterBar/FilterBar.js +631 -2
  288. package/dist/components/filterBar/FilterBar.js.map +2 -2
  289. package/dist/components/floating-panel.css +50 -19
  290. package/dist/components/floatingPanel/FloatingPanel.cjs +156 -58
  291. package/dist/components/floatingPanel/FloatingPanel.cjs.map +2 -2
  292. package/dist/components/floatingPanel/FloatingPanel.d.cts.map +1 -1
  293. package/dist/components/floatingPanel/FloatingPanel.d.mts.map +1 -1
  294. package/dist/components/floatingPanel/FloatingPanel.d.ts.map +1 -1
  295. package/dist/components/floatingPanel/FloatingPanel.js +156 -58
  296. package/dist/components/floatingPanel/FloatingPanel.js.map +2 -2
  297. package/dist/components/fontProvider/FontProvider.cjs +1 -1
  298. package/dist/components/fontProvider/FontProvider.cjs.map +1 -1
  299. package/dist/components/fontProvider/FontProvider.js +1 -1
  300. package/dist/components/fontProvider/FontProvider.js.map +1 -1
  301. package/dist/components/grid/Grid.cjs +24 -35
  302. package/dist/components/grid/Grid.cjs.map +2 -2
  303. package/dist/components/grid/Grid.d.cts.map +1 -1
  304. package/dist/components/grid/Grid.d.mts.map +1 -1
  305. package/dist/components/grid/Grid.d.ts.map +1 -1
  306. package/dist/components/grid/Grid.js +24 -35
  307. package/dist/components/grid/Grid.js.map +2 -2
  308. package/dist/components/heading/Heading.cjs +1 -8
  309. package/dist/components/heading/Heading.cjs.map +2 -2
  310. package/dist/components/heading/Heading.d.cts.map +1 -1
  311. package/dist/components/heading/Heading.d.mts.map +1 -1
  312. package/dist/components/heading/Heading.d.ts.map +1 -1
  313. package/dist/components/heading/Heading.js +1 -8
  314. package/dist/components/heading/Heading.js.map +2 -2
  315. package/dist/components/heading/heading.props.cjs +9 -9
  316. package/dist/components/heading/heading.props.cjs.map +2 -2
  317. package/dist/components/heading/heading.props.d.cts +42 -43
  318. package/dist/components/heading/heading.props.d.cts.map +1 -1
  319. package/dist/components/heading/heading.props.d.mts +42 -43
  320. package/dist/components/heading/heading.props.d.mts.map +1 -1
  321. package/dist/components/heading/heading.props.d.ts +42 -43
  322. package/dist/components/heading/heading.props.d.ts.map +1 -1
  323. package/dist/components/heading/heading.props.js +9 -9
  324. package/dist/components/heading/heading.props.js.map +2 -2
  325. package/dist/components/heading.css +127 -104
  326. package/dist/components/hover-card.css +5 -2
  327. package/dist/components/icon/Icon.cjs +28 -2
  328. package/dist/components/icon/Icon.cjs.map +2 -2
  329. package/dist/components/icon/Icon.d.cts +33 -1
  330. package/dist/components/icon/Icon.d.cts.map +1 -1
  331. package/dist/components/icon/Icon.d.mts +33 -1
  332. package/dist/components/icon/Icon.d.mts.map +1 -1
  333. package/dist/components/icon/Icon.d.ts +33 -1
  334. package/dist/components/icon/Icon.d.ts.map +1 -1
  335. package/dist/components/icon/Icon.js +37 -2
  336. package/dist/components/icon/Icon.js.map +2 -2
  337. package/dist/components/icon/icons.cjs +18 -0
  338. package/dist/components/icon/icons.cjs.map +2 -2
  339. package/dist/components/icon/icons.d.cts +45 -0
  340. package/dist/components/icon/icons.d.cts.map +1 -1
  341. package/dist/components/icon/icons.d.mts +45 -0
  342. package/dist/components/icon/icons.d.mts.map +1 -1
  343. package/dist/components/icon/icons.d.ts +45 -0
  344. package/dist/components/icon/icons.d.ts.map +1 -1
  345. package/dist/components/icon/icons.js +18 -0
  346. package/dist/components/icon/icons.js.map +2 -2
  347. package/dist/components/icon-button.css +29 -0
  348. package/dist/components/index.cjs +2 -1
  349. package/dist/components/index.cjs.map +2 -2
  350. package/dist/components/index.d.cts +2 -1
  351. package/dist/components/index.d.cts.map +1 -1
  352. package/dist/components/index.d.mts +2 -1
  353. package/dist/components/index.d.mts.map +1 -1
  354. package/dist/components/index.d.ts +2 -1
  355. package/dist/components/index.d.ts.map +1 -1
  356. package/dist/components/index.js +2 -1
  357. package/dist/components/index.js.map +2 -2
  358. package/dist/components/item/Item.cjs +1 -1
  359. package/dist/components/item/Item.cjs.map +2 -2
  360. package/dist/components/item/Item.js +1 -1
  361. package/dist/components/item/Item.js.map +2 -2
  362. package/dist/components/item.css +12 -1
  363. package/dist/components/label.css +3 -0
  364. package/dist/components/link.css +33 -97
  365. package/dist/components/marquee/Marquee.cjs +1 -1
  366. package/dist/components/marquee/Marquee.cjs.map +2 -2
  367. package/dist/components/marquee/Marquee.js +1 -1
  368. package/dist/components/marquee/Marquee.js.map +2 -2
  369. package/dist/components/marquee.css +6 -0
  370. package/dist/components/menu/Menu.cjs +3 -1
  371. package/dist/components/menu/Menu.cjs.map +2 -2
  372. package/dist/components/menu/Menu.d.cts.map +1 -1
  373. package/dist/components/menu/Menu.d.mts.map +1 -1
  374. package/dist/components/menu/Menu.d.ts.map +1 -1
  375. package/dist/components/menu/Menu.js +3 -1
  376. package/dist/components/menu/Menu.js.map +2 -2
  377. package/dist/components/menubar.css +1 -1
  378. package/dist/components/metric.css +5 -0
  379. package/dist/components/notification-center.css +49 -9
  380. package/dist/components/notificationCenter/NotificationCenter.cjs +21 -16
  381. package/dist/components/notificationCenter/NotificationCenter.cjs.map +2 -2
  382. package/dist/components/notificationCenter/NotificationCenter.d.cts.map +1 -1
  383. package/dist/components/notificationCenter/NotificationCenter.d.mts.map +1 -1
  384. package/dist/components/notificationCenter/NotificationCenter.d.ts.map +1 -1
  385. package/dist/components/notificationCenter/NotificationCenter.js +22 -17
  386. package/dist/components/notificationCenter/NotificationCenter.js.map +2 -2
  387. package/dist/components/pagination/Pagination.cjs +143 -17
  388. package/dist/components/pagination/Pagination.cjs.map +2 -2
  389. package/dist/components/pagination/Pagination.d.cts +64 -4
  390. package/dist/components/pagination/Pagination.d.cts.map +1 -1
  391. package/dist/components/pagination/Pagination.d.mts +64 -4
  392. package/dist/components/pagination/Pagination.d.mts.map +1 -1
  393. package/dist/components/pagination/Pagination.d.ts +64 -4
  394. package/dist/components/pagination/Pagination.d.ts.map +1 -1
  395. package/dist/components/pagination/Pagination.js +143 -17
  396. package/dist/components/pagination/Pagination.js.map +2 -2
  397. package/dist/components/pagination.css +50 -8
  398. package/dist/components/phoneInput/PhoneInput.cjs +18 -13
  399. package/dist/components/phoneInput/PhoneInput.cjs.map +2 -2
  400. package/dist/components/phoneInput/PhoneInput.d.cts.map +1 -1
  401. package/dist/components/phoneInput/PhoneInput.d.mts.map +1 -1
  402. package/dist/components/phoneInput/PhoneInput.d.ts.map +1 -1
  403. package/dist/components/phoneInput/PhoneInput.js +19 -14
  404. package/dist/components/phoneInput/PhoneInput.js.map +2 -2
  405. package/dist/components/pills/Pills.cjs +1 -1
  406. package/dist/components/pills/Pills.cjs.map +2 -2
  407. package/dist/components/pills/Pills.js +2 -2
  408. package/dist/components/pills/Pills.js.map +2 -2
  409. package/dist/components/pills.css +6 -0
  410. package/dist/components/popover/Popover.cjs +2 -1
  411. package/dist/components/popover/Popover.cjs.map +2 -2
  412. package/dist/components/popover/Popover.d.cts.map +1 -1
  413. package/dist/components/popover/Popover.d.mts.map +1 -1
  414. package/dist/components/popover/Popover.d.ts.map +1 -1
  415. package/dist/components/popover/Popover.js +2 -1
  416. package/dist/components/popover/Popover.js.map +2 -2
  417. package/dist/components/popover.css +45 -6
  418. package/dist/components/prose.css +4 -4
  419. package/dist/components/qr-code.css +10 -17
  420. package/dist/components/qrCode/QrCode.cjs +14 -11
  421. package/dist/components/qrCode/QrCode.cjs.map +2 -2
  422. package/dist/components/qrCode/QrCode.d.cts.map +1 -1
  423. package/dist/components/qrCode/QrCode.d.mts.map +1 -1
  424. package/dist/components/qrCode/QrCode.d.ts.map +1 -1
  425. package/dist/components/qrCode/QrCode.js +14 -11
  426. package/dist/components/qrCode/QrCode.js.map +2 -2
  427. package/dist/components/radio-group.css +19 -0
  428. package/dist/components/radioGroup/RadioGroup.cjs +3 -2
  429. package/dist/components/radioGroup/RadioGroup.cjs.map +2 -2
  430. package/dist/components/radioGroup/RadioGroup.d.cts.map +1 -1
  431. package/dist/components/radioGroup/RadioGroup.d.mts.map +1 -1
  432. package/dist/components/radioGroup/RadioGroup.d.ts.map +1 -1
  433. package/dist/components/radioGroup/RadioGroup.js +3 -2
  434. package/dist/components/radioGroup/RadioGroup.js.map +2 -2
  435. package/dist/components/radioGroup/radioGroup.props.cjs +1 -1
  436. package/dist/components/radioGroup/radioGroup.props.cjs.map +2 -2
  437. package/dist/components/radioGroup/radioGroup.props.d.cts +1 -1
  438. package/dist/components/radioGroup/radioGroup.props.d.mts +1 -1
  439. package/dist/components/radioGroup/radioGroup.props.d.ts +1 -1
  440. package/dist/components/radioGroup/radioGroup.props.js +1 -1
  441. package/dist/components/radioGroup/radioGroup.props.js.map +2 -2
  442. package/dist/components/rating.css +12 -0
  443. package/dist/components/resizable.css +20 -4
  444. package/dist/components/result.css +2 -1
  445. package/dist/components/rich-text-editor.css +50 -14
  446. package/dist/components/richTextEditor/EditorTools.cjs +226 -0
  447. package/dist/components/richTextEditor/EditorTools.cjs.map +7 -0
  448. package/dist/components/richTextEditor/EditorTools.d.cts +22 -0
  449. package/dist/components/richTextEditor/EditorTools.d.cts.map +1 -0
  450. package/dist/components/richTextEditor/EditorTools.d.mts +22 -0
  451. package/dist/components/richTextEditor/EditorTools.d.mts.map +1 -0
  452. package/dist/components/richTextEditor/EditorTools.d.ts +22 -0
  453. package/dist/components/richTextEditor/EditorTools.d.ts.map +1 -0
  454. package/dist/components/richTextEditor/EditorTools.js +196 -0
  455. package/dist/components/richTextEditor/EditorTools.js.map +7 -0
  456. package/dist/components/richTextEditor/MentionSuggestions.cjs +96 -0
  457. package/dist/components/richTextEditor/MentionSuggestions.cjs.map +7 -0
  458. package/dist/components/richTextEditor/MentionSuggestions.d.cts +7 -0
  459. package/dist/components/richTextEditor/MentionSuggestions.d.cts.map +1 -0
  460. package/dist/components/richTextEditor/MentionSuggestions.d.mts +7 -0
  461. package/dist/components/richTextEditor/MentionSuggestions.d.mts.map +1 -0
  462. package/dist/components/richTextEditor/MentionSuggestions.d.ts +7 -0
  463. package/dist/components/richTextEditor/MentionSuggestions.d.ts.map +1 -0
  464. package/dist/components/richTextEditor/MentionSuggestions.js +66 -0
  465. package/dist/components/richTextEditor/MentionSuggestions.js.map +7 -0
  466. package/dist/components/richTextEditor/RichTextEditor.cjs +63 -208
  467. package/dist/components/richTextEditor/RichTextEditor.cjs.map +3 -3
  468. package/dist/components/richTextEditor/RichTextEditor.d.cts +17 -7
  469. package/dist/components/richTextEditor/RichTextEditor.d.cts.map +1 -1
  470. package/dist/components/richTextEditor/RichTextEditor.d.mts +17 -7
  471. package/dist/components/richTextEditor/RichTextEditor.d.mts.map +1 -1
  472. package/dist/components/richTextEditor/RichTextEditor.d.ts +17 -7
  473. package/dist/components/richTextEditor/RichTextEditor.d.ts.map +1 -1
  474. package/dist/components/richTextEditor/RichTextEditor.js +63 -208
  475. package/dist/components/richTextEditor/RichTextEditor.js.map +3 -3
  476. package/dist/components/richTextEditor/editorTokens.cjs +75 -0
  477. package/dist/components/richTextEditor/editorTokens.cjs.map +7 -0
  478. package/dist/components/richTextEditor/editorTokens.d.cts +21 -0
  479. package/dist/components/richTextEditor/editorTokens.d.cts.map +1 -0
  480. package/dist/components/richTextEditor/editorTokens.d.mts +21 -0
  481. package/dist/components/richTextEditor/editorTokens.d.mts.map +1 -0
  482. package/dist/components/richTextEditor/editorTokens.d.ts +21 -0
  483. package/dist/components/richTextEditor/editorTokens.d.ts.map +1 -0
  484. package/dist/components/richTextEditor/editorTokens.js +55 -0
  485. package/dist/components/richTextEditor/editorTokens.js.map +7 -0
  486. package/dist/components/scroll-area.css +12 -0
  487. package/dist/components/scrollArea/ScrollArea.cjs +12 -1
  488. package/dist/components/scrollArea/ScrollArea.cjs.map +2 -2
  489. package/dist/components/scrollArea/ScrollArea.d.cts.map +1 -1
  490. package/dist/components/scrollArea/ScrollArea.d.mts.map +1 -1
  491. package/dist/components/scrollArea/ScrollArea.d.ts.map +1 -1
  492. package/dist/components/scrollArea/ScrollArea.js +12 -1
  493. package/dist/components/scrollArea/ScrollArea.js.map +2 -2
  494. package/dist/components/segmented-control.css +80 -4
  495. package/dist/components/segmentedControl/SegmentedControl.cjs +18 -5
  496. package/dist/components/segmentedControl/SegmentedControl.cjs.map +2 -2
  497. package/dist/components/segmentedControl/SegmentedControl.d.cts.map +1 -1
  498. package/dist/components/segmentedControl/SegmentedControl.d.mts.map +1 -1
  499. package/dist/components/segmentedControl/SegmentedControl.d.ts.map +1 -1
  500. package/dist/components/segmentedControl/SegmentedControl.js +18 -5
  501. package/dist/components/segmentedControl/SegmentedControl.js.map +2 -2
  502. package/dist/components/segmentedControl/segmentedControl.props.cjs +10 -0
  503. package/dist/components/segmentedControl/segmentedControl.props.cjs.map +2 -2
  504. package/dist/components/segmentedControl/segmentedControl.props.d.cts +9 -0
  505. package/dist/components/segmentedControl/segmentedControl.props.d.cts.map +1 -1
  506. package/dist/components/segmentedControl/segmentedControl.props.d.mts +9 -0
  507. package/dist/components/segmentedControl/segmentedControl.props.d.mts.map +1 -1
  508. package/dist/components/segmentedControl/segmentedControl.props.d.ts +9 -0
  509. package/dist/components/segmentedControl/segmentedControl.props.d.ts.map +1 -1
  510. package/dist/components/segmentedControl/segmentedControl.props.js +10 -0
  511. package/dist/components/segmentedControl/segmentedControl.props.js.map +2 -2
  512. package/dist/components/select/Select.cjs +3 -1
  513. package/dist/components/select/Select.cjs.map +2 -2
  514. package/dist/components/select/Select.d.cts.map +1 -1
  515. package/dist/components/select/Select.d.mts.map +1 -1
  516. package/dist/components/select/Select.d.ts.map +1 -1
  517. package/dist/components/select/Select.js +3 -1
  518. package/dist/components/select/Select.js.map +2 -2
  519. package/dist/components/select.css +1 -1
  520. package/dist/components/separator.css +3 -9
  521. package/dist/components/sidebar/Sidebar.cjs +12 -4
  522. package/dist/components/sidebar/Sidebar.cjs.map +2 -2
  523. package/dist/components/sidebar/Sidebar.d.cts +4 -1
  524. package/dist/components/sidebar/Sidebar.d.cts.map +1 -1
  525. package/dist/components/sidebar/Sidebar.d.mts +4 -1
  526. package/dist/components/sidebar/Sidebar.d.mts.map +1 -1
  527. package/dist/components/sidebar/Sidebar.d.ts +4 -1
  528. package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
  529. package/dist/components/sidebar/Sidebar.js +12 -4
  530. package/dist/components/sidebar/Sidebar.js.map +2 -2
  531. package/dist/components/sidebar/sidebar.props.cjs +8 -1
  532. package/dist/components/sidebar/sidebar.props.cjs.map +2 -2
  533. package/dist/components/sidebar/sidebar.props.d.cts +9 -1
  534. package/dist/components/sidebar/sidebar.props.d.cts.map +1 -1
  535. package/dist/components/sidebar/sidebar.props.d.mts +9 -1
  536. package/dist/components/sidebar/sidebar.props.d.mts.map +1 -1
  537. package/dist/components/sidebar/sidebar.props.d.ts +9 -1
  538. package/dist/components/sidebar/sidebar.props.d.ts.map +1 -1
  539. package/dist/components/sidebar/sidebar.props.js +8 -1
  540. package/dist/components/sidebar/sidebar.props.js.map +2 -2
  541. package/dist/components/sidebar.css +28 -0
  542. package/dist/components/sonner.css +79 -17
  543. package/dist/components/sortableList/SortableList.cjs +8 -2
  544. package/dist/components/sortableList/SortableList.cjs.map +2 -2
  545. package/dist/components/sortableList/SortableList.d.cts.map +1 -1
  546. package/dist/components/sortableList/SortableList.d.mts.map +1 -1
  547. package/dist/components/sortableList/SortableList.d.ts.map +1 -1
  548. package/dist/components/sortableList/SortableList.js +8 -2
  549. package/dist/components/sortableList/SortableList.js.map +2 -2
  550. package/dist/components/stat-card.css +2 -0
  551. package/dist/components/stepper.css +23 -12
  552. package/dist/components/tab-nav.css +25 -13
  553. package/dist/components/tabNav/TabNav.cjs +1 -4
  554. package/dist/components/tabNav/TabNav.cjs.map +2 -2
  555. package/dist/components/tabNav/TabNav.d.cts.map +1 -1
  556. package/dist/components/tabNav/TabNav.d.mts.map +1 -1
  557. package/dist/components/tabNav/TabNav.d.ts.map +1 -1
  558. package/dist/components/tabNav/TabNav.js +1 -4
  559. package/dist/components/tabNav/TabNav.js.map +2 -2
  560. package/dist/components/table/Table.cjs +3 -2
  561. package/dist/components/table/Table.cjs.map +2 -2
  562. package/dist/components/table/Table.d.cts.map +1 -1
  563. package/dist/components/table/Table.d.mts.map +1 -1
  564. package/dist/components/table/Table.d.ts.map +1 -1
  565. package/dist/components/table/Table.js +3 -2
  566. package/dist/components/table/Table.js.map +2 -2
  567. package/dist/components/table/table.props.cjs +6 -0
  568. package/dist/components/table/table.props.cjs.map +2 -2
  569. package/dist/components/table/table.props.d.cts +5 -0
  570. package/dist/components/table/table.props.d.cts.map +1 -1
  571. package/dist/components/table/table.props.d.mts +5 -0
  572. package/dist/components/table/table.props.d.mts.map +1 -1
  573. package/dist/components/table/table.props.d.ts +5 -0
  574. package/dist/components/table/table.props.d.ts.map +1 -1
  575. package/dist/components/table/table.props.js +6 -0
  576. package/dist/components/table/table.props.js.map +2 -2
  577. package/dist/components/table-of-contents.css +12 -2
  578. package/dist/components/table.css +20 -13
  579. package/dist/components/tableOfContents/TableOfContents.cjs +11 -4
  580. package/dist/components/tableOfContents/TableOfContents.cjs.map +2 -2
  581. package/dist/components/tableOfContents/TableOfContents.d.cts.map +1 -1
  582. package/dist/components/tableOfContents/TableOfContents.d.mts.map +1 -1
  583. package/dist/components/tableOfContents/TableOfContents.d.ts.map +1 -1
  584. package/dist/components/tableOfContents/TableOfContents.js +11 -4
  585. package/dist/components/tableOfContents/TableOfContents.js.map +2 -2
  586. package/dist/components/tabs/Tabs.cjs +39 -54
  587. package/dist/components/tabs/Tabs.cjs.map +2 -2
  588. package/dist/components/tabs/Tabs.d.cts.map +1 -1
  589. package/dist/components/tabs/Tabs.d.mts.map +1 -1
  590. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  591. package/dist/components/tabs/Tabs.js +39 -54
  592. package/dist/components/tabs/Tabs.js.map +2 -2
  593. package/dist/components/tabs.css +62 -7
  594. package/dist/components/text/text.props.cjs +9 -9
  595. package/dist/components/text/text.props.cjs.map +2 -2
  596. package/dist/components/text/text.props.d.cts +42 -43
  597. package/dist/components/text/text.props.d.cts.map +1 -1
  598. package/dist/components/text/text.props.d.mts +42 -43
  599. package/dist/components/text/text.props.d.mts.map +1 -1
  600. package/dist/components/text/text.props.d.ts +42 -43
  601. package/dist/components/text/text.props.d.ts.map +1 -1
  602. package/dist/components/text/text.props.js +9 -9
  603. package/dist/components/text/text.props.js.map +2 -2
  604. package/dist/components/text/typography.props.cjs +32 -0
  605. package/dist/components/text/typography.props.cjs.map +7 -0
  606. package/dist/components/text/typography.props.d.cts +3 -0
  607. package/dist/components/text/typography.props.d.cts.map +1 -0
  608. package/dist/components/text/typography.props.d.mts +3 -0
  609. package/dist/components/text/typography.props.d.mts.map +1 -0
  610. package/dist/components/text/typography.props.d.ts +3 -0
  611. package/dist/components/text/typography.props.d.ts.map +1 -0
  612. package/dist/components/text/typography.props.js +12 -0
  613. package/dist/components/text/typography.props.js.map +7 -0
  614. package/dist/components/text-field.css +1 -0
  615. package/dist/components/text.css +41 -6
  616. package/dist/components/theme-panel.css +6 -0
  617. package/dist/components/timeline.css +54 -18
  618. package/dist/components/toast/Toast.cjs +3 -1
  619. package/dist/components/toast/Toast.cjs.map +2 -2
  620. package/dist/components/toast/Toast.d.cts.map +1 -1
  621. package/dist/components/toast/Toast.d.mts.map +1 -1
  622. package/dist/components/toast/Toast.d.ts.map +1 -1
  623. package/dist/components/toast/Toast.js +3 -1
  624. package/dist/components/toast/Toast.js.map +2 -2
  625. package/dist/components/toast.css +50 -18
  626. package/dist/components/toggle-group.css +5 -0
  627. package/dist/components/toggle-tip.css +58 -9
  628. package/dist/components/toggleTip/ToggleTip.cjs +9 -5
  629. package/dist/components/toggleTip/ToggleTip.cjs.map +2 -2
  630. package/dist/components/toggleTip/ToggleTip.d.cts.map +1 -1
  631. package/dist/components/toggleTip/ToggleTip.d.mts.map +1 -1
  632. package/dist/components/toggleTip/ToggleTip.d.ts.map +1 -1
  633. package/dist/components/toggleTip/ToggleTip.js +9 -5
  634. package/dist/components/toggleTip/ToggleTip.js.map +2 -2
  635. package/dist/components/toolbar/Toolbar.cjs +10 -7
  636. package/dist/components/toolbar/Toolbar.cjs.map +2 -2
  637. package/dist/components/toolbar/Toolbar.js +10 -7
  638. package/dist/components/toolbar/Toolbar.js.map +2 -2
  639. package/dist/components/toolbar.css +58 -4
  640. package/dist/components/tooltip.css +9 -5
  641. package/dist/components/tree-view.css +17 -3
  642. package/dist/components/treeView/TreeView.cjs +76 -21
  643. package/dist/components/treeView/TreeView.cjs.map +2 -2
  644. package/dist/components/treeView/TreeView.d.cts.map +1 -1
  645. package/dist/components/treeView/TreeView.d.mts.map +1 -1
  646. package/dist/components/treeView/TreeView.d.ts.map +1 -1
  647. package/dist/components/treeView/TreeView.js +76 -21
  648. package/dist/components/treeView/TreeView.js.map +2 -2
  649. package/dist/components.css +2 -2
  650. package/dist/docs/README.md +2 -1
  651. package/dist/docs/component-contract.md +7 -6
  652. package/dist/docs/component-index.json +17 -9
  653. package/dist/docs/components/accordion.md +5 -36
  654. package/dist/docs/components/alert.md +17 -10
  655. package/dist/docs/components/article-nodes.md +59 -2
  656. package/dist/docs/components/aspect-ratio.md +3 -26
  657. package/dist/docs/components/banner.md +152 -0
  658. package/dist/docs/components/blockquote.md +15 -14
  659. package/dist/docs/components/bottom-dock.md +146 -0
  660. package/dist/docs/components/box.md +3 -34
  661. package/dist/docs/components/breadcrumb.md +13 -8
  662. package/dist/docs/components/button-group.md +4 -3
  663. package/dist/docs/components/button.md +2 -2
  664. package/dist/docs/components/callout.md +18 -7
  665. package/dist/docs/components/card.md +10 -2
  666. package/dist/docs/components/carousel.md +55 -32
  667. package/dist/docs/components/chart.md +25 -7
  668. package/dist/docs/components/checkbox.md +4 -0
  669. package/dist/docs/components/code.md +33 -220
  670. package/dist/docs/components/collapsible.md +11 -35
  671. package/dist/docs/components/combobox.md +3 -1
  672. package/dist/docs/components/command.md +4 -2
  673. package/dist/docs/components/comment-thread.md +51 -1
  674. package/dist/docs/components/config-drawer.md +72 -171
  675. package/dist/docs/components/container.md +2 -0
  676. package/dist/docs/components/context-menu.md +19 -5
  677. package/dist/docs/components/copy-field.md +2 -2
  678. package/dist/docs/components/data-list.md +15 -3
  679. package/dist/docs/components/data-table.md +98 -17
  680. package/dist/docs/components/dialog.md +7 -1
  681. package/dist/docs/components/drawer.md +17 -6
  682. package/dist/docs/components/dropdown-menu.md +13 -3
  683. package/dist/docs/components/em.md +1 -1
  684. package/dist/docs/components/empty-state.md +3 -1
  685. package/dist/docs/components/file-upload.md +14 -7
  686. package/dist/docs/components/filter-bar.md +193 -8
  687. package/dist/docs/components/floating-panel.md +79 -285
  688. package/dist/docs/components/form.md +4 -0
  689. package/dist/docs/components/grid.md +11 -60
  690. package/dist/docs/components/heading.md +35 -32
  691. package/dist/docs/components/hover-card.md +9 -1
  692. package/dist/docs/components/icon-button.md +4 -1
  693. package/dist/docs/components/item.md +18 -13
  694. package/dist/docs/components/kbd.md +2 -0
  695. package/dist/docs/components/label.md +11 -9
  696. package/dist/docs/components/link.md +31 -209
  697. package/dist/docs/components/marquee.md +2 -2
  698. package/dist/docs/components/menu.md +4 -1
  699. package/dist/docs/components/metric.md +4 -1
  700. package/dist/docs/components/notification-center.md +24 -14
  701. package/dist/docs/components/page-header.md +2 -0
  702. package/dist/docs/components/pagination.md +92 -17
  703. package/dist/docs/components/pills.md +13 -4
  704. package/dist/docs/components/popover.md +12 -3
  705. package/dist/docs/components/prose.md +14 -1
  706. package/dist/docs/components/qr-code.md +25 -24
  707. package/dist/docs/components/quote.md +9 -4
  708. package/dist/docs/components/radio-group.md +5 -2
  709. package/dist/docs/components/rating.md +2 -0
  710. package/dist/docs/components/resizable.md +26 -18
  711. package/dist/docs/components/result.md +6 -0
  712. package/dist/docs/components/rich-text-editor.md +68 -18
  713. package/dist/docs/components/scroll-area.md +17 -9
  714. package/dist/docs/components/section.md +3 -38
  715. package/dist/docs/components/segmented-control.md +8 -3
  716. package/dist/docs/components/segmented-meter.md +9 -0
  717. package/dist/docs/components/select.md +3 -2
  718. package/dist/docs/components/separator.md +10 -46
  719. package/dist/docs/components/sidebar.md +20 -4
  720. package/dist/docs/components/sonner.md +26 -17
  721. package/dist/docs/components/sortable-list.md +2 -0
  722. package/dist/docs/components/stat-card.md +5 -4
  723. package/dist/docs/components/stepper.md +8 -32
  724. package/dist/docs/components/strong.md +1 -1
  725. package/dist/docs/components/tab-nav.md +33 -96
  726. package/dist/docs/components/table-of-contents.md +8 -2
  727. package/dist/docs/components/table.md +14 -5
  728. package/dist/docs/components/tabs.md +19 -50
  729. package/dist/docs/components/tag.md +4 -2
  730. package/dist/docs/components/text-field.md +1 -0
  731. package/dist/docs/components/text.md +34 -28
  732. package/dist/docs/components/theme-panel.md +3 -28
  733. package/dist/docs/components/theme.md +7 -3
  734. package/dist/docs/components/timeline.md +9 -5
  735. package/dist/docs/components/toast.md +28 -14
  736. package/dist/docs/components/toggle-group.md +2 -1
  737. package/dist/docs/components/toggle-tip.md +58 -241
  738. package/dist/docs/components/toolbar.md +16 -39
  739. package/dist/docs/components/tooltip.md +13 -7
  740. package/dist/docs/components/tree-view.md +22 -55
  741. package/dist/fonts.css +1 -1
  742. package/dist/generated/tokens.cjs +2 -1
  743. package/dist/generated/tokens.cjs.map +2 -2
  744. package/dist/generated/tokens.d.cts.map +1 -1
  745. package/dist/generated/tokens.d.mts.map +1 -1
  746. package/dist/generated/tokens.d.ts.map +1 -1
  747. package/dist/generated/tokens.js +2 -1
  748. package/dist/generated/tokens.js.map +2 -2
  749. package/dist/motion.css +18 -3
  750. package/dist/styles.css +3045 -1756
  751. package/dist/tokens.css +349 -361
  752. package/package.json +1 -1
  753. package/dist/components/control-group.css +0 -142
  754. package/dist/components/controlGroup/ControlGroup.cjs.map +0 -7
  755. package/dist/components/controlGroup/ControlGroup.d.cts +0 -16
  756. package/dist/components/controlGroup/ControlGroup.d.cts.map +0 -1
  757. package/dist/components/controlGroup/ControlGroup.d.mts +0 -16
  758. package/dist/components/controlGroup/ControlGroup.d.mts.map +0 -1
  759. package/dist/components/controlGroup/ControlGroup.d.ts +0 -16
  760. package/dist/components/controlGroup/ControlGroup.d.ts.map +0 -1
  761. package/dist/components/controlGroup/ControlGroup.js +0 -26
  762. package/dist/components/controlGroup/ControlGroup.js.map +0 -7
  763. package/dist/components/controlGroup/controlGroup.props.cjs.map +0 -7
  764. package/dist/components/controlGroup/controlGroup.props.d.cts +0 -18
  765. package/dist/components/controlGroup/controlGroup.props.d.cts.map +0 -1
  766. package/dist/components/controlGroup/controlGroup.props.d.mts +0 -18
  767. package/dist/components/controlGroup/controlGroup.props.d.mts.map +0 -1
  768. package/dist/components/controlGroup/controlGroup.props.d.ts +0 -18
  769. package/dist/components/controlGroup/controlGroup.props.d.ts.map +0 -1
  770. package/dist/components/controlGroup/controlGroup.props.js +0 -20
  771. package/dist/components/controlGroup/controlGroup.props.js.map +0 -7
  772. package/dist/docs/components/control-group.md +0 -261
@@ -5,7 +5,8 @@ category: Components
5
5
  archetype: composite
6
6
  depends_on:
7
7
  - "@radix-ui/react-slot (powers `asChild` on the root, list, item, link, and ellipsis slots)"
8
- - Icon (the `chevron-left` / `chevron-right` glyphs on `Previous` / `Next`; the `dots-horizontal` glyph on `Ellipsis`)
8
+ - Icon (the `chevron-left` / `chevron-right` glyphs on `Previous` / `Next`; the `chevrons-left` / `chevrons-right` glyphs on `First` / `Last`; the `dots-horizontal` glyph on `Ellipsis`)
9
+ - Select (powers `Pagination.PageSize`; the option list rides the shared menu tier)
9
10
  ---
10
11
 
11
12
  # Pagination
@@ -14,11 +15,11 @@ depends_on:
14
15
 
15
16
  ## Purpose
16
17
 
17
- A page-based dataset navigation surface that exposes the previous, next, and numbered links, an ellipsis for truncated ranges, an info summary, and a page-size selector. The DS `Pagination` is a flat composite (no Radix primitive), built directly on HTML elements plus the `Slot` helper for `asChild`. It is the canonical surface for page-based datasets; the roster lists `Button` as a composed-from surface because the page links render as button or anchor elements.
18
+ A page-based dataset navigation surface that exposes the previous, next, and numbered links, an ellipsis for truncated ranges, an info summary, a static page-status indicator, and a page-size selector. The DS `Pagination` is a flat composite (no Radix primitive), built directly on HTML elements plus the `Slot` helper for `asChild`. It is the canonical surface for page-based datasets; the roster lists `Button` as a composed-from surface because the page links render as button or anchor elements.
18
19
 
19
20
  ## 2.6 contract
20
21
 
21
- `PaginationBar` uses seven page slots whenever more than seven pages exist, including expanded boundary neighbours so first, middle, and final windows have equal width. `messages` localizes range formatting, zero results, previous/next labels, and page-size options. English remains default; a Russian formatter such as `(start, end, total) => `${start}–${end} из ${total}`` produces `1–8 из 47`.
22
+ `PaginationBar` uses seven page slots whenever more than seven pages exist, including expanded boundary neighbours so first, middle, and final windows have equal width. `messages` localizes range formatting, zero results, previous/next/first/last labels, page-size options, and the page-input `Page` / `of M` text. English remains default; a Russian formatter such as `(start, end, total) => `${start}–${end} из ${total}`` produces `1–8 из 47`. First/Last links and the page-jump input are opt-in (`showFirstLast`, `showPageInput`, both default `false`) so existing bars render unchanged.
22
23
 
23
24
  ## Anatomy & slots
24
25
 
@@ -34,11 +35,15 @@ A page-based dataset navigation surface that exposes the previous, next, and num
34
35
  | `Pagination.Link` | `<a>` (when `href` is set and not disabled), `<button>` (otherwise), or `Slot` child when `asChild` | `dsx-pagination__link` + `--active` modifier (when active) + `--disabled` modifier (when disabled) + optional `data-disabled` + `aria-current="page"` (when active) + `aria-disabled` (when disabled) | A page link. |
35
36
  | `Pagination.Previous` | wraps `Pagination.Link` | `dsx-pagination__link--edge` + `chevron-left` icon + default `aria-label="Previous page"` + default text `Previous` | The previous-page link. |
36
37
  | `Pagination.Next` | wraps `Pagination.Link` | `dsx-pagination__link--edge` + `chevron-right` icon + default `aria-label="Next page"` + default text `Next` | The next-page link. |
38
+ | `Pagination.First` | wraps `Pagination.Link` | `dsx-pagination__link--edge` + `chevrons-left` icon + default `aria-label="First page"` + default text `First` | The first-page link (round-2 gap fill). Opt-in via `showFirstLast` on `PaginationBar` / `DataTablePagination`. |
39
+ | `Pagination.Last` | wraps `Pagination.Link` | `dsx-pagination__link--edge` + `chevrons-right` icon + default `aria-label="Last page"` + default text `Last` | The last-page link (round-2 gap fill). Opt-in via `showFirstLast` on `PaginationBar` / `DataTablePagination`. |
40
+ | `Pagination.PageInput` | `<span>` wrapping a native `<input type="number">` | `dsx-pagination__page-input` + `aria-label="Page number, page N of M"` on the input + visible `Page` / `of M` text | Direct page jump (round-2 gap fill: "Page N of M"). Opt-in via `showPageInput` on `PaginationBar` / `DataTablePagination`. Commits on Enter or blur, clamped to `1..totalPages`. |
37
41
  | `Pagination.Ellipsis` | `<span>` (or `Slot` child when `asChild`) | `dsx-pagination__ellipsis` + `aria-hidden="true"` + `dots-horizontal` icon | A non-interactive truncation marker. |
38
42
  | `Pagination.Info` | `<span>` | `dsx-pagination__info` | A summary of the visible range (for example `Showing 21–40 of 137`). |
39
- | `Pagination.PageSize` | `<select>` | `dsx-pagination__page-size` | The page-size selector with the standard `[20, 50, 100]` options. |
43
+ | `Pagination.Status` | `<span role="status">` | `dsx-pagination__status` | A static page position (for example `Page 1 of 2`). The non-interactive counterpart to `PageInput`: consumers show Status or the Info range, never both (same dedup rule `DataTablePagination` applies in dense mode). `formatStatus` localizes the text; English default. |
44
+ | `Pagination.PageSize` | shared `Select` | `dsx-pagination__page-size` on the trigger | The page-size selector with the standard `[10, 25, 50, 100]` options. The open list is Select content, so it paints in the design language and inherits the shared floating tier. |
40
45
 
41
- The roster's `Parent / Slots` column lists `Pagination.Root`, `Pagination.List`, `Pagination.Item`, `Pagination.Link`, `Pagination.Previous`, `Pagination.Next`, `Pagination.Ellipsis`, `Pagination.Info`, `Pagination.PageSize`. The source exports `Pagination` as the root (no `Object.assign` accessor for `.Root`) and the rest as named exports; `Pagination.Content` is an alias of `Pagination.List`. The spec records the runtime shape; the roster's `Pagination.Root` style is the would-be public API if a `Root` accessor were added.
46
+ The roster's `Parent / Slots` column lists `Pagination.Root`, `Pagination.List`, `Pagination.Item`, `Pagination.Link`, `Pagination.Previous`, `Pagination.Next`, `Pagination.First`, `Pagination.Last`, `Pagination.Ellipsis`, `Pagination.Info`, `Pagination.Status`, `Pagination.PageInput`, `Pagination.PageSize`. The source exports `Pagination` as the root (no `Object.assign` accessor for `.Root`) and the rest as named exports; `Pagination.Content` is an alias of `Pagination.List`. The spec records the runtime shape; the roster's `Pagination.Root` style is the would-be public API if a `Root` accessor were added.
42
47
 
43
48
  ## Props contract
44
49
 
@@ -85,6 +90,32 @@ The roster's `Parent / Slots` column lists `Pagination.Root`, `Pagination.List`,
85
90
  | `className` | `string` | `undefined` | no | Extra classes appended to the edge modifier. | no |
86
91
  | `children` | `React.ReactNode` | `'Previous'` / `'Next'` | no | The text shown next to the chevron. | no |
87
92
 
93
+ ### `Pagination.First` and `Pagination.Last`
94
+
95
+ Same surface as `Previous` / `Next` (thin wrappers over `Link`), with defaults `aria-label="First page"` / `"Last page"` and children `"First"` / `"Last"`.
96
+
97
+ | Prop | Type | Default | Required | Description | Responsive |
98
+ |---|---|---|---|---|---|
99
+ | `active` | `boolean` | `false` | no | Forwarded to the underlying `Pagination.Link`. | no |
100
+ | `disabled` | `boolean` | `false` | no | Forwarded to the underlying `Pagination.Link`. | no |
101
+ | `asChild` | `boolean` | `false` | no | Forwarded to the underlying `Pagination.Link`. | no |
102
+ | `href` | `string` | `undefined` | no | Forwarded to the underlying `Pagination.Link`. | no |
103
+ | `aria-label` | `string` | `'First page'` / `'Last page'` | no | Landmark label. The default is applied when the consumer does not pass one. | no |
104
+ | `className` | `string` | `undefined` | no | Extra classes appended to the edge modifier. | no |
105
+ | `children` | `React.ReactNode` | `'First'` / `'Last'` | no | The text shown next to the chevron. | no |
106
+
107
+ ### `Pagination.PageInput`
108
+
109
+ | Prop | Type | Default | Required | Description | Responsive |
110
+ |---|---|---|---|---|---|
111
+ | `page` | `number` | (required) | yes | Current 1-based page. The input shows this value until the consumer types a draft. | no |
112
+ | `totalPages` | `number` | (required) | yes | Total page count. Clamps commits to `1..max(1, totalPages)` and renders the `of M` text. | no |
113
+ | `onPageChange` | `(page: number) => void` | (required) | yes | Called with the clamped page on Enter or blur. Non-numeric drafts are discarded. | no |
114
+ | `pageLabel` | `React.ReactNode` | `'Page'` | no | Visible label before the input. | no |
115
+ | `formatOf` | `(totalPages: number) => React.ReactNode` | `` (t) => `of ${t}` `` | no | Renders the visible `of M` text after the input. | no |
116
+ | `aria-label` | `string` | `'Page number, page N of M'` | no | Accessible name on the input. The default is applied when the consumer does not pass one. | no |
117
+ | `className` | `string` | `undefined` | no | Extra classes appended to `dsx-pagination__page-input`. | no |
118
+
88
119
  ### `Pagination.Ellipsis`
89
120
 
90
121
  | Prop | Type | Default | Required | Description | Responsive |
@@ -101,19 +132,29 @@ The roster's `Parent / Slots` column lists `Pagination.Root`, `Pagination.List`,
101
132
  | `offset` | `number` | (required) | yes | Zero-based offset of the first record on the current page. | no |
102
133
  | `limit` | `number` | (required) | yes | Page size. The end of the range is `min(offset + limit, totalCount)`. | no |
103
134
  | `className` | `string` | `undefined` | no | Extra classes appended to `dsx-pagination__info`. | no |
135
+ | `formatRange` | `(start: number, end: number, totalCount: number) => React.ReactNode` | `` (s, e, t) => `Showing ${s}–${e} of ${t}` `` | no | Renders the visible range text. | no |
136
+
137
+ ### `Pagination.Status`
138
+
139
+ | Prop | Type | Default | Required | Description | Responsive |
140
+ |---|---|---|---|---|---|
141
+ | `page` | `number` | (required) | yes | Current 1-based page. Clamped for display to `1..max(1, totalPages)`. | no |
142
+ | `totalPages` | `number` | (required) | yes | Total page count. | no |
143
+ | `formatStatus` | `(page: number, totalPages: number) => React.ReactNode` | `` (p, t) => `Page ${p} of ${t}` `` | no | Renders the visible status text. | no |
144
+ | `className` | `string` | `undefined` | no | Extra classes appended to `dsx-pagination__status`. | no |
104
145
 
105
146
  ### `Pagination.PageSize`
106
147
 
107
148
  | Prop | Type | Default | Required | Description | Responsive |
108
149
  |---|---|---|---|---|---|
109
150
  | `value` | `number` | (required) | yes | Current page size. | no |
110
- | `options` | `number[]` | `[20, 50, 100]` | no | Available page-size options. | no |
111
- | `onChange` | `(limit: number) => void` | (required) | yes | Called with the parsed numeric value when the consumer changes the select. | no |
151
+ | `options` | `number[]` | `[10, 25, 50, 100]` | no | Available page-size options. | no |
152
+ | `onChange` | `(limit: number) => void` | (required) | yes | Called with the parsed numeric value when the consumer picks an option. | no |
112
153
  | `className` | `string` | `undefined` | no | Extra classes appended to `dsx-pagination__page-size`. | no |
113
154
 
114
155
  Rules:
115
156
 
116
- - The root, list, item, link, and ellipsis slots all run through `extractProps` with the matching prop def bag. `Previous` and `Next` are thin wrappers over `Link` and inherit the prop surface.
157
+ - The root, list, item, link, and ellipsis slots all run through `extractProps` with the matching prop def bag. `Previous`, `Next`, `First`, and `Last` are thin wrappers over `Link` and inherit the prop surface.
117
158
  - `Link` is polymorphic: it renders `<a>` when `href` is set and the link is not `disabled`, otherwise `<button type="button" disabled>` when `disabled`, otherwise `Slot` when `asChild` is set. The `aria-current`, `aria-disabled`, and `data-disabled` attributes are written in every branch.
118
159
 
119
160
  ## CSS class contract
@@ -138,8 +179,11 @@ Rules:
138
179
  | `Pagination.Link` (active) | `dsx-pagination__link--active` | `pagination.css` |
139
180
  | `Pagination.Link` (disabled) | `dsx-pagination__link--disabled` | `pagination.css` |
140
181
  | `Pagination.Previous` / `Pagination.Next` | `dsx-pagination__link` + `dsx-pagination__link--edge` | `pagination.css` |
182
+ | `Pagination.First` / `Pagination.Last` | `dsx-pagination__link` + `dsx-pagination__link--edge` | `pagination.css` |
183
+ | `Pagination.PageInput` | `dsx-pagination__page-input` | `pagination.css` |
141
184
  | `Pagination.Ellipsis` | `dsx-pagination__ellipsis` | `pagination.css` |
142
185
  | `Pagination.Info` | `dsx-pagination__info` | `pagination.css` |
186
+ | `Pagination.Status` | `dsx-pagination__status` | `pagination.css` |
143
187
  | `Pagination.PageSize` | `dsx-pagination__page-size` | `pagination.css` |
144
188
 
145
189
  **Responsive behavior:**
@@ -170,7 +214,7 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
170
214
  | Link typography | `var(--dsx-typography-label-large-*)` | Font family, size, weight. |
171
215
  | Link hover background | `var(--dsx-effect-hover-ghost)` | Hover surface. |
172
216
  | Link focus ring | `var(--dsx-shadow-focus-ring)` | `:focus-visible` ring. |
173
- | Link active background | `var(--dsx-color-accent-indicator)` | Active fill. |
217
+ | Link active background | `var(--dsx-color-accent-track)` | Active fill (fill step, vivid in both themes — the text-step `accent-indicator` renders near-black in light theme). |
174
218
  | Link active color | `var(--dsx-color-on-primary)` | Active text. |
175
219
  | Link active weight | `var(--dsx-typography-label-large-font-weight, 600)` | Active weight. |
176
220
  | Link edge color | `var(--dsx-color-on-surface-variant)` | Edge variant text. |
@@ -179,12 +223,23 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
179
223
  | Ellipsis color | `var(--dsx-color-on-surface-variant)` | Ellipsis text. |
180
224
  | Info color | `var(--dsx-color-on-surface-variant)` | Info text. |
181
225
  | Info typography | `var(--dsx-typography-body-medium-*)` | Info font family and size. |
182
- | PageSize height | `var(--dsx-size-lg)` | Select height. |
226
+ | PageSize height | `var(--dsx-size-lg)` | Trigger height. |
227
+ | PageSize min-width | `8rem` | Fits the `N per page` label. |
183
228
  | PageSize padding | `0 var(--dsx-space-sm)` | Internal gutter. |
184
- | PageSize border | `var(--dsx-border-width-sm) solid var(--dsx-color-outline)` | Select edge. |
185
- | PageSize background | `var(--dsx-color-surface)` | Select surface. |
186
- | PageSize typography | `var(--dsx-typography-label-large-*)` | Select font family and size. |
229
+ | PageSize border | `var(--dsx-border-width-sm) solid var(--dsx-color-outline)` | Trigger edge. |
230
+ | PageSize typography | `var(--dsx-typography-label-large-*)` | Trigger font family and size. |
187
231
  | PageSize focus ring | `var(--dsx-shadow-focus-ring)` | `:focus-visible` ring. |
232
+ | PageSize option list | (shared `Select` tokens) | The open list rides `select.css` and the shared menu tier. |
233
+ | PageInput text | `var(--dsx-color-on-surface-variant)` | `Page` / `of M` label text. |
234
+ | PageInput typography | `var(--dsx-typography-body-medium-*)` | Label font family and size. |
235
+ | PageInput input width | `var(--dsx-size-3xl)` | Fixed input width for 2–3 digit pages. |
236
+ | PageInput input height | `var(--dsx-size-lg)` | Input height matching link touch targets. |
237
+ | PageInput input padding | `0 var(--dsx-space-sm)` | Internal gutter. |
238
+ | PageInput input border | `var(--dsx-border-width-sm) solid var(--dsx-color-outline)` | Input edge. |
239
+ | PageInput input radius | `var(--dsx-rounded-md)` | Corner roundness. |
240
+ | PageInput input background | `var(--dsx-color-surface)` | Input surface. |
241
+ | PageInput input color | `var(--dsx-color-on-surface)` | Input text. |
242
+ | PageInput focus ring | `var(--dsx-shadow-focus-ring)` | `:focus-visible` ring. |
188
243
  | Motion duration | `var(--dsx-motion-duration-fast, 150ms)` | Link transitions. |
189
244
  | Motion easing | `var(--dsx-motion-easing-standard, ease)` | Link easing. |
190
245
 
@@ -210,9 +265,12 @@ Rules:
210
265
  - `Pagination.List` is a `<ul>`; `Pagination.Item` is a `<li>`.
211
266
  - `Pagination.Link` is an `<a>` (or a `<button disabled>` when `disabled` and no `href`, or a `Slot` child when `asChild`). The active link carries `aria-current="page"`. The disabled link carries `aria-disabled`.
212
267
  - `Pagination.Previous` and `Pagination.Next` carry an `aria-label` (default `Previous page` / `Next page`).
268
+ - `Pagination.First` and `Pagination.Last` carry an `aria-label` (default `First page` / `Last page`).
269
+ - `Pagination.PageInput` is a native number `<input>` with a default `aria-label="Page number, page N of M"`. The visible `Page` / `of M` text is presentational; the input stays operable by keyboard (type, Enter to commit, blur to commit).
213
270
  - `Pagination.Ellipsis` is a non-interactive `<span aria-hidden="true">`.
214
271
  - `Pagination.Info` is a non-interactive `<span>`.
215
- - `Pagination.PageSize` is a native `<select>` with the standard browser semantics.
272
+ - `Pagination.Status` is a non-interactive `<span role="status">` announcing the current page position.
273
+ - `Pagination.PageSize` is the shared `Select` with the standard option semantics.
216
274
 
217
275
  **Keyboard:**
218
276
 
@@ -221,11 +279,11 @@ Rules:
221
279
  | `Tab` | Moves focus to or from the pagination landmark. |
222
280
  | `Enter` (focused link) | Activates the link. |
223
281
  | `Space` (focused link) | Activates the link. |
224
- | `Tab` (focused `PageSize`) | Moves through the page-size options. |
282
+ | `Tab` (focused `PageSize`) | Opens the option list; arrows move, Enter picks. |
225
283
 
226
284
  **Focus:**
227
285
 
228
- - The CSS file paints a `var(--dsx-shadow-focus-ring)` ring on `:focus-visible` for the link and the page-size select. The ring stays visible on dark and light surfaces.
286
+ - The CSS file paints a `var(--dsx-shadow-focus-ring)` ring on `:focus-visible` for the link and the page-size trigger. The ring stays visible on dark and light surfaces.
229
287
 
230
288
  **Reduced motion:**
231
289
 
@@ -239,6 +297,11 @@ Rules:
239
297
 
240
298
  - The `Pagination` landmark has a default `aria-label="Pagination"`. The edge links have default `aria-label` values (`Previous page`, `Next page`). Override the labels when the landmark or edge needs product-specific copy.
241
299
 
300
+ **Responsive (narrow shells):**
301
+
302
+ - `PaginationBar` wraps into stacked rows (info → controls) with no width breakpoints; the pager list wraps its page links the same way. Verified at 320px: zero overflowing descendants, desktop single-row layout unchanged. Narrow stacking is component behavior, not composition guidance — screens arrange the bar, never its internals.
303
+ - Opt-in `dense` mode (`PaginationBar`, mirrored on `DataTablePagination`): info summary + pager only. The page-size block is omitted, and on `DataTablePagination` the "Page X of Y" status (which duplicates the info range) is omitted with it. Default behavior is unchanged — narrow shells opt in explicitly; the component never decides by width, so no breakpoint, container query, or resize observer is involved. Narrow shells that let users choose page size keep the default mode.
304
+
242
305
  ## Playground demo spec
243
306
 
244
307
  **Default story:**
@@ -256,6 +319,12 @@ Rules:
256
319
  **Composition story:**
257
320
 
258
321
  - Renders a `Pagination.List` with `Previous`, an `Ellipsis`, numbered links, another `Ellipsis`, and `Next`. Asserts the list, the ellipsis (with `aria-hidden="true"`), and the edge links all render with their classes.
322
+ - Renders `First` and `Last` edge links with default `aria-label="First page"` / `"Last page"` and the `dsx-pagination__link--edge` modifier.
323
+ - Renders a `PageInput` with `page` / `totalPages`; asserts the input carries the page-number label and commits a clamped page on Enter.
324
+
325
+ **PaginationBar story:**
326
+
327
+ - Renders `PaginationBar` with `showFirstLast` and `showPageInput`; asserts First/Last links and the page-jump input render alongside info, page-size, and numbered links. Without the flags the bar renders info + page-size + Previous/numbered/Next only (default, unchanged). With `dense`, asserts the page-size block is absent and info + pager remain.
259
328
 
260
329
  **Token story:**
261
330
 
@@ -277,11 +346,13 @@ Rules:
277
346
 
278
347
  - `@radix-ui/react-slot`: enables `asChild` on the root, list, item, link, and ellipsis slots.
279
348
  - `_internal/helpers/extractProps`: turns the prop defs into merged class + style output.
280
- - `Icon`: the `chevron-left` / `chevron-right` glyphs on `Previous` / `Next`; the `dots-horizontal` glyph on `Ellipsis`.
349
+ - `Icon`: the `chevron-left` / `chevron-right` glyphs on `Previous` / `Next`; the `chevrons-left` / `chevrons-right` glyphs on `First` / `Last`; the `dots-horizontal` glyph on `Ellipsis`.
350
+ - `Select`: powers the `PageSize` trigger and option list.
281
351
 
282
352
  **Used by:**
283
353
 
284
354
  - App-level paginated lists. The roster lists `DataTable` as a consumer because the table wraps `Pagination` for its bottom toolbar.
355
+ - `DataTable` positions its pagination footer via `paginationPosition` (`top` / `bottom` / `both`, default `bottom`) and justifies it via `paginationAlign` (`start` / `center` / `end`; unset keeps info-left/controls-right). `DataTable` passes `paginationFirstLast` / `paginationPageInput` through to its internal `DataTablePagination` (`showFirstLast` / `showPageInput`). Placement is a `DataTable`-side concern; this spec owns the link/ellipsis/info/page-size/page-input surface only.
285
356
 
286
357
  **State boundaries:**
287
358
 
@@ -292,3 +363,7 @@ Rules:
292
363
 
293
364
  - App-owned data: the pagination strategy (offset / limit vs cursor), the page-size policy, the link generation, and the total count.
294
365
  - DS-owned visuals: the `dsx-pagination` root class, the slot classes, the token bindings, and the `data-*` and ARIA attribute contract.
366
+
367
+ ## Reconciliation stories
368
+
369
+ The live PaginationBar owns page and limit state, commits first/last/previous/next and page input, resets to page 1 when the limit changes, and shows a dense single-page boundary reference. Controls remain visible and wrap within narrow hosts.
@@ -15,7 +15,7 @@ depends_on:
15
15
 
16
16
  ## Purpose
17
17
 
18
- A compact cluster of selectable or status pills rendered as a horizontal flex list. Use Pills for filter chips, tag clusters, segmented status indicators, and removable tags. For a single label surface, use `Badge`. For mutually exclusive options rendered as a segmented control, use `SegmentedControl` or `ToggleGroup`.
18
+ A compact cluster of selectable pills rendered as a horizontal flex list. Use Pills for filter chips, multi-select chip rows, and segmented status indicators. For a single label surface, use `Badge`. For a lone removable label, use `Tag`. For mutually exclusive options rendered as a segmented control, use `SegmentedControl` or `ToggleGroup`. Cardinality rule (F6 brief): a row of chips with selection state is Pills; one chip with a remove action is a Tag. Selection is consumer-owned: a plain `Pill` is a list item, not an interactive selection control. Compose a button with `aria-pressed` or an existing Toggle inside the item when selection is required.
19
19
 
20
20
  ## Anatomy & slots
21
21
 
@@ -97,7 +97,7 @@ Each pill also accepts the standard HTML attributes for its host element. The `c
97
97
 
98
98
  **Responsive behavior:**
99
99
 
100
- - The component does not write `@media` rules. `size`, `variant`, `color`, and `radius` are single-value only.
100
+ - The component does not write `@media` rules. `size`, `variant`, `color`, and `radius` are single-value only. The cluster always wraps; each item is capped to the available width and breaks long labels. The remove button reserves a non-shrinking 24px square (`size-md`).
101
101
 
102
102
  **Reduced motion:**
103
103
 
@@ -179,7 +179,7 @@ The component is static. Hover and focus states are instant.
179
179
 
180
180
  **Naming:**
181
181
 
182
- - The pill's `children` are the accessible name. The remove button has a hard-coded `aria-label="Remove"`; consumers that need a contextual label should override the `aria-label` via the standard HTML attribute spread.
182
+ - The pill's `children` are the accessible name. The built-in remove button has a fixed `aria-label="Remove"`. Attributes on the `Pill` host do not override this child button. A consumer needing a contextual action name can compose its own labelled button inside `Pill` instead of using `removable`.
183
183
 
184
184
  ## Playground demo spec
185
185
 
@@ -205,7 +205,7 @@ The component is static. Hover and focus states are instant.
205
205
 
206
206
  **Token story:**
207
207
 
208
- - Renders inside a `Theme` wrapper with `accentColor="silver"` and `accentColor="bronze"`. Pills with a `color` prop track `data-accent-color`; the story asserts the destructive and link pills do not flip color because they read from the error and primary palettes.
208
+ - Renders inside a `Theme` wrapper with `accentColor="warp"` and `accentColor="ray"`. Pills with a `color` prop track `data-accent-color`; the story asserts the destructive and link pills do not flip color because they read from the error and primary palettes.
209
209
 
210
210
  **A11y story:**
211
211
 
@@ -244,3 +244,12 @@ The component is static. Hover and focus states are instant.
244
244
 
245
245
  - App-owned data: the cluster items, the per-pill labels, the selection state (for filter chips), and the dismiss callbacks.
246
246
  - DS-owned visuals: token bindings, the modifier classes, the per-pill surface palette, and the remove button.
247
+
248
+ ## Reconciliation stories
249
+
250
+ `Pill asChild` slots a single consumer host and appends its built-in removal
251
+ button inside that host. The host remains responsible for valid list semantics;
252
+ use a list item when placing it directly in `Pills`. Slotted selection controls
253
+ and removable slotted items must mount without a multiple-child Slot error.
254
+
255
+ The live example removes and resets actual filter labels, includes a long wrapping label, and demonstrates consumer-owned selection with labelled aria-pressed buttons inside list items. Static variants are labelled as visual references.
@@ -82,7 +82,7 @@ An interactive floating surface anchored to a trigger. `Popover` is more interac
82
82
 
83
83
  **Close props:**
84
84
 
85
- `Popover.Close` accepts the standard Radix `Close` props.
85
+ `Popover.Close` accepts the standard Radix `Close` props. It is an inline dismissal action, normally composed with `asChild` over a Button. It has no fixed corner position or icon-only dimensions; consumers own the label and placement. When composed over Button, its rest palette and border are preserved; Button state selectors own hover, pressed, disabled and high-contrast behavior.
86
86
 
87
87
  Rules:
88
88
 
@@ -137,8 +137,7 @@ Rules:
137
137
  | Description color | `var(--dsx-color-on-surface-variant)` | Body copy. |
138
138
  | Content z-index | `calc(var(--dsx-z-index-modal, 90) + 1)` | Keeps portaled content above both sticky chrome and a modal-tier surface that owns its trigger. |
139
139
  | Positioner z-index | `var(--dsx-z-index-popover, 60)` | Stacking for an explicitly composed positioner. |
140
- | Close button size | `var(--dsx-size-lg)` | Square tap target. |
141
- | Close button radius | `var(--dsx-rounded-full)` | Round close. |
140
+ | Close minimum dimensions | `var(--dsx-size-md)` | 24px floor; composed Button supplies its own dimensions and radius. |
142
141
  | Motion duration | `var(--dsx-motion-duration-*)` | Mount and exit. |
143
142
  | Motion easing | `var(--dsx-motion-easing-*)` | Mount and exit. |
144
143
 
@@ -237,6 +236,7 @@ Rules:
237
236
  - `@radix-ui/react-slot`: enables `asChild` on the positioner, arrow, and content.
238
237
  - `framer-motion`: provides the `motion.div` for mount and exit. The reduced motion preset is read from `usePrefersReducedMotion`.
239
238
  - `baseDialog.css`: the shared overlay surface and theme-mirror utilities.
239
+ - `_internal/floatingLayer`: `Popover.Content` provides `FloatingLayerHostContext` to its body, so menu-tier content (`Select`, `Combobox`, `DropdownMenu`) nested inside the popover escalates via `dsx-menu__nested` (see the shared nested floating tier contract in `menu.md`).
240
240
 
241
241
  **Used by:**
242
242
 
@@ -247,6 +247,7 @@ Rules:
247
247
  **State boundaries:**
248
248
 
249
249
  - Owned by `Popover`: open state when uncontrolled, presence context, portal theme mirroring, motion preset, and the auto-wired `aria-labelledby` / `aria-describedby`.
250
+ - Owned by `Popover`: the nested-host signal — `Popover.Content` marks its body as a modal-tier host for the shared nested floating tier contract.
250
251
  - Owned by the consumer: the trigger label, the popover body, and the close behavior (via `Popover.Close` or `Escape`).
251
252
 
252
253
  **Boundary rules:**
@@ -304,3 +305,11 @@ Rules:
304
305
  - [ ] Token bindings resolve at the values `DESIGN.md` describes.
305
306
  - [ ] Component is promoted to Main Component under `Components`.
306
307
  - [ ] `penpotUtils.shapeStructure(board, 3)` matches the expected hierarchy.
308
+
309
+ ## Overlay review containment
310
+
311
+ Content has one minmax(0, 1fr) grid track and wraps long words. This prevents
312
+ a child panel’s preferred width from enlarging an implicit track beyond the
313
+ viewport-capped surface and being clipped by overflow=hidden. The live example
314
+ sets and applies a real density preference; NotificationCenter also composes
315
+ inside this surface with proper Title and Description.
@@ -19,6 +19,19 @@ Read-side article typography with an approximately `68ch` measure and `1.65` rea
19
19
 
20
20
  Consumers preserve heading order, stable IDs, meaningful image alt text, captions, and table headers. Wide tables scroll horizontally rather than hiding data.
21
21
 
22
+ The root can shrink within its parent. Long words, URLs, and identifiers wrap inside the reading measure; preformatted code and tables retain their explicit horizontal scrolling.
23
+
24
+ ## Color roles
25
+
26
+ Inline code and preformatted blocks use `--dsx-code-soft-background`, the
27
+ same contextual neutral wash as soft Code (existing gray-alpha-3 effect).
28
+ A `pre > code` child stays transparent to avoid painting the wash twice.
29
+ Blockquotes use the 1px boundary-divider width with decorative accent-border
30
+ (light step 8 / dark step 11). Links retain readable accent-indicator ink.
31
+ Local Theme and gray changes recompute these paint aliases.
32
+
22
33
  ## Playground demo spec
23
34
 
24
- Render all supported semantic elements, sanitized HTML, a wide table at mobile width, and each exported authored-node renderer.
35
+ Render all supported semantic elements, sanitized HTML, a wide table at mobile width, and authored blocks in the separate ArticleNodes stream.
36
+
37
+ The live example is a coherent server-selection article with ordered headings, lists, blockquote, a working fragment link, inline/block code, a table with row/column headers, and an image with caption. ArticleNodes stays in the blocks stream.
@@ -13,7 +13,7 @@ depends_on:
13
13
 
14
14
  ## Purpose
15
15
 
16
- A token-aligned QR code surface that renders a scannable `QRCodeSVG` from `qrcode.react` inside a styled container, with a size scale and high-contrast mode for accessibility. The component owns the shell and token binding; the app owns the encoded payload, error-correction level, and any persistence.
16
+ A token-aligned QR code surface that renders a scannable `QRCodeSVG` from `qrcode.react` inside a styled container, with a fixed matrix size scale and a legacy CSS high-contrast hook. The component owns the shell and token binding; the app owns the encoded payload, error-correction level, and any persistence.
17
17
 
18
18
  ## Anatomy & slots
19
19
 
@@ -21,7 +21,7 @@ A token-aligned QR code surface that renders a scannable `QRCodeSVG` from `qrcod
21
21
 
22
22
  **Slots:**
23
23
 
24
- No slots: flat export. The component renders a single `<div>` host element (or a slotted child when `asChild` is set) that wraps the `QRCodeSVG` adapter output. The encoded value, the error-correction level, the margin, and the module colors are all props on the host. The component does not own a label, caption, or download action; consumers compose those around the surface.
24
+ No slots: flat export. The component renders a single role=img `<div>` host element (or a consumer-supplied slotted child when `asChild` is set) that wraps the `QRCodeSVG` adapter output. The encoded value, the error-correction level, the margin, and the module colors are all props on the host. The component does not own a label, caption, or download action; consumers compose those around the surface.
25
25
 
26
26
  **Adapter host:** `QRCodeSVG` from `qrcode.react`. The adapter is wrapped in a styled container; the adapter is a `peerDependency` and the package does not own the rendered SVG paths.
27
27
 
@@ -30,9 +30,9 @@ No slots: flat export. The component renders a single `<div>` host element (or a
30
30
  | Prop | Type | Default | Required | Description | Responsive |
31
31
  |---|---|---|---|---|---|
32
32
  | `value` | `string` | `undefined` | yes | String payload encoded into the QR modules. Required by `QRCodeSVG`; the host element also omits the native `value` attribute. | no |
33
- | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | no | Container size; selects one of the internal `sizeMap` values (`sm: 128`, `md: 192`, `lg: 256` px) and writes `data-size`. The CSS overrides the rendered SVG width and height with sizing tokens. | no |
33
+ | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | no | Painted size; selects one of the internal `sizeMap` values (`sm: 128`, `md: 192`, `lg: 256` px) and writes `data-size` plus the matching `dsx-qr-code-size-*` class. The SVG retains sizeMap dimensions, never flex-shrinks and overrides generic SVG max-width rules. Hosts narrower than the matrix must supply scrolling. | no |
34
34
  | `level` | `'L' \| 'M' \| 'Q' \| 'H'` | `'M'` | no | Error-correction level passed through to `QRCodeSVG`. `L` is ~7%, `M` is ~15%, `Q` is ~25%, `H` is ~30% recovery. | no |
35
- | `marginSize` | `number` | `0` | no | Quiet-zone margin passed through to `QRCodeSVG`. Default `0` matches the adapter default and is the spec baseline. | no |
35
+ | `marginSize` | `number` | `0` | no | Quiet-zone margin passed through to `QRCodeSVG`. Default 0 matches the adapter baseline; scan/share examples explicitly set 4 modules of quiet zone. | no |
36
36
  | `fgColor` | `string` | `var(--dsx-color-on-surface)` | no | Module (foreground) color. Default falls back to the token CSS variable; pass an explicit value to override. | no |
37
37
  | `bgColor` | `string` | `var(--dsx-color-surface-raised)` | no | Quiet-zone (background) color. Default falls back to the token CSS variable; pass an explicit value to override. | no |
38
38
  | `asChild` | `boolean` | `false` | no | Renders the QR code container through `Slot` from `@radix-ui/react-slot`; consumer supplies the host element. | no |
@@ -43,7 +43,8 @@ No slots: flat export. The component renders a single `<div>` host element (or a
43
43
  Rules that apply to this row:
44
44
 
45
45
  - The component extends `Omit<ComponentPropsWithoutRef<'div'>, 'value'>` because `value` is redefined by the QR-specific prop. Native `<div>` attributes that are not prop def keys are forwarded.
46
- - `size` is wired through `extractProps` and writes both the modifier class and `data-size`. The runtime `sizeMap` (`sm: 128`, `md: 192`, `lg: 256`) is the actual SVG pixel size; the CSS further constrains the rendered SVG width and height to the `size-{xs|md|xl}` sizing tokens so the visual size matches the container.
46
+ - The three size modifier selectors share the base SVG display and corner treatment; matrix dimensions remain runtime-owned.
47
+ - `size` is wired through `extractProps` and writes both the modifier class and `data-size`. The runtime `sizeMap` (`sm: 128`, `md: 192`, `lg: 256`) is the actual SVG pixel size, painted verbatim through the adapter's own width/height attributes. The `dsx-size-{xs|md|xl}` sizing tokens are NOT applied to the QR matrix — a former revision constrained the SVG to those tokens (16/24/40px) and rendered unscannable codes; the override was removed and must not return.
47
48
  - `level`, `marginSize`, `fgColor`, and `bgColor` are NOT in the prop def bag; they are typed in the `QRCodeProps` interface and consumed in the render path. The prop def only declares `asChild` and `size`. The interface-level defaults (`'M'`, `0`, token fallbacks) are applied at the destructuring site, not via `extractProps`.
48
49
  - The component does not currently expose a `data-high-contrast` prop or write that attribute, even though `qr-code.css` has a high-contrast block. The CSS block is a hook for downstream apps; the runtime does not emit the attribute today (see Anomalies).
49
50
 
@@ -59,7 +60,7 @@ Rules that apply to this row:
59
60
  | `data-slot` | `qr-code` | (CSS hook only) | n/a |
60
61
  | `data-high-contrast` | `true` | `.dsx-qr-code[data-high-contrast='true']` (hook only; runtime does not currently emit) | `qr-code.css` |
61
62
 
62
- **Slot classes:** none. The inner `svg` is targeted by `.dsx-qr-code svg` and the `rect[fill]` modules by `.dsx-qr-code svg rect[fill]`. These are CSS hooks, not public slots.
63
+ **Slot classes:** none. The inner svg is targeted by .dsx-qr-code svg; the legacy high-contrast hook targets first/last paths from qrcode.react 4.2. These are CSS hooks, not public slots.
63
64
 
64
65
  **Responsive behavior:**
65
66
 
@@ -82,9 +83,9 @@ Every CSS value the component paints is a `var(--dsx-*)` token, with runtime fal
82
83
  | Background | `var(--dsx-color-surface-raised)` | Container surface. |
83
84
  | Border | `var(--dsx-border-width-sm)` + `var(--dsx-color-outline)` | Edge. |
84
85
  | SVG border radius | `var(--dsx-rounded-sm)` | SVG corners. |
85
- | Size `sm` | `var(--dsx-size-xs)` | Rendered SVG width and height at the `sm` size. |
86
- | Size `md` | `var(--dsx-size-md)` | Rendered SVG width and height at the `md` size. |
87
- | Size `lg` | `var(--dsx-size-xl)` | Rendered SVG width and height at the `lg` size. |
86
+ | Size `sm` | (runtime `128` px) | Painted SVG width and height at the `sm` size — no token. |
87
+ | Size `md` | (runtime `192` px) | Painted SVG width and height at the `md` size — no token. |
88
+ | Size `lg` | (runtime `256` px) | Painted SVG width and height at the `lg` size — no token. |
88
89
  | Module color (default) | `var(--dsx-color-on-surface)` (runtime fallback) | QR modules. |
89
90
  | Background color (default) | `var(--dsx-color-surface-raised)` (runtime fallback) | Quiet zone. |
90
91
  | High-contrast surface | `var(--dsx-color-surface-raised)` | High-contrast container. |
@@ -93,9 +94,9 @@ Every CSS value the component paints is a `var(--dsx-*)` token, with runtime fal
93
94
 
94
95
  Rules:
95
96
 
96
- - The runtime SVG dimensions (`128`, `192`, `256`) are NOT tokens; they are the adapter's own pixel size used to compute the QR matrix. The CSS overrides the visible width and height with the `size-{xs|md|xl}` sizing tokens. The mismatch between the runtime px and the CSS px means the adapter still draws a sharp matrix; the CSS only constrains the rendered size.
97
- - The `fgColor` and `bgColor` props are passed as CSS variable references (`'var(--dsx-color-on-surface)'`, `'var(--dsx-color-surface-raised)'`) when the consumer does not pass explicit values. The adapter forwards these into SVG attributes; token-driven theming therefore requires the `qr-code.css` rules to win on the modules, which is what the high-contrast block does.
98
- - The high-contrast block uses `svg rect[fill]:first-of-type` to recolor the background module; this relies on the adapter emitting the background as a single `<rect>`. If the adapter's output changes, the high-contrast fallback breaks.
97
+ - The runtime SVG dimensions (`128`, `192`, `256`) are NOT tokens; they are the adapter's own pixel size used to compute the QR matrix, painted verbatim. The CSS must never override the visible width and height with sizing tokens — that revision shipped 16/24/40px unscannable codes.
98
+ - The `fgColor` and `bgColor` props are passed as CSS variable references (`'var(--dsx-color-on-surface)'`, `'var(--dsx-color-surface-raised)'`) when the consumer does not pass explicit values. The adapter forwards CSS variable references into SVG fill attributes; ordinary theme inheritance resolves them. The legacy high-contrast CSS hook overrides paths when an app explicitly supplies its attribute.
99
+ - The high-contrast hook colors the first path as background and last path as modules, matching the installed adapter output. Adapter output changes require a fresh paint check.
99
100
 
100
101
  ## Motion contract
101
102
 
@@ -112,7 +113,7 @@ Rules:
112
113
 
113
114
  **Roles:**
114
115
 
115
- - `img` (QR code). The component renders a non-text graphic; consumers must supply an accessible name via `aria-label`, an `aria-labelledby` reference, or a sibling label. The runtime does not currently set `role` or `aria-label` (see Anomalies).
116
+ - `img` (QR code). The component renders a non-text graphic; consumers must supply an accessible name via `aria-label`, an `aria-labelledby` reference, or a sibling label. The runtime sets role=img and forwards the consumer accessible name.
116
117
 
117
118
  **Keyboard:**
118
119
 
@@ -128,7 +129,7 @@ Rules:
128
129
 
129
130
  **Color and meaning:**
130
131
 
131
- - The QR modules carry the data; the rendered colors are decorative. A high-contrast CSS hook is available for accessible contexts, but the runtime does not currently expose a `data-high-contrast` prop. Apps that need high-contrast mode should toggle the attribute on the host element directly or fork the component.
132
+ - The QR modules carry the data; the rendered colors are decorative. A legacy high-contrast CSS hook is available through a native data-high-contrast attribute; there is no highContrast prop. Apps own scanner compatibility and may explicitly select positive dark-on-light fgColor/bgColor for physical scan contexts.
132
133
 
133
134
  **Naming:**
134
135
 
@@ -136,15 +137,15 @@ Rules:
136
137
 
137
138
  ## Playground demo spec
138
139
 
139
- 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.
140
+ The /docs/qr-code registry supplies wrapped comparisons and a scrollable host for matrices wider than their container. It never shrinks the SVG to fit.
140
141
 
141
142
  **Default story:**
142
143
 
143
- - Renders `QRCode` with `value="https://d4gger.example"` and no other props. Asserts the root class is `dsx-qr-code`, the inner element is an `svg`, the `data-size` attribute is `md`, and the SVG width and height resolve to `var(--dsx-size-md)`.
144
+ - Renders `QRCode` with `value="https://d4gger.example"` and no other props. Asserts the root class is `dsx-qr-code`, the inner element is an `svg`, the `data-size` attribute is `md`, and the SVG width and height attributes are `192`.
144
145
 
145
146
  **Variant story** (one per size):
146
147
 
147
- - Renders QRCode with `size="sm"`, `size="md"`, and `size="lg"`. Asserts the matching `dsx-qr-code-size-{sm|md|lg}` class and `data-size` value. Also asserts the SVG width and height resolve to the corresponding sizing token.
148
+ - Renders QRCode with `size="sm"`, `size="md"`, and `size="lg"`. Asserts the matching `dsx-qr-code-size-{sm|md|lg}` class and `data-size` value. Also asserts the SVG width and height attributes are `128` / `192` / `256` — never a sizing token.
148
149
 
149
150
  **Composition story** (for `asChild`):
150
151
 
@@ -156,11 +157,11 @@ The demo file at `demo_path` exposes the component to the playground. The playgr
156
157
 
157
158
  **Token story:**
158
159
 
159
- - Renders inside a `Theme` wrapper with `accentColor="amber"`, `accentColor="silver"`, and `accentColor="bronze"`. The QR module color is token-driven via the `fgColor` runtime default; the story asserts the modules track the `on-surface` token across the three accents.
160
+ - Renders inside a `Theme` wrapper with the five supported accents (Rift, Warp, Ray, Astral, Spark). The QR module color is token-driven via the `fgColor` runtime default; the story asserts the modules track the `on-surface` token across all five accents.
160
161
 
161
162
  **A11y story:**
162
163
 
163
- - Uses `vitest-axe` against the rendered default QR code wrapped in a labelled element. Asserts there are no axe violations only when the host carries an accessible name. The default story alone is expected to flag a missing accessible name and is documented in the playground as a known issue.
164
+ - Uses `vitest-axe` against the rendered default QR code wrapped in a labelled element. Asserts there are no axe violations only when the host carries an accessible name. Unlabelled caller output does not satisfy the naming contract.
164
165
 
165
166
  **Props exposed in the playground controls:**
166
167
 
@@ -194,7 +195,7 @@ The demo file at `demo_path` exposes the component to the playground. The playgr
194
195
  **Boundary rules:**
195
196
 
196
197
  - App-owned data: the encoded payload, the persistence of the payload, the security/rotation policy, the print/download lifecycle, and any analytics on scan events.
197
- - DS-owned visuals: token bindings (`--dsx-space-md`, `--dsx-rounded-xl`, `--dsx-rounded-sm`, `--dsx-color-surface-raised`, `--dsx-color-outline`, `--dsx-color-on-surface`, `--dsx-color-high-contrast-border`, `--dsx-color-high-contrast`, `--dsx-border-width-sm`, `--dsx-size-{xs|md|xl}`), the `dsx-qr-code` root class, the `dsx-qr-code-size-{sm|md|lg}` modifier classes, and the high-contrast CSS hook.
198
+ - DS-owned visuals: token bindings (`--dsx-space-md`, `--dsx-rounded-xl`, `--dsx-rounded-sm`, `--dsx-color-surface-raised`, `--dsx-color-outline`, `--dsx-color-on-surface`, `--dsx-color-high-contrast-border`, `--dsx-color-high-contrast`, `--dsx-border-width-sm`), the `dsx-qr-code` root class, the `dsx-qr-code-size-{sm|md|lg}` modifier classes, the runtime painted sizes (`128`/`192`/`256`), and the high-contrast CSS hook. The `dsx-size-*` tokens are explicitly NOT bound to the matrix.
198
199
 
199
200
  ## Penpot build recipe
200
201
 
@@ -205,7 +206,7 @@ The package does not yet publish a Penpot asset for QRCode. Recipe is visual ref
205
206
  ### Root board
206
207
 
207
208
  - **Name**: `Components / QRCode`.
208
- - **Dimensions**: `var(--dsx-size-md)` × `var(--dsx-size-md)` at the default `md` size; `var(--dsx-size-xs)` at `sm`; `var(--dsx-size-xl)` at `lg`.
209
+ - **Dimensions**: `192` × `192` px at the default `md` size; `128` px at `sm`; `256` px at `lg` (runtime painted sizes, not tokens).
209
210
  - **Layout**: `Fixed`.
210
211
  - **Sizing**: `horizontalSizing = 'fix'`, `verticalSizing = 'fix'`.
211
212
 
@@ -225,9 +226,9 @@ The package does not yet publish a Penpot asset for QRCode. Recipe is visual ref
225
226
  | Root | stroke | `--dsx-color-outline` | Color | `strokes` |
226
227
  | Root | padding | `--dsx-space-md` | Spacing | `padding` |
227
228
  | Root | corner radius | `--dsx-rounded-xl` | Radius | `radius` |
228
- | Root (size sm) | width, height | `--dsx-size-xs` | Sizing | `size` |
229
- | Root (size md) | width, height | `--dsx-size-md` | Sizing | `size` |
230
- | Root (size lg) | width, height | `--dsx-size-xl` | Sizing | `size` |
229
+ | Root (size sm) | width, height | `128` px (runtime, no token) | Sizing | `size` |
230
+ | Root (size md) | width, height | `192` px (runtime, no token) | Sizing | `size` |
231
+ | Root (size lg) | width, height | `256` px (runtime, no token) | Sizing | `size` |
231
232
  | Matrix | fill | `--dsx-color-on-surface` | Color | `fills` |
232
233
  | Matrix (high-contrast) | fill | `--dsx-color-high-contrast` | Color | `fills` (state) |
233
234
 
@@ -56,18 +56,23 @@ Rules that apply to this row:
56
56
 
57
57
  ## Token mapping
58
58
 
59
- Every CSS value the component paints is a CSS keyword or hard-code; there are no `var(--dsx-*)` tokens in `quote.css`. The italic style matches the HTML `<q>` element's expected visual treatment.
59
+ Every CSS value the component paints is a CSS keyword or hard-code; there are no `var(--dsx-*)` tokens in `quote.css`. Italics are this package's visual choice; HTML quotation semantics come from `<q>` and its generated quotation marks.
60
60
 
61
61
  | Property | Token | Role |
62
62
  |---|---|---|
63
63
  | `quotes` | `auto` (CSS keyword) | Lets the browser pick the right opening and closing quote glyphs from the document language. |
64
- | Font style | `italic` (hard-coded) | Visual convention for inline quotation; matches the HTML `<q>` default and is not overridable through a prop. |
64
+ | Font style | `italic` (hard-coded) | Package convention for inline quotation, not an HTML requirement; consumer style can override it. |
65
65
 
66
66
  Rules:
67
67
 
68
- - `DESIGN.md` and the generated `tokens.css` do not define a `quotes` or italic typography token. Both are CSS hard-codes, consistent with the HTML `<q>` element's default behavior.
68
+ - `DESIGN.md` and the generated `tokens.css` do not define a `quotes` or italic typography token. Language-aware quotation marks follow native `<q>` behavior; the italic treatment is authored by this package.
69
69
  - No raw color, spacing, or motion values are introduced by this component.
70
70
 
71
+ Large opening/closing quotation glyphs, icons and source captions belong to a
72
+ consumer's block quotation composition using `Blockquote`, not an inline
73
+ Quote variant. Em marks stress emphasis; Quote marks words quoted from a
74
+ source even though both share an italic treatment.
75
+
71
76
  ## Motion contract
72
77
 
73
78
  | Region | Token | Default | Reduced |
@@ -108,7 +113,7 @@ Rules:
108
113
 
109
114
  ## Playground demo spec
110
115
 
111
- `Quote` is registered in `apps/playground/lib/registry/typography.tsx` under the `quote` key. The registry entry imports `quotePropDefs` and renders the component with a sample inline quotation. Per-component route: `/docs/quote`.
116
+ `Quote` is registered in `apps/playground/lib/registry/typography.tsx` under the `quote` key. The registry entry imports `quotePropDefs` and renders the component with a sample inline quotation. Per-component route: `/docs/quote`. The live example uses English and Russian quotations, a nested quote and a slotted span.
112
117
 
113
118
  **Default story:**
114
119
 
@@ -47,7 +47,7 @@ A mutually exclusive selection cluster backed by `@radix-ui/react-radio-group`.
47
47
  | Prop | Type | Default | Required | Description | Responsive |
48
48
  |---|---|---|---|---|---|
49
49
  | `value` | `string` | — | yes | Unique value for this item. | no |
50
- | `size` | `'sm' \| 'md'` | `'md'` | no | Item-level size override. Drives the `dsx-radio-item--{size}` class. | no |
50
+ | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | no | Item-level size override. Drives the `dsx-radio-item--{size}` class. | no |
51
51
  | `label` | `ReactNode` | `undefined` | no | When set, the item wraps itself in a `<label class="dsx-radio-option">` and renders the label inside a `dsx-radio-option__label` span. | no |
52
52
  | `description` | `ReactNode` | `undefined` | no | When set, the item renders a `dsx-radio-option__description` span under the label. | no |
53
53
  | `asChild` | `boolean` | `false` | no | Renders the item host through `Slot`. | no |
@@ -79,6 +79,7 @@ Rules:
79
79
  | `RadioGroupItem` (host) | `dsx-radio-item` | `radio-group.css` |
80
80
  | `RadioGroupItem` (size sm) | `dsx-radio-item--sm` | `radio-group.css` |
81
81
  | `RadioGroupItem` (size md) | `dsx-radio-item--md` | `radio-group.css` |
82
+ | `RadioGroupItem` (size lg) | `dsx-radio-item--lg` | `radio-group.css` |
82
83
  | Item indicator | `dsx-radio-item__indicator` | `radio-group.css` |
83
84
  | Item dot | `dsx-radio-item__dot` | `radio-group.css` |
84
85
  | Option wrapper | `dsx-radio-option` | `radio-group.css` |
@@ -106,7 +107,9 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
106
107
  | Option label/description typography | `var(--dsx-typography-body-medium-*)` | Body ramp. |
107
108
  | Option description color | `var(--dsx-color-on-surface-variant)` | Muted description. |
108
109
  | Item size (default) | `var(--dsx-size-md)` | Default control. |
109
- | Item size (sm) | `var(--dsx-size-sm)` | Small control. |
110
+ | Item size (sm) | `var(--dsx-size-sm)` | Small control (20px). |
111
+ | Item size (lg) | `var(--dsx-size-lg)` | Large control (32px). |
112
+ | Item hit area | `max(100% + 16px, 44px)` via `::before` | Layout-neutral 44px pointer target (WCAG 2.5.8, TMA touch). |
110
113
  | Item radius | `var(--dsx-rounded-full)` | Round. |
111
114
  | Item border | `var(--dsx-border-width-md)` solid `var(--dsx-color-outline-variant)` | Resting edge. |
112
115
  | Item background | `var(--dsx-color-surface)` | Resting fill. |
@@ -79,6 +79,8 @@ Rules:
79
79
 
80
80
  - The component does not write `@media` rules.
81
81
 
82
+ - The `sm` star remains 20px visually. A centered `::before` layer expands its pointer target to the 24px `size-md` token, filling the existing 4px gap without overlapping neighboring targets.
83
+
82
84
  **Reduced motion:**
83
85
 
84
86
  - Item transitions use `var(--dsx-motion-duration-fast)` and `var(--dsx-motion-easing-standard)` for color, transform, opacity, and box-shadow. No explicit `prefers-reduced-motion` gate is present in the CSS.