omverse-ui 0.1.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,2956 @@
1
+ import { ClassValue } from 'clsx';
2
+ import * as react from 'react';
3
+ import { ComponentPropsWithoutRef, ReactNode } from 'react';
4
+ import * as lucide_react from 'lucide-react';
5
+ import * as class_variance_authority_types from 'class-variance-authority/types';
6
+ import { VariantProps } from 'class-variance-authority';
7
+ import * as react_jsx_runtime from 'react/jsx-runtime';
8
+
9
+ /**
10
+ * Merges Tailwind classes intelligently — later classes override earlier ones
11
+ * even when they target the same property (e.g. `px-2` vs `px-4`).
12
+ *
13
+ * Configured with design-system font-size and text-color groups so the custom
14
+ * typography scale (text-label-lg, text-body-md, …) and semantic color tokens
15
+ * (text-on-primary, text-on-surface, …) are never treated as conflicting.
16
+ */
17
+ declare function cn(...inputs: ClassValue[]): string;
18
+
19
+ /**
20
+ * Size scale for icons. Tied to the design system's spacing scale so
21
+ * icons always sit cleanly with text of the same scale.
22
+ */
23
+ declare const iconVariants: (props?: ({
24
+ size?: "sm" | "md" | "lg" | "xl" | null | undefined;
25
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
26
+ /**
27
+ * The design system's icon registry. Keys are design-system names (kebab-case);
28
+ * values are the current icon source. When custom Figma icons are ready, swap
29
+ * the right-hand side here — every component using <Icon /> updates automatically.
30
+ */
31
+ declare const iconMap: {
32
+ readonly 'chevron-down': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
33
+ readonly 'chevron-up': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
34
+ readonly 'chevron-left': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
35
+ readonly 'chevron-right': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
36
+ readonly check: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
37
+ readonly close: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
38
+ readonly search: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
39
+ readonly 'arrow-right': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
40
+ readonly 'arrow-left': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
41
+ readonly plus: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
42
+ readonly minus: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
43
+ readonly 'alert-circle': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
44
+ readonly info: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
45
+ readonly 'check-circle': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
46
+ readonly edit: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
47
+ readonly settings: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
48
+ readonly bookmark: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
49
+ readonly heart: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
50
+ readonly star: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
51
+ readonly bell: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
52
+ readonly trash: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
53
+ readonly download: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
54
+ readonly upload: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
55
+ readonly share: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
56
+ readonly dots: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
57
+ readonly 'dots-vertical': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
58
+ readonly refresh: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
59
+ readonly eye: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
60
+ readonly 'eye-off': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
61
+ readonly mail: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
62
+ readonly lock: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
63
+ readonly play: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
64
+ readonly 'file-text': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
65
+ readonly 'credit-card': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
66
+ readonly users: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
67
+ readonly rocket: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
68
+ readonly 'message-square': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
69
+ readonly 'chevron-down-filled': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
70
+ };
71
+ type IconName = keyof typeof iconMap;
72
+ interface IconProps extends VariantProps<typeof iconVariants> {
73
+ /** Design system name of the icon to render. */
74
+ name: IconName;
75
+ className?: string;
76
+ /**
77
+ * Provide a label to make the icon meaningful to screen readers.
78
+ * Omit for purely decorative icons (icon next to text).
79
+ */
80
+ 'aria-label'?: string;
81
+ /**
82
+ * Renders the icon as a solid/filled shape instead of the default stroke outline.
83
+ * Sets fill="currentColor" and strokeWidth=0 on the underlying SVG.
84
+ * Use for toggle-on states — bookmarks, likes, stars, bells, etc.
85
+ */
86
+ filled?: boolean;
87
+ }
88
+ /**
89
+ * Icon — the only component allowed to know about the underlying icon source.
90
+ *
91
+ * Every other component imports from here, not from `lucide-react` directly.
92
+ * This indirection is what makes swapping to custom Figma icons a one-file change.
93
+ */
94
+ declare const Icon: react.ForwardRefExoticComponent<IconProps & react.RefAttributes<SVGSVGElement>>;
95
+
96
+ /**
97
+ * Button visual variants.
98
+ *
99
+ * Design intent (M3-inspired, extended):
100
+ * - `filled` — highest emphasis; single primary CTA per screen
101
+ * - `tonal` — medium-high emphasis; secondary primary actions
102
+ * - `outlined` — medium emphasis; alternative or cancel actions
103
+ * - `text` — lowest named emphasis; tertiary / inline use
104
+ * - `elevated` — filled surface lifted above tonal backgrounds
105
+ * - `ghost` — near-invisible; toolbars, icon-adjacent, dense UIs
106
+ * - `destructive` — irreversible actions (delete, revoke, leave)
107
+ */
108
+ declare const buttonVariants: (props?: ({
109
+ variant?: "text" | "filled" | "tonal" | "outlined" | "elevated" | "ghost" | "destructive" | null | undefined;
110
+ size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
111
+ shape?: "rounded" | "pill" | null | undefined;
112
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
113
+ type ButtonVariantProps = VariantProps<typeof buttonVariants>;
114
+
115
+ interface ButtonProps extends ComponentPropsWithoutRef<'button'>, ButtonVariantProps {
116
+ /**
117
+ * Renders the first child element with button props merged onto it.
118
+ * Use to wrap a router `<Link>` while keeping button styling and a11y.
119
+ * Do NOT combine with `leadingIcon` / `trailingIcon` — Radix Slot cannot
120
+ * merge props onto a React.Fragment; place icons inside the child instead.
121
+ */
122
+ asChild?: boolean;
123
+ /**
124
+ * Shows a loading spinner and disables interaction. Preserves layout to
125
+ * prevent content reflow. Sets `aria-busy` for assistive technology.
126
+ */
127
+ loading?: boolean;
128
+ /**
129
+ * Replaces the button label while `loading` is true.
130
+ * Pass an empty string to show only the spinner with no label.
131
+ */
132
+ loadingText?: string;
133
+ /**
134
+ * Swaps the leading icon to a checkmark to confirm a completed action.
135
+ * If no leading icon was present, a checkmark is prepended to the label.
136
+ * The trailing icon is hidden while success is active to reduce noise.
137
+ * Parent controls the duration — set back to false to restore original state.
138
+ * For icon-only buttons, also set `aria-label` on the button for a11y.
139
+ */
140
+ success?: boolean;
141
+ /**
142
+ * Applies a blue→purple gradient background. Only takes effect on `filled`
143
+ * and `destructive` variants; silently ignored on all others.
144
+ * Hover/active states use opacity instead of background-color shifts because
145
+ * a CSS gradient (background-image) is not affected by background-color changes.
146
+ */
147
+ gradient?: boolean;
148
+ /**
149
+ * Icon rendered before the label. Accepts any design-system icon name.
150
+ * Always decorative — the label text is the accessible name.
151
+ */
152
+ leadingIcon?: IconName;
153
+ /**
154
+ * Icon rendered after the label. Accepts any design-system icon name.
155
+ * Always decorative — the label text is the accessible name.
156
+ */
157
+ trailingIcon?: IconName;
158
+ /**
159
+ * Stretches the button to its container's full width.
160
+ * When both `leadingIcon` and `trailingIcon` are present the icons are
161
+ * pushed to the edges with the label centred between them (`justify-between`).
162
+ */
163
+ fullWidth?: boolean;
164
+ }
165
+ /**
166
+ * Button — the primary interactive control of the design system.
167
+ *
168
+ * Seven variants covering the full emphasis spectrum, five sizes, two
169
+ * shapes, optional gradient treatment, leading/trailing icon slots,
170
+ * full-width edge-spread layout, loading and success state management,
171
+ * and the `asChild` composition pattern for wrapping router links.
172
+ *
173
+ * Design rationale: variant choice drives perceived importance in the UI
174
+ * hierarchy. Use `filled` for the single primary action per screen,
175
+ * `ghost` for low-attention actions in toolbars, and `destructive` only
176
+ * for irreversible paths — never as a general-purpose danger colour.
177
+ *
178
+ * @see {@link https://m3.material.io/components/buttons/overview}
179
+ */
180
+ declare const Button: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
181
+
182
+ /**
183
+ * IconButton variants — CVA configuration.
184
+ *
185
+ * Design intent:
186
+ * - filled → highest emphasis, primary action
187
+ * - tonal → medium-high, secondary action
188
+ * - outlined → medium emphasis
189
+ * - standard → low emphasis, toolbars, inline actions
190
+ * - ghost → subtle, barely visible until hover
191
+ * - destructive → delete / danger actions
192
+ *
193
+ * All variants use semantic tokens only — never raw hex or palette steps.
194
+ * State layers follow M3 spec: hover=8%, focus=12%, pressed=12%.
195
+ */
196
+ declare const iconButtonVariants: (props?: ({
197
+ variant?: "filled" | "tonal" | "outlined" | "ghost" | "destructive" | "standard" | null | undefined;
198
+ size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
199
+ shape?: "circle" | "square" | null | undefined;
200
+ fab?: boolean | null | undefined;
201
+ gradient?: boolean | null | undefined;
202
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
203
+ type IconButtonVariantProps = VariantProps<typeof iconButtonVariants>;
204
+
205
+ interface IconButtonProps extends Omit<ComponentPropsWithoutRef<'button'>, 'children'>, IconButtonVariantProps {
206
+ /**
207
+ * The icon to display. Uses the design system's Icon component.
208
+ * Never import lucide-react directly in consuming components.
209
+ */
210
+ icon: IconName;
211
+ /**
212
+ * Accessible label — required. Describes the action to screen readers.
213
+ * When badge is a number, include the count in the label:
214
+ * aria-label="5 notifications"
215
+ */
216
+ 'aria-label': string;
217
+ /**
218
+ * Toggle mode — button has pressed/unpressed state.
219
+ * Use for bookmarks, likes, stars, and other binary actions.
220
+ */
221
+ toggle?: boolean;
222
+ /**
223
+ * Controlled pressed state for toggle mode.
224
+ * If omitted, the component manages its own state (uncontrolled).
225
+ */
226
+ pressed?: boolean;
227
+ /**
228
+ * Callback fired when pressed state changes in toggle mode.
229
+ */
230
+ onPressedChange?: (pressed: boolean) => void;
231
+ /**
232
+ * Icon to show when toggle is pressed.
233
+ * If omitted, the same icon is used for both states.
234
+ *
235
+ * @example
236
+ * <IconButton icon="bookmark" pressedIcon="bookmark" toggle />
237
+ */
238
+ pressedIcon?: IconName;
239
+ /**
240
+ * Badge displayed on the icon button.
241
+ * - `true` → red dot only
242
+ * - `number` → shows the number (capped at 99+)
243
+ *
244
+ * @example
245
+ * <IconButton icon="bell" badge={5} aria-label="5 notifications" />
246
+ */
247
+ badge?: boolean | number;
248
+ /**
249
+ * Shows a tooltip with the aria-label text on hover and focus.
250
+ * Defaults to true — set to false to disable.
251
+ */
252
+ tooltip?: boolean;
253
+ /**
254
+ * Shows a loading spinner instead of the icon.
255
+ * Disables interaction and announces aria-busy.
256
+ */
257
+ loading?: boolean;
258
+ /**
259
+ * Applies a brand gradient background.
260
+ * Only meaningful on filled and destructive variants.
261
+ */
262
+ gradient?: boolean;
263
+ /**
264
+ * FAB (floating action button) mode.
265
+ * Adds elevation shadow. Pair with size="xl" and shape="square".
266
+ */
267
+ fab?: boolean;
268
+ }
269
+ /**
270
+ * IconButton — an icon-only interactive control.
271
+ *
272
+ * Features beyond M3:
273
+ * - toggle mode with pressed/unpressed state and aria-pressed
274
+ * - badge (dot or number, capped at 99+)
275
+ * - built-in tooltip (no extra library)
276
+ * - loading state with spinner
277
+ * - gradient variant
278
+ * - FAB mode with elevation
279
+ * - 44×44px minimum touch target on ALL sizes via pseudo element
280
+ * - aria-label is TypeScript-required (no silent a11y failures)
281
+ *
282
+ * @example
283
+ * // Basic
284
+ * <IconButton icon="search" aria-label="Search" />
285
+ *
286
+ * // Toggle
287
+ * <IconButton icon="bookmark" toggle pressed={saved} onPressedChange={setSaved} aria-label="Save" />
288
+ *
289
+ * // Badge
290
+ * <IconButton icon="bell" badge={5} aria-label="5 notifications" />
291
+ *
292
+ * // FAB
293
+ * <IconButton icon="plus" variant="filled" size="xl" shape="square" fab aria-label="Add new" />
294
+ *
295
+ * // Gradient
296
+ * <IconButton icon="plus" variant="filled" gradient aria-label="Add" />
297
+ */
298
+ declare const IconButton: react.ForwardRefExoticComponent<IconButtonProps & react.RefAttributes<HTMLButtonElement>>;
299
+
300
+ interface InputProps extends Omit<ComponentPropsWithoutRef<'input'>, 'size' | 'prefix'> {
301
+ /**
302
+ * Visual variant of the input.
303
+ * - `outlined` → bordered input (default)
304
+ * - `filled` → tonal background, bottom border only
305
+ * - `floating` → label animates up on focus/fill
306
+ */
307
+ variant?: 'outlined' | 'filled' | 'floating';
308
+ /**
309
+ * Size of the input.
310
+ * - `sm` → 36px height
311
+ * - `md` → 44px height (default)
312
+ * - `lg` → 52px height
313
+ */
314
+ size?: 'sm' | 'md' | 'lg';
315
+ /** Label displayed above (or floating inside) the input. */
316
+ label?: string;
317
+ /** Marks field as required — adds * indicator and aria-required. */
318
+ required?: boolean;
319
+ /** Adds "(optional)" tag next to the label. */
320
+ optional?: boolean;
321
+ /** Helper text shown below the input in default state. */
322
+ helperText?: string;
323
+ /** Error state — red border + error icon. */
324
+ error?: boolean;
325
+ /** Error message shown below the input when error=true. Replaces helperText. */
326
+ errorText?: string;
327
+ /** Success state — green border + success icon. */
328
+ success?: boolean;
329
+ /** Success message shown below the input when success=true. Replaces helperText. */
330
+ successText?: string;
331
+ /** Loading state — spinner in trailing slot (async validation). */
332
+ loading?: boolean;
333
+ /** Icon displayed before the input. */
334
+ leadingIcon?: IconName;
335
+ /** Icon displayed after the input. */
336
+ trailingIcon?: IconName;
337
+ /**
338
+ * Shows a clear (×) button when the input has a value.
339
+ * Fires onChange with empty value when clicked.
340
+ */
341
+ clearable?: boolean;
342
+ /**
343
+ * Auto-adds a password visibility toggle button.
344
+ * Only meaningful when type="password".
345
+ */
346
+ passwordToggle?: boolean;
347
+ /** Text displayed before the input (e.g. "https://", "$"). */
348
+ prefix?: ReactNode;
349
+ /** Text displayed after the input (e.g. "USD", ".com"). */
350
+ suffix?: ReactNode;
351
+ /**
352
+ * Maximum character count.
353
+ * When combined with showCount, displays a counter below.
354
+ */
355
+ maxLength?: number;
356
+ /** Shows character count below the input. Requires maxLength. */
357
+ showCount?: boolean;
358
+ /**
359
+ * Renders a multiline textarea instead of a single-line input.
360
+ */
361
+ textarea?: boolean;
362
+ /** Number of initial rows for textarea. Default: 3 */
363
+ rows?: number;
364
+ /**
365
+ * Shows a copy button in the trailing slot.
366
+ * Best combined with readOnly.
367
+ */
368
+ copyable?: boolean;
369
+ /** Additional className for the outer wrapper. */
370
+ wrapperClassName?: string;
371
+ }
372
+ /**
373
+ * Input / TextField — the primary text input control.
374
+ *
375
+ * Features beyond M3:
376
+ * - 3 variants: outlined, filled, floating label
377
+ * - 3 sizes: sm, md, lg
378
+ * - error, success, disabled, readonly, loading states
379
+ * - leadingIcon, trailingIcon, clearable, passwordToggle
380
+ * - prefix / suffix text slots
381
+ * - character count with maxLength
382
+ * - textarea mode with auto-resize
383
+ * - copyable mode with "Copied!" feedback
384
+ * - full accessibility: aria-describedby, aria-invalid, aria-required,
385
+ * aria-readonly, aria-busy, aria-live announcements
386
+ *
387
+ * @example
388
+ * // Basic
389
+ * <Input label="Email" placeholder="you@example.com" />
390
+ *
391
+ * // Error state
392
+ * <Input label="Email" error errorText="Invalid email" leadingIcon="mail" />
393
+ *
394
+ * // Password
395
+ * <Input label="Password" type="password" passwordToggle />
396
+ *
397
+ * // With prefix/suffix
398
+ * <Input label="Website" prefix="https://" suffix=".com" />
399
+ *
400
+ * // Character count
401
+ * <Input label="Bio" maxLength={150} showCount />
402
+ *
403
+ * // Copyable API key
404
+ * <Input label="API Key" value="sk-xxxx" readOnly copyable />
405
+ *
406
+ * // Textarea
407
+ * <Input label="Message" textarea rows={4} maxLength={500} showCount />
408
+ */
409
+ declare const Input: react.ForwardRefExoticComponent<InputProps & react.RefAttributes<HTMLInputElement>>;
410
+
411
+ /**
412
+ * Badge variants — CVA configuration.
413
+ *
414
+ * Design intent:
415
+ * - filled → solid background, highest visibility
416
+ * - tonal → soft background, medium visibility
417
+ * - outlined → bordered, minimal fill
418
+ * - ghost → no border, no fill, text only
419
+ */
420
+ declare const badgeVariants: (props?: ({
421
+ variant?: "filled" | "tonal" | "outlined" | "ghost" | null | undefined;
422
+ color?: "info" | "success" | "default" | "error" | "secondary" | "warning" | null | undefined;
423
+ size?: "sm" | "md" | "lg" | null | undefined;
424
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
425
+ type BadgeVariantProps = VariantProps<typeof badgeVariants>;
426
+
427
+ interface BadgeProps extends ComponentPropsWithoutRef<'span'>, BadgeVariantProps {
428
+ /**
429
+ * Visual style of the badge.
430
+ * - `filled` → solid background (default)
431
+ * - `tonal` → soft container background
432
+ * - `outlined` → border only, no fill
433
+ * - `ghost` → text only, no border or fill
434
+ */
435
+ variant?: 'filled' | 'tonal' | 'outlined' | 'ghost';
436
+ /**
437
+ * Color of the badge.
438
+ * Maps to your design system semantic tokens.
439
+ */
440
+ color?: 'default' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
441
+ /**
442
+ * Size of the badge.
443
+ */
444
+ size?: 'sm' | 'md' | 'lg';
445
+ /**
446
+ * Shows a dot indicator instead of text.
447
+ * When true, children and count are ignored.
448
+ */
449
+ dot?: boolean;
450
+ /**
451
+ * Displays a number. Automatically capped at 99+.
452
+ * Ignored when dot=true.
453
+ */
454
+ count?: number;
455
+ /**
456
+ * Adds an animated pulse ring around the dot.
457
+ * Only works when dot=true. Useful for live/active indicators.
458
+ */
459
+ pulse?: boolean;
460
+ }
461
+ /**
462
+ * Badge — a small label for status, counts, and categories.
463
+ *
464
+ * Features beyond M3:
465
+ * - 4 variants × 6 colors = 24 combinations
466
+ * - dot mode for minimal indicators
467
+ * - pulse animation for live/active status
468
+ * - count mode with 99+ cap
469
+ *
470
+ * @example
471
+ * // Label
472
+ * <Badge color="success">Active</Badge>
473
+ *
474
+ * // Count
475
+ * <Badge color="error" count={5} />
476
+ *
477
+ * // Live indicator
478
+ * <Badge color="success" dot pulse />
479
+ *
480
+ * // Tonal status
481
+ * <Badge variant="tonal" color="warning">Pending</Badge>
482
+ */
483
+ declare const Badge: react.ForwardRefExoticComponent<BadgeProps & react.RefAttributes<HTMLSpanElement>>;
484
+
485
+ /**
486
+ * Avatar variants — CVA configuration.
487
+ *
488
+ * Design intent:
489
+ * - shape: circle (default) or square (rounded)
490
+ * - size: xs to 2xl
491
+ * - variant: image, initials, icon, fallback
492
+ */
493
+ declare const avatarVariants: (props?: ({
494
+ size?: "sm" | "md" | "lg" | "xl" | "xs" | "2xl" | null | undefined;
495
+ shape?: "circle" | "square" | null | undefined;
496
+ color?: "info" | "success" | "default" | "error" | "secondary" | "warning" | null | undefined;
497
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
498
+ type AvatarVariantProps = VariantProps<typeof avatarVariants>;
499
+
500
+ interface AvatarProps extends Omit<ComponentPropsWithoutRef<'span'>, 'color'>, AvatarVariantProps {
501
+ /**
502
+ * Image URL. When provided, renders an img element.
503
+ * Automatically falls back to initials or icon on error.
504
+ */
505
+ src?: string;
506
+ /**
507
+ * Alt text for the image. Required when src is provided.
508
+ */
509
+ alt?: string;
510
+ /**
511
+ * Full name or display name.
512
+ * Used to generate initials when no image is available.
513
+ * Also used as aria-label when no alt is provided.
514
+ *
515
+ * @example "John Doe" → "JD"
516
+ */
517
+ name?: string;
518
+ /**
519
+ * Online status indicator shown as a colored dot.
520
+ * - `online` → green
521
+ * - `offline` → gray
522
+ * - `busy` → red
523
+ * - `away` → amber
524
+ */
525
+ status?: 'online' | 'offline' | 'busy' | 'away';
526
+ /**
527
+ * Shape of the avatar.
528
+ * - `circle` → fully rounded (default)
529
+ * - `square` → rounded corners, size-appropriate radius
530
+ */
531
+ shape?: 'circle' | 'square';
532
+ /**
533
+ * Background color for initials/icon fallback.
534
+ */
535
+ color?: 'default' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
536
+ /**
537
+ * Size of the avatar.
538
+ */
539
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
540
+ /**
541
+ * Clickable — adds hover/focus styles and role="button".
542
+ */
543
+ clickable?: boolean;
544
+ }
545
+ /**
546
+ * Avatar — displays a user's profile image, initials, or icon fallback.
547
+ *
548
+ * Features beyond M3:
549
+ * - 6 sizes: xs to 2xl
550
+ * - circle and square shapes
551
+ * - online status indicator (online, offline, busy, away)
552
+ * - smart initials generation from name
553
+ * - image error fallback to initials → icon
554
+ * - 6 background colors for initials
555
+ * - clickable mode with focus ring
556
+ * - AvatarGroup for stacked avatars
557
+ *
558
+ * @example
559
+ * // Image
560
+ * <Avatar src="/photo.jpg" alt="John Doe" name="John Doe" />
561
+ *
562
+ * // Initials
563
+ * <Avatar name="John Doe" color="secondary" />
564
+ *
565
+ * // With status
566
+ * <Avatar name="Jane Smith" status="online" />
567
+ *
568
+ * // Clickable
569
+ * <Avatar name="John Doe" clickable onClick={openProfile} />
570
+ */
571
+ declare const Avatar: react.ForwardRefExoticComponent<AvatarProps & react.RefAttributes<HTMLSpanElement>>;
572
+ interface AvatarGroupProps extends ComponentPropsWithoutRef<'div'> {
573
+ /**
574
+ * Maximum number of avatars to show before collapsing to a count.
575
+ */
576
+ max?: number;
577
+ /**
578
+ * Size passed to all child Avatar components.
579
+ */
580
+ size?: AvatarProps['size'];
581
+ }
582
+ /**
583
+ * AvatarGroup — stacks multiple avatars with overlap and a count overflow.
584
+ *
585
+ * @example
586
+ * <AvatarGroup max={4}>
587
+ * <Avatar name="John Doe" />
588
+ * <Avatar name="Jane Smith" />
589
+ * <Avatar name="Bob Lee" />
590
+ * <Avatar name="Alice Wang" />
591
+ * <Avatar name="Tom Jones" />
592
+ * </AvatarGroup>
593
+ */
594
+ declare const AvatarGroup: react.ForwardRefExoticComponent<AvatarGroupProps & react.RefAttributes<HTMLDivElement>>;
595
+
596
+ /**
597
+ * Chip variants — CVA configuration.
598
+ *
599
+ * Design intent:
600
+ * - outlined → default, bordered, low fill
601
+ * - filled → solid tonal background
602
+ * - tonal → soft container color
603
+ * - elevated → white with shadow
604
+ *
605
+ * Selected state changes color based on variant + color combination.
606
+ * All tokens are semantic — never raw hex or palette steps.
607
+ */
608
+ declare const chipVariants: (props?: ({
609
+ variant?: "filled" | "tonal" | "outlined" | "elevated" | null | undefined;
610
+ color?: "info" | "success" | "default" | "error" | "secondary" | "warning" | null | undefined;
611
+ size?: "sm" | "md" | "lg" | null | undefined;
612
+ selected?: boolean | null | undefined;
613
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
614
+ type ChipVariantProps = VariantProps<typeof chipVariants>;
615
+
616
+ interface ChipProps extends Omit<ComponentPropsWithoutRef<'button'>, 'color'>, ChipVariantProps {
617
+ /**
618
+ * Visual variant of the chip.
619
+ */
620
+ variant?: 'outlined' | 'filled' | 'tonal' | 'elevated';
621
+ /**
622
+ * Color applied when chip is selected.
623
+ */
624
+ color?: 'default' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
625
+ /** Size of the chip. */
626
+ size?: 'sm' | 'md' | 'lg';
627
+ /**
628
+ * Controlled selected state.
629
+ * If omitted, chip manages its own state (uncontrolled).
630
+ */
631
+ selected?: boolean;
632
+ /**
633
+ * Callback fired when selected state changes.
634
+ */
635
+ onSelectedChange?: (selected: boolean) => void;
636
+ /**
637
+ * Icon displayed before the label.
638
+ * Hidden when loading=true (replaced by spinner).
639
+ */
640
+ leadingIcon?: IconName;
641
+ /**
642
+ * Shows a checkmark when selected instead of leadingIcon.
643
+ * Default: true for filter chips.
644
+ */
645
+ showCheckOnSelect?: boolean;
646
+ /**
647
+ * Shows a colored dot before the label.
648
+ * Useful for status indication.
649
+ */
650
+ colorDot?: string;
651
+ /**
652
+ * Avatar image URL shown before the label.
653
+ * Useful for people chips.
654
+ */
655
+ avatarSrc?: string;
656
+ /** Alt text for the avatar image. */
657
+ avatarAlt?: string;
658
+ /**
659
+ * Badge count shown after the label.
660
+ */
661
+ badgeCount?: number;
662
+ /**
663
+ * Shows a remove (×) button after the label.
664
+ * Fires onRemove when clicked.
665
+ */
666
+ removable?: boolean;
667
+ /**
668
+ * Callback fired when the remove button is clicked.
669
+ */
670
+ onRemove?: () => void;
671
+ /**
672
+ * Shows a loading spinner — disables interaction.
673
+ * Useful for async filter actions.
674
+ */
675
+ loading?: boolean;
676
+ }
677
+ /**
678
+ * Chip — a compact interactive element for filters, tags, and selections.
679
+ *
680
+ * Features beyond M3:
681
+ * - 4 variants × 6 colors
682
+ * - controlled + uncontrolled toggle state
683
+ * - checkmark on select (filter chip behavior)
684
+ * - avatar, colorDot, badgeCount slots
685
+ * - removable with onRemove callback
686
+ * - loading state with spinner
687
+ *
688
+ * @example
689
+ * // Filter chip (uncontrolled)
690
+ * <Chip showCheckOnSelect>Design</Chip>
691
+ *
692
+ * // Input chip (removable)
693
+ * <Chip removable onRemove={() => remove(id)}>john@example.com</Chip>
694
+ *
695
+ * // With badge
696
+ * <Chip badgeCount={12} leadingIcon="star">Starred</Chip>
697
+ *
698
+ * // Color
699
+ * <Chip color="success" selected>Active</Chip>
700
+ *
701
+ * // Loading
702
+ * <Chip loading>Applying...</Chip>
703
+ */
704
+ declare const Chip: react.ForwardRefExoticComponent<ChipProps & react.RefAttributes<HTMLButtonElement>>;
705
+ interface ChipGroupProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {
706
+ /**
707
+ * Selection mode.
708
+ * - `single` → only one chip selected at a time (like radio)
709
+ * - `multi` → multiple chips can be selected (like checkbox)
710
+ */
711
+ mode?: 'single' | 'multi';
712
+ /**
713
+ * Controlled selected values.
714
+ */
715
+ value?: string[];
716
+ /**
717
+ * Callback fired when selection changes.
718
+ */
719
+ onChange?: (value: string[]) => void;
720
+ /**
721
+ * Maximum number of chips to show before collapsing.
722
+ * Shows "+ X more" button when exceeded.
723
+ */
724
+ max?: number;
725
+ /** Size passed to all child Chip components. */
726
+ size?: ChipProps['size'];
727
+ /** Variant passed to all child Chip components. */
728
+ variant?: ChipProps['variant'];
729
+ /** Children must be Chip components with a value prop. */
730
+ children: ReactNode;
731
+ }
732
+ /**
733
+ * ChipGroup — manages selection state for a group of chips.
734
+ *
735
+ * Features beyond M3:
736
+ * - single and multi select modes
737
+ * - controlled and uncontrolled
738
+ * - overflow collapse with "+ X more" button
739
+ *
740
+ * @example
741
+ * // Single select
742
+ * <ChipGroup mode="single" value={[filter]} onChange={v => setFilter(v[0])}>
743
+ * <Chip value="all">All</Chip>
744
+ * <Chip value="design">Design</Chip>
745
+ * </ChipGroup>
746
+ *
747
+ * // Multi select
748
+ * <ChipGroup mode="multi" value={tags} onChange={setTags}>
749
+ * <Chip value="react">React</Chip>
750
+ * <Chip value="ts">TypeScript</Chip>
751
+ * </ChipGroup>
752
+ */
753
+ declare const ChipGroup: react.ForwardRefExoticComponent<ChipGroupProps & react.RefAttributes<HTMLDivElement>>;
754
+
755
+ /**
756
+ * Checkbox variants — CVA configuration.
757
+ */
758
+ declare const checkboxVariants: (props?: ({
759
+ size?: "sm" | "md" | "lg" | null | undefined;
760
+ shape?: "circle" | "square" | null | undefined;
761
+ color?: "info" | "success" | "default" | "error" | "secondary" | "warning" | null | undefined;
762
+ checked?: boolean | null | undefined;
763
+ indeterminate?: boolean | null | undefined;
764
+ isError?: boolean | null | undefined;
765
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
766
+ type CheckboxVariantProps = VariantProps<typeof checkboxVariants>;
767
+
768
+ interface CheckboxProps extends Omit<ComponentPropsWithoutRef<'input'>, 'size' | 'color' | 'type'>, Pick<CheckboxVariantProps, 'size' | 'shape' | 'color'> {
769
+ /**
770
+ * Label text shown next to the checkbox.
771
+ */
772
+ label?: ReactNode;
773
+ /**
774
+ * Helper text shown below the label.
775
+ */
776
+ helperText?: string;
777
+ /**
778
+ * Marks the checkbox as required — adds * to label.
779
+ */
780
+ required?: boolean;
781
+ /**
782
+ * Error state — red border.
783
+ */
784
+ error?: boolean;
785
+ /**
786
+ * Error message shown below the label when error=true.
787
+ */
788
+ errorText?: string;
789
+ /**
790
+ * Indeterminate state — shows a dash instead of checkmark.
791
+ * Used for "select all" parent checkboxes.
792
+ */
793
+ indeterminate?: boolean;
794
+ /**
795
+ * Card style — wraps the checkbox in a bordered card.
796
+ * Useful for plan selection, feature toggles, etc.
797
+ */
798
+ card?: boolean;
799
+ /**
800
+ * Description shown inside the card below the label.
801
+ * Only used when card=true.
802
+ */
803
+ description?: string;
804
+ /**
805
+ * Size of the checkbox.
806
+ */
807
+ size?: 'sm' | 'md' | 'lg';
808
+ /**
809
+ * Shape of the checkbox.
810
+ * - `square` → rounded corners (default)
811
+ * - `circle` → fully rounded
812
+ */
813
+ shape?: 'square' | 'circle';
814
+ /**
815
+ * Color of the checkbox when checked.
816
+ */
817
+ color?: 'default' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
818
+ }
819
+ /**
820
+ * Checkbox — a binary input control.
821
+ *
822
+ * Features beyond M3:
823
+ * - 6 colors
824
+ * - 3 sizes
825
+ * - square and circle shapes
826
+ * - indeterminate state (auto-managed by CheckboxGroup)
827
+ * - card style with description
828
+ * - helper text, error text, required indicator
829
+ * - controlled + uncontrolled
830
+ *
831
+ * @example
832
+ * // Basic
833
+ * <Checkbox label="Accept terms" required />
834
+ *
835
+ * // With helper
836
+ * <Checkbox label="Email notifications" helperText="We'll send you updates" />
837
+ *
838
+ * // Error
839
+ * <Checkbox label="Accept terms" error errorText="You must accept the terms" />
840
+ *
841
+ * // Card style
842
+ * <Checkbox label="Pro plan" description="$12/month" card />
843
+ *
844
+ * // Color
845
+ * <Checkbox label="Success" color="success" defaultChecked />
846
+ */
847
+ declare const Checkbox: react.ForwardRefExoticComponent<CheckboxProps & react.RefAttributes<HTMLInputElement>>;
848
+ interface CheckboxGroupProps extends Omit<ComponentPropsWithoutRef<'fieldset'>, 'onChange'> {
849
+ /**
850
+ * Legend / group label shown above the checkboxes.
851
+ */
852
+ legend?: string;
853
+ /**
854
+ * Controlled selected values.
855
+ */
856
+ value?: string[];
857
+ /**
858
+ * Callback fired when selection changes.
859
+ */
860
+ onChange?: (value: string[]) => void;
861
+ /**
862
+ * Shows a "select all" parent checkbox with auto indeterminate state.
863
+ */
864
+ selectAll?: boolean;
865
+ /**
866
+ * Label for the select all checkbox.
867
+ */
868
+ selectAllLabel?: string;
869
+ /**
870
+ * Color applied to all child checkboxes.
871
+ */
872
+ color?: CheckboxProps['color'];
873
+ /**
874
+ * Size applied to all child checkboxes.
875
+ */
876
+ size?: CheckboxProps['size'];
877
+ /** Children must be Checkbox components with a value prop. */
878
+ children: ReactNode;
879
+ }
880
+ /**
881
+ * CheckboxGroup — manages a group of checkboxes with optional select-all.
882
+ *
883
+ * Features beyond M3:
884
+ * - auto-managed indeterminate state on select-all parent
885
+ * - controlled + uncontrolled
886
+ * - accessible fieldset + legend
887
+ *
888
+ * @example
889
+ * <CheckboxGroup
890
+ * legend="Permissions"
891
+ * selectAll
892
+ * selectAllLabel="All permissions"
893
+ * value={selected}
894
+ * onChange={setSelected}
895
+ * >
896
+ * <Checkbox value="read" label="Read" />
897
+ * <Checkbox value="write" label="Write" />
898
+ * <Checkbox value="delete" label="Delete" />
899
+ * </CheckboxGroup>
900
+ */
901
+ declare const CheckboxGroup: react.ForwardRefExoticComponent<CheckboxGroupProps & react.RefAttributes<HTMLFieldSetElement>>;
902
+
903
+ /**
904
+ * Radio variants — CVA configuration.
905
+ *
906
+ * Design intent:
907
+ * - Always circular (radio buttons are always round by convention)
908
+ * - 6 colors matching design system semantic tokens
909
+ * - 3 sizes
910
+ * - 3 display styles: default, card, button, segmented
911
+ */
912
+ declare const radioVariants: (props?: ({
913
+ size?: "sm" | "md" | "lg" | null | undefined;
914
+ color?: "info" | "success" | "default" | "error" | "secondary" | "warning" | null | undefined;
915
+ selected?: boolean | null | undefined;
916
+ isError?: boolean | null | undefined;
917
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
918
+ type RadioVariantProps = VariantProps<typeof radioVariants>;
919
+
920
+ interface RadioProps extends Omit<ComponentPropsWithoutRef<'input'>, 'size' | 'color' | 'type'>, Pick<RadioVariantProps, 'size' | 'color'> {
921
+ /** Label shown next to the radio. */
922
+ label?: ReactNode;
923
+ /** Helper text shown below the label. */
924
+ helperText?: string;
925
+ /** Error state — red border. */
926
+ error?: boolean;
927
+ /** Error message shown below the label. */
928
+ errorText?: string;
929
+ /**
930
+ * Card style — wraps in a bordered card.
931
+ * Useful for plan/option selection.
932
+ */
933
+ card?: boolean;
934
+ /**
935
+ * Description shown inside the card below the label.
936
+ * Only used when card=true.
937
+ */
938
+ description?: string;
939
+ /**
940
+ * Badge shown in the top-right of the card.
941
+ * Only used when card=true.
942
+ */
943
+ badge?: string;
944
+ /** Whether this radio is selected. */
945
+ checked?: boolean;
946
+ /** Size of the radio button. */
947
+ size?: 'sm' | 'md' | 'lg';
948
+ /** Color when selected. */
949
+ color?: 'default' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
950
+ }
951
+ /**
952
+ * Radio — a single radio button option.
953
+ *
954
+ * Always used inside RadioGroup. Supports default, card,
955
+ * button, and segmented display styles via RadioGroup's `display` prop.
956
+ *
957
+ * Features beyond M3:
958
+ * - 6 colors
959
+ * - 3 sizes
960
+ * - card style with badge
961
+ * - helper text + error text
962
+ * - button and segmented styles via RadioGroup
963
+ *
964
+ * @example
965
+ * <RadioGroup value={plan} onChange={setPlan}>
966
+ * <Radio value="pro" label="Pro" description="$12/month" card badge="Popular" />
967
+ * <Radio value="team" label="Team" description="$49/month" card />
968
+ * </RadioGroup>
969
+ */
970
+ declare const Radio: react.ForwardRefExoticComponent<RadioProps & react.RefAttributes<HTMLInputElement>>;
971
+ interface RadioGroupProps extends Omit<ComponentPropsWithoutRef<'fieldset'>, 'onChange'> {
972
+ /** Legend shown above the group. */
973
+ legend?: string;
974
+ /** Controlled selected value. */
975
+ value?: string;
976
+ /** Callback fired when selection changes. */
977
+ onChange?: (value: string) => void;
978
+ /**
979
+ * Display style of the radio group.
980
+ * - `default` → standard radio circles with labels
981
+ * - `card` → bordered cards (overrides Radio card prop)
982
+ * - `button` → pill-shaped buttons
983
+ * - `segmented` → segmented control (tab-like)
984
+ */
985
+ display?: 'default' | 'card' | 'button' | 'segmented';
986
+ /**
987
+ * Layout direction.
988
+ * - `vertical` → stacked (default)
989
+ * - `horizontal` → side by side
990
+ */
991
+ direction?: 'vertical' | 'horizontal';
992
+ /** Error state for the entire group. */
993
+ error?: boolean;
994
+ /** Error message shown below the group. */
995
+ errorText?: string;
996
+ /** Color applied to all child radios. */
997
+ color?: RadioProps['color'];
998
+ /** Size applied to all child radios. */
999
+ size?: RadioProps['size'];
1000
+ /** Children must be Radio components with a value prop. */
1001
+ children: ReactNode;
1002
+ }
1003
+ /**
1004
+ * RadioGroup — manages a group of radio buttons.
1005
+ *
1006
+ * Features beyond M3:
1007
+ * - 4 display styles: default, card, button, segmented
1008
+ * - vertical and horizontal layouts
1009
+ * - controlled state management
1010
+ * - accessible fieldset + legend + radiogroup role
1011
+ *
1012
+ * @example
1013
+ * // Default
1014
+ * <RadioGroup value={gender} onChange={setGender} direction="horizontal">
1015
+ * <Radio value="male" label="Male" />
1016
+ * <Radio value="female" label="Female" />
1017
+ * <Radio value="other" label="Other" />
1018
+ * </RadioGroup>
1019
+ *
1020
+ * // Button style
1021
+ * <RadioGroup value={billing} onChange={setBilling} display="button">
1022
+ * <Radio value="monthly" label="Monthly" />
1023
+ * <Radio value="yearly" label="Yearly" />
1024
+ * </RadioGroup>
1025
+ *
1026
+ * // Segmented
1027
+ * <RadioGroup value={view} onChange={setView} display="segmented">
1028
+ * <Radio value="day" label="Day" />
1029
+ * <Radio value="week" label="Week" />
1030
+ * <Radio value="month" label="Month" />
1031
+ * </RadioGroup>
1032
+ */
1033
+ declare const RadioGroup: react.ForwardRefExoticComponent<RadioGroupProps & react.RefAttributes<HTMLFieldSetElement>>;
1034
+
1035
+ /**
1036
+ * Switch variants — CVA configuration.
1037
+ *
1038
+ * Design intent:
1039
+ * - Track changes color when on
1040
+ * - Thumb slides from left to right
1041
+ * - 6 colors, 3 sizes
1042
+ * - Optional icon inside thumb
1043
+ */
1044
+ declare const switchTrackVariants: (props?: ({
1045
+ size?: "sm" | "md" | "lg" | null | undefined;
1046
+ checked?: boolean | null | undefined;
1047
+ color?: "info" | "success" | "default" | "error" | "secondary" | "warning" | null | undefined;
1048
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1049
+ type SwitchTrackVariantProps = VariantProps<typeof switchTrackVariants>;
1050
+
1051
+ interface SwitchProps extends Omit<ComponentPropsWithoutRef<'input'>, 'size' | 'color' | 'type'>, Pick<SwitchTrackVariantProps, 'size' | 'color'> {
1052
+ /**
1053
+ * Label shown next to the switch.
1054
+ */
1055
+ label?: ReactNode;
1056
+ /**
1057
+ * Helper text shown below the label.
1058
+ */
1059
+ helperText?: string;
1060
+ /**
1061
+ * Position of the label relative to the switch.
1062
+ * - `right` → label after switch (default)
1063
+ * - `left` → label before switch, switch pinned right
1064
+ */
1065
+ labelPosition?: 'left' | 'right';
1066
+ /**
1067
+ * Icon shown inside the thumb when switch is ON.
1068
+ * Disappears when switch is off.
1069
+ */
1070
+ checkedIcon?: IconName;
1071
+ /**
1072
+ * Icon shown inside the thumb when switch is OFF.
1073
+ */
1074
+ uncheckedIcon?: IconName;
1075
+ /**
1076
+ * Card style — wraps switch in a bordered card.
1077
+ * Label becomes the card title, helperText becomes description.
1078
+ */
1079
+ card?: boolean;
1080
+ /**
1081
+ * Whether the switch is on.
1082
+ * If omitted, component manages its own state (uncontrolled).
1083
+ */
1084
+ checked?: boolean;
1085
+ /** Default checked state for uncontrolled usage. */
1086
+ defaultChecked?: boolean;
1087
+ /** Size of the switch. */
1088
+ size?: 'sm' | 'md' | 'lg';
1089
+ /** Color of the track when on. */
1090
+ color?: 'default' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
1091
+ }
1092
+ /**
1093
+ * Switch — an on/off toggle control.
1094
+ *
1095
+ * Use Switch (not Checkbox) when the action takes effect immediately
1096
+ * without requiring form submission.
1097
+ *
1098
+ * Features beyond M3:
1099
+ * - 6 colors
1100
+ * - 3 sizes
1101
+ * - icon inside thumb (on and off states)
1102
+ * - label left or right position
1103
+ * - card style with title + description
1104
+ * - controlled + uncontrolled
1105
+ *
1106
+ * @example
1107
+ * // Basic
1108
+ * <Switch label="Dark mode" />
1109
+ *
1110
+ * // With icon
1111
+ * <Switch label="Wi-Fi" checkedIcon="wifi" color="success" />
1112
+ *
1113
+ * // Label left
1114
+ * <Switch label="Notifications" labelPosition="left" />
1115
+ *
1116
+ * // Card style
1117
+ * <Switch label="Email notifications" helperText="Get updates via email" card />
1118
+ *
1119
+ * // Controlled
1120
+ * <Switch checked={enabled} onChange={e => setEnabled(e.target.checked)} />
1121
+ */
1122
+ declare const Switch: react.ForwardRefExoticComponent<SwitchProps & react.RefAttributes<HTMLInputElement>>;
1123
+
1124
+ interface SelectOption {
1125
+ /** Unique value for this option. */
1126
+ value: string;
1127
+ /** Display label. */
1128
+ label: string;
1129
+ /** Optional description shown below label. */
1130
+ description?: string;
1131
+ /** Avatar image URL. */
1132
+ avatarSrc?: string;
1133
+ /** Avatar alt text. */
1134
+ avatarAlt?: string;
1135
+ /** Leading icon. */
1136
+ icon?: string;
1137
+ /** Whether this option is disabled. */
1138
+ disabled?: boolean;
1139
+ }
1140
+ interface SelectOptionGroup {
1141
+ /** Group label shown above options. */
1142
+ label: string;
1143
+ /** Options in this group. */
1144
+ options: SelectOption[];
1145
+ }
1146
+ interface SelectProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {
1147
+ /** Label shown above the select. */
1148
+ label?: string;
1149
+ /** Placeholder shown when no value selected. */
1150
+ placeholder?: string;
1151
+ /** Helper text shown below the select. */
1152
+ helperText?: string;
1153
+ /** Marks field as required. */
1154
+ required?: boolean;
1155
+ /** Error state. */
1156
+ error?: boolean;
1157
+ /** Error message shown below. */
1158
+ errorText?: string;
1159
+ /** Flat list of options. Use optionGroups for grouped options. */
1160
+ options?: SelectOption[];
1161
+ /** Grouped options. Takes priority over options. */
1162
+ optionGroups?: SelectOptionGroup[];
1163
+ /** Controlled value (single select). */
1164
+ value?: string;
1165
+ /** Controlled values (multi select). */
1166
+ values?: string[];
1167
+ /** Callback for single select. */
1168
+ onChange?: (value: string) => void;
1169
+ /** Callback for multi select. */
1170
+ onChangeMulti?: (values: string[]) => void;
1171
+ /** Enables multi-select mode. */
1172
+ multi?: boolean;
1173
+ /** Shows a search input inside the dropdown. */
1174
+ searchable?: boolean;
1175
+ /** Placeholder for the search input. */
1176
+ searchPlaceholder?: string;
1177
+ /** Shows a clear button when a value is selected. */
1178
+ clearable?: boolean;
1179
+ /** Disables the select. */
1180
+ disabled?: boolean;
1181
+ /** Size of the select trigger. */
1182
+ size?: 'sm' | 'md' | 'lg';
1183
+ /** Maximum number of items to show in multi mode before showing count. */
1184
+ maxDisplay?: number;
1185
+ }
1186
+ /**
1187
+ * Select — a fully custom dropdown selector.
1188
+ *
1189
+ * Features beyond M3:
1190
+ * - searchable options with highlight
1191
+ * - option groups with labels
1192
+ * - multi-select with chip display
1193
+ * - avatar options with description
1194
+ * - clearable
1195
+ * - disabled options
1196
+ * - full keyboard navigation (arrows, enter, escape, home, end)
1197
+ * - 3 sizes
1198
+ * - WCAG AA accessible
1199
+ *
1200
+ * @example
1201
+ * // Single
1202
+ * <Select label="Department" options={options} value={dept} onChange={setDept} />
1203
+ *
1204
+ * // Multi
1205
+ * <Select label="Tags" options={options} multi values={tags} onChangeMulti={setTags} />
1206
+ *
1207
+ * // Searchable
1208
+ * <Select label="Country" options={countries} searchable />
1209
+ *
1210
+ * // Grouped
1211
+ * <Select label="Location" optionGroups={groups} />
1212
+ */
1213
+ declare const Select: react.ForwardRefExoticComponent<SelectProps & react.RefAttributes<HTMLDivElement>>;
1214
+
1215
+ /**
1216
+ * Tooltip variants — CVA configuration.
1217
+ *
1218
+ * Design intent:
1219
+ * - dark → default, high contrast, works on any background
1220
+ * - light → for dark backgrounds
1221
+ * - primary → brand colored, for promotional hints
1222
+ */
1223
+ declare const tooltipVariants: (props?: ({
1224
+ variant?: "dark" | "light" | "primary" | null | undefined;
1225
+ position?: "bottom" | "left" | "right" | "top" | null | undefined;
1226
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1227
+ type TooltipVariantProps = VariantProps<typeof tooltipVariants>;
1228
+
1229
+ interface TooltipProps extends Omit<ComponentPropsWithoutRef<'div'>, 'content'>, TooltipVariantProps {
1230
+ /**
1231
+ * The element that triggers the tooltip.
1232
+ * Wrap any element — button, icon, disabled button, etc.
1233
+ */
1234
+ children: ReactNode;
1235
+ /**
1236
+ * Tooltip content — string for simple text, ReactNode for rich tooltips.
1237
+ */
1238
+ content: ReactNode;
1239
+ /**
1240
+ * Position of the tooltip relative to the trigger.
1241
+ * @default 'top'
1242
+ */
1243
+ position?: 'top' | 'bottom' | 'left' | 'right';
1244
+ /**
1245
+ * Visual variant.
1246
+ * - `dark` → dark background, light text (default)
1247
+ * - `light` → white background, dark text, border
1248
+ * - `primary` → brand color background
1249
+ */
1250
+ variant?: 'dark' | 'light' | 'primary';
1251
+ /**
1252
+ * Keyboard shortcut shown inside the tooltip.
1253
+ * Renders in a monospace badge.
1254
+ *
1255
+ * @example
1256
+ * <Tooltip content="Save" shortcut="⌘S">...</Tooltip>
1257
+ */
1258
+ shortcut?: string;
1259
+ /**
1260
+ * Delay in ms before the tooltip appears.
1261
+ * @default 0
1262
+ */
1263
+ delay?: number;
1264
+ /**
1265
+ * Whether the tooltip is disabled (never shows).
1266
+ */
1267
+ disabled?: boolean;
1268
+ /**
1269
+ * Max width for rich tooltips with long content.
1270
+ * @default 'none' (whitespace-nowrap)
1271
+ */
1272
+ maxWidth?: number;
1273
+ /**
1274
+ * Title for rich tooltips — shown in bold above content.
1275
+ */
1276
+ title?: string;
1277
+ /**
1278
+ * Action link text for rich tooltips.
1279
+ */
1280
+ actionLabel?: string;
1281
+ /**
1282
+ * Callback when the action link is clicked.
1283
+ */
1284
+ onAction?: () => void;
1285
+ }
1286
+ /**
1287
+ * Tooltip — contextual information shown on hover and focus.
1288
+ *
1289
+ * Features beyond M3:
1290
+ * - 3 variants: dark, light, primary
1291
+ * - 4 positions: top, bottom, left, right
1292
+ * - keyboard shortcut display
1293
+ * - rich tooltip with title + description + action
1294
+ * - configurable show delay
1295
+ * - works on disabled elements (wraps in span)
1296
+ * - shows on hover AND focus (keyboard accessible)
1297
+ *
1298
+ * @example
1299
+ * // Simple
1300
+ * <Tooltip content="Delete item">
1301
+ * <IconButton icon="trash" aria-label="Delete" />
1302
+ * </Tooltip>
1303
+ *
1304
+ * // With shortcut
1305
+ * <Tooltip content="Save document" shortcut="⌘S">
1306
+ * <Button>Save</Button>
1307
+ * </Tooltip>
1308
+ *
1309
+ * // Rich
1310
+ * <Tooltip
1311
+ * title="Design tokens"
1312
+ * content="Tokens are the atomic values that define your system."
1313
+ * actionLabel="Learn more"
1314
+ * onAction={() => navigate('/docs')}
1315
+ * maxWidth={200}
1316
+ * >
1317
+ * <Icon name="info" />
1318
+ * </Tooltip>
1319
+ *
1320
+ * // On disabled element
1321
+ * <Tooltip content="You need permission to do this">
1322
+ * <Button disabled>Delete</Button>
1323
+ * </Tooltip>
1324
+ */
1325
+ declare const Tooltip: react.ForwardRefExoticComponent<TooltipProps & react.RefAttributes<HTMLDivElement>>;
1326
+
1327
+ /**
1328
+ * Spinner variants — CVA configuration.
1329
+ *
1330
+ * 9 variants:
1331
+ * circular, ring, dots, bars, dual, pulse, ripple, gradient, skeleton
1332
+ *
1333
+ * 6 sizes: xs, sm, md, lg, xl, 2xl
1334
+ * 6 colors: default, secondary, success, warning, error, white
1335
+ */
1336
+ declare const spinnerVariants: (props?: ({
1337
+ variant?: "dots" | "gradient" | "pulse" | "circular" | "ring" | "bars" | "dual" | "ripple" | "skeleton" | null | undefined;
1338
+ size?: "sm" | "md" | "lg" | "xl" | "xs" | "2xl" | null | undefined;
1339
+ color?: "success" | "default" | "error" | "secondary" | "warning" | "white" | null | undefined;
1340
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1341
+ type SpinnerVariantProps = VariantProps<typeof spinnerVariants>;
1342
+
1343
+ interface SpinnerProps extends ComponentPropsWithoutRef<'div'>, SpinnerVariantProps {
1344
+ /**
1345
+ * Visual style of the spinner.
1346
+ * - `circular` → single border spin (default)
1347
+ * - `ring` → track + colored top border
1348
+ * - `dots` → three pulsing dots
1349
+ * - `bars` → four bouncing bars
1350
+ * - `dual` → two rings spinning opposite directions
1351
+ * - `pulse` → breathing dot
1352
+ * - `ripple` → expanding rings (radar effect)
1353
+ * - `gradient` → conic gradient spin
1354
+ * - `skeleton` → shimmer placeholder (pass width/height via className)
1355
+ */
1356
+ variant?: 'circular' | 'ring' | 'dots' | 'bars' | 'dual' | 'pulse' | 'ripple' | 'gradient' | 'skeleton';
1357
+ /**
1358
+ * Size of the spinner.
1359
+ */
1360
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
1361
+ /**
1362
+ * Color of the spinner.
1363
+ */
1364
+ color?: 'default' | 'secondary' | 'success' | 'warning' | 'error' | 'white';
1365
+ /**
1366
+ * Label shown next to or below the spinner.
1367
+ */
1368
+ label?: string;
1369
+ /**
1370
+ * Position of the label relative to the spinner.
1371
+ * @default 'bottom'
1372
+ */
1373
+ labelPosition?: 'top' | 'bottom' | 'left' | 'right';
1374
+ /**
1375
+ * Covers a parent element with a semi-transparent overlay.
1376
+ * Parent must have position: relative.
1377
+ */
1378
+ overlay?: boolean;
1379
+ }
1380
+ /**
1381
+ * Spinner — loading indicator with 9 variants.
1382
+ *
1383
+ * Features beyond M3:
1384
+ * - 9 variants: circular, ring, dots, bars, dual, pulse, ripple, gradient, skeleton
1385
+ * - 6 sizes: xs to 2xl
1386
+ * - 6 colors
1387
+ * - label with position control
1388
+ * - overlay mode for covering content
1389
+ * - skeleton variant for content placeholders
1390
+ * - respects prefers-reduced-motion
1391
+ *
1392
+ * @example
1393
+ * // Basic
1394
+ * <Spinner />
1395
+ * <Spinner variant="dots" color="secondary" />
1396
+ *
1397
+ * // With label
1398
+ * <Spinner label="Loading..." labelPosition="right" />
1399
+ *
1400
+ * // Overlay
1401
+ * <div style={{ position: 'relative' }}>
1402
+ * <YourContent />
1403
+ * <Spinner overlay label="Please wait..." />
1404
+ * </div>
1405
+ *
1406
+ * // Skeleton
1407
+ * <Spinner variant="skeleton" className="h-4 w-32" />
1408
+ */
1409
+ declare const Spinner: react.ForwardRefExoticComponent<SpinnerProps & react.RefAttributes<HTMLDivElement>>;
1410
+ interface SkeletonProps extends ComponentPropsWithoutRef<'div'> {
1411
+ /**
1412
+ * Shape of the skeleton.
1413
+ * - `text` → rounded rectangle (default)
1414
+ * - `circle` → circle shape
1415
+ * - `card` → taller rectangle for cards
1416
+ */
1417
+ shape?: 'text' | 'circle' | 'card';
1418
+ }
1419
+ /**
1420
+ * Skeleton — shimmer placeholder shown while content loads.
1421
+ *
1422
+ * @example
1423
+ * // Text line
1424
+ * <Skeleton className="h-4 w-48" />
1425
+ *
1426
+ * // Avatar
1427
+ * <Skeleton shape="circle" className="size-10" />
1428
+ *
1429
+ * // Card
1430
+ * <Skeleton shape="card" className="h-32 w-full" />
1431
+ */
1432
+ declare const Skeleton: react.ForwardRefExoticComponent<SkeletonProps & react.RefAttributes<HTMLDivElement>>;
1433
+
1434
+ /**
1435
+ * Card variants — CVA configuration.
1436
+ *
1437
+ * Base variants: elevated, filled, outlined, ghost, gradient, glass
1438
+ * All interactive states handled via compound variants.
1439
+ */
1440
+ declare const cardVariants: (props?: ({
1441
+ variant?: "filled" | "outlined" | "elevated" | "ghost" | "gradient" | "glass" | null | undefined;
1442
+ radius?: "sm" | "md" | "lg" | "none" | "full" | null | undefined;
1443
+ interactive?: boolean | null | undefined;
1444
+ selected?: boolean | null | undefined;
1445
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1446
+ type CardVariantProps = VariantProps<typeof cardVariants>;
1447
+
1448
+ interface CardProps extends ComponentPropsWithoutRef<'div'>, CardVariantProps {
1449
+ /**
1450
+ * Visual style of the card.
1451
+ * - `elevated` → shadow, lifts on hover (default)
1452
+ * - `filled` → tonal surface background
1453
+ * - `outlined` → border, highlights on hover
1454
+ * - `ghost` → dashed border, minimal
1455
+ * - `gradient` → brand gradient background
1456
+ * - `glass` → frosted glass, use on colored backgrounds
1457
+ */
1458
+ variant?: 'elevated' | 'filled' | 'outlined' | 'ghost' | 'gradient' | 'glass';
1459
+ /** Border radius of the card. */
1460
+ radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';
1461
+ /** Adds hover/focus/active interactive states. */
1462
+ interactive?: boolean;
1463
+ /** Shows a selected ring or border. */
1464
+ selected?: boolean;
1465
+ /**
1466
+ * Renders the card as a button element for better semantics
1467
+ * when the entire card is clickable.
1468
+ */
1469
+ asButton?: boolean;
1470
+ }
1471
+ /**
1472
+ * Card — a surface container for grouping related content.
1473
+ *
1474
+ * Features beyond M3:
1475
+ * - 6 variants: elevated, filled, outlined, ghost, gradient, glass
1476
+ * - interactive mode with hover/focus/active states
1477
+ * - selected state
1478
+ * - asButton for fully clickable cards
1479
+ * - radius control
1480
+ * - composable with CardHeader, CardBody, CardFooter, CardMedia
1481
+ *
1482
+ * @example
1483
+ * // Basic
1484
+ * <Card>
1485
+ * <CardBody>
1486
+ * <p>Content here</p>
1487
+ * </CardBody>
1488
+ * </Card>
1489
+ *
1490
+ * // Interactive outlined
1491
+ * <Card variant="outlined" interactive onClick={handleClick}>
1492
+ * <CardBody>Click me</CardBody>
1493
+ * </Card>
1494
+ *
1495
+ * // Gradient
1496
+ * <Card variant="gradient">
1497
+ * <CardBody>
1498
+ * <h3>Featured</h3>
1499
+ * </CardBody>
1500
+ * </Card>
1501
+ *
1502
+ * // Glass (use on colored background)
1503
+ * <div className="bg-gradient-to-br from-primary to-secondary p-8">
1504
+ * <Card variant="glass">
1505
+ * <CardBody>Glass card</CardBody>
1506
+ * </Card>
1507
+ * </div>
1508
+ */
1509
+ declare const Card: react.ForwardRefExoticComponent<CardProps & react.RefAttributes<HTMLDivElement>>;
1510
+ interface CardMediaProps extends ComponentPropsWithoutRef<'div'> {
1511
+ /** Image source URL. */
1512
+ src?: string;
1513
+ /** Image alt text. */
1514
+ alt?: string;
1515
+ /** Height of the media area. Default: 160px */
1516
+ height?: number;
1517
+ /** Gradient overlay on the image. */
1518
+ overlay?: boolean;
1519
+ /** Content shown over the overlay. */
1520
+ overlayContent?: ReactNode;
1521
+ }
1522
+ /**
1523
+ * CardMedia — image area at the top of a card.
1524
+ * Shows an image or a placeholder if no src provided.
1525
+ */
1526
+ declare const CardMedia: react.ForwardRefExoticComponent<CardMediaProps & react.RefAttributes<HTMLDivElement>>;
1527
+ interface CardHeaderProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {
1528
+ /** Main title. */
1529
+ title?: ReactNode;
1530
+ /** Subtitle shown below title. */
1531
+ subtitle?: ReactNode;
1532
+ /** Element shown on the right side (badge, menu, icon). */
1533
+ action?: ReactNode;
1534
+ /** Avatar or icon shown on the left. */
1535
+ avatar?: ReactNode;
1536
+ }
1537
+ /**
1538
+ * CardHeader — title area with optional subtitle, action, and avatar.
1539
+ */
1540
+ declare const CardHeader: react.ForwardRefExoticComponent<CardHeaderProps & react.RefAttributes<HTMLDivElement>>;
1541
+ interface CardBodyProps extends ComponentPropsWithoutRef<'div'> {
1542
+ /** Remove default padding. */
1543
+ noPadding?: boolean;
1544
+ }
1545
+ /**
1546
+ * CardBody — main content area of the card.
1547
+ */
1548
+ declare const CardBody: react.ForwardRefExoticComponent<CardBodyProps & react.RefAttributes<HTMLDivElement>>;
1549
+ interface CardFooterProps extends ComponentPropsWithoutRef<'div'> {
1550
+ /** Adds a top border separator. */
1551
+ divider?: boolean;
1552
+ }
1553
+ /**
1554
+ * CardFooter — bottom area for actions and metadata.
1555
+ */
1556
+ declare const CardFooter: react.ForwardRefExoticComponent<CardFooterProps & react.RefAttributes<HTMLDivElement>>;
1557
+
1558
+ declare const dialogPanelVariants: (props?: ({
1559
+ size?: "sm" | "md" | "lg" | "xs" | "fullscreen" | null | undefined;
1560
+ position?: "bottom" | "left" | "right" | "center" | null | undefined;
1561
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1562
+ type DialogPanelVariantProps = VariantProps<typeof dialogPanelVariants>;
1563
+
1564
+ interface DialogProps extends DialogPanelVariantProps {
1565
+ /** Whether the dialog is open. */
1566
+ open: boolean;
1567
+ /** Called when dialog should close (ESC, backdrop click, close button). */
1568
+ onClose: () => void;
1569
+ /**
1570
+ * Dialog type — affects icon and color scheme.
1571
+ * - `default` → neutral (default)
1572
+ * - `destructive` → red, for dangerous actions
1573
+ * - `success` → green, for confirmations
1574
+ * - `warning` → amber, for caution
1575
+ * - `info` → blue, for information
1576
+ */
1577
+ type?: 'default' | 'destructive' | 'success' | 'warning' | 'info';
1578
+ /**
1579
+ * Position of the dialog.
1580
+ * - `center` → centered modal (default)
1581
+ * - `bottom` → bottom drawer/sheet
1582
+ * - `left` → left side panel
1583
+ * - `right` → right side panel
1584
+ */
1585
+ position?: 'center' | 'bottom' | 'left' | 'right';
1586
+ /** Dialog size (only applies to center position). */
1587
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'fullscreen';
1588
+ /** Title shown in the dialog header. */
1589
+ title?: string;
1590
+ /** Subtitle shown below the title. */
1591
+ subtitle?: string;
1592
+ /** Emoji or icon shown above the title. */
1593
+ icon?: string;
1594
+ /** Hero image shown at the top of the dialog (above header). */
1595
+ imageSrc?: string;
1596
+ /** Alt text for the hero image. */
1597
+ imageAlt?: string;
1598
+ /** Height of the hero image. Default: 160px */
1599
+ imageHeight?: number;
1600
+ /** Shows a close button in the top-right corner. */
1601
+ showCloseButton?: boolean;
1602
+ /** Close when clicking the backdrop. Default: true */
1603
+ closeOnBackdrop?: boolean;
1604
+ /** Close on Escape key. Default: true */
1605
+ closeOnEscape?: boolean;
1606
+ /** Footer content — usually action buttons. */
1607
+ footer?: ReactNode;
1608
+ /** Shows a divider between body and footer. */
1609
+ footerDivider?: boolean;
1610
+ /** Additional className for the panel. */
1611
+ panelClassName?: string;
1612
+ /** Children = dialog body content. */
1613
+ children?: ReactNode;
1614
+ }
1615
+ /**
1616
+ * Dialog — a modal overlay that demands user attention.
1617
+ *
1618
+ * Features beyond M3:
1619
+ * - 5 types: default, destructive, success, warning, info
1620
+ * - 4 positions: center, bottom drawer, left/right side panel
1621
+ * - 5 sizes: xs, sm, md, lg, fullscreen
1622
+ * - hero image header
1623
+ * - focus trap + escape + backdrop close
1624
+ * - scroll lock on open
1625
+ * - portal rendering (outside DOM tree)
1626
+ * - composable with DialogHeader, DialogBody, DialogFooter
1627
+ *
1628
+ * @example
1629
+ * // Basic
1630
+ * <Dialog open={open} onClose={() => setOpen(false)} title="Hello">
1631
+ * <DialogBody>Content here</DialogBody>
1632
+ * </Dialog>
1633
+ *
1634
+ * // Destructive
1635
+ * <Dialog
1636
+ * open={open} onClose={() => setOpen(false)}
1637
+ * type="destructive"
1638
+ * title="Delete account?"
1639
+ * icon="🗑️"
1640
+ * footer={
1641
+ * <>
1642
+ * <Button variant="text" onClick={() => setOpen(false)}>Cancel</Button>
1643
+ * <Button variant="destructive" onClick={handleDelete}>Delete</Button>
1644
+ * </>
1645
+ * }
1646
+ * >
1647
+ * <DialogBody>This cannot be undone.</DialogBody>
1648
+ * </Dialog>
1649
+ *
1650
+ * // Bottom drawer
1651
+ * <Dialog open={open} onClose={() => setOpen(false)} position="bottom" title="Share">
1652
+ * <DialogBody>...</DialogBody>
1653
+ * </Dialog>
1654
+ */
1655
+ declare const Dialog: react.ForwardRefExoticComponent<DialogProps & react.RefAttributes<HTMLDivElement>>;
1656
+
1657
+ /**
1658
+ * Toast variants — CVA configuration.
1659
+ *
1660
+ * Types: default, success, error, warning, info, loading, gradient, glass
1661
+ * Positions: 6 positions
1662
+ */
1663
+ declare const toastVariants: (props?: ({
1664
+ type?: "info" | "loading" | "success" | "gradient" | "default" | "error" | "warning" | "glass" | null | undefined;
1665
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1666
+ type ToastVariantProps = VariantProps<typeof toastVariants>;
1667
+ type ToastType = 'default' | 'success' | 'error' | 'warning' | 'info' | 'loading' | 'gradient' | 'glass';
1668
+ type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
1669
+
1670
+ interface ToasterProps {
1671
+ /**
1672
+ * Position of the toast stack.
1673
+ * @default 'bottom-right'
1674
+ */
1675
+ position?: ToastPosition;
1676
+ /**
1677
+ * Maximum number of toasts visible at once.
1678
+ * @default 5
1679
+ */
1680
+ maxToasts?: number;
1681
+ /**
1682
+ * Whether to expand all toasts or collapse into a stack.
1683
+ * @default false (collapsed)
1684
+ */
1685
+ expand?: boolean;
1686
+ /**
1687
+ * Gap between toasts in pixels.
1688
+ * @default 8
1689
+ */
1690
+ gap?: number;
1691
+ }
1692
+ /**
1693
+ * Toaster — renders the toast stack. Place once at the root of your app.
1694
+ *
1695
+ * @example
1696
+ * // In App.tsx or main layout
1697
+ * <Toaster position="bottom-right" />
1698
+ *
1699
+ * // Then anywhere in your app
1700
+ * import { toast } from './components/Toast';
1701
+ * toast.success('Saved!')
1702
+ */
1703
+ declare function Toaster({ position, maxToasts, expand, gap, }: ToasterProps): react.ReactPortal | null;
1704
+
1705
+ interface ToastAction {
1706
+ label: string;
1707
+ onClick: () => void;
1708
+ variant?: 'primary' | 'ghost';
1709
+ }
1710
+ interface ToastData {
1711
+ id: string;
1712
+ type: ToastType;
1713
+ title: string;
1714
+ description?: string;
1715
+ duration?: number;
1716
+ progress?: number;
1717
+ showProgress?: boolean;
1718
+ actions?: ToastAction[];
1719
+ avatarSrc?: string;
1720
+ avatarName?: string;
1721
+ imageSrc?: string;
1722
+ icon?: ReactNode;
1723
+ dismissible?: boolean;
1724
+ onDismiss?: () => void;
1725
+ createdAt: number;
1726
+ }
1727
+ interface ToastOptions extends Omit<ToastData, 'id' | 'createdAt' | 'type'> {
1728
+ id?: string;
1729
+ type?: ToastType;
1730
+ }
1731
+ /**
1732
+ * toast — the main API for showing toasts.
1733
+ *
1734
+ * @example
1735
+ * toast('Hello world')
1736
+ * toast.success('Saved!')
1737
+ * toast.error('Failed!', { description: 'Check your connection' })
1738
+ * toast.promise(fetch('/api'), { loading: 'Loading...', success: 'Done!', error: 'Failed' })
1739
+ * toast.update(id, { progress: 75 })
1740
+ * toast.dismiss(id)
1741
+ * toast.dismissAll()
1742
+ */
1743
+ declare const toast: ((title: string, options?: Partial<ToastOptions>) => string) & {
1744
+ success: (title: string, options?: Partial<ToastOptions>) => string;
1745
+ error: (title: string, options?: Partial<ToastOptions>) => string;
1746
+ warning: (title: string, options?: Partial<ToastOptions>) => string;
1747
+ info: (title: string, options?: Partial<ToastOptions>) => string;
1748
+ loading: (title: string, options?: Partial<ToastOptions>) => string;
1749
+ gradient: (title: string, options?: Partial<ToastOptions>) => string;
1750
+ /**
1751
+ * Rich toast with avatar and multiple actions.
1752
+ */
1753
+ rich: (options: ToastOptions) => string;
1754
+ /**
1755
+ * Progress toast — update progress with toast.update(id, { progress: 75 }).
1756
+ */
1757
+ progress: (title: string, options?: Partial<ToastOptions>) => string;
1758
+ /**
1759
+ * Promise toast — shows loading, then success or error.
1760
+ *
1761
+ * @example
1762
+ * toast.promise(saveData(), {
1763
+ * loading: 'Saving...',
1764
+ * success: 'Saved successfully!',
1765
+ * error: 'Failed to save'
1766
+ * })
1767
+ */
1768
+ promise: <T>(promise: Promise<T>, messages: {
1769
+ loading: string;
1770
+ success: string | ((data: T) => string);
1771
+ error: string | ((err: unknown) => string);
1772
+ }, options?: Partial<ToastOptions>) => Promise<T>;
1773
+ /**
1774
+ * Update an existing toast by id.
1775
+ */
1776
+ update: (id: string, options: Partial<ToastOptions>) => void;
1777
+ /**
1778
+ * Dismiss a toast by id.
1779
+ */
1780
+ dismiss: (id: string) => void;
1781
+ /**
1782
+ * Dismiss all toasts.
1783
+ */
1784
+ dismissAll: () => void;
1785
+ };
1786
+
1787
+ /**
1788
+ * Tabs variants — CVA configuration.
1789
+ *
1790
+ * Variants: underline, pill, filled, bordered, card, floating, line, bubble, gradient
1791
+ * Orientations: horizontal, vertical
1792
+ */
1793
+ declare const tabsListVariants: (props?: ({
1794
+ variant?: "filled" | "pill" | "line" | "gradient" | "floating" | "card" | "underline" | "bordered" | "bubble" | null | undefined;
1795
+ orientation?: "horizontal" | "vertical" | null | undefined;
1796
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1797
+ declare const tabTriggerVariants: (props?: ({
1798
+ variant?: "filled" | "pill" | "line" | "gradient" | "floating" | "card" | "underline" | "bordered" | "bubble" | null | undefined;
1799
+ size?: "sm" | "md" | "lg" | null | undefined;
1800
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1801
+ type TabsListVariantProps = VariantProps<typeof tabsListVariants>;
1802
+ type TabTriggerVariantProps = VariantProps<typeof tabTriggerVariants>;
1803
+
1804
+ interface TabsProps extends ComponentPropsWithoutRef<'div'> {
1805
+ /**
1806
+ * Default active tab value (uncontrolled).
1807
+ */
1808
+ defaultValue?: string;
1809
+ /**
1810
+ * Controlled active tab value.
1811
+ */
1812
+ value?: string;
1813
+ /**
1814
+ * Callback when active tab changes.
1815
+ */
1816
+ onValueChange?: (value: string) => void;
1817
+ /**
1818
+ * Visual variant.
1819
+ * - `underline` → M3 primary style, bottom border indicator
1820
+ * - `pill` → segmented control, filled active tab
1821
+ * - `filled` → tonal background on active
1822
+ * - `bordered` → button group style
1823
+ * - `card` → each tab is a card with icon
1824
+ * - `floating` → elevated pill with shadow
1825
+ * - `line` → left border indicator (sidebar style)
1826
+ * - `bubble` → pill outline that fills on active
1827
+ * - `gradient` → brand gradient on active tab
1828
+ */
1829
+ variant?: TabsListVariantProps['variant'];
1830
+ /**
1831
+ * Tab orientation.
1832
+ * - `horizontal` → tabs in a row (default)
1833
+ * - `vertical` → tabs in a column (sidebar style)
1834
+ */
1835
+ orientation?: 'horizontal' | 'vertical';
1836
+ /**
1837
+ * Size of the tab labels.
1838
+ */
1839
+ size?: TabTriggerVariantProps['size'];
1840
+ }
1841
+ /**
1842
+ * Tabs — a navigation component for switching between views.
1843
+ *
1844
+ * Features beyond M3:
1845
+ * - 9 variants: underline, pill, filled, bordered, card, floating, line, bubble, gradient
1846
+ * - horizontal and vertical orientations
1847
+ * - badge counts on tabs
1848
+ * - icons in tabs
1849
+ * - subtitle below tab label
1850
+ * - scrollable overflow
1851
+ * - step/wizard tab style
1852
+ * - full keyboard navigation (arrows, home, end)
1853
+ * - controlled + uncontrolled
1854
+ *
1855
+ * @example
1856
+ * <Tabs defaultValue="overview">
1857
+ * <TabsList>
1858
+ * <TabsTrigger value="overview">Overview</TabsTrigger>
1859
+ * <TabsTrigger value="analytics">Analytics</TabsTrigger>
1860
+ * </TabsList>
1861
+ * <TabsContent value="overview">Overview content</TabsContent>
1862
+ * <TabsContent value="analytics">Analytics content</TabsContent>
1863
+ * </Tabs>
1864
+ */
1865
+ declare const Tabs: react.ForwardRefExoticComponent<TabsProps & react.RefAttributes<HTMLDivElement>>;
1866
+ interface StepTabItem {
1867
+ value: string;
1868
+ label: string;
1869
+ done?: boolean;
1870
+ disabled?: boolean;
1871
+ }
1872
+ interface StepTabsProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {
1873
+ /** Step items. */
1874
+ steps: StepTabItem[];
1875
+ /** Currently active step value. */
1876
+ value: string;
1877
+ /** Callback when step is clicked. */
1878
+ onChange?: (value: string) => void;
1879
+ }
1880
+ /**
1881
+ * StepTabs — wizard/onboarding progress tabs.
1882
+ *
1883
+ * @example
1884
+ * <StepTabs
1885
+ * steps={[
1886
+ * { value: 'account', label: 'Account', done: true },
1887
+ * { value: 'profile', label: 'Profile' },
1888
+ * { value: 'plan', label: 'Plan', disabled: true },
1889
+ * ]}
1890
+ * value="profile"
1891
+ * onChange={setStep}
1892
+ * />
1893
+ */
1894
+ declare const StepTabs: react.ForwardRefExoticComponent<StepTabsProps & react.RefAttributes<HTMLDivElement>>;
1895
+
1896
+ type AccordionVariant = 'default' | 'bordered' | 'filled' | 'card' | 'flush' | 'separated' | 'gradient' | 'plus' | 'numbered' | 'image';
1897
+
1898
+ interface AccordionProps extends ComponentPropsWithoutRef<'div'> {
1899
+ /**
1900
+ * Visual variant.
1901
+ * - `default` → underline divider between items
1902
+ * - `bordered` → full border around the group
1903
+ * - `filled` → tonal background on items
1904
+ * - `card` → each item is a card
1905
+ * - `flush` → no borders, hover highlight
1906
+ * - `separated` → separated cards with focus ring
1907
+ * - `gradient` → brand gradient header when open
1908
+ * - `plus` → FAQ style with +/- icon
1909
+ * - `numbered` → step numbers (onboarding)
1910
+ * - `image` → image/icon side panel
1911
+ */
1912
+ variant?: AccordionVariant;
1913
+ /**
1914
+ * Selection mode.
1915
+ * - `single` → only one item open at a time (default)
1916
+ * - `multiple` → many items can be open simultaneously
1917
+ */
1918
+ mode?: 'single' | 'multiple';
1919
+ /**
1920
+ * Default open item(s). Use value prop of AccordionItem.
1921
+ */
1922
+ defaultValue?: string | string[];
1923
+ /**
1924
+ * Controlled open items.
1925
+ */
1926
+ value?: string | string[];
1927
+ /**
1928
+ * Callback when open items change.
1929
+ */
1930
+ onValueChange?: (value: string | string[]) => void;
1931
+ /**
1932
+ * Icon style for the expand indicator.
1933
+ * - `chevron` → rotating chevron (default)
1934
+ * - `plus` → +/- toggle
1935
+ * - `arrow` → right arrow
1936
+ * - `none` → no icon
1937
+ */
1938
+ iconStyle?: 'chevron' | 'plus' | 'arrow' | 'none';
1939
+ }
1940
+ /**
1941
+ * Accordion — collapsible content sections.
1942
+ *
1943
+ * Features beyond M3:
1944
+ * - 10 variants: default, bordered, filled, card, flush, separated, gradient, plus, numbered, image
1945
+ * - single and multiple open modes
1946
+ * - 4 icon styles: chevron, plus, arrow, none
1947
+ * - badge and subtitle on triggers
1948
+ * - icon/image in trigger
1949
+ * - nested accordions
1950
+ * - smooth height animation
1951
+ * - full keyboard navigation
1952
+ *
1953
+ * @example
1954
+ * <Accordion defaultValue="item-1">
1955
+ * <AccordionItem value="item-1" title="What is this?">
1956
+ * Content here
1957
+ * </AccordionItem>
1958
+ * <AccordionItem value="item-2" title="How does it work?">
1959
+ * More content
1960
+ * </AccordionItem>
1961
+ * </Accordion>
1962
+ */
1963
+ declare const Accordion: react.ForwardRefExoticComponent<AccordionProps & react.RefAttributes<HTMLDivElement>>;
1964
+
1965
+ /**
1966
+ * Progress variants — CVA configuration.
1967
+ *
1968
+ * Variants: default, gradient, glow, striped, thin, segmented
1969
+ * Colors: default, secondary, success, warning, error, info
1970
+ * Sizes: xs, sm, md, lg, xl
1971
+ */
1972
+ declare const progressTrackVariants: (props?: ({
1973
+ size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
1974
+ variant?: "gradient" | "default" | "indeterminate" | "thin" | "bubble" | "glow" | "striped" | null | undefined;
1975
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1976
+ type ProgressTrackVariantProps = VariantProps<typeof progressTrackVariants>;
1977
+ type ProgressColor = 'default' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
1978
+ type ProgressVariant = 'default' | 'gradient' | 'glow' | 'striped' | 'thin' | 'indeterminate' | 'bubble';
1979
+
1980
+ interface ProgressProps extends ComponentPropsWithoutRef<'div'>, ProgressTrackVariantProps {
1981
+ /**
1982
+ * Progress value 0-100.
1983
+ * Omit for indeterminate progress.
1984
+ */
1985
+ value?: number;
1986
+ /**
1987
+ * Visual variant.
1988
+ * - `default` → solid fill
1989
+ * - `gradient` → brand gradient fill
1990
+ * - `glow` → neon glow effect
1991
+ * - `striped` → animated diagonal stripes
1992
+ * - `thin` → 2px ultra-minimal line
1993
+ * - `indeterminate` → unknown progress, bouncing animation
1994
+ * - `bubble` → floating value tooltip on fill
1995
+ */
1996
+ variant?: ProgressVariant;
1997
+ /**
1998
+ * Color of the progress fill.
1999
+ */
2000
+ color?: ProgressColor;
2001
+ /**
2002
+ * Size (height) of the progress bar.
2003
+ */
2004
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
2005
+ /**
2006
+ * Label shown above the progress bar.
2007
+ */
2008
+ label?: string;
2009
+ /**
2010
+ * Value display format.
2011
+ * - `percent` → "65%"
2012
+ * - `fraction` → "6.5/10"
2013
+ * - `custom` → use valueLabel prop
2014
+ * - `none` → hide value
2015
+ */
2016
+ showValue?: 'percent' | 'fraction' | 'none';
2017
+ /**
2018
+ * Custom value label (used when showValue="fraction" or custom).
2019
+ */
2020
+ valueLabel?: string;
2021
+ /**
2022
+ * Helper text shown below the bar.
2023
+ */
2024
+ helperText?: string;
2025
+ /**
2026
+ * Maximum value (default: 100).
2027
+ */
2028
+ max?: number;
2029
+ }
2030
+ /**
2031
+ * Progress — a linear progress indicator.
2032
+ *
2033
+ * Features beyond M3:
2034
+ * - 7 variants: default, gradient, glow, striped, thin, indeterminate, bubble
2035
+ * - 6 colors
2036
+ * - 5 sizes
2037
+ * - label, value display, helper text
2038
+ * - bubble tooltip that tracks fill position
2039
+ * - full ARIA support
2040
+ *
2041
+ * @example
2042
+ * // Basic
2043
+ * <Progress value={65} />
2044
+ *
2045
+ * // Gradient with label
2046
+ * <Progress value={75} variant="gradient" label="Profile completion" showValue="percent" />
2047
+ *
2048
+ * // Indeterminate
2049
+ * <Progress variant="indeterminate" label="Loading..." />
2050
+ *
2051
+ * // Glow
2052
+ * <Progress value={85} variant="glow" color="success" />
2053
+ */
2054
+ declare const Progress: react.ForwardRefExoticComponent<ProgressProps & react.RefAttributes<HTMLDivElement>>;
2055
+ interface SegmentedProgressProps extends ComponentPropsWithoutRef<'div'> {
2056
+ /** Total number of segments. */
2057
+ total: number;
2058
+ /** Number of filled segments. */
2059
+ value: number;
2060
+ /** Color of filled segments. */
2061
+ color?: ProgressColor;
2062
+ /** Size of each segment. */
2063
+ size?: 'sm' | 'md' | 'lg';
2064
+ /** Label shown above. */
2065
+ label?: string;
2066
+ /** Custom color per segment index. */
2067
+ segmentColors?: Partial<Record<number, ProgressColor>>;
2068
+ }
2069
+ /**
2070
+ * SegmentedProgress — discrete steps shown as individual pills.
2071
+ *
2072
+ * @example
2073
+ * <SegmentedProgress total={5} value={3} label="Step 3 of 5" />
2074
+ */
2075
+ declare const SegmentedProgress: react.ForwardRefExoticComponent<SegmentedProgressProps & react.RefAttributes<HTMLDivElement>>;
2076
+ interface CircularProgressProps extends ComponentPropsWithoutRef<'div'> {
2077
+ /** Progress value 0-100. */
2078
+ value?: number;
2079
+ /** Size in pixels. */
2080
+ size?: number;
2081
+ /** Stroke width. */
2082
+ strokeWidth?: number;
2083
+ /** Color of the progress arc. */
2084
+ color?: ProgressColor;
2085
+ /** Whether to show value in center. */
2086
+ showValue?: boolean;
2087
+ /** Custom label inside circle. */
2088
+ centerLabel?: string;
2089
+ /** Use gradient stroke. */
2090
+ gradient?: boolean;
2091
+ }
2092
+ /**
2093
+ * CircularProgress — a circular progress indicator.
2094
+ *
2095
+ * @example
2096
+ * <CircularProgress value={75} showValue />
2097
+ * <CircularProgress value={85} color="success" size={80} />
2098
+ */
2099
+ declare const CircularProgress: react.ForwardRefExoticComponent<CircularProgressProps & react.RefAttributes<HTMLDivElement>>;
2100
+ interface MultiProgressSegment {
2101
+ value: number;
2102
+ color: ProgressColor;
2103
+ label?: string;
2104
+ }
2105
+ interface MultiProgressProps extends ComponentPropsWithoutRef<'div'> {
2106
+ /** Array of segments. Values should sum to 100. */
2107
+ segments: MultiProgressSegment[];
2108
+ /** Size of the bar. */
2109
+ size?: 'sm' | 'md' | 'lg';
2110
+ /** Show legend below. */
2111
+ showLegend?: boolean;
2112
+ /** Label shown above. */
2113
+ label?: string;
2114
+ }
2115
+ /**
2116
+ * MultiProgress — a stacked multi-color progress bar.
2117
+ *
2118
+ * @example
2119
+ * <MultiProgress
2120
+ * segments={[
2121
+ * { value: 45, color: 'default', label: 'Design' },
2122
+ * { value: 30, color: 'secondary', label: 'Dev' },
2123
+ * { value: 25, color: 'success', label: 'QA' },
2124
+ * ]}
2125
+ * showLegend
2126
+ * />
2127
+ */
2128
+ declare const MultiProgress: react.ForwardRefExoticComponent<MultiProgressProps & react.RefAttributes<HTMLDivElement>>;
2129
+
2130
+ type MenuTheme = 'light' | 'dark';
2131
+
2132
+ interface DropdownMenuProps {
2133
+ /**
2134
+ * The trigger element. Usually a Button or IconButton.
2135
+ */
2136
+ trigger: ReactNode;
2137
+ /**
2138
+ * Menu content — use MenuItem, MenuSeparator, MenuGroup etc.
2139
+ */
2140
+ children: ReactNode;
2141
+ /**
2142
+ * Visual theme.
2143
+ */
2144
+ theme?: MenuTheme;
2145
+ /**
2146
+ * Horizontal alignment of the menu relative to the trigger.
2147
+ */
2148
+ align?: 'start' | 'end' | 'center';
2149
+ /**
2150
+ * Which side of the trigger to open on.
2151
+ */
2152
+ side?: 'bottom' | 'top';
2153
+ /**
2154
+ * Whether the menu is open (controlled).
2155
+ */
2156
+ open?: boolean;
2157
+ /**
2158
+ * Callback when open state changes.
2159
+ */
2160
+ onOpenChange?: (open: boolean) => void;
2161
+ /**
2162
+ * Min width of the menu.
2163
+ */
2164
+ minWidth?: number;
2165
+ className?: string;
2166
+ }
2167
+ /**
2168
+ * DropdownMenu — a floating panel of actions triggered by a button.
2169
+ *
2170
+ * Features beyond M3:
2171
+ * - light and dark themes
2172
+ * - search filter inside menu
2173
+ * - checkbox and radio items
2174
+ * - submenu support
2175
+ * - header with user info
2176
+ * - emoji reactions
2177
+ * - color picker
2178
+ * - avatar team picker
2179
+ * - keyboard navigation (arrows, enter, escape, tab)
2180
+ * - portal rendering
2181
+ * - close on outside click and escape
2182
+ *
2183
+ * @example
2184
+ * <DropdownMenu trigger={<Button>Options</Button>}>
2185
+ * <MenuItem icon="edit" shortcut="⌘E">Edit</MenuItem>
2186
+ * <MenuItem icon="copy">Duplicate</MenuItem>
2187
+ * <MenuSeparator />
2188
+ * <MenuItem icon="trash" intent="danger">Delete</MenuItem>
2189
+ * </DropdownMenu>
2190
+ */
2191
+ declare function DropdownMenu({ trigger, children, theme, align, side, open: controlledOpen, onOpenChange, minWidth, className, }: DropdownMenuProps): react_jsx_runtime.JSX.Element;
2192
+ interface MenuItemProps extends ComponentPropsWithoutRef<'button'> {
2193
+ /** Leading icon. */
2194
+ icon?: IconName;
2195
+ /** Keyboard shortcut label. */
2196
+ shortcut?: string;
2197
+ /** Danger/destructive style. */
2198
+ intent?: 'default' | 'danger' | 'active';
2199
+ /** Badge count. */
2200
+ badge?: number | string;
2201
+ /** Description below the label. */
2202
+ description?: string;
2203
+ /** Whether to close menu on click. Default: true */
2204
+ closeOnClick?: boolean;
2205
+ /** Arrow indicating submenu. */
2206
+ hasSubmenu?: boolean;
2207
+ }
2208
+ /**
2209
+ * MenuItem — a single action in the dropdown menu.
2210
+ */
2211
+ declare const MenuItem: react.ForwardRefExoticComponent<MenuItemProps & react.RefAttributes<HTMLButtonElement>>;
2212
+ interface MenuCheckboxItemProps extends Omit<MenuItemProps, 'intent'> {
2213
+ checked?: boolean;
2214
+ onCheckedChange?: (checked: boolean) => void;
2215
+ }
2216
+ /**
2217
+ * MenuCheckboxItem — a toggleable checkbox item.
2218
+ */
2219
+ declare const MenuCheckboxItem: react.ForwardRefExoticComponent<MenuCheckboxItemProps & react.RefAttributes<HTMLButtonElement>>;
2220
+ interface MenuRadioItemProps extends Omit<MenuItemProps, 'intent'> {
2221
+ checked?: boolean;
2222
+ onSelect?: () => void;
2223
+ }
2224
+ /**
2225
+ * MenuRadioItem — a radio selection item.
2226
+ */
2227
+ declare const MenuRadioItem: react.ForwardRefExoticComponent<MenuRadioItemProps & react.RefAttributes<HTMLButtonElement>>;
2228
+ declare function MenuSeparator({ className }: {
2229
+ className?: string;
2230
+ }): react_jsx_runtime.JSX.Element;
2231
+ declare function MenuGroup({ label, className, children }: {
2232
+ label?: string;
2233
+ className?: string;
2234
+ children?: ReactNode;
2235
+ }): react_jsx_runtime.JSX.Element;
2236
+ interface MenuHeaderProps {
2237
+ name: string;
2238
+ email?: string;
2239
+ avatarSrc?: string;
2240
+ className?: string;
2241
+ }
2242
+ /**
2243
+ * MenuHeader — user info shown at the top of profile menus.
2244
+ */
2245
+ declare function MenuHeader({ name, email, avatarSrc, className }: MenuHeaderProps): react_jsx_runtime.JSX.Element;
2246
+ interface MenuSearchProps {
2247
+ value: string;
2248
+ onChange: (value: string) => void;
2249
+ placeholder?: string;
2250
+ className?: string;
2251
+ }
2252
+ /**
2253
+ * MenuSearch — a search input inside the menu.
2254
+ */
2255
+ declare function MenuSearch({ value, onChange, placeholder, className }: MenuSearchProps): react_jsx_runtime.JSX.Element;
2256
+ interface MenuAvatarItemProps extends Omit<MenuItemProps, 'icon'> {
2257
+ name: string;
2258
+ avatarSrc?: string;
2259
+ role?: string;
2260
+ selected?: boolean;
2261
+ }
2262
+ /**
2263
+ * MenuAvatarItem — a team member item with avatar.
2264
+ */
2265
+ declare const MenuAvatarItem: react.ForwardRefExoticComponent<MenuAvatarItemProps & react.RefAttributes<HTMLButtonElement>>;
2266
+ interface MenuColorPickerProps {
2267
+ colors?: string[];
2268
+ value?: string;
2269
+ onChange?: (color: string) => void;
2270
+ className?: string;
2271
+ }
2272
+ /**
2273
+ * MenuColorPicker — a color dot grid inside a menu.
2274
+ */
2275
+ declare function MenuColorPicker({ colors, value, onChange, className }: MenuColorPickerProps): react_jsx_runtime.JSX.Element;
2276
+ interface MenuEmojiReactionsProps {
2277
+ emojis?: string[];
2278
+ onReact?: (emoji: string) => void;
2279
+ className?: string;
2280
+ }
2281
+ /**
2282
+ * MenuEmojiReactions — a row of emoji reaction buttons.
2283
+ */
2284
+ declare function MenuEmojiReactions({ emojis, onReact, className }: MenuEmojiReactionsProps): react_jsx_runtime.JSX.Element;
2285
+ interface ContextMenuProps {
2286
+ children: ReactNode;
2287
+ menu: ReactNode;
2288
+ theme?: MenuTheme;
2289
+ }
2290
+ /**
2291
+ * ContextMenu — shows a menu on right-click.
2292
+ *
2293
+ * @example
2294
+ * <ContextMenu menu={<><MenuItem>Copy</MenuItem><MenuItem>Paste</MenuItem></>}>
2295
+ * <div>Right click me</div>
2296
+ * </ContextMenu>
2297
+ */
2298
+ declare function ContextMenu({ children, menu, theme }: ContextMenuProps): react_jsx_runtime.JSX.Element;
2299
+
2300
+ /**
2301
+ * Popover variants — CVA configuration.
2302
+ */
2303
+ declare const popoverVariants: (props?: ({
2304
+ size?: "sm" | "md" | "lg" | "auto" | null | undefined;
2305
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
2306
+ type PopoverVariantProps = VariantProps<typeof popoverVariants>;
2307
+ type PopoverSide = 'top' | 'bottom' | 'left' | 'right';
2308
+ type PopoverAlign = 'start' | 'center' | 'end';
2309
+
2310
+ interface PopoverProps extends PopoverVariantProps {
2311
+ /** Trigger element. */
2312
+ trigger: ReactNode;
2313
+ /** Popover content. */
2314
+ children: ReactNode;
2315
+ /** Which side to open on. */
2316
+ side?: PopoverSide;
2317
+ /** Alignment along the side. */
2318
+ align?: PopoverAlign;
2319
+ /** Show arrow indicator. */
2320
+ showArrow?: boolean;
2321
+ /** Controlled open state. */
2322
+ open?: boolean;
2323
+ /** Callback when open changes. */
2324
+ onOpenChange?: (open: boolean) => void;
2325
+ /** Close on outside click. Default: true */
2326
+ closeOnOutside?: boolean;
2327
+ /** Close on escape. Default: true */
2328
+ closeOnEscape?: boolean;
2329
+ /** Additional className for the panel. */
2330
+ className?: string;
2331
+ /** Offset from trigger in px. */
2332
+ offset?: number;
2333
+ }
2334
+ /**
2335
+ * Popover — a floating interactive panel anchored to a trigger.
2336
+ *
2337
+ * Unlike Tooltip (read-only) and Dropdown (list of actions),
2338
+ * Popover contains rich interactive content like forms, filters,
2339
+ * previews, and settings panels.
2340
+ *
2341
+ * Features:
2342
+ * - 4 sides: top, bottom, left, right
2343
+ * - 3 alignments: start, center, end
2344
+ * - optional arrow indicator
2345
+ * - close on outside click + escape
2346
+ * - portal rendering
2347
+ * - controlled + uncontrolled
2348
+ *
2349
+ * @example
2350
+ * <Popover trigger={<Button>Open</Button>}>
2351
+ * <p>Popover content here</p>
2352
+ * </Popover>
2353
+ */
2354
+ declare function Popover({ trigger, children, side, align, showArrow, open: controlledOpen, onOpenChange, closeOnOutside, closeOnEscape, size, offset, className, }: PopoverProps): react_jsx_runtime.JSX.Element;
2355
+ interface PopoverHeaderProps extends ComponentPropsWithoutRef<'div'> {
2356
+ title: string;
2357
+ description?: string;
2358
+ onClose?: () => void;
2359
+ }
2360
+ declare function PopoverHeader({ title, description, onClose, className, ...props }: PopoverHeaderProps): react_jsx_runtime.JSX.Element;
2361
+ declare function PopoverFooter({ className, children, ...props }: ComponentPropsWithoutRef<'div'>): react_jsx_runtime.JSX.Element;
2362
+
2363
+ type CalendarVariant = 'default' | 'dark' | 'gradient' | 'minimal';
2364
+ interface CalendarProps {
2365
+ value?: Date | null;
2366
+ rangeValue?: [Date | null, Date | null];
2367
+ onChange?: (date: Date) => void;
2368
+ onRangeChange?: (range: [Date | null, Date | null]) => void;
2369
+ mode?: 'single' | 'range';
2370
+ minDate?: Date;
2371
+ maxDate?: Date;
2372
+ disabledDates?: Date[];
2373
+ disableWeekends?: boolean;
2374
+ showTime?: boolean;
2375
+ /** Controlled hour value (lifted from parent). */
2376
+ timeHour?: string;
2377
+ /** Controlled minute value (lifted from parent). */
2378
+ timeMin?: string;
2379
+ /** Controlled AM/PM value (lifted from parent). */
2380
+ timeAmPm?: 'AM' | 'PM';
2381
+ /** Called when user changes time values. */
2382
+ onTimeChange?: (time: {
2383
+ hour: string;
2384
+ min: string;
2385
+ ampm: 'AM' | 'PM';
2386
+ }) => void;
2387
+ variant?: CalendarVariant;
2388
+ presets?: boolean;
2389
+ /** For dual month — which month offset to show */
2390
+ monthOffset?: number;
2391
+ /** For dual month — shared nav handler */
2392
+ onPrevMonth?: () => void;
2393
+ onNextMonth?: () => void;
2394
+ showPrev?: boolean;
2395
+ showNext?: boolean;
2396
+ className?: string;
2397
+ }
2398
+ declare function Calendar({ value, rangeValue, onChange, onRangeChange, mode, minDate, maxDate, disabledDates, disableWeekends, showTime, timeHour: timeHourProp, timeMin: timeMinProp, timeAmPm: timeAmPmProp, onTimeChange, variant, presets, monthOffset, onPrevMonth, onNextMonth, showPrev, showNext, className, }: CalendarProps): react_jsx_runtime.JSX.Element;
2399
+ interface DatePickerProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {
2400
+ value?: Date | null;
2401
+ onChange?: (date: Date | null) => void;
2402
+ placeholder?: string;
2403
+ format?: string;
2404
+ showTime?: boolean;
2405
+ minDate?: Date;
2406
+ maxDate?: Date;
2407
+ disableWeekends?: boolean;
2408
+ disabled?: boolean;
2409
+ clearable?: boolean;
2410
+ label?: string;
2411
+ error?: boolean;
2412
+ errorText?: string;
2413
+ helperText?: string;
2414
+ size?: 'sm' | 'md' | 'lg';
2415
+ variant?: CalendarVariant;
2416
+ presets?: boolean;
2417
+ }
2418
+ declare const DatePicker: react.ForwardRefExoticComponent<DatePickerProps & react.RefAttributes<HTMLDivElement>>;
2419
+ interface DateRangePickerProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {
2420
+ value?: [Date | null, Date | null];
2421
+ onChange?: (range: [Date | null, Date | null]) => void;
2422
+ placeholder?: [string, string];
2423
+ label?: string;
2424
+ disabled?: boolean;
2425
+ minDate?: Date;
2426
+ maxDate?: Date;
2427
+ disableWeekends?: boolean;
2428
+ size?: 'sm' | 'md' | 'lg';
2429
+ helperText?: string;
2430
+ variant?: CalendarVariant;
2431
+ presets?: boolean;
2432
+ dualMonth?: boolean;
2433
+ }
2434
+ declare const DateRangePicker: react.ForwardRefExoticComponent<DateRangePickerProps & react.RefAttributes<HTMLDivElement>>;
2435
+
2436
+ type SliderColor = 'default' | 'secondary' | 'success' | 'warning' | 'error';
2437
+ type SliderSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
2438
+ type SliderThumbStyle = 'default' | 'pill' | 'square' | 'bubble';
2439
+ type SliderTrackStyle = 'default' | 'glow' | 'gradient' | 'spectrum';
2440
+
2441
+ interface SliderProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {
2442
+ /** Current value (single). */
2443
+ value?: number;
2444
+ /** Default value for uncontrolled. */
2445
+ defaultValue?: number;
2446
+ /** Callback when value changes. */
2447
+ onChange?: (value: number) => void;
2448
+ /** Minimum value. */
2449
+ min?: number;
2450
+ /** Maximum value. */
2451
+ max?: number;
2452
+ /** Step increment. */
2453
+ step?: number;
2454
+ /** Color of the track fill and thumb. */
2455
+ color?: SliderColor;
2456
+ /** Size (track height + thumb size). */
2457
+ size?: SliderSize;
2458
+ /** Thumb visual style. */
2459
+ thumbStyle?: SliderThumbStyle;
2460
+ /** Track visual style. */
2461
+ trackStyle?: SliderTrackStyle;
2462
+ /** Show tooltip above thumb on hover/drag. */
2463
+ showTooltip?: boolean;
2464
+ /** Show step marks on track. */
2465
+ showMarks?: boolean;
2466
+ /** Labels shown below the track. */
2467
+ marks?: Array<{
2468
+ value: number;
2469
+ label?: string;
2470
+ }>;
2471
+ /** Show min/max labels. */
2472
+ showLabels?: boolean;
2473
+ /** Show numeric input synced to slider. */
2474
+ showInput?: boolean;
2475
+ /** Disabled state. */
2476
+ disabled?: boolean;
2477
+ /** Orientation. */
2478
+ orientation?: 'horizontal' | 'vertical';
2479
+ /** Label shown above. */
2480
+ label?: string;
2481
+ /** Format the displayed value. */
2482
+ formatValue?: (value: number) => string;
2483
+ /** Spectrum colors for spectrum track style. */
2484
+ spectrumColors?: string[];
2485
+ }
2486
+ /**
2487
+ * Slider — a draggable range input.
2488
+ *
2489
+ * Features:
2490
+ * - 4 thumb styles: default, pill, square, bubble
2491
+ * - 4 track styles: default, glow, gradient, spectrum
2492
+ * - 6 colors
2493
+ * - 5 sizes
2494
+ * - tooltip on hover/drag
2495
+ * - step marks
2496
+ * - custom labels
2497
+ * - number input sync
2498
+ * - vertical orientation
2499
+ * - keyboard navigation
2500
+ * - touch support
2501
+ *
2502
+ * @example
2503
+ * <Slider value={volume} onChange={setVolume} label="Volume" />
2504
+ * <Slider thumbStyle="pill" color="secondary" showTooltip />
2505
+ * <Slider trackStyle="glow" color="success" showMarks step={10} />
2506
+ * <Slider trackStyle="spectrum" />
2507
+ */
2508
+ declare const Slider: react.ForwardRefExoticComponent<SliderProps & react.RefAttributes<HTMLDivElement>>;
2509
+ interface RangeSliderProps extends Omit<SliderProps, 'value' | 'defaultValue' | 'onChange'> {
2510
+ /** [min, max] selected range. */
2511
+ value?: [number, number];
2512
+ /** Default range. */
2513
+ defaultValue?: [number, number];
2514
+ /** Callback when range changes. */
2515
+ onChange?: (value: [number, number]) => void;
2516
+ }
2517
+ /**
2518
+ * RangeSlider — two thumbs for selecting a min/max range.
2519
+ *
2520
+ * @example
2521
+ * <RangeSlider
2522
+ * value={[25, 75]}
2523
+ * onChange={setRange}
2524
+ * label="Price range"
2525
+ * formatValue={v => `$${v}`}
2526
+ * />
2527
+ */
2528
+ declare const RangeSlider: react.ForwardRefExoticComponent<RangeSliderProps & react.RefAttributes<HTMLDivElement>>;
2529
+
2530
+ type BreadcrumbVariant = 'default' | 'pill' | 'outlined' | 'dark' | 'floating' | 'gradient' | 'underline' | 'arrow' | 'glass' | 'highlight' | 'numbered';
2531
+ type BreadcrumbSeparator = 'chevron' | 'slash' | 'dot' | 'arrow';
2532
+
2533
+ interface BreadcrumbItem {
2534
+ /** Display label. */
2535
+ label: string;
2536
+ /** URL or href. */
2537
+ href?: string;
2538
+ /** Leading icon. */
2539
+ icon?: IconName;
2540
+ /** Whether this is the current/active page. */
2541
+ active?: boolean;
2542
+ /** Click handler. */
2543
+ onClick?: () => void;
2544
+ /** Step number (for numbered variant). */
2545
+ step?: number;
2546
+ /** Step status (for numbered variant). */
2547
+ stepStatus?: 'done' | 'current' | 'pending';
2548
+ }
2549
+ interface BreadcrumbProps extends ComponentPropsWithoutRef<'nav'> {
2550
+ /** Array of breadcrumb items. */
2551
+ items: BreadcrumbItem[];
2552
+ /**
2553
+ * Visual variant.
2554
+ * - `default` → plain text with separator
2555
+ * - `pill` → each item is a pill badge
2556
+ * - `outlined` → segmented outlined container
2557
+ * - `dark` → dark background
2558
+ * - `floating` → elevated white pill container
2559
+ * - `gradient` → gradient text on active item
2560
+ * - `underline` → underline on active item
2561
+ * - `arrow` → chevron-shaped arrow badges
2562
+ * - `glass` → frosted glass (use on colored backgrounds)
2563
+ * - `highlight` → active item wrapped in pill
2564
+ * - `numbered` → step numbers with done/current/pending
2565
+ */
2566
+ variant?: BreadcrumbVariant;
2567
+ /**
2568
+ * Separator style.
2569
+ * - `chevron` → › (default)
2570
+ * - `slash` → /
2571
+ * - `dot` → •
2572
+ * - `arrow` → hidden (arrow variant uses clip-path)
2573
+ */
2574
+ separator?: BreadcrumbSeparator;
2575
+ /**
2576
+ * Custom separator element.
2577
+ */
2578
+ customSeparator?: ReactNode;
2579
+ /**
2580
+ * Maximum items to show before collapsing.
2581
+ * Items in the middle are collapsed into ···
2582
+ * 0 = show all (default)
2583
+ */
2584
+ maxItems?: number;
2585
+ /**
2586
+ * Show home icon on first item.
2587
+ */
2588
+ showHomeIcon?: boolean;
2589
+ }
2590
+ /**
2591
+ * Breadcrumb — hierarchical navigation trail.
2592
+ *
2593
+ * Features beyond M3:
2594
+ * - 11 variants: default, pill, outlined, dark, floating, gradient,
2595
+ * underline, arrow, glass, highlight, numbered
2596
+ * - 4 separator styles: chevron, slash, dot, arrow
2597
+ * - icons on items
2598
+ * - collapsible middle items with ellipsis
2599
+ * - home icon on first item
2600
+ * - step status for numbered variant
2601
+ * - full ARIA accessibility
2602
+ *
2603
+ * @example
2604
+ * <Breadcrumb
2605
+ * items={[
2606
+ * { label: 'Home', href: '/' },
2607
+ * { label: 'Settings', href: '/settings' },
2608
+ * { label: 'Profile', active: true },
2609
+ * ]}
2610
+ * />
2611
+ *
2612
+ * // Glass on dark background
2613
+ * <div className="bg-gradient-to-r from-primary to-secondary p-6">
2614
+ * <Breadcrumb items={items} variant="glass" />
2615
+ * </div>
2616
+ */
2617
+ declare const Breadcrumb: react.ForwardRefExoticComponent<BreadcrumbProps & react.RefAttributes<HTMLElement>>;
2618
+
2619
+ type PaginationVariant = 'default' | 'outlined' | 'pill' | 'simple' | 'compact' | 'underline' | 'floating' | 'dark' | 'glass-card' | 'vercel' | 'notion' | 'linear' | 'github' | 'stripe' | 'dots' | 'table' | 'segmented';
2620
+
2621
+ interface PaginationProps extends ComponentPropsWithoutRef<'nav'> {
2622
+ /** Current page (1-indexed). */
2623
+ page: number;
2624
+ /** Total number of pages. */
2625
+ totalPages: number;
2626
+ /** Callback when page changes. */
2627
+ onPageChange: (page: number) => void;
2628
+ /**
2629
+ * Visual variant.
2630
+ */
2631
+ variant?: PaginationVariant;
2632
+ /**
2633
+ * Number of sibling pages shown around current.
2634
+ * @default 1
2635
+ */
2636
+ siblings?: number;
2637
+ /** Show first/last page buttons. */
2638
+ showFirstLast?: boolean;
2639
+ /** Show prev/next buttons. */
2640
+ showPrevNext?: boolean;
2641
+ /** Show page jump input. */
2642
+ showJump?: boolean;
2643
+ /**
2644
+ * For table variant — rows per page options.
2645
+ */
2646
+ rowsPerPage?: number;
2647
+ rowsPerPageOptions?: number[];
2648
+ onRowsPerPageChange?: (rows: number) => void;
2649
+ totalItems?: number;
2650
+ /** Loading state — shows skeleton. */
2651
+ loading?: boolean;
2652
+ /** Size. */
2653
+ size?: 'sm' | 'md' | 'lg';
2654
+ }
2655
+ /**
2656
+ * Pagination — page navigation component.
2657
+ *
2658
+ * Features beyond M3:
2659
+ * - 17 variants: default, outlined, pill, simple, compact, underline,
2660
+ * floating, dark, glass-card, vercel, notion, linear,
2661
+ * github, stripe, dots, table, segmented
2662
+ * - ellipsis for large page counts
2663
+ * - first/last page buttons
2664
+ * - page jump input
2665
+ * - table variant with rows per page
2666
+ * - loading skeleton state
2667
+ * - keyboard accessible
2668
+ *
2669
+ * @example
2670
+ * <Pagination page={3} totalPages={10} onPageChange={setPage} />
2671
+ * <Pagination page={3} totalPages={10} onPageChange={setPage} variant="vercel" />
2672
+ * <Pagination page={3} totalPages={10} onPageChange={setPage} variant="dots" />
2673
+ */
2674
+ declare const Pagination: react.ForwardRefExoticComponent<PaginationProps & react.RefAttributes<HTMLElement>>;
2675
+
2676
+ interface NavItem {
2677
+ id: string;
2678
+ label: string;
2679
+ icon?: IconName;
2680
+ badge?: number | string;
2681
+ href?: string;
2682
+ onClick?: () => void;
2683
+ disabled?: boolean;
2684
+ children?: NavItem[];
2685
+ }
2686
+ interface NavSection {
2687
+ label?: string;
2688
+ items: NavItem[];
2689
+ }
2690
+ type NavbarVariant = 'default' | 'saas' | 'vercel' | 'notion' | 'linear' | 'stripe' | 'glass' | 'dark' | 'floating' | 'centered' | 'frosted' | 'pill' | 'gradient' | 'outlined' | 'two-row' | 'command';
2691
+ interface NavbarProps extends ComponentPropsWithoutRef<'nav'> {
2692
+ /**
2693
+ * Visual variant.
2694
+ */
2695
+ variant?: NavbarVariant;
2696
+ /**
2697
+ * Nav items shown in the center/main area.
2698
+ */
2699
+ items?: NavItem[];
2700
+ /**
2701
+ * Active item id.
2702
+ */
2703
+ activeId?: string;
2704
+ /**
2705
+ * Callback when nav item is clicked.
2706
+ */
2707
+ onItemClick?: (item: NavItem) => void;
2708
+ /**
2709
+ * Logo/brand element.
2710
+ */
2711
+ logo?: ReactNode;
2712
+ /**
2713
+ * Brand name text (if no logo element).
2714
+ */
2715
+ brandName?: string;
2716
+ /**
2717
+ * Right side actions (buttons, avatar, search, etc).
2718
+ */
2719
+ actions?: ReactNode;
2720
+ /**
2721
+ * Sub-tabs for two-row variant.
2722
+ */
2723
+ subItems?: NavItem[];
2724
+ /**
2725
+ * Active sub-item id.
2726
+ */
2727
+ activeSubId?: string;
2728
+ /**
2729
+ * Title for two-row/notion variant.
2730
+ */
2731
+ title?: string;
2732
+ /**
2733
+ * Show search trigger with ⌘K for command variant.
2734
+ */
2735
+ showSearch?: boolean;
2736
+ /**
2737
+ * Callback for search click.
2738
+ */
2739
+ onSearchClick?: () => void;
2740
+ /**
2741
+ * For sidebar type navbars.
2742
+ */
2743
+ sections?: NavSection[];
2744
+ /**
2745
+ * Sidebar collapsed state.
2746
+ */
2747
+ collapsed?: boolean;
2748
+ /**
2749
+ * Workspace name for linear variant.
2750
+ */
2751
+ workspaceName?: string;
2752
+ /**
2753
+ * Workspace icon/initials.
2754
+ */
2755
+ workspaceIcon?: string;
2756
+ /**
2757
+ * User info for profile area.
2758
+ */
2759
+ user?: {
2760
+ name: string;
2761
+ email?: string;
2762
+ avatarSrc?: string;
2763
+ };
2764
+ }
2765
+ /**
2766
+ * Navbar — a flexible navigation component for web apps.
2767
+ *
2768
+ * 16 variants covering every real-world web use case:
2769
+ * default, saas, vercel, notion, linear, stripe, glass, dark,
2770
+ * floating, centered, frosted, pill, gradient, outlined, two-row, command
2771
+ *
2772
+ * Also includes Sidebar and IconSidebar for dashboard layouts.
2773
+ */
2774
+ declare const Navbar: react.ForwardRefExoticComponent<NavbarProps & react.RefAttributes<HTMLElement>>;
2775
+ interface SidebarProps {
2776
+ sections?: NavSection[];
2777
+ activeId?: string;
2778
+ onItemClick?: (item: NavItem) => void;
2779
+ collapsed?: boolean;
2780
+ brandName?: string;
2781
+ logo?: ReactNode;
2782
+ user?: {
2783
+ name: string;
2784
+ email?: string;
2785
+ avatarSrc?: string;
2786
+ };
2787
+ className?: string;
2788
+ }
2789
+ /**
2790
+ * Sidebar — a vertical navigation panel for dashboards.
2791
+ */
2792
+ declare function Sidebar({ sections, activeId, onItemClick, collapsed, brandName, logo, user, className, }: SidebarProps): react_jsx_runtime.JSX.Element;
2793
+
2794
+ type StepStatus = 'done' | 'active' | 'pending' | 'error';
2795
+ interface StepItem {
2796
+ id: string;
2797
+ label: string;
2798
+ description?: string;
2799
+ sublabel?: string;
2800
+ icon?: IconName;
2801
+ status?: StepStatus;
2802
+ optional?: boolean;
2803
+ content?: ReactNode;
2804
+ }
2805
+ type StepperVariant = 'default' | 'pill' | 'dot' | 'badge' | 'timeline' | 'gradient' | 'checklist' | 'card' | 'progress' | 'icon';
2806
+ interface StepperProps extends ComponentPropsWithoutRef<'div'> {
2807
+ /** Array of steps. */
2808
+ steps: StepItem[];
2809
+ /** Index of the active step (0-based). */
2810
+ activeStep: number;
2811
+ /** Callback when a step is clicked. */
2812
+ onStepClick?: (index: number, step: StepItem) => void;
2813
+ /** Visual variant. */
2814
+ variant?: StepperVariant;
2815
+ /** Orientation. */
2816
+ orientation?: 'horizontal' | 'vertical';
2817
+ /** Allow clicking on completed steps to go back. */
2818
+ clickable?: boolean;
2819
+ /** Color scheme. */
2820
+ color?: 'default' | 'success' | 'secondary';
2821
+ /** Show step content below (for horizontal) or beside (for vertical). */
2822
+ showContent?: boolean;
2823
+ }
2824
+ /**
2825
+ * Stepper — a multi-step progress indicator.
2826
+ *
2827
+ * Features beyond M3:
2828
+ * - 10 variants: default, pill, dot, badge, timeline, gradient,
2829
+ * checklist, card, progress, icon
2830
+ * - horizontal and vertical orientations
2831
+ * - clickable steps (navigate back)
2832
+ * - error state per step
2833
+ * - optional step labels
2834
+ * - description/sublabel on steps
2835
+ * - content panel
2836
+ *
2837
+ * @example
2838
+ * <Stepper steps={steps} activeStep={2} />
2839
+ * <Stepper steps={steps} activeStep={1} variant="timeline" orientation="vertical" />
2840
+ * <Stepper steps={steps} activeStep={2} variant="gradient" />
2841
+ */
2842
+ declare const Stepper: react.ForwardRefExoticComponent<StepperProps & react.RefAttributes<HTMLDivElement>>;
2843
+
2844
+ type DividerStyle = 'solid' | 'dashed' | 'dotted' | 'thick' | 'gradient' | 'gradient-fade' | 'double';
2845
+ type DividerColor = 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error';
2846
+ type DividerOrientation = 'horizontal' | 'vertical';
2847
+ type DividerLabelAlign = 'left' | 'center' | 'right';
2848
+
2849
+ interface DividerProps extends ComponentPropsWithoutRef<'div'> {
2850
+ /**
2851
+ * Line style.
2852
+ * - `solid` → plain line (default)
2853
+ * - `dashed` → dashed line
2854
+ * - `dotted` → dotted line
2855
+ * - `thick` → 2px thick line
2856
+ * - `gradient` → colored gradient line
2857
+ * - `gradient-fade` → fades to transparent at edges
2858
+ * - `double` → two parallel lines
2859
+ */
2860
+ lineStyle?: DividerStyle;
2861
+ /**
2862
+ * Color of the line.
2863
+ */
2864
+ color?: DividerColor;
2865
+ /**
2866
+ * Orientation.
2867
+ * - `horizontal` → horizontal line (default)
2868
+ * - `vertical` → vertical line for inline use
2869
+ */
2870
+ orientation?: DividerOrientation;
2871
+ /**
2872
+ * Label shown in the middle (or left/right) of the divider.
2873
+ */
2874
+ label?: ReactNode;
2875
+ /**
2876
+ * Label alignment.
2877
+ * @default 'center'
2878
+ */
2879
+ labelAlign?: DividerLabelAlign;
2880
+ /**
2881
+ * Icon shown centered in the divider.
2882
+ */
2883
+ icon?: IconName;
2884
+ /**
2885
+ * Inset from left (for list separators).
2886
+ * E.g. inset={48} adds 48px left margin.
2887
+ */
2888
+ inset?: number;
2889
+ /**
2890
+ * Show as a section title divider — label above the line.
2891
+ */
2892
+ sectionTitle?: boolean;
2893
+ /**
2894
+ * Show as a chat date badge style.
2895
+ */
2896
+ chatDate?: boolean;
2897
+ /**
2898
+ * Bold section break style.
2899
+ */
2900
+ boldBreak?: boolean;
2901
+ /**
2902
+ * Decorative spacing dots style (vertical).
2903
+ */
2904
+ spacingDots?: boolean;
2905
+ /**
2906
+ * Number of decorative dots for spacingDots variant.
2907
+ * @default 1
2908
+ */
2909
+ dots?: number;
2910
+ }
2911
+ /**
2912
+ * Divider — a line that separates content sections.
2913
+ *
2914
+ * Features beyond M3:
2915
+ * - 7 line styles: solid, dashed, dotted, thick, gradient, gradient-fade, double
2916
+ * - 6 colors: default, primary, secondary, success, warning, error
2917
+ * - horizontal and vertical orientations
2918
+ * - label with left/center/right alignment
2919
+ * - icon centered in divider
2920
+ * - inset for list separators
2921
+ * - section title (label above line)
2922
+ * - chat date badge style
2923
+ * - bold section break
2924
+ * - decorative spacing dots
2925
+ *
2926
+ * @example
2927
+ * // Basic
2928
+ * <Divider />
2929
+ *
2930
+ * // With label
2931
+ * <Divider label="OR" />
2932
+ * <Divider label="Today" chatDate />
2933
+ *
2934
+ * // Styled
2935
+ * <Divider lineStyle="dashed" />
2936
+ * <Divider lineStyle="gradient" color="primary" />
2937
+ *
2938
+ * // Vertical
2939
+ * <div className="flex h-8 items-center gap-3">
2940
+ * <span>Home</span>
2941
+ * <Divider orientation="vertical" />
2942
+ * <span>About</span>
2943
+ * </div>
2944
+ *
2945
+ * // Inset (list separator)
2946
+ * <Divider inset={48} />
2947
+ *
2948
+ * // Section title
2949
+ * <Divider label="Personal information" sectionTitle />
2950
+ *
2951
+ * // Bold break
2952
+ * <Divider label="Chapter 1" boldBreak />
2953
+ */
2954
+ declare const Divider: react.ForwardRefExoticComponent<DividerProps & react.RefAttributes<HTMLDivElement>>;
2955
+
2956
+ export { Accordion, type AccordionProps, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, Badge, type BadgeProps, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Button, type ButtonProps, Calendar, type CalendarProps, Card, CardBody, CardFooter, CardHeader, CardMedia, type CardProps, Checkbox, CheckboxGroup, type CheckboxGroupProps, type CheckboxProps, Chip, ChipGroup, type ChipGroupProps, type ChipProps, CircularProgress, ContextMenu, DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps, Dialog, type DialogProps, Divider, type DividerProps, DropdownMenu, type DropdownMenuProps, Icon, IconButton, type IconButtonProps, type IconName, Input, type InputProps, MenuAvatarItem, MenuCheckboxItem, MenuColorPicker, MenuEmojiReactions, MenuGroup, MenuHeader, MenuItem, type MenuItemProps, MenuRadioItem, MenuSearch, MenuSeparator, MultiProgress, type NavItem, type NavSection, Navbar, type NavbarProps, type NavbarVariant, Pagination, type PaginationProps, Popover, PopoverFooter, PopoverHeader, type PopoverProps, Progress, type ProgressProps, Radio, RadioGroup, type RadioGroupProps, type RadioProps, RangeSlider, type RangeSliderProps, SegmentedProgress, Select, type SelectProps, Sidebar, type SidebarProps, Skeleton, Slider, type SliderProps, Spinner, type SpinnerProps, type StepItem, type StepStatus, StepTabs, Stepper, type StepperProps, type StepperVariant, Switch, type SwitchProps, Tabs, type TabsProps, type ToastAction, type ToastData, type ToastOptions, type ToastPosition, type ToastType, type ToastVariantProps, Toaster, type ToasterProps, Tooltip, type TooltipProps, cn, toast, toastVariants };