@kushagradhawan/kookie-ui 0.1.17 → 0.1.18

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 (276) hide show
  1. package/components.css +3730 -1072
  2. package/dist/cjs/components/_internal/base-button.d.ts.map +1 -1
  3. package/dist/cjs/components/_internal/base-button.js +1 -1
  4. package/dist/cjs/components/_internal/base-button.js.map +3 -3
  5. package/dist/cjs/components/_internal/base-button.props.d.ts +9 -0
  6. package/dist/cjs/components/_internal/base-button.props.d.ts.map +1 -1
  7. package/dist/cjs/components/_internal/base-button.props.js +1 -1
  8. package/dist/cjs/components/_internal/base-button.props.js.map +3 -3
  9. package/dist/cjs/components/_internal/base-menu.props.d.ts +5 -0
  10. package/dist/cjs/components/_internal/base-menu.props.d.ts.map +1 -1
  11. package/dist/cjs/components/_internal/base-menu.props.js +1 -1
  12. package/dist/cjs/components/_internal/base-menu.props.js.map +3 -3
  13. package/dist/cjs/components/_internal/base-tab-list.props.d.ts +5 -0
  14. package/dist/cjs/components/_internal/base-tab-list.props.d.ts.map +1 -1
  15. package/dist/cjs/components/_internal/base-tab-list.props.js +1 -1
  16. package/dist/cjs/components/_internal/base-tab-list.props.js.map +3 -3
  17. package/dist/cjs/components/alert-dialog.d.ts.map +1 -1
  18. package/dist/cjs/components/alert-dialog.js +1 -1
  19. package/dist/cjs/components/alert-dialog.js.map +3 -3
  20. package/dist/cjs/components/avatar.d.ts.map +1 -1
  21. package/dist/cjs/components/avatar.js +1 -1
  22. package/dist/cjs/components/avatar.js.map +3 -3
  23. package/dist/cjs/components/avatar.props.d.ts +6 -1
  24. package/dist/cjs/components/avatar.props.d.ts.map +1 -1
  25. package/dist/cjs/components/avatar.props.js +1 -1
  26. package/dist/cjs/components/avatar.props.js.map +3 -3
  27. package/dist/cjs/components/badge.d.ts.map +1 -1
  28. package/dist/cjs/components/badge.js +1 -1
  29. package/dist/cjs/components/badge.js.map +3 -3
  30. package/dist/cjs/components/badge.props.d.ts +6 -1
  31. package/dist/cjs/components/badge.props.d.ts.map +1 -1
  32. package/dist/cjs/components/badge.props.js +1 -1
  33. package/dist/cjs/components/badge.props.js.map +2 -2
  34. package/dist/cjs/components/callout.d.ts.map +1 -1
  35. package/dist/cjs/components/callout.js +1 -1
  36. package/dist/cjs/components/callout.js.map +3 -3
  37. package/dist/cjs/components/callout.props.d.ts +5 -0
  38. package/dist/cjs/components/callout.props.d.ts.map +1 -1
  39. package/dist/cjs/components/callout.props.js +1 -1
  40. package/dist/cjs/components/callout.props.js.map +3 -3
  41. package/dist/cjs/components/card.d.ts.map +1 -1
  42. package/dist/cjs/components/card.js +1 -1
  43. package/dist/cjs/components/card.js.map +3 -3
  44. package/dist/cjs/components/card.props.d.ts +11 -2
  45. package/dist/cjs/components/card.props.d.ts.map +1 -1
  46. package/dist/cjs/components/card.props.js +1 -1
  47. package/dist/cjs/components/card.props.js.map +3 -3
  48. package/dist/cjs/components/context-menu.d.ts.map +1 -1
  49. package/dist/cjs/components/context-menu.js +1 -1
  50. package/dist/cjs/components/context-menu.js.map +3 -3
  51. package/dist/cjs/components/dialog.d.ts.map +1 -1
  52. package/dist/cjs/components/dialog.js +1 -1
  53. package/dist/cjs/components/dialog.js.map +3 -3
  54. package/dist/cjs/components/dialog.props.d.ts +5 -0
  55. package/dist/cjs/components/dialog.props.d.ts.map +1 -1
  56. package/dist/cjs/components/dialog.props.js +1 -1
  57. package/dist/cjs/components/dialog.props.js.map +3 -3
  58. package/dist/cjs/components/dropdown-menu.d.ts.map +1 -1
  59. package/dist/cjs/components/dropdown-menu.js +1 -1
  60. package/dist/cjs/components/dropdown-menu.js.map +3 -3
  61. package/dist/cjs/components/image.d.ts +6 -1
  62. package/dist/cjs/components/image.d.ts.map +1 -1
  63. package/dist/cjs/components/image.js +1 -1
  64. package/dist/cjs/components/image.js.map +3 -3
  65. package/dist/cjs/components/popover.d.ts.map +1 -1
  66. package/dist/cjs/components/popover.js +1 -1
  67. package/dist/cjs/components/popover.js.map +3 -3
  68. package/dist/cjs/components/popover.props.d.ts +5 -0
  69. package/dist/cjs/components/popover.props.d.ts.map +1 -1
  70. package/dist/cjs/components/popover.props.js +1 -1
  71. package/dist/cjs/components/popover.props.js.map +3 -3
  72. package/dist/cjs/components/select.d.ts.map +1 -1
  73. package/dist/cjs/components/select.js +1 -1
  74. package/dist/cjs/components/select.js.map +3 -3
  75. package/dist/cjs/components/select.props.d.ts +6 -1
  76. package/dist/cjs/components/select.props.d.ts.map +1 -1
  77. package/dist/cjs/components/select.props.js +1 -1
  78. package/dist/cjs/components/select.props.js.map +2 -2
  79. package/dist/cjs/components/sidebar.d.ts +13 -2
  80. package/dist/cjs/components/sidebar.d.ts.map +1 -1
  81. package/dist/cjs/components/sidebar.js +1 -1
  82. package/dist/cjs/components/sidebar.js.map +3 -3
  83. package/dist/cjs/components/sidebar.props.d.ts +5 -0
  84. package/dist/cjs/components/sidebar.props.d.ts.map +1 -1
  85. package/dist/cjs/components/sidebar.props.js +1 -1
  86. package/dist/cjs/components/sidebar.props.js.map +2 -2
  87. package/dist/cjs/components/tabs.d.ts.map +1 -1
  88. package/dist/cjs/components/tabs.js +1 -1
  89. package/dist/cjs/components/tabs.js.map +3 -3
  90. package/dist/cjs/components/text-area.d.ts.map +1 -1
  91. package/dist/cjs/components/text-area.js +1 -1
  92. package/dist/cjs/components/text-area.js.map +3 -3
  93. package/dist/cjs/components/text-area.props.d.ts +6 -1
  94. package/dist/cjs/components/text-area.props.d.ts.map +1 -1
  95. package/dist/cjs/components/text-area.props.js +1 -1
  96. package/dist/cjs/components/text-area.props.js.map +3 -3
  97. package/dist/cjs/components/text-field.d.ts.map +1 -1
  98. package/dist/cjs/components/text-field.js +2 -2
  99. package/dist/cjs/components/text-field.js.map +3 -3
  100. package/dist/cjs/components/text-field.props.d.ts +6 -1
  101. package/dist/cjs/components/text-field.props.d.ts.map +1 -1
  102. package/dist/cjs/components/text-field.props.js +1 -1
  103. package/dist/cjs/components/text-field.props.js.map +3 -3
  104. package/dist/cjs/components/theme.d.ts.map +1 -1
  105. package/dist/cjs/components/theme.js +1 -1
  106. package/dist/cjs/components/theme.js.map +2 -2
  107. package/dist/cjs/helpers/map-prop-values.js +1 -1
  108. package/dist/cjs/helpers/map-prop-values.js.map +2 -2
  109. package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
  110. package/dist/esm/components/_internal/base-button.js +1 -1
  111. package/dist/esm/components/_internal/base-button.js.map +3 -3
  112. package/dist/esm/components/_internal/base-button.props.d.ts +9 -0
  113. package/dist/esm/components/_internal/base-button.props.d.ts.map +1 -1
  114. package/dist/esm/components/_internal/base-button.props.js +1 -1
  115. package/dist/esm/components/_internal/base-button.props.js.map +3 -3
  116. package/dist/esm/components/_internal/base-menu.props.d.ts +5 -0
  117. package/dist/esm/components/_internal/base-menu.props.d.ts.map +1 -1
  118. package/dist/esm/components/_internal/base-menu.props.js +1 -1
  119. package/dist/esm/components/_internal/base-menu.props.js.map +3 -3
  120. package/dist/esm/components/_internal/base-tab-list.props.d.ts +5 -0
  121. package/dist/esm/components/_internal/base-tab-list.props.d.ts.map +1 -1
  122. package/dist/esm/components/_internal/base-tab-list.props.js +1 -1
  123. package/dist/esm/components/_internal/base-tab-list.props.js.map +3 -3
  124. package/dist/esm/components/alert-dialog.d.ts.map +1 -1
  125. package/dist/esm/components/alert-dialog.js +1 -1
  126. package/dist/esm/components/alert-dialog.js.map +3 -3
  127. package/dist/esm/components/avatar.d.ts.map +1 -1
  128. package/dist/esm/components/avatar.js +1 -1
  129. package/dist/esm/components/avatar.js.map +3 -3
  130. package/dist/esm/components/avatar.props.d.ts +6 -1
  131. package/dist/esm/components/avatar.props.d.ts.map +1 -1
  132. package/dist/esm/components/avatar.props.js +1 -1
  133. package/dist/esm/components/avatar.props.js.map +3 -3
  134. package/dist/esm/components/badge.d.ts.map +1 -1
  135. package/dist/esm/components/badge.js +1 -1
  136. package/dist/esm/components/badge.js.map +3 -3
  137. package/dist/esm/components/badge.props.d.ts +6 -1
  138. package/dist/esm/components/badge.props.d.ts.map +1 -1
  139. package/dist/esm/components/badge.props.js +1 -1
  140. package/dist/esm/components/badge.props.js.map +2 -2
  141. package/dist/esm/components/callout.d.ts.map +1 -1
  142. package/dist/esm/components/callout.js +1 -1
  143. package/dist/esm/components/callout.js.map +3 -3
  144. package/dist/esm/components/callout.props.d.ts +5 -0
  145. package/dist/esm/components/callout.props.d.ts.map +1 -1
  146. package/dist/esm/components/callout.props.js +1 -1
  147. package/dist/esm/components/callout.props.js.map +3 -3
  148. package/dist/esm/components/card.d.ts.map +1 -1
  149. package/dist/esm/components/card.js +1 -1
  150. package/dist/esm/components/card.js.map +3 -3
  151. package/dist/esm/components/card.props.d.ts +11 -2
  152. package/dist/esm/components/card.props.d.ts.map +1 -1
  153. package/dist/esm/components/card.props.js +1 -1
  154. package/dist/esm/components/card.props.js.map +3 -3
  155. package/dist/esm/components/context-menu.d.ts.map +1 -1
  156. package/dist/esm/components/context-menu.js +1 -1
  157. package/dist/esm/components/context-menu.js.map +3 -3
  158. package/dist/esm/components/dialog.d.ts.map +1 -1
  159. package/dist/esm/components/dialog.js +1 -1
  160. package/dist/esm/components/dialog.js.map +3 -3
  161. package/dist/esm/components/dialog.props.d.ts +5 -0
  162. package/dist/esm/components/dialog.props.d.ts.map +1 -1
  163. package/dist/esm/components/dialog.props.js +1 -1
  164. package/dist/esm/components/dialog.props.js.map +3 -3
  165. package/dist/esm/components/dropdown-menu.d.ts.map +1 -1
  166. package/dist/esm/components/dropdown-menu.js +1 -1
  167. package/dist/esm/components/dropdown-menu.js.map +3 -3
  168. package/dist/esm/components/image.d.ts +6 -1
  169. package/dist/esm/components/image.d.ts.map +1 -1
  170. package/dist/esm/components/image.js +1 -1
  171. package/dist/esm/components/image.js.map +3 -3
  172. package/dist/esm/components/popover.d.ts.map +1 -1
  173. package/dist/esm/components/popover.js +1 -1
  174. package/dist/esm/components/popover.js.map +3 -3
  175. package/dist/esm/components/popover.props.d.ts +5 -0
  176. package/dist/esm/components/popover.props.d.ts.map +1 -1
  177. package/dist/esm/components/popover.props.js +1 -1
  178. package/dist/esm/components/popover.props.js.map +3 -3
  179. package/dist/esm/components/select.d.ts.map +1 -1
  180. package/dist/esm/components/select.js +1 -1
  181. package/dist/esm/components/select.js.map +3 -3
  182. package/dist/esm/components/select.props.d.ts +6 -1
  183. package/dist/esm/components/select.props.d.ts.map +1 -1
  184. package/dist/esm/components/select.props.js +1 -1
  185. package/dist/esm/components/select.props.js.map +2 -2
  186. package/dist/esm/components/sidebar.d.ts +13 -2
  187. package/dist/esm/components/sidebar.d.ts.map +1 -1
  188. package/dist/esm/components/sidebar.js +1 -1
  189. package/dist/esm/components/sidebar.js.map +3 -3
  190. package/dist/esm/components/sidebar.props.d.ts +5 -0
  191. package/dist/esm/components/sidebar.props.d.ts.map +1 -1
  192. package/dist/esm/components/sidebar.props.js +1 -1
  193. package/dist/esm/components/sidebar.props.js.map +2 -2
  194. package/dist/esm/components/tabs.d.ts.map +1 -1
  195. package/dist/esm/components/tabs.js +1 -1
  196. package/dist/esm/components/tabs.js.map +3 -3
  197. package/dist/esm/components/text-area.d.ts.map +1 -1
  198. package/dist/esm/components/text-area.js +1 -1
  199. package/dist/esm/components/text-area.js.map +3 -3
  200. package/dist/esm/components/text-area.props.d.ts +6 -1
  201. package/dist/esm/components/text-area.props.d.ts.map +1 -1
  202. package/dist/esm/components/text-area.props.js +1 -1
  203. package/dist/esm/components/text-area.props.js.map +3 -3
  204. package/dist/esm/components/text-field.d.ts.map +1 -1
  205. package/dist/esm/components/text-field.js +2 -2
  206. package/dist/esm/components/text-field.js.map +3 -3
  207. package/dist/esm/components/text-field.props.d.ts +6 -1
  208. package/dist/esm/components/text-field.props.d.ts.map +1 -1
  209. package/dist/esm/components/text-field.props.js +1 -1
  210. package/dist/esm/components/text-field.props.js.map +3 -3
  211. package/dist/esm/components/theme.d.ts.map +1 -1
  212. package/dist/esm/components/theme.js +1 -1
  213. package/dist/esm/components/theme.js.map +2 -2
  214. package/dist/esm/helpers/map-prop-values.js +1 -1
  215. package/dist/esm/helpers/map-prop-values.js.map +2 -2
  216. package/package.json +1 -1
  217. package/src/components/_internal/base-button.css +518 -110
  218. package/src/components/_internal/base-button.props.ts +5 -0
  219. package/src/components/_internal/base-button.tsx +4 -0
  220. package/src/components/_internal/base-card.css +59 -11
  221. package/src/components/_internal/base-dialog.css +26 -9
  222. package/src/components/_internal/base-menu.css +192 -21
  223. package/src/components/_internal/base-menu.props.ts +7 -0
  224. package/src/components/_internal/base-tab-list.css +56 -5
  225. package/src/components/_internal/base-tab-list.props.ts +3 -0
  226. package/src/components/alert-dialog.tsx +22 -7
  227. package/src/components/animations.css +31 -0
  228. package/src/components/avatar.css +436 -9
  229. package/src/components/avatar.props.tsx +4 -1
  230. package/src/components/avatar.tsx +19 -6
  231. package/src/components/badge.css +222 -7
  232. package/src/components/badge.props.tsx +3 -1
  233. package/src/components/badge.tsx +3 -2
  234. package/src/components/button.css +17 -17
  235. package/src/components/callout.css +75 -6
  236. package/src/components/callout.props.tsx +3 -0
  237. package/src/components/callout.tsx +6 -5
  238. package/src/components/card.css +361 -44
  239. package/src/components/card.props.tsx +7 -2
  240. package/src/components/card.tsx +7 -1
  241. package/src/components/context-menu.tsx +47 -22
  242. package/src/components/dialog.props.tsx +3 -0
  243. package/src/components/dialog.tsx +22 -7
  244. package/src/components/dropdown-menu.css +10 -10
  245. package/src/components/dropdown-menu.tsx +37 -11
  246. package/src/components/icon-button.css +36 -8
  247. package/src/components/image.tsx +92 -73
  248. package/src/components/kbd.css +122 -54
  249. package/src/components/popover.css +22 -3
  250. package/src/components/popover.props.tsx +3 -0
  251. package/src/components/popover.tsx +15 -8
  252. package/src/components/select.css +386 -95
  253. package/src/components/select.props.tsx +7 -1
  254. package/src/components/select.tsx +21 -13
  255. package/src/components/sidebar.css +201 -86
  256. package/src/components/sidebar.props.tsx +15 -3
  257. package/src/components/sidebar.tsx +306 -235
  258. package/src/components/tabs.css +3 -1
  259. package/src/components/tabs.tsx +8 -3
  260. package/src/components/text-area.css +323 -32
  261. package/src/components/text-area.props.tsx +4 -1
  262. package/src/components/text-area.tsx +3 -2
  263. package/src/components/text-field.css +336 -15
  264. package/src/components/text-field.props.tsx +4 -1
  265. package/src/components/text-field.tsx +5 -7
  266. package/src/components/theme.tsx +11 -9
  267. package/src/helpers/map-prop-values.ts +1 -1
  268. package/src/styles/tokens/color.css +19 -5
  269. package/src/styles/tokens/constants.css +118 -0
  270. package/src/styles/tokens/index.css +1 -0
  271. package/src/styles/tokens/radius.css +9 -6
  272. package/src/styles/tokens/shadow.css +10 -10
  273. package/src/styles/tokens/transition.css +33 -1
  274. package/styles.css +3846 -1089
  275. package/tokens/base.css +51 -22
  276. package/tokens.css +133 -34
