@usefragments/ui 1.5.4 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. package/README.md +1 -1
  2. package/dist/assets/ui.css +8808 -5810
  3. package/dist/chart.cjs +7 -20
  4. package/dist/chart.js +7 -20
  5. package/dist/colorpicker.cjs +2 -1
  6. package/dist/colorpicker.js +2 -1
  7. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  8. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  9. package/dist/components/Alert/Alert.module.scss.cjs +12 -12
  10. package/dist/components/Alert/Alert.module.scss.js +12 -12
  11. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  12. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  13. package/dist/components/AppShell/index.cjs +5 -3
  14. package/dist/components/AppShell/index.d.ts +4 -2
  15. package/dist/components/AppShell/index.d.ts.map +1 -1
  16. package/dist/components/AppShell/index.js +5 -3
  17. package/dist/components/Avatar/Avatar.module.scss.cjs +17 -14
  18. package/dist/components/Avatar/Avatar.module.scss.js +17 -14
  19. package/dist/components/Avatar/index.cjs +100 -118
  20. package/dist/components/Avatar/index.d.ts +7 -5
  21. package/dist/components/Avatar/index.d.ts.map +1 -1
  22. package/dist/components/Avatar/index.js +100 -118
  23. package/dist/components/Badge/Badge.module.scss.cjs +19 -19
  24. package/dist/components/Badge/Badge.module.scss.js +19 -19
  25. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  26. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  27. package/dist/components/Box/Box.module.scss.cjs +152 -152
  28. package/dist/components/Box/Box.module.scss.js +152 -152
  29. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +8 -8
  30. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +8 -8
  31. package/dist/components/Button/Button.module.scss.cjs +14 -14
  32. package/dist/components/Button/Button.module.scss.js +14 -14
  33. package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
  34. package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
  35. package/dist/components/Card/Card.module.scss.cjs +18 -18
  36. package/dist/components/Card/Card.module.scss.js +18 -18
  37. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  38. package/dist/components/Chart/Chart.module.scss.js +15 -15
  39. package/dist/components/Chart/index.d.ts +7 -7
  40. package/dist/components/Chart/index.d.ts.map +1 -1
  41. package/dist/components/Checkbox/Checkbox.module.scss.cjs +9 -15
  42. package/dist/components/Checkbox/Checkbox.module.scss.js +9 -15
  43. package/dist/components/Checkbox/index.cjs +4 -6
  44. package/dist/components/Checkbox/index.d.ts.map +1 -1
  45. package/dist/components/Checkbox/index.js +4 -6
  46. package/dist/components/Chip/Chip.module.scss.cjs +15 -15
  47. package/dist/components/Chip/Chip.module.scss.js +15 -15
  48. package/dist/components/Chip/index.cjs +4 -5
  49. package/dist/components/Chip/index.d.ts +1 -1
  50. package/dist/components/Chip/index.d.ts.map +1 -1
  51. package/dist/components/Chip/index.js +2 -3
  52. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +22 -22
  53. package/dist/components/CodeBlock/CodeBlock.module.scss.js +22 -22
  54. package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -12
  55. package/dist/components/Collapsible/Collapsible.module.scss.js +9 -12
  56. package/dist/components/Collapsible/index.cjs +3 -2
  57. package/dist/components/Collapsible/index.d.ts +3 -3
  58. package/dist/components/Collapsible/index.d.ts.map +1 -1
  59. package/dist/components/Collapsible/index.js +3 -2
  60. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +16 -16
  61. package/dist/components/ColorPicker/ColorPicker.module.scss.js +16 -16
  62. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  63. package/dist/components/Combobox/Combobox.module.scss.cjs +21 -27
  64. package/dist/components/Combobox/Combobox.module.scss.js +21 -27
  65. package/dist/components/Combobox/index.cjs +4 -4
  66. package/dist/components/Combobox/index.d.ts.map +1 -1
  67. package/dist/components/Combobox/index.js +4 -4
  68. package/dist/components/Command/Command.module.scss.cjs +11 -11
  69. package/dist/components/Command/Command.module.scss.js +11 -11
  70. package/dist/components/ConversationList/ConversationList.module.scss.cjs +11 -14
  71. package/dist/components/ConversationList/ConversationList.module.scss.js +11 -14
  72. package/dist/components/ConversationList/index.cjs +40 -44
  73. package/dist/components/ConversationList/index.d.ts +3 -3
  74. package/dist/components/ConversationList/index.d.ts.map +1 -1
  75. package/dist/components/ConversationList/index.js +40 -44
  76. package/dist/components/DataTable/DataTable.module.scss.cjs +32 -56
  77. package/dist/components/DataTable/DataTable.module.scss.js +32 -56
  78. package/dist/components/DataTable/index.d.ts +5 -4
  79. package/dist/components/DataTable/index.d.ts.map +1 -1
  80. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  81. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  82. package/dist/components/DatePicker/index.d.ts.map +1 -1
  83. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  84. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  85. package/dist/components/Drawer/Drawer.module.scss.cjs +31 -28
  86. package/dist/components/Drawer/Drawer.module.scss.js +31 -28
  87. package/dist/components/Drawer/index.cjs +1 -1
  88. package/dist/components/Drawer/index.js +1 -1
  89. package/dist/components/Editor/Editor.module.scss.cjs +23 -23
  90. package/dist/components/Editor/Editor.module.scss.js +23 -23
  91. package/dist/components/EmptyState/EmptyState.module.scss.cjs +12 -12
  92. package/dist/components/EmptyState/EmptyState.module.scss.js +12 -12
  93. package/dist/components/Field/Field.module.scss.cjs +8 -5
  94. package/dist/components/Field/Field.module.scss.js +8 -5
  95. package/dist/components/Field/index.cjs +10 -1
  96. package/dist/components/Field/index.d.ts +9 -2
  97. package/dist/components/Field/index.d.ts.map +1 -1
  98. package/dist/components/Field/index.js +10 -1
  99. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  100. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  101. package/dist/components/Form/Form.module.scss.cjs +5 -2
  102. package/dist/components/Form/Form.module.scss.js +5 -2
  103. package/dist/components/Form/index.cjs +6 -1
  104. package/dist/components/Form/index.d.ts +8 -3
  105. package/dist/components/Form/index.d.ts.map +1 -1
  106. package/dist/components/Form/index.js +6 -1
  107. package/dist/components/Grid/Grid.module.scss.cjs +54 -72
  108. package/dist/components/Grid/Grid.module.scss.js +54 -72
  109. package/dist/components/Grid/index.cjs +57 -77
  110. package/dist/components/Grid/index.d.ts +11 -11
  111. package/dist/components/Grid/index.d.ts.map +1 -1
  112. package/dist/components/Grid/index.js +57 -77
  113. package/dist/components/Header/Header.module.scss.cjs +33 -33
  114. package/dist/components/Header/Header.module.scss.js +33 -33
  115. package/dist/components/Header/index.cjs +2 -1
  116. package/dist/components/Header/index.d.ts.map +1 -1
  117. package/dist/components/Header/index.js +2 -1
  118. package/dist/components/Icon/Icon.module.scss.cjs +29 -8
  119. package/dist/components/Icon/Icon.module.scss.js +30 -9
  120. package/dist/components/Icon/index.cjs +30 -48
  121. package/dist/components/Icon/index.d.ts +6 -6
  122. package/dist/components/Icon/index.d.ts.map +1 -1
  123. package/dist/components/Icon/index.js +30 -48
  124. package/dist/components/IconButton/IconButton.module.scss.cjs +8 -8
  125. package/dist/components/IconButton/IconButton.module.scss.js +8 -8
  126. package/dist/components/Input/Input.module.scss.cjs +19 -25
  127. package/dist/components/Input/Input.module.scss.js +19 -25
  128. package/dist/components/Input/index.cjs +1 -2
  129. package/dist/components/Input/index.d.ts.map +1 -1
  130. package/dist/components/Input/index.js +1 -2
  131. package/dist/components/Link/Link.module.scss.cjs +10 -10
  132. package/dist/components/Link/Link.module.scss.js +10 -10
  133. package/dist/components/List/List.module.scss.cjs +19 -19
  134. package/dist/components/List/List.module.scss.js +19 -19
  135. package/dist/components/List/index.cjs +4 -7
  136. package/dist/components/List/index.d.ts.map +1 -1
  137. package/dist/components/List/index.js +4 -7
  138. package/dist/components/Listbox/Listbox.module.scss.cjs +9 -9
  139. package/dist/components/Listbox/Listbox.module.scss.js +9 -9
  140. package/dist/components/Loading/Loading.module.scss.cjs +30 -30
  141. package/dist/components/Loading/Loading.module.scss.js +30 -30
  142. package/dist/components/Loading/index.cjs +39 -67
  143. package/dist/components/Loading/index.d.ts +6 -6
  144. package/dist/components/Loading/index.d.ts.map +1 -1
  145. package/dist/components/Loading/index.js +39 -67
  146. package/dist/components/Main/Main.module.scss.cjs +7 -7
  147. package/dist/components/Main/Main.module.scss.js +7 -7
  148. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  149. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  150. package/dist/components/Menu/Menu.module.scss.cjs +16 -16
  151. package/dist/components/Menu/Menu.module.scss.js +16 -16
  152. package/dist/components/Menu/index.cjs +19 -61
  153. package/dist/components/Menu/index.d.ts +10 -10
  154. package/dist/components/Menu/index.d.ts.map +1 -1
  155. package/dist/components/Menu/index.js +19 -61
  156. package/dist/components/Message/Message.module.scss.cjs +18 -21
  157. package/dist/components/Message/Message.module.scss.js +18 -21
  158. package/dist/components/Message/index.cjs +15 -2
  159. package/dist/components/Message/index.d.ts.map +1 -1
  160. package/dist/components/Message/index.js +15 -2
  161. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +28 -28
  162. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +28 -28
  163. package/dist/components/Pagination/Pagination.module.scss.cjs +18 -9
  164. package/dist/components/Pagination/Pagination.module.scss.js +19 -10
  165. package/dist/components/Pagination/index.cjs +5 -2
  166. package/dist/components/Pagination/index.d.ts +3 -1
  167. package/dist/components/Pagination/index.d.ts.map +1 -1
  168. package/dist/components/Pagination/index.js +5 -2
  169. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  170. package/dist/components/Popover/Popover.module.scss.js +10 -10
  171. package/dist/components/Progress/Progress.module.scss.cjs +29 -32
  172. package/dist/components/Progress/Progress.module.scss.js +29 -32
  173. package/dist/components/Progress/geometry.cjs +30 -0
  174. package/dist/components/Progress/geometry.d.ts +8 -0
  175. package/dist/components/Progress/geometry.d.ts.map +1 -0
  176. package/dist/components/Progress/geometry.js +30 -0
  177. package/dist/components/Progress/index.cjs +40 -29
  178. package/dist/components/Progress/index.d.ts +4 -3
  179. package/dist/components/Progress/index.d.ts.map +1 -1
  180. package/dist/components/Progress/index.js +40 -29
  181. package/dist/components/Prompt/Prompt.module.scss.cjs +29 -29
  182. package/dist/components/Prompt/Prompt.module.scss.js +29 -29
  183. package/dist/components/Prompt/index.cjs +5 -4
  184. package/dist/components/Prompt/index.d.ts.map +1 -1
  185. package/dist/components/Prompt/index.js +5 -4
  186. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +15 -21
  187. package/dist/components/RadioGroup/RadioGroup.module.scss.js +15 -21
  188. package/dist/components/RadioGroup/index.cjs +7 -6
  189. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  190. package/dist/components/RadioGroup/index.js +7 -6
  191. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +7 -22
  192. package/dist/components/ScrollArea/ScrollArea.module.scss.js +7 -22
  193. package/dist/components/ScrollArea/index.cjs +66 -42
  194. package/dist/components/ScrollArea/index.d.ts +3 -2
  195. package/dist/components/ScrollArea/index.d.ts.map +1 -1
  196. package/dist/components/ScrollArea/index.js +66 -42
  197. package/dist/components/ScrollArea/scroll-state.cjs +58 -0
  198. package/dist/components/ScrollArea/scroll-state.d.ts +16 -0
  199. package/dist/components/ScrollArea/scroll-state.d.ts.map +1 -0
  200. package/dist/components/ScrollArea/scroll-state.js +58 -0
  201. package/dist/components/Select/Select.module.scss.cjs +21 -21
  202. package/dist/components/Select/Select.module.scss.js +21 -21
  203. package/dist/components/Select/index.cjs +3 -2
  204. package/dist/components/Select/index.d.ts.map +1 -1
  205. package/dist/components/Select/index.js +3 -2
  206. package/dist/components/Separator/Separator.module.scss.cjs +13 -10
  207. package/dist/components/Separator/Separator.module.scss.js +13 -10
  208. package/dist/components/Separator/index.cjs +37 -38
  209. package/dist/components/Separator/index.d.ts +4 -4
  210. package/dist/components/Separator/index.d.ts.map +1 -1
  211. package/dist/components/Separator/index.js +37 -38
  212. package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
  213. package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
  214. package/dist/components/Sidebar/index.cjs +5 -3
  215. package/dist/components/Sidebar/index.d.ts +6 -1
  216. package/dist/components/Sidebar/index.d.ts.map +1 -1
  217. package/dist/components/Sidebar/index.js +5 -3
  218. package/dist/components/Skeleton/Skeleton.module.scss.cjs +50 -38
  219. package/dist/components/Skeleton/Skeleton.module.scss.js +50 -38
  220. package/dist/components/Skeleton/index.cjs +41 -55
  221. package/dist/components/Skeleton/index.d.ts +7 -7
  222. package/dist/components/Skeleton/index.d.ts.map +1 -1
  223. package/dist/components/Skeleton/index.js +41 -55
  224. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  225. package/dist/components/Slider/Slider.module.scss.js +12 -12
  226. package/dist/components/Stack/Stack.module.scss.cjs +25 -45
  227. package/dist/components/Stack/Stack.module.scss.js +25 -45
  228. package/dist/components/Stack/index.cjs +106 -101
  229. package/dist/components/Stack/index.d.ts +7 -7
  230. package/dist/components/Stack/index.d.ts.map +1 -1
  231. package/dist/components/Stack/index.js +106 -101
  232. package/dist/components/Switch/Switch.module.scss.cjs +32 -0
  233. package/dist/components/Switch/Switch.module.scss.js +32 -0
  234. package/dist/components/{Toggle → Switch}/index.cjs +9 -14
  235. package/dist/components/Switch/index.d.ts +37 -1
  236. package/dist/components/Switch/index.d.ts.map +1 -1
  237. package/dist/components/{Toggle → Switch}/index.js +5 -10
  238. package/dist/components/Table/Table.module.scss.cjs +18 -27
  239. package/dist/components/Table/Table.module.scss.js +18 -27
  240. package/dist/components/Table/index.d.ts +6 -5
  241. package/dist/components/Table/index.d.ts.map +1 -1
  242. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  243. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  244. package/dist/components/Tabs/Tabs.module.scss.cjs +12 -12
  245. package/dist/components/Tabs/Tabs.module.scss.js +12 -12
  246. package/dist/components/Tabs/index.cjs +2 -2
  247. package/dist/components/Tabs/index.js +2 -2
  248. package/dist/components/Text/Text.module.scss.cjs +93 -57
  249. package/dist/components/Text/Text.module.scss.js +93 -57
  250. package/dist/components/Text/index.cjs +14 -6
  251. package/dist/components/Text/index.d.ts +25 -15
  252. package/dist/components/Text/index.d.ts.map +1 -1
  253. package/dist/components/Text/index.js +14 -6
  254. package/dist/components/Textarea/Textarea.module.scss.cjs +26 -23
  255. package/dist/components/Textarea/Textarea.module.scss.js +26 -23
  256. package/dist/components/Textarea/index.cjs +5 -10
  257. package/dist/components/Textarea/index.d.ts.map +1 -1
  258. package/dist/components/Textarea/index.js +5 -10
  259. package/dist/components/Theme/context.cjs +39 -0
  260. package/dist/components/Theme/context.d.ts +21 -0
  261. package/dist/components/Theme/context.d.ts.map +1 -0
  262. package/dist/components/Theme/context.js +22 -0
  263. package/dist/components/Theme/index.cjs +14 -209
  264. package/dist/components/Theme/index.d.ts +4 -37
  265. package/dist/components/Theme/index.d.ts.map +1 -1
  266. package/dist/components/Theme/index.js +9 -204
  267. package/dist/components/{Theme → ThemeToggle}/ThemeToggle.module.scss.cjs +6 -6
  268. package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +23 -0
  269. package/dist/components/ThemeToggle/index.cjs +115 -0
  270. package/dist/components/ThemeToggle/index.d.ts +21 -0
  271. package/dist/components/ThemeToggle/index.d.ts.map +1 -0
  272. package/dist/components/ThemeToggle/index.js +115 -0
  273. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +13 -13
  274. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +13 -13
  275. package/dist/components/ThinkingIndicator/index.cjs +34 -41
  276. package/dist/components/ThinkingIndicator/index.d.ts +4 -4
  277. package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
  278. package/dist/components/ThinkingIndicator/index.js +34 -41
  279. package/dist/components/Toast/Toast.module.scss.cjs +20 -20
  280. package/dist/components/Toast/Toast.module.scss.js +20 -20
  281. package/dist/components/Toggle/index.d.ts +2 -42
  282. package/dist/components/Toggle/index.d.ts.map +1 -1
  283. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +20 -20
  284. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +20 -20
  285. package/dist/components/ToggleGroup/index.cjs +3 -2
  286. package/dist/components/ToggleGroup/index.d.ts +2 -1
  287. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  288. package/dist/components/ToggleGroup/index.js +3 -2
  289. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  290. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  291. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +1 -1
  292. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
  293. package/dist/data-table.cjs +12 -9
  294. package/dist/data-table.js +12 -9
  295. package/dist/datepicker.cjs +2 -1
  296. package/dist/datepicker.js +2 -1
  297. package/dist/index.cjs +100 -98
  298. package/dist/index.d.ts +2 -2
  299. package/dist/index.d.ts.map +1 -1
  300. package/dist/index.js +4 -2
  301. package/dist/markdown.cjs +1 -1
  302. package/dist/markdown.js +2 -2
  303. package/dist/measurements/generated.cjs +296 -0
  304. package/dist/measurements/generated.d.ts +261 -0
  305. package/dist/measurements/generated.d.ts.map +1 -0
  306. package/dist/measurements/generated.js +296 -0
  307. package/dist/measurements/index.d.ts +2 -0
  308. package/dist/measurements/index.d.ts.map +1 -0
  309. package/dist/measurements.cjs +6 -0
  310. package/dist/measurements.js +6 -0
  311. package/dist/recipes/popup.cjs +14 -0
  312. package/dist/recipes/popup.d.ts +4 -0
  313. package/dist/recipes/popup.d.ts.map +1 -0
  314. package/dist/recipes/popup.js +14 -0
  315. package/dist/recipes/table-chrome.cjs +18 -0
  316. package/dist/recipes/table-chrome.d.ts +10 -0
  317. package/dist/recipes/table-chrome.d.ts.map +1 -0
  318. package/dist/recipes/table-chrome.js +18 -0
  319. package/dist/table.cjs +5 -2
  320. package/dist/table.js +5 -2
  321. package/dist/utils/layout-spacing.cjs +27 -0
  322. package/dist/utils/layout-spacing.d.ts +5 -0
  323. package/dist/utils/layout-spacing.d.ts.map +1 -0
  324. package/dist/utils/layout-spacing.js +27 -0
  325. package/dist/utils/seed-derivation.cjs +4 -42
  326. package/dist/utils/seed-derivation.d.ts +4 -3
  327. package/dist/utils/seed-derivation.d.ts.map +1 -1
  328. package/dist/utils/seed-derivation.js +4 -42
  329. package/dist/utils/theme-presets.cjs +1 -0
  330. package/dist/utils/theme-presets.d.ts +3 -2
  331. package/dist/utils/theme-presets.d.ts.map +1 -1
  332. package/dist/utils/theme-presets.js +1 -0
  333. package/fragments.json +1 -1
  334. package/package.json +23 -4
  335. package/src/components/Accordion/Accordion.module.scss +31 -52
  336. package/src/components/Alert/Alert.module.scss +28 -44
  337. package/src/components/AppShell/AppShell.module.scss +6 -3
  338. package/src/components/AppShell/index.tsx +8 -4
  339. package/src/components/Avatar/Avatar.module.scss +22 -60
  340. package/src/components/Avatar/index.tsx +152 -146
  341. package/src/components/Badge/Badge.module.scss +51 -46
  342. package/src/components/BentoGrid/BentoGrid.module.scss +11 -32
  343. package/src/components/Box/Box.module.scss +253 -81
  344. package/src/components/Breadcrumbs/Breadcrumbs.module.scss +10 -11
  345. package/src/components/Button/Button.module.scss +52 -57
  346. package/src/components/ButtonGroup/ButtonGroup.module.scss +5 -5
  347. package/src/components/Card/Card.consumer-fixture.module.scss +8 -0
  348. package/src/components/Card/Card.module.scss +211 -175
  349. package/src/components/Chart/Chart.module.scss +28 -29
  350. package/src/components/Chart/index.tsx +40 -53
  351. package/src/components/Checkbox/Checkbox.module.scss +43 -64
  352. package/src/components/Checkbox/index.tsx +4 -9
  353. package/src/components/Chip/Chip.contract.json +4 -3
  354. package/src/components/Chip/Chip.module.scss +23 -34
  355. package/src/components/Chip/index.tsx +3 -4
  356. package/src/components/CodeBlock/CodeBlock.module.scss +102 -215
  357. package/src/components/Collapsible/Collapsible.module.scss +29 -63
  358. package/src/components/Collapsible/index.tsx +22 -26
  359. package/src/components/ColorPicker/ColorPicker.module.scss +42 -24
  360. package/src/components/ColorPicker/index.tsx +2 -1
  361. package/src/components/Combobox/Combobox.module.scss +60 -73
  362. package/src/components/Combobox/index.tsx +7 -5
  363. package/src/components/Command/Command.module.scss +47 -77
  364. package/src/components/ConversationList/ConversationList.module.scss +20 -78
  365. package/src/components/ConversationList/index.tsx +55 -59
  366. package/src/components/DataTable/DataTable.module.scss +76 -216
  367. package/src/components/DataTable/index.tsx +20 -25
  368. package/src/components/DatePicker/DatePicker.module.scss +54 -33
  369. package/src/components/DatePicker/index.tsx +2 -1
  370. package/src/components/Dialog/Dialog.module.scss +42 -66
  371. package/src/components/Drawer/Drawer.module.scss +93 -99
  372. package/src/components/Drawer/index.tsx +1 -1
  373. package/src/components/Editor/Editor.module.scss +115 -220
  374. package/src/components/EmptyState/EmptyState.module.scss +38 -85
  375. package/src/components/Field/Field.contract.json +2 -1
  376. package/src/components/Field/Field.module.scss +9 -11
  377. package/src/components/Field/index.tsx +27 -1
  378. package/src/components/Fieldset/Fieldset.module.scss +14 -6
  379. package/src/components/Form/Form.contract.json +10 -23
  380. package/src/components/Form/Form.module.scss +9 -4
  381. package/src/components/Form/index.tsx +22 -7
  382. package/src/components/Grid/Grid.module.scss +159 -63
  383. package/src/components/Grid/index.tsx +107 -126
  384. package/src/components/Header/Header.module.scss +25 -32
  385. package/src/components/Header/index.tsx +2 -1
  386. package/src/components/Icon/Icon.module.scss +16 -0
  387. package/src/components/Icon/index.tsx +74 -86
  388. package/src/components/IconButton/IconButton.module.scss +11 -21
  389. package/src/components/Input/Input.module.scss +67 -55
  390. package/src/components/Input/index.tsx +1 -2
  391. package/src/components/Link/Link.module.scss +8 -9
  392. package/src/components/List/List.module.scss +16 -21
  393. package/src/components/List/index.tsx +4 -10
  394. package/src/components/Listbox/Listbox.module.scss +26 -54
  395. package/src/components/Loading/Loading.module.scss +23 -33
  396. package/src/components/Loading/index.tsx +68 -97
  397. package/src/components/Main/Main.module.scss +3 -5
  398. package/src/components/Markdown/Markdown.module.scss +36 -184
  399. package/src/components/Markdown/index.tsx +2 -2
  400. package/src/components/Menu/Menu.module.scss +48 -133
  401. package/src/components/Menu/index.tsx +57 -89
  402. package/src/components/Message/Message.module.scss +52 -142
  403. package/src/components/Message/index.tsx +16 -6
  404. package/src/components/NavigationMenu/NavigationMenu.module.scss +59 -52
  405. package/src/components/Pagination/Pagination.module.scss +32 -25
  406. package/src/components/Pagination/index.tsx +7 -2
  407. package/src/components/Popover/Popover.module.scss +37 -73
  408. package/src/components/Progress/Progress.module.scss +61 -41
  409. package/src/components/Progress/geometry.ts +41 -0
  410. package/src/components/Progress/index.tsx +44 -30
  411. package/src/components/Prompt/Prompt.module.scss +45 -82
  412. package/src/components/Prompt/index.tsx +6 -5
  413. package/src/components/RadioGroup/RadioGroup.module.scss +50 -69
  414. package/src/components/RadioGroup/index.tsx +7 -9
  415. package/src/components/ScrollArea/ScrollArea.contract.json +8 -24
  416. package/src/components/ScrollArea/ScrollArea.module.scss +122 -96
  417. package/src/components/ScrollArea/index.tsx +78 -60
  418. package/src/components/ScrollArea/scroll-state.ts +87 -0
  419. package/src/components/Select/Select.module.scss +53 -41
  420. package/src/components/Select/index.tsx +6 -2
  421. package/src/components/Separator/Separator.module.scss +29 -19
  422. package/src/components/Separator/index.tsx +55 -51
  423. package/src/components/Sidebar/Sidebar.contract.json +12 -0
  424. package/src/components/Sidebar/Sidebar.module.scss +101 -99
  425. package/src/components/Sidebar/index.tsx +10 -3
  426. package/src/components/Skeleton/Skeleton.module.scss +26 -26
  427. package/src/components/Skeleton/index.tsx +65 -72
  428. package/src/components/Slider/Slider.module.scss +31 -25
  429. package/src/components/Stack/Stack.module.scss +101 -30
  430. package/src/components/Stack/index.tsx +157 -127
  431. package/src/components/{Toggle/Toggle.contract.json → Switch/Switch.contract.json} +1 -1
  432. package/src/components/{Toggle/Toggle.module.scss → Switch/Switch.module.scss} +55 -82
  433. package/src/components/{Toggle → Switch}/index.tsx +5 -21
  434. package/src/components/Table/Table.module.scss +38 -129
  435. package/src/components/Table/index.tsx +13 -6
  436. package/src/components/TableOfContents/TableOfContents.module.scss +20 -177
  437. package/src/components/Tabs/Tabs.module.scss +27 -22
  438. package/src/components/Tabs/index.tsx +2 -2
  439. package/src/components/Text/Text.module.scss +22 -3
  440. package/src/components/Text/index.tsx +56 -21
  441. package/src/components/Textarea/Textarea.module.scss +59 -39
  442. package/src/components/Textarea/index.tsx +5 -12
  443. package/src/components/Theme/context.ts +42 -0
  444. package/src/components/Theme/index.tsx +14 -309
  445. package/src/components/ThemeToggle/ThemeToggle.module.scss +73 -0
  446. package/src/components/ThemeToggle/index.tsx +144 -0
  447. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +24 -19
  448. package/src/components/ThinkingIndicator/index.tsx +44 -54
  449. package/src/components/Toast/Toast.contract.json +5 -21
  450. package/src/components/Toast/Toast.module.scss +61 -138
  451. package/src/components/Toggle/index.ts +7 -0
  452. package/src/components/ToggleGroup/ToggleGroup.contract.json +12 -39
  453. package/src/components/ToggleGroup/ToggleGroup.module.scss +132 -88
  454. package/src/components/ToggleGroup/index.tsx +5 -3
  455. package/src/components/Tooltip/Tooltip.module.scss +23 -39
  456. package/src/components/VisuallyHidden/VisuallyHidden.module.scss +3 -0
  457. package/src/index.ts +2 -1
  458. package/src/measurements/MeasurementTargets.module.scss +229 -0
  459. package/src/measurements/generated.ts +317 -0
  460. package/src/measurements/index.ts +8 -0
  461. package/src/measurements/measurements.json +361 -0
  462. package/src/recipes/_action.scss +138 -0
  463. package/src/recipes/_boolean-range.scss +124 -0
  464. package/src/recipes/_feedback.scss +171 -0
  465. package/src/recipes/_field.scss +98 -0
  466. package/src/recipes/_layout.scss +67 -0
  467. package/src/recipes/_navigation.scss +110 -0
  468. package/src/recipes/_overlay.scss +191 -0
  469. package/src/recipes/_popup.scss +92 -0
  470. package/src/recipes/_prose.scss +174 -0
  471. package/src/recipes/_representation.scss +193 -0
  472. package/src/recipes/_segmented.scss +26 -0
  473. package/src/recipes/_surface.scss +13 -0
  474. package/src/recipes/_table-chrome.scss +105 -0
  475. package/src/recipes/_target.scss +31 -0
  476. package/src/recipes/_typography.scss +38 -0
  477. package/src/recipes/popup.ts +12 -0
  478. package/src/recipes/table-chrome.ts +30 -0
  479. package/src/styles/globals.scss +2 -2
  480. package/src/tokens/_component-properties.scss +2 -2
  481. package/src/tokens/_computed.scss +9 -9
  482. package/src/tokens/_density.scss +41 -132
  483. package/src/tokens/_measurements.catalog.generated.css +91 -0
  484. package/src/tokens/_measurements.generated.scss +604 -0
  485. package/src/tokens/_mixins.scss +0 -276
  486. package/src/tokens/_property-registrations.scss +96 -92
  487. package/src/tokens/_radius.scss +16 -70
  488. package/src/tokens/_seeds.scss +8 -7
  489. package/src/tokens/_variables.scss +163 -148
  490. package/src/utils/layout-spacing.ts +31 -0
  491. package/src/utils/seed-derivation.ts +134 -172
  492. package/src/utils/theme-presets.ts +58 -30
  493. package/dist/components/Theme/ThemeToggle.module.scss.js +0 -23
  494. package/dist/components/Toggle/Toggle.module.scss.cjs +0 -44
  495. package/dist/components/Toggle/Toggle.module.scss.js +0 -44
  496. package/src/components/Switch/index.ts +0 -3
  497. package/src/components/Theme/ThemeToggle.module.scss +0 -91
