@usefragments/ui 1.5.3 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. package/README.md +1 -1
  2. package/dist/assets/ui.css +8808 -5810
  3. package/dist/chart.cjs +7 -20
  4. package/dist/chart.js +7 -20
  5. package/dist/colorpicker.cjs +2 -1
  6. package/dist/colorpicker.js +2 -1
  7. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  8. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  9. package/dist/components/Alert/Alert.module.scss.cjs +12 -12
  10. package/dist/components/Alert/Alert.module.scss.js +12 -12
  11. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  12. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  13. package/dist/components/AppShell/index.cjs +5 -3
  14. package/dist/components/AppShell/index.d.ts +4 -2
  15. package/dist/components/AppShell/index.d.ts.map +1 -1
  16. package/dist/components/AppShell/index.js +5 -3
  17. package/dist/components/Avatar/Avatar.module.scss.cjs +17 -14
  18. package/dist/components/Avatar/Avatar.module.scss.js +17 -14
  19. package/dist/components/Avatar/index.cjs +100 -118
  20. package/dist/components/Avatar/index.d.ts +7 -5
  21. package/dist/components/Avatar/index.d.ts.map +1 -1
  22. package/dist/components/Avatar/index.js +100 -118
  23. package/dist/components/Badge/Badge.module.scss.cjs +19 -19
  24. package/dist/components/Badge/Badge.module.scss.js +19 -19
  25. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  26. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  27. package/dist/components/Box/Box.module.scss.cjs +152 -152
  28. package/dist/components/Box/Box.module.scss.js +152 -152
  29. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +8 -8
  30. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +8 -8
  31. package/dist/components/Button/Button.module.scss.cjs +14 -14
  32. package/dist/components/Button/Button.module.scss.js +14 -14
  33. package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
  34. package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
  35. package/dist/components/Card/Card.module.scss.cjs +18 -18
  36. package/dist/components/Card/Card.module.scss.js +18 -18
  37. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  38. package/dist/components/Chart/Chart.module.scss.js +15 -15
  39. package/dist/components/Chart/index.d.ts +7 -7
  40. package/dist/components/Chart/index.d.ts.map +1 -1
  41. package/dist/components/Checkbox/Checkbox.module.scss.cjs +9 -15
  42. package/dist/components/Checkbox/Checkbox.module.scss.js +9 -15
  43. package/dist/components/Checkbox/index.cjs +4 -6
  44. package/dist/components/Checkbox/index.d.ts.map +1 -1
  45. package/dist/components/Checkbox/index.js +4 -6
  46. package/dist/components/Chip/Chip.module.scss.cjs +15 -15
  47. package/dist/components/Chip/Chip.module.scss.js +15 -15
  48. package/dist/components/Chip/index.cjs +4 -5
  49. package/dist/components/Chip/index.d.ts +1 -1
  50. package/dist/components/Chip/index.d.ts.map +1 -1
  51. package/dist/components/Chip/index.js +2 -3
  52. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +22 -22
  53. package/dist/components/CodeBlock/CodeBlock.module.scss.js +22 -22
  54. package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -12
  55. package/dist/components/Collapsible/Collapsible.module.scss.js +9 -12
  56. package/dist/components/Collapsible/index.cjs +3 -2
  57. package/dist/components/Collapsible/index.d.ts +3 -3
  58. package/dist/components/Collapsible/index.d.ts.map +1 -1
  59. package/dist/components/Collapsible/index.js +3 -2
  60. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +16 -16
  61. package/dist/components/ColorPicker/ColorPicker.module.scss.js +16 -16
  62. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  63. package/dist/components/Combobox/Combobox.module.scss.cjs +21 -27
  64. package/dist/components/Combobox/Combobox.module.scss.js +21 -27
  65. package/dist/components/Combobox/index.cjs +4 -4
  66. package/dist/components/Combobox/index.d.ts.map +1 -1
  67. package/dist/components/Combobox/index.js +4 -4
  68. package/dist/components/Command/Command.module.scss.cjs +11 -11
  69. package/dist/components/Command/Command.module.scss.js +11 -11
  70. package/dist/components/ConversationList/ConversationList.module.scss.cjs +11 -14
  71. package/dist/components/ConversationList/ConversationList.module.scss.js +11 -14
  72. package/dist/components/ConversationList/index.cjs +40 -44
  73. package/dist/components/ConversationList/index.d.ts +3 -3
  74. package/dist/components/ConversationList/index.d.ts.map +1 -1
  75. package/dist/components/ConversationList/index.js +40 -44
  76. package/dist/components/DataTable/DataTable.module.scss.cjs +32 -56
  77. package/dist/components/DataTable/DataTable.module.scss.js +32 -56
  78. package/dist/components/DataTable/index.d.ts +5 -4
  79. package/dist/components/DataTable/index.d.ts.map +1 -1
  80. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  81. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  82. package/dist/components/DatePicker/index.d.ts.map +1 -1
  83. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  84. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  85. package/dist/components/Drawer/Drawer.module.scss.cjs +31 -28
  86. package/dist/components/Drawer/Drawer.module.scss.js +31 -28
  87. package/dist/components/Drawer/index.cjs +1 -1
  88. package/dist/components/Drawer/index.js +1 -1
  89. package/dist/components/Editor/Editor.module.scss.cjs +23 -23
  90. package/dist/components/Editor/Editor.module.scss.js +23 -23
  91. package/dist/components/EmptyState/EmptyState.module.scss.cjs +12 -12
  92. package/dist/components/EmptyState/EmptyState.module.scss.js +12 -12
  93. package/dist/components/Field/Field.module.scss.cjs +8 -5
  94. package/dist/components/Field/Field.module.scss.js +8 -5
  95. package/dist/components/Field/index.cjs +10 -1
  96. package/dist/components/Field/index.d.ts +9 -2
  97. package/dist/components/Field/index.d.ts.map +1 -1
  98. package/dist/components/Field/index.js +10 -1
  99. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  100. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  101. package/dist/components/Form/Form.module.scss.cjs +5 -2
  102. package/dist/components/Form/Form.module.scss.js +5 -2
  103. package/dist/components/Form/index.cjs +6 -1
  104. package/dist/components/Form/index.d.ts +8 -3
  105. package/dist/components/Form/index.d.ts.map +1 -1
  106. package/dist/components/Form/index.js +6 -1
  107. package/dist/components/Grid/Grid.module.scss.cjs +54 -72
  108. package/dist/components/Grid/Grid.module.scss.js +54 -72
  109. package/dist/components/Grid/index.cjs +57 -77
  110. package/dist/components/Grid/index.d.ts +11 -11
  111. package/dist/components/Grid/index.d.ts.map +1 -1
  112. package/dist/components/Grid/index.js +57 -77
  113. package/dist/components/Header/Header.module.scss.cjs +33 -33
  114. package/dist/components/Header/Header.module.scss.js +33 -33
  115. package/dist/components/Header/index.cjs +2 -1
  116. package/dist/components/Header/index.d.ts.map +1 -1
  117. package/dist/components/Header/index.js +2 -1
  118. package/dist/components/Icon/Icon.module.scss.cjs +29 -8
  119. package/dist/components/Icon/Icon.module.scss.js +30 -9
  120. package/dist/components/Icon/index.cjs +30 -48
  121. package/dist/components/Icon/index.d.ts +6 -6
  122. package/dist/components/Icon/index.d.ts.map +1 -1
  123. package/dist/components/Icon/index.js +30 -48
  124. package/dist/components/IconButton/IconButton.module.scss.cjs +8 -8
  125. package/dist/components/IconButton/IconButton.module.scss.js +8 -8
  126. package/dist/components/Input/Input.module.scss.cjs +19 -25
  127. package/dist/components/Input/Input.module.scss.js +19 -25
  128. package/dist/components/Input/index.cjs +1 -2
  129. package/dist/components/Input/index.d.ts.map +1 -1
  130. package/dist/components/Input/index.js +1 -2
  131. package/dist/components/Link/Link.module.scss.cjs +10 -10
  132. package/dist/components/Link/Link.module.scss.js +10 -10
  133. package/dist/components/List/List.module.scss.cjs +19 -19
  134. package/dist/components/List/List.module.scss.js +19 -19
  135. package/dist/components/List/index.cjs +4 -7
  136. package/dist/components/List/index.d.ts.map +1 -1
  137. package/dist/components/List/index.js +4 -7
  138. package/dist/components/Listbox/Listbox.module.scss.cjs +9 -9
  139. package/dist/components/Listbox/Listbox.module.scss.js +9 -9
  140. package/dist/components/Loading/Loading.module.scss.cjs +30 -30
  141. package/dist/components/Loading/Loading.module.scss.js +30 -30
  142. package/dist/components/Loading/index.cjs +39 -67
  143. package/dist/components/Loading/index.d.ts +6 -6
  144. package/dist/components/Loading/index.d.ts.map +1 -1
  145. package/dist/components/Loading/index.js +39 -67
  146. package/dist/components/Main/Main.module.scss.cjs +7 -7
  147. package/dist/components/Main/Main.module.scss.js +7 -7
  148. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  149. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  150. package/dist/components/Menu/Menu.module.scss.cjs +16 -16
  151. package/dist/components/Menu/Menu.module.scss.js +16 -16
  152. package/dist/components/Menu/index.cjs +19 -61
  153. package/dist/components/Menu/index.d.ts +10 -10
  154. package/dist/components/Menu/index.d.ts.map +1 -1
  155. package/dist/components/Menu/index.js +19 -61
  156. package/dist/components/Message/Message.module.scss.cjs +18 -21
  157. package/dist/components/Message/Message.module.scss.js +18 -21
  158. package/dist/components/Message/index.cjs +15 -2
  159. package/dist/components/Message/index.d.ts.map +1 -1
  160. package/dist/components/Message/index.js +15 -2
  161. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +28 -28
  162. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +28 -28
  163. package/dist/components/Pagination/Pagination.module.scss.cjs +18 -9
  164. package/dist/components/Pagination/Pagination.module.scss.js +19 -10
  165. package/dist/components/Pagination/index.cjs +5 -2
  166. package/dist/components/Pagination/index.d.ts +3 -1
  167. package/dist/components/Pagination/index.d.ts.map +1 -1
  168. package/dist/components/Pagination/index.js +5 -2
  169. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  170. package/dist/components/Popover/Popover.module.scss.js +10 -10
  171. package/dist/components/Progress/Progress.module.scss.cjs +29 -32
  172. package/dist/components/Progress/Progress.module.scss.js +29 -32
  173. package/dist/components/Progress/geometry.cjs +30 -0
  174. package/dist/components/Progress/geometry.d.ts +8 -0
  175. package/dist/components/Progress/geometry.d.ts.map +1 -0
  176. package/dist/components/Progress/geometry.js +30 -0
  177. package/dist/components/Progress/index.cjs +40 -29
  178. package/dist/components/Progress/index.d.ts +4 -3
  179. package/dist/components/Progress/index.d.ts.map +1 -1
  180. package/dist/components/Progress/index.js +40 -29
  181. package/dist/components/Prompt/Prompt.module.scss.cjs +29 -29
  182. package/dist/components/Prompt/Prompt.module.scss.js +29 -29
  183. package/dist/components/Prompt/index.cjs +5 -4
  184. package/dist/components/Prompt/index.d.ts.map +1 -1
  185. package/dist/components/Prompt/index.js +5 -4
  186. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +15 -21
  187. package/dist/components/RadioGroup/RadioGroup.module.scss.js +15 -21
  188. package/dist/components/RadioGroup/index.cjs +7 -6
  189. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  190. package/dist/components/RadioGroup/index.js +7 -6
  191. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +7 -22
  192. package/dist/components/ScrollArea/ScrollArea.module.scss.js +7 -22
  193. package/dist/components/ScrollArea/index.cjs +66 -42
  194. package/dist/components/ScrollArea/index.d.ts +3 -2
  195. package/dist/components/ScrollArea/index.d.ts.map +1 -1
  196. package/dist/components/ScrollArea/index.js +66 -42
  197. package/dist/components/ScrollArea/scroll-state.cjs +58 -0
  198. package/dist/components/ScrollArea/scroll-state.d.ts +16 -0
  199. package/dist/components/ScrollArea/scroll-state.d.ts.map +1 -0
  200. package/dist/components/ScrollArea/scroll-state.js +58 -0
  201. package/dist/components/Select/Select.module.scss.cjs +21 -21
  202. package/dist/components/Select/Select.module.scss.js +21 -21
  203. package/dist/components/Select/index.cjs +3 -2
  204. package/dist/components/Select/index.d.ts.map +1 -1
  205. package/dist/components/Select/index.js +3 -2
  206. package/dist/components/Separator/Separator.module.scss.cjs +13 -10
  207. package/dist/components/Separator/Separator.module.scss.js +13 -10
  208. package/dist/components/Separator/index.cjs +37 -38
  209. package/dist/components/Separator/index.d.ts +4 -4
  210. package/dist/components/Separator/index.d.ts.map +1 -1
  211. package/dist/components/Separator/index.js +37 -38
  212. package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
  213. package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
  214. package/dist/components/Sidebar/index.cjs +5 -3
  215. package/dist/components/Sidebar/index.d.ts +6 -1
  216. package/dist/components/Sidebar/index.d.ts.map +1 -1
  217. package/dist/components/Sidebar/index.js +5 -3
  218. package/dist/components/Skeleton/Skeleton.module.scss.cjs +50 -38
  219. package/dist/components/Skeleton/Skeleton.module.scss.js +50 -38
  220. package/dist/components/Skeleton/index.cjs +41 -55
  221. package/dist/components/Skeleton/index.d.ts +7 -7
  222. package/dist/components/Skeleton/index.d.ts.map +1 -1
  223. package/dist/components/Skeleton/index.js +41 -55
  224. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  225. package/dist/components/Slider/Slider.module.scss.js +12 -12
  226. package/dist/components/Stack/Stack.module.scss.cjs +25 -45
  227. package/dist/components/Stack/Stack.module.scss.js +25 -45
  228. package/dist/components/Stack/index.cjs +106 -101
  229. package/dist/components/Stack/index.d.ts +7 -7
  230. package/dist/components/Stack/index.d.ts.map +1 -1
  231. package/dist/components/Stack/index.js +106 -101
  232. package/dist/components/Switch/Switch.module.scss.cjs +32 -0
  233. package/dist/components/Switch/Switch.module.scss.js +32 -0
  234. package/dist/components/{Toggle → Switch}/index.cjs +9 -14
  235. package/dist/components/Switch/index.d.ts +37 -1
  236. package/dist/components/Switch/index.d.ts.map +1 -1
  237. package/dist/components/{Toggle → Switch}/index.js +5 -10
  238. package/dist/components/Table/Table.module.scss.cjs +18 -27
  239. package/dist/components/Table/Table.module.scss.js +18 -27
  240. package/dist/components/Table/index.d.ts +6 -5
  241. package/dist/components/Table/index.d.ts.map +1 -1
  242. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  243. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  244. package/dist/components/Tabs/Tabs.module.scss.cjs +12 -12
  245. package/dist/components/Tabs/Tabs.module.scss.js +12 -12
  246. package/dist/components/Tabs/index.cjs +2 -2
  247. package/dist/components/Tabs/index.js +2 -2
  248. package/dist/components/Text/Text.module.scss.cjs +93 -57
  249. package/dist/components/Text/Text.module.scss.js +93 -57
  250. package/dist/components/Text/index.cjs +14 -6
  251. package/dist/components/Text/index.d.ts +25 -15
  252. package/dist/components/Text/index.d.ts.map +1 -1
  253. package/dist/components/Text/index.js +14 -6
  254. package/dist/components/Textarea/Textarea.module.scss.cjs +26 -23
  255. package/dist/components/Textarea/Textarea.module.scss.js +26 -23
  256. package/dist/components/Textarea/index.cjs +5 -10
  257. package/dist/components/Textarea/index.d.ts.map +1 -1
  258. package/dist/components/Textarea/index.js +5 -10
  259. package/dist/components/Theme/context.cjs +39 -0
  260. package/dist/components/Theme/context.d.ts +21 -0
  261. package/dist/components/Theme/context.d.ts.map +1 -0
  262. package/dist/components/Theme/context.js +22 -0
  263. package/dist/components/Theme/index.cjs +14 -209
  264. package/dist/components/Theme/index.d.ts +4 -37
  265. package/dist/components/Theme/index.d.ts.map +1 -1
  266. package/dist/components/Theme/index.js +9 -204
  267. package/dist/components/{Theme → ThemeToggle}/ThemeToggle.module.scss.cjs +6 -6
  268. package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +23 -0
  269. package/dist/components/ThemeToggle/index.cjs +115 -0
  270. package/dist/components/ThemeToggle/index.d.ts +21 -0
  271. package/dist/components/ThemeToggle/index.d.ts.map +1 -0
  272. package/dist/components/ThemeToggle/index.js +115 -0
  273. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +13 -13
  274. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +13 -13
  275. package/dist/components/ThinkingIndicator/index.cjs +34 -41
  276. package/dist/components/ThinkingIndicator/index.d.ts +4 -4
  277. package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
  278. package/dist/components/ThinkingIndicator/index.js +34 -41
  279. package/dist/components/Toast/Toast.module.scss.cjs +20 -20
  280. package/dist/components/Toast/Toast.module.scss.js +20 -20
  281. package/dist/components/Toggle/index.d.ts +2 -42
  282. package/dist/components/Toggle/index.d.ts.map +1 -1
  283. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +20 -20
  284. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +20 -20
  285. package/dist/components/ToggleGroup/index.cjs +3 -2
  286. package/dist/components/ToggleGroup/index.d.ts +2 -1
  287. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  288. package/dist/components/ToggleGroup/index.js +3 -2
  289. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  290. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  291. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +1 -1
  292. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
  293. package/dist/data-table.cjs +12 -9
  294. package/dist/data-table.js +12 -9
  295. package/dist/datepicker.cjs +2 -1
  296. package/dist/datepicker.js +2 -1
  297. package/dist/index.cjs +100 -98
  298. package/dist/index.d.ts +2 -2
  299. package/dist/index.d.ts.map +1 -1
  300. package/dist/index.js +4 -2
  301. package/dist/markdown.cjs +1 -1
  302. package/dist/markdown.js +2 -2
  303. package/dist/measurements/generated.cjs +296 -0
  304. package/dist/measurements/generated.d.ts +261 -0
  305. package/dist/measurements/generated.d.ts.map +1 -0
  306. package/dist/measurements/generated.js +296 -0
  307. package/dist/measurements/index.d.ts +2 -0
  308. package/dist/measurements/index.d.ts.map +1 -0
  309. package/dist/measurements.cjs +6 -0
  310. package/dist/measurements.js +6 -0
  311. package/dist/recipes/popup.cjs +14 -0
  312. package/dist/recipes/popup.d.ts +4 -0
  313. package/dist/recipes/popup.d.ts.map +1 -0
  314. package/dist/recipes/popup.js +14 -0
  315. package/dist/recipes/table-chrome.cjs +18 -0
  316. package/dist/recipes/table-chrome.d.ts +10 -0
  317. package/dist/recipes/table-chrome.d.ts.map +1 -0
  318. package/dist/recipes/table-chrome.js +18 -0
  319. package/dist/table.cjs +5 -2
  320. package/dist/table.js +5 -2
  321. package/dist/utils/layout-spacing.cjs +27 -0
  322. package/dist/utils/layout-spacing.d.ts +5 -0
  323. package/dist/utils/layout-spacing.d.ts.map +1 -0
  324. package/dist/utils/layout-spacing.js +27 -0
  325. package/dist/utils/seed-derivation.cjs +4 -42
  326. package/dist/utils/seed-derivation.d.ts +4 -3
  327. package/dist/utils/seed-derivation.d.ts.map +1 -1
  328. package/dist/utils/seed-derivation.js +4 -42
  329. package/dist/utils/theme-presets.cjs +1 -0
  330. package/dist/utils/theme-presets.d.ts +3 -2
  331. package/dist/utils/theme-presets.d.ts.map +1 -1
  332. package/dist/utils/theme-presets.js +1 -0
  333. package/fragments.json +1 -1
  334. package/package.json +23 -4
  335. package/src/components/Accordion/Accordion.module.scss +31 -52
  336. package/src/components/Alert/Alert.module.scss +28 -44
  337. package/src/components/AppShell/AppShell.module.scss +6 -3
  338. package/src/components/AppShell/index.tsx +8 -4
  339. package/src/components/Avatar/Avatar.module.scss +22 -60
  340. package/src/components/Avatar/index.tsx +152 -146
  341. package/src/components/Badge/Badge.module.scss +51 -46
  342. package/src/components/BentoGrid/BentoGrid.module.scss +11 -32
  343. package/src/components/Box/Box.module.scss +253 -81
  344. package/src/components/Breadcrumbs/Breadcrumbs.module.scss +10 -11
  345. package/src/components/Button/Button.module.scss +52 -57
  346. package/src/components/ButtonGroup/ButtonGroup.module.scss +5 -5
  347. package/src/components/Card/Card.consumer-fixture.module.scss +8 -0
  348. package/src/components/Card/Card.module.scss +211 -175
  349. package/src/components/Chart/Chart.module.scss +28 -29
  350. package/src/components/Chart/index.tsx +40 -53
  351. package/src/components/Checkbox/Checkbox.module.scss +43 -64
  352. package/src/components/Checkbox/index.tsx +4 -9
  353. package/src/components/Chip/Chip.contract.json +4 -3
  354. package/src/components/Chip/Chip.module.scss +23 -34
  355. package/src/components/Chip/index.tsx +3 -4
  356. package/src/components/CodeBlock/CodeBlock.module.scss +102 -215
  357. package/src/components/Collapsible/Collapsible.module.scss +29 -63
  358. package/src/components/Collapsible/index.tsx +22 -26
  359. package/src/components/ColorPicker/ColorPicker.module.scss +42 -24
  360. package/src/components/ColorPicker/index.tsx +2 -1
  361. package/src/components/Combobox/Combobox.module.scss +60 -73
  362. package/src/components/Combobox/index.tsx +7 -5
  363. package/src/components/Command/Command.module.scss +47 -77
  364. package/src/components/ConversationList/ConversationList.module.scss +20 -78
  365. package/src/components/ConversationList/index.tsx +55 -59
  366. package/src/components/DataTable/DataTable.module.scss +76 -216
  367. package/src/components/DataTable/index.tsx +20 -25
  368. package/src/components/DatePicker/DatePicker.module.scss +54 -33
  369. package/src/components/DatePicker/index.tsx +2 -1
  370. package/src/components/Dialog/Dialog.module.scss +42 -66
  371. package/src/components/Drawer/Drawer.module.scss +93 -99
  372. package/src/components/Drawer/index.tsx +1 -1
  373. package/src/components/Editor/Editor.module.scss +115 -220
  374. package/src/components/EmptyState/EmptyState.module.scss +38 -85
  375. package/src/components/Field/Field.contract.json +2 -1
  376. package/src/components/Field/Field.module.scss +9 -11
  377. package/src/components/Field/index.tsx +27 -1
  378. package/src/components/Fieldset/Fieldset.module.scss +14 -6
  379. package/src/components/Form/Form.contract.json +10 -23
  380. package/src/components/Form/Form.module.scss +9 -4
  381. package/src/components/Form/index.tsx +22 -7
  382. package/src/components/Grid/Grid.module.scss +159 -63
  383. package/src/components/Grid/index.tsx +107 -126
  384. package/src/components/Header/Header.module.scss +25 -32
  385. package/src/components/Header/index.tsx +2 -1
  386. package/src/components/Icon/Icon.module.scss +16 -0
  387. package/src/components/Icon/index.tsx +74 -86
  388. package/src/components/IconButton/IconButton.module.scss +11 -21
  389. package/src/components/Input/Input.module.scss +67 -55
  390. package/src/components/Input/index.tsx +1 -2
  391. package/src/components/Link/Link.module.scss +8 -9
  392. package/src/components/List/List.module.scss +16 -21
  393. package/src/components/List/index.tsx +4 -10
  394. package/src/components/Listbox/Listbox.module.scss +26 -54
  395. package/src/components/Loading/Loading.module.scss +23 -33
  396. package/src/components/Loading/index.tsx +68 -97
  397. package/src/components/Main/Main.module.scss +3 -5
  398. package/src/components/Markdown/Markdown.module.scss +36 -184
  399. package/src/components/Markdown/index.tsx +2 -2
  400. package/src/components/Menu/Menu.module.scss +48 -133
  401. package/src/components/Menu/index.tsx +57 -89
  402. package/src/components/Message/Message.module.scss +52 -142
  403. package/src/components/Message/index.tsx +16 -6
  404. package/src/components/NavigationMenu/NavigationMenu.module.scss +59 -52
  405. package/src/components/Pagination/Pagination.module.scss +32 -25
  406. package/src/components/Pagination/index.tsx +7 -2
  407. package/src/components/Popover/Popover.module.scss +37 -73
  408. package/src/components/Progress/Progress.module.scss +61 -41
  409. package/src/components/Progress/geometry.ts +41 -0
  410. package/src/components/Progress/index.tsx +44 -30
  411. package/src/components/Prompt/Prompt.module.scss +45 -82
  412. package/src/components/Prompt/index.tsx +6 -5
  413. package/src/components/RadioGroup/RadioGroup.module.scss +50 -69
  414. package/src/components/RadioGroup/index.tsx +7 -9
  415. package/src/components/ScrollArea/ScrollArea.contract.json +8 -24
  416. package/src/components/ScrollArea/ScrollArea.module.scss +122 -96
  417. package/src/components/ScrollArea/index.tsx +78 -60
  418. package/src/components/ScrollArea/scroll-state.ts +87 -0
  419. package/src/components/Select/Select.module.scss +53 -41
  420. package/src/components/Select/index.tsx +6 -2
  421. package/src/components/Separator/Separator.module.scss +29 -19
  422. package/src/components/Separator/index.tsx +55 -51
  423. package/src/components/Sidebar/Sidebar.contract.json +12 -0
  424. package/src/components/Sidebar/Sidebar.module.scss +101 -99
  425. package/src/components/Sidebar/index.tsx +10 -3
  426. package/src/components/Skeleton/Skeleton.module.scss +26 -26
  427. package/src/components/Skeleton/index.tsx +65 -72
  428. package/src/components/Slider/Slider.module.scss +31 -25
  429. package/src/components/Stack/Stack.module.scss +101 -30
  430. package/src/components/Stack/index.tsx +157 -127
  431. package/src/components/{Toggle/Toggle.contract.json → Switch/Switch.contract.json} +1 -1
  432. package/src/components/{Toggle/Toggle.module.scss → Switch/Switch.module.scss} +55 -82
  433. package/src/components/{Toggle → Switch}/index.tsx +5 -21
  434. package/src/components/Table/Table.module.scss +38 -129
  435. package/src/components/Table/index.tsx +13 -6
  436. package/src/components/TableOfContents/TableOfContents.module.scss +20 -177
  437. package/src/components/Tabs/Tabs.module.scss +27 -22
  438. package/src/components/Tabs/index.tsx +2 -2
  439. package/src/components/Text/Text.module.scss +22 -3
  440. package/src/components/Text/index.tsx +56 -21
  441. package/src/components/Textarea/Textarea.module.scss +59 -39
  442. package/src/components/Textarea/index.tsx +5 -12
  443. package/src/components/Theme/context.ts +42 -0
  444. package/src/components/Theme/index.tsx +14 -309
  445. package/src/components/ThemeToggle/ThemeToggle.module.scss +73 -0
  446. package/src/components/ThemeToggle/index.tsx +144 -0
  447. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +24 -19
  448. package/src/components/ThinkingIndicator/index.tsx +44 -54
  449. package/src/components/Toast/Toast.contract.json +5 -21
  450. package/src/components/Toast/Toast.module.scss +61 -138
  451. package/src/components/Toggle/index.ts +7 -0
  452. package/src/components/ToggleGroup/ToggleGroup.contract.json +12 -39
  453. package/src/components/ToggleGroup/ToggleGroup.module.scss +132 -88
  454. package/src/components/ToggleGroup/index.tsx +5 -3
  455. package/src/components/Tooltip/Tooltip.module.scss +23 -39
  456. package/src/components/VisuallyHidden/VisuallyHidden.module.scss +3 -0
  457. package/src/index.ts +2 -1
  458. package/src/measurements/MeasurementTargets.module.scss +229 -0
  459. package/src/measurements/generated.ts +317 -0
  460. package/src/measurements/index.ts +8 -0
  461. package/src/measurements/measurements.json +361 -0
  462. package/src/recipes/_action.scss +138 -0
  463. package/src/recipes/_boolean-range.scss +124 -0
  464. package/src/recipes/_feedback.scss +171 -0
  465. package/src/recipes/_field.scss +98 -0
  466. package/src/recipes/_layout.scss +67 -0
  467. package/src/recipes/_navigation.scss +110 -0
  468. package/src/recipes/_overlay.scss +191 -0
  469. package/src/recipes/_popup.scss +92 -0
  470. package/src/recipes/_prose.scss +174 -0
  471. package/src/recipes/_representation.scss +193 -0
  472. package/src/recipes/_segmented.scss +26 -0
  473. package/src/recipes/_surface.scss +13 -0
  474. package/src/recipes/_table-chrome.scss +105 -0
  475. package/src/recipes/_target.scss +31 -0
  476. package/src/recipes/_typography.scss +38 -0
  477. package/src/recipes/popup.ts +12 -0
  478. package/src/recipes/table-chrome.ts +30 -0
  479. package/src/styles/globals.scss +2 -2
  480. package/src/tokens/_component-properties.scss +2 -2
  481. package/src/tokens/_computed.scss +9 -9
  482. package/src/tokens/_density.scss +41 -132
  483. package/src/tokens/_measurements.catalog.generated.css +91 -0
  484. package/src/tokens/_measurements.generated.scss +604 -0
  485. package/src/tokens/_mixins.scss +0 -276
  486. package/src/tokens/_property-registrations.scss +96 -92
  487. package/src/tokens/_radius.scss +16 -70
  488. package/src/tokens/_seeds.scss +8 -7
  489. package/src/tokens/_variables.scss +163 -148
  490. package/src/utils/layout-spacing.ts +31 -0
  491. package/src/utils/seed-derivation.ts +134 -172
  492. package/src/utils/theme-presets.ts +58 -30
  493. package/dist/components/Theme/ThemeToggle.module.scss.js +0 -23
  494. package/dist/components/Toggle/Toggle.module.scss.cjs +0 -44
  495. package/dist/components/Toggle/Toggle.module.scss.js +0 -44
  496. package/src/components/Switch/index.ts +0 -3
  497. package/src/components/Theme/ThemeToggle.module.scss +0 -91