@@ -8,13 +8,26 @@ import { Accordion } from 'radix-ui';
8
8
  import { sidebarPropDefs } from './sidebar.props';
9
9
  import { Theme, useThemeContext } from './theme';
10
10
  import { IconButton } from './icon-button';
11
- import { ScrollArea } from './scroll-area';
12
- import { Separator } from './separator';
13
- import { ChevronDownIcon, ThickChevronRightIcon } from './icons';
14
- import { extractProps } from '../helpers/extract-props';
11
+ import { ScrollArea } from './scroll-area.js';
12
+ import { Separator } from './separator.js';
13
+ import { ChevronDownIcon, ThickChevronRightIcon } from './icons.js';
14
+ import { extractProps } from '../helpers/extract-props.js';
15
+ import { Kbd } from './kbd.js';
16
+ import { Badge } from './badge.js';
15
17
 
16
18
  import type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props';
17
19
  import type { GetPropDefTypes } from '../props/prop-def';
20
+ import type { BadgeProps } from './badge.js';
21
+
22
+ // Badge configuration type for sidebar menu buttons
23
+ type BadgeConfig = {
24
+ content: React.ReactNode;
25
+ variant?: BadgeProps['variant'];
26
+ size?: BadgeProps['size'];
27
+ color?: BadgeProps['color'];
28
+ highContrast?: BadgeProps['highContrast'];
29
+ radius?: BadgeProps['radius'];
30
+ };
18
31
 
