@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,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,
@@ -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,9 +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
+ /**
100
+ * Where the active-item affordance paints. `start` is the default rail;
101
+ * `end` is a trailing status dot for product shells that prefer that language.
102
+ */
103
+ activeIndicator?: "start" | "end";
99
104
  }
100
105
 
101
106
  export interface SidebarHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
@@ -107,7 +112,7 @@ export interface SidebarHeaderProps extends React.HTMLAttributes<HTMLDivElement>
107
112
  export interface SidebarNavProps extends React.HTMLAttributes<HTMLElement> {
108
113
  children: React.ReactNode;
109
114
  /** Accessible label for navigation */
110
- 'aria-label'?: string;
115
+ "aria-label"?: string;
111
116
  }
112
117
 
113
118
  export interface SidebarSectionProps extends React.HTMLAttributes<HTMLDivElement> {
@@ -122,15 +127,18 @@ export interface SidebarSectionProps extends React.HTMLAttributes<HTMLDivElement
122
127
  defaultOpen?: boolean;
123
128
  }
124
129
 
125
- export interface SidebarSectionActionProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'> {
130
+ export interface SidebarSectionActionProps extends Omit<
131
+ React.ButtonHTMLAttributes<HTMLButtonElement>,
132
+ "onClick"
133
+ > {
126
134
  children: React.ReactNode;
127
135
  /** Click handler */
128
136
  onClick?: React.MouseEventHandler<HTMLButtonElement>;
129
137
  /** Accessible label */
130
- 'aria-label'?: string;
138
+ "aria-label"?: string;
131
139
  }
132
140
 
133
- export interface SidebarItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onClick'> {
141
+ export interface SidebarItemProps extends Omit<React.HTMLAttributes<HTMLElement>, "onClick"> {
134
142
  children: React.ReactNode;
135
143
  /** Icon element (required for collapsed mode visibility) */
136
144
  icon?: React.ReactNode;
@@ -164,7 +172,7 @@ export interface SidebarItemProps extends Omit<React.HTMLAttributes<HTMLElement>
164
172
  asChild?: boolean;
165
173
  }
166
174
 
167
- export interface SidebarSubItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onClick'> {
175
+ export interface SidebarSubItemProps extends Omit<React.HTMLAttributes<HTMLElement>, "onClick"> {
168
176
  children: React.ReactNode;
169
177
  /** Whether item is currently active/selected */
170
178
  active?: boolean;
@@ -184,14 +192,14 @@ export interface SidebarTriggerProps extends React.ButtonHTMLAttributes<HTMLButt
184
192
  /** Custom trigger element (uses render prop pattern) */
185
193
  children?: React.ReactNode;
186
194
  /** Accessible label */
187
- 'aria-label'?: string;
195
+ "aria-label"?: string;
188
196
  }
189
197
 
190
198
  export type SidebarOverlayProps = React.HTMLAttributes<HTMLDivElement>;
191
199
 
192
200
  export interface SidebarCollapseToggleProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
193
201
  /** Accessible label */
194
- 'aria-label'?: string;
202
+ "aria-label"?: string;
195
203
  }
196
204
 
197
205
  export type SidebarRailProps = React.ButtonHTMLAttributes<HTMLButtonElement>;
@@ -277,7 +285,7 @@ interface SidebarContextValue {
277
285
  open: boolean;
278
286
  setOpen: (open: boolean) => void;
279
287
  isMobile: boolean;
280
- position: 'left' | 'right';
288
+ position: "left" | "right";
281
289
  width: string;
282
290
  collapsedWidth: string;
283
291
  collapsible: SidebarCollapsible;
@@ -302,21 +310,25 @@ function useSidebar() {
302
310
  open: false,
303
311
  setOpen: () => {},
304
312
  isMobile: false,
305
- position: 'left' as const,
306
- width: '240px',
307
- collapsedWidth: '56px',
308
- 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,
309
317
  hasIcons: true,
310
318
  toggleSidebar: () => {},
311
- sidebarId: 'sidebar',
312
- state: 'expanded' as 'expanded' | 'collapsed' | 'open' | 'closed',
319
+ sidebarId: "sidebar",
320
+ state: "expanded" as "expanded" | "collapsed" | "open" | "closed",
313
321
  };
314
322
  }
