pelatform-ui 1.3.0 → 1.4.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.
@@ -1,5 +1,13 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import React__default from 'react';
2
+ import * as React$1 from 'react';
3
+ import React__default, { ReactNode, ComponentProps } from 'react';
4
+ import { QueryClient } from '@tanstack/react-query';
5
+ import { ThemeProvider as ThemeProvider$1 } from 'next-themes';
6
+ import { A as Alert, B as Button } from './button-Bc3N6jWT.js';
7
+ import { B as Badge } from './badge-CnQznr5B.js';
8
+ import { ThemeMode } from '@pelatform/utils';
9
+ import 'class-variance-authority/types';
10
+ import 'class-variance-authority';
3
11
 
4
12
  /**
5
13
  * Props interface for icon components
@@ -127,4 +135,1008 @@ declare function Logo({ className }: {
127
135
  className?: string;
128
136
  }): react_jsx_runtime.JSX.Element;
129
137
 
130
- export { Icons, Logo };
138
+ /**
139
+ * Main Navigation Component
140
+ * Provides a responsive navigation menu with dropdown support, active state detection,
141
+ * and analytics tracking for user interactions
142
+ */
143
+ /**
144
+ * Interface defining the structure of a navigation item
145
+ */
146
+ interface NavItem {
147
+ /** Display text for the navigation item */
148
+ title: string;
149
+ /** URL path for the navigation item */
150
+ href?: string;
151
+ /** Whether the link opens in a new tab */
152
+ external?: boolean;
153
+ /** Optional icon to display alongside the title */
154
+ icon?: React.ComponentType<React.SVGProps<SVGSVGElement>>;
155
+ /** Child navigation items for dropdown menus */
156
+ children?: NavItem[];
157
+ }
158
+ /**
159
+ * Props interface for the MainNav component
160
+ */
161
+ interface NavigationProps {
162
+ /** Current pathname */
163
+ pathname: string;
164
+ /** Array of navigation items to display */
165
+ items: NavItem[];
166
+ /** Additional CSS classes for the navigation container */
167
+ className?: string;
168
+ }
169
+ /**
170
+ * MainNav Component
171
+ *
172
+ * A responsive navigation component that supports multi-level dropdown menus,
173
+ * active state detection, and analytics tracking. Hidden on mobile devices
174
+ * and typically used in the site header.
175
+ *
176
+ * Features:
177
+ * - Multi-level dropdown menus (up to 3 levels)
178
+ * - Active state detection for current page
179
+ * - External link indicators
180
+ * - Analytics tracking for menu interactions
181
+ * - Responsive design (hidden on mobile)
182
+ * - Keyboard navigation support
183
+ *
184
+ * @param props - Component props
185
+ * @returns JSX element containing the navigation menu
186
+ *
187
+ * @example
188
+ * ```tsx
189
+ * const navItems: NavItem[] = [
190
+ * {
191
+ * title: 'Home',
192
+ * href: '/',
193
+ * },
194
+ * {
195
+ * title: 'Products',
196
+ * children: [
197
+ * { title: 'Web Apps', href: '/products/web' },
198
+ * { title: 'Mobile Apps', href: '/products/mobile' },
199
+ * {
200
+ * title: 'Enterprise',
201
+ * children: [
202
+ * { title: 'SaaS Solutions', href: '/products/enterprise/saas' },
203
+ * { title: 'Custom Development', href: '/products/enterprise/custom' }
204
+ * ]
205
+ * }
206
+ * ]
207
+ * },
208
+ * {
209
+ * title: 'Documentation',
210
+ * href: 'https://docs.example.com',
211
+ * external: true,
212
+ * icon: <IconBook className="w-4 h-4" />
213
+ * }
214
+ * ];
215
+ *
216
+ * <MainNav items={navItems} />
217
+ * ```
218
+ */
219
+ declare function MainNav({ pathname, items, className }: NavigationProps): react_jsx_runtime.JSX.Element;
220
+
221
+ /**
222
+ * MobileNav Component
223
+ *
224
+ * A mobile-optimized navigation component that uses a drawer interface
225
+ * for space-efficient menu display on small screens. Automatically
226
+ * manages meta theme color changes when the drawer opens/closes.
227
+ *
228
+ * Features:
229
+ * - Drawer-based interface for mobile screens
230
+ * - Meta theme color management
231
+ * - Responsive design (hidden on desktop)
232
+ * - Accessible with proper ARIA labels
233
+ * - Smooth open/close animations
234
+ * - Scrollable content area
235
+ *
236
+ * @param props - Component props
237
+ * @returns JSX element containing the mobile navigation drawer
238
+ *
239
+ * @example
240
+ * ```tsx
241
+ * // Basic usage with navigation items
242
+ * <MobileNav>
243
+ * <div className="space-y-4">
244
+ * <MobileNavItemRenderer
245
+ * item={{ title: 'Home', href: '/' }}
246
+ * onOpenChange={setOpen}
247
+ * level={1}
248
+ * />
249
+ * <MobileNavItemRenderer
250
+ * item={{
251
+ * title: 'Products',
252
+ * children: [
253
+ * { title: 'Web Apps', href: '/products/web' },
254
+ * { title: 'Mobile Apps', href: '/products/mobile' }
255
+ * ]
256
+ * }}
257
+ * onOpenChange={setOpen}
258
+ * level={1}
259
+ * />
260
+ * </div>
261
+ * </MobileNav>
262
+ *
263
+ * // With custom content
264
+ * <MobileNav className="border-l border-gray-200">
265
+ * <div className="space-y-6">
266
+ * <NavigationItems />
267
+ * <UserProfile />
268
+ * <ThemeToggle />
269
+ * </div>
270
+ * </MobileNav>
271
+ * ```
272
+ */
273
+ declare function MobileNav({ children, className }: {
274
+ children: ReactNode;
275
+ className?: string;
276
+ }): react_jsx_runtime.JSX.Element;
277
+ interface MobileNavItemRendererProps {
278
+ item: NavItem;
279
+ pathname: string | null;
280
+ level: number;
281
+ onOpenChange: (open: boolean) => void;
282
+ }
283
+ declare function MobileNavItemRenderer({ item, pathname, level, onOpenChange, }: MobileNavItemRendererProps): react_jsx_runtime.JSX.Element;
284
+
285
+ /**
286
+ * SiteFooter Component
287
+ *
288
+ * A responsive footer component that provides consistent styling
289
+ * and layout for site-wide footer content. Features a top border,
290
+ * responsive padding, and flexible content arrangement.
291
+ *
292
+ * Features:
293
+ * - Responsive design (stacked on mobile, horizontal on desktop)
294
+ * - Consistent container width and padding
295
+ * - Top border for visual separation
296
+ * - Flexible content arrangement
297
+ * - Semantic footer element
298
+ *
299
+ * @param props - Component props
300
+ * @returns JSX element containing the site footer
301
+ *
302
+ * @example
303
+ * ```tsx
304
+ * // Basic usage with copyright and links
305
+ * <SiteFooter>
306
+ * <div className="flex flex-col items-center gap-4 md:flex-row">
307
+ * <p className="text-sm text-muted-foreground">
308
+ * © 2024 Your Company. All rights reserved.
309
+ * </p>
310
+ * <nav className="flex gap-4">
311
+ * <Link href="/privacy" className="text-sm hover:underline">
312
+ * Privacy Policy
313
+ * </Link>
314
+ * <Link href="/terms" className="text-sm hover:underline">
315
+ * Terms of Service
316
+ * </Link>
317
+ * </nav>
318
+ * </div>
319
+ * </SiteFooter>
320
+ *
321
+ * // With social links and newsletter
322
+ * <SiteFooter>
323
+ * <div className="text-sm text-muted-foreground">
324
+ * © 2024 Your Company
325
+ * </div>
326
+ * <div className="flex items-center gap-4">
327
+ * <SocialLinks />
328
+ * <NewsletterSignup />
329
+ * </div>
330
+ * </SiteFooter>
331
+ *
332
+ * // Custom styling
333
+ * <SiteFooter className="bg-gray-50 dark:bg-gray-900">
334
+ * <FooterContent />
335
+ * </SiteFooter>
336
+ * ```
337
+ */
338
+ declare function SiteFooter({ children, className }: {
339
+ children: ReactNode;
340
+ className?: string;
341
+ }): react_jsx_runtime.JSX.Element;
342
+
343
+ /**
344
+ * SiteHeader Component
345
+ *
346
+ * A sticky header component with modern styling including backdrop blur,
347
+ * semi-transparent background, and responsive design. Positioned at the
348
+ * top of the viewport with high z-index for proper layering.
349
+ *
350
+ * Features:
351
+ * - Sticky positioning at top of viewport
352
+ * - Backdrop blur effect for modern appearance
353
+ * - Semi-transparent background with fallback
354
+ * - Bottom border for visual separation
355
+ * - Responsive container with consistent spacing
356
+ * - High z-index for proper layering
357
+ * - Dark mode support
358
+ *
359
+ * @param props - Component props
360
+ * @returns JSX element containing the site header
361
+ *
362
+ * @example
363
+ * ```tsx
364
+ * // Basic usage with logo and navigation
365
+ * <SiteHeader>
366
+ * <div className="flex items-center gap-4">
367
+ * <Logo />
368
+ * <MainNav items={navItems} />
369
+ * </div>
370
+ * <div className="flex items-center gap-2">
371
+ * <ThemeToggle />
372
+ * <UserMenu />
373
+ * </div>
374
+ * </SiteHeader>
375
+ *
376
+ * // With mobile navigation
377
+ * <SiteHeader>
378
+ * <div className="flex items-center gap-4">
379
+ * <MobileNav>
380
+ * <MobileNavItems />
381
+ * </MobileNav>
382
+ * <Logo />
383
+ * <MainNav items={navItems} className="hidden md:flex" />
384
+ * </div>
385
+ * <HeaderActions />
386
+ * </SiteHeader>
387
+ *
388
+ * // Custom styling
389
+ * <SiteHeader className="bg-white/80 border-gray-200">
390
+ * <HeaderContent />
391
+ * </SiteHeader>
392
+ * ```
393
+ */
394
+ declare function SiteHeader({ children, className }: {
395
+ children: ReactNode;
396
+ className?: string;
397
+ }): react_jsx_runtime.JSX.Element;
398
+
399
+ /**
400
+ * React Query provider component with optimized configuration
401
+ *
402
+ * This provider sets up TanStack Query with:
403
+ * - Global error handling with toast notifications
404
+ * - Optimized caching and retry strategies
405
+ * - Background refetching configuration
406
+ * - Stale time and garbage collection settings
407
+ *
408
+ * @param props - Component props containing children
409
+ * @returns JSX element wrapping children with QueryClient context
410
+ *
411
+ * @example
412
+ * ```tsx
413
+ * // Wrap your app with QueryProvider
414
+ * function App() {
415
+ * return (
416
+ * <QueryProvider>
417
+ * <YourAppComponents />
418
+ * </QueryProvider>
419
+ * );
420
+ * }
421
+ *
422
+ * // Use React Query hooks in child components
423
+ * function UserProfile() {
424
+ * const { data, isLoading, error } = useQuery({
425
+ * queryKey: ['user', userId],
426
+ * queryFn: () => fetchUser(userId)
427
+ * });
428
+ *
429
+ * if (isLoading) return <div>Loading...</div>;
430
+ * if (error) return <div>Error occurred</div>; // Error toast will show automatically
431
+ *
432
+ * return <div>{data.name}</div>;
433
+ * }
434
+ * ```
435
+ */
436
+ declare const QueryProvider: ({ client: clientProps, children, }: {
437
+ client?: QueryClient;
438
+ children: ReactNode;
439
+ }) => react_jsx_runtime.JSX.Element;
440
+
441
+ /**
442
+ * Props interface for ThemeProvider component
443
+ * Extends NextThemesProvider props for full compatibility
444
+ */
445
+ interface ThemeProviderProps extends React$1.ComponentProps<typeof ThemeProvider$1> {
446
+ /** Child components that will have access to theme context */
447
+ children: React$1.ReactNode;
448
+ }
449
+ /**
450
+ * Application theme provider component
451
+ *
452
+ * This provider sets up theme management with:
453
+ * - Light, dark, and system theme support
454
+ * - Automatic system preference detection
455
+ * - Smooth theme transitions
456
+ * - Integration with tooltip provider
457
+ * - CSS class-based theme switching
458
+ *
459
+ * The provider integrates with the application's theme configuration
460
+ * and provides a consistent theming experience across all components.
461
+ *
462
+ * @param props - Component props extending NextThemesProvider props
463
+ * @returns JSX element wrapping children with theme and tooltip context
464
+ *
465
+ * @example
466
+ * ```tsx
467
+ * // Basic usage - wrap your app root
468
+ * function App() {
469
+ * return (
470
+ * <ThemeProvider>
471
+ * <YourAppComponents />
472
+ * </ThemeProvider>
473
+ * );
474
+ * }
475
+ *
476
+ * // With custom configuration
477
+ * function App() {
478
+ * return (
479
+ * <ThemeProvider
480
+ * defaultTheme="dark"
481
+ * storageKey="custom-theme"
482
+ * >
483
+ * <YourAppComponents />
484
+ * </ThemeProvider>
485
+ * );
486
+ * }
487
+ *
488
+ * // Use theme in child components
489
+ * function ThemeToggle() {
490
+ * const { theme, setTheme } = useTheme();
491
+ *
492
+ * return (
493
+ * <select value={theme} onChange={(e) => setTheme(e.target.value)}>
494
+ * <option value="light">Light</option>
495
+ * <option value="dark">Dark</option>
496
+ * <option value="system">System</option>
497
+ * </select>
498
+ * );
499
+ * }
500
+ * ```
501
+ */
502
+ declare function ThemeProvider({ children, ...props }: ThemeProviderProps): react_jsx_runtime.JSX.Element;
503
+
504
+ /**
505
+ * Configuration options for the alert toast notification
506
+ */
507
+ interface AlertToastOptions {
508
+ /** Custom message to display in the toast */
509
+ message?: string;
510
+ /** Icon variant to display in the alert - determines which icon is shown */
511
+ icon?: "primary" | "destructive" | "success" | "info" | "warning";
512
+ /** Visual variant of the alert component - affects styling and colors */
513
+ variant?: ComponentProps<typeof Alert>["variant"];
514
+ }
515
+ /**
516
+ * Creates and displays a customizable alert toast notification
517
+ *
518
+ * @param options - Configuration options for the toast
519
+ * @param options.message - The message to display (default: 'This is a toast')
520
+ * @param options.icon - The icon variant to show (default: 'success')
521
+ * @param options.variant - The visual style variant (default: 'default')
522
+ *
523
+ * @example
524
+ * ```tsx
525
+ * // Show a success message
526
+ * AlertToast({ message: 'Data saved successfully!' });
527
+ *
528
+ * // Show an error message
529
+ * AlertToast({
530
+ * message: 'Failed to save data',
531
+ * icon: 'destructive',
532
+ * variant: 'destructive'
533
+ * });
534
+ * ```
535
+ */
536
+ declare function AlertToast({ message, icon, variant, }: AlertToastOptions): void;
537
+ /**
538
+ * Alert Notification Component
539
+ *
540
+ * Renders a static alert notification with appropriate icon and styling
541
+ * based on the variant. This component is used for displaying persistent
542
+ * alerts that don't auto-dismiss like toast notifications.
543
+ *
544
+ * @param props - Component props
545
+ * @param props.message - The message to display in the alert
546
+ * @param props.variant - The visual style variant (default: 'info')
547
+ *
548
+ * @returns JSX element or null if no message is provided
549
+ *
550
+ * @example
551
+ * ```tsx
552
+ * // Basic info alert
553
+ * <AlertNotification message="Please verify your email address" />
554
+ *
555
+ * // Error alert
556
+ * <AlertNotification
557
+ * message="Failed to load data"
558
+ * variant="destructive"
559
+ * />
560
+ *
561
+ * // Success alert
562
+ * <AlertNotification
563
+ * message="Profile updated successfully"
564
+ * variant="success"
565
+ * />
566
+ *
567
+ * // Warning alert
568
+ * <AlertNotification
569
+ * message="Your session will expire soon"
570
+ * variant="warning"
571
+ * />
572
+ * ```
573
+ */
574
+ declare function AlertNotification({ message, variant }: AlertToastOptions): react_jsx_runtime.JSX.Element | null;
575
+ /**
576
+ * Displays a standardized "coming soon" toast notification
577
+ *
578
+ * This function creates a consistent user experience for features that are
579
+ * not yet implemented. It uses a custom toast with alert styling to inform
580
+ * users that the feature they're trying to access is under development.
581
+ *
582
+ * @param options - Configuration options for the toast appearance and message
583
+ *
584
+ * @example
585
+ * ```tsx
586
+ * // Basic usage with default message
587
+ * AlertComingsoon();
588
+ *
589
+ * // Custom message with warning variant
590
+ * AlertComingsoon({
591
+ * message: 'Advanced analytics coming in Q2 2024',
592
+ * icon: 'warning',
593
+ * variant: 'warning'
594
+ * });
595
+ *
596
+ * // Success variant for positive messaging
597
+ * AlertComingsoon({
598
+ * message: 'New dashboard features are on the way!',
599
+ * icon: 'success',
600
+ * variant: 'success'
601
+ * });
602
+ *
603
+ * // Use in event handlers
604
+ * const handlePremiumFeature = () => {
605
+ * AlertComingsoon({
606
+ * message: 'Premium features available soon',
607
+ * icon: 'info',
608
+ * variant: 'info'
609
+ * });
610
+ * };
611
+ * ```
612
+ */
613
+ declare const AlertComingsoon: ({ message, variant, }?: AlertToastOptions) => void;
614
+
615
+ /**
616
+ * Coming Soon Component
617
+ * Displays a full-height section with an animated hover background and
618
+ * optional title and description. Ideal for placeholder pages or upcoming
619
+ * feature announcements.
620
+ */
621
+ /**
622
+ * Props interface for the `ComingSoon` component
623
+ */
624
+ interface ComingSoonProps {
625
+ /** Additional CSS classes for the wrapper */
626
+ className?: string;
627
+ /** Optional highlighted title text */
628
+ title?: string;
629
+ /** Optional descriptive text below the title */
630
+ description?: string;
631
+ }
632
+ /**
633
+ * ComingSoon Component
634
+ *
635
+ * Renders a full-height container with animated hover background objects
636
+ * and optional title/description content centered on the screen.
637
+ *
638
+ * @param props - Component props
639
+ * @returns JSX element containing the coming soon layout
640
+ *
641
+ * @example
642
+ * ```tsx
643
+ * <ComingSoon title="Coming Soon" description="We are cooking something nice." />
644
+ * ```
645
+ */
646
+ declare function ComingSoon({ className, title, description }: ComingSoonProps): react_jsx_runtime.JSX.Element;
647
+
648
+ /**
649
+ * Confirm Dismiss Dialog Component
650
+ * Provides a reusable confirmation dialog for destructive actions like discarding changes
651
+ * Built on top of AlertDialog with customizable content and actions
652
+ */
653
+ /**
654
+ * Props interface for the ConfirmDismissDialog component
655
+ */
656
+ interface ConfirmDismissDialogProps {
657
+ /** Whether the dialog is open */
658
+ open: boolean;
659
+ /** Callback to handle dialog open state changes */
660
+ onOpenChange: (open: boolean) => void;
661
+ /** Callback executed when user confirms the action */
662
+ onConfirm: () => void;
663
+ /** Optional callback executed when user cancels (defaults to closing dialog) */
664
+ onCancel?: () => void;
665
+ /** Dialog title text (defaults to "Discard changes?") */
666
+ title?: string;
667
+ /** Dialog description text (defaults to unsaved changes message) */
668
+ description?: string;
669
+ /** Confirm button text (defaults to "Discard changes") */
670
+ confirmText?: string;
671
+ /** Cancel button text (defaults to "Cancel") */
672
+ cancelText?: string;
673
+ /** CSS class for maximum width (defaults to "md:max-w-[375px]") */
674
+ maxWidth?: string;
675
+ }
676
+ /**
677
+ * Reusable confirmation dialog for destructive actions
678
+ *
679
+ * This component provides a standardized way to confirm destructive actions
680
+ * like discarding unsaved changes, deleting items, or leaving forms.
681
+ * It includes customizable text and handles both confirm and cancel actions.
682
+ *
683
+ * @param props - Component props for dialog configuration
684
+ * @returns JSX element containing the confirmation dialog
685
+ *
686
+ * @example
687
+ * ```tsx
688
+ * // Basic usage for form dismissal
689
+ * function FormComponent() {
690
+ * const [showDialog, setShowDialog] = useState(false);
691
+ * const [hasChanges, setHasChanges] = useState(false);
692
+ *
693
+ * const handleClose = () => {
694
+ * if (hasChanges) {
695
+ * setShowDialog(true);
696
+ * } else {
697
+ * // Close form directly
698
+ * onClose();
699
+ * }
700
+ * };
701
+ *
702
+ * return (
703
+ * <>
704
+ * <form>
705
+ * <button type="button" onClick={handleClose}>Close</button>
706
+ * </form>
707
+ *
708
+ * <ConfirmDismissDialog
709
+ * open={showDialog}
710
+ * onOpenChange={setShowDialog}
711
+ * onConfirm={() => {
712
+ * setShowDialog(false);
713
+ * onClose(); // Actually close the form
714
+ * }}
715
+ * />
716
+ * </>
717
+ * );
718
+ * }
719
+ *
720
+ * // Custom dialog for deletion
721
+ * <ConfirmDismissDialog
722
+ * open={showDeleteDialog}
723
+ * onOpenChange={setShowDeleteDialog}
724
+ * title="Delete item?"
725
+ * description="This action cannot be undone. Are you sure you want to delete this item?"
726
+ * confirmText="Delete"
727
+ * cancelText="Keep"
728
+ * onConfirm={handleDelete}
729
+ * />
730
+ * ```
731
+ */
732
+ declare const ConfirmDismissDialog: ({ open, onOpenChange, onConfirm, onCancel, title, description, confirmText, cancelText, maxWidth, }: ConfirmDismissDialogProps) => react_jsx_runtime.JSX.Element;
733
+
734
+ /**
735
+ * Locale option used by the LanguageSwitcher
736
+ */
737
+ interface LocaleOption {
738
+ /** Locale code, e.g. 'en', 'id' */
739
+ code: string;
740
+ /** Human readable language name */
741
+ name: string;
742
+ /** Optional flag code to render, e.g. 'us', 'id' */
743
+ flag?: string;
744
+ /** Optional currency code associated with the locale */
745
+ currency?: string;
746
+ }
747
+ /**
748
+ * Props for the LanguageSwitcher component (prop-driven)
749
+ */
750
+ interface LanguageSwitcherProps {
751
+ /** Additional CSS classes */
752
+ className?: string;
753
+ /** UI type: standalone dropdown or submenu dropdown */
754
+ type?: "dropdown" | "sub-dropdown";
755
+ /** Button variant style (for toggle type) */
756
+ variant?: ComponentProps<typeof Button>["variant"];
757
+ /** Button size (for toggle type) */
758
+ size?: ComponentProps<typeof Button>["size"];
759
+ /** Whether to show language names */
760
+ showNames?: boolean;
761
+ /** Whether to show flag icons */
762
+ showFlags?: boolean;
763
+ /** Label text for the dropdown trigger; defaults to 'Language' */
764
+ label?: string;
765
+ /** Whether i18n is enabled; if false and <=1 locales, render null */
766
+ i18nEnabled?: boolean;
767
+ /** Current active locale code */
768
+ currentLocale: string;
769
+ /** Available locales to render */
770
+ locales: LocaleOption[];
771
+ /** Handler called when a new locale is selected */
772
+ onLocaleChange: (newLocale: string) => void | Promise<void>;
773
+ /** Custom flags asset url */
774
+ customFlagUrl?: boolean;
775
+ /** Badge variant style */
776
+ badgeVariant?: ComponentProps<typeof Badge>["variant"];
777
+ }
778
+ declare function LanguageSwitcher({ className, type, variant, size, showNames, showFlags, label, i18nEnabled, currentLocale, locales, onLocaleChange, customFlagUrl, badgeVariant, }: LanguageSwitcherProps): react_jsx_runtime.JSX.Element | null;
779
+
780
+ /**
781
+ * Props interface for the ModeSwitcher component
782
+ */
783
+ interface ModeSwitcherProps {
784
+ /** Additional CSS classes for the button */
785
+ className?: string;
786
+ /** Button variant style */
787
+ variant?: React$1.ComponentProps<typeof Button>["variant"];
788
+ /** Button size */
789
+ size?: React$1.ComponentProps<typeof Button>["size"];
790
+ /** Custom cycle order for themes (defaults to system -> light -> dark) */
791
+ cycleOrder?: ThemeMode[];
792
+ /** Button type: 'toggle' for a single button or 'dropdown' and 'sub-dropdown' for a menu with options */
793
+ type?: "toogle" | "dropdown" | "sub-dropdown";
794
+ /** Labels for each theme mode (optional) */
795
+ label?: {
796
+ system?: string;
797
+ dark?: string;
798
+ light?: string;
799
+ };
800
+ }
801
+ /**
802
+ * ModeSwitcher Component
803
+ *
804
+ * A button component that cycles through available theme modes (light, dark, system).
805
+ * Automatically updates the meta theme color and displays appropriate icons
806
+ * for each theme state. Integrates with next-themes for theme persistence.
807
+ *
808
+ * Features:
809
+ * - Cycles through light, dark, and system themes
810
+ * - Updates meta theme color automatically
811
+ * - Shows appropriate icons for each theme
812
+ * - Accessible with screen reader support
813
+ * - Customizable appearance and cycle order
814
+ * - Integrates with application color configuration
815
+ *
816
+ * @param props - Component props
817
+ * @returns JSX element containing the theme switcher button
818
+ *
819
+ * @example
820
+ * ```tsx
821
+ * // Basic usage
822
+ * <ModeSwitcher />
823
+ *
824
+ * // Custom styling
825
+ * <ModeSwitcher
826
+ * className="border border-gray-300"
827
+ * variant="outline"
828
+ * size="lg"
829
+ * />
830
+ *
831
+ * // Custom cycle order
832
+ * <ModeSwitcher
833
+ * cycleOrder={['light', 'dark']} // Skip system mode
834
+ * />
835
+ * ```
836
+ */
837
+ declare function ModeSwitcher({ className, variant, size, cycleOrder, type, label, }: ModeSwitcherProps): react_jsx_runtime.JSX.Element;
838
+
839
+ /**
840
+ * Screen Loader Component
841
+ * Provides a full-screen loading overlay with spinner and customizable text
842
+ * Perfect for page transitions, data loading, and async operations
843
+ */
844
+ /**
845
+ * Props interface for the ScreenLoader component
846
+ */
847
+ interface ScreenLoaderProps {
848
+ /** Loading text to display below the spinner */
849
+ loadingText?: string;
850
+ /** Additional CSS classes for the container */
851
+ className?: string;
852
+ /** Additional CSS classes for the spinner icon */
853
+ spinnerClassName?: string;
854
+ /** Additional CSS classes for the loading text */
855
+ textClassName?: string;
856
+ /** Display loader for content */
857
+ contentLoader?: boolean;
858
+ }
859
+ /**
860
+ * ScreenLoader Component
861
+ *
862
+ * A full-screen loading overlay that covers the entire viewport.
863
+ * Features a spinning icon and customizable loading text with
864
+ * smooth fade transitions. Positioned with high z-index to
865
+ * appear above all other content.
866
+ *
867
+ * @param props - Component props
868
+ * @returns JSX element containing the full-screen loader
869
+ *
870
+ * @example
871
+ * ```tsx
872
+ * // Basic usage
873
+ * function App() {
874
+ * const [isLoading, setIsLoading] = useState(true);
875
+ *
876
+ * useEffect(() => {
877
+ * // Simulate loading
878
+ * setTimeout(() => setIsLoading(false), 2000);
879
+ * }, []);
880
+ *
881
+ * return (
882
+ * <div>
883
+ * {isLoading && <ScreenLoader />}
884
+ * <main>Your app content</main>
885
+ * </div>
886
+ * );
887
+ * }
888
+ *
889
+ * // Custom loading text
890
+ * <ScreenLoader loadingText="Preparing your dashboard..." />
891
+ *
892
+ * // Custom styling
893
+ * <ScreenLoader
894
+ * loadingText="Please wait"
895
+ * className="bg-black/80 backdrop-blur-sm"
896
+ * spinnerClassName="size-8 animate-spin text-blue-500"
897
+ * textClassName="text-white text-lg font-semibold"
898
+ * />
899
+ *
900
+ * // With conditional rendering
901
+ * {isSubmitting && (
902
+ * <ScreenLoader
903
+ * loadingText="Submitting form..."
904
+ * className="bg-white/90"
905
+ * />
906
+ * )}
907
+ *
908
+ * // Different spinner sizes
909
+ * <ScreenLoader
910
+ * spinnerClassName="size-12 animate-spin text-purple-600"
911
+ * textClassName="text-purple-600 font-bold"
912
+ * />
913
+ * ```
914
+ */
915
+ declare function ScreenLoader({ loadingText, className, spinnerClassName, textClassName, contentLoader, }?: ScreenLoaderProps): react_jsx_runtime.JSX.Element;
916
+
917
+ /**
918
+ * Main Toolbar Component
919
+ *
920
+ * Creates a horizontal layout with space between heading and actions.
921
+ * Typically used at the top of pages or sections to display titles
922
+ * and related action buttons.
923
+ *
924
+ * @param props - Component props
925
+ * @returns JSX element containing the toolbar layout
926
+ *
927
+ * @example
928
+ * ```tsx
929
+ * <Toolbar>
930
+ * <ToolbarHeading>
931
+ * <ToolbarTitle>Dashboard</ToolbarTitle>
932
+ * <p className="text-sm text-muted-foreground">
933
+ * Welcome back! Here's what's happening.
934
+ * </p>
935
+ * </ToolbarHeading>
936
+ * <ToolbarActions>
937
+ * <Button variant="outline">Export</Button>
938
+ * <Button>Create New</Button>
939
+ * </ToolbarActions>
940
+ * </Toolbar>
941
+ * ```
942
+ */
943
+ declare const Toolbar: ({ children }: {
944
+ children: ReactNode;
945
+ }) => react_jsx_runtime.JSX.Element;
946
+ /**
947
+ * ToolbarHeading Component
948
+ *
949
+ * Container for the left side of the toolbar, typically containing
950
+ * the title and optional subtitle or description text.
951
+ *
952
+ * @param props - Component props
953
+ * @returns JSX element containing the heading section
954
+ *
955
+ * @example
956
+ * ```tsx
957
+ * <ToolbarHeading>
958
+ * <ToolbarTitle>User Management</ToolbarTitle>
959
+ * <p className="text-sm text-muted-foreground">
960
+ * Manage user accounts and permissions
961
+ * </p>
962
+ * </ToolbarHeading>
963
+ * ```
964
+ */
965
+ declare const ToolbarHeading: ({ children, className, }: {
966
+ children: ReactNode;
967
+ className?: string;
968
+ }) => react_jsx_runtime.JSX.Element;
969
+ /**
970
+ * ToolbarTitle Component
971
+ *
972
+ * Displays the main title text with consistent typography.
973
+ * Renders as an h1 element for proper semantic structure.
974
+ *
975
+ * @param props - Component props
976
+ * @returns JSX element containing the title
977
+ *
978
+ * @example
979
+ * ```tsx
980
+ * <ToolbarTitle>Analytics Dashboard</ToolbarTitle>
981
+ *
982
+ * // With custom styling
983
+ * <ToolbarTitle className="text-2xl text-blue-600">
984
+ * Premium Features
985
+ * </ToolbarTitle>
986
+ * ```
987
+ */
988
+ declare const ToolbarTitle: ({ children, className, }: {
989
+ children: ReactNode;
990
+ className?: string;
991
+ }) => react_jsx_runtime.JSX.Element;
992
+ /**
993
+ * ToolbarActions Component
994
+ *
995
+ * Container for the right side of the toolbar, typically containing
996
+ * action buttons, dropdowns, or other interactive elements.
997
+ * Responsive design with different gaps on mobile vs desktop.
998
+ *
999
+ * @param props - Component props
1000
+ * @returns JSX element containing the actions section
1001
+ *
1002
+ * @example
1003
+ * ```tsx
1004
+ * <ToolbarActions>
1005
+ * <Button variant="outline" size="sm">
1006
+ * <IconDownload className="w-4 h-4 mr-2" />
1007
+ * Export
1008
+ * </Button>
1009
+ * <Button size="sm">
1010
+ * <IconPlus className="w-4 h-4 mr-2" />
1011
+ * Add Item
1012
+ * </Button>
1013
+ * </ToolbarActions>
1014
+ *
1015
+ * // With dropdown menu
1016
+ * <ToolbarActions>
1017
+ * <DropdownMenu>
1018
+ * <DropdownMenuTrigger asChild>
1019
+ * <Button variant="outline">Options</Button>
1020
+ * </DropdownMenuTrigger>
1021
+ * <DropdownMenuContent>
1022
+ * <DropdownMenuItem>Edit</DropdownMenuItem>
1023
+ * <DropdownMenuItem>Delete</DropdownMenuItem>
1024
+ * </DropdownMenuContent>
1025
+ * </DropdownMenu>
1026
+ * </ToolbarActions>
1027
+ * ```
1028
+ */
1029
+ declare const ToolbarActions: ({ children }: {
1030
+ children: ReactNode;
1031
+ }) => react_jsx_runtime.JSX.Element;
1032
+
1033
+ /**
1034
+ * User Avatar Component
1035
+ * Displays user profile pictures with fallback initials and optional status indicators
1036
+ * Built on top of the base Avatar component with enhanced user-specific features
1037
+ */
1038
+ /**
1039
+ * Props interface for the UserAvatar component
1040
+ */
1041
+ interface UserAvatarProps {
1042
+ /** Additional CSS classes for styling */
1043
+ className?: string;
1044
+ /** Whether to show online status indicator */
1045
+ indicator?: boolean;
1046
+ /** Source URL for the user's profile image */
1047
+ src?: string | null | undefined;
1048
+ /** Alt text for the image, also used to generate initials */
1049
+ alt?: string | null;
1050
+ }
1051
+ /**
1052
+ * UserAvatar Component
1053
+ *
1054
+ * Displays a user's profile picture with automatic fallback to initials
1055
+ * when no image is available. Supports optional online status indicators
1056
+ * and follows accessibility best practices.
1057
+ *
1058
+ * Features:
1059
+ * - Automatic initials generation from name
1060
+ * - Fallback handling for missing images
1061
+ * - Optional online status indicator
1062
+ * - Accessible alt text support
1063
+ * - Customizable styling
1064
+ *
1065
+ * @param props - Component props
1066
+ * @param props.className - Additional CSS classes for styling
1067
+ * @param props.indicator - Whether to show online status indicator (default: false)
1068
+ * @param props.src - Source URL for the user's profile image
1069
+ * @param props.alt - Alt text for the image, also used to generate initials
1070
+ * @returns JSX element containing the user avatar
1071
+ *
1072
+ * @example
1073
+ * ```tsx
1074
+ * // Basic user avatar with image
1075
+ * <UserAvatar
1076
+ * src="https://example.com/avatar.jpg"
1077
+ * alt="John Doe"
1078
+ * />
1079
+ *
1080
+ * // Avatar with online indicator
1081
+ * <UserAvatar
1082
+ * src="https://example.com/avatar.jpg"
1083
+ * alt="Jane Smith"
1084
+ * indicator={true}
1085
+ * />
1086
+ *
1087
+ * // Avatar with fallback initials (no image)
1088
+ * <UserAvatar
1089
+ * alt="Bob Johnson"
1090
+ * className="w-12 h-12"
1091
+ * />
1092
+ *
1093
+ * // User list with avatars
1094
+ * <div className="flex space-x-2">
1095
+ * {users.map(user => (
1096
+ * <UserAvatar
1097
+ * key={user.id}
1098
+ * src={user.avatar}
1099
+ * alt={user.name}
1100
+ * indicator={user.isOnline}
1101
+ * className="w-8 h-8"
1102
+ * />
1103
+ * ))}
1104
+ * </div>
1105
+ *
1106
+ * // Profile header
1107
+ * <div className="flex items-center space-x-4">
1108
+ * <UserAvatar
1109
+ * src={currentUser.avatar}
1110
+ * alt={currentUser.name}
1111
+ * indicator={true}
1112
+ * className="w-16 h-16"
1113
+ * />
1114
+ * <div>
1115
+ * <h2>{currentUser.name}</h2>
1116
+ * <p className="text-gray-600">{currentUser.email}</p>
1117
+ * </div>
1118
+ * </div>
1119
+ * ```
1120
+ */
1121
+ declare function UserAvatar({ className, indicator, src, alt }: UserAvatarProps): react_jsx_runtime.JSX.Element;
1122
+ /**
1123
+ * Utility function to generate initials from a name
1124
+ *
1125
+ * Extracts the first letter of each word in a name and converts
1126
+ * them to uppercase to create user initials for avatar fallbacks.
1127
+ *
1128
+ * @param name - The full name to extract initials from
1129
+ * @param count - Maximum number of initials to return (optional)
1130
+ * @returns String containing the initials
1131
+ *
1132
+ * @example
1133
+ * ```tsx
1134
+ * getInitials("John Doe") // Returns "JD"
1135
+ * getInitials("Jane Mary Smith", 2) // Returns "JM"
1136
+ * getInitials("") // Returns ""
1137
+ * getInitials(null) // Returns ""
1138
+ * ```
1139
+ */
1140
+ declare const getInitials: (name: string | null | undefined, count?: number) => string;
1141
+
1142
+ export { AlertComingsoon, AlertNotification, AlertToast, type AlertToastOptions, ComingSoon, type ComingSoonProps, ConfirmDismissDialog, type ConfirmDismissDialogProps, Icons, LanguageSwitcher, type LanguageSwitcherProps, type LocaleOption, Logo, MainNav, MobileNav, MobileNavItemRenderer, ModeSwitcher, type ModeSwitcherProps, type NavItem, type NavigationProps, QueryProvider, ScreenLoader, type ScreenLoaderProps, SiteFooter, SiteHeader, ThemeProvider, Toolbar, ToolbarActions, ToolbarHeading, ToolbarTitle, UserAvatar, getInitials };