19
32
  // Sidebar context for state management
20
33
  type SidebarContextProps = {
@@ -46,17 +59,17 @@ function useSidebar() {
46
59
  // Hook to detect mobile (simplified version)
47
60
  function useIsMobile() {
48
61
  const [isMobile, setIsMobile] = React.useState(false);
49
-
62
+
50
63
  React.useEffect(() => {
51
64
  const checkIsMobile = () => {
52
65
  setIsMobile(window.innerWidth < 768);
53
66
  };
54
-
67
+
55
68
  checkIsMobile();
56
69
  window.addEventListener('resize', checkIsMobile);
57
70
  return () => window.removeEventListener('resize', checkIsMobile);
58
71
  }, []);
59
-
72
+
60
73
  return isMobile;
61
74
  }
62
75
 
@@ -69,24 +82,38 @@ interface SidebarProviderProps extends React.ComponentPropsWithoutRef<'div'> {
69
82
  }
70
83
 
71
84
  const SidebarProvider = React.forwardRef<HTMLDivElement, SidebarProviderProps>(
72
- ({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, side = 'left', className, children, ...props }, forwardedRef) => {
85
+ (
86
+ {
87
+ defaultOpen = true,
88
+ open: openProp,
89
+ onOpenChange: setOpenProp,
90
+ side = 'left',
91
+ className,
92
+ children,
93
+ ...props
94
+ },
95
+ forwardedRef,
96
+ ) => {
73
97
  const isMobile = useIsMobile();
74
98
  const [openMobile, setOpenMobile] = React.useState(false);
75
-
99
+
76
100
  // Internal state for uncontrolled mode
77
101
  const [internalOpen, setInternalOpen] = React.useState(defaultOpen);
78
-
102
+
79
103
  // Use controlled state if provided, otherwise internal state
80
104
  const open = openProp ?? internalOpen;
81
-
82
- const setOpen = React.useCallback((value: boolean | ((value: boolean) => boolean)) => {
83
- const openState = typeof value === 'function' ? value(open) : value;
84
- if (setOpenProp) {
85
- setOpenProp(openState);
86
- } else {
87
- setInternalOpen(openState);
88
- }
89
- }, [setOpenProp, open]);
105
+
106
+ const setOpen = React.useCallback(
107
+ (value: boolean | ((value: boolean) => boolean)) => {
108
+ const openState = typeof value === 'function' ? value(open) : value;
109
+ if (setOpenProp) {
110
+ setOpenProp(openState);
111
+ } else {
112
+ setInternalOpen(openState);
113
+ }
114
+ },
115
+ [setOpenProp, open],
116
+ );
90
117
 
91
118
  // Helper to toggle the sidebar
92
119
  const toggleSidebar = React.useCallback(() => {
@@ -95,7 +122,7 @@ const SidebarProvider = React.forwardRef<HTMLDivElement, SidebarProviderProps>(
95
122
 
96
123
  // State for data attributes
97
124
  const state = open ? 'expanded' : 'collapsed';
98
-
125
+
99
126
  const contextValue = React.useMemo<Partial<SidebarContextProps>>(
100
127
  () => ({
101
128
  state,
@@ -107,7 +134,7 @@ const SidebarProvider = React.forwardRef<HTMLDivElement, SidebarProviderProps>(
107
134
  toggleSidebar,
108
135
  side,
109
136
  }),
110
- [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar, side]
137
+ [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar, side],
111
138
  );
112
139
 
113
140
  return (
@@ -123,7 +150,7 @@ const SidebarProvider = React.forwardRef<HTMLDivElement, SidebarProviderProps>(
123
150
  </SidebarContext.Provider>
124
151
  </div>
125
152
  );
126
- }
153
+ },
127
154
  );
128
155
  SidebarProvider.displayName = 'Sidebar.Provider';
129
156
 
@@ -131,91 +158,40 @@ SidebarProvider.displayName = 'Sidebar.Provider';
131
158
  type SidebarOwnProps = GetPropDefTypes<typeof sidebarPropDefs>;
132
159
  interface SidebarProps extends ComponentPropsWithout<'div', RemovedProps>, SidebarOwnProps {}
133
160
 
134
- const Sidebar = React.forwardRef<HTMLDivElement, SidebarProps>(
135
- (props, forwardedRef) => {
136
- const themeContext = useThemeContext();
137
- const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
138
-
139
- const {
140
- size = sidebarPropDefs.size.default,
141
- variant = sidebarPropDefs.variant.default,
142
- menuVariant = sidebarPropDefs.menuVariant.default,
143
- type = sidebarPropDefs.type.default,
144
- side = sidebarPropDefs.side.default,
145
- collapsible = sidebarPropDefs.collapsible.default,
146
- color,
147
- highContrast = sidebarPropDefs.highContrast.default,
148
- asChild,
149
- } = props;
150
-
151
- const { className, children, ...rootProps } = extractProps(props, sidebarPropDefs);
152
- const { asChild: _, ...safeRootProps } = rootProps; // Remove asChild from DOM props
153
- const resolvedColor = color || themeContext.accentColor;
154
-
155
- // Update context with current props - we'll pass the resolved values
156
- const resolvedSize = typeof size === 'object' ? size.initial || '2' : size;
157
- const context = React.useContext(SidebarContext);
158
- if (context) {
159
- context.side = side;
160
- context.type = type;
161
- context.variant = variant;
162
- context.menuVariant = menuVariant;
163
- context.collapsible = collapsible;
164
- context.size = resolvedSize;
165
- }
166
-
167
- if (collapsible === 'none') {
168
- return (
169
- <div
170
- {...safeRootProps}
171
- ref={forwardedRef}
172
- data-accent-color={resolvedColor}
173
- data-state={state}
174
- data-side={side}
175
- data-type={type}
176
- data-collapsible={collapsible}
177
- className={classNames('rt-SidebarRoot', `rt-r-size-${size}`, className)}
178
- >
179
- <Theme>
180
- <div
181
- className={classNames('rt-SidebarContainer', `rt-variant-${variant}`)}
182
- data-accent-color={resolvedColor}
183
- data-high-contrast={highContrast || undefined}
184
- data-side={side}
185
- >
186
- {children}
187
- </div>
188
- </Theme>
189
- </div>
190
- );
191
- }
192
-
193
- if (isMobile) {
194
- return (
195
- <div
196
- {...safeRootProps}
197
- ref={forwardedRef}
198
- data-accent-color={resolvedColor}
199
- data-state={openMobile ? 'open' : 'closed'}
200
- data-side={side}
201
- data-type={type}
202
- data-collapsible={collapsible}
203
- className={classNames('rt-SidebarRoot', 'rt-SidebarRoot--mobile', className)}
204
- >
205
- <Theme>
206
- <div
207
- className={classNames('rt-SidebarContainer', `rt-variant-${variant}`, `rt-r-size-${size}`)}
208
- data-accent-color={resolvedColor}
209
- data-high-contrast={highContrast || undefined}
210
- data-side={side}
211
- >
212
- {children}
213
- </div>
214
- </Theme>
215
- </div>
216
- );
217
- }
161
+ const Sidebar = React.forwardRef<HTMLDivElement, SidebarProps>((props, forwardedRef) => {
162
+ const themeContext = useThemeContext();
163
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
164
+
165
+ const {
166
+ size = sidebarPropDefs.size.default,
167
+ variant = sidebarPropDefs.variant.default,
168
+ menuVariant = sidebarPropDefs.menuVariant.default,
169
+ type = sidebarPropDefs.type.default,
170
+ side = sidebarPropDefs.side.default,
171
+ collapsible = sidebarPropDefs.collapsible.default,
172
+ panelBackground,
173
+ color,
174
+ highContrast = sidebarPropDefs.highContrast.default,
175
+ asChild,
176
+ } = props;
177
+
178
+ const { className, children, ...rootProps } = extractProps(props, sidebarPropDefs);
179
+ const { asChild: _, panelBackground: __, ...safeRootProps } = rootProps; // Remove asChild and panelBackground from DOM props
180
+ const resolvedColor = color || themeContext.accentColor;
181
+
182
+ // Update context with current props - we'll pass the resolved values
183
+ const resolvedSize = typeof size === 'object' ? size.initial || '2' : size;
184
+ const context = React.useContext(SidebarContext);
185
+ if (context) {
186
+ context.side = side;
187
+ context.type = type;
188
+ context.variant = variant;
189
+ context.menuVariant = menuVariant;
190
+ context.collapsible = collapsible;
191
+ context.size = resolvedSize;
192
+ }
218
193
 
194
+ if (collapsible === 'none') {
219
195
  return (
220
196
  <div
221
197
  {...safeRootProps}
@@ -225,14 +201,15 @@ const Sidebar = React.forwardRef<HTMLDivElement, SidebarProps>(
225
201
  data-side={side}
226
202
  data-type={type}
227
203
  data-collapsible={collapsible}
228
- className={classNames('rt-SidebarRoot', className)}
204
+ className={classNames('rt-SidebarRoot', `rt-r-size-${size}`, className)}
229
205
  >
230
206
  <Theme>
231
- <div
232
- className={classNames('rt-SidebarContainer', `rt-variant-${variant}`, `rt-r-size-${size}`)}
207
+ <div
208
+ className={classNames('rt-SidebarContainer', `rt-variant-${variant}`)}
233
209
  data-accent-color={resolvedColor}
234
210
  data-high-contrast={highContrast || undefined}
235
211
  data-side={side}
212
+ data-panel-background={panelBackground}
236
213
  >
237
214
  {children}
238
215
  </div>
@@ -240,7 +217,67 @@ const Sidebar = React.forwardRef<HTMLDivElement, SidebarProps>(
240
217
  </div>
241
218
  );
242
219
  }
243
- );
220
+
221
+ if (isMobile) {
222
+ return (
223
+ <div
224
+ {...safeRootProps}
225
+ ref={forwardedRef}
226
+ data-accent-color={resolvedColor}
227
+ data-state={openMobile ? 'open' : 'closed'}
228
+ data-side={side}
229
+ data-type={type}
230
+ data-collapsible={collapsible}
231
+ className={classNames('rt-SidebarRoot', 'rt-SidebarRoot--mobile', className)}
232
+ >
233
+ <Theme>
234
+ <div
235
+ className={classNames(
236
+ 'rt-SidebarContainer',
237
+ `rt-variant-${variant}`,
238
+ `rt-r-size-${size}`,
239
+ )}
240
+ data-accent-color={resolvedColor}
241
+ data-high-contrast={highContrast || undefined}
242
+ data-side={side}
243
+ data-panel-background={panelBackground}
244
+ >
245
+ {children}
246
+ </div>
247
+ </Theme>
248
+ </div>
249
+ );
250
+ }
251
+
252
+ return (
253
+ <div
254
+ {...safeRootProps}
255
+ ref={forwardedRef}
256
+ data-accent-color={resolvedColor}
257
+ data-state={state}
258
+ data-side={side}
259
+ data-type={type}
260
+ data-collapsible={collapsible}
261
+ className={classNames('rt-SidebarRoot', className)}
262
+ >
263
+ <Theme>
264
+ <div
265
+ className={classNames(
266
+ 'rt-SidebarContainer',
267
+ `rt-variant-${variant}`,
268
+ `rt-r-size-${size}`,
269
+ )}
270
+ data-accent-color={resolvedColor}
271
+ data-high-contrast={highContrast || undefined}
272
+ data-side={side}
273
+ data-panel-background={panelBackground}
274
+ >
275
+ {children}
276
+ </div>
277
+ </Theme>
278
+ </div>
279
+ );
280
+ });
244
281
  Sidebar.displayName = 'Sidebar.Root';
245
282
 
246
283
  // Sidebar content area
@@ -250,24 +287,24 @@ const SidebarContent = React.forwardRef<HTMLDivElement, SidebarContentProps>(
250
287
  ({ className, children, ...props }, forwardedRef) => {
251
288
  const context = React.useContext(SidebarContext);
252
289
  const { size = '2', menuVariant = 'soft' } = context || {};
253
-
290
+
254
291
  return (
255
292
  <ScrollArea type="auto">
256
293
  <div
257
294
  {...props}
258
295
  ref={forwardedRef}
259
296
  className={classNames(
260
- 'rt-SidebarContent',
297
+ 'rt-SidebarContent',
261
298
  `rt-r-size-${size}`,
262
299
  `rt-menu-variant-${menuVariant}`,
263
- className
300
+ className,
264
301
  )}
265
302
  >
266
303
  {children}
267
304
  </div>
268
305
  </ScrollArea>
269
306
  );
270
- }
307
+ },
271
308
  );
272
309
  SidebarContent.displayName = 'Sidebar.Content';
273
310
 
@@ -284,7 +321,7 @@ const SidebarHeader = React.forwardRef<HTMLDivElement, SidebarHeaderProps>(
284
321
  ({ className, asContainer = true, ...props }, forwardedRef) => {
285
322
  const context = React.useContext(SidebarContext);
286
323
  const { size = '2', menuVariant = 'soft' } = context || {};
287
-
324
+
288
325
  return (
289
326
  <div
290
327
  {...props}
@@ -296,11 +333,11 @@ const SidebarHeader = React.forwardRef<HTMLDivElement, SidebarHeaderProps>(
296
333
  {
297
334
  'rt-SidebarHeader--container': asContainer,
298
335
  },
299
- className
336
+ className,
300
337
  )}
301
338
  />
302
339
  );
303
- }
340
+ },
304
341
  );
305
342
  SidebarHeader.displayName = 'Sidebar.Header';
306
343
 
@@ -317,7 +354,7 @@ const SidebarFooter = React.forwardRef<HTMLDivElement, SidebarFooterProps>(
317
354
  ({ className, asContainer = true, ...props }, forwardedRef) => {
318
355
  const context = React.useContext(SidebarContext);
319
356
  const { size = '2', menuVariant = 'soft' } = context || {};
320
-
357
+
321
358
  return (
322
359
  <div
323
360
  {...props}
@@ -329,37 +366,36 @@ const SidebarFooter = React.forwardRef<HTMLDivElement, SidebarFooterProps>(
329
366
  {
330
367
  'rt-SidebarFooter--container': asContainer,
331
368
  },
332
- className
369
+ className,
333
370
  )}
334
371
  />
335
372
  );
336
- }
373
+ },
337
374
  );
338
375
  SidebarFooter.displayName = 'Sidebar.Footer';
339
376
 
340
377
  // Sidebar trigger button
341
378
  interface SidebarTriggerProps extends ComponentPropsWithout<typeof IconButton, RemovedProps> {}
342
379
 
343
- const SidebarTrigger = React.forwardRef<
344
- React.ElementRef<typeof IconButton>,
345
- SidebarTriggerProps
346
- >(({ onClick, children, ...props }, forwardedRef) => {
347
- const { toggleSidebar } = useSidebar();
348
-
349
- return (
350
- <IconButton
351
- {...props}
352
- ref={forwardedRef}
353
- variant="ghost"
354
- onClick={(event) => {
355
- onClick?.(event);
356
- toggleSidebar();
357
- }}
358
- >
359
- {children || <ChevronDownIcon />}
360
- </IconButton>
361
- );
362
- });
380
+ const SidebarTrigger = React.forwardRef<React.ElementRef<typeof IconButton>, SidebarTriggerProps>(
381
+ ({ onClick, children, ...props }, forwardedRef) => {
382
+ const { toggleSidebar } = useSidebar();
383
+
384
+ return (
385
+ <IconButton
386
+ {...props}
387
+ ref={forwardedRef}
388
+ variant="ghost"
389
+ onClick={(event) => {
390
+ onClick?.(event);
391
+ toggleSidebar();
392
+ }}
393
+ >
394
+ {children || <ChevronDownIcon />}
395
+ </IconButton>
396
+ );
397
+ },
398
+ );
363
399
  SidebarTrigger.displayName = 'Sidebar.Trigger';
364
400
 
365
401
  // Removed SidebarInset - not needed
@@ -384,12 +420,8 @@ interface SidebarMenuProps extends React.ComponentPropsWithoutRef<'ul'> {}
384
420
 
385
421
  const SidebarMenu = React.forwardRef<HTMLUListElement, SidebarMenuProps>(
386
422
  ({ className, ...props }, forwardedRef) => (
387
- <ul
388
- {...props}
389
- ref={forwardedRef}
390
- className={classNames('rt-SidebarMenu', className)}
391
- />
392
- )
423
+ <ul {...props} ref={forwardedRef} className={classNames('rt-SidebarMenu', className)} />
424
+ ),
393
425
  );
394
426
  SidebarMenu.displayName = 'Sidebar.Menu';
395
427
 
@@ -397,34 +429,44 @@ interface SidebarMenuItemProps extends React.ComponentPropsWithoutRef<'li'> {}
397
429
 
398
430
  const SidebarMenuItem = React.forwardRef<HTMLLIElement, SidebarMenuItemProps>(
399
431
  ({ className, ...props }, forwardedRef) => (
400
- <li
401
- {...props}
402
- ref={forwardedRef}
403
- className={classNames('rt-SidebarMenuItem', className)}
404
- />
405
- )
432
+ <li {...props} ref={forwardedRef} className={classNames('rt-SidebarMenuItem', className)} />
433
+ ),
406
434
  );
407
435
  SidebarMenuItem.displayName = 'Sidebar.MenuItem';
408
436
 
409
437
  interface SidebarMenuButtonProps extends React.ComponentPropsWithoutRef<'button'> {
410
438
  asChild?: boolean;
411
439
  isActive?: boolean;
440
+ shortcut?: React.ReactNode;
441
+ badge?: string | BadgeConfig;
412
442
  }
413
443
 
414
444
  const SidebarMenuButton = React.forwardRef<HTMLButtonElement, SidebarMenuButtonProps>(
415
- ({ asChild = false, isActive = false, className, onMouseEnter, onMouseLeave, ...props }, forwardedRef) => {
445
+ (
446
+ {
447
+ asChild = false,
448
+ isActive = false,
449
+ shortcut,
450
+ badge,
451
+ className,
452
+ children,
453
+ onMouseEnter,
454
+ onMouseLeave,
455
+ ...props
456
+ },
457
+ forwardedRef,
458
+ ) => {
416
459
  const [isHighlighted, setIsHighlighted] = React.useState(false);
460
+ const context = React.useContext(SidebarContext);
461
+ const { size: sidebarSize = '2' } = context || {};
462
+
417
463
  const Comp = asChild ? Slot : 'button';
418
-
464
+
419
465
  return (
420
466
  <Comp
421
467
  {...props}
422
468
  ref={forwardedRef}
423
- className={classNames(
424
- 'rt-reset',
425
- 'rt-SidebarMenuButton',
426
- className
427
- )}
469
+ className={classNames('rt-reset', 'rt-SidebarMenuButton', className)}
428
470
  data-active={isActive || undefined}
429
471
  data-highlighted={isHighlighted || undefined}
430
472
  onMouseEnter={(event) => {
@@ -435,9 +477,42 @@ const SidebarMenuButton = React.forwardRef<HTMLButtonElement, SidebarMenuButtonP
435
477
  setIsHighlighted(false);
436
478
  onMouseLeave?.(event);
437
479
  }}
438
- />
480
+ >
481
+ {asChild ? (
482
+ children
483
+ ) : (
484
+ <>
485
+ {children}
486
+ {/* Badge with soft variant default and size mapping to sidebar size */}
487
+ {badge && (
488
+ <div className="rt-SidebarMenuBadge">
489
+ {typeof badge === 'string' ? (
490
+ <Badge size={sidebarSize} variant="soft">
491
+ {badge}
492
+ </Badge>
493
+ ) : (
494
+ <Badge
495
+ size={badge.size || sidebarSize}
496
+ variant={badge.variant || 'soft'}
497
+ color={badge.color}
498
+ highContrast={badge.highContrast}
499
+ radius={badge.radius}
500
+ >
501
+ {badge.content}
502
+ </Badge>
503
+ )}
504
+ </div>
505
+ )}
506
+ {shortcut && (
507
+ <div className="rt-BaseMenuShortcut rt-SidebarMenuShortcut">
508
+ <Kbd size={sidebarSize}>{shortcut}</Kbd>
509
+ </div>
510
+ )}
511
+ </>
512
+ )}
513
+ </Comp>
439
514
  );
440
- }
515
+ },
441
516
  );
442
517
  SidebarMenuButton.displayName = 'Sidebar.MenuButton';
443
518
 
@@ -450,75 +525,76 @@ const SidebarMenuSub = React.forwardRef<HTMLDivElement, SidebarMenuSubProps>(
450
525
  ({ defaultOpen = false, children, ...props }, forwardedRef) => {
451
526
  return (
452
527
  <div {...props} ref={forwardedRef}>
453
- <Accordion.Root
454
- type="single"
455
- collapsible
456
- defaultValue={defaultOpen ? 'item' : undefined}
457
- >
458
- <Accordion.Item value="item">
459
- {children}
460
- </Accordion.Item>
528
+ <Accordion.Root type="single" collapsible defaultValue={defaultOpen ? 'item' : undefined}>
529
+ <Accordion.Item value="item">{children}</Accordion.Item>
461
530
  </Accordion.Root>
462
531
  </div>
463
532
  );
464
- }
533
+ },
465
534
  );
466
535
  SidebarMenuSub.displayName = 'Sidebar.MenuSub';
467
536
 
468
- interface SidebarMenuSubTriggerProps extends React.ComponentPropsWithoutRef<typeof Accordion.Trigger> {
537
+ interface SidebarMenuSubTriggerProps
538
+ extends React.ComponentPropsWithoutRef<typeof Accordion.Trigger> {
469
539
  asChild?: boolean;
470
540
  }
471
541
 
472
542
  const SidebarMenuSubTrigger = React.forwardRef<
473
543
  React.ElementRef<typeof Accordion.Trigger>,
474
544
  SidebarMenuSubTriggerProps
475
- >(({ asChild = false, className, children, onMouseEnter, onMouseLeave, ...props }, forwardedRef) => {
476
- const [isHighlighted, setIsHighlighted] = React.useState(false);
477
-
478
- return (
479
- <Accordion.Header asChild>
480
- <div>
481
- <Accordion.Trigger
482
- {...props}
483
- ref={forwardedRef}
484
- asChild={asChild}
485
- className={classNames(
486
- 'rt-reset',
487
- 'rt-SidebarMenuButton',
488
- 'rt-SidebarMenuSubTrigger',
489
- className
490
- )}
491
- data-highlighted={isHighlighted || undefined}
492
- onMouseEnter={(event) => {
493
- setIsHighlighted(true);
494
- onMouseEnter?.(event);
495
- }}
496
- onMouseLeave={(event) => {
497
- setIsHighlighted(false);
498
- onMouseLeave?.(event);
499
- }}
500
- >
501
- {asChild ? (
502
- children
503
- ) : (
504
- <>
505
- {children}
506
- <ThickChevronRightIcon
507
- className={classNames(
508
- 'rt-BaseMenuSubTriggerIcon',
509
- 'rt-SidebarMenuSubTriggerIcon'
510
- )}
511
- />
512
- </>
513
- )}
514
- </Accordion.Trigger>
515
- </div>
516
- </Accordion.Header>
517
- );
518
- });
545
+ >(
546
+ (
547
+ { asChild = false, className, children, onMouseEnter, onMouseLeave, ...props },
548
+ forwardedRef,
549
+ ) => {
550
+ const [isHighlighted, setIsHighlighted] = React.useState(false);
551
+
552
+ return (
553
+ <Accordion.Header asChild>
554
+ <div>
555
+ <Accordion.Trigger
556
+ {...props}
557
+ ref={forwardedRef}
558
+ asChild={asChild}
559
+ className={classNames(
560
+ 'rt-reset',
561
+ 'rt-SidebarMenuButton',
562
+ 'rt-SidebarMenuSubTrigger',
563
+ className,
564
+ )}
565
+ data-highlighted={isHighlighted || undefined}
566
+ onMouseEnter={(event) => {
567
+ setIsHighlighted(true);
568
+ onMouseEnter?.(event);
569
+ }}
570
+ onMouseLeave={(event) => {
571
+ setIsHighlighted(false);
572
+ onMouseLeave?.(event);
573
+ }}
574
+ >
575
+ {asChild ? (
576
+ children
577
+ ) : (
578
+ <>
579
+ {children}
580
+ <ThickChevronRightIcon
581
+ className={classNames(
582
+ 'rt-BaseMenuSubTriggerIcon',
583
+ 'rt-SidebarMenuSubTriggerIcon',
584
+ )}
585
+ />
586
+ </>
587
+ )}
588
+ </Accordion.Trigger>
589
+ </div>
590
+ </Accordion.Header>
591
+ );
592
+ },
593
+ );
519
594
  SidebarMenuSubTrigger.displayName = 'Sidebar.MenuSubTrigger';
520
595
 
521
- interface SidebarMenuSubContentProps extends React.ComponentPropsWithoutRef<typeof Accordion.Content> {}
596
+ interface SidebarMenuSubContentProps
597
+ extends React.ComponentPropsWithoutRef<typeof Accordion.Content> {}
522
598
 
523
599
  const SidebarMenuSubContent = React.forwardRef<
524
600
  React.ElementRef<typeof Accordion.Content>,
@@ -530,9 +606,7 @@ const SidebarMenuSubContent = React.forwardRef<
530
606
  ref={forwardedRef}
531
607
  className={classNames('rt-SidebarMenuSubContent', className)}
532
608
  >
533
- <div className="rt-SidebarMenuSubList">
534
- {children}
535
- </div>
609
+ <div className="rt-SidebarMenuSubList">{children}</div>
536
610
  </Accordion.Content>
537
611
  );
538
612
  });
