@d4gger/design-system 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/dist/{components/controlGroup/ControlGroup.cjs → _internal/floatingLayer.cjs} +11 -26
  2. package/dist/_internal/floatingLayer.cjs.map +7 -0
  3. package/dist/_internal/floatingLayer.d.cts +28 -0
  4. package/dist/_internal/floatingLayer.d.cts.map +1 -0
  5. package/dist/_internal/floatingLayer.d.mts +28 -0
  6. package/dist/_internal/floatingLayer.d.mts.map +1 -0
  7. package/dist/_internal/floatingLayer.d.ts +28 -0
  8. package/dist/_internal/floatingLayer.d.ts.map +1 -0
  9. package/dist/_internal/floatingLayer.js +11 -0
  10. package/dist/_internal/floatingLayer.js.map +7 -0
  11. package/dist/components/banner/Banner.cjs +105 -0
  12. package/dist/components/banner/Banner.cjs.map +7 -0
  13. package/dist/components/banner/Banner.d.cts +27 -0
  14. package/dist/components/banner/Banner.d.cts.map +1 -0
  15. package/dist/components/banner/Banner.d.mts +27 -0
  16. package/dist/components/banner/Banner.d.mts.map +1 -0
  17. package/dist/components/banner/Banner.d.ts +27 -0
  18. package/dist/components/banner/Banner.d.ts.map +1 -0
  19. package/dist/components/banner/Banner.js +80 -0
  20. package/dist/components/banner/Banner.js.map +7 -0
  21. package/dist/components/{controlGroup/controlGroup.props.cjs → banner/banner.props.cjs} +23 -16
  22. package/dist/components/banner/banner.props.cjs.map +7 -0
  23. package/dist/components/banner/banner.props.d.cts +32 -0
  24. package/dist/components/banner/banner.props.d.cts.map +1 -0
  25. package/dist/components/banner/banner.props.d.mts +32 -0
  26. package/dist/components/banner/banner.props.d.mts.map +1 -0
  27. package/dist/components/banner/banner.props.d.ts +32 -0
  28. package/dist/components/banner/banner.props.d.ts.map +1 -0
  29. package/dist/components/banner/banner.props.js +27 -0
  30. package/dist/components/banner/banner.props.js.map +7 -0
  31. package/dist/components/banner.css +60 -0
  32. package/dist/components/button-group.css +25 -0
  33. package/dist/components/button.css +9 -0
  34. package/dist/components/card.css +3 -0
  35. package/dist/components/carousel/Carousel.cjs +109 -39
  36. package/dist/components/carousel/Carousel.cjs.map +3 -3
  37. package/dist/components/carousel/Carousel.d.cts.map +1 -1
  38. package/dist/components/carousel/Carousel.d.mts.map +1 -1
  39. package/dist/components/carousel/Carousel.d.ts.map +1 -1
  40. package/dist/components/carousel/Carousel.js +111 -41
  41. package/dist/components/carousel/Carousel.js.map +3 -3
  42. package/dist/components/carousel.css +93 -26
  43. package/dist/components/chart/Chart.cjs +61 -11
  44. package/dist/components/chart/Chart.cjs.map +2 -2
  45. package/dist/components/chart/Chart.d.cts.map +1 -1
  46. package/dist/components/chart/Chart.d.mts.map +1 -1
  47. package/dist/components/chart/Chart.d.ts.map +1 -1
  48. package/dist/components/chart/Chart.js +62 -11
  49. package/dist/components/chart/Chart.js.map +2 -2
  50. package/dist/components/chart.css +10 -1
  51. package/dist/components/checkbox.css +14 -0
  52. package/dist/components/combobox/Combobox.cjs +3 -1
  53. package/dist/components/combobox/Combobox.cjs.map +2 -2
  54. package/dist/components/combobox/Combobox.d.cts.map +1 -1
  55. package/dist/components/combobox/Combobox.d.mts.map +1 -1
  56. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  57. package/dist/components/combobox/Combobox.js +3 -1
  58. package/dist/components/combobox/Combobox.js.map +2 -2
  59. package/dist/components/combobox.css +5 -1
  60. package/dist/components/command/Command.cjs +1 -1
  61. package/dist/components/command/Command.cjs.map +2 -2
  62. package/dist/components/command/Command.js +1 -1
  63. package/dist/components/command/Command.js.map +2 -2
  64. package/dist/components/context-menu.css +1 -1
  65. package/dist/components/copy-field.css +18 -0
  66. package/dist/components/copyField/CopyField.cjs +3 -3
  67. package/dist/components/copyField/CopyField.cjs.map +2 -2
  68. package/dist/components/copyField/CopyField.d.cts.map +1 -1
  69. package/dist/components/copyField/CopyField.d.mts.map +1 -1
  70. package/dist/components/copyField/CopyField.d.ts.map +1 -1
  71. package/dist/components/copyField/CopyField.js +3 -3
  72. package/dist/components/copyField/CopyField.js.map +2 -2
  73. package/dist/components/data-list.css +19 -4
  74. package/dist/components/data-table.css +190 -0
  75. package/dist/components/dataTable/DataTable.cjs +193 -68
  76. package/dist/components/dataTable/DataTable.cjs.map +3 -3
  77. package/dist/components/dataTable/DataTable.d.cts +29 -1
  78. package/dist/components/dataTable/DataTable.d.cts.map +1 -1
  79. package/dist/components/dataTable/DataTable.d.mts +29 -1
  80. package/dist/components/dataTable/DataTable.d.mts.map +1 -1
  81. package/dist/components/dataTable/DataTable.d.ts +29 -1
  82. package/dist/components/dataTable/DataTable.d.ts.map +1 -1
  83. package/dist/components/dataTable/DataTable.js +193 -68
  84. package/dist/components/dataTable/DataTable.js.map +2 -2
  85. package/dist/components/dataTable/DataTableContext.cjs +41 -0
  86. package/dist/components/dataTable/DataTableContext.cjs.map +7 -0
  87. package/dist/components/dataTable/DataTableContext.d.cts +23 -0
  88. package/dist/components/dataTable/DataTableContext.d.cts.map +1 -0
  89. package/dist/components/dataTable/DataTableContext.d.mts +23 -0
  90. package/dist/components/dataTable/DataTableContext.d.mts.map +1 -0
  91. package/dist/components/dataTable/DataTableContext.d.ts +23 -0
  92. package/dist/components/dataTable/DataTableContext.d.ts.map +1 -0
  93. package/dist/components/dataTable/DataTableContext.js +11 -0
  94. package/dist/components/dataTable/DataTableContext.js.map +7 -0
  95. package/dist/components/dataTable/DataTablePagination.cjs +72 -47
  96. package/dist/components/dataTable/DataTablePagination.cjs.map +2 -2
  97. package/dist/components/dataTable/DataTablePagination.d.cts +5 -1
  98. package/dist/components/dataTable/DataTablePagination.d.cts.map +1 -1
  99. package/dist/components/dataTable/DataTablePagination.d.mts +5 -1
  100. package/dist/components/dataTable/DataTablePagination.d.mts.map +1 -1
  101. package/dist/components/dataTable/DataTablePagination.d.ts +5 -1
  102. package/dist/components/dataTable/DataTablePagination.d.ts.map +1 -1
  103. package/dist/components/dataTable/DataTablePagination.js +75 -47
  104. package/dist/components/dataTable/DataTablePagination.js.map +2 -2
  105. package/dist/components/dataTable/DataTableToolbar.cjs +122 -93
  106. package/dist/components/dataTable/DataTableToolbar.cjs.map +2 -2
  107. package/dist/components/dataTable/DataTableToolbar.d.cts +6 -5
  108. package/dist/components/dataTable/DataTableToolbar.d.cts.map +1 -1
  109. package/dist/components/dataTable/DataTableToolbar.d.mts +6 -5
  110. package/dist/components/dataTable/DataTableToolbar.d.mts.map +1 -1
  111. package/dist/components/dataTable/DataTableToolbar.d.ts +6 -5
  112. package/dist/components/dataTable/DataTableToolbar.d.ts.map +1 -1
  113. package/dist/components/dataTable/DataTableToolbar.js +123 -94
  114. package/dist/components/dataTable/DataTableToolbar.js.map +2 -2
  115. package/dist/components/dataTable/dataTable.export.cjs +83 -0
  116. package/dist/components/dataTable/dataTable.export.cjs.map +7 -0
  117. package/dist/components/dataTable/dataTable.export.d.cts +11 -0
  118. package/dist/components/dataTable/dataTable.export.d.cts.map +1 -0
  119. package/dist/components/dataTable/dataTable.export.d.mts +11 -0
  120. package/dist/components/dataTable/dataTable.export.d.mts.map +1 -0
  121. package/dist/components/dataTable/dataTable.export.d.ts +11 -0
  122. package/dist/components/dataTable/dataTable.export.d.ts.map +1 -0
  123. package/dist/components/dataTable/dataTable.export.js +63 -0
  124. package/dist/components/dataTable/dataTable.export.js.map +7 -0
  125. package/dist/components/dataTable/dataTable.props.cjs +23 -1
  126. package/dist/components/dataTable/dataTable.props.cjs.map +2 -2
  127. package/dist/components/dataTable/dataTable.props.d.cts +21 -1
  128. package/dist/components/dataTable/dataTable.props.d.cts.map +1 -1
  129. package/dist/components/dataTable/dataTable.props.d.mts +21 -1
  130. package/dist/components/dataTable/dataTable.props.d.mts.map +1 -1
  131. package/dist/components/dataTable/dataTable.props.d.ts +21 -1
  132. package/dist/components/dataTable/dataTable.props.d.ts.map +1 -1
  133. package/dist/components/dataTable/dataTable.props.js +23 -1
  134. package/dist/components/dataTable/dataTable.props.js.map +2 -2
  135. package/dist/components/dialog/Dialog.cjs +2 -1
  136. package/dist/components/dialog/Dialog.cjs.map +2 -2
  137. package/dist/components/dialog/Dialog.d.cts.map +1 -1
  138. package/dist/components/dialog/Dialog.d.mts.map +1 -1
  139. package/dist/components/dialog/Dialog.d.ts.map +1 -1
  140. package/dist/components/dialog/Dialog.js +2 -1
  141. package/dist/components/dialog/Dialog.js.map +2 -2
  142. package/dist/components/dropdown-menu.css +1 -1
  143. package/dist/components/empty-state.css +5 -0
  144. package/dist/components/fileUpload/FileUpload.cjs +10 -1
  145. package/dist/components/fileUpload/FileUpload.cjs.map +2 -2
  146. package/dist/components/fileUpload/FileUpload.d.cts +1 -0
  147. package/dist/components/fileUpload/FileUpload.d.cts.map +1 -1
  148. package/dist/components/fileUpload/FileUpload.d.mts +1 -0
  149. package/dist/components/fileUpload/FileUpload.d.mts.map +1 -1
  150. package/dist/components/fileUpload/FileUpload.d.ts +1 -0
  151. package/dist/components/fileUpload/FileUpload.d.ts.map +1 -1
  152. package/dist/components/fileUpload/FileUpload.js +10 -1
  153. package/dist/components/fileUpload/FileUpload.js.map +2 -2
  154. package/dist/components/filter-bar.css +380 -8
  155. package/dist/components/filterBar/FilterBar.cjs +630 -1
  156. package/dist/components/filterBar/FilterBar.cjs.map +2 -2
  157. package/dist/components/filterBar/FilterBar.d.cts +132 -2
  158. package/dist/components/filterBar/FilterBar.d.cts.map +1 -1
  159. package/dist/components/filterBar/FilterBar.d.mts +132 -2
  160. package/dist/components/filterBar/FilterBar.d.mts.map +1 -1
  161. package/dist/components/filterBar/FilterBar.d.ts +132 -2
  162. package/dist/components/filterBar/FilterBar.d.ts.map +1 -1
  163. package/dist/components/filterBar/FilterBar.js +631 -2
  164. package/dist/components/filterBar/FilterBar.js.map +2 -2
  165. package/dist/components/floating-panel.css +1 -1
  166. package/dist/components/fontProvider/FontProvider.cjs +1 -1
  167. package/dist/components/fontProvider/FontProvider.cjs.map +1 -1
  168. package/dist/components/fontProvider/FontProvider.js +1 -1
  169. package/dist/components/fontProvider/FontProvider.js.map +1 -1
  170. package/dist/components/icon/Icon.cjs +25 -2
  171. package/dist/components/icon/Icon.cjs.map +2 -2
  172. package/dist/components/icon/Icon.d.cts +29 -1
  173. package/dist/components/icon/Icon.d.cts.map +1 -1
  174. package/dist/components/icon/Icon.d.mts +29 -1
  175. package/dist/components/icon/Icon.d.mts.map +1 -1
  176. package/dist/components/icon/Icon.d.ts +29 -1
  177. package/dist/components/icon/Icon.d.ts.map +1 -1
  178. package/dist/components/icon/Icon.js +33 -2
  179. package/dist/components/icon/Icon.js.map +2 -2
  180. package/dist/components/icon/icons.cjs +16 -0
  181. package/dist/components/icon/icons.cjs.map +2 -2
  182. package/dist/components/icon/icons.d.cts +40 -0
  183. package/dist/components/icon/icons.d.cts.map +1 -1
  184. package/dist/components/icon/icons.d.mts +40 -0
  185. package/dist/components/icon/icons.d.mts.map +1 -1
  186. package/dist/components/icon/icons.d.ts +40 -0
  187. package/dist/components/icon/icons.d.ts.map +1 -1
  188. package/dist/components/icon/icons.js +16 -0
  189. package/dist/components/icon/icons.js.map +2 -2
  190. package/dist/components/icon-button.css +29 -0
  191. package/dist/components/index.cjs +1 -1
  192. package/dist/components/index.cjs.map +2 -2
  193. package/dist/components/index.d.cts +1 -1
  194. package/dist/components/index.d.cts.map +1 -1
  195. package/dist/components/index.d.mts +1 -1
  196. package/dist/components/index.d.mts.map +1 -1
  197. package/dist/components/index.d.ts +1 -1
  198. package/dist/components/index.d.ts.map +1 -1
  199. package/dist/components/index.js +1 -1
  200. package/dist/components/index.js.map +1 -1
  201. package/dist/components/item/Item.cjs +1 -1
  202. package/dist/components/item/Item.cjs.map +2 -2
  203. package/dist/components/item/Item.js +1 -1
  204. package/dist/components/item/Item.js.map +2 -2
  205. package/dist/components/item.css +12 -1
  206. package/dist/components/marquee/Marquee.cjs +1 -1
  207. package/dist/components/marquee/Marquee.cjs.map +2 -2
  208. package/dist/components/marquee/Marquee.js +1 -1
  209. package/dist/components/marquee/Marquee.js.map +2 -2
  210. package/dist/components/marquee.css +6 -0
  211. package/dist/components/menu/Menu.cjs +3 -1
  212. package/dist/components/menu/Menu.cjs.map +2 -2
  213. package/dist/components/menu/Menu.d.cts.map +1 -1
  214. package/dist/components/menu/Menu.d.mts.map +1 -1
  215. package/dist/components/menu/Menu.d.ts.map +1 -1
  216. package/dist/components/menu/Menu.js +3 -1
  217. package/dist/components/menu/Menu.js.map +2 -2
  218. package/dist/components/menubar.css +1 -1
  219. package/dist/components/metric.css +5 -0
  220. package/dist/components/pagination/Pagination.cjs +143 -17
  221. package/dist/components/pagination/Pagination.cjs.map +2 -2
  222. package/dist/components/pagination/Pagination.d.cts +64 -4
  223. package/dist/components/pagination/Pagination.d.cts.map +1 -1
  224. package/dist/components/pagination/Pagination.d.mts +64 -4
  225. package/dist/components/pagination/Pagination.d.mts.map +1 -1
  226. package/dist/components/pagination/Pagination.d.ts +64 -4
  227. package/dist/components/pagination/Pagination.d.ts.map +1 -1
  228. package/dist/components/pagination/Pagination.js +143 -17
  229. package/dist/components/pagination/Pagination.js.map +2 -2
  230. package/dist/components/pagination.css +50 -8
  231. package/dist/components/phoneInput/PhoneInput.cjs +18 -13
  232. package/dist/components/phoneInput/PhoneInput.cjs.map +2 -2
  233. package/dist/components/phoneInput/PhoneInput.d.cts.map +1 -1
  234. package/dist/components/phoneInput/PhoneInput.d.mts.map +1 -1
  235. package/dist/components/phoneInput/PhoneInput.d.ts.map +1 -1
  236. package/dist/components/phoneInput/PhoneInput.js +19 -14
  237. package/dist/components/phoneInput/PhoneInput.js.map +2 -2
  238. package/dist/components/popover/Popover.cjs +2 -1
  239. package/dist/components/popover/Popover.cjs.map +2 -2
  240. package/dist/components/popover/Popover.d.cts.map +1 -1
  241. package/dist/components/popover/Popover.d.mts.map +1 -1
  242. package/dist/components/popover/Popover.d.ts.map +1 -1
  243. package/dist/components/popover/Popover.js +2 -1
  244. package/dist/components/popover/Popover.js.map +2 -2
  245. package/dist/components/prose.css +1 -1
  246. package/dist/components/qr-code.css +5 -15
  247. package/dist/components/radio-group.css +19 -0
  248. package/dist/components/radioGroup/RadioGroup.cjs +3 -2
  249. package/dist/components/radioGroup/RadioGroup.cjs.map +2 -2
  250. package/dist/components/radioGroup/RadioGroup.d.cts.map +1 -1
  251. package/dist/components/radioGroup/RadioGroup.d.mts.map +1 -1
  252. package/dist/components/radioGroup/RadioGroup.d.ts.map +1 -1
  253. package/dist/components/radioGroup/RadioGroup.js +3 -2
  254. package/dist/components/radioGroup/RadioGroup.js.map +2 -2
  255. package/dist/components/radioGroup/radioGroup.props.cjs +1 -1
  256. package/dist/components/radioGroup/radioGroup.props.cjs.map +2 -2
  257. package/dist/components/radioGroup/radioGroup.props.d.cts +1 -1
  258. package/dist/components/radioGroup/radioGroup.props.d.mts +1 -1
  259. package/dist/components/radioGroup/radioGroup.props.d.ts +1 -1
  260. package/dist/components/radioGroup/radioGroup.props.js +1 -1
  261. package/dist/components/radioGroup/radioGroup.props.js.map +2 -2
  262. package/dist/components/rating.css +12 -0
  263. package/dist/components/result.css +2 -1
  264. package/dist/components/richTextEditor/RichTextEditor.cjs +11 -3
  265. package/dist/components/richTextEditor/RichTextEditor.cjs.map +2 -2
  266. package/dist/components/richTextEditor/RichTextEditor.d.cts.map +1 -1
  267. package/dist/components/richTextEditor/RichTextEditor.d.mts.map +1 -1
  268. package/dist/components/richTextEditor/RichTextEditor.d.ts.map +1 -1
  269. package/dist/components/richTextEditor/RichTextEditor.js +11 -3
  270. package/dist/components/richTextEditor/RichTextEditor.js.map +2 -2
  271. package/dist/components/segmented-control.css +80 -4
  272. package/dist/components/segmentedControl/SegmentedControl.cjs +18 -5
  273. package/dist/components/segmentedControl/SegmentedControl.cjs.map +2 -2
  274. package/dist/components/segmentedControl/SegmentedControl.d.cts.map +1 -1
  275. package/dist/components/segmentedControl/SegmentedControl.d.mts.map +1 -1
  276. package/dist/components/segmentedControl/SegmentedControl.d.ts.map +1 -1
  277. package/dist/components/segmentedControl/SegmentedControl.js +18 -5
  278. package/dist/components/segmentedControl/SegmentedControl.js.map +2 -2
  279. package/dist/components/segmentedControl/segmentedControl.props.cjs +10 -0
  280. package/dist/components/segmentedControl/segmentedControl.props.cjs.map +2 -2
  281. package/dist/components/segmentedControl/segmentedControl.props.d.cts +9 -0
  282. package/dist/components/segmentedControl/segmentedControl.props.d.cts.map +1 -1
  283. package/dist/components/segmentedControl/segmentedControl.props.d.mts +9 -0
  284. package/dist/components/segmentedControl/segmentedControl.props.d.mts.map +1 -1
  285. package/dist/components/segmentedControl/segmentedControl.props.d.ts +9 -0
  286. package/dist/components/segmentedControl/segmentedControl.props.d.ts.map +1 -1
  287. package/dist/components/segmentedControl/segmentedControl.props.js +10 -0
  288. package/dist/components/segmentedControl/segmentedControl.props.js.map +2 -2
  289. package/dist/components/select/Select.cjs +3 -1
  290. package/dist/components/select/Select.cjs.map +2 -2
  291. package/dist/components/select/Select.d.cts.map +1 -1
  292. package/dist/components/select/Select.d.mts.map +1 -1
  293. package/dist/components/select/Select.d.ts.map +1 -1
  294. package/dist/components/select/Select.js +3 -1
  295. package/dist/components/select/Select.js.map +2 -2
  296. package/dist/components/select.css +1 -1
  297. package/dist/components/sonner.css +1 -1
  298. package/dist/components/sortableList/SortableList.cjs +8 -2
  299. package/dist/components/sortableList/SortableList.cjs.map +2 -2
  300. package/dist/components/sortableList/SortableList.d.cts.map +1 -1
  301. package/dist/components/sortableList/SortableList.d.mts.map +1 -1
  302. package/dist/components/sortableList/SortableList.d.ts.map +1 -1
  303. package/dist/components/sortableList/SortableList.js +8 -2
  304. package/dist/components/sortableList/SortableList.js.map +2 -2
  305. package/dist/components/stat-card.css +2 -0
  306. package/dist/components/table/Table.cjs +3 -2
  307. package/dist/components/table/Table.cjs.map +2 -2
  308. package/dist/components/table/Table.d.cts.map +1 -1
  309. package/dist/components/table/Table.d.mts.map +1 -1
  310. package/dist/components/table/Table.d.ts.map +1 -1
  311. package/dist/components/table/Table.js +3 -2
  312. package/dist/components/table/Table.js.map +2 -2
  313. package/dist/components/table/table.props.cjs +6 -0
  314. package/dist/components/table/table.props.cjs.map +2 -2
  315. package/dist/components/table/table.props.d.cts +5 -0
  316. package/dist/components/table/table.props.d.cts.map +1 -1
  317. package/dist/components/table/table.props.d.mts +5 -0
  318. package/dist/components/table/table.props.d.mts.map +1 -1
  319. package/dist/components/table/table.props.d.ts +5 -0
  320. package/dist/components/table/table.props.d.ts.map +1 -1
  321. package/dist/components/table/table.props.js +6 -0
  322. package/dist/components/table/table.props.js.map +2 -2
  323. package/dist/components/table.css +20 -13
  324. package/dist/components/tabs.css +10 -0
  325. package/dist/components/timeline.css +54 -18
  326. package/dist/components/toast.css +33 -1
  327. package/dist/components/toggle-group.css +5 -0
  328. package/dist/components.css +1 -2
  329. package/dist/docs/README.md +1 -1
  330. package/dist/docs/component-contract.md +4 -4
  331. package/dist/docs/component-index.json +9 -9
  332. package/dist/docs/components/banner.md +152 -0
  333. package/dist/docs/components/button-group.md +4 -3
  334. package/dist/docs/components/button.md +2 -2
  335. package/dist/docs/components/card.md +1 -0
  336. package/dist/docs/components/carousel.md +55 -32
  337. package/dist/docs/components/chart.md +25 -7
  338. package/dist/docs/components/checkbox.md +4 -0
  339. package/dist/docs/components/combobox.md +3 -1
  340. package/dist/docs/components/command.md +2 -2
  341. package/dist/docs/components/copy-field.md +2 -2
  342. package/dist/docs/components/data-list.md +15 -3
  343. package/dist/docs/components/data-table.md +98 -17
  344. package/dist/docs/components/dialog.md +4 -0
  345. package/dist/docs/components/dropdown-menu.md +2 -1
  346. package/dist/docs/components/empty-state.md +3 -1
  347. package/dist/docs/components/file-upload.md +1 -0
  348. package/dist/docs/components/filter-bar.md +193 -8
  349. package/dist/docs/components/floating-panel.md +8 -8
  350. package/dist/docs/components/icon-button.md +4 -1
  351. package/dist/docs/components/item.md +18 -13
  352. package/dist/docs/components/marquee.md +2 -2
  353. package/dist/docs/components/menu.md +4 -1
  354. package/dist/docs/components/metric.md +4 -1
  355. package/dist/docs/components/pagination.md +88 -17
  356. package/dist/docs/components/pills.md +1 -1
  357. package/dist/docs/components/popover.md +2 -0
  358. package/dist/docs/components/prose.md +5 -1
  359. package/dist/docs/components/qr-code.md +14 -13
  360. package/dist/docs/components/radio-group.md +5 -2
  361. package/dist/docs/components/rating.md +2 -0
  362. package/dist/docs/components/result.md +6 -0
  363. package/dist/docs/components/segmented-control.md +7 -2
  364. package/dist/docs/components/select.md +3 -2
  365. package/dist/docs/components/sidebar.md +3 -1
  366. package/dist/docs/components/sonner.md +1 -1
  367. package/dist/docs/components/sortable-list.md +2 -0
  368. package/dist/docs/components/stat-card.md +5 -4
  369. package/dist/docs/components/stepper.md +1 -0
  370. package/dist/docs/components/table.md +14 -5
  371. package/dist/docs/components/tag.md +4 -2
  372. package/dist/docs/components/timeline.md +9 -5
  373. package/dist/docs/components/toast.md +1 -1
  374. package/dist/docs/components/toggle-group.md +2 -1
  375. package/dist/fonts.css +1 -1
  376. package/dist/generated/tokens.cjs +1 -1
  377. package/dist/generated/tokens.cjs.map +1 -1
  378. package/dist/generated/tokens.js +1 -1
  379. package/dist/generated/tokens.js.map +1 -1
  380. package/dist/motion.css +18 -3
  381. package/dist/styles.css +1249 -292
  382. package/dist/tokens.css +21 -15
  383. package/package.json +1 -1
  384. package/dist/components/control-group.css +0 -142
  385. package/dist/components/controlGroup/ControlGroup.cjs.map +0 -7
  386. package/dist/components/controlGroup/ControlGroup.d.cts +0 -16
  387. package/dist/components/controlGroup/ControlGroup.d.cts.map +0 -1
  388. package/dist/components/controlGroup/ControlGroup.d.mts +0 -16
  389. package/dist/components/controlGroup/ControlGroup.d.mts.map +0 -1
  390. package/dist/components/controlGroup/ControlGroup.d.ts +0 -16
  391. package/dist/components/controlGroup/ControlGroup.d.ts.map +0 -1
  392. package/dist/components/controlGroup/ControlGroup.js +0 -26
  393. package/dist/components/controlGroup/ControlGroup.js.map +0 -7
  394. package/dist/components/controlGroup/controlGroup.props.cjs.map +0 -7
  395. package/dist/components/controlGroup/controlGroup.props.d.cts +0 -18
  396. package/dist/components/controlGroup/controlGroup.props.d.cts.map +0 -1
  397. package/dist/components/controlGroup/controlGroup.props.d.mts +0 -18
  398. package/dist/components/controlGroup/controlGroup.props.d.mts.map +0 -1
  399. package/dist/components/controlGroup/controlGroup.props.d.ts +0 -18
  400. package/dist/components/controlGroup/controlGroup.props.d.ts.map +0 -1
  401. package/dist/components/controlGroup/controlGroup.props.js +0 -20
  402. package/dist/components/controlGroup/controlGroup.props.js.map +0 -7
  403. package/dist/docs/components/control-group.md +0 -261
