@usefragments/ui 1.5.4 → 1.7.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 (667) hide show
  1. package/README.md +4 -4
  2. package/dist/assets/fragments-wordmark.cjs +2 -2
  3. package/dist/assets/fragments-wordmark.d.ts.map +1 -1
  4. package/dist/assets/fragments-wordmark.js +2 -2
  5. package/dist/assets/ui.css +10468 -6909
  6. package/dist/chart.cjs +31 -26
  7. package/dist/chart.js +31 -26
  8. package/dist/codeblock.cjs +55 -29
  9. package/dist/codeblock.js +55 -29
  10. package/dist/colorpicker.cjs +5 -2
  11. package/dist/colorpicker.js +5 -2
  12. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  13. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  14. package/dist/components/Alert/Alert.module.scss.cjs +15 -12
  15. package/dist/components/Alert/Alert.module.scss.js +15 -12
  16. package/dist/components/Alert/index.cjs +7 -1
  17. package/dist/components/Alert/index.d.ts +12 -6
  18. package/dist/components/Alert/index.d.ts.map +1 -1
  19. package/dist/components/Alert/index.js +7 -1
  20. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  21. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  22. package/dist/components/AppShell/index.cjs +5 -3
  23. package/dist/components/AppShell/index.d.ts +4 -2
  24. package/dist/components/AppShell/index.d.ts.map +1 -1
  25. package/dist/components/AppShell/index.js +5 -3
  26. package/dist/components/Avatar/Avatar.module.scss.cjs +17 -14
  27. package/dist/components/Avatar/Avatar.module.scss.js +17 -14
  28. package/dist/components/Avatar/index.cjs +100 -118
  29. package/dist/components/Avatar/index.d.ts +7 -5
  30. package/dist/components/Avatar/index.d.ts.map +1 -1
  31. package/dist/components/Avatar/index.js +100 -118
  32. package/dist/components/Badge/Badge.module.scss.cjs +19 -19
  33. package/dist/components/Badge/Badge.module.scss.js +19 -19
  34. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  35. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  36. package/dist/components/Box/Box.module.scss.cjs +152 -152
  37. package/dist/components/Box/Box.module.scss.js +152 -152
  38. package/dist/components/Box/index.cjs +64 -75
  39. package/dist/components/Box/index.d.ts +16 -16
  40. package/dist/components/Box/index.d.ts.map +1 -1
  41. package/dist/components/Box/index.js +64 -75
  42. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +8 -8
  43. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +8 -8
  44. package/dist/components/Button/Button.module.scss.cjs +14 -14
  45. package/dist/components/Button/Button.module.scss.js +14 -14
  46. package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
  47. package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
  48. package/dist/components/Card/Card.module.scss.cjs +30 -18
  49. package/dist/components/Card/Card.module.scss.js +31 -19
  50. package/dist/components/Card/index.cjs +8 -0
  51. package/dist/components/Card/index.d.ts +12 -2
  52. package/dist/components/Card/index.d.ts.map +1 -1
  53. package/dist/components/Card/index.js +8 -0
  54. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  55. package/dist/components/Chart/Chart.module.scss.js +15 -15
  56. package/dist/components/Chart/index.d.ts +7 -7
  57. package/dist/components/Chart/index.d.ts.map +1 -1
  58. package/dist/components/Checkbox/Checkbox.module.scss.cjs +9 -15
  59. package/dist/components/Checkbox/Checkbox.module.scss.js +9 -15
  60. package/dist/components/Checkbox/index.cjs +6 -8
  61. package/dist/components/Checkbox/index.d.ts.map +1 -1
  62. package/dist/components/Checkbox/index.js +6 -8
  63. package/dist/components/Chip/Chip.module.scss.cjs +15 -15
  64. package/dist/components/Chip/Chip.module.scss.js +15 -15
  65. package/dist/components/Chip/index.cjs +6 -6
  66. package/dist/components/Chip/index.d.ts +1 -1
  67. package/dist/components/Chip/index.js +4 -4
  68. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +27 -24
  69. package/dist/components/CodeBlock/CodeBlock.module.scss.js +27 -24
  70. package/dist/components/CodeBlock/css-variables-theme.cjs +98 -0
  71. package/dist/components/CodeBlock/css-variables-theme.d.ts +27 -0
  72. package/dist/components/CodeBlock/css-variables-theme.d.ts.map +1 -0
  73. package/dist/components/CodeBlock/css-variables-theme.js +98 -0
  74. package/dist/components/CodeBlock/index.d.ts +17 -3
  75. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  76. package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -12
  77. package/dist/components/Collapsible/Collapsible.module.scss.js +9 -12
  78. package/dist/components/Collapsible/index.cjs +3 -2
  79. package/dist/components/Collapsible/index.d.ts +3 -3
  80. package/dist/components/Collapsible/index.d.ts.map +1 -1
  81. package/dist/components/Collapsible/index.js +3 -2
  82. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +16 -16
  83. package/dist/components/ColorPicker/ColorPicker.module.scss.js +16 -16
  84. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  85. package/dist/components/Combobox/Combobox.module.scss.cjs +21 -27
  86. package/dist/components/Combobox/Combobox.module.scss.js +21 -27
  87. package/dist/components/Combobox/index.cjs +21 -5
  88. package/dist/components/Combobox/index.d.ts.map +1 -1
  89. package/dist/components/Combobox/index.js +21 -5
  90. package/dist/components/Command/Command.module.scss.cjs +11 -11
  91. package/dist/components/Command/Command.module.scss.js +11 -11
  92. package/dist/components/Command/index.cjs +26 -15
  93. package/dist/components/Command/index.d.ts +2 -2
  94. package/dist/components/Command/index.d.ts.map +1 -1
  95. package/dist/components/Command/index.js +26 -15
  96. package/dist/components/ConversationList/ConversationList.module.scss.cjs +11 -14
  97. package/dist/components/ConversationList/ConversationList.module.scss.js +11 -14
  98. package/dist/components/ConversationList/index.cjs +40 -44
  99. package/dist/components/ConversationList/index.d.ts +3 -3
  100. package/dist/components/ConversationList/index.d.ts.map +1 -1
  101. package/dist/components/ConversationList/index.js +40 -44
  102. package/dist/components/DataTable/DataTable.icons.cjs +6 -33
  103. package/dist/components/DataTable/DataTable.icons.d.ts.map +1 -1
  104. package/dist/components/DataTable/DataTable.icons.js +6 -33
  105. package/dist/components/DataTable/DataTable.module.scss.cjs +32 -56
  106. package/dist/components/DataTable/DataTable.module.scss.js +32 -56
  107. package/dist/components/DataTable/index.d.ts +5 -4
  108. package/dist/components/DataTable/index.d.ts.map +1 -1
  109. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  110. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  111. package/dist/components/DatePicker/index.d.ts.map +1 -1
  112. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  113. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  114. package/dist/components/Dialog/index.cjs +11 -14
  115. package/dist/components/Dialog/index.d.ts +7 -7
  116. package/dist/components/Dialog/index.d.ts.map +1 -1
  117. package/dist/components/Dialog/index.js +11 -14
  118. package/dist/components/Drawer/Drawer.module.scss.cjs +31 -28
  119. package/dist/components/Drawer/Drawer.module.scss.js +31 -28
  120. package/dist/components/Drawer/index.cjs +1 -1
  121. package/dist/components/Drawer/index.js +1 -1
  122. package/dist/components/Editor/Editor.module.scss.cjs +23 -23
  123. package/dist/components/Editor/Editor.module.scss.js +23 -23
  124. package/dist/components/Editor/index.d.ts +10 -10
  125. package/dist/components/Editor/index.d.ts.map +1 -1
  126. package/dist/components/EmptyState/EmptyState.module.scss.cjs +15 -12
  127. package/dist/components/EmptyState/EmptyState.module.scss.js +15 -12
  128. package/dist/components/EmptyState/index.cjs +8 -6
  129. package/dist/components/EmptyState/index.d.ts +9 -4
  130. package/dist/components/EmptyState/index.d.ts.map +1 -1
  131. package/dist/components/EmptyState/index.js +8 -6
  132. package/dist/components/Field/Field.module.scss.cjs +8 -5
  133. package/dist/components/Field/Field.module.scss.js +8 -5
  134. package/dist/components/Field/index.cjs +18 -1
  135. package/dist/components/Field/index.d.ts +9 -2
  136. package/dist/components/Field/index.d.ts.map +1 -1
  137. package/dist/components/Field/index.js +18 -1
  138. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  139. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  140. package/dist/components/Form/Form.module.scss.cjs +5 -2
  141. package/dist/components/Form/Form.module.scss.js +5 -2
  142. package/dist/components/Form/index.cjs +6 -1
  143. package/dist/components/Form/index.d.ts +8 -3
  144. package/dist/components/Form/index.d.ts.map +1 -1
  145. package/dist/components/Form/index.js +6 -1
  146. package/dist/components/Grid/Grid.module.scss.cjs +54 -72
  147. package/dist/components/Grid/Grid.module.scss.js +54 -72
  148. package/dist/components/Grid/index.cjs +57 -77
  149. package/dist/components/Grid/index.d.ts +11 -11
  150. package/dist/components/Grid/index.d.ts.map +1 -1
  151. package/dist/components/Grid/index.js +57 -77
  152. package/dist/components/Header/Header.module.scss.cjs +33 -33
  153. package/dist/components/Header/Header.module.scss.js +33 -33
  154. package/dist/components/Header/index.cjs +18 -38
  155. package/dist/components/Header/index.d.ts +15 -11
  156. package/dist/components/Header/index.d.ts.map +1 -1
  157. package/dist/components/Header/index.js +18 -38
  158. package/dist/components/Icon/Icon.module.scss.cjs +29 -8
  159. package/dist/components/Icon/Icon.module.scss.js +30 -9
  160. package/dist/components/Icon/index.cjs +30 -48
  161. package/dist/components/Icon/index.d.ts +6 -6
  162. package/dist/components/Icon/index.d.ts.map +1 -1
  163. package/dist/components/Icon/index.js +30 -48
  164. package/dist/components/IconButton/IconButton.module.scss.cjs +8 -8
  165. package/dist/components/IconButton/IconButton.module.scss.js +8 -8
  166. package/dist/components/IconButton/index.cjs +2 -1
  167. package/dist/components/IconButton/index.d.ts.map +1 -1
  168. package/dist/components/IconButton/index.js +2 -1
  169. package/dist/components/Image/Image.module.scss.cjs +27 -27
  170. package/dist/components/Image/Image.module.scss.js +27 -27
  171. package/dist/components/Input/Input.module.scss.cjs +19 -25
  172. package/dist/components/Input/Input.module.scss.js +19 -25
  173. package/dist/components/Input/index.cjs +1 -2
  174. package/dist/components/Input/index.d.ts.map +1 -1
  175. package/dist/components/Input/index.js +1 -2
  176. package/dist/components/Link/Link.module.scss.cjs +14 -10
  177. package/dist/components/Link/Link.module.scss.js +14 -10
  178. package/dist/components/Link/index.d.ts +1 -1
  179. package/dist/components/Link/index.d.ts.map +1 -1
  180. package/dist/components/List/List.module.scss.cjs +19 -19
  181. package/dist/components/List/List.module.scss.js +19 -19
  182. package/dist/components/List/index.cjs +4 -7
  183. package/dist/components/List/index.d.ts.map +1 -1
  184. package/dist/components/List/index.js +4 -7
  185. package/dist/components/Listbox/Listbox.module.scss.cjs +9 -9
  186. package/dist/components/Listbox/Listbox.module.scss.js +9 -9
  187. package/dist/components/Loading/Loading.module.scss.cjs +34 -34
  188. package/dist/components/Loading/Loading.module.scss.js +34 -34
  189. package/dist/components/Loading/index.cjs +39 -67
  190. package/dist/components/Loading/index.d.ts +6 -6
  191. package/dist/components/Loading/index.d.ts.map +1 -1
  192. package/dist/components/Loading/index.js +39 -67
  193. package/dist/components/Main/Main.module.scss.cjs +7 -7
  194. package/dist/components/Main/Main.module.scss.js +7 -7
  195. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  196. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  197. package/dist/components/Markdown/index.d.ts +2 -2
  198. package/dist/components/Markdown/index.d.ts.map +1 -1
  199. package/dist/components/Menu/Menu.module.scss.cjs +16 -16
  200. package/dist/components/Menu/Menu.module.scss.js +16 -16
  201. package/dist/components/Menu/index.cjs +19 -61
  202. package/dist/components/Menu/index.d.ts +10 -10
  203. package/dist/components/Menu/index.d.ts.map +1 -1
  204. package/dist/components/Menu/index.js +19 -61
  205. package/dist/components/Message/Message.module.scss.cjs +18 -21
  206. package/dist/components/Message/Message.module.scss.js +18 -21
  207. package/dist/components/Message/index.cjs +15 -2
  208. package/dist/components/Message/index.d.ts.map +1 -1
  209. package/dist/components/Message/index.js +15 -2
  210. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +34 -31
  211. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +34 -31
  212. package/dist/components/NavigationMenu/index.cjs +32 -15
  213. package/dist/components/NavigationMenu/index.d.ts +12 -6
  214. package/dist/components/NavigationMenu/index.d.ts.map +1 -1
  215. package/dist/components/NavigationMenu/index.js +32 -15
  216. package/dist/components/Pagination/Pagination.module.scss.cjs +18 -9
  217. package/dist/components/Pagination/Pagination.module.scss.js +19 -10
  218. package/dist/components/Pagination/index.cjs +5 -2
  219. package/dist/components/Pagination/index.d.ts +3 -1
  220. package/dist/components/Pagination/index.d.ts.map +1 -1
  221. package/dist/components/Pagination/index.js +5 -2
  222. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  223. package/dist/components/Popover/Popover.module.scss.js +10 -10
  224. package/dist/components/Progress/Progress.module.scss.cjs +29 -32
  225. package/dist/components/Progress/Progress.module.scss.js +29 -32
  226. package/dist/components/Progress/geometry.cjs +30 -0
  227. package/dist/components/Progress/geometry.d.ts +8 -0
  228. package/dist/components/Progress/geometry.d.ts.map +1 -0
  229. package/dist/components/Progress/geometry.js +30 -0
  230. package/dist/components/Progress/index.cjs +40 -29
  231. package/dist/components/Progress/index.d.ts +4 -3
  232. package/dist/components/Progress/index.d.ts.map +1 -1
  233. package/dist/components/Progress/index.js +40 -29
  234. package/dist/components/Prompt/Prompt.module.scss.cjs +29 -29
  235. package/dist/components/Prompt/Prompt.module.scss.js +29 -29
  236. package/dist/components/Prompt/index.cjs +5 -4
  237. package/dist/components/Prompt/index.d.ts.map +1 -1
  238. package/dist/components/Prompt/index.js +5 -4
  239. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +15 -21
  240. package/dist/components/RadioGroup/RadioGroup.module.scss.js +15 -21
  241. package/dist/components/RadioGroup/index.cjs +7 -6
  242. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  243. package/dist/components/RadioGroup/index.js +7 -6
  244. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +7 -22
  245. package/dist/components/ScrollArea/ScrollArea.module.scss.js +7 -22
  246. package/dist/components/ScrollArea/index.cjs +66 -42
  247. package/dist/components/ScrollArea/index.d.ts +6 -5
  248. package/dist/components/ScrollArea/index.d.ts.map +1 -1
  249. package/dist/components/ScrollArea/index.js +66 -42
  250. package/dist/components/ScrollArea/scroll-state.cjs +58 -0
  251. package/dist/components/ScrollArea/scroll-state.d.ts +16 -0
  252. package/dist/components/ScrollArea/scroll-state.d.ts.map +1 -0
  253. package/dist/components/ScrollArea/scroll-state.js +58 -0
  254. package/dist/components/Select/Select.module.scss.cjs +21 -21
  255. package/dist/components/Select/Select.module.scss.js +21 -21
  256. package/dist/components/Select/index.cjs +3 -2
  257. package/dist/components/Select/index.d.ts.map +1 -1
  258. package/dist/components/Select/index.js +3 -2
  259. package/dist/components/Separator/Separator.module.scss.cjs +13 -10
  260. package/dist/components/Separator/Separator.module.scss.js +13 -10
  261. package/dist/components/Separator/index.cjs +37 -38
  262. package/dist/components/Separator/index.d.ts +4 -4
  263. package/dist/components/Separator/index.d.ts.map +1 -1
  264. package/dist/components/Separator/index.js +37 -38
  265. package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
  266. package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
  267. package/dist/components/Sidebar/index.cjs +17 -38
  268. package/dist/components/Sidebar/index.d.ts +23 -18
  269. package/dist/components/Sidebar/index.d.ts.map +1 -1
  270. package/dist/components/Sidebar/index.js +17 -38
  271. package/dist/components/Skeleton/Skeleton.module.scss.cjs +56 -40
  272. package/dist/components/Skeleton/Skeleton.module.scss.js +56 -40
  273. package/dist/components/Skeleton/index.cjs +41 -55
  274. package/dist/components/Skeleton/index.d.ts +7 -7
  275. package/dist/components/Skeleton/index.d.ts.map +1 -1
  276. package/dist/components/Skeleton/index.js +41 -55
  277. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  278. package/dist/components/Slider/Slider.module.scss.js +12 -12
  279. package/dist/components/Stack/Stack.module.scss.cjs +25 -45
  280. package/dist/components/Stack/Stack.module.scss.js +25 -45
  281. package/dist/components/Stack/index.cjs +106 -101
  282. package/dist/components/Stack/index.d.ts +7 -7
  283. package/dist/components/Stack/index.d.ts.map +1 -1
  284. package/dist/components/Stack/index.js +106 -101
  285. package/dist/components/Switch/Switch.module.scss.cjs +32 -0
  286. package/dist/components/Switch/Switch.module.scss.js +32 -0
  287. package/dist/components/{Toggle → Switch}/index.cjs +9 -14
  288. package/dist/components/Switch/index.d.ts +37 -1
  289. package/dist/components/Switch/index.d.ts.map +1 -1
  290. package/dist/components/{Toggle → Switch}/index.js +5 -10
  291. package/dist/components/Table/Table.module.scss.cjs +21 -30
  292. package/dist/components/Table/Table.module.scss.js +21 -30
  293. package/dist/components/Table/index.d.ts +6 -5
  294. package/dist/components/Table/index.d.ts.map +1 -1
  295. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  296. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  297. package/dist/components/TableOfContents/index.cjs +13 -9
  298. package/dist/components/TableOfContents/index.d.ts +5 -3
  299. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  300. package/dist/components/TableOfContents/index.js +13 -9
  301. package/dist/components/Tabs/Tabs.module.scss.cjs +12 -12
  302. package/dist/components/Tabs/Tabs.module.scss.js +12 -12
  303. package/dist/components/Tabs/index.cjs +28 -8
  304. package/dist/components/Tabs/index.d.ts.map +1 -1
  305. package/dist/components/Tabs/index.js +28 -8
  306. package/dist/components/Text/Text.module.scss.cjs +105 -57
  307. package/dist/components/Text/Text.module.scss.js +105 -57
  308. package/dist/components/Text/index.cjs +49 -33
  309. package/dist/components/Text/index.d.ts +30 -19
  310. package/dist/components/Text/index.d.ts.map +1 -1
  311. package/dist/components/Text/index.js +49 -33
  312. package/dist/components/Textarea/Textarea.module.scss.cjs +26 -23
  313. package/dist/components/Textarea/Textarea.module.scss.js +26 -23
  314. package/dist/components/Textarea/index.cjs +5 -10
  315. package/dist/components/Textarea/index.d.ts.map +1 -1
  316. package/dist/components/Textarea/index.js +5 -10
  317. package/dist/components/Theme/context.cjs +39 -0
  318. package/dist/components/Theme/context.d.ts +21 -0
  319. package/dist/components/Theme/context.d.ts.map +1 -0
  320. package/dist/components/Theme/context.js +22 -0
  321. package/dist/components/Theme/index.cjs +16 -210
  322. package/dist/components/Theme/index.d.ts +4 -37
  323. package/dist/components/Theme/index.d.ts.map +1 -1
  324. package/dist/components/Theme/index.js +11 -205
  325. package/dist/components/{Theme → ThemeToggle}/ThemeToggle.module.scss.cjs +9 -6
  326. package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +26 -0
  327. package/dist/components/ThemeToggle/index.cjs +140 -0
  328. package/dist/components/ThemeToggle/index.d.ts +26 -0
  329. package/dist/components/ThemeToggle/index.d.ts.map +1 -0
  330. package/dist/components/ThemeToggle/index.js +140 -0
  331. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +13 -13
  332. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +13 -13
  333. package/dist/components/ThinkingIndicator/index.cjs +34 -41
  334. package/dist/components/ThinkingIndicator/index.d.ts +4 -4
  335. package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
  336. package/dist/components/ThinkingIndicator/index.js +34 -41
  337. package/dist/components/Toast/Toast.module.scss.cjs +20 -20
  338. package/dist/components/Toast/Toast.module.scss.js +20 -20
  339. package/dist/components/Toggle/index.d.ts +2 -42
  340. package/dist/components/Toggle/index.d.ts.map +1 -1
  341. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +20 -20
  342. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +20 -20
  343. package/dist/components/ToggleGroup/index.cjs +3 -2
  344. package/dist/components/ToggleGroup/index.d.ts +2 -1
  345. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  346. package/dist/components/ToggleGroup/index.js +3 -2
  347. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  348. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  349. package/dist/components/Tooltip/index.cjs +24 -40
  350. package/dist/components/Tooltip/index.d.ts +4 -4
  351. package/dist/components/Tooltip/index.d.ts.map +1 -1
  352. package/dist/components/Tooltip/index.js +24 -40
  353. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +1 -1
  354. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
  355. package/dist/components/VisuallyHidden/index.d.ts +2 -2
  356. package/dist/data-table.cjs +14 -10
  357. package/dist/data-table.js +14 -10
  358. package/dist/datepicker.cjs +5 -3
  359. package/dist/datepicker.js +5 -3
  360. package/dist/editor.cjs +68 -28
  361. package/dist/editor.js +68 -28
  362. package/dist/index.cjs +101 -99
  363. package/dist/index.d.ts +3 -3
  364. package/dist/index.d.ts.map +1 -1
  365. package/dist/index.js +6 -4
  366. package/dist/markdown.cjs +21 -29
  367. package/dist/markdown.js +22 -30
  368. package/dist/measurements/generated.cjs +304 -0
  369. package/dist/measurements/generated.d.ts +268 -0
  370. package/dist/measurements/generated.d.ts.map +1 -0
  371. package/dist/measurements/generated.js +304 -0
  372. package/dist/measurements/index.d.ts +2 -0
  373. package/dist/measurements/index.d.ts.map +1 -0
  374. package/dist/measurements.cjs +6 -0
  375. package/dist/measurements.js +6 -0
  376. package/dist/recipes/popup.cjs +14 -0
  377. package/dist/recipes/popup.d.ts +4 -0
  378. package/dist/recipes/popup.d.ts.map +1 -0
  379. package/dist/recipes/popup.js +14 -0
  380. package/dist/recipes/table-chrome.cjs +18 -0
  381. package/dist/recipes/table-chrome.d.ts +10 -0
  382. package/dist/recipes/table-chrome.d.ts.map +1 -0
  383. package/dist/recipes/table-chrome.js +18 -0
  384. package/dist/table.cjs +5 -2
  385. package/dist/table.js +5 -2
  386. package/dist/utils/a11y.cjs +5 -2
  387. package/dist/utils/a11y.d.ts +5 -5
  388. package/dist/utils/a11y.d.ts.map +1 -1
  389. package/dist/utils/a11y.js +5 -2
  390. package/dist/utils/canonical-stamp.cjs +2 -8
  391. package/dist/utils/canonical-stamp.d.ts.map +1 -1
  392. package/dist/utils/canonical-stamp.js +1 -7
  393. package/dist/utils/css-warning.cjs +1 -1
  394. package/dist/utils/css-warning.js +1 -1
  395. package/dist/utils/env.cjs +17 -0
  396. package/dist/utils/env.d.ts +3 -0
  397. package/dist/utils/env.d.ts.map +1 -0
  398. package/dist/utils/env.js +17 -0
  399. package/dist/utils/keyboard-shortcuts.cjs +3 -10
  400. package/dist/utils/keyboard-shortcuts.d.ts +4 -4
  401. package/dist/utils/keyboard-shortcuts.d.ts.map +1 -1
  402. package/dist/utils/keyboard-shortcuts.js +3 -10
  403. package/dist/utils/layout-spacing.cjs +27 -0
  404. package/dist/utils/layout-spacing.d.ts +5 -0
  405. package/dist/utils/layout-spacing.d.ts.map +1 -0
  406. package/dist/utils/layout-spacing.js +27 -0
  407. package/dist/utils/seed-derivation.cjs +14 -48
  408. package/dist/utils/seed-derivation.d.ts +4 -3
  409. package/dist/utils/seed-derivation.d.ts.map +1 -1
  410. package/dist/utils/seed-derivation.js +14 -48
  411. package/dist/utils/theme-presets.cjs +1 -0
  412. package/dist/utils/theme-presets.d.ts +3 -2
  413. package/dist/utils/theme-presets.d.ts.map +1 -1
  414. package/dist/utils/theme-presets.js +1 -0
  415. package/fragments.json +1 -1
  416. package/package.json +25 -4
  417. package/src/assets/fragments-logo.tsx +2 -2
  418. package/src/assets/fragments-wordmark.tsx +4 -2
  419. package/src/components/Accordion/Accordion.contract.json +24 -48
  420. package/src/components/Accordion/Accordion.module.scss +31 -52
  421. package/src/components/Alert/Alert.contract.json +37 -53
  422. package/src/components/Alert/Alert.module.scss +52 -44
  423. package/src/components/Alert/index.tsx +55 -29
  424. package/src/components/AppShell/AppShell.contract.json +34 -51
  425. package/src/components/AppShell/AppShell.module.scss +59 -43
  426. package/src/components/AppShell/index.tsx +8 -4
  427. package/src/components/Avatar/Avatar.contract.json +31 -48
  428. package/src/components/Avatar/Avatar.module.scss +25 -60
  429. package/src/components/Avatar/index.tsx +152 -146
  430. package/src/components/Badge/Badge.contract.json +37 -42
  431. package/src/components/Badge/Badge.module.scss +59 -47
  432. package/src/components/BentoGrid/BentoGrid.contract.json +21 -45
  433. package/src/components/BentoGrid/BentoGrid.module.scss +11 -32
  434. package/src/components/Box/Box.contract.json +40 -148
  435. package/src/components/Box/Box.module.scss +253 -81
  436. package/src/components/Box/index.tsx +92 -99
  437. package/src/components/Breadcrumbs/Breadcrumbs.contract.json +21 -34
  438. package/src/components/Breadcrumbs/Breadcrumbs.module.scss +19 -15
  439. package/src/components/Button/Button.module.scss +60 -64
  440. package/src/components/ButtonGroup/ButtonGroup.contract.json +32 -47
  441. package/src/components/ButtonGroup/ButtonGroup.module.scss +5 -5
  442. package/src/components/Card/Card.consumer-fixture.module.scss +8 -0
  443. package/src/components/Card/Card.module.scss +284 -167
  444. package/src/components/Card/index.tsx +21 -2
  445. package/src/components/Chart/Chart.contract.json +21 -29
  446. package/src/components/Chart/Chart.module.scss +28 -29
  447. package/src/components/Chart/index.tsx +72 -55
  448. package/src/components/Checkbox/Checkbox.contract.json +24 -24
  449. package/src/components/Checkbox/Checkbox.module.scss +75 -87
  450. package/src/components/Checkbox/index.tsx +8 -11
  451. package/src/components/Chip/Chip.contract.json +36 -42
  452. package/src/components/Chip/Chip.module.scss +25 -36
  453. package/src/components/Chip/index.tsx +5 -5
  454. package/src/components/CodeBlock/CodeBlock.contract.json +46 -76
  455. package/src/components/CodeBlock/CodeBlock.module.scss +129 -217
  456. package/src/components/CodeBlock/css-variables-theme.ts +102 -0
  457. package/src/components/CodeBlock/index.tsx +91 -35
  458. package/src/components/Collapsible/Collapsible.contract.json +21 -36
  459. package/src/components/Collapsible/Collapsible.module.scss +29 -63
  460. package/src/components/Collapsible/index.tsx +22 -26
  461. package/src/components/ColorPicker/ColorPicker.contract.json +29 -48
  462. package/src/components/ColorPicker/ColorPicker.module.scss +54 -33
  463. package/src/components/ColorPicker/index.tsx +7 -2
  464. package/src/components/Combobox/Combobox.contract.json +36 -37
  465. package/src/components/Combobox/Combobox.module.scss +61 -74
  466. package/src/components/Combobox/index.tsx +34 -6
  467. package/src/components/Command/Command.contract.json +21 -43
  468. package/src/components/Command/Command.module.scss +47 -77
  469. package/src/components/Command/index.tsx +58 -47
  470. package/src/components/ConversationList/ConversationList.contract.json +27 -32
  471. package/src/components/ConversationList/ConversationList.module.scss +20 -78
  472. package/src/components/ConversationList/index.tsx +55 -59
  473. package/src/components/DataTable/DataTable.icons.tsx +4 -21
  474. package/src/components/DataTable/DataTable.module.scss +81 -217
  475. package/src/components/DataTable/index.tsx +28 -32
  476. package/src/components/DatePicker/DatePicker.contract.json +27 -28
  477. package/src/components/DatePicker/DatePicker.module.scss +66 -38
  478. package/src/components/DatePicker/index.tsx +7 -3
  479. package/src/components/Dialog/Dialog.module.scss +45 -69
  480. package/src/components/Dialog/index.tsx +47 -37
  481. package/src/components/Drawer/Drawer.contract.json +22 -36
  482. package/src/components/Drawer/Drawer.module.scss +93 -99
  483. package/src/components/Drawer/index.tsx +1 -1
  484. package/src/components/Editor/Editor.contract.json +31 -48
  485. package/src/components/Editor/Editor.module.scss +137 -220
  486. package/src/components/Editor/index.tsx +240 -179
  487. package/src/components/EmptyState/EmptyState.contract.json +31 -43
  488. package/src/components/EmptyState/EmptyState.module.scss +45 -84
  489. package/src/components/EmptyState/index.tsx +48 -23
  490. package/src/components/Field/Field.contract.json +28 -45
  491. package/src/components/Field/Field.module.scss +9 -11
  492. package/src/components/Field/index.tsx +31 -1
  493. package/src/components/Fieldset/Fieldset.contract.json +21 -38
  494. package/src/components/Fieldset/Fieldset.module.scss +23 -8
  495. package/src/components/Form/Form.contract.json +27 -40
  496. package/src/components/Form/Form.module.scss +9 -4
  497. package/src/components/Form/index.tsx +22 -7
  498. package/src/components/Grid/Grid.contract.json +28 -64
  499. package/src/components/Grid/Grid.module.scss +159 -63
  500. package/src/components/Grid/index.tsx +114 -133
  501. package/src/components/Header/Header.contract.json +31 -67
  502. package/src/components/Header/Header.module.scss +56 -48
  503. package/src/components/Header/index.tsx +134 -121
  504. package/src/components/Icon/Icon.contract.json +22 -62
  505. package/src/components/Icon/Icon.module.scss +16 -0
  506. package/src/components/Icon/index.tsx +74 -86
  507. package/src/components/IconButton/IconButton.contract.json +34 -18
  508. package/src/components/IconButton/IconButton.module.scss +15 -26
  509. package/src/components/IconButton/index.tsx +2 -1
  510. package/src/components/Image/Image.contract.json +23 -56
  511. package/src/components/Input/Input.contract.json +26 -32
  512. package/src/components/Input/Input.module.scss +69 -56
  513. package/src/components/Input/index.tsx +1 -2
  514. package/src/components/Link/Link.contract.json +32 -52
  515. package/src/components/Link/Link.module.scss +29 -13
  516. package/src/components/Link/index.tsx +1 -1
  517. package/src/components/List/List.contract.json +23 -52
  518. package/src/components/List/List.module.scss +16 -21
  519. package/src/components/List/index.tsx +4 -10
  520. package/src/components/Listbox/Listbox.contract.json +21 -37
  521. package/src/components/Listbox/Listbox.module.scss +26 -54
  522. package/src/components/Loading/Loading.contract.json +37 -61
  523. package/src/components/Loading/Loading.module.scss +33 -40
  524. package/src/components/Loading/index.tsx +68 -97
  525. package/src/components/Main/Main.contract.json +17 -9
  526. package/src/components/Main/Main.module.scss +3 -5
  527. package/src/components/Markdown/Markdown.contract.json +22 -43
  528. package/src/components/Markdown/Markdown.module.scss +72 -182
  529. package/src/components/Markdown/index.tsx +50 -51
  530. package/src/components/Menu/Menu.contract.json +25 -41
  531. package/src/components/Menu/Menu.module.scss +63 -133
  532. package/src/components/Menu/index.tsx +57 -89
  533. package/src/components/Message/Message.contract.json +29 -52
  534. package/src/components/Message/Message.module.scss +60 -143
  535. package/src/components/Message/index.tsx +16 -6
  536. package/src/components/NavigationMenu/NavigationMenu.contract.json +36 -45
  537. package/src/components/NavigationMenu/NavigationMenu.module.scss +123 -71
  538. package/src/components/NavigationMenu/index.tsx +105 -81
  539. package/src/components/Pagination/Pagination.contract.json +22 -40
  540. package/src/components/Pagination/Pagination.module.scss +34 -27
  541. package/src/components/Pagination/index.tsx +7 -2
  542. package/src/components/Popover/Popover.contract.json +24 -46
  543. package/src/components/Popover/Popover.module.scss +43 -78
  544. package/src/components/Progress/Progress.contract.json +32 -28
  545. package/src/components/Progress/Progress.module.scss +64 -43
  546. package/src/components/Progress/geometry.ts +41 -0
  547. package/src/components/Progress/index.tsx +44 -30
  548. package/src/components/Prompt/Prompt.contract.json +31 -47
  549. package/src/components/Prompt/Prompt.module.scss +58 -87
  550. package/src/components/Prompt/index.tsx +6 -5
  551. package/src/components/RadioGroup/RadioGroup.contract.json +23 -24
  552. package/src/components/RadioGroup/RadioGroup.module.scss +63 -83
  553. package/src/components/RadioGroup/index.tsx +7 -9
  554. package/src/components/ScrollArea/ScrollArea.contract.json +23 -40
  555. package/src/components/ScrollArea/ScrollArea.module.scss +123 -97
  556. package/src/components/ScrollArea/index.tsx +85 -67
  557. package/src/components/ScrollArea/scroll-state.ts +87 -0
  558. package/src/components/Select/Select.module.scss +55 -43
  559. package/src/components/Select/index.tsx +6 -2
  560. package/src/components/Separator/Separator.contract.json +24 -48
  561. package/src/components/Separator/Separator.module.scss +29 -19
  562. package/src/components/Separator/index.tsx +55 -51
  563. package/src/components/Sidebar/Sidebar.contract.json +42 -62
  564. package/src/components/Sidebar/Sidebar.module.scss +117 -106
  565. package/src/components/Sidebar/index.tsx +169 -162
  566. package/src/components/Skeleton/Skeleton.contract.json +28 -54
  567. package/src/components/Skeleton/Skeleton.module.scss +51 -34
  568. package/src/components/Skeleton/index.tsx +65 -72
  569. package/src/components/Slider/Slider.contract.json +27 -39
  570. package/src/components/Slider/Slider.module.scss +33 -27
  571. package/src/components/Stack/Stack.contract.json +29 -56
  572. package/src/components/Stack/Stack.module.scss +110 -38
  573. package/src/components/Stack/index.tsx +157 -127
  574. package/src/components/{Toggle/Toggle.contract.json → Switch/Switch.contract.json} +34 -47
  575. package/src/components/Switch/Switch.module.scss +255 -0
  576. package/src/components/{Toggle → Switch}/index.tsx +5 -21
  577. package/src/components/Table/Table.contract.json +28 -46
  578. package/src/components/Table/Table.module.scss +50 -129
  579. package/src/components/Table/index.tsx +13 -6
  580. package/src/components/TableOfContents/TableOfContents.contract.json +34 -21
  581. package/src/components/TableOfContents/TableOfContents.module.scss +35 -182
  582. package/src/components/TableOfContents/index.tsx +26 -9
  583. package/src/components/Tabs/Tabs.contract.json +24 -45
  584. package/src/components/Tabs/Tabs.module.scss +28 -23
  585. package/src/components/Tabs/index.tsx +17 -5
  586. package/src/components/Text/Text.contract.json +30 -72
  587. package/src/components/Text/Text.module.scss +43 -7
  588. package/src/components/Text/index.tsx +136 -63
  589. package/src/components/Textarea/Textarea.contract.json +25 -43
  590. package/src/components/Textarea/Textarea.module.scss +58 -40
  591. package/src/components/Textarea/index.tsx +5 -12
  592. package/src/components/Theme/Theme.contract.json +32 -51
  593. package/src/components/Theme/context.ts +42 -0
  594. package/src/components/Theme/index.tsx +16 -310
  595. package/src/components/ThemeToggle/ThemeToggle.module.scss +89 -0
  596. package/src/components/ThemeToggle/index.tsx +180 -0
  597. package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +23 -40
  598. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +24 -19
  599. package/src/components/ThinkingIndicator/index.tsx +44 -54
  600. package/src/components/Toast/Toast.contract.json +35 -61
  601. package/src/components/Toast/Toast.module.scss +62 -139
  602. package/src/components/Toggle/index.ts +7 -0
  603. package/src/components/ToggleGroup/ToggleGroup.contract.json +40 -68
  604. package/src/components/ToggleGroup/ToggleGroup.module.scss +166 -89
  605. package/src/components/ToggleGroup/index.tsx +5 -3
  606. package/src/components/Tooltip/Tooltip.contract.json +31 -52
  607. package/src/components/Tooltip/Tooltip.module.scss +23 -39
  608. package/src/components/Tooltip/index.tsx +19 -24
  609. package/src/components/VisuallyHidden/VisuallyHidden.contract.json +22 -44
  610. package/src/components/VisuallyHidden/VisuallyHidden.module.scss +3 -0
  611. package/src/components/VisuallyHidden/index.tsx +5 -5
  612. package/src/index.ts +4 -3
  613. package/src/measurements/MeasurementTargets.module.scss +229 -0
  614. package/src/measurements/generated.ts +324 -0
  615. package/src/measurements/index.ts +8 -0
  616. package/src/measurements/measurements.json +368 -0
  617. package/src/recipes/_action.scss +138 -0
  618. package/src/recipes/_boolean-range.scss +116 -0
  619. package/src/recipes/_feedback.scss +171 -0
  620. package/src/recipes/_field.scss +102 -0
  621. package/src/recipes/_layout.scss +74 -0
  622. package/src/recipes/_navigation.scss +110 -0
  623. package/src/recipes/_overlay.scss +191 -0
  624. package/src/recipes/_popup.scss +102 -0
  625. package/src/recipes/_prose.scss +182 -0
  626. package/src/recipes/_representation.scss +193 -0
  627. package/src/recipes/_segmented.scss +26 -0
  628. package/src/recipes/_surface.scss +13 -0
  629. package/src/recipes/_table-chrome.scss +119 -0
  630. package/src/recipes/_target.scss +31 -0
  631. package/src/recipes/_typography.scss +38 -0
  632. package/src/recipes/popup.ts +12 -0
  633. package/src/recipes/table-chrome.ts +30 -0
  634. package/src/scss.d.ts +1 -1
  635. package/src/styles/globals.scss +21 -20
  636. package/src/tokens/_component-properties.scss +2 -2
  637. package/src/tokens/_computed.scss +14 -25
  638. package/src/tokens/_density.scss +41 -132
  639. package/src/tokens/_derive.scss +112 -210
  640. package/src/tokens/_measurements.catalog.generated.css +96 -0
  641. package/src/tokens/_measurements.generated.scss +617 -0
  642. package/src/tokens/_mixins.scss +7 -284
  643. package/src/tokens/_palettes.scss +39 -167
  644. package/src/tokens/_property-registrations.scss +96 -92
  645. package/src/tokens/_radius.scss +16 -70
  646. package/src/tokens/_seeds.scss +24 -23
  647. package/src/tokens/_variables.scss +338 -178
  648. package/src/utils/a11y.tsx +69 -69
  649. package/src/utils/aria.ts +3 -3
  650. package/src/utils/canonical-stamp.ts +2 -12
  651. package/src/utils/css-warning.ts +7 -7
  652. package/src/utils/env.ts +25 -0
  653. package/src/utils/keyboard-shortcuts.ts +131 -126
  654. package/src/utils/layout-spacing.ts +31 -0
  655. package/src/utils/seed-derivation.ts +144 -178
  656. package/src/utils/theme-presets.ts +58 -30
  657. package/dist/components/Theme/ThemeToggle.module.scss.js +0 -23
  658. package/dist/components/Toggle/Toggle.module.scss.cjs +0 -44
  659. package/dist/components/Toggle/Toggle.module.scss.js +0 -44
  660. package/src/components/Button/Button.contract.json +0 -218
  661. package/src/components/Card/Card.contract.json +0 -175
  662. package/src/components/DataTable/DataTable.contract.json +0 -302
  663. package/src/components/Dialog/Dialog.contract.json +0 -159
  664. package/src/components/Select/Select.contract.json +0 -259
  665. package/src/components/Switch/index.ts +0 -3
  666. package/src/components/Theme/ThemeToggle.module.scss +0 -91
  667. package/src/components/Toggle/Toggle.module.scss +0 -244
