@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
package/dist/styles.css CHANGED
@@ -102,7 +102,7 @@ svg {
102
102
  --dsx-color-accent-11: #bfb1ff;
103
103
  --dsx-color-accent-12: #ded8ff;
104
104
  --dsx-color-accent-contrast: #ffffff;
105
- --dsx-color-accent-surface: rgba(40, 0, 93, 0.4);
105
+ --dsx-color-accent-surface: rgba(40, 0, 93, 0.2);
106
106
  --dsx-color-accent-indicator: #bfb1ff;
107
107
  --dsx-color-accent-track: #8553f6;
108
108
  --dsx-color-gray-1: #0c0d12;
@@ -279,7 +279,7 @@ svg {
279
279
  --dsx-color-accent-indicator: #bfb1ff;
280
280
  --dsx-color-accent-track: #8553f6;
281
281
  --dsx-color-accent-contrast: #ffffff;
282
- --dsx-color-accent-surface: rgba(40, 0, 93, 0.4);
282
+ --dsx-color-accent-surface: rgba(40, 0, 93, 0.2);
283
283
  --dsx-color-border-subtle: #333640;
284
284
  --dsx-color-border-strong: #565b70;
285
285
  --dsx-effect-shadow-1: 0 1px 2px rgba(8, 9, 12, 0.24);
@@ -306,7 +306,7 @@ svg {
306
306
  --dsx-sheet-width-sm: 320px;
307
307
  --dsx-sheet-width-lg: 480px;
308
308
  --dsx-chart-min-height: 240px;
309
- --dsx-data-table-empty-height: 96px;
309
+ --dsx-data-table-empty-height: 192px;
310
310
  --dsx-sidebar-width: 272px;
311
311
  --dsx-sidebar-width-collapsed: 72px;
312
312
  --dsx-calendar-width: 320px;
@@ -538,7 +538,7 @@ svg {
538
538
  --dsx-color-accent-indicator: var(--dsx-color-accent-rift-11);
539
539
  --dsx-color-accent-track: var(--dsx-color-accent-rift-9);
540
540
  --dsx-color-accent-contrast: #ffffff;
541
- --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-rift-3) 40%, transparent);
541
+ --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-rift-3) 20%, transparent);
542
542
  --dsx-effect-ring-focus: color-mix(in srgb, var(--dsx-color-accent-rift-9) 64%, transparent);
543
543
  --dsx-effect-shadow-accent: color-mix(in srgb, var(--dsx-color-accent-rift-9) 28%, transparent);
544
544
  --dsx-effect-shadow-accent-strong: color-mix(in srgb, var(--dsx-color-accent-rift-9) 40%, transparent);
@@ -566,7 +566,7 @@ svg {
566
566
  --dsx-color-accent-indicator: var(--dsx-color-accent-warp-11);
567
567
  --dsx-color-accent-track: var(--dsx-color-accent-warp-9);
568
568
  --dsx-color-accent-contrast: #ffffff;
569
- --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-warp-3) 40%, transparent);
569
+ --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-warp-3) 20%, transparent);
570
570
  --dsx-effect-ring-focus: color-mix(in srgb, var(--dsx-color-accent-warp-9) 64%, transparent);
571
571
  --dsx-effect-shadow-accent: color-mix(in srgb, var(--dsx-color-accent-warp-9) 28%, transparent);
572
572
  --dsx-effect-shadow-accent-strong: color-mix(in srgb, var(--dsx-color-accent-warp-9) 40%, transparent);
@@ -594,7 +594,7 @@ svg {
594
594
  --dsx-color-accent-indicator: var(--dsx-color-accent-ray-11);
595
595
  --dsx-color-accent-track: var(--dsx-color-accent-ray-9);
596
596
  --dsx-color-accent-contrast: #ffffff;
597
- --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-ray-3) 40%, transparent);
597
+ --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-ray-3) 20%, transparent);
598
598
  --dsx-effect-ring-focus: color-mix(in srgb, var(--dsx-color-accent-ray-9) 64%, transparent);
599
599
  --dsx-effect-shadow-accent: color-mix(in srgb, var(--dsx-color-accent-ray-9) 28%, transparent);
600
600
  --dsx-effect-shadow-accent-strong: color-mix(in srgb, var(--dsx-color-accent-ray-9) 40%, transparent);
@@ -622,7 +622,7 @@ svg {
622
622
  --dsx-color-accent-indicator: var(--dsx-color-accent-astral-11);
623
623
  --dsx-color-accent-track: var(--dsx-color-accent-astral-9);
624
624
  --dsx-color-accent-contrast: #ffffff;
625
- --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-astral-3) 40%, transparent);
625
+ --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-astral-3) 20%, transparent);
626
626
  --dsx-effect-ring-focus: color-mix(in srgb, var(--dsx-color-accent-astral-9) 64%, transparent);
627
627
  --dsx-effect-shadow-accent: color-mix(in srgb, var(--dsx-color-accent-astral-9) 28%, transparent);
628
628
  --dsx-effect-shadow-accent-strong: color-mix(in srgb, var(--dsx-color-accent-astral-9) 40%, transparent);
@@ -650,7 +650,7 @@ svg {
650
650
  --dsx-color-accent-indicator: var(--dsx-color-accent-spark-11);
651
651
  --dsx-color-accent-track: var(--dsx-color-accent-spark-9);
652
652
  --dsx-color-accent-contrast: #0c0d12;
653
- --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-spark-3) 40%, transparent);
653
+ --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-spark-3) 20%, transparent);
654
654
  --dsx-effect-ring-focus: color-mix(in srgb, var(--dsx-color-accent-spark-9) 64%, transparent);
655
655
  --dsx-effect-shadow-accent: color-mix(in srgb, var(--dsx-color-accent-spark-9) 28%, transparent);
656
656
  --dsx-effect-shadow-accent-strong: color-mix(in srgb, var(--dsx-color-accent-spark-9) 40%, transparent);
@@ -672,7 +672,7 @@ svg {
672
672
  --dsx-color-accent-11: #5211ac;
673
673
  --dsx-color-accent-12: #28005d;
674
674
  --dsx-color-accent-contrast: #ffffff;
675
- --dsx-color-accent-surface: rgba(230, 226, 255, 0.4);
675
+ --dsx-color-accent-surface: rgba(230, 226, 255, 0.2);
676
676
  --dsx-color-accent-indicator: #28005d;
677
677
  --dsx-color-accent-track: #8553f6;
678
678
  --dsx-color-gray-1: #fbfbfc;
@@ -849,7 +849,7 @@ svg {
849
849
  --dsx-color-accent-indicator: #28005d;
850
850
  --dsx-color-accent-track: #8553f6;
851
851
  --dsx-color-accent-contrast: #ffffff;
852
- --dsx-color-accent-surface: rgba(230, 226, 255, 0.4);
852
+ --dsx-color-accent-surface: rgba(230, 226, 255, 0.2);
853
853
  --dsx-color-border-subtle: #c3c8d4;
854
854
  --dsx-color-border-strong: #8b90a3;
855
855
  --dsx-effect-shadow-1: 0 1px 2px rgba(44, 47, 61, 0.12);
@@ -894,7 +894,7 @@ svg {
894
894
  --dsx-color-accent-indicator: var(--dsx-color-accent-rift-12);
895
895
  --dsx-color-accent-track: var(--dsx-color-accent-rift-9);
896
896
  --dsx-color-accent-contrast: #ffffff;
897
- --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-rift-3) 40%, transparent);
897
+ --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-rift-3) 20%, transparent);
898
898
  --dsx-effect-ring-focus: color-mix(in srgb, var(--dsx-color-accent-rift-9) 56%, transparent);
899
899
  --dsx-effect-shadow-accent: color-mix(in srgb, var(--dsx-color-accent-rift-9) 24%, transparent);
900
900
  --dsx-effect-shadow-accent-strong: color-mix(in srgb, var(--dsx-color-accent-rift-9) 36%, transparent);
@@ -923,7 +923,7 @@ svg {
923
923
  --dsx-color-accent-indicator: var(--dsx-color-accent-warp-12);
924
924
  --dsx-color-accent-track: var(--dsx-color-accent-warp-9);
925
925
  --dsx-color-accent-contrast: #ffffff;
926
- --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-warp-3) 40%, transparent);
926
+ --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-warp-3) 20%, transparent);
927
927
  --dsx-effect-ring-focus: color-mix(in srgb, var(--dsx-color-accent-warp-9) 56%, transparent);
928
928
  --dsx-effect-shadow-accent: color-mix(in srgb, var(--dsx-color-accent-warp-9) 24%, transparent);
929
929
  --dsx-effect-shadow-accent-strong: color-mix(in srgb, var(--dsx-color-accent-warp-9) 36%, transparent);
@@ -952,7 +952,7 @@ svg {
952
952
  --dsx-color-accent-indicator: var(--dsx-color-accent-ray-12);
953
953
  --dsx-color-accent-track: var(--dsx-color-accent-ray-9);
954
954
  --dsx-color-accent-contrast: #ffffff;
955
- --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-ray-3) 40%, transparent);
955
+ --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-ray-3) 20%, transparent);
956
956
  --dsx-effect-ring-focus: color-mix(in srgb, var(--dsx-color-accent-ray-9) 56%, transparent);
957
957
  --dsx-effect-shadow-accent: color-mix(in srgb, var(--dsx-color-accent-ray-9) 24%, transparent);
958
958
  --dsx-effect-shadow-accent-strong: color-mix(in srgb, var(--dsx-color-accent-ray-9) 36%, transparent);
@@ -981,7 +981,7 @@ svg {
981
981
  --dsx-color-accent-indicator: var(--dsx-color-accent-astral-12);
982
982
  --dsx-color-accent-track: var(--dsx-color-accent-astral-9);
983
983
  --dsx-color-accent-contrast: #ffffff;
984
- --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-astral-3) 40%, transparent);
984
+ --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-astral-3) 20%, transparent);
985
985
  --dsx-effect-ring-focus: color-mix(in srgb, var(--dsx-color-accent-astral-9) 56%, transparent);
986
986
  --dsx-effect-shadow-accent: color-mix(in srgb, var(--dsx-color-accent-astral-9) 24%, transparent);
987
987
  --dsx-effect-shadow-accent-strong: color-mix(in srgb, var(--dsx-color-accent-astral-9) 36%, transparent);
@@ -1010,7 +1010,7 @@ svg {
1010
1010
  --dsx-color-accent-indicator: var(--dsx-color-accent-spark-12);
1011
1011
  --dsx-color-accent-track: var(--dsx-color-accent-spark-9);
1012
1012
  --dsx-color-accent-contrast: #0c0d12;
1013
- --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-spark-3) 40%, transparent);
1013
+ --dsx-color-accent-surface: color-mix(in srgb, var(--dsx-color-accent-spark-3) 20%, transparent);
1014
1014
  --dsx-effect-ring-focus: color-mix(in srgb, var(--dsx-color-accent-spark-9) 56%, transparent);
1015
1015
  --dsx-effect-shadow-accent: color-mix(in srgb, var(--dsx-color-accent-spark-9) 24%, transparent);
1016
1016
  --dsx-effect-shadow-accent-strong: color-mix(in srgb, var(--dsx-color-accent-spark-9) 36%, transparent);