@@ -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.
@@ -15,6 +15,8 @@ Canonical outcome and list-state surface. `state` is `success`, `failure`, `expi
15
15
 
16
16
  `Result.Root`, `Result.Icon`, `Result.Title`, `Result.Description`, `Result.Metadata`, `Result.Steps`, and `Result.Actions`. Root class is `dsx-result`; slot classes use `dsx-result__<slot>`. Root writes `data-state` and `data-tone`.
17
17
 
18
+ The root shrinks to the available width, direct children stay within that width, and long titles, descriptions, and identifiers wrap without truncation. Actions wrap intrinsically; no viewport query selects a different layout.
19
+
18
20
  ## Wiring notes
19
21
 
20
22
  `EmptyState` delegates to `Result state="empty"` while preserving its legacy class and props. `DataTable` uses Result for loading, empty, no-results, and error states. Copy, retry behavior, and async work are consumer-owned.
@@ -22,3 +24,7 @@ Canonical outcome and list-state surface. `state` is `success`, `failure`, `expi
22
24
  ## Playground demo spec
23
25
 
24
26
  Show every state, an independently overridden tone, populated slots, and alert/loading semantics.
27
+
28
+ The live playground example switches between all seven states with actual buttons. Each state has contextual copy, a matching illustration or spinner, and an appropriate recovery action. Success shows connection metadata; loading shows steps. Recovery returns to success and Continue opens the empty saved-server state. The compact default example provides an illustration, title, and description.
29
+
30
+ The inline live example uses headline-medium for its title and one outlined Result surface, avoiding compounded Card/Result padding. Short state titles preserve whole-word readability at 320px.
@@ -13,7 +13,7 @@ depends_on:
13
13
 