@@ -1,18 +1,9 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "NavigationMenu",
4
- "description": "Rich navigation menu for site headers with dropdown content panels, animated viewport transitions, and automatic mobile drawer. Supports structured links with titles, descriptions, and icons.",
4
+ "description": "Site navigation whose dropdowns become a drawer on small screens.",
5
5
  "category": "navigation",
6
- "tags": [
7
- "navigation",
8
- "menu",
9
- "header",
10
- "dropdown",
11
- "navbar",
12
- "mobile",
13
- "responsive",
14
- "drawer"
15
- ],
6
+ "tags": ["navigation", "menu", "header", "dropdown", "navbar", "mobile", "responsive", "drawer"],
16
7
  "status": "stable",
17
8
  "sourcePath": "src/components/NavigationMenu/index.tsx",
18
9
  "exportName": "NavigationMenu",
@@ -24,7 +15,8 @@
24
15
  "orientation: horizontal|vertical (default: horizontal)",
25
16
  "delayDuration: number (default: 200)",
26
17
  "skipDelayDuration: number (default: 300)",
27
- "icons: object"
18
+ "icons: object",
19
+ "mobileBreakpoint: md|lg (default: md)"
28
20
  ],
29
21
  "props": {
30
22
  "children": {
@@ -53,10 +45,7 @@
53
45
  "description": "'horizontal' | 'vertical'",
54
46
  "default": "horizontal",
55
47
  "required": false,
56
- "values": [
57
- "horizontal",
58
- "vertical"
59
- ]
48
+ "values": ["horizontal", "vertical"]
60
49
  },
61
50
  "delayDuration": {
62
51
  "type": "number",
@@ -74,30 +63,37 @@
74
63
  "type": "object",
75
64
  "description": "Optional icon overrides for triggerChevron, mobileMenu, mobileClose, and drawerClose controls",
76
65
  "required": false
66
+ },
67
+ "mobileBreakpoint": {
68
+ "type": "enum",
69
+ "description": "Viewport breakpoint below which the mobile drawer replaces desktop navigation",
70
+ "default": "md",
71
+ "required": false,
72
+ "values": ["md", "lg"]
77
73
  }
78
74
  },