@@ -1168,6 +1168,12 @@ svg {
1168
1168
  --dsx-shadow-elevation-2: var(--dsx-effect-shadow-2);
1169
1169
  --dsx-shadow-elevation-3: var(--dsx-effect-shadow-3);
1170
1170
  --dsx-shadow-elevation-4: var(--dsx-effect-shadow-4);
1171
+ /* Step 5 (Spotlight: toasts, dragged panels). Step 6 stays raw until an
1172
+ occupant earns it — no elevation-6 alias by decision (B4 Q3). */
1173
+ --dsx-shadow-elevation-5: var(--dsx-effect-shadow-5);
1174
+ /* Menu-tier control point (B4 Q3): every menu-family content rides step 3
1175
+ unless a component file reasserts it locally for cascade order. */
1176
+ --dsx-menu-content-elevation: var(--dsx-shadow-elevation-3);
1171
1177
  --dsx-shadow-panel-shadow: var(--dsx-effect-shadow-3);
1172
1178
 
1173
1179
  /* ── Constructed shadows ────────────────────────────────────────────── */
@@ -2579,6 +2585,68 @@ textarea {
2579
2585
  border-radius: var(--dsx-rounded-full);
2580
2586
  }
2581
2587
 
2588
+ .dsx-banner {
2589
+ display: flex;
2590
+ flex-direction: column;
2591
+ gap: var(--dsx-space-xs);
2592
+ padding: var(--dsx-space-lg);
2593
+ border-radius: var(--dsx-rounded-lg);
2594
+ background: var(--dsx-color-accent-surface);
2595
+ box-sizing: border-box;
2596
+ min-width: 0;
2597
+ overflow-wrap: anywhere;
2598
+ }
2599
+
2600
+ /* Fill: solid accent mass reusing Button primary's solved compliance —
2601
+ accent-track background with accent-contrast text (near-black on spark,
2602
+ white elsewhere, per the token). Wash stays the default hero. */
2603
+
2604
+ .dsx-banner:where([data-variant='fill'], .dsx-banner-variant-fill) {
2605
+ background: var(--dsx-color-accent-track);
2606
+ }
2607
+
2608
+ .dsx-banner:where([data-variant='fill'], .dsx-banner-variant-fill) .dsx-banner__label,
2609
+ .dsx-banner:where([data-variant='fill'], .dsx-banner-variant-fill) .dsx-banner__value,
2610
+ .dsx-banner:where([data-variant='fill'], .dsx-banner-variant-fill) .dsx-banner__footnote {
2611
+ color: var(--dsx-color-accent-contrast);
2612
+ }
2613
+
2614
+ .dsx-banner__label {
2615
+ font-family: var(--dsx-typography-label-small-font-family), sans-serif;
2616
+ font-size: var(--dsx-typography-label-small-font-size);
2617
+ font-weight: var(--dsx-typography-label-small-font-weight);
2618
+ line-height: var(--dsx-typography-label-small-line-height);
2619
+ letter-spacing: var(--dsx-typography-label-small-letter-spacing);
2620
+ font-variation-settings: var(--dsx-typography-label-small-font-variation-settings);
2621
+ text-transform: var(--dsx-typography-label-small-text-transform);
2622
+ text-decoration: var(--dsx-typography-label-small-text-decoration);
2623
+ color: var(--dsx-color-on-surface-variant);
2624
+ }
2625
+
2626
+ .dsx-banner__value {
2627
+ font-family: var(--dsx-typography-display-medium-font-family), sans-serif;
2628
+ font-size: var(--dsx-typography-display-medium-font-size);
2629
+ font-weight: var(--dsx-typography-display-medium-font-weight);
2630
+ line-height: var(--dsx-typography-display-medium-line-height);
2631
+ letter-spacing: var(--dsx-typography-display-medium-letter-spacing);
2632
+ font-variation-settings: var(--dsx-typography-display-medium-font-variation-settings);
2633
+ text-transform: var(--dsx-typography-display-medium-text-transform);
2634
+ text-decoration: var(--dsx-typography-display-medium-text-decoration);
2635
+ color: var(--dsx-color-on-surface);
2636
+ }
2637
+
2638
+ .dsx-banner__footnote {
2639
+ font-family: var(--dsx-typography-body-small-font-family), sans-serif;
2640
+ font-size: var(--dsx-typography-body-small-font-size);
2641
+ font-weight: var(--dsx-typography-body-small-font-weight);
2642
+ line-height: var(--dsx-typography-body-small-line-height);
2643
+ letter-spacing: var(--dsx-typography-body-small-letter-spacing);
2644
+ font-variation-settings: var(--dsx-typography-body-small-font-variation-settings);
2645
+ text-transform: var(--dsx-typography-body-small-text-transform);
2646
+ text-decoration: var(--dsx-typography-body-small-text-decoration);
2647
+ color: var(--dsx-color-on-surface-variant);
2648
+ }
2649
+
2582
2650
  @keyframes dsx-base-button-loading-shimmer {
2583
2651
  0% {
2584
2652
  background-position: 200% 0;
@@ -3098,6 +3166,15 @@ textarea {
3098
3166
  border-color: color-mix(in srgb, var(--dsx-color-error-10), var(--dsx-color-error-11) 35%);
3099
3167
  }
3100
3168
 
3169
+ /* ---- halo: resting accent ring on every variant (primary has its own rule above) ---- */
3170
+
3171
+ .dsx-button:where([data-variant='secondary'])[data-halo='true'],
3172
+ .dsx-button:where([data-variant='outline'])[data-halo='true'],
3173
+ .dsx-button:where([data-variant='ghost'])[data-halo='true'],
3174
+ .dsx-button:where([data-variant='destructive'])[data-halo='true'] {
3175
+ box-shadow: var(--dsx-shadow-accent-ring);
3176
+ }
3177
+
3101
3178
  .dsx-button[data-size='sm'] {
3102
3179
  min-height: var(--dsx-density-control-height-sm, var(--dsx-size-lg));
3103
3180
  padding-inline: var(--dsx-density-control-padding-inline-sm, var(--dsx-space-sm));
@@ -3341,6 +3418,9 @@ textarea {
3341
3418
 
3342
3419
  .dsx-card {
3343
3420
  display: flex;
3421
+ min-width: 0;
3422
+ max-width: 100%;
3423
+ overflow-wrap: anywhere;
3344
3424
  flex-direction: column;
3345
3425
  gap: var(--dsx-space-md);
3346
3426
  padding: var(--dsx-space-lg);
@@ -3419,25 +3499,43 @@ textarea {
3419
3499
  }
3420
3500
 
3421
3501
  .dsx-carousel {
3502
+ --_carousel-nav-size: var(--dsx-size-lg);
3422
3503
  position: relative;
3423
3504
  display: flex;
3424
3505
  flex-direction: column;
3425
3506
  align-items: center;
3426
3507
  gap: var(--dsx-space-md);
3427
3508
  width: 100%;
3509
+ min-width: 0;
3510
+ max-width: 100%;
3428
3511
  }
3429
3512
 
3430
3513
  .dsx-carousel__viewport {
3514
+ --_carousel-gutter-start: 0;
3515
+ --_carousel-gutter-end: 0;
3431
3516
  position: relative;
3432
3517
  width: 100%;
3433
3518
  overflow: hidden;
3434
3519
  border-radius: var(--dsx-rounded-xl);
3435
3520
  }
3436
3521
 
3522
+ .dsx-carousel__viewport:where(:not([data-orientation='vertical'])):has(> .dsx-carousel__nav--previous) {
3523
+ --_carousel-gutter-start: calc(var(--_carousel-nav-size) + var(--dsx-space-md) + var(--dsx-space-xs));
3524
+ }
3525
+
3526
+ .dsx-carousel__viewport:has(> .dsx-carousel__nav--next) {
3527
+ --_carousel-gutter-end: calc(var(--_carousel-nav-size) + var(--dsx-space-md) + var(--dsx-space-xs));
3528
+ }
3529
+
3437
3530
  .dsx-carousel__viewport[data-orientation='vertical'] {
3531
+ --_carousel-gutter-start: 0;
3438
3532
  height: var(--dsx-carousel-vertical-height, 320px);
3439
3533
  }
3440
3534
 
3535
+ .dsx-carousel__viewport:where([data-orientation='vertical']):has(> .dsx-carousel__nav--previous) {
3536
+ --_carousel-gutter-end: calc(var(--_carousel-nav-size) + var(--dsx-space-md) + var(--dsx-space-xs));
3537
+ }
3538
+
3441
3539
  .dsx-carousel__track {
3442
3540
  display: flex;
3443
3541
  flex-direction: row;
@@ -3448,25 +3546,26 @@ textarea {
3448
3546
 
3449
3547
  .dsx-carousel__track--vertical {
3450
3548
  flex-direction: column;
3549
+ height: 100%;
3550
+ }
3551
+
3552
+ .dsx-carousel__slide {
3553
+ flex: 0 0 100%;
3554
+ min-width: 0;
3555
+ min-height: 0;
3451
3556
  }
3452
3557
 
3453
- /* Plain block, not a centering flex container: slide content (an image, a
3454
- colored panel, arbitrary consumer markup) must fill the full slide area.
3455
- A flex container with justify-content/align-items would shrink-wrap any
3456
- child to its own content size instead of the slide's 100% width.
3558
+ .dsx-carousel__track--vertical .dsx-carousel__item {
3559
+ height: 100%;
3560
+ }
3457
3561
 
3458
- `padding-inline` added 2026-08-27 — real bug found live: `.dsx-carousel__nav` buttons are
3459
- absolutely positioned over the viewport (left/right: space-md), and item content had no
3460
- built-in clearance for them. Short centered content (a price) never reached the edges, so this
3461
- went unnoticed; a full sentence ("this tier isn't sold in <currency>") does, and sat directly
3462
- under the chevrons — "the chevrons of the carousel is colliding within the text." Reserving
3463
- space for the nav buttons here, once, means no consumer has to remember to pad their own item
3464
- content to avoid them. */
3562
+ /* Keep consumer content full width, reserving only the lanes occupied by controls. */
3465
3563
 
3466
3564
  .dsx-carousel__item {
3565
+ box-sizing: border-box;
3467
3566
  flex: 0 0 100%;
3468
3567
  min-width: 0;
3469
- padding-inline: calc(var(--dsx-size-lg) + var(--dsx-space-md) + var(--dsx-space-xs));
3568
+ padding-inline: var(--_carousel-gutter-start) var(--_carousel-gutter-end);
3470
3569
  }
3471
3570
 
3472
3571
  .dsx-carousel__item:has(+ .dsx-carousel__item) {
@@ -3480,8 +3579,9 @@ textarea {
3480
3579
  display: flex;
3481
3580
  align-items: center;
3482
3581
  justify-content: center;
3483
- width: var(--dsx-size-lg);
3484
- height: var(--dsx-size-lg);
3582
+ box-sizing: border-box;
3583
+ width: var(--_carousel-nav-size);
3584
+ height: var(--_carousel-nav-size);
3485
3585
  padding: 0;
3486
3586
  border: var(--dsx-border-width-sm) solid var(--dsx-panel-border-color);
3487
3587
  border-radius: var(--dsx-rounded-full);
@@ -3495,16 +3595,45 @@ textarea {
3495
3595
  box-shadow: var(--dsx-shadow-elevation-2);
3496
3596
  }
3497
3597
 
3498
- .dsx-carousel__nav:hover {
3598
+ .dsx-carousel__nav:hover:enabled {
3499
3599
  background: var(--dsx-color-surface-raised);
3500
3600
  border-color: var(--dsx-color-primary);
3501
3601
  color: var(--dsx-color-primary);
3502
3602
  }
3503
3603
 
3504
- .dsx-carousel__nav:active {
3604
+ .dsx-carousel__nav:focus-visible,
3605
+ .dsx-carousel__indicator:focus-visible {
3606
+ outline: none;
3607
+ box-shadow: var(--dsx-shadow-focus-ring);
3608
+ }
3609
+
3610
+ /* Preserve the circular paint while its entire 24px minimum box accepts input. */
3611
+
3612
+ .dsx-carousel__nav::before {
3613
+ content: '';
3614
+ position: absolute;
3615
+ inset: calc(-1 * var(--dsx-border-width-sm));
3616
+ }
3617
+
3618
+ .dsx-carousel__nav:active:enabled {
3505
3619
  background: var(--dsx-effect-pressed-layer);
3506
3620
  }
3507
3621
 
3622
+ .dsx-carousel__nav:disabled {
3623
+ cursor: default;
3624
+ opacity: var(--dsx-opacity-disabled);
3625
+ }
3626
+
3627
+ .dsx-carousel__viewport[data-orientation='vertical'] .dsx-carousel__nav--previous {
3628
+ top: 25%;
3629
+ left: auto;
3630
+ right: var(--dsx-space-md);
3631
+ }
3632
+
3633
+ .dsx-carousel__viewport[data-orientation='vertical'] .dsx-carousel__nav--next {
3634
+ top: 75%;
3635
+ }
3636
+
3508
3637
  .dsx-carousel__nav--previous {
3509
3638
  left: var(--dsx-space-md);
3510
3639
  }
@@ -3513,14 +3642,12 @@ textarea {
3513
3642
  right: var(--dsx-space-md);
3514
3643
  }
3515
3644
 
3516
- .dsx-carousel[data-size='sm'] .dsx-carousel__nav {
3517
- width: var(--dsx-size-md);
3518
- height: var(--dsx-size-md);
3645
+ .dsx-carousel[data-size='sm'] {
3646
+ --_carousel-nav-size: var(--dsx-size-md);
3519
3647
  }
3520
3648
 
3521
- .dsx-carousel[data-size='lg'] .dsx-carousel__nav {
3522
- width: var(--dsx-size-xl);
3523
- height: var(--dsx-size-xl);
3649
+ .dsx-carousel[data-size='lg'] {
3650
+ --_carousel-nav-size: var(--dsx-size-xl);
3524
3651
  }
3525
3652
 
3526
3653
  .dsx-carousel__indicators {
@@ -3536,26 +3663,48 @@ textarea {
3536
3663
  the stronger --dsx-color-outline token and bumped the dot itself up one size step. */
3537
3664
 
3538
3665
  .dsx-carousel__indicator {
3539
- width: var(--dsx-space-sm);
3540
- height: var(--dsx-space-sm);
3666
+ position: relative;
3667
+ width: var(--dsx-size-md);
3668
+ height: var(--dsx-size-md);
3541
3669
  padding: 0;
3542
3670
  border: none;
3671
+ border-radius: 0;
3672
+ background: transparent;
3673
+ cursor: pointer;
3674
+ }
3675
+
3676
+ .dsx-carousel__indicator::before {
3677
+ content: '';
3678
+ position: absolute;
3679
+ top: 50%;
3680
+ left: 50%;
3681
+ transform: translate(-50%, -50%);
3682
+ width: var(--dsx-space-sm);
3683
+ height: var(--dsx-space-sm);
3543
3684
  border-radius: var(--dsx-rounded-full);
3544
3685
  background: var(--dsx-color-outline);
3545
- cursor: pointer;
3546
3686
  transition: background var(--dsx-motion-duration-fast) var(--dsx-motion-easing-in-out),
3547
3687
  width var(--dsx-motion-duration-fast) var(--dsx-motion-easing-in-out);
3548
3688
  }
3549
3689
 
3550
- .dsx-carousel__indicator--active {
3690
+ .dsx-carousel__indicator--active::before {
3551
3691
  background: var(--dsx-color-primary);
3552
3692
  width: var(--dsx-space-md);
3553
3693
  }
3554
3694
 
3695
+ @media (prefers-reduced-motion: reduce) {
3696
+ .dsx-carousel__track,
3697
+ .dsx-carousel__nav,
3698
+ .dsx-carousel__indicator::before {
3699
+ transition: none;
3700
+ }
3701
+ }
3702
+
3555
3703
  .dsx-checkbox {
3556
3704
  display: inline-flex;
3557
3705
  align-items: center;
3558
3706
  justify-content: center;
3707
+ position: relative;
3559
3708
  width: var(--dsx-size-md);
3560
3709
  height: var(--dsx-size-md);
3561
3710
  border-radius: var(--dsx-rounded-sm);
@@ -3618,6 +3767,20 @@ textarea {
3618
3767
  box-shadow: var(--dsx-shadow-focus-ring);
3619
3768
  }
3620
3769
 
3770
+ /* Extended hit area — the visual box stays 20/24/32px per size, but the
3771
+ pointer target grows to 44px (WCAG 2.5.8 minimum 24px, TMA touch 44px).
3772
+ Absolutely positioned, so it never affects layout. */
3773
+
3774
+ .dsx-checkbox::before {
3775
+ content: '';
3776
+ position: absolute;
3777
+ top: 50%;
3778
+ left: 50%;
3779
+ transform: translate(-50%, -50%);
3780
+ width: max(100% + 16px, 44px);
3781
+ height: max(100% + 16px, 44px);
3782
+ }
3783
+
3621
3784
  .dsx-checkbox[data-state='checked'],
3622
3785
  .dsx-checkbox[data-state='indeterminate'] {
3623
3786
  background: var(--dsx-color-accent-track);
@@ -3940,155 +4103,6 @@ textarea {
3940
4103
  }
3941
4104
  }
3942
4105
 
3943
- /* data-group-radius, not data-radius (2026-08-26, real bug found live): data-radius is a
3944
- reserved document-theme attribute that PortalThemeBoundary walks up via closest-ancestor
3945
- lookup to mirror the app's global radius setting into portaled content (Select/Dialog/
3946
- Popover/etc). A component-local data-radius sitting between a portal trigger and <html>
3947
- gets picked up instead of the real value — confirmed live via a Select inside this
3948
- component whose dropdown opened at 9999px border-radius instead of the real global radius. */
3949
-
3950
- .dsx-control-group {
3951
- display: inline-flex;
3952
- align-items: center;
3953
- gap: 0;
3954
- isolation: isolate;
3955
- border: var(--dsx-border-width-sm) solid var(--dsx-color-outline-variant);
3956
- background: var(--dsx-color-surface);
3957
- padding: var(--dsx-space-xs);
3958
- min-width: max-content;
3959
- }
3960
-
3961
- /* Real bug found live (2026-08-26, direct screenshot: an active ToggleGroup item's filled
3962
- background poked a hard square corner past this frame's rounded-full pill): this used to set
3963
- a bespoke `--dsx-control-group-item-radius` custom property that only this file ever read.
3964
- ButtonGroup, SegmentedControl, ToggleGroup, and baseInput all already share one established
3965
- convention for the same concept — `--dsx-grouped-radius` (declared globally in tokens.css,
3966
- defaulting to `--dsx-rounded-md`) — and ToggleGroup's own per-item corner rules (this file's
3967
- sibling, toggle-group.css) read exactly that token with that exact fallback. Because
3968
- ControlGroup never set it, every child silently fell back to `--dsx-rounded-md` (8px)
3969
- regardless of ControlGroup's own `radius` prop — invisible for a plain-bordered rest-state
3970
- corner, glaringly visible once an active item got a real fill (this session's ToggleGroup
3971
- contrast fix). Renamed to join the existing convention instead of inventing a second one. */
3972
-
3973
- .dsx-control-group[data-group-radius='full'] {
3974
- border-radius: var(--dsx-rounded-full);
3975
- --dsx-grouped-radius: var(--dsx-rounded-full);
3976
- }
3977
-
3978
- .dsx-control-group[data-group-radius='md'] {
3979
- border-radius: var(--dsx-rounded-md);
3980
- --dsx-grouped-radius: var(--dsx-rounded-md);
3981
- }
3982
-
3983
- /* Direct children keep their own border/shadow/background — ControlGroup only manages the two
3984
- outer corners (so a child's own rounded shape matches the frame's curve instead of poking a
3985
- square corner past it, the exact bug that motivated this component) and a 1px seam between
3986
- adjacent children. Not a border-collapse like InputGroup: children here are not assumed to
3987
- share one border width, since they're full DS components, not stacked form parts.
3988
- --dsx-grouped-radius (set on the root above, per data-radius) keeps these child
3989
- selectors at class+pseudo-class specificity instead of repeating the [data-radius] attribute
3990
- on every rule — the CSS selector policy caps specificity, this keeps both radius values
3991
- covered by two selectors instead of four.
3992
-
3993
- Real bug found live (2026-08-26): a child composed from a component that renders
3994
- PortalThemeBoundary (Select, Dialog, Popover, DropdownMenu, ...) injects a `hidden`
3995
- `<span data-dsx-portal-probe>` as ITS OWN first DOM sibling, ahead of the component's visible
3996
- markup — confirmed via a Select child, whose actual `:first-child` in the DOM was that hidden
3997
- probe span, not the visible trigger button. `> *:first-child` landed the corner radius on the
3998
- invisible probe, leaving the real trigger's own default (non-full) radius untouched — the
3999
- "currency picker isn't rounded" bug. The probe is always exactly one hidden leading sibling
4000
- (never last), so `:first-child` alone still needs a fallback for "the element right after a
4001
- hidden first child"; `:last-child` needed no change since the probe is never last. */
4002
-
4003
- .dsx-control-group > *:first-child:not([hidden]),
4004
- .dsx-control-group > [hidden]:first-child + * {
4005
- border-start-start-radius: var(--dsx-grouped-radius);
4006
- border-end-start-radius: var(--dsx-grouped-radius);
4007
- }
4008
-
4009
- .dsx-control-group > *:last-child {
4010
- border-start-end-radius: var(--dsx-grouped-radius);
4011
- border-end-end-radius: var(--dsx-grouped-radius);
4012
- }
4013
-
4014
- /* Real bug found live (2026-08-26, direct screenshot annotation pointing at the seam between
4015
- Select and ToggleGroup): the two rules above only ever touched each child's OUTER corners —
4016
- the INNER corners (Select's right edge, ToggleGroup's left edge, where they meet at the
4017
- divider) were left at that child's own component default (Select's own `--dsx-rounded-md`,
4018
- 8px), not explicitly squared. Confirmed via computed style: Select's own `border-radius`
4019
- read `9999px 8px 8px 9999px` — the outer-left corner correctly matched the pill, but the
4020
- inner-right corner sat at a stray 8px instead of 0, reading as a mismatched notch right at
4021
- the seam. Every grouped-control convention in this DS (ButtonGroup, SegmentedControl) squares
4022
- the inner-facing corners explicitly rather than assuming a child's own default is already 0 —
4023
- this closes the same gap here.
4024
-
4025
- ROOT CAUSE, not another patch (2026-08-26, same-day correction after the fix above still
4026
- broke, confirmed live via a screenshot of the currency dropdown OPEN): the very next rule
4027
- added here (a generic "middle child" `:not(:first-child):not(:last-child) { border-radius:
4028
- 0 }`) was written for a hypothetical 3+-child ControlGroup that has never existed anywhere in
4029
- this codebase — the only real usage today is exactly two children (Select + ToggleGroup).
4030
- Because PortalThemeBoundary's hidden probe span sits at real DOM index 0, Select's own
4031
- trigger sits at DOM index 1 — neither `:first-child` nor `:last-child` — so the speculative
4032
- middle-child rule matched it by accident, tied in specificity with the correct
4033
- `[hidden]:first-child + *` rule above, and won by coming later in the file, forcing
4034
- `border-radius: 0` on ALL FOUR corners including the outer-left one this file exists to
4035
- round. Deleted rather than special-cased further: a selector with no real target is the
4036
- actual defect here, not something to keep patching around. If a genuine 3+-child ControlGroup
4037
- ever ships, its middle-child corner logic needs designing against that real DOM shape then —
4038
- not speculatively now, against a shape that doesn't exist and that the hidden-probe mechanic
4039
- actively defeats. */
4040
-
4041
- .dsx-control-group > *:first-child:not([hidden]),
4042
- .dsx-control-group > [hidden]:first-child + * {
4043
- border-start-end-radius: 0;
4044
- border-end-end-radius: 0;
4045
- }
4046
-
4047
- .dsx-control-group > *:last-child {
4048
- border-start-start-radius: 0;
4049
- border-end-start-radius: 0;
4050
- }
4051
-
4052
- /* The `:not([hidden])` on the preceding sibling keeps the divider off the first VISIBLE child
4053
- when a PortalThemeBoundary child (Select, Dialog, Popover, DropdownMenu, ...) injects a hidden
4054
- `<span data-dsx-portal-probe>` at real DOM index 0 (2026-08-27 "stray separator on the left
4055
- side" bug). A plain `* + *` matches "has a preceding sibling element" regardless of whether
4056
- that sibling is hidden, so it previously needed a separate `content: none` override for the
4057
- probe case. Folding the guard into the base selector removes that override and keeps the rule
4058
- under the `0,3,0` selector-policy specificity ceiling — a three-class guard plus `::before`
4059
- lands at `0,3,1`. */
4060
-
4061
- .dsx-control-group > *:not([hidden]) + * {
4062
- position: relative;
4063
- }
4064
-
4065
- .dsx-control-group > *:not([hidden]) + *::before {
4066
- content: '';
4067
- position: absolute;
4068
- inset-inline-start: calc(-1 * var(--dsx-space-xs));
4069
- top: 50%;
4070
- transform: translateY(-50%);
4071
- width: var(--dsx-border-width-sm);
4072
- height: 60%;
4073
- background: var(--dsx-color-outline-variant);
4074
- pointer-events: none;
4075
- }
4076
-
4077
- /* Lift a focused child above its neighbors so its focus ring is never clipped by the group's
4078
- own rounded corners or the seam divider. */
4079
-
4080
- .dsx-control-group > *:focus-within {
4081
- z-index: 1;
4082
- }
4083
-
4084
- .dsx-control-group[data-size='sm'] {
4085
- padding: var(--dsx-space-1, 2px);
4086
- }
4087
-
4088
- .dsx-control-group[data-size='lg'] {
4089
- padding: var(--dsx-space-sm);
4090
- }
4091
-
4092
4106
  .dsx-dropdown-menu__content,
4093
4107
  .dsx-context-menu__content,
4094
4108
  .dsx-menubar__content,
@@ -4098,8 +4112,20 @@ textarea {
4098
4112
  box-shadow: var(--dsx-menu-content-elevation, var(--dsx-shadow-elevation-3));
4099
4113
  }
4100
4114
 
4101
- .dsx-combobox__content {
4102
- --dsx-menu-content-elevation: var(--dsx-shadow-elevation-2);
4115
+ /* Nested floating tier (shared globalization of the FilterBar round-3 fix):
4116
+ menu-tier content nested inside a modal-tier host (Popover/Content,
4117
+ Dialog/Content — hosts provide FloatingLayerHostContext, menu contents add
4118
+ `dsx-menu__nested`) escalates one step above the host popup
4119
+ (`modal + 2`, above the Popover tier at `modal + 1`). A flat bump of the
4120
+ dropdown tier is rejected on purpose: a standalone page-level menu must stay
4121
+ below the modal overlay (80) so an open Dialog still masks page content —
4122
+ one static value cannot be both above 91 and below 80. Standalone menus
4123
+ never carry this class, so their base tier is untouched. */
4124
+
4125
+ .dsx-select__content.dsx-menu__nested,
4126
+ .dsx-combobox__content.dsx-menu__nested,
4127
+ .dsx-menu__content.dsx-menu__nested {
4128
+ z-index: calc(var(--dsx-z-index-modal, 90) + 2);
4103
4129
  }
4104
4130
 
4105
4131
  .dsx-dropdown-menu__label,
@@ -4378,7 +4404,7 @@ textarea {
4378
4404
  gap: var(--dsx-space-sm);
4379
4405
  padding: var(--dsx-space-sm) var(--dsx-space-sm) var(--dsx-space-sm) calc(var(--dsx-space-lg) + var(--dsx-space-sm));
4380
4406
  border: 0;
4381
- border-radius: var(--dsx-rounded-md);
4407
+ border-radius: 0;
4382
4408
  background: transparent;
4383
4409
  color: var(--dsx-color-on-surface);
4384
4410
  text-align: left;
@@ -4803,7 +4829,7 @@ textarea {
4803
4829
  gap: var(--dsx-space-sm);
4804
4830
  padding: var(--dsx-space-sm) var(--dsx-space-sm) var(--dsx-space-sm) calc(var(--dsx-space-lg) + var(--dsx-space-sm));
4805
4831
  border: 0;
4806
- border-radius: var(--dsx-rounded-md);
4832
+ border-radius: 0;
4807
4833
  background: transparent;
4808
4834
  color: var(--dsx-color-on-surface);
4809
4835
  text-align: left;
@@ -4890,6 +4916,9 @@ textarea {
4890
4916
 
4891
4917
  .dsx-empty-state {
4892
4918
  display: flex;
4919
+ min-width: 0;
4920
+ max-width: 100%;
4921
+ overflow-wrap: anywhere;
4893
4922
  flex-direction: column;
4894
4923
  align-items: center;
4895
4924
  justify-content: center;
@@ -4919,6 +4948,8 @@ textarea {
4919
4948
 
4920
4949
  .dsx-empty-state__header {
4921
4950
  display: flex;
4951
+ min-width: 0;
4952
+ max-width: 100%;
4922
4953
  flex-direction: column;
4923
4954
  gap: var(--dsx-space-sm);
4924
4955
  }
@@ -5174,6 +5205,8 @@ textarea {
5174
5205
  .dsx-marquee {
5175
5206
  overflow: hidden;
5176
5207
  width: 100%;
5208
+ min-width: 0;
5209
+ max-width: 100%;
5177
5210
  position: relative;
5178
5211
  --dsx-marquee-edge-fade-width: var(--dsx-space-xl);
5179
5212
  }
@@ -5213,6 +5246,10 @@ textarea {
5213
5246
  animation-play-state: paused;
5214
5247
  }
5215
5248
 
5249
+ .dsx-marquee:focus-within .dsx-marquee__track {
5250
+ animation-play-state: paused;
5251
+ }
5252
+
5216
5253
  .dsx-marquee__content {
5217
5254
  display: flex;
5218
5255
  align-items: center;
@@ -5304,7 +5341,7 @@ textarea {
5304
5341
  gap: var(--dsx-space-sm);
5305
5342
  padding: var(--dsx-space-sm) var(--dsx-space-sm) var(--dsx-space-sm) calc(var(--dsx-space-lg) + var(--dsx-space-sm));
5306
5343
  border: 0;
5307
- border-radius: var(--dsx-rounded-md);
5344
+ border-radius: 0;
5308
5345
  background: transparent;
5309
5346
  color: var(--dsx-color-on-surface);
5310
5347
  text-align: left;
@@ -5744,6 +5781,7 @@ textarea {
5744
5781
  }
5745
5782
 
5746
5783
  .dsx-radio-item {
5784
+ position: relative;
5747
5785
  display: inline-flex;
5748
5786
  align-items: center;
5749
5787
  justify-content: center;
@@ -5754,6 +5792,20 @@ textarea {
5754
5792
  background: var(--dsx-color-surface);
5755
5793
  }
5756
5794
 
5795
+ /* Extended hit area — the visual circle stays 20/24/32px per size, but the
5796
+ pointer target grows to 44px (WCAG 2.5.8 minimum 24px, TMA touch 44px).
5797
+ Absolutely positioned, so it never affects layout. */
5798
+
5799
+ .dsx-radio-item::before {
5800
+ content: '';
5801
+ position: absolute;
5802
+ top: 50%;
5803
+ left: 50%;
5804
+ transform: translate(-50%, -50%);
5805
+ width: max(100% + 16px, 44px);
5806
+ height: max(100% + 16px, 44px);
5807
+ }
5808
+
5757
5809
  .dsx-radio-item--sm {
5758
5810
  width: var(--dsx-size-sm);
5759
5811
  height: var(--dsx-size-sm);
@@ -5764,6 +5816,11 @@ textarea {
5764
5816
  height: var(--dsx-size-md);
5765
5817
  }
5766
5818
 
5819
+ .dsx-radio-item--lg {
5820
+ width: var(--dsx-size-lg);
5821
+ height: var(--dsx-size-lg);
5822
+ }
5823
+
5767
5824
  .dsx-radio-item:focus-visible {
5768
5825
  outline: none;
5769
5826
  box-shadow: var(--dsx-shadow-focus-ring);
@@ -6014,7 +6071,7 @@ textarea {
6014
6071
  gap: var(--dsx-space-sm);
6015
6072
  padding: var(--dsx-space-sm) calc(var(--dsx-space-lg) + var(--dsx-space-sm)) var(--dsx-space-sm) var(--dsx-space-sm);
6016
6073
  border: 0;
6017
- border-radius: var(--dsx-rounded-md);
6074
+ border-radius: 0;
6018
6075
  background: transparent;
6019
6076
  color: var(--dsx-color-on-surface);
6020
6077
  text-align: left;
@@ -6571,6 +6628,7 @@ textarea {
6571
6628
  .dsx-rating[data-size='xl'] .dsx-rating__star { width: var(--dsx-size-lg); height: var(--dsx-size-lg); }
6572
6629
 
6573
6630
  .dsx-rating__item {
6631
+ position: relative;
6574
6632
  display: inline-flex;
6575
6633
  align-items: center;
6576
6634
  justify-content: center;
@@ -6588,6 +6646,18 @@ textarea {
6588
6646
  box-shadow var(--dsx-motion-duration-fast, 150ms) var(--dsx-motion-easing-standard, ease);
6589
6647
  }
6590
6648
 
6649
+ /* Keep the small star unchanged while filling the gap with a 24px target. */
6650
+
6651
+ .dsx-rating:where([data-size='sm']) .dsx-rating__item::before {
6652
+ content: '';
6653
+ position: absolute;
6654
+ top: 50%;
6655
+ left: 50%;
6656
+ width: var(--dsx-size-md);
6657
+ height: var(--dsx-size-md);
6658
+ transform: translate(-50%, -50%);
6659
+ }
6660
+
6591
6661
  .dsx-rating__item:hover:not([data-disabled]),
6592
6662
  .dsx-rating__item:focus-visible,
6593
6663
  .dsx-rating__item[data-state='checked'] {
@@ -7279,8 +7349,10 @@ textarea {
7279
7349
 
7280
7350
  .dsx-chart {
7281
7351
  position: relative;
7352
+ min-width: 0;
7353
+ max-width: 100%;
7282
7354
  display: flex;
7283
- min-height: var(--dsx-chart-min-height);
7355
+ min-height: var(--dsx-chart-min-height, 240px);
7284
7356
  aspect-ratio: var(--dsx-chart-aspect-ratio, 1.7778);
7285
7357
  color: var(--dsx-semantic-card-foreground);
7286
7358
  overflow: hidden;
@@ -7307,6 +7379,13 @@ textarea {
7307
7379
  gap: var(--dsx-space-xs);
7308
7380
  pointer-events: none;
7309
7381
  text-align: center;
7382
+ min-width: 0;
7383
+ overflow-wrap: anywhere;
7384
+ }
7385
+
7386
+ .dsx-chart__center-label > * {
7387
+ min-width: 0;
7388
+ max-width: 100%;
7310
7389
  }
7311
7390
 
7312
7391
  .dsx-chart__empty {
@@ -8538,6 +8617,10 @@ textarea {
8538
8617
  backdrop-filter: var(--dsx-effect-panel-glass-backdrop-filter);
8539
8618
  border: var(--dsx-border-width-sm) solid var(--dsx-panel-border-color);
8540
8619
  border-radius: var(--dsx-rounded-lg);
8620
+ /* Menu tier (B4 Q3): the merged Popover base paints step 4 here, which
8621
+ outranks dialogs' peers — reassert step 3 in the component file, where it
8622
+ wins by order. Same expression as baseMenu. */
8623
+ box-shadow: var(--dsx-menu-content-elevation, var(--dsx-shadow-elevation-3));
8541
8624
  display: flex;
8542
8625
  flex-direction: column;
8543
8626
  overflow: hidden;
@@ -8605,7 +8688,7 @@ textarea {
8605
8688
  justify-content: space-between;
8606
8689
  gap: var(--dsx-space-sm);
8607
8690
  padding: var(--dsx-space-sm) var(--dsx-space-md);
8608
- border-radius: var(--dsx-rounded-sm);
8691
+ border-radius: 0;
8609
8692
  cursor: pointer;
8610
8693
  color: var(--dsx-color-on-surface);
8611
8694
  font-family: var(--dsx-typography-body-medium-font-family), sans-serif;
@@ -8867,9 +8950,17 @@ textarea {
8867
8950
  --dsx-data-list-marker-size: 2.25em;
8868
8951
  }
8869
8952
 
8953
+ /* Unordered marker is a drawn dot, not a text glyph: a radial fill at a
8954
+ fixed fraction of the marker box, so it scales with item size for free —
8955
+ no compounding, no font-dependent glyph rendering. Ordered numerals stay
8956
+ text (counter) at natural size. */
8957
+
8870
8958
  .dsx-data-list[data-list-type='unordered'] > .dsx-data-list__item::before {
8871
- content: '\2022';
8872
- font-size: 1.1em;
8959
+ content: '';
8960
+ background: radial-gradient(circle closest-side, currentColor 100%, transparent 100%);
8961
+ background-size: 32% 32%;
8962
+ background-repeat: no-repeat;
8963
+ background-position: center;
8873
8964
  }
8874
8965
 
8875
8966
  .dsx-data-list[data-list-type='ordered'] > .dsx-data-list__item::before {
@@ -8880,8 +8971,10 @@ textarea {
8880
8971
  /* ── Item body — offset for marker breathing room ──────── */
8881
8972
 
8882
8973
  .dsx-data-list__item-body {
8974
+ box-sizing: border-box;
8883
8975
  display: flex;
8884
- align-items: flex-start;
8976
+ flex-wrap: wrap;
8977
+ align-items: center;
8885
8978
  gap: var(--dsx-space-md);
8886
8979
  padding: var(--dsx-space-sm) var(--dsx-space-md);
8887
8980
  padding-inline-start: var(--dsx-space-2xl);
@@ -8896,6 +8989,7 @@ textarea {
8896
8989
 
8897
8990
  .dsx-data-list__media {
8898
8991
  flex-shrink: 0;
8992
+ align-self: flex-start;
8899
8993
  display: inline-flex;
8900
8994
  align-items: center;
8901
8995
  justify-content: center;
@@ -8914,6 +9008,7 @@ textarea {
8914
9008
  }
8915
9009
 
8916
9010
  .dsx-data-list__item[data-size='xs'] > .dsx-data-list__item-body {
9011
+ padding-block: var(--dsx-space-xs);
8917
9012
  min-height: var(--dsx-size-lg);
8918
9013
  }
8919
9014
 
@@ -8922,10 +9017,12 @@ textarea {
8922
9017
  }
8923
9018
 
8924
9019
  .dsx-data-list__item[data-size='md'] > .dsx-data-list__item-body {
9020
+ padding-block: var(--dsx-space-md);
8925
9021
  min-height: var(--dsx-size-2xl);
8926
9022
  }
8927
9023
 
8928
9024
  .dsx-data-list__item[data-size='lg'] > .dsx-data-list__item-body {
9025
+ padding-block: var(--dsx-space-lg);
8929
9026
  min-height: var(--dsx-size-3xl);
8930
9027
  }
8931
9028
 
@@ -8945,11 +9042,12 @@ textarea {
8945
9042
  .dsx-data-list__content {
8946
9043
  display: grid;
8947
9044
  gap: var(--dsx-space-xs);
8948
- flex: 1;
9045
+ flex: 1 1 8rem;
8949
9046
  min-width: 0;
8950
9047
  }
8951
9048
 
8952
9049
  .dsx-data-list__text {
9050
+ overflow-wrap: anywhere;
8953
9051
  color: var(--dsx-color-on-surface);
8954
9052
  font-family: var(--dsx-typography-label-large-font-family), sans-serif;
8955
9053
  font-size: var(--dsx-typography-label-large-font-size);
@@ -8959,6 +9057,7 @@ textarea {
8959
9057
  }
8960
9058
 
8961
9059
  .dsx-data-list__metadata {
9060
+ overflow-wrap: anywhere;
8962
9061
  color: var(--dsx-color-on-surface-variant);
8963
9062
  font-family: var(--dsx-typography-body-medium-font-family), sans-serif;
8964
9063
  font-size: var(--dsx-typography-body-medium-font-size);
@@ -9029,6 +9128,7 @@ textarea {
9029
9128
 
9030
9129
  .dsx-data-table {
9031
9130
  width: 100%;
9131
+ min-width: 0;
9032
9132
  overflow: hidden;
9033
9133
  border: var(--dsx-border-width-sm) solid var(--dsx-color-outline);
9034
9134
  border-radius: var(--dsx-rounded-lg);
@@ -9091,25 +9191,215 @@ textarea {
9091
9191
  /* ── Toolbar: shares container background, bottom separator ────────── */
9092
9192
 
9093
9193
  .dsx-data-table-toolbar {
9194
+ display: flex;
9195
+ flex-wrap: wrap;
9196
+ align-items: center;
9197
+ gap: var(--dsx-space-md);
9198
+ padding: var(--dsx-space-sm) var(--dsx-space-md);
9094
9199
  background: var(--dsx-color-surface);
9095
9200
  border-bottom: var(--dsx-border-width-sm) solid var(--dsx-color-outline);
9096
9201
  }
9097
9202
 
9098
- /* ── Pagination: shares container background, top separator ────────── */
9099
-
9100
- .dsx-data-table-pagination {
9101
- background: var(--dsx-color-surface);
9102
- border-top: var(--dsx-border-width-sm) solid var(--dsx-color-outline);
9203
+ .dsx-data-table-toolbar__search {
9204
+ flex: 1 1 12rem;
9205
+ min-width: 0;
9103
9206
  }
9104
9207
 
9105
- /* ── Empty state ───────────────────────────────────────────────────── */
9208
+ .dsx-data-table__toolbar-region {
9209
+ display: grid;
9210
+ }
9106
9211
 
9107
- .dsx-data-table__empty {
9212
+ .dsx-data-table-toolbar__actions {
9213
+ display: flex;
9214
+ align-items: center;
9215
+ justify-content: flex-end;
9216
+ flex-wrap: wrap;
9217
+ gap: var(--dsx-space-sm);
9218
+ min-width: 0;
9219
+ max-width: 100%;
9220
+ }
9221
+
9222
+ .dsx-data-table-toolbar__row-count {
9223
+ display: flex;
9224
+ align-items: center;
9225
+ gap: var(--dsx-space-xs);
9226
+ color: var(--dsx-color-on-surface-variant);
9227
+ font-family: var(--dsx-typography-body-small-font-family);
9228
+ font-size: var(--dsx-typography-body-small-font-size);
9229
+ font-weight: var(--dsx-typography-body-small-font-weight);
9230
+ white-space: nowrap;
9231
+ }
9232
+
9233
+ .dsx-data-table__sort-button {
9234
+ position: relative;
9235
+ border-radius: var(--dsx-rounded-sm);
9236
+ transition:
9237
+ color var(--dsx-motion-duration-fast) var(--dsx-motion-easing-standard),
9238
+ background-color var(--dsx-motion-duration-fast) var(--dsx-motion-easing-standard);
9239
+ }
9240
+
9241
+ .dsx-data-table__sort-button::before {
9242
+ content: '';
9243
+ position: absolute;
9244
+ inset-inline: 0;
9245
+ top: 50%;
9246
+ height: max(100%, var(--dsx-size-md));
9247
+ transform: translateY(-50%);
9248
+ }
9249
+
9250
+ .dsx-data-table__sort-button:hover {
9251
+ background: var(--dsx-effect-hover-ghost);
9252
+ color: var(--dsx-color-on-surface);
9253
+ }
9254
+
9255
+ .dsx-data-table__sort-button:focus-visible {
9256
+ outline: none;
9257
+ box-shadow: var(--dsx-shadow-focus-ring);
9258
+ }
9259
+
9260
+ .dsx-data-table__sort-indicator {
9261
+ display: inline-grid;
9262
+ place-items: center;
9263
+ width: var(--dsx-size-sm);
9264
+ height: var(--dsx-size-sm);
9265
+ flex: 0 0 var(--dsx-size-sm);
9266
+ color: var(--dsx-color-on-surface-variant);
9267
+ }
9268
+
9269
+ .dsx-data-table__sort-indicator:where([data-direction='none']) {
9270
+ opacity: 0.55;
9271
+ }
9272
+
9273
+ .dsx-data-table__sort-indicator:where([data-direction='asc']),
9274
+ .dsx-data-table__sort-indicator:where([data-direction='desc']) {
9275
+ color: var(--dsx-color-accent-indicator);
9276
+ }
9277
+
9278
+ /* ── Pagination: shares container background, top separator ────────── */
9279
+
9280
+ .dsx-data-table-pagination {
9281
+ background: var(--dsx-color-surface);
9282
+ border-top: var(--dsx-border-width-sm) solid var(--dsx-color-outline);
9283
+ }
9284
+
9285
+ .dsx-data-table-pagination__info,
9286
+ .dsx-data-table-pagination__page-size {
9287
+ display: flex;
9288
+ align-items: center;
9289
+ gap: var(--dsx-space-xs);
9290
+ color: var(--dsx-color-on-surface-variant);
9291
+ font-size: var(--dsx-typography-label-small-font-size);
9292
+ white-space: nowrap;
9293
+ }
9294
+
9295
+ .dsx-data-table-pagination__navigation {
9296
+ display: flex;
9297
+ align-items: center;
9298
+ justify-content: center;
9299
+ flex: 1 1 auto;
9300
+ flex-wrap: wrap;
9301
+ min-width: 0;
9302
+ gap: var(--dsx-space-xs);
9303
+ }
9304
+
9305
+ .dsx-data-table-pagination__page-size {
9306
+ flex-wrap: wrap;
9307
+ min-width: 0;
9308
+ max-width: 100%;
9309
+ }
9310
+
9311
+ .dsx-data-table-pagination__navigation .dsx-pagination__list {
9312
+ flex-wrap: wrap;
9313
+ justify-content: center;
9314
+ padding: 0;
9315
+ border-color: transparent;
9316
+ background: transparent;
9317
+ }
9318
+
9319
+ .dsx-data-table-pagination__page-status {
9320
+ color: var(--dsx-color-on-surface-variant);
9321
+ font-size: var(--dsx-typography-label-small-font-size);
9322
+ white-space: nowrap;
9323
+ }
9324
+
9325
+ /* ── Bulk-selection action bar ─────────────────────────────────────── */
9326
+
9327
+ .dsx-data-table__bulk-bar {
9328
+ display: flex;
9329
+ flex-wrap: wrap;
9330
+ align-items: center;
9331
+ gap: var(--dsx-space-sm);
9332
+ padding: var(--dsx-space-sm) var(--dsx-space-md);
9333
+ background: var(--dsx-color-surface-raised);
9334
+ color: var(--dsx-color-on-surface);
9335
+ border-bottom: var(--dsx-border-width-sm) solid var(--dsx-color-outline);
9336
+ }
9337
+
9338
+ .dsx-data-table__bulk-bar-count {
9339
+ display: inline-flex;
9340
+ align-items: center;
9341
+ min-height: var(--dsx-size-md);
9342
+ padding: 0 var(--dsx-space-sm);
9343
+ border-radius: var(--dsx-rounded-md);
9344
+ background: var(--dsx-color-accent-surface);
9345
+ color: var(--dsx-color-accent-indicator);
9346
+ font-size: var(--dsx-typography-label-small-font-size);
9347
+ font-weight: var(--dsx-typography-label-large-font-weight);
9348
+ white-space: nowrap;
9349
+ }
9350
+
9351
+ .dsx-data-table__bulk-bar-actions {
9352
+ display: flex;
9353
+ align-items: center;
9354
+ flex-wrap: wrap;
9355
+ gap: var(--dsx-space-xs);
9356
+ flex: 1 1 auto;
9357
+ min-width: 0;
9358
+ max-width: 100%;
9359
+ }
9360
+
9361
+ .dsx-data-table__bulk-bar-clear {
9362
+ margin-inline-start: auto;
9363
+ }
9364
+
9365
+ /* ── Pagination placement ──────────────────────────────────────────── */
9366
+
9367
+ /* Bottom is the default (border-top separator). Top flips the border. */
9368
+
9369
+ .dsx-data-table-pagination.dsx-data-table__pagination-top {
9370
+ border-top: 0;
9371
+ border-bottom: var(--dsx-border-width-sm) solid var(--dsx-color-outline);
9372
+ }
9373
+
9374
+ /* ── Empty state ───────────────────────────────────────────────────── */
9375
+
9376
+ .dsx-data-table__empty {
9108
9377
  height: var(--dsx-data-table-empty-height);
9109
9378
  text-align: center;
9379
+ vertical-align: middle;
9110
9380
  color: var(--dsx-color-on-surface-variant);
9111
9381
  }
9112
9382
 
9383
+ .dsx-data-table__empty-content {
9384
+ display: flex;
9385
+ flex-direction: column;
9386
+ align-items: center;
9387
+ gap: var(--dsx-space-xs);
9388
+ padding: var(--dsx-space-lg) var(--dsx-space-md);
9389
+ }
9390
+
9391
+ .dsx-data-table__empty-content strong {
9392
+ color: var(--dsx-color-on-surface);
9393
+ font-family: var(--dsx-typography-label-large-font-family);
9394
+ font-size: var(--dsx-typography-label-large-font-size);
9395
+ font-weight: var(--dsx-typography-label-large-font-weight);
9396
+ }
9397
+
9398
+ .dsx-data-table__empty-content span {
9399
+ font-family: var(--dsx-typography-body-small-font-family);
9400
+ font-size: var(--dsx-typography-body-small-font-size);
9401
+ }
9402
+
9113
9403
  /* ── Expanded detail row ───────────────────────────────────────────── */
9114
9404
 
9115
9405
  .dsx-data-table [data-expanded-detail='true'] {
@@ -9461,7 +9751,7 @@ textarea {
9461
9751
  }
9462
9752
 
9463
9753
  .dsx-floating-panel[data-dragging] {
9464
- box-shadow: var(--dsx-shadow-elevation-4);
9754
+ box-shadow: var(--dsx-shadow-elevation-5); /* Spotlight while lifted (B4 Q3) */
9465
9755
  cursor: grabbing;
9466
9756
  }
9467
9757
 
@@ -9644,7 +9934,10 @@ textarea {
9644
9934
  }
9645
9935
 
9646
9936
  .dsx-item {
9937
+ box-sizing: border-box;
9647
9938
  display: flex;
9939
+ flex-wrap: wrap;
9940
+ min-width: 0;
9648
9941
  align-items: center;
9649
9942
  gap: var(--dsx-space-md);
9650
9943
  padding: var(--dsx-space-sm) var(--dsx-space-md);
@@ -9663,6 +9956,7 @@ textarea {
9663
9956
  }
9664
9957
 
9665
9958
  .dsx-item--xs {
9959
+ padding-block: var(--dsx-space-xs);
9666
9960
  min-height: var(--dsx-size-lg);
9667
9961
  }
9668
9962
 
@@ -9671,10 +9965,12 @@ textarea {
9671
9965
  }
9672
9966
 
9673
9967
  .dsx-item--md {
9968
+ padding-block: var(--dsx-space-md);
9674
9969
  min-height: var(--dsx-size-2xl);
9675
9970
  }
9676
9971
 
9677
9972
  .dsx-item--lg {
9973
+ padding-block: var(--dsx-space-lg);
9678
9974
  min-height: var(--dsx-size-3xl);
9679
9975
  }
9680
9976
 
@@ -9694,7 +9990,9 @@ textarea {
9694
9990
  .dsx-item__content {
9695
9991
  display: grid;
9696
9992
  gap: var(--dsx-space-xs);
9697
- flex: 1;
9993
+ flex: 1 1 8rem;
9994
+ min-width: 0;
9995
+ overflow-wrap: anywhere;
9698
9996
  }
9699
9997
 
9700
9998
  .dsx-item__title {
@@ -9716,6 +10014,9 @@ textarea {
9716
10014
 
9717
10015
  .dsx-item__actions {
9718
10016
  display: inline-flex;
10017
+ flex-wrap: wrap;
10018
+ min-width: 0;
10019
+ max-width: 100%;
9719
10020
  align-items: center;
9720
10021
  gap: var(--dsx-space-sm);
9721
10022
  }
@@ -10489,25 +10790,15 @@ textarea {
10489
10790
  border: var(--dsx-border-width-sm) solid var(--dsx-color-outline);
10490
10791
  }
10491
10792
 
10492
- .dsx-qr-code svg {
10793
+ .dsx-qr-code svg,
10794
+ .dsx-qr-code:where(.dsx-qr-code-size-sm, .dsx-qr-code-size-md, .dsx-qr-code-size-lg) svg {
10493
10795
  display: block;
10494
10796
  border-radius: var(--dsx-rounded-sm);
10495
10797
  }
10496
10798
 
10497
- .dsx-qr-code-size-sm svg {
10498
- width: var(--dsx-size-xs);
10499
- height: var(--dsx-size-xs);
10500
- }
10501
-
10502
- .dsx-qr-code-size-md svg {
10503
- width: var(--dsx-size-md);
10504
- height: var(--dsx-size-md);
10505
- }
10506
-
10507
- .dsx-qr-code-size-lg svg {
10508
- width: var(--dsx-size-xl);
10509
- height: var(--dsx-size-xl);
10510
- }
10799
+ /* Painted size comes from the runtime sizeMap (sm: 128, md: 192, lg: 256px)
10800
+ via the adapter's own width/height attributes — the CSS never constrains
10801
+ the SVG, so the matrix always renders at a scannable size. */
10511
10802
 
10512
10803
  /* High-contrast mode: QR modules use high-contrast fg, background stays scannable. */
10513
10804
 
@@ -11918,7 +12209,7 @@ textarea {
11918
12209
  background-color: var(--dsx-color-surface);
11919
12210
  border-radius: var(--dsx-rounded-md);
11920
12211
  border: var(--dsx-border-width-sm) solid var(--dsx-color-outline);
11921
- box-shadow: var(--dsx-shadow-elevation-2);
12212
+ box-shadow: var(--dsx-shadow-elevation-5); /* Spotlight (B4 Q3): below dialogs, above all menus */
11922
12213
  }
11923
12214
 
11924
12215
  [data-sonner-toast][data-type='success'],
@@ -12026,6 +12317,10 @@ textarea {
12026
12317
  border-bottom: 0;
12027
12318
  }
12028
12319
 
12320
+ .dsx-table__body tr {
12321
+ transition: background-color var(--dsx-motion-duration-fast) var(--dsx-motion-easing-standard);
12322
+ }
12323
+
12029
12324
  .dsx-table__body tr:hover {
12030
12325
  background: var(--dsx-effect-hover-ghost);
12031
12326
  }
@@ -12053,10 +12348,6 @@ textarea {
12053
12348
  font-weight: var(--dsx-typography-label-large-font-weight);
12054
12349
  }
12055
12350
 
12056
- .dsx-table__row:hover {
12057
- background: var(--dsx-color-high-contrast-container);
12058
- }
12059
-
12060
12351
  .dsx-table__row:last-child .dsx-table__cell {
12061
12352
  border-bottom: 0;
12062
12353
  }
@@ -12085,7 +12376,14 @@ textarea {
12085
12376
  }
12086
12377
 
12087
12378
  .dsx-table[data-variant='ghost'] .dsx-table__row:hover {
12088
- background: var(--dsx-color-high-contrast-container);
12379
+ background: var(--dsx-effect-hover-ghost);
12380
+ }
12381
+
12382
+ /* ---- separator ---- */
12383
+
12384
+ .dsx-table[data-separator='grid'] .dsx-table__head:not(:last-child),
12385
+ .dsx-table[data-separator='grid'] .dsx-table__cell:not(:last-child) {
12386
+ border-right: var(--dsx-border-width-sm) solid var(--dsx-color-outline);
12089
12387
  }
12090
12388
 
12091
12389
  /* ---- layout ---- */
@@ -12113,16 +12411,16 @@ textarea {
12113
12411
 
12114
12412
  /* ---- cell justify ---- */
12115
12413
 
12116
- .dsx-table__cell[data-justify='start'] {
12117
- justify-content: flex-start;
12414
+ .dsx-table .dsx-table__cell[data-justify='start'] {
12415
+ text-align: start;
12118
12416
  }
12119
12417
 
12120
- .dsx-table__cell[data-justify='center'] {
12121
- justify-content: center;
12418
+ .dsx-table .dsx-table__cell[data-justify='center'] {
12419
+ text-align: center;
12122
12420
  }
12123
12421
 
12124
- .dsx-table__cell[data-justify='end'] {
12125
- justify-content: flex-end;
12422
+ .dsx-table .dsx-table__cell[data-justify='end'] {
12423
+ text-align: end;
12126
12424
  }
12127
12425
 
12128
12426
  /* ---- cell width ---- */
@@ -12159,12 +12457,12 @@ textarea {
12159
12457
  /* ---- column header cell ---- */
12160
12458
 
12161
12459
  .dsx-table__column-header-cell {
12162
- cursor: pointer;
12163
- user-select: none;
12460
+ cursor: default;
12164
12461
  }
12165
12462
 
12166
12463
  .dsx-table__column-header-cell[data-sortable='true'] {
12167
12464
  cursor: pointer;
12465
+ user-select: none;
12168
12466
  }
12169
12467
 
12170
12468
  .dsx-table__column-header-cell[data-sorted='asc']::after,
@@ -12222,6 +12520,13 @@ textarea {
12222
12520
  display: inline-flex;
12223
12521
  align-items: center;
12224
12522
  width: fit-content;
12523
+ /* Narrow-container rule: cap at the container and scroll internally —
12524
+ same containment as the segmented-control/button/toggle-group family.
12525
+ A 5-tab strip wider than a 320px viewport scrolls instead of bleeding
12526
+ with unreachable tabs. No visual change at widths that fit. */
12527
+ min-width: 0;
12528
+ max-width: 100%;
12529
+ overflow-x: auto;
12225
12530
  border-bottom: var(--dsx-border-width-md, var(--dsx-border-width-sm)) solid var(--dsx-control-separator-color);
12226
12531
  gap: var(--dsx-space-xs);
12227
12532
  }
@@ -12239,6 +12544,9 @@ textarea {
12239
12544
  display: inline-flex;
12240
12545
  align-items: center;
12241
12546
  justify-content: center;
12547
+ /* Never compress inside the scrolled list — labels would truncate
12548
+ otherwise. No effect in roomy containers. */
12549
+ flex-shrink: 0;
12242
12550
  padding: var(--dsx-space-sm) var(--dsx-space-md);
12243
12551
  border: 0;
12244
12552
  border-radius: var(--dsx-rounded-md);
@@ -12938,7 +13246,40 @@ textarea {
12938
13246
  background-color: var(--dsx-color-surface);
12939
13247
  border-radius: var(--dsx-rounded-md);
12940
13248
  border: var(--dsx-border-width-sm) solid var(--dsx-color-outline);
12941
- box-shadow: var(--dsx-shadow-elevation-2);
13249
+ box-shadow: var(--dsx-shadow-elevation-5); /* Spotlight (B4 Q3): below dialogs, above all menus */
13250
+ }
13251
+
13252
+ /* Predetermined slot placement for action-bearing toasts: without it all
13253
+ four slots land as flex siblings in one row, so title + description sit
13254
+ side by side and squeeze the action (destructive story). Text stacks in
13255
+ column one, action pins center-right, close top-right — no consumer
13256
+ wrapper needed. Action-less toasts keep the flex row above untouched. */
13257
+
13258
+ .dsx-toast:has(.dsx-toast__action) {
13259
+ display: grid;
13260
+ grid-template-columns: minmax(0, 1fr) auto auto;
13261
+ grid-template-areas:
13262
+ "title action close"
13263
+ "description action close";
13264
+ align-items: center;
13265
+ }
13266
+
13267
+ .dsx-toast:has(.dsx-toast__action) .dsx-toast__title {
13268
+ grid-area: title;
13269
+ }
13270
+
13271
+ .dsx-toast:has(.dsx-toast__action) .dsx-toast__description {
13272
+ grid-area: description;
13273
+ }
13274
+
13275
+ .dsx-toast:has(.dsx-toast__action) .dsx-toast__action {
13276
+ grid-area: action;
13277
+ align-self: center;
13278
+ }
13279
+
13280
+ .dsx-toast:has(.dsx-toast__action) .dsx-toast__close {
13281
+ grid-area: close;
13282
+ align-self: start;
12942
13283
  }
12943
13284
 
12944
13285
  .dsx-toast[data-variant='success'] {
@@ -13149,6 +13490,11 @@ textarea {
13149
13490
  align-items: stretch;
13150
13491
  gap: 0;
13151
13492
  isolation: isolate;
13493
+ /* Narrow-container rule (TMA re-audit 2026-09-23): the fused frame cannot
13494
+ wrap, so cap at the container and scroll instead of hard-clipping the
13495
+ last item on 320px screens. */
13496
+ max-width: 100%;
13497
+ overflow-x: auto;
13152
13498
  }
13153
13499
 
13154
13500
  .dsx-toggle-group__item {
@@ -13724,6 +14070,11 @@ textarea {
13724
14070
  align-items: stretch;
13725
14071
  gap: 0;
13726
14072
  isolation: isolate;
14073
+ /* Narrow-container rule (TMA re-audit 2026-09-23): the fused frame cannot
14074
+ wrap, so cap at the container and scroll instead of hard-clipping the
14075
+ last action on 320px screens. */
14076
+ max-width: 100%;
14077
+ overflow-x: auto;
13727
14078
  }
13728
14079
 
13729
14080
  .dsx-button-group > *,
@@ -13747,6 +14098,26 @@ textarea {
13747
14098
  margin-inline-start: calc(-1 * var(--dsx-border-width-sm));
13748
14099
  }
13749
14100
 
14101
+ /* ---- variant: default = fused cluster, children render borderless ---- */
14102
+
14103
+ .dsx-button-group--default > * {
14104
+ border-color: transparent;
14105
+ }
14106
+
14107
+ /* ---- size: the group drives children min-height so sm/md/lg differ ---- */
14108
+
14109
+ .dsx-button-group[data-size='sm'] > * {
14110
+ min-height: var(--dsx-density-control-height-sm, var(--dsx-size-lg));
14111
+ }
14112
+
14113
+ .dsx-button-group[data-size='md'] > * {
14114
+ min-height: var(--dsx-density-control-height, var(--dsx-size-xl));
14115
+ }
14116
+
14117
+ .dsx-button-group[data-size='lg'] > * {
14118
+ min-height: var(--dsx-density-control-height-lg, var(--dsx-size-2xl));
14119
+ }
14120
+
13750
14121
  .dsx-button-group > *:focus-visible {
13751
14122
  z-index: var(--dsx-z-index-elevated);
13752
14123
  }
@@ -13883,7 +14254,7 @@ textarea {
13883
14254
 
13884
14255
  .dsx-article-poll button { min-height: var(--dsx-size-lg); }
13885
14256
 
13886
- .dsx-prose { width: 100%; max-width: 68ch; color: var(--dsx-color-on-surface); font-family: var(--dsx-typography-body-medium-font-family); line-height: 1.65; }
14257
+ .dsx-prose { width: 100%; min-width: 0; max-width: 68ch; overflow-wrap: anywhere; color: var(--dsx-color-on-surface); font-family: var(--dsx-typography-body-medium-font-family); line-height: 1.65; }
13887
14258
 
13888
14259
  .dsx-prose > :first-child { margin-block-start: 0; }
13889
14260
 
@@ -13911,7 +14282,9 @@ textarea {
13911
14282
 
13912
14283
  .dsx-prose th, .dsx-prose td { padding: var(--dsx-space-sm); border: var(--dsx-border-width-sm) solid var(--dsx-color-outline); text-align: start; white-space: nowrap; }
13913
14284
 
13914
- .dsx-result { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--dsx-space-md); min-height: var(--dsx-empty-state-min-height); padding: var(--dsx-space-xl); text-align: center; color: var(--dsx-color-on-surface); }
14285
+ .dsx-result { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--dsx-space-md); min-width: 0; max-width: 100%; overflow-wrap: anywhere; min-height: var(--dsx-empty-state-min-height); padding: var(--dsx-space-xl); text-align: center; color: var(--dsx-color-on-surface); }
14286
+
14287
+ .dsx-result > * { min-width: 0; max-width: 100%; }
13915
14288
 
13916
14289
  .dsx-result__icon { display: inline-flex; color: var(--_result-icon-color, var(--dsx-color-on-surface-variant)); }
13917
14290
 
@@ -14081,6 +14454,27 @@ textarea {
14081
14454
  min-width: var(--dsx-copy-field-action-min-width);
14082
14455
  }
14083
14456
 
14457
+ /* One frame: the action half inherits the field-shell outline token at rest
14458
+ and hover, so the group reads as a single frame (the -1px join overlaps
14459
+ the seam into the frame line). baseInput would glow it — pinned here.
14460
+ Focus ring untouched. */
14461
+
14462
+ .dsx-copy-field .dsx-copy-field__action,
14463
+ .dsx-copy-field__action:hover {
14464
+ border-color: var(--dsx-boundary-control-color);
14465
+ }
14466
+
14467
+ /* Read-only value half: no hover invitation */
14468
+
14469
+ :where(.dsx-copy-field) .dsx-input-shell:hover {
14470
+ border-color: var(--dsx-boundary-control-color);
14471
+ background: var(--dsx-color-surface);
14472
+ }
14473
+
14474
+ .dsx-copy-field__input:hover {
14475
+ cursor: default;
14476
+ }
14477
+
14084
14478
  .dsx-code-input {
14085
14479
  width: 100%;
14086
14480
  }
@@ -14943,6 +15337,15 @@ textarea {
14943
15337
  border-color: var(--dsx-color-secondary-container);
14944
15338
  }
14945
15339
 
15340
+ /* ---- halo: resting accent ring on every variant ---- */
15341
+
15342
+ .dsx-icon-button:where([data-variant='secondary'])[data-halo='true'],
15343
+ .dsx-icon-button:where([data-variant='outline'])[data-halo='true'],
15344
+ .dsx-icon-button:where([data-variant='ghost'])[data-halo='true'],
15345
+ .dsx-icon-button:where([data-variant='destructive'])[data-halo='true'] {
15346
+ box-shadow: var(--dsx-shadow-accent-ring);
15347
+ }
15348
+
14946
15349
  .dsx-icon-button:where([data-variant='outline']):hover:not(:disabled):not([data-disabled='true']),
14947
15350
  .dsx-icon-button:where([data-variant='ghost']):hover:not(:disabled):not([data-disabled='true']) {
14948
15351
  color: var(--dsx-color-accent-indicator);
@@ -14955,17 +15358,37 @@ textarea {
14955
15358
  border-color: var(--dsx-color-error-10);
14956
15359
  }
14957
15360
 
14958
- .dsx-icon-button[data-loading='true'] {
14959
- cursor: var(--dsx-cursor-wait, wait);
14960
- }
15361
+ /* ---- pressed (after :hover — LVHA: :active must win while held) ---- */
14961
15362
 
14962
- .dsx-icon-button__content {
14963
- display: inline-flex;
14964
- align-items: center;
14965
- justify-content: center;
14966
- transition:
14967
- opacity var(--dsx-motion-duration-fast, 150ms) var(--dsx-motion-easing-standard, ease),
14968
- color var(--dsx-motion-duration-fast, 150ms) var(--dsx-motion-easing-standard, ease);
15363
+ .dsx-icon-button:where([data-variant='primary']):active:not(:disabled):not([data-disabled='true']),
15364
+ .dsx-icon-button:where([data-variant='primary'])[aria-pressed='true']:not(:disabled):not([data-disabled='true']) {
15365
+ background: linear-gradient(var(--dsx-effect-pressed-primary), var(--dsx-effect-pressed-primary)), var(--dsx-color-accent-track);
15366
+ color: var(--dsx-color-accent-contrast);
15367
+ }
15368
+
15369
+ .dsx-icon-button:where([data-variant='primary'])[data-halo='true']:active:not(:disabled):not([data-disabled='true']),
15370
+ .dsx-icon-button:where([data-variant='primary'])[data-halo='true'][aria-pressed='true']:not(:disabled):not([data-disabled='true']) {
15371
+ box-shadow: var(--dsx-shadow-accent-ring);
15372
+ }
15373
+
15374
+ .dsx-icon-button:where([data-variant='secondary']):active:not(:disabled):not([data-disabled='true']),
15375
+ .dsx-icon-button:where([data-variant='secondary'])[aria-pressed='true']:not(:disabled):not([data-disabled='true']) {
15376
+ background: linear-gradient(var(--dsx-effect-pressed-layer), var(--dsx-effect-pressed-layer)), var(--dsx-color-secondary);
15377
+ color: var(--dsx-color-on-secondary);
15378
+ border-color: var(--dsx-color-secondary);
15379
+ }
15380
+
15381
+ .dsx-icon-button[data-loading='true'] {
15382
+ cursor: var(--dsx-cursor-wait, wait);
15383
+ }
15384
+
15385
+ .dsx-icon-button__content {
15386
+ display: inline-flex;
15387
+ align-items: center;
15388
+ justify-content: center;
15389
+ transition:
15390
+ opacity var(--dsx-motion-duration-fast, 150ms) var(--dsx-motion-easing-standard, ease),
15391
+ color var(--dsx-motion-duration-fast, 150ms) var(--dsx-motion-easing-standard, ease);
14969
15392
  }
14970
15393
 
14971
15394
  .dsx-icon-button[data-loading='true'] .dsx-icon-button__content {
@@ -15161,6 +15584,8 @@ button.dsx-link--none {
15161
15584
  .dsx-pagination__list {
15162
15585
  display: inline-flex;
15163
15586
  align-items: center;
15587
+ flex-wrap: wrap;
15588
+ row-gap: var(--dsx-space-xs);
15164
15589
  gap: var(--dsx-space-xs);
15165
15590
  padding: var(--dsx-space-xs);
15166
15591
  border-radius: var(--dsx-rounded-lg);
@@ -15204,13 +15629,13 @@ button.dsx-link--none {
15204
15629
  }
15205
15630
 
15206
15631
  .dsx-pagination__link--active {
15207
- background: var(--dsx-color-accent-indicator);
15632
+ background: var(--dsx-color-accent-track);
15208
15633
  color: var(--dsx-color-on-primary);
15209
15634
  font-weight: var(--dsx-typography-label-large-font-weight, 600);
15210
15635
  }
15211
15636
 
15212
15637
  .dsx-pagination__link--active:hover:not(:disabled):not([data-disabled]) {
15213
- background: var(--dsx-color-accent-indicator);
15638
+ background: var(--dsx-color-accent-track);
15214
15639
  color: var(--dsx-color-on-primary);
15215
15640
  }
15216
15641
 
@@ -15247,19 +15672,27 @@ button.dsx-link--none {
15247
15672
  white-space: nowrap;
15248
15673
  }
15249
15674
 
15675
+ .dsx-pagination__status {
15676
+ display: inline-flex;
15677
+ align-items: center;
15678
+ justify-content: center;
15679
+ color: var(--dsx-color-on-surface-variant);
15680
+ font-family: var(--dsx-typography-body-medium-font-family), sans-serif;
15681
+ font-size: var(--dsx-typography-body-medium-font-size);
15682
+ white-space: nowrap;
15683
+ }
15684
+
15250
15685
  .dsx-pagination__page-size {
15251
- appearance: none;
15252
15686
  display: inline-flex;
15253
15687
  align-items: center;
15688
+ min-width: 8rem;
15254
15689
  height: var(--dsx-size-lg);
15255
15690
  padding: 0 var(--dsx-space-sm);
15256
15691
  border: var(--dsx-border-width-sm) solid var(--dsx-color-outline);
15257
15692
  border-radius: var(--dsx-rounded-md);
15258
- background: var(--dsx-color-surface);
15259
15693
  color: var(--dsx-color-on-surface);
15260
15694
  font-family: var(--dsx-typography-label-large-font-family), sans-serif;
15261
15695
  font-size: var(--dsx-typography-label-large-font-size);
15262
- cursor: pointer;
15263
15696
  }
15264
15697
 
15265
15698
  .dsx-pagination__page-size:focus-visible {
@@ -15267,6 +15700,32 @@ button.dsx-link--none {
15267
15700
  box-shadow: var(--dsx-shadow-focus-ring);
15268
15701
  }
15269
15702
 
15703
+ .dsx-pagination__page-input {
15704
+ display: inline-flex;
15705
+ align-items: center;
15706
+ gap: var(--dsx-space-xs);
15707
+ color: var(--dsx-color-on-surface-variant);
15708
+ font-family: var(--dsx-typography-body-medium-font-family), sans-serif;
15709
+ font-size: var(--dsx-typography-body-medium-font-size);
15710
+ white-space: nowrap;
15711
+ }
15712
+
15713
+ .dsx-pagination__page-input input {
15714
+ width: var(--dsx-size-3xl);
15715
+ height: var(--dsx-size-lg);
15716
+ padding: 0 var(--dsx-space-xs);
15717
+ border: var(--dsx-border-width-sm) solid var(--dsx-color-outline);
15718
+ border-radius: var(--dsx-rounded-md);
15719
+ background: var(--dsx-color-surface);
15720
+ color: var(--dsx-color-on-surface);
15721
+ text-align: center;
15722
+ }
15723
+
15724
+ .dsx-pagination__page-input input:focus-visible {
15725
+ outline: none;
15726
+ box-shadow: var(--dsx-shadow-focus-ring);
15727
+ }
15728
+
15270
15729
  .dsx-pagination__item {
15271
15730
  display: inline-flex;
15272
15731
  align-items: center;
@@ -15311,14 +15770,20 @@ button.dsx-link--none {
15311
15770
  display: flex;
15312
15771
  align-items: center;
15313
15772
  justify-content: space-between;
15314
- gap: var(--dsx-space-md);
15773
+ flex-wrap: wrap;
15774
+ row-gap: var(--dsx-space-sm);
15775
+ column-gap: var(--dsx-space-md);
15776
+ min-width: 0;
15315
15777
  }
15316
15778
 
15317
15779
  .dsx-pagination-bar__controls {
15318
15780
  display: flex;
15319
15781
  align-items: center;
15320
- gap: var(--dsx-space-sm);
15321
- flex-shrink: 0;
15782
+ flex: 1 1 auto;
15783
+ flex-wrap: wrap;
15784
+ row-gap: var(--dsx-space-xs);
15785
+ column-gap: var(--dsx-space-sm);
15786
+ min-width: 0;
15322
15787
  }
15323
15788
 
15324
15789
  .dsx-password-input {
@@ -15449,7 +15914,29 @@ button.dsx-link--none {
15449
15914
  background-color: var(--dsx-color-surface-sunken);
15450
15915
  border: var(--dsx-boundary-control-width) solid transparent;
15451
15916
  border-radius: var(--dsx-grouped-radius, var(--dsx-rounded-md));
15452
- min-width: max-content;
15917
+ /* Narrow-container rule (TMA slice-1 2026-09-23): same fused-frame
15918
+ containment as button/toggle groups — min-width:max-content would override
15919
+ the cap and hard-clip right segments in narrow FilterBars, so floor at 0,
15920
+ cap at the container, and scroll. The sliding indicator measures live item
15921
+ boxes, so scrolling shifts it along correctly. */
15922
+ min-width: 0;
15923
+ max-width: 100%;
15924
+ overflow-x: auto;
15925
+ }
15926
+
15927
+ /* Fill opt-in (`fill` prop): the root spans the container and items share
15928
+ the width equally. The indicator measures live boxes, so it tracks fill
15929
+ widths with no change. For overflowing groups keep the default hug root
15930
+ (scroll containment above) — fill is for few-item groups that fit. */
15931
+
15932
+ .dsx-segmented-control:where(.dsx-segmented-control--fill, [data-fill='true']) {
15933
+ width: 100%;
15934
+ align-self: stretch;
15935
+ }
15936
+
15937
+ .dsx-segmented-control:where(.dsx-segmented-control--fill, [data-fill='true']) .dsx-segmented-control__item {
15938
+ flex: 1 1 0;
15939
+ min-width: 0;
15453
15940
  }
15454
15941
 
15455
15942
  /* ---- Disabled root ---- */
@@ -15467,6 +15954,9 @@ button.dsx-link--none {
15467
15954
  display: inline-flex;
15468
15955
  align-items: center;
15469
15956
  justify-content: center;
15957
+ /* Never compress inside the scrolled root — labels truncate ("Cl…"/"G…")
15958
+ otherwise. No effect in roomy containers. */
15959
+ flex-shrink: 0;
15470
15960
  gap: var(--dsx-space-xs);
15471
15961
  padding-inline: var(--dsx-space-md);
15472
15962
  border: 0;
@@ -15494,6 +15984,37 @@ button.dsx-link--none {
15494
15984
  margin-inline-start: calc(-1 * var(--dsx-boundary-control-width));
15495
15985
  }
15496
15986
 
15987
+ /* ---- Vertical orientation ---- */
15988
+
15989
+ .dsx-segmented-control[data-orientation='vertical'] {
15990
+ flex-direction: column;
15991
+ min-width: 0;
15992
+ /* Definite height: Firefox flex-shrinks auto-height column roots inside the
15993
+ matrix row down toward one row; max-content is identical to auto everywhere
15994
+ else and immune to the shrink. */
15995
+ height: max-content;
15996
+ }
15997
+
15998
+ .dsx-segmented-control[data-orientation='vertical'] .dsx-segmented-control__item + .dsx-segmented-control__item {
15999
+ margin-inline-start: 0;
16000
+ margin-block-start: calc(-1 * var(--dsx-boundary-control-width));
16001
+ }
16002
+
16003
+ .dsx-segmented-control[data-orientation='vertical'] .dsx-segmented-control__indicator {
16004
+ top: 0;
16005
+ bottom: auto;
16006
+ left: var(--dsx-space-2xs);
16007
+ right: var(--dsx-space-2xs);
16008
+ width: auto;
16009
+ height: 0;
16010
+ transition-property: transform, height;
16011
+ }
16012
+
16013
+ .dsx-segmented-control[data-orientation='vertical'] .dsx-segmented-control__indicator::before {
16014
+ inset-block: var(--dsx-space-2xs);
16015
+ inset-inline: 0;
16016
+ }
16017
+
15497
16018
  /* ---- Sliding indicator — Mantine-style measured pill ---- */
15498
16019
 
15499
16020
  .dsx-segmented-control__indicator {
@@ -15567,7 +16088,7 @@ button.dsx-link--none {
15567
16088
  }
15568
16089
 
15569
16090
  .dsx-segmented-control--sm .dsx-segmented-control__item {
15570
- min-height: var(--dsx-size-lg);
16091
+ min-height: calc(var(--dsx-density-control-height-sm, var(--dsx-size-lg)) - 2 * var(--dsx-boundary-control-width));
15571
16092
  padding-inline: var(--dsx-space-sm);
15572
16093
  font-size: var(--dsx-typography-label-small-font-size);
15573
16094
  letter-spacing: var(--dsx-typography-label-small-letter-spacing);
@@ -15578,7 +16099,7 @@ button.dsx-link--none {
15578
16099
  }
15579
16100
 
15580
16101
  .dsx-segmented-control--md .dsx-segmented-control__item {
15581
- min-height: var(--dsx-size-xl);
16102
+ min-height: calc(var(--dsx-density-control-height, var(--dsx-size-xl)) - 2 * var(--dsx-boundary-control-width));
15582
16103
  padding-inline: var(--dsx-space-md);
15583
16104
  }
15584
16105
 
@@ -15587,7 +16108,7 @@ button.dsx-link--none {
15587
16108
  }
15588
16109
 
15589
16110
  .dsx-segmented-control--lg .dsx-segmented-control__item {
15590
- min-height: var(--dsx-size-2xl);
16111
+ min-height: calc(var(--dsx-density-control-height-lg, var(--dsx-size-2xl)) - 2 * var(--dsx-boundary-control-width));
15591
16112
  padding-inline: var(--dsx-space-lg);
15592
16113
  font-size: var(--dsx-typography-label-large-font-size);
15593
16114
  letter-spacing: var(--dsx-typography-label-large-letter-spacing);
@@ -15646,6 +16167,27 @@ button.dsx-link--none {
15646
16167
  padding-inline: 0;
15647
16168
  }
15648
16169
 
16170
+ /* ---- Vertical: icon-only targets also constrain the block axis (inline
16171
+ sizing is inherited from the base icon-only rules above) ---- */
16172
+
16173
+ .dsx-segmented-control--sm[data-orientation='vertical'] .dsx-segmented-control__item:where([data-icon-only]) {
16174
+ block-size: var(--dsx-density-control-height-sm, var(--dsx-size-lg));
16175
+ min-block-size: var(--dsx-density-control-height-sm, var(--dsx-size-lg));
16176
+ padding-block: 0;
16177
+ }
16178
+
16179
+ .dsx-segmented-control--md[data-orientation='vertical'] .dsx-segmented-control__item:where([data-icon-only]) {
16180
+ block-size: var(--dsx-density-control-height, var(--dsx-size-xl));
16181
+ min-block-size: var(--dsx-density-control-height, var(--dsx-size-xl));
16182
+ padding-block: 0;
16183
+ }
16184
+
16185
+ .dsx-segmented-control--lg[data-orientation='vertical'] .dsx-segmented-control__item:where([data-icon-only]) {
16186
+ block-size: var(--dsx-density-control-height-lg, var(--dsx-size-2xl));
16187
+ min-block-size: var(--dsx-density-control-height-lg, var(--dsx-size-2xl));
16188
+ padding-block: 0;
16189
+ }
16190
+
15649
16191
  .dsx-segmented-control__item:focus-visible {
15650
16192
  outline: none;
15651
16193
  box-shadow: var(--dsx-shadow-focus-ring);
@@ -16173,6 +16715,8 @@ button.dsx-link--none {
16173
16715
 
16174
16716
  .dsx-stat-card__footer {
16175
16717
  display: flex;
16718
+ flex-wrap: wrap;
16719
+ min-width: 0;
16176
16720
  align-items: center;
16177
16721
  gap: var(--dsx-space-xs);
16178
16722
  }
@@ -16202,6 +16746,9 @@ button.dsx-link--none {
16202
16746
 
16203
16747
  .dsx-metric {
16204
16748
  display: flex;
16749
+ min-width: 0;
16750
+ max-width: 100%;
16751
+ overflow-wrap: anywhere;
16205
16752
  flex-direction: column;
16206
16753
  gap: var(--dsx-space-xs);
16207
16754
  color: var(--dsx-color-on-surface);
@@ -16226,6 +16773,8 @@ button.dsx-link--none {
16226
16773
 
16227
16774
  .dsx-metric__delta {
16228
16775
  display: inline-flex;
16776
+ flex-wrap: wrap;
16777
+ min-width: 0;
16229
16778
  align-items: center;
16230
16779
  gap: var(--dsx-space-xs);
16231
16780
  color: var(--dsx-color-on-surface-variant);
@@ -16253,9 +16802,10 @@ button.dsx-link--none {
16253
16802
  display: flex;
16254
16803
  align-items: center;
16255
16804
  flex-wrap: wrap;
16256
- gap: var(--dsx-space-sm);
16805
+ gap: var(--dsx-filter-bar-gap, var(--dsx-space-sm));
16257
16806
  width: 100%;
16258
- padding: var(--dsx-space-md);
16807
+ min-width: 0;
16808
+ padding: var(--dsx-filter-bar-padding, var(--dsx-space-md));
16259
16809
  border: var(--dsx-border-width-sm) solid var(--dsx-control-separator-color);
16260
16810
  border-radius: var(--dsx-rounded-lg);
16261
16811
  background: var(--dsx-color-surface-raised);
@@ -16266,7 +16816,15 @@ button.dsx-link--none {
16266
16816
  display: flex;
16267
16817
  align-items: center;
16268
16818
  flex-wrap: wrap;
16269
- gap: var(--dsx-space-sm);
16819
+ gap: var(--dsx-filter-bar-gap, var(--dsx-space-sm));
16820
+ /* Narrow-container rule (TMA slice-1 2026-09-23): as flex items of the bar
16821
+ these rows default to min-width:auto (= widest child), so a 350px
16822
+ SegmentedControl props a 272px bar open and the control's own
16823
+ max-width:100% resolves against the overflowed row — a no-op. Floor at 0
16824
+ and cap at 100% so the row shrinks to the bar and fused children engage
16825
+ their internal scroll instead. */
16826
+ min-width: 0;
16827
+ max-width: 100%;
16270
16828
  }
16271
16829
 
16272
16830
  .dsx-filter-bar__control { display: inline-flex; border-radius: var(--dsx-rounded-md); }
@@ -16280,18 +16838,380 @@ button.dsx-link--none {
16280
16838
  .dsx-filter-bar__summary {
16281
16839
  min-width: 0;
16282
16840
  color: var(--dsx-color-on-surface-variant);
16283
- font-family: var(--dsx-typography-body-small-font-family), sans-serif;
16284
- font-size: var(--dsx-typography-body-small-font-size);
16285
- line-height: var(--dsx-typography-body-small-line-height);
16841
+ font-family: var(--dsx-filter-bar-summary-font-family, var(--dsx-typography-body-small-font-family)), sans-serif;
16842
+ font-size: var(--dsx-filter-bar-summary-font-size, var(--dsx-typography-body-small-font-size));
16843
+ font-weight: var(--dsx-filter-bar-summary-font-weight, var(--dsx-typography-body-small-font-weight));
16844
+ line-height: var(--dsx-filter-bar-summary-line-height, var(--dsx-typography-body-small-line-height));
16286
16845
  }
16287
16846
 
16288
16847
  .dsx-filter-bar__actions {
16289
16848
  margin-inline-start: auto;
16849
+ flex: none;
16850
+ }
16851
+
16852
+ .dsx-filter-bar__search {
16853
+ display: inline-flex;
16854
+ flex: 1 1 12rem;
16855
+ min-width: min(10rem, 100%);
16856
+ max-width: 100%;
16857
+ }
16858
+
16859
+ .dsx-filter-bar__rules {
16860
+ min-width: 0;
16861
+ max-width: 100%;
16862
+ gap: var(--dsx-filter-bar-gap, var(--dsx-space-sm));
16863
+ min-height: var(--dsx-filter-bar-control-height, var(--dsx-density-control-height));
16864
+ }
16865
+
16866
+ .dsx-filter-bar__rule {
16867
+ box-sizing: border-box;
16868
+ min-width: 0;
16869
+ max-width: 100%;
16870
+ }
16871
+
16872
+ .dsx-filter-bar__rule-label {
16873
+ position: relative;
16874
+ display: inline-flex;
16875
+ align-items: baseline;
16876
+ flex-wrap: wrap;
16877
+ min-width: 0;
16878
+ overflow-wrap: anywhere;
16879
+ text-align: start;
16880
+ gap: var(--dsx-space-xs);
16881
+ padding: 0;
16882
+ margin: 0;
16883
+ border: none;
16884
+ background: transparent;
16885
+ color: inherit;
16886
+ font: inherit;
16887
+ cursor: pointer;
16888
+ }
16889
+
16890
+ .dsx-filter-bar__rule-label > span {
16891
+ min-width: 0;
16892
+ max-width: 100%;
16893
+ }
16894
+
16895
+ button.dsx-filter-bar__rule-label::before {
16896
+ content: '';
16897
+ position: absolute;
16898
+ inset-inline: 0;
16899
+ top: 50%;
16900
+ height: max(100%, var(--dsx-size-md));
16901
+ transform: translateY(-50%);
16902
+ }
16903
+
16904
+ :where(.dsx-filter-bar__rule) > .dsx-pill__remove {
16905
+ position: relative;
16906
+ flex-shrink: 0;
16907
+ }
16908
+
16909
+ :where(.dsx-filter-bar__rule) > .dsx-pill__remove::before {
16910
+ content: '';
16911
+ position: absolute;
16912
+ top: 50%;
16913
+ left: 50%;
16914
+ width: max(100%, var(--dsx-size-md));
16915
+ height: max(100%, var(--dsx-size-md));
16916
+ transform: translate(-50%, -50%);
16917
+ }
16918
+
16919
+ span.dsx-filter-bar__rule-label {
16920
+ cursor: default;
16921
+ }
16922
+
16923
+ .dsx-filter-bar__rule-field {
16924
+ font-weight: inherit;
16925
+ }
16926
+
16927
+ .dsx-filter-bar__rule-operator {
16928
+ color: var(--dsx-color-on-surface-variant);
16929
+ }
16930
+
16931
+ .dsx-filter-bar__rule-value {
16932
+ color: var(--dsx-color-on-surface);
16933
+ }
16934
+
16935
+ .dsx-filter-bar__rule:where([data-active='true']) {
16936
+ box-shadow: inset 0 0 0 var(--dsx-border-width-sm) var(--dsx-color-accent-indicator);
16937
+ }
16938
+
16939
+ .dsx-filter-bar__builder {
16940
+ display: grid;
16941
+ gap: var(--dsx-space-md);
16942
+ min-width: 16rem;
16943
+ }
16944
+
16945
+ .dsx-filter-bar__builder-anchor {
16946
+ position: fixed;
16947
+ top: 50%;
16948
+ left: 50%;
16949
+ width: 0;
16950
+ height: 0;
16951
+ }
16952
+
16953
+ .dsx-filter-bar__condition-editor {
16954
+ display: grid;
16955
+ gap: var(--dsx-space-md);
16956
+ width: 100%;
16957
+ padding: var(--dsx-space-md);
16958
+ border: var(--dsx-border-width-sm) solid var(--dsx-control-separator-color);
16959
+ border-radius: var(--dsx-rounded-md);
16960
+ background: var(--dsx-color-surface);
16961
+ }
16962
+
16963
+ .dsx-filter-bar__condition-editor-title {
16964
+ color: var(--dsx-color-on-surface);
16965
+ font-family: var(--dsx-typography-label-medium-font-family, var(--dsx-typography-label-small-font-family)), sans-serif;
16966
+ font-size: var(--dsx-typography-label-medium-font-size, var(--dsx-typography-label-small-font-size));
16967
+ font-weight: var(--dsx-typography-label-medium-font-weight, var(--dsx-typography-label-small-font-weight));
16968
+ line-height: var(--dsx-typography-label-medium-line-height, var(--dsx-typography-label-small-line-height));
16969
+ }
16970
+
16971
+ .dsx-filter-bar__condition-editor-body {
16972
+ display: flex;
16973
+ flex-wrap: wrap;
16974
+ gap: var(--dsx-space-md);
16975
+ }
16976
+
16977
+ .dsx-filter-bar__condition-editor-fields {
16978
+ display: flex;
16979
+ flex-direction: column;
16980
+ flex: 0 1 12rem;
16981
+ gap: var(--dsx-space-xs);
16982
+ }
16983
+
16984
+ .dsx-filter-bar__condition-editor-config {
16985
+ display: grid;
16986
+ flex: 1 1 16rem;
16987
+ gap: var(--dsx-space-sm);
16988
+ align-content: start;
16989
+ min-width: 0;
16990
+ }
16991
+
16992
+ .dsx-filter-bar__condition-editor-field {
16993
+ display: grid;
16994
+ gap: var(--dsx-space-xs);
16995
+ }
16996
+
16997
+ .dsx-filter-bar__condition-editor-label {
16998
+ color: var(--dsx-color-on-surface-variant);
16999
+ font-family: var(--dsx-typography-label-small-font-family), sans-serif;
17000
+ font-size: var(--dsx-typography-label-small-font-size);
17001
+ font-weight: var(--dsx-typography-label-small-font-weight);
17002
+ line-height: var(--dsx-typography-label-small-line-height);
17003
+ }
17004
+
17005
+ .dsx-filter-bar__condition-editor-actions {
17006
+ display: flex;
17007
+ justify-content: flex-end;
17008
+ gap: var(--dsx-space-sm);
17009
+ }
17010
+
17011
+ .dsx-filter-bar__condition-grip {
17012
+ display: inline-flex;
17013
+ flex: none;
17014
+ align-items: center;
17015
+ color: var(--dsx-color-on-surface-variant);
17016
+ cursor: grab;
16290
17017
  }
16291
17018
 
16292
- .dsx-filter-bar[data-size='sm'] { padding: var(--dsx-space-sm); }
17019
+ .dsx-filter-bar__condition-rows-label,
17020
+ .dsx-filter-bar__condition-match-label {
17021
+ color: var(--dsx-color-on-surface-variant);
17022
+ font-family: var(--dsx-typography-label-small-font-family), sans-serif;
17023
+ font-size: var(--dsx-typography-label-small-font-size);
17024
+ font-weight: var(--dsx-typography-label-small-font-weight);
17025
+ line-height: var(--dsx-typography-label-small-line-height);
17026
+ }
16293
17027
 
16294
- .dsx-filter-bar[data-size='lg'] { gap: var(--dsx-space-md); }
17028
+ .dsx-filter-bar__builder-field {
17029
+ display: grid;
17030
+ gap: var(--dsx-space-xs);
17031
+ }
17032
+
17033
+ .dsx-filter-bar__builder-label {
17034
+ color: var(--dsx-color-on-surface-variant);
17035
+ font-family: var(--dsx-typography-label-small-font-family), sans-serif;
17036
+ font-size: var(--dsx-typography-label-small-font-size);
17037
+ font-weight: var(--dsx-typography-label-small-font-weight);
17038
+ line-height: var(--dsx-typography-label-small-line-height);
17039
+ }
17040
+
17041
+ .dsx-filter-bar__builder-actions {
17042
+ display: flex;
17043
+ justify-content: flex-end;
17044
+ gap: var(--dsx-space-sm);
17045
+ }
17046
+
17047
+ /* Builder selects ride the shared nested floating tier: the Builder popup is a
17048
+ Popover host, so its option lists escalate automatically via
17049
+ `dsx-menu__nested` (see `_internal/baseMenu.css`). The round-3 scoped
17050
+ override (`.dsx-filter-bar__builder-select` at `modal + 2`) is retired. */
17051
+
17052
+ .dsx-filter-bar__rule-count {
17053
+ color: var(--dsx-color-on-surface-variant);
17054
+ font-family: var(--dsx-typography-label-small-font-family), sans-serif;
17055
+ font-size: var(--dsx-typography-label-small-font-size);
17056
+ font-weight: var(--dsx-typography-label-small-font-weight);
17057
+ line-height: var(--dsx-typography-label-small-line-height);
17058
+ }
17059
+
17060
+ .dsx-filter-bar__rules-overflow {
17061
+ display: inline-flex;
17062
+ align-items: center;
17063
+ gap: var(--dsx-space-xs);
17064
+ }
17065
+
17066
+ .dsx-filter-bar__condition-group {
17067
+ display: grid;
17068
+ gap: var(--dsx-filter-bar-gap, var(--dsx-space-sm));
17069
+ width: 100%;
17070
+ padding: var(--dsx-space-sm);
17071
+ border: var(--dsx-border-width-sm) solid var(--dsx-control-separator-color);
17072
+ border-radius: var(--dsx-rounded-md);
17073
+ }
17074
+
17075
+ .dsx-filter-bar__condition-group .dsx-filter-bar__condition-group {
17076
+ width: auto;
17077
+ margin-inline-start: var(--dsx-space-md);
17078
+ padding-inline-start: var(--dsx-space-md);
17079
+ border-inline-start: var(--dsx-border-width-sm) solid var(--dsx-color-outline);
17080
+ background: transparent;
17081
+ }
17082
+
17083
+ .dsx-filter-bar__condition-group[data-empty='true'] {
17084
+ border-style: dashed;
17085
+ }
17086
+
17087
+ .dsx-filter-bar__condition-empty {
17088
+ color: var(--dsx-color-on-surface-variant);
17089
+ font-family: var(--dsx-typography-label-small-font-family), sans-serif;
17090
+ font-size: var(--dsx-typography-label-small-font-size);
17091
+ }
17092
+
17093
+ .dsx-filter-bar__rule-value[data-empty='true'] {
17094
+ padding: 0 var(--dsx-space-xs);
17095
+ border: var(--dsx-border-width-sm) dashed var(--dsx-color-on-surface-variant);
17096
+ border-radius: var(--dsx-rounded-sm);
17097
+ color: var(--dsx-color-on-surface-variant);
17098
+ font-family: var(--dsx-typography-label-small-font-family), sans-serif;
17099
+ font-size: var(--dsx-typography-label-small-font-size);
17100
+ }
17101
+
17102
+ .dsx-filter-bar__condition-combinator {
17103
+ display: flex;
17104
+ align-items: center;
17105
+ gap: var(--dsx-space-xs);
17106
+ }
17107
+
17108
+ .dsx-filter-bar__condition-combinator-label {
17109
+ color: var(--dsx-color-on-surface-variant);
17110
+ font-family: var(--dsx-typography-label-small-font-family), sans-serif;
17111
+ font-size: var(--dsx-typography-label-small-font-size);
17112
+ font-weight: var(--dsx-typography-label-small-font-weight);
17113
+ line-height: var(--dsx-typography-label-small-line-height);
17114
+ }
17115
+
17116
+ .dsx-filter-bar__condition-children {
17117
+ display: grid;
17118
+ gap: var(--dsx-space-sm);
17119
+ }
17120
+
17121
+ .dsx-filter-bar__condition {
17122
+ display: flex;
17123
+ align-items: center;
17124
+ flex-wrap: wrap;
17125
+ gap: var(--dsx-space-sm);
17126
+ width: 100%;
17127
+ }
17128
+
17129
+ .dsx-filter-bar__condition-field {
17130
+ flex: 0 1 10rem;
17131
+ min-width: 0;
17132
+ }
17133
+
17134
+ .dsx-filter-bar__condition-operator {
17135
+ flex: 0 1 8rem;
17136
+ min-width: 0;
17137
+ }
17138
+
17139
+ .dsx-filter-bar__condition-value {
17140
+ flex: 1 1 10rem;
17141
+ min-width: 0;
17142
+ }
17143
+
17144
+ .dsx-filter-bar__condition-gap {
17145
+ display: flex;
17146
+ align-items: center;
17147
+ gap: var(--dsx-space-xs);
17148
+ width: 100%;
17149
+ }
17150
+
17151
+ .dsx-filter-bar__condition-label {
17152
+ display: inline-flex;
17153
+ flex: 1 1 auto;
17154
+ align-items: baseline;
17155
+ justify-content: flex-start;
17156
+ gap: var(--dsx-space-xs);
17157
+ min-width: 0;
17158
+ padding: 0;
17159
+ margin: 0;
17160
+ border: none;
17161
+ background: transparent;
17162
+ color: inherit;
17163
+ font: inherit;
17164
+ text-align: start;
17165
+ cursor: pointer;
17166
+ }
17167
+
17168
+ span.dsx-filter-bar__condition-label {
17169
+ cursor: default;
17170
+ }
17171
+
17172
+ .dsx-filter-bar__rule-value {
17173
+ min-width: 0;
17174
+ overflow: hidden;
17175
+ text-overflow: ellipsis;
17176
+ white-space: nowrap;
17177
+ }
17178
+
17179
+ .dsx-filter-bar__condition-actions {
17180
+ display: flex;
17181
+ align-items: center;
17182
+ flex-wrap: wrap;
17183
+ gap: var(--dsx-space-sm);
17184
+ }
17185
+
17186
+ .dsx-filter-bar:where([data-size='sm']) {
17187
+ --dsx-filter-bar-padding: var(--dsx-space-sm);
17188
+ --dsx-filter-bar-gap: var(--dsx-space-xs);
17189
+ --dsx-filter-bar-control-height: var(--dsx-density-control-height-sm);
17190
+ --dsx-filter-bar-summary-font-family: var(--dsx-typography-label-small-font-family);
17191
+ --dsx-filter-bar-summary-font-size: var(--dsx-typography-label-small-font-size);
17192
+ --dsx-filter-bar-summary-font-weight: var(--dsx-typography-label-small-font-weight);
17193
+ --dsx-filter-bar-summary-line-height: var(--dsx-typography-label-small-line-height);
17194
+ }
17195
+
17196
+ .dsx-filter-bar:where([data-size='md']) {
17197
+ --dsx-filter-bar-padding: var(--dsx-space-md);
17198
+ --dsx-filter-bar-gap: var(--dsx-space-sm);
17199
+ --dsx-filter-bar-control-height: var(--dsx-density-control-height);
17200
+ --dsx-filter-bar-summary-font-family: var(--dsx-typography-body-small-font-family);
17201
+ --dsx-filter-bar-summary-font-size: var(--dsx-typography-body-small-font-size);
17202
+ --dsx-filter-bar-summary-font-weight: var(--dsx-typography-body-small-font-weight);
17203
+ --dsx-filter-bar-summary-line-height: var(--dsx-typography-body-small-line-height);
17204
+ }
17205
+
17206
+ .dsx-filter-bar:where([data-size='lg']) {
17207
+ --dsx-filter-bar-padding: var(--dsx-space-lg);
17208
+ --dsx-filter-bar-gap: var(--dsx-space-md);
17209
+ --dsx-filter-bar-control-height: var(--dsx-density-control-height-lg);
17210
+ --dsx-filter-bar-summary-font-family: var(--dsx-typography-body-medium-font-family);
17211
+ --dsx-filter-bar-summary-font-size: var(--dsx-typography-body-medium-font-size);
17212
+ --dsx-filter-bar-summary-font-weight: var(--dsx-typography-body-medium-font-weight);
17213
+ --dsx-filter-bar-summary-line-height: var(--dsx-typography-body-medium-line-height);
17214
+ }
16295
17215
 
16296
17216
  .dsx-stepper {
16297
17217
  display: flex;
@@ -16608,6 +17528,8 @@ button.dsx-link--none {
16608
17528
  display: flex;
16609
17529
  flex-direction: column;
16610
17530
  box-sizing: border-box;
17531
+ min-width: 0;
17532
+ max-width: 100%;
16611
17533
  }
16612
17534
 
16613
17535
  .dsx-timeline--left {
@@ -16621,6 +17543,8 @@ button.dsx-link--none {
16621
17543
  .dsx-timeline__item {
16622
17544
  display: flex;
16623
17545
  position: relative;
17546
+ min-width: 0;
17547
+ max-width: 100%;
16624
17548
  }
16625
17549
 
16626
17550
  .dsx-timeline--left .dsx-timeline__item {
@@ -16628,37 +17552,51 @@ button.dsx-link--none {
16628
17552
  gap: var(--dsx-space-lg);
16629
17553
  }
16630
17554
 
17555
+ /* Alternate variant: centered dot-column spine with parity-split content.
17556
+ Shares Stepper's vertical rail engine (see stepper.css
17557
+ `.dsx-stepper--vertical .dsx-stepper__item:not(:last-child)::after`): the
17558
+ connector is item-local, anchored at the marker bottom (`top` = marker
17559
+ size) and stretched to the item bottom (`bottom: 0`), centered on the dot
17560
+ column via `calc(marker-size / 2 - rail-width / 2)`. Timeline keeps its own
17561
+ Connector DOM node (Stepper draws via ::after and hides its Separator) and
17562
+ its own rail width (`--dsx-border-width-sm`); the geometry recipe is shared,
17563
+ the slot API and ARIA roles stay distinct. Keep in sync with stepper.css. */
17564
+
16631
17565
  .dsx-timeline--alternate .dsx-timeline__item {
16632
- flex-direction: row;
17566
+ display: grid;
17567
+ grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
17568
+ column-gap: var(--dsx-space-lg);
16633
17569
  width: 100%;
16634
17570
  }
16635
17571
 
16636
- /* Zigzag: even items flip marker/content to the opposite side. This is a
16637
- per-item flip, not a shared centered spine — the connector position is
16638
- re-anchored to the marker's new (right) edge to match.
16639
- :nth-child()/[data-size] are wrapped in :where() so these rules tie the
16640
- file's pre-existing (0,3,0) ceiling on source order instead of exceeding
16641
- it — same technique as the V-2 card-selection fix. */
17572
+ /* Parity split: the 1fr tracks exist without any spacer element, so equal
17573
+ fr shares keep the marker exactly on the centerline in both parities.
17574
+ Odd items read content-left, even items read content-right. */
16642
17575
 
16643
- .dsx-timeline--alternate .dsx-timeline__item:where(:nth-child(even)) {
16644
- flex-direction: row-reverse;
17576
+ .dsx-timeline--alternate .dsx-timeline__item:where(:nth-child(odd)) .dsx-timeline__content {
17577
+ grid-column: 1;
17578
+ grid-row: 1;
17579
+ text-align: right;
16645
17580
  }
16646
17581
 
16647
- .dsx-timeline--alternate .dsx-timeline__item:where(:nth-child(even)) .dsx-timeline__content {
16648
- text-align: right;
17582
+ .dsx-timeline--alternate .dsx-timeline__item:where(:nth-child(odd)) .dsx-timeline__marker {
17583
+ grid-column: 2;
17584
+ grid-row: 1;
16649
17585
  }
16650
17586
 
16651
- .dsx-timeline--alternate .dsx-timeline__item:where(:nth-child(even)) .dsx-timeline__connector {
16652
- left: auto;
16653
- right: calc(var(--dsx-size-md) / 2 - var(--dsx-border-width-sm) / 2);
17587
+ .dsx-timeline--alternate .dsx-timeline__item:where(:nth-child(even)) .dsx-timeline__marker {
17588
+ grid-column: 2;
17589
+ grid-row: 1;
16654
17590
  }
16655
17591
 
16656
- .dsx-timeline--alternate:where([data-size='sm']) .dsx-timeline__item:where(:nth-child(even)) .dsx-timeline__connector {
16657
- right: calc(var(--dsx-size-sm) / 2 - var(--dsx-border-width-sm) / 2);
17592
+ .dsx-timeline--alternate .dsx-timeline__item:where(:nth-child(even)) .dsx-timeline__content {
17593
+ grid-column: 3;
17594
+ grid-row: 1;
17595
+ text-align: left;
16658
17596
  }
16659
17597
 
16660
- .dsx-timeline--alternate:where([data-size='lg']) .dsx-timeline__item:where(:nth-child(even)) .dsx-timeline__connector {
16661
- right: calc(var(--dsx-size-lg) / 2 - var(--dsx-border-width-sm) / 2);
17598
+ .dsx-timeline--alternate .dsx-timeline__content {
17599
+ min-width: 0;
16662
17600
  }
16663
17601
 
16664
17602
  .dsx-timeline__marker {
@@ -16699,6 +17637,20 @@ button.dsx-link--none {
16699
17637
  top: var(--dsx-size-lg);
16700
17638
  }
16701
17639
 
17640
+ /* Centered spine: the connector runs down the item's vertical centerline,
17641
+ which is the marker center because both halves are equal flex: 1. `top`
17642
+ still follows the marker size via the base size rules above — only the
17643
+ horizontal anchor is overridden here. Specificity (0,3,0) ties the base
17644
+ size rules, so this block must stay after them in source order. */
17645
+
17646
+ .dsx-timeline--alternate[data-size='sm'] .dsx-timeline__connector,
17647
+ .dsx-timeline--alternate[data-size='md'] .dsx-timeline__connector,
17648
+ .dsx-timeline--alternate:not([data-size]) .dsx-timeline__connector,
17649
+ .dsx-timeline--alternate[data-size='lg'] .dsx-timeline__connector {
17650
+ left: calc(50% - var(--dsx-border-width-sm) / 2);
17651
+ right: auto;
17652
+ }
17653
+
16702
17654
  .dsx-timeline__item--active .dsx-timeline__marker {
16703
17655
  border-color: var(--dsx-color-primary);
16704
17656
  background: var(--dsx-color-primary);
@@ -16728,11 +17680,17 @@ button.dsx-link--none {
16728
17680
  background: var(--dsx-color-primary);
16729
17681
  }
16730
17682
 
17683
+ .dsx-timeline__item--error .dsx-timeline__connector {
17684
+ background: var(--dsx-color-error);
17685
+ }
17686
+
16731
17687
  .dsx-timeline__content {
16732
17688
  display: flex;
16733
17689
  flex-direction: column;
16734
17690
  gap: var(--dsx-space-2xs);
16735
17691
  flex: 1;
17692
+ min-width: 0;
17693
+ overflow-wrap: anywhere;
16736
17694
  padding-bottom: var(--dsx-space-lg);
16737
17695
  }
16738
17696
 
@@ -16962,7 +17920,6 @@ button.dsx-link--none {
16962
17920
  .dsx-date-picker__trigger,
16963
17921
  .dsx-theme,
16964
17922
  .dsx-input-group,
16965
- .dsx-control-group,
16966
17923
  .dsx-item,
16967
17924
  .dsx-kbd,
16968
17925
  .dsx-calendar,