14
14
  ## Purpose
15
15
 
16
- A single-select control that renders a row of mutually exclusive options, backed by `ToggleGroup` from Radix. `default` is a sunken track with a sliding softly tinted raised pill behind the active option; `outline` is the same pill inside an outer frame; `subtle` is the borderless treatment with the same selected pill. Used for switching between views, filters, or modes in forms and toolbars.
16
+ A single-select control that renders a row of mutually exclusive options, backed by `ToggleGroup` from Radix. `default` is a sunken track with a sliding softly tinted raised pill behind the active option; `outline` is the same pill inside an outer frame; `subtle` is the borderless treatment with the same selected pill. Used for switching between views, filters, or modes in forms and toolbars. Boundary rule (F6 brief): exclusive single-select with a thumb is always a SegmentedControl; frameless toolbar button clusters without a thumb are `ToggleGroup`. Never multi-select, never dismissible.
17
17
 
18
18
  ## Anatomy & slots
19
19
 
@@ -34,7 +34,9 @@ A single-select control that renders a row of mutually exclusive options, backed
34
34
  | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | no | Control height and item padding; writes `data-size` and `dsx-segmented-control--{size}` class. | no |
35
35
  | `variant` | `'default' \| 'outline' \| 'subtle'` | `'default'` | no | Container surface treatment; writes `data-variant` and `dsx-segmented-control--{variant}` class. `subtle` keeps the measured selected pill but removes the track surface and frame. | no |
36
36
  | `activationMode` | `'manual' \| 'automatic'` | `'manual'` | no | Selection timing; writes `data-activation-mode`. `manual` selects only on activation (click, `Enter`, `Space`). `automatic` selects on item focus, so arrow-key navigation selects without `Enter`. | no |
37
+ | `orientation` | `'horizontal' \| 'vertical'` | `'horizontal'` | no | Stacking axis; writes `data-orientation`. Vertical stacks icon columns (ref: view-switcher rails); the sliding indicator measures y/height and arrow keys move up/down via Radix. | no |
37
38
  | `disabled` | `boolean` | `false` | no | Disables the entire control; writes `data-disabled`. | no |
39
+ | `fill` | `boolean` | `false` | no | Distributes the track width equally across items; writes `data-fill` and `dsx-segmented-control--fill`; both selectors share the same fill styling. Opt-in for few-item groups that fit (method pickers); the default hug-content root with scroll containment stays for overflowing groups. The sliding indicator measures live boxes, so it tracks fill widths with no change. | no |
38
40
  | `value` | `string` | `undefined` | no | Controlled selected value. | no |
39
41
  | `defaultValue` | `string` | `undefined` | no | Uncontrolled initial selected value. | no |
40
42
  | `onValueChange` | `(value: string) => void` | `undefined` | no | Callback when the selected value changes. | no |
@@ -53,7 +55,7 @@ A single-select control that renders a row of mutually exclusive options, backed
53
55
 
54
56
  Rules:
55
57
 
56
- - `size` and `disabled` are wired through `extractProps` and the prop def bag on the Root. `variant` and `activationMode` are destructured with their defaults and kept out of the extract bag (their defs declare no `className`, so they would otherwise leak onto the DOM).
58
+ - `size` and `disabled` are wired through `extractProps` and the prop def bag on the Root. `variant`, `activationMode`, and `fill` are destructured with their defaults and kept out of the extract bag (their defs declare no `className`, so they would otherwise leak onto the DOM); `fill` writes `data-fill` plus the `--fill` modifier class manually, same as `variant`.
57
59
  - `value`, `defaultValue`, and `onValueChange` are passed through to the Radix ToggleGroup root directly.
58
60
  - The Root forces `type="single"` and filters empty string values from `onValueChange` to prevent deselection.
59
61
  - Deselect guard: the Root owns the selection state. Uncontrolled usage seeds internal state from `defaultValue` and passes the resolved value back into Radix as a controlled `value`, so clicking the active item (which fires `""`) can never clear Radix internal state or render the control with no active item. Controlled usage passes `value` straight through; `""` is still swallowed.
@@ -72,6 +74,8 @@ Rules:
72
74
  | `data-size` | `sm`, `md`, `lg` | `.dsx-segmented-control--sm`, `.dsx-segmented-control--md`, `.dsx-segmented-control--lg` | `segmented-control.css` |
73
75
  | `data-variant` | `default`, `outline`, `subtle` | `.dsx-segmented-control--default`, `.dsx-segmented-control--outline`, `.dsx-segmented-control--subtle` | `segmented-control.css` |
74
76
  | `data-disabled` | (present/absent) | `.dsx-segmented-control[data-disabled]` | `segmented-control.css` |
77
+ | `data-orientation` | `horizontal`, `vertical` | `.dsx-segmented-control[data-orientation='vertical']` (column stack; indicator measures y/height) | `segmented-control.css` |
78
+ | `data-fill` | (present/absent) | `.dsx-segmented-control--fill` (root spans the container, items share width equally) | `segmented-control.css` |
75
79
 
76
80
  **Slot classes:**
77
81
 
@@ -230,6 +234,7 @@ Automatic mode (`activationMode="automatic"`):
230
234
  | `variant` | select | `default` |
231
235
  | `activationMode` | select | `manual` |
232
236
  | `disabled` | boolean | `false` |
237
+ | `fill` | boolean | `false` |
233
238
 
234
239
  ## Wiring notes
235
240
 
@@ -176,7 +176,7 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
176
176
  | Content padding | `var(--dsx-space-sm)` | Floating menu inner gutter. |
177
177
  | Content width / min-width / max-width | `max-content` / `var(--radix-select-trigger-width, 200px)` / `min(--radix-select-content-available-width, 40rem)` | Mirror-at-minimum with grow-to-fit; past 40rem (or the viewport edge) rows wrap via `data-overflow` instead of stretching the panel. The 40rem ceiling is a token candidate for the size batch. |
178
178
  | Content max-height | `var(--dsx-size-popover-max-width)` | Scroll ceiling (used by the inner ScrollArea). |
179
- | Content z-index | `var(--dsx-z-index-dropdown)` | Overlay stacking. |
179
+ | Content z-index | `var(--dsx-z-index-dropdown)` standalone; `calc(var(--dsx-z-index-modal, 90) + 2)` when nested inside a modal-tier host (`dsx-menu__nested`, see the shared nested floating tier contract in `menu.md`) | Overlay stacking; nested menus clear their host popup. |
180
180
  | Item min-height | `var(--dsx-size-lg)` | Default option height. |
181
181
  | Item padding | density-aware block/inline tokens with trailing indicator reservation | Option padding; the right side reserves room for the trailing check indicator. |
182
182
  | Item border | `0` | Items are borderless. |
