@classytic/fluid 0.4.2 → 0.5.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 (51) hide show
  1. package/README.md +21 -1
  2. package/dist/client/calendar.d.mts +1 -2
  3. package/dist/client/calendar.mjs +4 -4
  4. package/dist/client/color-picker.d.mts +41 -25
  5. package/dist/client/color-picker.mjs +121 -73
  6. package/dist/client/core.d.mts +243 -557
  7. package/dist/client/core.mjs +351 -1462
  8. package/dist/client/error.d.mts +41 -41
  9. package/dist/client/error.mjs +35 -35
  10. package/dist/client/gallery.d.mts +33 -33
  11. package/dist/client/gallery.mjs +128 -127
  12. package/dist/client/hooks.d.mts +57 -39
  13. package/dist/client/hooks.mjs +29 -7
  14. package/dist/client/spreadsheet.d.mts +28 -28
  15. package/dist/client/spreadsheet.mjs +77 -77
  16. package/dist/client/table.d.mts +66 -33
  17. package/dist/client/table.mjs +87 -54
  18. package/dist/client/theme.mjs +1 -1
  19. package/dist/command.d.mts +6 -4
  20. package/dist/command.mjs +3 -3
  21. package/dist/compact.d.mts +97 -95
  22. package/dist/compact.mjs +336 -322
  23. package/dist/dashboard.d.mts +614 -422
  24. package/dist/dashboard.mjs +1051 -762
  25. package/dist/{dropdown-wrapper-B86u9Fri.mjs → dropdown-wrapper-B9nRDUlz.mjs} +25 -35
  26. package/dist/forms.d.mts +1037 -972
  27. package/dist/forms.mjs +2849 -2721
  28. package/dist/index.d.mts +218 -152
  29. package/dist/index.mjs +357 -264
  30. package/dist/layouts.d.mts +94 -94
  31. package/dist/layouts.mjs +115 -110
  32. package/dist/phone-input-B9_XPNvv.mjs +429 -0
  33. package/dist/phone-input-CLH_UjQZ.d.mts +31 -0
  34. package/dist/{search-context-DR7DBs7S.mjs → search-context-1g3ZmOvx.mjs} +1 -1
  35. package/dist/search.d.mts +168 -164
  36. package/dist/search.mjs +305 -301
  37. package/dist/{sheet-wrapper-C13Y-Q6w.mjs → sheet-wrapper-B2uxookb.mjs} +1 -1
  38. package/dist/timeline-Bgu1mIe9.d.mts +373 -0
  39. package/dist/timeline-HJtWf4Op.mjs +804 -0
  40. package/dist/{use-base-search-BGgWnWaF.d.mts → use-base-search-DFC4QKYU.d.mts} +1 -1
  41. package/dist/{use-media-query-BnVNIKT4.mjs → use-media-query-ChLfFChU.mjs} +6 -7
  42. package/package.json +2 -2
  43. /package/dist/{api-pagination-CJ0vR_w6.d.mts → api-pagination-C30ser2L.d.mts} +0 -0
  44. /package/dist/{filter-utils-DqMmy_v-.mjs → filter-utils-BGIvtq1R.mjs} +0 -0
  45. /package/dist/{filter-utils-IZ0GtuPo.d.mts → filter-utils-DOFTBWm1.d.mts} +0 -0
  46. /package/dist/{use-debounce-xmZucz5e.mjs → use-debounce-BNoNiEon.mjs} +0 -0
  47. /package/dist/{use-keyboard-shortcut-Bl6YM5Q7.mjs → use-keyboard-shortcut-C_Vk-36P.mjs} +0 -0
  48. /package/dist/{use-keyboard-shortcut-_mRCh3QO.d.mts → use-keyboard-shortcut-Q4CSPzSI.d.mts} +0 -0
  49. /package/dist/{use-mobile-BX3SQVo2.mjs → use-mobile-CnEmFiQx.mjs} +0 -0
  50. /package/dist/{use-scroll-detection-CsgsQYvy.mjs → use-scroll-detection-BKfqkmEC.mjs} +0 -0
  51. /package/dist/{utils-CDue7cEt.d.mts → utils-rqvYP1by.d.mts} +0 -0
@@ -1,9 +1,70 @@
1
- import { t as cn } from "./utils-CDue7cEt.mjs";
2
- import * as react_jsx_runtime0 from "react/jsx-runtime";
1
+ import { t as cn } from "./utils-rqvYP1by.mjs";
3
2
  import * as React$1 from "react";
4
3
  import React, { ReactNode } from "react";
4
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
5
5
  import { LucideIcon } from "lucide-react";
6
6
 
7
+ //#region src/components/client-only.d.ts
8
+ interface ClientOnlyProps {
9
+ children: ReactNode;
10
+ fallback?: ReactNode;
11
+ }
12
+ /**
13
+ * Renders children only on the client after hydration.
14
+ * Use for components with Base UI auto-generated IDs that cause hydration mismatches.
15
+ */
16
+ declare function ClientOnly({
17
+ children,
18
+ fallback
19
+ }: ClientOnlyProps): ReactNode;
20
+ //#endregion
21
+ //#region src/dashboard/dashboard-header.d.ts
22
+ interface BreadcrumbItem {
23
+ label: string;
24
+ href?: string;
25
+ current?: boolean;
26
+ }
27
+ interface DashboardHeaderProps {
28
+ /** Breadcrumb items */
29
+ breadcrumbs?: BreadcrumbItem[];
30
+ /** Content to show on the left (after breadcrumbs) */
31
+ leftContent?: React$1.ReactNode;
32
+ /** Content to show on the right (actions, mode toggle, etc.) */
33
+ rightContent?: React$1.ReactNode;
34
+ /** Whether to show sidebar trigger */
35
+ showSidebarTrigger?: boolean;
36
+ /** Custom trigger element (rendered before breadcrumbs, replaces SidebarTrigger) */
37
+ customTrigger?: React$1.ReactNode;
38
+ /** Additional className */
39
+ className?: string;
40
+ /** Custom content (replaces default breadcrumb) */
41
+ children?: React$1.ReactNode;
42
+ }
43
+ /**
44
+ * DashboardHeader - Top header bar for dashboard pages.
45
+ * Includes sidebar trigger, breadcrumbs, and action slots.
46
+ */
47
+ declare function DashboardHeader({
48
+ breadcrumbs,
49
+ leftContent,
50
+ rightContent,
51
+ showSidebarTrigger,
52
+ customTrigger,
53
+ className,
54
+ children
55
+ }: DashboardHeaderProps): react_jsx_runtime0.JSX.Element;
56
+ //#endregion
57
+ //#region src/hooks/use-dashboard-breadcrumbs.d.ts
58
+ interface UseDashboardBreadcrumbsOptions {
59
+ /** Label overrides keyed by slug segment. e.g., { "platform-config": "Settings" } */
60
+ labelOverrides?: Record<string, string>;
61
+ /** Segments to skip/hide from breadcrumbs */
62
+ hideSegments?: string[];
63
+ /** Custom base label. Default: "Home" */
64
+ baseLabel?: string;
65
+ }
66
+ declare function useDashboardBreadcrumbs(basePath: string, options?: UseDashboardBreadcrumbsOptions): BreadcrumbItem[];
67
+ //#endregion
7
68
  //#region src/dashboard/nav-utils.d.ts
