@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
@@ -1,3 +1,4 @@
1
+ @use "../tokens/measurements.generated" as measurements;
1
2
  @use "../tokens/variables" as tokens;
2
3
  @use "action" as action;
3
4
  @use "feedback" as feedback;
@@ -5,19 +6,19 @@
5
6
  @use "target" as target;
6
7
  @use "typography" as typography;
7
8
 
8
- @function _raw($step, $fallback) {
9
- @return var(--fui-raw-space-#{$step}, $fallback);
9
+ @function _raw($step) {
10
+ @return var(--fui-raw-space-#{$step}, #{measurements.raw-space($step)});
10
11
  }
11
12
 
12
13
  @function dialog-max($size) {
13
14
  @if $size == "sm" {
14
- @return var(--fui-overlay-dialog-max-inline-sm, 384px);
15
+ @return var(--fui-overlay-dialog-sm, #{measurements.target-value("overlay", "dialog-sm")});
15
16
  } @else if $size == "md" {
16
- @return var(--fui-overlay-dialog-max-inline-md, 448px);
17
+ @return var(--fui-overlay-dialog-md, #{measurements.target-value("overlay", "dialog-md")});
17
18
  } @else if $size == "lg" {
18
- @return var(--fui-overlay-dialog-max-inline-lg, 576px);
19
+ @return var(--fui-overlay-dialog-lg, #{measurements.target-value("overlay", "dialog-lg")});
19
20
  } @else if $size == "xl" {
20
- @return var(--fui-overlay-dialog-max-inline-xl, 768px);
21
+ @return var(--fui-overlay-dialog-xl, #{measurements.target-value("overlay", "dialog-xl")});
21
22
  }
22
23
 
23
24
  @error "Unknown dialog overlay size '#{$size}'. Expected sm, md, lg, or xl.";
@@ -25,13 +26,13 @@
25
26
 
26
27
  @function drawer-inline($size) {
27
28
  @if $size == "sm" {
28
- @return var(--fui-overlay-drawer-inline-sm, 320px);
29
+ @return var(--fui-overlay-drawer-sm, #{measurements.target-value("overlay", "drawer-sm")});
29
30
  } @else if $size == "md" {
30
- @return var(--fui-overlay-drawer-inline-md, 384px);
31
+ @return var(--fui-overlay-drawer-md, #{measurements.target-value("overlay", "drawer-md")});
31
32
  } @else if $size == "lg" {
32
- @return var(--fui-overlay-drawer-inline-lg, 512px);
33
+ @return var(--fui-overlay-drawer-lg, #{measurements.target-value("overlay", "drawer-lg")});
33
34
  } @else if $size == "xl" {
34
- @return var(--fui-overlay-drawer-inline-xl, 768px);
35
+ @return var(--fui-overlay-drawer-xl, #{measurements.target-value("overlay", "drawer-xl")});
35
36
  }
36
37
 
37
38
  @error "Unknown side-drawer size '#{$size}'. Expected sm, md, lg, or xl.";
@@ -51,22 +52,43 @@
51
52
  @error "Unknown block-drawer size '#{$size}'. Expected sm, md, lg, or xl.";
52
53
  }
53
54
 
55
+ /// The translate distance that parks a side panel fully off-screen.
56
+ /// A side panel is inset from the viewport edge by the safe-area frame, so
57
+ /// translating it by its own width alone stops with that inset still on
58
+ /// screen — a sliver of elevated surface, edge and shadow painted at the
59
+ /// border for the whole entrance. The offset has to clear the frame too.
60
+ /// Returned as a distance, not a `transform`, so callers can compose it
61
+ /// (Drawer adds its swipe offset on the same axis).
62
+ @function side-panel-offscreen($side) {
63
+ @if $side == "start" {
64
+ @return calc(-100% - var(--_fui-overlay-safe-left, #{_raw(16)}));
65
+ } @else if $side == "end" {
66
+ @return calc(100% + var(--_fui-overlay-safe-right, #{_raw(16)}));
67
+ } @else if $side == "top" {
68
+ @return calc(-100% - var(--_fui-overlay-safe-top, #{_raw(16)}));
69
+ } @else if $side == "bottom" {
70
+ @return calc(100% + var(--_fui-overlay-safe-bottom, #{_raw(16)}));
71
+ }
72
+
73
+ @error "Unknown side panel side '#{$side}'. Expected start, end, top, or bottom.";
74
+ }
75
+
54
76
  @mixin safe-viewport {
55
77
  --_fui-overlay-safe-top: var(
56
78
  --fui-feedback-viewport-inset-top,
57
- max(var(--fui-raw-space-16, 16px), env(safe-area-inset-top))
79
+ max(var(--fui-raw-space-16, #{measurements.raw-space(16)}), env(safe-area-inset-top))
58
80
  );
59
81
  --_fui-overlay-safe-bottom: var(
60
82
  --fui-feedback-viewport-inset-bottom,
61
- max(var(--fui-raw-space-16, 16px), env(safe-area-inset-bottom))
83
+ max(var(--fui-raw-space-16, #{measurements.raw-space(16)}), env(safe-area-inset-bottom))
62
84
  );
63
85
  --_fui-overlay-safe-left: var(
64
86
  --fui-feedback-viewport-inset-left,
65
- max(var(--fui-raw-space-16, 16px), env(safe-area-inset-left))
87
+ max(var(--fui-raw-space-16, #{measurements.raw-space(16)}), env(safe-area-inset-left))
66
88
  );
67
89
  --_fui-overlay-safe-right: var(
68
90
  --fui-feedback-viewport-inset-right,
69
- max(var(--fui-raw-space-16, 16px), env(safe-area-inset-right))
91
+ max(var(--fui-raw-space-16, #{measurements.raw-space(16)}), env(safe-area-inset-right))
70
92
  );
71
93
  --_fui-overlay-safe-inline: calc(
72
94
  100dvw - var(--_fui-overlay-safe-left) - var(--_fui-overlay-safe-right)
@@ -76,24 +98,73 @@
76
98
  );
77
99
  }
78
100
 
79
- @mixin modal-shell {
101
+ /// Scrim behind any modal surface. Open/close transitions stay with the caller.
102
+ @mixin backdrop {
103
+ position: fixed;
104
+ z-index: var(--fui-overlay-layer-backdrop, #{tokens.$fui-overlay-layer-backdrop});
105
+ inset: 0;
106
+ background-color: var(--fui-backdrop, #{tokens.$fui-backdrop});
107
+ }
108
+
109
+ /// The Drawer geometry for an edge-anchored modal panel: fixed on the modal
110
+ /// layer, inset by the safe-area frame, one drawer width. Callers must also
111
+ /// include `safe-viewport` somewhere on or above the panel. $side: start | end.
112
+ @mixin side-panel-geometry($side) {
113
+ position: fixed;
114
+ z-index: var(--fui-overlay-layer-modal, #{tokens.$fui-overlay-layer-modal});
115
+ display: flex;
116
+ flex-direction: column;
117
+ overflow: hidden;
118
+ inset-block: var(--_fui-overlay-safe-top, #{_raw(16)})
119
+ var(--_fui-overlay-safe-bottom, #{_raw(16)});
120
+ inline-size: min(
121
+ #{drawer-inline("sm")},
122
+ var(--_fui-overlay-safe-inline, calc(100dvw - #{_raw(32)}))
123
+ );
124
+
125
+ @if $side == "start" {
126
+ inset-inline-start: var(--_fui-overlay-safe-left, #{_raw(16)});
127
+ } @else if $side == "end" {
128
+ inset-inline-end: var(--_fui-overlay-safe-right, #{_raw(16)});
129
+ } @else {
130
+ @error "Unknown side panel side '#{$side}'. Expected start or end.";
131
+ }
132
+ }
133
+
134
+ /// A complete side panel for hosts that are not the Drawer component
135
+ /// (mobile navigation): the floating surface on the Drawer geometry.
136
+ @mixin side-panel($side) {
137
+ @include surface;
138
+ @include safe-viewport;
80
139
  @include typography.role("body-compact");
140
+ @include side-panel-geometry($side);
141
+ }
81
142
 
143
+ /// Every floating panel (modal, drawer, popover, popup list, toast) is the
144
+ /// same object: elevated fill, hairline edge, the outer radius level, one shadow.
145
+ @mixin surface {
82
146
  box-sizing: border-box;
83
- max-block-size: var(--_fui-overlay-safe-block, calc(100dvh - #{_raw(32, 32px)}));
84
- overflow: auto;
85
147
  color: var(--fui-text-primary, #{tokens.$fui-text-primary});
86
148
  background-color: var(--fui-bg-elevated, #{tokens.$fui-bg-elevated});
87
- border: var(--fui-stroke-hairline, 1px) solid var(--fui-border, #{tokens.$fui-border});
88
- border-radius: var(--fui-radius-lg, #{tokens.$fui-radius-lg});
149
+ border: var(--fui-stroke-hairline, #{tokens.$fui-stroke-hairline}) solid
150
+ var(--fui-border, #{tokens.$fui-border});
151
+ border-radius: var(--fui-radius-l1, #{tokens.$fui-radius-l1});
89
152
  box-shadow: var(--fui-shadow-md, #{tokens.$fui-shadow-md});
90
153
  }
91
154
 
155
+ @mixin modal-shell {
156
+ @include surface;
157
+ @include typography.role("body-compact");
158
+
159
+ max-block-size: var(--_fui-overlay-safe-block, calc(100dvh - #{_raw(32)}));
160
+ overflow: auto;
161
+ }
162
+
92
163
  @mixin _section-inline-inset {
93
- padding-inline: var(--fui-overlay-inline-inset, #{surface.inset("roomy")});
164
+ padding-inline: #{surface.inset("roomy")};
94
165
 
95
166
  @media (max-width: 479px) {
96
- padding-inline: var(--fui-overlay-inline-inset-narrow, #{surface.inset("default")});
167
+ padding-inline: #{surface.inset("default")};
97
168
  }
98
169
  }
99
170
 
@@ -101,15 +172,15 @@
101
172
  @include _section-inline-inset;
102
173
 
103
174
  display: grid;
104
- gap: var(--fui-overlay-section-gap, #{_raw(8, 8px)});
105
- padding-block: var(--fui-overlay-header-block-inset, #{_raw(12, 12px)});
175
+ gap: var(--fui-overlay-section-gap, #{_raw(8)});
176
+ padding-block: #{_raw(12)};
106
177
  }
107
178
 
108
179
  @mixin body {
109
180
  @include _section-inline-inset;
110
181
  @include typography.role("body-compact");
111
182
 
112
- padding-block: 0 var(--fui-overlay-body-block-end-inset, #{_raw(12, 12px)});
183
+ padding-block: 0 #{_raw(12)};
113
184
  }
114
185
 
115
186
  @mixin footer {
@@ -118,8 +189,11 @@
118
189
  display: flex;
119
190
  align-items: center;
120
191
  justify-content: flex-end;
121
- gap: var(--fui-overlay-section-gap, #{_raw(8, 8px)});
122
- padding-block: var(--fui-overlay-footer-block-inset, #{_raw(8, 8px)});
192
+ gap: var(--fui-overlay-section-gap, #{_raw(8)});
193
+ padding-block: #{_raw(8)};
194
+ border-top: var(--fui-stroke-hairline, #{tokens.$fui-stroke-hairline}) solid
195
+ var(--fui-border, #{tokens.$fui-border});
196
+ background-color: var(--fui-bg-secondary, #{tokens.$fui-bg-secondary});
123
197
  }
124
198
 
125
199
  @mixin modal-title {
@@ -140,52 +214,78 @@
140
214
  @include target.hit-area("compact");
141
215
 
142
216
  position: absolute;
143
- inset-block-start: var(--fui-overlay-close-inset, #{_raw(12, 12px)});
144
- inset-inline-end: var(--fui-overlay-close-inset, #{_raw(12, 12px)});
217
+ inset-block-start: var(--fui-overlay-close-inset, #{_raw(12)});
218
+ inset-inline-end: var(--fui-overlay-close-inset, #{_raw(12)});
219
+ border-radius: var(--fui-radius-l2, #{tokens.$fui-radius-l2});
220
+ color: var(--fui-text-secondary, #{tokens.$fui-text-secondary});
221
+
222
+ &:hover {
223
+ background-color: var(--fui-bg-hover, #{tokens.$fui-bg-hover});
224
+ color: var(--fui-text-primary, #{tokens.$fui-text-primary});
225
+ }
226
+
227
+ svg {
228
+ @include action.glyph("sm");
229
+ }
145
230
  }
146
231
 
147
232
  @mixin anchored-size($size) {
148
233
  @if $size == "sm" {
149
234
  @include surface.apply-inset("compact");
150
235
 
151
- max-inline-size: var(--fui-overlay-popover-max-inline-sm, 256px);
236
+ max-inline-size: var(
237
+ --fui-overlay-popover-sm,
238
+ #{measurements.target-value("overlay", "popover-sm")}
239
+ );
152
240
  } @else if $size == "md" {
153
241
  @include surface.apply-inset("compact");
154
242
 
155
- max-inline-size: var(--fui-overlay-popover-max-inline-md, 384px);
243
+ max-inline-size: var(
244
+ --fui-overlay-popover-md,
245
+ #{measurements.target-value("overlay", "popover-md")}
246
+ );
156
247
  } @else if $size == "lg" {
157
248
  @include surface.apply-inset("default");
158
249
 
159
- max-inline-size: var(--fui-overlay-popover-max-inline-lg, 512px);
250
+ max-inline-size: var(
251
+ --fui-overlay-popover-lg,
252
+ #{measurements.target-value("overlay", "popover-lg")}
253
+ );
160
254
  } @else {
161
255
  @error "Unknown anchored overlay size '#{$size}'. Expected sm, md, or lg.";
162
256
  }
163
257
  }
164
258
 
165
259
  @mixin anchored-surface($size) {
260
+ @include surface;
166
261
  @include typography.role("body-compact");
167
262
  @include anchored-size($size);
168
263
 
169
- box-sizing: border-box;
170
- min-inline-size: var(--fui-overlay-popover-min-inline, 192px);
171
- color: var(--fui-text-primary, #{tokens.$fui-text-primary});
172
- background-color: var(--fui-bg-elevated, #{tokens.$fui-bg-elevated});
173
- border: var(--fui-stroke-hairline, 1px) solid var(--fui-border, #{tokens.$fui-border});
174
- border-radius: var(--fui-radius-lg, #{tokens.$fui-radius-lg});
175
- box-shadow: var(--fui-shadow-md, #{tokens.$fui-shadow-md});
264
+ min-inline-size: var(
265
+ --fui-overlay-popover-min,
266
+ #{measurements.target-value("overlay", "popover-min")}
267
+ );
176
268
  }
177
269
 
178
270
  @mixin arrow-box {
179
- inline-size: var(--fui-overlay-arrow-size, #{_raw(10, 10px)});
180
- block-size: var(--fui-overlay-arrow-size, #{_raw(10, 10px)});
271
+ inline-size: var(--fui-overlay-arrow-size, #{_raw(10)});
272
+ block-size: var(--fui-overlay-arrow-size, #{_raw(10)});
181
273
  transform: rotate(45deg);
182
274
  }
183
275
 
276
+ /// The one inverse floating surface: compact, no edge, nested radius level.
184
277
  @mixin tooltip {
185
278
  @include typography.role("ui-compact");
186
279
 
187
280
  box-sizing: border-box;
188
- max-inline-size: var(--fui-overlay-tooltip-max-inline, 320px);
189
- padding-block: _raw(4, 4px);
190
- padding-inline: _raw(8, 8px);
281
+ max-inline-size: var(
282
+ --fui-overlay-tooltip-max,
283
+ #{measurements.target-value("overlay", "tooltip-max")}
284
+ );
285
+ padding-block: _raw(4);
286
+ padding-inline: _raw(8);
287
+ color: var(--fui-text-inverse, #{tokens.$fui-text-inverse});
288
+ background-color: var(--fui-bg-inverse, #{tokens.$fui-bg-inverse});
289
+ border-radius: var(--fui-radius-l2, #{tokens.$fui-radius-l2});
290
+ box-shadow: var(--fui-shadow-md, #{tokens.$fui-shadow-md});
191
291
  }
@@ -1,49 +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(--fui-stroke-hairline, #{measurements.target-value("stroke", "hairline")});
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});
12
21
  --fui-popup-indicator-box: var(--fui-raw-space-16, #{measurements.raw-space(16)});
13
- --fui-popup-separator-size: var(
14
- --fui-stroke-hairline,
15
- #{measurements.target-value("stroke", "hairline")}
16
- );
17
- --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});
18
24
  --fui-popup-offset: var(--fui-raw-space-4, #{measurements.raw-space(4)});
19
- --fui-popup-viewport-rows: 4.5;
20
- --_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});
21
27
 
22
28
  @media (pointer: coarse) {
23
29
  --_fui-popup-effective-row-pitch: var(--fui-raw-space-48, #{measurements.raw-space(48)});
24
30
  }
25
31
  }
26
32
 
27
- @mixin container {
33
+ /// A pick list drawn in the page flow: the popup box without elevation.
34
+ @mixin inline-container {
28
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;
29
45
 
30
- box-sizing: border-box;
31
- padding: var(--fui-popup-container-inset);
32
- border: var(--fui-stroke-hairline, #{measurements.target-value("stroke", "hairline")}) solid
33
- var(--fui-border, #{tokens.$fui-border});
34
- border-radius: var(--fui-radius-md, #{tokens.$fui-radius-md});
35
- background: var(--fui-bg-elevated, #{tokens.$fui-bg-elevated});
36
- color: var(--fui-text-primary, #{tokens.$fui-text-primary});
37
46
  box-shadow: var(--fui-shadow-md, #{tokens.$fui-shadow-md});
38
47
  }
39
48
 
40
49
  @mixin viewport {
41
50
  box-sizing: border-box;
42
51
  max-block-size: calc(
43
- 2 * var(--fui-popup-container-inset) + 2 *
52
+ 2 * var(--fui-popup-container-inset, #{$_container-inset}) + 2 *
44
53
  var(--fui-stroke-hairline, #{measurements.target-value("stroke", "hairline")}) +
45
- var(--fui-popup-viewport-rows) * var(--_fui-popup-effective-row-pitch) +
46
- (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})
47
58
  );
48
59
  overflow-y: auto;
49
60
  }
@@ -52,12 +63,17 @@
52
63
  @include typography.role("ui-compact");
53
64
 
54
65
  box-sizing: border-box;
66
+ // Rows are pick targets: rapid pointer travel must never start a text
67
+ // selection, and touch taps get no highlight flash.
68
+ user-select: none;
69
+ -webkit-tap-highlight-color: transparent;
55
70
  display: flex;
56
71
  align-items: center;
57
- min-block-size: var(--_fui-popup-effective-row-pitch);
58
- padding-block: var(--fui-popup-row-block-inset);
59
- padding-inline: var(--fui-popup-row-inline-inset);
60
- 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});
61
77
  }
62
78
 
63
79
  @mixin highlight-state {
@@ -65,12 +81,16 @@
65
81
  }
66
82
 
67
83
  @mixin selected-state {
68
- background: var(--fui-bg-active, #{tokens.$fui-bg-active});
84
+ background: var(
85
+ --fui-field-selection-bg,
86
+ var(--fui-control-selected-bg, #{tokens.$fui-bg-active})
87
+ );
69
88
  color: var(--fui-text-primary, #{tokens.$fui-text-primary});
70
89
  }
71
90
 
72
91
  @mixin disabled-state {
73
- opacity: 0.5;
92
+ @include mixins.disabled-state;
93
+
74
94
  pointer-events: none;
75
95
  }
76
96
 
@@ -80,13 +100,13 @@
80
100
  box-sizing: border-box;
81
101
  display: flex;
82
102
  align-items: center;
83
- min-block-size: var(--_fui-popup-effective-row-pitch);
84
- 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});
85
105
  color: var(--fui-text-tertiary, #{tokens.$fui-text-tertiary});
86
106
  }
87
107
 
88
108
  @mixin group-separator {
89
- block-size: var(--fui-popup-separator-size);
90
- 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});
91
111
  background: var(--fui-border, #{tokens.$fui-border});
92
112
  }
@@ -1,25 +1,35 @@
1
+ @use "../tokens/measurements.generated" as measurements;
2
+ @use "../tokens/mixins" as mixins;
3
+ @use "../tokens/variables" as tokens;
1
4
  @use "typography" as typography;
2
5
 
6
+ // Block rhythm is owned by the container (owl selectors below). The element
7
+ // mixins reset inline margins only, so a `.x p { @include paragraph }` rule
8
+ // (specificity 0,1,1) cannot out-rank the owl (0,1,0) and glue the flow.
3
9
  @mixin root {
4
10
  @include typography.role("body-relaxed");
5
11
 
12
+ // Long-form text: no balancing or orphan control (see recipes/typography).
13
+ text-wrap: auto;
14
+
6
15
  > * {
7
16
  margin-block: 0;
8
17
  }
9
18
 
10
19
  > * + * {
11
- margin-block-start: var(--fui-raw-space-12);
20
+ margin-block-start: var(--fui-raw-space-12, #{measurements.raw-space(12)});
12
21
  }
13
22
 
14
23
  > * + :is(h1, h2, h3, h4, h5, h6) {
15
- margin-block-start: var(--fui-raw-space-24);
24
+ margin-block-start: var(--fui-raw-space-24, #{measurements.raw-space(24)});
16
25
  }
17
26
  }
18
27
 
19
28
  @mixin paragraph {
20
29
  @include typography.role("body-relaxed");
21
30
 
22
- margin: 0;
31
+ text-wrap: auto;
32
+ margin-inline: 0;
23
33
  }
24
34
 
25
35
  @mixin heading($level) {
@@ -35,22 +45,25 @@
35
45
  @error "Unknown prose heading '#{$level}'. Expected 1 through 6.";
36
46
  }
37
47
 
38
- margin: 0;
48
+ margin-inline: 0;
39
49
  }
40
50
 
41
51
  @mixin list($kind) {
42
52
  @include typography.role("body-relaxed");
43
53
 
44
- margin: 0;
45
- 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)});
46
57
 
47
58
  @if $kind == "none" {
48
59
  display: grid;
49
60
  list-style: none;
50
61
  } @else if $kind == "disc" or $kind == "decimal" or $kind == "icon" {
51
62
  display: grid;
52
- grid-template-columns: minmax(var(--fui-raw-space-12), max-content) minmax(0, 1fr);
53
- 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)});
54
67
  list-style: none;
55
68
 
56
69
  > li {
@@ -75,7 +88,7 @@
75
88
 
76
89
  > li > :is(ul, ol) {
77
90
  grid-column: 1 / -1;
78
- margin-block-start: var(--fui-raw-space-8);
91
+ margin-block-start: var(--fui-raw-space-8, #{measurements.raw-space(8)});
79
92
  }
80
93
 
81
94
  @if $kind == "disc" {
@@ -102,10 +115,10 @@
102
115
  @mixin inline-code {
103
116
  @include typography.role("code");
104
117
 
105
- padding-block: var(--fui-raw-space-2);
106
- padding-inline: var(--fui-raw-space-4);
107
- border-radius: var(--fui-radius-sm);
108
- 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});
109
122
  overflow-wrap: anywhere;
110
123
  }
111
124
 
@@ -113,11 +126,11 @@
113
126
  @include typography.role("code");
114
127
 
115
128
  @if $density == "compact" {
116
- padding-block: var(--fui-raw-space-8);
117
- 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)});
118
131
  } @else if $density == "default" {
119
- padding-block: var(--fui-raw-space-12);
120
- 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)});
121
134
  } @else {
122
135
  @error "Unknown code-block density '#{$density}'. Expected compact or default.";
123
136
  }
@@ -131,41 +144,48 @@
131
144
  @mixin blockquote {
132
145
  @include typography.role("body-relaxed");
133
146
 
134
- margin: 0;
135
- padding-inline-start: var(--fui-raw-space-16);
136
- 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});
137
152
  }
138
153
 
139
154
  @mixin table {
140
155
  @include typography.role("body-compact");
141
156
 
157
+ text-wrap: auto;
142
158
  display: block;
143
159
  max-inline-size: 100%;
144
160
  overflow-x: auto;
145
161
 
146
162
  :is(th, td) {
147
- padding-block: var(--fui-raw-space-8);
148
- 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)});
149
165
  }
150
166
  }
151
167
 
152
168
  @mixin link {
153
169
  color: inherit;
154
170
  text-decoration: underline;
155
- text-underline-offset: var(--fui-raw-space-2);
171
+ // Em offset scales with the inherited font size (prose links render at
172
+ // several sizes); matches the Link component's hover/dotted variants.
173
+ text-underline-offset: 0.2em;
156
174
  overflow-wrap: anywhere;
157
175
 
158
176
  &:focus-visible {
159
- outline: var(--fui-stroke-default) solid var(--fui-focus-ring);
160
- outline-offset: var(--fui-stroke-default);
177
+ // The previous hand-rolled outline referenced --fui-focus-ring, which is
178
+ // never defined — the whole declaration was invalid and prose links had
179
+ // no visible ring at all.
180
+ @include mixins.focus-ring;
161
181
  }
162
182
  }
163
183
 
164
184
  @mixin rule {
165
- block-size: var(--fui-stroke-hairline);
166
- 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)});
167
187
  border: 0;
168
- background: var(--fui-border);
188
+ background: var(--fui-border, #{tokens.$fui-border});
169
189
  }
170
190
 
171
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
  }