79
75
  "usage": {
80
76
  "when": [
81
- "Site-level header navigation with rich dropdown content",
82
- "Navigation with titles, descriptions, and icons in dropdowns",
83
- "Responsive navigation that converts to a mobile drawer automatically",
84
- "Multi-section navigation requiring animated viewport transitions"
77
+ "Header navigation with more than links",
78
+ "Dropdowns carrying titles, descriptions, or icons",
79
+ "Navigation that must survive a phone screen",
80
+ "Several sections that animate between each other"
85
81
  ],
86
82
  "whenNot": [
87
- "Simple flat navigation without dropdowns (use Header.Nav)",
88
- "Application menus with actions like cut/paste (use Menu)",
89
- "Sidebar navigation (use Sidebar)",
90
- "Breadcrumb trail navigation (use Breadcrumbs)"
83
+ "Flat links with no dropdowns (use Header.Nav)",
84
+ "Application actions like cut and paste (use Menu)",
85
+ "Persistent side navigation (use Sidebar)",
86
+ "Showing where the user already is (use Breadcrumbs)"
91
87
  ],
92
88
  "guidelines": [
93
- "Place inside Header component for site-level navigation",
94
- "Use NavigationMenu.Viewport for animated content panel transitions",
95
- "Use NavigationMenu.MobileContent to add extra sections to the mobile drawer",
96
- "Use structured links (title + description) for rich dropdown content",
97
- "Use simple NavigationMenu.Link for items without dropdown content",
98
- "NavigationMenu.Link asChild composes click handlers and respects event.preventDefault()",
99
- "Triggers open on hover (desktop) with configurable delay",
100
- "Use the icons prop to replace trigger chevrons and mobile drawer controls with icons from any package"
89
+ "Place it inside Header for site-level navigation",
90
+ "Add Viewport to animate between panels",
91
+ "Use MobileContent for sections that only make sense in the drawer",
92
+ "Title plus description for rich panels, plain Link for the rest",
93
+ "asChild on Link composes your handler and honours preventDefault()",
94
+ "Desktop triggers open on hover after a configurable delay",
95
+ "Point icons at your own icon package to replace the chevrons",
96
+ "Set mobileBreakpoint=\"lg\" when the shell drops its sidebar below 1024px"
101
97
  ],
102
98
  "accessibility": [
103
99
  "Uses disclosure pattern (not menu role) per W3C guidance",
@@ -110,27 +106,27 @@
110
106
  "examples": [
111
107
  {
112
108
  "name": "Default",
113
- "description": "Two trigger items with dropdown content and one direct link",
109
+ "description": "Two dropdowns beside one plain link.",
114
110
  "code": "<NavigationMenu>\n <NavigationMenu.List>\n <NavigationMenu.Item value=\"products\">\n <NavigationMenu.Trigger>Products</NavigationMenu.Trigger>\n <NavigationMenu.Content>\n <NavigationMenu.Link href=\"/analytics\" title=\"Analytics\" description=\"Track your metrics and KPIs.\" />\n <NavigationMenu.Link href=\"/automation\" title=\"Automation\" description=\"Automate your workflows.\" />\n </NavigationMenu.Content>\n </NavigationMenu.Item>\n <NavigationMenu.Item value=\"resources\">\n <NavigationMenu.Trigger>Resources</NavigationMenu.Trigger>\n <NavigationMenu.Content>\n <NavigationMenu.Link href=\"/docs\" title=\"Documentation\" description=\"Comprehensive API reference.\" />\n <NavigationMenu.Link href=\"/blog\" title=\"Blog\" description=\"Latest news and updates.\" />\n </NavigationMenu.Content>\n </NavigationMenu.Item>\n <NavigationMenu.Item>\n <NavigationMenu.Link href=\"/pricing\">Pricing</NavigationMenu.Link>\n </NavigationMenu.Item>\n </NavigationMenu.List>\n <NavigationMenu.Viewport />\n</NavigationMenu>"
115
111
  },
116
112
  {
117
113
  "name": "With Rich Content",
118
- "description": "Grid layout with icons, titles, and descriptions",
114
+ "description": "A grid of icons, titles, and descriptions.",
119
115
  "code": "<NavigationMenu>\n <NavigationMenu.List>\n <NavigationMenu.Item value=\"platform\">\n <NavigationMenu.Trigger>Platform</NavigationMenu.Trigger>\n <NavigationMenu.Content>\n <div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '4px', padding: '8px', minWidth: '400px' }}>\n <NavigationMenu.Link\n href=\"/dashboard\"\n title=\"Dashboard\"\n description=\"Overview of your project metrics.\"\n />\n <NavigationMenu.Link\n href=\"/analytics\"\n title=\"Analytics\"\n description=\"Deep dive into your data.\"\n />\n <NavigationMenu.Link\n href=\"/reports\"\n title=\"Reports\"\n description=\"Generate custom reports.\"\n />\n <NavigationMenu.Link\n href=\"/settings\"\n title=\"Settings\"\n description=\"Configure your workspace.\"\n />\n </div>\n </NavigationMenu.Content>\n </NavigationMenu.Item>\n </NavigationMenu.List>\n <NavigationMenu.Viewport />\n</NavigationMenu>"
120
116
  },
121
117
  {
122
118
  "name": "With Simple Links",
123
- "description": "Mix of triggers with simple link lists and plain links",
119
+ "description": "Link lists where descriptions would be noise.",
124
120
  "code": "<NavigationMenu>\n <NavigationMenu.List>\n <NavigationMenu.Item value=\"company\">\n <NavigationMenu.Trigger>Company</NavigationMenu.Trigger>\n <NavigationMenu.Content>\n <div style={{ display: 'flex', flexDirection: 'column', padding: '4px', minWidth: '160px' }}>\n <NavigationMenu.Link href=\"/about\">About</NavigationMenu.Link>\n <NavigationMenu.Link href=\"/careers\">Careers</NavigationMenu.Link>\n <NavigationMenu.Link href=\"/contact\">Contact</NavigationMenu.Link>\n </div>\n </NavigationMenu.Content>\n </NavigationMenu.Item>\n <NavigationMenu.Item>\n <NavigationMenu.Link href=\"/blog\">Blog</NavigationMenu.Link>\n </NavigationMenu.Item>\n <NavigationMenu.Item>\n <NavigationMenu.Link href=\"/docs\">Docs</NavigationMenu.Link>\n </NavigationMenu.Item>\n </NavigationMenu.List>\n <NavigationMenu.Viewport />\n</NavigationMenu>"
125
121
  },
126
122
  {
127
123
  "name": "With Featured Card",
128
- "description": "Highlighted featured item alongside regular links",
124
+ "description": "One promoted item leads the panel.",
129
125
  "code": "<NavigationMenu>\n <NavigationMenu.List>\n <NavigationMenu.Item value=\"learn\">\n <NavigationMenu.Trigger>Learn</NavigationMenu.Trigger>\n <NavigationMenu.Content>\n <div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '8px', padding: '8px', minWidth: '420px' }}>\n <NavigationMenu.Link\n href=\"/quickstart\"\n title=\"Quick Start\"\n description=\"Get up and running in 5 minutes with our getting started guide.\"\n featured\n />\n <div style={{ display: 'flex', flexDirection: 'column', gap: '4px' }}>\n <NavigationMenu.Link href=\"/docs\" title=\"Documentation\" description=\"API reference and guides.\" />\n <NavigationMenu.Link href=\"/examples\" title=\"Examples\" description=\"Browse example projects.\" />\n </div>\n </div>\n </NavigationMenu.Content>\n </NavigationMenu.Item>\n </NavigationMenu.List>\n <NavigationMenu.Viewport />\n</NavigationMenu>"
130
126
  },
131
127
  {
132
128
  "name": "Vertical",
133
- "description": "Vertical orientation with content panels to the right",
129
+ "description": "Panels open to the side instead of below.",
134
130
  "code": "<div style={{ display: 'flex' }}>\n <NavigationMenu orientation=\"vertical\">\n <NavigationMenu.List>\n <NavigationMenu.Item value=\"overview\">\n <NavigationMenu.Trigger>Overview</NavigationMenu.Trigger>\n <NavigationMenu.Content>\n <div style={{ padding: '8px', minWidth: '200px' }}>\n <NavigationMenu.Link href=\"/intro\" title=\"Introduction\" description=\"Learn the basics.\" />\n </div>\n </NavigationMenu.Content>\n </NavigationMenu.Item>\n <NavigationMenu.Item value=\"guides\">\n <NavigationMenu.Trigger>Guides</NavigationMenu.Trigger>\n <NavigationMenu.Content>\n <div style={{ padding: '8px', minWidth: '200px' }}>\n <NavigationMenu.Link href=\"/install\" title=\"Installation\" description=\"Get started quickly.\" />\n <NavigationMenu.Link href=\"/config\" title=\"Configuration\" description=\"Customize your setup.\" />\n </div>\n </NavigationMenu.Content>\n </NavigationMenu.Item>\n </NavigationMenu.List>\n <NavigationMenu.Viewport />\n </NavigationMenu>\n</div>"
135
131
  }
136
132
  ],
@@ -163,15 +159,12 @@
163
159
  "orientation: horizontal | vertical — layout direction",
164
160
  "delayDuration: number — hover open delay (default: 200ms)",
165
161
  "icons: { triggerChevron?, mobileMenu?, mobileClose?, drawerClose? } — custom internal control icons",
162
+ "mobileBreakpoint: md | lg — mobile drawer breakpoint (default: md)",
166
163
  "NavigationMenu.Link: title + description + icon for structured links, or children for simple links",
167
164
  "NavigationMenu.Link asChild: composes child and menu click handlers (preventDefault keeps menu open)",
168
165
  "NavigationMenu.MobileContent: slot for extra mobile-only sections"
169
166
  ],
170
- "a11yRules": [
171
- "A11Y_DISCLOSURE_PATTERN",
172
- "A11Y_KEYBOARD_NAV",
173
- "A11Y_FOCUS_TRAP"
174
- ]
167
+ "a11yRules": ["A11Y_DISCLOSURE_PATTERN", "A11Y_KEYBOARD_NAV", "A11Y_FOCUS_TRAP"]
175
168
  },