8
69
  /**
9
70
  * NavPermissions - Mixin applied to all nav item types.
@@ -95,6 +156,30 @@ interface MiniSidebarGroup {
95
156
  title?: string;
96
157
  items: MiniSidebarItem[];
97
158
  }
159
+ interface RouteMatchable {
160
+ url: string;
161
+ }
162
+ /**
163
+ * matchRoute — Check if a pathname matches a URL.
164
+ * Exact match or prefix match with trailing slash boundary.
165
+ */
166
+ declare function matchRoute(pathname: string, url: string): boolean;
167
+ /**
168
+ * findActiveItem — Find the most specific matching item from a flat list.
169
+ * Returns the item with the longest matching URL (avoids `/settings` matching `/settings/users`).
170
+ */
171
+ declare function findActiveItem<T extends RouteMatchable>(items: T[], pathname: string): T | null;
172
+ /**
173
+ * findActiveCategory — Find the category containing the best-matching item.
174
+ * Returns { category, item } or null.
175
+ */
176
+ declare function findActiveCategory<TItem extends RouteMatchable, TCategory extends {
177
+ id: string;
178
+ items: TItem[];
179
+ }>(categories: TCategory[], pathname: string): {
180
+ category: TCategory;
181
+ item: TItem;
182
+ } | null;
98
183
  /**
99
184
  * resolveNavigation — Filter NavGroup[] by permissions and resolve dynamic badges.
100
185
  * For InsetSidebar, FloatingSidebar, and any component using NavGroup[].
@@ -117,317 +202,164 @@ declare function resolveCategories<TItem extends NavPermissions & {
117
202
  items: TItem[];
118
203
  }>(categories: TCategory[], ctx?: unknown): TCategory[];
119
204
  //#endregion
120
- //#region src/dashboard/header-section.d.ts
121
- interface HeaderAction {
122
- text: string;
123
- onClick?: () => void;
124
- disabled?: boolean;
125
- variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
126
- size?: "default" | "sm" | "lg" | "icon";
127
- className?: string;
128
- icon?: LucideIcon;
129
- iconPosition?: "left" | "right";
130
- loadingText?: string;
131
- loading?: boolean;
132
- }
133
- interface HeaderBadge {
134
- text: string;
135
- variant?: "default" | "secondary" | "destructive" | "outline";
136
- className?: string;
205
+ //#region src/dashboard/sidebar-user-menu.d.ts
206
+ interface UserData {
207
+ name: string;
208
+ email: string;
209
+ avatar?: string;
137
210
  }
138
- interface HeaderMetadata {
139
- text: string;
211
+ interface UserMenuItem {
212
+ label: string;
140
213
  icon?: LucideIcon;
214
+ href?: string;
215
+ onClick?: () => void;
216
+ separator?: boolean;
141
217
  }
142
- interface HeaderSectionProps {
143
- title?: string;
144
- description?: string;
145
- actions?: HeaderAction[] | null;
146
- icon?: LucideIcon | null;
147
- iconClassName?: string;
148
- loading?: boolean;
149
- variant?: "default" | "compact" | "hero" | "minimal";
218
+ interface SidebarUserMenuProps {
219
+ /** User data to display */
220
+ user: UserData;
221
+ /** Menu items (account, settings, etc.) */
222
+ menuItems?: UserMenuItem[];
223
+ /** Logout handler */
224
+ onLogout?: () => void;
225
+ /** Additional className */
150
226
  className?: string;
151
- badge?: HeaderBadge | ReactNode;
152
- breadcrumbs?: ReactNode;
153
- metadata?: HeaderMetadata[];
154
- children?: ReactNode;
155
227
  }
156
- declare function HeaderSection({
157
- title,
158
- description,
159
- actions,
160
- icon: Icon,
161
- iconClassName,
162
- loading,
163
- variant,
164
- className,
165
- badge,
166
- breadcrumbs,
167
- metadata,
168
- children
169
- }: HeaderSectionProps): react_jsx_runtime0.JSX.Element;
228
+ /**
229
+ * SidebarUserMenu - User avatar and dropdown menu for sidebar footer.
230
+ * Accepts handlers for logout and custom menu items.
231
+ */
232
+ declare function SidebarUserMenu({
233
+ user,
234
+ menuItems,
235
+ onLogout,
236
+ className
237
+ }: SidebarUserMenuProps): react_jsx_runtime0.JSX.Element;
170
238
  //#endregion