@@ -295,7 +295,8 @@ Rules:
295
295
  - `VisuallyHidden` (DS primitive): the hidden native `<select>` host.
296
296
  - `Icon` (lucide-react `chevron-down`): the trigger trailing icon. Lucide-react `check` is the item indicator.
297
297
  - `_internal/BaseDialog`: `PortalThemeBoundary` (wraps the root) and `PortalThemeWrapper` (wraps the content) so `data-dsx-theme`, `data-dsx-density`, `data-dsx-scaling`, `data-accent-color`, `data-gray-color`, `data-radius`, `data-panel-background`, `data-has-background`, and `colorScheme` resolve inside the content portal.
298
- - `_internal/baseMenu.css`: the shared menu shell, border, surface, and focus contract.
298
+ - `_internal/baseMenu.css`: the shared menu shell, border, surface, and focus contract — including the nested floating tier rule (`dsx-menu__nested` at `modal + 2`).
299
+ - `_internal/floatingLayer`: `useFloatingLayerHost` tells `Select.Content` whether it renders inside a modal-tier host (`Popover.Content` / `Dialog.Content`); when nested, the content adds `dsx-menu__nested` so the options list paints above its host. Standalone content never carries the class and stays at the dropdown tier, below the modal overlay.
299
300
  - `@radix-ui/react-slot`: enables `asChild` on `Select`, `Select.Trigger`, and `Select.Content`.
300
301
 
301
302
  **Used by:**