@@ -543,12 +617,8 @@ interface SidebarGroupProps extends React.ComponentPropsWithoutRef<'div'> {}
543
617
 
544
618
  const SidebarGroup = React.forwardRef<HTMLDivElement, SidebarGroupProps>(
545
619
  ({ className, ...props }, forwardedRef) => (
546
- <div
547
- {...props}
548
- ref={forwardedRef}
549
- className={classNames('rt-SidebarGroup', className)}
550
- />
551
- )
620
+ <div {...props} ref={forwardedRef} className={classNames('rt-SidebarGroup', className)} />
621
+ ),
552
622
  );
553
623
  SidebarGroup.displayName = 'Sidebar.Group';
554
624
 
@@ -559,7 +629,7 @@ interface SidebarGroupLabelProps extends React.ComponentPropsWithoutRef<'div'> {
559
629
  const SidebarGroupLabel = React.forwardRef<HTMLDivElement, SidebarGroupLabelProps>(
560
630
  ({ asChild = false, className, ...props }, forwardedRef) => {
561
631
  const Comp = asChild ? Slot : 'div';
562
-
632
+
563
633
  return (
564
634
  <Comp
565
635
  {...props}
@@ -567,7 +637,7 @@ const SidebarGroupLabel = React.forwardRef<HTMLDivElement, SidebarGroupLabelProp
567
637
  className={classNames('rt-SidebarGroupLabel', className)}
568
638
  />
569
639
  );
570
- }
640
+ },
571
641
  );