171
- //#region src/dashboard/page-header.d.ts
172
- interface BreadcrumbItemData {
173
- label: string;
239
+ //#region src/dashboard/presets/dual-sidebar/types.d.ts
240
+ interface DualSidebarBrand {
241
+ title: string;
242
+ icon: React$1.ReactNode;
174
243
  href?: string;
175
- current?: boolean;
176
244
  }
177
- interface PageHeaderProps {
178
- items: BreadcrumbItemData[];
245
+ interface DualSidebarUser {
246
+ data: UserData;
247
+ menuItems?: UserMenuItem[];
248
+ onLogout?: () => void;
249
+ }
250
+ interface DualSidebarProps {
251
+ /** Brand configuration */
252
+ brand: DualSidebarBrand;
253
+ /** Main categories with their items */
254
+ categories: DualSidebarCategory[];
255
+ /** User menu configuration */
256
+ user?: DualSidebarUser;
257
+ /** Initially active category ID (uncontrolled) */
258
+ defaultCategoryId?: string;
259
+ /** Controlled active category ID. When provided, the component is controlled. */
260
+ activeCategoryId?: string;
261
+ /** Callback when category changes (works in both controlled and uncontrolled modes) */
262
+ onCategoryChange?: (categoryId: string) => void;
263
+ /** Whether the expanded panel starts collapsed (uncontrolled) */
264
+ defaultCollapsed?: boolean;
265
+ /** Controlled collapsed state. When provided, the component is controlled. */
266
+ collapsed?: boolean;
267
+ /** Callback when collapsed state changes (works in both controlled and uncontrolled modes) */
268
+ onCollapsedChange?: (collapsed: boolean) => void;
269
+ /** Controlled mobile sheet open state */
270
+ mobileOpen?: boolean;
271
+ /** Callback when mobile sheet state changes */
272
+ onMobileOpenChange?: (open: boolean) => void;
273
+ /** Custom content rendered in the expanded panel header (below brand, above nav items).
274
+ * Use for "Create" buttons, org/workspace switchers, etc. */
275
+ headerContent?: React$1.ReactNode;
276
+ /** Custom content rendered at the bottom of the expanded panel (above user menu) */
277
+ footerContent?: React$1.ReactNode;
278
+ /** Rail color variant */
279
+ railVariant?: "default" | "dark" | "primary" | "muted";
280
+ /** "inset" = rounded with padding (default). "flush" = edge-to-edge, no rounding. */
281
+ sidebarStyle?: "inset" | "flush";
282
+ /** Accessibility label */
283
+ ariaLabel?: string;
284
+ /** Additional className for outer container */
179
285
  className?: string;
180
- actions?: React.ReactNode;
181
286
  }
182
- declare function PageHeader({
183
- items,
184
- className,
185
- actions
186
- }: PageHeaderProps): react_jsx_runtime0.JSX.Element;
187
287
  //#endregion
188
- //#region src/dashboard/dashboard-content.d.ts
189
- interface DashboardContentProps {
190
- /** Content to render inside the dashboard area */
191
- children: React$1.ReactNode;
192
- /** Additional className for the outer wrapper */
288
+ //#region src/dashboard/presets/dual-sidebar/dual-sidebar.d.ts
289
+ /**
290
+ * DualSidebar - A sidebar with icon rail and collapsible expanded panel.
291
+ * Mimics the inset sidebar variant structure for consistent styling.
292
+ */
293
+ declare function DualSidebar({
294
+ brand,
295
+ categories,
296
+ user,
297
+ defaultCategoryId,
298
+ activeCategoryId: controlledCategoryId,
299
+ onCategoryChange,
300
+ defaultCollapsed,
301
+ collapsed: controlledCollapsed,
302
+ onCollapsedChange,
303
+ mobileOpen: controlledMobileOpen,
304
+ onMobileOpenChange,
305
+ headerContent,
306
+ footerContent,
307
+ railVariant,
308
+ sidebarStyle,
309
+ ariaLabel,
310
+ className
311
+ }: DualSidebarProps): react_jsx_runtime0.JSX.Element;
312
+ //#endregion
313
+ //#region src/dashboard/project-switcher.d.ts
314
+ interface ProjectItem {
315
+ /** Unique identifier */
316
+ id: string;
317
+ /** Display name */
318
+ name: string;
319
+ /** Short code or identifier */
320
+ code?: string;
321
+ /** Optional type badge */
322
+ type?: string;
323
+ /** Is this the default project */
324
+ isDefault?: boolean;
325
+ /** Is this project active */
326
+ isActive?: boolean;
327
+ /** Optional subtitle/description */
328
+ subtitle?: string;
329
+ }
330
+ interface ProjectSwitcherProps {
331
+ /** List of available projects */
332
+ items: ProjectItem[];
333
+ /** Currently selected project */
334
+ selected?: ProjectItem;
335
+ /** Callback when a project is selected */
336
+ onSelect: (project: ProjectItem) => void;
337
+ /** Whether the data is loading */
338
+ isLoading?: boolean;
339
+ /** Label shown in dropdown header */
340
+ label?: string;
341
+ /** Icon to display (defaults to Building2) */
342
+ icon?: LucideIcon;
343
+ /** Additional className */
193
344
  className?: string;
194
- /** Enable @container queries on the content area */
195
- container?: boolean | string;
196
- /** Horizontal padding — defaults to "md" */
197
- padding?: "none" | "sm" | "md" | "lg";
345
+ /** Whether to show as disabled (single item) */
346
+ disabled?: boolean;
347
+ /**
348
+ * Render variant:
349
+ * - "sidebar": Uses SidebarMenu components, requires SidebarProvider context
350
+ * - "standalone": Uses Button, works anywhere (headers, toolbars, etc.)
351
+ */
352
+ variant?: "sidebar" | "standalone";
353
+ /** Size for standalone variant (ignored in sidebar variant) */
354
+ size?: "sm" | "default";
355
+ /** Render custom item content */
356
+ renderItem?: (item: ProjectItem, isSelected: boolean) => React$1.ReactNode;
198
357
  }
199
358
  /**
200
- * DashboardContent Safe content wrapper for sidebar layouts.
201
- *
202
- * Prevents the classic flexbox overflow bug where children with
203
- * `max-w-*` or grid layouts extend beyond the available space
204
- * (behind the sidebar) by propagating `min-w-0` through the
205
- * flex chain.
206
- *
207
- * **Important**: `SidebarInset` also needs `min-w-0` for the
208
- * width constraint to propagate correctly from the flex parent.
209
- * Pass `className="min-w-0"` to `SidebarInset`.
359
+ * ProjectSwitcher - Generic project/workspace/branch switcher.
360
+ * Works for any entity that needs switching functionality.
210
361
  *
211
- * @example
212
- * ```tsx
213
- * <SidebarProvider>
214
- * <AppSidebar />
215
- * <SidebarInset className="min-w-0">
216
- * <DashboardContent>
217
- * <PageHeader items={breadcrumbs} />
218
- * <MyPageContent />
219
- * </DashboardContent>
220
- * </SidebarInset>
221
- * </SidebarProvider>
222
- * ```
223
- */
224
- declare function DashboardContent({
225
- children,
226
- className,
227
- container,
228
- padding
229
- }: DashboardContentProps): react_jsx_runtime0.JSX.Element;
230
- //#endregion
231
- //#region src/dashboard/dashboard-page-layout.d.ts
232
- interface DashboardPageLayoutProps {
233
- /** Breadcrumb items for the page header */
234
- breadcrumbs: BreadcrumbItemData[];
235
- /** Action buttons rendered in the page header */
236
- actions?: ReactNode;
237
- /** Whether to wrap children in Suspense (default: true) */
238
- suspense?: boolean;
239
- /** Custom Suspense fallback. Defaults to a spinner. */
240
- fallback?: ReactNode;
241
- /** Additional className for the content wrapper */
242
- className?: string;
243
- children: ReactNode;
244
- }
245
- /**
246
- * DashboardPageLayout — Standard page shell for dashboard pages.
247
- * Combines PageHeader (breadcrumbs + actions) with optional Suspense boundary.
248
- *
249
- * @example
250
- * ```tsx
251
- * <DashboardPageLayout
252
- * breadcrumbs={[
253
- * { label: "Dashboard", href: "/dashboard" },
254
- * { label: "Posts", current: true },
255
- * ]}
256
- * actions={<Button>New Post</Button>}
257
- * fallback={<SkeletonTable rows={5} />}
258
- * >
259
- * <PostsList />
260
- * </DashboardPageLayout>
261
- * ```
262
- */
263
- declare function DashboardPageLayout({
264
- breadcrumbs,
265
- actions,
266
- suspense,
267
- fallback,
268
- className,
269
- children
270
- }: DashboardPageLayoutProps): react_jsx_runtime0.JSX.Element;
271
- //#endregion
272
- //#region src/dashboard/sidebar-brand.d.ts
273
- interface SidebarBrandProps {
274
- /** Brand title text */
275
- title: string;
276
- /** Brand icon/logo element */
277
- icon: React$1.ReactNode;
278
- /** Link href (defaults to "/") */
279
- href?: string;
280
- /** Additional className */
281
- className?: string;
282
- /** Tooltip text when collapsed (defaults to title) */
283
- tooltip?: string;
284
- }
285
- /**
286
- * SidebarBrand - Logo and title section for dashboard sidebar.
287
- * Automatically handles collapsed state styling.
288
- */
289
- declare function SidebarBrand({
290
- title,
291
- icon,
292
- href,
293
- className,
294
- tooltip
295
- }: SidebarBrandProps): react_jsx_runtime0.JSX.Element;
296
- //#endregion
297
- //#region src/dashboard/sidebar-nav.d.ts
298
- interface SidebarNavProps {
299
- /** Navigation groups to render */
300
- groups: NavGroup[];
301
- /** Additional className */
302
- className?: string;
303
- /** Callback when a nav item is clicked */
304
- onItemClick?: (item: NavItem) => void;
305
- }
306
- interface SidebarNavGroupProps {
307
- /** Group title (optional) */
308
- title?: string;
309
- /** Navigation items in this group */
310
- items: NavItem[];
311
- /** Additional className */
312
- className?: string;
313
- /** Callback when an item is clicked */
314
- onItemClick?: (item: NavItem) => void;
315
- }
316
- interface SidebarNavItemProps {
317
- /** The navigation item data */
318
- item: NavItem;
319
- /** Callback when clicked */
320
- onClick?: () => void;
321
- }
322
- /**
323
- * SidebarNavItem - Single navigation item with optional sub-items.
324
- */
325
- declare function SidebarNavItem({
326
- item,
327
- onClick
328
- }: SidebarNavItemProps): react_jsx_runtime0.JSX.Element;
329
- /**
330
- * SidebarNavGroup - A group of navigation items with optional title.
331
- */
332
- declare function SidebarNavGroup({
333
- title,
334
- items,
335
- className,
336
- onItemClick
337
- }: SidebarNavGroupProps): react_jsx_runtime0.JSX.Element;
338
- /**
339
- * SidebarNav - Complete navigation section with multiple groups.
340
- */
341
- declare function SidebarNav({
342
- groups,
343
- className,
344
- onItemClick
345
- }: SidebarNavProps): react_jsx_runtime0.JSX.Element;
346
- //#endregion
347
- //#region src/dashboard/sidebar-user-menu.d.ts
348
- interface UserData {
349
- name: string;
350
- email: string;
351
- avatar?: string;
352
- }
353
- interface UserMenuItem {
354
- label: string;
355
- icon?: LucideIcon;
356
- href?: string;
357
- onClick?: () => void;
358
- separator?: boolean;
359
- }
360
- interface SidebarUserMenuProps {
361
- /** User data to display */
362
- user: UserData;
363
- /** Menu items (account, settings, etc.) */
364
- menuItems?: UserMenuItem[];
365
- /** Logout handler */
366
- onLogout?: () => void;
367
- /** Additional className */
368
- className?: string;
369
- }
370
- /**
371
- * SidebarUserMenu - User avatar and dropdown menu for sidebar footer.
372
- * Accepts handlers for logout and custom menu items.
373
- */
374
- declare function SidebarUserMenu({
375
- user,
376
- menuItems,
377
- onLogout,
378
- className
379
- }: SidebarUserMenuProps): react_jsx_runtime0.JSX.Element;
380
- //#endregion
381
- //#region src/dashboard/project-switcher.d.ts
382
- interface ProjectItem {
383
- /** Unique identifier */
384
- id: string;
385
- /** Display name */
386
- name: string;
387
- /** Short code or identifier */
388
- code?: string;
389
- /** Optional type badge */
390
- type?: string;
391
- /** Is this the default project */
392
- isDefault?: boolean;
393
- /** Is this project active */
394
- isActive?: boolean;
395
- /** Optional subtitle/description */
396
- subtitle?: string;
397
- }
398
- interface ProjectSwitcherProps {
399
- /** List of available projects */
400
- items: ProjectItem[];
401
- /** Currently selected project */
402
- selected?: ProjectItem;
403
- /** Callback when a project is selected */
404
- onSelect: (project: ProjectItem) => void;
405
- /** Whether the data is loading */
406
- isLoading?: boolean;
407
- /** Label shown in dropdown header */
408
- label?: string;
409
- /** Icon to display (defaults to Building2) */
410
- icon?: LucideIcon;
411
- /** Additional className */
412
- className?: string;
413
- /** Whether to show as disabled (single item) */
414
- disabled?: boolean;
415
- /**
416
- * Render variant:
417
- * - "sidebar": Uses SidebarMenu components, requires SidebarProvider context
418
- * - "standalone": Uses Button, works anywhere (headers, toolbars, etc.)
419
- */
420
- variant?: "sidebar" | "standalone";
421
- /** Size for standalone variant (ignored in sidebar variant) */
422
- size?: "sm" | "default";
423
- /** Render custom item content */
424
- renderItem?: (item: ProjectItem, isSelected: boolean) => React$1.ReactNode;
425
- }
426
- /**
427
- * ProjectSwitcher - Generic project/workspace/branch switcher.
428
- * Works for any entity that needs switching functionality.
429
- *
430
- * @example Sidebar usage (inside SidebarProvider)
362
+ * @example Sidebar usage (inside SidebarProvider)
431
363
  * ```tsx
432
364
  * <ProjectSwitcher
433
365
  * items={projects}
@@ -461,74 +393,40 @@ declare function ProjectSwitcher({
461
393
  renderItem
462
394
  }: ProjectSwitcherProps): react_jsx_runtime0.JSX.Element | null;
463
395
  //#endregion
464
- //#region src/dashboard/dashboard-header.d.ts
465
- interface BreadcrumbItem {
466
- label: string;
396
+ //#region src/dashboard/presets/floating-sidebar.d.ts
397
+ interface FloatingSidebarBrand {
398
+ title: string;
399
+ icon: React$1.ReactNode;
467
400
  href?: string;
468
- current?: boolean;
469
401
  }
470
- interface DashboardHeaderProps {
471
- /** Breadcrumb items */
472
- breadcrumbs?: BreadcrumbItem[];
473
- /** Content to show on the left (after breadcrumbs) */
474
- leftContent?: React$1.ReactNode;
475
- /** Content to show on the right (actions, mode toggle, etc.) */
476
- rightContent?: React$1.ReactNode;
477
- /** Whether to show sidebar trigger */
478
- showSidebarTrigger?: boolean;
479
- /** Custom trigger element (rendered before breadcrumbs, replaces SidebarTrigger) */
480
- customTrigger?: React$1.ReactNode;
481
- /** Additional className */
482
- className?: string;
483
- /** Custom content (replaces default breadcrumb) */
484
- children?: React$1.ReactNode;
402
+ interface FloatingSidebarProject {
403
+ items: ProjectItem[];
404
+ selected?: ProjectItem;
405
+ onSelect: (project: ProjectItem) => void;
406
+ isLoading?: boolean;
407
+ label?: string;
408
+ icon?: LucideIcon;
485
409
  }
486
- /**
487
- * DashboardHeader - Top header bar for dashboard pages.
488
- * Includes sidebar trigger, breadcrumbs, and action slots.
489
- */
490
- declare function DashboardHeader({
491
- breadcrumbs,
492
- leftContent,
493
- rightContent,
494
- showSidebarTrigger,
495
- customTrigger,
496
- className,
497
- children
498
- }: DashboardHeaderProps): react_jsx_runtime0.JSX.Element;
499
- //#endregion
500
- //#region src/dashboard/presets/inset-sidebar.d.ts
501
- interface InsetSidebarBrand {
502
- title: string;
503
- icon: React$1.ReactNode;
504
- href?: string;
505
- }
506
- interface InsetSidebarProject {
507
- items: ProjectItem[];
508
- selected?: ProjectItem;
509
- onSelect: (project: ProjectItem) => void;
510
- isLoading?: boolean;
511
- label?: string;
512
- icon?: LucideIcon;
513
- }
514
- interface InsetSidebarUser {
410
+ interface FloatingSidebarUser {
515
411
  data: UserData;
516
412
  menuItems?: UserMenuItem[];
517
413
  onLogout?: () => void;
518
414
  }
519
- interface InsetSidebarProps {
415
+ interface FloatingSidebarProps {
520
416
  /** Brand configuration */
521
- brand: InsetSidebarBrand;
417
+ brand: FloatingSidebarBrand;
522
418
  /** Navigation groups */
523
419
  navigation: NavGroup[];
524
420
  /** Secondary navigation (shown at bottom above user) */
525
421
  secondaryNavigation?: NavGroup[];
526
422
  /** Project/workspace switcher configuration */
527
- project?: InsetSidebarProject;
423
+ project?: FloatingSidebarProject;
528
424
  /** User menu configuration */
529
- user?: InsetSidebarUser;
425
+ user?: FloatingSidebarUser;
530
426
  /** Custom content to render in header (after brand/project switcher) */
531
427
  headerContent?: React$1.ReactNode;
428
+ /** Side of the screen */
429
+ side?: "left" | "right";
532
430
  /** Accessibility label for the sidebar */
533
431
  ariaLabel?: string;
534
432
  /** Additional className */
@@ -537,81 +435,30 @@ interface InsetSidebarProps {
537
435
  children?: React$1.ReactNode;
538
436
  }
539
437
  /**
540
- * InsetSidebar - Complete sidebar preset with inset variant.
541
- * The standard dashboard sidebar with collapsible to icons.
438
+ * FloatingSidebar - Floating variant sidebar with rounded corners and shadow.
439
+ * Hovers above the content area like Linear / Notion style.
440
+ * Collapses to icon-only rail on desktop.
542
441
  */
543
- declare function InsetSidebar({
442
+ declare function FloatingSidebar({
544
443
  brand,
545
444
  navigation,
546
445
  secondaryNavigation,
547
446
  project,
548
447
  user,
549
448
  headerContent,
449
+ side,
550
450
  ariaLabel,
551
451
  className,
552
452
  children
553
- }: InsetSidebarProps): react_jsx_runtime0.JSX.Element;
554
- //#endregion
555
- //#region src/dashboard/presets/dual-sidebar.d.ts
556
- interface DualSidebarBrand {
557
- title: string;
558
- icon: React$1.ReactNode;
559
- href?: string;
560
- }
561
- interface DualSidebarUser {
562
- data: UserData;
563
- menuItems?: UserMenuItem[];
564
- onLogout?: () => void;
565
- }
566
- interface DualSidebarProps {
567
- /** Brand configuration */
568
- brand: DualSidebarBrand;
569
- /** Main categories with their items */
570
- categories: DualSidebarCategory[];
571
- /** User menu configuration */
572
- user?: DualSidebarUser;
573
- /** Initially active category ID */
574
- defaultCategoryId?: string;
575
- /** Callback when category changes */
576
- onCategoryChange?: (categoryId: string) => void;
577
- /** Whether the expanded panel starts collapsed */
578
- defaultCollapsed?: boolean;
579
- /** Controlled mobile sheet open state */
580
- mobileOpen?: boolean;
581
- /** Callback when mobile sheet state changes */
582
- onMobileOpenChange?: (open: boolean) => void;
583
- /** Rail color variant */
584
- railVariant?: "default" | "dark" | "primary" | "muted";
585
- /** Accessibility label */
586
- ariaLabel?: string;
587
- /** Additional className for outer container */
588
- className?: string;
589
- }
590
- /**
591
- * DualSidebar - A sidebar with icon rail and collapsible expanded panel.
592
- * Mimics the inset sidebar variant structure for consistent styling.
593
- */
594
- declare function DualSidebar({
595
- brand,
596
- categories,
597
- user,
598
- defaultCategoryId,
599
- onCategoryChange,
600
- defaultCollapsed,
601
- mobileOpen: controlledMobileOpen,
602
- onMobileOpenChange,
603
- railVariant,
604
- ariaLabel,
605
- className
606
- }: DualSidebarProps): react_jsx_runtime0.JSX.Element;
453
+ }: FloatingSidebarProps): react_jsx_runtime0.JSX.Element;
607
454
  //#endregion
608
- //#region src/dashboard/presets/floating-sidebar.d.ts
609
- interface FloatingSidebarBrand {
455
+ //#region src/dashboard/presets/inset-sidebar.d.ts
456
+ interface InsetSidebarBrand {
610
457
  title: string;
611
458
  icon: React$1.ReactNode;
612
459
  href?: string;
613
460
  }
614
- interface FloatingSidebarProject {
461
+ interface InsetSidebarProject {
615
462
  items: ProjectItem[];
616
463
  selected?: ProjectItem;
617
464
  onSelect: (project: ProjectItem) => void;
@@ -619,25 +466,29 @@ interface FloatingSidebarProject {
619
466
  label?: string;
620
467
  icon?: LucideIcon;
621
468
  }
622
- interface FloatingSidebarUser {
469
+ interface InsetSidebarUser {
623
470
  data: UserData;
624
471
  menuItems?: UserMenuItem[];
625
472
  onLogout?: () => void;
626
473
  }
627
- interface FloatingSidebarProps {
474
+ interface InsetSidebarProps {
628
475
  /** Brand configuration */
629
- brand: FloatingSidebarBrand;
476
+ brand: InsetSidebarBrand;
630
477
  /** Navigation groups */
631
478
  navigation: NavGroup[];
632
479
  /** Secondary navigation (shown at bottom above user) */
633
480
  secondaryNavigation?: NavGroup[];
634
481
  /** Project/workspace switcher configuration */
635
- project?: FloatingSidebarProject;
482
+ project?: InsetSidebarProject;
636
483
  /** User menu configuration */
637
- user?: FloatingSidebarUser;
484
+ user?: InsetSidebarUser;
638
485
  /** Custom content to render in header (after brand/project switcher) */
639
486
  headerContent?: React$1.ReactNode;
640
- /** Side of the screen */
487
+ /** Sidebar visual style. "inset" = rounded with padding. "flush" = edge-to-edge, no rounding. Default: "inset" */
488
+ sidebarStyle?: "inset" | "flush";
489
+ /** Nav item height density. "comfortable" = taller items like KIE AI. Default: "default" */
490
+ density?: "compact" | "default" | "comfortable";
491
+ /** Sidebar position */
641
492
  side?: "left" | "right";
642
493
  /** Accessibility label for the sidebar */
643
494
  ariaLabel?: string;
@@ -647,22 +498,23 @@ interface FloatingSidebarProps {
647
498
  children?: React$1.ReactNode;
648
499
  }
649
500
  /**
650
- * FloatingSidebar - Floating variant sidebar with rounded corners and shadow.
651
- * Hovers above the content area like Linear / Notion style.
652
- * Collapses to icon-only rail on desktop.
501
+ * InsetSidebar - Complete sidebar preset with inset variant.
502
+ * The standard dashboard sidebar with collapsible to icons.
653
503
  */
654
- declare function FloatingSidebar({
504
+ declare function InsetSidebar({
655
505
  brand,
656
506
  navigation,
657
507
  secondaryNavigation,
658
508
  project,
659
509
  user,
660
510
  headerContent,
511
+ sidebarStyle,
512
+ density,
661
513
  side,
662
514
  ariaLabel,
663
515
  className,
664
516
  children
665
- }: FloatingSidebarProps): react_jsx_runtime0.JSX.Element;
517
+ }: InsetSidebarProps): react_jsx_runtime0.JSX.Element;
666
518
  //#endregion
667
519
  //#region src/dashboard/presets/mini-sidebar.d.ts
668
520
  interface MiniSidebarBrand {
@@ -777,4 +629,344 @@ declare function TopbarRail({
777
629
  children
778
630
  }: TopbarRailProps): react_jsx_runtime0.JSX.Element;
779
631
  //#endregion
780
- export { type BreadcrumbItem, type BreadcrumbItemData, DashboardContent, type DashboardContentProps, DashboardHeader, type DashboardHeaderProps, DashboardPageLayout, type DashboardPageLayoutProps, DualSidebar, type DualSidebarBrand, type DualSidebarCategory, type DualSidebarItem, type DualSidebarProps, type DualSidebarUser, FloatingSidebar, type FloatingSidebarBrand, type FloatingSidebarProject, type FloatingSidebarProps, type FloatingSidebarUser, type HeaderAction, type HeaderBadge, type HeaderMetadata, HeaderSection, type HeaderSectionProps, InsetSidebar, type InsetSidebarBrand, type InsetSidebarProject, type InsetSidebarProps, type InsetSidebarUser, MiniSidebar, type MiniSidebarBrand, type MiniSidebarGroup, type MiniSidebarItem, type MiniSidebarProps, type MiniSidebarUser, type NavGroup, type NavItem, type NavPermissions, type NavSubItem, PageHeader, type PageHeaderProps, type ProjectItem, ProjectSwitcher, type ProjectSwitcherProps, SidebarBrand, type SidebarBrandProps, SidebarNav, SidebarNavGroup, type SidebarNavGroupProps, SidebarNavItem, type SidebarNavItemProps, type SidebarNavProps, SidebarUserMenu, type SidebarUserMenuProps, TopbarRail, type TopbarRailBrand, type TopbarRailBreadcrumb, type TopbarRailCategory, type TopbarRailItem, type TopbarRailProps, type TopbarRailUser, type UserData, type UserMenuItem, cn, resolveCategories, resolveMiniNavigation, resolveNavigation };
632
+ //#region src/dashboard/dashboard-layout.d.ts
633
+ type RailVariant = "default" | "dark" | "primary" | "muted";
634
+ interface InsetSidebarConfig {
635
+ variant: "inset";
636
+ brand: InsetSidebarBrand;
637
+ navigation: NavGroup[];
638
+ secondaryNavigation?: NavGroup[];
639
+ project?: InsetSidebarProject;
640
+ user?: InsetSidebarUser;
641
+ /** Custom content below brand (e.g., "Create" button, org switcher) */
642
+ headerContent?: React$1.ReactNode;
643
+ /** "inset" = rounded with padding (default). "flush" = edge-to-edge, no rounding. */
644
+ sidebarStyle?: "inset" | "flush";
645
+ /** Nav item density. "comfortable" = taller items. */
646
+ density?: "compact" | "default" | "comfortable";
647
+ side?: "left" | "right";
648
+ }
649
+ interface FloatingSidebarConfig {
650
+ variant: "floating";
651
+ brand: FloatingSidebarBrand;
652
+ navigation: NavGroup[];
653
+ secondaryNavigation?: NavGroup[];
654
+ project?: FloatingSidebarProject;
655
+ user?: FloatingSidebarUser;
656
+ /** Custom content below brand (e.g., "Create" button, org switcher) */
657
+ headerContent?: React$1.ReactNode;
658
+ side?: "left" | "right";
659
+ }
660
+ interface MiniSidebarConfig {
661
+ variant: "mini";
662
+ brand: MiniSidebarBrand;
663
+ navigation: MiniSidebarGroup[];
664
+ secondaryNavigation?: MiniSidebarGroup[];
665
+ user?: MiniSidebarUser;
666
+ /** Custom content below brand */
667
+ headerContent?: React$1.ReactNode;
668
+ side?: "left" | "right";
669
+ showRail?: boolean;
670
+ }
671
+ interface DualSidebarConfig {
672
+ variant: "dual";
673
+ brand: DualSidebarBrand;
674
+ categories: DualSidebarCategory[];
675
+ user?: DualSidebarUser;
676
+ /** Custom content in expanded panel header (e.g., "Create" button, org switcher) */
677
+ headerContent?: React$1.ReactNode;
678
+ /** Custom content above user menu in expanded panel */
679
+ footerContent?: React$1.ReactNode;
680
+ railVariant?: RailVariant;
681
+ /** "inset" = rounded with padding (default). "flush" = edge-to-edge, no rounding. */
682
+ sidebarStyle?: "inset" | "flush";
683
+ defaultCategoryId?: string;
684
+ activeCategoryId?: string;
685
+ onCategoryChange?: (id: string) => void;
686
+ defaultCollapsed?: boolean;
687
+ collapsed?: boolean;
688
+ onCollapsedChange?: (collapsed: boolean) => void;
689
+ }
690
+ interface TopbarRailConfig {
691
+ variant: "topbar-rail";
692
+ brand: TopbarRailBrand;
693
+ categories: TopbarRailCategory[];
694
+ user?: TopbarRailUser;
695
+ railVariant?: RailVariant;
696
+ defaultCategoryId?: string;
697
+ defaultDrawerOpen?: boolean;
698
+ }
699
+ type SidebarConfig = InsetSidebarConfig | FloatingSidebarConfig | MiniSidebarConfig | DualSidebarConfig | TopbarRailConfig;
700
+ interface BreadcrumbsConfig extends UseDashboardBreadcrumbsOptions {
701
+ basePath: string;
702
+ }
703
+ interface DashboardLayoutProps {
704
+ /** Sidebar configuration — discriminated by `variant` */
705
+ sidebar: SidebarConfig;
706
+ /** Auto-generate breadcrumbs from pathname. Pass false to disable. */
707
+ breadcrumbs?: BreadcrumbsConfig | false;
708
+ /** Right-side header content (search triggers, mode toggle, etc.) */
709
+ headerRight?: React$1.ReactNode;
710
+ /** Left-side header content (after breadcrumbs) */
711
+ headerLeft?: React$1.ReactNode;
712
+ /** Override the entire header. Pass false to hide. */
713
+ header?: React$1.ReactNode | false;
714
+ /** Make the header stick to the top while content scrolls. Applies proper bg + border automatically. */
715
+ stickyHeader?: boolean;
716
+ /** Additional className for the auto-generated header */
717
+ headerClassName?: string;
718
+ /** Additional className */
719
+ className?: string;
720
+ /** Page content */
721
+ children: React$1.ReactNode;
722
+ }
723
+ declare function DashboardLayout({
724
+ sidebar,
725
+ breadcrumbs,
726
+ headerRight,
727
+ headerLeft,
728
+ header,
729
+ stickyHeader,
730
+ headerClassName,
731
+ className,
732
+ children
733
+ }: DashboardLayoutProps): react_jsx_runtime0.JSX.Element;
734
+ //#endregion
735
+ //#region src/dashboard/dashboard-content.d.ts
736
+ interface DashboardContentProps {
737
+ /** Content to render inside the dashboard area */
738
+ children: React$1.ReactNode;
739
+ /** Additional className for the outer wrapper */
740
+ className?: string;
741
+ /** Enable @container queries on the content area */
742
+ container?: boolean | string;
743
+ /** Horizontal padding — defaults to "md" */
744
+ padding?: "none" | "sm" | "md" | "lg";
745
+ }
746
+ /**
747
+ * DashboardContent — Safe content wrapper for sidebar layouts.
748
+ *
749
+ * Prevents the classic flexbox overflow bug where children with
750
+ * `max-w-*` or grid layouts extend beyond the available space
751
+ * (behind the sidebar) by propagating `min-w-0` through the
752
+ * flex chain.
753
+ *
754
+ * **Important**: `SidebarInset` also needs `min-w-0` for the
755
+ * width constraint to propagate correctly from the flex parent.
756
+ * Pass `className="min-w-0"` to `SidebarInset`.
757
+ *
758
+ * @example
759
+ * ```tsx
760
+ * <SidebarProvider>
761
+ * <AppSidebar />
762
+ * <SidebarInset className="min-w-0">
763
+ * <DashboardContent>
764
+ * <PageHeader items={breadcrumbs} />
765
+ * <MyPageContent />
766
+ * </DashboardContent>
767
+ * </SidebarInset>
768
+ * </SidebarProvider>
769
+ * ```
770
+ */
771
+ declare function DashboardContent({
772
+ children,
773
+ className,
774
+ container,
775
+ padding
776
+ }: DashboardContentProps): react_jsx_runtime0.JSX.Element;
777
+ //#endregion
778
+ //#region src/dashboard/page-header.d.ts
779
+ interface BreadcrumbItemData {
780
+ label: string;
781
+ href?: string;
782
+ current?: boolean;
783
+ }
784
+ interface PageHeaderProps {
785
+ items: BreadcrumbItemData[];
786
+ className?: string;
787
+ actions?: React.ReactNode;
788
+ }
789
+ declare function PageHeader({
790
+ items,
791
+ className,
792
+ actions
793
+ }: PageHeaderProps): react_jsx_runtime0.JSX.Element;
794
+ //#endregion
795
+ //#region src/dashboard/dashboard-page-layout.d.ts
796
+ interface DashboardPageLayoutProps {
797
+ /** Breadcrumb items for the page header */
798
+ breadcrumbs: BreadcrumbItemData[];
799
+ /** Action buttons rendered in the page header */
800
+ actions?: ReactNode;
801
+ /** Whether to wrap children in Suspense (default: true) */
802
+ suspense?: boolean;
803
+ /** Custom Suspense fallback. Defaults to a spinner. */
804
+ fallback?: ReactNode;
805
+ /** Additional className for the content wrapper */
806
+ className?: string;
807
+ children: ReactNode;
808
+ }
809
+ /**
810
+ * DashboardPageLayout — Standard page shell for dashboard pages.
811
+ * Combines PageHeader (breadcrumbs + actions) with optional Suspense boundary.
812
+ *
813
+ * @example
814
+ * ```tsx
815
+ * <DashboardPageLayout
816
+ * breadcrumbs={[
817
+ * { label: "Dashboard", href: "/dashboard" },
818
+ * { label: "Posts", current: true },
819
+ * ]}
820
+ * actions={<Button>New Post</Button>}
821
+ * fallback={<SkeletonTable rows={5} />}
822
+ * >
823
+ * <PostsList />
824
+ * </DashboardPageLayout>
825
+ * ```
826
+ */
827
+ declare function DashboardPageLayout({
828
+ breadcrumbs,
829
+ actions,
830
+ suspense,
831
+ fallback,
832
+ className,
833
+ children
834
+ }: DashboardPageLayoutProps): react_jsx_runtime0.JSX.Element;
835
+ //#endregion
836
+ //#region src/dashboard/header-section.d.ts
837
+ interface HeaderAction {
838
+ text: string;
839
+ onClick?: () => void;
840
+ disabled?: boolean;
841
+ variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
842
+ size?: "default" | "sm" | "lg" | "icon";
843
+ className?: string;
844
+ icon?: LucideIcon;
845
+ iconPosition?: "left" | "right";
846
+ loadingText?: string;
847
+ loading?: boolean;
848
+ }
849
+ interface HeaderBadge {
850
+ text: string;
851
+ variant?: "default" | "secondary" | "destructive" | "outline";
852
+ className?: string;
853
+ }
854
+ interface HeaderMetadata {
855
+ text: string;
856
+ icon?: LucideIcon;
857
+ }
858
+ interface HeaderSectionProps {
859
+ title?: string;
860
+ description?: string;
861
+ actions?: HeaderAction[] | null;
862
+ icon?: LucideIcon | null;
863
+ iconClassName?: string;
864
+ loading?: boolean;
865
+ variant?: "default" | "compact" | "hero" | "minimal";
866
+ className?: string;
867
+ badge?: HeaderBadge | ReactNode;
868
+ breadcrumbs?: ReactNode;
869
+ metadata?: HeaderMetadata[];
870
+ children?: ReactNode;
871
+ }
872
+ declare function HeaderSection({
873
+ title,
874
+ description,
875
+ actions,
876
+ icon: Icon,
877
+ iconClassName,
878
+ loading,
879
+ variant,
880
+ className,
881
+ badge,
882
+ breadcrumbs,
883
+ metadata,
884
+ children
885
+ }: HeaderSectionProps): react_jsx_runtime0.JSX.Element;
886
+ //#endregion
887
+ //#region src/dashboard/sidebar-brand.d.ts
888
+ interface SidebarBrandProps {
889
+ /** Brand title text */
890
+ title: string;
891
+ /** Brand icon/logo element */
892
+ icon: React$1.ReactNode;
893
+ /** Link href (defaults to "/") */
894
+ href?: string;
895
+ /** Additional className */
896
+ className?: string;
897
+ /** Tooltip text when collapsed (defaults to title) */
898
+ tooltip?: string;
899
+ }
900
+ /**
901
+ * SidebarBrand - Logo and title section for dashboard sidebar.
902
+ * Automatically handles collapsed state styling.
903
+ */
904
+ declare function SidebarBrand({
905
+ title,
906
+ icon,
907
+ href,
908
+ className,
909
+ tooltip
910
+ }: SidebarBrandProps): react_jsx_runtime0.JSX.Element;
911
+ //#endregion
912
+ //#region src/dashboard/sidebar-nav.d.ts
913
+ type SidebarDensity = "compact" | "default" | "comfortable";
914
+ interface SidebarNavProps {
915
+ /** Navigation groups to render */
916
+ groups: NavGroup[];
917
+ /** Item height density. "compact" = h-7, "default" = h-8, "comfortable" = h-10 */
918
+ density?: SidebarDensity;
919
+ /** Additional className */
920
+ className?: string;
921
+ /** Callback when a nav item is clicked */
922
+ onItemClick?: (item: NavItem) => void;
923
+ }
924
+ interface SidebarNavGroupProps {
925
+ /** Group title (optional) */
926
+ title?: string;
927
+ /** Navigation items in this group */
928
+ items: NavItem[];
929
+ /** Item density */
930
+ density?: SidebarDensity;
931
+ /** Additional className */
932
+ className?: string;
933
+ /** Callback when an item is clicked */
934
+ onItemClick?: (item: NavItem) => void;
935
+ }
936
+ interface SidebarNavItemProps {
937
+ /** The navigation item data */
938
+ item: NavItem;
939
+ /** Item density */
940
+ density?: SidebarDensity;
941
+ /** Callback when clicked */
942
+ onClick?: () => void;
943
+ }
944
+ /**
945
+ * SidebarNavItem - Single navigation item with optional sub-items.
946
+ */
947
+ declare function SidebarNavItem({
948
+ item,
949
+ density,
950
+ onClick
951
+ }: SidebarNavItemProps): react_jsx_runtime0.JSX.Element;
952
+ /**
953
+ * SidebarNavGroup - A group of navigation items with optional title.
954
+ */
955
+ declare function SidebarNavGroup({
956
+ title,
957
+ items,
958
+ density,
959
+ className,
960
+ onItemClick
961
+ }: SidebarNavGroupProps): react_jsx_runtime0.JSX.Element;
962
+ /**
963
+ * SidebarNav - Complete navigation section with multiple groups.
964
+ */
965
+ declare function SidebarNav({
966
+ groups,
967
+ density,
968
+ className,
969
+ onItemClick
970
+ }: SidebarNavProps): react_jsx_runtime0.JSX.Element;
971
+ //#endregion
972
+ export { type BreadcrumbItem, type BreadcrumbItemData, type BreadcrumbsConfig, ClientOnly, DashboardContent, type DashboardContentProps, DashboardHeader, type DashboardHeaderProps, DashboardLayout, type DashboardLayoutProps, DashboardPageLayout, type DashboardPageLayoutProps, DualSidebar, type DualSidebarBrand, type DualSidebarCategory, type DualSidebarItem, type DualSidebarProps, type DualSidebarUser, FloatingSidebar, type FloatingSidebarBrand, type FloatingSidebarProject, type FloatingSidebarProps, type FloatingSidebarUser, type HeaderAction, type HeaderBadge, type HeaderMetadata, HeaderSection, type HeaderSectionProps, InsetSidebar, type InsetSidebarBrand, type InsetSidebarProject, type InsetSidebarProps, type InsetSidebarUser, MiniSidebar, type MiniSidebarBrand, type MiniSidebarGroup, type MiniSidebarItem, type MiniSidebarProps, type MiniSidebarUser, type NavGroup, type NavItem, type NavPermissions, type NavSubItem, PageHeader, type PageHeaderProps, type ProjectItem, ProjectSwitcher, type ProjectSwitcherProps, SidebarBrand, type SidebarBrandProps, type SidebarConfig, SidebarNav, SidebarNavGroup, type SidebarNavGroupProps, SidebarNavItem, type SidebarNavItemProps, type SidebarNavProps, SidebarUserMenu, type SidebarUserMenuProps, TopbarRail, type TopbarRailBrand, type TopbarRailBreadcrumb, type TopbarRailCategory, type TopbarRailItem, type TopbarRailProps, type TopbarRailUser, type UseDashboardBreadcrumbsOptions, type UserData, type UserMenuItem, cn, findActiveCategory, findActiveItem, matchRoute, resolveCategories, resolveMiniNavigation, resolveNavigation, useDashboardBreadcrumbs };