@usefragments/ui 1.7.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (551) hide show
  1. package/README.md +54 -66
  2. package/dist/assets/nav-glyph.cjs +139 -0
  3. package/dist/assets/nav-glyph.d.ts +28 -0
  4. package/dist/assets/nav-glyph.d.ts.map +1 -0
  5. package/dist/assets/nav-glyph.js +139 -0
  6. package/dist/assets/nav-glyph.module.scss.cjs +71 -0
  7. package/dist/assets/nav-glyph.module.scss.js +71 -0
  8. package/dist/assets/ui.css +4975 -4959
  9. package/dist/blocks/components/StatsCard.d.ts +1 -1
  10. package/dist/blocks/components/StatsCard.d.ts.map +1 -1
  11. package/dist/codeblock.cjs +23 -16
  12. package/dist/codeblock.js +16 -9
  13. package/dist/colorpicker.cjs +1 -0
  14. package/dist/colorpicker.js +1 -0
  15. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  16. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  17. package/dist/components/Alert/Alert.module.scss.cjs +21 -21
  18. package/dist/components/Alert/Alert.module.scss.js +21 -21
  19. package/dist/components/Alert/index.cjs +14 -8
  20. package/dist/components/Alert/index.d.ts +9 -9
  21. package/dist/components/Alert/index.d.ts.map +1 -1
  22. package/dist/components/Alert/index.js +14 -8
  23. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  24. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  25. package/dist/components/AppShell/index.cjs +2 -2
  26. package/dist/components/AppShell/index.js +2 -2
  27. package/dist/components/Avatar/Avatar.module.scss.cjs +14 -14
  28. package/dist/components/Avatar/Avatar.module.scss.js +14 -14
  29. package/dist/components/Badge/Badge.module.scss.cjs +33 -31
  30. package/dist/components/Badge/Badge.module.scss.js +33 -31
  31. package/dist/components/Badge/index.cjs +13 -3
  32. package/dist/components/Badge/index.d.ts +18 -13
  33. package/dist/components/Badge/index.d.ts.map +1 -1
  34. package/dist/components/Badge/index.js +13 -3
  35. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  36. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  37. package/dist/components/Box/Box.module.scss.cjs +152 -152
  38. package/dist/components/Box/Box.module.scss.js +152 -152
  39. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +11 -8
  40. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +11 -8
  41. package/dist/components/Breadcrumbs/index.cjs +1 -1
  42. package/dist/components/Breadcrumbs/index.d.ts.map +1 -1
  43. package/dist/components/Breadcrumbs/index.js +1 -1
  44. package/dist/components/Button/Button.module.scss.cjs +36 -27
  45. package/dist/components/Button/Button.module.scss.js +36 -27
  46. package/dist/components/Button/index.cjs +20 -4
  47. package/dist/components/Button/index.d.ts +18 -10
  48. package/dist/components/Button/index.d.ts.map +1 -1
  49. package/dist/components/Button/index.js +20 -4
  50. package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
  51. package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
  52. package/dist/components/Card/Card.module.scss.cjs +27 -34
  53. package/dist/components/Card/Card.module.scss.js +27 -34
  54. package/dist/components/Card/index.cjs +13 -8
  55. package/dist/components/Card/index.d.ts +23 -25
  56. package/dist/components/Card/index.d.ts.map +1 -1
  57. package/dist/components/Card/index.js +13 -8
  58. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  59. package/dist/components/Chart/Chart.module.scss.js +15 -15
  60. package/dist/components/Checkbox/Checkbox.module.scss.cjs +11 -11
  61. package/dist/components/Checkbox/Checkbox.module.scss.js +11 -11
  62. package/dist/components/Checkbox/index.cjs +2 -2
  63. package/dist/components/Checkbox/index.d.ts +4 -6
  64. package/dist/components/Checkbox/index.d.ts.map +1 -1
  65. package/dist/components/Checkbox/index.js +2 -2
  66. package/dist/components/Chip/Chip.module.scss.cjs +19 -19
  67. package/dist/components/Chip/Chip.module.scss.js +19 -19
  68. package/dist/components/Chip/index.cjs +1 -2
  69. package/dist/components/Chip/index.d.ts +8 -3
  70. package/dist/components/Chip/index.d.ts.map +1 -1
  71. package/dist/components/Chip/index.js +1 -2
  72. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +22 -22
  73. package/dist/components/CodeBlock/CodeBlock.module.scss.js +22 -22
  74. package/dist/components/CodeBlock/index.d.ts +3 -2
  75. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  76. package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -9
  77. package/dist/components/Collapsible/Collapsible.module.scss.js +9 -9
  78. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +14 -14
  79. package/dist/components/ColorPicker/ColorPicker.module.scss.js +14 -14
  80. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  81. package/dist/components/Combobox/Combobox.module.scss.cjs +21 -21
  82. package/dist/components/Combobox/Combobox.module.scss.js +21 -21
  83. package/dist/components/Combobox/index.cjs +9 -5
  84. package/dist/components/Combobox/index.d.ts.map +1 -1
  85. package/dist/components/Combobox/index.js +9 -5
  86. package/dist/components/Command/Command.module.scss.cjs +14 -11
  87. package/dist/components/Command/Command.module.scss.js +14 -11
  88. package/dist/components/Command/index.cjs +2 -1
  89. package/dist/components/Command/index.d.ts +6 -1
  90. package/dist/components/Command/index.d.ts.map +1 -1
  91. package/dist/components/Command/index.js +2 -1
  92. package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
  93. package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
  94. package/dist/components/ConversationList/index.cjs +2 -2
  95. package/dist/components/ConversationList/index.js +2 -2
  96. package/dist/components/DataTable/DataTable.module.scss.cjs +31 -28
  97. package/dist/components/DataTable/DataTable.module.scss.js +31 -28
  98. package/dist/components/DataTable/DataTable.virtual.d.ts.map +1 -1
  99. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  100. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  101. package/dist/components/DatePicker/index.d.ts.map +1 -1
  102. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  103. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  104. package/dist/components/Dialog/index.cjs +2 -2
  105. package/dist/components/Dialog/index.d.ts +5 -4
  106. package/dist/components/Dialog/index.d.ts.map +1 -1
  107. package/dist/components/Dialog/index.js +2 -2
  108. package/dist/components/Drawer/Drawer.module.scss.cjs +39 -39
  109. package/dist/components/Drawer/Drawer.module.scss.js +40 -40
  110. package/dist/components/Drawer/index.cjs +2 -2
  111. package/dist/components/Drawer/index.d.ts +5 -4
  112. package/dist/components/Drawer/index.d.ts.map +1 -1
  113. package/dist/components/Drawer/index.js +2 -2
  114. package/dist/components/Editor/Editor.module.scss.cjs +17 -17
  115. package/dist/components/Editor/Editor.module.scss.js +17 -17
  116. package/dist/components/EmptyState/EmptyState.module.scss.cjs +11 -11
  117. package/dist/components/EmptyState/EmptyState.module.scss.js +11 -11
  118. package/dist/components/EmptyState/index.cjs +9 -4
  119. package/dist/components/EmptyState/index.d.ts +8 -5
  120. package/dist/components/EmptyState/index.d.ts.map +1 -1
  121. package/dist/components/EmptyState/index.js +9 -4
  122. package/dist/components/Field/Field.module.scss.cjs +5 -5
  123. package/dist/components/Field/Field.module.scss.js +5 -5
  124. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  125. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  126. package/dist/components/Grid/Grid.module.scss.cjs +54 -54
  127. package/dist/components/Grid/Grid.module.scss.js +54 -54
  128. package/dist/components/Header/Header.module.scss.cjs +33 -33
  129. package/dist/components/Header/Header.module.scss.js +33 -33
  130. package/dist/components/Icon/Icon.module.scss.cjs +30 -33
  131. package/dist/components/Icon/Icon.module.scss.js +30 -33
  132. package/dist/components/Icon/index.cjs +15 -14
  133. package/dist/components/Icon/index.d.ts +23 -12
  134. package/dist/components/Icon/index.d.ts.map +1 -1
  135. package/dist/components/Icon/index.js +15 -14
  136. package/dist/components/IconButton/IconButton.module.scss.cjs +12 -12
  137. package/dist/components/IconButton/IconButton.module.scss.js +12 -12
  138. package/dist/components/IconButton/index.d.ts +4 -4
  139. package/dist/components/IconButton/index.d.ts.map +1 -1
  140. package/dist/components/Input/Input.module.scss.cjs +15 -21
  141. package/dist/components/Input/Input.module.scss.js +15 -21
  142. package/dist/components/Input/index.cjs +2 -14
  143. package/dist/components/Input/index.d.ts +0 -2
  144. package/dist/components/Input/index.d.ts.map +1 -1
  145. package/dist/components/Input/index.js +2 -14
  146. package/dist/components/Link/Link.module.scss.cjs +24 -16
  147. package/dist/components/Link/Link.module.scss.js +24 -16
  148. package/dist/components/Link/index.cjs +13 -2
  149. package/dist/components/Link/index.d.ts +10 -3
  150. package/dist/components/Link/index.d.ts.map +1 -1
  151. package/dist/components/Link/index.js +13 -2
  152. package/dist/components/List/List.module.scss.cjs +23 -19
  153. package/dist/components/List/List.module.scss.js +23 -19
  154. package/dist/components/List/index.cjs +7 -7
  155. package/dist/components/List/index.d.ts +10 -7
  156. package/dist/components/List/index.d.ts.map +1 -1
  157. package/dist/components/List/index.js +7 -7
  158. package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
  159. package/dist/components/Listbox/Listbox.module.scss.js +8 -8
  160. package/dist/components/Loading/Loading.module.scss.cjs +30 -30
  161. package/dist/components/Loading/Loading.module.scss.js +30 -30
  162. package/dist/components/Loading/index.cjs +5 -5
  163. package/dist/components/Loading/index.d.ts +8 -7
  164. package/dist/components/Loading/index.d.ts.map +1 -1
  165. package/dist/components/Loading/index.js +5 -5
  166. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  167. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  168. package/dist/components/Menu/Menu.module.scss.cjs +14 -14
  169. package/dist/components/Menu/Menu.module.scss.js +14 -14
  170. package/dist/components/Message/Message.module.scss.cjs +20 -20
  171. package/dist/components/Message/Message.module.scss.js +20 -20
  172. package/dist/components/Message/index.cjs +1 -1
  173. package/dist/components/Message/index.d.ts +1 -1
  174. package/dist/components/Message/index.js +1 -1
  175. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +29 -29
  176. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +29 -29
  177. package/dist/components/Pagination/Pagination.module.scss.cjs +10 -10
  178. package/dist/components/Pagination/Pagination.module.scss.js +10 -10
  179. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  180. package/dist/components/Popover/Popover.module.scss.js +10 -10
  181. package/dist/components/Progress/Progress.module.scss.cjs +28 -25
  182. package/dist/components/Progress/Progress.module.scss.js +28 -25
  183. package/dist/components/Progress/index.cjs +21 -12
  184. package/dist/components/Progress/index.d.ts +10 -6
  185. package/dist/components/Progress/index.d.ts.map +1 -1
  186. package/dist/components/Progress/index.js +21 -12
  187. package/dist/components/Prompt/Prompt.module.scss.cjs +30 -30
  188. package/dist/components/Prompt/Prompt.module.scss.js +30 -30
  189. package/dist/components/Prompt/index.cjs +7 -7
  190. package/dist/components/Prompt/index.d.ts +11 -9
  191. package/dist/components/Prompt/index.d.ts.map +1 -1
  192. package/dist/components/Prompt/index.js +7 -7
  193. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +20 -17
  194. package/dist/components/RadioGroup/RadioGroup.module.scss.js +20 -17
  195. package/dist/components/RadioGroup/index.cjs +10 -5
  196. package/dist/components/RadioGroup/index.d.ts +11 -7
  197. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  198. package/dist/components/RadioGroup/index.js +10 -5
  199. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +5 -5
  200. package/dist/components/ScrollArea/ScrollArea.module.scss.js +5 -5
  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 +26 -20
  204. package/dist/components/Select/index.d.ts +5 -5
  205. package/dist/components/Select/index.d.ts.map +1 -1
  206. package/dist/components/Select/index.js +26 -20
  207. package/dist/components/Separator/Separator.module.scss.cjs +25 -19
  208. package/dist/components/Separator/Separator.module.scss.js +25 -19
  209. package/dist/components/Separator/index.cjs +10 -8
  210. package/dist/components/Separator/index.d.ts +4 -2
  211. package/dist/components/Separator/index.d.ts.map +1 -1
  212. package/dist/components/Separator/index.js +10 -8
  213. package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
  214. package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
  215. package/dist/components/Sidebar/index.cjs +3 -3
  216. package/dist/components/Sidebar/index.js +3 -3
  217. package/dist/components/Skeleton/Skeleton.module.scss.cjs +46 -46
  218. package/dist/components/Skeleton/Skeleton.module.scss.js +46 -46
  219. package/dist/components/Skeleton/index.cjs +7 -7
  220. package/dist/components/Skeleton/index.d.ts +8 -7
  221. package/dist/components/Skeleton/index.d.ts.map +1 -1
  222. package/dist/components/Skeleton/index.js +7 -7
  223. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  224. package/dist/components/Slider/Slider.module.scss.js +12 -12
  225. package/dist/components/Switch/Switch.module.scss.cjs +9 -9
  226. package/dist/components/Switch/Switch.module.scss.js +9 -9
  227. package/dist/components/Table/Table.module.scss.cjs +15 -15
  228. package/dist/components/Table/Table.module.scss.js +15 -15
  229. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  230. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  231. package/dist/components/TableOfContents/index.cjs +1 -1
  232. package/dist/components/TableOfContents/index.js +1 -1
  233. package/dist/components/Tabs/Tabs.module.scss.cjs +18 -18
  234. package/dist/components/Tabs/Tabs.module.scss.js +18 -18
  235. package/dist/components/Tabs/index.cjs +5 -6
  236. package/dist/components/Tabs/index.d.ts +8 -6
  237. package/dist/components/Tabs/index.d.ts.map +1 -1
  238. package/dist/components/Tabs/index.js +5 -6
  239. package/dist/components/Text/Text.module.scss.cjs +105 -105
  240. package/dist/components/Text/Text.module.scss.js +105 -105
  241. package/dist/components/Text/index.cjs +5 -9
  242. package/dist/components/Text/index.d.ts +15 -11
  243. package/dist/components/Text/index.d.ts.map +1 -1
  244. package/dist/components/Text/index.js +5 -9
  245. package/dist/components/Textarea/Textarea.module.scss.cjs +22 -28
  246. package/dist/components/Textarea/Textarea.module.scss.js +22 -28
  247. package/dist/components/Textarea/index.cjs +3 -10
  248. package/dist/components/Textarea/index.d.ts +0 -2
  249. package/dist/components/Textarea/index.d.ts.map +1 -1
  250. package/dist/components/Textarea/index.js +3 -10
  251. package/dist/components/Theme/index.cjs +20 -4
  252. package/dist/components/Theme/index.d.ts +6 -12
  253. package/dist/components/Theme/index.d.ts.map +1 -1
  254. package/dist/components/Theme/index.js +20 -4
  255. package/dist/components/ThemeToggle/ThemeButton.cjs +51 -0
  256. package/dist/components/ThemeToggle/ThemeButton.d.ts +16 -0
  257. package/dist/components/ThemeToggle/ThemeButton.d.ts.map +1 -0
  258. package/dist/components/ThemeToggle/ThemeButton.js +34 -0
  259. package/dist/components/ThemeToggle/ThemeToggle.module.scss.cjs +6 -9
  260. package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +6 -9
  261. package/dist/components/ThemeToggle/icons.cjs +48 -0
  262. package/dist/components/ThemeToggle/icons.d.ts +10 -0
  263. package/dist/components/ThemeToggle/icons.d.ts.map +1 -0
  264. package/dist/components/ThemeToggle/icons.js +48 -0
  265. package/dist/components/ThemeToggle/index.cjs +5 -74
  266. package/dist/components/ThemeToggle/index.d.ts +5 -8
  267. package/dist/components/ThemeToggle/index.d.ts.map +1 -1
  268. package/dist/components/ThemeToggle/index.js +3 -72
  269. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +18 -15
  270. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +18 -15
  271. package/dist/components/ThinkingIndicator/index.cjs +7 -8
  272. package/dist/components/ThinkingIndicator/index.d.ts +6 -5
  273. package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
  274. package/dist/components/ThinkingIndicator/index.js +7 -8
  275. package/dist/components/Toast/Toast.module.scss.cjs +28 -29
  276. package/dist/components/Toast/Toast.module.scss.js +29 -30
  277. package/dist/components/Toast/index.cjs +28 -30
  278. package/dist/components/Toast/index.d.ts +9 -8
  279. package/dist/components/Toast/index.d.ts.map +1 -1
  280. package/dist/components/Toast/index.js +28 -30
  281. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +21 -19
  282. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +22 -20
  283. package/dist/components/ToggleGroup/index.cjs +4 -5
  284. package/dist/components/ToggleGroup/index.d.ts +7 -6
  285. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  286. package/dist/components/ToggleGroup/index.js +4 -5
  287. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  288. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  289. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +1 -1
  290. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
  291. package/dist/data-table-virtual.cjs +3 -2
  292. package/dist/data-table-virtual.js +3 -2
  293. package/dist/data-table.cjs +1 -1
  294. package/dist/data-table.js +1 -1
  295. package/dist/datepicker.cjs +23 -11
  296. package/dist/datepicker.js +23 -11
  297. package/dist/index.cjs +5 -1
  298. package/dist/index.d.ts +8 -8
  299. package/dist/index.d.ts.map +1 -1
  300. package/dist/index.js +6 -2
  301. package/dist/measurements/generated.cjs +37 -93
  302. package/dist/measurements/generated.d.ts +37 -92
  303. package/dist/measurements/generated.d.ts.map +1 -1
  304. package/dist/measurements/generated.js +37 -93
  305. package/dist/measurements/index.d.ts +1 -1
  306. package/dist/measurements/index.d.ts.map +1 -1
  307. package/dist/utils/seed-derivation.cjs +0 -1
  308. package/dist/utils/seed-derivation.d.ts +1 -3
  309. package/dist/utils/seed-derivation.d.ts.map +1 -1
  310. package/dist/utils/seed-derivation.js +0 -1
  311. package/dist/utils/theme-presets.cjs +5 -10
  312. package/dist/utils/theme-presets.d.ts +1 -2
  313. package/dist/utils/theme-presets.d.ts.map +1 -1
  314. package/dist/utils/theme-presets.js +5 -10
  315. package/fragments.json +1 -1
  316. package/package.json +5 -8
  317. package/src/assets/nav-glyph.module.scss +166 -0
  318. package/src/assets/nav-glyph.tsx +188 -0
  319. package/src/components/Accordion/Accordion.module.scss +5 -3
  320. package/src/components/Alert/Alert.contract.json +18 -18
  321. package/src/components/Alert/Alert.module.scss +50 -64
  322. package/src/components/Alert/index.tsx +24 -17
  323. package/src/components/AppShell/AppShell.contract.json +7 -7
  324. package/src/components/AppShell/AppShell.module.scss +49 -17
  325. package/src/components/AppShell/index.tsx +2 -2
  326. package/src/components/Avatar/Avatar.module.scss +0 -1
  327. package/src/components/Badge/Badge.contract.json +58 -22
  328. package/src/components/Badge/Badge.module.scss +72 -47
  329. package/src/components/Badge/index.tsx +34 -17
  330. package/src/components/BentoGrid/BentoGrid.module.scss +4 -8
  331. package/src/components/Box/Box.module.scss +7 -6
  332. package/src/components/Breadcrumbs/Breadcrumbs.module.scss +15 -5
  333. package/src/components/Breadcrumbs/index.tsx +5 -1
  334. package/src/components/Button/Button.module.scss +261 -186
  335. package/src/components/Button/index.tsx +41 -28
  336. package/src/components/ButtonGroup/ButtonGroup.contract.json +5 -5
  337. package/src/components/ButtonGroup/ButtonGroup.module.scss +8 -6
  338. package/src/components/Card/Card.consumer-fixture.module.scss +5 -2
  339. package/src/components/Card/Card.module.scss +73 -133
  340. package/src/components/Card/index.tsx +41 -36
  341. package/src/components/Chart/Chart.module.scss +6 -5
  342. package/src/components/Checkbox/Checkbox.contract.json +4 -3
  343. package/src/components/Checkbox/Checkbox.module.scss +16 -32
  344. package/src/components/Checkbox/index.tsx +6 -8
  345. package/src/components/Chip/Chip.contract.json +10 -10
  346. package/src/components/Chip/Chip.module.scss +23 -22
  347. package/src/components/Chip/index.tsx +10 -6
  348. package/src/components/CodeBlock/CodeBlock.module.scss +47 -70
  349. package/src/components/CodeBlock/index.tsx +23 -16
  350. package/src/components/Collapsible/Collapsible.module.scss +1 -7
  351. package/src/components/ColorPicker/ColorPicker.module.scss +20 -13
  352. package/src/components/ColorPicker/index.tsx +1 -0
  353. package/src/components/Combobox/Combobox.module.scss +16 -19
  354. package/src/components/Combobox/index.tsx +10 -1
  355. package/src/components/Command/Command.contract.json +7 -1
  356. package/src/components/Command/Command.module.scss +19 -21
  357. package/src/components/Command/index.tsx +7 -1
  358. package/src/components/ComponentDefaults/ComponentDefaults.contract.json +91 -0
  359. package/src/components/ConversationList/ConversationList.module.scss +2 -3
  360. package/src/components/ConversationList/index.tsx +2 -2
  361. package/src/components/DataTable/DataTable.module.scss +12 -9
  362. package/src/components/DataTable/DataTable.virtual.tsx +3 -2
  363. package/src/components/DataTable/index.tsx +1 -1
  364. package/src/components/DatePicker/DatePicker.module.scss +32 -42
  365. package/src/components/DatePicker/index.tsx +18 -7
  366. package/src/components/Dialog/Dialog.module.scss +23 -29
  367. package/src/components/Dialog/index.tsx +7 -5
  368. package/src/components/Drawer/Drawer.contract.json +6 -6
  369. package/src/components/Drawer/Drawer.module.scss +123 -64
  370. package/src/components/Drawer/index.tsx +7 -5
  371. package/src/components/Editor/Editor.contract.json +1 -1
  372. package/src/components/Editor/Editor.module.scss +26 -13
  373. package/src/components/EmptyState/EmptyState.contract.json +6 -6
  374. package/src/components/EmptyState/EmptyState.module.scss +31 -23
  375. package/src/components/EmptyState/index.tsx +17 -9
  376. package/src/components/Field/Field.module.scss +2 -1
  377. package/src/components/Fieldset/Fieldset.module.scss +5 -4
  378. package/src/components/Form/Form.contract.json +4 -4
  379. package/src/components/Grid/Grid.module.scss +2 -2
  380. package/src/components/Header/Header.contract.json +2 -2
  381. package/src/components/Header/Header.module.scss +24 -36
  382. package/src/components/Icon/Icon.contract.json +19 -23
  383. package/src/components/Icon/Icon.module.scss +13 -12
  384. package/src/components/Icon/index.tsx +31 -31
  385. package/src/components/IconButton/IconButton.contract.json +8 -8
  386. package/src/components/IconButton/IconButton.module.scss +13 -4
  387. package/src/components/IconButton/index.tsx +4 -4
  388. package/src/components/Input/Input.contract.json +0 -13
  389. package/src/components/Input/Input.module.scss +4 -54
  390. package/src/components/Input/index.tsx +2 -18
  391. package/src/components/Link/Link.contract.json +19 -11
  392. package/src/components/Link/Link.module.scss +24 -10
  393. package/src/components/Link/index.tsx +26 -5
  394. package/src/components/List/List.contract.json +11 -11
  395. package/src/components/List/List.module.scss +10 -5
  396. package/src/components/List/index.tsx +17 -13
  397. package/src/components/Listbox/Listbox.module.scss +14 -20
  398. package/src/components/Loading/Loading.contract.json +6 -6
  399. package/src/components/Loading/Loading.module.scss +29 -26
  400. package/src/components/Loading/index.tsx +13 -12
  401. package/src/components/Markdown/Markdown.module.scss +2 -1
  402. package/src/components/Menu/Menu.contract.json +5 -5
  403. package/src/components/Menu/Menu.module.scss +11 -10
  404. package/src/components/Message/Message.contract.json +5 -5
  405. package/src/components/Message/Message.module.scss +8 -6
  406. package/src/components/Message/index.tsx +2 -2
  407. package/src/components/NavigationMenu/NavigationMenu.module.scss +22 -67
  408. package/src/components/Pagination/Pagination.module.scss +7 -14
  409. package/src/components/Popover/Popover.contract.json +4 -4
  410. package/src/components/Popover/Popover.module.scss +24 -23
  411. package/src/components/Progress/Progress.contract.json +11 -11
  412. package/src/components/Progress/Progress.module.scss +13 -8
  413. package/src/components/Progress/index.tsx +34 -16
  414. package/src/components/Prompt/Prompt.contract.json +12 -12
  415. package/src/components/Prompt/Prompt.module.scss +40 -47
  416. package/src/components/Prompt/index.tsx +17 -15
  417. package/src/components/RadioGroup/RadioGroup.contract.json +6 -4
  418. package/src/components/RadioGroup/RadioGroup.module.scss +38 -32
  419. package/src/components/RadioGroup/index.tsx +23 -10
  420. package/src/components/ScrollArea/ScrollArea.module.scss +30 -33
  421. package/src/components/Select/Select.module.scss +19 -18
  422. package/src/components/Select/index.tsx +26 -24
  423. package/src/components/Separator/Separator.contract.json +10 -10
  424. package/src/components/Separator/Separator.module.scss +24 -40
  425. package/src/components/Separator/index.tsx +16 -11
  426. package/src/components/Sidebar/Sidebar.contract.json +1 -1
  427. package/src/components/Sidebar/Sidebar.module.scss +92 -95
  428. package/src/components/Sidebar/index.tsx +3 -3
  429. package/src/components/Skeleton/Skeleton.contract.json +9 -9
  430. package/src/components/Skeleton/Skeleton.module.scss +23 -16
  431. package/src/components/Skeleton/index.tsx +16 -15
  432. package/src/components/Slider/Slider.module.scss +6 -19
  433. package/src/components/Stack/Stack.contract.json +1 -1
  434. package/src/components/Stack/Stack.module.scss +13 -12
  435. package/src/components/Switch/Switch.module.scss +44 -35
  436. package/src/components/Table/Table.module.scss +9 -13
  437. package/src/components/TableOfContents/TableOfContents.module.scss +12 -18
  438. package/src/components/TableOfContents/index.tsx +1 -1
  439. package/src/components/Tabs/Tabs.contract.json +14 -14
  440. package/src/components/Tabs/Tabs.module.scss +27 -31
  441. package/src/components/Tabs/index.tsx +15 -12
  442. package/src/components/Text/Text.contract.json +36 -14
  443. package/src/components/Text/Text.module.scss +19 -20
  444. package/src/components/Text/index.tsx +23 -21
  445. package/src/components/Textarea/Textarea.contract.json +0 -13
  446. package/src/components/Textarea/Textarea.module.scss +24 -52
  447. package/src/components/Textarea/index.tsx +3 -14
  448. package/src/components/Theme/Theme.contract.json +9 -8
  449. package/src/components/Theme/index.tsx +39 -12
  450. package/src/components/ThemeToggle/ThemeButton.tsx +49 -0
  451. package/src/components/ThemeToggle/ThemeToggle.module.scss +21 -44
  452. package/src/components/ThemeToggle/icons.tsx +46 -0
  453. package/src/components/ThemeToggle/index.tsx +8 -90
  454. package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +11 -10
  455. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +9 -7
  456. package/src/components/ThinkingIndicator/index.tsx +12 -14
  457. package/src/components/Toast/Toast.contract.json +29 -13
  458. package/src/components/Toast/Toast.module.scss +49 -104
  459. package/src/components/Toast/index.tsx +39 -34
  460. package/src/components/ToggleGroup/ToggleGroup.contract.json +13 -13
  461. package/src/components/ToggleGroup/ToggleGroup.module.scss +16 -46
  462. package/src/components/ToggleGroup/index.tsx +11 -11
  463. package/src/components/Tooltip/Tooltip.contract.json +3 -3
  464. package/src/components/Tooltip/Tooltip.module.scss +16 -10
  465. package/src/components/VisuallyHidden/VisuallyHidden.module.scss +4 -14
  466. package/src/index.ts +14 -10
  467. package/src/measurements/MeasurementTargets.module.scss +6 -7
  468. package/src/measurements/generated.ts +38 -96
  469. package/src/measurements/index.ts +0 -1
  470. package/src/measurements/measurements.json +37 -116
  471. package/src/recipes/_action.scss +4 -4
  472. package/src/recipes/_boolean-range.scss +9 -5
  473. package/src/recipes/_feedback.scss +17 -16
  474. package/src/recipes/_field.scss +28 -20
  475. package/src/recipes/_navigation.scss +84 -29
  476. package/src/recipes/_overlay.scss +143 -43
  477. package/src/recipes/_popup.scss +46 -36
  478. package/src/recipes/_prose.scss +35 -23
  479. package/src/recipes/_representation.scss +10 -9
  480. package/src/recipes/_segmented.scss +1 -1
  481. package/src/recipes/_table-chrome.scss +27 -16
  482. package/src/recipes/_target.scss +2 -4
  483. package/src/recipes/_typography.scss +10 -0
  484. package/src/styles/globals.scss +14 -9
  485. package/src/tokens/_component-properties.scss +19 -1
  486. package/src/tokens/_computed.scss +27 -33
  487. package/src/tokens/_measurements.catalog.generated.css +58 -45
  488. package/src/tokens/_measurements.generated.scss +107 -250
  489. package/src/tokens/_mixins.scss +42 -40
  490. package/src/tokens/_palettes.scss +1 -1
  491. package/src/tokens/_property-registrations.scss +9 -0
  492. package/src/tokens/_seeds.scss +1 -12
  493. package/src/tokens/_variables.scss +71 -59
  494. package/src/utils/seed-derivation.ts +1 -8
  495. package/src/utils/theme-presets.ts +5 -12
  496. package/dist/blocks/AccountSettings.block.d.ts +0 -3
  497. package/dist/blocks/AccountSettings.block.d.ts.map +0 -1
  498. package/dist/blocks/ActivityFeedSkeleton.block.d.ts +0 -3
  499. package/dist/blocks/ActivityFeedSkeleton.block.d.ts.map +0 -1
  500. package/dist/blocks/BlogEditor.block.d.ts +0 -3
  501. package/dist/blocks/BlogEditor.block.d.ts.map +0 -1
  502. package/dist/blocks/ChatInterface.block.d.ts +0 -3
  503. package/dist/blocks/ChatInterface.block.d.ts.map +0 -1
  504. package/dist/blocks/ChatMessages.block.d.ts +0 -3
  505. package/dist/blocks/ChatMessages.block.d.ts.map +0 -1
  506. package/dist/blocks/CheckoutForm.block.d.ts +0 -3
  507. package/dist/blocks/CheckoutForm.block.d.ts.map +0 -1
  508. package/dist/blocks/CommandPalette.block.d.ts +0 -3
  509. package/dist/blocks/CommandPalette.block.d.ts.map +0 -1
  510. package/dist/blocks/ContactForm.block.d.ts +0 -3
  511. package/dist/blocks/ContactForm.block.d.ts.map +0 -1
  512. package/dist/blocks/DashboardPage.block.d.ts +0 -3
  513. package/dist/blocks/DashboardPage.block.d.ts.map +0 -1
  514. package/dist/blocks/DashboardSkeleton.block.d.ts +0 -3
  515. package/dist/blocks/DashboardSkeleton.block.d.ts.map +0 -1
  516. package/dist/blocks/DataTable.block.d.ts +0 -3
  517. package/dist/blocks/DataTable.block.d.ts.map +0 -1
  518. package/dist/blocks/EmptyState.block.d.ts +0 -3
  519. package/dist/blocks/EmptyState.block.d.ts.map +0 -1
  520. package/dist/blocks/FAQSection.block.d.ts +0 -3
  521. package/dist/blocks/FAQSection.block.d.ts.map +0 -1
  522. package/dist/blocks/FeatureGrid.block.d.ts +0 -3
  523. package/dist/blocks/FeatureGrid.block.d.ts.map +0 -1
  524. package/dist/blocks/HeroSection.block.d.ts +0 -3
  525. package/dist/blocks/HeroSection.block.d.ts.map +0 -1
  526. package/dist/blocks/NavigationHeader.block.d.ts +0 -3
  527. package/dist/blocks/NavigationHeader.block.d.ts.map +0 -1
  528. package/dist/blocks/PaginatedTable.block.d.ts +0 -3
  529. package/dist/blocks/PaginatedTable.block.d.ts.map +0 -1
  530. package/dist/blocks/PricingComparison.block.d.ts +0 -3
  531. package/dist/blocks/PricingComparison.block.d.ts.map +0 -1
  532. package/dist/blocks/ProductCard.block.d.ts +0 -3
  533. package/dist/blocks/ProductCard.block.d.ts.map +0 -1
  534. package/dist/blocks/RegistrationForm.block.d.ts +0 -3
  535. package/dist/blocks/RegistrationForm.block.d.ts.map +0 -1
  536. package/dist/blocks/SettingsDrawer.block.d.ts +0 -3
  537. package/dist/blocks/SettingsDrawer.block.d.ts.map +0 -1
  538. package/dist/blocks/SettingsPanel.block.d.ts +0 -3
  539. package/dist/blocks/SettingsPanel.block.d.ts.map +0 -1
  540. package/dist/blocks/ShoppingCart.block.d.ts +0 -3
  541. package/dist/blocks/ShoppingCart.block.d.ts.map +0 -1
  542. package/dist/blocks/StatsCardSkeleton.block.d.ts +0 -3
  543. package/dist/blocks/StatsCardSkeleton.block.d.ts.map +0 -1
  544. package/dist/blocks/TableSkeleton.block.d.ts +0 -3
  545. package/dist/blocks/TableSkeleton.block.d.ts.map +0 -1
  546. package/dist/blocks/ThinkingStates.block.d.ts +0 -3
  547. package/dist/blocks/ThinkingStates.block.d.ts.map +0 -1
  548. package/dist/components/Toggle/index.d.ts +0 -3
  549. package/dist/components/Toggle/index.d.ts.map +0 -1
  550. package/src/components/Toggle/index.ts +0 -7
  551. package/src/tokens/_density.scss +0 -85
