@usefragments/ui 1.5.4 → 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,21 +1,20 @@
1
1
  @use "../../tokens/variables" as *;
2
2
  @use "../../tokens/mixins" as *;
3
-
4
- // Local component tokens
5
- $fui-sidebar-indicator-width: 2px !default;
6
- $fui-sidebar-indicator-height: 1.143rem !default; // 16px
7
- $fui-sidebar-rail-width: 1.143rem !default; // 16px
8
- $fui-sidebar-rail-indicator-width: 4px !default;
9
- $fui-sidebar-rail-indicator-height: 2.857rem !default; // 40px
10
- $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
3
+ @use "../../recipes/action" as action;
4
+ @use "../../recipes/navigation" as navigation;
5
+ @use "../../recipes/target" as target;
11
6
 
12
7
  .root {
13
- --fui-sidebar-row-height: var(--fui-sidebar-item-height, #{$fui-sidebar-item-height});
8
+ @include navigation.properties;
9
+
10
+ --fui-sidebar-row-height: var(--fui-navigation-row-track);
14
11
  --fui-sidebar-row-radius: var(--fui-radius-md, #{$fui-radius-md});
15
- // 8px: de-facto sidebar gutter, 1px above the 7px space-1 grid step.
16
- --fui-sidebar-row-gap: 0.571rem;
17
- --fui-sidebar-row-padding-x: 0.571rem;
12
+ --fui-sidebar-gutter: var(--fui-navigation-gutter);
13
+ --fui-sidebar-row-gap: var(--fui-navigation-content-gap);
14
+ --fui-sidebar-row-padding-x: var(--fui-navigation-inline-inset);
18
15
  --fui-sidebar-icon-size: var(--fui-icon-md, #{$fui-icon-md});
16
+ --fui-sidebar-leading-size: var(--fui-navigation-leading-box);
17
+ --fui-sidebar-active-dot-size: var(--fui-navigation-active-dot);
19
18
  --fui-sidebar-muted: var(
20
19
  --fui-sidebar-item-color,
21
20
  var(--fui-text-secondary, #{$fui-text-secondary})
@@ -38,7 +37,7 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
38
37
  height: 100%;
39
38
  max-height: 100vh;
40
39
  background: var(--fui-sidebar-bg, var(--fui-bg-primary, #{$fui-bg-primary}));
41
- border-inline-end: 1px solid
40
+ border-inline-end: var(--fui-stroke-hairline, 1px) solid
42
41
  var(--fui-sidebar-border, var(--fui-border-default, #{$fui-border-default}));
43
42
  transition: width var(--fui-transition-normal, $fui-transition-normal);
44
43
  overflow: hidden;
@@ -54,7 +53,7 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
54
53
  }
55
54
 
56
55
  .positionRight {
57
- border-inline-start: 1px solid
56
+ border-inline-start: var(--fui-stroke-hairline, 1px) solid
58
57
  var(--fui-sidebar-border, var(--fui-border-default, #{$fui-border-default}));
59
58
  border-inline-end: 0;
60
59
  }
@@ -65,7 +64,7 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
65
64
  .header,
66
65
  .nav,
67
66
  .footer {
68
- padding: var(--fui-space-1, $fui-space-1);
67
+ padding: var(--fui-navigation-gutter);
69
68
  }
70
69
 
71
70
  .header,
@@ -149,10 +148,10 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
149
148
  .header {
150
149
  display: flex;
151
150
  align-items: center;
152
- gap: 0.429rem;
153
- padding: 0.857rem 0.857rem 0.714rem;
151
+ gap: 0;
152
+ padding: var(--fui-sidebar-gutter) var(--fui-sidebar-gutter) 0;
154
153
  flex-shrink: 0;
155
- min-height: 3rem;
154
+ min-height: 0;
156
155
  }
157
156
 
158
157
  .nav {
@@ -161,7 +160,8 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
161
160
  display: flex;
162
161
  flex-direction: column;
163
162
  overflow: hidden;
164
- padding: 0.286rem 0.571rem 0.857rem;
163
+ padding: var(--fui-sidebar-gutter) var(--fui-sidebar-gutter)
164
+ var(--fui-space-3, $fui-space-3);
165
165
  }
166
166
 
167
167
  .navScrollArea {
@@ -170,15 +170,15 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
170
170
  }
171
171
 
172
172
  .section:not(:first-child) {
173
- margin-top: 1.286rem;
173
+ margin-top: var(--fui-raw-space-16, 16px);
174
174
  }
175
175
 
176
176
  .sectionHeader {
177
+ @include navigation.section-row;
178
+
177
179
  display: flex;
178
180
  align-items: center;
179
- gap: 0.286rem;
180
- min-height: 1.714rem;
181
- padding: 0 0.571rem 0.286rem;
181
+ padding-block-end: var(--fui-raw-space-4, 4px);
182
182
  }
183
183
 
184
184
  .sectionTrigger {
@@ -188,14 +188,9 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
188
188
  // Override section-label-text inheritance — sidebar groups read as quiet
189
189
  // title-case headings, not shouty all-caps labels.
190
190
  .sectionLabel {
191
- @include section-label-text;
192
191
  flex: 1;
193
192
  min-width: 0;
194
- font-size: 0.857rem;
195
- font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
196
193
  text-transform: none;
197
- letter-spacing: 0;
198
- line-height: var(--fui-line-height-tight, $fui-line-height-tight);
199
194
  color: var(--fui-sidebar-faint);
200
195
  }
201
196
 
@@ -206,12 +201,10 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
206
201
  .sectionAction {
207
202
  @include button-reset;
208
203
  @include interactive-base;
204
+ @include action.base;
205
+ @include action.icon-only("micro");
206
+ @include target.hit-area("compact");
209
207
 
210
- display: flex;
211
- align-items: center;
212
- justify-content: center;
213
- width: 1.714rem;
214
- height: 1.714rem;
215
208
  border-radius: var(--fui-sidebar-row-radius);
216
209
  color: var(--fui-sidebar-faint);
217
210
 
@@ -221,8 +214,7 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
221
214
  }
222
215
 
223
216
  svg {
224
- width: var(--fui-sidebar-icon-size);
225
- height: var(--fui-sidebar-icon-size);
217
+ @include action.glyph("micro");
226
218
  }
227
219
  }
228
220
 
@@ -233,16 +225,16 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
233
225
  padding: 0;
234
226
  display: flex;
235
227
  flex-direction: column;
236
- gap: 0.143rem;
228
+ gap: var(--fui-raw-space-2, 2px);
237
229
  }
238
230
 
239
231
  .sectionCollapsible .sectionTrigger {
232
+ @include navigation.section-row;
233
+
240
234
  display: flex;
241
235
  align-items: center;
242
236
  justify-content: flex-start;
243
- gap: 0.286rem;
244
237
  width: 100%;
245
- min-height: 1.714rem;
246
238
  padding: 0;
247
239
  border-radius: var(--fui-sidebar-row-radius);
248
240
  background: transparent;
@@ -261,8 +253,8 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
261
253
 
262
254
  // Trailing caret reads as a quiet disclosure twistie.
263
255
  svg {
264
- width: 10px;
265
- height: 10px;
256
+ width: var(--fui-raw-space-10, 10px);
257
+ height: var(--fui-raw-space-10, 10px);
266
258
  color: var(--fui-sidebar-faint);
267
259
  }
268
260
  }
@@ -280,22 +272,18 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
280
272
  .item {
281
273
  @include button-reset;
282
274
  @include interactive-base;
283
- @include text-base;
275
+ @include navigation.row;
284
276
 
285
277
  position: relative;
286
278
  display: flex;
287
279
  align-items: center;
288
280
  width: 100%;
289
- gap: var(--fui-sidebar-row-gap);
290
- padding: 0 var(--fui-sidebar-row-padding-x);
291
- border: 1px solid transparent;
281
+ border: var(--fui-stroke-hairline, 1px) solid transparent;
292
282
  border-radius: var(--fui-sidebar-row-radius);
293
283
  color: var(--fui-sidebar-muted);
294
284
  text-decoration: none;
295
- min-height: var(--fui-sidebar-row-height);
296
285
  font-weight: var(--fui-font-weight-normal, $fui-font-weight-normal);
297
- line-height: var(--fui-line-height-tight, $fui-line-height-tight);
298
- outline-offset: -1px;
286
+ outline-offset: calc(-1 * var(--fui-stroke-hairline, 1px));
299
287
  transition:
300
288
  background-color var(--fui-transition-fast, $fui-transition-fast),
301
289
  border-color var(--fui-transition-fast, $fui-transition-fast),
@@ -315,33 +303,30 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
315
303
  // Alpha-overlay active state reads as a depression on any surface,
316
304
  // adapting cleanly across light and dark themes.
317
305
  .itemActive {
306
+ @include navigation.active-indicator("start");
307
+
318
308
  background-color: var(--fui-sidebar-active-bg);
319
309
  border-color: var(--fui-sidebar-active-border);
320
310
  color: var(--fui-sidebar-item-active-color, var(--fui-text-primary, #{$fui-text-primary}));
321
311
  font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
322
312
 
323
313
  &::before {
324
- content: "";
325
- position: absolute;
326
- left: -0.571rem;
327
- top: 0.286rem;
328
- bottom: 0.286rem;
329
- width: 2px;
330
- border-radius: 0 2px 2px 0;
314
+ border-start-end-radius: var(--fui-navigation-active-rail);
315
+ border-end-end-radius: var(--fui-navigation-active-rail);
331
316
  background: var(
332
317
  --fui-sidebar-item-active-indicator,
333
318
  var(--fui-color-accent, #{$fui-color-accent})
334
319
  );
335
320
  }
336
321
 
337
- &:hover,
338
- &:active {
339
- background-color: var(--fui-sidebar-active-bg) !important;
340
- border-color: var(--fui-sidebar-active-border) !important;
322
+ &.item:hover,
323
+ &.item:active {
324
+ background-color: var(--fui-sidebar-active-bg);
325
+ border-color: var(--fui-sidebar-active-border);
341
326
  color: var(
342
327
  --fui-sidebar-item-active-color,
343
328
  var(--fui-text-primary, #{$fui-text-primary})
344
- ) !important;
329
+ );
345
330
  text-decoration: none;
346
331
  }
347
332
 
@@ -350,6 +335,25 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
350
335
  }
351
336
  }
352
337
 
338
+ // Trailing active dot (product shells that prefer end-affordance over the
339
+ // start rail). Set data-active-indicator="end" on Sidebar root.
340
+ .root[data-active-indicator="end"] .itemActive {
341
+ @include navigation.active-indicator("end");
342
+
343
+ padding-inline-end: calc(var(--fui-navigation-inline-inset) * 2 + var(--fui-navigation-active-dot));
344
+
345
+ &::before {
346
+ content: none;
347
+ }
348
+
349
+ &::after {
350
+ background: var(
351
+ --fui-sidebar-item-active-indicator,
352
+ var(--fui-color-accent, #{$fui-color-accent})
353
+ );
354
+ }
355
+ }
356
+
353
357
  .itemDisabled,
354
358
  .subItemDisabled {
355
359
  opacity: 0.46;
@@ -357,17 +361,16 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
357
361
  }
358
362
 
359
363
  .itemIcon {
364
+ @include navigation.leading;
365
+
360
366
  display: flex;
361
367
  align-items: center;
362
368
  justify-content: center;
363
- width: var(--fui-sidebar-icon-size);
364
- height: var(--fui-sidebar-icon-size);
365
- flex-shrink: 0;
366
369
  color: var(--fui-sidebar-faint);
367
370
 
368
371
  svg {
369
- width: var(--fui-sidebar-icon-size);
370
- height: var(--fui-sidebar-icon-size);
372
+ width: var(--fui-sidebar-leading-size);
373
+ height: var(--fui-sidebar-leading-size);
371
374
  }
372
375
 
373
376
  .item:hover:not(.itemDisabled) & {
@@ -385,7 +388,7 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
385
388
  white-space: nowrap;
386
389
  overflow: hidden;
387
390
  text-overflow: ellipsis;
388
- padding-top: 0.071rem;
391
+ transform: translateY(var(--fui-navigation-label-optical-y));
389
392
  }
390
393
 
391
394
  // A row whose label is a block rather than a link: a title over a status line,
@@ -426,39 +429,41 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
426
429
  }
427
430
 
428
431
  .submenu {
429
- padding-left: 1.714rem;
432
+ padding-inline-start: var(--fui-raw-space-24, 24px);
433
+ min-height: 0;
430
434
  overflow: hidden;
431
- max-height: 0;
432
- transition: max-height var(--fui-transition-normal, $fui-transition-normal);
433
435
  }
434
436
 
435
- .itemExpanded + .submenuWrapper .submenu {
436
- max-height: 500px;
437
+ .submenuWrapper {
438
+ display: grid;
439
+ grid-template-rows: 0fr;
440
+ transition: grid-template-rows var(--fui-transition-normal, $fui-transition-normal);
441
+ }
442
+
443
+ .itemExpanded + .submenuWrapper {
444
+ grid-template-rows: 1fr;
437
445
  }
438
446
 
439
447
  .subItem {
440
448
  @include button-reset;
441
449
  @include interactive-base;
442
- @include text-base;
450
+ @include navigation.row;
443
451
 
444
452
  display: inline-flex;
445
453
  align-items: center;
446
- padding: 0 var(--fui-sidebar-row-padding-x);
447
454
  border-radius: var(--fui-sidebar-row-radius);
448
455
  color: var(--fui-sidebar-muted);
449
456
  text-decoration: none;
450
- min-height: var(--fui-sidebar-row-height);
451
- line-height: var(--fui-line-height-tight, $fui-line-height-tight);
452
457
  position: relative;
453
458
 
454
459
  &::before {
455
460
  content: "";
456
461
  position: absolute;
457
- left: 0;
462
+ inset-inline-start: 0;
458
463
  top: 50%;
459
464
  transform: translateY(-50%);
460
- width: $fui-sidebar-indicator-width;
461
- height: $fui-sidebar-indicator-height;
465
+ width: var(--fui-navigation-active-rail);
466
+ height: var(--fui-navigation-leading-box);
462
467
  background-color: transparent;
463
468
  border-radius: var(--fui-radius-full, $fui-radius-full);
464
469
  transition: background-color var(--fui-transition-fast, $fui-transition-fast);
@@ -490,11 +495,11 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
490
495
  .footer {
491
496
  display: flex;
492
497
  flex-direction: column;
493
- gap: 0.571rem;
494
- padding: 0.857rem;
498
+ gap: var(--fui-sidebar-row-gap);
499
+ padding: var(--fui-sidebar-gutter);
495
500
  margin-top: auto;
496
501
  flex-shrink: 0;
497
- border-top: 1px solid
502
+ border-top: var(--fui-stroke-hairline, 1px) solid
498
503
  var(
499
504
  --fui-sidebar-footer-border,
500
505
  color-mix(in srgb, var(--fui-border-default, #{$fui-border-default}) 58%, transparent)
@@ -504,12 +509,12 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
504
509
  .trigger {
505
510
  @include button-reset;
506
511
  @include interactive-base;
512
+ @include action.base;
513
+ @include action.icon-only("lg");
507
514
 
508
515
  display: flex;
509
516
  align-items: center;
510
517
  justify-content: center;
511
- width: $fui-touch-lg;
512
- height: $fui-touch-lg;
513
518
  border-radius: var(--fui-radius-md, $fui-radius-md);
514
519
  color: var(--fui-text-primary, $fui-text-primary);
515
520
 
@@ -518,8 +523,7 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
518
523
  }
519
524
 
520
525
  svg {
521
- width: $fui-icon-xl;
522
- height: $fui-icon-xl;
526
+ @include action.glyph("lg");
523
527
  }
524
528
  }
525
529
 
@@ -539,12 +543,12 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
539
543
  .collapseToggle {
540
544
  @include button-reset;
541
545
  @include interactive-base;
546
+ @include action.base;
547
+ @include action.icon-only("md");
542
548
 
543
549
  display: flex;
544
550
  align-items: center;
545
551
  justify-content: center;
546
- width: $fui-touch-md;
547
- height: $fui-touch-md;
548
552
  border-radius: var(--fui-radius-md, $fui-radius-md);
549
553
  color: var(--fui-text-secondary, $fui-text-secondary);
550
554
  margin-left: auto;
@@ -555,8 +559,7 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
555
559
  }
556
560
 
557
561
  svg {
558
- width: $fui-icon-lg;
559
- height: $fui-icon-lg;
562
+ @include action.glyph("md");
560
563
  }
561
564
  }
562
565
 
@@ -567,7 +570,7 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
567
570
  z-index: 20;
568
571
  margin: 0;
569
572
  background-color: var(--fui-bg-primary, $fui-bg-primary);
570
- border: 1px solid var(--fui-border, $fui-border);
573
+ border: var(--fui-stroke-hairline, 1px) solid var(--fui-border, $fui-border);
571
574
  box-shadow: var(--fui-shadow-sm, $fui-shadow-sm);
572
575
 
573
576
  .positionRight & {
@@ -582,7 +585,7 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
582
585
  position: absolute;
583
586
  top: 0;
584
587
  right: 0;
585
- width: $fui-sidebar-rail-width;
588
+ width: var(--fui-navigation-leading-box);
586
589
  height: 100%;
587
590
  z-index: 10;
588
591
 
@@ -596,9 +599,9 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
596
599
  position: absolute;
597
600
  top: 50%;
598
601
  transform: translateY(-50%);
599
- right: $fui-sidebar-rail-indicator-width;
600
- width: $fui-sidebar-rail-indicator-width;
601
- height: $fui-sidebar-rail-indicator-height;
602
+ right: var(--fui-raw-space-4, 4px);
603
+ width: var(--fui-raw-space-4, 4px);
604
+ height: #{action.track("lg")};
602
605
  border-radius: var(--fui-radius-full, $fui-radius-full);
603
606
  background-color: var(--fui-border, $fui-border);
604
607
  opacity: 0;
@@ -609,7 +612,7 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
609
612
 
610
613
  .positionRight & {
611
614
  right: auto;
612
- left: $fui-sidebar-rail-indicator-width;
615
+ left: var(--fui-raw-space-4, 4px);
613
616
  }
614
617
  }
615
618
 
@@ -620,7 +623,7 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
620
623
  }
621
624
 
622
625
  &:hover::before {
623
- height: $fui-sidebar-rail-indicator-height-hover;
626
+ height: var(--fui-navigation-sidebar-collapsed-width, 56px);
624
627
  }
625
628
  }
626
629
 
@@ -636,11 +639,10 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
636
639
  }
637
640
 
638
641
  .skeletonItem {
642
+ @include navigation.row;
643
+
639
644
  display: flex;
640
645
  align-items: center;
641
- gap: var(--fui-space-2, $fui-space-2);
642
- padding: 0 var(--fui-space-2, $fui-space-2);
643
- min-height: var(--fui-sidebar-item-height, $fui-sidebar-item-height);
644
646
  }
645
647
 
646
648
  .skeletonLabel {
@@ -651,7 +653,7 @@ $fui-sidebar-rail-indicator-height-hover: 4rem !default; // 56px
651
653
  .root,
652
654
  .mobile,
653
655
  .overlay,
654
- .submenu,
656
+ .submenuWrapper,
655
657
  .itemChevron,
656
658
  .rail::before,
657
659
  .subItem::before {
@@ -96,6 +96,11 @@ export interface SidebarProps extends React.HTMLAttributes<HTMLElement> {
96
96
  position?: 'left' | 'right';
97
97
  /** Collapse behavior: 'icon' (default), 'offcanvas', or 'none' */
98
98
  collapsible?: SidebarCollapsible;
99
+ /**
100
+ * Where the active-item affordance paints. `start` is the default rail;
101
+ * `end` is a trailing status dot for product shells that prefer that language.
102
+ */
103
+ activeIndicator?: 'start' | 'end';
99
104
  }
100
105
 
101
106
  export interface SidebarHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
@@ -304,7 +309,7 @@ function useSidebar() {
304
309
  isMobile: false,
305
310
  position: 'left' as const,
306
311
  width: '240px',
307
- collapsedWidth: '56px',
312
+ collapsedWidth: 'var(--fui-navigation-sidebar-collapsed-width, 56px)',
308
313
  collapsible: 'icon' as SidebarCollapsible,
309
314
  hasIcons: true,
310
315
  toggleSidebar: () => {},
@@ -414,7 +419,7 @@ function SidebarProvider({
414
419
  defaultOpen = false,
415
420
  onOpenChange,
416
421
  width = '240px',
417
- collapsedWidth = '56px',
422
+ collapsedWidth = 'var(--fui-navigation-sidebar-collapsed-width, 56px)',
418
423
  position = 'left',
419
424
  collapsible = 'icon',
420
425
  enableKeyboardShortcut = true,
@@ -510,9 +515,10 @@ function SidebarRoot({
510
515
  defaultOpen = false,
511
516
  onOpenChange,
512
517
  width = '240px',
513
- collapsedWidth = '56px',
518
+ collapsedWidth = 'var(--fui-navigation-sidebar-collapsed-width, 56px)',
514
519
  position = 'left',
515
520
  collapsible = 'icon',
521
+ activeIndicator = 'start',
516
522
  className,
517
523
  style: styleProp,
518
524
  'aria-label': ariaLabel,
@@ -644,6 +650,7 @@ function SidebarRoot({
644
650
  data-state={isMobile ? (open ? 'open' : 'closed') : (collapsed ? 'collapsed' : 'expanded')}
645
651
  data-position={resolvedPosition}
646
652
  data-collapsible={resolvedCollapsible}
653
+ data-active-indicator={activeIndicator}
647
654
  data-icon-collapse={resolvedCollapsible === 'icon' ? (hasIcons ? 'icons' : 'none') : undefined}
648
655
  >
649
656
  {children}
@@ -1,4 +1,5 @@
1
- @use '../../tokens/variables' as *;
1
+ @use "../../tokens/variables" as *;
2
+ @use "../../recipes/representation" as representation;
2
3
 
3
4
  // ============================================
4
5
  // Skeleton Component Styles
@@ -6,7 +7,8 @@
6
7
 
7
8
  // Animation
8
9
  @keyframes skeleton-pulse {
9
- 0%, 100% {
10
+ 0%,
11
+ 100% {
10
12
  opacity: 1;
11
13
  }
12
14
  50% {
@@ -56,20 +58,10 @@
56
58
  border-radius: var(--fui-radius-full, #{$fui-radius-full});
57
59
  }
58
60
 
59
- // Avatar sizes (rem on a 14px root: 1rem = 14px)
60
- .avatar-sm {
61
- width: var(--fui-space-4, #{$fui-space-4}); // 28px
62
- height: var(--fui-space-4, #{$fui-space-4});
63
- }
64
-
65
- .avatar-md {
66
- width: 2.5rem; // 35px (no clean ladder step between space-4=28 and space-6=42)
67
- height: 2.5rem;
68
- }
69
-
70
- .avatar-lg {
71
- width: var(--fui-space-6, #{$fui-space-6}); // 42px
72
- height: var(--fui-space-6, #{$fui-space-6});
61
+ @each $size in ("sm", "md", "lg") {
62
+ .avatar-#{$size} {
63
+ @include representation.skeleton("avatar", $size);
64
+ }
73
65
  }
74
66
 
75
67
  // Button - matches button heights
@@ -77,28 +69,36 @@
77
69
  border-radius: var(--fui-radius-md, #{$fui-radius-md});
78
70
  }
79
71
 
72
+ @each $size in ("sm", "md", "lg") {
73
+ .button-#{$size} {
74
+ @include representation.skeleton("button", $size);
75
+ }
76
+ }
77
+
80
78
  .button-sm {
81
- height: var(--fui-button-height-sm, #{$fui-button-height-sm});
82
- width: 5rem; // 70px default width
79
+ inline-size: var(--fui-raw-space-64, 64px);
83
80
  }
84
81
 
85
82
  .button-md {
86
- height: var(--fui-button-height-md, #{$fui-button-height-md});
87
- width: 6rem; // 84px default width
83
+ inline-size: calc(var(--fui-raw-space-64, 64px) + var(--fui-raw-space-16, 16px));
88
84
  }
89
85
 
90
86
  .button-lg {
91
- height: var(--fui-button-height-lg, #{$fui-button-height-lg});
92
- width: 7rem; // 98px default width
87
+ inline-size: calc(var(--fui-raw-space-64, 64px) + var(--fui-raw-space-32, 32px));
93
88
  }
94
89
 
95
90
  // Input - matches input field height
96
91
  .input {
97
- height: var(--fui-input-height, #{$fui-input-height});
98
- width: 100%;
92
+ inline-size: 100%;
99
93
  border-radius: var(--fui-radius-md, #{$fui-radius-md});
100
94
  }
101
95
 
96
+ @each $size in ("sm", "md", "lg") {
97
+ .input-#{$size} {
98
+ @include representation.skeleton("field", $size);
99
+ }
100
+ }
101
+
102
102
  // Rect - generic rectangle (no preset dimensions)
103
103
  .rect {
104
104
  // Uses explicit width/height from props or fill
@@ -139,11 +139,11 @@
139
139
  }
140
140
 
141
141
  .gap-sm {
142
- gap: var(--fui-space-2, #{$fui-space-2}); // 14px
142
+ gap: var(--fui-raw-space-8, 8px);
143
143
  }
144
144
 
145
145
  .gap-md {
146
- gap: var(--fui-space-3, #{$fui-space-3}); // 21px
146
+ gap: var(--fui-raw-space-12, 12px);
147
147
  }
148
148
 
149
149
  .textLine {