@neynar/ui 0.1.1 → 0.1.2

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 (173) hide show
  1. package/dist/components/ui/accordion.d.ts +1 -25
  2. package/dist/components/ui/accordion.d.ts.map +1 -1
  3. package/dist/components/ui/alert-dialog.d.ts +240 -46
  4. package/dist/components/ui/alert-dialog.d.ts.map +1 -1
  5. package/dist/components/ui/alert.d.ts +73 -11
  6. package/dist/components/ui/alert.d.ts.map +1 -1
  7. package/dist/components/ui/aspect-ratio.d.ts +44 -10
  8. package/dist/components/ui/aspect-ratio.d.ts.map +1 -1
  9. package/dist/components/ui/avatar.d.ts +117 -33
  10. package/dist/components/ui/avatar.d.ts.map +1 -1
  11. package/dist/components/ui/badge.d.ts +50 -71
  12. package/dist/components/ui/badge.d.ts.map +1 -1
  13. package/dist/components/ui/breadcrumb.d.ts +231 -49
  14. package/dist/components/ui/breadcrumb.d.ts.map +1 -1
  15. package/dist/components/ui/button.d.ts +189 -71
  16. package/dist/components/ui/button.d.ts.map +1 -1
  17. package/dist/components/ui/calendar.d.ts +197 -40
  18. package/dist/components/ui/calendar.d.ts.map +1 -1
  19. package/dist/components/ui/card.d.ts +7 -22
  20. package/dist/components/ui/card.d.ts.map +1 -1
  21. package/dist/components/ui/carousel.d.ts +369 -99
  22. package/dist/components/ui/carousel.d.ts.map +1 -1
  23. package/dist/components/ui/chart.d.ts.map +1 -1
  24. package/dist/components/ui/checkbox.d.ts +110 -38
  25. package/dist/components/ui/checkbox.d.ts.map +1 -1
  26. package/dist/components/ui/collapsible.d.ts +246 -61
  27. package/dist/components/ui/collapsible.d.ts.map +1 -1
  28. package/dist/components/ui/combobox.d.ts +207 -159
  29. package/dist/components/ui/combobox.d.ts.map +1 -1
  30. package/dist/components/ui/command.d.ts +336 -67
  31. package/dist/components/ui/command.d.ts.map +1 -1
  32. package/dist/components/ui/container.d.ts +159 -64
  33. package/dist/components/ui/container.d.ts.map +1 -1
  34. package/dist/components/ui/context-menu.d.ts +321 -39
  35. package/dist/components/ui/context-menu.d.ts.map +1 -1
  36. package/dist/components/ui/date-picker.d.ts +113 -86
  37. package/dist/components/ui/date-picker.d.ts.map +1 -1
  38. package/dist/components/ui/dialog.d.ts +106 -25
  39. package/dist/components/ui/dialog.d.ts.map +1 -1
  40. package/dist/components/ui/drawer.d.ts +388 -59
  41. package/dist/components/ui/drawer.d.ts.map +1 -1
  42. package/dist/components/ui/dropdown-menu.d.ts +521 -74
  43. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  44. package/dist/components/ui/empty-state.d.ts +148 -76
  45. package/dist/components/ui/empty-state.d.ts.map +1 -1
  46. package/dist/components/ui/hover-card.d.ts +253 -34
  47. package/dist/components/ui/hover-card.d.ts.map +1 -1
  48. package/dist/components/ui/input.d.ts +143 -44
  49. package/dist/components/ui/input.d.ts.map +1 -1
  50. package/dist/components/ui/label.d.ts +0 -8
  51. package/dist/components/ui/label.d.ts.map +1 -1
  52. package/dist/components/ui/menubar.d.ts +288 -46
  53. package/dist/components/ui/menubar.d.ts.map +1 -1
  54. package/dist/components/ui/navigation-menu.d.ts +444 -127
  55. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  56. package/dist/components/ui/pagination.d.ts +342 -66
  57. package/dist/components/ui/pagination.d.ts.map +1 -1
  58. package/dist/components/ui/popover.d.ts +0 -8
  59. package/dist/components/ui/popover.d.ts.map +1 -1
  60. package/dist/components/ui/progress.d.ts +88 -30
  61. package/dist/components/ui/progress.d.ts.map +1 -1
  62. package/dist/components/ui/radio-group.d.ts +189 -45
  63. package/dist/components/ui/radio-group.d.ts.map +1 -1
  64. package/dist/components/ui/resizable.d.ts +178 -62
  65. package/dist/components/ui/resizable.d.ts.map +1 -1
  66. package/dist/components/ui/scroll-area.d.ts +180 -21
  67. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  68. package/dist/components/ui/select.d.ts +382 -60
  69. package/dist/components/ui/select.d.ts.map +1 -1
  70. package/dist/components/ui/separator.d.ts +52 -39
  71. package/dist/components/ui/separator.d.ts.map +1 -1
  72. package/dist/components/ui/sheet.d.ts +144 -27
  73. package/dist/components/ui/sheet.d.ts.map +1 -1
  74. package/dist/components/ui/sidebar.d.ts +81 -31
  75. package/dist/components/ui/sidebar.d.ts.map +1 -1
  76. package/dist/components/ui/skeleton.d.ts +94 -32
  77. package/dist/components/ui/skeleton.d.ts.map +1 -1
  78. package/dist/components/ui/slider.d.ts +37 -31
  79. package/dist/components/ui/slider.d.ts.map +1 -1
  80. package/dist/components/ui/sonner.d.ts +280 -46
  81. package/dist/components/ui/sonner.d.ts.map +1 -1
  82. package/dist/components/ui/stack.d.ts +289 -148
  83. package/dist/components/ui/stack.d.ts.map +1 -1
  84. package/dist/components/ui/stories/aspect-ratio.stories.d.ts +1 -2
  85. package/dist/components/ui/stories/aspect-ratio.stories.d.ts.map +1 -1
  86. package/dist/components/ui/stories/container.stories.d.ts +2 -3
  87. package/dist/components/ui/stories/container.stories.d.ts.map +1 -1
  88. package/dist/components/ui/stories/empty-state.stories.d.ts +2 -2
  89. package/dist/components/ui/stories/scroll-area.stories.d.ts +1 -2
  90. package/dist/components/ui/stories/scroll-area.stories.d.ts.map +1 -1
  91. package/dist/components/ui/stories/stack.stories.d.ts +1 -1
  92. package/dist/components/ui/stories/text-field.stories.d.ts +7 -1
  93. package/dist/components/ui/stories/text-field.stories.d.ts.map +1 -1
  94. package/dist/components/ui/switch.d.ts +44 -38
  95. package/dist/components/ui/switch.d.ts.map +1 -1
  96. package/dist/components/ui/table.d.ts +33 -0
  97. package/dist/components/ui/table.d.ts.map +1 -1
  98. package/dist/components/ui/tabs.d.ts +4 -22
  99. package/dist/components/ui/tabs.d.ts.map +1 -1
  100. package/dist/components/ui/text-field.d.ts +170 -84
  101. package/dist/components/ui/text-field.d.ts.map +1 -1
  102. package/dist/components/ui/textarea.d.ts +106 -29
  103. package/dist/components/ui/textarea.d.ts.map +1 -1
  104. package/dist/components/ui/theme-toggle.d.ts +190 -65
  105. package/dist/components/ui/theme-toggle.d.ts.map +1 -1
  106. package/dist/components/ui/theme.d.ts +107 -23
  107. package/dist/components/ui/theme.d.ts.map +1 -1
  108. package/dist/components/ui/toggle-group.d.ts +143 -67
  109. package/dist/components/ui/toggle-group.d.ts.map +1 -1
  110. package/dist/components/ui/toggle.d.ts +118 -30
  111. package/dist/components/ui/toggle.d.ts.map +1 -1
  112. package/dist/components/ui/tooltip.d.ts +152 -28
  113. package/dist/components/ui/tooltip.d.ts.map +1 -1
  114. package/dist/components/ui/typography.d.ts +452 -134
  115. package/dist/components/ui/typography.d.ts.map +1 -1
  116. package/dist/index.js +9388 -8281
  117. package/dist/index.js.map +1 -1
  118. package/dist/tsconfig.tsbuildinfo +1 -1
  119. package/llms.txt +173 -3
  120. package/package.json +5 -2
  121. package/src/components/ui/accordion.tsx +112 -27
  122. package/src/components/ui/alert-dialog.tsx +401 -46
  123. package/src/components/ui/alert.tsx +114 -11
  124. package/src/components/ui/aspect-ratio.tsx +69 -14
  125. package/src/components/ui/avatar.tsx +179 -33
  126. package/src/components/ui/badge.tsx +74 -75
  127. package/src/components/ui/breadcrumb.tsx +335 -50
  128. package/src/components/ui/button.tsx +198 -90
  129. package/src/components/ui/calendar.tsx +867 -43
  130. package/src/components/ui/card.tsx +140 -33
  131. package/src/components/ui/carousel.tsx +529 -98
  132. package/src/components/ui/chart.tsx +222 -1
  133. package/src/components/ui/checkbox.tsx +176 -38
  134. package/src/components/ui/collapsible.tsx +321 -67
  135. package/src/components/ui/combobox.tsx +284 -83
  136. package/src/components/ui/command.tsx +527 -67
  137. package/src/components/ui/container.tsx +217 -65
  138. package/src/components/ui/context-menu.tsx +716 -51
  139. package/src/components/ui/date-picker.tsx +228 -38
  140. package/src/components/ui/dialog.tsx +270 -33
  141. package/src/components/ui/drawer.tsx +546 -67
  142. package/src/components/ui/dropdown-menu.tsx +657 -74
  143. package/src/components/ui/empty-state.tsx +241 -82
  144. package/src/components/ui/hover-card.tsx +328 -39
  145. package/src/components/ui/input.tsx +207 -44
  146. package/src/components/ui/label.tsx +98 -8
  147. package/src/components/ui/menubar.tsx +587 -54
  148. package/src/components/ui/navigation-menu.tsx +557 -128
  149. package/src/components/ui/pagination.tsx +561 -79
  150. package/src/components/ui/popover.tsx +119 -8
  151. package/src/components/ui/progress.tsx +131 -29
  152. package/src/components/ui/radio-group.tsx +260 -51
  153. package/src/components/ui/resizable.tsx +289 -63
  154. package/src/components/ui/scroll-area.tsx +377 -66
  155. package/src/components/ui/select.tsx +545 -60
  156. package/src/components/ui/separator.tsx +146 -40
  157. package/src/components/ui/sheet.tsx +348 -31
  158. package/src/components/ui/sidebar.tsx +471 -29
  159. package/src/components/ui/skeleton.tsx +114 -32
  160. package/src/components/ui/slider.tsx +77 -31
  161. package/src/components/ui/sonner.tsx +574 -46
  162. package/src/components/ui/stack.tsx +423 -101
  163. package/src/components/ui/switch.tsx +78 -39
  164. package/src/components/ui/table.tsx +170 -4
  165. package/src/components/ui/tabs.tsx +108 -22
  166. package/src/components/ui/text-field.tsx +226 -81
  167. package/src/components/ui/textarea.tsx +180 -29
  168. package/src/components/ui/theme-toggle.tsx +313 -65
  169. package/src/components/ui/theme.tsx +117 -23
  170. package/src/components/ui/toggle-group.tsx +280 -69
  171. package/src/components/ui/toggle.tsx +124 -35
  172. package/src/components/ui/tooltip.tsx +239 -29
  173. package/src/components/ui/typography.tsx +1115 -165
