@usefragments/ui 1.6.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (685) hide show
  1. package/README.md +54 -66
  2. package/dist/assets/fragments-wordmark.cjs +2 -2
  3. package/dist/assets/fragments-wordmark.d.ts.map +1 -1
  4. package/dist/assets/fragments-wordmark.js +2 -2
  5. package/dist/assets/nav-glyph.cjs +139 -0
  6. package/dist/assets/nav-glyph.d.ts +28 -0
  7. package/dist/assets/nav-glyph.d.ts.map +1 -0
  8. package/dist/assets/nav-glyph.js +139 -0
  9. package/dist/assets/nav-glyph.module.scss.cjs +71 -0
  10. package/dist/assets/nav-glyph.module.scss.js +71 -0
  11. package/dist/assets/ui.css +6885 -6308
  12. package/dist/blocks/components/StatsCard.d.ts +1 -1
  13. package/dist/blocks/components/StatsCard.d.ts.map +1 -1
  14. package/dist/chart.cjs +24 -6
  15. package/dist/chart.js +24 -6
  16. package/dist/codeblock.cjs +76 -43
  17. package/dist/codeblock.js +71 -38
  18. package/dist/colorpicker.cjs +4 -1
  19. package/dist/colorpicker.js +4 -1
  20. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  21. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  22. package/dist/components/Alert/Alert.module.scss.cjs +23 -20
  23. package/dist/components/Alert/Alert.module.scss.js +23 -20
  24. package/dist/components/Alert/index.cjs +20 -8
  25. package/dist/components/Alert/index.d.ts +17 -11
  26. package/dist/components/Alert/index.d.ts.map +1 -1
  27. package/dist/components/Alert/index.js +20 -8
  28. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  29. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  30. package/dist/components/AppShell/index.cjs +2 -2
  31. package/dist/components/AppShell/index.js +2 -2
  32. package/dist/components/Avatar/Avatar.module.scss.cjs +14 -14
  33. package/dist/components/Avatar/Avatar.module.scss.js +14 -14
  34. package/dist/components/Badge/Badge.module.scss.cjs +33 -31
  35. package/dist/components/Badge/Badge.module.scss.js +33 -31
  36. package/dist/components/Badge/index.cjs +13 -3
  37. package/dist/components/Badge/index.d.ts +18 -13
  38. package/dist/components/Badge/index.d.ts.map +1 -1
  39. package/dist/components/Badge/index.js +13 -3
  40. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  41. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  42. package/dist/components/Box/Box.module.scss.cjs +152 -152
  43. package/dist/components/Box/Box.module.scss.js +152 -152
  44. package/dist/components/Box/index.cjs +64 -75
  45. package/dist/components/Box/index.d.ts +16 -16
  46. package/dist/components/Box/index.d.ts.map +1 -1
  47. package/dist/components/Box/index.js +64 -75
  48. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +11 -8
  49. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +11 -8
  50. package/dist/components/Breadcrumbs/index.cjs +1 -1
  51. package/dist/components/Breadcrumbs/index.d.ts.map +1 -1
  52. package/dist/components/Breadcrumbs/index.js +1 -1
  53. package/dist/components/Button/Button.module.scss.cjs +36 -27
  54. package/dist/components/Button/Button.module.scss.js +36 -27
  55. package/dist/components/Button/index.cjs +20 -4
  56. package/dist/components/Button/index.d.ts +18 -10
  57. package/dist/components/Button/index.d.ts.map +1 -1
  58. package/dist/components/Button/index.js +20 -4
  59. package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
  60. package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
  61. package/dist/components/Card/Card.module.scss.cjs +31 -26
  62. package/dist/components/Card/Card.module.scss.js +32 -27
  63. package/dist/components/Card/index.cjs +16 -3
  64. package/dist/components/Card/index.d.ts +23 -15
  65. package/dist/components/Card/index.d.ts.map +1 -1
  66. package/dist/components/Card/index.js +16 -3
  67. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  68. package/dist/components/Chart/Chart.module.scss.js +15 -15
  69. package/dist/components/Chart/index.d.ts.map +1 -1
  70. package/dist/components/Checkbox/Checkbox.module.scss.cjs +11 -11
  71. package/dist/components/Checkbox/Checkbox.module.scss.js +11 -11
  72. package/dist/components/Checkbox/index.cjs +4 -4
  73. package/dist/components/Checkbox/index.d.ts +4 -6
  74. package/dist/components/Checkbox/index.d.ts.map +1 -1
  75. package/dist/components/Checkbox/index.js +4 -4
  76. package/dist/components/Chip/Chip.module.scss.cjs +19 -19
  77. package/dist/components/Chip/Chip.module.scss.js +19 -19
  78. package/dist/components/Chip/index.cjs +3 -3
  79. package/dist/components/Chip/index.d.ts +8 -3
  80. package/dist/components/Chip/index.d.ts.map +1 -1
  81. package/dist/components/Chip/index.js +3 -3
  82. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +26 -23
  83. package/dist/components/CodeBlock/CodeBlock.module.scss.js +26 -23
  84. package/dist/components/CodeBlock/css-variables-theme.cjs +98 -0
  85. package/dist/components/CodeBlock/css-variables-theme.d.ts +27 -0
  86. package/dist/components/CodeBlock/css-variables-theme.d.ts.map +1 -0
  87. package/dist/components/CodeBlock/css-variables-theme.js +98 -0
  88. package/dist/components/CodeBlock/index.d.ts +20 -5
  89. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  90. package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -9
  91. package/dist/components/Collapsible/Collapsible.module.scss.js +9 -9
  92. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +14 -14
  93. package/dist/components/ColorPicker/ColorPicker.module.scss.js +14 -14
  94. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  95. package/dist/components/Combobox/Combobox.module.scss.cjs +21 -21
  96. package/dist/components/Combobox/Combobox.module.scss.js +21 -21
  97. package/dist/components/Combobox/index.cjs +26 -6
  98. package/dist/components/Combobox/index.d.ts.map +1 -1
  99. package/dist/components/Combobox/index.js +26 -6
  100. package/dist/components/Command/Command.module.scss.cjs +14 -11
  101. package/dist/components/Command/Command.module.scss.js +14 -11
  102. package/dist/components/Command/index.cjs +28 -16
  103. package/dist/components/Command/index.d.ts +8 -3
  104. package/dist/components/Command/index.d.ts.map +1 -1
  105. package/dist/components/Command/index.js +28 -16
  106. package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
  107. package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
  108. package/dist/components/ConversationList/index.cjs +2 -2
  109. package/dist/components/ConversationList/index.js +2 -2
  110. package/dist/components/DataTable/DataTable.icons.cjs +6 -33
  111. package/dist/components/DataTable/DataTable.icons.d.ts.map +1 -1
  112. package/dist/components/DataTable/DataTable.icons.js +6 -33
  113. package/dist/components/DataTable/DataTable.module.scss.cjs +31 -28
  114. package/dist/components/DataTable/DataTable.module.scss.js +31 -28
  115. package/dist/components/DataTable/DataTable.virtual.d.ts.map +1 -1
  116. package/dist/components/DataTable/index.d.ts.map +1 -1
  117. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  118. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  119. package/dist/components/DatePicker/index.d.ts.map +1 -1
  120. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  121. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  122. package/dist/components/Dialog/index.cjs +13 -16
  123. package/dist/components/Dialog/index.d.ts +11 -10
  124. package/dist/components/Dialog/index.d.ts.map +1 -1
  125. package/dist/components/Dialog/index.js +13 -16
  126. package/dist/components/Drawer/Drawer.module.scss.cjs +39 -39
  127. package/dist/components/Drawer/Drawer.module.scss.js +40 -40
  128. package/dist/components/Drawer/index.cjs +2 -2
  129. package/dist/components/Drawer/index.d.ts +5 -4
  130. package/dist/components/Drawer/index.d.ts.map +1 -1
  131. package/dist/components/Drawer/index.js +2 -2
  132. package/dist/components/Editor/Editor.module.scss.cjs +17 -17
  133. package/dist/components/Editor/Editor.module.scss.js +17 -17
  134. package/dist/components/Editor/index.d.ts +10 -10
  135. package/dist/components/Editor/index.d.ts.map +1 -1
  136. package/dist/components/EmptyState/EmptyState.module.scss.cjs +11 -8
  137. package/dist/components/EmptyState/EmptyState.module.scss.js +11 -8
  138. package/dist/components/EmptyState/index.cjs +13 -6
  139. package/dist/components/EmptyState/index.d.ts +13 -5
  140. package/dist/components/EmptyState/index.d.ts.map +1 -1
  141. package/dist/components/EmptyState/index.js +13 -6
  142. package/dist/components/Field/Field.module.scss.cjs +5 -5
  143. package/dist/components/Field/Field.module.scss.js +5 -5
  144. package/dist/components/Field/index.cjs +9 -1
  145. package/dist/components/Field/index.d.ts.map +1 -1
  146. package/dist/components/Field/index.js +9 -1
  147. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  148. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  149. package/dist/components/Grid/Grid.module.scss.cjs +54 -54
  150. package/dist/components/Grid/Grid.module.scss.js +54 -54
  151. package/dist/components/Grid/index.cjs +1 -1
  152. package/dist/components/Grid/index.js +1 -1
  153. package/dist/components/Header/Header.module.scss.cjs +33 -33
  154. package/dist/components/Header/Header.module.scss.js +33 -33
  155. package/dist/components/Header/index.cjs +17 -38
  156. package/dist/components/Header/index.d.ts +15 -11
  157. package/dist/components/Header/index.d.ts.map +1 -1
  158. package/dist/components/Header/index.js +17 -38
  159. package/dist/components/Icon/Icon.module.scss.cjs +30 -33
  160. package/dist/components/Icon/Icon.module.scss.js +30 -33
  161. package/dist/components/Icon/index.cjs +15 -14
  162. package/dist/components/Icon/index.d.ts +23 -12
  163. package/dist/components/Icon/index.d.ts.map +1 -1
  164. package/dist/components/Icon/index.js +15 -14
  165. package/dist/components/IconButton/IconButton.module.scss.cjs +12 -12
  166. package/dist/components/IconButton/IconButton.module.scss.js +12 -12
  167. package/dist/components/IconButton/index.cjs +2 -1
  168. package/dist/components/IconButton/index.d.ts +4 -4
  169. package/dist/components/IconButton/index.d.ts.map +1 -1
  170. package/dist/components/IconButton/index.js +2 -1
  171. package/dist/components/Image/Image.module.scss.cjs +27 -27
  172. package/dist/components/Image/Image.module.scss.js +27 -27
  173. package/dist/components/Input/Input.module.scss.cjs +15 -21
  174. package/dist/components/Input/Input.module.scss.js +15 -21
  175. package/dist/components/Input/index.cjs +2 -14
  176. package/dist/components/Input/index.d.ts +0 -2
  177. package/dist/components/Input/index.d.ts.map +1 -1
  178. package/dist/components/Input/index.js +2 -14
  179. package/dist/components/Link/Link.module.scss.cjs +26 -14
  180. package/dist/components/Link/Link.module.scss.js +26 -14
  181. package/dist/components/Link/index.cjs +13 -2
  182. package/dist/components/Link/index.d.ts +11 -4
  183. package/dist/components/Link/index.d.ts.map +1 -1
  184. package/dist/components/Link/index.js +13 -2
  185. package/dist/components/List/List.module.scss.cjs +23 -19
  186. package/dist/components/List/List.module.scss.js +23 -19
  187. package/dist/components/List/index.cjs +7 -7
  188. package/dist/components/List/index.d.ts +10 -7
  189. package/dist/components/List/index.d.ts.map +1 -1
  190. package/dist/components/List/index.js +7 -7
  191. package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
  192. package/dist/components/Listbox/Listbox.module.scss.js +8 -8
  193. package/dist/components/Loading/Loading.module.scss.cjs +34 -34
  194. package/dist/components/Loading/Loading.module.scss.js +34 -34
  195. package/dist/components/Loading/index.cjs +5 -5
  196. package/dist/components/Loading/index.d.ts +8 -7
  197. package/dist/components/Loading/index.d.ts.map +1 -1
  198. package/dist/components/Loading/index.js +5 -5
  199. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  200. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  201. package/dist/components/Markdown/index.d.ts +2 -2
  202. package/dist/components/Markdown/index.d.ts.map +1 -1
  203. package/dist/components/Menu/Menu.module.scss.cjs +14 -14
  204. package/dist/components/Menu/Menu.module.scss.js +14 -14
  205. package/dist/components/Message/Message.module.scss.cjs +20 -20
  206. package/dist/components/Message/Message.module.scss.js +20 -20
  207. package/dist/components/Message/index.cjs +1 -1
  208. package/dist/components/Message/index.d.ts +1 -1
  209. package/dist/components/Message/index.js +1 -1
  210. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +34 -31
  211. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +34 -31
  212. package/dist/components/NavigationMenu/index.cjs +32 -15
  213. package/dist/components/NavigationMenu/index.d.ts +12 -6
  214. package/dist/components/NavigationMenu/index.d.ts.map +1 -1
  215. package/dist/components/NavigationMenu/index.js +32 -15
  216. package/dist/components/Pagination/Pagination.module.scss.cjs +10 -10
  217. package/dist/components/Pagination/Pagination.module.scss.js +10 -10
  218. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  219. package/dist/components/Popover/Popover.module.scss.js +10 -10
  220. package/dist/components/Progress/Progress.module.scss.cjs +28 -25
  221. package/dist/components/Progress/Progress.module.scss.js +28 -25
  222. package/dist/components/Progress/index.cjs +21 -12
  223. package/dist/components/Progress/index.d.ts +10 -6
  224. package/dist/components/Progress/index.d.ts.map +1 -1
  225. package/dist/components/Progress/index.js +21 -12
  226. package/dist/components/Prompt/Prompt.module.scss.cjs +30 -30
  227. package/dist/components/Prompt/Prompt.module.scss.js +30 -30
  228. package/dist/components/Prompt/index.cjs +7 -7
  229. package/dist/components/Prompt/index.d.ts +11 -9
  230. package/dist/components/Prompt/index.d.ts.map +1 -1
  231. package/dist/components/Prompt/index.js +7 -7
  232. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +20 -17
  233. package/dist/components/RadioGroup/RadioGroup.module.scss.js +20 -17
  234. package/dist/components/RadioGroup/index.cjs +10 -5
  235. package/dist/components/RadioGroup/index.d.ts +11 -7
  236. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  237. package/dist/components/RadioGroup/index.js +10 -5
  238. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +5 -5
  239. package/dist/components/ScrollArea/ScrollArea.module.scss.js +5 -5
  240. package/dist/components/ScrollArea/index.d.ts +4 -4
  241. package/dist/components/ScrollArea/index.d.ts.map +1 -1
  242. package/dist/components/ScrollArea/scroll-state.d.ts +5 -5
  243. package/dist/components/Select/Select.module.scss.cjs +21 -21
  244. package/dist/components/Select/Select.module.scss.js +21 -21
  245. package/dist/components/Select/index.cjs +26 -20
  246. package/dist/components/Select/index.d.ts +5 -5
  247. package/dist/components/Select/index.d.ts.map +1 -1
  248. package/dist/components/Select/index.js +26 -20
  249. package/dist/components/Separator/Separator.module.scss.cjs +25 -19
  250. package/dist/components/Separator/Separator.module.scss.js +25 -19
  251. package/dist/components/Separator/index.cjs +10 -8
  252. package/dist/components/Separator/index.d.ts +4 -2
  253. package/dist/components/Separator/index.d.ts.map +1 -1
  254. package/dist/components/Separator/index.js +10 -8
  255. package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
  256. package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
  257. package/dist/components/Sidebar/index.cjs +15 -38
  258. package/dist/components/Sidebar/index.d.ts +19 -19
  259. package/dist/components/Sidebar/index.d.ts.map +1 -1
  260. package/dist/components/Sidebar/index.js +15 -38
  261. package/dist/components/Skeleton/Skeleton.module.scss.cjs +50 -46
  262. package/dist/components/Skeleton/Skeleton.module.scss.js +50 -46
  263. package/dist/components/Skeleton/index.cjs +7 -7
  264. package/dist/components/Skeleton/index.d.ts +8 -7
  265. package/dist/components/Skeleton/index.d.ts.map +1 -1
  266. package/dist/components/Skeleton/index.js +7 -7
  267. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  268. package/dist/components/Slider/Slider.module.scss.js +12 -12
  269. package/dist/components/Stack/Stack.module.scss.cjs +25 -25
  270. package/dist/components/Stack/Stack.module.scss.js +25 -25
  271. package/dist/components/Stack/index.cjs +1 -1
  272. package/dist/components/Stack/index.js +1 -1
  273. package/dist/components/Switch/Switch.module.scss.cjs +9 -9
  274. package/dist/components/Switch/Switch.module.scss.js +9 -9
  275. package/dist/components/Table/Table.module.scss.cjs +19 -19
  276. package/dist/components/Table/Table.module.scss.js +19 -19
  277. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  278. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  279. package/dist/components/TableOfContents/index.cjs +14 -10
  280. package/dist/components/TableOfContents/index.d.ts +5 -3
  281. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  282. package/dist/components/TableOfContents/index.js +14 -10
  283. package/dist/components/Tabs/Tabs.module.scss.cjs +18 -18
  284. package/dist/components/Tabs/Tabs.module.scss.js +18 -18
  285. package/dist/components/Tabs/index.cjs +30 -11
  286. package/dist/components/Tabs/index.d.ts +8 -6
  287. package/dist/components/Tabs/index.d.ts.map +1 -1
  288. package/dist/components/Tabs/index.js +30 -11
  289. package/dist/components/Text/Text.module.scss.cjs +109 -97
  290. package/dist/components/Text/Text.module.scss.js +109 -97
  291. package/dist/components/Text/index.cjs +45 -41
  292. package/dist/components/Text/index.d.ts +24 -19
  293. package/dist/components/Text/index.d.ts.map +1 -1
  294. package/dist/components/Text/index.js +45 -41
  295. package/dist/components/Textarea/Textarea.module.scss.cjs +22 -28
  296. package/dist/components/Textarea/Textarea.module.scss.js +22 -28
  297. package/dist/components/Textarea/index.cjs +3 -10
  298. package/dist/components/Textarea/index.d.ts +0 -2
  299. package/dist/components/Textarea/index.d.ts.map +1 -1
  300. package/dist/components/Textarea/index.js +3 -10
  301. package/dist/components/Theme/index.cjs +22 -5
  302. package/dist/components/Theme/index.d.ts +6 -12
  303. package/dist/components/Theme/index.d.ts.map +1 -1
  304. package/dist/components/Theme/index.js +22 -5
  305. package/dist/components/ThemeToggle/ThemeButton.cjs +51 -0
  306. package/dist/components/ThemeToggle/ThemeButton.d.ts +16 -0
  307. package/dist/components/ThemeToggle/ThemeButton.d.ts.map +1 -0
  308. package/dist/components/ThemeToggle/ThemeButton.js +34 -0
  309. package/dist/components/ThemeToggle/ThemeToggle.module.scss.cjs +6 -6
  310. package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +6 -6
  311. package/dist/components/ThemeToggle/icons.cjs +48 -0
  312. package/dist/components/ThemeToggle/icons.d.ts +10 -0
  313. package/dist/components/ThemeToggle/icons.d.ts.map +1 -0
  314. package/dist/components/ThemeToggle/icons.js +48 -0
  315. package/dist/components/ThemeToggle/index.cjs +6 -50
  316. package/dist/components/ThemeToggle/index.d.ts +5 -3
  317. package/dist/components/ThemeToggle/index.d.ts.map +1 -1
  318. package/dist/components/ThemeToggle/index.js +3 -47
  319. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +18 -15
  320. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +18 -15
  321. package/dist/components/ThinkingIndicator/index.cjs +7 -8
  322. package/dist/components/ThinkingIndicator/index.d.ts +6 -5
  323. package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
  324. package/dist/components/ThinkingIndicator/index.js +7 -8
  325. package/dist/components/Toast/Toast.module.scss.cjs +28 -29
  326. package/dist/components/Toast/Toast.module.scss.js +29 -30
  327. package/dist/components/Toast/index.cjs +28 -30
  328. package/dist/components/Toast/index.d.ts +9 -8
  329. package/dist/components/Toast/index.d.ts.map +1 -1
  330. package/dist/components/Toast/index.js +28 -30
  331. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +21 -19
  332. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +22 -20
  333. package/dist/components/ToggleGroup/index.cjs +4 -5
  334. package/dist/components/ToggleGroup/index.d.ts +7 -6
  335. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  336. package/dist/components/ToggleGroup/index.js +4 -5
  337. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  338. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  339. package/dist/components/Tooltip/index.cjs +24 -40
  340. package/dist/components/Tooltip/index.d.ts +4 -4
  341. package/dist/components/Tooltip/index.d.ts.map +1 -1
  342. package/dist/components/Tooltip/index.js +24 -40
  343. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +1 -1
  344. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
  345. package/dist/components/VisuallyHidden/index.d.ts +2 -2
  346. package/dist/data-table-virtual.cjs +3 -2
  347. package/dist/data-table-virtual.js +3 -2
  348. package/dist/data-table.cjs +3 -2
  349. package/dist/data-table.js +3 -2
  350. package/dist/datepicker.cjs +26 -13
  351. package/dist/datepicker.js +26 -13
  352. package/dist/editor.cjs +68 -28
  353. package/dist/editor.js +68 -28
  354. package/dist/index.cjs +6 -2
  355. package/dist/index.d.ts +9 -9
  356. package/dist/index.d.ts.map +1 -1
  357. package/dist/index.js +8 -4
  358. package/dist/markdown.cjs +21 -29
  359. package/dist/markdown.js +21 -29
  360. package/dist/measurements/generated.cjs +46 -94
  361. package/dist/measurements/generated.d.ts +44 -92
  362. package/dist/measurements/generated.d.ts.map +1 -1
  363. package/dist/measurements/generated.js +46 -94
  364. package/dist/measurements/index.d.ts +1 -1
  365. package/dist/measurements/index.d.ts.map +1 -1
  366. package/dist/utils/a11y.cjs +5 -2
  367. package/dist/utils/a11y.d.ts +5 -5
  368. package/dist/utils/a11y.d.ts.map +1 -1
  369. package/dist/utils/a11y.js +5 -2
  370. package/dist/utils/canonical-stamp.cjs +2 -8
  371. package/dist/utils/canonical-stamp.d.ts.map +1 -1
  372. package/dist/utils/canonical-stamp.js +1 -7
  373. package/dist/utils/css-warning.cjs +1 -1
  374. package/dist/utils/css-warning.js +1 -1
  375. package/dist/utils/env.cjs +17 -0
  376. package/dist/utils/env.d.ts +3 -0
  377. package/dist/utils/env.d.ts.map +1 -0
  378. package/dist/utils/env.js +17 -0
  379. package/dist/utils/keyboard-shortcuts.cjs +3 -10
  380. package/dist/utils/keyboard-shortcuts.d.ts +4 -4
  381. package/dist/utils/keyboard-shortcuts.d.ts.map +1 -1
  382. package/dist/utils/keyboard-shortcuts.js +3 -10
  383. package/dist/utils/seed-derivation.cjs +10 -7
  384. package/dist/utils/seed-derivation.d.ts +1 -3
  385. package/dist/utils/seed-derivation.d.ts.map +1 -1
  386. package/dist/utils/seed-derivation.js +10 -7
  387. package/dist/utils/theme-presets.cjs +5 -10
  388. package/dist/utils/theme-presets.d.ts +1 -2
  389. package/dist/utils/theme-presets.d.ts.map +1 -1
  390. package/dist/utils/theme-presets.js +5 -10
  391. package/fragments.json +1 -1
  392. package/package.json +9 -10
  393. package/src/assets/fragments-logo.tsx +2 -2
  394. package/src/assets/fragments-wordmark.tsx +4 -2
  395. package/src/assets/nav-glyph.module.scss +166 -0
  396. package/src/assets/nav-glyph.tsx +188 -0
  397. package/src/components/Accordion/Accordion.contract.json +24 -48
  398. package/src/components/Accordion/Accordion.module.scss +5 -3
  399. package/src/components/Alert/Alert.contract.json +49 -65
  400. package/src/components/Alert/Alert.module.scss +57 -47
  401. package/src/components/Alert/index.tsx +72 -39
  402. package/src/components/AppShell/AppShell.contract.json +34 -51
  403. package/src/components/AppShell/AppShell.module.scss +99 -54
  404. package/src/components/AppShell/index.tsx +2 -2
  405. package/src/components/Avatar/Avatar.contract.json +31 -48
  406. package/src/components/Avatar/Avatar.module.scss +4 -2
  407. package/src/components/Badge/Badge.contract.json +86 -55
  408. package/src/components/Badge/Badge.module.scss +80 -48
  409. package/src/components/Badge/index.tsx +34 -17
  410. package/src/components/BentoGrid/BentoGrid.contract.json +21 -45
  411. package/src/components/BentoGrid/BentoGrid.module.scss +4 -8
  412. package/src/components/Box/Box.contract.json +40 -148
  413. package/src/components/Box/Box.module.scss +7 -6
  414. package/src/components/Box/index.tsx +92 -99
  415. package/src/components/Breadcrumbs/Breadcrumbs.contract.json +21 -34
  416. package/src/components/Breadcrumbs/Breadcrumbs.module.scss +27 -12
  417. package/src/components/Breadcrumbs/index.tsx +5 -1
  418. package/src/components/Button/Button.module.scss +261 -185
  419. package/src/components/Button/index.tsx +41 -28
  420. package/src/components/ButtonGroup/ButtonGroup.contract.json +34 -49
  421. package/src/components/ButtonGroup/ButtonGroup.module.scss +8 -6
  422. package/src/components/Card/Card.consumer-fixture.module.scss +5 -2
  423. package/src/components/Card/Card.module.scss +97 -76
  424. package/src/components/Card/index.tsx +44 -20
  425. package/src/components/Chart/Chart.contract.json +21 -29
  426. package/src/components/Chart/Chart.module.scss +6 -5
  427. package/src/components/Chart/index.tsx +36 -6
  428. package/src/components/Checkbox/Checkbox.contract.json +28 -27
  429. package/src/components/Checkbox/Checkbox.module.scss +47 -54
  430. package/src/components/Checkbox/index.tsx +10 -10
  431. package/src/components/Chip/Chip.contract.json +38 -45
  432. package/src/components/Chip/Chip.module.scss +24 -23
  433. package/src/components/Chip/index.tsx +12 -7
  434. package/src/components/CodeBlock/CodeBlock.contract.json +46 -76
  435. package/src/components/CodeBlock/CodeBlock.module.scss +75 -73
  436. package/src/components/CodeBlock/css-variables-theme.ts +102 -0
  437. package/src/components/CodeBlock/index.tsx +114 -51
  438. package/src/components/Collapsible/Collapsible.contract.json +21 -36
  439. package/src/components/Collapsible/Collapsible.module.scss +1 -7
  440. package/src/components/ColorPicker/ColorPicker.contract.json +29 -48
  441. package/src/components/ColorPicker/ColorPicker.module.scss +34 -24
  442. package/src/components/ColorPicker/index.tsx +6 -1
  443. package/src/components/Combobox/Combobox.contract.json +36 -37
  444. package/src/components/Combobox/Combobox.module.scss +16 -19
  445. package/src/components/Combobox/index.tsx +41 -6
  446. package/src/components/Command/Command.contract.json +28 -44
  447. package/src/components/Command/Command.module.scss +19 -21
  448. package/src/components/Command/index.tsx +64 -47
  449. package/src/components/ComponentDefaults/ComponentDefaults.contract.json +91 -0
  450. package/src/components/ConversationList/ConversationList.contract.json +27 -32
  451. package/src/components/ConversationList/ConversationList.module.scss +2 -3
  452. package/src/components/ConversationList/index.tsx +2 -2
  453. package/src/components/DataTable/DataTable.icons.tsx +4 -21
  454. package/src/components/DataTable/DataTable.module.scss +24 -17
  455. package/src/components/DataTable/DataTable.virtual.tsx +3 -2
  456. package/src/components/DataTable/index.tsx +9 -8
  457. package/src/components/DatePicker/DatePicker.contract.json +27 -28
  458. package/src/components/DatePicker/DatePicker.module.scss +41 -44
  459. package/src/components/DatePicker/index.tsx +23 -9
  460. package/src/components/Dialog/Dialog.module.scss +26 -32
  461. package/src/components/Dialog/index.tsx +51 -39
  462. package/src/components/Drawer/Drawer.contract.json +28 -42
  463. package/src/components/Drawer/Drawer.module.scss +123 -64
  464. package/src/components/Drawer/index.tsx +7 -5
  465. package/src/components/Editor/Editor.contract.json +32 -49
  466. package/src/components/Editor/Editor.module.scss +60 -25
  467. package/src/components/Editor/index.tsx +240 -179
  468. package/src/components/EmptyState/EmptyState.contract.json +33 -45
  469. package/src/components/EmptyState/EmptyState.module.scss +37 -21
  470. package/src/components/EmptyState/index.tsx +56 -23
  471. package/src/components/Field/Field.contract.json +28 -46
  472. package/src/components/Field/Field.module.scss +2 -1
  473. package/src/components/Field/index.tsx +5 -1
  474. package/src/components/Fieldset/Fieldset.contract.json +21 -38
  475. package/src/components/Fieldset/Fieldset.module.scss +15 -7
  476. package/src/components/Form/Form.contract.json +23 -23
  477. package/src/components/Grid/Grid.contract.json +28 -64
  478. package/src/components/Grid/Grid.module.scss +2 -2
  479. package/src/components/Grid/index.tsx +10 -10
  480. package/src/components/Header/Header.contract.json +31 -67
  481. package/src/components/Header/Header.module.scss +57 -54
  482. package/src/components/Header/index.tsx +134 -122
  483. package/src/components/Icon/Icon.contract.json +37 -81
  484. package/src/components/Icon/Icon.module.scss +13 -12
  485. package/src/components/Icon/index.tsx +31 -31
  486. package/src/components/IconButton/IconButton.contract.json +37 -21
  487. package/src/components/IconButton/IconButton.module.scss +19 -11
  488. package/src/components/IconButton/index.tsx +6 -5
  489. package/src/components/Image/Image.contract.json +23 -56
  490. package/src/components/Input/Input.contract.json +25 -44
  491. package/src/components/Input/Input.module.scss +6 -55
  492. package/src/components/Input/index.tsx +2 -18
  493. package/src/components/Link/Link.contract.json +46 -58
  494. package/src/components/Link/Link.module.scss +41 -10
  495. package/src/components/Link/index.tsx +27 -6
  496. package/src/components/List/List.contract.json +33 -62
  497. package/src/components/List/List.module.scss +10 -5
  498. package/src/components/List/index.tsx +17 -13
  499. package/src/components/Listbox/Listbox.contract.json +21 -37
  500. package/src/components/Listbox/Listbox.module.scss +14 -20
  501. package/src/components/Loading/Loading.contract.json +41 -65
  502. package/src/components/Loading/Loading.module.scss +37 -31
  503. package/src/components/Loading/index.tsx +15 -14
  504. package/src/components/Main/Main.contract.json +17 -9
  505. package/src/components/Markdown/Markdown.contract.json +22 -43
  506. package/src/components/Markdown/Markdown.module.scss +45 -6
  507. package/src/components/Markdown/index.tsx +48 -49
  508. package/src/components/Menu/Menu.contract.json +30 -46
  509. package/src/components/Menu/Menu.module.scss +32 -16
  510. package/src/components/Message/Message.contract.json +31 -54
  511. package/src/components/Message/Message.module.scss +18 -9
  512. package/src/components/Message/index.tsx +2 -2
  513. package/src/components/NavigationMenu/NavigationMenu.contract.json +36 -45
  514. package/src/components/NavigationMenu/NavigationMenu.module.scss +66 -66
  515. package/src/components/NavigationMenu/index.tsx +105 -81
  516. package/src/components/Pagination/Pagination.contract.json +22 -40
  517. package/src/components/Pagination/Pagination.module.scss +9 -16
  518. package/src/components/Popover/Popover.contract.json +28 -50
  519. package/src/components/Popover/Popover.module.scss +30 -28
  520. package/src/components/Progress/Progress.contract.json +39 -35
  521. package/src/components/Progress/Progress.module.scss +16 -10
  522. package/src/components/Progress/index.tsx +34 -16
  523. package/src/components/Prompt/Prompt.contract.json +40 -56
  524. package/src/components/Prompt/Prompt.module.scss +49 -48
  525. package/src/components/Prompt/index.tsx +17 -15
  526. package/src/components/RadioGroup/RadioGroup.contract.json +29 -28
  527. package/src/components/RadioGroup/RadioGroup.module.scss +50 -45
  528. package/src/components/RadioGroup/index.tsx +23 -10
  529. package/src/components/ScrollArea/ScrollArea.contract.json +18 -19
  530. package/src/components/ScrollArea/ScrollArea.module.scss +45 -48
  531. package/src/components/ScrollArea/index.tsx +16 -16
  532. package/src/components/ScrollArea/scroll-state.ts +24 -24
  533. package/src/components/Select/Select.module.scss +20 -19
  534. package/src/components/Select/index.tsx +26 -24
  535. package/src/components/Separator/Separator.contract.json +29 -53
  536. package/src/components/Separator/Separator.module.scss +24 -40
  537. package/src/components/Separator/index.tsx +16 -11
  538. package/src/components/Sidebar/Sidebar.contract.json +35 -67
  539. package/src/components/Sidebar/Sidebar.module.scss +94 -88
  540. package/src/components/Sidebar/index.tsx +167 -167
  541. package/src/components/Skeleton/Skeleton.contract.json +34 -60
  542. package/src/components/Skeleton/Skeleton.module.scss +50 -26
  543. package/src/components/Skeleton/index.tsx +16 -15
  544. package/src/components/Slider/Slider.contract.json +27 -39
  545. package/src/components/Slider/Slider.module.scss +9 -22
  546. package/src/components/Stack/Stack.contract.json +30 -57
  547. package/src/components/Stack/Stack.module.scss +26 -24
  548. package/src/components/Stack/index.tsx +3 -3
  549. package/src/components/Switch/Switch.contract.json +33 -46
  550. package/src/components/Switch/Switch.module.scss +106 -59
  551. package/src/components/Table/Table.contract.json +28 -46
  552. package/src/components/Table/Table.module.scss +24 -16
  553. package/src/components/TableOfContents/TableOfContents.contract.json +34 -21
  554. package/src/components/TableOfContents/TableOfContents.module.scss +17 -13
  555. package/src/components/TableOfContents/index.tsx +27 -10
  556. package/src/components/Tabs/Tabs.contract.json +35 -56
  557. package/src/components/Tabs/Tabs.module.scss +27 -31
  558. package/src/components/Tabs/index.tsx +30 -15
  559. package/src/components/Text/Text.contract.json +52 -72
  560. package/src/components/Text/Text.module.scss +34 -18
  561. package/src/components/Text/index.tsx +123 -83
  562. package/src/components/Textarea/Textarea.contract.json +24 -55
  563. package/src/components/Textarea/Textarea.module.scss +22 -52
  564. package/src/components/Textarea/index.tsx +3 -14
  565. package/src/components/Theme/Theme.contract.json +35 -53
  566. package/src/components/Theme/index.tsx +41 -13
  567. package/src/components/ThemeToggle/ThemeButton.tsx +49 -0
  568. package/src/components/ThemeToggle/ThemeToggle.module.scss +20 -27
  569. package/src/components/ThemeToggle/icons.tsx +46 -0
  570. package/src/components/ThemeToggle/index.tsx +9 -55
  571. package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +34 -50
  572. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +9 -7
  573. package/src/components/ThinkingIndicator/index.tsx +12 -14
  574. package/src/components/Toast/Toast.contract.json +55 -49
  575. package/src/components/Toast/Toast.module.scss +50 -105
  576. package/src/components/Toast/index.tsx +39 -34
  577. package/src/components/ToggleGroup/ToggleGroup.contract.json +39 -40
  578. package/src/components/ToggleGroup/ToggleGroup.module.scss +30 -27
  579. package/src/components/ToggleGroup/index.tsx +11 -11
  580. package/src/components/Tooltip/Tooltip.contract.json +31 -52
  581. package/src/components/Tooltip/Tooltip.module.scss +16 -10
  582. package/src/components/Tooltip/index.tsx +19 -24
  583. package/src/components/VisuallyHidden/VisuallyHidden.contract.json +22 -44
  584. package/src/components/VisuallyHidden/VisuallyHidden.module.scss +4 -14
  585. package/src/components/VisuallyHidden/index.tsx +5 -5
  586. package/src/index.ts +16 -12
  587. package/src/measurements/MeasurementTargets.module.scss +6 -7
  588. package/src/measurements/generated.ts +46 -97
  589. package/src/measurements/index.ts +0 -1
  590. package/src/measurements/measurements.json +44 -116
  591. package/src/recipes/_action.scss +4 -4
  592. package/src/recipes/_boolean-range.scss +12 -16
  593. package/src/recipes/_feedback.scss +17 -16
  594. package/src/recipes/_field.scss +28 -16
  595. package/src/recipes/_layout.scss +14 -7
  596. package/src/recipes/_navigation.scss +84 -29
  597. package/src/recipes/_overlay.scss +143 -43
  598. package/src/recipes/_popup.scss +54 -34
  599. package/src/recipes/_prose.scss +48 -28
  600. package/src/recipes/_representation.scss +10 -9
  601. package/src/recipes/_segmented.scss +1 -1
  602. package/src/recipes/_table-chrome.scss +42 -17
  603. package/src/recipes/_target.scss +2 -4
  604. package/src/recipes/_typography.scss +10 -0
  605. package/src/scss.d.ts +1 -1
  606. package/src/styles/globals.scss +31 -25
  607. package/src/tokens/_component-properties.scss +19 -1
  608. package/src/tokens/_computed.scss +32 -49
  609. package/src/tokens/_derive.scss +112 -210
  610. package/src/tokens/_measurements.catalog.generated.css +62 -44
  611. package/src/tokens/_measurements.generated.scss +119 -249
  612. package/src/tokens/_mixins.scss +49 -48
  613. package/src/tokens/_palettes.scss +39 -167
  614. package/src/tokens/_property-registrations.scss +9 -0
  615. package/src/tokens/_seeds.scss +20 -31
  616. package/src/tokens/_variables.scss +251 -94
  617. package/src/utils/a11y.tsx +69 -69
  618. package/src/utils/aria.ts +3 -3
  619. package/src/utils/canonical-stamp.ts +2 -12
  620. package/src/utils/css-warning.ts +7 -7
  621. package/src/utils/env.ts +25 -0
  622. package/src/utils/keyboard-shortcuts.ts +131 -126
  623. package/src/utils/seed-derivation.ts +11 -14
  624. package/src/utils/theme-presets.ts +5 -12
  625. package/dist/blocks/AccountSettings.block.d.ts +0 -3
  626. package/dist/blocks/AccountSettings.block.d.ts.map +0 -1
  627. package/dist/blocks/ActivityFeedSkeleton.block.d.ts +0 -3
  628. package/dist/blocks/ActivityFeedSkeleton.block.d.ts.map +0 -1
  629. package/dist/blocks/BlogEditor.block.d.ts +0 -3
  630. package/dist/blocks/BlogEditor.block.d.ts.map +0 -1
  631. package/dist/blocks/ChatInterface.block.d.ts +0 -3
  632. package/dist/blocks/ChatInterface.block.d.ts.map +0 -1
  633. package/dist/blocks/ChatMessages.block.d.ts +0 -3
  634. package/dist/blocks/ChatMessages.block.d.ts.map +0 -1
  635. package/dist/blocks/CheckoutForm.block.d.ts +0 -3
  636. package/dist/blocks/CheckoutForm.block.d.ts.map +0 -1
  637. package/dist/blocks/CommandPalette.block.d.ts +0 -3
  638. package/dist/blocks/CommandPalette.block.d.ts.map +0 -1
  639. package/dist/blocks/ContactForm.block.d.ts +0 -3
  640. package/dist/blocks/ContactForm.block.d.ts.map +0 -1
  641. package/dist/blocks/DashboardPage.block.d.ts +0 -3
  642. package/dist/blocks/DashboardPage.block.d.ts.map +0 -1
  643. package/dist/blocks/DashboardSkeleton.block.d.ts +0 -3
  644. package/dist/blocks/DashboardSkeleton.block.d.ts.map +0 -1
  645. package/dist/blocks/DataTable.block.d.ts +0 -3
  646. package/dist/blocks/DataTable.block.d.ts.map +0 -1
  647. package/dist/blocks/EmptyState.block.d.ts +0 -3
  648. package/dist/blocks/EmptyState.block.d.ts.map +0 -1
  649. package/dist/blocks/FAQSection.block.d.ts +0 -3
  650. package/dist/blocks/FAQSection.block.d.ts.map +0 -1
  651. package/dist/blocks/FeatureGrid.block.d.ts +0 -3
  652. package/dist/blocks/FeatureGrid.block.d.ts.map +0 -1
  653. package/dist/blocks/HeroSection.block.d.ts +0 -3
  654. package/dist/blocks/HeroSection.block.d.ts.map +0 -1
  655. package/dist/blocks/NavigationHeader.block.d.ts +0 -3
  656. package/dist/blocks/NavigationHeader.block.d.ts.map +0 -1
  657. package/dist/blocks/PaginatedTable.block.d.ts +0 -3
  658. package/dist/blocks/PaginatedTable.block.d.ts.map +0 -1
  659. package/dist/blocks/PricingComparison.block.d.ts +0 -3
  660. package/dist/blocks/PricingComparison.block.d.ts.map +0 -1
  661. package/dist/blocks/ProductCard.block.d.ts +0 -3
  662. package/dist/blocks/ProductCard.block.d.ts.map +0 -1
  663. package/dist/blocks/RegistrationForm.block.d.ts +0 -3
  664. package/dist/blocks/RegistrationForm.block.d.ts.map +0 -1
  665. package/dist/blocks/SettingsDrawer.block.d.ts +0 -3
  666. package/dist/blocks/SettingsDrawer.block.d.ts.map +0 -1
  667. package/dist/blocks/SettingsPanel.block.d.ts +0 -3
  668. package/dist/blocks/SettingsPanel.block.d.ts.map +0 -1
  669. package/dist/blocks/ShoppingCart.block.d.ts +0 -3
  670. package/dist/blocks/ShoppingCart.block.d.ts.map +0 -1
  671. package/dist/blocks/StatsCardSkeleton.block.d.ts +0 -3
  672. package/dist/blocks/StatsCardSkeleton.block.d.ts.map +0 -1
  673. package/dist/blocks/TableSkeleton.block.d.ts +0 -3
  674. package/dist/blocks/TableSkeleton.block.d.ts.map +0 -1
  675. package/dist/blocks/ThinkingStates.block.d.ts +0 -3
  676. package/dist/blocks/ThinkingStates.block.d.ts.map +0 -1
  677. package/dist/components/Toggle/index.d.ts +0 -3
  678. package/dist/components/Toggle/index.d.ts.map +0 -1
  679. package/src/components/Button/Button.contract.json +0 -218
  680. package/src/components/Card/Card.contract.json +0 -175
  681. package/src/components/DataTable/DataTable.contract.json +0 -302
  682. package/src/components/Dialog/Dialog.contract.json +0 -159
  683. package/src/components/Select/Select.contract.json +0 -259
  684. package/src/components/Toggle/index.ts +0 -7
  685. package/src/tokens/_density.scss +0 -85