176
169
  "ai": {
177
170
  "compositionPattern": "compound",
@@ -187,9 +180,7 @@
187
180
  "MobileContent",
188
181
  "MobileSection"
189
182
  ],
190
- "requiredChildren": [
191
- "List"
192
- ],
183
+ "requiredChildren": ["List"],
193
184
  "commonPatterns": [
194
185
  "<NavigationMenu><NavigationMenu.List><NavigationMenu.Item value=\"docs\"><NavigationMenu.Trigger>Docs</NavigationMenu.Trigger><NavigationMenu.Content><NavigationMenu.Link href=\"/guides\" title=\"Guides\" description=\"Learn the basics\" /></NavigationMenu.Content></NavigationMenu.Item></NavigationMenu.List><NavigationMenu.Viewport /></NavigationMenu>"
195
186
  ]
@@ -1,17 +1,40 @@
1
- @use '../../tokens/variables' as *;
2
- @use '../../tokens/mixins' as *;
1
+ @use "../../tokens/variables" as *;
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;
7
+ @use "../../recipes/typography" as typography;
3
8
 
4
9
  // ============================================
5
10
  // Root
6
11
  // ============================================
7
12
 
8
13
  .root {
9
- // Container query context: children respond to nav menu width, not viewport
10
- @include container(fui-navmenu);
14
+ @include navigation.properties;
11
15
 
16
+ // Do not set container-type here. Size containment makes width:auto resolve as
17
+ // if the element were empty, so when the desktop list is display:none the nav
18
+ // collapses to 0px in a header flex row and the hamburger overflows onto the
19
+ // next slot (search). Mobile/desktop visibility uses viewport breakpoints.
12
20
  position: relative;
13
21
  display: flex;
14
22
  align-items: center;
23
+ flex-shrink: 0;
24
+ }
25
+
26
+ .root[data-mobile] {
27
+ // JS owns the breakpoint so hosts can retire a persistent rail at `lg`
28
+ // without forking the canonical drawer. These selectors keep the rendered
29
+ // desktop and mobile controls in lockstep with that resolved mode.
30
+ .list,
31
+ .viewport {
32
+ display: none;
33
+ }
34
+
35
+ .hamburger {
36
+ display: flex;
37
+ }
15
38
  }
