@saasflare/ui 1.0.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.
@@ -0,0 +1,2103 @@
1
+ import { ClassValue } from 'clsx';
2
+ import * as react_jsx_runtime from 'react/jsx-runtime';
3
+ import * as class_variance_authority_types from 'class-variance-authority/types';
4
+ import * as React$1 from 'react';
5
+ import { ReactNode, JSX } from 'react';
6
+ import { VariantProps } from 'class-variance-authority';
7
+ import { Dialog as Dialog$1, AlertDialog as AlertDialog$1, Accordion as Accordion$1, Tabs as Tabs$1, Checkbox as Checkbox$1, Switch as Switch$1, Progress as Progress$1, Tooltip as Tooltip$1, Popover as Popover$1, HoverCard as HoverCard$1, Select as Select$1, DropdownMenu as DropdownMenu$1, Slider as Slider$1, Avatar as Avatar$1, ContextMenu as ContextMenu$1, Menubar as Menubar$1, NavigationMenu as NavigationMenu$1, Toggle as Toggle$1, ToggleGroup as ToggleGroup$1, RadioGroup as RadioGroup$1, Collapsible as Collapsible$1, ScrollArea as ScrollArea$1, AspectRatio as AspectRatio$1, Separator as Separator$1, Direction, Label as Label$1, Slot } from 'radix-ui';
8
+ import { Drawer as Drawer$1 } from 'vaul';
9
+ import useEmblaCarousel, { UseEmblaCarouselType } from 'embla-carousel-react';
10
+ import { DayPicker, DayButton } from 'react-day-picker';
11
+ import { ToasterProps } from 'sonner';
12
+ import * as RechartsPrimitive from 'recharts';
13
+ import { Combobox as Combobox$1 } from '@base-ui/react';
14
+ import { Command as Command$1 } from 'cmdk';
15
+ import * as react_hook_form from 'react-hook-form';
16
+ import { FieldValues, FieldPath, ControllerProps } from 'react-hook-form';
17
+ import { OTPInput } from 'input-otp';
18
+ import * as ResizablePrimitive from 'react-resizable-panels';
19
+
20
+ /**
21
+ * @fileoverview Core utility functions for the Saasflare design system.
22
+ * @module @saasflare/ui/lib/utils
23
+ *
24
+ * @example
25
+ * import { cn, composeEventHandlers } from '@saasflare/ui';
26
+ */
27
+
28
+ /**
29
+ * Merges class names with Tailwind CSS conflict resolution.
30
+ * Combines clsx conditional logic with tailwind-merge deduplication.
31
+ *
32
+ * @param inputs - Class values (strings, objects, arrays, undefined)
33
+ * @returns Merged and deduplicated class string
34
+ *
35
+ * @example
36
+ * cn('p-4 bg-red-500', 'bg-blue-500') // → 'p-4 bg-blue-500'
37
+ * cn('text-sm', isLarge && 'text-lg') // conditional classes
38
+ * cn('mt-2', className) // safe forwarding
39
+ */
40
+ declare function cn(...inputs: ClassValue[]): string;
41
+
42
+ /**
43
+ * @fileoverview Hook to detect mobile viewport via media query.
44
+ * @module packages/core/hooks/use-mobile
45
+ * @layer core
46
+ *
47
+ * Uses `matchMedia` to reactively track whether the viewport width
48
+ * is below the mobile breakpoint (768px).
49
+ *
50
+ * @example
51
+ * const isMobile = useIsMobile();
52
+ * if (isMobile) return <MobileNav />;
53
+ * return <DesktopNav />;
54
+ */
55
+ /**
56
+ * Returns `true` when the viewport width is below 768px.
57
+ *
58
+ * @returns {boolean} Whether the current viewport is mobile-sized
59
+ *
60
+ * @example
61
+ * const isMobile = useIsMobile();
62
+ * <Sheet open={isMobile ? isOpen : undefined}>...</Sheet>
63
+ */
64
+ declare function useIsMobile(): boolean;
65
+
66
+ /**
67
+ * @fileoverview Hook to detect user's reduced-motion preference.
68
+ * @module packages/core/hooks/use-reduced-motion
69
+ * @layer core
70
+ *
71
+ * Returns `true` when the user has enabled "Reduce motion" in their OS settings.
72
+ * Use this to disable Framer Motion scale/translate/spring animations while
73
+ * keeping CSS-token-driven transitions (which already zero out via motion.css).
74
+ *
75
+ * @example
76
+ * const reduced = useReducedMotion();
77
+ * <motion.div whileHover={reduced ? undefined : { scale: 1.02 }} />
78
+ */
79
+ /**
80
+ * Detects the user's prefers-reduced-motion media query.
81
+ *
82
+ * SSR-safe: returns `false` on the server, reads the real value synchronously
83
+ * on the client during hydration, and updates when the OS preference changes.
84
+ *
85
+ * @returns {boolean} `true` when reduced motion is preferred
86
+ */
87
+ declare function useReducedMotion(): boolean;
88
+
89
+ /** Options for useDisclosure */
90
+ interface UseDisclosureOptions {
91
+ /** Initial open state when uncontrolled. Default: `false` */
92
+ defaultOpen?: boolean;
93
+ /** Controlled open state. When provided, the hook operates in controlled mode. */
94
+ isOpen?: boolean;
95
+ /** Callback fired when the open state changes (in both modes) */
96
+ onChange?: (isOpen: boolean) => void;
97
+ }
98
+ /** Return value of useDisclosure */
99
+ interface UseDisclosureReturn {
100
+ /** Current open state */
101
+ isOpen: boolean;
102
+ /** Open the disclosure */
103
+ onOpen: () => void;
104
+ /** Close the disclosure */
105
+ onClose: () => void;
106
+ /** Toggle the disclosure */
107
+ onToggle: () => void;
108
+ /** Set the open state — matches Radix/shadcn `onOpenChange` prop shape */
109
+ onOpenChange: (open: boolean) => void;
110
+ /** Whether the disclosure is externally controlled */
111
+ isControlled: boolean;
112
+ }
113
+ /**
114
+ * Manages open-close state with support for both controlled and uncontrolled usage.
115
+ * Designed to drop into Radix/shadcn primitives via the `onOpenChange` prop.
116
+ *
117
+ * @param {UseDisclosureOptions} [options] - Configuration
118
+ * @returns {UseDisclosureReturn} Open state and control callbacks
119
+ *
120
+ * @example
121
+ * const { isOpen, onOpen, onClose, onOpenChange } = useDisclosure();
122
+ * <Button onClick={onOpen}>Open</Button>
123
+ * <Dialog open={isOpen} onOpenChange={onOpenChange}>
124
+ * <Button onClick={onClose}>Close</Button>
125
+ * </Dialog>
126
+ */
127
+ declare function useDisclosure(options?: UseDisclosureOptions): UseDisclosureReturn;
128
+
129
+ /** Element measurement — dimensions plus bounding-rect position */
130
+ interface Measurement {
131
+ /** Element content-box width in pixels */
132
+ width: number;
133
+ /** Element content-box height in pixels */
134
+ height: number;
135
+ /** DOMRect top (viewport-relative) */
136
+ top: number;
137
+ /** DOMRect left (viewport-relative) */
138
+ left: number;
139
+ /** DOMRect right (viewport-relative) */
140
+ right: number;
141
+ /** DOMRect bottom (viewport-relative) */
142
+ bottom: number;
143
+ /** DOMRect x (viewport-relative) */
144
+ x: number;
145
+ /** DOMRect y (viewport-relative) */
146
+ y: number;
147
+ }
148
+ /** Return tuple of useMeasure — `[ref, measurement]` */
149
+ type UseMeasureReturn<T extends Element = HTMLElement> = readonly [
150
+ ref: (node: T | null) => void,
151
+ measurement: Measurement
152
+ ];
153
+ /**
154
+ * Observes an element's dimensions with a `ResizeObserver` and returns the
155
+ * latest measurement. SSR-safe: returns zeroed values until the observer runs
156
+ * on the client.
157
+ *
158
+ * @template T - The observed element type (defaults to `HTMLElement`)
159
+ * @returns {UseMeasureReturn<T>} Tuple of `[callback ref, measurement]`
160
+ *
161
+ * @example
162
+ * const [ref, { width }] = useMeasure<HTMLDivElement>();
163
+ * const columns = width > 1024 ? 3 : width > 640 ? 2 : 1;
164
+ * return <div ref={ref}>{columns} columns</div>;
165
+ */
166
+ declare function useMeasure<T extends Element = HTMLElement>(): UseMeasureReturn<T>;
167
+
168
+ /** An item in the pagination range — either a page number or an ellipsis marker */
169
+ type PaginationRangeItem = number | 'dots';
170
+ /** Options for usePagination */
171
+ interface UsePaginationOptions {
172
+ /** Total number of pages (1-indexed max). Values below 1 are clamped to 1. */
173
+ total: number;
174
+ /** Initial active page when uncontrolled. Default: `1` */
175
+ initialPage?: number;
176
+ /** Controlled active page. When provided, the hook operates in controlled mode. */
177
+ page?: number;
178
+ /** Number of sibling pages shown on each side of the active page. Default: `1` */
179
+ siblings?: number;
180
+ /** Number of pages shown at the start and end of the range. Default: `1` */
181
+ boundaries?: number;
182
+ /** Callback fired when the active page changes */
183
+ onChange?: (page: number) => void;
184
+ }
185
+ /** Return value of usePagination */
186
+ interface UsePaginationReturn {
187
+ /** Current active page (1-indexed, always within `[1, total]`) */
188
+ activePage: number;
189
+ /** Visible range with ellipsis markers (e.g. `[1, 'dots', 9, 10, 11, 'dots', 20]`) */
190
+ range: PaginationRangeItem[];
191
+ /** Set the active page (clamped to `[1, total]`) */
192
+ setPage: (page: number) => void;
193
+ /** Advance to the next page (no-op if on last page) */
194
+ next: () => void;
195
+ /** Go to the previous page (no-op if on first page) */
196
+ previous: () => void;
197
+ /** Jump to the first page */
198
+ first: () => void;
199
+ /** Jump to the last page */
200
+ last: () => void;
201
+ }
202
+ /**
203
+ * Calculates the visible pagination range and provides navigation controls.
204
+ * Works in both controlled and uncontrolled modes.
205
+ *
206
+ * The range algorithm shows the active page with `siblings` neighbours on
207
+ * each side, `boundaries` pages pinned to the start and end, and `'dots'`
208
+ * ellipsis markers filling the gaps.
209
+ *
210
+ * @param {UsePaginationOptions} options - Pagination configuration
211
+ * @returns {UsePaginationReturn} Active page, range, and navigation helpers
212
+ *
213
+ * @example
214
+ * const { activePage, range, setPage } = usePagination({
215
+ * total: 20,
216
+ * siblings: 1,
217
+ * boundaries: 1,
218
+ * });
219
+ * // activePage = 1 → [1, 2, 3, 4, 5, 'dots', 20]
220
+ * // activePage = 10 → [1, 'dots', 9, 10, 11, 'dots', 20]
221
+ * // activePage = 20 → [1, 'dots', 16, 17, 18, 19, 20]
222
+ */
223
+ declare function usePagination(options: UsePaginationOptions): UsePaginationReturn;
224
+
225
+ /**
226
+ * @fileoverview Shared motion presets for premium UI components.
227
+ * @module packages/core/components/ui/motion-config
228
+ * @layer core
229
+ *
230
+ * Governance:
231
+ * CSS transitions (var(--duration-*), var(--ease-*)) → hover, focus, color changes.
232
+ * These tokens already zero-out via prefers-reduced-motion in motion.css.
233
+ *
234
+ * Framer Motion springs → ONLY for mount/unmount, layout, drag, presence, gesture.
235
+ * Use `useReducedMotion()` to disable springs when the user prefers reduced motion.
236
+ *
237
+ * @example
238
+ * import { spring, useReducedMotion } from "@saasflare/core";
239
+ * const reduced = useReducedMotion();
240
+ * <motion.div transition={reduced ? { duration: 0 } : spring} />
241
+ */
242
+ /** Re-export reduced-motion hook for convenience */
243
+
244
+ /** Snappy spring — default for buttons, badges, interactive feedback */
245
+ declare const spring: {
246
+ readonly type: "spring";
247
+ readonly stiffness: 400;
248
+ readonly damping: 25;
249
+ };
250
+ /** Bouncy spring — dialogs, overlays, playful entrances */
251
+ declare const springBouncy: {
252
+ readonly type: "spring";
253
+ readonly stiffness: 300;
254
+ readonly damping: 15;
255
+ };
256
+ /** Gentle spring — cards, hover lifts, subtle motion */
257
+ declare const springGentle: {
258
+ readonly type: "spring";
259
+ readonly stiffness: 200;
260
+ readonly damping: 20;
261
+ };
262
+ /** Stiff spring — toggles, switches, tight animations */
263
+ declare const springStiff: {
264
+ readonly type: "spring";
265
+ readonly stiffness: 500;
266
+ readonly damping: 30;
267
+ };
268
+ /** Instant transition — used when reduced motion is preferred */
269
+ declare const noMotion: {
270
+ readonly duration: 0;
271
+ };
272
+ /** Fade in preset (mount animation) */
273
+ declare const fadeIn: {
274
+ readonly initial: {
275
+ readonly opacity: 0;
276
+ };
277
+ readonly animate: {
278
+ readonly opacity: 1;
279
+ };
280
+ };
281
+ /** Scale in preset (mount animation) */
282
+ declare const scaleIn: {
283
+ readonly initial: {
284
+ readonly opacity: 0;
285
+ readonly scale: 0.95;
286
+ };
287
+ readonly animate: {
288
+ readonly opacity: 1;
289
+ readonly scale: 1;
290
+ };
291
+ };
292
+ /** Slide up preset (mount animation) */
293
+ declare const slideUp: {
294
+ readonly initial: {
295
+ readonly opacity: 0;
296
+ readonly y: 8;
297
+ };
298
+ readonly animate: {
299
+ readonly opacity: 1;
300
+ readonly y: 0;
301
+ };
302
+ };
303
+ /** Slide down preset (mount animation) */
304
+ declare const slideDown: {
305
+ readonly initial: {
306
+ readonly opacity: 0;
307
+ readonly y: -8;
308
+ };
309
+ readonly animate: {
310
+ readonly opacity: 1;
311
+ readonly y: 0;
312
+ };
313
+ };
314
+
315
+ /** Context value exposed by {@link useAnimation}. */
316
+ interface AnimationContextType {
317
+ /** Whether animations are enabled (composed with OS preference). */
318
+ animated: boolean;
319
+ }
320
+ /**
321
+ * Access the resolved animation state.
322
+ *
323
+ * Inside a `SaasflareProvider`, returns the provider's composed value
324
+ * (`animated` prop AND NOT `prefers-reduced-motion`). Outside any provider,
325
+ * falls back to the OS preference alone.
326
+ *
327
+ * @example
328
+ * const { animated } = useAnimation()
329
+ * <motion.div whileHover={animated ? { scale: 1.02 } : undefined} />
330
+ */
331
+ declare function useAnimation(): AnimationContextType;
332
+
333
+ /** Props for the SmoothScrollProvider component. */
334
+ interface SmoothScrollProviderProps {
335
+ /** Child elements to render. */
336
+ children: ReactNode;
337
+ /** Whether smooth scrolling is enabled. Default: `true` */
338
+ enabled?: boolean;
339
+ }
340
+ /**
341
+ * Context-free provider that toggles smooth scrolling on `<html>`.
342
+ *
343
+ * - Adds `scroll-behavior: smooth` to the document element
344
+ * - Automatically disables when `prefers-reduced-motion: reduce` is set
345
+ * - Restores the original scroll behavior on unmount
346
+ *
347
+ * @component
348
+ * @package ui
349
+ */
350
+ declare function SmoothScrollProvider({ children, enabled, }: SmoothScrollProviderProps): react_jsx_runtime.JSX.Element;
351
+
352
+ /**
353
+ * @fileoverview Shared type aliases for component prop value domains.
354
+ * @module packages/ui/types/component-props
355
+ * @package ui
356
+ *
357
+ * These are value-domain types, not mixin interfaces. Components compose
358
+ * them into their own prop signatures and restrict to the subset that
359
+ * makes sense. Lives in /types (not /providers) because these types have
360
+ * no runtime coupling to the Saasflare provider context.
361
+ *
362
+ * @example Full range
363
+ * interface ButtonProps extends SaasflareComponentProps {
364
+ * size?: Size
365
+ * }
366
+ *
367
+ * @example Restricted subset
368
+ * interface IconProps extends SaasflareComponentProps {
369
+ * size?: Extract<Size, "xs" | "sm" | "md"> // no lg/xl — too big for icons
370
+ * }
371
+ *
372
+ * Intent is intentionally NOT here. Saasflare components express semantic
373
+ * coloring through their own `variant` prop (per-component CVA vocabulary)
374
+ * rather than a shared intent token. See individual component files for
375
+ * their variant domains.
376
+ */
377
+ /**
378
+ * Standard size scale for Saasflare components.
379
+ *
380
+ * Each component restricts to the subset that makes sense:
381
+ * - Buttons: full range `"xs" | "sm" | "md" | "lg" | "xl"`
382
+ * - Icons: only `"xs" | "sm" | "md"` (lg/xl are cartoonishly large)
383
+ * - Avatars: `"sm" | "md" | "lg" | "xl"` (xs is too small to be useful)
384
+ *
385
+ * Components pick via `Extract<Size, "xs" | "sm">` in their props definition.
386
+ */
387
+ type Size = "xs" | "sm" | "md" | "lg" | "xl";
388
+ /**
389
+ * Spacing density scale for data-dense components.
390
+ *
391
+ * Applies per-instance on components like Table, Form, DataList where
392
+ * the author wants to trade visual breathing-room against vertical space.
393
+ *
394
+ * Not a provider axis (unlike `surface` and `animated`): density stays
395
+ * local to the component instance. If you need app-wide "compact mode",
396
+ * wrap your dashboard in your own `<Density>` context or pass the value
397
+ * down explicitly.
398
+ */
399
+ type Density = "compact" | "normal" | "comfortable";
400
+
401
+ /**
402
+ * @fileoverview Theme-related types and constants consumed by SaasflareProvider,
403
+ * SaasflareShell, and CustomPaletteInjector.
404
+ * @module packages/ui/types/theme-props
405
+ * @package ui
406
+ *
407
+ * Palette colors live in `styles/palettes.css` (OKLCH) — the single source of
408
+ * truth. To render a swatch in a picker, wrap an element in `data-palette={id}`
409
+ * and paint it with `oklch(var(--primary-l) var(--primary-c) var(--primary-h))`.
410
+ * Do NOT add a hex `color` field here; it will drift from palettes.css.
411
+ */
412
+ /** All 16 available color palette ids and display names. */
413
+ declare const PALETTES: readonly [{
414
+ readonly id: "ocean";
415
+ readonly name: "Ocean";
416
+ }, {
417
+ readonly id: "achromatic";
418
+ readonly name: "Achromatic";
419
+ }, {
420
+ readonly id: "black";
421
+ readonly name: "Black";
422
+ }, {
423
+ readonly id: "ink";
424
+ readonly name: "Ink";
425
+ }, {
426
+ readonly id: "aurora";
427
+ readonly name: "Aurora";
428
+ }, {
429
+ readonly id: "indigo";
430
+ readonly name: "Indigo";
431
+ }, {
432
+ readonly id: "emerald";
433
+ readonly name: "Emerald";
434
+ }, {
435
+ readonly id: "violet";
436
+ readonly name: "Violet";
437
+ }, {
438
+ readonly id: "coral";
439
+ readonly name: "Coral";
440
+ }, {
441
+ readonly id: "stone";
442
+ readonly name: "Stone";
443
+ }, {
444
+ readonly id: "jade";
445
+ readonly name: "Jade";
446
+ }, {
447
+ readonly id: "cobalt";
448
+ readonly name: "Cobalt";
449
+ }, {
450
+ readonly id: "amber";
451
+ readonly name: "Amber";
452
+ }, {
453
+ readonly id: "fuchsia";
454
+ readonly name: "Fuchsia";
455
+ }, {
456
+ readonly id: "honey";
457
+ readonly name: "Honey";
458
+ }, {
459
+ readonly id: "teal";
460
+ readonly name: "Teal";
461
+ }, {
462
+ readonly id: "iris";
463
+ readonly name: "Iris";
464
+ }, {
465
+ readonly id: "ruby";
466
+ readonly name: "Ruby";
467
+ }];
468
+ /** Union of all preset color palette IDs. */
469
+ type PaletteId = (typeof PALETTES)[number]["id"];
470
+ /**
471
+ * Visual surface style variant.
472
+ *
473
+ * The union uses `(string & {})` so app-level custom surfaces (e.g.
474
+ * "neumorphic") registered via a [data-style="…"] selector in the
475
+ * app's globals.css are accepted without a type patch, while preset
476
+ * ids keep their autocomplete.
477
+ */
478
+ type StyleVariant = "flat" | "glass" | (string & {});
479
+ /** All available built-in surface style variants. */
480
+ declare const STYLES: readonly [{
481
+ readonly id: "flat";
482
+ readonly name: "Flat";
483
+ }, {
484
+ readonly id: "glass";
485
+ readonly name: "Glass";
486
+ }];
487
+ /**
488
+ * Radius preset — orthogonal to {@link Surface} (geometry vs. material).
489
+ *
490
+ * Maps to `[data-radius]` selectors in theme.css; each preset sets `--radius`
491
+ * (and at "pill" also overrides the entire `--radius-sm/md/lg/xl` scale so
492
+ * derived values don't drift to ~9995px).
493
+ *
494
+ * Per-component override: pass `radius` on any Saasflare component.
495
+ * Per-theme override: `CustomPalette.radius` wins via inline style.
496
+ */
497
+ type Radius = "sharp" | "soft" | "rounded" | "pill";
498
+ /** All available built-in radius presets. */
499
+ declare const RADII: readonly [{
500
+ readonly id: "sharp";
501
+ readonly name: "Sharp";
502
+ }, {
503
+ readonly id: "soft";
504
+ readonly name: "Soft";
505
+ }, {
506
+ readonly id: "rounded";
507
+ readonly name: "Rounded";
508
+ }, {
509
+ readonly id: "pill";
510
+ readonly name: "Pill";
511
+ }];
512
+ /**
513
+ * Custom color theme — high-level, developer-friendly.
514
+ *
515
+ * Pass any CSS color as `primary` (hex, oklch, rgb, hsl, named color).
516
+ * Hex values are converted to OKLCH internally via {@link hexToOklch};
517
+ * other formats are passed through as the raw `--primary` value.
518
+ *
519
+ * @example
520
+ * <SaasflareProvider
521
+ * palette={{ name: "acme", primary: "#007AFF" }}
522
+ * />
523
+ *
524
+ * @example Escape hatch for full control
525
+ * <SaasflareProvider palette={{
526
+ * name: "acme",
527
+ * primary: "#007AFF",
528
+ * light: { "--background": "#fafafa" },
529
+ * dark: { "--background": "#0a0a0a" },
530
+ * }} />
531
+ */
532
+ interface CustomPalette {
533
+ /** Unique name — written to `data-palette` attribute. */
534
+ name: string;
535
+ /** Primary brand color in any CSS color format. Required. */
536
+ primary: string;
537
+ /**
538
+ * Optional neutral axis override — drives backgrounds, muted, borders,
539
+ * cards, popovers, sidebar (i.e. the entire grey foundation of the UI),
540
+ * not just one accent token. Accepts hex or an explicit hue angle (0-360).
541
+ * Default: tinted from `primary` with a tiny chroma for "brand warmth".
542
+ */
543
+ neutral?: string;
544
+ /** Optional border radius override (any CSS length). */
545
+ radius?: string;
546
+ /** Escape hatch: raw CSS custom property overrides applied in light mode. */
547
+ light?: Record<string, string>;
548
+ /** Escape hatch: raw CSS custom property overrides applied in dark mode. */
549
+ dark?: Record<string, string>;
550
+ }
551
+ /**
552
+ * Accepted values for the `palette` prop (brand colors — distinct from `theme`,
553
+ * which controls light/dark mode and is delegated to next-themes).
554
+ *
555
+ * - omit (undefined) → defers to persisted user preference, then global.css baseline
556
+ * - PaletteId → preset palette via [data-palette] selector
557
+ * - arbitrary string → app-registered [data-palette="…"] in the app's globals.css
558
+ * - CustomPalette → runtime palette via inline CSS custom properties
559
+ *
560
+ * The `(string & {})` branch preserves autocomplete for the 16 preset ids
561
+ * while still permitting arbitrary strings.
562
+ */
563
+ type Palette = PaletteId | (string & {}) | CustomPalette;
564
+ /**
565
+ * Accepted values for the `surface` prop.
566
+ *
567
+ * - omit (undefined) → defers to persisted user preference, then "flat" baseline
568
+ * - StyleVariant → "flat" | "glass" | app-registered custom surface
569
+ */
570
+ type Surface = StyleVariant;
571
+ /**
572
+ * Accepted values for the `radius` prop on SaasflareProvider / Shell.
573
+ *
574
+ * - omit (undefined) → defers to persisted user preference, then "rounded" baseline
575
+ * - Radius → forces [data-radius] on <html>
576
+ */
577
+ type RadiusProp = Radius;
578
+
579
+ /** Context value exposed by useSaasflareTheme(). */
580
+ interface SaasflareThemeContextType {
581
+ /** Active brand palette id, or null when using baseline. */
582
+ palette: string | null;
583
+ /** Active surface style. */
584
+ surface: StyleVariant;
585
+ /** Active radius preset. */
586
+ radius: Radius;
587
+ /** Set the active brand palette (persists to localStorage). */
588
+ setPalette: (id: string) => void;
589
+ /** Set the active surface style (persists to localStorage). */
590
+ setSurface: (style: StyleVariant) => void;
591
+ /** Set the active radius preset (persists to localStorage). */
592
+ setRadius: (radius: Radius) => void;
593
+ }
594
+ /**
595
+ * Access the Saasflare theme context.
596
+ * Safe to call without a provider — returns baseline defaults.
597
+ */
598
+ declare function useSaasflareTheme(): SaasflareThemeContextType;
599
+ /** Props for SaasflareProvider. */
600
+ interface SaasflareProviderProps {
601
+ children: ReactNode;
602
+ /**
603
+ * Light/dark mode (forwarded to next-themes).
604
+ * Distinct from `palette` (which selects the brand colors).
605
+ * @default "system"
606
+ */
607
+ theme?: "light" | "dark" | "system";
608
+ /**
609
+ * Brand palette (distinct from `theme`, which is light/dark).
610
+ * - Preset id or arbitrary string → forces [data-palette] selector
611
+ * - CustomPalette object → forces palette via inline CSS vars
612
+ * - Omit to defer: uses persisted preference if any, otherwise baseline
613
+ */
614
+ palette?: Palette;
615
+ /**
616
+ * Surface style.
617
+ * - StyleVariant → forces [data-style]
618
+ * - Omit to defer: uses persisted preference if any, otherwise "flat"
619
+ */
620
+ surface?: Surface;
621
+ /**
622
+ * Radius preset (geometry axis — orthogonal to surface).
623
+ * - Radius → forces [data-radius]
624
+ * - Omit to defer: uses persisted preference if any, otherwise "rounded"
625
+ */
626
+ radius?: RadiusProp;
627
+ /** Global animation kill switch. @default true */
628
+ animated?: boolean;
629
+ /** Enable smooth scrolling site-wide. @default false */
630
+ smoothScrolling?: boolean;
631
+ /**
632
+ * Skip rendering the pre-hydration FOUT-prevention script.
633
+ * Set this to true if you are placing `<SaasflareScript />` manually
634
+ * inside `<head>` (e.g. for a strict CSP setup).
635
+ * @default false
636
+ */
637
+ disableScript?: boolean;
638
+ /** CSP nonce forwarded to the pre-hydration script. */
639
+ scriptNonce?: string;
640
+ /**
641
+ * localStorage key for Saasflare prefs (palette, surface, radius, animated).
642
+ * Change this to namespace your app ("acme-ui-prefs"), to isolate tenants,
643
+ * or to avoid collisions. If you render `<SaasflareScript />` manually in
644
+ * `<head>`, pass the same value to its `storageKey` prop.
645
+ *
646
+ * Changing this key after users have persisted preferences orphans the
647
+ * old data — users will see defaults until they re-pick their preferences.
648
+ *
649
+ * @default "sf-ui-prefs"
650
+ */
651
+ storageKey?: string;
652
+ /**
653
+ * localStorage key forwarded to next-themes for the light/dark mode
654
+ * preference. Change alongside `storageKey` when namespacing.
655
+ *
656
+ * @default "theme"
657
+ */
658
+ themeStorageKey?: string;
659
+ }
660
+ /**
661
+ * Unified Saasflare provider.
662
+ *
663
+ * Manages light/dark mode (via next-themes), brand palette, surface style,
664
+ * radius preset, and a global animation kill switch in a single component.
665
+ *
666
+ * @component
667
+ * @package ui
668
+ */
669
+ declare function SaasflareProvider({ children, theme, palette, surface, radius, animated, smoothScrolling, disableScript, scriptNonce, storageKey, themeStorageKey, }: SaasflareProviderProps): react_jsx_runtime.JSX.Element;
670
+
671
+ /** Props for {@link SaasflareShell}. */
672
+ interface SaasflareShellProps extends Omit<SaasflareProviderProps, "children" | "disableScript" | "scriptNonce"> {
673
+ children: ReactNode;
674
+ /** Value for `<html lang="…">`. @default "en" */
675
+ lang?: string;
676
+ /**
677
+ * Optional className applied to `<html>`. Use this for `next/font`
678
+ * variable classNames, which scope the loaded font's CSS variable:
679
+ *
680
+ * const inter = Inter({ subsets: ["latin"], variable: "--font-sans" })
681
+ * <SaasflareShell className={inter.variable}>
682
+ */
683
+ className?: string;
684
+ /** Optional className applied to `<body>`. */
685
+ bodyClassName?: string;
686
+ /** Optional children rendered inside a `<head>` element. */
687
+ head?: ReactNode;
688
+ }
689
+ /**
690
+ * Full document shell that locks the Saasflare design-system state in at
691
+ * SSR time. Replaces manual `<html>` + `<body>` + `<SaasflareProvider>`
692
+ * wiring in the Next.js root layout.
693
+ *
694
+ * @component
695
+ * @package ui
696
+ */
697
+ declare function SaasflareShell({ children, lang, className, bodyClassName, head, palette, surface, radius, animated, theme, smoothScrolling, storageKey, themeStorageKey, }: SaasflareShellProps): react_jsx_runtime.JSX.Element;
698
+
699
+ /** Props for {@link SaasflareScript}. */
700
+ interface SaasflareScriptProps {
701
+ /** CSP nonce. Pass when your app enforces a strict Content-Security-Policy. */
702
+ nonce?: string;
703
+ /**
704
+ * Initial brand palette. Mirror the `palette` prop of SaasflareProvider.
705
+ * Omit to defer to persisted localStorage preference.
706
+ */
707
+ palette?: string;
708
+ /**
709
+ * Initial surface style. Mirror the `surface` prop of SaasflareProvider.
710
+ * Omit to defer to persisted localStorage preference.
711
+ */
712
+ surface?: string;
713
+ /**
714
+ * Initial radius preset. Mirror the `radius` prop of SaasflareProvider.
715
+ * Omit to defer to persisted localStorage preference.
716
+ */
717
+ radius?: string;
718
+ /**
719
+ * Initial animation state. Mirror the `animated` prop of SaasflareProvider.
720
+ * Omit to defer to persisted localStorage preference (default: true).
721
+ */
722
+ animated?: boolean;
723
+ /**
724
+ * localStorage key to read prefs from. Must match the SaasflareProvider's
725
+ * `storageKey` prop exactly. @default "sf-ui-prefs"
726
+ */
727
+ storageKey?: string;
728
+ }
729
+ /**
730
+ * Inline script that sets `data-palette`, `data-style`, `data-radius`,
731
+ * `data-animated` on the document element before first paint.
732
+ *
733
+ * @component
734
+ */
735
+ declare function SaasflareScript({ nonce, palette, surface, radius, animated, storageKey }: SaasflareScriptProps): react_jsx_runtime.JSX.Element;
736
+
737
+ /**
738
+ * @fileoverview Base props and resolver hook for Saasflare components.
739
+ * @module packages/ui/providers/use-saasflare-props
740
+ * @package ui
741
+ *
742
+ * Every Saasflare component MUST:
743
+ * 1. Extend SaasflareComponentProps in its props interface
744
+ * 2. Call useSaasflareProps(props) to resolve effective values
745
+ *
746
+ * This ensures consistent precedence:
747
+ * component prop > provider context > hardcoded defaults
748
+ *
749
+ * @example
750
+ * interface CardProps extends SaasflareComponentProps {
751
+ * title: string
752
+ * }
753
+ *
754
+ * function Card({ title, ...sfProps }: CardProps) {
755
+ * const { surface, radius, animated } = useSaasflareProps(sfProps)
756
+ * // surface/radius are guaranteed to be resolved, never undefined
757
+ * }
758
+ */
759
+
760
+ /** Props that every Saasflare component accepts for theme integration. */
761
+ interface SaasflareComponentProps {
762
+ /** Surface style override. Omit to inherit from provider. */
763
+ surface?: StyleVariant;
764
+ /** Radius preset override. Omit to inherit from provider. */
765
+ radius?: Radius;
766
+ /** Animation override. Omit to inherit from provider. */
767
+ animated?: boolean;
768
+ }
769
+ /** Fully resolved theme values — no optionals, no undefined. */
770
+ interface ResolvedSaasflareProps {
771
+ /** Active surface style. */
772
+ surface: StyleVariant;
773
+ /** Active radius preset. */
774
+ radius: Radius;
775
+ /** Whether animations are enabled. */
776
+ animated: boolean;
777
+ /** Active brand palette id (null = global.css baseline). */
778
+ palette: string | null;
779
+ }
780
+ /**
781
+ * Resolves component-level overrides against the provider context.
782
+ *
783
+ * Precedence: component prop > provider context > hardcoded default
784
+ *
785
+ * Safe without a provider — returns sensible defaults.
786
+ */
787
+ declare function useSaasflareProps(props?: SaasflareComponentProps): ResolvedSaasflareProps;
788
+
789
+ declare const INTENTS: readonly ["primary", "neutral", "success", "warning", "danger", "info"];
790
+ type Intent = (typeof INTENTS)[number];
791
+ /**
792
+ * Button variant definitions using the 3-axis system.
793
+ *
794
+ * Axes:
795
+ * variant — visual treatment: solid, soft, outline, ghost, link, glass, shadow
796
+ * intent — color intent via data-intent attribute + CSS tokens
797
+ * size — dimensional: xs, sm, md, lg, xl, icon, icon-xs, icon-sm, icon-lg
798
+ */
799
+ declare const buttonVariants: (props?: ({
800
+ variant?: "link" | "glass" | "soft" | "solid" | "outline" | "ghost" | "shadow" | null | undefined;
801
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
802
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
803
+ /** Framer-motion event overrides that conflict with React HTML events */
804
+ type MotionConflicts$1 = "onDrag" | "onDragStart" | "onDragEnd" | "onAnimationStart" | "onAnimationEnd";
805
+ /**
806
+ * Props for the Saasflare Button component.
807
+ *
808
+ * Extends {@link SaasflareComponentProps} to accept `surface` and `animated`
809
+ * overrides that are resolved against the <SaasflareProvider> context.
810
+ */
811
+ interface ButtonProps extends Omit<React$1.ComponentProps<"button">, MotionConflicts$1>, VariantProps<typeof buttonVariants>, SaasflareComponentProps {
812
+ /** Render as child element (Radix Slot pattern) */
813
+ asChild?: boolean;
814
+ /** Semantic color intent */
815
+ intent?: Intent;
816
+ /** Show loading spinner (replaces left icon, keeps text visible) */
817
+ loading?: boolean;
818
+ /** Stretch to full width of container */
819
+ fullWidth?: boolean;
820
+ }
821
+ /**
822
+ * Primary interactive button with motion, loading, and intent support.
823
+ *
824
+ * Resolves `surface` and `animated` via {@link useSaasflareProps} with the
825
+ * precedence: component prop > <SaasflareProvider> context > hardcoded default.
826
+ *
827
+ * When no explicit `variant` is set and the resolved surface is `"glass"`, the
828
+ * button promotes itself to `variant="glass"`. An explicit `variant` prop always
829
+ * wins over the surface-based promotion.
830
+ *
831
+ * @component
832
+ * @layer ui
833
+ *
834
+ * @param {string} variant - Visual treatment: "solid" | "soft" | "outline" | "ghost" | "link" | "glass" | "shadow"
835
+ * @param {string} intent - Color intent: "primary" | "neutral" | "success" | "warning" | "danger" | "info"
836
+ * @param {string} size - Button size: "xs" | "sm" | "md" | "lg" | "xl" | "icon" | "icon-xs" | "icon-sm" | "icon-lg"
837
+ * @param {string} surface - Surface style override: "flat" | "glass" (inherits from provider when omitted)
838
+ * @param {boolean} animated - Gate motion effects (inherits from provider when omitted)
839
+ * @param {boolean} loading - Shows spinner, sets aria-busy, preserves width
840
+ * @param {boolean} fullWidth - Stretches to container width
841
+ * @param {boolean} asChild - Render as child element (Slot pattern)
842
+ *
843
+ * @example
844
+ * // Solid primary (default)
845
+ * <Button>Save Changes</Button>
846
+ *
847
+ * @example
848
+ * // Outline danger
849
+ * <Button variant="outline" intent="danger">Delete Account</Button>
850
+ *
851
+ * @example
852
+ * // Inherits surface from provider — auto-promotes to glass variant
853
+ * <SaasflareProvider surface="glass"><Button>Frosted</Button></SaasflareProvider>
854
+ *
855
+ * @example
856
+ * // Loading state
857
+ * <Button loading>Processing...</Button>
858
+ *
859
+ * @example
860
+ * // Icon button
861
+ * <Button variant="ghost" size="icon"><SettingsIcon /></Button>
862
+ *
863
+ * @example
864
+ * // Legacy API (deprecated but supported)
865
+ * <Button variant="destructive">Delete</Button>
866
+ */
867
+ declare function Button({ className, variant: variantProp, size, intent: intentProp, asChild, loading, fullWidth, surface, animated, disabled, children, ...props }: ButtonProps): react_jsx_runtime.JSX.Element;
868
+
869
+ /**
870
+ * Card container with subtle hover-lift animation.
871
+ *
872
+ * @component
873
+ * @layer core
874
+ *
875
+ * @example
876
+ * <Card className="max-w-sm">
877
+ * <CardHeader><CardTitle>Plan</CardTitle></CardHeader>
878
+ * <CardContent>Content here</CardContent>
879
+ * </Card>
880
+ */
881
+ /** Framer-motion event overrides that conflict with React HTML events */
882
+ type MotionConflicts = "onDrag" | "onDragStart" | "onDragEnd" | "onAnimationStart" | "onAnimationEnd";
883
+ declare function Card({ className, ...props }: Omit<React$1.ComponentProps<"div">, MotionConflicts>): react_jsx_runtime.JSX.Element;
884
+ /**
885
+ * Card header with grid layout supporting an optional action slot.
886
+ *
887
+ * @component
888
+ * @layer core
889
+ */
890
+ declare function CardHeader({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
891
+ /**
892
+ * Card title text.
893
+ *
894
+ * @component
895
+ * @layer core
896
+ */
897
+ declare function CardTitle({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
898
+ /**
899
+ * Card description / subtitle text.
900
+ *
901
+ * @component
902
+ * @layer core
903
+ */
904
+ declare function CardDescription({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
905
+ /**
906
+ * Card action slot — positioned top-right in the header.
907
+ *
908
+ * @component
909
+ * @layer core
910
+ */
911
+ declare function CardAction({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
912
+ /**
913
+ * Card main content area.
914
+ *
915
+ * @component
916
+ * @layer core
917
+ */
918
+ declare function CardContent({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
919
+ /**
920
+ * Card footer — bottom-aligned actions.
921
+ *
922
+ * @component
923
+ * @layer core
924
+ */
925
+ declare function CardFooter({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
926
+
927
+ declare function Dialog({ ...props }: React$1.ComponentProps<typeof Dialog$1.Root>): react_jsx_runtime.JSX.Element;
928
+ declare function DialogTrigger({ ...props }: React$1.ComponentProps<typeof Dialog$1.Trigger>): react_jsx_runtime.JSX.Element;
929
+ declare function DialogPortal({ ...props }: React$1.ComponentProps<typeof Dialog$1.Portal>): react_jsx_runtime.JSX.Element;
930
+ declare function DialogClose({ ...props }: React$1.ComponentProps<typeof Dialog$1.Close>): react_jsx_runtime.JSX.Element;
931
+ declare function DialogOverlay({ className, ...props }: React$1.ComponentProps<typeof Dialog$1.Overlay>): react_jsx_runtime.JSX.Element;
932
+ /**
933
+ * Dialog content panel with spring entry animation.
934
+ *
935
+ * @component
936
+ * @layer core
937
+ */
938
+ declare function DialogContent({ className, children, ...props }: React$1.ComponentProps<typeof Dialog$1.Content>): react_jsx_runtime.JSX.Element;
939
+ declare function DialogHeader({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
940
+ declare function DialogFooter({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
941
+ declare function DialogTitle({ className, ...props }: React$1.ComponentProps<typeof Dialog$1.Title>): react_jsx_runtime.JSX.Element;
942
+ declare function DialogDescription({ className, ...props }: React$1.ComponentProps<typeof Dialog$1.Description>): react_jsx_runtime.JSX.Element;
943
+
944
+ declare function AlertDialog({ ...props }: React$1.ComponentProps<typeof AlertDialog$1.Root>): react_jsx_runtime.JSX.Element;
945
+ declare function AlertDialogTrigger({ ...props }: React$1.ComponentProps<typeof AlertDialog$1.Trigger>): react_jsx_runtime.JSX.Element;
946
+ declare function AlertDialogPortal({ ...props }: React$1.ComponentProps<typeof AlertDialog$1.Portal>): react_jsx_runtime.JSX.Element;
947
+ declare function AlertDialogOverlay({ className, ...props }: React$1.ComponentProps<typeof AlertDialog$1.Overlay>): react_jsx_runtime.JSX.Element;
948
+ declare function AlertDialogContent({ className, children, ...props }: React$1.ComponentProps<typeof AlertDialog$1.Content>): react_jsx_runtime.JSX.Element;
949
+ declare function AlertDialogHeader({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
950
+ declare function AlertDialogFooter({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
951
+ declare function AlertDialogTitle({ className, ...props }: React$1.ComponentProps<typeof AlertDialog$1.Title>): react_jsx_runtime.JSX.Element;
952
+ declare function AlertDialogDescription({ className, ...props }: React$1.ComponentProps<typeof AlertDialog$1.Description>): react_jsx_runtime.JSX.Element;
953
+ declare function AlertDialogAction({ className, ...props }: React$1.ComponentProps<typeof AlertDialog$1.Action>): react_jsx_runtime.JSX.Element;
954
+ declare function AlertDialogCancel({ className, ...props }: React$1.ComponentProps<typeof AlertDialog$1.Cancel>): react_jsx_runtime.JSX.Element;
955
+
956
+ declare function Accordion({ ...props }: React$1.ComponentProps<typeof Accordion$1.Root>): react_jsx_runtime.JSX.Element;
957
+ declare function AccordionItem({ className, ...props }: React$1.ComponentProps<typeof Accordion$1.Item>): react_jsx_runtime.JSX.Element;
958
+ /**
959
+ * Accordion trigger with animated chevron indicator.
960
+ *
961
+ * @component
962
+ * @layer core
963
+ */
964
+ declare function AccordionTrigger({ className, children, ...props }: React$1.ComponentProps<typeof Accordion$1.Trigger>): react_jsx_runtime.JSX.Element;
965
+ /**
966
+ * Accordion content panel with fade-in animation.
967
+ *
968
+ * @component
969
+ * @layer core
970
+ */
971
+ declare function AccordionContent({ className, children, ...props }: React$1.ComponentProps<typeof Accordion$1.Content>): react_jsx_runtime.JSX.Element;
972
+
973
+ declare function Tabs({ className, orientation, ...props }: React$1.ComponentProps<typeof Tabs$1.Root>): react_jsx_runtime.JSX.Element;
974
+ declare const tabsListVariants: (props?: ({
975
+ variant?: "default" | "line" | null | undefined;
976
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
977
+ declare function TabsList({ className, variant, ...props }: React$1.ComponentProps<typeof Tabs$1.List> & VariantProps<typeof tabsListVariants>): react_jsx_runtime.JSX.Element;
978
+ /**
979
+ * Tab trigger with animated active indicator.
980
+ *
981
+ * @component
982
+ * @layer core
983
+ */
984
+ declare function TabsTrigger({ className, children, value, ...props }: React$1.ComponentProps<typeof Tabs$1.Trigger>): react_jsx_runtime.JSX.Element;
985
+ declare function TabsContent({ className, ...props }: React$1.ComponentProps<typeof Tabs$1.Content>): react_jsx_runtime.JSX.Element;
986
+
987
+ declare function Input({ className, type, ...props }: Omit<React$1.ComponentProps<"input">, 'onDrag' | 'onDragStart' | 'onDragEnd' | 'onAnimationStart' | 'onAnimationEnd'>): react_jsx_runtime.JSX.Element;
988
+
989
+ declare function Textarea({ className, ...props }: Omit<React$1.ComponentProps<"textarea">, 'onDrag' | 'onDragStart' | 'onDragEnd' | 'onAnimationStart' | 'onAnimationEnd'>): react_jsx_runtime.JSX.Element;
990
+
991
+ declare function Checkbox({ className, ...props }: React$1.ComponentProps<typeof Checkbox$1.Root>): react_jsx_runtime.JSX.Element;
992
+
993
+ declare function Switch({ className, size, ...props }: React$1.ComponentProps<typeof Switch$1.Root> & {
994
+ size?: "sm" | "default";
995
+ }): react_jsx_runtime.JSX.Element;
996
+
997
+ /**
998
+ * Progress bar with smooth spring animation.
999
+ *
1000
+ * @component
1001
+ * @layer core
1002
+ *
1003
+ * @param {number} value - Progress value (0-100)
1004
+ *
1005
+ * @example
1006
+ * <Progress value={42} className="w-full" />
1007
+ */
1008
+ declare function Progress({ className, value, ...props }: React$1.ComponentProps<typeof Progress$1.Root>): react_jsx_runtime.JSX.Element;
1009
+
1010
+ /**
1011
+ * Badge variant definitions.
1012
+ *
1013
+ * Axes:
1014
+ * variant — visual treatment: solid, soft, outline
1015
+ * size — sm, md
1016
+ */
1017
+ declare const badgeVariants: (props?: ({
1018
+ variant?: "soft" | "solid" | "outline" | null | undefined;
1019
+ size?: "sm" | "md" | null | undefined;
1020
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1021
+ /** Props for the Saasflare Badge component */
1022
+ interface BadgeProps extends Omit<React$1.ComponentProps<"span">, "onDrag" | "onDragStart" | "onDragEnd" | "onAnimationStart" | "onAnimationEnd">, VariantProps<typeof badgeVariants> {
1023
+ /** Render as child element (Radix Slot pattern) */
1024
+ asChild?: boolean;
1025
+ /** Semantic color intent */
1026
+ intent?: Intent;
1027
+ }
1028
+ /**
1029
+ * Badge for status, labels, and counts with intent-based coloring.
1030
+ *
1031
+ * @component
1032
+ * @layer core
1033
+ *
1034
+ * @param {string} variant - Visual treatment: "solid" | "soft" | "outline"
1035
+ * @param {string} intent - Color intent: "primary" | "neutral" | "success" | "warning" | "danger" | "info"
1036
+ * @param {string} size - Badge size: "sm" | "md"
1037
+ * @param {boolean} asChild - Render as child element (Slot pattern)
1038
+ *
1039
+ * @example
1040
+ * <Badge intent="success" variant="soft">Active</Badge>
1041
+ *
1042
+ * @example
1043
+ * // Legacy API (deprecated but supported)
1044
+ * <Badge variant="destructive">Error</Badge>
1045
+ */
1046
+ declare function Badge({ className, variant: variantProp, size, intent: intentProp, asChild, ...props }: BadgeProps): react_jsx_runtime.JSX.Element;
1047
+
1048
+ declare function TooltipProvider({ delayDuration, ...props }: React$1.ComponentProps<typeof Tooltip$1.Provider>): react_jsx_runtime.JSX.Element;
1049
+ declare function Tooltip({ ...props }: React$1.ComponentProps<typeof Tooltip$1.Root>): react_jsx_runtime.JSX.Element;
1050
+ declare function TooltipTrigger({ ...props }: React$1.ComponentProps<typeof Tooltip$1.Trigger>): react_jsx_runtime.JSX.Element;
1051
+ declare function TooltipContent({ className, sideOffset, children, ...props }: React$1.ComponentProps<typeof Tooltip$1.Content>): react_jsx_runtime.JSX.Element;
1052
+
1053
+ declare function Popover({ ...props }: React$1.ComponentProps<typeof Popover$1.Root>): react_jsx_runtime.JSX.Element;
1054
+ declare function PopoverTrigger({ ...props }: React$1.ComponentProps<typeof Popover$1.Trigger>): react_jsx_runtime.JSX.Element;
1055
+ declare function PopoverAnchor({ ...props }: React$1.ComponentProps<typeof Popover$1.Anchor>): react_jsx_runtime.JSX.Element;
1056
+ declare function PopoverContent({ className, align, sideOffset, ...props }: React$1.ComponentProps<typeof Popover$1.Content>): react_jsx_runtime.JSX.Element;
1057
+
1058
+ declare function HoverCard({ ...props }: React$1.ComponentProps<typeof HoverCard$1.Root>): react_jsx_runtime.JSX.Element;
1059
+ declare function HoverCardTrigger({ ...props }: React$1.ComponentProps<typeof HoverCard$1.Trigger>): react_jsx_runtime.JSX.Element;
1060
+ declare function HoverCardContent({ className, align, sideOffset, ...props }: React$1.ComponentProps<typeof HoverCard$1.Content>): react_jsx_runtime.JSX.Element;
1061
+
1062
+ declare function Select({ ...props }: React$1.ComponentProps<typeof Select$1.Root>): react_jsx_runtime.JSX.Element;
1063
+ declare function SelectGroup({ ...props }: React$1.ComponentProps<typeof Select$1.Group>): react_jsx_runtime.JSX.Element;
1064
+ declare function SelectValue({ ...props }: React$1.ComponentProps<typeof Select$1.Value>): react_jsx_runtime.JSX.Element;
1065
+ declare function SelectTrigger({ className, size, children, ...props }: React$1.ComponentProps<typeof Select$1.Trigger> & {
1066
+ size?: "sm" | "default";
1067
+ }): react_jsx_runtime.JSX.Element;
1068
+ declare function SelectContent({ className, children, position, ...props }: React$1.ComponentProps<typeof Select$1.Content>): react_jsx_runtime.JSX.Element;
1069
+ declare function SelectLabel({ className, ...props }: React$1.ComponentProps<typeof Select$1.Label>): react_jsx_runtime.JSX.Element;
1070
+ declare function SelectItem({ className, children, ...props }: React$1.ComponentProps<typeof Select$1.Item>): react_jsx_runtime.JSX.Element;
1071
+ declare function SelectSeparator({ className, ...props }: React$1.ComponentProps<typeof Select$1.Separator>): react_jsx_runtime.JSX.Element;
1072
+ declare function SelectScrollUpButton({ className, ...props }: React$1.ComponentProps<typeof Select$1.ScrollUpButton>): react_jsx_runtime.JSX.Element;
1073
+ declare function SelectScrollDownButton({ className, ...props }: React$1.ComponentProps<typeof Select$1.ScrollDownButton>): react_jsx_runtime.JSX.Element;
1074
+
1075
+ declare function DropdownMenu({ ...props }: React$1.ComponentProps<typeof DropdownMenu$1.Root>): react_jsx_runtime.JSX.Element;
1076
+ declare function DropdownMenuPortal({ ...props }: React$1.ComponentProps<typeof DropdownMenu$1.Portal>): react_jsx_runtime.JSX.Element;
1077
+ declare function DropdownMenuTrigger({ className, ...props }: React$1.ComponentProps<typeof DropdownMenu$1.Trigger>): react_jsx_runtime.JSX.Element;
1078
+ declare function DropdownMenuGroup({ ...props }: React$1.ComponentProps<typeof DropdownMenu$1.Group>): react_jsx_runtime.JSX.Element;
1079
+ declare function DropdownMenuSub({ ...props }: React$1.ComponentProps<typeof DropdownMenu$1.Sub>): react_jsx_runtime.JSX.Element;
1080
+ declare function DropdownMenuRadioGroup({ ...props }: React$1.ComponentProps<typeof DropdownMenu$1.RadioGroup>): react_jsx_runtime.JSX.Element;
1081
+ declare function DropdownMenuContent({ className, sideOffset, ...props }: React$1.ComponentProps<typeof DropdownMenu$1.Content>): react_jsx_runtime.JSX.Element;
1082
+ declare function DropdownMenuItem({ className, inset, variant, ...props }: React$1.ComponentProps<typeof DropdownMenu$1.Item> & {
1083
+ inset?: boolean;
1084
+ variant?: "default" | "destructive";
1085
+ }): react_jsx_runtime.JSX.Element;
1086
+ declare function DropdownMenuCheckboxItem({ className, children, checked, ...props }: React$1.ComponentProps<typeof DropdownMenu$1.CheckboxItem>): react_jsx_runtime.JSX.Element;
1087
+ declare function DropdownMenuRadioItem({ className, children, ...props }: React$1.ComponentProps<typeof DropdownMenu$1.RadioItem>): react_jsx_runtime.JSX.Element;
1088
+ declare function DropdownMenuLabel({ className, inset, ...props }: React$1.ComponentProps<typeof DropdownMenu$1.Label> & {
1089
+ inset?: boolean;
1090
+ }): react_jsx_runtime.JSX.Element;
1091
+ declare function DropdownMenuSeparator({ className, ...props }: React$1.ComponentProps<typeof DropdownMenu$1.Separator>): react_jsx_runtime.JSX.Element;
1092
+ declare function DropdownMenuShortcut({ className, ...props }: React$1.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
1093
+ declare function DropdownMenuSubTrigger({ className, inset, children, ...props }: React$1.ComponentProps<typeof DropdownMenu$1.SubTrigger> & {
1094
+ inset?: boolean;
1095
+ }): react_jsx_runtime.JSX.Element;
1096
+ declare function DropdownMenuSubContent({ className, ...props }: React$1.ComponentProps<typeof DropdownMenu$1.SubContent>): react_jsx_runtime.JSX.Element;
1097
+
1098
+ declare function Drawer({ ...props }: React$1.ComponentProps<typeof Drawer$1.Root>): react_jsx_runtime.JSX.Element;
1099
+ declare function DrawerTrigger({ ...props }: React$1.ComponentProps<typeof Drawer$1.Trigger>): react_jsx_runtime.JSX.Element;
1100
+ declare function DrawerPortal({ ...props }: React$1.ComponentProps<typeof Drawer$1.Portal>): react_jsx_runtime.JSX.Element;
1101
+ declare function DrawerClose({ ...props }: React$1.ComponentProps<typeof Drawer$1.Close>): react_jsx_runtime.JSX.Element;
1102
+ declare function DrawerOverlay({ className, ...props }: React$1.ComponentProps<typeof Drawer$1.Overlay>): react_jsx_runtime.JSX.Element;
1103
+ declare function DrawerContent({ className, children, ...props }: React$1.ComponentProps<typeof Drawer$1.Content>): react_jsx_runtime.JSX.Element;
1104
+ declare function DrawerHeader({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1105
+ declare function DrawerFooter({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1106
+ declare function DrawerTitle({ className, ...props }: React$1.ComponentProps<typeof Drawer$1.Title>): react_jsx_runtime.JSX.Element;
1107
+ declare function DrawerDescription({ className, ...props }: React$1.ComponentProps<typeof Drawer$1.Description>): react_jsx_runtime.JSX.Element;
1108
+
1109
+ declare function Sheet({ ...props }: React$1.ComponentProps<typeof Dialog$1.Root>): react_jsx_runtime.JSX.Element;
1110
+ declare function SheetTrigger({ ...props }: React$1.ComponentProps<typeof Dialog$1.Trigger>): react_jsx_runtime.JSX.Element;
1111
+ declare function SheetClose({ ...props }: React$1.ComponentProps<typeof Dialog$1.Close>): react_jsx_runtime.JSX.Element;
1112
+ declare function SheetContent({ className, children, side, showCloseButton, ...props }: React$1.ComponentProps<typeof Dialog$1.Content> & {
1113
+ side?: "top" | "right" | "bottom" | "left";
1114
+ showCloseButton?: boolean;
1115
+ }): react_jsx_runtime.JSX.Element;
1116
+ declare function SheetHeader({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1117
+ declare function SheetFooter({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1118
+ declare function SheetTitle({ className, ...props }: React$1.ComponentProps<typeof Dialog$1.Title>): react_jsx_runtime.JSX.Element;
1119
+ declare function SheetDescription({ className, ...props }: React$1.ComponentProps<typeof Dialog$1.Description>): react_jsx_runtime.JSX.Element;
1120
+
1121
+ declare function Slider({ className, defaultValue, value, min, max, ...props }: React$1.ComponentProps<typeof Slider$1.Root>): react_jsx_runtime.JSX.Element;
1122
+
1123
+ /** Props for the Saasflare Alert component */
1124
+ interface AlertProps extends React$1.ComponentProps<"div"> {
1125
+ /** Semantic color intent */
1126
+ intent?: Intent | "neutral";
1127
+ /**
1128
+ * Legacy variant prop for backward compatibility.
1129
+ * @deprecated Use `intent` instead. "destructive" maps to intent="danger".
1130
+ */
1131
+ variant?: "default" | "destructive";
1132
+ }
1133
+ /**
1134
+ * Contextual alert banner with intent-based coloring.
1135
+ *
1136
+ * @component
1137
+ * @layer core
1138
+ *
1139
+ * @param {string} intent - Color intent: "neutral" | "primary" | "info" | "success" | "warning" | "danger"
1140
+ *
1141
+ * @example
1142
+ * <Alert intent="success">
1143
+ * <CheckIcon />
1144
+ * <AlertTitle>Saved!</AlertTitle>
1145
+ * <AlertDescription>Your changes have been saved.</AlertDescription>
1146
+ * </Alert>
1147
+ *
1148
+ * @example
1149
+ * // Legacy API (deprecated but supported)
1150
+ * <Alert variant="destructive">
1151
+ * <AlertTitle>Error</AlertTitle>
1152
+ * <AlertDescription>Something went wrong.</AlertDescription>
1153
+ * </Alert>
1154
+ */
1155
+ declare function Alert({ className, intent: intentProp, variant, ...props }: AlertProps): react_jsx_runtime.JSX.Element;
1156
+ /**
1157
+ * Alert title text.
1158
+ *
1159
+ * @component
1160
+ * @layer core
1161
+ */
1162
+ declare function AlertTitle({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1163
+ /**
1164
+ * Alert description text.
1165
+ *
1166
+ * @component
1167
+ * @layer core
1168
+ */
1169
+ declare function AlertDescription({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1170
+
1171
+ declare function Avatar({ className, size, ...props }: React$1.ComponentProps<typeof Avatar$1.Root> & {
1172
+ size?: "default" | "sm" | "lg";
1173
+ }): react_jsx_runtime.JSX.Element;
1174
+ declare function AvatarImage({ className, ...props }: React$1.ComponentProps<typeof Avatar$1.Image>): react_jsx_runtime.JSX.Element;
1175
+ declare function AvatarFallback({ className, ...props }: React$1.ComponentProps<typeof Avatar$1.Fallback>): react_jsx_runtime.JSX.Element;
1176
+ declare function AvatarBadge({ className, ...props }: React$1.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
1177
+ declare function AvatarGroup({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1178
+ declare function AvatarGroupCount({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1179
+
1180
+ declare function ContextMenu({ ...props }: React$1.ComponentProps<typeof ContextMenu$1.Root>): react_jsx_runtime.JSX.Element;
1181
+ declare function ContextMenuTrigger({ ...props }: React$1.ComponentProps<typeof ContextMenu$1.Trigger>): react_jsx_runtime.JSX.Element;
1182
+ declare function ContextMenuGroup({ ...props }: React$1.ComponentProps<typeof ContextMenu$1.Group>): react_jsx_runtime.JSX.Element;
1183
+ declare function ContextMenuPortal({ ...props }: React$1.ComponentProps<typeof ContextMenu$1.Portal>): react_jsx_runtime.JSX.Element;
1184
+ declare function ContextMenuSub({ ...props }: React$1.ComponentProps<typeof ContextMenu$1.Sub>): react_jsx_runtime.JSX.Element;
1185
+ declare function ContextMenuRadioGroup({ ...props }: React$1.ComponentProps<typeof ContextMenu$1.RadioGroup>): react_jsx_runtime.JSX.Element;
1186
+ declare function ContextMenuSubTrigger({ className, inset, children, ...props }: React$1.ComponentProps<typeof ContextMenu$1.SubTrigger> & {
1187
+ inset?: boolean;
1188
+ }): react_jsx_runtime.JSX.Element;
1189
+ declare function ContextMenuSubContent({ className, ...props }: React$1.ComponentProps<typeof ContextMenu$1.SubContent>): react_jsx_runtime.JSX.Element;
1190
+ declare function ContextMenuContent({ className, ...props }: React$1.ComponentProps<typeof ContextMenu$1.Content>): react_jsx_runtime.JSX.Element;
1191
+ declare function ContextMenuItem({ className, inset, variant, ...props }: React$1.ComponentProps<typeof ContextMenu$1.Item> & {
1192
+ inset?: boolean;
1193
+ variant?: "default" | "destructive";
1194
+ }): react_jsx_runtime.JSX.Element;
1195
+ declare function ContextMenuCheckboxItem({ className, children, checked, ...props }: React$1.ComponentProps<typeof ContextMenu$1.CheckboxItem>): react_jsx_runtime.JSX.Element;
1196
+ declare function ContextMenuRadioItem({ className, children, ...props }: React$1.ComponentProps<typeof ContextMenu$1.RadioItem>): react_jsx_runtime.JSX.Element;
1197
+ declare function ContextMenuLabel({ className, inset, ...props }: React$1.ComponentProps<typeof ContextMenu$1.Label> & {
1198
+ inset?: boolean;
1199
+ }): react_jsx_runtime.JSX.Element;
1200
+ declare function ContextMenuSeparator({ className, ...props }: React$1.ComponentProps<typeof ContextMenu$1.Separator>): react_jsx_runtime.JSX.Element;
1201
+ declare function ContextMenuShortcut({ className, ...props }: React$1.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
1202
+
1203
+ declare function Menubar({ className, ...props }: React$1.ComponentProps<typeof Menubar$1.Root>): react_jsx_runtime.JSX.Element;
1204
+ declare function MenubarMenu({ ...props }: React$1.ComponentProps<typeof Menubar$1.Menu>): react_jsx_runtime.JSX.Element;
1205
+ declare function MenubarGroup({ ...props }: React$1.ComponentProps<typeof Menubar$1.Group>): react_jsx_runtime.JSX.Element;
1206
+ declare function MenubarPortal({ ...props }: React$1.ComponentProps<typeof Menubar$1.Portal>): react_jsx_runtime.JSX.Element;
1207
+ declare function MenubarRadioGroup({ ...props }: React$1.ComponentProps<typeof Menubar$1.RadioGroup>): react_jsx_runtime.JSX.Element;
1208
+ declare function MenubarTrigger({ className, ...props }: React$1.ComponentProps<typeof Menubar$1.Trigger>): react_jsx_runtime.JSX.Element;
1209
+ declare function MenubarContent({ className, align, alignOffset, sideOffset, ...props }: React$1.ComponentProps<typeof Menubar$1.Content>): react_jsx_runtime.JSX.Element;
1210
+ declare function MenubarItem({ className, inset, variant, ...props }: React$1.ComponentProps<typeof Menubar$1.Item> & {
1211
+ inset?: boolean;
1212
+ variant?: "default" | "destructive";
1213
+ }): react_jsx_runtime.JSX.Element;
1214
+ declare function MenubarCheckboxItem({ className, children, checked, ...props }: React$1.ComponentProps<typeof Menubar$1.CheckboxItem>): react_jsx_runtime.JSX.Element;
1215
+ declare function MenubarRadioItem({ className, children, ...props }: React$1.ComponentProps<typeof Menubar$1.RadioItem>): react_jsx_runtime.JSX.Element;
1216
+ declare function MenubarLabel({ className, inset, ...props }: React$1.ComponentProps<typeof Menubar$1.Label> & {
1217
+ inset?: boolean;
1218
+ }): react_jsx_runtime.JSX.Element;
1219
+ declare function MenubarSeparator({ className, ...props }: React$1.ComponentProps<typeof Menubar$1.Separator>): react_jsx_runtime.JSX.Element;
1220
+ declare function MenubarShortcut({ className, ...props }: React$1.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
1221
+ declare function MenubarSub({ ...props }: React$1.ComponentProps<typeof Menubar$1.Sub>): react_jsx_runtime.JSX.Element;
1222
+ declare function MenubarSubTrigger({ className, inset, children, ...props }: React$1.ComponentProps<typeof Menubar$1.SubTrigger> & {
1223
+ inset?: boolean;
1224
+ }): react_jsx_runtime.JSX.Element;
1225
+ declare function MenubarSubContent({ className, ...props }: React$1.ComponentProps<typeof Menubar$1.SubContent>): react_jsx_runtime.JSX.Element;
1226
+
1227
+ declare function NavigationMenu({ className, children, viewport, ...props }: React$1.ComponentProps<typeof NavigationMenu$1.Root> & {
1228
+ viewport?: boolean;
1229
+ }): react_jsx_runtime.JSX.Element;
1230
+ declare function NavigationMenuList({ className, ...props }: React$1.ComponentProps<typeof NavigationMenu$1.List>): react_jsx_runtime.JSX.Element;
1231
+ declare function NavigationMenuItem({ className, ...props }: React$1.ComponentProps<typeof NavigationMenu$1.Item>): react_jsx_runtime.JSX.Element;
1232
+ declare const navigationMenuTriggerStyle: (props?: class_variance_authority_types.ClassProp | undefined) => string;
1233
+ declare function NavigationMenuTrigger({ className, children, ...props }: React$1.ComponentProps<typeof NavigationMenu$1.Trigger>): react_jsx_runtime.JSX.Element;
1234
+ declare function NavigationMenuContent({ className, ...props }: React$1.ComponentProps<typeof NavigationMenu$1.Content>): react_jsx_runtime.JSX.Element;
1235
+ declare function NavigationMenuViewport({ className, ...props }: React$1.ComponentProps<typeof NavigationMenu$1.Viewport>): react_jsx_runtime.JSX.Element;
1236
+ declare function NavigationMenuLink({ className, ...props }: React$1.ComponentProps<typeof NavigationMenu$1.Link>): react_jsx_runtime.JSX.Element;
1237
+ declare function NavigationMenuIndicator({ className, ...props }: React$1.ComponentProps<typeof NavigationMenu$1.Indicator>): react_jsx_runtime.JSX.Element;
1238
+
1239
+ /** Component the skeleton imitates — drives radius from the design tokens. */
1240
+ type SkeletonAs = "avatar" | "text" | "card";
1241
+ interface SkeletonProps extends React.ComponentProps<"div"> {
1242
+ /**
1243
+ * Component shape to imitate. When set, radius follows the design-system
1244
+ * scale (and at `data-radius="pill"`, all variants collapse to fully rounded
1245
+ * automatically — see theme.css).
1246
+ *
1247
+ * - `avatar` → fully rounded
1248
+ * - `text` → `--radius-sm`
1249
+ * - `card` → `--radius-lg`
1250
+ *
1251
+ * Omit for legacy behavior (`rounded-md` Tailwind class).
1252
+ */
1253
+ as?: SkeletonAs;
1254
+ }
1255
+ /**
1256
+ * Skeleton loading placeholder with animated shimmer gradient.
1257
+ *
1258
+ * @component
1259
+ * @package ui
1260
+ */
1261
+ declare function Skeleton({ as, className, style, ...props }: SkeletonProps): react_jsx_runtime.JSX.Element;
1262
+
1263
+ declare const toggleVariants: (props?: ({
1264
+ variant?: "default" | "outline" | null | undefined;
1265
+ size?: "sm" | "lg" | "default" | null | undefined;
1266
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1267
+ declare function Toggle({ className, variant, size, ...props }: React$1.ComponentProps<typeof Toggle$1.Root> & VariantProps<typeof toggleVariants>): react_jsx_runtime.JSX.Element;
1268
+
1269
+ declare function ToggleGroup({ className, variant, size, spacing, children, ...props }: React$1.ComponentProps<typeof ToggleGroup$1.Root> & VariantProps<typeof toggleVariants> & {
1270
+ spacing?: number;
1271
+ }): react_jsx_runtime.JSX.Element;
1272
+ declare function ToggleGroupItem({ className, children, variant, size, ...props }: React$1.ComponentProps<typeof ToggleGroup$1.Item> & VariantProps<typeof toggleVariants>): react_jsx_runtime.JSX.Element;
1273
+
1274
+ type CarouselApi = UseEmblaCarouselType[1];
1275
+ type UseCarouselParameters = Parameters<typeof useEmblaCarousel>;
1276
+ type CarouselOptions = UseCarouselParameters[0];
1277
+ type CarouselPlugin = UseCarouselParameters[1];
1278
+ type CarouselProps = {
1279
+ opts?: CarouselOptions;
1280
+ plugins?: CarouselPlugin;
1281
+ orientation?: "horizontal" | "vertical";
1282
+ setApi?: (api: CarouselApi) => void;
1283
+ };
1284
+ declare function Carousel({ orientation, opts, setApi, plugins, className, children, ...props }: React$1.ComponentProps<"div"> & CarouselProps): react_jsx_runtime.JSX.Element;
1285
+ declare function CarouselContent({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1286
+ declare function CarouselItem({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1287
+ declare function CarouselPrevious({ className, variant, size, ...props }: React$1.ComponentProps<typeof Button>): react_jsx_runtime.JSX.Element;
1288
+ declare function CarouselNext({ className, variant, size, ...props }: React$1.ComponentProps<typeof Button>): react_jsx_runtime.JSX.Element;
1289
+
1290
+ declare function Calendar({ className, classNames, showOutsideDays, captionLayout, buttonVariant, formatters, components, ...props }: React$1.ComponentProps<typeof DayPicker> & {
1291
+ buttonVariant?: React$1.ComponentProps<typeof Button>["variant"];
1292
+ }): react_jsx_runtime.JSX.Element;
1293
+ declare function CalendarDayButton({ className, day, modifiers, ...props }: React$1.ComponentProps<typeof DayButton>): react_jsx_runtime.JSX.Element;
1294
+
1295
+ declare function RadioGroup({ className, ...props }: React$1.ComponentProps<typeof RadioGroup$1.Root>): react_jsx_runtime.JSX.Element;
1296
+ declare function RadioGroupItem({ className, ...props }: React$1.ComponentProps<typeof RadioGroup$1.Item>): react_jsx_runtime.JSX.Element;
1297
+
1298
+ declare function Collapsible({ ...props }: React.ComponentProps<typeof Collapsible$1.Root>): react_jsx_runtime.JSX.Element;
1299
+ declare function CollapsibleTrigger({ ...props }: React.ComponentProps<typeof Collapsible$1.CollapsibleTrigger>): react_jsx_runtime.JSX.Element;
1300
+ declare function CollapsibleContent({ ...props }: React.ComponentProps<typeof Collapsible$1.CollapsibleContent>): react_jsx_runtime.JSX.Element;
1301
+
1302
+ declare function Spinner({ className, ...props }: React.ComponentProps<"svg">): react_jsx_runtime.JSX.Element;
1303
+
1304
+ declare function ScrollArea({ className, children, ...props }: React$1.ComponentProps<typeof ScrollArea$1.Root>): react_jsx_runtime.JSX.Element;
1305
+ declare function ScrollBar({ className, orientation, ...props }: React$1.ComponentProps<typeof ScrollArea$1.ScrollAreaScrollbar>): react_jsx_runtime.JSX.Element;
1306
+
1307
+ declare const Toaster: ({ ...props }: ToasterProps) => react_jsx_runtime.JSX.Element;
1308
+
1309
+ declare function AspectRatio({ ...props }: React.ComponentProps<typeof AspectRatio$1.Root>): react_jsx_runtime.JSX.Element;
1310
+
1311
+ declare function Breadcrumb({ ...props }: React$1.ComponentProps<"nav">): react_jsx_runtime.JSX.Element;
1312
+ declare function BreadcrumbList({ className, ...props }: React$1.ComponentProps<"ol">): react_jsx_runtime.JSX.Element;
1313
+ declare function BreadcrumbItem({ className, ...props }: React$1.ComponentProps<"li">): react_jsx_runtime.JSX.Element;
1314
+ declare function BreadcrumbLink({ asChild, className, ...props }: React$1.ComponentProps<"a"> & {
1315
+ asChild?: boolean;
1316
+ }): react_jsx_runtime.JSX.Element;
1317
+ declare function BreadcrumbPage({ className, ...props }: React$1.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
1318
+ declare function BreadcrumbSeparator({ children, className, ...props }: React$1.ComponentProps<"li">): react_jsx_runtime.JSX.Element;
1319
+ declare function BreadcrumbEllipsis({ className, ...props }: React$1.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
1320
+
1321
+ declare function Separator({ className, orientation, decorative, ...props }: React$1.ComponentProps<typeof Separator$1.Root>): react_jsx_runtime.JSX.Element;
1322
+
1323
+ declare const buttonGroupVariants: (props?: ({
1324
+ orientation?: "horizontal" | "vertical" | null | undefined;
1325
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1326
+ declare function ButtonGroup({ className, orientation, ...props }: React.ComponentProps<"div"> & VariantProps<typeof buttonGroupVariants>): react_jsx_runtime.JSX.Element;
1327
+ declare function ButtonGroupText({ className, asChild, ...props }: React.ComponentProps<"div"> & {
1328
+ asChild?: boolean;
1329
+ }): react_jsx_runtime.JSX.Element;
1330
+ declare function ButtonGroupSeparator({ className, orientation, ...props }: React.ComponentProps<typeof Separator>): react_jsx_runtime.JSX.Element;
1331
+
1332
+ declare const THEMES: {
1333
+ readonly light: "";
1334
+ readonly dark: ".dark";
1335
+ };
1336
+ type ChartConfig = {
1337
+ [k in string]: {
1338
+ label?: React$1.ReactNode;
1339
+ icon?: React$1.ComponentType;
1340
+ } & ({
1341
+ color?: string;
1342
+ theme?: never;
1343
+ } | {
1344
+ color?: never;
1345
+ theme: Record<keyof typeof THEMES, string>;
1346
+ });
1347
+ };
1348
+ declare function ChartContainer({ id, className, children, config, ...props }: React$1.ComponentProps<"div"> & {
1349
+ config: ChartConfig;
1350
+ children: React$1.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>["children"];
1351
+ }): react_jsx_runtime.JSX.Element;
1352
+ declare const ChartStyle: ({ id, config }: {
1353
+ id: string;
1354
+ config: ChartConfig;
1355
+ }) => react_jsx_runtime.JSX.Element | null;
1356
+ declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
1357
+ interface ChartTooltipPayloadItem {
1358
+ name?: string;
1359
+ value?: number | string;
1360
+ dataKey?: string | number;
1361
+ type?: string;
1362
+ color?: string;
1363
+ fill?: string;
1364
+ payload?: Record<string, unknown>;
1365
+ }
1366
+ interface ChartTooltipContentProps extends React$1.ComponentProps<"div"> {
1367
+ active?: boolean;
1368
+ payload?: ChartTooltipPayloadItem[];
1369
+ label?: string | number;
1370
+ labelFormatter?: (label: unknown, payload: ChartTooltipPayloadItem[]) => React$1.ReactNode;
1371
+ labelClassName?: string;
1372
+ formatter?: (value: unknown, name: string, entry: ChartTooltipPayloadItem, index: number, payload: unknown) => React$1.ReactNode;
1373
+ color?: string;
1374
+ hideLabel?: boolean;
1375
+ hideIndicator?: boolean;
1376
+ indicator?: "line" | "dot" | "dashed";
1377
+ nameKey?: string;
1378
+ labelKey?: string;
1379
+ }
1380
+ declare function ChartTooltipContent({ active, payload, className, indicator, hideLabel, hideIndicator, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey, }: ChartTooltipContentProps): react_jsx_runtime.JSX.Element | null;
1381
+ declare const ChartLegend: React$1.MemoExoticComponent<(outsideProps: RechartsPrimitive.LegendProps) => React$1.ReactPortal | null>;
1382
+ interface ChartLegendPayloadItem {
1383
+ value?: string;
1384
+ type?: string;
1385
+ color?: string;
1386
+ dataKey?: string | number;
1387
+ }
1388
+ interface ChartLegendContentProps extends React$1.ComponentProps<"div"> {
1389
+ payload?: ChartLegendPayloadItem[];
1390
+ verticalAlign?: "top" | "bottom" | "middle";
1391
+ hideIcon?: boolean;
1392
+ nameKey?: string;
1393
+ }
1394
+ declare function ChartLegendContent({ className, hideIcon, payload, verticalAlign, nameKey, }: ChartLegendContentProps): react_jsx_runtime.JSX.Element | null;
1395
+
1396
+ declare const Combobox: typeof Combobox$1.Root;
1397
+ declare function ComboboxValue({ ...props }: Combobox$1.Value.Props): react_jsx_runtime.JSX.Element;
1398
+ declare function ComboboxTrigger({ className, children, ...props }: Combobox$1.Trigger.Props): react_jsx_runtime.JSX.Element;
1399
+ declare function ComboboxInput({ className, children, disabled, showTrigger, showClear, ...props }: Combobox$1.Input.Props & {
1400
+ showTrigger?: boolean;
1401
+ showClear?: boolean;
1402
+ }): react_jsx_runtime.JSX.Element;
1403
+ declare function ComboboxContent({ className, side, sideOffset, align, alignOffset, anchor, ...props }: Combobox$1.Popup.Props & Pick<Combobox$1.Positioner.Props, "side" | "align" | "sideOffset" | "alignOffset" | "anchor">): react_jsx_runtime.JSX.Element;
1404
+ declare function ComboboxList({ className, ...props }: Combobox$1.List.Props): react_jsx_runtime.JSX.Element;
1405
+ declare function ComboboxItem({ className, children, ...props }: Combobox$1.Item.Props): react_jsx_runtime.JSX.Element;
1406
+ declare function ComboboxGroup({ className, ...props }: Combobox$1.Group.Props): react_jsx_runtime.JSX.Element;
1407
+ declare function ComboboxLabel({ className, ...props }: Combobox$1.GroupLabel.Props): react_jsx_runtime.JSX.Element;
1408
+ declare function ComboboxCollection({ ...props }: Combobox$1.Collection.Props): react_jsx_runtime.JSX.Element;
1409
+ declare function ComboboxEmpty({ className, ...props }: Combobox$1.Empty.Props): react_jsx_runtime.JSX.Element;
1410
+ declare function ComboboxSeparator({ className, ...props }: Combobox$1.Separator.Props): react_jsx_runtime.JSX.Element;
1411
+ declare function ComboboxChips({ className, ...props }: React$1.ComponentPropsWithRef<typeof Combobox$1.Chips> & Combobox$1.Chips.Props): react_jsx_runtime.JSX.Element;
1412
+ declare function ComboboxChip({ className, children, showRemove, ...props }: Combobox$1.Chip.Props & {
1413
+ showRemove?: boolean;
1414
+ }): react_jsx_runtime.JSX.Element;
1415
+ declare function ComboboxChipsInput({ className, children, ...props }: Combobox$1.Input.Props): react_jsx_runtime.JSX.Element;
1416
+ declare function useComboboxAnchor(): React$1.RefObject<HTMLDivElement | null>;
1417
+
1418
+ declare function Command({ className, ...props }: React$1.ComponentProps<typeof Command$1>): react_jsx_runtime.JSX.Element;
1419
+ declare function CommandDialog({ title, description, children, className, ...props }: React$1.ComponentProps<typeof Dialog> & {
1420
+ title?: string;
1421
+ description?: string;
1422
+ className?: string;
1423
+ }): react_jsx_runtime.JSX.Element;
1424
+ declare function CommandInput({ className, ...props }: React$1.ComponentProps<typeof Command$1.Input>): react_jsx_runtime.JSX.Element;
1425
+ declare function CommandList({ className, ...props }: React$1.ComponentProps<typeof Command$1.List>): react_jsx_runtime.JSX.Element;
1426
+ declare function CommandEmpty({ ...props }: React$1.ComponentProps<typeof Command$1.Empty>): react_jsx_runtime.JSX.Element;
1427
+ declare function CommandGroup({ className, ...props }: React$1.ComponentProps<typeof Command$1.Group>): react_jsx_runtime.JSX.Element;
1428
+ declare function CommandSeparator({ className, ...props }: React$1.ComponentProps<typeof Command$1.Separator>): react_jsx_runtime.JSX.Element;
1429
+ declare function CommandItem({ className, ...props }: React$1.ComponentProps<typeof Command$1.Item>): react_jsx_runtime.JSX.Element;
1430
+ declare function CommandShortcut({ className, ...props }: React$1.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
1431
+
1432
+ declare function DirectionProvider({ dir, direction, children, }: React$1.ComponentProps<typeof Direction.DirectionProvider> & {
1433
+ direction?: React$1.ComponentProps<typeof Direction.DirectionProvider>["dir"];
1434
+ }): react_jsx_runtime.JSX.Element;
1435
+ declare const useDirection: typeof Direction.useDirection;
1436
+
1437
+ declare function Empty({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1438
+ declare function EmptyHeader({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1439
+ declare const emptyMediaVariants: (props?: ({
1440
+ variant?: "default" | "icon" | null | undefined;
1441
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1442
+ declare function EmptyMedia({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof emptyMediaVariants>): react_jsx_runtime.JSX.Element;
1443
+ declare function EmptyTitle({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1444
+ declare function EmptyDescription({ className, ...props }: React.ComponentProps<"p">): react_jsx_runtime.JSX.Element;
1445
+ declare function EmptyContent({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1446
+
1447
+ declare function Label({ className, ...props }: React$1.ComponentProps<typeof Label$1.Root>): react_jsx_runtime.JSX.Element;
1448
+
1449
+ declare function FieldSet({ className, ...props }: React.ComponentProps<"fieldset">): react_jsx_runtime.JSX.Element;
1450
+ declare function FieldLegend({ className, variant, ...props }: React.ComponentProps<"legend"> & {
1451
+ variant?: "legend" | "label";
1452
+ }): react_jsx_runtime.JSX.Element;
1453
+ declare function FieldGroup({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1454
+ declare const fieldVariants: (props?: ({
1455
+ orientation?: "horizontal" | "vertical" | "responsive" | null | undefined;
1456
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1457
+ declare function Field({ className, orientation, ...props }: React.ComponentProps<"div"> & VariantProps<typeof fieldVariants>): react_jsx_runtime.JSX.Element;
1458
+ declare function FieldContent({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1459
+ declare function FieldLabel({ className, ...props }: React.ComponentProps<typeof Label>): react_jsx_runtime.JSX.Element;
1460
+ declare function FieldTitle({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1461
+ declare function FieldDescription({ className, ...props }: React.ComponentProps<"p">): react_jsx_runtime.JSX.Element;
1462
+ declare function FieldSeparator({ children, className, ...props }: React.ComponentProps<"div"> & {
1463
+ children?: React.ReactNode;
1464
+ }): react_jsx_runtime.JSX.Element;
1465
+ declare function FieldError({ className, children, errors, ...props }: React.ComponentProps<"div"> & {
1466
+ errors?: Array<{
1467
+ message?: string;
1468
+ } | undefined>;
1469
+ }): react_jsx_runtime.JSX.Element | null;
1470
+
1471
+ declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: react_hook_form.FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React$1.JSX.Element;
1472
+ declare const FormField: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ ...props }: ControllerProps<TFieldValues, TName>) => react_jsx_runtime.JSX.Element;
1473
+ declare const useFormField: () => {
1474
+ invalid: boolean;
1475
+ isDirty: boolean;
1476
+ isTouched: boolean;
1477
+ isValidating: boolean;
1478
+ error?: react_hook_form.FieldError;
1479
+ id: string;
1480
+ name: string;
1481
+ formItemId: string;
1482
+ formDescriptionId: string;
1483
+ formMessageId: string;
1484
+ };
1485
+ declare function FormItem({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1486
+ declare function FormLabel({ className, ...props }: React$1.ComponentProps<typeof Label$1.Root>): react_jsx_runtime.JSX.Element;
1487
+ declare function FormControl({ ...props }: React$1.ComponentProps<typeof Slot.Root>): react_jsx_runtime.JSX.Element;
1488
+ declare function FormDescription({ className, ...props }: React$1.ComponentProps<"p">): react_jsx_runtime.JSX.Element;
1489
+ declare function FormMessage({ className, ...props }: React$1.ComponentProps<"p">): react_jsx_runtime.JSX.Element | null;
1490
+
1491
+ interface IconProps {
1492
+ className?: string;
1493
+ }
1494
+ declare const Icons: {
1495
+ logo: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1496
+ chat: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1497
+ settings: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1498
+ pages: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1499
+ preview: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1500
+ analytics: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1501
+ share: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1502
+ send: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1503
+ edit: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1504
+ pencil: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1505
+ eye: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1506
+ x: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1507
+ trash: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1508
+ desktop: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1509
+ tablet: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1510
+ mobile: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1511
+ chevronDown: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1512
+ chevronRight: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1513
+ plus: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1514
+ folder: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1515
+ users: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1516
+ sparkles: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1517
+ check: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1518
+ arrowLeft: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1519
+ home: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1520
+ helpCircle: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1521
+ globe: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1522
+ download: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1523
+ lock: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1524
+ unlock: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1525
+ code: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1526
+ github: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1527
+ copy: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1528
+ spinner: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1529
+ refresh: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1530
+ alertCircle: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1531
+ palette: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1532
+ puzzle: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1533
+ upload: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1534
+ externalLink: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1535
+ gitBranch: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
1536
+ };
1537
+
1538
+ declare function InputGroup({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1539
+ declare const inputGroupAddonVariants: (props?: ({
1540
+ align?: "inline-end" | "inline-start" | "block-end" | "block-start" | null | undefined;
1541
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1542
+ declare function InputGroupAddon({ className, align, ...props }: React$1.ComponentProps<"div"> & VariantProps<typeof inputGroupAddonVariants>): react_jsx_runtime.JSX.Element;
1543
+ declare const inputGroupButtonVariants: (props?: ({
1544
+ size?: "xs" | "sm" | "icon-xs" | "icon-sm" | null | undefined;
1545
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1546
+ declare function InputGroupButton({ className, type, variant, size, ...props }: Omit<React$1.ComponentProps<typeof Button>, "size"> & VariantProps<typeof inputGroupButtonVariants>): react_jsx_runtime.JSX.Element;
1547
+ declare function InputGroupText({ className, ...props }: React$1.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
1548
+ declare function InputGroupInput({ className, ...props }: React$1.ComponentProps<"input">): react_jsx_runtime.JSX.Element;
1549
+ declare function InputGroupTextarea({ className, ...props }: React$1.ComponentProps<"textarea">): react_jsx_runtime.JSX.Element;
1550
+
1551
+ declare function InputOTP({ className, containerClassName, ...props }: React$1.ComponentProps<typeof OTPInput> & {
1552
+ containerClassName?: string;
1553
+ }): react_jsx_runtime.JSX.Element;
1554
+ declare function InputOTPGroup({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1555
+ declare function InputOTPSlot({ index, className, ...props }: React$1.ComponentProps<"div"> & {
1556
+ index: number;
1557
+ }): react_jsx_runtime.JSX.Element;
1558
+ declare function InputOTPSeparator({ ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1559
+
1560
+ declare function ItemGroup({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1561
+ declare function ItemSeparator({ className, ...props }: React$1.ComponentProps<typeof Separator>): react_jsx_runtime.JSX.Element;
1562
+ declare const itemVariants: (props?: ({
1563
+ variant?: "default" | "outline" | "muted" | null | undefined;
1564
+ size?: "sm" | "default" | null | undefined;
1565
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1566
+ declare function Item({ className, variant, size, asChild, ...props }: React$1.ComponentProps<"div"> & VariantProps<typeof itemVariants> & {
1567
+ asChild?: boolean;
1568
+ }): react_jsx_runtime.JSX.Element;
1569
+ declare const itemMediaVariants: (props?: ({
1570
+ variant?: "default" | "icon" | "image" | null | undefined;
1571
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1572
+ declare function ItemMedia({ className, variant, ...props }: React$1.ComponentProps<"div"> & VariantProps<typeof itemMediaVariants>): react_jsx_runtime.JSX.Element;
1573
+ declare function ItemContent({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1574
+ declare function ItemTitle({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1575
+ declare function ItemDescription({ className, ...props }: React$1.ComponentProps<"p">): react_jsx_runtime.JSX.Element;
1576
+ declare function ItemActions({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1577
+ declare function ItemHeader({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1578
+ declare function ItemFooter({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1579
+
1580
+ declare function Kbd({ className, ...props }: React.ComponentProps<"kbd">): react_jsx_runtime.JSX.Element;
1581
+ declare function KbdGroup({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1582
+
1583
+ declare function NativeSelect({ className, size, ...props }: Omit<React$1.ComponentProps<"select">, "size"> & {
1584
+ size?: "sm" | "default";
1585
+ }): react_jsx_runtime.JSX.Element;
1586
+ declare function NativeSelectOption({ ...props }: React$1.ComponentProps<"option">): react_jsx_runtime.JSX.Element;
1587
+ declare function NativeSelectOptGroup({ className, ...props }: React$1.ComponentProps<"optgroup">): react_jsx_runtime.JSX.Element;
1588
+
1589
+ declare function Pagination({ className, ...props }: React$1.ComponentProps<"nav">): react_jsx_runtime.JSX.Element;
1590
+ declare function PaginationContent({ className, ...props }: React$1.ComponentProps<"ul">): react_jsx_runtime.JSX.Element;
1591
+ declare function PaginationItem({ ...props }: React$1.ComponentProps<"li">): react_jsx_runtime.JSX.Element;
1592
+ type PaginationLinkProps = {
1593
+ isActive?: boolean;
1594
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "icon" | "icon-xs" | "icon-sm" | "icon-lg";
1595
+ } & React$1.ComponentProps<"a">;
1596
+ declare function PaginationLink({ className, isActive, size, ...props }: PaginationLinkProps): react_jsx_runtime.JSX.Element;
1597
+ declare function PaginationPrevious({ className, ...props }: React$1.ComponentProps<typeof PaginationLink>): react_jsx_runtime.JSX.Element;
1598
+ declare function PaginationNext({ className, ...props }: React$1.ComponentProps<typeof PaginationLink>): react_jsx_runtime.JSX.Element;
1599
+ declare function PaginationEllipsis({ className, ...props }: React$1.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
1600
+
1601
+ declare function ResizablePanelGroup({ className, ...props }: ResizablePrimitive.GroupProps): react_jsx_runtime.JSX.Element;
1602
+ declare function ResizablePanel({ ...props }: ResizablePrimitive.PanelProps): react_jsx_runtime.JSX.Element;
1603
+ declare function ResizableHandle({ withHandle, className, ...props }: ResizablePrimitive.SeparatorProps & {
1604
+ withHandle?: boolean;
1605
+ }): react_jsx_runtime.JSX.Element;
1606
+
1607
+ declare function Table({ className, ...props }: React$1.ComponentProps<"table">): react_jsx_runtime.JSX.Element;
1608
+ declare function TableHeader({ className, ...props }: React$1.ComponentProps<"thead">): react_jsx_runtime.JSX.Element;
1609
+ declare function TableBody({ className, ...props }: React$1.ComponentProps<"tbody">): react_jsx_runtime.JSX.Element;
1610
+ declare function TableFooter({ className, ...props }: React$1.ComponentProps<"tfoot">): react_jsx_runtime.JSX.Element;
1611
+ declare function TableRow({ className, ...props }: React$1.ComponentProps<"tr">): react_jsx_runtime.JSX.Element;
1612
+ declare function TableHead({ className, ...props }: React$1.ComponentProps<"th">): react_jsx_runtime.JSX.Element;
1613
+ declare function TableCell({ className, ...props }: React$1.ComponentProps<"td">): react_jsx_runtime.JSX.Element;
1614
+ declare function TableCaption({ className, ...props }: React$1.ComponentProps<"caption">): react_jsx_runtime.JSX.Element;
1615
+
1616
+ /**
1617
+ * Shape of a single tooltip item.
1618
+ */
1619
+ interface TooltipItem {
1620
+ /** Unique numeric identifier (used for hover matching). */
1621
+ id: number;
1622
+ /** Display name shown in the tooltip. */
1623
+ name: string;
1624
+ /** Secondary label (e.g. job title, role). */
1625
+ designation: string;
1626
+ /** Image source path or absolute URL. */
1627
+ image: string;
1628
+ }
1629
+ /**
1630
+ * AnimatedTooltip
1631
+ *
1632
+ * Renders a row (or flex-wrapped set) of circular avatar images that reveal
1633
+ * an animated, tilted tooltip on hover. The tooltip tilts and translates in
1634
+ * sync with the user’s mouse position, creating a smooth parallax effect.
1635
+ *
1636
+ * @component
1637
+ * @param {Object} props
1638
+ * @param {TooltipItem[]} props.items – Array of tooltip items to render.
1639
+ * @returns {JSX.Element} React element containing the interactive avatars.
1640
+ *
1641
+ * @example
1642
+ * ```tsx
1643
+ * <AnimatedTooltip
1644
+ * items={[
1645
+ * { id: 1, name: 'Michaela', designation: 'Creator', image: '/img/michaela.jpg' },
1646
+ * { id: 2, name: 'Lukas', designation: 'Marketer', image: '/img/lukas.jpg' },
1647
+ * ]}
1648
+ * />
1649
+ * ```
1650
+ */
1651
+ declare const AnimatedTooltip: ({ items, }: {
1652
+ items: TooltipItem[];
1653
+ }) => JSX.Element;
1654
+
1655
+ interface TypewriterTextProps {
1656
+ text: string;
1657
+ /** Delay between each word in ms (default: 40) */
1658
+ wordDelay?: number;
1659
+ /** Skip animation and show full text immediately */
1660
+ skipAnimation?: boolean;
1661
+ /** Callback when animation completes */
1662
+ onComplete?: () => void;
1663
+ /** Additional class names */
1664
+ className?: string;
1665
+ }
1666
+ /**
1667
+ * Typewriter component that reveals text word-by-word
1668
+ */
1669
+ declare function TypewriterText({ text, wordDelay, skipAnimation, onComplete, className, }: TypewriterTextProps): react_jsx_runtime.JSX.Element;
1670
+
1671
+ type SidebarContextProps = {
1672
+ state: "expanded" | "collapsed" | "overlayed";
1673
+ open: boolean;
1674
+ setOpen: (open: boolean) => void;
1675
+ openMobile: boolean;
1676
+ setOpenMobile: (open: boolean) => void;
1677
+ isMobile: boolean;
1678
+ toggleSidebar: () => void;
1679
+ };
1680
+ declare function useSidebar(): SidebarContextProps;
1681
+ declare function SidebarProvider({ defaultOpen: defaultOpenProp, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }: React$1.ComponentProps<'div'> & {
1682
+ defaultOpen?: boolean;
1683
+ open?: boolean;
1684
+ onOpenChange?: (open: boolean) => void;
1685
+ }): react_jsx_runtime.JSX.Element;
1686
+ declare function SidebarTrigger({ className, onClick, ...props }: React$1.ComponentProps<typeof Button>): react_jsx_runtime.JSX.Element;
1687
+
1688
+ declare function Sidebar({ side, variant, collapsible, className, children, ...props }: React$1.ComponentProps<"div"> & {
1689
+ side?: "left" | "right";
1690
+ variant?: "sidebar" | "floating" | "inset";
1691
+ collapsible?: "offcanvas" | "icon" | "none";
1692
+ }): react_jsx_runtime.JSX.Element;
1693
+ declare function SidebarRail({ className, ...props }: React$1.ComponentProps<"button">): react_jsx_runtime.JSX.Element;
1694
+ declare function SidebarInset({ className, ...props }: React$1.ComponentProps<"main">): react_jsx_runtime.JSX.Element;
1695
+ declare function SidebarInput({ className, ...props }: React$1.ComponentProps<typeof Input>): react_jsx_runtime.JSX.Element;
1696
+ declare function SidebarHeader({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1697
+ declare function SidebarFooter({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1698
+ declare function SidebarSeparator({ className, ...props }: React$1.ComponentProps<typeof Separator>): react_jsx_runtime.JSX.Element;
1699
+ declare function SidebarContent({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1700
+ declare function SidebarGroup({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1701
+ declare function SidebarGroupLabel({ className, asChild, ...props }: React$1.ComponentProps<"div"> & {
1702
+ asChild?: boolean;
1703
+ }): react_jsx_runtime.JSX.Element;
1704
+ declare function SidebarGroupAction({ className, asChild, ...props }: React$1.ComponentProps<"button"> & {
1705
+ asChild?: boolean;
1706
+ }): react_jsx_runtime.JSX.Element;
1707
+ declare function SidebarGroupContent({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1708
+
1709
+ declare const sidebarMenuButtonVariants: (props?: ({
1710
+ variant?: "default" | "outline" | null | undefined;
1711
+ size?: "sm" | "lg" | "default" | null | undefined;
1712
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1713
+ declare function SidebarMenu({ className, ...props }: React$1.ComponentProps<"ul">): react_jsx_runtime.JSX.Element;
1714
+ declare function SidebarMenuItem({ className, ...props }: React$1.ComponentProps<"li">): react_jsx_runtime.JSX.Element;
1715
+ declare function SidebarMenuButton({ asChild, isActive, variant, size, tooltip, className, ...props }: React$1.ComponentProps<"button"> & {
1716
+ asChild?: boolean;
1717
+ isActive?: boolean;
1718
+ tooltip?: string | React$1.ComponentProps<typeof TooltipContent>;
1719
+ } & VariantProps<typeof sidebarMenuButtonVariants>): react_jsx_runtime.JSX.Element;
1720
+ declare function SidebarMenuAction({ className, asChild, showOnHover, ...props }: React$1.ComponentProps<"button"> & {
1721
+ asChild?: boolean;
1722
+ showOnHover?: boolean;
1723
+ }): react_jsx_runtime.JSX.Element;
1724
+ declare function SidebarMenuBadge({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1725
+ declare function SidebarMenuSkeleton({ className, showIcon, ...props }: React$1.ComponentProps<"div"> & {
1726
+ showIcon?: boolean;
1727
+ }): react_jsx_runtime.JSX.Element;
1728
+ declare function SidebarMenuSub({ className, ...props }: React$1.ComponentProps<"ul">): react_jsx_runtime.JSX.Element;
1729
+ declare function SidebarMenuSubItem({ className, ...props }: React$1.ComponentProps<"li">): react_jsx_runtime.JSX.Element;
1730
+ declare function SidebarMenuSubButton({ asChild, size, isActive, className, ...props }: React$1.ComponentProps<"a"> & {
1731
+ asChild?: boolean;
1732
+ size?: "sm" | "md";
1733
+ isActive?: boolean;
1734
+ }): react_jsx_runtime.JSX.Element;
1735
+
1736
+ /** Props for the PageHeader component */
1737
+ interface PageHeaderProps extends React$1.ComponentProps<"div"> {
1738
+ /** Page title */
1739
+ title: string;
1740
+ /** Optional description below the title */
1741
+ description?: string;
1742
+ /** Optional breadcrumb element rendered above the title */
1743
+ breadcrumbs?: React$1.ReactNode;
1744
+ /** Action slot (buttons, etc.) aligned to the right */
1745
+ actions?: React$1.ReactNode;
1746
+ }
1747
+ /**
1748
+ * Page header with title, description, breadcrumbs, and action slot.
1749
+ *
1750
+ * @component
1751
+ * @layer core
1752
+ *
1753
+ * @param {string} title - Page title text
1754
+ * @param {string} description - Optional subtitle / description
1755
+ * @param {React.ReactNode} breadcrumbs - Optional breadcrumb navigation
1756
+ * @param {React.ReactNode} actions - Action buttons aligned right
1757
+ *
1758
+ * @example
1759
+ * <PageHeader
1760
+ * breadcrumbs={<Breadcrumb>...</Breadcrumb>}
1761
+ * title="Billing"
1762
+ * description="Manage your subscription and payment methods."
1763
+ * actions={
1764
+ * <>
1765
+ * <Button variant="outline">Cancel Plan</Button>
1766
+ * <Button>Upgrade</Button>
1767
+ * </>
1768
+ * }
1769
+ * />
1770
+ */
1771
+ declare function PageHeader({ title, description, breadcrumbs, actions, className, ...props }: PageHeaderProps): react_jsx_runtime.JSX.Element;
1772
+
1773
+ /** Props for the SectionCard component */
1774
+ interface SectionCardProps extends React$1.ComponentProps<"div"> {
1775
+ /** Section title */
1776
+ title: string;
1777
+ /** Optional description below the title */
1778
+ description?: string;
1779
+ /** Optional footer content (save button, etc.) */
1780
+ footer?: React$1.ReactNode;
1781
+ /** Optional action in the header (edit button, etc.) */
1782
+ headerAction?: React$1.ReactNode;
1783
+ }
1784
+ /**
1785
+ * Titled card section for settings panels and dashboard areas.
1786
+ *
1787
+ * @component
1788
+ * @layer core
1789
+ *
1790
+ * @param {string} title - Section title
1791
+ * @param {string} description - Optional description
1792
+ * @param {React.ReactNode} footer - Optional footer area
1793
+ * @param {React.ReactNode} headerAction - Optional action in header
1794
+ *
1795
+ * @example
1796
+ * <SectionCard
1797
+ * title="Danger Zone"
1798
+ * description="Irreversible actions for your project."
1799
+ * footer={<Button intent="danger">Delete Project</Button>}
1800
+ * >
1801
+ * <p>Once deleted, this project cannot be recovered.</p>
1802
+ * </SectionCard>
1803
+ */
1804
+ declare function SectionCard({ title, description, footer, headerAction, className, children, ...props }: SectionCardProps): react_jsx_runtime.JSX.Element;
1805
+
1806
+ /** Trend indicator data */
1807
+ interface MetricTrend {
1808
+ /** Numeric change (displayed as percentage) */
1809
+ value: number;
1810
+ /** Direction of the trend */
1811
+ direction: "up" | "down" | "flat";
1812
+ }
1813
+ /** Props for the MetricCard component */
1814
+ interface MetricCardProps extends React$1.ComponentProps<"div"> {
1815
+ /** Metric label (e.g. "Revenue", "Active Users") */
1816
+ label: string;
1817
+ /** Formatted metric value (e.g. "$12,345", "1,234") */
1818
+ value: string;
1819
+ /** Optional trend indicator */
1820
+ trend?: MetricTrend;
1821
+ /** Optional icon element */
1822
+ icon?: React$1.ReactNode;
1823
+ }
1824
+ /**
1825
+ * Dashboard metric card displaying a KPI with trend.
1826
+ *
1827
+ * @component
1828
+ * @layer core
1829
+ *
1830
+ * @param {string} label - Metric label
1831
+ * @param {string} value - Formatted metric value
1832
+ * @param {MetricTrend} trend - Optional trend with value and direction
1833
+ * @param {React.ReactNode} icon - Optional icon
1834
+ *
1835
+ * @example
1836
+ * <MetricCard
1837
+ * label="Monthly Revenue"
1838
+ * value="$48,200"
1839
+ * trend={{ value: 8.2, direction: "up" }}
1840
+ * />
1841
+ */
1842
+ declare function MetricCard({ label, value, trend, icon, className, ...props }: MetricCardProps): react_jsx_runtime.JSX.Element;
1843
+
1844
+ /** Props for the EmptyState component */
1845
+ interface EmptyStateProps extends React$1.ComponentProps<"div"> {
1846
+ /** Icon or illustration element */
1847
+ icon?: React$1.ReactNode;
1848
+ /** Title text */
1849
+ title: string;
1850
+ /** Description text */
1851
+ description?: string;
1852
+ /** Action element (button, link, etc.) */
1853
+ action?: React$1.ReactNode;
1854
+ }
1855
+ /**
1856
+ * Empty state placeholder with icon, text, and call-to-action.
1857
+ *
1858
+ * @component
1859
+ * @layer core
1860
+ *
1861
+ * @param {React.ReactNode} icon - Icon or illustration
1862
+ * @param {string} title - Title text
1863
+ * @param {string} description - Description text
1864
+ * @param {React.ReactNode} action - Optional CTA button
1865
+ *
1866
+ * @example
1867
+ * <EmptyState
1868
+ * icon={<FileIcon className="size-12" />}
1869
+ * title="No documents"
1870
+ * description="Upload your first document to get started."
1871
+ * action={<Button>Upload File</Button>}
1872
+ * />
1873
+ */
1874
+ declare function EmptyState({ icon, title, description, action, className, ...props }: EmptyStateProps): react_jsx_runtime.JSX.Element;
1875
+
1876
+ /** Props for the SearchField component */
1877
+ interface SearchFieldProps extends Omit<React$1.ComponentProps<"input">, "type"> {
1878
+ /** Show loading spinner instead of search icon */
1879
+ loading?: boolean;
1880
+ /** Callback when clear button is clicked */
1881
+ onClear?: () => void;
1882
+ }
1883
+ /**
1884
+ * Search input with icon, clear button, and loading state.
1885
+ *
1886
+ * @component
1887
+ * @layer core
1888
+ *
1889
+ * @param {boolean} loading - Shows spinner in place of search icon
1890
+ * @param {function} onClear - Callback when clear button is clicked
1891
+ *
1892
+ * @example
1893
+ * const [query, setQuery] = useState("");
1894
+ * <SearchField
1895
+ * placeholder="Search..."
1896
+ * value={query}
1897
+ * onChange={(e) => setQuery(e.target.value)}
1898
+ * onClear={() => setQuery("")}
1899
+ * loading={isSearching}
1900
+ * />
1901
+ */
1902
+ declare function SearchField({ className, loading, onClear, value, ...props }: SearchFieldProps): react_jsx_runtime.JSX.Element;
1903
+
1904
+ /** Props for the SettingsSection component */
1905
+ interface SettingsSectionProps extends React$1.ComponentProps<"div"> {
1906
+ /** Setting label */
1907
+ label: string;
1908
+ /** Optional description of the setting */
1909
+ description?: string;
1910
+ }
1911
+ /**
1912
+ * Settings row with label, description, and control slot.
1913
+ *
1914
+ * @component
1915
+ * @layer core
1916
+ *
1917
+ * @param {string} label - Setting label
1918
+ * @param {string} description - Description of what the setting controls
1919
+ *
1920
+ * @example
1921
+ * <SettingsSection
1922
+ * label="Two-Factor Authentication"
1923
+ * description="Add an extra layer of security to your account."
1924
+ * >
1925
+ * <Button variant="outline" size="sm">Enable</Button>
1926
+ * </SettingsSection>
1927
+ */
1928
+ declare function SettingsSection({ label, description, className, children, ...props }: SettingsSectionProps): react_jsx_runtime.JSX.Element;
1929
+
1930
+ /** Props for the PricingCard component */
1931
+ interface PricingCardProps extends React$1.ComponentProps<"div"> {
1932
+ /** Plan name (e.g. "Starter", "Pro", "Enterprise") */
1933
+ name: string;
1934
+ /** Formatted price (e.g. "$29", "Free", "$99") */
1935
+ price: string;
1936
+ /** Billing period (e.g. "month", "year") */
1937
+ period?: string;
1938
+ /** Short plan description */
1939
+ description?: string;
1940
+ /** List of included features */
1941
+ features: string[];
1942
+ /** CTA button element */
1943
+ cta?: React$1.ReactNode;
1944
+ /** Highlight as recommended plan */
1945
+ featured?: boolean;
1946
+ }
1947
+ /**
1948
+ * Pricing plan card with features list and CTA.
1949
+ *
1950
+ * @component
1951
+ * @layer core
1952
+ *
1953
+ * @param {string} name - Plan name
1954
+ * @param {string} price - Formatted price string
1955
+ * @param {string} period - Billing period
1956
+ * @param {string} description - Short description
1957
+ * @param {string[]} features - List of features
1958
+ * @param {React.ReactNode} cta - Call-to-action button
1959
+ * @param {boolean} featured - Highlight styling
1960
+ *
1961
+ * @example
1962
+ * <PricingCard
1963
+ * name="Enterprise"
1964
+ * price="$99"
1965
+ * period="month"
1966
+ * description="For large organizations"
1967
+ * features={["Everything in Pro", "SSO", "Custom integrations"]}
1968
+ * cta={<Button variant="solid" intent="primary">Contact Sales</Button>}
1969
+ * featured
1970
+ * />
1971
+ */
1972
+ declare function PricingCard({ name, price, period, description, features, cta, featured, className, ...props }: PricingCardProps): react_jsx_runtime.JSX.Element;
1973
+
1974
+ /**
1975
+ * Toolbar container for data views.
1976
+ *
1977
+ * @component
1978
+ * @layer core
1979
+ *
1980
+ * @example
1981
+ * <DataToolbar>
1982
+ * <DataToolbarSearch placeholder="Search..." />
1983
+ * <DataToolbarActions>
1984
+ * <Button size="sm">Add New</Button>
1985
+ * </DataToolbarActions>
1986
+ * </DataToolbar>
1987
+ */
1988
+ declare function DataToolbar({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1989
+ /**
1990
+ * Search slot within the data toolbar.
1991
+ *
1992
+ * @component
1993
+ * @layer core
1994
+ */
1995
+ declare function DataToolbarSearch({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
1996
+ /**
1997
+ * Filters slot within the data toolbar.
1998
+ *
1999
+ * @component
2000
+ * @layer core
2001
+ */
2002
+ declare function DataToolbarFilters({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
2003
+ /**
2004
+ * Actions slot within the data toolbar (right-aligned).
2005
+ *
2006
+ * @component
2007
+ * @layer core
2008
+ */
2009
+ declare function DataToolbarActions({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
2010
+
2011
+ /**
2012
+ * Props for the ScrollToTopButton component.
2013
+ *
2014
+ * @interface
2015
+ * @package ui
2016
+ */
2017
+ interface ScrollToTopButtonProps extends SaasflareComponentProps {
2018
+ /**
2019
+ * Optional scroll container element ID.
2020
+ * If not provided, falls back to the global `window`.
2021
+ */
2022
+ scrollContainerId?: string;
2023
+ /**
2024
+ * Vertical scroll offset (in pixels) after which the button is shown.
2025
+ * @default 300
2026
+ */
2027
+ scrollOffset?: number;
2028
+ /** Additional class names merged onto the root button. */
2029
+ className?: string;
2030
+ }
2031
+ /**
2032
+ * A floating button that appears after scrolling down and smoothly scrolls
2033
+ * the user back to the top of the container (or window).
2034
+ *
2035
+ * @component
2036
+ */
2037
+ declare function ScrollToTopButton({ scrollContainerId, scrollOffset, className, ...sfProps }: ScrollToTopButtonProps): JSX.Element;
2038
+
2039
+ /**
2040
+ * Theme mode toggle button with Sun/Moon icons.
2041
+ *
2042
+ * @component
2043
+ * @layer core
2044
+ *
2045
+ * @param {object} props - Component props
2046
+ * @param {boolean} [props.showText=false] - Whether to show the label text visibly
2047
+ * @param {string} [props.text] - Custom label text override
2048
+ * @param {string} [props.className] - Additional CSS class names
2049
+ * @returns {JSX.Element | null} The toggle button, or null before hydration
2050
+ */
2051
+ declare function ThemeModeToggle({ showText, text, className, }: {
2052
+ showText?: boolean;
2053
+ text?: string;
2054
+ className?: string;
2055
+ }): JSX.Element | null;
2056
+
2057
+ /**
2058
+ * Props for the TopLoadingBar component.
2059
+ *
2060
+ * @interface
2061
+ * @package ui
2062
+ */
2063
+ interface TopLoadingBarProps extends SaasflareComponentProps {
2064
+ /** Delay before starting the progress bar, in ms. @default 100 */
2065
+ startDelayMs?: number;
2066
+ /** Delay before finishing the progress bar, in ms. @default 300 */
2067
+ finishDelayMs?: number;
2068
+ }
2069
+ declare function TopLoadingBar({ startDelayMs, finishDelayMs, ...sfProps }: TopLoadingBarProps): react_jsx_runtime.JSX.Element;
2070
+
2071
+ /**
2072
+ * Props for the UserAvatar component.
2073
+ *
2074
+ * @interface
2075
+ * @layer core
2076
+ */
2077
+ interface UserAvatarProps {
2078
+ /** URL of the user's avatar image */
2079
+ src: string | null | undefined;
2080
+ /** User's display name (used as alt text) */
2081
+ name: string | null | undefined;
2082
+ /** Initials to show when no avatar image is available */
2083
+ initials: string;
2084
+ /** Avatar size variant */
2085
+ size?: 'sm' | 'md' | 'lg';
2086
+ /** Additional CSS class names */
2087
+ className?: string;
2088
+ }
2089
+ /**
2090
+ * User avatar with image, fallback initials, and size variants.
2091
+ *
2092
+ * @component
2093
+ * @layer core
2094
+ *
2095
+ * @param {UserAvatarProps} props - Component props
2096
+ * @returns {JSX.Element} The rendered avatar
2097
+ *
2098
+ * @example
2099
+ * <UserAvatar src="/avatars/jane.jpg" name="Jane Doe" initials="JD" />
2100
+ */
2101
+ declare function UserAvatar({ src, name, initials, size, className }: UserAvatarProps): react_jsx_runtime.JSX.Element;
2102
+
2103
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, AnimatedTooltip, AspectRatio, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, type BadgeProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, type ButtonProps, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, type CustomPalette, DataToolbar, DataToolbarActions, DataToolbarFilters, DataToolbarSearch, type Density, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DirectionProvider, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyState, type EmptyStateProps, EmptyTitle, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, HoverCard, HoverCardContent, HoverCardTrigger, Icons, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, type Intent, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, Label, type Measurement, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MetricCard, type MetricCardProps, type MetricTrend, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, PALETTES, PageHeader, type PageHeaderProps, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, type PaginationRangeItem, type Palette, type PaletteId, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PricingCard, type PricingCardProps, Progress, RADII, RadioGroup, RadioGroupItem, type Radius, type RadiusProp, ResizableHandle, ResizablePanel, ResizablePanelGroup, type ResolvedSaasflareProps, STYLES, type SaasflareComponentProps, SaasflareProvider, type SaasflareProviderProps, SaasflareScript, type SaasflareScriptProps, SaasflareShell, type SaasflareShellProps, ScrollArea, ScrollBar, ScrollToTopButton, SearchField, type SearchFieldProps, SectionCard, type SectionCardProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, SettingsSection, type SettingsSectionProps, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, type Size, Skeleton, Slider, SmoothScrollProvider, type SmoothScrollProviderProps, Spinner, type StyleVariant, type Surface, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThemeModeToggle, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, type TooltipItem, TooltipProvider, TooltipTrigger, TopLoadingBar, type TopLoadingBarProps, TypewriterText, type UseDisclosureOptions, type UseDisclosureReturn, type UseMeasureReturn, type UsePaginationOptions, type UsePaginationReturn, UserAvatar, type UserAvatarProps, badgeVariants, buttonGroupVariants, buttonVariants, cn, fadeIn, navigationMenuTriggerStyle, noMotion, scaleIn, slideDown, slideUp, spring, springBouncy, springGentle, springStiff, toggleVariants, useAnimation, useComboboxAnchor, useDirection, useDisclosure, useFormField, useIsMobile, useMeasure, usePagination, useReducedMotion, useSaasflareProps, useSaasflareTheme, useSidebar };