@@ -1,52 +1,60 @@
1
1
  @use "../tokens/measurements.generated" as measurements;
2
2
  @use "../tokens/variables" as tokens;
3
+ @use "../tokens/mixins" as mixins;
4
+ @use "overlay";
3
5
  @use "typography";
4
6
 
7
+ $_container-inset: measurements.raw-space(4);
8
+ $_row-pitch: measurements.raw-space(32);
9
+ $_row-inset: measurements.raw-space(8);
10
+ $_separator-size: measurements.target-value("stroke", "hairline");
11
+ $_separator-gap: measurements.raw-space(4);
12
+ /// Rows visible before the viewport scrolls (the half row signals overflow).
13
+ $_viewport-rows: 4.5;
14
+
5
15
  @mixin properties {
6
- --fui-popup-container-inset: var(--fui-raw-space-4, #{measurements.raw-space(4)});
7
- --fui-popup-row-pitch: var(--fui-raw-space-32, #{measurements.raw-space(32)});
8
- --fui-popup-row-block-inset: var(--fui-raw-space-8, #{measurements.raw-space(8)});
9
- --fui-popup-row-inline-inset: var(--fui-raw-space-8, #{measurements.raw-space(8)});
10
- --fui-popup-row-content-gap: var(--fui-raw-space-8, #{measurements.raw-space(8)});
11
- --fui-popup-row-gap: var(
12
- --fui-stroke-hairline,
13
- #{measurements.target-value("stroke", "hairline")}
14
- );
16
+ --fui-popup-container-inset: var(--fui-raw-space-4, #{$_container-inset});
17
+ --fui-popup-row-pitch: var(--fui-raw-space-32, #{$_row-pitch});
18
+ --fui-popup-row-block-inset: var(--fui-raw-space-8, #{$_row-inset});
19
+ --fui-popup-row-inline-inset: var(--fui-raw-space-8, #{$_row-inset});
20
+ --fui-popup-row-content-gap: var(--fui-raw-space-8, #{$_row-inset});
15
21
  --fui-popup-indicator-box: var(--fui-raw-space-16, #{measurements.raw-space(16)});
16
- --fui-popup-separator-size: var(
17
- --fui-stroke-hairline,
18
- #{measurements.target-value("stroke", "hairline")}
19
- );
20
- --fui-popup-separator-gap: var(--fui-raw-space-4, #{measurements.raw-space(4)});
22
+ --fui-popup-separator-size: var(--fui-stroke-hairline, #{$_separator-size});
23
+ --fui-popup-separator-gap: var(--fui-raw-space-4, #{$_separator-gap});
21
24
  --fui-popup-offset: var(--fui-raw-space-4, #{measurements.raw-space(4)});
22
- --fui-popup-viewport-rows: 4.5;
23
- --_fui-popup-effective-row-pitch: var(--fui-popup-row-pitch);
25
+ --fui-popup-viewport-rows: #{$_viewport-rows};
26
+ --_fui-popup-effective-row-pitch: var(--fui-popup-row-pitch, #{$_row-pitch});
24
27
 
25
28
  @media (pointer: coarse) {
26
29
  --_fui-popup-effective-row-pitch: var(--fui-raw-space-48, #{measurements.raw-space(48)});
27
30
  }
28
31
  }
29
32
 
30
- @mixin container {
33
+ /// A pick list drawn in the page flow: the popup box without elevation.
34
+ @mixin inline-container {
31
35
  @include properties;
36
+ @include overlay.surface;
37
+
38
+ padding: var(--fui-popup-container-inset, #{$_container-inset});
39
+ box-shadow: none;
40
+ }
41
+
42
+ /// The floating pick list (Menu, Select, Combobox, Command, DatePicker).
43
+ @mixin container {
44
+ @include inline-container;
32
45
 
33
- box-sizing: border-box;
34
- padding: var(--fui-popup-container-inset);
35
- border: var(--fui-stroke-hairline, #{measurements.target-value("stroke", "hairline")}) solid
36
- var(--fui-border, #{tokens.$fui-border});
37
- border-radius: var(--fui-radius-md, #{tokens.$fui-radius-md});
38
- background: var(--fui-bg-elevated, #{tokens.$fui-bg-elevated});
39
- color: var(--fui-text-primary, #{tokens.$fui-text-primary});
40
46
  box-shadow: var(--fui-shadow-md, #{tokens.$fui-shadow-md});
41
47
  }
42
48
 
43
49
  @mixin viewport {
44
50
  box-sizing: border-box;
45
51
  max-block-size: calc(
46
- 2 * var(--fui-popup-container-inset) + 2 *
52
+ 2 * var(--fui-popup-container-inset, #{$_container-inset}) + 2 *
47
53
  var(--fui-stroke-hairline, #{measurements.target-value("stroke", "hairline")}) +
48
- var(--fui-popup-viewport-rows) * var(--_fui-popup-effective-row-pitch) +
49
- (var(--fui-popup-viewport-rows) - 0.5) * var(--fui-popup-row-gap)
54
+ var(--fui-popup-viewport-rows, #{$_viewport-rows}) *
55
+ var(--_fui-popup-effective-row-pitch, #{$_row-pitch}) +
56
+ (var(--fui-popup-viewport-rows, #{$_viewport-rows}) - 0.5) *
57
+ var(--fui-popup-row-gap, #{tokens.$fui-popup-row-gap})
50
58
  );
51
59
  overflow-y: auto;
52
60
  }
@@ -61,10 +69,11 @@
61
69
  -webkit-tap-highlight-color: transparent;
62
70
  display: flex;
63
71
  align-items: center;
64
- min-block-size: var(--_fui-popup-effective-row-pitch);
65
- padding-block: var(--fui-popup-row-block-inset);
66
- padding-inline: var(--fui-popup-row-inline-inset);
67
- gap: var(--fui-popup-row-content-gap);
72
+ min-block-size: var(--_fui-popup-effective-row-pitch, #{$_row-pitch});
73
+ padding-block: var(--fui-popup-row-block-inset, #{$_row-inset});
74
+ padding-inline: var(--fui-popup-row-inline-inset, #{$_row-inset});
75
+ gap: var(--fui-popup-row-content-gap, #{$_row-inset});
76
+ border-radius: var(--fui-radius-l2, #{tokens.$fui-radius-l2});
68
77
  }
69
78
 
70
79
  @mixin highlight-state {
@@ -80,7 +89,8 @@
80
89
  }
81
90
 
82
91
  @mixin disabled-state {
83
- opacity: 0.5;
92
+ @include mixins.disabled-state;
93
+
84
94
  pointer-events: none;
85
95
  }
86
96
 
@@ -90,13 +100,13 @@
90
100
  box-sizing: border-box;
91
101
  display: flex;
92
102
  align-items: center;
93
- min-block-size: var(--_fui-popup-effective-row-pitch);
94
- padding-inline: var(--fui-popup-row-inline-inset);
103
+ min-block-size: var(--_fui-popup-effective-row-pitch, #{$_row-pitch});
104
+ padding-inline: var(--fui-popup-row-inline-inset, #{$_row-inset});
95
105
  color: var(--fui-text-tertiary, #{tokens.$fui-text-tertiary});
96
106
  }
97
107
 
98
108
  @mixin group-separator {
99
- block-size: var(--fui-popup-separator-size);
100
- margin-block: var(--fui-popup-separator-gap);
109
+ block-size: var(--fui-popup-separator-size, #{$_separator-size});
110
+ margin-block: var(--fui-popup-separator-gap, #{$_separator-gap});
101
111
  background: var(--fui-border, #{tokens.$fui-border});
102
112
  }
@@ -1,4 +1,6 @@
1
+ @use "../tokens/measurements.generated" as measurements;
1
2
  @use "../tokens/mixins" as mixins;
3
+ @use "../tokens/variables" as tokens;
2
4
  @use "typography" as typography;
3
5
 
4
6
  // Block rhythm is owned by the container (owl selectors below). The element
@@ -7,22 +9,26 @@
7
9
  @mixin root {
8
10
  @include typography.role("body-relaxed");
9
11
 
12
+ // Long-form text: no balancing or orphan control (see recipes/typography).
13
+ text-wrap: auto;
14
+
10
15
  > * {
11
16
  margin-block: 0;
12
17
  }
13
18
 
14
19
  > * + * {
15
- margin-block-start: var(--fui-raw-space-12);
20
+ margin-block-start: var(--fui-raw-space-12, #{measurements.raw-space(12)});
16
21
  }
17
22
 
18
23
  > * + :is(h1, h2, h3, h4, h5, h6) {
19
- margin-block-start: var(--fui-raw-space-24);
24
+ margin-block-start: var(--fui-raw-space-24, #{measurements.raw-space(24)});
20
25
  }
21
26
  }
22
27
 
23
28
  @mixin paragraph {
24
29
  @include typography.role("body-relaxed");
25
30
 
31
+ text-wrap: auto;
26
32
  margin-inline: 0;
27
33
  }
28
34
 
@@ -45,16 +51,19 @@
45
51
  @mixin list($kind) {
46
52
  @include typography.role("body-relaxed");
47
53
 
48
- margin: 0;
49
- padding: 0;
54
+ text-wrap: auto;
55
+ margin: var(--fui-raw-space-0, #{measurements.raw-space(0)});
56
+ padding: var(--fui-raw-space-0, #{measurements.raw-space(0)});
50
57
 
51
58
  @if $kind == "none" {
52
59
  display: grid;
53
60
  list-style: none;
54
61
  } @else if $kind == "disc" or $kind == "decimal" or $kind == "icon" {
55
62
  display: grid;
56
- grid-template-columns: minmax(var(--fui-raw-space-12), max-content) minmax(0, 1fr);
57
- column-gap: var(--fui-raw-space-8);
63
+ grid-template-columns:
64
+ minmax(var(--fui-raw-space-12, #{measurements.raw-space(12)}), max-content)
65
+ minmax(0, 1fr);
66
+ column-gap: var(--fui-raw-space-8, #{measurements.raw-space(8)});
58
67
  list-style: none;
59
68
 
60
69
  > li {
@@ -79,7 +88,7 @@
79
88
 
80
89
  > li > :is(ul, ol) {
81
90
  grid-column: 1 / -1;
82
- margin-block-start: var(--fui-raw-space-8);
91
+ margin-block-start: var(--fui-raw-space-8, #{measurements.raw-space(8)});
83
92
  }
84
93
 
85
94
  @if $kind == "disc" {
@@ -106,10 +115,10 @@
106
115
  @mixin inline-code {
107
116
  @include typography.role("code");
108
117
 
109
- padding-block: var(--fui-raw-space-2);
110
- padding-inline: var(--fui-raw-space-4);
111
- border-radius: var(--fui-radius-sm);
112
- background: var(--fui-bg-tertiary);
118
+ padding-block: var(--fui-raw-space-2, #{measurements.raw-space(2)});
119
+ padding-inline: var(--fui-raw-space-4, #{measurements.raw-space(4)});
120
+ border-radius: var(--fui-radius-sm, #{tokens.$fui-radius-sm});
121
+ background: var(--fui-bg-tertiary, #{tokens.$fui-bg-tertiary});
113
122
  overflow-wrap: anywhere;
114
123
  }
115
124
 
@@ -117,11 +126,11 @@
117
126
  @include typography.role("code");
118
127
 
119
128
  @if $density == "compact" {
120
- padding-block: var(--fui-raw-space-8);
121
- padding-inline: var(--fui-raw-space-12);
129
+ padding-block: var(--fui-raw-space-8, #{measurements.raw-space(8)});
130
+ padding-inline: var(--fui-raw-space-12, #{measurements.raw-space(12)});
122
131
  } @else if $density == "default" {
123
- padding-block: var(--fui-raw-space-12);
124
- padding-inline: var(--fui-raw-space-16);
132
+ padding-block: var(--fui-raw-space-12, #{measurements.raw-space(12)});
133
+ padding-inline: var(--fui-raw-space-16, #{measurements.raw-space(16)});
125
134
  } @else {
126
135
  @error "Unknown code-block density '#{$density}'. Expected compact or default.";
127
136
  }
@@ -135,21 +144,24 @@
135
144
  @mixin blockquote {
136
145
  @include typography.role("body-relaxed");
137
146
 
138
- margin: 0;
139
- padding-inline-start: var(--fui-raw-space-16);
140
- border-inline-start: var(--fui-raw-space-2) solid var(--fui-border-strong);
147
+ text-wrap: auto;
148
+ margin: var(--fui-raw-space-0, #{measurements.raw-space(0)});
149
+ padding-inline-start: var(--fui-raw-space-16, #{measurements.raw-space(16)});
150
+ border-inline-start: var(--fui-raw-space-2, #{measurements.raw-space(2)}) solid
151
+ var(--fui-border-strong, #{tokens.$fui-border-strong});
141
152
  }
142
153
 
143
154
  @mixin table {
144
155
  @include typography.role("body-compact");
145
156
 
157
+ text-wrap: auto;
146
158
  display: block;
147
159
  max-inline-size: 100%;
148
160
  overflow-x: auto;
149
161
 
150
162
  :is(th, td) {
151
- padding-block: var(--fui-raw-space-8);
152
- padding-inline: var(--fui-raw-space-12);
163
+ padding-block: var(--fui-raw-space-8, #{measurements.raw-space(8)});
164
+ padding-inline: var(--fui-raw-space-12, #{measurements.raw-space(12)});
153
165
  }
154
166
  }
155
167
 
@@ -170,10 +182,10 @@
170
182
  }
171
183
 
172
184
  @mixin rule {
173
- block-size: var(--fui-stroke-hairline);
174
- margin-block: var(--fui-raw-space-24);
185
+ block-size: var(--fui-stroke-hairline, #{tokens.$fui-stroke-hairline});
186
+ margin-block: var(--fui-raw-space-24, #{measurements.raw-space(24)});
175
187
  border: 0;
176
- background: var(--fui-border);
188
+ background: var(--fui-border, #{tokens.$fui-border});
177
189
  }
178
190
 
179
191
  @mixin media {
@@ -1,4 +1,5 @@
1
1
  @use "../tokens/measurements.generated" as measurements;
2
+ @use "../tokens/variables" as tokens;
2
3
  @use "action" as action;
3
4
  @use "typography" as typography;
4
5
 
@@ -106,13 +107,13 @@
106
107
  inline-size: avatar-size($size);
107
108
  block-size: avatar-size($size);
108
109
  overflow: hidden;
109
- border-radius: var(--fui-radius-full);
110
+ border-radius: var(--fui-radius-full, #{tokens.$fui-radius-full});
110
111
  }
111
112
 
112
113
  @mixin avatar-group-item($size) {
113
114
  margin-inline-start: calc(-1 * #{avatar-overlap($size)});
114
115
  border: var(--fui-stroke-default, #{measurements.target-value("stroke", "default")}) solid
115
- var(--fui-bg-primary);
116
+ var(--fui-bg-primary, #{tokens.$fui-bg-primary});
116
117
  }
117
118
 
118
119
  @mixin glyph($size) {
@@ -124,8 +125,8 @@
124
125
  @mixin activity($size) {
125
126
  --_fui-activity-size: #{activity-size($size)};
126
127
 
127
- inline-size: var(--_fui-activity-size);
128
- block-size: var(--_fui-activity-size);
128
+ inline-size: var(--_fui-activity-size, #{activity-size($size)});
129
+ block-size: var(--_fui-activity-size, #{activity-size($size)});
129
130
  display: inline-flex;
130
131
  align-items: center;
131
132
  justify-content: center;
@@ -171,11 +172,11 @@
171
172
 
172
173
  @mixin chart-marker($kind) {
173
174
  @if $kind == "dot" {
174
- inline-size: var(--fui-chart-marker-dot, #{_raw(8)});
175
- block-size: var(--fui-chart-marker-dot, #{_raw(8)});
176
- border-radius: var(--fui-radius-full);
175
+ inline-size: #{_raw(8)};
176
+ block-size: #{_raw(8)};
177
+ border-radius: var(--fui-radius-full, #{tokens.$fui-radius-full});
177
178
  } @else if $kind == "line" or $kind == "dashed" {
178
- inline-size: var(--fui-chart-marker-inline, #{_raw(12)});
179
+ inline-size: #{_raw(12)};
179
180
  block-size: var(--fui-chart-marker-stroke, #{_raw(2)});
180
181
  } @else {
181
182
  @error "Unknown chart marker '#{$kind}'. Expected dot, line, or dashed.";
@@ -187,7 +188,7 @@
187
188
 
188
189
  --_fui-chart-tooltip-item-gap: #{_raw(8)};
189
190
 
190
- min-inline-size: var(--fui-chart-tooltip-min-inline, 100px);
191
+ min-inline-size: var(--fui-layout-measure-inline-floor, #{measurements.target-value("layoutMeasure", "inline-floor")});
191
192
  padding-block: _raw(8);
192
193
  padding-inline: _raw(12);
193
194
  }
@@ -13,7 +13,7 @@
13
13
  box-sizing: border-box;
14
14
  display: inline-flex;
15
15
  align-items: stretch;
16
- min-block-size: var(--_fui-segmented-track);
16
+ min-block-size: var(--_fui-segmented-track, #{action.track($size)});
17
17
  }
18
18
 
19
19
  @mixin item($size) {
@@ -1,4 +1,5 @@
1
1
  @use "../tokens/measurements.generated" as measurements;
2
+ @use "../tokens/variables" as tokens;
2
3
  @use "typography" as typography;
3
4
 
4
5
  @mixin properties {
@@ -16,13 +17,11 @@
16
17
  --fui-table-header-block-inset-compact: var(--fui-raw-space-4, #{measurements.raw-space(4)});
17
18
  --fui-table-header-block-inset-regular: var(--fui-raw-space-8, #{measurements.raw-space(8)});
18
19
  --fui-table-header-block-inset-relaxed: var(--fui-raw-space-12, #{measurements.raw-space(12)});
19
- --fui-table-tree-indent-step: var(--fui-raw-space-24, #{measurements.raw-space(24)});
20
- --fui-table-divider-size: var(
21
- --fui-stroke-hairline,
22
- #{measurements.target-value("stroke", "hairline")}
23
- );
20
+ --fui-table-tree-indent-step: var(--fui-raw-space-24, #{$_tree-indent-step});
21
+ --fui-table-divider-size: var(--fui-stroke-hairline, #{$_divider-size});
24
22
  }
25
23
 
24
+
26
25
  @function row-track($density) {
27
26
  @if $density == "compact" or $density == "regular" or $density == "relaxed" {
28
27
  @return var(--fui-table-row-track-#{$density});
@@ -72,6 +71,14 @@
72
71
  }
73
72
  }
74
73
 
74
+ // Fallbacks are the regular-density defaults; `properties` sets the channels
75
+ // per density on the table root.
76
+ $_tree-indent-step: measurements.raw-space(24);
77
+ $_divider-size: measurements.target-value("stroke", "hairline");
78
+ $_cell-inline-inset: cell-inline-inset("regular");
79
+ $_cell-block-inset: cell-block-inset("regular");
80
+ $_row-track: row-track("regular");
81
+
75
82
  @mixin root {
76
83
  @include properties;
77
84
 
@@ -84,7 +91,7 @@
84
91
 
85
92
  padding-block: var(--fui-raw-space-12, #{measurements.raw-space(12)});
86
93
  padding-inline: 0;
87
- color: var(--fui-text-secondary);
94
+ color: var(--fui-text-secondary, #{tokens.$fui-text-secondary});
88
95
  text-align: start;
89
96
  caption-side: top;
90
97
  }
@@ -92,28 +99,32 @@
92
99
  @mixin header-cell {
93
100
  @include typography.role("ui-compact");
94
101
 
95
- padding-block: var(--_fui-table-header-block-inset, var(--_fui-table-cell-block-inset));
96
- padding-inline: var(--_fui-table-cell-inline-inset);
97
- color: var(--fui-text-secondary);
102
+ padding-block: var(
103
+ --_fui-table-header-block-inset,
104
+ var(--_fui-table-cell-block-inset, #{$_cell-block-inset})
105
+ );
106
+ padding-inline: var(--_fui-table-cell-inline-inset, #{$_cell-inline-inset});
107
+ color: var(--fui-text-secondary, #{tokens.$fui-text-secondary});
98
108
  text-align: start;
99
109
  vertical-align: middle;
100
110
  }
101
111
 
102
112
  @mixin body-cell {
103
- padding-block: var(--_fui-table-cell-block-inset);
104
- padding-inline: var(--_fui-table-cell-inline-inset);
105
- color: var(--fui-text-primary);
113
+ padding-block: var(--_fui-table-cell-block-inset, #{$_cell-block-inset});
114
+ padding-inline: var(--_fui-table-cell-inline-inset, #{$_cell-inline-inset});
115
+ color: var(--fui-text-primary, #{tokens.$fui-text-primary});
106
116
  vertical-align: middle;
107
117
  }
108
118
 
109
119
  @mixin row {
110
- height: var(--_fui-table-row-track);
111
- border-block-end: var(--fui-table-divider-size) solid var(--fui-table-border, var(--fui-border));
120
+ height: var(--_fui-table-row-track, #{$_row-track});
121
+ border-block-end: var(--fui-table-divider-size, #{$_divider-size}) solid
122
+ var(--fui-table-border, var(--fui-border, #{tokens.$fui-border}));
112
123
  }
113
124
 
114
125
  @mixin tree-cell {
115
126
  padding-inline-start: calc(
116
- var(--_fui-table-cell-inline-inset) + var(--_fui-table-tree-depth, 0) *
117
- var(--fui-table-tree-indent-step)
127
+ var(--_fui-table-cell-inline-inset, #{$_cell-inline-inset}) + var(--fui-table-tree-depth, 0) *
128
+ var(--fui-table-tree-indent-step, #{$_tree-indent-step})
118
129
  );
119
130
  }
@@ -13,8 +13,6 @@
13
13
  }
14
14
 
15
15
  @mixin hit-area($role) {
16
- --_fui-target-hit-size: #{hit-size($role)};
17
-
18
16
  position: relative;
19
17
 
20
18
  &::after {
@@ -22,8 +20,8 @@
22
20
  position: absolute;
23
21
  inset-block-start: 50%;
24
22
  inset-inline-start: 50%;
25
- inline-size: max(100%, var(--_fui-target-hit-size));
26
- block-size: max(100%, var(--_fui-target-hit-size));
23
+ inline-size: max(100%, #{hit-size($role)});
24
+ block-size: max(100%, #{hit-size($role)});
27
25
  box-sizing: border-box;
28
26
  transform: translate(-50%, -50%);
29
27
  pointer-events: auto;
@@ -35,4 +35,14 @@
35
35
  font-weight: weight($role);
36
36
  letter-spacing: tracking($role);
37
37
  font-family: font-family($role);
38
+
39
+ // Wrapping is part of the role: titles balance across their lines,
40
+ // descriptions never strand a single word on the last line. Long-form
41
+ // prose opts back out in recipes/prose, where evening out a paragraph
42
+ // only wastes space.
43
+ @if $role == "title-sm" or $role == "title-md" or $role == "title-lg" {
44
+ text-wrap: balance;
45
+ } @else if $role == "body-compact" or $role == "body-relaxed" {
46
+ text-wrap: pretty;
47
+ }
38
48
  }
@@ -25,7 +25,6 @@
25
25
 
26
26
  $fui-brand: #f56138 !default;
27
27
  $fui-neutral: "paper" !default;
28
- $fui-density: "default" !default;
29
28
  $fui-radius-style: "default" !default;
30
29
  // Status seeds (see tokens/_seeds.scss): Cloud Surfaces rust / forest /
31
30
  // amber / slate-blue. Washes derive from these.
@@ -40,7 +39,6 @@ $fui-info: #3d7aa8 !default;
40
39
  @use "../tokens/seeds" with (
41
40
  $fui-brand: $fui-brand,
42
41
  $fui-neutral: $fui-neutral,
43
- $fui-density: $fui-density,
44
42
  $fui-radius-style: $fui-radius-style,
45
43
  $fui-danger: $fui-danger,
46
44
  $fui-success: $fui-success,
@@ -48,6 +46,7 @@ $fui-info: #3d7aa8 !default;
48
46
  $fui-info: $fui-info
49
47
  );
50
48
 
49
+ @use "../tokens/measurements.generated" as measurements;
51
50
  @use "../tokens/variables" as *;
52
51
  @use "../tokens/property-registrations" as prop-reg;
53
52
 
@@ -92,7 +91,7 @@ $fui-info: #3d7aa8 !default;
92
91
  }
93
92
 
94
93
  :where(body) {
95
- margin: 0;
94
+ margin: var(--fui-raw-space-0, #{measurements.raw-space(0)});
96
95
  font-size: inherit;
97
96
  font-family: var(
98
97
  --fui-font-sans,
@@ -160,7 +159,7 @@ $fui-info: #3d7aa8 !default;
160
159
 
161
160
  ::-webkit-scrollbar-thumb {
162
161
  background-color: transparent;
163
- border-radius: 9999px;
162
+ border-radius: var(--fui-radius-full, #{$fui-radius-full});
164
163
  transition: background-color var(--fui-transition-fast, $fui-transition-fast);
165
164
  }
166
165
 
@@ -201,11 +200,17 @@ $fui-info: #3d7aa8 !default;
201
200
  }
202
201
 
203
202
  :where(:focus-visible) {
204
- outline: 1px solid color-mix(in srgb, var(--fui-focus-ring-color, #f56138) 24%, transparent);
205
- outline-offset: var(--fui-focus-ring-offset, 2px);
203
+ outline: var(--fui-stroke-hairline, #{$fui-stroke-hairline}) solid
204
+ color-mix(in srgb, var(--fui-focus-ring-color, #{$fui-focus-ring-color}) 24%, transparent);
205
+ outline-offset: var(--fui-focus-ring-offset, #{$fui-focus-ring-offset});
206
206
  box-shadow:
207
- 0 0 0 calc(var(--fui-focus-ring-width, 2px) + 1px)
208
- color-mix(in srgb, var(--fui-focus-ring-color, #f56138) 10%, transparent),
209
- 0 10px 24px -16px color-mix(in srgb, var(--fui-focus-ring-color, #f56138) 18%, transparent);
207
+ 0 0 0
208
+ calc(
209
+ var(--fui-focus-ring-width, #{$fui-focus-ring-width}) +
210
+ var(--fui-stroke-hairline, #{$fui-stroke-hairline})
211
+ )
212
+ color-mix(in srgb, var(--fui-focus-ring-color, #{$fui-focus-ring-color}) 10%, transparent),
213
+ 0 10px 24px -16px
214
+ color-mix(in srgb, var(--fui-focus-ring-color, #{$fui-focus-ring-color}) 18%, transparent);
210
215
  }
211
216
  }
@@ -5,12 +5,22 @@
5
5
  // doing so would override each component's fallback/inheritance behavior.
6
6
  // Governance reads this file as the explicit vocabulary for dynamic values.
7
7
  @mixin fui-component-property-contract {
8
- --fui-checkbox-radius: var(--fui-radius-sm);
8
+ --fui-chart-marker-stroke: var(--fui-raw-space-2);
9
+ --fui-checkbox-radius: var(--fui-radius-l3);
10
+ --fui-feedback-text-gap: var(--fui-raw-space-4);
11
+ --fui-feedback-transient-gap: var(--fui-raw-space-8);
12
+ --fui-feedback-viewport-inset-top: max(var(--fui-raw-space-16), env(safe-area-inset-top));
13
+ --fui-feedback-viewport-inset-right: max(var(--fui-raw-space-16), env(safe-area-inset-right));
14
+ --fui-feedback-viewport-inset-bottom: max(var(--fui-raw-space-16), env(safe-area-inset-bottom));
15
+ --fui-feedback-viewport-inset-left: max(var(--fui-raw-space-16), env(safe-area-inset-left));
9
16
  --fui-grid-min-child-width: var(--fui-layout-measure-grid-cell);
10
17
  --fui-line-clamp: 2;
11
18
  --fui-navmenu-viewport-height: 0px;
12
19
  --fui-navmenu-viewport-left: 0px;
13
20
  --fui-navmenu-viewport-width: 0px;
21
+ --fui-overlay-arrow-size: var(--fui-raw-space-10);
22
+ --fui-overlay-close-inset: var(--fui-raw-space-12);
23
+ --fui-overlay-section-gap: var(--fui-raw-space-8);
14
24
  --fui-prompt-inset-left: 0px;
15
25
  --fui-select-max-items: 4.5;
16
26
  --fui-stack-direction: column;
@@ -23,4 +33,12 @@
23
33
  --fui-stack-gap-md: var(--fui-stack-gap-sm);
24
34
  --fui-stack-gap-lg: var(--fui-stack-gap-md);
25
35
  --fui-stack-gap-xl: var(--fui-stack-gap-lg);
36
+ --fui-table-tree-depth: 0;
37
+ // G1: Textarea row bounds, authored inline from the minRows/maxRows props.
38
+ --fui-textarea-min-rows: 1;
39
+ --fui-textarea-max-rows: 9999;
40
+ // G2: Progress ring geometry, authored inline from geometry.ts (see Progress/index.tsx).
41
+ --fui-progress-diameter: var(--fui-raw-space-48);
42
+ --fui-progress-dash-full: 0;
43
+ --fui-progress-dash-quarter: 0;
26
44
  }
@@ -11,7 +11,7 @@
11
11
  @use "sass:map";
12
12
  @use "seeds" as seeds;
13
13
  @use "palettes" as palettes;
14
- @use "density" as density;
14
+ @use "measurements.generated" as measurements;
15
15
  @use "radius" as radius;
16
16
  @use "derive" as derive;
17
17
 
@@ -21,12 +21,8 @@
21
21
 
22
22
  // Get the selected configurations
23
23
  $_palette: palettes.get-palette(seeds.$fui-neutral);
24
- $_density: density.get-density(seeds.$fui-density);
25
24
  $_radius: radius.get-radius-style(seeds.$fui-radius-style);
26
25
 
27
- // Derive spacing from density
28
- $_spacing: density.derive-spacing($_density);
29
-
30
26
  // True when the brand seed is the Fragments default (coral). The default
31
27
  // theme uses the exact SCSS-computed accents; any consumer-supplied
32
28
  // $fui-brand keeps the full seed→accent derivation reactive at runtime.
@@ -36,25 +32,25 @@ $brand-is-fragments-default: seeds.$fui-brand == #f56138;
36
32
  // Computed: Base Configuration
37
33
  // --------------------------------------------
38
34
 
39
- $computed-base-font-size: map.get($_density, base-font-size);
40
- $computed-base-unit: map.get($_density, base-unit);
35
+ $computed-base-font-size: measurements.spacing-value("baseFontSize");
36
+ $computed-base-unit: measurements.spacing-value("baseUnit");
41
37
 
42
38
  // --------------------------------------------
43
39
  // Computed: Spacing
44
40
  // --------------------------------------------
45
41
 
46
- $computed-space-px: map.get($_spacing, px);
47
- $computed-space-0-5: map.get($_spacing, 0-5);
48
- $computed-space-0-75: map.get($_spacing, 0-75);
49
- $computed-space-1: map.get($_spacing, 1);
50
- $computed-space-2: map.get($_spacing, 2);
51
- $computed-space-3: map.get($_spacing, 3);
52
- $computed-space-4: map.get($_spacing, 4);
53
- $computed-space-5: map.get($_spacing, 5);
54
- $computed-space-6: map.get($_spacing, 6);
55
- $computed-space-8: map.get($_spacing, 8);
56
- $computed-space-10: map.get($_spacing, 10);
57
- $computed-space-12: map.get($_spacing, 12);
42
+ $computed-space-px: measurements.spacing-step("px");
43
+ $computed-space-0-5: measurements.spacing-step("0-5");
44
+ $computed-space-0-75: measurements.spacing-step("0-75");
45
+ $computed-space-1: measurements.spacing-step("1");
46
+ $computed-space-2: measurements.spacing-step("2");
47
+ $computed-space-3: measurements.spacing-step("3");
48
+ $computed-space-4: measurements.spacing-step("4");
49
+ $computed-space-5: measurements.spacing-step("5");
50
+ $computed-space-6: measurements.spacing-step("6");
51
+ $computed-space-8: measurements.spacing-step("8");
52
+ $computed-space-10: measurements.spacing-step("10");
53
+ $computed-space-12: measurements.spacing-step("12");
58
54
 
59
55
  // --------------------------------------------
60
56
  // Computed: Border Radius
@@ -67,23 +63,21 @@ $computed-radius-xl: radius.radius-value($_radius, xl);
67
63
  $computed-radius-full: radius.radius-full();
68
64
 
69
65
  // --------------------------------------------
70
- // Computed: Component Heights (from density)
66
+ // Computed: Touch targets and navigation (from the spacing record)
71
67
  // --------------------------------------------
72
68
 
73
- // Canonical interactive control ladder
74
- $computed-control-height-xs: density.px-to-rem($_density, map.get($_density, control-height-xs));
75
- $computed-control-height-sm: density.px-to-rem($_density, map.get($_density, control-height-sm));
76
- $computed-control-height-md: density.px-to-rem($_density, map.get($_density, control-height-md));
77
- $computed-control-height-lg: density.px-to-rem($_density, map.get($_density, control-height-lg));
78
-
79
- $computed-touch-sm: density.px-to-rem($_density, map.get($_density, touch-sm));
80
- $computed-touch-md: density.px-to-rem($_density, map.get($_density, touch-md));
81
- $computed-touch-lg: density.px-to-rem($_density, map.get($_density, touch-lg));
69
+ $computed-touch-sm: measurements.spacing-px-to-rem(
70
+ measurements.spacing-nested-value("touch", "sm")
71
+ );
72
+ $computed-touch-md: measurements.spacing-px-to-rem(
73
+ measurements.spacing-nested-value("touch", "md")
74
+ );
75
+ $computed-touch-lg: measurements.spacing-px-to-rem(
76
+ measurements.spacing-nested-value("touch", "lg")
77
+ );
82
78
 
83
- // Sidebar navigation (from density)
84
- $computed-sidebar-item-height: density.px-to-rem(
85
- $_density,
86
- map.get($_density, sidebar-item-height)
79
+ $computed-sidebar-item-height: measurements.spacing-px-to-rem(
80
+ measurements.spacing-value("sidebarItemHeight")
87
81
  );
88
82
 
89
83
  // --------------------------------------------