16
39
 
17
40
  .rootVertical {
@@ -51,16 +74,14 @@
51
74
  .trigger {
52
75
  @include button-reset;
53
76
  @include interactive-base;
54
- @include text-base;
77
+ @include action.base;
78
+ @include action.size("md");
55
79
 
56
80
  display: flex;
57
81
  align-items: center;
58
- gap: var(--fui-space-1, $fui-space-1);
59
- padding: var(--fui-space-1, $fui-space-1) var(--fui-space-2, $fui-space-2);
60
82
  border-radius: var(--fui-radius-md, $fui-radius-md);
61
83
  color: var(--fui-text-secondary, $fui-text-secondary);
62
84
  white-space: nowrap;
63
- min-height: var(--fui-button-height-md, $fui-button-height-md);
64
85
  cursor: pointer;
65
86
 
66
87
  &:hover {
@@ -72,7 +93,7 @@
72
93
  background-color: var(--fui-bg-active, $fui-bg-active);
73
94
  }
74
95
 
75
- &[data-state='open'] {
96
+ &[data-state="open"] {
76
97
  color: var(--fui-text-primary, $fui-text-primary);
77
98
  }
78
99
  }
@@ -81,7 +102,7 @@
81
102
  transition: transform var(--fui-transition-fast, $fui-transition-fast);
82
103
  flex-shrink: 0;
83
104
 
84
- [data-state='open'] > & {
105
+ [data-state="open"] > & {
85
106
  transform: rotate(180deg);
86
107
  }
87
108
  }
@@ -93,32 +114,32 @@
93
114
  .content {
94
115
  display: flex;
95
116
  flex-direction: column;
96
- gap: 1px;
117
+ gap: var(--fui-stroke-hairline, 1px);
97
118
  position: absolute;
98
119
  left: 0;
99
120
  top: 0;
100
121
  width: 100%;
101
- min-width: 180px;
122
+ min-width: layout.measure("menu-min");
102
123
 
103
124
  // Motion direction for directional slide
104
- &[data-motion='from-start'] {
105
- animation: slideFromStart var(--fui-transition-normal, $fui-transition-normal) ease forwards;
125
+ &[data-motion="from-start"] {
126
+ animation: slideFromStart var(--fui-transition-normal, $fui-transition-normal) forwards;
106
127
  }
107
- &[data-motion='from-end'] {
108
- animation: slideFromEnd var(--fui-transition-normal, $fui-transition-normal) ease forwards;
128
+ &[data-motion="from-end"] {
129
+ animation: slideFromEnd var(--fui-transition-normal, $fui-transition-normal) forwards;
109
130
  }
110
- &[data-motion='to-start'] {
111
- animation: slideToStart var(--fui-transition-normal, $fui-transition-normal) ease forwards;
131
+ &[data-motion="to-start"] {
132
+ animation: slideToStart var(--fui-transition-normal, $fui-transition-normal) forwards;
112
133
  }
113
- &[data-motion='to-end'] {
114
- animation: slideToEnd var(--fui-transition-normal, $fui-transition-normal) ease forwards;
134
+ &[data-motion="to-end"] {
135
+ animation: slideToEnd var(--fui-transition-normal, $fui-transition-normal) forwards;
115
136
  }
116
137
  }
117
138
 
118
139
  @keyframes slideFromStart {
119
140
  from {
120
141
  opacity: 0;
121
- transform: translateX(calc(-1 * #{$fui-anim-offset-md}));
142
+ transform: translateX(calc(-1 * var(--fui-anim-offset-md, #{$fui-anim-offset-md})));
122
143
  }
123
144
  to {
124
145
  opacity: 1;
@@ -129,7 +150,7 @@
129
150
  @keyframes slideFromEnd {
130
151
  from {
131
152
  opacity: 0;
132
- transform: translateX($fui-anim-offset-md);
153
+ transform: translateX(var(--fui-anim-offset-md, #{$fui-anim-offset-md}));
133
154
  }
134
155
  to {
135
156
  opacity: 1;
@@ -144,7 +165,7 @@
144
165
  }
145
166
  to {
146
167
  opacity: 0;
147
- transform: translateX(calc(-1 * #{$fui-anim-offset-md}));
168
+ transform: translateX(calc(-1 * var(--fui-anim-offset-md, #{$fui-anim-offset-md})));
148
169
  }
149
170
  }
150
171
 
@@ -155,7 +176,7 @@
155
176
  }
156
177
  to {
157
178
  opacity: 0;
158
- transform: translateX($fui-anim-offset-md);
179
+ transform: translateX(var(--fui-anim-offset-md, #{$fui-anim-offset-md}));
159
180
  }
160
181
  }
161
182
 
@@ -164,13 +185,13 @@
164
185
  // ============================================
165
186
 
166
187
  .link {
167
- @include popup-item;
188
+ @include popup.row;
168
189
 
169
190
  text-decoration: none;
170
191
  white-space: nowrap;
171
192
 
172
193
  &:hover {
173
- @include popup-item-highlight;
194
+ @include popup.highlight-state;
174
195
  }
175
196
 
176
197
  // Links are real tab stops, so keep the focus ring on top of the highlight.
@@ -197,7 +218,7 @@
197
218
  min-height: auto;
198
219
 
199
220
  &:hover {
200
- @include popup-item-highlight;
221
+ @include popup.highlight-state;
201
222
  }
202
223
  }
203
224
 
@@ -220,24 +241,23 @@
220
241
  }
221
242
 
222
243
  .linkTitle {
223
- font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
244
+ @include typography.role("ui-standard");
245
+
224
246
  color: var(--fui-text-primary, $fui-text-primary);
225
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
226
- line-height: var(--fui-line-height-tight, $fui-line-height-tight);
227
247
  }
228
248
 
229
249
  .linkDescription {
230
- font-size: var(--fui-font-size-xs, $fui-font-size-xs);
250
+ @include typography.role("caption");
251
+
231
252
  color: var(--fui-text-secondary, $fui-text-secondary);
232
- line-height: var(--fui-line-height-normal, $fui-line-height-normal);
233
253
  }
234
254
 
235
255
  .linkFeatured {
236
256
  background-color: var(--fui-bg-secondary, $fui-bg-secondary);
237
- border: 1px solid var(--fui-border, $fui-border);
257
+ border: var(--fui-stroke-hairline, 1px) solid var(--fui-border, $fui-border);
238
258
 
239
259
  &:hover {
240
- @include popup-item-highlight;
260
+ @include popup.highlight-state;
241
261
  border-color: var(--fui-border-strong, $fui-border-strong);
242
262
  }
243
263
  }
@@ -249,7 +269,7 @@
249
269
  .indicator {
250
270
  position: absolute;
251
271
  bottom: 0;
252
- height: 2px;
272
+ height: var(--fui-stroke-default, 2px);
253
273
  background-color: var(--fui-color-accent, $fui-color-accent);
254
274
  border-radius: var(--fui-radius-full, $fui-radius-full);
255
275
  transition:
@@ -263,24 +283,22 @@
263
283
  // ============================================
264
284
 
265
285
  .viewport {
266
- @include surface-elevated;
286
+ @include popup.container;
267
287
 
268
288
  position: absolute;
269
289
  top: calc(100% + var(--fui-space-1, #{$fui-space-1}));
270
290
  left: var(--fui-navmenu-viewport-left, 0);
271
291
  overflow: hidden;
272
- padding: var(--fui-space-1, $fui-space-1);
273
292
  border-color: var(--fui-border-strong, $fui-border-strong);
274
293
  box-shadow: var(--fui-shadow-md, $fui-shadow-md);
275
294
  z-index: calc(var(--fui-header-z-index, $fui-header-z-index) + 1);
276
295
 
277
296
  width: var(--fui-navmenu-viewport-width);
278
297
  height: var(--fui-navmenu-viewport-height);
279
- transition:
280
- opacity var(--fui-transition-fast, $fui-transition-fast);
298
+ transition: opacity var(--fui-transition-fast, $fui-transition-fast);
281
299
 
282
300
  // Hidden when no item is open
283
- &[data-state='closed'] {
301
+ &[data-state="closed"] {
284
302
  opacity: 0;
285
303
  pointer-events: none;
286
304
  // Collapse to avoid layout space
@@ -289,7 +307,7 @@
289
307
  overflow: hidden;
290
308
  }
291
309
 
292
- &[data-state='open'] {
310
+ &[data-state="open"] {
293
311
  opacity: 1;
294
312
  }
295
313
 
@@ -306,23 +324,24 @@
306
324
  .hamburger {
307
325
  @include button-reset;
308
326
  @include interactive-base;
327
+ @include action.base;
328
+ @include action.icon-only("lg");
309
329
 
310
330
  display: none;
311
331
  align-items: center;
312
332
  justify-content: center;
313
- width: var(--fui-touch-lg, $fui-touch-lg);
314
- height: var(--fui-touch-lg, $fui-touch-lg);
315
333
  border-radius: var(--fui-radius-md, $fui-radius-md);
316
334
  color: var(--fui-text-primary, $fui-text-primary);
317
335
  flex-shrink: 0;
336
+ width: var(--fui-navigation-mobile-target, var(--_fui-action-track));
337
+ height: var(--fui-navigation-mobile-target, var(--_fui-action-track));
318
338
 
319
339
  &:hover {
320
340
  background-color: var(--fui-bg-hover, $fui-bg-hover);
321
341
  }
322
342
 
323
343
  svg {
324
- width: var(--fui-icon-xl, $fui-icon-xl);
325
- height: var(--fui-icon-xl, $fui-icon-xl);
344
+ @include action.glyph("lg");
326
345
  }
327
346
 
328
347
  // Keep viewport visibility in sync with JS mobile mode.
@@ -340,7 +359,7 @@
340
359
  inset: 0;
341
360
  background: var(--fui-backdrop, $fui-backdrop);
342
361
  z-index: calc(var(--fui-header-z-index, $fui-header-z-index) + 10);
343
- animation: fadeIn var(--fui-transition-normal, $fui-transition-normal) ease;
362
+ animation: fadeIn var(--fui-transition-normal, $fui-transition-normal);
344
363
  }
345
364
 
346
365
  .drawer {
@@ -354,8 +373,9 @@
354
373
  z-index: calc(var(--fui-header-z-index, $fui-header-z-index) + 11);
355
374
  display: flex;
356
375
  flex-direction: column;
357
- overflow-y: auto;
358
- animation: slideInLeft var(--fui-transition-normal, $fui-transition-normal) ease;
376
+ // Keep the header pinned; ScrollArea in .drawerBody owns vertical scroll.
377
+ overflow: hidden;
378
+ animation: slideInLeft var(--fui-transition-normal, $fui-transition-normal);
359
379
 
360
380
  @media (min-width: 480px) {
361
381
  width: min(380px, 85vw);
@@ -365,7 +385,7 @@
365
385
  .drawerRight {
366
386
  left: auto;
367
387
  right: 0;
368
- animation: slideInRight var(--fui-transition-normal, $fui-transition-normal) ease;
388
+ animation: slideInRight var(--fui-transition-normal, $fui-transition-normal);
369
389
  }
370
390
 
371
391
  .drawerHeader {
@@ -373,21 +393,23 @@
373
393
  align-items: center;
374
394
  justify-content: space-between;
375
395
  padding: 0 var(--fui-space-4, $fui-space-4);
376
- border-bottom: 1px solid var(--fui-border, $fui-border);
396
+ border-bottom: var(--fui-stroke-hairline, 1px) solid var(--fui-border, $fui-border);
377
397
  min-height: var(--fui-appshell-header-height, $fui-appshell-header-height);
378
398
  }
379
399
 
380
400
  .drawerClose {
381
401
  @include button-reset;
382
402
  @include interactive-base;
403
+ @include action.base;
404
+ @include action.icon-only("md");
383
405
 
384
406
  display: flex;
385
407
  align-items: center;
386
408
  justify-content: center;
387
- width: var(--fui-touch-md, $fui-touch-md);
388
- height: var(--fui-touch-md, $fui-touch-md);
389
409
  border-radius: var(--fui-radius-md, $fui-radius-md);
390
410
  color: var(--fui-text-secondary, $fui-text-secondary);
411
+ width: var(--fui-navigation-mobile-target, var(--_fui-action-track));
412
+ height: var(--fui-navigation-mobile-target, var(--_fui-action-track));
391
413
 
392
414
  &:hover {
393
415
  background-color: var(--fui-bg-hover, $fui-bg-hover);
@@ -396,9 +418,14 @@
396
418
  }
397
419
 
398
420
  .drawerBody {
421
+ @include navigation.properties;
422
+
399
423
  flex: 1;
400
- overflow-y: auto;
401
- padding: var(--fui-space-2, $fui-space-2) 0;
424
+ // Flex item default min-height:auto prevents shrinking below content, which
425
+ // blocks ScrollArea from receiving a bounded height and scrolling.
426
+ min-height: 0;
427
+ // Match Sidebar.nav: outer gutter + row inset so links aren't flush to the edge.
428
+ padding: var(--fui-space-2, $fui-space-2) var(--fui-navigation-gutter);
402
429
  }
403
430
 
404
431
  .drawerNav {
@@ -408,41 +435,54 @@
408
435
 
409
436
  .drawerLink {
410
437
  @include button-reset;
411
- @include text-base;
438
+ @include navigation.row;
412
439
 
413
440
  display: flex;
414
441
  align-items: center;
442
+ min-block-size: var(--fui-navigation-mobile-row-track, var(--fui-navigation-row-track));
415
443
  width: 100%;
416
- padding: var(--fui-space-2, $fui-space-2) var(--fui-space-4, $fui-space-4);
417
444
  color: var(--fui-text-secondary, $fui-text-secondary);
418
445
  text-decoration: none;
419
- min-height: var(--fui-sidebar-item-height, $fui-sidebar-item-height);
420
446
  transition: background-color var(--fui-transition-fast, $fui-transition-fast);
421
447
 
422
448
  &:hover {
423
- @include popup-item-highlight;
449
+ @include popup.highlight-state;
450
+ }
451
+ }
452
+
453
+ .drawerLinkActive {
454
+ color: var(--fui-text-primary, $fui-text-primary);
455
+ font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
456
+ background-color: var(--fui-control-selected-bg, $fui-bg-active);
457
+
458
+ &:hover {
459
+ background-color: var(--fui-control-selected-bg, $fui-bg-active);
460
+ color: var(--fui-text-primary, $fui-text-primary);
424
461
  }
425
462
  }
426
463
 
427
464
  .drawerSectionLabel {
428
- @include section-label-text;
465
+ @include navigation.section-row;
429
466
 
430
- padding: var(--fui-space-2, $fui-space-2) var(--fui-space-4, $fui-space-4)
431
- var(--fui-space-1, $fui-space-1);
467
+ // Keep inline inset from navigation.section-row so labels align with .drawerLink.
468
+ // The previous shorthand padding used space-4 and made labels look more indented
469
+ // than their items (MobileContent links previously used popup-row geometry).
470
+ padding-block: var(--fui-space-3, $fui-space-3) var(--fui-space-1, $fui-space-1);
471
+ margin-block-start: var(--fui-space-2, $fui-space-2);
472
+ color: var(--fui-text-tertiary, $fui-text-tertiary);
432
473
  }
433
474
 
434
475
  .drawerCollapsibleTrigger {
435
476
  @include button-reset;
436
- @include text-base;
477
+ @include navigation.row;
437
478
 
438
479
  display: flex;
439
480
  align-items: center;
481
+ min-block-size: var(--fui-navigation-mobile-row-track, var(--fui-navigation-row-track));
440
482
  justify-content: space-between;
441
483
  width: 100%;
442
- padding: var(--fui-space-2, $fui-space-2) var(--fui-space-4, $fui-space-4);
443
484
  color: var(--fui-text-primary, $fui-text-primary);
444
485
  font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
445
- min-height: var(--fui-sidebar-item-height, $fui-sidebar-item-height);
446
486
  transition: background-color var(--fui-transition-fast, $fui-transition-fast);
447
487
 
448
488
  &:hover {
@@ -455,7 +495,7 @@
455
495
  color: var(--fui-text-secondary, $fui-text-secondary);
456
496
  flex-shrink: 0;
457
497
 
458
- &[data-open='true'] {
498
+ &[data-open="true"] {
459
499
  transform: rotate(90deg);
460
500
  }
461
501
  }
@@ -469,18 +509,30 @@
469
509
  // ============================================
470
510
 
471
511
  @keyframes fadeIn {
472
- from { opacity: 0; }
473
- to { opacity: 1; }
512
+ from {
513
+ opacity: 0;
514
+ }
515
+ to {
516
+ opacity: 1;
517
+ }
474
518
  }
475
519
 
476
520
  @keyframes slideInLeft {
477
- from { transform: translateX(-100%); }
478
- to { transform: translateX(0); }
521
+ from {
522
+ transform: translateX(-100%);
523
+ }
524
+ to {
525
+ transform: translateX(0);
526
+ }
479
527
  }
480
528
 
481
529
  @keyframes slideInRight {
482
- from { transform: translateX(100%); }
483
- to { transform: translateX(0); }
530
+ from {
531
+ transform: translateX(100%);
532
+ }
533
+ to {
534
+ transform: translateX(0);
535
+ }
484
536
  }
485
537
 
486
538
  // ============================================