@titan-design/react-ui 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2484 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+ import { ViewProps, PressableProps, View, TextInputProps, TextInput, ImageSourcePropType, ModalProps as ModalProps$1, TextProps } from 'react-native';
4
+ export { ComponentType, ElevationConfig, ElevationLevel, ShadowIntensity, ShadowSurface, ThemeConfig, ThemeMode, buttonSizes, componentElevationRanges, createFlatShadow, createPressedHoverShadow, createPressedShadow, createRaisedHoverShadow, createRaisedShadow, darkThemeCSSVars, darken, discreteRainbow, elevationSystem, getBaseSurfaceColor, getDiscreteRainbowColor, getElevationConfig, getElevationShadow, getElevationSurface, getHoverColors, getSemanticColors, getThemeCSSVars, getValidatedElevation, gluestackConfig, hexToRgb, hsvToRgb, isDark, lightThemeCSSVars, lighten, neumorphicShadows, primitiveBorderRadius, primitiveBreakpoints, primitiveColors, primitiveShadows, primitiveSpacing, primitiveTypography, primitiveZIndex, rgbToHex, rgbToHsv, semanticColorsDark, semanticColorsLight, semanticTypography, shadowColors } from './theme/index.mjs';
5
+ import { ClassValue } from 'clsx';
6
+
7
+ type AlertStatus = 'success' | 'info' | 'warning' | 'error';
8
+ type AlertVariant = 'subtle' | 'outline' | 'solid';
9
+ interface AlertProps extends ViewProps {
10
+ /** Alert status type */
11
+ status?: AlertStatus;
12
+ /** Visual variant */
13
+ variant?: AlertVariant;
14
+ /** Custom icon element */
15
+ icon?: React.ReactNode;
16
+ /** Whether to show the default icon */
17
+ showIcon?: boolean;
18
+ /** Callback when close button is pressed */
19
+ onClose?: () => void;
20
+ /** Additional className */
21
+ className?: string;
22
+ children?: React.ReactNode;
23
+ }
24
+ /**
25
+ * Alert component for displaying status messages.
26
+ *
27
+ * @example
28
+ * <Alert status="success">
29
+ * <AlertTitle>Success!</AlertTitle>
30
+ * <AlertDescription>Your changes have been saved.</AlertDescription>
31
+ * </Alert>
32
+ *
33
+ * <Alert status="error" variant="solid" onClose={() => {}}>
34
+ * <AlertDescription>Something went wrong.</AlertDescription>
35
+ * </Alert>
36
+ */
37
+ declare function Alert({ status, variant, icon, showIcon, onClose, className, children, ...props }: AlertProps): react_jsx_runtime.JSX.Element;
38
+ interface AlertTitleProps {
39
+ children?: React.ReactNode;
40
+ className?: string;
41
+ }
42
+ /**
43
+ * Title for Alert component.
44
+ */
45
+ declare function AlertTitle({ children, className }: AlertTitleProps): react_jsx_runtime.JSX.Element;
46
+ interface AlertDescriptionProps {
47
+ children?: React.ReactNode;
48
+ className?: string;
49
+ }
50
+ /**
51
+ * Description for Alert component.
52
+ */
53
+ declare function AlertDescription({ children, className }: AlertDescriptionProps): react_jsx_runtime.JSX.Element;
54
+
55
+ type ButtonVariant = 'solid' | 'outline' | 'ghost' | 'link';
56
+ type ButtonSize = 'sm' | 'md' | 'lg';
57
+ type ButtonColor = 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info';
58
+ interface ButtonProps extends Omit<PressableProps, 'children'> {
59
+ /** Visual style variant */
60
+ variant?: ButtonVariant;
61
+ /** Size of the button */
62
+ size?: ButtonSize;
63
+ /** Color scheme */
64
+ color?: ButtonColor;
65
+ /** Whether this is an icon-only button (square aspect ratio) */
66
+ isIconButton?: boolean;
67
+ /** Whether the button is disabled */
68
+ isDisabled?: boolean;
69
+ /** Whether the button is in a loading state */
70
+ isLoading?: boolean;
71
+ /** Loading text to display */
72
+ loadingText?: string;
73
+ /** Whether the button should take full width */
74
+ fullWidth?: boolean;
75
+ /** Additional className for styling */
76
+ className?: string;
77
+ /** Button content */
78
+ children?: React.ReactNode;
79
+ }
80
+ /**
81
+ * Button component following compound component pattern.
82
+ *
83
+ * @example
84
+ * <Button variant="solid" color="primary">
85
+ * <ButtonText>Click me</ButtonText>
86
+ * </Button>
87
+ *
88
+ * // Or with icon
89
+ * <Button variant="outline" color="secondary">
90
+ * <ButtonIcon as={PlusIcon} />
91
+ * <ButtonText>Add item</ButtonText>
92
+ * </Button>
93
+ */
94
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<View>>;
95
+ interface ButtonTextProps {
96
+ children: React.ReactNode;
97
+ className?: string;
98
+ }
99
+ /**
100
+ * Text component for Button. Use inside Button for consistent styling.
101
+ */
102
+ declare function ButtonText({ children, className }: ButtonTextProps): react_jsx_runtime.JSX.Element;
103
+ interface ButtonIconProps {
104
+ /** Icon component to render */
105
+ as: React.ComponentType<{
106
+ size?: number;
107
+ color?: string;
108
+ className?: string;
109
+ }>;
110
+ /** Icon size */
111
+ size?: number;
112
+ /** Additional className */
113
+ className?: string;
114
+ }
115
+ /**
116
+ * Icon component for Button. Use inside Button for icons.
117
+ */
118
+ declare function ButtonIcon({ as: Icon, size, className }: ButtonIconProps): react_jsx_runtime.JSX.Element;
119
+ interface ButtonSpinnerProps {
120
+ className?: string;
121
+ }
122
+ /**
123
+ * Spinner component for Button loading state.
124
+ */
125
+ declare function ButtonSpinner({ className }: ButtonSpinnerProps): react_jsx_runtime.JSX.Element;
126
+
127
+ type InputSize = 'sm' | 'md' | 'lg';
128
+ type InputVariant = 'outline' | 'filled' | 'underline';
129
+ interface InputProps extends Omit<TextInputProps, 'editable'> {
130
+ /** Input size */
131
+ size?: InputSize;
132
+ /** Visual variant */
133
+ variant?: InputVariant;
134
+ /** Whether the input is disabled */
135
+ isDisabled?: boolean;
136
+ /** Whether the input has an error */
137
+ isInvalid?: boolean;
138
+ /** Whether the input is read-only */
139
+ isReadOnly?: boolean;
140
+ /** Whether the input is required */
141
+ isRequired?: boolean;
142
+ /** Whether this is a multiline textarea */
143
+ multiline?: boolean;
144
+ /** Number of visible lines for multiline */
145
+ numberOfLines?: number;
146
+ /** Label text */
147
+ label?: string;
148
+ /** Helper text shown below input */
149
+ helperText?: string;
150
+ /** Error message (shown when isInvalid is true) */
151
+ errorMessage?: string;
152
+ /** Left element/icon */
153
+ leftElement?: React.ReactNode;
154
+ /** Right element/icon */
155
+ rightElement?: React.ReactNode;
156
+ /** Additional className for the container */
157
+ className?: string;
158
+ /** Additional className for the input */
159
+ inputClassName?: string;
160
+ }
161
+ /**
162
+ * Input component for text entry.
163
+ *
164
+ * @example
165
+ * <Input
166
+ * label="Email"
167
+ * placeholder="Enter your email"
168
+ * helperText="We'll never share your email"
169
+ * />
170
+ *
171
+ * // With error state
172
+ * <Input
173
+ * label="Password"
174
+ * isInvalid
175
+ * errorMessage="Password is required"
176
+ * />
177
+ */
178
+ declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<TextInput>>;
179
+ interface InputGroupProps {
180
+ children: React.ReactNode;
181
+ className?: string;
182
+ }
183
+ /**
184
+ * Container for grouping related inputs.
185
+ */
186
+ declare function InputGroup({ children, className }: InputGroupProps): react_jsx_runtime.JSX.Element;
187
+ interface PasswordInputProps extends Omit<InputProps, 'secureTextEntry' | 'rightElement'> {
188
+ /** Custom show password icon */
189
+ showIcon?: React.ReactNode;
190
+ /** Custom hide password icon */
191
+ hideIcon?: React.ReactNode;
192
+ }
193
+ /**
194
+ * Password input with visibility toggle.
195
+ *
196
+ * @example
197
+ * <PasswordInput
198
+ * label="Password"
199
+ * placeholder="Enter your password"
200
+ * />
201
+ */
202
+ declare const PasswordInput: React.ForwardRefExoticComponent<PasswordInputProps & React.RefAttributes<TextInput>>;
203
+
204
+ type CardVariant = 'elevated' | 'outline' | 'filled';
205
+ type CardElevation = 1 | 2 | 3;
206
+ interface CardProps extends ViewProps {
207
+ /** Visual variant */
208
+ variant?: CardVariant;
209
+ /** Elevation level (1=subtle, 2=standard, 3=prominent) */
210
+ elevation?: CardElevation;
211
+ /** Whether the card is interactive (hoverable/pressable) */
212
+ isInteractive?: boolean;
213
+ /** Whether the card is in a loading state (renders skeleton) */
214
+ isLoading?: boolean;
215
+ /** Callback when card is pressed (makes card interactive) */
216
+ onPress?: () => void;
217
+ /** Custom border color (hex, rgb, or CSS color). Useful for status cards. */
218
+ borderColor?: string;
219
+ /** Custom background color (hex, rgb, or CSS color). Useful for colored cards. */
220
+ bgColor?: string;
221
+ /** Additional className */
222
+ className?: string;
223
+ children?: React.ReactNode;
224
+ /** Show header skeleton when loading (default: true) */
225
+ skeletonHasHeader?: boolean;
226
+ /** Show footer skeleton when loading (default: false) */
227
+ skeletonHasFooter?: boolean;
228
+ /** Number of content lines in skeleton when loading (default: 3) */
229
+ skeletonContentLines?: number;
230
+ }
231
+ /**
232
+ * Card component for containing related content.
233
+ *
234
+ * @example
235
+ * <Card>
236
+ * <CardHeader>
237
+ * <CardTitle>Card Title</CardTitle>
238
+ * <CardDescription>Card description</CardDescription>
239
+ * </CardHeader>
240
+ * <CardContent>
241
+ * <Text>Card content goes here</Text>
242
+ * </CardContent>
243
+ * <CardFooter>
244
+ * <Button>Action</Button>
245
+ * </CardFooter>
246
+ * </Card>
247
+ *
248
+ * // Interactive card
249
+ * <Card isInteractive onPress={() => console.log('pressed')}>
250
+ * <CardContent>Click me</CardContent>
251
+ * </Card>
252
+ */
253
+ declare function Card({ variant, elevation, isInteractive, isLoading, onPress, borderColor, bgColor, className, children, style, skeletonHasHeader, skeletonHasFooter, skeletonContentLines, ...props }: CardProps): react_jsx_runtime.JSX.Element;
254
+ interface CardHeaderProps {
255
+ children?: React.ReactNode;
256
+ className?: string;
257
+ }
258
+ /**
259
+ * Header section of a Card.
260
+ */
261
+ declare function CardHeader({ children, className }: CardHeaderProps): react_jsx_runtime.JSX.Element;
262
+ interface CardTitleProps {
263
+ children?: React.ReactNode;
264
+ className?: string;
265
+ }
266
+ /**
267
+ * Title for CardHeader.
268
+ */
269
+ declare function CardTitle({ children, className }: CardTitleProps): react_jsx_runtime.JSX.Element;
270
+ interface CardDescriptionProps {
271
+ children?: React.ReactNode;
272
+ className?: string;
273
+ }
274
+ /**
275
+ * Description for CardHeader.
276
+ */
277
+ declare function CardDescription({ children, className }: CardDescriptionProps): react_jsx_runtime.JSX.Element;
278
+ interface CardContentProps {
279
+ children?: React.ReactNode;
280
+ className?: string;
281
+ }
282
+ /**
283
+ * Content section of a Card.
284
+ */
285
+ declare function CardContent({ children, className }: CardContentProps): react_jsx_runtime.JSX.Element;
286
+ interface CardFooterProps {
287
+ children?: React.ReactNode;
288
+ className?: string;
289
+ }
290
+ /**
291
+ * Footer section of a Card.
292
+ */
293
+ declare function CardFooter({ children, className }: CardFooterProps): react_jsx_runtime.JSX.Element;
294
+ interface CardSkeletonProps {
295
+ /** Whether to show header skeleton */
296
+ hasHeader?: boolean;
297
+ /** Whether to show footer skeleton */
298
+ hasFooter?: boolean;
299
+ /** Number of content lines */
300
+ contentLines?: number;
301
+ /** Additional className */
302
+ className?: string;
303
+ }
304
+ /**
305
+ * Skeleton placeholder for Card loading state.
306
+ */
307
+ declare function CardSkeleton({ hasHeader, hasFooter, contentLines, className, }: CardSkeletonProps): react_jsx_runtime.JSX.Element;
308
+
309
+ type BadgeVariant = 'solid' | 'subtle' | 'outline';
310
+ type BadgeColor = 'default' | 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info';
311
+ type BadgeSize = 'sm' | 'md' | 'lg';
312
+ interface BadgeProps extends ViewProps {
313
+ /** Visual variant */
314
+ variant?: BadgeVariant;
315
+ /** Color scheme */
316
+ color?: BadgeColor;
317
+ /** Size */
318
+ size?: BadgeSize;
319
+ /** Additional className */
320
+ className?: string;
321
+ children?: React.ReactNode;
322
+ }
323
+ /**
324
+ * Badge component for status indicators and labels.
325
+ *
326
+ * @example
327
+ * <Badge color="success">Active</Badge>
328
+ * <Badge variant="outline" color="warning">Pending</Badge>
329
+ */
330
+ declare function Badge({ variant, color, size, className, children, ...props }: BadgeProps): react_jsx_runtime.JSX.Element;
331
+ interface BadgeTextProps {
332
+ children: React.ReactNode;
333
+ className?: string;
334
+ }
335
+ /**
336
+ * Text component for Badge content.
337
+ */
338
+ declare function BadgeText({ children, className }: BadgeTextProps): react_jsx_runtime.JSX.Element;
339
+
340
+ type SpinnerSize = 'sm' | 'md' | 'lg' | 'xl';
341
+ type SpinnerColor = 'primary' | 'secondary' | 'white' | 'default';
342
+ interface SpinnerProps extends ViewProps {
343
+ /** Spinner size */
344
+ size?: SpinnerSize;
345
+ /** Color scheme */
346
+ color?: SpinnerColor;
347
+ /** Accessibility label */
348
+ label?: string;
349
+ /** Additional className */
350
+ className?: string;
351
+ }
352
+ /**
353
+ * Spinner component for loading states.
354
+ *
355
+ * @example
356
+ * <Spinner size="md" color="primary" />
357
+ *
358
+ * // In a button
359
+ * <Button isLoading>
360
+ * <Spinner size="sm" color="white" />
361
+ * <ButtonText>Loading...</ButtonText>
362
+ * </Button>
363
+ */
364
+ declare function Spinner({ size, color, label, className, ...props }: SpinnerProps): react_jsx_runtime.JSX.Element;
365
+
366
+ type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
367
+ interface AvatarProps extends ViewProps {
368
+ /** Avatar size */
369
+ size?: AvatarSize;
370
+ /** Image source */
371
+ source?: ImageSourcePropType;
372
+ /** Fallback text (usually initials) */
373
+ fallback?: string;
374
+ /** Alt text for accessibility */
375
+ alt?: string;
376
+ /** Additional className */
377
+ className?: string;
378
+ }
379
+ /**
380
+ * Avatar component for user/entity representation.
381
+ *
382
+ * @example
383
+ * // With image
384
+ * <Avatar source={{ uri: 'https://example.com/avatar.jpg' }} alt="User" />
385
+ *
386
+ * // With fallback initials
387
+ * <Avatar fallback="JD" />
388
+ *
389
+ * // With badge
390
+ * <AvatarGroup>
391
+ * <Avatar source={source1} />
392
+ * <Avatar source={source2} />
393
+ * <AvatarBadge />
394
+ * </AvatarGroup>
395
+ */
396
+ declare function Avatar({ size, source, fallback, alt, className, ...props }: AvatarProps): react_jsx_runtime.JSX.Element;
397
+ interface AvatarBadgeProps {
398
+ /** Badge color */
399
+ color?: 'success' | 'error' | 'warning' | 'default';
400
+ /** Additional className */
401
+ className?: string;
402
+ }
403
+ /**
404
+ * Status badge for Avatar (e.g., online indicator).
405
+ */
406
+ declare function AvatarBadge({ color, className }: AvatarBadgeProps): react_jsx_runtime.JSX.Element;
407
+ interface AvatarGroupProps {
408
+ children: React.ReactNode;
409
+ /** Maximum avatars to show before +N indicator */
410
+ max?: number;
411
+ /** Size of avatars */
412
+ size?: AvatarSize;
413
+ /** Additional className */
414
+ className?: string;
415
+ }
416
+ /**
417
+ * Group of avatars with stacking effect.
418
+ */
419
+ declare function AvatarGroup({ children, max, size, className, }: AvatarGroupProps): react_jsx_runtime.JSX.Element;
420
+
421
+ type DividerOrientation = 'horizontal' | 'vertical';
422
+ interface DividerProps extends ViewProps {
423
+ /** Divider orientation */
424
+ orientation?: DividerOrientation;
425
+ /** Additional className */
426
+ className?: string;
427
+ }
428
+ /**
429
+ * Divider component for visual separation of content.
430
+ *
431
+ * @example
432
+ * <Divider />
433
+ * <Divider orientation="vertical" />
434
+ */
435
+ declare function Divider({ orientation, className, ...props }: DividerProps): react_jsx_runtime.JSX.Element;
436
+
437
+ type CheckboxSize = 'sm' | 'md' | 'lg';
438
+ interface CheckboxProps extends Omit<PressableProps, 'children'> {
439
+ /** Whether the checkbox is checked */
440
+ isChecked?: boolean;
441
+ /** Whether the checkbox is in indeterminate state */
442
+ isIndeterminate?: boolean;
443
+ /** Whether the checkbox is disabled */
444
+ isDisabled?: boolean;
445
+ /** Whether the checkbox is invalid */
446
+ isInvalid?: boolean;
447
+ /** Checkbox size */
448
+ size?: CheckboxSize;
449
+ /** Label text */
450
+ label?: string;
451
+ /** Helper text */
452
+ helperText?: string;
453
+ /** Value for forms */
454
+ value?: string;
455
+ /** Callback when checked state changes */
456
+ onCheckedChange?: (checked: boolean) => void;
457
+ /** Additional className */
458
+ className?: string;
459
+ }
460
+ /**
461
+ * Checkbox component for boolean inputs.
462
+ *
463
+ * @example
464
+ * <Checkbox
465
+ * isChecked={checked}
466
+ * onCheckedChange={setChecked}
467
+ * label="Accept terms and conditions"
468
+ * />
469
+ */
470
+ declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<View>>;
471
+ interface CheckboxGroupProps {
472
+ children: React.ReactNode;
473
+ /** Label for the group */
474
+ label?: string;
475
+ /** Orientation of checkboxes */
476
+ orientation?: 'horizontal' | 'vertical';
477
+ /** Additional className */
478
+ className?: string;
479
+ }
480
+ /**
481
+ * Container for grouping related checkboxes.
482
+ */
483
+ declare function CheckboxGroup({ children, label, orientation, className, }: CheckboxGroupProps): react_jsx_runtime.JSX.Element;
484
+
485
+ type SwitchSize = 'sm' | 'md' | 'lg';
486
+ interface SwitchProps extends Omit<PressableProps, 'children'> {
487
+ /** Whether the switch is on */
488
+ isChecked?: boolean;
489
+ /** Whether the switch is disabled */
490
+ isDisabled?: boolean;
491
+ /** Switch size */
492
+ size?: SwitchSize;
493
+ /** Label text */
494
+ label?: string;
495
+ /** Label position */
496
+ labelPosition?: 'left' | 'right';
497
+ /** Callback when switch state changes */
498
+ onCheckedChange?: (checked: boolean) => void;
499
+ /** Additional className */
500
+ className?: string;
501
+ }
502
+ /**
503
+ * Switch component for toggling boolean values.
504
+ *
505
+ * @example
506
+ * <Switch
507
+ * isChecked={enabled}
508
+ * onCheckedChange={setEnabled}
509
+ * label="Enable notifications"
510
+ * />
511
+ */
512
+ declare const Switch: React.ForwardRefExoticComponent<SwitchProps & React.RefAttributes<View>>;
513
+
514
+ type ModalSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
515
+ type ModalScrollBehavior = 'inside' | 'outside';
516
+ interface ModalProps extends Omit<ModalProps$1, 'visible'> {
517
+ /** Whether the modal is open */
518
+ isOpen: boolean;
519
+ /** Callback when modal should close */
520
+ onClose?: () => void;
521
+ /** Modal size */
522
+ size?: ModalSize;
523
+ /** Where scrolling happens: inside modal body or whole modal */
524
+ scrollBehavior?: ModalScrollBehavior;
525
+ /** Whether clicking backdrop closes modal */
526
+ closeOnOverlayClick?: boolean;
527
+ /** Whether to blur the backdrop */
528
+ backdropBlur?: boolean;
529
+ /** Additional className for backdrop */
530
+ backdropClassName?: string;
531
+ /** Animation type */
532
+ animationType?: 'none' | 'fade' | 'slide';
533
+ children?: React.ReactNode;
534
+ }
535
+ /**
536
+ * Modal component for dialogs and overlays.
537
+ *
538
+ * @example
539
+ * <Modal isOpen={isOpen} onClose={() => setIsOpen(false)}>
540
+ * <ModalContent>
541
+ * <ModalHeader>
542
+ * <ModalTitle>Modal Title</ModalTitle>
543
+ * <ModalCloseButton />
544
+ * </ModalHeader>
545
+ * <ModalBody>
546
+ * <Text>Modal content</Text>
547
+ * </ModalBody>
548
+ * <ModalFooter>
549
+ * <Button onPress={() => setIsOpen(false)}>Close</Button>
550
+ * </ModalFooter>
551
+ * </ModalContent>
552
+ * </Modal>
553
+ */
554
+ declare function Modal({ isOpen, onClose, size, scrollBehavior, closeOnOverlayClick, backdropBlur, backdropClassName, animationType, children, ...props }: ModalProps): react_jsx_runtime.JSX.Element;
555
+ interface ModalContentProps {
556
+ children?: React.ReactNode;
557
+ className?: string;
558
+ }
559
+ /**
560
+ * Container for modal content.
561
+ */
562
+ declare function ModalContent({ children, className }: ModalContentProps): react_jsx_runtime.JSX.Element;
563
+ interface ModalHeaderProps {
564
+ children?: React.ReactNode;
565
+ className?: string;
566
+ }
567
+ /**
568
+ * Header section of modal.
569
+ */
570
+ declare function ModalHeader({ children, className }: ModalHeaderProps): react_jsx_runtime.JSX.Element;
571
+ interface ModalTitleProps {
572
+ children?: React.ReactNode;
573
+ className?: string;
574
+ }
575
+ /**
576
+ * Title for modal header.
577
+ */
578
+ declare function ModalTitle({ children, className }: ModalTitleProps): react_jsx_runtime.JSX.Element;
579
+ interface ModalCloseButtonProps {
580
+ className?: string;
581
+ }
582
+ /**
583
+ * Close button for modal header.
584
+ */
585
+ declare function ModalCloseButton({ className }: ModalCloseButtonProps): react_jsx_runtime.JSX.Element;
586
+ interface ModalBodyProps {
587
+ children?: React.ReactNode;
588
+ /** Maximum height for scrollable content (when scrollBehavior="inside") */
589
+ maxHeight?: number;
590
+ className?: string;
591
+ }
592
+ /**
593
+ * Body section of modal.
594
+ */
595
+ declare function ModalBody({ children, maxHeight, className }: ModalBodyProps): react_jsx_runtime.JSX.Element;
596
+ interface ModalFooterProps {
597
+ children?: React.ReactNode;
598
+ className?: string;
599
+ }
600
+ /**
601
+ * Footer section of modal.
602
+ */
603
+ declare function ModalFooter({ children, className }: ModalFooterProps): react_jsx_runtime.JSX.Element;
604
+
605
+ type SkeletonVariant = 'text' | 'circle' | 'rect' | 'rounded';
606
+ type SkeletonAnimation = 'pulse' | 'shimmer' | 'none';
607
+ interface SkeletonProps extends ViewProps {
608
+ /** Shape variant */
609
+ variant?: SkeletonVariant;
610
+ /** Animation type */
611
+ animation?: SkeletonAnimation;
612
+ /** Width (number for pixels, string for percentages/other) */
613
+ width?: number | string;
614
+ /** Height (number for pixels, string for percentages/other) */
615
+ height?: number | string;
616
+ /** Border radius (only for 'rect' variant) */
617
+ borderRadius?: number;
618
+ /** Additional className */
619
+ className?: string;
620
+ }
621
+ /**
622
+ * Skeleton component for loading placeholders.
623
+ *
624
+ * @example
625
+ * // Text skeleton
626
+ * <Skeleton variant="text" width="60%" />
627
+ *
628
+ * // Avatar skeleton
629
+ * <Skeleton variant="circle" width={48} height={48} />
630
+ *
631
+ * // Card skeleton
632
+ * <Skeleton variant="rounded" width="100%" height={200} />
633
+ */
634
+ declare function Skeleton({ variant, animation, width, height, borderRadius, className, style, ...props }: SkeletonProps): react_jsx_runtime.JSX.Element;
635
+ interface SkeletonTextProps {
636
+ /** Number of lines */
637
+ lines?: number;
638
+ /** Last line width (percentage) */
639
+ lastLineWidth?: string;
640
+ /** Gap between lines */
641
+ gap?: number;
642
+ /** Animation type */
643
+ animation?: SkeletonAnimation;
644
+ className?: string;
645
+ }
646
+ /**
647
+ * Multi-line text skeleton.
648
+ */
649
+ declare function SkeletonText({ lines, lastLineWidth, gap, animation, className, }: SkeletonTextProps): react_jsx_runtime.JSX.Element;
650
+ interface SkeletonCircleProps {
651
+ /** Size in pixels */
652
+ size?: number;
653
+ /** Animation type */
654
+ animation?: SkeletonAnimation;
655
+ className?: string;
656
+ }
657
+ /**
658
+ * Circle skeleton for avatars.
659
+ */
660
+ declare function SkeletonCircle({ size, animation, className, }: SkeletonCircleProps): react_jsx_runtime.JSX.Element;
661
+ interface SkeletonCardProps {
662
+ /** Show image area */
663
+ hasImage?: boolean;
664
+ /** Image height */
665
+ imageHeight?: number;
666
+ /** Number of text lines */
667
+ lines?: number;
668
+ /** Animation type */
669
+ animation?: SkeletonAnimation;
670
+ className?: string;
671
+ }
672
+ /**
673
+ * Card skeleton pattern.
674
+ */
675
+ declare function SkeletonCard({ hasImage, imageHeight, lines, animation, className, }: SkeletonCardProps): react_jsx_runtime.JSX.Element;
676
+ interface SkeletonListItemProps {
677
+ /** Show avatar */
678
+ hasAvatar?: boolean;
679
+ /** Avatar size */
680
+ avatarSize?: number;
681
+ /** Number of text lines */
682
+ lines?: number;
683
+ /** Animation type */
684
+ animation?: SkeletonAnimation;
685
+ className?: string;
686
+ }
687
+ /**
688
+ * List item skeleton pattern.
689
+ */
690
+ declare function SkeletonListItem({ hasAvatar, avatarSize, lines, animation, className, }: SkeletonListItemProps): react_jsx_runtime.JSX.Element;
691
+
692
+ type TabsVariant = 'line' | 'enclosed' | 'soft-rounded';
693
+ type TabsOrientation = 'horizontal' | 'vertical';
694
+ interface TabsProps extends ViewProps {
695
+ /** Currently active tab index */
696
+ defaultIndex?: number;
697
+ /** Controlled active index */
698
+ index?: number;
699
+ /** Callback when tab changes */
700
+ onChange?: (index: number) => void;
701
+ /** Visual variant */
702
+ variant?: TabsVariant;
703
+ /** Tab orientation */
704
+ orientation?: TabsOrientation;
705
+ /** Additional className */
706
+ className?: string;
707
+ children?: React.ReactNode;
708
+ }
709
+ /**
710
+ * Tabs component for tabbed navigation.
711
+ *
712
+ * @example
713
+ * <Tabs defaultIndex={0} onChange={(i) => console.log(i)}>
714
+ * <TabList>
715
+ * <Tab>Tab 1</Tab>
716
+ * <Tab>Tab 2</Tab>
717
+ * <Tab>Tab 3</Tab>
718
+ * </TabList>
719
+ * <TabPanels>
720
+ * <TabPanel>Content 1</TabPanel>
721
+ * <TabPanel>Content 2</TabPanel>
722
+ * <TabPanel>Content 3</TabPanel>
723
+ * </TabPanels>
724
+ * </Tabs>
725
+ */
726
+ declare function Tabs({ defaultIndex, index, onChange, variant, orientation, className, children, ...props }: TabsProps): react_jsx_runtime.JSX.Element;
727
+ interface TabListProps {
728
+ children?: React.ReactNode;
729
+ className?: string;
730
+ }
731
+ /**
732
+ * Container for Tab components.
733
+ */
734
+ declare function TabList({ children, className }: TabListProps): react_jsx_runtime.JSX.Element;
735
+ interface TabProps {
736
+ /** Tab index (injected by TabList) */
737
+ index?: number;
738
+ /** Whether the tab is disabled */
739
+ isDisabled?: boolean;
740
+ /** Additional className */
741
+ className?: string;
742
+ children?: React.ReactNode;
743
+ }
744
+ /**
745
+ * Individual tab button.
746
+ */
747
+ declare function Tab({ index, isDisabled, className, children, }: TabProps): react_jsx_runtime.JSX.Element;
748
+ interface TabPanelsProps {
749
+ children?: React.ReactNode;
750
+ className?: string;
751
+ }
752
+ /**
753
+ * Container for TabPanel components.
754
+ */
755
+ declare function TabPanels({ children, className }: TabPanelsProps): react_jsx_runtime.JSX.Element;
756
+ interface TabPanelProps {
757
+ children?: React.ReactNode;
758
+ className?: string;
759
+ }
760
+ /**
761
+ * Individual tab panel content.
762
+ */
763
+ declare function TabPanel({ children, className }: TabPanelProps): react_jsx_runtime.JSX.Element;
764
+
765
+ type ChipVariant = 'solid' | 'subtle' | 'outline';
766
+ type ChipColor = 'default' | 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info';
767
+ type ChipSize = 'sm' | 'md' | 'lg';
768
+ interface ChipProps extends ViewProps {
769
+ /** Visual variant */
770
+ variant?: ChipVariant;
771
+ /** Color scheme */
772
+ color?: ChipColor;
773
+ /** Size */
774
+ size?: ChipSize;
775
+ /** Left element (icon, avatar) */
776
+ leftElement?: React.ReactNode;
777
+ /** Whether the chip is dismissible */
778
+ onDelete?: () => void;
779
+ /** Whether the chip is clickable */
780
+ onPress?: () => void;
781
+ /** Whether the chip is disabled */
782
+ isDisabled?: boolean;
783
+ /** Additional className */
784
+ className?: string;
785
+ children?: React.ReactNode;
786
+ }
787
+ /**
788
+ * Chip component for tags, labels, and filters.
789
+ *
790
+ * @example
791
+ * <Chip>Default</Chip>
792
+ * <Chip color="primary" variant="subtle">Primary Subtle</Chip>
793
+ * <Chip onDelete={() => {}}>Dismissible</Chip>
794
+ * <Chip onPress={() => {}}>Clickable</Chip>
795
+ */
796
+ declare function Chip({ variant, color, size, leftElement, onDelete, onPress, isDisabled, className, children, ...props }: ChipProps): react_jsx_runtime.JSX.Element;
797
+
798
+ type LinkUnderline = 'always' | 'hover' | 'none';
799
+ type LinkColor = 'default' | 'primary' | 'secondary' | 'inherit';
800
+ interface LinkProps extends Omit<TextProps, 'onPress'> {
801
+ /** URL to navigate to (for accessibility) */
802
+ href?: string;
803
+ /** Underline behavior */
804
+ underline?: LinkUnderline;
805
+ /** Link color */
806
+ color?: LinkColor;
807
+ /** Whether the link opens in a new tab/window */
808
+ isExternal?: boolean;
809
+ /** Press handler */
810
+ onPress?: () => void;
811
+ /** Whether the link is disabled */
812
+ isDisabled?: boolean;
813
+ /** Additional className */
814
+ className?: string;
815
+ children?: React.ReactNode;
816
+ }
817
+ /**
818
+ * Link component for navigation.
819
+ *
820
+ * @example
821
+ * <Link href="https://example.com">Visit Site</Link>
822
+ * <Link href="https://example.com" isExternal>External Link ↗</Link>
823
+ * <Link onPress={() => navigate('/page')}>Go to Page</Link>
824
+ */
825
+ declare function Link({ href, underline, color, isExternal, onPress, isDisabled, className, children, ...props }: LinkProps): react_jsx_runtime.JSX.Element;
826
+
827
+ type TooltipPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'right';
828
+ interface TooltipProps extends ViewProps {
829
+ /** Tooltip content */
830
+ label: string;
831
+ /** Trigger element */
832
+ children: React.ReactNode;
833
+ /** Tooltip placement */
834
+ placement?: TooltipPlacement;
835
+ /** Delay before showing (ms) */
836
+ openDelay?: number;
837
+ /** Delay before hiding (ms) */
838
+ closeDelay?: number;
839
+ /** Whether tooltip has an arrow */
840
+ hasArrow?: boolean;
841
+ /** Whether tooltip is disabled */
842
+ isDisabled?: boolean;
843
+ /** Additional className for tooltip */
844
+ className?: string;
845
+ }
846
+ /**
847
+ * Tooltip component for showing additional information on hover/press.
848
+ *
849
+ * Note: On native, tooltips appear on long press. On web, they appear on hover.
850
+ *
851
+ * @example
852
+ * <Tooltip label="This is a tooltip">
853
+ * <Button><ButtonText>Hover me</ButtonText></Button>
854
+ * </Tooltip>
855
+ */
856
+ declare function Tooltip({ label, children, placement, openDelay, closeDelay, hasArrow, isDisabled, className, ...props }: TooltipProps): react_jsx_runtime.JSX.Element;
857
+
858
+ interface CollapseProps extends ViewProps {
859
+ /** Whether the collapse is initially open */
860
+ defaultIsOpen?: boolean;
861
+ /** Controlled open state */
862
+ isOpen?: boolean;
863
+ /** Callback when state changes */
864
+ onToggle?: (isOpen: boolean) => void;
865
+ /** Additional className */
866
+ className?: string;
867
+ children?: React.ReactNode;
868
+ }
869
+ /**
870
+ * Collapsible content container.
871
+ *
872
+ * @example
873
+ * <Collapse>
874
+ * <CollapseButton>
875
+ * <Text>Click to expand</Text>
876
+ * </CollapseButton>
877
+ * <CollapseContent>
878
+ * <Text>Hidden content</Text>
879
+ * </CollapseContent>
880
+ * </Collapse>
881
+ */
882
+ declare function Collapse({ defaultIsOpen, isOpen: controlledIsOpen, onToggle, className, children, ...props }: CollapseProps): react_jsx_runtime.JSX.Element;
883
+ interface CollapseButtonProps {
884
+ children?: React.ReactNode;
885
+ className?: string;
886
+ }
887
+ /**
888
+ * Button to toggle collapse state.
889
+ */
890
+ declare function CollapseButton({ children, className }: CollapseButtonProps): react_jsx_runtime.JSX.Element;
891
+ interface CollapseContentProps {
892
+ children?: React.ReactNode;
893
+ className?: string;
894
+ }
895
+ /**
896
+ * Collapsible content area.
897
+ */
898
+ declare function CollapseContent({ children, className }: CollapseContentProps): react_jsx_runtime.JSX.Element | null;
899
+ interface AccordionProps extends ViewProps {
900
+ /** Allow multiple items to be open */
901
+ allowMultiple?: boolean;
902
+ /** Default open item indices */
903
+ defaultIndex?: number[];
904
+ /** Additional className */
905
+ className?: string;
906
+ children?: React.ReactNode;
907
+ }
908
+ /**
909
+ * Accordion component for multiple collapsible sections.
910
+ *
911
+ * @example
912
+ * <Accordion>
913
+ * <AccordionItem>
914
+ * <AccordionButton>Section 1</AccordionButton>
915
+ * <AccordionPanel>Content 1</AccordionPanel>
916
+ * </AccordionItem>
917
+ * <AccordionItem>
918
+ * <AccordionButton>Section 2</AccordionButton>
919
+ * <AccordionPanel>Content 2</AccordionPanel>
920
+ * </AccordionItem>
921
+ * </Accordion>
922
+ */
923
+ declare function Accordion({ allowMultiple, defaultIndex, className, children, ...props }: AccordionProps): react_jsx_runtime.JSX.Element;
924
+ interface AccordionItemProps {
925
+ index?: number;
926
+ children?: React.ReactNode;
927
+ className?: string;
928
+ }
929
+ /**
930
+ * Individual accordion item.
931
+ */
932
+ declare function AccordionItem({ index, children, className }: AccordionItemProps): react_jsx_runtime.JSX.Element;
933
+ interface AccordionButtonProps {
934
+ isOpen?: boolean;
935
+ onToggle?: () => void;
936
+ children?: React.ReactNode;
937
+ className?: string;
938
+ }
939
+ /**
940
+ * Accordion item toggle button.
941
+ */
942
+ declare function AccordionButton({ isOpen, onToggle, children, className, }: AccordionButtonProps): react_jsx_runtime.JSX.Element;
943
+ interface AccordionPanelProps {
944
+ isOpen?: boolean;
945
+ children?: React.ReactNode;
946
+ className?: string;
947
+ }
948
+ /**
949
+ * Accordion item content panel.
950
+ */
951
+ declare function AccordionPanel({ isOpen, children, className }: AccordionPanelProps): react_jsx_runtime.JSX.Element | null;
952
+
953
+ interface BreadcrumbsProps extends ViewProps {
954
+ /** Custom separator */
955
+ separator?: React.ReactNode;
956
+ /** Maximum items to show (with collapse) */
957
+ maxItems?: number;
958
+ /** Additional className */
959
+ className?: string;
960
+ children?: React.ReactNode;
961
+ }
962
+ /**
963
+ * Breadcrumbs navigation component.
964
+ *
965
+ * @example
966
+ * <Breadcrumbs>
967
+ * <BreadcrumbItem href="/">Home</BreadcrumbItem>
968
+ * <BreadcrumbItem href="/products">Products</BreadcrumbItem>
969
+ * <BreadcrumbItem isCurrentPage>Widget</BreadcrumbItem>
970
+ * </Breadcrumbs>
971
+ */
972
+ declare function Breadcrumbs({ separator, maxItems, className, children, ...props }: BreadcrumbsProps): react_jsx_runtime.JSX.Element;
973
+ interface BreadcrumbItemProps {
974
+ /** Navigation URL */
975
+ href?: string;
976
+ /** Whether this is the current page */
977
+ isCurrentPage?: boolean;
978
+ /** Press handler */
979
+ onPress?: () => void;
980
+ /** Additional className */
981
+ className?: string;
982
+ children?: React.ReactNode;
983
+ }
984
+ /**
985
+ * Individual breadcrumb item.
986
+ */
987
+ declare function BreadcrumbItem({ href, isCurrentPage, onPress, className, children, }: BreadcrumbItemProps): react_jsx_runtime.JSX.Element;
988
+
989
+ type PopoverPlacement = 'top' | 'bottom' | 'left' | 'right';
990
+ interface PopoverProps extends ViewProps {
991
+ /** Placement of the popover */
992
+ placement?: PopoverPlacement;
993
+ /** Controlled open state */
994
+ isOpen?: boolean;
995
+ /** Callback when open state changes */
996
+ onOpenChange?: (isOpen: boolean) => void;
997
+ /** Whether clicking outside closes the popover */
998
+ closeOnClickOutside?: boolean;
999
+ /** Additional className */
1000
+ className?: string;
1001
+ children?: React.ReactNode;
1002
+ }
1003
+ /**
1004
+ * Popover component for displaying floating content.
1005
+ *
1006
+ * @example
1007
+ * <Popover>
1008
+ * <PopoverTrigger>
1009
+ * <Button><ButtonText>Open</ButtonText></Button>
1010
+ * </PopoverTrigger>
1011
+ * <PopoverContent>
1012
+ * <Text>Popover content</Text>
1013
+ * </PopoverContent>
1014
+ * </Popover>
1015
+ */
1016
+ declare function Popover({ placement, isOpen: controlledIsOpen, onOpenChange, closeOnClickOutside, className, children, ...props }: PopoverProps): react_jsx_runtime.JSX.Element;
1017
+ interface PopoverTriggerProps {
1018
+ children: React.ReactNode;
1019
+ className?: string;
1020
+ }
1021
+ /**
1022
+ * Trigger element for the popover.
1023
+ */
1024
+ declare function PopoverTrigger({ children, className }: PopoverTriggerProps): react_jsx_runtime.JSX.Element;
1025
+ interface PopoverContentProps {
1026
+ children?: React.ReactNode;
1027
+ className?: string;
1028
+ }
1029
+ /**
1030
+ * Content container for the popover.
1031
+ */
1032
+ declare function PopoverContent({ children, className }: PopoverContentProps): react_jsx_runtime.JSX.Element | null;
1033
+ interface PopoverCloseButtonProps {
1034
+ children?: React.ReactNode;
1035
+ className?: string;
1036
+ }
1037
+ /**
1038
+ * Button to close the popover.
1039
+ */
1040
+ declare function PopoverCloseButton({ children, className }: PopoverCloseButtonProps): react_jsx_runtime.JSX.Element;
1041
+
1042
+ interface MenuProps extends ViewProps {
1043
+ /** Controlled open state */
1044
+ isOpen?: boolean;
1045
+ /** Callback when open state changes */
1046
+ onOpenChange?: (isOpen: boolean) => void;
1047
+ /** Additional className */
1048
+ className?: string;
1049
+ children?: React.ReactNode;
1050
+ }
1051
+ /**
1052
+ * Menu component for dropdown menus.
1053
+ *
1054
+ * @example
1055
+ * <Menu>
1056
+ * <MenuTrigger>
1057
+ * <Button><ButtonText>Options</ButtonText></Button>
1058
+ * </MenuTrigger>
1059
+ * <MenuList>
1060
+ * <MenuItem onPress={() => {}}>Edit</MenuItem>
1061
+ * <MenuItem onPress={() => {}}>Delete</MenuItem>
1062
+ * <MenuDivider />
1063
+ * <MenuItem onPress={() => {}} isDestructive>Remove</MenuItem>
1064
+ * </MenuList>
1065
+ * </Menu>
1066
+ */
1067
+ declare function Menu({ isOpen: controlledIsOpen, onOpenChange, className, children, ...props }: MenuProps): react_jsx_runtime.JSX.Element;
1068
+ interface MenuTriggerProps {
1069
+ children: React.ReactNode;
1070
+ className?: string;
1071
+ }
1072
+ /**
1073
+ * Trigger element for the menu.
1074
+ */
1075
+ declare function MenuTrigger({ children, className }: MenuTriggerProps): react_jsx_runtime.JSX.Element;
1076
+ interface MenuListProps {
1077
+ children?: React.ReactNode;
1078
+ className?: string;
1079
+ }
1080
+ /**
1081
+ * Container for menu items.
1082
+ */
1083
+ declare function MenuList({ children, className }: MenuListProps): react_jsx_runtime.JSX.Element | null;
1084
+ interface MenuItemProps {
1085
+ /** Press handler */
1086
+ onPress?: () => void;
1087
+ /** Whether the item is disabled */
1088
+ isDisabled?: boolean;
1089
+ /** Whether the item is destructive (shows in red) */
1090
+ isDestructive?: boolean;
1091
+ /** Icon element */
1092
+ icon?: React.ReactNode;
1093
+ /** Additional className */
1094
+ className?: string;
1095
+ children?: React.ReactNode;
1096
+ }
1097
+ /**
1098
+ * Individual menu item.
1099
+ */
1100
+ declare function MenuItem({ onPress, isDisabled, isDestructive, icon, className, children, }: MenuItemProps): react_jsx_runtime.JSX.Element;
1101
+ interface MenuDividerProps {
1102
+ className?: string;
1103
+ }
1104
+ /**
1105
+ * Divider between menu items.
1106
+ */
1107
+ declare function MenuDivider({ className }: MenuDividerProps): react_jsx_runtime.JSX.Element;
1108
+ interface MenuGroupProps {
1109
+ /** Group label */
1110
+ label?: string;
1111
+ children?: React.ReactNode;
1112
+ className?: string;
1113
+ }
1114
+ /**
1115
+ * Group of menu items with optional label.
1116
+ */
1117
+ declare function MenuGroup({ label, children, className }: MenuGroupProps): react_jsx_runtime.JSX.Element;
1118
+
1119
+ interface SelectOption<T = string> {
1120
+ value: T;
1121
+ label: string;
1122
+ isDisabled?: boolean;
1123
+ }
1124
+ interface SelectProps<T = string> extends ViewProps {
1125
+ /** Selected value (single mode) */
1126
+ value?: T | null;
1127
+ /** Selected values (multi mode) */
1128
+ values?: T[];
1129
+ /** Callback when value changes (single mode) */
1130
+ onChange?: (value: T | null) => void;
1131
+ /** Callback when values change (multi mode) */
1132
+ onChangeMulti?: (values: T[]) => void;
1133
+ /** Enable multi-select */
1134
+ isMulti?: boolean;
1135
+ /** Placeholder text */
1136
+ placeholder?: string;
1137
+ /** Whether the select is disabled */
1138
+ isDisabled?: boolean;
1139
+ /** Whether the select has an error */
1140
+ isInvalid?: boolean;
1141
+ /** Options to display */
1142
+ options: SelectOption<T>[];
1143
+ /** Additional className */
1144
+ className?: string;
1145
+ }
1146
+ /**
1147
+ * Select component for single or multi-selection.
1148
+ *
1149
+ * @example
1150
+ * // Single select
1151
+ * <Select
1152
+ * value={value}
1153
+ * onChange={setValue}
1154
+ * options={[
1155
+ * { value: '1', label: 'Option 1' },
1156
+ * { value: '2', label: 'Option 2' },
1157
+ * ]}
1158
+ * />
1159
+ *
1160
+ * // Multi select
1161
+ * <Select
1162
+ * isMulti
1163
+ * values={values}
1164
+ * onChangeMulti={setValues}
1165
+ * options={options}
1166
+ * />
1167
+ */
1168
+ declare function Select<T extends string = string>({ value, values, onChange, onChangeMulti, isMulti, placeholder, isDisabled, isInvalid, options, className, ...props }: SelectProps<T>): react_jsx_runtime.JSX.Element;
1169
+
1170
+ type ToolbarButtonVariant = 'default' | 'neumorphic';
1171
+ type ToolbarButtonSize = 'sm' | 'md' | 'lg';
1172
+ interface ToolbarButtonContextType {
1173
+ isOpen: boolean;
1174
+ setIsOpen: (open: boolean) => void;
1175
+ }
1176
+ interface ToolbarButtonProps extends ViewProps {
1177
+ /** Button label */
1178
+ label: string;
1179
+ /** Icon component */
1180
+ icon?: React.ReactNode;
1181
+ /**
1182
+ * Whether the button is in active/selected state.
1183
+ * - `true`: pressed/active appearance (darker, white text, orange icon)
1184
+ * - `undefined`: pressed appearance (darker, white text/icon)
1185
+ * - `false`: raised/inactive appearance (lighter, gray text/icon)
1186
+ */
1187
+ isActive?: boolean;
1188
+ /** Whether the button is disabled */
1189
+ isDisabled?: boolean;
1190
+ /** Size of the button */
1191
+ size?: ToolbarButtonSize;
1192
+ /** Visual variant */
1193
+ variant?: ToolbarButtonVariant;
1194
+ /** Tooltip text (shown when label is hidden) */
1195
+ tooltip?: string;
1196
+ /** Whether to show label (false = icon only) */
1197
+ showLabel?: boolean;
1198
+ /** Press handler */
1199
+ onPress?: () => void;
1200
+ /** Menu content (renders in popover) */
1201
+ menuContent?: React.ReactNode;
1202
+ /** Additional className */
1203
+ className?: string;
1204
+ }
1205
+ /**
1206
+ * ToolbarButton component for toolbar actions with toggle state support.
1207
+ *
1208
+ * Features:
1209
+ * - Neumorphic styling with inset shadows for pressed/raised 3D effect
1210
+ * - Active (pressed) state is the default visual appearance
1211
+ * - Set isActive={false} explicitly for the raised/inactive appearance
1212
+ * - Orange accent color on icon when isActive={true}
1213
+ * - Hover states that lighten background and remove shadows
1214
+ *
1215
+ * @example
1216
+ * // Toggle button - orange icon when active
1217
+ * <ToolbarButton
1218
+ * label="Settings"
1219
+ * icon={<SettingsIcon />}
1220
+ * isActive={isSettingsOpen}
1221
+ * onPress={() => setIsSettingsOpen(!isSettingsOpen)}
1222
+ * />
1223
+ *
1224
+ * @example
1225
+ * // Explicitly inactive (raised appearance)
1226
+ * <ToolbarButton
1227
+ * label="Filter"
1228
+ * icon={<FilterIcon />}
1229
+ * isActive={false}
1230
+ * />
1231
+ */
1232
+ declare function ToolbarButton({ label, icon, isActive, isDisabled, size, variant, tooltip, showLabel, onPress, menuContent, className, children, ...props }: ToolbarButtonProps): react_jsx_runtime.JSX.Element;
1233
+ interface ToolbarButtonGroupProps extends ViewProps {
1234
+ /** Orientation of the button group */
1235
+ orientation?: 'horizontal' | 'vertical';
1236
+ /** Gap between buttons */
1237
+ gap?: 'none' | 'sm' | 'md';
1238
+ /** Additional className */
1239
+ className?: string;
1240
+ children?: React.ReactNode;
1241
+ }
1242
+ /**
1243
+ * Container for grouping toolbar buttons together.
1244
+ */
1245
+ declare function ToolbarButtonGroup({ orientation, gap, className, children, ...props }: ToolbarButtonGroupProps): react_jsx_runtime.JSX.Element;
1246
+ /**
1247
+ * Hook to access toolbar button context (for custom menu content)
1248
+ */
1249
+ declare function useToolbarButton(): ToolbarButtonContextType;
1250
+
1251
+ type RadioSize = 'sm' | 'md' | 'lg';
1252
+ type RadioColor = 'primary' | 'secondary' | 'success' | 'error';
1253
+ interface RadioGroupProps extends ViewProps {
1254
+ /** Current selected value */
1255
+ value: string | null;
1256
+ /** Callback when value changes */
1257
+ onChange: (value: string) => void;
1258
+ /** Group name for form submission */
1259
+ name?: string;
1260
+ /** Whether all radios are disabled */
1261
+ isDisabled?: boolean;
1262
+ /** Size for all radios */
1263
+ size?: RadioSize;
1264
+ /** Color for all radios */
1265
+ color?: RadioColor;
1266
+ /** Orientation of the group */
1267
+ orientation?: 'horizontal' | 'vertical';
1268
+ /** Gap between items */
1269
+ gap?: 'sm' | 'md' | 'lg';
1270
+ /** Label for the group */
1271
+ label?: string;
1272
+ /** Additional className */
1273
+ className?: string;
1274
+ children?: React.ReactNode;
1275
+ }
1276
+ /**
1277
+ * RadioGroup component for grouping radio buttons.
1278
+ *
1279
+ * @example
1280
+ * <RadioGroup value={selected} onChange={setSelected}>
1281
+ * <Radio value="option1">Option 1</Radio>
1282
+ * <Radio value="option2">Option 2</Radio>
1283
+ * <Radio value="option3">Option 3</Radio>
1284
+ * </RadioGroup>
1285
+ */
1286
+ declare function RadioGroup({ value, onChange, name, isDisabled, size, color, orientation, gap, label, className, children, ...props }: RadioGroupProps): react_jsx_runtime.JSX.Element;
1287
+ interface RadioProps extends ViewProps {
1288
+ /** Value of this radio option */
1289
+ value: string;
1290
+ /** Whether this radio is disabled */
1291
+ isDisabled?: boolean;
1292
+ /** Size override */
1293
+ size?: RadioSize;
1294
+ /** Color override */
1295
+ color?: RadioColor;
1296
+ /** Additional className */
1297
+ className?: string;
1298
+ children?: React.ReactNode;
1299
+ }
1300
+ /**
1301
+ * Radio button component.
1302
+ *
1303
+ * @example
1304
+ * <Radio value="option1">Option 1</Radio>
1305
+ */
1306
+ declare function Radio({ value, isDisabled: radioDisabled, size: radioSize, color: radioColor, className, children, ...props }: RadioProps): react_jsx_runtime.JSX.Element;
1307
+
1308
+ type DrawerPlacement = 'left' | 'right' | 'top' | 'bottom';
1309
+ type DrawerSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
1310
+ interface DrawerProps extends ViewProps {
1311
+ /** Whether the drawer is open */
1312
+ isOpen: boolean;
1313
+ /** Callback when drawer should close */
1314
+ onClose: () => void;
1315
+ /** Placement of the drawer */
1316
+ placement?: DrawerPlacement;
1317
+ /** Size of the drawer */
1318
+ size?: DrawerSize;
1319
+ /** Whether clicking the backdrop closes the drawer */
1320
+ closeOnOverlayClick?: boolean;
1321
+ /** Whether to show the close button */
1322
+ showCloseButton?: boolean;
1323
+ /** Title for the drawer header */
1324
+ title?: string;
1325
+ /** Additional className for the drawer content */
1326
+ className?: string;
1327
+ children?: React.ReactNode;
1328
+ }
1329
+ /**
1330
+ * Drawer component for side panel overlays.
1331
+ *
1332
+ * @example
1333
+ * <Drawer
1334
+ * isOpen={isOpen}
1335
+ * onClose={() => setIsOpen(false)}
1336
+ * title="Settings"
1337
+ * placement="right"
1338
+ * >
1339
+ * <DrawerBody>
1340
+ * <Text>Drawer content</Text>
1341
+ * </DrawerBody>
1342
+ * </Drawer>
1343
+ */
1344
+ declare function Drawer({ isOpen, onClose, placement, size, closeOnOverlayClick, showCloseButton, title, className, children, ...props }: DrawerProps): react_jsx_runtime.JSX.Element | null;
1345
+ interface DrawerHeaderProps extends ViewProps {
1346
+ /** Additional className */
1347
+ className?: string;
1348
+ children?: React.ReactNode;
1349
+ }
1350
+ /**
1351
+ * Header section for the drawer.
1352
+ */
1353
+ declare function DrawerHeader({ className, children, ...props }: DrawerHeaderProps): react_jsx_runtime.JSX.Element;
1354
+ interface DrawerBodyProps extends ViewProps {
1355
+ /** Whether the body should scroll */
1356
+ scrollable?: boolean;
1357
+ /** Additional className */
1358
+ className?: string;
1359
+ children?: React.ReactNode;
1360
+ }
1361
+ /**
1362
+ * Body/content section for the drawer.
1363
+ */
1364
+ declare function DrawerBody({ scrollable, className, children, ...props }: DrawerBodyProps): react_jsx_runtime.JSX.Element;
1365
+ interface DrawerFooterProps extends ViewProps {
1366
+ /** Additional className */
1367
+ className?: string;
1368
+ children?: React.ReactNode;
1369
+ }
1370
+ /**
1371
+ * Footer section for the drawer, typically for action buttons.
1372
+ */
1373
+ declare function DrawerFooter({ className, children, ...props }: DrawerFooterProps): react_jsx_runtime.JSX.Element;
1374
+
1375
+ type ProgressSize = 'sm' | 'md' | 'lg';
1376
+ type ProgressColor = 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info';
1377
+ type ProgressVariant = 'linear' | 'circular';
1378
+ interface ProgressProps extends ViewProps {
1379
+ /** Current value (0-100) */
1380
+ value?: number;
1381
+ /** Maximum value */
1382
+ max?: number;
1383
+ /** Whether the progress is indeterminate */
1384
+ isIndeterminate?: boolean;
1385
+ /** Size of the progress bar */
1386
+ size?: ProgressSize;
1387
+ /** Color of the progress */
1388
+ color?: ProgressColor;
1389
+ /** Whether to show the value label */
1390
+ showValue?: boolean;
1391
+ /** Custom value format function */
1392
+ formatValue?: (value: number, max: number) => string;
1393
+ /** Label text */
1394
+ label?: string;
1395
+ /** Additional className */
1396
+ className?: string;
1397
+ }
1398
+ /**
1399
+ * Linear progress bar component.
1400
+ *
1401
+ * @example
1402
+ * // Determinate progress
1403
+ * <Progress value={75} />
1404
+ *
1405
+ * @example
1406
+ * // With label and value
1407
+ * <Progress value={45} label="Uploading..." showValue />
1408
+ *
1409
+ * @example
1410
+ * // Indeterminate progress
1411
+ * <Progress isIndeterminate />
1412
+ */
1413
+ declare function Progress({ value, max, isIndeterminate, size, color, showValue, formatValue, label, className, ...props }: ProgressProps): react_jsx_runtime.JSX.Element;
1414
+ interface CircularProgressProps extends ViewProps {
1415
+ /** Current value (0-100) */
1416
+ value?: number;
1417
+ /** Maximum value */
1418
+ max?: number;
1419
+ /** Whether the progress is indeterminate */
1420
+ isIndeterminate?: boolean;
1421
+ /** Size of the progress circle (diameter) */
1422
+ size?: number;
1423
+ /** Stroke width */
1424
+ strokeWidth?: number;
1425
+ /** Color of the progress */
1426
+ color?: ProgressColor;
1427
+ /** Whether to show the value in center */
1428
+ showValue?: boolean;
1429
+ /** Custom value format function */
1430
+ formatValue?: (value: number, max: number) => string;
1431
+ /** Additional className */
1432
+ className?: string;
1433
+ }
1434
+ /**
1435
+ * Circular progress indicator component.
1436
+ *
1437
+ * @example
1438
+ * <CircularProgress value={75} showValue />
1439
+ */
1440
+ declare function CircularProgress({ value, max, isIndeterminate, size, strokeWidth, color, showValue, formatValue, className, ...props }: CircularProgressProps): react_jsx_runtime.JSX.Element;
1441
+ interface ProgressStepsProps extends ViewProps {
1442
+ /** Current step (0-indexed) */
1443
+ currentStep: number;
1444
+ /** Total number of steps */
1445
+ totalSteps: number;
1446
+ /** Color of completed steps */
1447
+ color?: ProgressColor;
1448
+ /** Size of step indicators */
1449
+ size?: ProgressSize;
1450
+ /** Labels for each step */
1451
+ labels?: string[];
1452
+ /** Additional className */
1453
+ className?: string;
1454
+ }
1455
+ /**
1456
+ * Step-based progress indicator.
1457
+ *
1458
+ * @example
1459
+ * <ProgressSteps currentStep={2} totalSteps={4} labels={['Cart', 'Shipping', 'Payment', 'Done']} />
1460
+ */
1461
+ declare function ProgressSteps({ currentStep, totalSteps, color, size, labels, className, ...props }: ProgressStepsProps): react_jsx_runtime.JSX.Element;
1462
+
1463
+ type ToastStatus = 'success' | 'error' | 'warning' | 'info';
1464
+ type ToastPosition = 'top' | 'top-right' | 'top-left' | 'bottom' | 'bottom-right' | 'bottom-left';
1465
+ interface ToastConfig {
1466
+ /** Unique ID for the toast */
1467
+ id: string;
1468
+ /** Title text */
1469
+ title: string;
1470
+ /** Description text */
1471
+ description?: string;
1472
+ /** Status/type of the toast */
1473
+ status?: ToastStatus;
1474
+ /** Duration in milliseconds (0 = no auto-dismiss) */
1475
+ duration?: number;
1476
+ /** Whether the toast can be dismissed */
1477
+ isClosable?: boolean;
1478
+ /** Callback when toast is closed */
1479
+ onClose?: () => void;
1480
+ }
1481
+ interface ToastContextType {
1482
+ toasts: ToastConfig[];
1483
+ addToast: (config: Omit<ToastConfig, 'id'>) => string;
1484
+ removeToast: (id: string) => void;
1485
+ removeAllToasts: () => void;
1486
+ }
1487
+ interface ToastProviderProps {
1488
+ /** Position of toasts on screen */
1489
+ position?: ToastPosition;
1490
+ /** Default duration for toasts */
1491
+ defaultDuration?: number;
1492
+ /** Maximum number of visible toasts */
1493
+ maxToasts?: number;
1494
+ children?: React.ReactNode;
1495
+ }
1496
+ /**
1497
+ * Provider component for the toast notification system.
1498
+ *
1499
+ * @example
1500
+ * // Wrap your app with ToastProvider
1501
+ * <ToastProvider position="top-right">
1502
+ * <App />
1503
+ * </ToastProvider>
1504
+ *
1505
+ * // Then use the useToast hook in any component
1506
+ * const { addToast } = useToast()
1507
+ * addToast({ title: 'Success!', status: 'success' })
1508
+ */
1509
+ declare function ToastProvider({ position, defaultDuration, maxToasts, children, }: ToastProviderProps): react_jsx_runtime.JSX.Element;
1510
+ /**
1511
+ * Hook to access toast functions.
1512
+ *
1513
+ * @example
1514
+ * const { addToast, removeAllToasts } = useToast()
1515
+ *
1516
+ * // Show a success toast
1517
+ * addToast({
1518
+ * title: 'Saved!',
1519
+ * description: 'Your changes have been saved.',
1520
+ * status: 'success'
1521
+ * })
1522
+ */
1523
+ declare function useToast(): ToastContextType;
1524
+ interface ToastProps extends ViewProps {
1525
+ /** Title text */
1526
+ title: string;
1527
+ /** Description text */
1528
+ description?: string;
1529
+ /** Status/type of the toast */
1530
+ status?: ToastStatus;
1531
+ /** Whether to show the icon */
1532
+ showIcon?: boolean;
1533
+ /** Whether the toast can be dismissed */
1534
+ isClosable?: boolean;
1535
+ /** Callback when close button is clicked */
1536
+ onClose?: () => void;
1537
+ /** Additional className */
1538
+ className?: string;
1539
+ }
1540
+ /**
1541
+ * Standalone Toast component (for static rendering without provider).
1542
+ *
1543
+ * @example
1544
+ * <Toast
1545
+ * title="Success!"
1546
+ * description="Your changes have been saved."
1547
+ * status="success"
1548
+ * />
1549
+ */
1550
+ declare function Toast({ title, description, status, showIcon, isClosable, onClose, className, ...props }: ToastProps): react_jsx_runtime.JSX.Element;
1551
+
1552
+ interface AutocompleteOption<T = string> {
1553
+ value: T;
1554
+ label: string;
1555
+ description?: string;
1556
+ isDisabled?: boolean;
1557
+ }
1558
+ interface AutocompleteProps<T = string> extends ViewProps {
1559
+ /** Available options */
1560
+ options: AutocompleteOption<T>[];
1561
+ /** Current selected value */
1562
+ value?: T | null;
1563
+ /** Callback when value changes */
1564
+ onChange?: (value: T | null) => void;
1565
+ /** Callback when input text changes (for async loading) */
1566
+ onInputChange?: (inputValue: string) => void;
1567
+ /** Minimum characters before showing options */
1568
+ minChars?: number;
1569
+ /** Placeholder text */
1570
+ placeholder?: string;
1571
+ /** Label text */
1572
+ label?: string;
1573
+ /** Helper text */
1574
+ helperText?: string;
1575
+ /** Error message */
1576
+ errorMessage?: string;
1577
+ /** Whether the field is required */
1578
+ isRequired?: boolean;
1579
+ /** Whether the field is disabled */
1580
+ isDisabled?: boolean;
1581
+ /** Whether the field is loading */
1582
+ isLoading?: boolean;
1583
+ /** Whether to allow clearing the value */
1584
+ isClearable?: boolean;
1585
+ /** Custom filter function */
1586
+ filterFn?: (option: AutocompleteOption<T>, inputValue: string) => boolean;
1587
+ /** Custom render function for options */
1588
+ renderOption?: (option: AutocompleteOption<T>, isHighlighted: boolean) => React.ReactNode;
1589
+ /** Text to show when no options match */
1590
+ noOptionsText?: string;
1591
+ /** Text to show when loading */
1592
+ loadingText?: string;
1593
+ /** Text to show when min chars not met */
1594
+ minCharsText?: string;
1595
+ /** Additional className */
1596
+ className?: string;
1597
+ /** Input props */
1598
+ inputProps?: Partial<TextInputProps>;
1599
+ }
1600
+ /**
1601
+ * Autocomplete component for searchable dropdown selection.
1602
+ *
1603
+ * @example
1604
+ * // Basic usage
1605
+ * <Autocomplete
1606
+ * options={[
1607
+ * { value: '1', label: 'Option 1' },
1608
+ * { value: '2', label: 'Option 2' },
1609
+ * ]}
1610
+ * value={selected}
1611
+ * onChange={setSelected}
1612
+ * placeholder="Search..."
1613
+ * />
1614
+ *
1615
+ * @example
1616
+ * // With descriptions
1617
+ * <Autocomplete
1618
+ * options={[
1619
+ * { value: 'user1', label: 'John Doe', description: 'john@example.com' },
1620
+ * { value: 'user2', label: 'Jane Smith', description: 'jane@example.com' },
1621
+ * ]}
1622
+ * label="Select User"
1623
+ * value={selectedUser}
1624
+ * onChange={setSelectedUser}
1625
+ * />
1626
+ */
1627
+ declare function Autocomplete<T extends string = string>({ options, value, onChange, onInputChange, minChars, placeholder, label, helperText, errorMessage, isRequired, isDisabled, isLoading, isClearable, filterFn, renderOption, noOptionsText, loadingText, minCharsText, className, inputProps, ...props }: AutocompleteProps<T>): react_jsx_runtime.JSX.Element;
1628
+
1629
+ type HelpTipSize = 'sm' | 'md' | 'lg';
1630
+ type HelpTipPlacement = 'top' | 'bottom' | 'left' | 'right';
1631
+ type HelpTipIcon = 'help' | 'info' | 'warning';
1632
+ interface HelpTipProps extends ViewProps {
1633
+ /** Tooltip content */
1634
+ content: React.ReactNode;
1635
+ /** Size of the icon */
1636
+ size?: HelpTipSize;
1637
+ /** Placement of the tooltip */
1638
+ placement?: HelpTipPlacement;
1639
+ /** Icon type */
1640
+ icon?: HelpTipIcon;
1641
+ /** Icon color */
1642
+ color?: 'default' | 'primary' | 'secondary' | 'muted';
1643
+ /** Whether the tooltip is always visible (controlled) */
1644
+ isOpen?: boolean;
1645
+ /** Whether to show an arrow */
1646
+ hasArrow?: boolean;
1647
+ /** Max width of the tooltip */
1648
+ maxWidth?: number;
1649
+ /** Additional className for the icon */
1650
+ iconClassName?: string;
1651
+ /** Additional className for the tooltip */
1652
+ tooltipClassName?: string;
1653
+ }
1654
+ /**
1655
+ * HelpTip component for displaying contextual help information.
1656
+ *
1657
+ * A small icon (typically a question mark or info icon) that shows
1658
+ * a tooltip with helpful information when hovered or pressed.
1659
+ *
1660
+ * @example
1661
+ * // Basic usage
1662
+ * <HelpTip content="This field is required for form submission." />
1663
+ *
1664
+ * @example
1665
+ * // With custom icon and placement
1666
+ * <HelpTip
1667
+ * content="API rate limits apply to this endpoint."
1668
+ * icon="warning"
1669
+ * placement="right"
1670
+ * color="primary"
1671
+ * />
1672
+ *
1673
+ * @example
1674
+ * // Inline with label
1675
+ * <View className="flex-row items-center gap-1">
1676
+ * <Text>Email Address</Text>
1677
+ * <HelpTip content="We'll never share your email with anyone." size="sm" />
1678
+ * </View>
1679
+ */
1680
+ declare function HelpTip({ content, size, placement, icon, color, isOpen: controlledIsOpen, hasArrow, maxWidth, iconClassName, tooltipClassName, className, ...props }: HelpTipProps): react_jsx_runtime.JSX.Element;
1681
+ interface LabelWithHelpProps extends ViewProps {
1682
+ /** Label text */
1683
+ label: string;
1684
+ /** Help content */
1685
+ helpContent: React.ReactNode;
1686
+ /** Whether the field is required */
1687
+ isRequired?: boolean;
1688
+ /** Size of the help icon */
1689
+ helpSize?: HelpTipSize;
1690
+ /** Additional className */
1691
+ className?: string;
1692
+ }
1693
+ /**
1694
+ * Convenience component combining a label with a help tip.
1695
+ *
1696
+ * @example
1697
+ * <LabelWithHelp
1698
+ * label="API Key"
1699
+ * helpContent="Your API key can be found in the developer settings."
1700
+ * isRequired
1701
+ * />
1702
+ */
1703
+ declare function LabelWithHelp({ label, helpContent, isRequired, helpSize, className, ...props }: LabelWithHelpProps): react_jsx_runtime.JSX.Element;
1704
+
1705
+ interface FormFieldProps extends ViewProps {
1706
+ /** Label text */
1707
+ label?: string;
1708
+ /** Whether the field is required */
1709
+ isRequired?: boolean;
1710
+ /** Helper text shown below the input */
1711
+ helperText?: string;
1712
+ /** Error message (replaces helper text when present) */
1713
+ errorMessage?: string;
1714
+ /** Whether the field is disabled */
1715
+ isDisabled?: boolean;
1716
+ /** Whether the field is read-only */
1717
+ isReadOnly?: boolean;
1718
+ /** Help tooltip content */
1719
+ helpContent?: React.ReactNode;
1720
+ /** Size of the label */
1721
+ labelSize?: 'sm' | 'md' | 'lg';
1722
+ /** Direction of the layout */
1723
+ orientation?: 'vertical' | 'horizontal';
1724
+ /** Label width (for horizontal layout) */
1725
+ labelWidth?: number | string;
1726
+ /** Additional className */
1727
+ className?: string;
1728
+ children?: React.ReactNode;
1729
+ }
1730
+ /**
1731
+ * FormField component for wrapping form inputs with label, help text, and error states.
1732
+ *
1733
+ * @example
1734
+ * // Basic usage
1735
+ * <FormField label="Email" isRequired>
1736
+ * <Input placeholder="Enter your email" />
1737
+ * </FormField>
1738
+ *
1739
+ * @example
1740
+ * // With error
1741
+ * <FormField
1742
+ * label="Password"
1743
+ * isRequired
1744
+ * errorMessage="Password must be at least 8 characters"
1745
+ * >
1746
+ * <Input type="password" />
1747
+ * </FormField>
1748
+ *
1749
+ * @example
1750
+ * // Horizontal layout
1751
+ * <FormField label="Name" orientation="horizontal" labelWidth={100}>
1752
+ * <Input />
1753
+ * </FormField>
1754
+ */
1755
+ declare function FormField({ label, isRequired, helperText, errorMessage, isDisabled, isReadOnly, helpContent, labelSize, orientation, labelWidth, className, children, ...props }: FormFieldProps): react_jsx_runtime.JSX.Element;
1756
+ interface FormSectionProps extends ViewProps {
1757
+ /** Section title */
1758
+ title?: string;
1759
+ /** Section description */
1760
+ description?: string;
1761
+ /** Additional className */
1762
+ className?: string;
1763
+ children?: React.ReactNode;
1764
+ }
1765
+ /**
1766
+ * FormSection component for grouping related form fields.
1767
+ *
1768
+ * @example
1769
+ * <FormSection title="Personal Information" description="Enter your basic details">
1770
+ * <FormField label="Name">
1771
+ * <Input />
1772
+ * </FormField>
1773
+ * <FormField label="Email">
1774
+ * <Input />
1775
+ * </FormField>
1776
+ * </FormSection>
1777
+ */
1778
+ declare function FormSection({ title, description, className, children, ...props }: FormSectionProps): react_jsx_runtime.JSX.Element;
1779
+ interface FormActionsProps extends ViewProps {
1780
+ /** Alignment of actions */
1781
+ align?: 'left' | 'center' | 'right' | 'between';
1782
+ /** Additional className */
1783
+ className?: string;
1784
+ children?: React.ReactNode;
1785
+ }
1786
+ /**
1787
+ * FormActions component for form action buttons.
1788
+ *
1789
+ * @example
1790
+ * <FormActions align="right">
1791
+ * <Button variant="ghost">Cancel</Button>
1792
+ * <Button>Submit</Button>
1793
+ * </FormActions>
1794
+ */
1795
+ declare function FormActions({ align, className, children, ...props }: FormActionsProps): react_jsx_runtime.JSX.Element;
1796
+ interface FormRowProps extends ViewProps {
1797
+ /** Gap between items */
1798
+ gap?: 'sm' | 'md' | 'lg';
1799
+ /** Additional className */
1800
+ className?: string;
1801
+ children?: React.ReactNode;
1802
+ }
1803
+ /**
1804
+ * FormRow component for laying out multiple form fields horizontally.
1805
+ *
1806
+ * @example
1807
+ * <FormRow>
1808
+ * <FormField label="First Name" className="flex-1">
1809
+ * <Input />
1810
+ * </FormField>
1811
+ * <FormField label="Last Name" className="flex-1">
1812
+ * <Input />
1813
+ * </FormField>
1814
+ * </FormRow>
1815
+ */
1816
+ declare function FormRow({ gap, className, children, ...props }: FormRowProps): react_jsx_runtime.JSX.Element;
1817
+
1818
+ type TypographyVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'body1' | 'body2' | 'subtitle1' | 'subtitle2' | 'caption' | 'overline' | 'button';
1819
+ type TypographyColor = 'primary' | 'secondary' | 'tertiary' | 'disabled' | 'inverse' | 'success' | 'error' | 'warning' | 'info' | 'inherit';
1820
+ type TypographyAlign = 'left' | 'center' | 'right' | 'justify';
1821
+ type TypographyMarginBottom = 'none' | 'sm' | 'md' | 'lg';
1822
+ interface TypographyProps extends TextProps {
1823
+ /** Typography variant */
1824
+ variant?: TypographyVariant;
1825
+ /** Text color */
1826
+ color?: TypographyColor;
1827
+ /** Text alignment */
1828
+ align?: TypographyAlign;
1829
+ /** Whether text should truncate with ellipsis */
1830
+ truncate?: boolean;
1831
+ /** @deprecated Use truncate instead */
1832
+ noWrap?: boolean;
1833
+ /** Margin bottom spacing */
1834
+ marginBottom?: TypographyMarginBottom;
1835
+ /** @deprecated Use marginBottom instead */
1836
+ gutterBottom?: boolean;
1837
+ /** Maximum number of lines before truncating */
1838
+ maxLines?: number;
1839
+ /** Additional className */
1840
+ className?: string;
1841
+ children?: React.ReactNode;
1842
+ }
1843
+ /**
1844
+ * Typography component for consistent text styling.
1845
+ *
1846
+ * @example
1847
+ * <Typography variant="h1">Page Title</Typography>
1848
+ * <Typography variant="body1" color="secondary">Body text content</Typography>
1849
+ * <Typography variant="caption" marginBottom="md">Small caption text</Typography>
1850
+ * <Typography truncate maxLines={2}>Long text that will truncate...</Typography>
1851
+ */
1852
+ declare function Typography({ variant, color, align, truncate, noWrap, // deprecated, kept for backward compatibility
1853
+ marginBottom, gutterBottom, // deprecated, kept for backward compatibility
1854
+ maxLines, className, children, ...props }: TypographyProps): react_jsx_runtime.JSX.Element;
1855
+ interface HeadingProps extends Omit<TypographyProps, 'variant'> {
1856
+ /** Heading level (1-6) */
1857
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
1858
+ }
1859
+ /**
1860
+ * Heading component - convenience wrapper for Typography with heading variants.
1861
+ *
1862
+ * @example
1863
+ * <Heading level={1}>Page Title</Heading>
1864
+ * <Heading level={2} gutterBottom>Section Title</Heading>
1865
+ */
1866
+ declare function Heading({ level, ...props }: HeadingProps): react_jsx_runtime.JSX.Element;
1867
+ interface ParagraphProps extends Omit<TypographyProps, 'variant'> {
1868
+ /** Use smaller body2 variant */
1869
+ small?: boolean;
1870
+ }
1871
+ /**
1872
+ * Paragraph component - convenience wrapper for body text.
1873
+ *
1874
+ * @example
1875
+ * <Paragraph>This is body text content.</Paragraph>
1876
+ * <Paragraph small>This is smaller body text.</Paragraph>
1877
+ */
1878
+ declare function Paragraph({ small, ...props }: ParagraphProps): react_jsx_runtime.JSX.Element;
1879
+ interface CaptionProps extends Omit<TypographyProps, 'variant'> {
1880
+ }
1881
+ /**
1882
+ * Caption component - for small helper/secondary text.
1883
+ */
1884
+ declare function Caption(props: CaptionProps): react_jsx_runtime.JSX.Element;
1885
+ interface LabelProps extends Omit<TypographyProps, 'variant'> {
1886
+ }
1887
+ /**
1888
+ * Label component - for form labels and similar.
1889
+ */
1890
+ declare function Label(props: LabelProps): react_jsx_runtime.JSX.Element;
1891
+ interface OverlineProps extends Omit<TypographyProps, 'variant'> {
1892
+ }
1893
+ /**
1894
+ * Overline component - for section labels, categories.
1895
+ */
1896
+ declare function Overline(props: OverlineProps): react_jsx_runtime.JSX.Element;
1897
+
1898
+ interface SidebarProps extends ViewProps {
1899
+ /** Whether sidebar is collapsed (icon-only mode) */
1900
+ isCollapsed?: boolean;
1901
+ /** Currently active item ID */
1902
+ activeItem?: string;
1903
+ /** Callback when an item is selected */
1904
+ onItemSelect?: (id: string) => void;
1905
+ /** Width when expanded */
1906
+ width?: number;
1907
+ /** Width when collapsed */
1908
+ collapsedWidth?: number;
1909
+ /** Additional className */
1910
+ className?: string;
1911
+ children?: React.ReactNode;
1912
+ }
1913
+ /**
1914
+ * Sidebar navigation component.
1915
+ *
1916
+ * @example
1917
+ * <Sidebar activeItem={activeNav} onItemSelect={setActiveNav}>
1918
+ * <SidebarHeader>
1919
+ * <Logo />
1920
+ * </SidebarHeader>
1921
+ * <SidebarContent>
1922
+ * <SidebarSection title="Main">
1923
+ * <SidebarItem id="home" icon={HomeIcon} label="Home" />
1924
+ * <SidebarItem id="dashboard" icon={DashboardIcon} label="Dashboard" />
1925
+ * </SidebarSection>
1926
+ * </SidebarContent>
1927
+ * <SidebarFooter>
1928
+ * <SidebarItem id="settings" icon={SettingsIcon} label="Settings" />
1929
+ * </SidebarFooter>
1930
+ * </Sidebar>
1931
+ */
1932
+ declare function Sidebar({ isCollapsed, activeItem, onItemSelect, width, collapsedWidth, className, children, ...props }: SidebarProps): react_jsx_runtime.JSX.Element;
1933
+ interface SidebarHeaderProps {
1934
+ children?: React.ReactNode;
1935
+ className?: string;
1936
+ }
1937
+ /**
1938
+ * Header section of sidebar (typically contains logo).
1939
+ */
1940
+ declare function SidebarHeader({ children, className }: SidebarHeaderProps): react_jsx_runtime.JSX.Element;
1941
+ interface SidebarContentProps {
1942
+ children?: React.ReactNode;
1943
+ className?: string;
1944
+ }
1945
+ /**
1946
+ * Scrollable content area of sidebar.
1947
+ */
1948
+ declare function SidebarContent({ children, className }: SidebarContentProps): react_jsx_runtime.JSX.Element;
1949
+ interface SidebarFooterProps {
1950
+ children?: React.ReactNode;
1951
+ className?: string;
1952
+ }
1953
+ /**
1954
+ * Footer section of sidebar.
1955
+ */
1956
+ declare function SidebarFooter({ children, className }: SidebarFooterProps): react_jsx_runtime.JSX.Element;
1957
+ interface SidebarSectionProps {
1958
+ /** Section title */
1959
+ title?: string;
1960
+ children?: React.ReactNode;
1961
+ className?: string;
1962
+ }
1963
+ /**
1964
+ * Section grouping for sidebar items.
1965
+ */
1966
+ declare function SidebarSection({ title, children, className }: SidebarSectionProps): react_jsx_runtime.JSX.Element;
1967
+ interface SidebarItemProps extends Omit<PressableProps, 'children'> {
1968
+ /** Unique identifier for the item */
1969
+ id: string;
1970
+ /** Icon component */
1971
+ icon?: React.ComponentType<{
1972
+ size?: number;
1973
+ className?: string;
1974
+ }>;
1975
+ /** Label text */
1976
+ label: string;
1977
+ /** Badge content (e.g., notification count) */
1978
+ badge?: React.ReactNode;
1979
+ /** Whether this item has nested items */
1980
+ hasChildren?: boolean;
1981
+ /** Whether nested items are expanded */
1982
+ isExpanded?: boolean;
1983
+ /** Additional className */
1984
+ className?: string;
1985
+ }
1986
+ /**
1987
+ * Individual navigation item in sidebar.
1988
+ */
1989
+ declare function SidebarItem({ id, icon: Icon, label, badge, hasChildren, isExpanded, className, onPress, ...props }: SidebarItemProps): react_jsx_runtime.JSX.Element;
1990
+ interface SidebarDividerProps {
1991
+ className?: string;
1992
+ }
1993
+ /**
1994
+ * Divider between sidebar sections.
1995
+ */
1996
+ declare function SidebarDivider({ className }: SidebarDividerProps): react_jsx_runtime.JSX.Element;
1997
+
1998
+ type SortDirection = 'asc' | 'desc' | null;
1999
+ interface TableProps extends ViewProps {
2000
+ /** Currently sorted column */
2001
+ sortColumn?: string;
2002
+ /** Sort direction */
2003
+ sortDirection?: SortDirection;
2004
+ /** Callback when sort changes */
2005
+ onSort?: (column: string) => void;
2006
+ /** Selected row IDs (controlled) */
2007
+ selectedRows?: Set<string>;
2008
+ /** Callback when row selection changes */
2009
+ onSelectRow?: (id: string, selected: boolean) => void;
2010
+ /** Callback when select all changes */
2011
+ onSelectAll?: (selected: boolean) => void;
2012
+ /** Enable row selection */
2013
+ selectable?: boolean;
2014
+ /** All row IDs for select all functionality */
2015
+ rowIds?: string[];
2016
+ /** Whether the table is loading */
2017
+ isLoading?: boolean;
2018
+ /** Number of skeleton rows to show when loading */
2019
+ loadingRowCount?: number;
2020
+ /** Additional className */
2021
+ className?: string;
2022
+ children?: React.ReactNode;
2023
+ }
2024
+ /**
2025
+ * Table component with sorting support.
2026
+ *
2027
+ * @example
2028
+ * <Table sortColumn={sortCol} sortDirection={sortDir} onSort={handleSort}>
2029
+ * <TableHeader>
2030
+ * <TableRow>
2031
+ * <TableHeaderCell sortKey="name">Name</TableHeaderCell>
2032
+ * <TableHeaderCell sortKey="email">Email</TableHeaderCell>
2033
+ * <TableHeaderCell sortKey="status">Status</TableHeaderCell>
2034
+ * </TableRow>
2035
+ * </TableHeader>
2036
+ * <TableBody>
2037
+ * {data.map(row => (
2038
+ * <TableRow key={row.id}>
2039
+ * <TableCell>{row.name}</TableCell>
2040
+ * <TableCell>{row.email}</TableCell>
2041
+ * <TableCell>{row.status}</TableCell>
2042
+ * </TableRow>
2043
+ * ))}
2044
+ * </TableBody>
2045
+ * </Table>
2046
+ */
2047
+ declare function Table({ sortColumn, sortDirection, onSort, selectedRows, onSelectRow, onSelectAll, selectable, rowIds, isLoading, loadingRowCount, className, children, ...props }: TableProps): react_jsx_runtime.JSX.Element;
2048
+ interface TableHeaderProps {
2049
+ children?: React.ReactNode;
2050
+ className?: string;
2051
+ }
2052
+ /**
2053
+ * Table header container.
2054
+ */
2055
+ declare function TableHeader({ children, className }: TableHeaderProps): react_jsx_runtime.JSX.Element;
2056
+ interface TableBodyProps {
2057
+ children?: React.ReactNode;
2058
+ className?: string;
2059
+ }
2060
+ /**
2061
+ * Table body container.
2062
+ */
2063
+ declare function TableBody({ children, className }: TableBodyProps): react_jsx_runtime.JSX.Element;
2064
+ interface TableRowProps extends ViewProps {
2065
+ /** Whether the row is selected */
2066
+ isSelected?: boolean;
2067
+ /** Whether the row is hoverable */
2068
+ isHoverable?: boolean;
2069
+ /** Additional className */
2070
+ className?: string;
2071
+ children?: React.ReactNode;
2072
+ }
2073
+ /**
2074
+ * Table row.
2075
+ */
2076
+ declare function TableRow({ isSelected, isHoverable, className, children, ...props }: TableRowProps): react_jsx_runtime.JSX.Element;
2077
+ interface TableHeaderCellProps extends Omit<PressableProps, 'children'> {
2078
+ /** Sort key for this column */
2079
+ sortKey?: string;
2080
+ /** Text alignment */
2081
+ align?: 'left' | 'center' | 'right';
2082
+ /** Cell width in pixels */
2083
+ width?: number;
2084
+ /** Additional className */
2085
+ className?: string;
2086
+ children?: React.ReactNode;
2087
+ }
2088
+ /**
2089
+ * Table header cell with optional sorting.
2090
+ */
2091
+ declare function TableHeaderCell({ sortKey, align, width, className, children, onPress, ...props }: TableHeaderCellProps): react_jsx_runtime.JSX.Element;
2092
+ interface TableCellProps extends ViewProps {
2093
+ /** Text alignment */
2094
+ align?: 'left' | 'center' | 'right';
2095
+ /** Cell width in pixels */
2096
+ width?: number;
2097
+ /** Additional className */
2098
+ className?: string;
2099
+ children?: React.ReactNode;
2100
+ }
2101
+ /**
2102
+ * Table data cell.
2103
+ */
2104
+ declare function TableCell({ align, width, className, children, ...props }: TableCellProps): react_jsx_runtime.JSX.Element;
2105
+ interface TablePaginationProps {
2106
+ /** Current page (0-indexed) */
2107
+ page: number;
2108
+ /** Items per page */
2109
+ pageSize: number;
2110
+ /** Total number of items */
2111
+ totalItems: number;
2112
+ /** Available page size options */
2113
+ pageSizeOptions?: number[];
2114
+ /** Callback when page changes */
2115
+ onPageChange: (page: number) => void;
2116
+ /** Callback when page size changes */
2117
+ onPageSizeChange?: (pageSize: number) => void;
2118
+ /** Additional className */
2119
+ className?: string;
2120
+ }
2121
+ /**
2122
+ * Pagination controls for table.
2123
+ *
2124
+ * @example
2125
+ * <TablePagination
2126
+ * page={page}
2127
+ * pageSize={pageSize}
2128
+ * totalItems={100}
2129
+ * onPageChange={setPage}
2130
+ * onPageSizeChange={setPageSize}
2131
+ * />
2132
+ */
2133
+ declare function TablePagination({ page, pageSize, totalItems, pageSizeOptions, onPageChange, onPageSizeChange, className, }: TablePaginationProps): react_jsx_runtime.JSX.Element;
2134
+ interface UseTableOptions<T> {
2135
+ data: T[];
2136
+ defaultPageSize?: number;
2137
+ defaultSortColumn?: string;
2138
+ defaultSortDirection?: SortDirection;
2139
+ }
2140
+ interface UseTableReturn<T> {
2141
+ sortedData: T[];
2142
+ paginatedData: T[];
2143
+ page: number;
2144
+ pageSize: number;
2145
+ totalItems: number;
2146
+ sortColumn?: string;
2147
+ sortDirection: SortDirection;
2148
+ setPage: (page: number) => void;
2149
+ setPageSize: (size: number) => void;
2150
+ handleSort: (column: string) => void;
2151
+ }
2152
+ /**
2153
+ * Hook for managing table sorting and pagination state.
2154
+ *
2155
+ * @example
2156
+ * const {
2157
+ * paginatedData,
2158
+ * page, pageSize, totalItems,
2159
+ * sortColumn, sortDirection,
2160
+ * setPage, setPageSize, handleSort
2161
+ * } = useTable({
2162
+ * data: users,
2163
+ * defaultPageSize: 10,
2164
+ * })
2165
+ */
2166
+ declare function useTable<T extends Record<string, any>>({ data, defaultPageSize, defaultSortColumn, defaultSortDirection, }: UseTableOptions<T>): UseTableReturn<T>;
2167
+
2168
+ interface EmptyStateProps extends ViewProps {
2169
+ /** Icon component to display */
2170
+ icon?: React.ComponentType<{
2171
+ size?: number;
2172
+ className?: string;
2173
+ }>;
2174
+ /** Title text */
2175
+ title: string;
2176
+ /** Description text */
2177
+ description?: string;
2178
+ /** Action element (usually a button) */
2179
+ action?: React.ReactNode;
2180
+ /** Additional className */
2181
+ className?: string;
2182
+ }
2183
+ /**
2184
+ * Empty state component for when there's no data to display.
2185
+ *
2186
+ * @example
2187
+ * <EmptyState
2188
+ * icon={InboxIcon}
2189
+ * title="No messages"
2190
+ * description="You don't have any messages yet."
2191
+ * action={<Button>Compose</Button>}
2192
+ * />
2193
+ */
2194
+ declare function EmptyState({ icon: Icon, title, description, action, className, ...props }: EmptyStateProps): react_jsx_runtime.JSX.Element;
2195
+
2196
+ type StepStatus = 'completed' | 'active' | 'upcoming' | 'error';
2197
+ type StepperOrientation = 'horizontal' | 'vertical';
2198
+ interface StepperProps extends ViewProps {
2199
+ /** Current active step (0-indexed) */
2200
+ activeStep: number;
2201
+ /** Stepper orientation */
2202
+ orientation?: StepperOrientation;
2203
+ /** Additional className */
2204
+ className?: string;
2205
+ children?: React.ReactNode;
2206
+ }
2207
+ /**
2208
+ * Stepper component for multi-step flows.
2209
+ *
2210
+ * @example
2211
+ * <Stepper activeStep={1}>
2212
+ * <Step>
2213
+ * <StepIndicator />
2214
+ * <StepLabel>Account</StepLabel>
2215
+ * </Step>
2216
+ * <Step>
2217
+ * <StepIndicator />
2218
+ * <StepLabel>Profile</StepLabel>
2219
+ * </Step>
2220
+ * <Step>
2221
+ * <StepIndicator />
2222
+ * <StepLabel>Review</StepLabel>
2223
+ * </Step>
2224
+ * </Stepper>
2225
+ */
2226
+ declare function Stepper({ activeStep, orientation, className, children, ...props }: StepperProps): react_jsx_runtime.JSX.Element;
2227
+ interface StepProps {
2228
+ /** Step index (injected by Stepper) */
2229
+ index?: number;
2230
+ /** Override step status */
2231
+ status?: StepStatus;
2232
+ /** Additional className */
2233
+ className?: string;
2234
+ children?: React.ReactNode;
2235
+ }
2236
+ /**
2237
+ * Individual step in the stepper.
2238
+ */
2239
+ declare function Step({ index, status, className, children }: StepProps): react_jsx_runtime.JSX.Element;
2240
+ interface StepIndicatorProps {
2241
+ /** Step status (injected by Step) */
2242
+ status?: StepStatus;
2243
+ /** Step index (injected by Step) */
2244
+ index?: number;
2245
+ /** Custom icon */
2246
+ icon?: React.ReactNode;
2247
+ /** Additional className */
2248
+ className?: string;
2249
+ }
2250
+ /**
2251
+ * Visual indicator for step status.
2252
+ */
2253
+ declare function StepIndicator({ status, index, icon, className, }: StepIndicatorProps): react_jsx_runtime.JSX.Element;
2254
+ interface StepLabelProps {
2255
+ /** Step status (injected by Step) */
2256
+ status?: StepStatus;
2257
+ /** Additional className */
2258
+ className?: string;
2259
+ children?: React.ReactNode;
2260
+ }
2261
+ /**
2262
+ * Label for a step.
2263
+ */
2264
+ declare function StepLabel({ status, className, children }: StepLabelProps): react_jsx_runtime.JSX.Element;
2265
+ interface StepContentProps {
2266
+ /** Step status (injected by Step) */
2267
+ status?: StepStatus;
2268
+ /** Additional className */
2269
+ className?: string;
2270
+ children?: React.ReactNode;
2271
+ }
2272
+ /**
2273
+ * Content area for vertical stepper.
2274
+ */
2275
+ declare function StepContent({ status, className, children }: StepContentProps): react_jsx_runtime.JSX.Element | null;
2276
+
2277
+ type DateTimeFormat = 'date' | 'time' | 'datetime' | 'relative' | 'short' | 'medium' | 'long' | 'full';
2278
+ interface DateTimeProps extends TextProps {
2279
+ /** Date value (timestamp in ms, Date object, or ISO string) */
2280
+ value: number | Date | string | null | undefined;
2281
+ /** Display format */
2282
+ format?: DateTimeFormat;
2283
+ /** Custom format string (overrides format) */
2284
+ customFormat?: string;
2285
+ /** Whether to show in UTC */
2286
+ isUTC?: boolean;
2287
+ /** Fallback text when value is null/undefined */
2288
+ fallback?: string;
2289
+ /** Text color */
2290
+ color?: 'primary' | 'secondary' | 'tertiary' | 'inherit';
2291
+ /** Additional className */
2292
+ className?: string;
2293
+ }
2294
+ /**
2295
+ * DateTime component for displaying formatted dates and times.
2296
+ *
2297
+ * @example
2298
+ * // Basic usage
2299
+ * <DateTime value={Date.now()} />
2300
+ *
2301
+ * @example
2302
+ * // Different formats
2303
+ * <DateTime value={date} format="relative" />
2304
+ * <DateTime value={date} format="long" />
2305
+ *
2306
+ * @example
2307
+ * // UTC time
2308
+ * <DateTime value={timestamp} format="datetime" isUTC />
2309
+ */
2310
+ declare function DateTime({ value, format, customFormat, isUTC, fallback, color, className, ...props }: DateTimeProps): react_jsx_runtime.JSX.Element;
2311
+ /**
2312
+ * Utility function to format dates outside of React components.
2313
+ */
2314
+ declare function formatDateTime(value: number | Date | string | null | undefined, format?: DateTimeFormat, isUTC?: boolean, fallback?: string): string;
2315
+
2316
+ /**
2317
+ * Utility function to merge Tailwind CSS classes with proper conflict resolution.
2318
+ * Combines clsx for conditional classes with tailwind-merge for deduplication.
2319
+ *
2320
+ * @example
2321
+ * cn('p-4 bg-red-500', isActive && 'bg-blue-500', className)
2322
+ * // If isActive is true, returns 'p-4 bg-blue-500' (not 'p-4 bg-red-500 bg-blue-500')
2323
+ */
2324
+ declare function cn(...inputs: ClassValue[]): string;
2325
+
2326
+ /**
2327
+ * Color utility functions for the design system
2328
+ *
2329
+ * lighten/darken are re-exported from shadows.ts which uses HSV-based
2330
+ * color math for more perceptually consistent results across hues.
2331
+ */
2332
+
2333
+ type StatusType = 'success' | 'error' | 'warning' | 'info';
2334
+ type ResultType = 'improve' | 'degrade' | 'inconclusive' | 'neutral';
2335
+ /**
2336
+ * Get the semantic color token for a status type.
2337
+ *
2338
+ * @param status - The status type
2339
+ * @returns The CSS variable reference for the status color
2340
+ *
2341
+ * @example
2342
+ * const color = getStatusColor('success') // 'var(--color-status-success)'
2343
+ */
2344
+ declare function getStatusColor(status: StatusType): string;
2345
+ /**
2346
+ * Get the semantic color token for a result type.
2347
+ *
2348
+ * @param result - The result type
2349
+ * @returns The CSS variable reference for the result color
2350
+ *
2351
+ * @example
2352
+ * const color = getResultColor('improve') // 'var(--color-result-improve)'
2353
+ */
2354
+ declare function getResultColor(result: ResultType): string;
2355
+ /**
2356
+ * Apply alpha/opacity to a color.
2357
+ * Works with hex colors and rgb values.
2358
+ *
2359
+ * @param color - The color value (hex or rgb)
2360
+ * @param opacity - Opacity value between 0 and 1
2361
+ * @returns The color with alpha applied
2362
+ *
2363
+ * @example
2364
+ * alpha('#5048E5', 0.5) // 'rgba(80, 72, 229, 0.5)'
2365
+ * alpha('rgb(80, 72, 229)', 0.5) // 'rgba(80, 72, 229, 0.5)'
2366
+ */
2367
+ declare function alpha(color: string, opacity: number): string;
2368
+ /**
2369
+ * Determine if a color is light or dark.
2370
+ * Useful for determining text color contrast.
2371
+ *
2372
+ * @param color - Hex color value
2373
+ * @returns 'light' or 'dark'
2374
+ *
2375
+ * @example
2376
+ * getLuminance('#FFFFFF') // 'light'
2377
+ * getLuminance('#000000') // 'dark'
2378
+ */
2379
+ declare function getLuminance(color: string): 'light' | 'dark';
2380
+ /**
2381
+ * Get a contrasting text color for a given background.
2382
+ *
2383
+ * @param backgroundColor - The background color (hex)
2384
+ * @returns 'white' or 'black' for contrast
2385
+ *
2386
+ * @example
2387
+ * getContrastText('#5048E5') // 'white'
2388
+ * getContrastText('#FFFFFF') // 'black'
2389
+ */
2390
+ declare function getContrastText(backgroundColor: string): string;
2391
+
2392
+ /**
2393
+ * Form utility functions for consistent form field handling
2394
+ */
2395
+ interface FieldState {
2396
+ /** Whether the field has been touched */
2397
+ touched: boolean;
2398
+ /** Whether the field has an error */
2399
+ hasError: boolean;
2400
+ /** Error message if any */
2401
+ errorMessage?: string;
2402
+ /** Whether the field is required */
2403
+ isRequired?: boolean;
2404
+ }
2405
+ interface FieldWrapperProps {
2406
+ /** Field label */
2407
+ label?: string;
2408
+ /** Helper text */
2409
+ helperText?: string;
2410
+ /** Error message */
2411
+ errorMessage?: string;
2412
+ /** Whether the field is required */
2413
+ isRequired?: boolean;
2414
+ /** Whether the field is disabled */
2415
+ isDisabled?: boolean;
2416
+ /** Whether to show error state */
2417
+ isInvalid?: boolean;
2418
+ }
2419
+ /**
2420
+ * Get validation state props from field state
2421
+ */
2422
+ declare function getFieldValidationProps(state: FieldState): {
2423
+ isInvalid: boolean;
2424
+ errorMessage?: string;
2425
+ };
2426
+ /**
2427
+ * Create a field ID from label text
2428
+ */
2429
+ declare function createFieldId(label: string): string;
2430
+ /**
2431
+ * Get aria attributes for form field
2432
+ */
2433
+ declare function getFieldAriaProps(props: FieldWrapperProps & {
2434
+ id: string;
2435
+ }): {
2436
+ 'aria-invalid'?: boolean;
2437
+ 'aria-required'?: boolean;
2438
+ 'aria-describedby'?: string;
2439
+ };
2440
+ /**
2441
+ * Validate email format
2442
+ */
2443
+ declare function isValidEmail(email: string): boolean;
2444
+ /**
2445
+ * Validate minimum length
2446
+ */
2447
+ declare function hasMinLength(value: string, minLength: number): boolean;
2448
+ /**
2449
+ * Validate maximum length
2450
+ */
2451
+ declare function hasMaxLength(value: string, maxLength: number): boolean;
2452
+ /**
2453
+ * Check if value is empty (null, undefined, or empty string)
2454
+ */
2455
+ declare function isEmpty(value: unknown): boolean;
2456
+ /**
2457
+ * Common validation rules
2458
+ */
2459
+ declare const validationRules: {
2460
+ required: (value: unknown) => "This field is required" | undefined;
2461
+ email: (value: string) => "Please enter a valid email address" | undefined;
2462
+ minLength: (min: number) => (value: string) => string | undefined;
2463
+ maxLength: (max: number) => (value: string) => string | undefined;
2464
+ pattern: (regex: RegExp, message: string) => (value: string) => string | undefined;
2465
+ match: (otherValue: string, fieldName: string) => (value: string) => string | undefined;
2466
+ };
2467
+ /**
2468
+ * Compose multiple validation functions
2469
+ */
2470
+ declare function composeValidators(...validators: Array<(value: any) => string | undefined>): (value: any) => string | undefined;
2471
+ /**
2472
+ * Type for form values
2473
+ */
2474
+ type FormValues = Record<string, unknown>;
2475
+ /**
2476
+ * Type for form errors
2477
+ */
2478
+ type FormErrors<T extends FormValues> = Partial<Record<keyof T, string>>;
2479
+ /**
2480
+ * Type for form touched state
2481
+ */
2482
+ type FormTouched<T extends FormValues> = Partial<Record<keyof T, boolean>>;
2483
+
2484
+ export { Accordion, AccordionButton, type AccordionButtonProps, AccordionItem, type AccordionItemProps, AccordionPanel, type AccordionPanelProps, type AccordionProps, Alert, AlertDescription, type AlertDescriptionProps, type AlertProps, type AlertStatus, AlertTitle, type AlertTitleProps, type AlertVariant, Autocomplete, type AutocompleteOption, type AutocompleteProps, Avatar, AvatarBadge, type AvatarBadgeProps, AvatarGroup, type AvatarGroupProps, type AvatarProps, type AvatarSize, Badge, type BadgeColor, type BadgeProps, type BadgeSize, BadgeText, type BadgeTextProps, type BadgeVariant, BreadcrumbItem, type BreadcrumbItemProps, Breadcrumbs, type BreadcrumbsProps, Button, type ButtonColor, ButtonIcon, type ButtonIconProps, type ButtonProps, type ButtonSize, ButtonSpinner, type ButtonSpinnerProps, ButtonText, type ButtonTextProps, type ButtonVariant, Caption, type CaptionProps, Card, CardContent, type CardContentProps, CardDescription, type CardDescriptionProps, type CardElevation, CardFooter, type CardFooterProps, CardHeader, type CardHeaderProps, type CardProps, CardSkeleton, type CardSkeletonProps, CardTitle, type CardTitleProps, type CardVariant, Checkbox, CheckboxGroup, type CheckboxGroupProps, type CheckboxProps, type CheckboxSize, Chip, type ChipColor, type ChipProps, type ChipSize, type ChipVariant, CircularProgress, type CircularProgressProps, Collapse, CollapseButton, type CollapseButtonProps, CollapseContent, type CollapseContentProps, type CollapseProps, DateTime, type DateTimeFormat, type DateTimeProps, Divider, type DividerOrientation, type DividerProps, Drawer, DrawerBody, type DrawerBodyProps, DrawerFooter, type DrawerFooterProps, DrawerHeader, type DrawerHeaderProps, type DrawerPlacement, type DrawerProps, type DrawerSize, EmptyState, type EmptyStateProps, type FieldState, type FieldWrapperProps, FormActions, type FormActionsProps, type FormErrors, FormField, type FormFieldProps, FormRow, type FormRowProps, FormSection, type FormSectionProps, type FormTouched, type FormValues, Heading, type HeadingProps, HelpTip, type HelpTipIcon, type HelpTipPlacement, type HelpTipProps, type HelpTipSize, Input, InputGroup, type InputGroupProps, type InputProps, type InputSize, type InputVariant, Label, type LabelProps, LabelWithHelp, type LabelWithHelpProps, Link, type LinkColor, type LinkProps, type LinkUnderline, Menu, MenuDivider, type MenuDividerProps, MenuGroup, type MenuGroupProps, MenuItem, type MenuItemProps, MenuList, type MenuListProps, type MenuProps, MenuTrigger, type MenuTriggerProps, Modal, ModalBody, type ModalBodyProps, ModalCloseButton, type ModalCloseButtonProps, ModalContent, type ModalContentProps, ModalFooter, type ModalFooterProps, ModalHeader, type ModalHeaderProps, type ModalProps, type ModalSize, ModalTitle, type ModalTitleProps, Overline, type OverlineProps, Paragraph, type ParagraphProps, PasswordInput, type PasswordInputProps, Popover, PopoverCloseButton, type PopoverCloseButtonProps, PopoverContent, type PopoverContentProps, type PopoverPlacement, type PopoverProps, PopoverTrigger, type PopoverTriggerProps, Progress, type ProgressColor, type ProgressProps, type ProgressSize, ProgressSteps, type ProgressStepsProps, type ProgressVariant, Radio, type RadioColor, RadioGroup, type RadioGroupProps, type RadioProps, type RadioSize, type ResultType, Select, type SelectOption, type SelectProps, Sidebar, SidebarContent, type SidebarContentProps, SidebarDivider, type SidebarDividerProps, SidebarFooter, type SidebarFooterProps, SidebarHeader, type SidebarHeaderProps, SidebarItem, type SidebarItemProps, type SidebarProps, SidebarSection, type SidebarSectionProps, Skeleton, type SkeletonAnimation, SkeletonCard, type SkeletonCardProps, SkeletonCircle, type SkeletonCircleProps, SkeletonListItem, type SkeletonListItemProps, type SkeletonProps, SkeletonText, type SkeletonTextProps, type SkeletonVariant, type SortDirection, Spinner, type SpinnerColor, type SpinnerProps, type SpinnerSize, type StatusType, Step, StepContent, type StepContentProps, StepIndicator, type StepIndicatorProps, StepLabel, type StepLabelProps, type StepProps, type StepStatus, Stepper, type StepperOrientation, type StepperProps, Switch, type SwitchProps, type SwitchSize, Tab, TabList, type TabListProps, TabPanel, type TabPanelProps, TabPanels, type TabPanelsProps, type TabProps, Table, TableBody, type TableBodyProps, TableCell, type TableCellProps, TableHeader, TableHeaderCell, type TableHeaderCellProps, type TableHeaderProps, TablePagination, type TablePaginationProps, type TableProps, TableRow, type TableRowProps, Tabs, type TabsOrientation, type TabsProps, type TabsVariant, Toast, type ToastConfig, type ToastPosition, type ToastProps, ToastProvider, type ToastProviderProps, type ToastStatus, ToolbarButton, ToolbarButtonGroup, type ToolbarButtonGroupProps, type ToolbarButtonProps, type ToolbarButtonSize, type ToolbarButtonVariant, Tooltip, type TooltipPlacement, type TooltipProps, Typography, type TypographyAlign, type TypographyColor, type TypographyProps, type TypographyVariant, type UseTableOptions, type UseTableReturn, alpha, cn, composeValidators, createFieldId, formatDateTime, getContrastText, getFieldAriaProps, getFieldValidationProps, getLuminance, getResultColor, getStatusColor, hasMaxLength, hasMinLength, isEmpty, isValidEmail, useTable, useToast, useToolbarButton, validationRules };