@@ -1,14 +1,14 @@
1
- 'use client';
2
-
3
- import * as React from 'react';
4
- import styles from './Sidebar.module.scss';
5
- import { Badge } from '../Badge';
6
- import { Tooltip } from '../Tooltip';
7
- import { Skeleton } from '../Skeleton';
8
- import { Collapsible } from '../Collapsible';
9
- import { ScrollArea } from '../ScrollArea';
10
- import { useFocusTrap } from '../../utils/a11y';
11
- import { useKeyboardShortcut } from '../../utils/keyboard-shortcuts';
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+ import styles from "./Sidebar.module.scss";
5
+ import { Badge } from "../Badge";
6
+ import { Tooltip } from "../Tooltip";
7
+ import { Skeleton } from "../Skeleton";
8
+ import { Collapsible } from "../Collapsible";
9
+ import { ScrollArea } from "../ScrollArea";
10
+ import { useFocusTrap } from "../../utils/a11y";
11
+ import { useKeyboardShortcut } from "../../utils/keyboard-shortcuts";
12
12
 
13
13
  function composeEventHandlers<E extends { defaultPrevented: boolean }>(
14
14
  userHandler: ((event: E) => void) | undefined,
@@ -35,7 +35,7 @@ function renderSidebarBadge(badge: React.ReactNode) {
35
35
  }
36
36
 
37
37
  return (
38
- <Badge variant="default" size="sm">
38
+ <Badge tone="neutral" size="sm">
39
39
  {badge}
40
40
  </Badge>
41
41
  );
@@ -46,7 +46,7 @@ function renderSidebarBadge(badge: React.ReactNode) {
46
46
  // ============================================
47
47
 
48
48
  /** Collapse behavior mode */
49
- export type SidebarCollapsible = 'icon' | 'offcanvas' | 'none';
49
+ export type SidebarCollapsible = "icon" | "offcanvas" | "none";
50
50
 
51
51
  export interface SidebarProviderProps {
52
52
  children: React.ReactNode;
@@ -67,7 +67,7 @@ export interface SidebarProviderProps {
67
67
  /** Width when collapsed */
68
68
  collapsedWidth?: string;
69
69
  /** Sidebar position */
70
- position?: 'left' | 'right';
70
+ position?: "left" | "right";
71
71
  /** Collapse behavior: 'icon' (default), 'offcanvas', or 'none' */
72
72
  collapsible?: SidebarCollapsible;
73
73
  /** Enable Cmd/Ctrl+B keyboard shortcut to toggle sidebar */
@@ -93,14 +93,14 @@ export interface SidebarProps extends React.HTMLAttributes<HTMLElement> {
93
93
  /** Width when collapsed */
94
94
  collapsedWidth?: string;
95
95
  /** Sidebar position */
96
- position?: 'left' | 'right';
96
+ position?: "left" | "right";
97
97
  /** Collapse behavior: 'icon' (default), 'offcanvas', or 'none' */
98
98
  collapsible?: SidebarCollapsible;
99
99
  /**
100
100
  * Where the active-item affordance paints. `start` is the default rail;
101
101
  * `end` is a trailing status dot for product shells that prefer that language.
102
102
  */
103
- activeIndicator?: 'start' | 'end';
103
+ activeIndicator?: "start" | "end";
104
104
  }
105
105
 
106
106
  export interface SidebarHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
@@ -112,7 +112,7 @@ export interface SidebarHeaderProps extends React.HTMLAttributes<HTMLDivElement>
112
112
  export interface SidebarNavProps extends React.HTMLAttributes<HTMLElement> {
113
113
  children: React.ReactNode;
114
114
  /** Accessible label for navigation */
115
- 'aria-label'?: string;
115
+ "aria-label"?: string;
116
116
  }
117
117
 
118
118
  export interface SidebarSectionProps extends React.HTMLAttributes<HTMLDivElement> {
@@ -127,15 +127,18 @@ export interface SidebarSectionProps extends React.HTMLAttributes<HTMLDivElement
127
127
  defaultOpen?: boolean;
128
128
  }
129
129
 
130
- export interface SidebarSectionActionProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'> {
130
+ export interface SidebarSectionActionProps extends Omit<
131
+ React.ButtonHTMLAttributes<HTMLButtonElement>,
132
+ "onClick"
133
+ > {
131
134
  children: React.ReactNode;
132
135
  /** Click handler */
133
136
  onClick?: React.MouseEventHandler<HTMLButtonElement>;
134
137
  /** Accessible label */
135
- 'aria-label'?: string;
138
+ "aria-label"?: string;
136
139
  }
137
140
 
138
- export interface SidebarItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onClick'> {
141
+ export interface SidebarItemProps extends Omit<React.HTMLAttributes<HTMLElement>, "onClick"> {
139
142
  children: React.ReactNode;
140
143
  /** Icon element (required for collapsed mode visibility) */
141
144
  icon?: React.ReactNode;
@@ -169,7 +172,7 @@ export interface SidebarItemProps extends Omit<React.HTMLAttributes<HTMLElement>
169
172
  asChild?: boolean;
170
173
  }
171
174
 
172
- export interface SidebarSubItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onClick'> {
175
+ export interface SidebarSubItemProps extends Omit<React.HTMLAttributes<HTMLElement>, "onClick"> {
173
176
  children: React.ReactNode;
174
177
  /** Whether item is currently active/selected */
175
178
  active?: boolean;
@@ -189,14 +192,14 @@ export interface SidebarTriggerProps extends React.ButtonHTMLAttributes<HTMLButt
189
192
  /** Custom trigger element (uses render prop pattern) */
190
193
  children?: React.ReactNode;
191
194
  /** Accessible label */
192
- 'aria-label'?: string;
195
+ "aria-label"?: string;
193
196
  }
194
197
 
195
198
  export type SidebarOverlayProps = React.HTMLAttributes<HTMLDivElement>;
196
199
 
197
200
  export interface SidebarCollapseToggleProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
198
201
  /** Accessible label */
199
- 'aria-label'?: string;
202
+ "aria-label"?: string;
200
203
  }
201
204
 
202
205
  export type SidebarRailProps = React.ButtonHTMLAttributes<HTMLButtonElement>;
@@ -282,7 +285,7 @@ interface SidebarContextValue {
282
285
  open: boolean;
283
286
  setOpen: (open: boolean) => void;
284
287
  isMobile: boolean;
285
- position: 'left' | 'right';
288
+ position: "left" | "right";
286
289
  width: string;
287
290
  collapsedWidth: string;
288
291
  collapsible: SidebarCollapsible;
@@ -307,21 +310,25 @@ function useSidebar() {
307
310
  open: false,
308
311
  setOpen: () => {},
309
312
  isMobile: false,
310
- position: 'left' as const,
311
- width: '240px',
312
- collapsedWidth: 'var(--fui-navigation-sidebar-collapsed-width, 56px)',
313
- collapsible: 'icon' as SidebarCollapsible,
313
+ position: "left" as const,
314
+ width: "240px",
315
+ collapsedWidth: "var(--fui-navigation-sidebar-collapsed-width, 56px)",
316
+ collapsible: "icon" as SidebarCollapsible,
314
317
  hasIcons: true,
315
318
  toggleSidebar: () => {},
316
- sidebarId: 'sidebar',
317
- state: 'expanded' as 'expanded' | 'collapsed' | 'open' | 'closed',
319
+ sidebarId: "sidebar",
320
+ state: "expanded" as "expanded" | "collapsed" | "open" | "closed",
318
321
  };
319
322
  }
320
323
  return {
321
324
  ...context,
322
325
  state: context.isMobile
323
- ? (context.open ? 'open' : 'closed')
324
- : (context.collapsed ? 'collapsed' : 'expanded'),
326
+ ? context.open
327
+ ? "open"
328
+ : "closed"
329
+ : context.collapsed
330
+ ? "collapsed"
331
+ : "expanded",
325
332
  };
326
333
  }
327
334
 
@@ -331,7 +338,7 @@ function useSidebar() {
331
338
  function useSidebarContext() {
332
339
  const context = React.useContext(SidebarContext);
333
340
  if (!context) {
334
- throw new Error('Sidebar compound components must be used within a Sidebar');
341
+ throw new Error("Sidebar compound components must be used within a Sidebar");
335
342
  }
336
343
  return context;
337
344
  }
@@ -344,11 +351,11 @@ function useIsMobile() {
344
351
  const [isMobile, setIsMobile] = React.useState(false);
345
352
 
346
353
  React.useEffect(() => {
347
- const mq = window.matchMedia('(max-width: 767px)');
354
+ const mq = window.matchMedia("(max-width: 767px)");
348
355
  setIsMobile(mq.matches);
349
356
  const handler = (e: MediaQueryListEvent) => setIsMobile(e.matches);
350
- mq.addEventListener('change', handler);
351
- return () => mq.removeEventListener('change', handler);
357
+ mq.addEventListener("change", handler);
358
+ return () => mq.removeEventListener("change", handler);
352
359
  }, []);
353
360
 
354
361
  return isMobile;
@@ -380,7 +387,7 @@ function hasSidebarItemIcons(children: React.ReactNode): boolean {
380
387
  let found = false;
381
388
 
382
389
  const visit = (nodes: React.ReactNode) => {
383
- React.Children.forEach(nodes, child => {
390
+ React.Children.forEach(nodes, (child) => {
384
391
  if (found || !React.isValidElement(child)) return;
385
392
 
386
393
  if (child.type === SidebarItem) {
@@ -418,10 +425,10 @@ function SidebarProvider({
418
425
  open: controlledOpen,
419
426
  defaultOpen = false,
420
427
  onOpenChange,
421
- width = '240px',
422
- collapsedWidth = 'var(--fui-navigation-sidebar-collapsed-width, 56px)',
423
- position = 'left',
424
- collapsible = 'icon',
428
+ width = "240px",
429
+ collapsedWidth = "var(--fui-navigation-sidebar-collapsed-width, 56px)",
430
+ position = "left",
431
+ collapsible = "icon",
425
432
  enableKeyboardShortcut = true,
426
433
  }: SidebarProviderProps) {
427
434
  const isMobile = useIsMobile();
@@ -433,14 +440,10 @@ function SidebarProvider({
433
440
  onCollapsedChange
434
441
  );
435
442
 
436
- const [open, setOpen] = useControllableState(
437
- controlledOpen,
438
- defaultOpen,
439
- onOpenChange
440
- );
443
+ const [open, setOpen] = useControllableState(controlledOpen, defaultOpen, onOpenChange);
441
444
 
442
445
  const toggleSidebar = React.useCallback(() => {
443
- if (collapsible === 'none') return;
446
+ if (collapsible === "none") return;
444
447
  if (isMobile) {
445
448
  setOpen(!open);
446
449
  } else {
@@ -450,9 +453,9 @@ function SidebarProvider({
450
453
 
451
454
  // Handle Cmd/Ctrl+B keyboard shortcut (skips editable elements like Editor)
452
455
  useKeyboardShortcut({
453
- name: 'SIDEBAR_TOGGLE',
456
+ name: "SIDEBAR_TOGGLE",
454
457
  handler: toggleSidebar,
455
- enabled: enableKeyboardShortcut && collapsible !== 'none',
458
+ enabled: enableKeyboardShortcut && collapsible !== "none",
456
459
  });
457
460
 
458
461
  // Handle escape key for mobile drawer
@@ -460,13 +463,13 @@ function SidebarProvider({
460
463
  if (!isMobile || !open) return;
461
464
 
462
465
  const handleEscape = (e: KeyboardEvent) => {
463
- if (e.key === 'Escape') {
466
+ if (e.key === "Escape") {
464
467
  setOpen(false);
465
468
  }
466
469
  };
467
470
 
468
- document.addEventListener('keydown', handleEscape);
469
- return () => document.removeEventListener('keydown', handleEscape);
471
+ document.addEventListener("keydown", handleEscape);
472
+ return () => document.removeEventListener("keydown", handleEscape);
470
473
  }, [isMobile, open, setOpen]);
471
474
 
472
475
  // Lock body scroll when mobile drawer is open
@@ -474,13 +477,13 @@ function SidebarProvider({
474
477
  if (!isMobile) return;
475
478
 
476
479
  if (open) {
477
- document.body.style.overflow = 'hidden';
480
+ document.body.style.overflow = "hidden";
478
481
  } else {
479
- document.body.style.overflow = '';
482
+ document.body.style.overflow = "";
480
483
  }
481
484
 
482
485
  return () => {
483
- document.body.style.overflow = '';
486
+ document.body.style.overflow = "";
484
487
  };
485
488
  }, [isMobile, open]);
486
489
 
@@ -499,11 +502,7 @@ function SidebarProvider({
499
502
  sidebarId,
500
503
  };
501
504
 
502
- return (
503
- <SidebarContext.Provider value={contextValue}>
504
- {children}
505
- </SidebarContext.Provider>
506
- );
505
+ return <SidebarContext.Provider value={contextValue}>{children}</SidebarContext.Provider>;
507
506
  }
508
507
 
509
508
  function SidebarRoot({
@@ -514,14 +513,14 @@ function SidebarRoot({
514
513
  open: controlledOpen,
515
514
  defaultOpen = false,
516
515
  onOpenChange,
517
- width = '240px',
518
- collapsedWidth = 'var(--fui-navigation-sidebar-collapsed-width, 56px)',
519
- position = 'left',
520
- collapsible = 'icon',
521
- activeIndicator = 'start',
516
+ width = "240px",
517
+ collapsedWidth = "var(--fui-navigation-sidebar-collapsed-width, 56px)",
518
+ position = "left",
519
+ collapsible,
520
+ activeIndicator = "start",
522
521
  className,
523
522
  style: styleProp,
524
- 'aria-label': ariaLabel,
523
+ "aria-label": ariaLabel,
525
524
  ...htmlProps
526
525
  }: SidebarProps) {
527
526
  // Check if we're inside a SidebarProvider
@@ -540,19 +539,27 @@ function SidebarRoot({
540
539
  onOpenChange
541
540
  );
542
541
 
543
- // Use existing context values if inside a provider, otherwise use internal state
544
- const collapsed = existingContext ? existingContext.collapsed : internalCollapsed;
545
- const setCollapsed = existingContext ? existingContext.setCollapsed : setInternalCollapsed;
542
+ // Use existing context values if inside a provider, otherwise use internal state.
543
+ // An explicitly supplied prop always wins: a Sidebar told to be collapsed must stay
544
+ // collapsed even when an ancestor shell renders its own SidebarProvider.
545
+ const isCollapsedControlled = controlledCollapsed !== undefined;
546
+ const collapsed =
547
+ isCollapsedControlled || !existingContext ? internalCollapsed : existingContext.collapsed;
548
+ const setCollapsed =
549
+ isCollapsedControlled || !existingContext ? setInternalCollapsed : existingContext.setCollapsed;
546
550
  const open = existingContext ? existingContext.open : internalOpen;
547
551
  const setOpen = existingContext ? existingContext.setOpen : setInternalOpen;
548
552
  const resolvedPosition = existingContext ? existingContext.position : position;
549
553
  const resolvedWidth = existingContext ? existingContext.width : width;
550
554
  const resolvedCollapsedWidth = existingContext ? existingContext.collapsedWidth : collapsedWidth;
551
- const resolvedCollapsible = existingContext ? existingContext.collapsible : collapsible;
555
+ const resolvedCollapsible =
556
+ collapsible ?? (existingContext ? existingContext.collapsible : "icon");
552
557
  const hasIcons = React.useMemo(() => hasSidebarItemIcons(children), [children]);
553
- const shouldCollapseToZero = !isMobile && resolvedCollapsible === 'icon' && collapsed && !hasIcons;
554
- const isOffcanvasCollapsed = !isMobile && resolvedCollapsible === 'offcanvas' && collapsed;
555
- const effectiveCollapsedWidth = (shouldCollapseToZero || isOffcanvasCollapsed) ? '0px' : resolvedCollapsedWidth;
558
+ const shouldCollapseToZero =
559
+ !isMobile && resolvedCollapsible === "icon" && collapsed && !hasIcons;
560
+ const isOffcanvasCollapsed = !isMobile && resolvedCollapsible === "offcanvas" && collapsed;
561
+ const effectiveCollapsedWidth =
562
+ shouldCollapseToZero || isOffcanvasCollapsed ? "0px" : resolvedCollapsedWidth;
556
563
  const sidebarId = React.useId();
557
564
  const resolvedSidebarId = existingContext ? existingContext.sidebarId : sidebarId;
558
565
  const sidebarRef = React.useRef<HTMLElement>(null);
@@ -560,7 +567,7 @@ function SidebarRoot({
560
567
  useFocusTrap(sidebarRef, isMobile && open);
561
568
 
562
569
  const toggleSidebar = React.useCallback(() => {
563
- if (resolvedCollapsible === 'none') return;
570
+ if (resolvedCollapsible === "none") return;
564
571
  if (isMobile) {
565
572
  setOpen(!open);
566
573
  } else {
@@ -574,13 +581,13 @@ function SidebarRoot({
574
581
  if (!isMobile || !open) return;
575
582
 
576
583
  const handleEscape = (e: KeyboardEvent) => {
577
- if (e.key === 'Escape') {
584
+ if (e.key === "Escape") {
578
585
  setOpen(false);
579
586
  }
580
587
  };
581
588
 
582
- document.addEventListener('keydown', handleEscape);
583
- return () => document.removeEventListener('keydown', handleEscape);
589
+ document.addEventListener("keydown", handleEscape);
590
+ return () => document.removeEventListener("keydown", handleEscape);
584
591
  }, [existingContext, isMobile, open, setOpen]);
585
592
 
586
593
  // Lock body scroll when mobile drawer is open (only if no provider)
@@ -589,13 +596,13 @@ function SidebarRoot({
589
596
  if (!isMobile) return;
590
597
 
591
598
  if (open) {
592
- document.body.style.overflow = 'hidden';
599
+ document.body.style.overflow = "hidden";
593
600
  } else {
594
- document.body.style.overflow = '';
601
+ document.body.style.overflow = "";
595
602
  }
596
603
 
597
604
  return () => {
598
- document.body.style.overflow = '';
605
+ document.body.style.overflow = "";
599
606
  };
600
607
  }, [existingContext, isMobile, open]);
601
608
 
@@ -617,7 +624,7 @@ function SidebarRoot({
617
624
  hasIcons,
618
625
  };
619
626
 
620
- const isCollapsedForStyle = resolvedCollapsible === 'icon' && collapsed;
627
+ const isCollapsedForStyle = resolvedCollapsible === "icon" && collapsed;
621
628
 
622
629
  const classes = [
623
630
  styles.root,
@@ -625,14 +632,16 @@ function SidebarRoot({
625
632
  !isMobile && isCollapsedForStyle && styles.collapsed,
626
633
  !isMobile && isCollapsedForStyle && shouldCollapseToZero && styles.collapsedNoIcons,
627
634
  isOffcanvasCollapsed && styles.offcanvasCollapsed,
628
- resolvedPosition === 'right' && styles.positionRight,
635
+ resolvedPosition === "right" && styles.positionRight,
629
636
  className,
630
- ].filter(Boolean).join(' ');
637
+ ]
638
+ .filter(Boolean)
639
+ .join(" ");
631
640
 
632
641
  const style: React.CSSProperties = {
633
- '--sidebar-width': resolvedWidth,
634
- '--sidebar-collapsed-width': resolvedCollapsedWidth,
635
- '--sidebar-effective-collapsed-width': effectiveCollapsedWidth,
642
+ "--sidebar-width": resolvedWidth,
643
+ "--sidebar-collapsed-width": resolvedCollapsedWidth,
644
+ "--sidebar-effective-collapsed-width": effectiveCollapsedWidth,
636
645
  ...styleProp,
637
646
  } as React.CSSProperties;
638
647
 
@@ -643,25 +652,24 @@ function SidebarRoot({
643
652
  {...htmlProps}
644
653
  className={classes}
645
654
  style={style}
646
- role={isMobile ? 'dialog' : undefined}
655
+ role={isMobile ? "dialog" : undefined}
647
656
  aria-modal={isMobile && open ? true : undefined}
648
657
  aria-hidden={isMobile && !open ? true : undefined}
649
- aria-label={isMobile ? (ariaLabel || 'Sidebar navigation') : ariaLabel}
650
- data-state={isMobile ? (open ? 'open' : 'closed') : (collapsed ? 'collapsed' : 'expanded')}
658
+ inert={isMobile && !open ? true : undefined}
659
+ aria-label={isMobile ? ariaLabel || "Sidebar navigation" : ariaLabel}
660
+ data-state={isMobile ? (open ? "open" : "closed") : collapsed ? "collapsed" : "expanded"}
651
661
  data-position={resolvedPosition}
652
662
  data-collapsible={resolvedCollapsible}
653
663
  data-active-indicator={activeIndicator}
654
- data-icon-collapse={resolvedCollapsible === 'icon' ? (hasIcons ? 'icons' : 'none') : undefined}
664
+ data-icon-collapse={
665
+ resolvedCollapsible === "icon" ? (hasIcons ? "icons" : "none") : undefined
666
+ }
655
667
  >
656
668
  {children}
657
669
  </aside>
658
670
  );
659
671
 
660
- return (
661
- <SidebarContext.Provider value={contextValue}>
662
- {content}
663
- </SidebarContext.Provider>
664
- );
672
+ return <SidebarContext.Provider value={contextValue}>{content}</SidebarContext.Provider>;
665
673
  }
666
674
 
667
675
  function SidebarHeader({
@@ -672,21 +680,25 @@ function SidebarHeader({
672
680
  }: SidebarHeaderProps) {
673
681
  const { collapsed, isMobile } = useSidebarContext();
674
682
  const isCollapsed = collapsed && !isMobile;
675
- const classes = [styles.header, className].filter(Boolean).join(' ');
683
+ const classes = [styles.header, className].filter(Boolean).join(" ");
676
684
 
677
685
  // Show collapsed content when sidebar is collapsed (and we have it), otherwise show children
678
686
  const content = isCollapsed && collapsedContent ? collapsedContent : children;
679
687
 
680
- return <div {...htmlProps} className={classes}>{content}</div>;
688
+ return (
689
+ <div {...htmlProps} className={classes}>
690
+ {content}
691
+ </div>
692
+ );
681
693
  }
682
694
 
683
695
  function SidebarNav({
684
696
  children,
685
- 'aria-label': ariaLabel = 'Main navigation',
697
+ "aria-label": ariaLabel = "Main navigation",
686
698
  className,
687
699
  ...htmlProps
688
700
  }: SidebarNavProps) {
689
- const classes = [styles.nav, className].filter(Boolean).join(' ');
701
+ const classes = [styles.nav, className].filter(Boolean).join(" ");
690
702
  return (
691
703
  <nav {...htmlProps} className={classes} aria-label={ariaLabel}>
692
704
  <ScrollArea orientation="vertical" showFades className={styles.navScrollArea}>
@@ -707,10 +719,7 @@ function SidebarSection({
707
719
  }: SidebarSectionProps) {
708
720
  const { collapsed, isMobile } = useSidebarContext();
709
721
 
710
- const classes = [
711
- styles.section,
712
- className
713
- ].filter(Boolean).join(' ');
722
+ const classes = [styles.section, className].filter(Boolean).join(" ");
714
723
 
715
724
  const showLabel = label && (!collapsed || isMobile);
716
725
  const showAction = action && (!collapsed || isMobile);
@@ -726,9 +735,7 @@ function SidebarSection({
726
735
  {showAction && <div className={styles.sectionActionWrapper}>{action}</div>}
727
736
  </div>
728
737
  )}
729
- <ul className={styles.sectionList}>
730
- {children}
731
- </ul>
738
+ <ul className={styles.sectionList}>{children}</ul>
732
739
  </div>
733
740
  );
734
741
  }
@@ -738,18 +745,13 @@ function SidebarSection({
738
745
  <div {...htmlProps} className={classes} role="group" aria-label={label}>
739
746
  <Collapsible defaultOpen={defaultOpen} className={styles.sectionCollapsible}>
740
747
  <div className={styles.sectionHeader}>
741
- <Collapsible.Trigger
742
- className={styles.sectionTrigger}
743
- chevronPosition="end"
744
- >
748
+ <Collapsible.Trigger className={styles.sectionTrigger} chevronPosition="end">
745
749
  <span className={styles.sectionLabel}>{label}</span>
746
750
  </Collapsible.Trigger>
747
751
  {showAction && <div className={styles.sectionActionWrapper}>{action}</div>}
748
752
  </div>
749
753
  <Collapsible.Content className={styles.sectionContent}>
750
- <ul className={styles.sectionList}>
751
- {children}
752
- </ul>
754
+ <ul className={styles.sectionList}>{children}</ul>
753
755
  </Collapsible.Content>
754
756
  </Collapsible>
755
757
  </div>
@@ -759,11 +761,11 @@ function SidebarSection({
759
761
  function SidebarSectionAction({
760
762
  children,
761
763
  onClick,
762
- 'aria-label': ariaLabel,
764
+ "aria-label": ariaLabel,
763
765
  className,
764
766
  ...htmlProps
765
767
  }: SidebarSectionActionProps) {
766
- const classes = [styles.sectionAction, className].filter(Boolean).join(' ');
768
+ const classes = [styles.sectionAction, className].filter(Boolean).join(" ");
767
769
 
768
770
  return (
769
771
  <button
@@ -813,7 +815,9 @@ function SidebarItem({
813
815
  hasSubmenu && styles.itemHasSubmenu,
814
816
  expanded && styles.itemExpanded,
815
817
  className,
816
- ].filter(Boolean).join(' ');
818
+ ]
819
+ .filter(Boolean)
820
+ .join(" ");
817
821
 
818
822
  const handleClick = (e: React.MouseEvent<HTMLElement>) => {
819
823
  if (disabled) {
@@ -832,9 +836,9 @@ function SidebarItem({
832
836
  let labelText: string | undefined;
833
837
  if (asChild && React.isValidElement(children)) {
834
838
  const childProps = children.props as { children?: React.ReactNode };
835
- labelText = typeof childProps.children === 'string' ? childProps.children : undefined;
839
+ labelText = typeof childProps.children === "string" ? childProps.children : undefined;
836
840
  } else {
837
- labelText = typeof children === 'string' ? children : undefined;
841
+ labelText = typeof children === "string" ? children : undefined;
838
842
  }
839
843
 
840
844
  const itemContent = (
@@ -861,10 +865,10 @@ function SidebarItem({
861
865
  const itemProps = {
862
866
  className: classes,
863
867
  onClick: handleClick,
864
- 'aria-current': active ? 'page' as const : undefined,
865
- 'aria-disabled': disabled || undefined,
866
- 'aria-expanded': hasSubmenu ? expanded : undefined,
867
- 'aria-label': isCollapsed ? labelText : undefined,
868
+ "aria-current": active ? ("page" as const) : undefined,
869
+ "aria-disabled": disabled || undefined,
870
+ "aria-expanded": hasSubmenu ? expanded : undefined,
871
+ "aria-label": isCollapsed ? labelText : undefined,
868
872
  tabIndex: disabled ? -1 : 0,
869
873
  };
870
874
 
@@ -879,12 +883,11 @@ function SidebarItem({
879
883
  itemElement = React.cloneElement(children, {
880
884
  ...itemProps,
881
885
  ...rest,
882
- onClick: composeEventHandlers(
883
- childProps.onClick,
884
- (event: React.MouseEvent<HTMLElement>) => handleClick(event)
886
+ onClick: composeEventHandlers(childProps.onClick, (event: React.MouseEvent<HTMLElement>) =>
887
+ handleClick(event)
885
888
  ),
886
889
  // Merge classNames
887
- className: [classes, childProps.className].filter(Boolean).join(' '),
890
+ className: [classes, childProps.className].filter(Boolean).join(" "),
888
891
  children: itemContent,
889
892
  } as React.HTMLAttributes<HTMLElement>);
890
893
  } else if (href) {
@@ -910,10 +913,9 @@ function SidebarItem({
910
913
  itemElement
911
914
  );
912
915
 
913
- const wrapperClasses = [
914
- styles.itemWrapper,
915
- expanded && styles.itemExpanded,
916
- ].filter(Boolean).join(' ');
916
+ const wrapperClasses = [styles.itemWrapper, expanded && styles.itemExpanded]
917
+ .filter(Boolean)
918
+ .join(" ");
917
919
 
918
920
  return <li className={wrapperClasses}>{wrappedItem}</li>;
919
921
  }
@@ -939,7 +941,9 @@ function SidebarSubItem({
939
941
  active && styles.subItemActive,
940
942
  disabled && styles.subItemDisabled,
941
943
  className,
942
- ].filter(Boolean).join(' ');
944
+ ]
945
+ .filter(Boolean)
946
+ .join(" ");
943
947
 
944
948
  const handleClick = (e: React.MouseEvent<HTMLElement>) => {
945
949
  if (disabled) {
@@ -952,8 +956,8 @@ function SidebarSubItem({
952
956
  const itemProps = {
953
957
  className: classes,
954
958
  onClick: handleClick,
955
- 'aria-current': active ? 'page' as const : undefined,
956
- 'aria-disabled': disabled,
959
+ "aria-current": active ? ("page" as const) : undefined,
960
+ "aria-disabled": disabled,
957
961
  tabIndex: disabled ? -1 : 0,
958
962
  };
959
963
 
@@ -973,21 +977,23 @@ function SidebarSubItem({
973
977
  function SidebarSubmenu({ children }: { children: React.ReactNode }) {
974
978
  return (
975
979
  <li className={styles.submenuWrapper}>
976
- <ul className={styles.submenu}>
977
- {children}
978
- </ul>
980
+ <ul className={styles.submenu}>{children}</ul>
979
981
  </li>
980
982
  );
981
983
  }
982
984
 
983
985
  function SidebarFooter({ children, className, ...htmlProps }: SidebarFooterProps) {
984
- const classes = [styles.footer, className].filter(Boolean).join(' ');
985
- return <div {...htmlProps} className={classes}>{children}</div>;
986
+ const classes = [styles.footer, className].filter(Boolean).join(" ");
987
+ return (
988
+ <div {...htmlProps} className={classes}>
989
+ {children}
990
+ </div>
991
+ );
986
992
  }
987
993
 
988
994
  function SidebarTrigger({
989
995
  children,
990
- 'aria-label': ariaLabel = 'Toggle navigation',
996
+ "aria-label": ariaLabel = "Toggle navigation",
991
997
  className,
992
998
  onClick,
993
999
  ...htmlProps
@@ -999,7 +1005,7 @@ function SidebarTrigger({
999
1005
  return null;
1000
1006
  }
1001
1007
 
1002
- const classes = [styles.trigger, className].filter(Boolean).join(' ');
1008
+ const classes = [styles.trigger, className].filter(Boolean).join(" ");
1003
1009
 
1004
1010
  return (
1005
1011
  <button
@@ -1024,7 +1030,7 @@ function SidebarOverlay({ className, onClick, ...htmlProps }: SidebarOverlayProp
1024
1030
  return null;
1025
1031
  }
1026
1032
 
1027
- const classes = [styles.overlay, className].filter(Boolean).join(' ');
1033
+ const classes = [styles.overlay, className].filter(Boolean).join(" ");
1028
1034
 
1029
1035
  return (
1030
1036
  <div
@@ -1032,13 +1038,13 @@ function SidebarOverlay({ className, onClick, ...htmlProps }: SidebarOverlayProp
1032
1038
  className={classes}
1033
1039
  onClick={composeEventHandlers(onClick, () => setOpen(false))}
1034
1040
  aria-hidden="true"
1035
- data-state={open ? 'open' : 'closed'}
1041
+ data-state={open ? "open" : "closed"}
1036
1042
  />
1037
1043
  );
1038
1044
  }
1039
1045
 
1040
1046
  function SidebarCollapseToggle({
1041
- 'aria-label': ariaLabel,
1047
+ "aria-label": ariaLabel,
1042
1048
  className,
1043
1049
  onClick,
1044
1050
  ...htmlProps
@@ -1046,20 +1052,16 @@ function SidebarCollapseToggle({
1046
1052
  const { collapsed, setCollapsed, isMobile, collapsible, hasIcons } = useSidebarContext();
1047
1053
 
1048
1054
  // Don't show on mobile or when collapsing is disabled
1049
- if (isMobile || collapsible === 'none') {
1055
+ if (isMobile || collapsible === "none") {
1050
1056
  return null;
1051
1057
  }
1052
1058
 
1053
- const shouldFloat = collapsed && (
1054
- (collapsible === 'icon' && !hasIcons) ||
1055
- collapsible === 'offcanvas'
1056
- );
1057
- const classes = [
1058
- styles.collapseToggle,
1059
- shouldFloat && styles.collapseToggleFloating,
1060
- className,
1061
- ].filter(Boolean).join(' ');
1062
- const label = ariaLabel || (collapsed ? 'Expand sidebar' : 'Collapse sidebar');
1059
+ const shouldFloat =
1060
+ collapsed && ((collapsible === "icon" && !hasIcons) || collapsible === "offcanvas");
1061
+ const classes = [styles.collapseToggle, shouldFloat && styles.collapseToggleFloating, className]
1062
+ .filter(Boolean)
1063
+ .join(" ");
1064
+ const label = ariaLabel || (collapsed ? "Expand sidebar" : "Collapse sidebar");
1063
1065
 
1064
1066
  return (
1065
1067
  <button
@@ -1078,21 +1080,19 @@ function SidebarRail({
1078
1080
  className,
1079
1081
  onClick,
1080
1082
  title,
1081
- 'aria-label': ariaLabel,
1083
+ "aria-label": ariaLabel,
1082
1084
  ...htmlProps
1083
1085
  }: SidebarRailProps) {
1084
1086
  const { collapsed, setCollapsed, isMobile, collapsible } = useSidebarContext();
1085
1087
 
1086
1088
  // Don't show on mobile or when collapsing is disabled
1087
- if (isMobile || collapsible === 'none') {
1089
+ if (isMobile || collapsible === "none") {
1088
1090
  return null;
1089
1091
  }
1090
1092
 
1091
- const classes = [
1092
- styles.rail,
1093
- collapsed && styles.railCollapsed,
1094
- className,
1095
- ].filter(Boolean).join(' ');
1093
+ const classes = [styles.rail, collapsed && styles.railCollapsed, className]
1094
+ .filter(Boolean)
1095
+ .join(" ");
1096
1096
 
1097
1097
  return (
1098
1098
  <button
@@ -1100,8 +1100,8 @@ function SidebarRail({
1100
1100
  type="button"
1101
1101
  className={classes}
1102
1102
  onClick={composeEventHandlers(onClick, () => setCollapsed(!collapsed))}
1103
- aria-label={ariaLabel ?? (collapsed ? 'Expand sidebar' : 'Collapse sidebar')}
1104
- title={title ?? (collapsed ? 'Expand sidebar' : 'Collapse sidebar')}
1103
+ aria-label={ariaLabel ?? (collapsed ? "Expand sidebar" : "Collapse sidebar")}
1104
+ title={title ?? (collapsed ? "Expand sidebar" : "Collapse sidebar")}
1105
1105
  />
1106
1106
  );
1107
1107
  }
@@ -1115,17 +1115,17 @@ function SidebarMenuSkeleton({
1115
1115
  const { collapsed, isMobile } = useSidebarContext();
1116
1116
  const isCollapsed = collapsed && !isMobile;
1117
1117
 
1118
- const classes = [styles.menuSkeleton, className].filter(Boolean).join(' ');
1119
- const labelWidths = ['64%', '72%', '68%', '79%', '74%', '66%', '83%', '70%'];
1118
+ const classes = [styles.menuSkeleton, className].filter(Boolean).join(" ");
1119
+ const labelWidths = ["64%", "72%", "68%", "79%", "74%", "66%", "83%", "70%"];
1120
1120
 
1121
1121
  return (
1122
1122
  <div {...htmlProps} className={classes} aria-hidden="true">
1123
1123
  {Array.from({ length: count }).map((_, i) => (
1124
1124
  <div key={i} className={styles.skeletonItem}>
1125
- {showIcon && <Skeleton variant="avatar" size="sm" />}
1125
+ {showIcon && <Skeleton shape="avatar" size="sm" />}
1126
1126
  {!isCollapsed && (
1127
1127
  <Skeleton
1128
- variant="text"
1128
+ shape="text"
1129
1129
  className={styles.skeletonLabel}
1130
1130
  width={labelWidths[i % labelWidths.length]}
1131
1131
  />