572
642
  SidebarGroupLabel.displayName = 'Sidebar.GroupLabel';
573
643
 
@@ -580,7 +650,7 @@ const SidebarGroupContent = React.forwardRef<HTMLDivElement, SidebarGroupContent
580
650
  ref={forwardedRef}
581
651
  className={classNames('rt-SidebarGroupContent', className)}
582
652
  />
583
- )
653
+ ),
584
654
  );
585
655
  SidebarGroupContent.displayName = 'Sidebar.GroupContent';
586
656
 
@@ -608,13 +678,13 @@ export {
608
678
 
609
679
  /**
610
680
  * Enhanced Sidebar Header and Footer Usage Examples:
611
- *
681
+ *
612
682
  * 1. Simple default container (backwards compatible):
613
683
  * <Sidebar.Header>
614
684
  * <Logo />
615
685
  * <span>App Name</span>
616
686
  * </Sidebar.Header>
617
- *
687
+ *
618
688
  * 2. Custom flex layout:
619
689
  * <Sidebar.Header className="rt-justify-between rt-gap-3">
620
690
  * <Logo />
@@ -622,7 +692,7 @@ export {
622
692
  * <SettingsIcon />
623
693
  * </Sidebar.MenuButton>
624
694
  * </Sidebar.Header>
625
- *
695
+ *
626
696
  * 3. Column layout for multiple rows:
627
697
  * <Sidebar.Header className="rt-flex-col rt-gap-2" asContainer={false}>
628
698
  * <div className="rt-flex rt-items-center rt-gap-2">
@@ -634,7 +704,7 @@ export {
634
704
  * <span>John Doe</span>
635
705
  * </Sidebar.MenuButton>
636
706
  * </Sidebar.Header>
637
- *
707
+ *
638
708
  * 4. Interactive footer with menu button:
639
709
  * <Sidebar.Footer>
640
710
  * <Sidebar.MenuButton>
@@ -643,7 +713,7 @@ export {
643
713
  * <ChevronUpIcon />
644
714
  * </Sidebar.MenuButton>
645
715
  * </Sidebar.Footer>
646
- *
716
+ *
647
717
  * 5. Custom footer layout:
648
718
  * <Sidebar.Footer className="rt-justify-between">
649
719
  * <span>v1.0.0</span>
@@ -651,7 +721,7 @@ export {
651
721
  * <HelpIcon />
652
722
  * </Sidebar.MenuButton>
653
723
  * </Sidebar.Footer>
654
- *
724
+ *
655
725
  * Available utility classes:
656
726
  * - Layout: rt-flex-row, rt-flex-col
657
727
  * - Alignment: rt-items-center, rt-items-start, rt-items-end
@@ -666,4 +736,5 @@ export type {
666
736
  SidebarHeaderProps as HeaderProps,
667
737
  SidebarFooterProps as FooterProps,
668
738
  SidebarTriggerProps as TriggerProps,
669
- };
739
+ BadgeConfig,
740
+ };