corekit-components 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,842 @@
1
+ import { ClassProp } from 'class-variance-authority/types';
2
+ import { ComponentPropsWithRef } from 'react';
3
+ import { ElementType } from 'react';
4
+ import { ForwardRefExoticComponent } from 'react';
5
+ import { JSX as JSX_2 } from 'react/jsx-runtime';
6
+ import { ReactElement } from 'react';
7
+ import { ReactNode } from 'react';
8
+ import { ReactPortal } from 'react';
9
+ import { RefAttributes } from 'react';
10
+ import { VariantProps } from 'class-variance-authority';
11
+
12
+ export declare const Accordion: ForwardRefExoticComponent<AccordionProps & RefAttributes<HTMLDivElement>>;
13
+
14
+ export declare const AccordionItem: ForwardRefExoticComponent<AccordionItemProps & RefAttributes<HTMLDivElement>>;
15
+
16
+ export declare interface AccordionItemProps {
17
+ /** Unique key for this item — used to track open/closed state */
18
+ itemKey: string;
19
+ /** The trigger/header content */
20
+ trigger: ReactNode;
21
+ /** The collapsible body content */
22
+ children: ReactNode;
23
+ /** Whether this item is disabled */
24
+ disabled?: boolean;
25
+ /** Additional class names for the item wrapper */
26
+ className?: string;
27
+ }
28
+
29
+ export declare interface AccordionProps {
30
+ /** Accordion items */
31
+ children: ReactNode;
32
+ /** Allow multiple items to be open at the same time */
33
+ multiple?: boolean;
34
+ /** Keys of items that are open by default (uncontrolled) */
35
+ defaultOpenKeys?: string[];
36
+ /** Keys of items that are open (controlled) */
37
+ openKeys?: string[];
38
+ /** Callback when open items change */
39
+ onOpenKeysChange?: (keys: string[]) => void;
40
+ /** Visual variant */
41
+ variant?: "default" | "bordered" | "separated";
42
+ /** Size variant */
43
+ size?: "sm" | "md" | "lg";
44
+ /** Additional class names for the accordion container */
45
+ className?: string;
46
+ }
47
+
48
+ export declare const accordionVariants: (props?: ({
49
+ variant?: "default" | "bordered" | "separated" | null | undefined;
50
+ } & ClassProp) | undefined) => string;
51
+
52
+ export declare const Autocomplete: ForwardRefExoticComponent<AutocompleteProps & RefAttributes<HTMLInputElement>>;
53
+
54
+ export declare interface AutocompleteOption {
55
+ /** Unique value for the option */
56
+ value: string;
57
+ /** Display label for the option */
58
+ label: string;
59
+ /** Optional logo/icon rendered before the label */
60
+ logo?: ReactNode;
61
+ /** Whether the option is disabled */
62
+ disabled?: boolean;
63
+ }
64
+
65
+ export declare interface AutocompleteProps extends Omit<ComponentPropsWithRef<"input">, "ref" | "value" | "onChange" | "onSelect" | "size"> {
66
+ /** Size variant */
67
+ size?: "sm" | "md" | "lg";
68
+ /** Visual variant — resolved internally from error state */
69
+ /** List of options to display in the dropdown */
70
+ options: AutocompleteOption[];
71
+ /** Controlled input value */
72
+ value?: string;
73
+ /** Callback when input value changes */
74
+ onChange?: (value: string) => void;
75
+ /** Callback when an option is selected */
76
+ onSelect?: (option: AutocompleteOption) => void;
77
+ /** Label text rendered above the input */
78
+ label?: string;
79
+ /** Error message to display below the input */
80
+ error?: string;
81
+ /** Placeholder text for the input */
82
+ placeholder?: string;
83
+ /** Unique id linking the label and input */
84
+ id?: string;
85
+ /** Whether the dropdown is open (controlled) */
86
+ open?: boolean;
87
+ /** Callback when open state changes */
88
+ onOpenChange?: (open: boolean) => void;
89
+ /** Text to show when no options match */
90
+ emptyMessage?: string;
91
+ }
92
+
93
+ export declare const autocompleteVariants: (props?: ({
94
+ size?: "sm" | "md" | "lg" | null | undefined;
95
+ variant?: "default" | "error" | null | undefined;
96
+ } & ClassProp) | undefined) => string;
97
+
98
+ export declare const Avatar: ForwardRefExoticComponent<AvatarProps & RefAttributes<HTMLSpanElement>>;
99
+
100
+ export declare const AvatarGroup: ForwardRefExoticComponent<AvatarGroupProps & RefAttributes<HTMLDivElement>>;
101
+
102
+ export declare interface AvatarGroupProps {
103
+ /** Avatar elements to render */
104
+ children: ReactNode;
105
+ /** Maximum number of avatars to show before +N overflow */
106
+ max?: number;
107
+ /** Size applied to all avatars in the group */
108
+ size?: AvatarProps["size"];
109
+ /** Additional class names */
110
+ className?: string;
111
+ }
112
+
113
+ export declare interface AvatarProps extends Omit<ComponentPropsWithRef<"span">, "ref" | "children"> {
114
+ /** Image source URL */
115
+ src?: string;
116
+ /** Alt text for the image */
117
+ alt?: string;
118
+ /** Fallback text shown when there is no image (typically initials) */
119
+ fallback?: string;
120
+ /** Custom fallback icon or element */
121
+ fallbackIcon?: ReactNode;
122
+ /** Size variant */
123
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
124
+ /** Shape variant */
125
+ shape?: "circle" | "square";
126
+ /** Visual colour variant for the fallback background */
127
+ color?: "primary" | "secondary" | "muted" | "gray";
128
+ /** Whether to show a status indicator dot */
129
+ status?: "online" | "offline" | "away" | "busy";
130
+ /** Position of the status indicator */
131
+ statusPosition?: "top-right" | "bottom-right";
132
+ }
133
+
134
+ export declare const avatarVariants: (props?: ({
135
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | null | undefined;
136
+ shape?: "circle" | "square" | null | undefined;
137
+ color?: "primary" | "secondary" | "muted" | "gray" | null | undefined;
138
+ } & ClassProp) | undefined) => string;
139
+
140
+ export declare const Box: BoxComponent;
141
+
142
+ export declare type BoxComponent = <T extends ElementType = "div">(props: BoxProps<T>) => ReactElement | null;
143
+
144
+ export declare type BoxProps<T extends ElementType = "div"> = PolymorphicProps<T>;
145
+
146
+ export declare const Button: ForwardRefExoticComponent<ButtonProps & RefAttributes<HTMLButtonElement>>;
147
+
148
+ export declare interface ButtonProps extends Omit<ComponentPropsWithRef<"button">, "ref">, ButtonVariantProps {
149
+ /** Accessible label for the button when content is not descriptive */
150
+ "aria-label"?: string;
151
+ }
152
+
153
+ export declare type ButtonVariantProps = VariantProps<typeof buttonVariants>;
154
+
155
+ export declare const buttonVariants: (props?: ({
156
+ variant?: "primary" | "secondary" | "outline" | "ghost" | null | undefined;
157
+ size?: "sm" | "md" | "lg" | null | undefined;
158
+ } & ClassProp) | undefined) => string;
159
+
160
+ export declare const Card: ForwardRefExoticComponent<CardProps & RefAttributes<HTMLDivElement>>;
161
+
162
+ export declare const CardContent: ForwardRefExoticComponent<CardContentProps & RefAttributes<HTMLDivElement>>;
163
+
164
+ export declare interface CardContentProps extends Omit<ComponentPropsWithRef<"div">, "ref"> {
165
+ }
166
+
167
+ export declare const CardFooter: ForwardRefExoticComponent<CardFooterProps & RefAttributes<HTMLDivElement>>;
168
+
169
+ export declare interface CardFooterProps extends Omit<ComponentPropsWithRef<"div">, "ref"> {
170
+ }
171
+
172
+ export declare const CardHeader: ForwardRefExoticComponent<CardHeaderProps & RefAttributes<HTMLDivElement>>;
173
+
174
+ export declare interface CardHeaderProps extends Omit<ComponentPropsWithRef<"div">, "ref"> {
175
+ }
176
+
177
+ export declare interface CardProps extends Omit<ComponentPropsWithRef<"div">, "ref"> {
178
+ }
179
+
180
+ export declare const Checkbox: ForwardRefExoticComponent<CheckboxProps & RefAttributes<HTMLInputElement>>;
181
+
182
+ export declare interface CheckboxProps extends Omit<ComponentPropsWithRef<"input">, "ref" | "type" | "size"> {
183
+ /** Label text rendered next to the checkbox */
184
+ label?: ReactNode;
185
+ /** Description text rendered below the label */
186
+ description?: string;
187
+ /** Error message to display below the checkbox */
188
+ error?: string;
189
+ /** Size variant */
190
+ size?: "sm" | "md" | "lg";
191
+ /** Unique id linking the label and checkbox */
192
+ id?: string;
193
+ }
194
+
195
+ export declare const checkboxVariants: (props?: ({
196
+ size?: "sm" | "md" | "lg" | null | undefined;
197
+ } & ClassProp) | undefined) => string;
198
+
199
+ export declare type Color = keyof typeof colors;
200
+
201
+ export declare const colors: {
202
+ readonly primary: "var(--color-primary)";
203
+ readonly secondary: "var(--color-secondary)";
204
+ readonly muted: "var(--color-muted)";
205
+ };
206
+
207
+ export declare type Direction = "ltr" | "rtl";
208
+
209
+ export declare const EmptyState: ForwardRefExoticComponent<EmptyStateProps & RefAttributes<HTMLDivElement>>;
210
+
211
+ export declare interface EmptyStateProps {
212
+ /** Icon or illustration rendered above the title */
213
+ icon?: ReactNode;
214
+ /** Full-width image / illustration (replaces icon when provided) */
215
+ image?: ReactNode;
216
+ /** Primary heading */
217
+ title: string;
218
+ /** Supporting description text */
219
+ description?: string;
220
+ /** Primary action — typically a Button element */
221
+ primaryAction?: ReactNode;
222
+ /** Secondary action — typically a link-style or ghost Button */
223
+ secondaryAction?: ReactNode;
224
+ /** Size variant controlling spacing and font sizes */
225
+ size?: "sm" | "md" | "lg";
226
+ /** Layout direction */
227
+ layout?: "vertical" | "horizontal";
228
+ /** Whether to render a bordered container */
229
+ bordered?: boolean;
230
+ /** Additional class names */
231
+ className?: string;
232
+ }
233
+
234
+ export declare const emptyStateVariants: (props?: ({
235
+ size?: "sm" | "md" | "lg" | null | undefined;
236
+ layout?: "horizontal" | "vertical" | null | undefined;
237
+ bordered?: boolean | null | undefined;
238
+ } & ClassProp) | undefined) => string;
239
+
240
+ export declare function FormatNumber({ value, format, locale: localeProp, currency: currencyProp, currencyDisplay, notation, signDisplay, minimumFractionDigits, maximumFractionDigits, decimals, unit, unitDisplay, prefix, suffix, children, className, as: Tag, ...rest }: FormatNumberProps): JSX_2.Element;
241
+
242
+ export declare namespace FormatNumber {
243
+ var displayName: string;
244
+ }
245
+
246
+ export declare interface FormatNumberProps {
247
+ /** The numeric value to format */
248
+ value: number;
249
+ /** Formatting style */
250
+ format?: NumberFormatStyle;
251
+ /** BCP 47 locale string (default: "en-US") */
252
+ locale?: string;
253
+ /** ISO 4217 currency code when format="currency" or "accounting" */
254
+ currency?: string;
255
+ /** How to display the currency: "symbol" | "narrowSymbol" | "code" | "name" */
256
+ currencyDisplay?: "symbol" | "narrowSymbol" | "code" | "name";
257
+ /** Number notation */
258
+ notation?: NumberNotation;
259
+ /** Sign display mode */
260
+ signDisplay?: SignDisplay;
261
+ /** Minimum fraction digits */
262
+ minimumFractionDigits?: number;
263
+ /** Maximum fraction digits */
264
+ maximumFractionDigits?: number;
265
+ /** Shorthand: sets both min and max fraction digits */
266
+ decimals?: number;
267
+ /** Unit for format="unit" (e.g. "kilogram", "mile-per-hour") */
268
+ unit?: string;
269
+ /** How to display the unit: "short" | "long" | "narrow" */
270
+ unitDisplay?: "short" | "long" | "narrow";
271
+ /** Prefix rendered before the formatted value */
272
+ prefix?: string;
273
+ /** Suffix rendered after the formatted value */
274
+ suffix?: string;
275
+ /** Render prop — receives the formatted string, return custom JSX */
276
+ children?: (formatted: string) => ReactNode;
277
+ /** Additional class names for the wrapping <span> */
278
+ className?: string;
279
+ /** HTML element to render (default: "span") */
280
+ as?: "span" | "p" | "div" | "strong" | "em" | "data";
281
+ }
282
+
283
+ export declare const Input: ForwardRefExoticComponent<InputProps & RefAttributes<HTMLInputElement>>;
284
+
285
+ export declare interface InputProps extends Omit<ComponentPropsWithRef<"input">, "ref"> {
286
+ /** Label text rendered above the input */
287
+ label?: string;
288
+ /** Error message to display below the input */
289
+ error?: string;
290
+ /** Unique id linking the label and input */
291
+ id?: string;
292
+ }
293
+
294
+ export declare const List: ForwardRefExoticComponent<ListProps & RefAttributes<HTMLUListElement>>;
295
+
296
+ export declare const ListItem: ForwardRefExoticComponent<ListItemProps & RefAttributes<HTMLLIElement>>;
297
+
298
+ export declare interface ListItemProps extends Omit<ComponentPropsWithRef<"li">, "ref"> {
299
+ /** Leading element — icon, avatar, or any ReactNode */
300
+ leading?: ReactNode;
301
+ /** Trailing element — badge, action button, etc. */
302
+ trailing?: ReactNode;
303
+ /** Secondary text rendered below the primary content */
304
+ secondary?: ReactNode;
305
+ /** Whether this item is currently selected / active */
306
+ selected?: boolean;
307
+ /** Whether this item is disabled */
308
+ disabled?: boolean;
309
+ /** Click handler — makes the item interactive */
310
+ onClick?: React.MouseEventHandler<HTMLLIElement>;
311
+ /** Additional class names */
312
+ className?: string;
313
+ children: ReactNode;
314
+ }
315
+
316
+ export declare interface ListProps extends Omit<ComponentPropsWithRef<"ul">, "ref"> {
317
+ /** Visual variant */
318
+ variant?: "plain" | "bordered" | "divided" | "striped";
319
+ /** Size variant controlling padding and font */
320
+ size?: "sm" | "md" | "lg";
321
+ /** Render as an ordered list (`<ol>`) */
322
+ ordered?: boolean;
323
+ /** Whether list items are interactive / clickable */
324
+ interactive?: boolean;
325
+ /** Additional class names */
326
+ className?: string;
327
+ children: ReactNode;
328
+ }
329
+
330
+ export declare const ListSubheader: {
331
+ ({ children, className }: ListSubheaderProps): JSX_2.Element;
332
+ displayName: string;
333
+ };
334
+
335
+ export declare interface ListSubheaderProps {
336
+ /** Subheader text or element */
337
+ children: ReactNode;
338
+ /** Additional class names */
339
+ className?: string;
340
+ }
341
+
342
+ export declare const listVariants: (props?: ({
343
+ variant?: "bordered" | "plain" | "divided" | "striped" | null | undefined;
344
+ size?: "sm" | "md" | "lg" | null | undefined;
345
+ } & ClassProp) | undefined) => string;
346
+
347
+ export declare interface LocaleContextValue {
348
+ /** BCP 47 locale string (e.g. "en-US", "de-DE", "ja-JP") */
349
+ locale: string;
350
+ /** ISO 4217 default currency code (e.g. "USD", "EUR", "INR") */
351
+ currency: string;
352
+ /** Text direction */
353
+ direction: Direction;
354
+ /** IANA timezone (e.g. "America/New_York", "Europe/Berlin") */
355
+ timezone: string;
356
+ }
357
+
358
+ export declare function LocaleProvider({ locale, currency, direction, timezone, children, }: LocaleProviderProps): JSX_2.Element;
359
+
360
+ export declare namespace LocaleProvider {
361
+ var displayName: string;
362
+ }
363
+
364
+ export declare interface LocaleProviderProps extends Partial<LocaleContextValue> {
365
+ /** Child components that will receive locale context */
366
+ children: ReactNode;
367
+ }
368
+
369
+ export declare const Marquee: ForwardRefExoticComponent<MarqueeProps & RefAttributes<HTMLDivElement>>;
370
+
371
+ export declare interface MarqueeProps {
372
+ /** Content to scroll — will be duplicated for seamless looping */
373
+ children: ReactNode;
374
+ /** Scroll direction */
375
+ direction?: "left" | "right" | "up" | "down";
376
+ /** Animation speed variant */
377
+ speed?: "slow" | "normal" | "fast";
378
+ /** Custom animation duration in seconds (overrides speed) */
379
+ duration?: number;
380
+ /** Pause animation on hover */
381
+ pauseOnHover?: boolean;
382
+ /** Number of times to duplicate the content for a seamless loop */
383
+ repeat?: number;
384
+ /** Gap between repeated items (Tailwind spacing value, e.g. "4", "8") */
385
+ gap?: "2" | "4" | "6" | "8" | "12" | "16";
386
+ /** Show gradient fade on the edges */
387
+ fade?: boolean;
388
+ /** Fade width as a CSS value (default "4rem") */
389
+ fadeWidth?: string;
390
+ /** Whether the marquee is playing or paused */
391
+ playing?: boolean;
392
+ /** Additional class names for the outer container */
393
+ className?: string;
394
+ }
395
+
396
+ export declare const marqueeVariants: (props?: ({
397
+ direction?: "left" | "right" | "up" | "down" | null | undefined;
398
+ fade?: boolean | null | undefined;
399
+ } & ClassProp) | undefined) => string;
400
+
401
+ export declare const Modal: {
402
+ ({ open, onClose, children, className, closeOnBackdropClick, closeOnEsc, ...props }: ModalProps): ReactPortal | null;
403
+ displayName: string;
404
+ };
405
+
406
+ export declare interface ModalProps {
407
+ /** Whether the modal is open */
408
+ open: boolean;
409
+ /** Callback fired when the modal requests to close */
410
+ onClose: () => void;
411
+ /** Content to render inside the modal */
412
+ children: ReactNode;
413
+ /** Accessible label for the modal dialog */
414
+ "aria-label"?: string;
415
+ /** Id of element that labels the modal */
416
+ "aria-labelledby"?: string;
417
+ /** Id of element that describes the modal */
418
+ "aria-describedby"?: string;
419
+ /** Additional class names for the modal content panel */
420
+ className?: string;
421
+ /** Whether clicking the backdrop closes the modal (default: true) */
422
+ closeOnBackdropClick?: boolean;
423
+ /** Whether pressing ESC closes the modal (default: true) */
424
+ closeOnEsc?: boolean;
425
+ }
426
+
427
+ export declare type NumberFormatStyle = "number" | "currency" | "percent" | "compact" | "decimal" | "unit" | "filesize" | "duration" | "ordinal" | "accounting";
428
+
429
+ export declare type NumberNotation = "standard" | "compact" | "scientific" | "engineering";
430
+
431
+ declare type PolymorphicProps<T extends ElementType, Props = object> = Props & Omit<ComponentPropsWithRef<T>, keyof Props | "ref"> & {
432
+ /** The HTML element or React component to render as */
433
+ as?: T;
434
+ ref?: PolymorphicRef<T>;
435
+ };
436
+
437
+ declare type PolymorphicRef<T extends ElementType> = ComponentPropsWithRef<T>["ref"];
438
+
439
+ /**
440
+ * Radio group — renders a list of RadioItem components from options.
441
+ */
442
+ export declare const Radio: ForwardRefExoticComponent<RadioProps & RefAttributes<HTMLFieldSetElement>>;
443
+
444
+ /**
445
+ * Individual radio input — can be used standalone.
446
+ */
447
+ export declare const RadioItem: ForwardRefExoticComponent<RadioItemProps & RefAttributes<HTMLInputElement>>;
448
+
449
+ export declare interface RadioItemProps extends Omit<ComponentPropsWithRef<"input">, "ref" | "type" | "size"> {
450
+ /** Label text rendered next to the radio */
451
+ label?: ReactNode;
452
+ /** Description text rendered below the label */
453
+ description?: string;
454
+ /** Size variant */
455
+ size?: "sm" | "md" | "lg";
456
+ /** Unique id linking the label and radio */
457
+ id?: string;
458
+ }
459
+
460
+ export declare interface RadioOption {
461
+ /** Unique value for the radio option */
462
+ value: string;
463
+ /** Display label for the option */
464
+ label: ReactNode;
465
+ /** Description text rendered below the label */
466
+ description?: string;
467
+ /** Whether the option is disabled */
468
+ disabled?: boolean;
469
+ }
470
+
471
+ export declare interface RadioProps extends Omit<ComponentPropsWithRef<"fieldset">, "ref" | "onChange" | "defaultValue"> {
472
+ /** Label text rendered above the radio group */
473
+ label?: string;
474
+ /** Error message to display below the radio group */
475
+ error?: string;
476
+ /** Size variant */
477
+ size?: "sm" | "md" | "lg";
478
+ /** Unique name for the radio group */
479
+ name: string;
480
+ /** Controlled selected value */
481
+ value?: string;
482
+ /** Default selected value (uncontrolled) */
483
+ defaultValue?: string;
484
+ /** Callback when value changes */
485
+ onChange?: (value: string) => void;
486
+ /** List of radio options */
487
+ options: RadioOption[];
488
+ /** Layout direction */
489
+ direction?: "vertical" | "horizontal";
490
+ /** Unique id for the radio group */
491
+ id?: string;
492
+ }
493
+
494
+ export declare const radioVariants: (props?: ({
495
+ size?: "sm" | "md" | "lg" | null | undefined;
496
+ } & ClassProp) | undefined) => string;
497
+
498
+ export declare type Radius = keyof typeof radius;
499
+
500
+ export declare const radius: {
501
+ readonly sm: "var(--radius-sm)";
502
+ readonly md: "var(--radius-md)";
503
+ readonly lg: "var(--radius-lg)";
504
+ };
505
+
506
+ export declare type SignDisplay = "auto" | "always" | "never" | "exceptZero";
507
+
508
+ export declare const Skeleton: ForwardRefExoticComponent<SkeletonProps & RefAttributes<HTMLDivElement>>;
509
+
510
+ export declare interface SkeletonProps extends Omit<ComponentPropsWithRef<"div">, "ref" | "children"> {
511
+ /** Shape of the skeleton placeholder */
512
+ variant?: "text" | "circular" | "rectangular" | "rounded";
513
+ /** Size preset (affects default height for text, diameter for circular, etc.) */
514
+ size?: "sm" | "md" | "lg";
515
+ /** Loading animation style */
516
+ animation?: "pulse" | "wave" | "none";
517
+ /** Width — number (px) or CSS string (e.g. "100%", "12rem") */
518
+ width?: number | string;
519
+ /** Height — number (px) or CSS string */
520
+ height?: number | string;
521
+ /** Number of text lines to render (only used with variant="text") */
522
+ lines?: number;
523
+ /** Gap between lines in px (only used when lines > 1, default 8) */
524
+ lineGap?: number;
525
+ /** Width of the last line for a natural paragraph look (default "75%") */
526
+ lastLineWidth?: string;
527
+ }
528
+
529
+ export declare const skeletonVariants: (props?: ({
530
+ variant?: "text" | "circular" | "rectangular" | "rounded" | null | undefined;
531
+ size?: "sm" | "md" | "lg" | null | undefined;
532
+ animation?: "none" | "pulse" | "wave" | null | undefined;
533
+ } & ClassProp) | undefined) => string;
534
+
535
+ export declare const Snackbar: {
536
+ ({ open, onClose, message, variant, position, autoCloseDuration, showCloseButton, action, icon, className, ...props }: SnackbarProps): ReactPortal | null;
537
+ displayName: string;
538
+ };
539
+
540
+ export declare type SnackbarPosition = "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right";
541
+
542
+ export declare interface SnackbarProps {
543
+ /** Whether the snackbar is visible */
544
+ open: boolean;
545
+ /** Callback fired when the snackbar requests to be closed */
546
+ onClose: () => void;
547
+ /** The message to display */
548
+ message: ReactNode;
549
+ /** Visual variant controlling colour and icon */
550
+ variant?: SnackbarVariant;
551
+ /** Where on the viewport the snackbar appears */
552
+ position?: SnackbarPosition;
553
+ /** Auto-close after this many milliseconds. `0` or `false` disables auto-close. */
554
+ autoCloseDuration?: number | false;
555
+ /** Show a close (✕) button */
556
+ showCloseButton?: boolean;
557
+ /** Optional action element (e.g. an "Undo" button) rendered after the message */
558
+ action?: ReactNode;
559
+ /** Optional icon override. Set to `null` to hide the default icon. */
560
+ icon?: ReactNode | null;
561
+ /** Additional class names for the snackbar container */
562
+ className?: string;
563
+ /** Accessible label for the snackbar region */
564
+ "aria-label"?: string;
565
+ }
566
+
567
+ export declare type SnackbarVariant = "info" | "success" | "warning" | "error";
568
+
569
+ export declare const snackbarVariants: (props?: ({
570
+ variant?: "error" | "info" | "success" | "warning" | null | undefined;
571
+ } & ClassProp) | undefined) => string;
572
+
573
+ export declare type Spacing = keyof typeof spacing;
574
+
575
+ export declare const spacing: {
576
+ readonly 1: "var(--space-1)";
577
+ readonly 2: "var(--space-2)";
578
+ readonly 4: "var(--space-4)";
579
+ };
580
+
581
+ export declare const Stack: ForwardRefExoticComponent<StackProps & RefAttributes<HTMLDivElement>>;
582
+
583
+ export declare interface StackProps extends Omit<ComponentPropsWithRef<"div">, "ref">, StackVariantProps {
584
+ }
585
+
586
+ export declare type StackVariantProps = VariantProps<typeof stackVariants>;
587
+
588
+ export declare const stackVariants: (props?: ({
589
+ direction?: "horizontal" | "vertical" | null | undefined;
590
+ gap?: 1 | 2 | 4 | null | undefined;
591
+ align?: "center" | "end" | "start" | "stretch" | null | undefined;
592
+ justify?: "center" | "end" | "start" | "between" | null | undefined;
593
+ wrap?: boolean | null | undefined;
594
+ } & ClassProp) | undefined) => string;
595
+
596
+ export declare const Stat: ForwardRefExoticComponent<StatProps & RefAttributes<HTMLDivElement>>;
597
+
598
+ export declare const StatGroup: ForwardRefExoticComponent<StatGroupProps & RefAttributes<HTMLDivElement>>;
599
+
600
+ export declare interface StatGroupProps {
601
+ /** Number of columns (defaults to child count) */
602
+ columns?: 1 | 2 | 3 | 4 | 5 | 6;
603
+ /** Gap between items */
604
+ gap?: "2" | "4" | "6" | "8";
605
+ /** Whether to add dividers between items */
606
+ dividers?: boolean;
607
+ /** Additional class names */
608
+ className?: string;
609
+ children: ReactNode;
610
+ }
611
+
612
+ export declare const statGroupVariants: (props?: ({
613
+ columns?: 1 | 2 | 3 | 4 | 5 | 6 | null | undefined;
614
+ gap?: "2" | "4" | "6" | "8" | null | undefined;
615
+ dividers?: boolean | null | undefined;
616
+ } & ClassProp) | undefined) => string;
617
+
618
+ export declare interface StatProps {
619
+ /** The numeric value to display (will be animated) */
620
+ value: number;
621
+ /** Label displayed below the value */
622
+ label: string;
623
+ /** Prefix rendered before the value (e.g. "$", "€") */
624
+ prefix?: string;
625
+ /** Suffix rendered after the value (e.g. "%", "users") */
626
+ suffix?: string;
627
+ /** Number formatting style */
628
+ format?: "number" | "currency" | "percent" | "compact";
629
+ /** Locale string for Intl.NumberFormat (default: "en-US") */
630
+ locale?: string;
631
+ /** Number of decimal places */
632
+ decimals?: number;
633
+ /** Duration of the counting animation in milliseconds */
634
+ animationDuration?: number;
635
+ /** Whether counting animation is enabled */
636
+ animated?: boolean;
637
+ /** Trend direction — shows an arrow indicator */
638
+ trend?: "up" | "down" | "neutral";
639
+ /** Text shown next to the trend indicator (e.g. "+12%", "-3.2%") */
640
+ trendValue?: string;
641
+ /** Optional icon rendered above / beside the value */
642
+ icon?: ReactNode;
643
+ /** Visual variant */
644
+ variant?: "default" | "bordered" | "filled" | "minimal";
645
+ /** Size variant */
646
+ size?: "sm" | "md" | "lg";
647
+ /** Additional class names */
648
+ className?: string;
649
+ }
650
+
651
+ export declare const statVariants: (props?: ({
652
+ variant?: "default" | "filled" | "bordered" | "minimal" | null | undefined;
653
+ size?: "sm" | "md" | "lg" | null | undefined;
654
+ } & ClassProp) | undefined) => string;
655
+
656
+ export declare const Switch: ForwardRefExoticComponent<SwitchProps & RefAttributes<HTMLInputElement>>;
657
+
658
+ export declare interface SwitchProps extends Omit<ComponentPropsWithRef<"input">, "ref" | "type" | "size"> {
659
+ /** Label text rendered next to the switch */
660
+ label?: ReactNode;
661
+ /** Description text rendered below the label */
662
+ description?: string;
663
+ /** Error message to display below the switch */
664
+ error?: string;
665
+ /** Size variant */
666
+ size?: "sm" | "md" | "lg";
667
+ /** Unique id linking the label and switch */
668
+ id?: string;
669
+ }
670
+
671
+ /**
672
+ * Track — the pill-shaped container the knob sits inside.
673
+ * Grey when off, primary when on.
674
+ */
675
+ export declare const switchVariants: (props?: ({
676
+ size?: "sm" | "md" | "lg" | null | undefined;
677
+ } & ClassProp) | undefined) => string;
678
+
679
+ export declare interface TabItem {
680
+ /** Unique key identifying this tab */
681
+ key: string;
682
+ /** Tab label (rendered in the trigger) */
683
+ label: ReactNode;
684
+ /** Tab panel content */
685
+ content: ReactNode;
686
+ /** Optional icon rendered before the label */
687
+ icon?: ReactNode;
688
+ /** Whether this tab is disabled */
689
+ disabled?: boolean;
690
+ }
691
+
692
+ export declare const Tabs: ForwardRefExoticComponent<TabsProps & RefAttributes<HTMLDivElement>>;
693
+
694
+ export declare interface TabsProps {
695
+ /** Array of tab definitions */
696
+ items: TabItem[];
697
+ /** Currently active tab key (controlled) */
698
+ activeKey?: string;
699
+ /** Default active tab key (uncontrolled) */
700
+ defaultActiveKey?: string;
701
+ /** Callback when active tab changes */
702
+ onTabChange?: (key: string) => void;
703
+ /** Visual variant */
704
+ variant?: "underline" | "pills" | "bordered" | "lifted";
705
+ /** Size variant */
706
+ size?: "sm" | "md" | "lg";
707
+ /** Whether the tabs stretch to fill the container */
708
+ fullWidth?: boolean;
709
+ /** Tab alignment when not fullWidth */
710
+ align?: "start" | "center" | "end";
711
+ /** Whether tab panels have a transition animation */
712
+ animated?: boolean;
713
+ /** Orientation */
714
+ orientation?: "horizontal" | "vertical";
715
+ /** Additional class names for the root container */
716
+ className?: string;
717
+ }
718
+
719
+ export declare const tabsVariants: (props?: ({
720
+ orientation?: "horizontal" | "vertical" | null | undefined;
721
+ } & ClassProp) | undefined) => string;
722
+
723
+ export declare const Timeline: ForwardRefExoticComponent<TimelineProps & RefAttributes<HTMLDivElement>>;
724
+
725
+ export declare const TimelineItem: ForwardRefExoticComponent<TimelineItemProps & {
726
+ /* Excluded from this release type: _variant */
727
+ /* Excluded from this release type: _size */
728
+ /* Excluded from this release type: _orientation */
729
+ /* Excluded from this release type: _lineStyle */
730
+ /* Excluded from this release type: _isLast */
731
+ /* Excluded from this release type: _trailingLine */
732
+ /* Excluded from this release type: _alternate */
733
+ /* Excluded from this release type: _index */
734
+ } & RefAttributes<HTMLDivElement>>;
735
+
736
+ export declare interface TimelineItemProps {
737
+ /** Primary title / heading */
738
+ title: string;
739
+ /** Supporting description or body content */
740
+ description?: ReactNode;
741
+ /** Timestamp or date string */
742
+ date?: string;
743
+ /** Custom icon rendered inside the dot */
744
+ icon?: ReactNode;
745
+ /** Dot color — maps to Tailwind color classes */
746
+ color?: "primary" | "secondary" | "green" | "red" | "yellow" | "gray";
747
+ /** Status of this timeline step */
748
+ status?: "completed" | "active" | "pending";
749
+ /** Additional class names for this item */
750
+ className?: string;
751
+ }
752
+
753
+ export declare interface TimelineProps {
754
+ /** Timeline items */
755
+ children: ReactNode;
756
+ /** Visual variant */
757
+ variant?: "default" | "outlined" | "filled";
758
+ /** Size variant */
759
+ size?: "sm" | "md" | "lg";
760
+ /** Layout direction */
761
+ orientation?: "vertical" | "horizontal";
762
+ /** Line style between items */
763
+ lineStyle?: "solid" | "dashed" | "dotted";
764
+ /** Whether the last item shows a trailing line */
765
+ trailingLine?: boolean;
766
+ /** Alternate items on left/right (vertical only) */
767
+ alternate?: boolean;
768
+ /** Additional class names for the container */
769
+ className?: string;
770
+ }
771
+
772
+ export declare const timelineVariants: (props?: ({
773
+ orientation?: "horizontal" | "vertical" | null | undefined;
774
+ size?: "sm" | "md" | "lg" | null | undefined;
775
+ } & ClassProp) | undefined) => string;
776
+
777
+ /**
778
+ * Return only the currency code.
779
+ * Convenience shortcut for `useLocale().currency`.
780
+ */
781
+ export declare function useCurrency(): string;
782
+
783
+ /**
784
+ * Return only the text direction.
785
+ * Convenience shortcut for `useLocale().direction`.
786
+ */
787
+ export declare function useDirection(): "ltr" | "rtl";
788
+
789
+ export declare function useFormatNumber(opts?: UseFormatNumberOptions): {
790
+ format: (value: number) => string;
791
+ };
792
+
793
+ export declare interface UseFormatNumberOptions {
794
+ /** Formatting style */
795
+ format?: NumberFormatStyle;
796
+ /** BCP 47 locale string */
797
+ locale?: string;
798
+ /** ISO 4217 currency code */
799
+ currency?: string;
800
+ /** How to display the currency */
801
+ currencyDisplay?: "symbol" | "narrowSymbol" | "code" | "name";
802
+ /** Number notation */
803
+ notation?: NumberNotation;
804
+ /** Sign display mode */
805
+ signDisplay?: SignDisplay;
806
+ /** Minimum fraction digits */
807
+ minimumFractionDigits?: number;
808
+ /** Maximum fraction digits */
809
+ maximumFractionDigits?: number;
810
+ /** Shorthand: sets both min and max fraction digits */
811
+ decimals?: number;
812
+ /** Unit for format="unit" */
813
+ unit?: string;
814
+ /** How to display the unit */
815
+ unitDisplay?: "short" | "long" | "narrow";
816
+ /** Prefix prepended to the formatted value */
817
+ prefix?: string;
818
+ /** Suffix appended to the formatted value */
819
+ suffix?: string;
820
+ }
821
+
822
+ /**
823
+ * Read the current locale context.
824
+ *
825
+ * - Inside a `<LocaleProvider>`: returns the provider's values.
826
+ * - Outside any provider: returns sensible defaults (`en-US`, `USD`, `ltr`).
827
+ */
828
+ export declare function useLocale(): LocaleContextValue;
829
+
830
+ /**
831
+ * Return only the locale string.
832
+ * Convenience shortcut for `useLocale().locale`.
833
+ */
834
+ export declare function useLocaleString(): string;
835
+
836
+ /**
837
+ * Return only the timezone.
838
+ * Convenience shortcut for `useLocale().timezone`.
839
+ */
840
+ export declare function useTimezone(): string;
841
+
842
+ export { }