@usefragments/ui 1.6.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (685) hide show
  1. package/README.md +54 -66
  2. package/dist/assets/fragments-wordmark.cjs +2 -2
  3. package/dist/assets/fragments-wordmark.d.ts.map +1 -1
  4. package/dist/assets/fragments-wordmark.js +2 -2
  5. package/dist/assets/nav-glyph.cjs +139 -0
  6. package/dist/assets/nav-glyph.d.ts +28 -0
  7. package/dist/assets/nav-glyph.d.ts.map +1 -0
  8. package/dist/assets/nav-glyph.js +139 -0
  9. package/dist/assets/nav-glyph.module.scss.cjs +71 -0
  10. package/dist/assets/nav-glyph.module.scss.js +71 -0
  11. package/dist/assets/ui.css +6885 -6308
  12. package/dist/blocks/components/StatsCard.d.ts +1 -1
  13. package/dist/blocks/components/StatsCard.d.ts.map +1 -1
  14. package/dist/chart.cjs +24 -6
  15. package/dist/chart.js +24 -6
  16. package/dist/codeblock.cjs +76 -43
  17. package/dist/codeblock.js +71 -38
  18. package/dist/colorpicker.cjs +4 -1
  19. package/dist/colorpicker.js +4 -1
  20. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  21. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  22. package/dist/components/Alert/Alert.module.scss.cjs +23 -20
  23. package/dist/components/Alert/Alert.module.scss.js +23 -20
  24. package/dist/components/Alert/index.cjs +20 -8
  25. package/dist/components/Alert/index.d.ts +17 -11
  26. package/dist/components/Alert/index.d.ts.map +1 -1
  27. package/dist/components/Alert/index.js +20 -8
  28. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  29. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  30. package/dist/components/AppShell/index.cjs +2 -2
  31. package/dist/components/AppShell/index.js +2 -2
  32. package/dist/components/Avatar/Avatar.module.scss.cjs +14 -14
  33. package/dist/components/Avatar/Avatar.module.scss.js +14 -14
  34. package/dist/components/Badge/Badge.module.scss.cjs +33 -31
  35. package/dist/components/Badge/Badge.module.scss.js +33 -31
  36. package/dist/components/Badge/index.cjs +13 -3
  37. package/dist/components/Badge/index.d.ts +18 -13
  38. package/dist/components/Badge/index.d.ts.map +1 -1
  39. package/dist/components/Badge/index.js +13 -3
  40. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  41. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  42. package/dist/components/Box/Box.module.scss.cjs +152 -152
  43. package/dist/components/Box/Box.module.scss.js +152 -152
  44. package/dist/components/Box/index.cjs +64 -75
  45. package/dist/components/Box/index.d.ts +16 -16
  46. package/dist/components/Box/index.d.ts.map +1 -1
  47. package/dist/components/Box/index.js +64 -75
  48. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +11 -8
  49. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +11 -8
  50. package/dist/components/Breadcrumbs/index.cjs +1 -1
  51. package/dist/components/Breadcrumbs/index.d.ts.map +1 -1
  52. package/dist/components/Breadcrumbs/index.js +1 -1
  53. package/dist/components/Button/Button.module.scss.cjs +36 -27
  54. package/dist/components/Button/Button.module.scss.js +36 -27
  55. package/dist/components/Button/index.cjs +20 -4
  56. package/dist/components/Button/index.d.ts +18 -10
  57. package/dist/components/Button/index.d.ts.map +1 -1
  58. package/dist/components/Button/index.js +20 -4
  59. package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
  60. package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
  61. package/dist/components/Card/Card.module.scss.cjs +31 -26
  62. package/dist/components/Card/Card.module.scss.js +32 -27
  63. package/dist/components/Card/index.cjs +16 -3
  64. package/dist/components/Card/index.d.ts +23 -15
  65. package/dist/components/Card/index.d.ts.map +1 -1
  66. package/dist/components/Card/index.js +16 -3
  67. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  68. package/dist/components/Chart/Chart.module.scss.js +15 -15
  69. package/dist/components/Chart/index.d.ts.map +1 -1
  70. package/dist/components/Checkbox/Checkbox.module.scss.cjs +11 -11
  71. package/dist/components/Checkbox/Checkbox.module.scss.js +11 -11
  72. package/dist/components/Checkbox/index.cjs +4 -4
  73. package/dist/components/Checkbox/index.d.ts +4 -6
  74. package/dist/components/Checkbox/index.d.ts.map +1 -1
  75. package/dist/components/Checkbox/index.js +4 -4
  76. package/dist/components/Chip/Chip.module.scss.cjs +19 -19
  77. package/dist/components/Chip/Chip.module.scss.js +19 -19
  78. package/dist/components/Chip/index.cjs +3 -3
  79. package/dist/components/Chip/index.d.ts +8 -3
  80. package/dist/components/Chip/index.d.ts.map +1 -1
  81. package/dist/components/Chip/index.js +3 -3
  82. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +26 -23
  83. package/dist/components/CodeBlock/CodeBlock.module.scss.js +26 -23
  84. package/dist/components/CodeBlock/css-variables-theme.cjs +98 -0
  85. package/dist/components/CodeBlock/css-variables-theme.d.ts +27 -0
  86. package/dist/components/CodeBlock/css-variables-theme.d.ts.map +1 -0
  87. package/dist/components/CodeBlock/css-variables-theme.js +98 -0
  88. package/dist/components/CodeBlock/index.d.ts +20 -5
  89. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  90. package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -9
  91. package/dist/components/Collapsible/Collapsible.module.scss.js +9 -9
  92. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +14 -14
  93. package/dist/components/ColorPicker/ColorPicker.module.scss.js +14 -14
  94. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  95. package/dist/components/Combobox/Combobox.module.scss.cjs +21 -21
  96. package/dist/components/Combobox/Combobox.module.scss.js +21 -21
  97. package/dist/components/Combobox/index.cjs +26 -6
  98. package/dist/components/Combobox/index.d.ts.map +1 -1
  99. package/dist/components/Combobox/index.js +26 -6
  100. package/dist/components/Command/Command.module.scss.cjs +14 -11
  101. package/dist/components/Command/Command.module.scss.js +14 -11
  102. package/dist/components/Command/index.cjs +28 -16
  103. package/dist/components/Command/index.d.ts +8 -3
  104. package/dist/components/Command/index.d.ts.map +1 -1
  105. package/dist/components/Command/index.js +28 -16
  106. package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
  107. package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
  108. package/dist/components/ConversationList/index.cjs +2 -2
  109. package/dist/components/ConversationList/index.js +2 -2
  110. package/dist/components/DataTable/DataTable.icons.cjs +6 -33
  111. package/dist/components/DataTable/DataTable.icons.d.ts.map +1 -1
  112. package/dist/components/DataTable/DataTable.icons.js +6 -33
  113. package/dist/components/DataTable/DataTable.module.scss.cjs +31 -28
  114. package/dist/components/DataTable/DataTable.module.scss.js +31 -28
  115. package/dist/components/DataTable/DataTable.virtual.d.ts.map +1 -1
  116. package/dist/components/DataTable/index.d.ts.map +1 -1
  117. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  118. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  119. package/dist/components/DatePicker/index.d.ts.map +1 -1
  120. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  121. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  122. package/dist/components/Dialog/index.cjs +13 -16
  123. package/dist/components/Dialog/index.d.ts +11 -10
  124. package/dist/components/Dialog/index.d.ts.map +1 -1
  125. package/dist/components/Dialog/index.js +13 -16
  126. package/dist/components/Drawer/Drawer.module.scss.cjs +39 -39
  127. package/dist/components/Drawer/Drawer.module.scss.js +40 -40
  128. package/dist/components/Drawer/index.cjs +2 -2
  129. package/dist/components/Drawer/index.d.ts +5 -4
  130. package/dist/components/Drawer/index.d.ts.map +1 -1
  131. package/dist/components/Drawer/index.js +2 -2
  132. package/dist/components/Editor/Editor.module.scss.cjs +17 -17
  133. package/dist/components/Editor/Editor.module.scss.js +17 -17
  134. package/dist/components/Editor/index.d.ts +10 -10
  135. package/dist/components/Editor/index.d.ts.map +1 -1
  136. package/dist/components/EmptyState/EmptyState.module.scss.cjs +11 -8
  137. package/dist/components/EmptyState/EmptyState.module.scss.js +11 -8
  138. package/dist/components/EmptyState/index.cjs +13 -6
  139. package/dist/components/EmptyState/index.d.ts +13 -5
  140. package/dist/components/EmptyState/index.d.ts.map +1 -1
  141. package/dist/components/EmptyState/index.js +13 -6
  142. package/dist/components/Field/Field.module.scss.cjs +5 -5
  143. package/dist/components/Field/Field.module.scss.js +5 -5
  144. package/dist/components/Field/index.cjs +9 -1
  145. package/dist/components/Field/index.d.ts.map +1 -1
  146. package/dist/components/Field/index.js +9 -1
  147. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  148. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  149. package/dist/components/Grid/Grid.module.scss.cjs +54 -54
  150. package/dist/components/Grid/Grid.module.scss.js +54 -54
  151. package/dist/components/Grid/index.cjs +1 -1
  152. package/dist/components/Grid/index.js +1 -1
  153. package/dist/components/Header/Header.module.scss.cjs +33 -33
  154. package/dist/components/Header/Header.module.scss.js +33 -33
  155. package/dist/components/Header/index.cjs +17 -38
  156. package/dist/components/Header/index.d.ts +15 -11
  157. package/dist/components/Header/index.d.ts.map +1 -1
  158. package/dist/components/Header/index.js +17 -38
  159. package/dist/components/Icon/Icon.module.scss.cjs +30 -33
  160. package/dist/components/Icon/Icon.module.scss.js +30 -33
  161. package/dist/components/Icon/index.cjs +15 -14
  162. package/dist/components/Icon/index.d.ts +23 -12
  163. package/dist/components/Icon/index.d.ts.map +1 -1
  164. package/dist/components/Icon/index.js +15 -14
  165. package/dist/components/IconButton/IconButton.module.scss.cjs +12 -12
  166. package/dist/components/IconButton/IconButton.module.scss.js +12 -12
  167. package/dist/components/IconButton/index.cjs +2 -1
  168. package/dist/components/IconButton/index.d.ts +4 -4
  169. package/dist/components/IconButton/index.d.ts.map +1 -1
  170. package/dist/components/IconButton/index.js +2 -1
  171. package/dist/components/Image/Image.module.scss.cjs +27 -27
  172. package/dist/components/Image/Image.module.scss.js +27 -27
  173. package/dist/components/Input/Input.module.scss.cjs +15 -21
  174. package/dist/components/Input/Input.module.scss.js +15 -21
  175. package/dist/components/Input/index.cjs +2 -14
  176. package/dist/components/Input/index.d.ts +0 -2
  177. package/dist/components/Input/index.d.ts.map +1 -1
  178. package/dist/components/Input/index.js +2 -14
  179. package/dist/components/Link/Link.module.scss.cjs +26 -14
  180. package/dist/components/Link/Link.module.scss.js +26 -14
  181. package/dist/components/Link/index.cjs +13 -2
  182. package/dist/components/Link/index.d.ts +11 -4
  183. package/dist/components/Link/index.d.ts.map +1 -1
  184. package/dist/components/Link/index.js +13 -2
  185. package/dist/components/List/List.module.scss.cjs +23 -19
  186. package/dist/components/List/List.module.scss.js +23 -19
  187. package/dist/components/List/index.cjs +7 -7
  188. package/dist/components/List/index.d.ts +10 -7
  189. package/dist/components/List/index.d.ts.map +1 -1
  190. package/dist/components/List/index.js +7 -7
  191. package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
  192. package/dist/components/Listbox/Listbox.module.scss.js +8 -8
  193. package/dist/components/Loading/Loading.module.scss.cjs +34 -34
  194. package/dist/components/Loading/Loading.module.scss.js +34 -34
  195. package/dist/components/Loading/index.cjs +5 -5
  196. package/dist/components/Loading/index.d.ts +8 -7
  197. package/dist/components/Loading/index.d.ts.map +1 -1
  198. package/dist/components/Loading/index.js +5 -5
  199. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  200. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  201. package/dist/components/Markdown/index.d.ts +2 -2
  202. package/dist/components/Markdown/index.d.ts.map +1 -1
  203. package/dist/components/Menu/Menu.module.scss.cjs +14 -14
  204. package/dist/components/Menu/Menu.module.scss.js +14 -14
  205. package/dist/components/Message/Message.module.scss.cjs +20 -20
  206. package/dist/components/Message/Message.module.scss.js +20 -20
  207. package/dist/components/Message/index.cjs +1 -1
  208. package/dist/components/Message/index.d.ts +1 -1
  209. package/dist/components/Message/index.js +1 -1
  210. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +34 -31
  211. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +34 -31
  212. package/dist/components/NavigationMenu/index.cjs +32 -15
  213. package/dist/components/NavigationMenu/index.d.ts +12 -6
  214. package/dist/components/NavigationMenu/index.d.ts.map +1 -1
  215. package/dist/components/NavigationMenu/index.js +32 -15
  216. package/dist/components/Pagination/Pagination.module.scss.cjs +10 -10
  217. package/dist/components/Pagination/Pagination.module.scss.js +10 -10
  218. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  219. package/dist/components/Popover/Popover.module.scss.js +10 -10
  220. package/dist/components/Progress/Progress.module.scss.cjs +28 -25
  221. package/dist/components/Progress/Progress.module.scss.js +28 -25
  222. package/dist/components/Progress/index.cjs +21 -12
  223. package/dist/components/Progress/index.d.ts +10 -6
  224. package/dist/components/Progress/index.d.ts.map +1 -1
  225. package/dist/components/Progress/index.js +21 -12
  226. package/dist/components/Prompt/Prompt.module.scss.cjs +30 -30
  227. package/dist/components/Prompt/Prompt.module.scss.js +30 -30
  228. package/dist/components/Prompt/index.cjs +7 -7
  229. package/dist/components/Prompt/index.d.ts +11 -9
  230. package/dist/components/Prompt/index.d.ts.map +1 -1
  231. package/dist/components/Prompt/index.js +7 -7
  232. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +20 -17
  233. package/dist/components/RadioGroup/RadioGroup.module.scss.js +20 -17
  234. package/dist/components/RadioGroup/index.cjs +10 -5
  235. package/dist/components/RadioGroup/index.d.ts +11 -7
  236. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  237. package/dist/components/RadioGroup/index.js +10 -5
  238. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +5 -5
  239. package/dist/components/ScrollArea/ScrollArea.module.scss.js +5 -5
  240. package/dist/components/ScrollArea/index.d.ts +4 -4
  241. package/dist/components/ScrollArea/index.d.ts.map +1 -1
  242. package/dist/components/ScrollArea/scroll-state.d.ts +5 -5
  243. package/dist/components/Select/Select.module.scss.cjs +21 -21
  244. package/dist/components/Select/Select.module.scss.js +21 -21
  245. package/dist/components/Select/index.cjs +26 -20
  246. package/dist/components/Select/index.d.ts +5 -5
  247. package/dist/components/Select/index.d.ts.map +1 -1
  248. package/dist/components/Select/index.js +26 -20
  249. package/dist/components/Separator/Separator.module.scss.cjs +25 -19
  250. package/dist/components/Separator/Separator.module.scss.js +25 -19
  251. package/dist/components/Separator/index.cjs +10 -8
  252. package/dist/components/Separator/index.d.ts +4 -2
  253. package/dist/components/Separator/index.d.ts.map +1 -1
  254. package/dist/components/Separator/index.js +10 -8
  255. package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
  256. package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
  257. package/dist/components/Sidebar/index.cjs +15 -38
  258. package/dist/components/Sidebar/index.d.ts +19 -19
  259. package/dist/components/Sidebar/index.d.ts.map +1 -1
  260. package/dist/components/Sidebar/index.js +15 -38
  261. package/dist/components/Skeleton/Skeleton.module.scss.cjs +50 -46
  262. package/dist/components/Skeleton/Skeleton.module.scss.js +50 -46
  263. package/dist/components/Skeleton/index.cjs +7 -7
  264. package/dist/components/Skeleton/index.d.ts +8 -7
  265. package/dist/components/Skeleton/index.d.ts.map +1 -1
  266. package/dist/components/Skeleton/index.js +7 -7
  267. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  268. package/dist/components/Slider/Slider.module.scss.js +12 -12
  269. package/dist/components/Stack/Stack.module.scss.cjs +25 -25
  270. package/dist/components/Stack/Stack.module.scss.js +25 -25
  271. package/dist/components/Stack/index.cjs +1 -1
  272. package/dist/components/Stack/index.js +1 -1
  273. package/dist/components/Switch/Switch.module.scss.cjs +9 -9
  274. package/dist/components/Switch/Switch.module.scss.js +9 -9
  275. package/dist/components/Table/Table.module.scss.cjs +19 -19
  276. package/dist/components/Table/Table.module.scss.js +19 -19
  277. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  278. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  279. package/dist/components/TableOfContents/index.cjs +14 -10
  280. package/dist/components/TableOfContents/index.d.ts +5 -3
  281. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  282. package/dist/components/TableOfContents/index.js +14 -10
  283. package/dist/components/Tabs/Tabs.module.scss.cjs +18 -18
  284. package/dist/components/Tabs/Tabs.module.scss.js +18 -18
  285. package/dist/components/Tabs/index.cjs +30 -11
  286. package/dist/components/Tabs/index.d.ts +8 -6
  287. package/dist/components/Tabs/index.d.ts.map +1 -1
  288. package/dist/components/Tabs/index.js +30 -11
  289. package/dist/components/Text/Text.module.scss.cjs +109 -97
  290. package/dist/components/Text/Text.module.scss.js +109 -97
  291. package/dist/components/Text/index.cjs +45 -41
  292. package/dist/components/Text/index.d.ts +24 -19
  293. package/dist/components/Text/index.d.ts.map +1 -1
  294. package/dist/components/Text/index.js +45 -41
  295. package/dist/components/Textarea/Textarea.module.scss.cjs +22 -28
  296. package/dist/components/Textarea/Textarea.module.scss.js +22 -28
  297. package/dist/components/Textarea/index.cjs +3 -10
  298. package/dist/components/Textarea/index.d.ts +0 -2
  299. package/dist/components/Textarea/index.d.ts.map +1 -1
  300. package/dist/components/Textarea/index.js +3 -10
  301. package/dist/components/Theme/index.cjs +22 -5
  302. package/dist/components/Theme/index.d.ts +6 -12
  303. package/dist/components/Theme/index.d.ts.map +1 -1
  304. package/dist/components/Theme/index.js +22 -5
  305. package/dist/components/ThemeToggle/ThemeButton.cjs +51 -0
  306. package/dist/components/ThemeToggle/ThemeButton.d.ts +16 -0
  307. package/dist/components/ThemeToggle/ThemeButton.d.ts.map +1 -0
  308. package/dist/components/ThemeToggle/ThemeButton.js +34 -0
  309. package/dist/components/ThemeToggle/ThemeToggle.module.scss.cjs +6 -6
  310. package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +6 -6
  311. package/dist/components/ThemeToggle/icons.cjs +48 -0
  312. package/dist/components/ThemeToggle/icons.d.ts +10 -0
  313. package/dist/components/ThemeToggle/icons.d.ts.map +1 -0
  314. package/dist/components/ThemeToggle/icons.js +48 -0
  315. package/dist/components/ThemeToggle/index.cjs +6 -50
  316. package/dist/components/ThemeToggle/index.d.ts +5 -3
  317. package/dist/components/ThemeToggle/index.d.ts.map +1 -1
  318. package/dist/components/ThemeToggle/index.js +3 -47
  319. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +18 -15
  320. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +18 -15
  321. package/dist/components/ThinkingIndicator/index.cjs +7 -8
  322. package/dist/components/ThinkingIndicator/index.d.ts +6 -5
  323. package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
  324. package/dist/components/ThinkingIndicator/index.js +7 -8
  325. package/dist/components/Toast/Toast.module.scss.cjs +28 -29
  326. package/dist/components/Toast/Toast.module.scss.js +29 -30
  327. package/dist/components/Toast/index.cjs +28 -30
  328. package/dist/components/Toast/index.d.ts +9 -8
  329. package/dist/components/Toast/index.d.ts.map +1 -1
  330. package/dist/components/Toast/index.js +28 -30
  331. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +21 -19
  332. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +22 -20
  333. package/dist/components/ToggleGroup/index.cjs +4 -5
  334. package/dist/components/ToggleGroup/index.d.ts +7 -6
  335. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  336. package/dist/components/ToggleGroup/index.js +4 -5
  337. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  338. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  339. package/dist/components/Tooltip/index.cjs +24 -40
  340. package/dist/components/Tooltip/index.d.ts +4 -4
  341. package/dist/components/Tooltip/index.d.ts.map +1 -1
  342. package/dist/components/Tooltip/index.js +24 -40
  343. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +1 -1
  344. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
  345. package/dist/components/VisuallyHidden/index.d.ts +2 -2
  346. package/dist/data-table-virtual.cjs +3 -2
  347. package/dist/data-table-virtual.js +3 -2
  348. package/dist/data-table.cjs +3 -2
  349. package/dist/data-table.js +3 -2
  350. package/dist/datepicker.cjs +26 -13
  351. package/dist/datepicker.js +26 -13
  352. package/dist/editor.cjs +68 -28
  353. package/dist/editor.js +68 -28
  354. package/dist/index.cjs +6 -2
  355. package/dist/index.d.ts +9 -9
  356. package/dist/index.d.ts.map +1 -1
  357. package/dist/index.js +8 -4
  358. package/dist/markdown.cjs +21 -29
  359. package/dist/markdown.js +21 -29
  360. package/dist/measurements/generated.cjs +46 -94
  361. package/dist/measurements/generated.d.ts +44 -92
  362. package/dist/measurements/generated.d.ts.map +1 -1
  363. package/dist/measurements/generated.js +46 -94
  364. package/dist/measurements/index.d.ts +1 -1
  365. package/dist/measurements/index.d.ts.map +1 -1
  366. package/dist/utils/a11y.cjs +5 -2
  367. package/dist/utils/a11y.d.ts +5 -5
  368. package/dist/utils/a11y.d.ts.map +1 -1
  369. package/dist/utils/a11y.js +5 -2
  370. package/dist/utils/canonical-stamp.cjs +2 -8
  371. package/dist/utils/canonical-stamp.d.ts.map +1 -1
  372. package/dist/utils/canonical-stamp.js +1 -7
  373. package/dist/utils/css-warning.cjs +1 -1
  374. package/dist/utils/css-warning.js +1 -1
  375. package/dist/utils/env.cjs +17 -0
  376. package/dist/utils/env.d.ts +3 -0
  377. package/dist/utils/env.d.ts.map +1 -0
  378. package/dist/utils/env.js +17 -0
  379. package/dist/utils/keyboard-shortcuts.cjs +3 -10
  380. package/dist/utils/keyboard-shortcuts.d.ts +4 -4
  381. package/dist/utils/keyboard-shortcuts.d.ts.map +1 -1
  382. package/dist/utils/keyboard-shortcuts.js +3 -10
  383. package/dist/utils/seed-derivation.cjs +10 -7
  384. package/dist/utils/seed-derivation.d.ts +1 -3
  385. package/dist/utils/seed-derivation.d.ts.map +1 -1
  386. package/dist/utils/seed-derivation.js +10 -7
  387. package/dist/utils/theme-presets.cjs +5 -10
  388. package/dist/utils/theme-presets.d.ts +1 -2
  389. package/dist/utils/theme-presets.d.ts.map +1 -1
  390. package/dist/utils/theme-presets.js +5 -10
  391. package/fragments.json +1 -1
  392. package/package.json +9 -10
  393. package/src/assets/fragments-logo.tsx +2 -2
  394. package/src/assets/fragments-wordmark.tsx +4 -2
  395. package/src/assets/nav-glyph.module.scss +166 -0
  396. package/src/assets/nav-glyph.tsx +188 -0
  397. package/src/components/Accordion/Accordion.contract.json +24 -48
  398. package/src/components/Accordion/Accordion.module.scss +5 -3
  399. package/src/components/Alert/Alert.contract.json +49 -65
  400. package/src/components/Alert/Alert.module.scss +57 -47
  401. package/src/components/Alert/index.tsx +72 -39
  402. package/src/components/AppShell/AppShell.contract.json +34 -51
  403. package/src/components/AppShell/AppShell.module.scss +99 -54
  404. package/src/components/AppShell/index.tsx +2 -2
  405. package/src/components/Avatar/Avatar.contract.json +31 -48
  406. package/src/components/Avatar/Avatar.module.scss +4 -2
  407. package/src/components/Badge/Badge.contract.json +86 -55
  408. package/src/components/Badge/Badge.module.scss +80 -48
  409. package/src/components/Badge/index.tsx +34 -17
  410. package/src/components/BentoGrid/BentoGrid.contract.json +21 -45
  411. package/src/components/BentoGrid/BentoGrid.module.scss +4 -8
  412. package/src/components/Box/Box.contract.json +40 -148
  413. package/src/components/Box/Box.module.scss +7 -6
  414. package/src/components/Box/index.tsx +92 -99
  415. package/src/components/Breadcrumbs/Breadcrumbs.contract.json +21 -34
  416. package/src/components/Breadcrumbs/Breadcrumbs.module.scss +27 -12
  417. package/src/components/Breadcrumbs/index.tsx +5 -1
  418. package/src/components/Button/Button.module.scss +261 -185
  419. package/src/components/Button/index.tsx +41 -28
  420. package/src/components/ButtonGroup/ButtonGroup.contract.json +34 -49
  421. package/src/components/ButtonGroup/ButtonGroup.module.scss +8 -6
  422. package/src/components/Card/Card.consumer-fixture.module.scss +5 -2
  423. package/src/components/Card/Card.module.scss +97 -76
  424. package/src/components/Card/index.tsx +44 -20
  425. package/src/components/Chart/Chart.contract.json +21 -29
  426. package/src/components/Chart/Chart.module.scss +6 -5
  427. package/src/components/Chart/index.tsx +36 -6
  428. package/src/components/Checkbox/Checkbox.contract.json +28 -27
  429. package/src/components/Checkbox/Checkbox.module.scss +47 -54
  430. package/src/components/Checkbox/index.tsx +10 -10
  431. package/src/components/Chip/Chip.contract.json +38 -45
  432. package/src/components/Chip/Chip.module.scss +24 -23
  433. package/src/components/Chip/index.tsx +12 -7
  434. package/src/components/CodeBlock/CodeBlock.contract.json +46 -76
  435. package/src/components/CodeBlock/CodeBlock.module.scss +75 -73
  436. package/src/components/CodeBlock/css-variables-theme.ts +102 -0
  437. package/src/components/CodeBlock/index.tsx +114 -51
  438. package/src/components/Collapsible/Collapsible.contract.json +21 -36
  439. package/src/components/Collapsible/Collapsible.module.scss +1 -7
  440. package/src/components/ColorPicker/ColorPicker.contract.json +29 -48
  441. package/src/components/ColorPicker/ColorPicker.module.scss +34 -24
  442. package/src/components/ColorPicker/index.tsx +6 -1
  443. package/src/components/Combobox/Combobox.contract.json +36 -37
  444. package/src/components/Combobox/Combobox.module.scss +16 -19
  445. package/src/components/Combobox/index.tsx +41 -6
  446. package/src/components/Command/Command.contract.json +28 -44
  447. package/src/components/Command/Command.module.scss +19 -21
  448. package/src/components/Command/index.tsx +64 -47
  449. package/src/components/ComponentDefaults/ComponentDefaults.contract.json +91 -0
  450. package/src/components/ConversationList/ConversationList.contract.json +27 -32
  451. package/src/components/ConversationList/ConversationList.module.scss +2 -3
  452. package/src/components/ConversationList/index.tsx +2 -2
  453. package/src/components/DataTable/DataTable.icons.tsx +4 -21
  454. package/src/components/DataTable/DataTable.module.scss +24 -17
  455. package/src/components/DataTable/DataTable.virtual.tsx +3 -2
  456. package/src/components/DataTable/index.tsx +9 -8
  457. package/src/components/DatePicker/DatePicker.contract.json +27 -28
  458. package/src/components/DatePicker/DatePicker.module.scss +41 -44
  459. package/src/components/DatePicker/index.tsx +23 -9
  460. package/src/components/Dialog/Dialog.module.scss +26 -32
  461. package/src/components/Dialog/index.tsx +51 -39
  462. package/src/components/Drawer/Drawer.contract.json +28 -42
  463. package/src/components/Drawer/Drawer.module.scss +123 -64
  464. package/src/components/Drawer/index.tsx +7 -5
  465. package/src/components/Editor/Editor.contract.json +32 -49
  466. package/src/components/Editor/Editor.module.scss +60 -25
  467. package/src/components/Editor/index.tsx +240 -179
  468. package/src/components/EmptyState/EmptyState.contract.json +33 -45
  469. package/src/components/EmptyState/EmptyState.module.scss +37 -21
  470. package/src/components/EmptyState/index.tsx +56 -23
  471. package/src/components/Field/Field.contract.json +28 -46
  472. package/src/components/Field/Field.module.scss +2 -1
  473. package/src/components/Field/index.tsx +5 -1
  474. package/src/components/Fieldset/Fieldset.contract.json +21 -38
  475. package/src/components/Fieldset/Fieldset.module.scss +15 -7
  476. package/src/components/Form/Form.contract.json +23 -23
  477. package/src/components/Grid/Grid.contract.json +28 -64
  478. package/src/components/Grid/Grid.module.scss +2 -2
  479. package/src/components/Grid/index.tsx +10 -10
  480. package/src/components/Header/Header.contract.json +31 -67
  481. package/src/components/Header/Header.module.scss +57 -54
  482. package/src/components/Header/index.tsx +134 -122
  483. package/src/components/Icon/Icon.contract.json +37 -81
  484. package/src/components/Icon/Icon.module.scss +13 -12
  485. package/src/components/Icon/index.tsx +31 -31
  486. package/src/components/IconButton/IconButton.contract.json +37 -21
  487. package/src/components/IconButton/IconButton.module.scss +19 -11
  488. package/src/components/IconButton/index.tsx +6 -5
  489. package/src/components/Image/Image.contract.json +23 -56
  490. package/src/components/Input/Input.contract.json +25 -44
  491. package/src/components/Input/Input.module.scss +6 -55
  492. package/src/components/Input/index.tsx +2 -18
  493. package/src/components/Link/Link.contract.json +46 -58
  494. package/src/components/Link/Link.module.scss +41 -10
  495. package/src/components/Link/index.tsx +27 -6
  496. package/src/components/List/List.contract.json +33 -62
  497. package/src/components/List/List.module.scss +10 -5
  498. package/src/components/List/index.tsx +17 -13
  499. package/src/components/Listbox/Listbox.contract.json +21 -37
  500. package/src/components/Listbox/Listbox.module.scss +14 -20
  501. package/src/components/Loading/Loading.contract.json +41 -65
  502. package/src/components/Loading/Loading.module.scss +37 -31
  503. package/src/components/Loading/index.tsx +15 -14
  504. package/src/components/Main/Main.contract.json +17 -9
  505. package/src/components/Markdown/Markdown.contract.json +22 -43
  506. package/src/components/Markdown/Markdown.module.scss +45 -6
  507. package/src/components/Markdown/index.tsx +48 -49
  508. package/src/components/Menu/Menu.contract.json +30 -46
  509. package/src/components/Menu/Menu.module.scss +32 -16
  510. package/src/components/Message/Message.contract.json +31 -54
  511. package/src/components/Message/Message.module.scss +18 -9
  512. package/src/components/Message/index.tsx +2 -2
  513. package/src/components/NavigationMenu/NavigationMenu.contract.json +36 -45
  514. package/src/components/NavigationMenu/NavigationMenu.module.scss +66 -66
  515. package/src/components/NavigationMenu/index.tsx +105 -81
  516. package/src/components/Pagination/Pagination.contract.json +22 -40
  517. package/src/components/Pagination/Pagination.module.scss +9 -16
  518. package/src/components/Popover/Popover.contract.json +28 -50
  519. package/src/components/Popover/Popover.module.scss +30 -28
  520. package/src/components/Progress/Progress.contract.json +39 -35
  521. package/src/components/Progress/Progress.module.scss +16 -10
  522. package/src/components/Progress/index.tsx +34 -16
  523. package/src/components/Prompt/Prompt.contract.json +40 -56
  524. package/src/components/Prompt/Prompt.module.scss +49 -48
  525. package/src/components/Prompt/index.tsx +17 -15
  526. package/src/components/RadioGroup/RadioGroup.contract.json +29 -28
  527. package/src/components/RadioGroup/RadioGroup.module.scss +50 -45
  528. package/src/components/RadioGroup/index.tsx +23 -10
  529. package/src/components/ScrollArea/ScrollArea.contract.json +18 -19
  530. package/src/components/ScrollArea/ScrollArea.module.scss +45 -48
  531. package/src/components/ScrollArea/index.tsx +16 -16
  532. package/src/components/ScrollArea/scroll-state.ts +24 -24
  533. package/src/components/Select/Select.module.scss +20 -19
  534. package/src/components/Select/index.tsx +26 -24
  535. package/src/components/Separator/Separator.contract.json +29 -53
  536. package/src/components/Separator/Separator.module.scss +24 -40
  537. package/src/components/Separator/index.tsx +16 -11
  538. package/src/components/Sidebar/Sidebar.contract.json +35 -67
  539. package/src/components/Sidebar/Sidebar.module.scss +94 -88
  540. package/src/components/Sidebar/index.tsx +167 -167
  541. package/src/components/Skeleton/Skeleton.contract.json +34 -60
  542. package/src/components/Skeleton/Skeleton.module.scss +50 -26
  543. package/src/components/Skeleton/index.tsx +16 -15
  544. package/src/components/Slider/Slider.contract.json +27 -39
  545. package/src/components/Slider/Slider.module.scss +9 -22
  546. package/src/components/Stack/Stack.contract.json +30 -57
  547. package/src/components/Stack/Stack.module.scss +26 -24
  548. package/src/components/Stack/index.tsx +3 -3
  549. package/src/components/Switch/Switch.contract.json +33 -46
  550. package/src/components/Switch/Switch.module.scss +106 -59
  551. package/src/components/Table/Table.contract.json +28 -46
  552. package/src/components/Table/Table.module.scss +24 -16
  553. package/src/components/TableOfContents/TableOfContents.contract.json +34 -21
  554. package/src/components/TableOfContents/TableOfContents.module.scss +17 -13
  555. package/src/components/TableOfContents/index.tsx +27 -10
  556. package/src/components/Tabs/Tabs.contract.json +35 -56
  557. package/src/components/Tabs/Tabs.module.scss +27 -31
  558. package/src/components/Tabs/index.tsx +30 -15
  559. package/src/components/Text/Text.contract.json +52 -72
  560. package/src/components/Text/Text.module.scss +34 -18
  561. package/src/components/Text/index.tsx +123 -83
  562. package/src/components/Textarea/Textarea.contract.json +24 -55
  563. package/src/components/Textarea/Textarea.module.scss +22 -52
  564. package/src/components/Textarea/index.tsx +3 -14
  565. package/src/components/Theme/Theme.contract.json +35 -53
  566. package/src/components/Theme/index.tsx +41 -13
  567. package/src/components/ThemeToggle/ThemeButton.tsx +49 -0
  568. package/src/components/ThemeToggle/ThemeToggle.module.scss +20 -27
  569. package/src/components/ThemeToggle/icons.tsx +46 -0
  570. package/src/components/ThemeToggle/index.tsx +9 -55
  571. package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +34 -50
  572. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +9 -7
  573. package/src/components/ThinkingIndicator/index.tsx +12 -14
  574. package/src/components/Toast/Toast.contract.json +55 -49
  575. package/src/components/Toast/Toast.module.scss +50 -105
  576. package/src/components/Toast/index.tsx +39 -34
  577. package/src/components/ToggleGroup/ToggleGroup.contract.json +39 -40
  578. package/src/components/ToggleGroup/ToggleGroup.module.scss +30 -27
  579. package/src/components/ToggleGroup/index.tsx +11 -11
  580. package/src/components/Tooltip/Tooltip.contract.json +31 -52
  581. package/src/components/Tooltip/Tooltip.module.scss +16 -10
  582. package/src/components/Tooltip/index.tsx +19 -24
  583. package/src/components/VisuallyHidden/VisuallyHidden.contract.json +22 -44
  584. package/src/components/VisuallyHidden/VisuallyHidden.module.scss +4 -14
  585. package/src/components/VisuallyHidden/index.tsx +5 -5
  586. package/src/index.ts +16 -12
  587. package/src/measurements/MeasurementTargets.module.scss +6 -7
  588. package/src/measurements/generated.ts +46 -97
  589. package/src/measurements/index.ts +0 -1
  590. package/src/measurements/measurements.json +44 -116
  591. package/src/recipes/_action.scss +4 -4
  592. package/src/recipes/_boolean-range.scss +12 -16
  593. package/src/recipes/_feedback.scss +17 -16
  594. package/src/recipes/_field.scss +28 -16
  595. package/src/recipes/_layout.scss +14 -7
  596. package/src/recipes/_navigation.scss +84 -29
  597. package/src/recipes/_overlay.scss +143 -43
  598. package/src/recipes/_popup.scss +54 -34
  599. package/src/recipes/_prose.scss +48 -28
  600. package/src/recipes/_representation.scss +10 -9
  601. package/src/recipes/_segmented.scss +1 -1
  602. package/src/recipes/_table-chrome.scss +42 -17
  603. package/src/recipes/_target.scss +2 -4
  604. package/src/recipes/_typography.scss +10 -0
  605. package/src/scss.d.ts +1 -1
  606. package/src/styles/globals.scss +31 -25
  607. package/src/tokens/_component-properties.scss +19 -1
  608. package/src/tokens/_computed.scss +32 -49
  609. package/src/tokens/_derive.scss +112 -210
  610. package/src/tokens/_measurements.catalog.generated.css +62 -44
  611. package/src/tokens/_measurements.generated.scss +119 -249
  612. package/src/tokens/_mixins.scss +49 -48
  613. package/src/tokens/_palettes.scss +39 -167
  614. package/src/tokens/_property-registrations.scss +9 -0
  615. package/src/tokens/_seeds.scss +20 -31
  616. package/src/tokens/_variables.scss +251 -94
  617. package/src/utils/a11y.tsx +69 -69
  618. package/src/utils/aria.ts +3 -3
  619. package/src/utils/canonical-stamp.ts +2 -12
  620. package/src/utils/css-warning.ts +7 -7
  621. package/src/utils/env.ts +25 -0
  622. package/src/utils/keyboard-shortcuts.ts +131 -126
  623. package/src/utils/seed-derivation.ts +11 -14
  624. package/src/utils/theme-presets.ts +5 -12
  625. package/dist/blocks/AccountSettings.block.d.ts +0 -3
  626. package/dist/blocks/AccountSettings.block.d.ts.map +0 -1
  627. package/dist/blocks/ActivityFeedSkeleton.block.d.ts +0 -3
  628. package/dist/blocks/ActivityFeedSkeleton.block.d.ts.map +0 -1
  629. package/dist/blocks/BlogEditor.block.d.ts +0 -3
  630. package/dist/blocks/BlogEditor.block.d.ts.map +0 -1
  631. package/dist/blocks/ChatInterface.block.d.ts +0 -3
  632. package/dist/blocks/ChatInterface.block.d.ts.map +0 -1
  633. package/dist/blocks/ChatMessages.block.d.ts +0 -3
  634. package/dist/blocks/ChatMessages.block.d.ts.map +0 -1
  635. package/dist/blocks/CheckoutForm.block.d.ts +0 -3
  636. package/dist/blocks/CheckoutForm.block.d.ts.map +0 -1
  637. package/dist/blocks/CommandPalette.block.d.ts +0 -3
  638. package/dist/blocks/CommandPalette.block.d.ts.map +0 -1
  639. package/dist/blocks/ContactForm.block.d.ts +0 -3
  640. package/dist/blocks/ContactForm.block.d.ts.map +0 -1
  641. package/dist/blocks/DashboardPage.block.d.ts +0 -3
  642. package/dist/blocks/DashboardPage.block.d.ts.map +0 -1
  643. package/dist/blocks/DashboardSkeleton.block.d.ts +0 -3
  644. package/dist/blocks/DashboardSkeleton.block.d.ts.map +0 -1
  645. package/dist/blocks/DataTable.block.d.ts +0 -3
  646. package/dist/blocks/DataTable.block.d.ts.map +0 -1
  647. package/dist/blocks/EmptyState.block.d.ts +0 -3
  648. package/dist/blocks/EmptyState.block.d.ts.map +0 -1
  649. package/dist/blocks/FAQSection.block.d.ts +0 -3
  650. package/dist/blocks/FAQSection.block.d.ts.map +0 -1
  651. package/dist/blocks/FeatureGrid.block.d.ts +0 -3
  652. package/dist/blocks/FeatureGrid.block.d.ts.map +0 -1
  653. package/dist/blocks/HeroSection.block.d.ts +0 -3
  654. package/dist/blocks/HeroSection.block.d.ts.map +0 -1
  655. package/dist/blocks/NavigationHeader.block.d.ts +0 -3
  656. package/dist/blocks/NavigationHeader.block.d.ts.map +0 -1
  657. package/dist/blocks/PaginatedTable.block.d.ts +0 -3
  658. package/dist/blocks/PaginatedTable.block.d.ts.map +0 -1
  659. package/dist/blocks/PricingComparison.block.d.ts +0 -3
  660. package/dist/blocks/PricingComparison.block.d.ts.map +0 -1
  661. package/dist/blocks/ProductCard.block.d.ts +0 -3
  662. package/dist/blocks/ProductCard.block.d.ts.map +0 -1
  663. package/dist/blocks/RegistrationForm.block.d.ts +0 -3
  664. package/dist/blocks/RegistrationForm.block.d.ts.map +0 -1
  665. package/dist/blocks/SettingsDrawer.block.d.ts +0 -3
  666. package/dist/blocks/SettingsDrawer.block.d.ts.map +0 -1
  667. package/dist/blocks/SettingsPanel.block.d.ts +0 -3
  668. package/dist/blocks/SettingsPanel.block.d.ts.map +0 -1
  669. package/dist/blocks/ShoppingCart.block.d.ts +0 -3
  670. package/dist/blocks/ShoppingCart.block.d.ts.map +0 -1
  671. package/dist/blocks/StatsCardSkeleton.block.d.ts +0 -3
  672. package/dist/blocks/StatsCardSkeleton.block.d.ts.map +0 -1
  673. package/dist/blocks/TableSkeleton.block.d.ts +0 -3
  674. package/dist/blocks/TableSkeleton.block.d.ts.map +0 -1
  675. package/dist/blocks/ThinkingStates.block.d.ts +0 -3
  676. package/dist/blocks/ThinkingStates.block.d.ts.map +0 -1
  677. package/dist/components/Toggle/index.d.ts +0 -3
  678. package/dist/components/Toggle/index.d.ts.map +0 -1
  679. package/src/components/Button/Button.contract.json +0 -218
  680. package/src/components/Card/Card.contract.json +0 -175
  681. package/src/components/DataTable/DataTable.contract.json +0 -302
  682. package/src/components/Dialog/Dialog.contract.json +0 -159
  683. package/src/components/Select/Select.contract.json +0 -259
  684. package/src/components/Toggle/index.ts +0 -7
  685. package/src/tokens/_density.scss +0 -85
