@omnitron-dev/prism 0.1.1

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 (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +44 -0
  3. package/bin/prism.js +13 -0
  4. package/dist/accessibility/index.d.ts +157 -0
  5. package/dist/accessibility/index.js +186 -0
  6. package/dist/accessibility/index.js.map +1 -0
  7. package/dist/blocks/index.d.ts +1239 -0
  8. package/dist/blocks/index.js +1712 -0
  9. package/dist/blocks/index.js.map +1 -0
  10. package/dist/chunk-77KIJLPP.js +37 -0
  11. package/dist/chunk-77KIJLPP.js.map +1 -0
  12. package/dist/chunk-BTIT7WYH.js +339 -0
  13. package/dist/chunk-BTIT7WYH.js.map +1 -0
  14. package/dist/chunk-BV32OJ2A.js +1409 -0
  15. package/dist/chunk-BV32OJ2A.js.map +1 -0
  16. package/dist/chunk-DDY7TLUI.js +139 -0
  17. package/dist/chunk-DDY7TLUI.js.map +1 -0
  18. package/dist/chunk-DXXZ3ITR.js +4227 -0
  19. package/dist/chunk-DXXZ3ITR.js.map +1 -0
  20. package/dist/chunk-E3XANPTO.js +2319 -0
  21. package/dist/chunk-E3XANPTO.js.map +1 -0
  22. package/dist/chunk-FU52GL2E.js +3 -0
  23. package/dist/chunk-FU52GL2E.js.map +1 -0
  24. package/dist/chunk-GYDT5EKX.js +16505 -0
  25. package/dist/chunk-GYDT5EKX.js.map +1 -0
  26. package/dist/chunk-HO2GKTWJ.js +28 -0
  27. package/dist/chunk-HO2GKTWJ.js.map +1 -0
  28. package/dist/chunk-JDTC2SBY.js +140 -0
  29. package/dist/chunk-JDTC2SBY.js.map +1 -0
  30. package/dist/chunk-JNU4QHJK.js +6 -0
  31. package/dist/chunk-JNU4QHJK.js.map +1 -0
  32. package/dist/chunk-LAEY5USO.js +2621 -0
  33. package/dist/chunk-LAEY5USO.js.map +1 -0
  34. package/dist/chunk-UR6X3W5I.js +530 -0
  35. package/dist/chunk-UR6X3W5I.js.map +1 -0
  36. package/dist/chunk-WC2WM2JD.js +883 -0
  37. package/dist/chunk-WC2WM2JD.js.map +1 -0
  38. package/dist/chunk-XWL6J6IO.js +40 -0
  39. package/dist/chunk-XWL6J6IO.js.map +1 -0
  40. package/dist/cli/index.js +2695 -0
  41. package/dist/cli/index.js.map +1 -0
  42. package/dist/config-BA6IeTq9.d.ts +100 -0
  43. package/dist/core/index.d.ts +454 -0
  44. package/dist/core/index.js +9 -0
  45. package/dist/core/index.js.map +1 -0
  46. package/dist/forms/index.d.ts +562 -0
  47. package/dist/forms/index.js +545 -0
  48. package/dist/forms/index.js.map +1 -0
  49. package/dist/hooks/index.d.ts +7 -0
  50. package/dist/hooks/index.js +10 -0
  51. package/dist/hooks/index.js.map +1 -0
  52. package/dist/http/index.d.ts +233 -0
  53. package/dist/http/index.js +282 -0
  54. package/dist/http/index.js.map +1 -0
  55. package/dist/index-odhPSv9I.d.ts +2491 -0
  56. package/dist/index.css +131 -0
  57. package/dist/index.css.map +1 -0
  58. package/dist/index.d.ts +9109 -0
  59. package/dist/index.js +13280 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/layouts/index.d.ts +854 -0
  62. package/dist/layouts/index.js +6 -0
  63. package/dist/layouts/index.js.map +1 -0
  64. package/dist/netron/index.d.ts +4 -0
  65. package/dist/netron/index.js +4 -0
  66. package/dist/netron/index.js.map +1 -0
  67. package/dist/registry/index.d.ts +352 -0
  68. package/dist/registry/index.js +4 -0
  69. package/dist/registry/index.js.map +1 -0
  70. package/dist/registry-BrDNftd5.d.ts +574 -0
  71. package/dist/settings-plpR26Xk.d.ts +455 -0
  72. package/dist/state/index.d.ts +981 -0
  73. package/dist/state/index.js +5 -0
  74. package/dist/state/index.js.map +1 -0
  75. package/dist/theme/index.d.ts +1049 -0
  76. package/dist/theme/index.js +5 -0
  77. package/dist/theme/index.js.map +1 -0
  78. package/dist/theme-CrXLfP1c.d.ts +389 -0
  79. package/dist/types/index.d.ts +146 -0
  80. package/dist/types/index.js +5 -0
  81. package/dist/types/index.js.map +1 -0
  82. package/dist/use-timeout-D7U3EAtH.d.ts +808 -0
  83. package/package.json +194 -0
@@ -0,0 +1,854 @@
1
+ import * as react from 'react';
2
+ import { ReactNode } from 'react';
3
+ import { SxProps, Theme, Breakpoint } from '@mui/material';
4
+
5
+ /**
6
+ * Layout Type Definitions
7
+ *
8
+ * Combines the best patterns from minimal and aurora layout systems.
9
+ *
10
+ * @module @omnitron-dev/prism/layouts/types
11
+ */
12
+
13
+ /**
14
+ * Navigation menu type - determines overall navigation strategy.
15
+ */
16
+ type NavigationMenuType = 'sidenav' | 'topnav' | 'combo';
17
+ /**
18
+ * Sidenav variant - different sidebar styles.
19
+ */
20
+ type SidenavVariant = 'default' | 'mini' | 'stacked';
21
+ /**
22
+ * Topnav variant - different top navigation styles.
23
+ */
24
+ type TopnavVariant = 'default' | 'slim' | 'stacked';
25
+ /**
26
+ * Navigation color mode.
27
+ */
28
+ type NavColorMode = 'default' | 'vibrant' | 'integrate';
29
+ /**
30
+ * Layout configuration options.
31
+ */
32
+ interface LayoutConfig {
33
+ /** Navigation menu type */
34
+ navigationMenuType: NavigationMenuType;
35
+ /** Sidenav variant (when using sidenav or combo) */
36
+ sidenavVariant: SidenavVariant;
37
+ /** Whether sidenav is collapsed */
38
+ sidenavCollapsed: boolean;
39
+ /** Topnav variant (when using topnav or combo) */
40
+ topnavVariant: TopnavVariant;
41
+ /** Navigation color mode */
42
+ navColor: NavColorMode;
43
+ /** Whether mobile drawer is open */
44
+ drawerOpen: boolean;
45
+ /** Current drawer width in pixels */
46
+ drawerWidth: number;
47
+ /** Content compact mode (max-width container) */
48
+ compactLayout: boolean;
49
+ }
50
+ /**
51
+ * Standard drawer width values.
52
+ */
53
+ declare const DRAWER_WIDTHS: {
54
+ /** Full expanded width */
55
+ readonly full: 280;
56
+ /** Collapsed/mini width (72 content + 1px border = header desktop height) */
57
+ readonly mini: 73;
58
+ /** Mobile drawer width */
59
+ readonly mobile: 280;
60
+ /** Stacked sidenav collapsed width (left panel only) */
61
+ readonly stackedCollapsed: 72;
62
+ /** Stacked sidenav expanded width */
63
+ readonly stackedExpanded: 300;
64
+ };
65
+ /**
66
+ * Header height values by breakpoint.
67
+ */
68
+ declare const HEADER_HEIGHTS: {
69
+ readonly mobile: 64;
70
+ readonly desktop: 72;
71
+ };
72
+ /**
73
+ * Layout navigation item definition.
74
+ *
75
+ * This is the data structure used for layout configuration.
76
+ * For the NavItem component, see @omnitron-dev/prism/components/nav-section.
77
+ */
78
+ interface LayoutNavItem {
79
+ /** Unique item ID */
80
+ id: string;
81
+ /** Display title */
82
+ title: string;
83
+ /** Navigation path (for leaf items) */
84
+ path?: string;
85
+ /** Icon component */
86
+ icon?: ReactNode;
87
+ /** Info badge/label */
88
+ info?: ReactNode;
89
+ /** Caption/description text */
90
+ caption?: string;
91
+ /** Disabled state */
92
+ disabled?: boolean;
93
+ /** External link flag */
94
+ external?: boolean;
95
+ /** Child items for nested menus */
96
+ children?: LayoutNavItem[];
97
+ /** Required roles for visibility */
98
+ allowedRoles?: string[];
99
+ /** Required permissions for visibility */
100
+ allowedPermissions?: string[];
101
+ /** Deep match for active state (match child paths) */
102
+ deepMatch?: boolean;
103
+ /** Badge for "new" or count indicators */
104
+ badge?: string | number;
105
+ /**
106
+ * Selection prefix for active state matching.
107
+ * If set, the item will be marked active when the current path
108
+ * starts with this prefix. Useful for parent items that should
109
+ * stay highlighted when on child routes.
110
+ *
111
+ * @example
112
+ * ```tsx
113
+ * // Parent item with selectionPrefix
114
+ * { id: 'products', title: 'Products', path: '/products', selectionPrefix: '/products' }
115
+ * // Will be active for /products, /products/123, /products/new, etc.
116
+ * ```
117
+ */
118
+ selectionPrefix?: string;
119
+ }
120
+ /**
121
+ * Layout navigation section (group of items with optional subheader).
122
+ *
123
+ * This is the data structure used for layout configuration.
124
+ * For the NavSection component, see @omnitron-dev/prism/components/nav-section.
125
+ */
126
+ interface LayoutNavSection {
127
+ /** Section ID */
128
+ id: string;
129
+ /** Section subheader text */
130
+ subheader?: string;
131
+ /** Items in this section */
132
+ items: LayoutNavItem[];
133
+ }
134
+ /**
135
+ * Layout navigation data structure.
136
+ */
137
+ type LayoutNavData = LayoutNavSection[];
138
+ /**
139
+ * Header section slots for flexible composition.
140
+ */
141
+ interface HeaderSlots {
142
+ /** Content above the main header row */
143
+ topArea?: ReactNode;
144
+ /** Left side content (logo, menu button) */
145
+ leftArea?: ReactNode;
146
+ /** Center content (navigation, search) */
147
+ centerArea?: ReactNode;
148
+ /** Right side content (actions, user menu) */
149
+ rightArea?: ReactNode;
150
+ /** Content below the main header row (horizontal nav) */
151
+ bottomArea?: ReactNode;
152
+ }
153
+ /**
154
+ * Auth layout variant.
155
+ */
156
+ type AuthLayoutVariant = 'centered' | 'split' | 'simple';
157
+ /**
158
+ * Auth layout props.
159
+ */
160
+ interface AuthLayoutProps {
161
+ /** Child content */
162
+ children?: ReactNode;
163
+ /** Layout variant */
164
+ variant?: AuthLayoutVariant;
165
+ /** Title text (for split layout) */
166
+ title?: string;
167
+ /** Subtitle text (for split layout) */
168
+ subtitle?: string;
169
+ /** Illustration image (for split layout) */
170
+ illustration?: ReactNode;
171
+ /** Show logo in header */
172
+ showLogo?: boolean;
173
+ /** Show help link */
174
+ showHelp?: boolean;
175
+ /** Custom max width for content */
176
+ maxWidth?: number | string;
177
+ }
178
+ /**
179
+ * Layout context value.
180
+ */
181
+ interface LayoutContextValue {
182
+ /** Current layout configuration */
183
+ config: LayoutConfig;
184
+ /** Whether the viewport is below the mobile breakpoint */
185
+ isMobile: boolean;
186
+ /** Update configuration */
187
+ setConfig: (config: Partial<LayoutConfig>) => void;
188
+ /** Toggle drawer open/close */
189
+ toggleDrawer: () => void;
190
+ /** Toggle sidenav collapse */
191
+ toggleSidenavCollapse: () => void;
192
+ /** Set navigation menu type */
193
+ setNavigationMenuType: (type: NavigationMenuType) => void;
194
+ /** Set sidenav variant */
195
+ setSidenavVariant: (variant: SidenavVariant) => void;
196
+ /** Set nav color mode */
197
+ setNavColor: (mode: NavColorMode) => void;
198
+ /** Open navigation items (for nested menus) */
199
+ openItems: string[];
200
+ /** Set open items */
201
+ setOpenItems: (items: string[]) => void;
202
+ /** Check if nested item is open */
203
+ isItemOpen: (id: string) => boolean;
204
+ /** Toggle item open state */
205
+ toggleItem: (id: string) => void;
206
+ /**
207
+ * Check if any nested item is active based on current pathname.
208
+ * Used to keep parent items highlighted when on child routes.
209
+ *
210
+ * @param items - Child items to check
211
+ * @param pathname - Current pathname (typically from router)
212
+ * @returns true if any nested item matches the current route
213
+ */
214
+ isNestedItemActive: (items: LayoutNavItem[] | undefined, pathname: string) => boolean;
215
+ /**
216
+ * Check if a single nav item is active based on pathname.
217
+ * Supports exact match, deep match, and selectionPrefix matching.
218
+ *
219
+ * @param item - Nav item to check
220
+ * @param pathname - Current pathname
221
+ * @returns true if the item is active
222
+ */
223
+ isNavItemActive: (item: LayoutNavItem, pathname: string) => boolean;
224
+ }
225
+ /**
226
+ * CSS variable names for layout dimensions.
227
+ */
228
+ declare const LAYOUT_CSS_VARS: {
229
+ readonly headerHeight: "--layout-header-height";
230
+ readonly headerMobileHeight: "--layout-header-mobile-height";
231
+ readonly headerDesktopHeight: "--layout-header-desktop-height";
232
+ readonly headerBlur: "--layout-header-blur";
233
+ readonly headerZIndex: "--layout-header-z-index";
234
+ readonly navWidth: "--layout-nav-width";
235
+ readonly navMiniWidth: "--layout-nav-mini-width";
236
+ readonly navMobileWidth: "--layout-nav-mobile-width";
237
+ readonly navZIndex: "--layout-nav-z-index";
238
+ readonly navBg: "--layout-nav-bg";
239
+ readonly navTextColor: "--layout-nav-text-color";
240
+ readonly navTextSecondaryColor: "--layout-nav-text-secondary-color";
241
+ readonly mainPaddingTop: "--layout-main-padding-top";
242
+ readonly mainPaddingBottom: "--layout-main-padding-bottom";
243
+ readonly mainPaddingLeft: "--layout-main-padding-left";
244
+ readonly mainPaddingRight: "--layout-main-padding-right";
245
+ };
246
+ /**
247
+ * Default CSS variable values.
248
+ */
249
+ declare const DEFAULT_LAYOUT_CSS_VARS: Record<string, string | number>;
250
+
251
+ /**
252
+ * Default layout configuration.
253
+ */
254
+ declare const defaultLayoutConfig: LayoutConfig;
255
+ /**
256
+ * Layout context.
257
+ */
258
+ declare const LayoutContext: react.Context<LayoutContextValue | null>;
259
+ interface LayoutProviderProps {
260
+ /** Child components */
261
+ children: ReactNode;
262
+ /** Initial configuration overrides */
263
+ initialConfig?: Partial<LayoutConfig>;
264
+ /**
265
+ * Persistence key for sidebar collapsed state.
266
+ * When provided, sidebar collapsed state is saved to localStorage
267
+ * via the settings store and restored on mount.
268
+ * Use different keys for different layouts (e.g., 'main', 'admin').
269
+ */
270
+ persistKey?: string;
271
+ }
272
+ /**
273
+ * Layout provider component.
274
+ * Manages layout configuration and navigation state.
275
+ */
276
+ declare function LayoutProvider({ children, initialConfig, persistKey }: LayoutProviderProps): ReactNode;
277
+ /**
278
+ * Hook to access layout context.
279
+ *
280
+ * @returns Layout context value
281
+ * @throws If used outside LayoutProvider
282
+ *
283
+ * @example
284
+ * ```tsx
285
+ * function NavToggle() {
286
+ * const { config, toggleSidenavCollapse } = useLayoutContext();
287
+ *
288
+ * return (
289
+ * <IconButton onClick={toggleSidenavCollapse}>
290
+ * {config.sidenavCollapsed ? <MenuOpenIcon /> : <MenuIcon />}
291
+ * </IconButton>
292
+ * );
293
+ * }
294
+ * ```
295
+ */
296
+ declare function useLayoutContext(): LayoutContextValue;
297
+ /**
298
+ * Hook to access only layout configuration.
299
+ */
300
+ declare function useLayoutConfig(): LayoutConfig;
301
+ /**
302
+ * Hook to check if sidenav should be visible.
303
+ */
304
+ declare function useSidenavVisible(): boolean;
305
+ /**
306
+ * Hook to check if topnav should be visible.
307
+ */
308
+ declare function useTopnavVisible(): boolean;
309
+ /**
310
+ * Hook to check navigation item active state with current pathname.
311
+ * Provides utilities for building navigation components.
312
+ *
313
+ * @param pathname - Current pathname from router
314
+ * @returns Object with active state checking functions
315
+ *
316
+ * @example
317
+ * ```tsx
318
+ * function NavItem({ item }: { item: LayoutNavItem }) {
319
+ * const { pathname } = useLocation(); // From your router
320
+ * const { isItemActive, isNestedActive } = useNavActive(pathname);
321
+ *
322
+ * const active = isItemActive(item);
323
+ * const nestedActive = item.children && isNestedActive(item.children);
324
+ *
325
+ * return (
326
+ * <ListItemButton selected={active || nestedActive}>
327
+ * {item.title}
328
+ * </ListItemButton>
329
+ * );
330
+ * }
331
+ * ```
332
+ */
333
+ declare function useNavActive(pathname: string): {
334
+ /**
335
+ * Check if a nav item is active.
336
+ */
337
+ isItemActive: (item: LayoutNavItem) => boolean;
338
+ /**
339
+ * Check if any nested item is active.
340
+ */
341
+ isNestedActive: (items: LayoutNavItem[] | undefined) => boolean;
342
+ };
343
+
344
+ /**
345
+ * Layout CSS Variables
346
+ *
347
+ * Global CSS variables for layout dimensions and styling.
348
+ *
349
+ * @module @omnitron-dev/prism/layouts/core/css-vars
350
+ */
351
+
352
+ /**
353
+ * Generate base layout CSS variables.
354
+ */
355
+ declare function getBaseLayoutCssVars(zIndexBase: number): Record<string, string | number>;
356
+ /**
357
+ * Generate navigation color CSS variables based on mode.
358
+ */
359
+ declare function getNavColorCssVars(mode: NavColorMode, theme: {
360
+ palette: {
361
+ mode: 'light' | 'dark';
362
+ background: {
363
+ paper: string;
364
+ default: string;
365
+ };
366
+ text: {
367
+ primary: string;
368
+ secondary: string;
369
+ };
370
+ };
371
+ }): Record<string, string>;
372
+ /**
373
+ * Merge custom CSS variables with defaults.
374
+ */
375
+ declare function mergeLayoutCssVars(customVars: Record<string, string | number> | undefined, ...defaultVars: Record<string, string | number>[]): Record<string, string | number>;
376
+ interface LayoutGlobalStylesProps {
377
+ /** Additional CSS variables */
378
+ cssVars?: Record<string, string | number>;
379
+ }
380
+ /**
381
+ * Global CSS variables for layouts.
382
+ * Should be rendered once at the root of the layout system.
383
+ */
384
+ declare function LayoutGlobalStyles({ cssVars }: LayoutGlobalStylesProps): ReactNode;
385
+
386
+ /**
387
+ * Layout Section
388
+ *
389
+ * Root container for all layout variants.
390
+ * Provides the structural foundation for header, sidebar, main, and footer.
391
+ *
392
+ * @module @omnitron-dev/prism/layouts/core/layout-section
393
+ */
394
+
395
+ interface LayoutSectionProps {
396
+ /** Header section (rendered at top) */
397
+ headerSection?: ReactNode;
398
+ /** Sidebar section (sidenav) */
399
+ sidebarSection?: ReactNode;
400
+ /** Footer section (rendered at bottom of main area) */
401
+ footerSection?: ReactNode;
402
+ /** Main content */
403
+ children?: ReactNode;
404
+ /** Custom CSS variables */
405
+ cssVars?: Record<string, string | number>;
406
+ /** MUI sx prop */
407
+ sx?: SxProps<Theme>;
408
+ }
409
+ /**
410
+ * Layout Section - Root container for page layouts.
411
+ *
412
+ * Structure:
413
+ * ```
414
+ * LayoutRoot
415
+ * ├── GlobalStyles (CSS variables)
416
+ * ├── HeaderSection
417
+ * └── LayoutSidebarContainer (when sidebar exists)
418
+ * ├── SidebarSection
419
+ * └── MainContent
420
+ * ├── children
421
+ * └── FooterSection
422
+ * └── or MainContent directly (when no sidebar)
423
+ * ```
424
+ *
425
+ * @example
426
+ * ```tsx
427
+ * <LayoutSection
428
+ * headerSection={<HeaderSection slots={{ leftArea: <Logo /> }} />}
429
+ * sidebarSection={<Sidenav />}
430
+ * footerSection={<Footer />}
431
+ * >
432
+ * <Outlet />
433
+ * </LayoutSection>
434
+ * ```
435
+ */
436
+ declare function LayoutSection({ headerSection, sidebarSection, footerSection, children, cssVars, sx, }: LayoutSectionProps): ReactNode;
437
+ interface MainSectionProps {
438
+ /** Content */
439
+ children?: ReactNode;
440
+ /** MUI sx prop */
441
+ sx?: SxProps<Theme>;
442
+ }
443
+ /**
444
+ * Main content section.
445
+ * Simple flex container for page content.
446
+ */
447
+ declare function MainSection({ children, sx }: MainSectionProps): ReactNode;
448
+
449
+ /**
450
+ * Header Section
451
+ *
452
+ * Slot-based header component with sticky positioning and scroll effects.
453
+ *
454
+ * @module @omnitron-dev/prism/layouts/core/header-section
455
+ */
456
+
457
+ interface HeaderSectionProps {
458
+ /** Slot content */
459
+ slots?: HeaderSlots;
460
+ /** Props for each slot */
461
+ slotProps?: {
462
+ topArea?: SxProps<Theme>;
463
+ leftArea?: SxProps<Theme>;
464
+ centerArea?: SxProps<Theme>;
465
+ rightArea?: SxProps<Theme>;
466
+ bottomArea?: SxProps<Theme>;
467
+ container?: SxProps<Theme>;
468
+ };
469
+ /** Disable sticky positioning */
470
+ disableSticky?: boolean;
471
+ /** Disable scroll offset effects (blur on scroll) */
472
+ disableOffset?: boolean;
473
+ /** Disable scroll elevation shadow */
474
+ disableElevation?: boolean;
475
+ /** Use container for max-width */
476
+ containerized?: boolean;
477
+ /** Container max width */
478
+ maxWidth?: Breakpoint | false;
479
+ /** MUI sx prop */
480
+ sx?: SxProps<Theme>;
481
+ }
482
+ /**
483
+ * Header Section - Slot-based header with scroll effects.
484
+ *
485
+ * Slots:
486
+ * - `topArea`: Content above the main toolbar row
487
+ * - `leftArea`: Left side (logo, menu toggle)
488
+ * - `centerArea`: Center content (search, navigation)
489
+ * - `rightArea`: Right side (actions, user menu)
490
+ * - `bottomArea`: Content below main toolbar (horizontal nav)
491
+ *
492
+ * @example
493
+ * ```tsx
494
+ * <HeaderSection
495
+ * slots={{
496
+ * leftArea: (
497
+ * <>
498
+ * <MenuButton onClick={onMenuClick} />
499
+ * <Logo />
500
+ * </>
501
+ * ),
502
+ * centerArea: <Searchbar />,
503
+ * rightArea: (
504
+ * <>
505
+ * <NotificationsButton />
506
+ * <UserMenu />
507
+ * </>
508
+ * ),
509
+ * }}
510
+ * />
511
+ * ```
512
+ */
513
+ declare function HeaderSection({ slots, slotProps, disableSticky, disableOffset, disableElevation, containerized, maxWidth, sx, }: HeaderSectionProps): ReactNode;
514
+ interface HeaderToolbarProps {
515
+ /** Content */
516
+ children?: ReactNode;
517
+ /** MUI sx prop */
518
+ sx?: SxProps<Theme>;
519
+ }
520
+ /**
521
+ * Standalone header toolbar without AppBar wrapper.
522
+ * Useful for custom header implementations.
523
+ */
524
+ declare function HeaderToolbar({ children, sx }: HeaderToolbarProps): ReactNode;
525
+
526
+ /**
527
+ * Dashboard Layout
528
+ *
529
+ * Main dashboard layout component that orchestrates navigation, header, and content.
530
+ * Implements WCAG 2.1 accessibility guidelines with proper landmarks and keyboard navigation.
531
+ *
532
+ * @module @omnitron-dev/prism/layouts/dashboard/layout
533
+ */
534
+
535
+ interface DashboardLayoutProps {
536
+ /** Child content */
537
+ children?: ReactNode;
538
+ /** Layout breakpoint for responsive behavior */
539
+ layoutQuery?: Breakpoint;
540
+ /** Navigation data */
541
+ navData?: LayoutNavData;
542
+ /** Header slot content */
543
+ headerSlots?: HeaderSlots;
544
+ /** Logo component */
545
+ logo?: ReactNode;
546
+ /** Footer component */
547
+ footer?: ReactNode;
548
+ /** Sidenav footer content */
549
+ sidenavFooter?: ReactNode;
550
+ /** Initial layout configuration */
551
+ initialConfig?: Partial<LayoutConfig>;
552
+ /**
553
+ * Persistence key for sidebar collapsed state.
554
+ * When provided, sidebar collapsed state persists to localStorage.
555
+ * Use unique keys per layout (e.g., 'main', 'admin').
556
+ */
557
+ persistKey?: string;
558
+ /** Props for layout sections */
559
+ slotProps?: {
560
+ header?: Partial<React.ComponentProps<typeof HeaderSection>>;
561
+ main?: {
562
+ sx?: SxProps<Theme>;
563
+ disablePadding?: boolean;
564
+ maxWidth?: Breakpoint | false;
565
+ };
566
+ };
567
+ }
568
+ /**
569
+ * Dashboard Layout - Complete dashboard layout with navigation.
570
+ *
571
+ * Features:
572
+ * - Configurable navigation type (sidenav, topnav, combo)
573
+ * - Multiple sidenav variants (default, mini, stacked)
574
+ * - Responsive mobile drawer
575
+ * - Slot-based header customization
576
+ * - CSS variables for theming
577
+ *
578
+ * @example
579
+ * ```tsx
580
+ * <DashboardLayout
581
+ * logo={<Logo />}
582
+ * navData={navigationConfig}
583
+ * headerSlots={{
584
+ * leftArea: <MenuButton />,
585
+ * rightArea: <UserMenu />,
586
+ * }}
587
+ * initialConfig={{
588
+ * navigationMenuType: 'sidenav',
589
+ * sidenavVariant: 'default',
590
+ * }}
591
+ * >
592
+ * <Outlet />
593
+ * </DashboardLayout>
594
+ * ```
595
+ */
596
+ declare function DashboardLayout({ children, layoutQuery, navData, headerSlots, logo, footer, sidenavFooter, initialConfig, persistKey, slotProps, }: DashboardLayoutProps): ReactNode;
597
+ interface DashboardContentProps {
598
+ /** Child content */
599
+ children?: ReactNode;
600
+ /** Disable padding */
601
+ disablePadding?: boolean;
602
+ /** Container max width */
603
+ maxWidth?: Breakpoint | false;
604
+ /** MUI sx prop */
605
+ sx?: SxProps<Theme>;
606
+ }
607
+ /**
608
+ * Dashboard content wrapper with optional container.
609
+ * Use for consistent content padding within dashboard.
610
+ */
611
+ declare function DashboardContent({ children, disablePadding, maxWidth, sx }: DashboardContentProps): ReactNode;
612
+
613
+ /**
614
+ * Dashboard Sidenav
615
+ *
616
+ * Sidebar navigation for dashboard layouts.
617
+ * Supports multiple variants: default, mini, and stacked.
618
+ * Implements WCAG 2.1 accessibility with proper ARIA attributes.
619
+ *
620
+ * @module @omnitron-dev/prism/layouts/dashboard/sidenav
621
+ */
622
+
623
+ interface SidenavProps {
624
+ /** Logo component */
625
+ logo?: ReactNode;
626
+ /** Navigation data */
627
+ navData?: LayoutNavData;
628
+ /** Navigation item renderer */
629
+ renderNavItem?: (item: LayoutNavData[number]['items'][number], depth: number) => ReactNode;
630
+ /** Footer content (above collapse button) */
631
+ footer?: ReactNode;
632
+ /** Show collapse toggle button */
633
+ showCollapseButton?: boolean;
634
+ /** Layout breakpoint (hides on mobile) */
635
+ layoutQuery?: Breakpoint;
636
+ /** Accessible label for the navigation */
637
+ 'aria-label'?: string;
638
+ /** MUI sx prop */
639
+ sx?: SxProps<Theme>;
640
+ }
641
+ /**
642
+ * Dashboard Sidenav - Sidebar navigation component.
643
+ *
644
+ * Supports three variants:
645
+ * - `default`: Full-width sidebar with text labels
646
+ * - `mini`: Icon-only collapsed sidebar
647
+ * - `stacked`: Two-panel design with icon nav + content panel
648
+ *
649
+ * @example
650
+ * ```tsx
651
+ * <Sidenav
652
+ * logo={<Logo />}
653
+ * navData={navigationConfig}
654
+ * showCollapseButton
655
+ * />
656
+ * ```
657
+ */
658
+ declare function Sidenav({ logo, navData, renderNavItem, footer, showCollapseButton, layoutQuery, 'aria-label': ariaLabel, sx, }: SidenavProps): ReactNode;
659
+ interface MobileSidenavProps extends Omit<SidenavProps, 'showCollapseButton' | 'layoutQuery'> {
660
+ /** Layout breakpoint (shows only below this) */
661
+ layoutQuery?: Breakpoint;
662
+ }
663
+ /**
664
+ * Mobile Sidenav - Drawer-based navigation for mobile.
665
+ * Implements WCAG 2.1 accessibility with proper ARIA attributes.
666
+ */
667
+ declare function MobileSidenav({ logo, navData, renderNavItem, footer, layoutQuery, 'aria-label': ariaLabel, sx, }: MobileSidenavProps): ReactNode;
668
+
669
+ /**
670
+ * Auth Centered Layout
671
+ *
672
+ * Centered authentication layout with card-style content.
673
+ *
674
+ * @module @omnitron-dev/prism/layouts/auth/centered
675
+ */
676
+
677
+ interface AuthCenteredLayoutProps {
678
+ /** Child content (form) */
679
+ children?: ReactNode;
680
+ /** Logo component */
681
+ logo?: ReactNode;
682
+ /** Custom max width for content card */
683
+ maxWidth?: number | string;
684
+ /** MUI sx prop */
685
+ sx?: SxProps<Theme>;
686
+ }
687
+ /**
688
+ * Auth Centered Layout - Card-based centered authentication form.
689
+ *
690
+ * Perfect for login, registration, password reset, and verification pages.
691
+ *
692
+ * @example
693
+ * ```tsx
694
+ * <AuthCenteredLayout
695
+ * logo={<Logo />}
696
+ * showHelp
697
+ * >
698
+ * <LoginForm />
699
+ * </AuthCenteredLayout>
700
+ * ```
701
+ */
702
+ declare function AuthCenteredLayout({ children, logo, maxWidth, sx }: AuthCenteredLayoutProps): ReactNode;
703
+ interface AuthCenteredContentProps {
704
+ /** Child content */
705
+ children?: ReactNode;
706
+ /** Custom max width */
707
+ maxWidth?: number | string;
708
+ /** MUI sx prop */
709
+ sx?: SxProps<Theme>;
710
+ }
711
+ /**
712
+ * Auth centered content wrapper.
713
+ * Use for the content inside the auth card.
714
+ */
715
+ declare function AuthCenteredContent({ children, maxWidth, sx }: AuthCenteredContentProps): ReactNode;
716
+
717
+ /**
718
+ * Auth Split Layout
719
+ *
720
+ * Split-screen authentication layout with illustration and form.
721
+ *
722
+ * @module @omnitron-dev/prism/layouts/auth/split
723
+ */
724
+
725
+ interface AuthSplitLayoutProps {
726
+ /** Child content (form) */
727
+ children?: ReactNode;
728
+ /** Logo component */
729
+ logo?: ReactNode;
730
+ /** Illustration title */
731
+ title?: string;
732
+ /** Illustration subtitle */
733
+ subtitle?: string;
734
+ /** Illustration image or component */
735
+ illustration?: ReactNode;
736
+ /** Show help link */
737
+ showHelp?: boolean;
738
+ /** Help link URL */
739
+ helpUrl?: string;
740
+ /** Help link text */
741
+ helpText?: string;
742
+ /** Settings button */
743
+ settingsButton?: ReactNode;
744
+ /** Custom max width for form */
745
+ maxWidth?: number | string;
746
+ /** Illustration section sx */
747
+ illustrationSx?: SxProps<Theme>;
748
+ /** MUI sx prop */
749
+ sx?: SxProps<Theme>;
750
+ }
751
+ /**
752
+ * Auth Split Layout - Split-screen with illustration and form.
753
+ *
754
+ * Left side: Illustration with title and subtitle
755
+ * Right side: Authentication form
756
+ *
757
+ * @example
758
+ * ```tsx
759
+ * <AuthSplitLayout
760
+ * logo={<Logo />}
761
+ * title="Welcome to Prism"
762
+ * subtitle="Sign in to continue to your dashboard"
763
+ * illustration={<WelcomeIllustration />}
764
+ * >
765
+ * <LoginForm />
766
+ * </AuthSplitLayout>
767
+ * ```
768
+ */
769
+ declare function AuthSplitLayout({ children, logo, title, subtitle, illustration, showHelp, helpUrl, helpText, settingsButton, maxWidth, illustrationSx, sx, }: AuthSplitLayoutProps): ReactNode;
770
+ interface AuthSplitIllustrationProps {
771
+ /** Title */
772
+ title?: string;
773
+ /** Subtitle */
774
+ subtitle?: string;
775
+ /** Illustration image/component */
776
+ illustration?: ReactNode;
777
+ /** MUI sx prop */
778
+ sx?: SxProps<Theme>;
779
+ }
780
+ /**
781
+ * Standalone illustration section for custom split layouts.
782
+ */
783
+ declare function AuthSplitIllustration({ title, subtitle, illustration, sx }: AuthSplitIllustrationProps): ReactNode;
784
+ interface AuthSplitContentProps {
785
+ /** Child content */
786
+ children?: ReactNode;
787
+ /** Custom max width */
788
+ maxWidth?: number | string;
789
+ /** MUI sx prop */
790
+ sx?: SxProps<Theme>;
791
+ }
792
+ /**
793
+ * Standalone form content section for custom split layouts.
794
+ */
795
+ declare function AuthSplitContent({ children, maxWidth, sx }: AuthSplitContentProps): ReactNode;
796
+
797
+ /**
798
+ * Auth Simple Layout
799
+ *
800
+ * Simple, minimal layout for authentication-related pages.
801
+ *
802
+ * @module @omnitron-dev/prism/layouts/auth/simple
803
+ */
804
+
805
+ interface AuthSimpleLayoutProps {
806
+ /** Child content */
807
+ children?: ReactNode;
808
+ /** Logo component */
809
+ logo?: ReactNode;
810
+ /** Show help link */
811
+ showHelp?: boolean;
812
+ /** Help link URL */
813
+ helpUrl?: string;
814
+ /** Help link text */
815
+ helpText?: string;
816
+ /** Settings button */
817
+ settingsButton?: ReactNode;
818
+ /** Use compact centered content */
819
+ compact?: boolean;
820
+ /** Container max width (for non-compact) */
821
+ maxWidth?: Breakpoint | false;
822
+ /** MUI sx prop */
823
+ sx?: SxProps<Theme>;
824
+ }
825
+ /**
826
+ * Auth Simple Layout - Minimal layout for auth-related pages.
827
+ *
828
+ * Use for:
829
+ * - Error pages (404, 500)
830
+ * - Maintenance pages
831
+ * - Simple message pages
832
+ * - Compact auth forms
833
+ *
834
+ * @example
835
+ * ```tsx
836
+ * <AuthSimpleLayout logo={<Logo />} compact>
837
+ * <NotFoundContent />
838
+ * </AuthSimpleLayout>
839
+ * ```
840
+ */
841
+ declare function AuthSimpleLayout({ children, logo, showHelp, helpUrl, helpText, settingsButton, compact, maxWidth, sx, }: AuthSimpleLayoutProps): ReactNode;
842
+ interface SimpleCompactContentProps {
843
+ /** Child content */
844
+ children?: ReactNode;
845
+ /** MUI sx prop */
846
+ sx?: SxProps<Theme>;
847
+ }
848
+ /**
849
+ * Simple compact content wrapper.
850
+ * Centered, constrained-width content for simple pages.
851
+ */
852
+ declare function SimpleCompactContent({ children, sx }: SimpleCompactContentProps): ReactNode;
853
+
854
+ export { AuthCenteredContent, type AuthCenteredContentProps, AuthCenteredLayout, type AuthCenteredLayoutProps, type AuthLayoutProps, type AuthLayoutVariant, AuthSimpleLayout, type AuthSimpleLayoutProps, AuthSplitContent, type AuthSplitContentProps, AuthSplitIllustration, type AuthSplitIllustrationProps, AuthSplitLayout, type AuthSplitLayoutProps, DEFAULT_LAYOUT_CSS_VARS, DRAWER_WIDTHS, DashboardContent, type DashboardContentProps, DashboardLayout, type DashboardLayoutProps, HEADER_HEIGHTS, HeaderSection, type HeaderSectionProps, type HeaderSlots, HeaderToolbar, type HeaderToolbarProps, LAYOUT_CSS_VARS, type LayoutConfig, LayoutContext, type LayoutContextValue, LayoutGlobalStyles, type LayoutGlobalStylesProps, type LayoutNavData, type LayoutNavItem, type LayoutNavSection, LayoutProvider, type LayoutProviderProps, LayoutSection, type LayoutSectionProps, MainSection, type MainSectionProps, MobileSidenav, type MobileSidenavProps, type NavColorMode, type NavigationMenuType, Sidenav, type SidenavProps, type SidenavVariant, SimpleCompactContent, type SimpleCompactContentProps, type TopnavVariant, defaultLayoutConfig, getBaseLayoutCssVars, getNavColorCssVars, mergeLayoutCssVars, useLayoutConfig, useLayoutContext, useNavActive, useSidenavVisible, useTopnavVisible };