@@ -31,6 +31,366 @@ const SIDEBAR_WIDTH_MOBILE = "18rem";
31
31
  const SIDEBAR_WIDTH_ICON = "3rem";
32
32
  const SIDEBAR_KEYBOARD_SHORTCUT = "b";
33
33
 
34
+ /**
35
+ * Context props for sidebar state management (Documentation only - NOT used in component implementation)
36
+ * These types are for documentation generation and should not replace inferred context types
37
+ */
38
+ // eslint-disable-next-line unused-imports/no-unused-vars
39
+ type SidebarContextDocsProps = {
40
+ /** Current visual state of the sidebar */
41
+ state: "expanded" | "collapsed";
42
+ /** Whether sidebar is open on desktop */
43
+ open: boolean;
44
+ /** Function to control desktop sidebar open state */
45
+ setOpen: (open: boolean) => void;
46
+ /** Whether sidebar is open on mobile (sheet overlay) */
47
+ openMobile: boolean;
48
+ /** Function to control mobile sidebar open state */
49
+ setOpenMobile: (open: boolean) => void;
50
+ /** Whether current viewport is considered mobile */
51
+ isMobile: boolean;
52
+ /** Function to toggle sidebar state (responsive) */
53
+ toggleSidebar: () => void;
54
+ };
55
+
56
+ /**
57
+ * Props for SidebarProvider component (Documentation only - NOT used in component implementation)
58
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
59
+ */
60
+ // eslint-disable-next-line unused-imports/no-unused-vars
61
+ type SidebarProviderDocsProps = {
62
+ /** Initial open state when uncontrolled @default true */
63
+ defaultOpen?: boolean;
64
+ /** Controlled open state (makes component controlled) */
65
+ open?: boolean;
66
+ /** Callback fired when open state changes */
67
+ onOpenChange?: (open: boolean) => void;
68
+ /** Child components */
69
+ children?: React.ReactNode;
70
+ } & React.ComponentProps<"div">;
71
+
72
+ /**
73
+ * Props for Sidebar component (Documentation only - NOT used in component implementation)
74
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
75
+ */
76
+ // eslint-disable-next-line unused-imports/no-unused-vars
77
+ type SidebarDocsProps = {
78
+ /**
79
+ * Which side of the screen the sidebar appears on @default "left"
80
+ *
81
+ * Controls the horizontal positioning and slide direction of the sidebar.
82
+ * Affects the direction of collapse animations and the positioning of
83
+ * the interactive rail component.
84
+ */
85
+ side?: "left" | "right";
86
+ /** Visual appearance variant @default "sidebar" */
87
+ variant?: "sidebar" | "floating" | "inset";
88
+ /** Collapse behavior mode @default "offcanvas" */
89
+ collapsible?: "offcanvas" | "icon" | "none";
90
+ /** Additional CSS classes */
91
+ className?: string;
92
+ /** Sidebar content components */
93
+ children?: React.ReactNode;
94
+ } & React.ComponentProps<"div">;
95
+
96
+ /**
97
+ * Props for SidebarTrigger component (Documentation only - NOT used in component implementation)
98
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
99
+ */
100
+ // eslint-disable-next-line unused-imports/no-unused-vars
101
+ type SidebarTriggerDocsProps = {
102
+ /** Additional CSS classes */
103
+ className?: string;
104
+ /** Additional click handler called before toggle */
105
+ onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;
106
+ } & Omit<React.ComponentProps<typeof Button>, "onClick">;
107
+
108
+ /**
109
+ * Props for SidebarRail component (Documentation only - NOT used in component implementation)
110
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
111
+ */
112
+ // eslint-disable-next-line unused-imports/no-unused-vars
113
+ type SidebarRailDocsProps = {
114
+ /** Additional CSS classes */
115
+ className?: string;
116
+ } & React.ComponentProps<"button">;
117
+
118
+ /**
119
+ * Props for SidebarInset component (Documentation only - NOT used in component implementation)
120
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
121
+ */
122
+ // eslint-disable-next-line unused-imports/no-unused-vars
123
+ type SidebarInsetDocsProps = {
124
+ /** Additional CSS classes */
125
+ className?: string;
126
+ } & React.ComponentProps<"main">;
127
+
128
+ /**
129
+ * Props for SidebarInput component (Documentation only - NOT used in component implementation)
130
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
131
+ */
132
+ // eslint-disable-next-line unused-imports/no-unused-vars
133
+ type SidebarInputDocsProps = {
134
+ /** Additional CSS classes */
135
+ className?: string;
136
+ } & React.ComponentProps<typeof Input>;
137
+
138
+ /**
139
+ * Props for SidebarHeader component (Documentation only - NOT used in component implementation)
140
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
141
+ */
142
+ // eslint-disable-next-line unused-imports/no-unused-vars
143
+ type SidebarHeaderDocsProps = {
144
+ /** Additional CSS classes */
145
+ className?: string;
146
+ } & React.ComponentProps<"div">;
147
+
148
+ /**
149
+ * Props for SidebarFooter component (Documentation only - NOT used in component implementation)
150
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
151
+ */
152
+ // eslint-disable-next-line unused-imports/no-unused-vars
153
+ type SidebarFooterDocsProps = {
154
+ /** Additional CSS classes */
155
+ className?: string;
156
+ } & React.ComponentProps<"div">;
157
+
158
+ /**
159
+ * Props for SidebarSeparator component (Documentation only - NOT used in component implementation)
160
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
161
+ */
162
+ // eslint-disable-next-line unused-imports/no-unused-vars
163
+ type SidebarSeparatorDocsProps = {
164
+ /** Additional CSS classes */
165
+ className?: string;
166
+ } & React.ComponentProps<typeof Separator>;
167
+
168
+ /**
169
+ * Props for SidebarContent component (Documentation only - NOT used in component implementation)
170
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
171
+ */
172
+ // eslint-disable-next-line unused-imports/no-unused-vars
173
+ type SidebarContentDocsProps = {
174
+ /** Additional CSS classes */
175
+ className?: string;
176
+ } & React.ComponentProps<"div">;
177
+
178
+ /**
179
+ * Props for SidebarGroup component (Documentation only - NOT used in component implementation)
180
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
181
+ */
182
+ // eslint-disable-next-line unused-imports/no-unused-vars
183
+ type SidebarGroupDocsProps = {
184
+ /** Additional CSS classes */
185
+ className?: string;
186
+ } & React.ComponentProps<"div">;
187
+
188
+ /**
189
+ * Props for SidebarGroupLabel component (Documentation only - NOT used in component implementation)
190
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
191
+ */
192
+ // eslint-disable-next-line unused-imports/no-unused-vars
193
+ type SidebarGroupLabelDocsProps = {
194
+ /** Additional CSS classes */
195
+ className?: string;
196
+ /**
197
+ * Render as child element using Radix UI Slot composition pattern @default false
198
+ *
199
+ * When true, the component will not render its default element,
200
+ * instead merging its props with its immediate child. This enables
201
+ * composition with custom elements (like Link components) while
202
+ * preserving the component's behavior and styling.
203
+ */
204
+ asChild?: boolean;
205
+ } & React.ComponentProps<"div">;
206
+
207
+ /**
208
+ * Props for SidebarGroupAction component (Documentation only - NOT used in component implementation)
209
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
210
+ */
211
+ // eslint-disable-next-line unused-imports/no-unused-vars
212
+ type SidebarGroupActionDocsProps = {
213
+ /** Additional CSS classes */
214
+ className?: string;
215
+ /**
216
+ * Render as child element using Radix UI Slot composition pattern @default false
217
+ *
218
+ * When true, the component will not render its default element,
219
+ * instead merging its props with its immediate child. This enables
220
+ * composition with custom elements (like Link components) while
221
+ * preserving the component's behavior and styling.
222
+ */
223
+ asChild?: boolean;
224
+ } & React.ComponentProps<"button">;
225
+
226
+ /**
227
+ * Props for SidebarGroupContent component (Documentation only - NOT used in component implementation)
228
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
229
+ */
230
+ // eslint-disable-next-line unused-imports/no-unused-vars
231
+ type SidebarGroupContentDocsProps = {
232
+ /** Additional CSS classes */
233
+ className?: string;
234
+ } & React.ComponentProps<"div">;
235
+
236
+ /**
237
+ * Props for SidebarMenu component (Documentation only - NOT used in component implementation)
238
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
239
+ */
240
+ // eslint-disable-next-line unused-imports/no-unused-vars
241
+ type SidebarMenuDocsProps = {
242
+ /** Additional CSS classes */
243
+ className?: string;
244
+ } & React.ComponentProps<"ul">;
245
+
246
+ /**
247
+ * Props for SidebarMenuItem component (Documentation only - NOT used in component implementation)
248
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
249
+ */
250
+ // eslint-disable-next-line unused-imports/no-unused-vars
251
+ type SidebarMenuItemDocsProps = {
252
+ /** Additional CSS classes */
253
+ className?: string;
254
+ } & React.ComponentProps<"li">;
255
+
256
+ /**
257
+ * Props for SidebarMenuButton component (Documentation only - NOT used in component implementation)
258
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
259
+ */
260
+ // eslint-disable-next-line unused-imports/no-unused-vars
261
+ type SidebarMenuButtonDocsProps = {
262
+ /**
263
+ * Render as child element using Radix UI Slot composition pattern @default false
264
+ *
265
+ * When true, the component will not render its default element,
266
+ * instead merging its props with its immediate child. This enables
267
+ * composition with custom elements (like Link components) while
268
+ * preserving the component's behavior and styling.
269
+ */
270
+ asChild?: boolean;
271
+ /** Whether this menu item is currently active @default false */
272
+ isActive?: boolean;
273
+ /** Visual appearance variant @default "default" */
274
+ variant?: "default" | "outline";
275
+ /** Button size variant @default "default" */
276
+ size?: "default" | "sm" | "lg";
277
+ /**
278
+ * Tooltip content shown when sidebar is collapsed to icon mode
279
+ *
280
+ * Can be either a string for simple text or a full TooltipContent props object
281
+ * for advanced configuration. Tooltip is automatically shown/hidden based on
282
+ * sidebar state and is never displayed on mobile devices.
283
+ *
284
+ * @example Simple string tooltip
285
+ * ```tsx
286
+ * <SidebarMenuButton tooltip=\"Dashboard\">
287
+ * <Home />Dashboard
288
+ * </SidebarMenuButton>
289
+ * ```
290
+ *
291
+ * @example Advanced tooltip with props
292
+ * ```tsx
293
+ * <SidebarMenuButton tooltip={{
294
+ * children: \"Go to Dashboard\",
295
+ * side: \"right\",
296
+ * sideOffset: 10
297
+ * }}>
298
+ * <Home />Dashboard
299
+ * </SidebarMenuButton>
300
+ * ```
301
+ */
302
+ tooltip?: string | React.ComponentProps<typeof TooltipContent>;
303
+ /** Additional CSS classes */
304
+ className?: string;
305
+ } & React.ComponentProps<"button">;
306
+
307
+ /**
308
+ * Props for SidebarMenuAction component (Documentation only - NOT used in component implementation)
309
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
310
+ */
311
+ // eslint-disable-next-line unused-imports/no-unused-vars
312
+ type SidebarMenuActionDocsProps = {
313
+ /** Additional CSS classes */
314
+ className?: string;
315
+ /**
316
+ * Render as child element using Radix UI Slot composition pattern @default false
317
+ *
318
+ * When true, the component will not render its default element,
319
+ * instead merging its props with its immediate child. This enables
320
+ * composition with custom elements (like Link components) while
321
+ * preserving the component's behavior and styling.
322
+ */
323
+ asChild?: boolean;
324
+ /** Only show button on menu item hover @default false */
325
+ showOnHover?: boolean;
326
+ } & React.ComponentProps<"button">;
327
+
328
+ /**
329
+ * Props for SidebarMenuBadge component (Documentation only - NOT used in component implementation)
330
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
331
+ */
332
+ // eslint-disable-next-line unused-imports/no-unused-vars
333
+ type SidebarMenuBadgeDocsProps = {
334
+ /** Additional CSS classes */
335
+ className?: string;
336
+ } & React.ComponentProps<"div">;
337
+
338
+ /**
339
+ * Props for SidebarMenuSkeleton component (Documentation only - NOT used in component implementation)
340
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
341
+ */
342
+ // eslint-disable-next-line unused-imports/no-unused-vars
343
+ type SidebarMenuSkeletonDocsProps = {
344
+ /** Additional CSS classes */
345
+ className?: string;
346
+ /** Whether to show icon placeholder @default false */
347
+ showIcon?: boolean;
348
+ } & React.ComponentProps<"div">;
349
+
350
+ /**
351
+ * Props for SidebarMenuSub component (Documentation only - NOT used in component implementation)
352
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
353
+ */
354
+ // eslint-disable-next-line unused-imports/no-unused-vars
355
+ type SidebarMenuSubDocsProps = {
356
+ /** Additional CSS classes */
357
+ className?: string;
358
+ } & React.ComponentProps<"ul">;
359
+
360
+ /**
361
+ * Props for SidebarMenuSubItem component (Documentation only - NOT used in component implementation)
362
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
363
+ */
364
+ // eslint-disable-next-line unused-imports/no-unused-vars
365
+ type SidebarMenuSubItemDocsProps = {
366
+ /** Additional CSS classes */
367
+ className?: string;
368
+ } & React.ComponentProps<"li">;
369
+
370
+ /**
371
+ * Props for SidebarMenuSubButton component (Documentation only - NOT used in component implementation)
372
+ * These types are for documentation generation and should not replace React.ComponentProps inferred types
373
+ */
374
+ // eslint-disable-next-line unused-imports/no-unused-vars
375
+ type SidebarMenuSubButtonDocsProps = {
376
+ /**
377
+ * Render as child element using Radix UI Slot composition pattern @default false
378
+ *
379
+ * When true, the component will not render its default element,
380
+ * instead merging its props with its immediate child. This enables
381
+ * composition with custom elements (like Link components) while
382
+ * preserving the component's behavior and styling.
383
+ */
384
+ asChild?: boolean;
385
+ /** Button size variant @default "md" */
386
+ size?: "sm" | "md";
387
+ /** Whether this submenu item is currently active @default false */
388
+ isActive?: boolean;
389
+ /** Additional CSS classes */
390
+ className?: string;
391
+ } & React.ComponentProps<"a">;
392
+
393
+ // Internal context type (inferred from implementation)
34
394
  type SidebarContextProps = {
35
395
  state: "expanded" | "collapsed";
36
396
  open: boolean;
@@ -175,11 +535,12 @@ function SidebarProvider({
175
535
  style,
176
536
  children,
177
537
  ...props
178
- }: React.ComponentProps<"div"> & {
538
+ }: {
179
539
  defaultOpen?: boolean;
180
540
  open?: boolean;
181
541
  onOpenChange?: (open: boolean) => void;
182
- }) {
542
+ children?: React.ReactNode;
543
+ } & React.ComponentProps<"div">) {
183
544
  const isMobile = useIsMobile();
184
545
  const [openMobile, setOpenMobile] = React.useState(false);
185
546
 
@@ -394,11 +755,13 @@ function Sidebar({
394
755
  className,
395
756
  children,
396
757
  ...props
397
- }: React.ComponentProps<"div"> & {
758
+ }: {
398
759
  side?: "left" | "right";
399
760
  variant?: "sidebar" | "floating" | "inset";
400
761
  collapsible?: "offcanvas" | "icon" | "none";
401
- }) {
762
+ className?: string;
763
+ children?: React.ReactNode;
764
+ } & React.ComponentProps<"div">) {
402
765
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
403
766
 
404
767
  if (collapsible === "none") {
@@ -536,7 +899,10 @@ function SidebarTrigger({
536
899
  className,
537
900
  onClick,
538
901
  ...props
539
- }: React.ComponentProps<typeof Button>) {
902
+ }: {
903
+ className?: string;
904
+ onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;
905
+ } & Omit<React.ComponentProps<typeof Button>, "onClick">) {
540
906
  const { toggleSidebar } = useSidebar();
541
907
 
542
908
  return (
@@ -590,7 +956,12 @@ function SidebarTrigger({
590
956
  * @see {@link SidebarTrigger} - Alternative toggle button
591
957
  * @since 1.0.0
592
958
  */
593
- function SidebarRail({ className, ...props }: React.ComponentProps<"button">) {
959
+ function SidebarRail({
960
+ className,
961
+ ...props
962
+ }: {
963
+ className?: string;
964
+ } & React.ComponentProps<"button">) {
594
965
  const { toggleSidebar } = useSidebar();
595
966
 
596
967
  return (
@@ -666,7 +1037,12 @@ function SidebarRail({ className, ...props }: React.ComponentProps<"button">) {
666
1037
  * @see {@link SidebarProvider} - Required context provider
667
1038
  * @since 1.0.0
668
1039
  */
669
- function SidebarInset({ className, ...props }: React.ComponentProps<"main">) {
1040
+ function SidebarInset({
1041
+ className,
1042
+ ...props
1043
+ }: {
1044
+ className?: string;
1045
+ } & React.ComponentProps<"main">) {
670
1046
  return (
671
1047
  <main
672
1048
  data-slot="sidebar-inset"
@@ -725,7 +1101,9 @@ function SidebarInset({ className, ...props }: React.ComponentProps<"main">) {
725
1101
  function SidebarInput({
726
1102
  className,
727
1103
  ...props
728
- }: React.ComponentProps<typeof Input>) {
1104
+ }: {
1105
+ className?: string;
1106
+ } & React.ComponentProps<typeof Input>) {
729
1107
  return (
730
1108
  <Input
731
1109
  data-slot="sidebar-input"
@@ -797,7 +1175,12 @@ function SidebarInput({
797
1175
  * @see {@link SidebarContent} - Main scrollable content area
798
1176
  * @since 1.0.0
799
1177
  */
800
- function SidebarHeader({ className, ...props }: React.ComponentProps<"div">) {
1178
+ function SidebarHeader({
1179
+ className,
1180
+ ...props
1181
+ }: {
1182
+ className?: string;
1183
+ } & React.ComponentProps<"div">) {
801
1184
  return (
802
1185
  <div
803
1186
  data-slot="sidebar-header"
@@ -860,7 +1243,12 @@ function SidebarHeader({ className, ...props }: React.ComponentProps<"div">) {
860
1243
  * @see {@link SidebarContent} - Main content area
861
1244
  * @since 1.0.0
862
1245
  */
863
- function SidebarFooter({ className, ...props }: React.ComponentProps<"div">) {
1246
+ function SidebarFooter({
1247
+ className,
1248
+ ...props
1249
+ }: {
1250
+ className?: string;
1251
+ } & React.ComponentProps<"div">) {
864
1252
  return (
865
1253
  <div
866
1254
  data-slot="sidebar-footer"
@@ -925,7 +1313,9 @@ function SidebarFooter({ className, ...props }: React.ComponentProps<"div">) {
925
1313
  function SidebarSeparator({
926
1314
  className,
927
1315
  ...props
928
- }: React.ComponentProps<typeof Separator>) {
1316
+ }: {
1317
+ className?: string;
1318
+ } & React.ComponentProps<typeof Separator>) {
929
1319
  return (
930
1320
  <Separator
931
1321
  data-slot="sidebar-separator"
@@ -1000,7 +1390,12 @@ function SidebarSeparator({
1000
1390
  * @see {@link SidebarMenu} - Menu container component
1001
1391
  * @since 1.0.0
1002
1392
  */
1003
- function SidebarContent({ className, ...props }: React.ComponentProps<"div">) {
1393
+ function SidebarContent({
1394
+ className,
1395
+ ...props
1396
+ }: {
1397
+ className?: string;
1398
+ } & React.ComponentProps<"div">) {
1004
1399
  return (
1005
1400
  <div
1006
1401
  data-slot="sidebar-content"
@@ -1064,7 +1459,12 @@ function SidebarContent({ className, ...props }: React.ComponentProps<"div">) {
1064
1459
  * @see {@link SidebarGroupContent} - Group content container
1065
1460
  * @since 1.0.0
1066
1461
  */
1067
- function SidebarGroup({ className, ...props }: React.ComponentProps<"div">) {
1462
+ function SidebarGroup({
1463
+ className,
1464
+ ...props
1465
+ }: {
1466
+ className?: string;
1467
+ } & React.ComponentProps<"div">) {
1068
1468
  return (
1069
1469
  <div
1070
1470
  data-slot="sidebar-group"
@@ -1126,7 +1526,10 @@ function SidebarGroupLabel({
1126
1526
  className,
1127
1527
  asChild = false,
1128
1528
  ...props
1129
- }: React.ComponentProps<"div"> & { asChild?: boolean }) {
1529
+ }: {
1530
+ className?: string;
1531
+ asChild?: boolean;
1532
+ } & React.ComponentProps<"div">) {
1130
1533
  const Comp = asChild ? Slot : "div";
1131
1534
 
1132
1535
  return (
@@ -1200,7 +1603,10 @@ function SidebarGroupAction({
1200
1603
  className,
1201
1604
  asChild = false,
1202
1605
  ...props
1203
- }: React.ComponentProps<"button"> & { asChild?: boolean }) {
1606
+ }: {
1607
+ className?: string;
1608
+ asChild?: boolean;
1609
+ } & React.ComponentProps<"button">) {
1204
1610
  const Comp = asChild ? Slot : "button";
1205
1611
 
1206
1612
  return (
@@ -1279,7 +1685,9 @@ function SidebarGroupAction({
1279
1685
  function SidebarGroupContent({
1280
1686
  className,
1281
1687
  ...props
1282
- }: React.ComponentProps<"div">) {
1688
+ }: {
1689
+ className?: string;
1690
+ } & React.ComponentProps<"div">) {
1283
1691
  return (
1284
1692
  <div
1285
1693
  data-slot="sidebar-group-content"
@@ -1353,7 +1761,12 @@ function SidebarGroupContent({
1353
1761
  * @see {@link SidebarMenuButton} - Interactive menu button
1354
1762
  * @since 1.0.0
1355
1763
  */
1356
- function SidebarMenu({ className, ...props }: React.ComponentProps<"ul">) {
1764
+ function SidebarMenu({
1765
+ className,
1766
+ ...props
1767
+ }: {
1768
+ className?: string;
1769
+ } & React.ComponentProps<"ul">) {
1357
1770
  return (
1358
1771
  <ul
1359
1772
  data-slot="sidebar-menu"
@@ -1436,7 +1849,12 @@ function SidebarMenu({ className, ...props }: React.ComponentProps<"ul">) {
1436
1849
  * @see {@link SidebarMenuBadge} - Badge indicator component
1437
1850
  * @since 1.0.0
1438
1851
  */
1439
- function SidebarMenuItem({ className, ...props }: React.ComponentProps<"li">) {
1852
+ function SidebarMenuItem({
1853
+ className,
1854
+ ...props
1855
+ }: {
1856
+ className?: string;
1857
+ } & React.ComponentProps<"li">) {
1440
1858
  return (
1441
1859
  <li
1442
1860
  data-slot="sidebar-menu-item"
@@ -1447,6 +1865,16 @@ function SidebarMenuItem({ className, ...props }: React.ComponentProps<"li">) {
1447
1865
  );
1448
1866
  }
1449
1867
 
1868
+ /**
1869
+ * SidebarMenuButton variant configuration for visual appearances and sizes
1870
+ *
1871
+ * @variant default - Standard menu button with subtle hover states
1872
+ * @variant outline - Button with border background that highlights on interaction
1873
+ *
1874
+ * @size default - Standard button height (h-8) with text-sm
1875
+ * @size sm - Compact button height (h-7) with text-xs for dense layouts
1876
+ * @size lg - Large button height (h-12) with text-sm, collapses to icon padding when sidebar is collapsed
1877
+ */
1450
1878
  const sidebarMenuButtonVariants = cva(
1451
1879
  "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
1452
1880
  {
@@ -1573,11 +2001,13 @@ function SidebarMenuButton({
1573
2001
  tooltip,
1574
2002
  className,
1575
2003
  ...props
1576
- }: React.ComponentProps<"button"> & {
2004
+ }: {
1577
2005
  asChild?: boolean;
1578
2006
  isActive?: boolean;
1579
2007
  tooltip?: string | React.ComponentProps<typeof TooltipContent>;
1580
- } & VariantProps<typeof sidebarMenuButtonVariants>) {
2008
+ className?: string;
2009
+ } & VariantProps<typeof sidebarMenuButtonVariants> &
2010
+ React.ComponentProps<"button">) {
1581
2011
  const Comp = asChild ? Slot : "button";
1582
2012
  const { isMobile, state } = useSidebar();
1583
2013
 
@@ -1694,10 +2124,11 @@ function SidebarMenuAction({
1694
2124
  asChild = false,
1695
2125
  showOnHover = false,
1696
2126
  ...props
1697
- }: React.ComponentProps<"button"> & {
2127
+ }: {
2128
+ className?: string;
1698
2129
  asChild?: boolean;
1699
2130
  showOnHover?: boolean;
1700
- }) {
2131
+ } & React.ComponentProps<"button">) {
1701
2132
  const Comp = asChild ? Slot : "button";
1702
2133
 
1703
2134
  return (
@@ -1789,7 +2220,9 @@ function SidebarMenuAction({
1789
2220
  function SidebarMenuBadge({
1790
2221
  className,
1791
2222
  ...props
1792
- }: React.ComponentProps<"div">) {
2223
+ }: {
2224
+ className?: string;
2225
+ } & React.ComponentProps<"div">) {
1793
2226
  return (
1794
2227
  <div
1795
2228
  data-slot="sidebar-menu-badge"
@@ -1884,9 +2317,10 @@ function SidebarMenuSkeleton({
1884
2317
  className,
1885
2318
  showIcon = false,
1886
2319
  ...props
1887
- }: React.ComponentProps<"div"> & {
2320
+ }: {
2321
+ className?: string;
1888
2322
  showIcon?: boolean;
1889
- }) {
2323
+ } & React.ComponentProps<"div">) {
1890
2324
  // Random width between 50 to 90%.
1891
2325
  const width = `${Math.floor(Math.random() * 40) + 50}%`;
1892
2326
 
@@ -1995,7 +2429,12 @@ function SidebarMenuSkeleton({
1995
2429
  * @see {@link SidebarMenuItem} - Parent menu item
1996
2430
  * @since 1.0.0
1997
2431
  */
1998
- function SidebarMenuSub({ className, ...props }: React.ComponentProps<"ul">) {
2432
+ function SidebarMenuSub({
2433
+ className,
2434
+ ...props
2435
+ }: {
2436
+ className?: string;
2437
+ } & React.ComponentProps<"ul">) {
1999
2438
  return (
2000
2439
  <ul
2001
2440
  data-slot="sidebar-menu-sub"
@@ -2059,7 +2498,9 @@ function SidebarMenuSub({ className, ...props }: React.ComponentProps<"ul">) {
2059
2498
  function SidebarMenuSubItem({
2060
2499
  className,
2061
2500
  ...props
2062
- }: React.ComponentProps<"li">) {
2501
+ }: {
2502
+ className?: string;
2503
+ } & React.ComponentProps<"li">) {
2063
2504
  return (
2064
2505
  <li
2065
2506
  data-slot="sidebar-menu-sub-item"
@@ -2157,11 +2598,12 @@ function SidebarMenuSubButton({
2157
2598
  isActive = false,
2158
2599
  className,
2159
2600
  ...props
2160
- }: React.ComponentProps<"a"> & {
2601
+ }: {
2161
2602
  asChild?: boolean;
2162
2603
  size?: "sm" | "md";
2163
2604
  isActive?: boolean;
2164
- }) {
2605
+ className?: string;
2606
+ } & React.ComponentProps<"a">) {
2165
2607
  const Comp = asChild ? Slot : "a";
2166
2608
 
2167
2609
  return (