315
323
  return {
316
324
  ...context,
317
325
  state: context.isMobile
318
- ? (context.open ? 'open' : 'closed')
319
- : (context.collapsed ? 'collapsed' : 'expanded'),
326
+ ? context.open
327
+ ? "open"
328
+ : "closed"
329
+ : context.collapsed
330
+ ? "collapsed"
331
+ : "expanded",
320
332
  };
321
333
  }
322
334
 
@@ -326,7 +338,7 @@ function useSidebar() {
326
338
  function useSidebarContext() {
327
339
  const context = React.useContext(SidebarContext);
328
340
  if (!context) {
329
- 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");
330
342
  }
331
343
  return context;
332
344
  }
@@ -339,11 +351,11 @@ function useIsMobile() {
339
351
  const [isMobile, setIsMobile] = React.useState(false);
340
352
 
341
353
  React.useEffect(() => {
342
- const mq = window.matchMedia('(max-width: 767px)');
354
+ const mq = window.matchMedia("(max-width: 767px)");
343
355
  setIsMobile(mq.matches);
344
356
  const handler = (e: MediaQueryListEvent) => setIsMobile(e.matches);
345
- mq.addEventListener('change', handler);
346
- return () => mq.removeEventListener('change', handler);
357
+ mq.addEventListener("change", handler);
358
+ return () => mq.removeEventListener("change", handler);
347
359
  }, []);
348
360
 
349
361
  return isMobile;
@@ -375,7 +387,7 @@ function hasSidebarItemIcons(children: React.ReactNode): boolean {
375
387
  let found = false;
376
388
 
377
389
  const visit = (nodes: React.ReactNode) => {
378
- React.Children.forEach(nodes, child => {
390
+ React.Children.forEach(nodes, (child) => {
379
391
  if (found || !React.isValidElement(child)) return;
380
392
 
381
393
  if (child.type === SidebarItem) {
@@ -413,10 +425,10 @@ function SidebarProvider({
413
425
  open: controlledOpen,
414
426
  defaultOpen = false,
415
427
  onOpenChange,
416
- width = '240px',
417
- collapsedWidth = '56px',
418
- position = 'left',
419
- collapsible = 'icon',
428
+ width = "240px",
429
+ collapsedWidth = "var(--fui-navigation-sidebar-collapsed-width, 56px)",
430
+ position = "left",
431
+ collapsible = "icon",
420
432
  enableKeyboardShortcut = true,
421
433
  }: SidebarProviderProps) {
422
434
  const isMobile = useIsMobile();
@@ -428,14 +440,10 @@ function SidebarProvider({
428
440
  onCollapsedChange
429
441
  );
430
442
 
431
- const [open, setOpen] = useControllableState(
432
- controlledOpen,
433
- defaultOpen,
434
- onOpenChange
435
- );
443
+ const [open, setOpen] = useControllableState(controlledOpen, defaultOpen, onOpenChange);
436
444
 
437
445
  const toggleSidebar = React.useCallback(() => {
438
- if (collapsible === 'none') return;
446
+ if (collapsible === "none") return;
439
447
  if (isMobile) {
440
448
  setOpen(!open);
441
449
  } else {
@@ -445,9 +453,9 @@ function SidebarProvider({
445
453
 
446
454
  // Handle Cmd/Ctrl+B keyboard shortcut (skips editable elements like Editor)
447
455
  useKeyboardShortcut({
448
- name: 'SIDEBAR_TOGGLE',
456
+ name: "SIDEBAR_TOGGLE",
449
457
  handler: toggleSidebar,
450
- enabled: enableKeyboardShortcut && collapsible !== 'none',
458
+ enabled: enableKeyboardShortcut && collapsible !== "none",
451
459
  });
452
460
 
453
461
  // Handle escape key for mobile drawer
@@ -455,13 +463,13 @@ function SidebarProvider({
455
463
  if (!isMobile || !open) return;
456
464
 
457
465
  const handleEscape = (e: KeyboardEvent) => {
458
- if (e.key === 'Escape') {
466
+ if (e.key === "Escape") {
459
467
  setOpen(false);
460
468
  }
461
469
  };
462
470
 
463
- document.addEventListener('keydown', handleEscape);
464
- return () => document.removeEventListener('keydown', handleEscape);
471
+ document.addEventListener("keydown", handleEscape);
472
+ return () => document.removeEventListener("keydown", handleEscape);
465
473
  }, [isMobile, open, setOpen]);
466
474
 
467
475
  // Lock body scroll when mobile drawer is open
@@ -469,13 +477,13 @@ function SidebarProvider({
469
477
  if (!isMobile) return;
470
478
 
471
479
  if (open) {
472
- document.body.style.overflow = 'hidden';
480
+ document.body.style.overflow = "hidden";
473
481
  } else {
474
- document.body.style.overflow = '';
482
+ document.body.style.overflow = "";
475
483
  }
476
484
 
477
485
  return () => {
478
- document.body.style.overflow = '';
486
+ document.body.style.overflow = "";
479
487
  };
480
488
  }, [isMobile, open]);
481
489
 
@@ -494,11 +502,7 @@ function SidebarProvider({
494
502
  sidebarId,
495
503
  };
496
504
 
497
- return (
498
- <SidebarContext.Provider value={contextValue}>
499
- {children}
500
- </SidebarContext.Provider>
501
- );
505
+ return <SidebarContext.Provider value={contextValue}>{children}</SidebarContext.Provider>;
502
506
  }
503
507
 
504
508
  function SidebarRoot({
@@ -509,13 +513,14 @@ function SidebarRoot({
509
513
  open: controlledOpen,
510
514
  defaultOpen = false,
511
515
  onOpenChange,
512
- width = '240px',
513
- collapsedWidth = '56px',
514
- position = 'left',
515
- collapsible = 'icon',
516
+ width = "240px",
517
+ collapsedWidth = "var(--fui-navigation-sidebar-collapsed-width, 56px)",
518
+ position = "left",
519
+ collapsible,
520
+ activeIndicator = "start",
516
521
  className,
517
522
  style: styleProp,
518
- 'aria-label': ariaLabel,
523
+ "aria-label": ariaLabel,
519
524
  ...htmlProps
520
525
  }: SidebarProps) {
521
526
  // Check if we're inside a SidebarProvider
@@ -534,19 +539,27 @@ function SidebarRoot({
534
539
  onOpenChange
535
540
  );
536
541
 
537
- // Use existing context values if inside a provider, otherwise use internal state
538
- const collapsed = existingContext ? existingContext.collapsed : internalCollapsed;
539
- 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;
540
550
  const open = existingContext ? existingContext.open : internalOpen;
541
551
  const setOpen = existingContext ? existingContext.setOpen : setInternalOpen;
542
552
  const resolvedPosition = existingContext ? existingContext.position : position;
543
553
  const resolvedWidth = existingContext ? existingContext.width : width;
544
554
  const resolvedCollapsedWidth = existingContext ? existingContext.collapsedWidth : collapsedWidth;
545
- const resolvedCollapsible = existingContext ? existingContext.collapsible : collapsible;
555
+ const resolvedCollapsible =
556
+ collapsible ?? (existingContext ? existingContext.collapsible : "icon");
546
557
  const hasIcons = React.useMemo(() => hasSidebarItemIcons(children), [children]);
547
- const shouldCollapseToZero = !isMobile && resolvedCollapsible === 'icon' && collapsed && !hasIcons;
548
- const isOffcanvasCollapsed = !isMobile && resolvedCollapsible === 'offcanvas' && collapsed;
549
- 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;
550
563
  const sidebarId = React.useId();
551
564
  const resolvedSidebarId = existingContext ? existingContext.sidebarId : sidebarId;
552
565
  const sidebarRef = React.useRef<HTMLElement>(null);
@@ -554,7 +567,7 @@ function SidebarRoot({
554
567
  useFocusTrap(sidebarRef, isMobile && open);
555
568
 
556
569
  const toggleSidebar = React.useCallback(() => {
557
- if (resolvedCollapsible === 'none') return;
570
+ if (resolvedCollapsible === "none") return;
558
571
  if (isMobile) {
559
572
  setOpen(!open);
560
573
  } else {
@@ -568,13 +581,13 @@ function SidebarRoot({
568
581
  if (!isMobile || !open) return;
569
582
 
570
583
  const handleEscape = (e: KeyboardEvent) => {
571
- if (e.key === 'Escape') {
584
+ if (e.key === "Escape") {
572
585
  setOpen(false);
573
586
  }
574
587
  };
575
588
 
576
- document.addEventListener('keydown', handleEscape);
577
- return () => document.removeEventListener('keydown', handleEscape);
589
+ document.addEventListener("keydown", handleEscape);
590
+ return () => document.removeEventListener("keydown", handleEscape);
578
591
  }, [existingContext, isMobile, open, setOpen]);
579
592
 
580
593
  // Lock body scroll when mobile drawer is open (only if no provider)
@@ -583,13 +596,13 @@ function SidebarRoot({
583
596
  if (!isMobile) return;
584
597
 
585
598
  if (open) {
586
- document.body.style.overflow = 'hidden';
599
+ document.body.style.overflow = "hidden";
587
600
  } else {
588
- document.body.style.overflow = '';
601
+ document.body.style.overflow = "";
589
602
  }
590
603
 
591
604
  return () => {
592
- document.body.style.overflow = '';
605
+ document.body.style.overflow = "";
593
606
  };
594
607
  }, [existingContext, isMobile, open]);
595
608
 
@@ -611,7 +624,7 @@ function SidebarRoot({
611
624
  hasIcons,
612
625
  };
613
626
 
614
- const isCollapsedForStyle = resolvedCollapsible === 'icon' && collapsed;
627
+ const isCollapsedForStyle = resolvedCollapsible === "icon" && collapsed;
615
628
 
616
629
  const classes = [
617
630
  styles.root,
@@ -619,14 +632,16 @@ function SidebarRoot({
619
632
  !isMobile && isCollapsedForStyle && styles.collapsed,
620
633
  !isMobile && isCollapsedForStyle && shouldCollapseToZero && styles.collapsedNoIcons,
621
634
  isOffcanvasCollapsed && styles.offcanvasCollapsed,
622
- resolvedPosition === 'right' && styles.positionRight,
635
+ resolvedPosition === "right" && styles.positionRight,
623
636
  className,
624
- ].filter(Boolean).join(' ');
637
+ ]
638
+ .filter(Boolean)
639
+ .join(" ");
625
640
 
626
641
  const style: React.CSSProperties = {
627
- '--sidebar-width': resolvedWidth,
628
- '--sidebar-collapsed-width': resolvedCollapsedWidth,
629
- '--sidebar-effective-collapsed-width': effectiveCollapsedWidth,
642
+ "--sidebar-width": resolvedWidth,
643
+ "--sidebar-collapsed-width": resolvedCollapsedWidth,
644
+ "--sidebar-effective-collapsed-width": effectiveCollapsedWidth,
630
645
  ...styleProp,
631
646
  } as React.CSSProperties;
632
647
 
@@ -637,24 +652,24 @@ function SidebarRoot({
637
652
  {...htmlProps}
638
653
  className={classes}
639
654
  style={style}
640
- role={isMobile ? 'dialog' : undefined}
655
+ role={isMobile ? "dialog" : undefined}
641
656
  aria-modal={isMobile && open ? true : undefined}
642
657
  aria-hidden={isMobile && !open ? true : undefined}
643
- aria-label={isMobile ? (ariaLabel || 'Sidebar navigation') : ariaLabel}
644
- 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"}
645
661
  data-position={resolvedPosition}
646
662
  data-collapsible={resolvedCollapsible}
647
- data-icon-collapse={resolvedCollapsible === 'icon' ? (hasIcons ? 'icons' : 'none') : undefined}
663
+ data-active-indicator={activeIndicator}
664
+ data-icon-collapse={
665
+ resolvedCollapsible === "icon" ? (hasIcons ? "icons" : "none") : undefined
666
+ }
648
667
  >
649
668
  {children}
650
669
  </aside>
651
670
  );
652
671
 
653
- return (
654
- <SidebarContext.Provider value={contextValue}>
655
- {content}
656
- </SidebarContext.Provider>
657
- );
672
+ return <SidebarContext.Provider value={contextValue}>{content}</SidebarContext.Provider>;
658
673
  }
659
674
 
660
675
  function SidebarHeader({
@@ -665,21 +680,25 @@ function SidebarHeader({
665
680
  }: SidebarHeaderProps) {
666
681
  const { collapsed, isMobile } = useSidebarContext();
667
682
  const isCollapsed = collapsed && !isMobile;
668
- const classes = [styles.header, className].filter(Boolean).join(' ');
683
+ const classes = [styles.header, className].filter(Boolean).join(" ");
669
684
 
670
685
  // Show collapsed content when sidebar is collapsed (and we have it), otherwise show children
671
686
  const content = isCollapsed && collapsedContent ? collapsedContent : children;
672
687
 
673
- return <div {...htmlProps} className={classes}>{content}</div>;
688
+ return (
689
+ <div {...htmlProps} className={classes}>
690
+ {content}
691
+ </div>
692
+ );
674
693
  }
675
694
 
676
695
  function SidebarNav({
677
696
  children,
678
- 'aria-label': ariaLabel = 'Main navigation',
697
+ "aria-label": ariaLabel = "Main navigation",
679
698
  className,
680
699
  ...htmlProps
681
700
  }: SidebarNavProps) {
682
- const classes = [styles.nav, className].filter(Boolean).join(' ');
701
+ const classes = [styles.nav, className].filter(Boolean).join(" ");
683
702
  return (
684
703
  <nav {...htmlProps} className={classes} aria-label={ariaLabel}>
685
704
  <ScrollArea orientation="vertical" showFades className={styles.navScrollArea}>
@@ -700,10 +719,7 @@ function SidebarSection({
700
719
  }: SidebarSectionProps) {
701
720
  const { collapsed, isMobile } = useSidebarContext();
702
721
 
703
- const classes = [
704
- styles.section,
705
- className
706
- ].filter(Boolean).join(' ');
722
+ const classes = [styles.section, className].filter(Boolean).join(" ");
707
723
 
708
724
  const showLabel = label && (!collapsed || isMobile);
709
725
  const showAction = action && (!collapsed || isMobile);
@@ -719,9 +735,7 @@ function SidebarSection({
719
735
  {showAction && <div className={styles.sectionActionWrapper}>{action}</div>}
720
736
  </div>
721
737
  )}
722
- <ul className={styles.sectionList}>
723
- {children}
724
- </ul>
738
+ <ul className={styles.sectionList}>{children}</ul>
725
739
  </div>
726
740
  );
727
741
  }
@@ -731,18 +745,13 @@ function SidebarSection({
731
745
  <div {...htmlProps} className={classes} role="group" aria-label={label}>
732
746
  <Collapsible defaultOpen={defaultOpen} className={styles.sectionCollapsible}>
733
747
  <div className={styles.sectionHeader}>
734
- <Collapsible.Trigger
735
- className={styles.sectionTrigger}
736
- chevronPosition="end"
737
- >
748
+ <Collapsible.Trigger className={styles.sectionTrigger} chevronPosition="end">
738
749
  <span className={styles.sectionLabel}>{label}</span>
739
750
  </Collapsible.Trigger>
740
751
  {showAction && <div className={styles.sectionActionWrapper}>{action}</div>}
741
752
  </div>
742
753
  <Collapsible.Content className={styles.sectionContent}>
743
- <ul className={styles.sectionList}>
744
- {children}
745
- </ul>
754
+ <ul className={styles.sectionList}>{children}</ul>
746
755
  </Collapsible.Content>
747
756
  </Collapsible>
748
757
  </div>
@@ -752,11 +761,11 @@ function SidebarSection({
752
761
  function SidebarSectionAction({
753
762
  children,
754
763
  onClick,
755
- 'aria-label': ariaLabel,
764
+ "aria-label": ariaLabel,
756
765
  className,
757
766
  ...htmlProps
758
767
  }: SidebarSectionActionProps) {
759
- const classes = [styles.sectionAction, className].filter(Boolean).join(' ');
768
+ const classes = [styles.sectionAction, className].filter(Boolean).join(" ");
760
769
 
761
770
  return (
762
771
  <button
@@ -806,7 +815,9 @@ function SidebarItem({
806
815
  hasSubmenu && styles.itemHasSubmenu,
807
816
  expanded && styles.itemExpanded,
808
817
  className,
809
- ].filter(Boolean).join(' ');
818
+ ]
819
+ .filter(Boolean)
820
+ .join(" ");
810
821
 
811
822
  const handleClick = (e: React.MouseEvent<HTMLElement>) => {
812
823
  if (disabled) {
@@ -825,9 +836,9 @@ function SidebarItem({
825
836
  let labelText: string | undefined;
826
837
  if (asChild && React.isValidElement(children)) {
827
838
  const childProps = children.props as { children?: React.ReactNode };
828
- labelText = typeof childProps.children === 'string' ? childProps.children : undefined;
839
+ labelText = typeof childProps.children === "string" ? childProps.children : undefined;
829
840
  } else {
830
- labelText = typeof children === 'string' ? children : undefined;
841
+ labelText = typeof children === "string" ? children : undefined;
831
842
  }
832
843
 
833
844
  const itemContent = (
@@ -854,10 +865,10 @@ function SidebarItem({
854
865
  const itemProps = {
855
866
  className: classes,
856
867
  onClick: handleClick,
857
- 'aria-current': active ? 'page' as const : undefined,
858
- 'aria-disabled': disabled || undefined,
859
- 'aria-expanded': hasSubmenu ? expanded : undefined,
860
- '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,
861
872
  tabIndex: disabled ? -1 : 0,
862
873
  };
863
874
 
@@ -872,12 +883,11 @@ function SidebarItem({
872
883
  itemElement = React.cloneElement(children, {
873
884
  ...itemProps,
874
885
  ...rest,
875
- onClick: composeEventHandlers(
876
- childProps.onClick,
877
- (event: React.MouseEvent<HTMLElement>) => handleClick(event)
886
+ onClick: composeEventHandlers(childProps.onClick, (event: React.MouseEvent<HTMLElement>) =>
887
+ handleClick(event)
878
888
  ),
879
889
  // Merge classNames
880
- className: [classes, childProps.className].filter(Boolean).join(' '),
890
+ className: [classes, childProps.className].filter(Boolean).join(" "),
881
891
  children: itemContent,
882
892
  } as React.HTMLAttributes<HTMLElement>);
883
893
  } else if (href) {
@@ -903,10 +913,9 @@ function SidebarItem({
903
913
  itemElement
904
914
  );
905
915
 
906
- const wrapperClasses = [
907
- styles.itemWrapper,
908
- expanded && styles.itemExpanded,
909
- ].filter(Boolean).join(' ');
916
+ const wrapperClasses = [styles.itemWrapper, expanded && styles.itemExpanded]
917
+ .filter(Boolean)
918
+ .join(" ");
910
919
 
911
920
  return <li className={wrapperClasses}>{wrappedItem}</li>;
912
921
  }
@@ -932,7 +941,9 @@ function SidebarSubItem({
932
941
  active && styles.subItemActive,
933
942
  disabled && styles.subItemDisabled,
934
943
  className,
935
- ].filter(Boolean).join(' ');
944
+ ]
945
+ .filter(Boolean)
946
+ .join(" ");
936
947
 
937
948
  const handleClick = (e: React.MouseEvent<HTMLElement>) => {
938
949
  if (disabled) {
@@ -945,8 +956,8 @@ function SidebarSubItem({
945
956
  const itemProps = {
946
957
  className: classes,
947
958
  onClick: handleClick,
948
- 'aria-current': active ? 'page' as const : undefined,
949
- 'aria-disabled': disabled,
959
+ "aria-current": active ? ("page" as const) : undefined,
960
+ "aria-disabled": disabled,
950
961
  tabIndex: disabled ? -1 : 0,
951
962
  };
952
963
 
@@ -966,21 +977,23 @@ function SidebarSubItem({
966
977
  function SidebarSubmenu({ children }: { children: React.ReactNode }) {
967
978
  return (
968
979
  <li className={styles.submenuWrapper}>
969
- <ul className={styles.submenu}>
970
- {children}
971
- </ul>
980
+ <ul className={styles.submenu}>{children}</ul>
972
981
  </li>
973
982
  );
974
983
  }
975
984
 
976
985
  function SidebarFooter({ children, className, ...htmlProps }: SidebarFooterProps) {
977
- const classes = [styles.footer, className].filter(Boolean).join(' ');
978
- 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
+ );
979
992
  }
980
993
 
981
994
  function SidebarTrigger({
982
995
  children,
983
- 'aria-label': ariaLabel = 'Toggle navigation',
996
+ "aria-label": ariaLabel = "Toggle navigation",
984
997
  className,
985
998
  onClick,
986
999
  ...htmlProps
@@ -992,7 +1005,7 @@ function SidebarTrigger({
992
1005
  return null;
993
1006
  }
994
1007
 
995
- const classes = [styles.trigger, className].filter(Boolean).join(' ');
1008
+ const classes = [styles.trigger, className].filter(Boolean).join(" ");
996
1009
 
997
1010
  return (
998
1011
  <button
@@ -1017,7 +1030,7 @@ function SidebarOverlay({ className, onClick, ...htmlProps }: SidebarOverlayProp
1017
1030
  return null;
1018
1031
  }
1019
1032
 
1020
- const classes = [styles.overlay, className].filter(Boolean).join(' ');
1033
+ const classes = [styles.overlay, className].filter(Boolean).join(" ");
1021
1034
 
1022
1035
  return (
1023
1036
  <div
@@ -1025,13 +1038,13 @@ function SidebarOverlay({ className, onClick, ...htmlProps }: SidebarOverlayProp
1025
1038
  className={classes}
1026
1039
  onClick={composeEventHandlers(onClick, () => setOpen(false))}
1027
1040
  aria-hidden="true"
1028
- data-state={open ? 'open' : 'closed'}
1041
+ data-state={open ? "open" : "closed"}
1029
1042
  />
1030
1043
  );
1031
1044
  }
1032
1045
 
1033
1046
  function SidebarCollapseToggle({
1034
- 'aria-label': ariaLabel,
1047
+ "aria-label": ariaLabel,
1035
1048
  className,
1036
1049
  onClick,
1037
1050
  ...htmlProps
@@ -1039,20 +1052,16 @@ function SidebarCollapseToggle({
1039
1052
  const { collapsed, setCollapsed, isMobile, collapsible, hasIcons } = useSidebarContext();
1040
1053
 
1041
1054
  // Don't show on mobile or when collapsing is disabled
1042
- if (isMobile || collapsible === 'none') {
1055
+ if (isMobile || collapsible === "none") {
1043
1056
  return null;
1044
1057
  }
1045
1058
 
1046
- const shouldFloat = collapsed && (
1047
- (collapsible === 'icon' && !hasIcons) ||
1048
- collapsible === 'offcanvas'
1049
- );
1050
- const classes = [
1051
- styles.collapseToggle,
1052
- shouldFloat && styles.collapseToggleFloating,
1053
- className,
1054
- ].filter(Boolean).join(' ');
1055
- 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");
1056
1065
 
1057
1066
  return (
1058
1067
  <button
@@ -1071,21 +1080,19 @@ function SidebarRail({
1071
1080
  className,
1072
1081
  onClick,
1073
1082
  title,
1074
- 'aria-label': ariaLabel,
1083
+ "aria-label": ariaLabel,
1075
1084
  ...htmlProps
1076
1085
  }: SidebarRailProps) {
1077
1086
  const { collapsed, setCollapsed, isMobile, collapsible } = useSidebarContext();
1078
1087
 
1079
1088
  // Don't show on mobile or when collapsing is disabled
1080
- if (isMobile || collapsible === 'none') {
1089
+ if (isMobile || collapsible === "none") {
1081
1090
  return null;
1082
1091
  }
1083
1092
 
1084
- const classes = [
1085
- styles.rail,
1086
- collapsed && styles.railCollapsed,
1087
- className,
1088
- ].filter(Boolean).join(' ');
1093
+ const classes = [styles.rail, collapsed && styles.railCollapsed, className]
1094
+ .filter(Boolean)
1095
+ .join(" ");
1089
1096
 
1090
1097
  return (
1091
1098
  <button
@@ -1093,8 +1100,8 @@ function SidebarRail({
1093
1100
  type="button"
1094
1101
  className={classes}
1095
1102
  onClick={composeEventHandlers(onClick, () => setCollapsed(!collapsed))}
1096
- aria-label={ariaLabel ?? (collapsed ? 'Expand sidebar' : 'Collapse sidebar')}
1097
- title={title ?? (collapsed ? 'Expand sidebar' : 'Collapse sidebar')}
1103
+ aria-label={ariaLabel ?? (collapsed ? "Expand sidebar" : "Collapse sidebar")}
1104
+ title={title ?? (collapsed ? "Expand sidebar" : "Collapse sidebar")}
1098
1105
  />
1099
1106
  );
1100
1107
  }
@@ -1108,8 +1115,8 @@ function SidebarMenuSkeleton({
1108
1115
  const { collapsed, isMobile } = useSidebarContext();
1109
1116
  const isCollapsed = collapsed && !isMobile;
1110
1117
 
1111
- const classes = [styles.menuSkeleton, className].filter(Boolean).join(' ');
1112
- 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%"];
1113
1120
 
1114
1121
  return (
1115
1122
  <div {...htmlProps} className={classes} aria-hidden="true">