@@ -163,6 +163,8 @@ The parent button that toggles a `Sidebar.MenuSub`. Composes the public `Collaps
163
163
 
164
164
  ### `Sidebar.MenuBadge`
165
165
 
166
+ Dual pattern (F6 brief): inline row badges compose `Badge` (`secondary`, `sm`) directly inside the menu button; `MenuBadge` is the dedicated primitive for the absolute count / collapse-aware case and the `ring` / `accent` identities. Example row-value composition: `MenuButton` + `<Badge variant="secondary" size="sm">12</Badge>` — no `MenuBadge` needed.
167
+
166
168
  | Prop | Type | Default | Required | Description | Responsive |
167
169
  |---|---|---|---|---|---|
168
170
  | `variant` | `'text' \| 'ring' \| 'accent'` | `'text'` | no | `text` composes the compact secondary Badge, `ring` visualizes `value / max`, and `accent` renders quiet glowing numeric metadata without a filled chip. | no |
@@ -314,7 +316,7 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
314
316
  | Menu button active background | `color-mix(accent-3 50%, transparent)` | Sidebar-owned middle wash: 40% vanishes on spark-light, 60% shouts on saturated accents (warp/ray) — structure (inset underline) carries the rest of selection, no primary fill. |
315
317
  | Menu button active color | `var(--dsx-color-accent-indicator)` | Active menu button text and icon. |
316
318
  | Ring badge label typography | `var(--dsx-typography-label-small-*)` | Complete compact UI typography, including family, line height, spacing, case, decoration, and tabular numerals. |
317
- | Accent badge metadata | `var(--dsx-typography-label-small-*)`, `var(--dsx-color-accent-indicator)`, `var(--dsx-color-accent-9)` | Badge-geometry pill (full radius, Badge padding, fill-matched hairline, accent-surface fill) with a visible accent halo + pulse; full MenuBadge→Badge absorption is owned by the chip-taxonomy brief. |
319
+ | Accent badge metadata | `var(--dsx-typography-label-small-*)`, `var(--dsx-color-accent-indicator)`, `var(--dsx-color-accent-9)` | Badge-geometry pill (full radius, Badge padding, fill-matched hairline, accent-surface fill) with a visible accent halo + pulse. Dual pattern (F6 brief): inline row badges compose `Badge` directly; `MenuBadge` survives for the absolute count/collapse-aware case plus the glow + pulse identity, which has no Badge equivalent. |
318
320
  | Accent badge motion | `var(--dsx-motion-duration-shimmer)`, `var(--dsx-motion-easing-in-out)` | Continuous opacity and text-shadow pulse; removed under reduced motion. |
319
321
  | Menu sub padding | `0 0 0 calc(lg + sm)` | Indent budget: sub text lands exactly under the parent label (label x=40, was 32). |
320
322
  | Menu sub gap | `var(--dsx-space-xs)` | Gap inside submenu. |
@@ -86,7 +86,7 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
86
86
  | Toast background | `var(--dsx-color-surface)` | Resting toast surface. |
87
87
  | Toast radius | `var(--dsx-rounded-md)` | Toast corner roundness. |
88
88
  | Toast border | `var(--dsx-border-width-sm) solid var(--dsx-color-outline)` | Toast edge. |
89
- | Toast shadow | `var(--dsx-shadow-elevation-2)` | Toast elevation. |
89
+ | Toast shadow | `var(--dsx-shadow-elevation-5)` | Spotlight: below dialogs, above all menus (B4 Q3). |
90
90
  | Toast gap | `var(--dsx-space-md)` | Gap between icon, title, description, and buttons. |
91
91
  | Success border | `var(--dsx-color-success)` | Success variant edge. |
92
92
  | Error background | `var(--dsx-color-error-container)` | Error variant surface. |
@@ -25,6 +25,8 @@ raw id when the item cannot be resolved). Disabled items keep a focusable
25
25
  handle marked `aria-disabled`; the handle shows `cursor: not-allowed` and the
26
26
  row stays dimmed, and dnd-kit never lifts a disabled item.
27
27
 
28
+ Successful reordering restores focus to that list's handle. Repeated item IDs in another SortableList do not capture focus, and a content button before the handle is not used as the focus target.
29
+
28
30
  Import `SortableList` from `@d4gger/design-system/sortable-list`. It is intentionally absent from the root and `components` barrels so consumers that do not use reordering are not required to install the optional `@dnd-kit/*` peers.
29
31
 
30
32
  ## Playground demo spec
@@ -65,7 +65,7 @@ Each slot also accepts the standard HTML attributes for its host element. `StatC
65
65
  Rules:
66
66
 
67
67
  - The component does not emit `data-radius`, `data-accent-color`, or `data-high-contrast`. The contract calls for `data-variant` and `data-size` only.
68
- - The `Trend` icon is always rendered; consumers that want an icon-free trend should pass an empty `children` and use `asChild` to override the host.
68
+ - The `Trend` icon is always rendered, including with `asChild`; consumer children provide the label rather than replacing the icon.
69
69
 
70
70
  ## CSS class contract
71
71
 
@@ -75,8 +75,8 @@ Rules:
75
75
 
76
76
  | Attribute | Allowed values | Class | CSS file |
77
77
  |---|---|---|---|
78
- | `data-variant` | `surface`, `ghost` | (no rule in `stat-card.css`; attribute is informational) | n/a |
79
- | `data-size` | `sm`, `md`, `lg` | (no rule in `stat-card.css`; attribute is informational) | n/a |
78
+ | `data-variant` | `surface`, `ghost` | `.dsx-stat-card[data-variant='ghost']` removes the surface background | `stat-card.css` |
79
+ | `data-size` | `sm`, `md`, `lg` | `.dsx-stat-card[data-size='sm'|'lg']` changes padding; Metric.Value inherits the size for typography | `stat-card.css`, `metric.css` |
80
80
 
81
81
  **Trend modifier classes** (driven by the `trend` prop def):
82
82
 
@@ -99,6 +99,7 @@ Rules:
99
99
  **Responsive behavior:**
100
100
 
101
101
  - The component does not write `@media` rules. `size`, `variant`, and `trend` are single-value only.
102
+ - Metric's containment keeps long values within the card; Footer and Trend wrap intrinsically. Number formatting remains consumer-owned.
102
103
 
103
104
  **Reduced motion:**
104
105
 
@@ -209,7 +210,7 @@ The component is static.
209
210
  `dsx-stat-card*` class, prop, export, trend icon, and rendered host element.
210
211
  - `Card` remains the conceptual surface parent; StatCard keeps its own
211
212
  `dsx-stat-card` surface class for backward compatibility.
212
- - `Text`, `Badge`, `Icon`: the typical content of the value, footer, and trend slots. StatCard does not import any of these; the consumer supplies the nodes.
213
+ - `Icon` is imported for the internal trend glyph. Consumers supply value/footer content, including optional Text or Badge nodes.
213
214
 
214
215
  **Used by:**
215
216
 
@@ -229,6 +229,7 @@ Both issues are now fixed: the vertical override sets `flex: 0` and uses `margin
229
229
  **Used by:**
230
230
 
231
231
  - App-level onboarding flows, multi-step forms, and wizard navigation. The roster explicitly calls out that `Stepper` is a composite, not a pattern, and that it must compose primitive `Indicator + Separator + Label` parts rather than a parallel visual shell.
232
+ - Timeline (rail recipe consumer, CSS contract only — no component dependency): Timeline reuses the vertical rail geometry (dot-column centering calc, marker-bottom anchor, size-aware offsets, active-state recolor) for its left rail and centered alternate spine, while keeping its own Item/Marker/Content/Connector API, its own event states, and its own (non-progressbar) semantics. The vertical rail rules in `stepper.css` are the layout engine of record; keep them in sync with `timeline.css`.
232
233
 
233
234
  **State boundaries:**
234
235
 
@@ -16,6 +16,8 @@ depends_on:
16
16
 
17
17
  A read-heavy, semantically-correct HTML table with token-aligned typography, sizing, and density. Use `Table` for plain data presentation; reach for `DataTable` when sort, filter, density toggling, or pagination is required.
18
18
 
19
+ **Relationship:** `Table` is the primitive (rows/cells, density, alignment, overflow); `DataTable` is the shell over `Table` (toolbar, selection, pagination, state). Column transforms (sorter, filter, selection, title layering) are a `DataTable`-side concern, not `Table`'s. See `data-table.md` for the shell's ownership statement.
20
+
19
21
  ## Anatomy & slots
20
22
 
21
23
  **Parent:** `Table` (alias of `TableRoot`). The root is a `<table>` element (or `Slot` host when `asChild` is set).
@@ -39,7 +41,7 @@ A read-heavy, semantically-correct HTML table with token-aligned typography, siz
39
41
 
40
42
  - The root renders a `<table>` with `border-collapse: separate; border-spacing: 0;` plus a single border + radius around the entire table.
41
43
  - `Table.Cell` is omitted from the last row's bottom border (`.dsx-table__body tr:last-child .dsx-table__cell { border-bottom: 0 }`).
42
- - Row hover is provided by `.dsx-table__body tr:hover` (background `var(--dsx-effect-hover-ghost)`).
44
+ - Row hover is provided by `.dsx-table__body tr:hover` (background `var(--dsx-effect-hover-ghost)`, transitioned at `fast/standard`). No other hover rule paints rows.
43
45
  - `Table.Header` rows get a `var(--dsx-color-outline)` bottom border.
44
46
  - `Table.Footer` overrides the cell color to `var(--dsx-color-high-contrast)` and removes the bottom border, giving it the appearance of a summary row.
45
47
  - `Table.ColumnHeaderCell` uses `cursor: pointer` only when `sortable` is true, and renders a small `::after` arrow when `sorted` is set.
@@ -54,6 +56,7 @@ A read-heavy, semantically-correct HTML table with token-aligned typography, siz
54
56
  | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | no | Cell padding scale. Writes `data-size`. | no |
55
57
  | `variant` | `'surface' \| 'ghost'` | `'surface'` | no | Visual treatment. `surface` paints a bordered card; `ghost` removes the border and surface color for use on a pre-existing background. Writes `data-variant`. | no |
56
58
  | `layout` | `'auto' \| 'fixed'` | `'auto'` | no | Maps to `table-layout: auto \| fixed`. Writes `data-layout`. Pair with `width="full"` on cells when `layout="fixed"`. | no |
59
+ | `separator` | `'rules' \| 'grid'` | `'rules'` | no | Separator treatment. `rules` paints the header divider plus horizontal row rules only; `grid` additionally paints vertical rules between columns, for dense-financial data, pinned columns, or column resizing. Writes `data-separator`. | no |
57
60
  | `wrapScrollArea` | `boolean` | `false` | no | When `true`, wraps the `<table>` in `ScrollArea` so wide content scrolls horizontally. The `ScrollArea` viewport gets the `dsx-table__scroll-viewport` class. | no |
58
61
  | `asChild` | `boolean` | `false` | no | Renders the root through `Slot`; consumer supplies the host element. | no |
59
62
 
@@ -68,7 +71,7 @@ A read-heavy, semantically-correct HTML table with token-aligned typography, siz
68
71
 
69
72
  | Prop | Type | Default | Required | Description | Responsive |
70
73
  |---|---|---|---|---|---|
71
- | `justify` | `'start' \| 'center' \| 'end'` | `undefined` | no | Horizontal `justify-content` for the cell contents. Writes `data-justify`. | no |
74
+ | `justify` | `'start' \| 'center' \| 'end'` | `undefined` | no | Logical horizontal text alignment of the native table cell; an explicit cell value overrides row alignment. Writes `data-justify`. | no |
72
75
  | `width` | `'auto' \| 'full'` | `undefined` | no | Cell width. `'full'` sets `width: 100%`; `'auto'` clears an inherited width. Writes `data-width`. The prop type also accepts an arbitrary string at the TS level, but only `'auto'` and `'full'` get CSS rules; an arbitrary string is forwarded through `data-width` but produces no visual change. | no |
73
76
  | `padding` | `'none' \| space-scale-value` | `undefined` | no | Cell padding override. `'none'` zeroes out the cell padding. Other space-scale values are forwarded through `data-padding` and inherit from the parent's `data-size` rules. | no |
74
77
  | `asChild` | `boolean` | `false` | no | Polymorphic host. | no |
@@ -100,6 +103,7 @@ The remaining slots (`Table.Caption`, `Table.Header`, `Table.Body`, `Table.Foote
100
103
  | `data-size` | `sm`, `md`, `lg` | `.dsx-table[data-size='sm'] .dsx-table__head, .dsx-table__cell`, `.dsx-table[data-size='lg'] ...` | `table.css` |
101
104
  | `data-variant` | `surface`, `ghost` | `.dsx-table[data-variant='ghost']` (and child overrides) | `table.css` |
102
105
  | `data-layout` | `auto`, `fixed` | `.dsx-table[data-layout='fixed']` (maps to `table-layout: fixed`) | `table.css` |
106
+ | `data-separator` | `rules`, `grid` | `.dsx-table[data-separator='grid']` (vertical rules between columns) | `table.css` |
103
107
  | `data-align` (row) | `start`, `center`, `end` | `.dsx-table__row[data-align='...'] .dsx-table__head, .dsx-table__cell` | `table.css` |
104
108
  | `data-justify` (cell) | `start`, `center`, `end` | `.dsx-table__cell[data-justify='...']` | `table.css` |
105
109
  | `data-width` (cell) | `auto`, `full` | `.dsx-table__cell[data-width='...']` | `table.css` |
@@ -128,6 +132,9 @@ The remaining slots (`Table.Caption`, `Table.Header`, `Table.Body`, `Table.Foote
128
132
  - The component does not write `@media` rules. Responsive layout comes from the layout primitives' responsive classes and from the responsive table-layout helpers in `styles/responsive/tableLayout.css` (`dsx-r-tl-auto`, `dsx-r-tl-fixed`).
129
133
  - The component's CSS file is breakpoint-agnostic.
130
134
 
135
+ - `Cell.justify` maps to native `text-align` (start/center/end), preserving table layout.
136
+ - Static column headers use the default cursor and allow text selection. Pointer cursor and selection suppression apply only to sortable headers.
137
+
131
138
  **Reduced motion:**
132
139
 
133
140
  - The component is static. No motion is applied.
@@ -163,9 +170,9 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
163
170
 
164
171
  | Region | Token | Default | Reduced |
165
172
  |---|---|---|---|
166
- | (none) | none | none | n/a |
173
+ | Body row hover (`background-color`) | `var(--dsx-motion-duration-fast) var(--dsx-motion-easing-standard)` | 150ms ease | (CSS declares no `prefers-reduced-motion` override; consumers who need a hard gate add a page-level rule) |
167
174
 
168
- The component has no motion. It is a static read surface.
175
+ The component is otherwise a static read surface.
169
176
 
170
177
  ## Accessibility
171
178
 
@@ -189,7 +196,7 @@ The component has no motion. It is a static read surface.
189
196
 
190
197
  **Reduced motion:**
191
198
 
192
- - No motion is applied; no `prefers-reduced-motion` override is needed.
199
+ - Only the body-row hover background transitions; no `prefers-reduced-motion` override is needed beyond a page-level rule.
193
200
 
194
201
  **Color and meaning:**
195
202
 
@@ -211,6 +218,7 @@ The component has no motion. It is a static read surface.
211
218
  **Variant story:**
212
219
 
213
220
  - Renders three tables: `variant="surface"`, `variant="ghost"`, and `layout="fixed"`. Asserts the matching `data-variant` and `data-layout` attributes.
221
+ - Renders `separator="grid"`. Asserts `data-separator="grid"` and vertical rules between columns.
214
222
 
215
223
  **Size story:**
216
224
 
@@ -241,6 +249,7 @@ The component has no motion. It is a static read surface.
241
249
  | `size` | select | `md` |
242
250
  | `variant` | select | `surface` |
243
251
  | `layout` | select | `auto` |
252
+ | `separator` | select | `rules` |
244
253
  | `wrapScrollArea` | boolean | `false` |
245
254
 
246
255
  ## Wiring notes
@@ -14,8 +14,10 @@ depends_on:
14
14
  ## Purpose
15
15
 
16
16
  The single dismissible label chip. Badge is the static status/metadata token; Pills is the
17
- filter cluster; Status is the dot indicator; Tag is the one interactive chip with an
18
- optional remove action. Use for active filters, selected values, and removable labels.
17
+ selectable filter cluster; Status is the dot indicator; Tag is the one chip that owns
18
+ its own remove action. Use for active filters, selected values, and removable labels.
19
+ Cardinality rule (F6 brief): one chip with a remove action is a Tag; a row of chips
20
+ with selection state is Pills. Tag claims dismissal, never selection.
19
21
 
20
22
  ## Anatomy & slots
21
23
 
@@ -34,8 +34,9 @@ A vertical or alternating event timeline for activity feeds, audit logs, and ord
34
34
  **Internal layout:**
35
35
 
36
36
  - The root renders a flex column. Items are stacked vertically.
37
+ - Rail/connector geometry is shared with Stepper's vertical rail engine (see `stepper.md` and `stepper.css` `.dsx-stepper--vertical .dsx-stepper__item:not(:last-child)::after`): the connector is item-local, anchored at the marker bottom (`top` = marker size) and stretched to the item bottom (`bottom: 0`), centered on the dot column via `calc(marker-size / 2 - rail-width / 2)` with size-aware overrides per `data-size`. Timeline keeps its own `Connector` DOM node (Stepper draws via `::after` and hides its `Separator`) and its own rail width (`--dsx-border-width-sm`); the geometry recipe is shared, the slot API and ARIA roles stay distinct. The two components are never merged: Stepper answers "where am I in a process" (`role="progressbar"`), Timeline answers "what happened, when" (per-event states, no progress semantics). Precedent: antd Timeline renders `<Steps type="dot">`.
37
38
  - In the `left` variant (the default), every item is a flex row with `gap: var(--dsx-space-lg)`. The marker sits on the left rail; the content fills the remaining space.
38
- - In the `alternate` variant, every item is a full-width flex row; the consumer is responsible for the alternating side-by-side layout (CSS does not alternate automatically).
39
+ - In the `alternate` variant, every item is a three-column grid (`minmax(0, 1fr) auto minmax(0, 1fr)`): the `1fr` tracks exist without any spacer element, so equal `fr` shares keep the marker exactly on the dot column in both parities. Odd items place content in column 1 (`text-align: right`), even items in column 3; the marker is always column 2. Placement is explicit (`grid-column` + `grid-row: 1`), so DOM order is irrelevant. The connector runs down the item's vertical centerline (`left: calc(50% - rail-width / 2)`), which is the marker center. DOM order stays Marker-then-Content by convention; the split is pure CSS, so no prop or slot change was needed.
39
40
  - `Timeline.Marker` is a square (`var(--dsx-size-md)`) fully rounded element with a 1px outline. It accepts arbitrary children, typically an `Icon` or a number from the consumer.
40
41
  - `Timeline.Connector` is an absolutely positioned vertical bar inside the item. It begins at the bottom of the marker and extends to the bottom of the item. Width is `var(--dsx-border-width-sm)` and color is `var(--dsx-color-outline-variant)`. The active state recolors it to `var(--dsx-color-primary)`.
41
42
  - `Timeline.Content` is the consumer's content surface. The CSS file defines helper classes `dsx-timeline__content-title`, `dsx-timeline__content-description`, and `dsx-timeline__content-time` for the typical title/body/time pattern, but the consumer is free to compose any children.
@@ -95,6 +96,8 @@ These three slots accept only `asChild` plus the standard HTML attribute surface
95
96
 
96
97
  - The component does not write `@media` rules. Responsive layout comes from the layout primitives' responsive classes when the consumer wraps the timeline in a responsive shell.
97
98
 
99
+ - Items and content can shrink to the container; long identifiers wrap. Alternate tracks have a zero minimum so content cannot displace the centered marker rail. Error connectors use the same error token as their marker.
100
+
98
101
  **Reduced motion:**
99
102
 
100
103
  - The component is static. No motion is applied.
@@ -174,7 +177,7 @@ The component has no motion. It is a static read surface.
174
177
 
175
178
  **Variant story:**
176
179
 
177
- - Renders one `Timeline` with `variant="left"` and one with `variant="alternate"`. Asserts the `dsx-timeline--left` and `dsx-timeline--alternate` classes.
180
+ - Renders one `Timeline` with `variant="left"` (deployment feed) and one with `variant="alternate"` (centered spine, three items covering odd/even parity). Asserts the `dsx-timeline--left` and `dsx-timeline--alternate` classes.
178
181
 
179
182
  **State story:**
180
183
 
@@ -186,7 +189,7 @@ The component has no motion. It is a static read surface.
186
189
 
187
190
  **Token story:**
188
191
 
189
- - Renders the default timeline inside a `Theme` wrapper with `accentColor="silver"` and `accentColor="bronze"`. Asserts the `data-accent-color` attribute is forwarded, but the active marker color tracks `--dsx-color-primary` and is not affected by the accent token.
192
+ - Renders the default timeline inside a `Theme` wrapper with `accentColor="rift"` and `accentColor="warp"`. Asserts the `data-accent-color` attribute is forwarded, but the active marker color tracks `--dsx-color-primary` and is not affected by the accent token.
190
193
 
191
194
  **A11y story:**
192
195
 
@@ -204,6 +207,7 @@ The component has no motion. It is a static read surface.
204
207
  **Composes from:**
205
208
 
206
209
  - `@radix-ui/react-slot`: enables `asChild` on the root and on every named slot.
210
+ - Stepper's vertical rail engine (CSS recipe only, no component dependency): Timeline reuses the dot-column centering calc, the marker-bottom anchor, and the size-aware offsets. The two components share geometry, never API or ARIA roles.
207
211
 
208
212
  **Used by:**
209
213
 
@@ -223,8 +227,8 @@ The component has no motion. It is a static read surface.
223
227
 
224
228
  1. **Content block layout collapsed; title, description, time rendered run-together.** The `.dsx-timeline__content` slot had no `display`, `flex-direction`, or `gap`, causing its children (the title `<span>`, description `<span>`, and time `<span>`, typically rendered bare by consumers) to render as inline siblings on a single line ("Project createdInitial scaffold2 hours ago"). FIXED 2026-07-03: added `display: flex; flex-direction: column; gap: var(--dsx-space-2xs);` to `.dsx-timeline__content`, plus `flex: 1; padding-bottom: var(--dsx-space-lg);` to preserve the item gap semantics and support the connector's absolute positioning.
225
229
 
226
- 2. **Alternate variant had no CSS implementation; items never alternated.** The `variant="alternate"` prop def wrote the `dsx-timeline--alternate` modifier class on the root, but the CSS file contained no rules targeting that modifier — the layout was identical to the `left` variant. FIXED 2026-07-03: added per-item zigzag rules for the `alternate` variant: even-indexed items get `flex-direction: row-reverse` (marker on the right), `text-align: right` on content, and the connector repositioned from `left` to `right` with size-aware recalculation per `data-size` (sm/md/lg). This is a per-item flip, not a shared centered spine — the connector is item-local, not a continuous centerline. A future polish iteration may introduce a centered-column connector pattern.
230
+ 2. **Alternate variant had no CSS implementation; items never alternated.** The `variant="alternate"` prop def wrote the `dsx-timeline--alternate` modifier class on the root, but the CSS file contained no rules targeting that modifier — the layout was identical to the `left` variant. FIXED 2026-07-03: added per-item zigzag rules for the `alternate` variant: even-indexed items get `flex-direction: row-reverse` (marker on the right), `text-align: right` on content, and the connector repositioned from `left` to `right` with size-aware recalculation per `data-size` (sm/md/lg). REDESIGNED 2026-09-21 (F12 brief §4): replaced the per-item flip with a centered-spine recipe shared with Stepper's vertical rail engine — each item is a three-column flex row (half | marker | half) with the `::before` pseudo as the empty half, content split on parity (odd left, even right), and the connector on the item centerline. The flip is obsolete; the spine is the contract.
227
231
 
228
232
  3. **Connector appeared missing but was symptom of layout bug, not a separate defect.** The connector (an absolutely positioned vertical bar inside each item) appeared invisible or extremely short (~18px) in rendered demos. Investigation revealed the connector itself was present with correct background color and dimensions; the visual symptom was a side effect of the spacing bug (#1 above). When `.dsx-timeline__content` had no flex layout, its children ran together in ~20px of vertical space, making the item itself tiny, and the connector's absolute `top: marker-bottom; bottom: 0` was proportionally tiny too. Fixing the spacing bug (adding the flex column layout) expanded the item's natural height, and the connector automatically became visible. No separate CSS fix was needed for the connector; it was never the root cause.
229
233
 
230
- 4. **Playground fixture uses invalid state values.** The registry fixture at `apps/playground/lib/registry/data.tsx` (Timeline entry, "Default" story) passes `state="complete"` and `state="pending"` to `TimelineItem`, but `timeline.props.ts`'s `timelineItemPropDefs.state` enum only allows `'default' | 'active' | 'error' | 'disabled'`. Invalid enum values silently fall through to the default modifier class (no visible error). This is a fixture-honesty gap (the fixture uses API values that the type definitions reject) and is deferred to the next promotion batch.
234
+ 4. **Playground fixture uses invalid state values.** The registry fixture at `apps/playground/lib/registry/data.tsx` (Timeline entry, "Default" story) passes `state="complete"` and `state="pending"` to `TimelineItem`, but `timeline.props.ts`'s `timelineItemPropDefs.state` enum only allows `'default' | 'active' | 'error' | 'disabled'`. Invalid enum values silently fall through to the default modifier class (no visible error). FIXED 2026-09-21: fixture rewritten with valid states only — a timestamped deployment feed (left rail), a three-item alternate story covering odd/even parity, an error + disabled story, and a token story over `rift`/`warp`/`ray`.
@@ -174,7 +174,7 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
174
174
  | Toast background | `var(--dsx-color-surface)` | Resting toast surface. |
175
175
  | Toast radius | `var(--dsx-rounded-md)` | Toast corner roundness. |
176
176
  | Toast border | `var(--dsx-border-width-sm) solid var(--dsx-color-outline)` | Toast edge. |
177
- | Toast shadow | `var(--dsx-shadow-elevation-2)` | Toast elevation. |
177
+ | Toast shadow | `var(--dsx-shadow-elevation-5)` | Spotlight: below dialogs, above all menus (B4 Q3). |
178
178
  | Destructive background | `var(--dsx-color-error-container)` | Destructive variant surface. |
179
179
  | Destructive border | `var(--dsx-color-error)` | Destructive variant edge. |
180
180
  | Destructive text | `var(--dsx-color-on-error-container)` | Destructive variant text. |
@@ -14,7 +14,7 @@ depends_on:
14
14
 
15
15
  ## Purpose
16
16
 
17
- A coordinated cluster of toggle buttons backed by `@radix-ui/react-toggle-group`. Items can run in single or multiple selection, share a single border with collapsed inner radii, and lift the focused child above its siblings. The component is the right fit for view selectors and formatting clusters; for single-select with a sliding indicator use `SegmentedControl` instead.
17
+ A coordinated cluster of toggle buttons backed by `@radix-ui/react-toggle-group`. Items can run in single or multiple selection, share a single border with collapsed inner radii, and lift the focused child above its siblings. The component is the right fit for view selectors and formatting clusters; for single-select with a sliding indicator use `SegmentedControl` instead. Boundary rule (F6 brief): ToggleGroup is frameless toolbar buttons with no thumb and no container fill — the moment a design needs a sliding indicator, it is a SegmentedControl, not a styled ToggleGroup.
18
18
 
19
19
  ## Anatomy & slots
20
20
 
@@ -79,6 +79,7 @@ Rules:
79
79
  **Responsive behavior:**
80
80
 
81
81
  - The component does not write `@media` rules. None of its prop defs are `responsive: true`. Size and variant are single-value only.
82
+ - Narrow containers: the root caps at `max-width: 100%` with `overflow-x: auto` — the fused frame cannot wrap, so an over-wide group scrolls instead of hard-clipping its last item (proven 2026-09-23 in a definite 272px column: group caps at 272, full content reachable by touch scroll).
82
83
 
83
84
  **Reduced motion:**
84
85
 
package/dist/fonts.css CHANGED
@@ -1 +1 @@
1
- @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@100..800&family=Science+Gothic:CTRS,slnt,wdth,wght@0..75,-10..0,50..200,100..900&display=swap&subset=cyrillic,latin');
1
+ @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@100..800&family=Science+Gothic:CTRS,wdth,wght@0..75,50..200,100..900&display=swap&subset=cyrillic,latin');
@@ -27,7 +27,7 @@ const tokens = {
27
27
  "sheet-width-sm": "320px",
28
28
  "sheet-width-lg": "480px",
29
29
  "chart-min-height": "240px",
30
- "data-table-empty-height": "96px",
30
+ "data-table-empty-height": "192px",
31
31
  "sidebar-width": "272px",
32
32
  "sidebar-width-collapsed": "72px",
33
33
  "calendar-width": "320px",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/generated/tokens.ts"],
4
- "sourcesContent": ["// Auto-generated by Style Dictionary \u2014 do not edit manually.\nexport const tokens: Record<string, string | number> = {\n 'sheet-min-height': \"80vh\",\n 'sheet-width': \"380px\",\n 'sheet-width-sm': \"320px\",\n 'sheet-width-lg': \"480px\",\n 'chart-min-height': \"240px\",\n 'data-table-empty-height': \"96px\",\n 'sidebar-width': \"272px\",\n 'sidebar-width-collapsed': \"72px\",\n 'calendar-width': \"320px\",\n 'combobox-content-width': \"320px\",\n 'combobox-list-max-height': \"300px\",\n 'dialog-content-width': \"560px\",\n 'dialog-content-width-lg': \"720px\",\n 'drawer-min-height': \"30vh\",\n 'drawer-min-height-sm': \"24vh\",\n 'drawer-min-height-lg': \"50vh\",\n 'drawer-min-height-full': \"100vh\",\n 'rich-text-editor-min-height': \"220px\",\n 'empty-state-max-width': \"600px\",\n 'empty-state-min-height': \"400px\",\n 'input-otp-slot-width': \"36px\",\n 'input-otp-slot-height': \"44px\",\n 'input-otp-separator-width': \"12px\",\n 'kbd-font-size-sm': \"11px\",\n 'kbd-min-width': \"1.75em\",\n 'kbd-padding-block-sm': \"2px\",\n 'kbd-padding-inline-sm': \"5px\",\n 'kbd-padding-block-md': \"3px\",\n 'kbd-padding-inline-md': \"7px\",\n 'navigation-menu-indicator-size': \"10px\",\n 'notification-center-badge-font-size': \"10px\",\n 'notification-center-panel-width': \"320px\",\n 'notification-center-list-max-height': \"400px\",\n 'notification-center-item-dot-offset': \"6px\",\n 'resizable-grip-radius': \"2px\",\n 'slider-min-width': \"160px\",\n 'slider-axis-length': \"160px\",\n 'switch-width': \"44px\",\n 'switch-height': \"24px\",\n 'switch-width-sm': \"36px\",\n 'switch-height-sm': \"20px\",\n 'switch-thumb-size': \"20px\",\n 'switch-thumb-size-sm': \"16px\",\n 'switch-thumb-translate': \"20px\",\n 'switch-thumb-translate-sm': \"16px\",\n 'textarea-min-height-base': \"80px\",\n 'tag-font-size-sm': \"11px\",\n 'toast-viewport-width': \"390px\",\n 'tooltip-max-width': \"200px\",\n 'size-dialog-sm-width': \"400px\",\n 'size-menu-min-width': \"180px\",\n 'size-popover-min-width': \"200px\",\n 'size-popover-max-width': \"380px\",\n 'size-scroll-thumb-size': \"6px\",\n 'size-color-picker-width': \"320px\",\n 'size-field-label-max': \"160px\",\n 'size-field-label-min': \"80px\",\n 'size-xs': \"16px\",\n 'size-sm': \"20px\",\n 'size-md': \"24px\",\n 'size-lg': \"32px\",\n 'size-xl': \"40px\",\n 'size-2xl': \"48px\",\n 'size-3xl': \"56px\",\n 'size-4xl': \"64px\",\n 'container-max-width': \"1280px\",\n 'motion-duration-fast': \"150ms\",\n 'motion-duration-normal': \"250ms\",\n 'motion-duration-slow': \"350ms\",\n 'motion-duration-spin': \"900ms\",\n 'motion-duration-blink': \"1000ms\",\n 'motion-duration-shimmer': \"1400ms\",\n 'motion-easing-in-out': \"cubic-bezier(0.4, 0, 0.2, 1)\",\n 'motion-easing-out': \"cubic-bezier(0, 0, 0.2, 1)\",\n 'motion-easing-in': \"cubic-bezier(0.4, 0, 1, 1)\",\n 'motion-easing-standard': \"cubic-bezier(0.2, 0, 0, 1)\",\n 'motion-easing-spring': \"cubic-bezier(0.34, 1.56, 0.64, 1)\",\n 'motion-easing-emphasized': \"cubic-bezier(0.16, 1, 0.3, 1)\",\n 'opacity-disabled': \"0.38\",\n 'opacity-hover': \"0.08\",\n 'opacity-pressed': \"0.16\",\n 'opacity-subtle': \"0.85\",\n 'opacity-muted': \"0.4\",\n 'opacity-faded': \"0.6\",\n 'opacity-subtle-hover': \"0.8\",\n 'space-0': \"0px\",\n 'space-1': \"4px\",\n 'space-2': \"8px\",\n 'space-3': \"12px\",\n 'space-4': \"16px\",\n 'space-5': \"20px\",\n 'space-6': \"24px\",\n 'space-7': \"28px\",\n 'space-8': \"32px\",\n 'space-9': \"36px\",\n 'space-unit': \"4px\",\n 'space-xs': \"4px\",\n 'space-sm': \"8px\",\n 'space-md': \"16px\",\n 'space-lg': \"24px\",\n 'space-xl': \"32px\",\n 'space-2xl': \"48px\",\n 'space-3xl': \"64px\",\n 'space-margin': \"24px\",\n 'space-gutter': \"24px\",\n 'border-width-none': \"0px\",\n 'border-width-xs': \"0.5px\",\n 'border-width-sm': \"1px\",\n 'border-width-md': \"1.5px\",\n 'border-width-lg': \"2px\",\n 'border-width-xl': \"3px\",\n 'radius-none': \"0px\",\n 'radius-sm': \"4px\",\n 'radius-md': \"8px\",\n 'radius-lg': \"12px\",\n 'radius-xl': \"16px\",\n 'radius-2xl': \"24px\",\n 'radius-full': \"9999px\",\n 'typography-display-large': \"[object Object]\",\n 'typography-display-medium': \"[object Object]\",\n 'typography-headline-large': \"[object Object]\",\n 'typography-headline-medium': \"[object Object]\",\n 'typography-body-large': \"[object Object]\",\n 'typography-body-medium': \"[object Object]\",\n 'typography-body-small': \"[object Object]\",\n 'typography-label-large': \"[object Object]\",\n 'typography-label-medium': \"[object Object]\",\n 'typography-label-small': \"[object Object]\",\n 'typography-code': \"[object Object]\",\n 'z-index-elevated': \"1\",\n 'z-index-elevated-strong': \"2\",\n 'z-index-overlay-local': \"10\",\n 'z-index-dropdown': \"50\",\n 'z-index-sticky': \"60\",\n 'z-index-fixed': \"70\",\n 'z-index-overlay': \"80\",\n 'z-index-modal': \"90\",\n 'z-index-toast': \"100\",\n}\n"],
4
+ "sourcesContent": ["// Auto-generated by Style Dictionary \u2014 do not edit manually.\nexport const tokens: Record<string, string | number> = {\n 'sheet-min-height': \"80vh\",\n 'sheet-width': \"380px\",\n 'sheet-width-sm': \"320px\",\n 'sheet-width-lg': \"480px\",\n 'chart-min-height': \"240px\",\n 'data-table-empty-height': \"192px\",\n 'sidebar-width': \"272px\",\n 'sidebar-width-collapsed': \"72px\",\n 'calendar-width': \"320px\",\n 'combobox-content-width': \"320px\",\n 'combobox-list-max-height': \"300px\",\n 'dialog-content-width': \"560px\",\n 'dialog-content-width-lg': \"720px\",\n 'drawer-min-height': \"30vh\",\n 'drawer-min-height-sm': \"24vh\",\n 'drawer-min-height-lg': \"50vh\",\n 'drawer-min-height-full': \"100vh\",\n 'rich-text-editor-min-height': \"220px\",\n 'empty-state-max-width': \"600px\",\n 'empty-state-min-height': \"400px\",\n 'input-otp-slot-width': \"36px\",\n 'input-otp-slot-height': \"44px\",\n 'input-otp-separator-width': \"12px\",\n 'kbd-font-size-sm': \"11px\",\n 'kbd-min-width': \"1.75em\",\n 'kbd-padding-block-sm': \"2px\",\n 'kbd-padding-inline-sm': \"5px\",\n 'kbd-padding-block-md': \"3px\",\n 'kbd-padding-inline-md': \"7px\",\n 'navigation-menu-indicator-size': \"10px\",\n 'notification-center-badge-font-size': \"10px\",\n 'notification-center-panel-width': \"320px\",\n 'notification-center-list-max-height': \"400px\",\n 'notification-center-item-dot-offset': \"6px\",\n 'resizable-grip-radius': \"2px\",\n 'slider-min-width': \"160px\",\n 'slider-axis-length': \"160px\",\n 'switch-width': \"44px\",\n 'switch-height': \"24px\",\n 'switch-width-sm': \"36px\",\n 'switch-height-sm': \"20px\",\n 'switch-thumb-size': \"20px\",\n 'switch-thumb-size-sm': \"16px\",\n 'switch-thumb-translate': \"20px\",\n 'switch-thumb-translate-sm': \"16px\",\n 'textarea-min-height-base': \"80px\",\n 'tag-font-size-sm': \"11px\",\n 'toast-viewport-width': \"390px\",\n 'tooltip-max-width': \"200px\",\n 'size-dialog-sm-width': \"400px\",\n 'size-menu-min-width': \"180px\",\n 'size-popover-min-width': \"200px\",\n 'size-popover-max-width': \"380px\",\n 'size-scroll-thumb-size': \"6px\",\n 'size-color-picker-width': \"320px\",\n 'size-field-label-max': \"160px\",\n 'size-field-label-min': \"80px\",\n 'size-xs': \"16px\",\n 'size-sm': \"20px\",\n 'size-md': \"24px\",\n 'size-lg': \"32px\",\n 'size-xl': \"40px\",\n 'size-2xl': \"48px\",\n 'size-3xl': \"56px\",\n 'size-4xl': \"64px\",\n 'container-max-width': \"1280px\",\n 'motion-duration-fast': \"150ms\",\n 'motion-duration-normal': \"250ms\",\n 'motion-duration-slow': \"350ms\",\n 'motion-duration-spin': \"900ms\",\n 'motion-duration-blink': \"1000ms\",\n 'motion-duration-shimmer': \"1400ms\",\n 'motion-easing-in-out': \"cubic-bezier(0.4, 0, 0.2, 1)\",\n 'motion-easing-out': \"cubic-bezier(0, 0, 0.2, 1)\",\n 'motion-easing-in': \"cubic-bezier(0.4, 0, 1, 1)\",\n 'motion-easing-standard': \"cubic-bezier(0.2, 0, 0, 1)\",\n 'motion-easing-spring': \"cubic-bezier(0.34, 1.56, 0.64, 1)\",\n 'motion-easing-emphasized': \"cubic-bezier(0.16, 1, 0.3, 1)\",\n 'opacity-disabled': \"0.38\",\n 'opacity-hover': \"0.08\",\n 'opacity-pressed': \"0.16\",\n 'opacity-subtle': \"0.85\",\n 'opacity-muted': \"0.4\",\n 'opacity-faded': \"0.6\",\n 'opacity-subtle-hover': \"0.8\",\n 'space-0': \"0px\",\n 'space-1': \"4px\",\n 'space-2': \"8px\",\n 'space-3': \"12px\",\n 'space-4': \"16px\",\n 'space-5': \"20px\",\n 'space-6': \"24px\",\n 'space-7': \"28px\",\n 'space-8': \"32px\",\n 'space-9': \"36px\",\n 'space-unit': \"4px\",\n 'space-xs': \"4px\",\n 'space-sm': \"8px\",\n 'space-md': \"16px\",\n 'space-lg': \"24px\",\n 'space-xl': \"32px\",\n 'space-2xl': \"48px\",\n 'space-3xl': \"64px\",\n 'space-margin': \"24px\",\n 'space-gutter': \"24px\",\n 'border-width-none': \"0px\",\n 'border-width-xs': \"0.5px\",\n 'border-width-sm': \"1px\",\n 'border-width-md': \"1.5px\",\n 'border-width-lg': \"2px\",\n 'border-width-xl': \"3px\",\n 'radius-none': \"0px\",\n 'radius-sm': \"4px\",\n 'radius-md': \"8px\",\n 'radius-lg': \"12px\",\n 'radius-xl': \"16px\",\n 'radius-2xl': \"24px\",\n 'radius-full': \"9999px\",\n 'typography-display-large': \"[object Object]\",\n 'typography-display-medium': \"[object Object]\",\n 'typography-headline-large': \"[object Object]\",\n 'typography-headline-medium': \"[object Object]\",\n 'typography-body-large': \"[object Object]\",\n 'typography-body-medium': \"[object Object]\",\n 'typography-body-small': \"[object Object]\",\n 'typography-label-large': \"[object Object]\",\n 'typography-label-medium': \"[object Object]\",\n 'typography-label-small': \"[object Object]\",\n 'typography-code': \"[object Object]\",\n 'z-index-elevated': \"1\",\n 'z-index-elevated-strong': \"2\",\n 'z-index-overlay-local': \"10\",\n 'z-index-dropdown': \"50\",\n 'z-index-sticky': \"60\",\n 'z-index-fixed': \"70\",\n 'z-index-overlay': \"80\",\n 'z-index-modal': \"90\",\n 'z-index-toast': \"100\",\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -4,7 +4,7 @@ const tokens = {
4
4
  "sheet-width-sm": "320px",
5
5
  "sheet-width-lg": "480px",
6
6
  "chart-min-height": "240px",
7
- "data-table-empty-height": "96px",
7
+ "data-table-empty-height": "192px",
8
8
  "sidebar-width": "272px",
9
9
  "sidebar-width-collapsed": "72px",
10
10
  "calendar-width": "320px",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/generated/tokens.ts"],
4
- "sourcesContent": ["// Auto-generated by Style Dictionary \u2014 do not edit manually.\nexport const tokens: Record<string, string | number> = {\n 'sheet-min-height': \"80vh\",\n 'sheet-width': \"380px\",\n 'sheet-width-sm': \"320px\",\n 'sheet-width-lg': \"480px\",\n 'chart-min-height': \"240px\",\n 'data-table-empty-height': \"96px\",\n 'sidebar-width': \"272px\",\n 'sidebar-width-collapsed': \"72px\",\n 'calendar-width': \"320px\",\n 'combobox-content-width': \"320px\",\n 'combobox-list-max-height': \"300px\",\n 'dialog-content-width': \"560px\",\n 'dialog-content-width-lg': \"720px\",\n 'drawer-min-height': \"30vh\",\n 'drawer-min-height-sm': \"24vh\",\n 'drawer-min-height-lg': \"50vh\",\n 'drawer-min-height-full': \"100vh\",\n 'rich-text-editor-min-height': \"220px\",\n 'empty-state-max-width': \"600px\",\n 'empty-state-min-height': \"400px\",\n 'input-otp-slot-width': \"36px\",\n 'input-otp-slot-height': \"44px\",\n 'input-otp-separator-width': \"12px\",\n 'kbd-font-size-sm': \"11px\",\n 'kbd-min-width': \"1.75em\",\n 'kbd-padding-block-sm': \"2px\",\n 'kbd-padding-inline-sm': \"5px\",\n 'kbd-padding-block-md': \"3px\",\n 'kbd-padding-inline-md': \"7px\",\n 'navigation-menu-indicator-size': \"10px\",\n 'notification-center-badge-font-size': \"10px\",\n 'notification-center-panel-width': \"320px\",\n 'notification-center-list-max-height': \"400px\",\n 'notification-center-item-dot-offset': \"6px\",\n 'resizable-grip-radius': \"2px\",\n 'slider-min-width': \"160px\",\n 'slider-axis-length': \"160px\",\n 'switch-width': \"44px\",\n 'switch-height': \"24px\",\n 'switch-width-sm': \"36px\",\n 'switch-height-sm': \"20px\",\n 'switch-thumb-size': \"20px\",\n 'switch-thumb-size-sm': \"16px\",\n 'switch-thumb-translate': \"20px\",\n 'switch-thumb-translate-sm': \"16px\",\n 'textarea-min-height-base': \"80px\",\n 'tag-font-size-sm': \"11px\",\n 'toast-viewport-width': \"390px\",\n 'tooltip-max-width': \"200px\",\n 'size-dialog-sm-width': \"400px\",\n 'size-menu-min-width': \"180px\",\n 'size-popover-min-width': \"200px\",\n 'size-popover-max-width': \"380px\",\n 'size-scroll-thumb-size': \"6px\",\n 'size-color-picker-width': \"320px\",\n 'size-field-label-max': \"160px\",\n 'size-field-label-min': \"80px\",\n 'size-xs': \"16px\",\n 'size-sm': \"20px\",\n 'size-md': \"24px\",\n 'size-lg': \"32px\",\n 'size-xl': \"40px\",\n 'size-2xl': \"48px\",\n 'size-3xl': \"56px\",\n 'size-4xl': \"64px\",\n 'container-max-width': \"1280px\",\n 'motion-duration-fast': \"150ms\",\n 'motion-duration-normal': \"250ms\",\n 'motion-duration-slow': \"350ms\",\n 'motion-duration-spin': \"900ms\",\n 'motion-duration-blink': \"1000ms\",\n 'motion-duration-shimmer': \"1400ms\",\n 'motion-easing-in-out': \"cubic-bezier(0.4, 0, 0.2, 1)\",\n 'motion-easing-out': \"cubic-bezier(0, 0, 0.2, 1)\",\n 'motion-easing-in': \"cubic-bezier(0.4, 0, 1, 1)\",\n 'motion-easing-standard': \"cubic-bezier(0.2, 0, 0, 1)\",\n 'motion-easing-spring': \"cubic-bezier(0.34, 1.56, 0.64, 1)\",\n 'motion-easing-emphasized': \"cubic-bezier(0.16, 1, 0.3, 1)\",\n 'opacity-disabled': \"0.38\",\n 'opacity-hover': \"0.08\",\n 'opacity-pressed': \"0.16\",\n 'opacity-subtle': \"0.85\",\n 'opacity-muted': \"0.4\",\n 'opacity-faded': \"0.6\",\n 'opacity-subtle-hover': \"0.8\",\n 'space-0': \"0px\",\n 'space-1': \"4px\",\n 'space-2': \"8px\",\n 'space-3': \"12px\",\n 'space-4': \"16px\",\n 'space-5': \"20px\",\n 'space-6': \"24px\",\n 'space-7': \"28px\",\n 'space-8': \"32px\",\n 'space-9': \"36px\",\n 'space-unit': \"4px\",\n 'space-xs': \"4px\",\n 'space-sm': \"8px\",\n 'space-md': \"16px\",\n 'space-lg': \"24px\",\n 'space-xl': \"32px\",\n 'space-2xl': \"48px\",\n 'space-3xl': \"64px\",\n 'space-margin': \"24px\",\n 'space-gutter': \"24px\",\n 'border-width-none': \"0px\",\n 'border-width-xs': \"0.5px\",\n 'border-width-sm': \"1px\",\n 'border-width-md': \"1.5px\",\n 'border-width-lg': \"2px\",\n 'border-width-xl': \"3px\",\n 'radius-none': \"0px\",\n 'radius-sm': \"4px\",\n 'radius-md': \"8px\",\n 'radius-lg': \"12px\",\n 'radius-xl': \"16px\",\n 'radius-2xl': \"24px\",\n 'radius-full': \"9999px\",\n 'typography-display-large': \"[object Object]\",\n 'typography-display-medium': \"[object Object]\",\n 'typography-headline-large': \"[object Object]\",\n 'typography-headline-medium': \"[object Object]\",\n 'typography-body-large': \"[object Object]\",\n 'typography-body-medium': \"[object Object]\",\n 'typography-body-small': \"[object Object]\",\n 'typography-label-large': \"[object Object]\",\n 'typography-label-medium': \"[object Object]\",\n 'typography-label-small': \"[object Object]\",\n 'typography-code': \"[object Object]\",\n 'z-index-elevated': \"1\",\n 'z-index-elevated-strong': \"2\",\n 'z-index-overlay-local': \"10\",\n 'z-index-dropdown': \"50\",\n 'z-index-sticky': \"60\",\n 'z-index-fixed': \"70\",\n 'z-index-overlay': \"80\",\n 'z-index-modal': \"90\",\n 'z-index-toast': \"100\",\n}\n"],
4
+ "sourcesContent": ["// Auto-generated by Style Dictionary \u2014 do not edit manually.\nexport const tokens: Record<string, string | number> = {\n 'sheet-min-height': \"80vh\",\n 'sheet-width': \"380px\",\n 'sheet-width-sm': \"320px\",\n 'sheet-width-lg': \"480px\",\n 'chart-min-height': \"240px\",\n 'data-table-empty-height': \"192px\",\n 'sidebar-width': \"272px\",\n 'sidebar-width-collapsed': \"72px\",\n 'calendar-width': \"320px\",\n 'combobox-content-width': \"320px\",\n 'combobox-list-max-height': \"300px\",\n 'dialog-content-width': \"560px\",\n 'dialog-content-width-lg': \"720px\",\n 'drawer-min-height': \"30vh\",\n 'drawer-min-height-sm': \"24vh\",\n 'drawer-min-height-lg': \"50vh\",\n 'drawer-min-height-full': \"100vh\",\n 'rich-text-editor-min-height': \"220px\",\n 'empty-state-max-width': \"600px\",\n 'empty-state-min-height': \"400px\",\n 'input-otp-slot-width': \"36px\",\n 'input-otp-slot-height': \"44px\",\n 'input-otp-separator-width': \"12px\",\n 'kbd-font-size-sm': \"11px\",\n 'kbd-min-width': \"1.75em\",\n 'kbd-padding-block-sm': \"2px\",\n 'kbd-padding-inline-sm': \"5px\",\n 'kbd-padding-block-md': \"3px\",\n 'kbd-padding-inline-md': \"7px\",\n 'navigation-menu-indicator-size': \"10px\",\n 'notification-center-badge-font-size': \"10px\",\n 'notification-center-panel-width': \"320px\",\n 'notification-center-list-max-height': \"400px\",\n 'notification-center-item-dot-offset': \"6px\",\n 'resizable-grip-radius': \"2px\",\n 'slider-min-width': \"160px\",\n 'slider-axis-length': \"160px\",\n 'switch-width': \"44px\",\n 'switch-height': \"24px\",\n 'switch-width-sm': \"36px\",\n 'switch-height-sm': \"20px\",\n 'switch-thumb-size': \"20px\",\n 'switch-thumb-size-sm': \"16px\",\n 'switch-thumb-translate': \"20px\",\n 'switch-thumb-translate-sm': \"16px\",\n 'textarea-min-height-base': \"80px\",\n 'tag-font-size-sm': \"11px\",\n 'toast-viewport-width': \"390px\",\n 'tooltip-max-width': \"200px\",\n 'size-dialog-sm-width': \"400px\",\n 'size-menu-min-width': \"180px\",\n 'size-popover-min-width': \"200px\",\n 'size-popover-max-width': \"380px\",\n 'size-scroll-thumb-size': \"6px\",\n 'size-color-picker-width': \"320px\",\n 'size-field-label-max': \"160px\",\n 'size-field-label-min': \"80px\",\n 'size-xs': \"16px\",\n 'size-sm': \"20px\",\n 'size-md': \"24px\",\n 'size-lg': \"32px\",\n 'size-xl': \"40px\",\n 'size-2xl': \"48px\",\n 'size-3xl': \"56px\",\n 'size-4xl': \"64px\",\n 'container-max-width': \"1280px\",\n 'motion-duration-fast': \"150ms\",\n 'motion-duration-normal': \"250ms\",\n 'motion-duration-slow': \"350ms\",\n 'motion-duration-spin': \"900ms\",\n 'motion-duration-blink': \"1000ms\",\n 'motion-duration-shimmer': \"1400ms\",\n 'motion-easing-in-out': \"cubic-bezier(0.4, 0, 0.2, 1)\",\n 'motion-easing-out': \"cubic-bezier(0, 0, 0.2, 1)\",\n 'motion-easing-in': \"cubic-bezier(0.4, 0, 1, 1)\",\n 'motion-easing-standard': \"cubic-bezier(0.2, 0, 0, 1)\",\n 'motion-easing-spring': \"cubic-bezier(0.34, 1.56, 0.64, 1)\",\n 'motion-easing-emphasized': \"cubic-bezier(0.16, 1, 0.3, 1)\",\n 'opacity-disabled': \"0.38\",\n 'opacity-hover': \"0.08\",\n 'opacity-pressed': \"0.16\",\n 'opacity-subtle': \"0.85\",\n 'opacity-muted': \"0.4\",\n 'opacity-faded': \"0.6\",\n 'opacity-subtle-hover': \"0.8\",\n 'space-0': \"0px\",\n 'space-1': \"4px\",\n 'space-2': \"8px\",\n 'space-3': \"12px\",\n 'space-4': \"16px\",\n 'space-5': \"20px\",\n 'space-6': \"24px\",\n 'space-7': \"28px\",\n 'space-8': \"32px\",\n 'space-9': \"36px\",\n 'space-unit': \"4px\",\n 'space-xs': \"4px\",\n 'space-sm': \"8px\",\n 'space-md': \"16px\",\n 'space-lg': \"24px\",\n 'space-xl': \"32px\",\n 'space-2xl': \"48px\",\n 'space-3xl': \"64px\",\n 'space-margin': \"24px\",\n 'space-gutter': \"24px\",\n 'border-width-none': \"0px\",\n 'border-width-xs': \"0.5px\",\n 'border-width-sm': \"1px\",\n 'border-width-md': \"1.5px\",\n 'border-width-lg': \"2px\",\n 'border-width-xl': \"3px\",\n 'radius-none': \"0px\",\n 'radius-sm': \"4px\",\n 'radius-md': \"8px\",\n 'radius-lg': \"12px\",\n 'radius-xl': \"16px\",\n 'radius-2xl': \"24px\",\n 'radius-full': \"9999px\",\n 'typography-display-large': \"[object Object]\",\n 'typography-display-medium': \"[object Object]\",\n 'typography-headline-large': \"[object Object]\",\n 'typography-headline-medium': \"[object Object]\",\n 'typography-body-large': \"[object Object]\",\n 'typography-body-medium': \"[object Object]\",\n 'typography-body-small': \"[object Object]\",\n 'typography-label-large': \"[object Object]\",\n 'typography-label-medium': \"[object Object]\",\n 'typography-label-small': \"[object Object]\",\n 'typography-code': \"[object Object]\",\n 'z-index-elevated': \"1\",\n 'z-index-elevated-strong': \"2\",\n 'z-index-overlay-local': \"10\",\n 'z-index-dropdown': \"50\",\n 'z-index-sticky': \"60\",\n 'z-index-fixed': \"70\",\n 'z-index-overlay': \"80\",\n 'z-index-modal': \"90\",\n 'z-index-toast': \"100\",\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
package/dist/motion.css CHANGED
@@ -372,10 +372,23 @@
372
372
  day zero-size layout bug fixed on /motion's demo page — even rendered at
373
373
  its correct size, the dots themselves were too faint to read on a real
374
374
  screen, not just in the demo. */