@@ -1,135 +1,72 @@
1
1
  @use "../../tokens/variables" as *;
2
2
  @use "../../tokens/mixins" as *;
3
+ @use "../../recipes/table-chrome" as table-chrome;
3
4
 
4
5
  .wrapper {
6
+ min-inline-size: 0;
7
+ max-inline-size: 100%;
5
8
  overflow-x: auto;
6
9
  -webkit-overflow-scrolling: touch;
7
10
  }
8
11
 
9
12
  .table {
10
- width: 100%;
11
- border-collapse: collapse;
12
- font-family: var(--fui-font-sans, $fui-font-sans);
13
- -webkit-font-smoothing: antialiased;
14
- -moz-osx-font-smoothing: grayscale;
13
+ @include table-chrome.root;
14
+
15
+ @each $density in ("compact", "regular", "relaxed") {
16
+ &[data-density="#{$density}"] {
17
+ @include table-chrome.density($density);
18
+ }
19
+ }
15
20
  }
16
21
 
17
- // Caption for accessibility
18
22
  .caption {
19
- padding: var(--fui-space-3, $fui-space-3) 0;
20
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
21
- font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
22
- color: var(--fui-text-secondary, $fui-text-secondary);
23
- text-align: left;
24
- caption-side: top;
23
+ @include table-chrome.caption;
25
24
  }