@@ -1,5 +1,6 @@
1
- import * as React from 'react';
2
- import styles from './Grid.module.scss';
1
+ import * as React from "react";
2
+ import { resolveLayoutGap } from "../../utils/layout-spacing";
3
+ import styles from "./Grid.module.scss";
3
4
 
4
5
  // ============================================
5
6
  // Types
@@ -26,7 +27,10 @@ export interface ResponsiveColumns {
26
27
  * CSS Grid layout component with responsive columns.
27
28
  * @see https://usefragments.com/components/grid
28
29
  */
29
- export interface GridProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children' | 'style' | 'className'> {
30
+ export interface GridProps extends Omit<
31
+ React.HTMLAttributes<HTMLDivElement>,
32
+ "children" | "style" | "className"
33
+ > {
30
34
  children?: React.ReactNode;
31
35
  /**
32
36
  * Number of columns.
@@ -34,31 +38,34 @@ export interface GridProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'c
34
38
  * - An object for responsive columns: `{ base: 1, md: 2, lg: 3 }`
35
39
  * - `"auto"` for responsive auto-fill based on minChildWidth
36
40
  */
37
- columns?: ColumnCount | ResponsiveColumns | 'auto';
41
+ columns?: ColumnCount | ResponsiveColumns | "auto";
38
42
  /** Minimum width for auto-fill columns (only used with columns="auto") */
39
43
  minChildWidth?: string;
40
44
  /** Gap between grid items. Accepts string tokens or numbers (1-8) mapping to the spacing scale */
41
- gap?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | GapScale;
45
+ gap?: "none" | "xs" | "sm" | "md" | "lg" | "xl" | GapScale;
42
46
  /** Vertical alignment of items within their cells */
43
- alignItems?: 'start' | 'center' | 'end' | 'stretch';
47
+ alignItems?: "start" | "center" | "end" | "stretch";
44
48
  /** Horizontal alignment of items within their cells */
45
- justifyItems?: 'start' | 'center' | 'end' | 'stretch';
49
+ justifyItems?: "start" | "center" | "end" | "stretch";
46
50
  /** Padding inside the grid container */
47
- padding?: 'none' | 'sm' | 'md' | 'lg';
51
+ padding?: "none" | "sm" | "md" | "lg";
48
52
  /** Additional class name */
49
53
  className?: string;
50
54
  /** Inline styles */
51
55
  style?: React.CSSProperties;
52
56
  }
53
57
 
54
- export interface GridItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children' | 'className'> {
58
+ export interface GridItemProps extends Omit<
59
+ React.HTMLAttributes<HTMLDivElement>,
60
+ "children" | "className"
61
+ > {
55
62
  children?: React.ReactNode;
56
63
  /** Number of columns this item spans */
57
- colSpan?: ColumnCount | 'full';
64
+ colSpan?: ColumnCount | "full";
58
65
  /** Number of rows this item spans */
59
66
  rowSpan?: 1 | 2 | 3 | 4 | 5 | 6;
60
67
  /** Override alignment for this item */
61
- alignSelf?: 'start' | 'center' | 'end' | 'stretch';
68
+ alignSelf?: "start" | "center" | "end" | "stretch";
62
69
  /**
63
70
  * Enable CSS subgrid so children align to parent grid tracks.
64
71
  * - `true` or `"rows"` — children align to parent row tracks
@@ -66,7 +73,7 @@ export interface GridItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>
66
73
  * - `"both"` — children align to both row and column tracks
67
74
  * Requires the item to span multiple rows/columns for visible effect.
68
75
  */
69
- subgrid?: boolean | 'rows' | 'columns' | 'both';
76
+ subgrid?: boolean | "rows" | "columns" | "both";
70
77
  /** Additional class name */
71
78
  className?: string;
72
79
  style?: React.CSSProperties;
@@ -76,22 +83,11 @@ export interface GridItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>
76
83
  // Helpers
77
84
  // ============================================
78
85
 
79
- function isResponsiveColumns(
80
- columns: GridProps['columns']
81
- ): columns is ResponsiveColumns {
82
- return typeof columns === 'object' && columns !== null;
86
+ function isResponsiveColumns(columns: GridProps["columns"]): columns is ResponsiveColumns {
87
+ return typeof columns === "object" && columns !== null;
83
88
  }
84
89
 
85
- const gapClasses: Record<Exclude<NonNullable<GridProps['gap']>, GapScale>, string> = {
86
- none: styles.gapNone,
87
- xs: styles.gapXs,
88
- sm: styles.gapSm,
89
- md: styles.gapMd,
90
- lg: styles.gapLg,
91
- xl: styles.gapXl,
92
- };
93
-
94
- const paddingClasses: Record<NonNullable<GridProps['padding']>, string> = {
90
+ const paddingClasses: Record<NonNullable<GridProps["padding"]>, string> = {
95
91
  none: styles.paddingNone,
96
92
  sm: styles.paddingSm,
97
93
  md: styles.paddingMd,
@@ -102,70 +98,67 @@ const paddingClasses: Record<NonNullable<GridProps['padding']>, string> = {
102
98
  // Grid Component
103
99
  // ============================================
104
100
 
105
- export const Grid = React.forwardRef<HTMLDivElement, GridProps>(
106
- function Grid(
107
- {
108
- children,
109
- columns = 1,
110
- minChildWidth,
111
- gap = 'md',
112
- alignItems,
113
- justifyItems,
114
- padding = 'none',
115
- className,
116
- style,
117
- ...htmlProps
118
- },
119
- ref
120
- ) {
121
- // Determine classes and style based on columns type
122
- let columnsClass: string;
123
- let inlineStyle: React.CSSProperties | undefined;
124
-
125
- if (columns === 'auto') {
126
- columnsClass = styles.columnsAuto;
127
- if (minChildWidth) {
128
- inlineStyle = { '--fui-grid-min-child-width': minChildWidth } as React.CSSProperties;
129
- }
130
- } else if (isResponsiveColumns(columns)) {
131
- columnsClass = styles.columnsResponsive;
132
- const vars: Record<string, string> = {};
133
- if (columns.base) vars['--fui-grid-cols'] = String(columns.base);
134
- if (columns.sm) vars['--fui-grid-cols-sm'] = String(columns.sm);
135
- if (columns.md) vars['--fui-grid-cols-md'] = String(columns.md);
136
- if (columns.lg) vars['--fui-grid-cols-lg'] = String(columns.lg);
137
- if (columns.xl) vars['--fui-grid-cols-xl'] = String(columns.xl);
138
- inlineStyle = vars as unknown as React.CSSProperties;
139
- } else {
140
- columnsClass = styles[`columns${columns}`];
141
- }
142
-
143
- // Handle numeric gap via inline style
144
- if (typeof gap === 'number') {
145
- inlineStyle = { ...inlineStyle, gap: `var(--fui-space-${gap})` } as React.CSSProperties;
101
+ export const Grid = React.forwardRef<HTMLDivElement, GridProps>(function Grid(
102
+ {
103
+ children,
104
+ columns = 1,
105
+ minChildWidth,
106
+ gap = "md",
107
+ alignItems,
108
+ justifyItems,
109
+ padding = "none",
110
+ className,
111
+ style,
112
+ ...htmlProps
113
+ },
114
+ ref
115
+ ) {
116
+ // Determine classes and style based on columns type
117
+ let columnsClass: string;
118
+ let inlineStyle: React.CSSProperties | undefined;
119
+
120
+ if (columns === "auto") {
121
+ columnsClass = styles.columnsAuto;
122
+ if (minChildWidth) {
123
+ inlineStyle = { "--fui-grid-min-child-width": minChildWidth } as React.CSSProperties;
146
124
  }
147
-
148
- const classes = [
149
- styles.grid,
150
- columnsClass,
151
- typeof gap === 'number' ? undefined : gapClasses[gap],
152
- paddingClasses[padding],
153
- alignItems && styles[`align${cap(alignItems)}`],
154
- justifyItems && styles[`justify${cap(justifyItems)}`],
155
- className,
156
- ]
157
- .filter(Boolean)
158
- .join(' ');
159
-
160
- const mergedStyle = inlineStyle ? { ...inlineStyle, ...style } : style;
161
-
162
- return (
163
- <div {...htmlProps} ref={ref} className={classes} style={mergedStyle}>
164
- {children}
165
- </div>
166
- );
125
+ } else if (isResponsiveColumns(columns)) {
126
+ columnsClass = styles.columnsResponsive;
127
+ const vars: Record<string, string> = {};
128
+ if (columns.base) vars["--fui-grid-cols"] = String(columns.base);
129
+ if (columns.sm) vars["--fui-grid-cols-sm"] = String(columns.sm);
130
+ if (columns.md) vars["--fui-grid-cols-md"] = String(columns.md);
131
+ if (columns.lg) vars["--fui-grid-cols-lg"] = String(columns.lg);
132
+ if (columns.xl) vars["--fui-grid-cols-xl"] = String(columns.xl);
133
+ inlineStyle = vars as unknown as React.CSSProperties;
134
+ } else {
135
+ columnsClass = styles[`columns${columns}`];
167
136
  }
168
- ) as GridComponent;
137
+
138
+ inlineStyle = {
139
+ ...inlineStyle,
140
+ "--_fui-grid-gap": resolveLayoutGap(gap),
141
+ } as React.CSSProperties;
142
+
143
+ const classes = [
144
+ styles.grid,
145
+ columnsClass,
146
+ paddingClasses[padding],
147
+ alignItems && styles[`align${cap(alignItems)}`],
148
+ justifyItems && styles[`justify${cap(justifyItems)}`],
149
+ className,
150
+ ]
151
+ .filter(Boolean)
152
+ .join(" ");
153
+
154
+ const mergedStyle = inlineStyle ? { ...inlineStyle, ...style } : style;
155
+
156
+ return (
157
+ <div {...htmlProps} ref={ref} className={classes} style={mergedStyle}>
158
+ {children}
159
+ </div>
160
+ );
161
+ }) as GridComponent;
169
162
 
170
163
  // ============================================
171
164
  // Grid.Item Sub-component
@@ -177,42 +170,29 @@ const subgridClasses: Record<string, string> = {
177
170
  both: styles.subgridBoth,
178
171
  };
179
172
 
180
- const GridItem = React.forwardRef<HTMLDivElement, GridItemProps>(
181
- function GridItem(
182
- {
183
- children,
184
- colSpan,
185
- rowSpan,
186
- alignSelf,
187
- subgrid,
188
- className,
189
- style,
190
- ...htmlProps
191
- },
192
- ref
193
- ) {
194
- const subgridClass = subgrid
195
- ? subgridClasses[subgrid === true ? 'rows' : subgrid]
196
- : undefined;
197
-
198
- const classes = [
199
- styles.item,
200
- colSpan && (colSpan === 'full' ? styles.colSpanFull : styles[`colSpan${colSpan}`]),
201
- rowSpan && styles[`rowSpan${rowSpan}`],
202
- alignSelf && styles[`selfAlign${cap(alignSelf)}`],
203
- subgridClass,
204
- className,
205
- ]
206
- .filter(Boolean)
207
- .join(' ');
208
-
209
- return (
210
- <div {...htmlProps} ref={ref} className={classes} style={style}>
211
- {children}
212
- </div>
213
- );
214
- }
215
- );
173
+ const GridItem = React.forwardRef<HTMLDivElement, GridItemProps>(function GridItem(
174
+ { children, colSpan, rowSpan, alignSelf, subgrid, className, style, ...htmlProps },
175
+ ref
176
+ ) {
177
+ const subgridClass = subgrid ? subgridClasses[subgrid === true ? "rows" : subgrid] : undefined;
178
+
179
+ const classes = [
180
+ styles.item,
181
+ colSpan && (colSpan === "full" ? styles.colSpanFull : styles[`colSpan${colSpan}`]),
182
+ rowSpan && styles[`rowSpan${rowSpan}`],
183
+ alignSelf && styles[`selfAlign${cap(alignSelf)}`],
184
+ subgridClass,
185
+ className,
186
+ ]
187
+ .filter(Boolean)
188
+ .join(" ");
189
+
190
+ return (
191
+ <div {...htmlProps} ref={ref} className={classes} style={style}>
192
+ {children}
193
+ </div>
194
+ );
195
+ });
216
196
 
217
197
  // ============================================
218
198
  // Utilities
@@ -226,8 +206,9 @@ function cap(s: string): string {
226
206
  // Compound component type
227
207
  // ============================================
228
208
 
229
- interface GridComponent
230
- extends React.ForwardRefExoticComponent<GridProps & React.RefAttributes<HTMLDivElement>> {
209
+ interface GridComponent extends React.ForwardRefExoticComponent<
210
+ GridProps & React.RefAttributes<HTMLDivElement>
211
+ > {
231
212
  Item: typeof GridItem;
232
213
  }
233
214
 
@@ -1,11 +1,16 @@
1
1
  @use '../../tokens/variables' as *;
2
2
  @use '../../tokens/mixins' as *;
3
+ @use '../../recipes/action' as action;
4
+ @use '../../recipes/layout' as layout;
5
+ @use '../../recipes/navigation' as navigation;
6
+ @use '../../recipes/popup' as popup;
3
7
 
4
8
  // ============================================
5
9
  // Header Root
6
10
  // ============================================
7
11
 
8
12
  .header {
13
+ @include navigation.properties;
9
14
  // Container query context: children respond to header width, not viewport
10
15
  @include container(fui-header);
11
16
 
@@ -19,7 +24,7 @@
19
24
  }
20
25
 
21
26
  .fixed {
22
- position: sticky;
27
+ position: fixed;
23
28
  top: 0;
24
29
  left: 0;
25
30
  right: 0;
@@ -126,18 +131,15 @@
126
131
  .navItem {
127
132
  @include button-reset;
128
133
  @include interactive-base;
129
- @include text-base;
134
+ @include action.base;
135
+ @include action.size("md");
130
136
 
131
137
  display: flex;
132
138
  align-items: center;
133
- padding: var(--fui-space-1, $fui-space-1) var(--fui-space-3, $fui-space-3);
134
139
  border-radius: var(--fui-radius-md, $fui-radius-md);
135
140
  color: var(--fui-text-secondary, $fui-text-secondary);
136
141
  text-decoration: none;
137
142
  white-space: nowrap;
138
- // Horizontal header chrome (button-sized), not a vertical list-nav row —
139
- // keeps the larger button-height target rather than --fui-sidebar-item-height.
140
- min-height: var(--fui-button-height-md, $fui-button-height-md);
141
143
 
142
144
  &:hover {
143
145
  background-color: var(--fui-bg-hover, $fui-bg-hover);
@@ -155,14 +157,10 @@
155
157
  font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
156
158
  background-color: var(--fui-bg-secondary, $fui-bg-secondary);
157
159
 
158
- &:hover {
159
- background-color: var(--fui-bg-secondary, $fui-bg-secondary) !important;
160
- color: var(--fui-text-primary, $fui-text-primary) !important;
161
- }
162
-
163
- &:active {
164
- background-color: var(--fui-bg-secondary, $fui-bg-secondary) !important;
165
- color: var(--fui-text-primary, $fui-text-primary) !important;
160
+ &.navItem:hover,
161
+ &.navItem:active {
162
+ background-color: var(--fui-bg-secondary, $fui-bg-secondary);
163
+ color: var(--fui-text-primary, $fui-text-primary);
166
164
  }
167
165
  }
168
166
 
@@ -194,10 +192,9 @@
194
192
  }
195
193
 
196
194
  .navMenuPopup {
197
- @include surface-elevated;
195
+ @include popup.container;
198
196
 
199
- min-width: 10rem;
200
- padding: var(--fui-space-1, $fui-space-1);
197
+ min-width: layout.measure("field-minimum");
201
198
  box-shadow: var(--fui-shadow-md, $fui-shadow-md);
202
199
 
203
200
  opacity: 0;
@@ -221,12 +218,11 @@
221
218
 
222
219
  .navMenuItem {
223
220
  @include button-reset;
224
- @include text-base;
221
+ @include popup.row;
225
222
 
226
223
  display: flex;
227
224
  align-items: center;
228
225
  width: 100%;
229
- padding: var(--fui-space-1, $fui-space-1) var(--fui-space-3, $fui-space-3);
230
226
  border-radius: var(--fui-radius-sm, $fui-radius-sm);
231
227
  color: var(--fui-text-secondary, $fui-text-secondary);
232
228
  text-decoration: none;
@@ -235,8 +231,7 @@
235
231
  outline: none;
236
232
 
237
233
  &[data-highlighted] {
238
- background-color: var(--fui-bg-hover, $fui-bg-hover);
239
- color: var(--fui-text-primary, $fui-text-primary);
234
+ @include popup.highlight-state;
240
235
  }
241
236
  }
242
237
 
@@ -304,12 +299,12 @@
304
299
  .trigger {
305
300
  @include button-reset;
306
301
  @include interactive-base;
302
+ @include action.base;
303
+ @include action.icon-only("lg");
307
304
 
308
305
  display: flex;
309
306
  align-items: center;
310
307
  justify-content: center;
311
- width: var(--fui-touch-lg, $fui-touch-lg);
312
- height: var(--fui-touch-lg, $fui-touch-lg);
313
308
  border-radius: var(--fui-radius-md, $fui-radius-md);
314
309
  color: var(--fui-text-primary, $fui-text-primary);
315
310
  flex-shrink: 0;
@@ -319,8 +314,7 @@
319
314
  }
320
315
 
321
316
  svg {
322
- width: var(--fui-icon-xl, $fui-icon-xl);
323
- height: var(--fui-icon-xl, $fui-icon-xl);
317
+ @include action.glyph("lg");
324
318
  }
325
319
  }
326
320
 
@@ -352,7 +346,7 @@
352
346
  z-index: 99;
353
347
  width: min(320px, 85vw);
354
348
  background-color: var(--fui-bg-primary, $fui-bg-primary);
355
- border-left: 1px solid var(--fui-border, $fui-border);
349
+ border-left: var(--fui-stroke-hairline, 1px) solid var(--fui-border, $fui-border);
356
350
  display: flex;
357
351
  flex-direction: column;
358
352
  animation: mobileNavSlideIn var(--fui-transition-normal, $fui-transition-normal) ease;
@@ -363,18 +357,18 @@
363
357
  align-items: center;
364
358
  justify-content: flex-end;
365
359
  padding: var(--fui-space-3, $fui-space-3) var(--fui-space-4, $fui-space-4);
366
- border-bottom: 1px solid var(--fui-border, $fui-border);
360
+ border-bottom: var(--fui-stroke-hairline, 1px) solid var(--fui-border, $fui-border);
367
361
  }
368
362
 
369
363
  .mobileNavClose {
370
364
  @include button-reset;
371
365
  @include interactive-base;
366
+ @include action.base;
367
+ @include action.icon-only("md");
372
368
 
373
369
  display: flex;
374
370
  align-items: center;
375
371
  justify-content: center;
376
- width: var(--fui-touch-md, $fui-touch-md);
377
- height: var(--fui-touch-md, $fui-touch-md);
378
372
  border-radius: var(--fui-radius-md, $fui-radius-md);
379
373
  color: var(--fui-text-secondary, $fui-text-secondary);
380
374
 
@@ -392,12 +386,11 @@
392
386
 
393
387
  .mobileNavLink {
394
388
  @include button-reset;
395
- @include text-base;
389
+ @include navigation.row;
396
390
 
397
391
  display: flex;
398
392
  align-items: center;
399
393
  width: 100%;
400
- padding: var(--fui-space-2, $fui-space-2) var(--fui-space-3, $fui-space-3);
401
394
  border-radius: var(--fui-radius-md, $fui-radius-md);
402
395
  color: var(--fui-text-secondary, $fui-text-secondary);
403
396
  text-decoration: none;
@@ -452,7 +445,7 @@
452
445
  padding: var(--fui-space-2, $fui-space-2) var(--fui-space-4, $fui-space-4);
453
446
  background-color: var(--fui-bg-primary, $fui-bg-primary);
454
447
  color: var(--fui-text-primary, $fui-text-primary);
455
- border: 2px solid var(--fui-color-accent, $fui-color-accent);
448
+ border: var(--fui-stroke-default, 2px) solid var(--fui-color-accent, $fui-color-accent);
456
449
  border-radius: var(--fui-radius-md, $fui-radius-md);
457
450
  text-decoration: none;
458
451
  font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
@@ -8,6 +8,7 @@ import { useFocusTrap } from '../../utils/a11y';
8
8
  import { ScrollArea } from '../ScrollArea';
9
9
  import styles from './Header.module.scss';
10
10
  import { useSidebar } from '../Sidebar';
11
+ import { POPUP_OFFSET_PX } from '../../recipes/popup';
11
12
 
12
13
  // ============================================
13
14
  // Types
@@ -495,7 +496,7 @@ function HeaderNavMenu({
495
496
  : <CaretDown size={12} className={styles.navMenuChevron} aria-hidden />}
496
497
  </BaseMenu.Trigger>
497
498
  <BaseMenu.Portal>
498
- <BaseMenu.Positioner side="bottom" align="start" sideOffset={4} className={styles.navMenuPositioner}>
499
+ <BaseMenu.Positioner side="bottom" align="start" sideOffset={POPUP_OFFSET_PX} className={styles.navMenuPositioner}>
499
500
  <BaseMenu.Popup className={styles.navMenuPopup}>
500
501
  {children}
501
502
  </BaseMenu.Popup>
@@ -1,4 +1,5 @@
1
1
  @use "../../tokens/variables" as *;
2
+ @use "../../recipes/representation" as representation;
2
3
 
3
4
  .icon {
4
5
  display: inline-flex;
@@ -6,6 +7,21 @@
6
7
  justify-content: center;
7
8
  color: currentColor;
8
9
  line-height: 1;
10
+
11
+ > svg {
12
+ inline-size: 100%;
13
+ block-size: 100%;
14
+ }
15
+ }
16
+
17
+ @each $size in ("xs", "sm", "md", "lg", "xl") {
18
+ .#{$size} {
19
+ @include representation.glyph($size);
20
+ }
21
+ }
22
+
23
+ .size2xl {
24
+ @include representation.glyph("2xl");
9
25
  }
10
26
 
11
27
  // Color variants (matching Badge/Alert pattern)