375
+ /* 2026-09-30 seam + tempo fix (direct feedback: "no smooth movings...
376
+ 40s before the movement, feels like lagging"). Two stacked causes:
377
+ 60px over 40s is 1.5px/s — below perception — and ease-in-out parks
378
+ velocity near zero at both ends of every 40s leg, so for seconds at a
379
+ time literally zero pixels moved. Now a true seamless loop instead of
380
+ an alternate: the 8-dot field is a 120px tile (background-repeat),
381
+ the layer is oversized one tile top+bottom so travel never exposes a
382
+ gap, and the keyframe translates exactly one tile period — end state
383
+ == start state, so linear infinite has no snap point at all. 120px
384
+ per 12s (10px/s) reads as alive-but-ambient; no dot sits on a tile
385
+ boundary (min 15% / max 90% of 120px), so repeats don't clip. */
375
386
  .dsx-motion-starfield::before {
376
387
  content: '';
377
388
  position: absolute;
378
- inset: 0;
389
+ inset: -120px 0;
390
+ background-size: 100% 120px;
391
+ background-repeat: repeat;
379
392
  background-image: radial-gradient(2px 2px at 12% 22%, var(--dsx-color-on-surface), transparent),
380
393
  radial-gradient(2.5px 2.5px at 32% 68%, var(--dsx-color-on-surface), transparent),
381
394
  radial-gradient(1.5px 1.5px at 52% 15%, var(--dsx-color-on-surface), transparent),
@@ -385,7 +398,7 @@
385
398
  radial-gradient(1.5px 1.5px at 8% 85%, var(--dsx-color-on-surface), transparent),
386
399
  radial-gradient(2.5px 2.5px at 45% 90%, var(--dsx-color-on-surface), transparent);
387
400
  opacity: 0.4;
388
- animation: dsx-motion-starfield-drift 40s linear infinite;
401
+ animation: dsx-motion-starfield-drift 12s linear infinite;
389
402
  pointer-events: none;
390
403
  z-index: -1;
391
404
  }
@@ -396,7 +409,7 @@
396
409
  }
397
410
 
398
411
  to {
399
- transform: translateY(-60px);
412
+ transform: translateY(-120px);
400
413
  }
401
414
  }
402
415
 
@@ -469,6 +482,8 @@
469
482
  .dsx-motion-scan,
470
483
  .dsx-motion-glow,
471
484
  .dsx-motion-drift,
485
+ .dsx-motion-starfield::before,
486
+ .dsx-motion-aurora::after,
472
487
  .dsx-motion-twinkle {
473
488
  animation: none !important;
474
489
  opacity: 1 !important;