26
25
 
27
- // Visually hidden caption (screen readers only)
28
26
  .captionHidden {
29
27
  @include visually-hidden;
30
28
  }
31
29
 
32
- // Size variants
33
- .sm {
34
- .th,
35
- .td {
36
- padding: var(--fui-space-1, $fui-space-1) var(--fui-space-3, $fui-space-3);
37
- font-size: var(--fui-font-size-xs, $fui-font-size-xs);
38
- }
39
- }
40
-
41
- .md {
42
- .th,
43
- .td {
44
- padding: var(--fui-space-1, $fui-space-1) var(--fui-space-3, $fui-space-3);
45
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
46
- }
47
- }
48
-
49
- // Dashboard-dense rows — 36px tall, 14px horizontal padding, 12px text.
50
- // Hairline dividers only; no striping. Header sits flush on the same rail
51
- // as rows so it reads as part of the list, not a separate band.
52
- .compact {
53
- .th,
54
- .td {
55
- padding: 0 var(--fui-space-2, $fui-space-2);
56
- font-size: var(--fui-font-size-xs, $fui-font-size-xs);
57
- height: 2.571rem; // 36px
58
- line-height: var(--fui-line-height-tight, $fui-line-height-tight);
59
- }
60
-
61
- .th {
62
- font-size: var(--fui-font-size-2xs, $fui-font-size-2xs);
63
- color: var(--fui-text-tertiary, $fui-text-tertiary);
64
- text-transform: uppercase;
65
- letter-spacing: var(--fui-letter-spacing-wide, $fui-letter-spacing-wide);
66
- font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
67
- }
68
- }
69
-
70
- // Tabular numerals on a cell — digits align in columns so updating numbers
71
- // don't jitter. Essential for numeric columns, timestamps, currencies.
72
30
  .tabular {
73
31
  font-variant-numeric: tabular-nums;
74
32
  }