@@ -14,7 +14,6 @@
14
14
  // @use '@usefragments/ui/styles' with (
15
15
  // $fui-brand: #0066ff,
16
16
  // $fui-neutral: "ice",
17
- // $fui-density: "compact"
18
17
  // );
19
18
  //
20
19
  // 2. CSS CUSTOM PROPERTIES (Runtime theming):
@@ -40,15 +39,18 @@ $fui-base-unit: computed.$computed-base-unit !default;
40
39
  // Helper function to convert base units to rem
41
40
  // Usage: fui-unit(2) = 2 * 7px = 14px = 1rem (when base is 14px)
42
41
  @function fui-unit($multiplier) {
43
- @return calc(#{$multiplier} * #{$fui-base-unit} / #{$fui-base-font-size} * 1rem);
42
+ @return calc(
43
+ #{$multiplier} * #{$fui-base-unit} / #{$fui-base-font-size} * 1rem *
44
+ var(--fui-scale, #{$fui-scale})
45
+ );
44
46
  }
45
47
 
46
48
  // --------------------------------------------
47
49
  // Typography
48
50
  // --------------------------------------------
49
51
  $fui-font-sans:
50
- "Inter Variable",
51
- Inter,
52
+ "Onest Variable",
53
+ Onest,
52
54
  -apple-system,
53
55
  BlinkMacSystemFont,
54
56
  "Segoe UI",
@@ -147,7 +149,7 @@ $fui-letter-spacing-wide: map.get(
147
149
  ) !default;
148
150
 
149
151
  // --------------------------------------------
150
- // Spacing (derived from density seed)
152
+ // Spacing (derived from the measurement spacing record)
151
153
  // --------------------------------------------
152
154
  // Micro-spacing for small internal alignments (margins, thumb offsets)
153
155
  $fui-space-px: computed.$computed-space-px !default;
@@ -187,6 +189,40 @@ $fui-radius-md: computed.$computed-radius-md !default;
187
189
  $fui-radius-lg: computed.$computed-radius-lg !default;
188
190
  $fui-radius-xl: computed.$computed-radius-xl !default;
189
191
  $fui-radius-full: computed.$computed-radius-full !default;
192
+ /// Square corners where a shape must not follow the radius profile (joined
193
+ /// segments, skeleton blocks, code gutters).
194
+ $fui-radius-none: 0px !default;
195
+
196
+ // Radius nesting levels. A surface (l1) holds controls (l2) which hold marks
197
+ // (l3); each level maps onto the active radius profile, so concentric corners
198
+ // stay concentric when a consumer switches `sharp`, `rounded`, or `pill`.
199
+ $fui-radius-l1: $fui-radius-lg !default;
200
+ $fui-radius-l2: $fui-radius-md !default;
201
+ $fui-radius-l3: $fui-radius-sm !default;
202
+
203
+ // --------------------------------------------
204
+ // Strokes + control tracks (mirror the measurement CSS vars for SCSS fallbacks)
205
+ // --------------------------------------------
206
+ $fui-stroke-hairline: measurements.target-value("stroke", "hairline") !default;
207
+ $fui-stroke-default: measurements.target-value("stroke", "default") !default;
208
+ $fui-stroke-strong: measurements.target-value("stroke", "strong") !default;
209
+
210
+ // The one disabled treatment: every disabled control fades by this amount.
211
+ $fui-opacity-disabled: 0.5 !default;
212
+ /// Dimmed-but-live: secondary glyphs, collapsed rails, decorative rules.
213
+ $fui-opacity-muted: 0.7 !default;
214
+ /// Barely-there: pulse rings and glow tracks that animate up from almost nothing.
215
+ $fui-opacity-faint: 0.3 !default;
216
+ /// Hairline drawn around a selected segmented item (transparent unless a theme wants it).
217
+ $fui-control-selected-border: transparent !default;
218
+
219
+ // Runtime multiplier on the base unit. `fui-unit()` reads it so a consumer can
220
+ // scale the whole measurement system from one custom property.
221
+ $fui-scale: 1 !default;
222
+ $fui-control-track-micro: measurements.target-value("controlTrack", "micro") !default;
223
+ $fui-control-track-sm: measurements.target-value("controlTrack", "sm") !default;
224
+ $fui-control-track-md: measurements.target-value("controlTrack", "md") !default;
225
+ $fui-control-track-lg: measurements.target-value("controlTrack", "lg") !default;
190
226
 
191
227
  // --------------------------------------------
192
228
  // Transitions
@@ -236,9 +272,10 @@ $fui-bg-elevated: computed.$computed-bg-elevated !default;
236
272
  $fui-bg-subtle: computed.$computed-bg-subtle !default;
237
273
  $fui-bg-hover: computed.$computed-bg-hover !default;
238
274
  $fui-bg-active: computed.$computed-bg-active !default;
239
- // The document canvas stays white in light mode. Component and app surfaces
240
- // continue to use the computed neutral palette.
241
- $fui-body-bg: #fff !default;
275
+ // The document canvas is the derived "paper" tone in light mode (carbon 100).
276
+ // Body and main stay on that shared plane; raised component roles provide the
277
+ // contrast instead of consumer-specific page overrides.
278
+ $fui-body-bg: computed.$computed-body-bg !default;
242
279
  $fui-main-bg: computed.$computed-main-bg !default;
243
280
 
244
281
  // Text colors (derived from $fui-neutral palette)
@@ -370,8 +407,8 @@ $fui-breakpoint-xl: 1280px !default;
370
407
  // Component-specific tokens
371
408
  // --------------------------------------------
372
409
 
373
- // Interactive control heights are fixed geometry. Density still governs
374
- // composition spacing, but it cannot resize a named control.
410
+ // Interactive control heights are fixed geometry; the spacing scale cannot
411
+ // resize a named control.
375
412
  $fui-control-height-xs: measurements.target-value("controlTrack", "micro") !default;
376
413
  $fui-control-height-sm: measurements.target-value("controlTrack", "sm") !default;
377
414
  $fui-control-height-md: measurements.target-value("controlTrack", "md") !default;
@@ -388,7 +425,7 @@ $fui-input-height-sm: measurements.target-value("fieldTrack", "sm") !default;
388
425
  $fui-input-height: measurements.target-value("fieldTrack", "md") !default;
389
426
  $fui-input-height-lg: measurements.target-value("fieldTrack", "lg") !default;
390
427
 
391
- // Touch targets (derived from density seed)
428
+ // Touch targets (from the measurement spacing record)
392
429
  $fui-touch-sm: computed.$computed-touch-sm !default;
393
430
  $fui-touch-md: computed.$computed-touch-md !default;
394
431
  $fui-touch-lg: computed.$computed-touch-lg !default;
@@ -413,8 +450,22 @@ $fui-icon-2xl: measurements.target-value("icon", "2xl") !default;
413
450
  $fui-anim-offset-sm: 4px !default; // Small slide animation
414
451
  $fui-anim-offset-md: 8px !default; // Medium slide animation
415
452
 
453
+ // Ambient loop durations — infinite animations (spinners, pulses, shimmer).
454
+ // Easing stays per-effect; duration is the system knob.
455
+ $fui-duration-spin: 800ms !default; // Busy indicators
456
+ $fui-duration-pulse: 1500ms !default; // Breathing / attention loops
457
+ $fui-duration-shimmer: 2000ms !default; // Placeholder shimmer
458
+
459
+ // Overlay stacking layers (kept adjacent so relative order is auditable)
460
+ $fui-overlay-layer-swipe: 49 !default;
461
+ $fui-overlay-layer-backdrop: 50 !default;
462
+ $fui-overlay-layer-modal: 51 !default;
463
+ $fui-overlay-layer-anchored: 52 !default;
464
+ $fui-overlay-layer-toast: 55 !default;
465
+ $fui-overlay-layer-tooltip: 60 !default;
466
+
416
467
  // Sidebar (multi-consumer — used by Sidebar, NavigationMenu, Theme)
417
- $fui-sidebar-item-height: computed.$computed-sidebar-item-height !default; // density-responsive (compact/default: 32px, relaxed: 36px)
468
+ $fui-sidebar-item-height: computed.$computed-sidebar-item-height !default;
418
469
 
419
470
  // AppShell Layout
420
471
  $fui-appshell-header-height: map.get(
@@ -427,12 +478,48 @@ $fui-header-z-index: 40 !default;
427
478
  // CodeBlock background — shared with Markdown's <pre> prose styling — and
428
479
  // selection tint are runtime hooks so consuming apps can preserve their own
429
480
  // code-surface treatment without forking either component.
430
- $fui-code-bg: #171717 !default;
481
+ // Light stop is the paper tertiary well — not a second dark grey.
482
+ $fui-code-bg: light-dark(#{$fui-bg-tertiary}, #{$fui-dark-bg-tertiary}) !default;
483
+ // Accent capsule — the tertiary well + wash/hairline, so the earned moment
484
+ // sits *into* the page rather than floating a white slab on it (lifted-verdict
485
+ // direction, 2026-08-22). Do not mix toward black: that paints a dark slab on
486
+ // the light canvas.
487
+ $fui-card-accent-bg: $fui-bg-tertiary !default;
488
+ $fui-card-accent-border: color-mix(in srgb, $fui-color-accent 30%, $fui-border) !default;
489
+ // Softer than a panel: the capsule is a moment, not another card.
490
+ $fui-card-accent-radius: $fui-radius-xl !default;
491
+ // Selection tint tracks the accent (pine light / sage dark), not the button
492
+ // chrome — the ink-first default theme paints buttons with the inverse
493
+ // surface, which would grey out code selection.
431
494
  $fui-code-selection-bg: color-mix(
432
495
  in srgb,
433
- var(--fui-button-primary-base, #006b57) 30%,
496
+ var(--fui-color-accent, #f56138) 30%,
434
497
  transparent
435
498
  ) !default;
499
+ // Default code ink follows primary text so unhighlighted fallback and shiki
500
+ // `css-variables` foreground stay on the same contrast floor.
501
+ $fui-code-text: $fui-text-primary !default;
502
+ // Syntax ink for CodeBlock's css-variables theme. Each light stop is ≥ 4.5:1
503
+ // on the light code well; each dark stop is ≥ 4.5:1 on the dark code well
504
+ // (gated by read-safe-contrast.test.ts).
505
+ $fui-code-token-keyword: #9a3412 !default;
506
+ $fui-code-token-string: #166534 !default;
507
+ $fui-code-token-comment: #5c5348 !default;
508
+ $fui-code-token-function: #1e3a8a !default;
509
+ $fui-code-token-number: #92400e !default;
510
+ $fui-code-token-punctuation: #3d3429 !default;
511
+ $fui-code-token-variable: #3d3429 !default;
512
+ $fui-dark-code-token-keyword: #f56138 !default;
513
+ $fui-dark-code-token-string: #7dcea0 !default;
514
+ $fui-dark-code-token-comment: #a89b8c !default;
515
+ $fui-dark-code-token-function: #8cb4e8 !default;
516
+ $fui-dark-code-token-number: #e8b86d !default;
517
+ $fui-dark-code-token-punctuation: #c9c2b8 !default;
518
+ $fui-dark-code-token-variable: #f0ede9 !default;
519
+ // Prose/link ink. Light is a darker accent step so 4.5:1 holds on
520
+ // --fui-app-main-bg; dark keeps the theme accent (already ≥ 4.5).
521
+ $fui-link-ink: #9a3412 !default;
522
+ $fui-dark-link-ink: $fui-dark-color-accent !default;
436
523
 
437
524
  // --------------------------------------------
438
525
  // CSS Custom Properties Export
@@ -493,19 +580,19 @@ $fui-code-selection-bg: color-mix(
493
580
 
494
581
  // Spacing (micro)
495
582
  --fui-space-px: #{$fui-space-px};
496
- --fui-space-0-5: #{$fui-space-0-5};
497
- --fui-space-0-75: #{$fui-space-0-75};
583
+ --fui-space-0-5: calc(var(--fui-scale, #{$fui-scale}) * #{$fui-space-0-5});
584
+ --fui-space-0-75: calc(var(--fui-scale, #{$fui-scale}) * #{$fui-space-0-75});
498
585
 
499
586
  // Spacing
500
- --fui-space-1: #{$fui-space-1};
501
- --fui-space-2: #{$fui-space-2};
502
- --fui-space-3: #{$fui-space-3};
503
- --fui-space-4: #{$fui-space-4};
504
- --fui-space-5: #{$fui-space-5};
505
- --fui-space-6: #{$fui-space-6};
506
- --fui-space-8: #{$fui-space-8};
507
- --fui-space-10: #{$fui-space-10};
508
- --fui-space-12: #{$fui-space-12};
587
+ --fui-space-1: calc(var(--fui-scale, #{$fui-scale}) * #{$fui-space-1});
588
+ --fui-space-2: calc(var(--fui-scale, #{$fui-scale}) * #{$fui-space-2});
589
+ --fui-space-3: calc(var(--fui-scale, #{$fui-scale}) * #{$fui-space-3});
590
+ --fui-space-4: calc(var(--fui-scale, #{$fui-scale}) * #{$fui-space-4});
591
+ --fui-space-5: calc(var(--fui-scale, #{$fui-scale}) * #{$fui-space-5});
592
+ --fui-space-6: calc(var(--fui-scale, #{$fui-scale}) * #{$fui-space-6});
593
+ --fui-space-8: calc(var(--fui-scale, #{$fui-scale}) * #{$fui-space-8});
594
+ --fui-space-10: calc(var(--fui-scale, #{$fui-scale}) * #{$fui-space-10});
595
+ --fui-space-12: calc(var(--fui-scale, #{$fui-scale}) * #{$fui-space-12});
509
596
 
510
597
  // Popup geometry — the numbers Select/Listbox/Combobox derive their scroll
511
598
  // viewport from. Override these and the peek height follows.
@@ -520,11 +607,34 @@ $fui-code-selection-bg: color-mix(
520
607
  --fui-radius-lg: #{$fui-radius-lg};
521
608
  --fui-radius-xl: #{$fui-radius-xl};
522
609
  --fui-radius-full: #{$fui-radius-full};
610
+ --fui-radius-none: #{$fui-radius-none};
611
+ --fui-radius-l1: var(--fui-radius-lg);
612
+ --fui-radius-l2: var(--fui-radius-md);
613
+ --fui-radius-l3: var(--fui-radius-sm);
523
614
 
524
615
  // Transitions
525
616
  --fui-transition-fast: #{$fui-transition-fast};
617
+ --fui-opacity-disabled: #{$fui-opacity-disabled};
618
+ --fui-opacity-muted: #{$fui-opacity-muted};
619
+ --fui-opacity-faint: #{$fui-opacity-faint};
620
+ --fui-scale: #{$fui-scale};
526
621
  --fui-transition-normal: #{$fui-transition-normal};
527
622
 
623
+ // Motion primitives
624
+ --fui-anim-offset-sm: #{$fui-anim-offset-sm};
625
+ --fui-anim-offset-md: #{$fui-anim-offset-md};
626
+ --fui-duration-spin: #{$fui-duration-spin};
627
+ --fui-duration-pulse: #{$fui-duration-pulse};
628
+ --fui-duration-shimmer: #{$fui-duration-shimmer};
629
+
630
+ // Overlay stacking layers
631
+ --fui-overlay-layer-swipe: #{$fui-overlay-layer-swipe};
632
+ --fui-overlay-layer-backdrop: #{$fui-overlay-layer-backdrop};
633
+ --fui-overlay-layer-modal: #{$fui-overlay-layer-modal};
634
+ --fui-overlay-layer-anchored: #{$fui-overlay-layer-anchored};
635
+ --fui-overlay-layer-toast: #{$fui-overlay-layer-toast};
636
+ --fui-overlay-layer-tooltip: #{$fui-overlay-layer-tooltip};
637
+
528
638
  // Colors — Accent (light-dark for automatic dark mode)
529
639
  --fui-color-accent: light-dark(#{$fui-color-accent}, #{$fui-dark-color-accent});
530
640
  --fui-color-on-accent: light-dark(#{$fui-color-on-accent}, #{$fui-dark-color-on-accent});
@@ -626,27 +736,40 @@ $fui-code-selection-bg: color-mix(
626
736
  --fui-border-strong: light-dark(#{$fui-border-strong}, #{$fui-dark-border-strong});
627
737
  --fui-border-subtle: color-mix(in srgb, var(--fui-border-default) 68%, transparent);
628
738
 
739
+ // Placeholder fills. A skeleton has to read as a *missing fact* against the
740
+ // card it sits in — a hairline-weight tint is invisible on paper, so the
741
+ // base leans on the border colour and the highlight is the shimmer stop.
742
+ --fui-skeleton: color-mix(in srgb, var(--fui-border-default) 62%, var(--fui-bg-secondary));
743
+ --fui-skeleton-hi: color-mix(in srgb, var(--fui-border-default) 24%, var(--fui-bg-secondary));
744
+
629
745
  // Native browser text selection tracks the accent (pine in light, sage in
630
746
  // dark) as a soft wash — matching the Flight Recorder accent-tint.
631
747
  // Component-selected states stay tuned per control density.
632
748
  --fui-selection-bg: light-dark(
633
- color-mix(in srgb, var(--fui-color-accent, #006b57) 18%, transparent),
634
- color-mix(in srgb, var(--fui-color-accent, #7fc9b3) 22%, transparent)
749
+ color-mix(in srgb, var(--fui-color-accent, #f56138) 18%, transparent),
750
+ color-mix(in srgb, var(--fui-color-accent, #f56138) 22%, transparent)
635
751
  );
636
752
  --fui-selection-color: var(--fui-text-primary);
637
753
 
638
- // Form chrome (shared by Input, Textarea, Select, Combobox, DatePicker,
639
- // ColorPicker, Editor, and listbox-style controls).
640
- --fui-field-bg: color-mix(in srgb, var(--fui-bg-elevated) 72%, transparent);
641
- --fui-field-bg-disabled: color-mix(in srgb, var(--fui-bg-tertiary) 78%, var(--fui-bg-primary));
642
- --fui-field-border: var(--fui-border-strong);
643
- --fui-field-border-hover: color-mix(
644
- in srgb,
645
- var(--fui-text-tertiary) 46%,
646
- var(--fui-border-strong)
647
- );
648
- --fui-field-border-focus: var(--fui-text-primary);
649
- --fui-field-selection-bg: color-mix(in srgb, var(--fui-text-primary) 8%, transparent);
754
+ // Persistent neutral selection for navigation, segmented controls, fields,
755
+ // and rows. Keep this separate from --fui-bg-active: active is the brief
756
+ // pointer-down state; selected must remain visible without dominating its
757
+ // surrounding surface.
758
+ --fui-control-selected-bg: color-mix(in srgb, var(--fui-text-primary) 9%, transparent);
759
+ --fui-control-selected-border: #{$fui-control-selected-border};
760
+
761
+ // Checked/value controls carry product meaning, so they follow the accent
762
+ // rather than button chrome. This keeps Checkbox, RadioGroup, and Switch
763
+ // stable when a consumer customizes primary actions independently.
764
+ --fui-control-checked-bg: var(--fui-color-accent);
765
+ --fui-control-checked-bg-hover: var(--fui-color-accent-hover);
766
+ --fui-control-checked-border: var(--fui-color-accent);
767
+ --fui-control-checked-border-hover: var(--fui-color-accent-hover);
768
+ --fui-control-checked-color: var(--fui-color-on-accent);
769
+
770
+ // Field shells take their edge and ground from --fui-border / --fui-bg-primary
771
+ // through the field recipe; only selection chrome needs its own hooks.
772
+ --fui-field-selection-bg: var(--fui-control-selected-bg);
650
773
  --fui-field-selection-bg-hover: color-mix(in srgb, var(--fui-text-primary) 11%, transparent);
651
774
  --fui-field-selection-border: var(--fui-border-strong);
652
775
  --fui-field-selection-color: var(--fui-text-primary);
@@ -673,28 +796,36 @@ $fui-code-selection-bg: color-mix(
673
796
 
674
797
  // Button chrome. Every theme uses flat fills: hierarchy comes from colour,
675
798
  // border, and state contrast rather than a second raised/gradient material.
676
- // Radius remains brand-aware for compatibility with consumer themes.
677
- --fui-button-primary-base: light-dark(#006b57, #006b57);
678
- --fui-button-primary-hover: light-dark(#187762, #187762);
679
- --fui-button-primary-active: light-dark(#005f4c, #005f4c);
680
- --fui-button-primary-border-hover: color-mix(
681
- in srgb,
682
- var(--fui-button-primary-active) 86%,
683
- black 14%
684
- );
685
- --fui-button-primary-border: color-mix(
686
- in srgb,
687
- var(--fui-button-primary-active) 74%,
688
- black 26%
689
- );
690
- --fui-button-primary-color: #fff;
691
-
799
+ //
800
+ // The Fragments default is ink-first: the primary action wears the inverse
801
+ // surface (near-black on paper, near-white on charcoal) with the accent
802
+ // reserved for meaning — links, selection, focus, "contract passing".
803
+ // A consumer-supplied $fui-brand switches primary chrome to the accent
804
+ // ramp so their brand colour actually paints their buttons (previously the
805
+ // chrome stayed pine regardless of seed).
692
806
  @if $fui-brand-is-default {
693
- --fui-button-radius: var(--fui-radius-full);
807
+ --fui-button-primary-base: var(--fui-bg-inverse);
808
+ --fui-button-primary-hover: light-dark(
809
+ color-mix(in srgb, var(--fui-bg-inverse) 88%, white),
810
+ #ffffff
811
+ );
812
+ --fui-button-primary-active: light-dark(
813
+ color-mix(in srgb, var(--fui-bg-inverse) 92%, black),
814
+ color-mix(in srgb, var(--fui-bg-inverse) 94%, black)
815
+ );
816
+ --fui-button-primary-color: var(--fui-text-inverse);
817
+ --fui-button-radius: var(--fui-radius-xl);
694
818
  } @else {
819
+ --fui-button-primary-base: var(--fui-color-accent);
820
+ --fui-button-primary-hover: var(--fui-color-accent-hover);
821
+ --fui-button-primary-active: var(--fui-color-accent-active);
822
+ --fui-button-primary-color: var(--fui-color-on-accent);
695
823
  --fui-button-radius: var(--fui-radius-lg);
696
824
  }
697
825
 
826
+ --fui-button-primary-border: var(--fui-button-primary-base);
827
+ --fui-button-primary-border-hover: var(--fui-button-primary-hover);
828
+
698
829
  --fui-button-primary-bg: var(--fui-button-primary-base);
699
830
  --fui-button-primary-bg-hover: var(--fui-button-primary-hover);
700
831
  --fui-button-primary-bg-active: var(--fui-button-primary-active);
@@ -730,6 +861,33 @@ $fui-code-selection-bg: color-mix(
730
861
 
731
862
  --fui-code-bg: #{$fui-code-bg};
732
863
  --fui-code-selection-bg: #{$fui-code-selection-bg};
864
+ --fui-code-text: var(--fui-text-primary);
865
+ --fui-code-token-keyword: light-dark(
866
+ #{$fui-code-token-keyword},
867
+ #{$fui-dark-code-token-keyword}
868
+ );
869
+ --fui-code-token-string: light-dark(#{$fui-code-token-string}, #{$fui-dark-code-token-string});
870
+ --fui-code-token-comment: light-dark(
871
+ #{$fui-code-token-comment},
872
+ #{$fui-dark-code-token-comment}
873
+ );
874
+ --fui-code-token-function: light-dark(
875
+ #{$fui-code-token-function},
876
+ #{$fui-dark-code-token-function}
877
+ );
878
+ --fui-code-token-number: light-dark(#{$fui-code-token-number}, #{$fui-dark-code-token-number});
879
+ --fui-code-token-punctuation: light-dark(
880
+ #{$fui-code-token-punctuation},
881
+ #{$fui-dark-code-token-punctuation}
882
+ );
883
+ --fui-code-token-variable: light-dark(
884
+ #{$fui-code-token-variable},
885
+ #{$fui-dark-code-token-variable}
886
+ );
887
+ --fui-link-ink: light-dark(#{$fui-link-ink}, #{$fui-dark-link-ink});
888
+ --fui-card-accent-bg: var(--fui-bg-tertiary);
889
+ --fui-card-accent-border: color-mix(in srgb, var(--fui-color-accent) 30%, var(--fui-border));
890
+ --fui-card-accent-radius: #{$fui-card-accent-radius};
733
891
 
734
892
  // Popup/menu active-item highlight — neutral, deliberately stronger than
735
893
  // --fui-bg-hover (which is tuned for subtle surface hovers and reads as ~invisible
@@ -740,15 +898,20 @@ $fui-code-selection-bg: color-mix(
740
898
  // Product shell and navigation chrome. These stay neutral-first so a
741
899
  // dashboard page reads as one system instead of brand-tinted islands.
742
900
  --fui-app-canvas-bg: var(--fui-body-bg);
743
- --fui-app-main-bg: var(--fui-main-bg);
744
- --fui-app-sidebar-bg: color-mix(in srgb, var(--fui-bg-primary) 78%, var(--fui-bg-secondary));
901
+ // Same surface order in both themes: the rail is recessed, the main
902
+ // reading sheet is raised. Light: tertiary paper rail, body-bg sheet.
903
+ // Dark keeps the lifted rail on a deeper body.
904
+ --fui-app-main-bg: var(--fui-body-bg);
905
+ --fui-app-sidebar-bg: var(--fui-bg-tertiary);
745
906
  --fui-sidebar-bg: var(--fui-app-sidebar-bg);
746
907
  --fui-sidebar-border: var(--fui-border-default);
747
908
  --fui-sidebar-item-color: var(--fui-text-secondary);
748
909
  --fui-sidebar-item-icon-color: var(--fui-text-tertiary);
910
+ --fui-sidebar-item-radius: var(--fui-radius-full);
911
+ --fui-sidebar-section-label-size: var(--fui-font-size-xs);
749
912
  --fui-sidebar-item-hover-bg: var(--fui-bg-hover);
750
913
  --fui-sidebar-item-hover-color: var(--fui-text-primary);
751
- --fui-sidebar-item-active-bg: color-mix(in srgb, var(--fui-text-primary) 8%, transparent);
914
+ --fui-sidebar-item-active-bg: var(--fui-control-selected-bg);
752
915
  --fui-sidebar-item-active-border: transparent;
753
916
  --fui-sidebar-item-active-color: var(--fui-text-primary);
754
917
  --fui-sidebar-item-active-indicator: transparent;
@@ -759,6 +922,11 @@ $fui-code-selection-bg: color-mix(
759
922
  --fui-badge-dot-color: currentColor;
760
923
  --fui-card-radius: var(--fui-radius-lg);
761
924
  --fui-card-bg: color-mix(in srgb, var(--fui-bg-elevated) 92%, transparent);
925
+ // Full-bleed card chrome (for example `Card.Header divided`) shares the
926
+ // raised-neutral plane with shell controls. Keep the semantic alias
927
+ // component-specific so consumers can tune card hierarchy without
928
+ // changing every subtle surface.
929
+ --fui-card-header-bg: var(--fui-bg-subtle);
762
930
  --fui-card-border: color-mix(in srgb, var(--fui-border-default) 86%, transparent);
763
931
  --fui-card-outlined-border: var(--fui-card-border);
764
932
  --fui-card-shadow: inset 0 1px 0
@@ -791,7 +959,7 @@ $fui-code-selection-bg: color-mix(
791
959
  --fui-table-header-border: var(--fui-border-strong);
792
960
  --fui-table-row-hover-bg: var(--fui-bg-hover);
793
961
  --fui-table-row-active-bg: var(--fui-bg-active);
794
- --fui-table-row-selected-bg: color-mix(in srgb, var(--fui-text-primary) 8%, transparent);
962
+ --fui-table-row-selected-bg: var(--fui-control-selected-bg);
795
963
  --fui-table-row-selected-border: var(--fui-border-strong);
796
964
  --fui-table-subrow-bg: color-mix(in srgb, var(--fui-bg-secondary) 62%, transparent);
797
965
 
@@ -799,16 +967,11 @@ $fui-code-selection-bg: color-mix(
799
967
  --fui-tabs-pills-bg: color-mix(in srgb, var(--fui-text-primary) 5%, transparent);
800
968
  --fui-tabs-pills-border: var(--fui-border-default);
801
969
  --fui-tabs-pill-hover-bg: transparent;
802
- --fui-tabs-pill-active-bg: color-mix(in srgb, var(--fui-text-primary) 9%, transparent);
803
- --fui-tabs-pill-active-border: transparent;
804
- --fui-tabs-pill-active-shadow: none;
805
- --fui-toggle-group-selected-bg: var(--fui-selection-bg);
806
- --fui-toggle-group-selected-border: color-mix(
807
- in srgb,
808
- var(--fui-color-accent) 42%,
809
- transparent
810
- );
811
- --fui-toggle-group-selected-shadow: none;
970
+
971
+ // Header search is persistent shell chrome rather than a ghost action.
972
+ // One surface step above divided card headers keeps this global affordance
973
+ // easy to find in both themes without turning it into a selected control.
974
+ --fui-header-search-bg: var(--fui-bg-hover);
812
975
 
813
976
  // Shadows (not <color> type — light-dark() can't be used, handled in dark overrides)
814
977
  --fui-shadow-sm: #{$fui-shadow-sm};
@@ -842,13 +1005,13 @@ $fui-code-selection-bg: color-mix(
842
1005
  --fui-input-height: var(--fui-field-track-md);
843
1006
  --fui-input-height-lg: var(--fui-field-track-lg);
844
1007
 
845
- // Touch targets (density-responsive, Fragments control floor: ≥32px)
1008
+ // Touch targets (Fragments control floor: ≥32px)
846
1009
  --fui-touch-sm: #{$fui-touch-sm};
847
1010
  --fui-touch-md: #{$fui-touch-md};
848
1011
  --fui-touch-lg: #{$fui-touch-lg};
849
1012
  --fui-target-size-min: #{$fui-target-size-min};
850
1013
 
851
- // Sidebar (density-responsive)
1014
+ // Sidebar
852
1015
  --fui-sidebar-item-height: #{$fui-sidebar-item-height};
853
1016
 
854
1017
  // AppShell Layout
@@ -860,12 +1023,6 @@ $fui-code-selection-bg: color-mix(
860
1023
  // Sass seeds. Attribute specificity intentionally matches :root so these
861
1024
  // later rules can override the compiled default on either the document root
862
1025
  // or a scoped provider without inline numeric maps.
863
- @each $density in measurements.$density-profile-names {
864
- [data-fui-density="#{$density}"] {
865
- @include measurements.emit-density-profile($density);
866
- }
867
- }
868
-
869
1026
  @each $radius-style in measurements.$radius-profile-names {
870
1027
  [data-fui-radius-style="#{$radius-style}"] {
871
1028
  @include measurements.emit-radius-profile($radius-style);
@@ -1019,31 +1176,32 @@ $fui-code-selection-bg: color-mix(
1019
1176
  * {
1020
1177
  // Firefox
1021
1178
  scrollbar-width: thin;
1022
- scrollbar-color: var(--fui-scrollbar-thumb) var(--fui-scrollbar-track);
1179
+ scrollbar-color: var(--fui-scrollbar-thumb, #{$fui-scrollbar-thumb})
1180
+ var(--fui-scrollbar-track, #{$fui-scrollbar-track});
1023
1181
  }
1024
1182
 
1025
1183
  // Webkit browsers (Chrome, Safari, Edge)
1026
1184
  *::-webkit-scrollbar {
1027
- width: var(--fui-scrollbar-width);
1028
- height: var(--fui-scrollbar-width);
1185
+ width: var(--fui-scrollbar-width, #{$fui-scrollbar-width});
1186
+ height: var(--fui-scrollbar-width, #{$fui-scrollbar-width});
1029
1187
  }
1030
1188
 
1031
1189
  *::-webkit-scrollbar-track {
1032
- background: var(--fui-scrollbar-track);
1033
- border-radius: calc(var(--fui-scrollbar-width) / 2);
1190
+ background: var(--fui-scrollbar-track, #{$fui-scrollbar-track});
1191
+ border-radius: calc(var(--fui-scrollbar-width, #{$fui-scrollbar-width}) / 2);
1034
1192
  }
1035
1193
 
1036
1194
  *::-webkit-scrollbar-thumb {
1037
- background: var(--fui-scrollbar-thumb);
1038
- border-radius: calc(var(--fui-scrollbar-width) / 2);
1195
+ background: var(--fui-scrollbar-thumb, #{$fui-scrollbar-thumb});
1196
+ border-radius: calc(var(--fui-scrollbar-width, #{$fui-scrollbar-width}) / 2);
1039
1197
 
1040
1198
  &:hover {
1041
- background: var(--fui-scrollbar-thumb-hover);
1199
+ background: var(--fui-scrollbar-thumb-hover, #{$fui-scrollbar-thumb-hover});
1042
1200
  }
1043
1201
  }
1044
1202
 
1045
1203
  *::-webkit-scrollbar-corner {
1046
- background: var(--fui-scrollbar-track);
1204
+ background: var(--fui-scrollbar-track, #{$fui-scrollbar-track});
1047
1205
  }
1048
1206
  }
1049
1207
 
@@ -1059,16 +1217,10 @@ $fui-code-selection-bg: color-mix(
1059
1217
  // Ensure minimum contrast on interactive elements
1060
1218
  --fui-bg-hover: rgba(0, 0, 0, 0.12);
1061
1219
  --fui-bg-active: rgba(0, 0, 0, 0.18);
1062
- --fui-field-border: var(--fui-text-primary);
1063
- --fui-field-border-hover: var(--fui-text-primary);
1064
- --fui-field-border-focus: var(--fui-color-accent);
1065
1220
  --fui-field-selection-border: var(--fui-color-accent);
1066
1221
  --fui-form-group-border: var(--fui-text-primary);
1067
1222
  --fui-sidebar-item-active-border: var(--fui-text-primary);
1068
- --fui-tabs-pill-active-border: var(--fui-text-primary);
1069
- --fui-tabs-pill-active-shadow: inset 0 0 0 1px var(--fui-tabs-pill-active-border);
1070
- --fui-toggle-group-selected-border: var(--fui-text-primary);
1071
- --fui-toggle-group-selected-shadow: inset 0 0 0 1px var(--fui-toggle-group-selected-border);
1223
+ --fui-control-selected-border: var(--fui-text-primary);
1072
1224
  }
1073
1225
 
1074
1226
  // Private mixin for dark mode token values
@@ -1091,6 +1243,11 @@ $fui-code-selection-bg: color-mix(
1091
1243
  --fui-bg-highlight: color-mix(in srgb, var(--fui-text-primary) 10%, transparent);
1092
1244
  --fui-body-bg: #{$fui-dark-body-bg};
1093
1245
  --fui-main-bg: #{$fui-dark-main-bg};
1246
+ --fui-app-main-bg: var(--fui-main-bg);
1247
+ // Paper primary == secondary in dark, so a mix of the two is a no-op.
1248
+ // Tertiary is the lifted rail; main stays the deeper body.
1249
+ --fui-app-sidebar-bg: var(--fui-bg-tertiary);
1250
+ --fui-sidebar-bg: var(--fui-app-sidebar-bg);
1094
1251
  --fui-bg-inverse: #{$fui-dark-bg-inverse};
1095
1252
 
1096
1253
  // Text