@usefragments/ui 1.7.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 (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,18 +1,21 @@
1
1
  @use "../../tokens/variables" as *;
2
2
  @use "../../tokens/mixins" as *;
3
+ @use "../../tokens/measurements.generated" as measurements;
4
+ @use "../../recipes/layout" as layout;
3
5
  @use "../../recipes/popup" as popup;
4
6
  @use "../../recipes/typography" as typography;
5
7
 
6
8
  .listbox {
7
- @include popup.container;
9
+ @include popup.inline-container;
8
10
  @include popup.viewport;
9
11
 
10
- min-inline-size: var(--fui-listbox-min-inline, 192px);
11
- border-color: var(--fui-form-group-border, $fui-border);
12
+ min-inline-size: layout.measure("menu-min");
12
13
 
13
14
  &:focus-visible {
14
15
  @include focus-ring;
15
16
  }
17
+
18
+ @include high-contrast-outline;
16
19
  }
17
20
 
18
21
  .item {
@@ -56,23 +59,14 @@
56
59
  .empty {
57
60
  @include typography.role("body-compact");
58
61
 
59
- padding-block: var(--fui-popup-row-block-inset);
60
- padding-inline: var(--fui-popup-row-inline-inset);
62
+ padding-block: var(
63
+ --fui-popup-row-block-inset,
64
+ var(--fui-raw-space-8, #{measurements.raw-space(8)})
65
+ );
66
+ padding-inline: var(
67
+ --fui-popup-row-inline-inset,
68
+ var(--fui-raw-space-8, #{measurements.raw-space(8)})
69
+ );
61
70
  color: var(--fui-text-tertiary, $fui-text-tertiary);
62
71
  text-align: center;
63
72
  }
64
-
65
- @media (prefers-contrast: more) {
66
- .listbox {
67
- border-color: var(--fui-text-primary, $fui-text-primary);
68
- outline: var(--fui-stroke-hairline, 1px) solid var(--fui-text-primary, $fui-text-primary);
69
- outline-offset: calc(-1 * var(--fui-stroke-default, 2px));
70
- }
71
-
72
- .itemSelected,
73
- .itemActive {
74
- outline: var(--fui-focus-ring-width, $fui-focus-ring-width) solid
75
- var(--fui-color-accent, $fui-color-accent);
76
- outline-offset: calc(-1 * var(--fui-focus-ring-width, $fui-focus-ring-width));
77
- }
78
- }
@@ -9,7 +9,7 @@
9
9
  "exportName": "Loading",
10
10
  "propsSummary": [
11
11
  "size: sm|md|lg|xl (default: md)",
12
- "variant: spinner|dots|pulse (default: spinner)",
12
+ "kind: spinner|dots|pulse (default: spinner)",
13
13
  "label: string (default: Loading...)",
14
14
  "centered: boolean (default: false)",
15
15
  "fill: boolean (default: false)",
@@ -24,9 +24,9 @@
24
24
  "required": false,
25
25
  "values": ["sm", "md", "lg", "xl"]
26
26
  },
27
- "variant": {
27
+ "kind": {
28
28
  "type": "enum",
29
- "description": "Visual style of the loading animation",
29
+ "description": "Which animation plays",
30
30
  "default": "spinner",
31
31
  "required": false,
32
32
  "values": ["spinner", "dots", "pulse"]
@@ -57,7 +57,7 @@
57
57
  },
58
58
  "color": {
59
59
  "type": "enum",
60
- "description": "Color variant - accent uses theme color, current inherits text color",
60
+ "description": "Colour. accent uses the theme accent, current inherits the surrounding text colour",
61
61
  "default": "accent",
62
62
  "required": false,
63
63
  "values": ["accent", "current", "muted"]
@@ -102,12 +102,12 @@
102
102
  {
103
103
  "name": "Dots",
104
104
  "description": "Three bouncing dots, at home in a message thread.",
105
- "code": "<Loading variant=\"dots\" label=\"Sending message\" />"
105
+ "code": "<Loading kind=\"dots\" label=\"Sending message\" />"
106
106
  },
107
107
  {
108
108
  "name": "Pulse",
109
109
  "description": "One breathing dot for ambient background work.",
110
- "code": "<Loading variant=\"pulse\" label=\"Syncing\" />"
110
+ "code": "<Loading kind=\"pulse\" label=\"Syncing\" />"
111
111
  },
112
112
  {
113
113
  "name": "Colors",
@@ -1,4 +1,5 @@
1
1
  @use "../../tokens/variables" as *;
2
+ @use "../../tokens/measurements.generated" as measurements;
2
3
  @use "../../recipes/representation" as representation;
3
4
  @use "../../recipes/typography" as typography;
4
5
 
@@ -58,7 +59,7 @@
58
59
  }
59
60
 
60
61
  // ============================================
61
- // Spinner Variant
62
+ // Spinner kind
62
63
  // ============================================
63
64
 
64
65
  .spinnerIcon {
@@ -68,7 +69,7 @@
68
69
 
69
70
  @media (prefers-reduced-motion: reduce) {
70
71
  animation: none;
71
- opacity: 0.7;
72
+ opacity: var(--fui-opacity-muted, #{$fui-opacity-muted});
72
73
  }
73
74
  }
74
75
 
@@ -82,10 +83,10 @@
82
83
  }
83
84
 
84
85
  // ============================================
85
- // Dots Variant
86
+ // Dots kind
86
87
  // ============================================
87
88
 
88
- // `.dots`/`.pulse` on the root are variant hooks only — sizing lives on the
89
+ // `.dots`/`.pulse` on the root are kind hooks only — sizing lives on the
89
90
  // inner track. Sharing one class between root and track let the track's
90
91
  // 100% × 100% override the root's fixed activity footprint (rendered 0 × 0).
91
92
  .dotsTrack {
@@ -104,20 +105,20 @@
104
105
  animation: bounce var(--fui-duration-pulse, $fui-duration-pulse) ease-in-out infinite;
105
106
 
106
107
  &:nth-child(1) {
107
- animation-delay: 0s;
108
+ animation-delay: var(--fui-raw-space-0, #{measurements.raw-space(0)});
108
109
  }
109
110
 
110
111
  &:nth-child(2) {
111
- animation-delay: 0.2s;
112
+ animation-delay: calc(var(--fui-duration-pulse, #{$fui-duration-pulse}) / 8);
112
113
  }
113
114
 
114
115
  &:nth-child(3) {
115
- animation-delay: 0.4s;
116
+ animation-delay: calc(var(--fui-duration-pulse, #{$fui-duration-pulse}) / 4);
116
117
  }
117
118
 
118
119
  @media (prefers-reduced-motion: reduce) {
119
120
  animation: none;
120
- opacity: 0.6;
121
+ opacity: var(--fui-opacity-muted, #{$fui-opacity-muted});
121
122
  }
122
123
  }
123
124
 
@@ -126,7 +127,7 @@
126
127
  60%,
127
128
  100% {
128
129
  transform: translateY(0);
129
- opacity: 0.4;
130
+ opacity: var(--fui-opacity-disabled, #{$fui-opacity-disabled});
130
131
  }
131
132
  30% {
132
133
  transform: translateY(-30%);
@@ -135,7 +136,7 @@
135
136
  }
136
137
 
137
138
  // ============================================
138
- // Pulse Variant
139
+ // Pulse kind
139
140
  // ============================================
140
141
 
141
142
  .pulseTrack {
@@ -149,22 +150,22 @@
149
150
 
150
151
  .pulseRing {
151
152
  position: absolute;
152
- width: 100%;
153
- height: 100%;
153
+ inline-size: 100%;
154
+ block-size: 100%;
154
155
  border-radius: var(--fui-radius-full, $fui-radius-full);
155
156
  background-color: currentColor;
156
- opacity: 0.3;
157
+ opacity: var(--fui-opacity-faint, #{$fui-opacity-faint});
157
158
  animation: pulseRing var(--fui-duration-pulse, $fui-duration-pulse) ease-out infinite;
158
159
 
159
160
  @media (prefers-reduced-motion: reduce) {
160
161
  animation: none;
161
- opacity: 0.2;
162
+ opacity: var(--fui-opacity-faint, #{$fui-opacity-faint});
162
163
  }
163
164
  }
164
165
 
165
166
  .pulseDot {
166
- width: 50%;
167
- height: 50%;
167
+ inline-size: 50%;
168
+ block-size: 50%;
168
169
  border-radius: var(--fui-radius-full, $fui-radius-full);
169
170
  background-color: currentColor;
170
171
  z-index: 1;
@@ -173,7 +174,7 @@
173
174
  @keyframes pulseRing {
174
175
  0% {
175
176
  transform: scale(0.5);
176
- opacity: 0.5;
177
+ opacity: var(--fui-opacity-faint, #{$fui-opacity-faint});
177
178
  }
178
179
  100% {
179
180
  transform: scale(1.5);
@@ -192,7 +193,7 @@
192
193
  align-items: center;
193
194
  justify-content: center;
194
195
  background-color: var(--fui-backdrop, $fui-backdrop);
195
- z-index: var(--fui-overlay-layer-backdrop, 50);
196
+ z-index: var(--fui-overlay-layer-backdrop, #{$fui-overlay-layer-backdrop});
196
197
  }
197
198
 
198
199
  .overlay {
@@ -200,7 +201,7 @@
200
201
  }
201
202
 
202
203
  // ============================================
203
- // Inline Variant
204
+ // Inline
204
205
  // ============================================
205
206
 
206
207
  .inline {
@@ -209,23 +210,25 @@
209
210
  vertical-align: middle;
210
211
  }
211
212
 
213
+ // The inline spinner scales with the surrounding text, so its box is an em
214
+ // measure rather than a glyph step; the md icon is the fallback.
212
215
  .inline-sm {
213
- --inline-size: 0.875em; // Relative to surrounding text
216
+ --_loading-inline-size: 0.875em;
214
217
  }
215
218
 
216
219
  .inline-md {
217
- --inline-size: 1.125em;
220
+ --_loading-inline-size: 1.125em;
218
221
  }
219
222
 
220
223
  .inlineSpinner {
221
- width: var(--inline-size);
222
- height: var(--inline-size);
224
+ inline-size: var(--_loading-inline-size, var(--fui-icon-md, #{$fui-icon-md}));
225
+ block-size: var(--_loading-inline-size, var(--fui-icon-md, #{$fui-icon-md}));
223
226
  animation: spin var(--fui-duration-spin, $fui-duration-spin) linear infinite;
224
227
  color: currentColor;
225
228
 
226
229
  @media (prefers-reduced-motion: reduce) {
227
230
  animation: none;
228
- opacity: 0.7;
231
+ opacity: var(--fui-opacity-muted, #{$fui-opacity-muted});
229
232
  }
230
233
  }
231
234
 
@@ -240,9 +243,9 @@
240
243
  flex-direction: column;
241
244
  align-items: center;
242
245
  justify-content: center;
243
- gap: var(--fui-raw-space-12, 12px);
246
+ gap: var(--fui-raw-space-12, #{measurements.raw-space(12)});
244
247
  background-color: var(--fui-bg-primary, $fui-bg-primary);
245
- z-index: 100;
248
+ z-index: var(--fui-overlay-layer-modal, #{$fui-overlay-layer-modal});
246
249
  }
247
250
 
248
251
  .screenLabel {
@@ -8,13 +8,14 @@ import styles from "./Loading.module.scss";
8
8
  // ============================================
9
9
 
10
10
  export type LoadingSize = "sm" | "md" | "lg" | "xl";
11
- export type LoadingVariant = "spinner" | "dots" | "pulse";
11
+ export type LoadingKind = "spinner" | "dots" | "pulse";
12
12
 
13
13
  export interface LoadingProps extends React.HTMLAttributes<HTMLDivElement> {
14
14
  /** Size of the loading indicator */
15
15
  size?: LoadingSize;
16
- /** Visual style of the loading indicator */
17
- variant?: LoadingVariant;
16
+ /** Which animation plays. Not chrome, so it is `kind`, not `variant`.
17
+ * @default "spinner" */
18
+ kind?: LoadingKind;
18
19
  /** Accessible label for screen readers */
19
20
  label?: string;
20
21
  /** Whether to center the loading indicator in its container */
@@ -23,7 +24,7 @@ export interface LoadingProps extends React.HTMLAttributes<HTMLDivElement> {
23
24
  fill?: boolean;
24
25
  /** Whether to show the loading indicator with a backdrop overlay */
25
26
  overlay?: boolean;
26
- /** Color variant - uses accent color by default, 'current' inherits text color */
27
+ /** Colour. `accent` by default; `current` inherits the surrounding text colour */
27
28
  color?: "accent" | "current" | "muted";
28
29
  }
29
30
 
@@ -37,8 +38,8 @@ export interface LoadingInlineProps extends React.HTMLAttributes<HTMLSpanElement
37
38
  export interface LoadingScreenProps extends React.HTMLAttributes<HTMLDivElement> {
38
39
  /** Loading indicator size */
39
40
  size?: LoadingSize;
40
- /** Loading indicator variant */
41
- variant?: LoadingVariant;
41
+ /** Which animation plays */
42
+ kind?: LoadingKind;
42
43
  /** Optional label text to display */
43
44
  label?: string;
44
45
  /** Whether to show the label text visually */
@@ -93,7 +94,7 @@ function PulseAnimation({ className }: { className?: string }) {
93
94
  const LoadingRoot = React.forwardRef<HTMLDivElement, LoadingProps>(function LoadingRoot(
94
95
  {
95
96
  size = "md",
96
- variant = "spinner",
97
+ kind = "spinner",
97
98
  label = "Loading...",
98
99
  centered = false,
99
100
  fill = false,
@@ -107,7 +108,7 @@ const LoadingRoot = React.forwardRef<HTMLDivElement, LoadingProps>(function Load
107
108
  const classes = [
108
109
  styles.loading,
109
110
  styles[size],
110
- styles[variant],
111
+ styles[kind],
111
112
  styles[`color-${color}`],
112
113
  centered && styles.centered,
113
114
  fill && styles.fill,
@@ -118,9 +119,9 @@ const LoadingRoot = React.forwardRef<HTMLDivElement, LoadingProps>(function Load
118
119
  .join(" ");
119
120
 
120
121
  const animation =
121
- variant === "dots" ? (
122
+ kind === "dots" ? (
122
123
  <DotsAnimation className={styles.dotsTrack} />
123
- ) : variant === "pulse" ? (
124
+ ) : kind === "pulse" ? (
124
125
  <PulseAnimation className={styles.pulseTrack} />
125
126
  ) : (
126
127
  <SpinnerIcon className={styles.spinnerIcon} />
@@ -171,7 +172,7 @@ function LoadingInline({
171
172
 
172
173
  function LoadingScreen({
173
174
  size = "lg",
174
- variant = "spinner",
175
+ kind = "spinner",
175
176
  label = "Loading...",
176
177
  showLabel = false,
177
178
  className,
@@ -181,7 +182,7 @@ function LoadingScreen({
181
182
 
182
183
  return (
183
184
  <div className={classes} role="status" aria-label={label} aria-live="polite" {...htmlProps}>
184
- <LoadingRoot size={size} variant={variant} label={label} />
185
+ <LoadingRoot size={size} kind={kind} label={label} />
185
186
  {showLabel && <span className={styles.screenLabel}>{label}</span>}
186
187
  </div>
187
188
  );
@@ -1,4 +1,5 @@
1
1
  @use "../../tokens/variables" as *;
2
+ @use "../../tokens/measurements.generated" as measurements;
2
3
  @use "../../recipes/prose" as prose;
3
4
 
4
5
  .markdown {
@@ -90,7 +91,7 @@
90
91
  background-color: var(--fui-code-bg, $fui-code-bg);
91
92
 
92
93
  code {
93
- padding: 0;
94
+ padding: var(--fui-raw-space-0, #{measurements.raw-space(0)});
94
95
  background: none;
95
96
  font: inherit;
96
97
  letter-spacing: inherit;
@@ -75,22 +75,22 @@
75
75
  {
76
76
  "name": "Default",
77
77
  "description": "Plain actions, one per row.",
78
- "code": "<Menu>\n <Menu.Trigger asChild>\n <Button variant=\"secondary\">Actions</Button>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.Item onSelect={() => {}}>Edit</Menu.Item>\n <Menu.Item onSelect={() => {}}>Duplicate</Menu.Item>\n <Menu.Separator />\n <Menu.Item danger onSelect={() => {}}>Delete</Menu.Item>\n </Menu.Content>\n</Menu>"
78
+ "code": "<Menu>\n <Menu.Trigger asChild>\n <Button variant=\"soft\">Actions</Button>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.Item onSelect={() => {}}>Edit</Menu.Item>\n <Menu.Item onSelect={() => {}}>Duplicate</Menu.Item>\n <Menu.Separator />\n <Menu.Item danger onSelect={() => {}}>Delete</Menu.Item>\n </Menu.Content>\n</Menu>"
79
79
  },
80
80
  {
81
81
  "name": "With Shortcuts",
82
82
  "description": "Trailing keys teach the faster path.",
83
- "code": "<Menu>\n <Menu.Trigger asChild>\n <Button variant=\"secondary\">Edit</Button>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.Item shortcut=\"Ctrl+Z\" onSelect={() => {}}>Undo</Menu.Item>\n <Menu.Item shortcut=\"Ctrl+Y\" onSelect={() => {}}>Redo</Menu.Item>\n <Menu.Separator />\n <Menu.Item shortcut=\"Ctrl+C\" onSelect={() => {}}>Copy</Menu.Item>\n <Menu.Item shortcut=\"Ctrl+V\" onSelect={() => {}}>Paste</Menu.Item>\n </Menu.Content>\n</Menu>"
83
+ "code": "<Menu>\n <Menu.Trigger asChild>\n <Button variant=\"soft\">Edit</Button>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.Item shortcut=\"Ctrl+Z\" onSelect={() => {}}>Undo</Menu.Item>\n <Menu.Item shortcut=\"Ctrl+Y\" onSelect={() => {}}>Redo</Menu.Item>\n <Menu.Separator />\n <Menu.Item shortcut=\"Ctrl+C\" onSelect={() => {}}>Copy</Menu.Item>\n <Menu.Item shortcut=\"Ctrl+V\" onSelect={() => {}}>Paste</Menu.Item>\n </Menu.Content>\n</Menu>"
84
84
  },
85
85
  {
86
86
  "name": "With Groups",
87
87
  "description": "Labels separate unrelated actions.",
88
- "code": "<Menu>\n <Menu.Trigger asChild>\n <Button variant=\"secondary\">Options</Button>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.Group>\n <Menu.GroupLabel>View</Menu.GroupLabel>\n <Menu.Item onSelect={() => {}}>Zoom In</Menu.Item>\n <Menu.Item onSelect={() => {}}>Zoom Out</Menu.Item>\n </Menu.Group>\n <Menu.Separator />\n <Menu.Group>\n <Menu.GroupLabel>Layout</Menu.GroupLabel>\n <Menu.Item onSelect={() => {}}>Grid View</Menu.Item>\n <Menu.Item onSelect={() => {}}>List View</Menu.Item>\n </Menu.Group>\n </Menu.Content>\n</Menu>"
88
+ "code": "<Menu>\n <Menu.Trigger asChild>\n <Button variant=\"soft\">Options</Button>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.Group>\n <Menu.GroupLabel>View</Menu.GroupLabel>\n <Menu.Item onSelect={() => {}}>Zoom In</Menu.Item>\n <Menu.Item onSelect={() => {}}>Zoom Out</Menu.Item>\n </Menu.Group>\n <Menu.Separator />\n <Menu.Group>\n <Menu.GroupLabel>Layout</Menu.GroupLabel>\n <Menu.Item onSelect={() => {}}>Grid View</Menu.Item>\n <Menu.Item onSelect={() => {}}>List View</Menu.Item>\n </Menu.Group>\n </Menu.Content>\n</Menu>"
89
89
  },
90
90
  {
91
91
  "name": "With Checkboxes",
92
92
  "description": "Rows that stay open while you toggle them.",
93
- "code": "<Menu>\n <Menu.Trigger asChild>\n <Button variant=\"secondary\">Display</Button>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.CheckboxItem defaultChecked>Show Grid</Menu.CheckboxItem>\n <Menu.CheckboxItem defaultChecked>Show Rulers</Menu.CheckboxItem>\n <Menu.CheckboxItem>Show Guides</Menu.CheckboxItem>\n </Menu.Content>\n</Menu>"
93
+ "code": "<Menu>\n <Menu.Trigger asChild>\n <Button variant=\"soft\">Display</Button>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.CheckboxItem defaultChecked>Show Grid</Menu.CheckboxItem>\n <Menu.CheckboxItem defaultChecked>Show Rulers</Menu.CheckboxItem>\n <Menu.CheckboxItem>Show Guides</Menu.CheckboxItem>\n </Menu.Content>\n</Menu>"
94
94
  },
95
95
  {
96
96
  "name": "With Checked Items",
@@ -100,7 +100,7 @@
100
100
  {
101
101
  "name": "With Submenu",
102
102
  "description": "Secondary options nest one level deep.",
103
- "code": "<Menu>\n <Menu.Trigger asChild>\n <Button variant=\"secondary\">File</Button>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.Item onSelect={() => {}}>New File</Menu.Item>\n <Menu.Item onSelect={() => {}}>Open</Menu.Item>\n <Menu.Separator />\n <Menu.Submenu>\n <Menu.SubmenuTrigger>Export As</Menu.SubmenuTrigger>\n <Menu.Content side=\"right\" align=\"start\">\n <Menu.Item onSelect={() => {}}>PNG</Menu.Item>\n <Menu.Item onSelect={() => {}}>SVG</Menu.Item>\n <Menu.Item onSelect={() => {}}>PDF</Menu.Item>\n </Menu.Content>\n </Menu.Submenu>\n <Menu.Separator />\n <Menu.Item danger onSelect={() => {}}>Delete</Menu.Item>\n </Menu.Content>\n</Menu>"
103
+ "code": "<Menu>\n <Menu.Trigger asChild>\n <Button variant=\"soft\">File</Button>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.Item onSelect={() => {}}>New File</Menu.Item>\n <Menu.Item onSelect={() => {}}>Open</Menu.Item>\n <Menu.Separator />\n <Menu.Submenu>\n <Menu.SubmenuTrigger>Export As</Menu.SubmenuTrigger>\n <Menu.Content side=\"right\" align=\"start\">\n <Menu.Item onSelect={() => {}}>PNG</Menu.Item>\n <Menu.Item onSelect={() => {}}>SVG</Menu.Item>\n <Menu.Item onSelect={() => {}}>PDF</Menu.Item>\n </Menu.Content>\n </Menu.Submenu>\n <Menu.Separator />\n <Menu.Item danger onSelect={() => {}}>Delete</Menu.Item>\n </Menu.Content>\n</Menu>"
104
104
  },
105
105
  {
106
106
  "name": "Link Trigger",
@@ -1,10 +1,11 @@
1
1
  @use "../../tokens/variables" as *;
2
+ @use "../../tokens/measurements.generated" as measurements;
2
3
  @use "../../recipes/layout" as layout;
3
4
  @use "../../recipes/popup" as popup;
4
5
  @use "../../recipes/typography" as typography;
5
6
 
6
7
  .positioner {
7
- z-index: var(--fui-overlay-layer-anchored, 52);
8
+ z-index: var(--fui-overlay-layer-anchored, #{$fui-overlay-layer-anchored});
8
9
  outline: none;
9
10
  pointer-events: auto;
10
11
 
@@ -20,7 +21,7 @@
20
21
  @include popup.container;
21
22
 
22
23
  min-inline-size: layout.measure("menu-min");
23
- margin: 0;
24
+ margin: var(--fui-raw-space-0, #{measurements.raw-space(0)});
24
25
  list-style: none;
25
26
  opacity: 0;
26
27
  transform: scale(0.95);
@@ -74,8 +75,8 @@
74
75
  display: flex;
75
76
  align-items: center;
76
77
  justify-content: center;
77
- inline-size: var(--fui-popup-indicator-box);
78
- block-size: var(--fui-popup-indicator-box);
78
+ inline-size: var(--fui-popup-indicator-box, var(--fui-raw-space-16, #{measurements.raw-space(16)}));
79
+ block-size: var(--fui-popup-indicator-box, var(--fui-raw-space-16, #{measurements.raw-space(16)}));
79
80
  flex: 0 0 auto;
80
81
  }
81
82
 
@@ -108,8 +109,8 @@
108
109
  color: var(--fui-color-accent, $fui-color-accent);
109
110
 
110
111
  svg {
111
- inline-size: var(--fui-raw-space-12, 12px);
112
- block-size: var(--fui-raw-space-12, 12px);
112
+ inline-size: var(--fui-raw-space-12, #{measurements.raw-space(12)});
113
+ block-size: var(--fui-raw-space-12, #{measurements.raw-space(12)});
113
114
  }
114
115
  }
115
116
 
@@ -117,8 +118,8 @@
117
118
  visibility: hidden;
118
119
 
119
120
  svg {
120
- inline-size: var(--fui-raw-space-12, 12px);
121
- block-size: var(--fui-raw-space-12, 12px);
121
+ inline-size: var(--fui-raw-space-12, #{measurements.raw-space(12)});
122
+ block-size: var(--fui-raw-space-12, #{measurements.raw-space(12)});
122
123
  }
123
124
  }
124
125
 
@@ -141,8 +142,8 @@
141
142
  block-size: 0;
142
143
  margin-inline-start: auto;
143
144
  border-style: solid;
144
- border-width: var(--fui-raw-space-4, 4px) 0 var(--fui-raw-space-4, 4px)
145
- var(--fui-raw-space-6, 6px);
145
+ border-width: var(--fui-raw-space-4, #{measurements.raw-space(4)}) 0 var(--fui-raw-space-4, #{measurements.raw-space(4)})
146
+ var(--fui-raw-space-6, #{measurements.raw-space(6)});
146
147
  border-color: transparent transparent transparent var(--fui-text-secondary, $fui-text-secondary);
147
148
  }
148
149
 
@@ -10,7 +10,7 @@
10
10
  "propsSummary": [
11
11
  "role: user|assistant|system (required)",
12
12
  "children: node (required)",
13
- "status: sending|streaming|complete|error (default: complete)",
13
+ "status: pending|streaming|complete|error (default: complete)",
14
14
  "timestamp: object",
15
15
  "avatar: node",
16
16
  "actions: node"
@@ -32,7 +32,7 @@
32
32
  "description": "Message state",
33
33
  "default": "complete",
34
34
  "required": false,
35
- "values": ["sending", "streaming", "complete", "error"]
35
+ "values": ["pending", "streaming", "complete", "error"]
36
36
  },
37
37
  "timestamp": {
38
38
  "type": "object",
@@ -64,7 +64,7 @@
64
64
  ],
65
65
  "guidelines": [
66
66
  "Always set role — it drives alignment, avatar, and chrome",
67
- "status covers sending, streaming, and error",
67
+ "status covers pending, streaming, and error",
68
68
  "Hide avatars with avatar={null}, or showAvatars={false} on ConversationList",
69
69
  "User bubbles cap at 80% of the inline measure so the two sides stay distinct",
70
70
  "Chrome stays on neutral surfaces; reserve accent for actions and semantic state",
@@ -117,7 +117,7 @@
117
117
  {
118
118
  "name": "With Actions",
119
119
  "description": "Controls stay hidden until the pointer enters the row.",
120
- "code": "<Message\n role=\"assistant\"\n actions={\n <>\n <Button variant=\"ghost\" size=\"xs\">\n Copy\n </Button>\n <Button variant=\"ghost\" size=\"xs\">\n Regenerate\n </Button>\n </>\n }\n>\n <Message.Content>\n Hover over this message to see the actions.\n </Message.Content>\n</Message>"
120
+ "code": "<Message\n role=\"assistant\"\n actions={\n <>\n <Button variant=\"ghost\" size=\"sm\">\n Copy\n </Button>\n <Button variant=\"ghost\" size=\"sm\">\n Regenerate\n </Button>\n </>\n }\n>\n <Message.Content>\n Hover over this message to see the actions.\n </Message.Content>\n</Message>"
121
121
  }
122
122
  ],
123
123
  "relations": [
@@ -141,7 +141,7 @@
141
141
  "propsSummary": [
142
142
  "role: \"user\" | \"assistant\" | \"system\" - determines styling",
143
143
  "children: ReactNode - message content",
144
- "status: \"sending\" | \"streaming\" | \"complete\" | \"error\" - message state",
144
+ "status: \"pending\" | \"streaming\" | \"complete\" | \"error\" - message state",
145
145
  "timestamp: Date - when message was sent",
146
146
  "avatar: ReactNode - custom avatar (null to hide)",
147
147
  "actions: ReactNode - hover actions",
@@ -1,4 +1,5 @@
1
1
  @use "../../tokens/variables" as *;
2
+ @use "../../tokens/measurements.generated" as measurements;
2
3
  @use "../../recipes/layout" as layout;
3
4
  @use "../../recipes/prose" as prose;
4
5
  @use "../../recipes/typography" as typography;
@@ -62,14 +63,15 @@
62
63
  }
63
64
 
64
65
  .error .content {
65
- border: var(--fui-stroke-hairline, 1px) solid
66
+ border: var(--fui-stroke-hairline, #{$fui-stroke-hairline}) solid
66
67
  var(--fui-color-danger-border, $fui-color-danger-border);
67
68
  background: var(--fui-color-danger-bg, $fui-color-danger-bg);
68
69
  color: var(--fui-color-danger-text, $fui-color-danger-text);
69
70
  }
70
71
 
71
- .sending {
72
- opacity: 0.7;
72
+ // In-flight messages dim with the one disabled opacity until they land.
73
+ .pending {
74
+ opacity: var(--fui-opacity-disabled, #{$fui-opacity-disabled});
73
75
  }
74
76
 
75
77
  .avatar {
@@ -88,7 +90,7 @@
88
90
  }
89
91
 
90
92
  .avatarImage {
91
- padding: 0;
93
+ padding: var(--fui-raw-space-0, #{measurements.raw-space(0)});
92
94
  }
93
95
 
94
96
  .body {
@@ -126,7 +128,7 @@
126
128
  background-color: var(--fui-bg-subtle, $fui-bg-subtle);
127
129
 
128
130
  code {
129
- padding: 0;
131
+ padding: var(--fui-raw-space-0, #{measurements.raw-space(0)});
130
132
  background: none;
131
133
  font: inherit;
132
134
  letter-spacing: inherit;
@@ -147,7 +149,7 @@
147
149
  display: inline-block;
148
150
  inline-size: 0.5em;
149
151
  block-size: 1em;
150
- margin-inline-start: var(--fui-raw-space-2, 2px);
152
+ margin-inline-start: var(--fui-raw-space-2, #{measurements.raw-space(2)});
151
153
  background-color: currentColor;
152
154
  animation: blink var(--fui-duration-pulse, $fui-duration-pulse) step-end infinite;
153
155
  }
@@ -11,7 +11,7 @@ import { Markdown } from '../Markdown';
11
11
  // ============================================
12
12
 
13
13
  export type MessageRole = 'user' | 'assistant' | 'system';
14
- export type MessageStatus = 'sending' | 'streaming' | 'complete' | 'error';
14
+ export type MessageStatus = 'pending' | 'streaming' | 'complete' | 'error';
15
15
 
16
16
  export interface MessageProps extends React.HTMLAttributes<HTMLDivElement> {
17
17
  /** Message role determines styling and alignment */
@@ -264,7 +264,7 @@ function MessageRoot({
264
264
  styles.message,
265
265
  styles[role],
266
266
  status === 'error' && styles.error,
267
- status === 'sending' && styles.sending,
267
+ status === 'pending' && styles.pending,
268
268
  !showAvatar && styles.withoutAvatar,
269
269
  className,
270
270
  ].filter(Boolean).join(' ');