75
33
 
76
- // Header
77
34
  .thead {
78
35
  position: sticky;
79
- top: 0;
36
+ inset-block-start: 0;
80
37
  z-index: 1;
81
38
 
82
39
  > tr {
83
- border-bottom: 1px solid var(--fui-table-header-border, var(--fui-border, #{$fui-border}));
40
+ @include table-chrome.row;
84
41
  }
85
42
  }
86
43
 
87
44
  .th {
88
- text-align: left;
89
- font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
90
- color: var(--fui-text-secondary, $fui-text-secondary);
91
- white-space: nowrap;
92
- vertical-align: middle;
45
+ @include table-chrome.header-cell;
93
46
 
94
- &:first-child {
95
- border-top-left-radius: var(--fui-radius-md, $fui-radius-md);
96
- }
97
-
98
- &:last-child {
99
- border-top-right-radius: var(--fui-radius-md, $fui-radius-md);
100
- }
47
+ white-space: nowrap;
101
48
  }
102
49
 
103
50
  .headerContent {
104
51
  display: flex;
105
52
  align-items: center;
106
- gap: var(--fui-space-1, $fui-space-1);
107
- }
108
-
109
- // Body
110
- .tbody {
111
- .td {
112
- padding-top: var(--fui-space-2, $fui-space-2);
113
- padding-bottom: var(--fui-space-2, $fui-space-2);
114
- }
53
+ gap: var(--fui-raw-space-4);
115
54
  }
116
55
 
117
56
  .row {
57
+ @include table-chrome.row;
58
+
118
59
  --fui-table-row-base-bg: var(
119
60
  --fui-table-bg,
120
61
  var(--fui-main-bg, var(--fui-bg-primary, #{$fui-bg-primary}))
121
62
  );
122
63
  --fui-table-row-bg: var(--fui-table-row-base-bg);
123
64
 
124
- border-bottom: 1px solid var(--fui-table-border, var(--fui-border, #{$fui-border}));
125
- background-color: var(
126
- --fui-table-row-bg,
127
- var(--fui-table-row-base-bg, var(--fui-bg-primary, #{$fui-bg-primary}))
128
- );
65
+ background-color: var(--fui-table-row-bg);
129
66
  transition: background-color var(--fui-transition-fast, $fui-transition-fast);
130
67
 
131
68
  &:last-child {
132
- border-bottom: none;
69
+ border-block-end: 0;
133
70
  }
134
71
 
135
72
  &:hover {
@@ -137,39 +74,32 @@
137
74
  }
138
75
  }
139
76
 
77
+ .td {
78
+ @include table-chrome.body-cell;
79
+ }
80
+
140
81
  .selected {
141
82
  --fui-table-row-bg: var(
142
83
  --fui-table-row-selected-bg,
143
84
  color-mix(in srgb, var(--fui-text-primary, #{$fui-text-primary}) 8%, transparent)
144
85
  );
145
- box-shadow: inset 1px 0 0
146
- var(--fui-table-row-selected-border, var(--fui-border-strong, #{$fui-border-strong}));
147
86
 
148
- &:hover {
149
- --fui-table-row-bg: var(
150
- --fui-table-row-selected-bg,
151
- color-mix(in srgb, var(--fui-text-primary, #{$fui-text-primary}) 10%, transparent)
152
- );
87
+ .td:first-child {
88
+ box-shadow: inset var(--fui-table-divider-size) 0 0
89
+ var(--fui-table-row-selected-border, var(--fui-border-strong, #{$fui-border-strong}));
153
90
  }
154
- }
155
91
 
156
- .td {
157
- color: var(--fui-text-primary, $fui-text-primary);
158
- vertical-align: middle;
159
- line-height: var(--fui-line-height-normal, $fui-line-height-normal);
92
+ &:dir(rtl) .td:first-child {
93
+ box-shadow: inset calc(-1 * var(--fui-table-divider-size)) 0 0
94
+ var(--fui-table-row-selected-border, var(--fui-border-strong, #{$fui-border-strong}));
95
+ }
160
96
  }
161
97
 
162
- // Footer
163
98
  .tfoot {
164
- border-top: 1px solid var(--fui-table-header-border, var(--fui-border, #{$fui-border}));
165
-
166
- .td,
167
- .th {
168
- font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
169
- }
99
+ border-block-start: var(--fui-table-divider-size) solid
100
+ var(--fui-table-header-border, var(--fui-border, #{$fui-border}));
170
101
  }
171
102
 
172
- // Striped rows
173
103
  .striped {
174
104
  .tbody .row:nth-child(even),
175
105
  .tbody .row[data-band="alt"] {
@@ -181,41 +111,20 @@
181
111
  }
182
112
  }
183
113
 
184
- // Bordered
185
114
  .bordered {
186
- border: 1px solid var(--fui-table-border, var(--fui-border, #{$fui-border}));
187
- border-radius: var(--fui-radius-md, $fui-radius-md);
188
115
  overflow: hidden;
116
+ border: var(--fui-table-divider-size, var(--fui-stroke-hairline)) solid
117
+ var(--fui-table-border, var(--fui-border, #{$fui-border}));
118
+ border-radius: var(--fui-radius-md, $fui-radius-md);
189
119
  }
190
120
 
191
- // Responsive: allow horizontal scroll on small screens
192
- @include below-sm {
193
- .wrapper {
194
- margin-left: calc(-1 * var(--fui-space-4, $fui-space-4));
195
- margin-right: calc(-1 * var(--fui-space-4, $fui-space-4));
196
- padding-left: var(--fui-space-4, $fui-space-4);
197
- padding-right: var(--fui-space-4, $fui-space-4);
198
- }
199
- }
200
-
201
- // ============================================
202
- // Accessibility: High Contrast Mode
203
- // ============================================
204
-
205
121
  @media (prefers-contrast: more) {
122
+ .row,
206
123
  .thead > tr {
207
- border-bottom-width: 2px;
208
- }
209
-
210
- .row {
211
- border-bottom-width: 2px;
124
+ border-block-end-color: CanvasText;
212
125
  }
213
126
  }
214
127
 
215
- // ============================================
216
- // Accessibility: Reduced Motion
217
- // ============================================
218
-
219
128
  @media (prefers-reduced-motion: reduce) {
220
129
  .row {
221
130
  transition: none;
@@ -1,6 +1,11 @@
1
1
  "use client";
2
2
 
3
3
  import * as React from "react";
4
+ import {
5
+ resolveTableDensity,
6
+ type LegacyTableSize,
7
+ type TableDensity,
8
+ } from "../../recipes/table-chrome";
4
9
  import styles from "./Table.module.scss";
5
10
 
6
11
  // ============================================
@@ -8,10 +13,10 @@ import styles from "./Table.module.scss";
8
13
  // ============================================
9
14
 
10
15
  export interface TableProps extends React.HTMLAttributes<HTMLTableElement> {
11
- /** Size variant. `compact` gives dense 36px-row dashboard lists with 12px
12
- * text and hairline dividers — use when the table is a status surface,
13
- * not a reading experience. */
14
- size?: "sm" | "md" | "compact";
16
+ /** Canonical row density. */
17
+ density?: TableDensity;
18
+ /** @deprecated Use density. Retained until the next major-version review. */
19
+ size?: LegacyTableSize;
15
20
  /** Show alternating row backgrounds */
16
21
  striped?: boolean;
17
22
  /** Wrap table in a bordered container */
@@ -158,6 +163,7 @@ function TableCaption({
158
163
 
159
164
  function TableRoot({
160
165
  size = "md",
166
+ density,
161
167
  striped = false,
162
168
  bordered = false,
163
169
  wrapperClassName,
@@ -166,7 +172,8 @@ function TableRoot({
166
172
  children,
167
173
  ...htmlProps
168
174
  }: TableProps) {
169
- const tableClasses = [styles.table, styles[size], striped && styles.striped, className]
175
+ const resolvedDensity = resolveTableDensity({ density, size });
176
+ const tableClasses = [styles.table, striped && styles.striped, className]
170
177
  .filter(Boolean)
171
178
  .join(" ");
172
179
 
@@ -182,7 +189,7 @@ function TableRoot({
182
189
  .filter(Boolean)
183
190
  .join(" ")}
184
191
  >
185
- <table className={tableClasses} {...htmlProps}>
192
+ <table className={tableClasses} {...htmlProps} data-density={resolvedDensity}>
186
193
  {children}
187
194
  </table>
188
195
  </div>
@@ -1,37 +1,11 @@
1
1
  @use "../../tokens/variables" as *;
2
2
  @use "../../tokens/mixins" as *;
3
-
4
- // ============================================
5
- // Dormant single-rail geometry
6
- // ============================================
7
- //
8
- // The public default is the quiet, flush index disabled below. These values
9
- // retain the existing optional rail geometry without making its inset part of
10
- // the default list contract.
11
-
12
- $rail-x-0: 7px;
13
- $rail-indent: 14px;
14
- $rail-x-1: 21px; // = $rail-x-0 + $rail-indent
15
- $rail-pad: 18px; // optional rail inset; never default <ul> padding
16
- $rail-curve: 14px;
17
- $rail-thickness: 1px;
18
- $rail-active-thickness: 1px;
19
-
20
- $rail-from-item-0: $rail-x-0 - $rail-pad; // -11px
21
- $rail-from-item-1: $rail-x-1 - $rail-pad; // 3px
3
+ @use "../../recipes/navigation" as navigation;
4
+ @use "../../recipes/typography" as typography;
22
5
 
23
6
  .root {
24
- // Solid rail color that adapts to light/dark and tracks the page background.
25
- // 18% mix gives clearly-visible contrast against bg-primary at 1px width
26
- // (subtler --fui-bg-tertiary blends into the bg at this thickness).
27
- --toc-rail: color-mix(
28
- in srgb,
29
- var(--fui-bg-primary, #{$fui-bg-primary}),
30
- var(--fui-text-primary, #{$fui-text-primary}) 18%
31
- );
32
- font-family: var(--fui-font-sans, $fui-font-sans);
33
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
34
- line-height: var(--fui-line-height-normal, $fui-line-height-normal);
7
+ @include navigation.properties;
8
+ @include typography.role("body-compact");
35
9
  color: var(--fui-text-secondary, $fui-text-secondary);
36
10
  }
37
11
 
@@ -40,9 +14,7 @@ $rail-from-item-1: $rail-x-1 - $rail-pad; // 3px
40
14
  padding: 0 var(--fui-space-2, $fui-space-2);
41
15
  }
42
16
 
43
- // Plain index (the design-system default, see below) draws no rail, so the
44
- // list is flush — its links/group headers share the same inline inset as
45
- // .title. A future rail variant must reinstate its own $rail-pad inset.
17
+ // The quiet index is flush; links and group headers share the title inset.
46
18
  .list {
47
19
  list-style: none;
48
20
  margin: 0;
@@ -50,149 +22,26 @@ $rail-from-item-1: $rail-x-1 - $rail-pad; // 3px
50
22
  position: relative;
51
23
  display: flex;
52
24
  flex-direction: column;
53
- gap: 1px;
25
+ gap: var(--fui-stroke-hairline, 1px);
54
26
  }
55
27
 
56
28
  // ============================================
57
- // Per-row rail
29
+ // Item link
58
30
  // ============================================
59
31
 
60
32
  .item,
61
33
  .groupHeaderRow {
62
34
  position: relative;
63
35
  list-style: none;
64
-
65
- // Fade rail + elbows when [data-active] moves between items so the accent
66
- // colour hands off smoothly rather than snapping as the user scrolls.
67
- &::before,
68
- &::after {
69
- transition:
70
- background-color var(--fui-transition-normal, $fui-transition-normal),
71
- border-color var(--fui-transition-normal, $fui-transition-normal);
72
- }
73
- }
74
-
75
- [data-depth="0"]::before {
76
- content: "";
77
- position: absolute;
78
- left: $rail-from-item-0;
79
- top: 0;
80
- // Extend 1px past the bottom so the rail spans the 1px list gap between
81
- // adjacent items, preserving a continuous rail under `gap: 1px` on .list.
82
- bottom: -1px;
83
- width: $rail-thickness;
84
- background-color: var(--toc-rail);
85
- pointer-events: none;
86
- }
87
-
88
- [data-depth="1"]::before {
89
- content: "";
90
- position: absolute;
91
- left: $rail-from-item-1;
92
- top: 0;
93
- bottom: -1px;
94
- width: $rail-thickness;
95
- background-color: var(--toc-rail);
96
- pointer-events: none;
97
- }
98
-
99
- // First depth-1 after a depth-0: shorten rail at top so opening curve has
100
- // a clean run-in.
101
- [data-depth="0"] + [data-depth="1"]::before {
102
- top: $rail-curve;
103
- }
104
-
105
- // Last depth-1 before a depth-0: shorten rail at bottom so closing curve
106
- // has a clean run-out.
107
- [data-depth="1"]:has(+ [data-depth="0"])::before {
108
- bottom: $rail-curve;
109
- }
110
-
111
- // ============================================
112
- // Opening elbow (depth-0 → depth-1)
113
- // ============================================
114
-
115
- [data-depth="0"] + [data-depth="1"]::after {
116
- content: "";
117
- position: absolute;
118
- left: $rail-from-item-0;
119
- top: 0;
120
- width: $rail-curve;
121
- height: $rail-curve;
122
- border-left: $rail-thickness solid var(--toc-rail);
123
- border-bottom: $rail-thickness solid var(--toc-rail);
124
- pointer-events: none;
125
- }
126
-
127
- // ============================================
128
- // Closing elbow (depth-1 → depth-0)
129
- // ============================================
130
-
131
- [data-depth="1"] + [data-depth="0"]::after {
132
- content: "";
133
- position: absolute;
134
- left: $rail-from-item-0;
135
- // Start 1px higher to bridge the `gap: 1px` between depth-1 and depth-0 so
136
- // the elbow's vertical stem meets the depth-1 rail end without a break.
137
- top: calc(-#{$rail-curve} - 1px);
138
- width: $rail-curve;
139
- height: calc(#{$rail-curve} + 1px);
140
- border-right: $rail-thickness solid var(--toc-rail);
141
- border-bottom: $rail-thickness solid var(--toc-rail);
142
- pointer-events: none;
143
- }
144
-
145
- // ============================================
146
- // Active state — paint rail + adjacent curves in accent
147
- // ============================================
148
-
149
- [data-active]::before {
150
- background-color: var(--fui-color-accent, $fui-color-accent);
151
- width: $rail-active-thickness;
152
- }
153
-
154
- [data-depth="0"]:has(+ [data-depth="1"][data-active])::before {
155
- background-color: var(--fui-color-accent, $fui-color-accent);
156
- width: $rail-active-thickness;
157
- }
158
-
159
- [data-depth="0"] + [data-depth="1"][data-active]::after {
160
- border-left-color: var(--fui-color-accent, $fui-color-accent);
161
- border-bottom-color: var(--fui-color-accent, $fui-color-accent);
162
- border-left-width: $rail-active-thickness;
163
- border-bottom-width: $rail-active-thickness;
164
- }
165
-
166
- [data-depth="1"][data-active] + [data-depth="0"]::after {
167
- border-right-color: var(--fui-color-accent, $fui-color-accent);
168
- border-bottom-color: var(--fui-color-accent, $fui-color-accent);
169
- border-right-width: $rail-active-thickness;
170
- border-bottom-width: $rail-active-thickness;
171
- }
172
-
173
- // ============================================
174
- // Item link
175
- // ============================================
176
-
177
- // ── Plain index (design-system default) ──────────────────────────────────────
178
- // The "on this page" index reads as a quiet list — the active row is signalled
179
- // by ink + medium weight (see .active), not a coloured rail. Drop the per-row
180
- // rail and elbow pseudo-elements the snake geometry above would otherwise draw.
181
- .root [data-depth]::before,
182
- .root [data-depth]::after {
183
- content: none;
184
36
  }
185
37
 
186
38
  .link {
39
+ @include navigation.row;
40
+
187
41
  display: flex;
188
42
  align-items: center;
189
- gap: var(--fui-space-2, $fui-space-2);
190
- padding: 0 var(--fui-space-2, $fui-space-2);
191
- min-height: var(--fui-sidebar-item-height, $fui-sidebar-item-height);
192
43
  border-radius: var(--fui-radius-md, $fui-radius-md);
193
44
  color: var(--fui-text-secondary, $fui-text-secondary);
194
- line-height: var(--fui-line-height-normal, $fui-line-height-normal);
195
- letter-spacing: var(--fui-letter-spacing-tight, $fui-letter-spacing-tight);
196
45
  text-decoration: none;
197
46
  transition:
198
47
  background-color var(--fui-transition-fast, $fui-transition-fast),
@@ -212,7 +61,7 @@ $rail-from-item-1: $rail-x-1 - $rail-pad; // 3px
212
61
  // flush with the title and group headers.
213
62
  [data-depth="1"] .link {
214
63
  margin-left: var(--fui-space-2, $fui-space-2);
215
- padding-left: $rail-indent;
64
+ padding-inline-start: var(--fui-raw-space-16, 16px);
216
65
  }
217
66
 
218
67
  .linkLabel {
@@ -230,9 +79,14 @@ $rail-from-item-1: $rail-x-1 - $rail-pad; // 3px
230
79
  flex-shrink: 0;
231
80
  }
232
81
 
82
+ .leading {
83
+ @include navigation.leading;
84
+ }
85
+
233
86
  .trailing {
87
+ @include typography.role("caption");
88
+
234
89
  color: var(--fui-text-tertiary, $fui-text-tertiary);
235
- font-size: var(--fui-font-size-2xs, $fui-font-size-2xs);
236
90
  font-variant-numeric: tabular-nums;
237
91
  }
238
92
 
@@ -246,17 +100,13 @@ $rail-from-item-1: $rail-x-1 - $rail-pad; // 3px
246
100
  // ============================================
247
101
 
248
102
  .groupHeader {
103
+ @include navigation.section-row;
104
+
249
105
  display: flex;
250
106
  align-items: center;
251
- gap: var(--fui-space-1, $fui-space-1);
252
107
  width: 100%;
253
- padding: 0 var(--fui-space-2, $fui-space-2);
254
- min-height: 32px;
255
108
  border-radius: var(--fui-radius-md, $fui-radius-md);
256
109
  color: var(--fui-text-tertiary, $fui-text-tertiary);
257
- font-size: var(--fui-font-size-2xs, $fui-font-size-2xs);
258
- font-weight: var(--fui-font-weight-semibold, $fui-font-weight-semibold);
259
- letter-spacing: var(--fui-letter-spacing-wide, $fui-letter-spacing-wide);
260
110
  text-transform: uppercase;
261
111
  background: transparent;
262
112
  border: 0;
@@ -296,8 +146,8 @@ $rail-from-item-1: $rail-x-1 - $rail-pad; // 3px
296
146
  transition: transform var(--fui-transition-fast, $fui-transition-fast);
297
147
 
298
148
  svg {
299
- width: 10px;
300
- height: 10px;
149
+ width: var(--fui-raw-space-10, 10px);
150
+ height: var(--fui-raw-space-10, 10px);
301
151
  }
302
152
 
303
153
  &[data-open] {
@@ -320,11 +170,4 @@ $rail-from-item-1: $rail-x-1 - $rail-pad; // 3px
320
170
  transition: none;
321
171
  }
322
172
 
323
- .item,
324
- .groupHeaderRow {
325
- &::before,
326
- &::after {
327
- transition: none;
328
- }
329
- }
330
173
  }
@@ -1,5 +1,7 @@
1
1
  @use "../../tokens/variables" as *;
2
2
  @use "../../tokens/mixins" as *;
3
+ @use "../../recipes/layout";
4
+ @use "../../recipes/segmented";
3
5
 
4
6
  // Root container
5
7
  .root {
@@ -17,16 +19,17 @@
17
19
  position: relative;
18
20
  display: flex;
19
21
  align-items: center;
20
- gap: var(--fui-space-1, $fui-space-1);
21
- border-bottom: 1px solid var(--fui-border, $fui-border);
22
- padding: 0 var(--fui-space-1, $fui-space-1);
22
+ gap: layout.gap("xs");
23
+ border-bottom: var(--fui-stroke-hairline, 1px) solid var(--fui-border, $fui-border);
24
+ padding-inline: layout.gap("xs");
23
25
 
24
26
  &[data-orientation="vertical"] {
25
27
  flex-direction: column;
26
28
  align-items: stretch;
27
29
  border-bottom: none;
28
- border-right: 1px solid var(--fui-border, $fui-border);
29
- padding: var(--fui-space-1, $fui-space-1) 0;
30
+ border-right: var(--fui-stroke-hairline, 1px) solid var(--fui-border, $fui-border);
31
+ padding-block: layout.gap("xs");
32
+ padding-inline: 0;
30
33
  }
31
34
  }
32
35
 
@@ -60,12 +63,6 @@
60
63
  @include interactive-base;
61
64
 
62
65
  position: relative;
63
- display: inline-flex;
64
- align-items: center;
65
- justify-content: center;
66
- gap: var(--fui-space-2, $fui-space-2);
67
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
68
- font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
69
66
  color: var(--fui-text-secondary, $fui-text-secondary);
70
67
  white-space: nowrap;
71
68
  border-radius: var(--fui-radius-sm, $fui-radius-sm);
@@ -85,25 +82,32 @@
85
82
  }
86
83
 
87
84
  .tabSm {
88
- min-height: var(--fui-button-height-sm, $fui-button-height-sm);
89
- padding: 0 var(--fui-space-2, $fui-space-2);
85
+ @include segmented.item("sm");
86
+
87
+ svg {
88
+ @include segmented.glyph("sm");
89
+ }
90
90
  }
91
91
 
92
92
  .tabMd {
93
- min-height: var(--fui-button-height-md, $fui-button-height-md);
94
- padding: 0 var(--fui-space-3, $fui-space-3);
93
+ @include segmented.item("md");
94
+
95
+ svg {
96
+ @include segmented.glyph("md");
97
+ }
95
98
  }
96
99
 
97
100
  .tabLg {
98
- min-height: var(--fui-button-height-lg, $fui-button-height-lg);
99
- padding: 0 var(--fui-space-4, $fui-space-4);
100
- font-size: var(--fui-font-size-base, $fui-font-size-base);
101
+ @include segmented.item("lg");
102
+
103
+ svg {
104
+ @include segmented.glyph("lg");
105
+ }
101
106
  }
102
107
 
103
108
  // Tab in underline variant
104
109
  .tabUnderline {
105
110
  border-radius: 0;
106
- margin-bottom: -1px;
107
111
 
108
112
  &:hover:not([data-disabled]) {
109
113
  background-color: transparent;
@@ -135,7 +139,7 @@
135
139
  position: absolute;
136
140
  bottom: 0;
137
141
  left: 0;
138
- height: 2px;
142
+ height: var(--fui-stroke-default, 2px);
139
143
  background-color: var(--fui-color-accent, $fui-color-accent);
140
144
  border-radius: var(--fui-radius-full, $fui-radius-full);
141
145
 
@@ -151,7 +155,7 @@
151
155
  left: auto;
152
156
  right: 0;
153
157
  top: 0;
154
- width: 2px;
158
+ width: var(--fui-stroke-default, 2px);
155
159
  height: var(--active-tab-height);
156
160
  transform: translateY(var(--active-tab-top));
157
161
  }
@@ -159,7 +163,8 @@
159
163
 
160
164
  // Tab panel content
161
165
  .panel {
162
- padding: var(--fui-space-2, $fui-space-2) 0;
166
+ padding-block: layout.gap("sm");
167
+ padding-inline: 0;
163
168
  outline: none;
164
169
 
165
170
  &[data-hidden] {