@cognitiv/components-web 1.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,3523 @@
1
+ import React$1, { AllHTMLAttributes, ReactNode } from 'react';
2
+ import * as solidIcons from '@fortawesome/pro-solid-svg-icons';
3
+ import * as regularIcons from '@fortawesome/pro-regular-svg-icons';
4
+ import * as duotoneIcons from '@fortawesome/pro-duotone-svg-icons';
5
+ import * as brandIcons from '@fortawesome/free-brands-svg-icons';
6
+ import dayjs from 'dayjs';
7
+ import { SizeProp } from '@fortawesome/fontawesome-svg-core';
8
+ import * as react_jsx_runtime from 'react/jsx-runtime';
9
+ import * as node_modules_styled_components_dist_types from 'node_modules/styled-components/dist/types';
10
+
11
+ /**
12
+ * Avatar component for displaying user profile images with fallback initials.
13
+ *
14
+ * An avatar component that displays a user's profile image. When no image is
15
+ * provided, displays the user's initials as a fallback. Built on Radix UI
16
+ * Avatar for accessibility. Supports multiple sizes.
17
+ *
18
+ * @category Data
19
+ * @see Image
20
+ *
21
+ * @remarks
22
+ * - Requires UIProvider wrapper for theming
23
+ * - Built on Radix UI Avatar for accessibility
24
+ * - Automatically generates initials from alt text when image is missing
25
+ * - Fallback uses first letter of each word in alt text
26
+ * - Alt text is required for accessibility
27
+ *
28
+ * @example Basic usage with image
29
+ * ```tsx
30
+ * <Avatar
31
+ * src="/user-avatar.jpg"
32
+ * alt="John Doe"
33
+ * />
34
+ * ```
35
+ *
36
+ * @example With fallback initials
37
+ * ```tsx
38
+ * <Avatar alt="Jane Smith" />
39
+ * // Displays "JS" as fallback
40
+ * ```
41
+ *
42
+ * @example Different sizes
43
+ * ```tsx
44
+ * <Avatar alt="User" variant="small" />
45
+ * <Avatar alt="User" variant="medium" />
46
+ * <Avatar alt="User" variant="large" />
47
+ * ```
48
+ */
49
+ interface AvatarProps extends AllHTMLAttributes<HTMLImageElement> {
50
+ /**
51
+ * Person's name (required for accessibility and fallback initials).
52
+ *
53
+ * Used as alt text and to generate initials when image is not provided.
54
+ */
55
+ alt: string;
56
+ /**
57
+ * Image URL for the avatar.
58
+ *
59
+ * When not provided, initials are displayed based on the alt text.
60
+ *
61
+ * @default undefined
62
+ */
63
+ src?: string;
64
+ /**
65
+ * Size variant of the avatar.
66
+ *
67
+ * @default 'small' (24px)
68
+ */
69
+ variant?: 'small' | 'medium' | 'large';
70
+ }
71
+
72
+ declare const Avatar: React$1.ForwardRefExoticComponent<AvatarProps & React$1.RefAttributes<HTMLImageElement>>;
73
+
74
+ /**
75
+ * Banner type variants.
76
+ */
77
+ type BannerType = 'info' | 'success' | 'warning' | 'error';
78
+ /**
79
+ * Banner component for displaying alert messages and notifications.
80
+ *
81
+ * A banner component that displays important messages, alerts, and notifications
82
+ * to users. Supports multiple variants (info, success, warning, error), optional
83
+ * dismissal, and auto-dismiss functionality.
84
+ *
85
+ * @category Feedback
86
+ * @see Tooltip
87
+ *
88
+ * @remarks
89
+ * - Requires UIProvider wrapper for theming
90
+ * - Should have appropriate ARIA role for announcements
91
+ * - Dismissible banners should have accessible close button
92
+ * - Important messages should be announced to screen readers
93
+ * - Use for system-wide notifications and important alerts
94
+ *
95
+ * @example Basic info banner
96
+ * ```tsx
97
+ * <Banner
98
+ * type="info"
99
+ * title="Information"
100
+ * content="This is an informational message"
101
+ * />
102
+ * ```
103
+ *
104
+ * @example Success banner
105
+ * ```tsx
106
+ * <Banner
107
+ * type="success"
108
+ * title="Success!"
109
+ * content="Your changes have been saved"
110
+ * />
111
+ * ```
112
+ *
113
+ * @example Warning banner
114
+ * ```tsx
115
+ * <Banner
116
+ * type="warning"
117
+ * title="Warning"
118
+ * content="Please review your settings"
119
+ * />
120
+ * ```
121
+ *
122
+ * @example Error banner
123
+ * ```tsx
124
+ * <Banner
125
+ * type="error"
126
+ * title="Error"
127
+ * content="Something went wrong. Please try again."
128
+ * />
129
+ * ```
130
+ *
131
+ * @example Required (non-dismissible) banner
132
+ * ```tsx
133
+ * <Banner
134
+ * type="error"
135
+ * title="Critical Error"
136
+ * content="This message cannot be dismissed"
137
+ * required={true}
138
+ * />
139
+ * ```
140
+ *
141
+ * @example Auto-dismiss banner
142
+ * ```tsx
143
+ * <Banner
144
+ * type="success"
145
+ * title="Saved"
146
+ * content="Changes saved successfully"
147
+ * dismissAfter={3000}
148
+ * />
149
+ * ```
150
+ */
151
+ interface BannerProps {
152
+ /**
153
+ * CSS class name for styled-components styling.
154
+ *
155
+ * @default undefined
156
+ */
157
+ className?: string;
158
+ /**
159
+ * Visual variant/type of the banner.
160
+ *
161
+ * @default 'info'
162
+ */
163
+ type?: BannerType;
164
+ /**
165
+ * Optional title text or React node displayed in the banner.
166
+ *
167
+ * @default undefined
168
+ */
169
+ title?: string | React$1.ReactNode;
170
+ /**
171
+ * Optional content text or React node displayed in the banner.
172
+ *
173
+ * @default undefined
174
+ */
175
+ content?: string | React$1.ReactNode;
176
+ /**
177
+ * Whether the banner is required and cannot be dismissed.
178
+ *
179
+ * When true, the close button is hidden and the banner cannot be dismissed.
180
+ *
181
+ * @default false
182
+ */
183
+ required?: boolean;
184
+ /**
185
+ * Time in milliseconds to automatically dismiss the banner.
186
+ *
187
+ * When provided, the banner will automatically close after this duration.
188
+ *
189
+ * @default undefined
190
+ */
191
+ dismissAfter?: number;
192
+ }
193
+
194
+ declare const Banner: React$1.ForwardRefExoticComponent<BannerProps & React$1.RefAttributes<HTMLDivElement>>;
195
+
196
+ declare const IconPacks: {
197
+ readonly solid: typeof solidIcons;
198
+ readonly regular: typeof regularIcons;
199
+ readonly duotone: typeof duotoneIcons;
200
+ readonly brands: typeof brandIcons;
201
+ };
202
+ type IconStyle = keyof typeof IconPacks;
203
+ type IconName = keyof typeof solidIcons | keyof typeof brandIcons;
204
+
205
+ /**
206
+ * Icon component for displaying FontAwesome icons.
207
+ *
208
+ * A versatile icon component that renders FontAwesome Pro icons (solid, regular,
209
+ * duotone) and brand icons. Supports all FontAwesome icon names and sizes, with
210
+ * theme-based color support.
211
+ *
212
+ * @category Interactive
213
+ * @see ClickableIcon
214
+ * @see Button
215
+ *
216
+ * @remarks
217
+ * - Requires UIProvider wrapper for theming
218
+ * - Uses FontAwesome Pro icons (solid, regular, duotone) and brand icons
219
+ * - Icon names follow FontAwesome convention (e.g., 'faUser', 'faChevronDown')
220
+ * - Decorative icons should have aria-hidden='true'
221
+ * - Meaningful icons should have aria-label or be wrapped in a semantic element
222
+ * - For clickable icons, use ClickableIcon component instead
223
+ *
224
+ * @example Basic usage
225
+ * ```tsx
226
+ * <Icon name="faUser" />
227
+ * ```
228
+ *
229
+ * @example Different styles
230
+ * ```tsx
231
+ * <Icon name="faUser" iconStyle="solid" />
232
+ * <Icon name="faUser" iconStyle="regular" />
233
+ * <Icon name="faUser" iconStyle="duotone" />
234
+ * ```
235
+ *
236
+ * @example Different sizes
237
+ * ```tsx
238
+ * <Icon name="faHome" size="xs" />
239
+ * <Icon name="faHome" size="sm" />
240
+ * <Icon name="faHome" size="lg" />
241
+ * <Icon name="faHome" size="2x" />
242
+ * ```
243
+ *
244
+ * @example With color
245
+ * ```tsx
246
+ * <Icon name="faCheck" color="primary" />
247
+ * <Icon name="faWarning" color="#ff0000" />
248
+ * ```
249
+ *
250
+ * @example Decorative icon (should be hidden from screen readers)
251
+ * ```tsx
252
+ * <Icon name="faStar" aria-hidden="true" />
253
+ * ```
254
+ *
255
+ * @example Meaningful icon (should have label)
256
+ * ```tsx
257
+ * <span aria-label="Success">
258
+ * <Icon name="faCheck" color="success" />
259
+ * </span>
260
+ * ```
261
+ */
262
+ interface IconProps {
263
+ /**
264
+ * FontAwesome icon name to display.
265
+ *
266
+ * Must be a valid icon name from FontAwesome Pro (solid, regular, duotone)
267
+ * or brand icons. Examples: 'faUser', 'faHome', 'faChevronDown', 'faCheck'.
268
+ */
269
+ name: IconName;
270
+ /**
271
+ * Icon style variant: 'solid', 'regular', or 'duotone'.
272
+ *
273
+ * @default 'solid'
274
+ */
275
+ iconStyle?: IconStyle;
276
+ /**
277
+ * Color of the icon (theme color name or CSS color value).
278
+ *
279
+ * Can be a theme color name (e.g., 'primary', 'textDark') or any CSS
280
+ * color value (e.g., '#ff0000', 'rgb(255, 0, 0)').
281
+ *
282
+ * @default 'textDark'
283
+ */
284
+ color?: string;
285
+ /**
286
+ * Icon size using FontAwesome size values.
287
+ *
288
+ * Supports FontAwesome size props: 'xs', 'sm', 'lg', '1x', '2x', '3x', etc.
289
+ * If undefined, uses default size based on fontSize.
290
+ *
291
+ * @default undefined
292
+ */
293
+ size?: SizeProp;
294
+ /**
295
+ * Additional CSS class name for custom styling.
296
+ *
297
+ * @default undefined
298
+ */
299
+ className?: string;
300
+ }
301
+
302
+ declare const Icon: React$1.FC<IconProps>;
303
+
304
+ /**
305
+ * Button visual variants.
306
+ */
307
+ declare enum ButtonVariant {
308
+ /** Primary button with primary color background */
309
+ primary = "primary",
310
+ /** Secondary button with background color and border */
311
+ secondary = "secondary",
312
+ /** Tertiary button with background color and no visible border */
313
+ tertiary = "tertiary"
314
+ }
315
+ /**
316
+ * Button component for user actions and form submissions.
317
+ *
318
+ * A versatile button component with multiple visual variants, sizes, and
319
+ * optional icon support. Supports all standard HTML button attributes and
320
+ * provides consistent styling across the application.
321
+ *
322
+ * @category Interactive
323
+ * @see ClickableIcon
324
+ * @see Icon
325
+ *
326
+ * @remarks
327
+ * - Requires UIProvider wrapper for theming
328
+ * - Supports all standard HTML button attributes (type, onClick, etc.)
329
+ * - Automatically adjusts size when icon-only (no children)
330
+ * - Disabled state prevents all interactions and reduces opacity
331
+ * - Forward ref supported for integration with form libraries
332
+ *
333
+ * @example Basic usage
334
+ * ```tsx
335
+ * <Button onClick={() => handleClick()}>
336
+ * Click Me
337
+ * </Button>
338
+ * ```
339
+ *
340
+ * @example With variants
341
+ * ```tsx
342
+ * <Button variant={ButtonVariant.primary}>Primary</Button>
343
+ * <Button variant={ButtonVariant.secondary}>Secondary</Button>
344
+ * <Button variant={ButtonVariant.tertiary}>Tertiary</Button>
345
+ * ```
346
+ *
347
+ * @example With icon
348
+ * ```tsx
349
+ * <Button iconName="faSave" onClick={handleSave}>
350
+ * Save
351
+ * </Button>
352
+ * ```
353
+ *
354
+ * @example Icon-only button
355
+ * ```tsx
356
+ * <Button iconName="faTrash" aria-label="Delete" />
357
+ * ```
358
+ *
359
+ * @example Mini size
360
+ * ```tsx
361
+ * <Button mini={true} iconName="faEdit">
362
+ * Edit
363
+ * </Button>
364
+ * ```
365
+ *
366
+ * @example Full width
367
+ * ```tsx
368
+ * <Button fullWidth={true} onClick={handleSubmit}>
369
+ * Submit Form
370
+ * </Button>
371
+ * ```
372
+ *
373
+ * @example Disabled state
374
+ * ```tsx
375
+ * <Button disabled={true} onClick={handleClick}>
376
+ * Cannot Click
377
+ * </Button>
378
+ * ```
379
+ */
380
+ interface ButtonProps extends AllHTMLAttributes<HTMLButtonElement> {
381
+ /**
382
+ * CSS class name for styled-components styling.
383
+ *
384
+ * @default undefined
385
+ */
386
+ className?: string;
387
+ /**
388
+ * Button content (text, React nodes, etc.).
389
+ *
390
+ * If omitted and iconName is provided, button becomes icon-only and
391
+ * automatically adjusts size.
392
+ */
393
+ children?: React.ReactNode;
394
+ /**
395
+ * Visual variant of the button.
396
+ *
397
+ * @default ButtonVariant.primary
398
+ */
399
+ variant?: ButtonVariant;
400
+ /**
401
+ * Whether to use the smaller mini size (28px height instead of 36px).
402
+ *
403
+ * @default false
404
+ */
405
+ mini?: boolean;
406
+ /**
407
+ * Whether the button is disabled.
408
+ *
409
+ * When true, onClick will not be called and the button appears
410
+ * visually disabled with reduced opacity.
411
+ *
412
+ * @default false
413
+ */
414
+ disabled?: boolean;
415
+ /**
416
+ * Whether the button should take the full width of its container.
417
+ *
418
+ * @default false
419
+ */
420
+ fullWidth?: boolean;
421
+ /**
422
+ * Icon name to display before the button content.
423
+ *
424
+ * If provided without children, the button becomes icon-only and
425
+ * automatically adjusts to a square size appropriate for the icon.
426
+ *
427
+ * @default undefined
428
+ */
429
+ iconName?: IconName;
430
+ }
431
+
432
+ declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
433
+
434
+ /**
435
+ * Calendar component for date selection with range support.
436
+ *
437
+ * A calendar component that allows users to select single dates or date ranges.
438
+ * Supports min/max date constraints, highlighted dates, and multiple month
439
+ * display. Uses dayjs for date manipulation.
440
+ *
441
+ * @category DateTime
442
+ * @see DatePicker
443
+ * @see DateInput
444
+ *
445
+ * @remarks
446
+ * - Requires UIProvider wrapper for theming
447
+ * - Uses dayjs for all date operations
448
+ * - Supports single date and date range selection
449
+ * - Keyboard navigation with arrow keys
450
+ * - Screen reader support for date announcements
451
+ * - Multiple months can be displayed side-by-side
452
+ *
453
+ * @example Basic single date selection
454
+ * ```tsx
455
+ * <Calendar
456
+ * startDate={selectedDate}
457
+ * onChange={(startDate) => setSelectedDate(startDate)}
458
+ * />
459
+ * ```
460
+ *
461
+ * @example Date range selection
462
+ * ```tsx
463
+ * <Calendar
464
+ * startDate={startDate}
465
+ * endDate={endDate}
466
+ * useRange={true}
467
+ * onChange={(start, end) => {
468
+ * setStartDate(start)
469
+ * setEndDate(end)
470
+ * }}
471
+ * />
472
+ * ```
473
+ *
474
+ * @example With min/max dates
475
+ * ```tsx
476
+ * <Calendar
477
+ * startDate={selectedDate}
478
+ * minDate={dayjs().subtract(1, 'year')}
479
+ * maxDate={dayjs().add(1, 'year')}
480
+ * onChange={(startDate) => setSelectedDate(startDate)}
481
+ * />
482
+ * ```
483
+ *
484
+ * @example With highlighted dates
485
+ * ```tsx
486
+ * <Calendar
487
+ * startDate={selectedDate}
488
+ * highlightedDates={[
489
+ * { date: dayjs(), tooltip: 'Today' },
490
+ * { date: dayjs().add(1, 'day'), disabled: true }
491
+ * ]}
492
+ * onChange={(startDate) => setSelectedDate(startDate)}
493
+ * />
494
+ * ```
495
+ *
496
+ * @example Multiple months
497
+ * ```tsx
498
+ * <Calendar
499
+ * startDate={selectedDate}
500
+ * displayMonths={2}
501
+ * onChange={(startDate) => setSelectedDate(startDate)}
502
+ * />
503
+ * ```
504
+ */
505
+ interface CalendarProps {
506
+ /**
507
+ * Selected start date.
508
+ *
509
+ * For single date selection, this is the selected date.
510
+ * For range selection, this is the start of the range.
511
+ *
512
+ * @default undefined
513
+ */
514
+ startDate?: dayjs.Dayjs;
515
+ /**
516
+ * Selected end date (only used when useRange is true).
517
+ *
518
+ * The end date of the selected range. Only relevant when useRange is true.
519
+ *
520
+ * @default undefined
521
+ */
522
+ endDate?: dayjs.Dayjs;
523
+ /**
524
+ * Minimum date that can be selected.
525
+ *
526
+ * Dates before this will be disabled.
527
+ *
528
+ * @default undefined
529
+ */
530
+ minDate?: dayjs.Dayjs;
531
+ /**
532
+ * Maximum date that can be selected.
533
+ *
534
+ * Dates after this will be disabled.
535
+ *
536
+ * @default undefined
537
+ */
538
+ maxDate?: dayjs.Dayjs;
539
+ /**
540
+ * Array of dates to highlight or disable.
541
+ *
542
+ * Each item can specify a date, optional tooltip text, and whether
543
+ * the date should be disabled.
544
+ */
545
+ highlightedDates?: {
546
+ /** The date to highlight */
547
+ date: dayjs.Dayjs;
548
+ /** Optional tooltip text shown on hover */
549
+ tooltip?: string;
550
+ /** Whether this date should be disabled */
551
+ disabled?: boolean;
552
+ }[];
553
+ /**
554
+ * Whether to enable date range selection.
555
+ *
556
+ * When true, users can select a start and end date to create a range.
557
+ *
558
+ * @default false
559
+ */
560
+ useRange?: boolean;
561
+ /**
562
+ * Number of months to display side-by-side.
563
+ *
564
+ * @default 1
565
+ */
566
+ displayMonths?: number;
567
+ /**
568
+ * Callback function triggered when the selected date or range changes.
569
+ *
570
+ * For single date selection, endDate will be undefined.
571
+ * For range selection, both startDate and endDate are provided.
572
+ *
573
+ * @param startDate - The selected start date (or single date)
574
+ * @param endDate - The selected end date (undefined for single date selection)
575
+ */
576
+ onChange?: (startDate: dayjs.Dayjs, endDate?: dayjs.Dayjs) => void;
577
+ }
578
+
579
+ declare const Calendar: React$1.ForwardRefExoticComponent<CalendarProps & React$1.RefAttributes<any>>;
580
+
581
+ /**
582
+ * Checkbox component for boolean selections.
583
+ *
584
+ * A checkbox input component that allows users to select one or more options
585
+ * from a set. Supports labels, controlled/uncontrolled states, and disabled
586
+ * states. Built on Radix UI checkbox for accessibility.
587
+ *
588
+ * @category Forms
589
+ * @see Switch
590
+ * @see Input
591
+ *
592
+ * @remarks
593
+ * - Requires UIProvider wrapper for theming
594
+ * - Built on Radix UI Checkbox for accessibility
595
+ * - Supports controlled and uncontrolled modes
596
+ * - Keyboard accessible (Space to toggle)
597
+ * - Use for multiple independent selections
598
+ *
599
+ * @example Basic usage
600
+ * ```tsx
601
+ * <Checkbox
602
+ * checked={isChecked}
603
+ * setChecked={(checked) => setIsChecked(checked)}
604
+ * label="I agree to the terms"
605
+ * />
606
+ * ```
607
+ *
608
+ * @example Uncontrolled
609
+ * ```tsx
610
+ * <Checkbox
611
+ * defaultChecked={true}
612
+ * label="Subscribe to newsletter"
613
+ * />
614
+ * ```
615
+ *
616
+ * @example With custom label
617
+ * ```tsx
618
+ * <Checkbox
619
+ * checked={isChecked}
620
+ * setChecked={setIsChecked}
621
+ * label={<span>Custom <strong>label</strong></span>}
622
+ * />
623
+ * ```
624
+ *
625
+ * @example Disabled state
626
+ * ```tsx
627
+ * <Checkbox
628
+ * checked={true}
629
+ * setChecked={setIsChecked}
630
+ * label="Cannot change"
631
+ * disabled={true}
632
+ * />
633
+ * ```
634
+ */
635
+ interface CheckboxProps {
636
+ /**
637
+ * Whether the checkbox is checked.
638
+ *
639
+ * For controlled components, use this with setChecked.
640
+ *
641
+ * @default undefined
642
+ */
643
+ checked?: boolean;
644
+ /**
645
+ * Callback function triggered when the checkbox state changes.
646
+ *
647
+ * @param checked - The new checked state (boolean)
648
+ */
649
+ setChecked?: (checked: boolean) => void;
650
+ /**
651
+ * Label text or React node displayed next to the checkbox.
652
+ *
653
+ * Can be a string or any React node for custom styling.
654
+ *
655
+ * @default undefined
656
+ */
657
+ label?: ReactNode;
658
+ /**
659
+ * Whether the checkbox is disabled and cannot be interacted with.
660
+ *
661
+ * @default false
662
+ */
663
+ disabled?: boolean;
664
+ }
665
+
666
+ declare const Checkbox: React$1.ForwardRefExoticComponent<CheckboxProps & React$1.RefAttributes<any>>;
667
+
668
+ /**
669
+ * ClickableIcon component for icon-only interactive actions.
670
+ *
671
+ * A clickable icon component that wraps the Icon component with interactive
672
+ * functionality. Ideal for toolbar actions, icon buttons, and compact controls
673
+ * where text labels are not needed. Requires an aria-label for accessibility.
674
+ *
675
+ * @category Interactive
676
+ * @see Icon
677
+ * @see Button
678
+ *
679
+ * @remarks
680
+ * - Requires UIProvider wrapper for theming
681
+ * - Requires aria-label prop for accessibility (icon-only buttons need labels)
682
+ * - Keyboard accessible (Enter/Space to activate)
683
+ * - Disabled state prevents interactions
684
+ * - Use for icon-only actions where Button would be too large
685
+ *
686
+ * @example Basic usage
687
+ * ```tsx
688
+ * <ClickableIcon
689
+ * iconName="faTrash"
690
+ * onClick={() => handleDelete()}
691
+ * aria-label="Delete item"
692
+ * />
693
+ * ```
694
+ *
695
+ * @example With tooltip
696
+ * ```tsx
697
+ * <Tooltip content="Edit item">
698
+ * <ClickableIcon
699
+ * iconName="faEdit"
700
+ * onClick={() => handleEdit()}
701
+ * aria-label="Edit"
702
+ * />
703
+ * </Tooltip>
704
+ * ```
705
+ *
706
+ * @example Different sizes
707
+ * ```tsx
708
+ * <ClickableIcon iconName="faUser" size="xs" onClick={handleClick} />
709
+ * <ClickableIcon iconName="faUser" size="sm" onClick={handleClick} />
710
+ * <ClickableIcon iconName="faUser" size="lg" onClick={handleClick} />
711
+ * ```
712
+ *
713
+ * @example Disabled state
714
+ * ```tsx
715
+ * <ClickableIcon
716
+ * iconName="faSave"
717
+ * onClick={() => handleSave()}
718
+ * disabled={true}
719
+ * aria-label="Save"
720
+ * />
721
+ * ```
722
+ */
723
+ interface ClickableIconProps {
724
+ /**
725
+ * CSS class name for styled-components styling.
726
+ *
727
+ * @default undefined
728
+ */
729
+ className?: string;
730
+ /**
731
+ * FontAwesome icon name to display.
732
+ *
733
+ * Must be a valid IconName from the Icon component constants.
734
+ */
735
+ iconName: IconName;
736
+ /**
737
+ * Callback function called when the icon is clicked.
738
+ *
739
+ * @default undefined
740
+ */
741
+ onClick?: () => void;
742
+ /**
743
+ * Size of the icon using FontAwesome size values.
744
+ *
745
+ * @default 'sm'
746
+ */
747
+ size?: SizeProp;
748
+ /**
749
+ * Color of the icon (theme color name or CSS color value).
750
+ *
751
+ * @default undefined (uses theme default)
752
+ */
753
+ color?: string;
754
+ /**
755
+ * Whether the icon is disabled and cannot be clicked.
756
+ *
757
+ * When true, onClick will not be called.
758
+ *
759
+ * @default false
760
+ */
761
+ disabled?: boolean;
762
+ }
763
+
764
+ declare const ClickableIcon: React$1.ForwardRefExoticComponent<ClickableIconProps & React$1.RefAttributes<any>>;
765
+
766
+ /**
767
+ * Currency value structure for CurrencyInput.
768
+ */
769
+ interface CurrencyValue {
770
+ /** The numeric amount value */
771
+ amount: number;
772
+ /** The currency code (e.g., 'USD', 'EUR') */
773
+ currency: string;
774
+ }
775
+ /**
776
+ * CurrencyInput component for currency amount entry with formatting.
777
+ *
778
+ * A specialized input component for entering currency values with automatic
779
+ * formatting, currency symbol display, and decimal handling. Includes a
780
+ * currency selector dropdown and formats values according to the selected
781
+ * currency locale.
782
+ *
783
+ * @category Forms
784
+ * @see Input
785
+ *
786
+ * @remarks
787
+ * - Requires UIProvider wrapper for theming
788
+ * - Built on react-currency-input-field
789
+ * - Automatically formats values with currency symbols
790
+ * - Supports decimal values (up to 2 decimal places)
791
+ * - Currency selector is built into the component
792
+ * - Currently supports USD currency (extensible)
793
+ * - Use InputContainer for labels, error messages, and helper text
794
+ *
795
+ * @example Basic usage
796
+ * ```tsx
797
+ * <CurrencyInput
798
+ * value={{ amount: 100, currency: 'USD' }}
799
+ * onChange={(value) => console.log(value)}
800
+ * />
801
+ * ```
802
+ *
803
+ * @example With placeholder
804
+ * ```tsx
805
+ * <CurrencyInput
806
+ * value={currencyValue}
807
+ * onChange={(value) => setCurrencyValue(value)}
808
+ * placeholder="Enter amount"
809
+ * />
810
+ * ```
811
+ *
812
+ * @example Disabled state
813
+ * ```tsx
814
+ * <CurrencyInput
815
+ * value={{ amount: 50, currency: 'USD' }}
816
+ * onChange={() => {}}
817
+ * disabled={true}
818
+ * />
819
+ * ```
820
+ */
821
+ interface CurrencyInputProps {
822
+ /**
823
+ * CSS class name for styled-components styling.
824
+ *
825
+ * @default undefined
826
+ */
827
+ className?: string;
828
+ /**
829
+ * Current currency value (amount and currency code).
830
+ *
831
+ * @default undefined
832
+ */
833
+ value?: CurrencyValue;
834
+ /**
835
+ * Callback function triggered when the currency value changes.
836
+ *
837
+ * Receives an object with the amount (number), currency (string), and
838
+ * formatted (string) values.
839
+ *
840
+ * @param value - Object containing amount, currency, and formatted string
841
+ */
842
+ onChange?: (value: {
843
+ /** The numeric amount (undefined if input is cleared) */
844
+ amount?: number;
845
+ /** The currency code */
846
+ currency: string;
847
+ /** The formatted string representation */
848
+ formatted?: string;
849
+ }) => void;
850
+ /**
851
+ * Placeholder text displayed when the input is empty.
852
+ *
853
+ * @default undefined
854
+ */
855
+ placeholder?: string;
856
+ /**
857
+ * Whether the input is disabled and cannot be edited.
858
+ *
859
+ * @default false
860
+ */
861
+ disabled?: boolean;
862
+ }
863
+
864
+ declare const CurrencyInput: ({ className, value, onChange, placeholder, disabled }: CurrencyInputProps) => react_jsx_runtime.JSX.Element;
865
+
866
+ /**
867
+ * DateInput component for date entry with validation.
868
+ *
869
+ * A date input component that extends Calendar functionality to provide
870
+ * a text input field for date entry. Supports date validation, min/max
871
+ * dates, and date range selection. Uses dayjs for date handling.
872
+ *
873
+ * @category Forms
874
+ * @see DatePicker
875
+ * @see Calendar
876
+ * @see TimeInput
877
+ *
878
+ * @remarks
879
+ * - Requires UIProvider wrapper for theming
880
+ * - Extends CalendarProps for date selection features
881
+ * - Uses dayjs for date manipulation and formatting
882
+ * - Supports single date and date range selection
883
+ * - Date format should be clearly indicated to users
884
+ * - Use InputContainer for labels, error messages, and helper text
885
+ *
886
+ * @example Basic usage
887
+ * ```tsx
888
+ * <DateInput
889
+ * startDate={selectedDate}
890
+ * onChange={(startDate) => setSelectedDate(startDate)}
891
+ * placeholder="Select date"
892
+ * />
893
+ * ```
894
+ *
895
+ * @example With date range
896
+ * ```tsx
897
+ * <DateInput
898
+ * startDate={startDate}
899
+ * endDate={endDate}
900
+ * useRange={true}
901
+ * onChange={(start, end) => {
902
+ * setStartDate(start)
903
+ * setEndDate(end)
904
+ * }}
905
+ * />
906
+ * ```
907
+ *
908
+ * @example With min/max dates
909
+ * ```tsx
910
+ * <DateInput
911
+ * startDate={selectedDate}
912
+ * minDate={dayjs().subtract(1, 'year')}
913
+ * maxDate={dayjs().add(1, 'year')}
914
+ * onChange={(startDate) => setSelectedDate(startDate)}
915
+ * />
916
+ * ```
917
+ *
918
+ * @example Disabled state
919
+ * ```tsx
920
+ * <DateInput
921
+ * startDate={selectedDate}
922
+ * onChange={() => {}}
923
+ * disabled={true}
924
+ * />
925
+ * ```
926
+ */
927
+ interface DateInputProps extends CalendarProps {
928
+ /**
929
+ * Placeholder text displayed when no date is selected.
930
+ *
931
+ * @default undefined
932
+ */
933
+ placeholder?: string;
934
+ /**
935
+ * Whether the input is disabled and cannot be edited.
936
+ *
937
+ * @default false
938
+ */
939
+ disabled?: boolean;
940
+ }
941
+
942
+ declare const DateInput: React$1.ForwardRefExoticComponent<DateInputProps & React$1.RefAttributes<any>>;
943
+
944
+ /**
945
+ * Dropdown visual variants.
946
+ */
947
+ declare enum DropdownVariant {
948
+ /** Small variant with compact sizing */
949
+ small = "small",
950
+ /** Normal variant with standard sizing */
951
+ normal = "normal"
952
+ }
953
+ /**
954
+ * DropdownTrigger component for the dropdown button/trigger element.
955
+ *
956
+ * @category Navigation
957
+ * @see Dropdown
958
+ * @see DropdownMenu
959
+ */
960
+ interface DropdownTriggerProps {
961
+ /**
962
+ * CSS class name for styled-components styling.
963
+ *
964
+ * @default undefined
965
+ */
966
+ className?: string;
967
+ /**
968
+ * Label text or React node to display in the trigger.
969
+ */
970
+ label: string | ReactNode;
971
+ /**
972
+ * Whether the trigger is disabled.
973
+ *
974
+ * @default false
975
+ */
976
+ disabled?: boolean;
977
+ /**
978
+ * Callback function called when the trigger is clicked.
979
+ *
980
+ * @default undefined
981
+ */
982
+ onClick?: () => void;
983
+ /**
984
+ * Whether the dropdown is currently open.
985
+ *
986
+ * Used to render the correct chevron icon (up/down).
987
+ *
988
+ * @default undefined
989
+ */
990
+ isOpen?: boolean;
991
+ /**
992
+ * Visual variant of the dropdown.
993
+ *
994
+ * @default DropdownVariant.normal
995
+ */
996
+ variant?: DropdownVariant;
997
+ /**
998
+ * Whether the trigger should take full width of its container.
999
+ *
1000
+ * @default false
1001
+ */
1002
+ fullWidth?: boolean;
1003
+ }
1004
+ /**
1005
+ * DropdownItem component for individual items in a dropdown menu.
1006
+ *
1007
+ * @category Navigation
1008
+ * @see Dropdown
1009
+ * @see DropdownMenu
1010
+ */
1011
+ interface DropdownItemProps {
1012
+ /**
1013
+ * Optional icon name to display before the label.
1014
+ *
1015
+ * @default undefined
1016
+ */
1017
+ iconName?: IconName;
1018
+ /**
1019
+ * Label text or React node to display.
1020
+ */
1021
+ label: string | ReactNode;
1022
+ /**
1023
+ * Callback function called when the item is clicked.
1024
+ *
1025
+ * @default undefined
1026
+ */
1027
+ onClick?: () => void;
1028
+ /**
1029
+ * Whether the item is disabled and cannot be clicked.
1030
+ *
1031
+ * @default false
1032
+ */
1033
+ disabled?: boolean;
1034
+ /**
1035
+ * Color of the item (theme color name or CSS color value).
1036
+ *
1037
+ * @default 'textNormal'
1038
+ */
1039
+ color?: string;
1040
+ /**
1041
+ * Visual variant of the dropdown item.
1042
+ *
1043
+ * @default DropdownVariant.normal
1044
+ */
1045
+ variant?: DropdownVariant;
1046
+ /**
1047
+ * Optional content to display on the right side of the item.
1048
+ *
1049
+ * Useful for icons, checkmarks, or other indicators.
1050
+ *
1051
+ * @default undefined
1052
+ */
1053
+ rightContent?: React.ReactNode;
1054
+ }
1055
+ /**
1056
+ * Dropdown component for displaying popover content triggered by a button.
1057
+ *
1058
+ * A flexible dropdown component built on Radix UI Popover that displays
1059
+ * content in a popover when triggered. Supports positioning, alignment,
1060
+ * and modal/non-modal modes.
1061
+ *
1062
+ * @category Navigation
1063
+ * @see Select
1064
+ * @see MultiSelect
1065
+ *
1066
+ * @remarks
1067
+ * - Requires UIProvider wrapper for theming
1068
+ * - Built on Radix UI Popover for accessibility
1069
+ * - Keyboard accessible (Escape to close, arrow keys for navigation)
1070
+ * - Focus management on open/close
1071
+ * - Positioning adjusts automatically to avoid collisions
1072
+ * - Use for context menus, action menus, and custom dropdowns
1073
+ *
1074
+ * @example Basic usage
1075
+ * ```tsx
1076
+ * <Dropdown
1077
+ * trigger={<Button>Open Menu</Button>}
1078
+ * content={<div>Menu content</div>}
1079
+ * />
1080
+ * ```
1081
+ *
1082
+ * @example Controlled dropdown
1083
+ * ```tsx
1084
+ * const [isOpen, setOpen] = useState(false)
1085
+ *
1086
+ * <Dropdown
1087
+ * isOpen={isOpen}
1088
+ * setOpen={setOpen}
1089
+ * trigger={<Button>Toggle</Button>}
1090
+ * content={<div>Content</div>}
1091
+ * />
1092
+ * ```
1093
+ */
1094
+ interface DropdownProps {
1095
+ /**
1096
+ * Trigger element that opens the dropdown when clicked.
1097
+ *
1098
+ * Can be any React node (typically a Button or DropdownTrigger).
1099
+ */
1100
+ trigger: React.ReactNode;
1101
+ /**
1102
+ * Content to display in the dropdown popover.
1103
+ *
1104
+ * Can be any React node.
1105
+ */
1106
+ content: React.ReactNode;
1107
+ /**
1108
+ * Controlled open state of the dropdown.
1109
+ *
1110
+ * @default undefined
1111
+ */
1112
+ isOpen?: boolean;
1113
+ /**
1114
+ * Callback function called when the open state changes.
1115
+ *
1116
+ * @param open - The new open state (boolean)
1117
+ */
1118
+ setOpen?: (open: boolean) => void;
1119
+ /**
1120
+ * Visual variant of the dropdown.
1121
+ *
1122
+ * @default DropdownVariant.normal
1123
+ */
1124
+ variant?: DropdownVariant;
1125
+ /**
1126
+ * Whether the dropdown is disabled and cannot be opened.
1127
+ *
1128
+ * @default false
1129
+ */
1130
+ disabled?: boolean;
1131
+ /**
1132
+ * Side of the trigger where the popover should render.
1133
+ *
1134
+ * Automatically adjusts if there's not enough space.
1135
+ *
1136
+ * @default 'bottom'
1137
+ */
1138
+ side?: 'top' | 'right' | 'bottom' | 'left';
1139
+ /**
1140
+ * Distance in pixels between the trigger and popover.
1141
+ *
1142
+ * @default 0
1143
+ */
1144
+ sideOffset?: number;
1145
+ /**
1146
+ * Alignment of the popover relative to the trigger.
1147
+ *
1148
+ * Automatically adjusts if there's not enough space.
1149
+ *
1150
+ * @default 'center'
1151
+ */
1152
+ align?: 'start' | 'center' | 'end';
1153
+ /**
1154
+ * Offset in pixels from the alignment position.
1155
+ *
1156
+ * @default 0
1157
+ */
1158
+ alignOffset?: number;
1159
+ /**
1160
+ * Whether the dropdown blocks interaction with elements behind it.
1161
+ *
1162
+ * When false, users can interact with elements behind the dropdown.
1163
+ *
1164
+ * @default true
1165
+ */
1166
+ modal?: boolean;
1167
+ /**
1168
+ * Whether the popover should take full width of the trigger.
1169
+ *
1170
+ * @default false
1171
+ */
1172
+ fullWidth?: boolean;
1173
+ }
1174
+ /**
1175
+ * DropdownMenu component for structured menu content with sections.
1176
+ *
1177
+ * A specialized dropdown component that provides a structured menu layout
1178
+ * with optional header, sections of items, and footer. Useful for complex
1179
+ * menu structures.
1180
+ *
1181
+ * @category Navigation
1182
+ * @see Dropdown
1183
+ */
1184
+ interface DropdownMenuProps {
1185
+ /**
1186
+ * Trigger element that opens the menu when clicked.
1187
+ */
1188
+ trigger: React.ReactNode;
1189
+ /**
1190
+ * Optional header content displayed at the top of the menu.
1191
+ *
1192
+ * @default undefined
1193
+ */
1194
+ header?: ReactNode;
1195
+ /**
1196
+ * Array of item sections, where each section is an array of DropdownItemProps.
1197
+ *
1198
+ * Sections are visually separated in the menu.
1199
+ */
1200
+ sections: DropdownItemProps[][];
1201
+ /**
1202
+ * Optional footer content displayed at the bottom of the menu.
1203
+ *
1204
+ * @default undefined
1205
+ */
1206
+ footer?: ReactNode;
1207
+ /**
1208
+ * Callback function called when a menu item is clicked.
1209
+ *
1210
+ * @param item - The clicked DropdownItemProps object
1211
+ */
1212
+ onItemClick?: (item: DropdownItemProps) => void;
1213
+ /**
1214
+ * Visual variant of the dropdown menu.
1215
+ *
1216
+ * @default DropdownVariant.normal
1217
+ */
1218
+ variant?: DropdownVariant;
1219
+ /**
1220
+ * Side of the trigger where the menu should render.
1221
+ *
1222
+ * @default 'bottom'
1223
+ */
1224
+ side?: 'top' | 'right' | 'bottom' | 'left';
1225
+ /**
1226
+ * Distance in pixels between the trigger and menu.
1227
+ *
1228
+ * @default 0
1229
+ */
1230
+ sideOffset?: number;
1231
+ /**
1232
+ * Alignment of the menu relative to the trigger.
1233
+ *
1234
+ * @default 'center'
1235
+ */
1236
+ align?: 'start' | 'center' | 'end';
1237
+ /**
1238
+ * Offset in pixels from the alignment position.
1239
+ *
1240
+ * @default 0
1241
+ */
1242
+ alignOffset?: number;
1243
+ }
1244
+
1245
+ declare const Dropdown: ({ trigger, content, isOpen, setOpen, variant, side, sideOffset, align, alignOffset, disabled, modal, fullWidth }: DropdownProps) => string | number | bigint | boolean | Iterable<React$1.ReactNode> | Promise<string | number | bigint | boolean | React$1.ReactPortal | React$1.ReactElement<unknown, string | React$1.JSXElementConstructor<any>> | Iterable<React$1.ReactNode>> | react_jsx_runtime.JSX.Element;
1246
+
1247
+ declare const DropdownTrigger: React$1.ForwardRefExoticComponent<DropdownTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
1248
+
1249
+ declare const DropdownItem: React$1.ForwardRefExoticComponent<DropdownItemProps & React$1.RefAttributes<HTMLButtonElement>>;
1250
+
1251
+ declare const DropdownMenu: ({ trigger, header, sections, footer, onItemClick, variant, side, sideOffset, align, alignOffset }: DropdownMenuProps) => react_jsx_runtime.JSX.Element;
1252
+
1253
+ /**
1254
+ * DatePicker component combining input field with calendar popup.
1255
+ *
1256
+ * A date picker component that combines a text input field with a calendar
1257
+ * popup. Users can type dates directly or click to open the calendar for
1258
+ * visual date selection. Extends Calendar component functionality.
1259
+ *
1260
+ * @category DateTime
1261
+ * @see Calendar
1262
+ * @see DateInput
1263
+ *
1264
+ * @remarks
1265
+ * - Requires UIProvider wrapper for theming
1266
+ * - Extends CalendarProps for all calendar features
1267
+ * - Combines input field with dropdown calendar
1268
+ * - Uses dayjs for date manipulation
1269
+ * - Supports single date and date range selection
1270
+ * - Calendar opens as a dropdown when input is focused/clicked
1271
+ * - Use InputContainer for labels, error messages, and helper text
1272
+ *
1273
+ * @example Basic usage
1274
+ * ```tsx
1275
+ * <DatePicker
1276
+ * startDate={selectedDate}
1277
+ * onChange={(startDate) => setSelectedDate(startDate)}
1278
+ * />
1279
+ * ```
1280
+ *
1281
+ * @example With date range
1282
+ * ```tsx
1283
+ * <DatePicker
1284
+ * startDate={startDate}
1285
+ * endDate={endDate}
1286
+ * useRange={true}
1287
+ * onChange={(start, end) => {
1288
+ * setStartDate(start)
1289
+ * setEndDate(end)
1290
+ * }}
1291
+ * />
1292
+ * ```
1293
+ *
1294
+ * @example With InputContainer
1295
+ * ```tsx
1296
+ * <InputContainer label="Select Date" error={errors.date}>
1297
+ * <DatePicker
1298
+ * startDate={selectedDate}
1299
+ * onChange={(startDate) => setSelectedDate(startDate)}
1300
+ * />
1301
+ * </InputContainer>
1302
+ * ```
1303
+ *
1304
+ * @example With custom dropdown variant
1305
+ * ```tsx
1306
+ * <DatePicker
1307
+ * startDate={selectedDate}
1308
+ * onChange={(startDate) => setSelectedDate(startDate)}
1309
+ * dropdownVariant={DropdownVariant.normal}
1310
+ * />
1311
+ * ```
1312
+ */
1313
+ interface DatePickerProps extends CalendarProps {
1314
+ /**
1315
+ * Visual variant of the dropdown calendar.
1316
+ *
1317
+ * Controls the size and styling of the calendar dropdown.
1318
+ *
1319
+ * @default DropdownVariant.small
1320
+ */
1321
+ dropdownVariant?: DropdownVariant;
1322
+ }
1323
+
1324
+ declare const DatePicker: React$1.ForwardRefExoticComponent<DatePickerProps & React$1.RefAttributes<any>>;
1325
+
1326
+ /**
1327
+ * Divider component for visually separating content sections.
1328
+ *
1329
+ * A simple divider component that creates a visual separation between content
1330
+ * sections. Supports horizontal and vertical orientations, dashed styles, and
1331
+ * custom colors. For decorative dividers, should have aria-hidden='true'.
1332
+ *
1333
+ * @category Layout
1334
+ * @see Flex
1335
+ *
1336
+ * @remarks
1337
+ * - Requires UIProvider wrapper for theming
1338
+ * - Default is horizontal divider (full width, 1px height)
1339
+ * - Vertical divider is 1px width, full height
1340
+ * - Decorative dividers should have aria-hidden='true'
1341
+ * - Semantic dividers should use proper HTML elements (hr, etc.)
1342
+ *
1343
+ * @example Basic horizontal divider
1344
+ * ```tsx
1345
+ * <div>Content above</div>
1346
+ * <Divider />
1347
+ * <div>Content below</div>
1348
+ * ```
1349
+ *
1350
+ * @example Vertical divider
1351
+ * ```tsx
1352
+ * <Flex row>
1353
+ * <div>Left content</div>
1354
+ * <Divider vertical />
1355
+ * <div>Right content</div>
1356
+ * </Flex>
1357
+ * ```
1358
+ *
1359
+ * @example Dashed divider
1360
+ * ```tsx
1361
+ * <Divider dashed />
1362
+ * ```
1363
+ *
1364
+ * @example Custom color
1365
+ * ```tsx
1366
+ * <Divider color="primary" />
1367
+ * ```
1368
+ *
1369
+ * @example Decorative divider (hidden from screen readers)
1370
+ * ```tsx
1371
+ * <Divider aria-hidden="true" />
1372
+ * ```
1373
+ */
1374
+ interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {
1375
+ /**
1376
+ * Width of the divider.
1377
+ *
1378
+ * Defaults to '100%' for horizontal dividers, '1px' for vertical.
1379
+ *
1380
+ * @default '100%' (horizontal) or '1px' (vertical)
1381
+ */
1382
+ width?: string;
1383
+ /**
1384
+ * Height of the divider.
1385
+ *
1386
+ * Defaults to '1px' for horizontal dividers, '100%' for vertical.
1387
+ *
1388
+ * @default '1px' (horizontal) or '100%' (vertical)
1389
+ */
1390
+ height?: string;
1391
+ /**
1392
+ * Whether the divider is vertical instead of horizontal.
1393
+ *
1394
+ * @default false
1395
+ */
1396
+ vertical?: boolean;
1397
+ /**
1398
+ * Whether the divider uses a dashed border style.
1399
+ *
1400
+ * @default false
1401
+ */
1402
+ dashed?: boolean;
1403
+ /**
1404
+ * Color of the divider (theme color name or CSS color value).
1405
+ *
1406
+ * @default theme.colors.border
1407
+ */
1408
+ color?: string;
1409
+ }
1410
+
1411
+ declare const Divider: node_modules_styled_components_dist_types.IStyledComponentBase<"web", node_modules_styled_components_dist_types.Substitute<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, DividerProps>> & string;
1412
+
1413
+ /**
1414
+ * Item type for DragList component.
1415
+ */
1416
+ interface DragListItem {
1417
+ /** Index position in the list (0-based) */
1418
+ index: number;
1419
+ /** Unique identifier for the item */
1420
+ id: string;
1421
+ /** Content to display for the item (React node) */
1422
+ content: ReactNode;
1423
+ /** Whether the item is disabled and cannot be dragged */
1424
+ disabled?: boolean;
1425
+ }
1426
+ /**
1427
+ * DragList component for reorderable lists with drag and drop.
1428
+ *
1429
+ * A draggable list component that allows users to reorder items by dragging
1430
+ * and dropping. Built on react-dnd for drag and drop functionality. Supports
1431
+ * disabled items and provides callbacks for order changes.
1432
+ *
1433
+ * @category Advanced
1434
+ * @see Table
1435
+ *
1436
+ * @remarks
1437
+ * - Requires UIProvider wrapper for theming
1438
+ * - Built on react-dnd for drag and drop
1439
+ * - Keyboard alternative should be provided for accessibility
1440
+ * - Drag state should be announced to screen readers
1441
+ * - Position changes should be communicated to users
1442
+ * - Disabled items cannot be dragged
1443
+ *
1444
+ * @example Basic usage
1445
+ * ```tsx
1446
+ * <DragList
1447
+ * items={items}
1448
+ * onChange={(newItems) => setItems(newItems)}
1449
+ * />
1450
+ * ```
1451
+ *
1452
+ * @example With disabled items
1453
+ * ```tsx
1454
+ * <DragList
1455
+ * items={[
1456
+ * { index: 0, id: '1', content: <Text>Item 1</Text> },
1457
+ * { index: 1, id: '2', content: <Text>Item 2</Text>, disabled: true }
1458
+ * ]}
1459
+ * onChange={(newItems) => setItems(newItems)}
1460
+ * />
1461
+ * ```
1462
+ */
1463
+ interface DragListProps {
1464
+ /**
1465
+ * CSS class name for styled-components styling.
1466
+ *
1467
+ * @default undefined
1468
+ */
1469
+ className?: string;
1470
+ /**
1471
+ * Array of items to display in the list.
1472
+ *
1473
+ * Each item must have a unique id and content. The index is used for
1474
+ * initial ordering and will be updated when items are reordered.
1475
+ */
1476
+ items: DragListItem[];
1477
+ /**
1478
+ * Callback function called when items are reordered.
1479
+ *
1480
+ * Receives the new array of items with updated indices.
1481
+ *
1482
+ * @param items - The new array of items in their new order
1483
+ */
1484
+ onChange: (items: DragListItem[]) => void;
1485
+ }
1486
+
1487
+ declare const DragList: ({ className, items, onChange }: DragListProps) => react_jsx_runtime.JSX.Element;
1488
+
1489
+ /**
1490
+ * Allowed value types for filters.
1491
+ */
1492
+ type AllowedValues = string | number | boolean | undefined;
1493
+ /**
1494
+ * Filter value structure for different filter types.
1495
+ */
1496
+ type FilterValue = {
1497
+ /** Text search value (for 'text' type) */
1498
+ like?: string;
1499
+ /** Single value (for 'select' type) */
1500
+ value?: AllowedValues;
1501
+ /** Array of included values (for 'checkbox' type) */
1502
+ includes?: AllowedValues[];
1503
+ /** Array of excluded values */
1504
+ excludes?: AllowedValues[];
1505
+ /** Minimum value (for 'range' and 'dateRange' types) */
1506
+ min?: number;
1507
+ /** Maximum value (for 'range' and 'dateRange' types) */
1508
+ max?: number;
1509
+ };
1510
+ /**
1511
+ * Filter values object mapping filter IDs to their values.
1512
+ */
1513
+ type FilterValues = Record<string, FilterValue | undefined>;
1514
+ /**
1515
+ * Filter type definition for Filters component.
1516
+ */
1517
+ type FilterType = {
1518
+ /** Unique identifier for the filter */
1519
+ id: string;
1520
+ /** Type of filter input */
1521
+ type: 'text' | 'select' | 'checkbox' | 'range' | 'dateRange';
1522
+ /** Label displayed for the filter */
1523
+ label: string;
1524
+ /** Placeholder text for the filter input */
1525
+ placeholder?: string;
1526
+ /** Options for select and checkbox filters */
1527
+ options?: {
1528
+ /** Option label */
1529
+ label: string;
1530
+ /** Option value */
1531
+ value: AllowedValues;
1532
+ /** Optional icon for the option */
1533
+ iconName?: IconName;
1534
+ /** Whether the option is disabled */
1535
+ disabled?: boolean;
1536
+ }[];
1537
+ /** Minimum value constraint (type-specific) */
1538
+ minValue?: number;
1539
+ /** Maximum value constraint (type-specific) */
1540
+ maxValue?: number;
1541
+ /** Validation function that returns error message if value is invalid */
1542
+ getError?: (value: FilterValue | undefined) => string;
1543
+ };
1544
+ /**
1545
+ * Filters component for advanced filtering interfaces.
1546
+ *
1547
+ * A comprehensive filter component that supports multiple filter types:
1548
+ * text search, select dropdowns, checkboxes, numeric ranges, and date ranges.
1549
+ * Provides a unified interface for complex filtering needs.
1550
+ *
1551
+ * @category Advanced
1552
+ * @see Input
1553
+ * @see Select
1554
+ * @see Checkbox
1555
+ * @see DateInput
1556
+ *
1557
+ * @remarks
1558
+ * - Requires UIProvider wrapper for theming
1559
+ * - minValue/maxValue constraints are type-specific:
1560
+ * - text: string length constraints
1561
+ * - select: not applicable
1562
+ * - checkbox: min/max number of checked items
1563
+ * - range: min/max numeric values
1564
+ * - dateRange: min/max date range constraints
1565
+ * - Filter state should be clear to users
1566
+ * - Keyboard navigation between filters
1567
+ * - Active filters should be announced
1568
+ *
1569
+ * @example Basic usage with text filter
1570
+ * ```tsx
1571
+ * <Filters
1572
+ * filters={[
1573
+ * {
1574
+ * id: 'search',
1575
+ * type: 'text',
1576
+ * label: 'Search',
1577
+ * placeholder: 'Type to search...'
1578
+ * }
1579
+ * ]}
1580
+ * values={filterValues}
1581
+ * onFilterChange={(values) => setFilterValues(values)}
1582
+ * />
1583
+ * ```
1584
+ *
1585
+ * @example With multiple filter types
1586
+ * ```tsx
1587
+ * <Filters
1588
+ * filters={[
1589
+ * { id: 'name', type: 'text', label: 'Name' },
1590
+ * {
1591
+ * id: 'status',
1592
+ * type: 'select',
1593
+ * label: 'Status',
1594
+ * options: [
1595
+ * { label: 'Active', value: 'active' },
1596
+ * { label: 'Inactive', value: 'inactive' }
1597
+ * ]
1598
+ * },
1599
+ * {
1600
+ * id: 'tags',
1601
+ * type: 'checkbox',
1602
+ * label: 'Tags',
1603
+ * options: [
1604
+ * { label: 'Tag 1', value: 'tag1' },
1605
+ * { label: 'Tag 2', value: 'tag2' }
1606
+ * ]
1607
+ * }
1608
+ * ]}
1609
+ * values={filterValues}
1610
+ * onFilterChange={(values) => setFilterValues(values)}
1611
+ * />
1612
+ * ```
1613
+ *
1614
+ * @example With range filter
1615
+ * ```tsx
1616
+ * <Filters
1617
+ * filters={[
1618
+ * {
1619
+ * id: 'price',
1620
+ * type: 'range',
1621
+ * label: 'Price Range',
1622
+ * minValue: 0,
1623
+ * maxValue: 1000
1624
+ * }
1625
+ * ]}
1626
+ * values={filterValues}
1627
+ * onFilterChange={(values) => setFilterValues(values)}
1628
+ * />
1629
+ * ```
1630
+ */
1631
+ interface FiltersProps {
1632
+ /**
1633
+ * CSS class name for styled-components styling.
1634
+ *
1635
+ * @default undefined
1636
+ */
1637
+ className?: string;
1638
+ /**
1639
+ * Array of filter definitions.
1640
+ *
1641
+ * Each filter defines its type, label, options, and validation rules.
1642
+ */
1643
+ filters: FilterType[];
1644
+ /**
1645
+ * Current filter values object.
1646
+ *
1647
+ * Maps filter IDs to their current FilterValue objects.
1648
+ */
1649
+ values: FilterValues;
1650
+ /**
1651
+ * Callback function called when any filter value changes.
1652
+ *
1653
+ * Receives the updated FilterValues object with all current filter values.
1654
+ *
1655
+ * @param values - The updated FilterValues object
1656
+ */
1657
+ onFilterChange: (values: FilterValues) => void;
1658
+ }
1659
+
1660
+ declare const Filters: React$1.MemoExoticComponent<(props: FiltersProps) => react_jsx_runtime.JSX.Element>;
1661
+
1662
+ /**
1663
+ * Flex component for flexible container layouts using CSS Flexbox.
1664
+ *
1665
+ * A layout component that provides a flexible container with convenient props
1666
+ * for common flexbox patterns. Supports row/column direction, alignment,
1667
+ * justification, spacing, and responsive behavior.
1668
+ *
1669
+ * @category Layout
1670
+ * @see Divider
1671
+ *
1672
+ * @remarks
1673
+ * - Requires UIProvider wrapper for theming
1674
+ * - Uses CSS Flexbox under the hood
1675
+ * - Gap and padding use theme spacing units (multiplied by 4px base unit)
1676
+ * - Default direction is column (vertical)
1677
+ * - Full width by default (100%)
1678
+ * - Supports all standard HTML div attributes
1679
+ *
1680
+ * @example Basic usage
1681
+ * ```tsx
1682
+ * <Flex>
1683
+ * <div>Item 1</div>
1684
+ * <div>Item 2</div>
1685
+ * </Flex>
1686
+ * ```
1687
+ *
1688
+ * @example Row layout
1689
+ * ```tsx
1690
+ * <Flex row>
1691
+ * <Button>Left</Button>
1692
+ * <Button>Right</Button>
1693
+ * </Flex>
1694
+ * ```
1695
+ *
1696
+ * @example With gap and alignment
1697
+ * ```tsx
1698
+ * <Flex
1699
+ * row
1700
+ * gap={2}
1701
+ * align="center"
1702
+ * justify="space-between"
1703
+ * >
1704
+ * <Text>Left</Text>
1705
+ * <Text>Right</Text>
1706
+ * </Flex>
1707
+ * ```
1708
+ *
1709
+ * @example Centered content
1710
+ * ```tsx
1711
+ * <Flex center>
1712
+ * <Text>Centered content</Text>
1713
+ * </Flex>
1714
+ * ```
1715
+ *
1716
+ * @example With padding
1717
+ * ```tsx
1718
+ * <Flex padding={4} gap={2}>
1719
+ * <Input />
1720
+ * <Button>Submit</Button>
1721
+ * </Flex>
1722
+ * ```
1723
+ *
1724
+ * @example Hoverable container
1725
+ * ```tsx
1726
+ * <Flex hoverable onClick={handleClick}>
1727
+ * <Text>Clickable container</Text>
1728
+ * </Flex>
1729
+ * ```
1730
+ */
1731
+ interface FlexProps extends React.HTMLAttributes<HTMLDivElement> {
1732
+ /**
1733
+ * CSS class name for styled-components styling.
1734
+ *
1735
+ * @default undefined
1736
+ */
1737
+ className?: string;
1738
+ /**
1739
+ * Child elements to render inside the flex container.
1740
+ */
1741
+ children?: ReactNode;
1742
+ /**
1743
+ * Whether to use row (horizontal) direction instead of column (vertical).
1744
+ *
1745
+ * @default false
1746
+ */
1747
+ row?: boolean;
1748
+ /**
1749
+ * Alignment of flex items along the cross axis.
1750
+ *
1751
+ * @default 'center' for column direction, 'flex-start' for row
1752
+ */
1753
+ align?: 'flex-start' | 'center' | 'flex-end' | 'stretch';
1754
+ /**
1755
+ * Justification of flex items along the main axis.
1756
+ *
1757
+ * @default 'flex-start'
1758
+ */
1759
+ justify?: 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around';
1760
+ /**
1761
+ * Whether the flex container should grow to fill available space.
1762
+ *
1763
+ * @default false
1764
+ */
1765
+ grow?: boolean;
1766
+ /**
1767
+ * Width of the flex container.
1768
+ *
1769
+ * @default '100%'
1770
+ */
1771
+ width?: string;
1772
+ /**
1773
+ * Height of the flex container.
1774
+ *
1775
+ * @default undefined
1776
+ */
1777
+ height?: string;
1778
+ /**
1779
+ * Gap factor for spacing between flex items.
1780
+ *
1781
+ * Uses theme spacing units (multiplied by 4px base unit).
1782
+ * Example: gap={2} = 8px gap
1783
+ *
1784
+ * @default undefined
1785
+ */
1786
+ gap?: number;
1787
+ /**
1788
+ * Padding factor for the flex container.
1789
+ *
1790
+ * Uses theme spacing units (multiplied by 4px base unit).
1791
+ * Example: padding={4} = 16px padding
1792
+ *
1793
+ * @default undefined
1794
+ */
1795
+ padding?: number;
1796
+ /**
1797
+ * Whether to center items both vertically and horizontally.
1798
+ *
1799
+ * Sets both align and justify to 'center'.
1800
+ *
1801
+ * @default false
1802
+ */
1803
+ center?: boolean;
1804
+ /**
1805
+ * Whether the container should have hover effects.
1806
+ *
1807
+ * Adds cursor: pointer, background color change, and border radius on hover.
1808
+ * Useful for clickable containers.
1809
+ *
1810
+ * @default false
1811
+ */
1812
+ hoverable?: boolean;
1813
+ }
1814
+
1815
+ declare const Flex: React$1.ForwardRefExoticComponent<FlexProps & React$1.RefAttributes<any>>;
1816
+
1817
+ /**
1818
+ * Image component with lazy loading and fallback support.
1819
+ *
1820
+ * An image component that provides lazy loading, fallback content, and
1821
+ * customizable styling. Supports all standard img attributes and provides
1822
+ * consistent image display across the application.
1823
+ *
1824
+ * @category Data
1825
+ * @see Avatar
1826
+ *
1827
+ * @remarks
1828
+ * - Requires UIProvider wrapper for theming
1829
+ * - Supports lazy loading for performance
1830
+ * - Fallback content displayed while image loads or if it fails
1831
+ * - Alt text should be provided for meaningful images
1832
+ * - Decorative images should have empty alt text
1833
+ * - Clickable images should have proper keyboard support
1834
+ *
1835
+ * @example Basic usage
1836
+ * ```tsx
1837
+ * <Image
1838
+ * src="/image.jpg"
1839
+ * alt="Description of image"
1840
+ * />
1841
+ * ```
1842
+ *
1843
+ * @example With fallback
1844
+ * ```tsx
1845
+ * <Image
1846
+ * src="/image.jpg"
1847
+ * alt="Product image"
1848
+ * fallback={<Spinner />}
1849
+ * />
1850
+ * ```
1851
+ *
1852
+ * @example With sizing
1853
+ * ```tsx
1854
+ * <Image
1855
+ * src="/image.jpg"
1856
+ * alt="Image"
1857
+ * width="200px"
1858
+ * height="200px"
1859
+ * />
1860
+ * ```
1861
+ *
1862
+ * @example With object fit
1863
+ * ```tsx
1864
+ * <Image
1865
+ * src="/image.jpg"
1866
+ * alt="Image"
1867
+ * objectFit="cover"
1868
+ * width="100%"
1869
+ * height="300px"
1870
+ * />
1871
+ * ```
1872
+ *
1873
+ * @example Clickable image
1874
+ * ```tsx
1875
+ * <Image
1876
+ * src="/image.jpg"
1877
+ * alt="Click to enlarge"
1878
+ * onClick={() => openLightbox()}
1879
+ * />
1880
+ * ```
1881
+ */
1882
+ interface ImageProps {
1883
+ /**
1884
+ * CSS class name for styled-components styling.
1885
+ *
1886
+ * @default undefined
1887
+ */
1888
+ className?: string;
1889
+ /**
1890
+ * Image source URL.
1891
+ *
1892
+ * @default undefined
1893
+ */
1894
+ src?: string;
1895
+ /**
1896
+ * Alt text for the image (required for meaningful images).
1897
+ *
1898
+ * For decorative images, use empty string ("").
1899
+ *
1900
+ * @default undefined
1901
+ */
1902
+ alt?: string;
1903
+ /**
1904
+ * Fallback content displayed while image loads or if it fails to load.
1905
+ *
1906
+ * @default undefined
1907
+ */
1908
+ fallback?: React.ReactNode;
1909
+ /**
1910
+ * Callback function called when the image is clicked.
1911
+ *
1912
+ * @default undefined
1913
+ */
1914
+ onClick?: () => void;
1915
+ /**
1916
+ * Width of the image (CSS value).
1917
+ *
1918
+ * @default undefined
1919
+ */
1920
+ width?: string;
1921
+ /**
1922
+ * Height of the image (CSS value).
1923
+ *
1924
+ * @default undefined
1925
+ */
1926
+ height?: string;
1927
+ /**
1928
+ * CSS object-fit property for the image.
1929
+ *
1930
+ * @default 'contain'
1931
+ */
1932
+ objectFit?: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';
1933
+ /**
1934
+ * Background color of the image container (theme color or CSS value).
1935
+ *
1936
+ * @default 'backgroundLight'
1937
+ */
1938
+ backgroundColor?: string;
1939
+ /**
1940
+ * Border radius of the image (CSS value).
1941
+ *
1942
+ * @default undefined
1943
+ */
1944
+ borderRadius?: string;
1945
+ }
1946
+
1947
+ declare const Image: React$1.ForwardRefExoticComponent<ImageProps & React$1.RefAttributes<any>>;
1948
+
1949
+ /**
1950
+ * Input component for single-line text entry with optional autocomplete dropdown.
1951
+ *
1952
+ * A flexible text input component that supports standard HTML input attributes
1953
+ * and includes optional dropdown suggestions. When options are provided, the
1954
+ * input automatically displays a dropdown menu with selectable suggestions as
1955
+ * the user types.
1956
+ *
1957
+ * @category Forms
1958
+ * @see InputContainer
1959
+ * @see TextArea
1960
+ * @see Select
1961
+ *
1962
+ * @remarks
1963
+ * - Requires UIProvider wrapper for theming
1964
+ * - Supports all standard HTML input attributes (type, placeholder, disabled, etc.)
1965
+ * - When options are provided, renders a Dropdown component automatically
1966
+ * - Dropdown appears after user types and disappears when input is disabled
1967
+ * - Use InputContainer for labels, error messages, and helper text
1968
+ *
1969
+ * @example Basic usage
1970
+ * ```tsx
1971
+ * <Input
1972
+ * placeholder="Enter your name"
1973
+ * onTextChange={(value) => console.log(value)}
1974
+ * />
1975
+ * ```
1976
+ *
1977
+ * @example With Enter key handler
1978
+ * ```tsx
1979
+ * <Input
1980
+ * placeholder="Press Enter to submit"
1981
+ * onTextChange={(value) => setValue(value)}
1982
+ * onEnter={() => handleSubmit()}
1983
+ * />
1984
+ * ```
1985
+ *
1986
+ * @example With autocomplete dropdown
1987
+ * ```tsx
1988
+ * <Input
1989
+ * placeholder="Enter email"
1990
+ * onTextChange={(value) => setValue(value)}
1991
+ * options={[
1992
+ * { value: 'user@gmail.com', label: 'user@gmail.com' },
1993
+ * { value: 'user@outlook.com', label: 'user@outlook.com' }
1994
+ * ]}
1995
+ * />
1996
+ * ```
1997
+ *
1998
+ * @example With InputContainer for labels and errors
1999
+ * ```tsx
2000
+ * <InputContainer
2001
+ * label="Email Address"
2002
+ * error={errors.email}
2003
+ * helperText="We'll never share your email"
2004
+ * >
2005
+ * <Input
2006
+ * type="email"
2007
+ * onTextChange={(value) => setEmail(value)}
2008
+ * />
2009
+ * </InputContainer>
2010
+ * ```
2011
+ */
2012
+ interface InputProps extends AllHTMLAttributes<HTMLInputElement> {
2013
+ /**
2014
+ * CSS class name for styled-components styling.
2015
+ *
2016
+ * @default undefined
2017
+ */
2018
+ className?: string;
2019
+ /**
2020
+ * Callback function that triggers when the input value changes.
2021
+ *
2022
+ * This callback receives the new string value of the input. Use this instead
2023
+ * of the standard onChange event when you only need the value string.
2024
+ *
2025
+ * @param value - The new input value as a string
2026
+ */
2027
+ onTextChange?: (value: string) => void;
2028
+ /**
2029
+ * Callback function triggered when the user presses the Enter key.
2030
+ *
2031
+ * Useful for form submission or triggering actions on Enter key press.
2032
+ */
2033
+ onEnter?: () => void;
2034
+ /**
2035
+ * Optional dropdown options for autocomplete functionality.
2036
+ *
2037
+ * When provided, the input will automatically display a dropdown menu
2038
+ * with these options as the user types. The dropdown appears after typing
2039
+ * and disappears when the input is disabled or options are cleared.
2040
+ *
2041
+ * @default undefined
2042
+ */
2043
+ options?: {
2044
+ /**
2045
+ * The value that will be set when this option is selected
2046
+ */
2047
+ value: string;
2048
+ /**
2049
+ * The label displayed in the dropdown (can be React node or string)
2050
+ */
2051
+ label: React$1.ReactNode | string;
2052
+ /**
2053
+ * Whether this option is disabled and cannot be selected
2054
+ *
2055
+ * @default false
2056
+ */
2057
+ disabled?: boolean;
2058
+ }[];
2059
+ }
2060
+
2061
+ declare const Input: ({ className, value, onChange, onTextChange, onEnter, options, ...props }: InputProps) => react_jsx_runtime.JSX.Element;
2062
+
2063
+ /**
2064
+ * InputContainer component for wrapping form inputs with labels and error messages.
2065
+ *
2066
+ * A wrapper component that provides consistent styling and layout for form
2067
+ * inputs with labels, error messages, and optional helper text. Should wrap
2068
+ * Input, Select, TextArea, and other form components.
2069
+ *
2070
+ * @category Forms
2071
+ * @see Input
2072
+ * @see TextArea
2073
+ * @see Select
2074
+ *
2075
+ * @remarks
2076
+ * - Requires UIProvider wrapper for theming
2077
+ * - Provides consistent spacing and layout for form fields
2078
+ * - Error messages animate in/out smoothly
2079
+ * - Label is displayed in uppercase with headingXs variant
2080
+ * - Right content (e.g., help icon) can be added alongside label
2081
+ * - Use this component for all form inputs that need labels or error messages
2082
+ *
2083
+ * @example Basic usage with label
2084
+ * ```tsx
2085
+ * <InputContainer label="Email Address">
2086
+ * <Input
2087
+ * type="email"
2088
+ * onTextChange={(value) => setEmail(value)}
2089
+ * />
2090
+ * </InputContainer>
2091
+ * ```
2092
+ *
2093
+ * @example With error message
2094
+ * ```tsx
2095
+ * <InputContainer
2096
+ * label="Password"
2097
+ * error={errors.password}
2098
+ * >
2099
+ * <Input
2100
+ * type="password"
2101
+ * onTextChange={(value) => setPassword(value)}
2102
+ * />
2103
+ * </InputContainer>
2104
+ * ```
2105
+ *
2106
+ * @example With right content
2107
+ * ```tsx
2108
+ * <InputContainer
2109
+ * label="API Key"
2110
+ * rightContent={<Tooltip content="Get your API key from settings">?</Tooltip>}
2111
+ * >
2112
+ * <Input
2113
+ * onTextChange={(value) => setApiKey(value)}
2114
+ * />
2115
+ * </InputContainer>
2116
+ * ```
2117
+ *
2118
+ * @example With TextArea
2119
+ * ```tsx
2120
+ * <InputContainer
2121
+ * label="Description"
2122
+ * error={errors.description}
2123
+ * >
2124
+ * <TextArea
2125
+ * value={description}
2126
+ * onTextChange={(value) => setDescription(value)}
2127
+ * />
2128
+ * </InputContainer>
2129
+ * ```
2130
+ */
2131
+ interface InputContainerProps {
2132
+ /**
2133
+ * Label text or React node displayed above the input.
2134
+ *
2135
+ * Displayed in uppercase with headingXs typography variant.
2136
+ *
2137
+ * @default undefined
2138
+ */
2139
+ label?: string | React.ReactNode;
2140
+ /**
2141
+ * Form input component to wrap (Input, Select, TextArea, etc.).
2142
+ *
2143
+ * Any React node can be used, but typically form input components.
2144
+ */
2145
+ children: React.ReactNode;
2146
+ /**
2147
+ * Optional content displayed to the right of the label.
2148
+ *
2149
+ * Useful for help icons, tooltips, or additional actions.
2150
+ *
2151
+ * @default undefined
2152
+ */
2153
+ rightContent?: React.ReactNode;
2154
+ /**
2155
+ * Error message displayed below the input.
2156
+ *
2157
+ * When provided, the error message animates in. When undefined or empty,
2158
+ * the error container collapses with animation.
2159
+ *
2160
+ * @default undefined
2161
+ */
2162
+ error?: string;
2163
+ }
2164
+
2165
+ declare const InputContainer: ({ label, children, rightContent, error }: InputContainerProps) => react_jsx_runtime.JSX.Element;
2166
+
2167
+ /**
2168
+ * LoadingPlaceholder component for skeleton loading states.
2169
+ *
2170
+ * A skeleton loading component that displays animated placeholder content
2171
+ * while data is being loaded. Provides a better user experience than
2172
+ * blank screens or spinners for content loading.
2173
+ *
2174
+ * @category Feedback
2175
+ * @see Spinner
2176
+ * @see Table
2177
+ *
2178
+ * @remarks
2179
+ * - Requires UIProvider wrapper for theming
2180
+ * - Should have aria-label='Loading' for accessibility
2181
+ * - Should be replaced with actual content when loaded
2182
+ * - Use for skeleton screens and content placeholders
2183
+ * - Better UX than spinners for content that has structure
2184
+ *
2185
+ * @example Basic usage
2186
+ * ```tsx
2187
+ * <LoadingPlaceholder width="200px" height="20px" />
2188
+ * ```
2189
+ *
2190
+ * @example Multiple placeholders for skeleton screen
2191
+ * ```tsx
2192
+ * <Flex gap={2}>
2193
+ * <LoadingPlaceholder width="100%" height="100px" />
2194
+ * <LoadingPlaceholder width="80%" height="20px" />
2195
+ * <LoadingPlaceholder width="60%" height="20px" />
2196
+ * </Flex>
2197
+ * ```
2198
+ *
2199
+ * @example In table loading state
2200
+ * ```tsx
2201
+ * {isLoading ? (
2202
+ * <LoadingPlaceholder width="100%" height="400px" />
2203
+ * ) : (
2204
+ * <Table data={data} columns={columns} />
2205
+ * )}
2206
+ * ```
2207
+ */
2208
+ interface LoadingPlaceholderProps {
2209
+ /**
2210
+ * CSS class name for styled-components styling.
2211
+ *
2212
+ * @default undefined
2213
+ */
2214
+ className?: string;
2215
+ /**
2216
+ * Width of the placeholder (CSS value).
2217
+ *
2218
+ * @default undefined
2219
+ */
2220
+ width?: string;
2221
+ /**
2222
+ * Height of the placeholder (CSS value).
2223
+ *
2224
+ * @default undefined
2225
+ */
2226
+ height?: string;
2227
+ }
2228
+
2229
+ /**
2230
+ * Component used as a Shimmer during loading state in components. The `width` and `height` must be set for it to work properly.
2231
+ */
2232
+ declare const LoadingPlaceholder: React$1.FC<LoadingPlaceholderProps>;
2233
+
2234
+ declare function Modal({ open, setOpen, title, children, trigger }: {
2235
+ open: any;
2236
+ setOpen: any;
2237
+ title: any;
2238
+ children: any;
2239
+ trigger: any;
2240
+ }): react_jsx_runtime.JSX.Element;
2241
+
2242
+ /**
2243
+ * Option type for MultiSelect component.
2244
+ */
2245
+ interface MultiSelectOption {
2246
+ /** The value of the option (must be unique) */
2247
+ value: string;
2248
+ /** The label displayed for the option */
2249
+ label: string;
2250
+ }
2251
+ /**
2252
+ * MultiSelect component for choosing multiple options from a searchable dropdown.
2253
+ *
2254
+ * A searchable multi-select component that allows users to select multiple
2255
+ * options from a list. Includes a "Select all" checkbox, search functionality,
2256
+ * and displays selected values in the input field when closed.
2257
+ *
2258
+ * @category Forms
2259
+ * @see Select
2260
+ * @see Dropdown
2261
+ *
2262
+ * @remarks
2263
+ * - Requires UIProvider wrapper for theming
2264
+ * - Built on top of Dropdown and Checkbox components
2265
+ * - Includes built-in search/filter functionality
2266
+ * - Shows "Select all" option when dropdown is open
2267
+ * - Selected values are displayed using the renderValues function
2268
+ * - Use InputContainer for labels, error messages, and helper text
2269
+ *
2270
+ * @example Basic usage
2271
+ * ```tsx
2272
+ * <MultiSelect
2273
+ * values={selectedValues}
2274
+ * onChange={(values) => setSelectedValues(values)}
2275
+ * options={[
2276
+ * { value: 'opt1', label: 'Option 1' },
2277
+ * { value: 'opt2', label: 'Option 2' }
2278
+ * ]}
2279
+ * renderValues={(selected) => selected.map(o => o.label).join(', ')}
2280
+ * />
2281
+ * ```
2282
+ *
2283
+ * @example With placeholder
2284
+ * ```tsx
2285
+ * <MultiSelect
2286
+ * values={selectedValues}
2287
+ * onChange={(values) => setSelectedValues(values)}
2288
+ * options={options}
2289
+ * placeholder="Select options"
2290
+ * renderValues={(selected) => `${selected.length} selected`}
2291
+ * />
2292
+ * ```
2293
+ *
2294
+ * @example Disabled state
2295
+ * ```tsx
2296
+ * <MultiSelect
2297
+ * values={selectedValues}
2298
+ * onChange={(values) => setSelectedValues(values)}
2299
+ * options={options}
2300
+ * renderValues={(selected) => selected.map(o => o.label).join(', ')}
2301
+ * disabled={true}
2302
+ * />
2303
+ * ```
2304
+ */
2305
+ interface MultiSelectPropsType {
2306
+ /**
2307
+ * Currently selected values (array of option values).
2308
+ *
2309
+ * @default undefined
2310
+ */
2311
+ values?: string[];
2312
+ /**
2313
+ * Callback function called when selected values change.
2314
+ *
2315
+ * @param values - Array of selected option values
2316
+ */
2317
+ onChange: (values: string[]) => void;
2318
+ /**
2319
+ * Array of options to display in the dropdown.
2320
+ *
2321
+ * Each option must have a unique value and a label.
2322
+ */
2323
+ options: MultiSelectOption[];
2324
+ /**
2325
+ * Placeholder text displayed when no options are selected.
2326
+ *
2327
+ * @default undefined
2328
+ */
2329
+ placeholder?: string;
2330
+ /**
2331
+ * Function to render the selected values when the dropdown is closed.
2332
+ *
2333
+ * This function receives the array of selected option objects and should
2334
+ * return a string to display in the input field.
2335
+ *
2336
+ * @param values - Array of selected MultiSelectOption objects
2337
+ * @returns String to display in the input field
2338
+ */
2339
+ renderValues: (values: MultiSelectOption[]) => string;
2340
+ /**
2341
+ * Whether the select is disabled and cannot be interacted with.
2342
+ *
2343
+ * @default false
2344
+ */
2345
+ disabled?: boolean;
2346
+ }
2347
+
2348
+ declare const MultiSelect: ({ values, onChange, options, placeholder, renderValues, disabled }: MultiSelectPropsType) => react_jsx_runtime.JSX.Element;
2349
+
2350
+ /**
2351
+ * Option type for Select component.
2352
+ */
2353
+ interface SelectOption extends DropdownItemProps {
2354
+ /**
2355
+ * The value of the option (must be unique)
2356
+ */
2357
+ value: string;
2358
+ }
2359
+ /**
2360
+ * Select component for choosing a single option from a dropdown list.
2361
+ *
2362
+ * A dropdown select component that displays a list of options when clicked.
2363
+ * The selected value is shown in the trigger, and users can choose from the
2364
+ * dropdown menu. Supports keyboard navigation and is built on top of the
2365
+ * Dropdown component.
2366
+ *
2367
+ * @category Forms
2368
+ * @see MultiSelect
2369
+ * @see Dropdown
2370
+ * @see Input
2371
+ *
2372
+ * @remarks
2373
+ * - Requires UIProvider wrapper for theming
2374
+ * - Built on top of Dropdown component with small variant
2375
+ * - Shows a checkmark icon next to the selected option
2376
+ * - Full width by default (can be overridden)
2377
+ * - Use InputContainer for labels, error messages, and helper text
2378
+ *
2379
+ * @example Basic usage
2380
+ * ```tsx
2381
+ * <Select
2382
+ * value={selectedValue}
2383
+ * onChange={(value) => setSelectedValue(value)}
2384
+ * options={[
2385
+ * { value: 'option1', label: 'Option 1' },
2386
+ * { value: 'option2', label: 'Option 2' }
2387
+ * ]}
2388
+ * />
2389
+ * ```
2390
+ *
2391
+ * @example With placeholder
2392
+ * ```tsx
2393
+ * <Select
2394
+ * value={selectedValue}
2395
+ * onChange={(value) => setSelectedValue(value)}
2396
+ * placeholder="Choose an option"
2397
+ * options={options}
2398
+ * />
2399
+ * ```
2400
+ *
2401
+ * @example Disabled state
2402
+ * ```tsx
2403
+ * <Select
2404
+ * value={selectedValue}
2405
+ * onChange={(value) => setSelectedValue(value)}
2406
+ * options={options}
2407
+ * disabled={true}
2408
+ * />
2409
+ * ```
2410
+ *
2411
+ * @example Custom variant and width
2412
+ * ```tsx
2413
+ * <Select
2414
+ * value={selectedValue}
2415
+ * onChange={(value) => setSelectedValue(value)}
2416
+ * options={options}
2417
+ * variant={DropdownVariant.normal}
2418
+ * fullWidth={false}
2419
+ * />
2420
+ * ```
2421
+ */
2422
+ interface SelectPropsType {
2423
+ /**
2424
+ * Current selected value of the select.
2425
+ *
2426
+ * Should match one of the option values. If undefined, placeholder is shown.
2427
+ *
2428
+ * @default undefined
2429
+ */
2430
+ value?: string;
2431
+ /**
2432
+ * Callback function called when the selected value changes.
2433
+ *
2434
+ * @param value - The newly selected option value
2435
+ */
2436
+ onChange: (value: string) => void;
2437
+ /**
2438
+ * Array of options to display in the dropdown.
2439
+ *
2440
+ * Each option must have a unique value and a label. Options can include
2441
+ * additional DropdownItemProps for advanced customization.
2442
+ */
2443
+ options: SelectOption[];
2444
+ /**
2445
+ * Placeholder text displayed when no option is selected.
2446
+ *
2447
+ * @default undefined
2448
+ */
2449
+ placeholder?: string;
2450
+ /**
2451
+ * Whether the select is disabled and cannot be interacted with.
2452
+ *
2453
+ * @default false
2454
+ */
2455
+ disabled?: boolean;
2456
+ /**
2457
+ * Whether the select should take the full width of its container.
2458
+ *
2459
+ * @default true
2460
+ */
2461
+ fullWidth?: boolean;
2462
+ /**
2463
+ * Visual variant of the dropdown (small or normal).
2464
+ *
2465
+ * @default DropdownVariant.normal
2466
+ */
2467
+ variant?: DropdownVariant;
2468
+ }
2469
+
2470
+ declare const Select: ({ value, onChange, options, placeholder, disabled, fullWidth, variant }: SelectPropsType) => react_jsx_runtime.JSX.Element;
2471
+
2472
+ /**
2473
+ * Slideout component for side panel overlays.
2474
+ *
2475
+ * A slideout panel component that slides in from the side of the screen.
2476
+ * Non-blocking overlay that allows interaction with the rest of the page.
2477
+ * Supports resizing and includes accessibility features.
2478
+ *
2479
+ * @category Overlay
2480
+ * @see Modal
2481
+ *
2482
+ * @remarks
2483
+ * - Requires UIProvider wrapper for theming
2484
+ * - Non-blocking overlay (unlike Modal)
2485
+ * - Slides in from the right side
2486
+ * - Supports resizable width (stored in session storage)
2487
+ * - Focus management on open/close
2488
+ * - Escape key closes the slideout
2489
+ * - Use for detail views, side panels, and non-critical overlays
2490
+ *
2491
+ * @example Basic usage with trigger
2492
+ * ```tsx
2493
+ * <Slideout
2494
+ * trigger={<Button>Open Panel</Button>}
2495
+ * title="Details"
2496
+ * >
2497
+ * <Text>Panel content here</Text>
2498
+ * </Slideout>
2499
+ * ```
2500
+ *
2501
+ * @example Controlled slideout
2502
+ * ```tsx
2503
+ * const [open, setOpen] = useState(false)
2504
+ *
2505
+ * <Slideout
2506
+ * open={open}
2507
+ * setOpen={setOpen}
2508
+ * title="Edit Item"
2509
+ * >
2510
+ * <InputContainer label="Name">
2511
+ * <Input onTextChange={(v) => setName(v)} />
2512
+ * </InputContainer>
2513
+ * </Slideout>
2514
+ * ```
2515
+ *
2516
+ * @example Resizable slideout
2517
+ * ```tsx
2518
+ * <Slideout
2519
+ * open={isOpen}
2520
+ * setOpen={setIsOpen}
2521
+ * title="Details"
2522
+ * resizable={true}
2523
+ * >
2524
+ * <Text>Resizable panel content</Text>
2525
+ * </Slideout>
2526
+ * ```
2527
+ *
2528
+ * @example With custom title element
2529
+ * ```tsx
2530
+ * <Slideout
2531
+ * open={isOpen}
2532
+ * setOpen={setIsOpen}
2533
+ * title={<span>Custom <strong>Title</strong></span>}
2534
+ * >
2535
+ * <Text>Content</Text>
2536
+ * </Slideout>
2537
+ * ```
2538
+ */
2539
+ interface SlideoutProps {
2540
+ /**
2541
+ * Content to display in the slideout panel body.
2542
+ *
2543
+ * Can be any React node.
2544
+ */
2545
+ children: ReactNode;
2546
+ /**
2547
+ * Optional trigger element that opens the slideout when clicked.
2548
+ *
2549
+ * If provided, clicking this element will open the slideout. For controlled
2550
+ * slideouts, this is optional.
2551
+ *
2552
+ * @default undefined
2553
+ */
2554
+ trigger?: ReactNode;
2555
+ /**
2556
+ * Controlled open state of the slideout.
2557
+ *
2558
+ * For controlled slideouts, use this with setOpen.
2559
+ *
2560
+ * @default undefined
2561
+ */
2562
+ open?: boolean;
2563
+ /**
2564
+ * Event handler called when the open state changes.
2565
+ *
2566
+ * @param open - The new open state (boolean)
2567
+ */
2568
+ setOpen?: (open: boolean) => void;
2569
+ /**
2570
+ * Whether the slideout is disabled and cannot be opened.
2571
+ *
2572
+ * When true, only the trigger (children) is rendered, and the slideout
2573
+ * cannot be opened.
2574
+ *
2575
+ * @default false
2576
+ */
2577
+ disabled?: boolean;
2578
+ /**
2579
+ * Accessible title announced to screen readers and displayed in header.
2580
+ *
2581
+ * Can be a string (truncated when overflowing) or a React node for
2582
+ * custom styling.
2583
+ */
2584
+ title: string | ReactNode;
2585
+ /**
2586
+ * Whether the slideout can be resized by dragging the left edge.
2587
+ *
2588
+ * When true, users can drag the left edge to resize the panel width.
2589
+ * The width is stored in session storage and persists during the session.
2590
+ *
2591
+ * @default false
2592
+ */
2593
+ resizable?: boolean;
2594
+ }
2595
+
2596
+ /**
2597
+ *
2598
+ * A window overlaid on the current window that slides in from the right side of the screen.
2599
+ * The slideout fills the entire screen vertically and resizes horizontally based on screen size. When on mobile (less than 600px wide) it fills the entire screen.
2600
+ * It can be uncontrolled by passing in a trigger element (button) as children to the Slideout component to automatically handle the opening and closing of the slideout. This is the recommended way with best accessibility.
2601
+ * Alternately, it can be controlled (using for example local state) by passing in `open` and `setOpen` props.
2602
+ * The slideout can be resized (when `resizable` is `true`) by dragging the left edge of the slideout. The width is remembered within the current session.
2603
+ *
2604
+ */
2605
+ declare const Slideout: React$1.FC<SlideoutProps>;
2606
+
2607
+ declare const Spinner: ({ width, color }: {
2608
+ width: any;
2609
+ color: any;
2610
+ }) => react_jsx_runtime.JSX.Element;
2611
+
2612
+ /**
2613
+ * StatusLabel component for displaying status indicators and badges.
2614
+ *
2615
+ * A status label component that displays text with optional icons and color
2616
+ * coding. Useful for showing status, badges, tags, and state indicators.
2617
+ * Supports tooltips for additional information.
2618
+ *
2619
+ * @category Data
2620
+ * @see Text
2621
+ *
2622
+ * @remarks
2623
+ * - Requires UIProvider wrapper for theming
2624
+ * - Color should not be the only indicator (include text/icon)
2625
+ * - Status should be announced to screen readers
2626
+ * - Tooltip provides additional context on hover
2627
+ *
2628
+ * @example Basic usage
2629
+ * ```tsx
2630
+ * <StatusLabel label="Active" color="green" />
2631
+ * ```
2632
+ *
2633
+ * @example With icon
2634
+ * ```tsx
2635
+ * <StatusLabel
2636
+ * label="Pending"
2637
+ * color="yellow"
2638
+ * iconName="faClock"
2639
+ * />
2640
+ * ```
2641
+ *
2642
+ * @example With tooltip
2643
+ * ```tsx
2644
+ * <StatusLabel
2645
+ * label="Error"
2646
+ * color="red"
2647
+ * tooltip="This item has an error that needs attention"
2648
+ * />
2649
+ * ```
2650
+ *
2651
+ * @example Plain status
2652
+ * ```tsx
2653
+ * <StatusLabel label="Draft" color="plain" />
2654
+ * ```
2655
+ */
2656
+ interface StatusLabelProps {
2657
+ /**
2658
+ * Label text or React node to display.
2659
+ *
2660
+ * Can be a string or any React node for custom styling.
2661
+ */
2662
+ label: ReactNode | string;
2663
+ /**
2664
+ * Optional icon name to display after the label.
2665
+ *
2666
+ * @default undefined
2667
+ */
2668
+ iconName?: IconName;
2669
+ /**
2670
+ * Color variant of the status label.
2671
+ *
2672
+ * @default 'plain'
2673
+ */
2674
+ color?: 'green' | 'yellow' | 'red' | 'plain';
2675
+ /**
2676
+ * Optional tooltip content displayed on hover.
2677
+ *
2678
+ * Can be a string or React node.
2679
+ *
2680
+ * @default undefined
2681
+ */
2682
+ tooltip?: ReactNode | string;
2683
+ }
2684
+
2685
+ declare const StatusLabel: React$1.ForwardRefExoticComponent<StatusLabelProps & React$1.RefAttributes<any>>;
2686
+
2687
+ /**
2688
+ * Switch component for on/off toggle states.
2689
+ *
2690
+ * A toggle switch component that allows users to switch between two states
2691
+ * (on/off). Ideal for settings, feature toggles, and binary choices. Built on
2692
+ * Radix UI Switch for accessibility.
2693
+ *
2694
+ * @category Forms
2695
+ * @see Checkbox
2696
+ *
2697
+ * @remarks
2698
+ * - Requires UIProvider wrapper for theming
2699
+ * - Built on Radix UI Switch for accessibility
2700
+ * - Supports controlled and uncontrolled modes
2701
+ * - Keyboard accessible (Space to toggle)
2702
+ * - Use for single on/off toggles (not multiple selections)
2703
+ *
2704
+ * @example Basic usage
2705
+ * ```tsx
2706
+ * <Switch
2707
+ * checked={isEnabled}
2708
+ * setChecked={(checked) => setIsEnabled(checked)}
2709
+ * label="Enable notifications"
2710
+ * />
2711
+ * ```
2712
+ *
2713
+ * @example Uncontrolled
2714
+ * ```tsx
2715
+ * <Switch
2716
+ * defaultChecked={true}
2717
+ * label="Dark mode"
2718
+ * />
2719
+ * ```
2720
+ *
2721
+ * @example With custom label
2722
+ * ```tsx
2723
+ * <Switch
2724
+ * checked={isEnabled}
2725
+ * setChecked={setIsEnabled}
2726
+ * label={<span>Enable <strong>feature</strong></span>}
2727
+ * />
2728
+ * ```
2729
+ *
2730
+ * @example Disabled state
2731
+ * ```tsx
2732
+ * <Switch
2733
+ * checked={true}
2734
+ * setChecked={setIsEnabled}
2735
+ * label="Cannot toggle"
2736
+ * disabled={true}
2737
+ * />
2738
+ * ```
2739
+ */
2740
+ interface SwitchProps {
2741
+ /**
2742
+ * Whether the switch is checked (on) or unchecked (off).
2743
+ *
2744
+ * For controlled components, use this with setChecked.
2745
+ *
2746
+ * @default undefined
2747
+ */
2748
+ checked?: boolean;
2749
+ /**
2750
+ * Callback function triggered when the switch state changes.
2751
+ *
2752
+ * @param checked - The new checked state (boolean)
2753
+ */
2754
+ setChecked?: (checked: boolean) => void;
2755
+ /**
2756
+ * Label text or React node displayed next to the switch.
2757
+ *
2758
+ * Can be a string or any React node for custom styling.
2759
+ *
2760
+ * @default undefined
2761
+ */
2762
+ label?: ReactNode;
2763
+ /**
2764
+ * Whether the switch is disabled and cannot be interacted with.
2765
+ *
2766
+ * @default false
2767
+ */
2768
+ disabled?: boolean;
2769
+ }
2770
+
2771
+ declare const Switch: React$1.ForwardRefExoticComponent<SwitchProps & React$1.RefAttributes<any>>;
2772
+
2773
+ /**
2774
+ * Tab definition type for TabBar component.
2775
+ */
2776
+ interface TabProps {
2777
+ /**
2778
+ * Unique identifier for the tab.
2779
+ *
2780
+ * Used to identify which tab is selected and must be unique within the tab bar.
2781
+ */
2782
+ value: string;
2783
+ /**
2784
+ * Tab label text or React node.
2785
+ *
2786
+ * Can be a string or React node (useful for icons).
2787
+ */
2788
+ label: string | ReactNode;
2789
+ }
2790
+ /**
2791
+ * TabBar component for tab navigation between views.
2792
+ *
2793
+ * A tab navigation component that allows users to switch between different
2794
+ * views or sections. Supports keyboard navigation and follows ARIA tabs
2795
+ * pattern for accessibility.
2796
+ *
2797
+ * @category Navigation
2798
+ * @see Button
2799
+ *
2800
+ * @remarks
2801
+ * - Requires UIProvider wrapper for theming
2802
+ * - Follows ARIA tabs pattern for accessibility
2803
+ * - Keyboard navigation with arrow keys
2804
+ * - Active tab is clearly indicated
2805
+ * - First tab is selected by default if no value is provided
2806
+ *
2807
+ * @example Basic usage
2808
+ * ```tsx
2809
+ * <TabBar
2810
+ * tabs={[
2811
+ * { value: 'tab1', label: 'Tab 1' },
2812
+ * { value: 'tab2', label: 'Tab 2' }
2813
+ * ]}
2814
+ * onChange={(value) => setActiveTab(value)}
2815
+ * />
2816
+ * ```
2817
+ *
2818
+ * @example Controlled tabs
2819
+ * ```tsx
2820
+ * <TabBar
2821
+ * value={activeTab}
2822
+ * onChange={(value) => setActiveTab(value)}
2823
+ * tabs={tabs}
2824
+ * />
2825
+ * ```
2826
+ *
2827
+ * @example With icons
2828
+ * ```tsx
2829
+ * <TabBar
2830
+ * tabs={[
2831
+ * { value: 'home', label: <Icon name="faHome" /> },
2832
+ * { value: 'settings', label: <Icon name="faCog" /> }
2833
+ * ]}
2834
+ * onChange={(value) => navigate(value)}
2835
+ * />
2836
+ * ```
2837
+ */
2838
+ interface TabBarProps {
2839
+ /**
2840
+ * CSS class name for styled-components styling.
2841
+ *
2842
+ * @default undefined
2843
+ */
2844
+ className?: string;
2845
+ /**
2846
+ * Value of the currently selected tab.
2847
+ *
2848
+ * If not provided, the first tab is selected by default.
2849
+ *
2850
+ * @default undefined (first tab)
2851
+ */
2852
+ value?: string;
2853
+ /**
2854
+ * Callback function fired when the selected tab changes.
2855
+ *
2856
+ * @param value - The value of the newly selected tab
2857
+ */
2858
+ onChange?: (value: string) => void;
2859
+ /**
2860
+ * Array of tab definitions to display.
2861
+ *
2862
+ * Each tab must have a unique value and a label.
2863
+ */
2864
+ tabs: TabProps[];
2865
+ }
2866
+
2867
+ declare const TabBar: React$1.MemoExoticComponent<({ className, value, onChange, tabs }: TabBarProps) => react_jsx_runtime.JSX.Element>;
2868
+
2869
+ /**
2870
+ * Column definition type for Table component.
2871
+ */
2872
+ type TableColumnType = {
2873
+ /** Unique key for the column, used to access data in row objects */
2874
+ id: string;
2875
+ /** Header content (string or React node) */
2876
+ header: ReactNode;
2877
+ /** Function to render cell content, receives the row object */
2878
+ cell?: (row: Record<string, any>) => any;
2879
+ /** Function to format the cell value before display */
2880
+ formatter?: (value?: any, row?: Record<string, any>) => any;
2881
+ /** Alignment of cell content */
2882
+ align?: 'left' | 'center' | 'right';
2883
+ /** Data type for sorting ('text' or 'number') */
2884
+ type?: 'text' | 'number';
2885
+ /** Whether the column is sortable */
2886
+ sortable?: boolean;
2887
+ /** Width of the column (CSS value) */
2888
+ width?: string;
2889
+ /** If true, column cannot be hidden when customization is enabled */
2890
+ required?: boolean;
2891
+ };
2892
+ /**
2893
+ * Pagination configuration type for Table component.
2894
+ */
2895
+ type TablePaginationType = {
2896
+ /** Current page number (1-indexed) */
2897
+ page?: number;
2898
+ /** Number of rows per page */
2899
+ size?: number;
2900
+ /** Total number of rows across all pages */
2901
+ total?: number;
2902
+ };
2903
+ /**
2904
+ * Sorting state type for Table component.
2905
+ */
2906
+ type SortingType = {
2907
+ /** Column ID to sort by */
2908
+ column?: string;
2909
+ /** Sort direction */
2910
+ direction?: 'asc' | 'desc';
2911
+ };
2912
+ /**
2913
+ * Table component for displaying tabular data with sorting, pagination, and customization.
2914
+ *
2915
+ * A comprehensive data table component that supports sorting, pagination, column
2916
+ * customization, loading states, and empty states. Column visibility can be
2917
+ * customized by users and saved to localStorage. Built with accessibility in mind.
2918
+ *
2919
+ * @category Data
2920
+ * @see Text
2921
+ * @see StatusLabel
2922
+ *
2923
+ * @remarks
2924
+ * - Requires UIProvider wrapper for theming
2925
+ * - Column customizations are saved to localStorage using the table id
2926
+ * - Supports keyboard navigation for sortable columns
2927
+ * - Loading state shows skeleton rows
2928
+ * - Empty state displayed when data is empty and not loading
2929
+ * - Row click handlers for interactive rows
2930
+ * - Column customization allows users to show/hide columns
2931
+ *
2932
+ * @example Basic usage
2933
+ * ```tsx
2934
+ * <Table
2935
+ * id="users-table"
2936
+ * columns={[
2937
+ * { id: 'name', header: 'Name', cell: (row) => row.name },
2938
+ * { id: 'email', header: 'Email', cell: (row) => row.email }
2939
+ * ]}
2940
+ * data={users}
2941
+ * />
2942
+ * ```
2943
+ *
2944
+ * @example With sorting
2945
+ * ```tsx
2946
+ * <Table
2947
+ * id="products-table"
2948
+ * columns={[
2949
+ * { id: 'name', header: 'Name', sortable: true },
2950
+ * { id: 'price', header: 'Price', sortable: true, type: 'number' }
2951
+ * ]}
2952
+ * data={products}
2953
+ * sorting={sorting}
2954
+ * onSortChange={(newSorting) => setSorting(newSorting)}
2955
+ * />
2956
+ * ```
2957
+ *
2958
+ * @example With pagination
2959
+ * ```tsx
2960
+ * <Table
2961
+ * id="items-table"
2962
+ * columns={columns}
2963
+ * data={items}
2964
+ * pagination={{
2965
+ * page: currentPage,
2966
+ * size: pageSize,
2967
+ * total: totalItems
2968
+ * }}
2969
+ * onPaginationChange={(pagination) => handlePageChange(pagination)}
2970
+ * />
2971
+ * ```
2972
+ *
2973
+ * @example With loading state
2974
+ * ```tsx
2975
+ * <Table
2976
+ * id="data-table"
2977
+ * columns={columns}
2978
+ * data={data}
2979
+ * isLoading={isLoading}
2980
+ * />
2981
+ * ```
2982
+ *
2983
+ * @example With empty state
2984
+ * ```tsx
2985
+ * <Table
2986
+ * id="results-table"
2987
+ * columns={columns}
2988
+ * data={results}
2989
+ * emptyState={<Text>No results found</Text>}
2990
+ * />
2991
+ * ```
2992
+ */
2993
+ interface TableProps {
2994
+ /**
2995
+ * Unique identifier for the table.
2996
+ *
2997
+ * Used as a key for saving column customizations to localStorage.
2998
+ * Each table instance should have a unique id.
2999
+ */
3000
+ id: string;
3001
+ /**
3002
+ * Array of column definitions.
3003
+ *
3004
+ * Each column defines how data is displayed in that column.
3005
+ */
3006
+ columns: TableColumnType[];
3007
+ /**
3008
+ * Array of row data objects.
3009
+ *
3010
+ * Each object should have keys corresponding to column ids.
3011
+ *
3012
+ * @default undefined
3013
+ */
3014
+ data?: Record<string, any>[];
3015
+ /**
3016
+ * Whether the table is in a loading state.
3017
+ *
3018
+ * When true, displays skeleton loading rows.
3019
+ *
3020
+ * @default false
3021
+ */
3022
+ isLoading?: boolean;
3023
+ /**
3024
+ * Content to display when data is empty and not loading.
3025
+ *
3026
+ * @default undefined
3027
+ */
3028
+ emptyState?: ReactNode;
3029
+ /**
3030
+ * Optional header content displayed above the table.
3031
+ *
3032
+ * @default undefined
3033
+ */
3034
+ header?: ReactNode;
3035
+ /**
3036
+ * Callback function called when a row is clicked.
3037
+ *
3038
+ * @param row - The row data object that was clicked
3039
+ */
3040
+ onRowClick?: (row: Record<string, any>) => void;
3041
+ /**
3042
+ * Current sorting state.
3043
+ *
3044
+ * @default undefined
3045
+ */
3046
+ sorting?: SortingType;
3047
+ /**
3048
+ * Callback function called when sorting changes.
3049
+ *
3050
+ * @param sorting - The new sorting state
3051
+ */
3052
+ onSortChange?: (sorting: SortingType) => void;
3053
+ /**
3054
+ * Pagination configuration.
3055
+ *
3056
+ * When provided, pagination controls are rendered and onPaginationChange
3057
+ * is called when page/size changes.
3058
+ *
3059
+ * @default undefined
3060
+ */
3061
+ pagination?: TablePaginationType;
3062
+ /**
3063
+ * Callback function called when pagination changes.
3064
+ *
3065
+ * @param pagination - The new pagination state
3066
+ */
3067
+ onPaginationChange?: (pagination: TablePaginationType) => void;
3068
+ /**
3069
+ * Whether to disable column customization feature.
3070
+ *
3071
+ * When true, the customization button is hidden.
3072
+ *
3073
+ * @default false
3074
+ */
3075
+ disableCustomization?: boolean;
3076
+ /**
3077
+ * Fixed height of the table container.
3078
+ *
3079
+ * When provided, the table body becomes scrollable.
3080
+ *
3081
+ * @default undefined
3082
+ */
3083
+ height?: string;
3084
+ }
3085
+
3086
+ declare const Table: React$1.FC<TableProps>;
3087
+
3088
+ declare const TYPOGRAPHY: {
3089
+ [k: string]: string;
3090
+ };
3091
+
3092
+ /**
3093
+ * Typography variant type from theme.
3094
+ */
3095
+ type TextVariant = keyof typeof TYPOGRAPHY;
3096
+ /**
3097
+ * Text component for displaying typography with theme-based styling.
3098
+ *
3099
+ * A versatile text component that provides consistent typography across the
3100
+ * application. Supports all typography variants from the theme, custom colors,
3101
+ * alignment, and text transformations. Use semantic HTML elements for headings.
3102
+ *
3103
+ * @category Data
3104
+ * @see StatusLabel
3105
+ *
3106
+ * @remarks
3107
+ * - Requires UIProvider wrapper for theming
3108
+ * - Supports all typography variants from theme
3109
+ * - Use semantic HTML (h1, h2, etc.) for headings when appropriate
3110
+ * - Color contrast should meet WCAG standards
3111
+ * - Truncate prop adds ellipsis for overflow text
3112
+ *
3113
+ * @example Basic usage
3114
+ * ```tsx
3115
+ * <Text>Hello World</Text>
3116
+ * ```
3117
+ *
3118
+ * @example Different variants
3119
+ * ```tsx
3120
+ * <Text variant="headingLg">Large Heading</Text>
3121
+ * <Text variant="headingMd">Medium Heading</Text>
3122
+ * <Text variant="bodyMd">Body Text</Text>
3123
+ * <Text variant="bodySm">Small Text</Text>
3124
+ * ```
3125
+ *
3126
+ * @example With color
3127
+ * ```tsx
3128
+ * <Text color="primary">Primary colored text</Text>
3129
+ * <Text color="#ff0000">Red text</Text>
3130
+ * ```
3131
+ *
3132
+ * @example With alignment
3133
+ * ```tsx
3134
+ * <Text align="center">Centered text</Text>
3135
+ * <Text align="right">Right aligned text</Text>
3136
+ * ```
3137
+ *
3138
+ * @example With transformations
3139
+ * ```tsx
3140
+ * <Text uppercase>Uppercase Text</Text>
3141
+ * <Text underline>Underlined Text</Text>
3142
+ * <Text truncate>Long text that will be truncated...</Text>
3143
+ * ```
3144
+ */
3145
+ interface TextProps extends AllHTMLAttributes<HTMLSpanElement> {
3146
+ /**
3147
+ * Text content to display.
3148
+ */
3149
+ children: ReactNode;
3150
+ /**
3151
+ * CSS class name for styled-components styling.
3152
+ *
3153
+ * @default undefined
3154
+ */
3155
+ className?: string;
3156
+ /**
3157
+ * Typography variant from the theme.
3158
+ *
3159
+ * @default 'bodySm'
3160
+ */
3161
+ variant?: TextVariant;
3162
+ /**
3163
+ * Text alignment.
3164
+ *
3165
+ * @default 'left'
3166
+ */
3167
+ align?: 'left' | 'right' | 'center' | 'justify' | 'start' | 'end' | 'match-parent';
3168
+ /**
3169
+ * Font weight override.
3170
+ *
3171
+ * Can be a number (400, 500, 600, 700) or string.
3172
+ * Regular: 400, Medium: 500, Semibold: 600, Bold: 700
3173
+ *
3174
+ * @default undefined (uses variant default)
3175
+ */
3176
+ fontWeight?: string | number;
3177
+ /**
3178
+ * Text color (theme color name or CSS color value).
3179
+ *
3180
+ * Examples: 'textNormal', '#ff0000', 'rgb(255, 0, 0)'
3181
+ *
3182
+ * @default 'textDark'
3183
+ */
3184
+ color?: string;
3185
+ /**
3186
+ * Whether to render text in uppercase.
3187
+ *
3188
+ * @default false
3189
+ */
3190
+ uppercase?: boolean;
3191
+ /**
3192
+ * Whether to render text with underline.
3193
+ *
3194
+ * @default false
3195
+ */
3196
+ underline?: boolean;
3197
+ /**
3198
+ * Whether to truncate text with ellipsis when it overflows.
3199
+ *
3200
+ * @default false
3201
+ */
3202
+ truncate?: boolean;
3203
+ }
3204
+
3205
+ declare const Text: React$1.ForwardRefExoticComponent<TextProps & React$1.RefAttributes<HTMLSpanElement>>;
3206
+
3207
+ /**
3208
+ * TextArea component for multi-line text input.
3209
+ *
3210
+ * A multi-line text input component for longer form content such as comments,
3211
+ * descriptions, and messages. Supports standard textarea attributes and
3212
+ * integrates with InputContainer for labels and error messages.
3213
+ *
3214
+ * @category Forms
3215
+ * @see Input
3216
+ * @see InputContainer
3217
+ *
3218
+ * @remarks
3219
+ * - Requires UIProvider wrapper for theming
3220
+ * - Supports all standard HTML textarea attributes
3221
+ * - Resizable by default (can be controlled via CSS)
3222
+ * - Use InputContainer for labels, error messages, and helper text
3223
+ * - For single-line text, use Input component instead
3224
+ *
3225
+ * @example Basic usage
3226
+ * ```tsx
3227
+ * <TextArea
3228
+ * value={message}
3229
+ * onTextChange={(value) => setMessage(value)}
3230
+ * placeholder="Enter your message"
3231
+ * />
3232
+ * ```
3233
+ *
3234
+ * @example With InputContainer
3235
+ * ```tsx
3236
+ * <InputContainer
3237
+ * label="Comments"
3238
+ * error={errors.comments}
3239
+ * helperText="Maximum 500 characters"
3240
+ * >
3241
+ * <TextArea
3242
+ * value={comments}
3243
+ * onTextChange={(value) => setComments(value)}
3244
+ * />
3245
+ * </InputContainer>
3246
+ * ```
3247
+ *
3248
+ * @example With max length
3249
+ * ```tsx
3250
+ * <TextArea
3251
+ * value={description}
3252
+ * onTextChange={(value) => setDescription(value)}
3253
+ * maxLength={500}
3254
+ * placeholder="Enter description (max 500 chars)"
3255
+ * />
3256
+ * ```
3257
+ *
3258
+ * @example Disabled state
3259
+ * ```tsx
3260
+ * <TextArea
3261
+ * value={readOnlyText}
3262
+ * onTextChange={() => {}}
3263
+ * disabled={true}
3264
+ * />
3265
+ * ```
3266
+ */
3267
+ interface TextAreaProps {
3268
+ /**
3269
+ * The current value of the textarea.
3270
+ *
3271
+ * @default undefined
3272
+ */
3273
+ value?: string;
3274
+ /**
3275
+ * Callback function triggered when the textarea value changes.
3276
+ *
3277
+ * This callback receives the new string value of the textarea.
3278
+ *
3279
+ * @param value - The new textarea value as a string
3280
+ */
3281
+ onTextChange?: (value: string) => void;
3282
+ /**
3283
+ * Whether the textarea is disabled and cannot be edited.
3284
+ *
3285
+ * @default false
3286
+ */
3287
+ disabled?: boolean;
3288
+ /**
3289
+ * Placeholder text displayed when the textarea is empty.
3290
+ *
3291
+ * @default undefined
3292
+ */
3293
+ placeholder?: string;
3294
+ }
3295
+
3296
+ declare const TextArea: ({ value, onTextChange, disabled, placeholder }: TextAreaProps) => react_jsx_runtime.JSX.Element;
3297
+
3298
+ /**
3299
+ * TimeInput component for time entry with validation.
3300
+ *
3301
+ * A time input component that allows users to enter time values in HH:mm
3302
+ * format (24-hour format). Includes validation to ensure valid time values
3303
+ * and integrates with InputContainer for labels and error messages.
3304
+ *
3305
+ * @category Forms
3306
+ * @see DateInput
3307
+ * @see DatePicker
3308
+ *
3309
+ * @remarks
3310
+ * - Requires UIProvider wrapper for theming
3311
+ * - Uses HH:mm format (24-hour format)
3312
+ * - Includes built-in time validation
3313
+ * - Use InputContainer for labels, error messages, and helper text
3314
+ * - For date and time together, consider using DatePicker with time support
3315
+ *
3316
+ * @example Basic usage
3317
+ * ```tsx
3318
+ * <TimeInput
3319
+ * value={timeValue}
3320
+ * onChange={(value) => setTimeValue(value)}
3321
+ * placeholder="HH:mm"
3322
+ * />
3323
+ * ```
3324
+ *
3325
+ * @example With InputContainer
3326
+ * ```tsx
3327
+ * <InputContainer
3328
+ * label="Start Time"
3329
+ * error={errors.startTime}
3330
+ * >
3331
+ * <TimeInput
3332
+ * value={startTime}
3333
+ * onChange={(value) => setStartTime(value)}
3334
+ * />
3335
+ * </InputContainer>
3336
+ * ```
3337
+ *
3338
+ * @example Disabled state
3339
+ * ```tsx
3340
+ * <TimeInput
3341
+ * value="14:30"
3342
+ * onChange={() => {}}
3343
+ * disabled={true}
3344
+ * />
3345
+ * ```
3346
+ */
3347
+ interface TimeInputProps {
3348
+ /**
3349
+ * Current time value in HH:mm format (24-hour format).
3350
+ *
3351
+ * Example: "14:30" for 2:30 PM
3352
+ *
3353
+ * @default undefined
3354
+ */
3355
+ value?: string;
3356
+ /**
3357
+ * Callback function called when the time value changes.
3358
+ *
3359
+ * @param value - The new time value in HH:mm format
3360
+ */
3361
+ onChange?: (value: string) => void;
3362
+ /**
3363
+ * Placeholder text displayed when the input is empty.
3364
+ *
3365
+ * Should indicate the expected format (e.g., "HH:mm").
3366
+ *
3367
+ * @default undefined
3368
+ */
3369
+ placeholder?: string;
3370
+ /**
3371
+ * Whether the input is disabled and cannot be edited.
3372
+ *
3373
+ * @default false
3374
+ */
3375
+ disabled?: boolean;
3376
+ }
3377
+
3378
+ declare const TimeInput: React$1.ForwardRefExoticComponent<TimeInputProps & React$1.RefAttributes<any>>;
3379
+
3380
+ /**
3381
+ * Tooltip component for displaying contextual information on hover or focus.
3382
+ *
3383
+ * A tooltip component built on Radix UI Tooltip that displays additional
3384
+ * information when users hover over or focus on an element. Supports
3385
+ * positioning, alignment, and custom styling.
3386
+ *
3387
+ * @category Feedback
3388
+ * @see ClickableIcon
3389
+ *
3390
+ * @remarks
3391
+ * - Requires UIProvider wrapper for theming
3392
+ * - Built on Radix UI Tooltip for accessibility
3393
+ * - Keyboard accessible (focus triggers tooltip)
3394
+ * - Screen reader support
3395
+ * - Should not be the only way to access important information
3396
+ * - Positioning adjusts automatically to avoid collisions
3397
+ *
3398
+ * @example Basic usage
3399
+ * ```tsx
3400
+ * <Tooltip content="This is a tooltip">
3401
+ * <Button>Hover me</Button>
3402
+ * </Tooltip>
3403
+ * ```
3404
+ *
3405
+ * @example With ClickableIcon
3406
+ * ```tsx
3407
+ * <Tooltip content="Delete item">
3408
+ * <ClickableIcon
3409
+ * iconName="faTrash"
3410
+ * onClick={handleDelete}
3411
+ * aria-label="Delete"
3412
+ * />
3413
+ * </Tooltip>
3414
+ * ```
3415
+ *
3416
+ * @example Custom positioning
3417
+ * ```tsx
3418
+ * <Tooltip
3419
+ * content="Tooltip on the right"
3420
+ * side="right"
3421
+ * align="start"
3422
+ * >
3423
+ * <Button>Hover</Button>
3424
+ * </Tooltip>
3425
+ * ```
3426
+ *
3427
+ * @example Dark style
3428
+ * ```tsx
3429
+ * <Tooltip
3430
+ * content="Dark tooltip"
3431
+ * style="dark"
3432
+ * >
3433
+ * <Button>Hover</Button>
3434
+ * </Tooltip>
3435
+ * ```
3436
+ *
3437
+ * @example With custom width
3438
+ * ```tsx
3439
+ * <Tooltip
3440
+ * content="This is a longer tooltip that needs more width"
3441
+ * width="300px"
3442
+ * >
3443
+ * <Button>Hover</Button>
3444
+ * </Tooltip>
3445
+ * ```
3446
+ */
3447
+ interface TooltipProps {
3448
+ /**
3449
+ * Child element that triggers the tooltip on hover or focus.
3450
+ *
3451
+ * Can be any React node.
3452
+ */
3453
+ children: ReactNode;
3454
+ /**
3455
+ * CSS class name for styled-components styling.
3456
+ *
3457
+ * @default undefined
3458
+ */
3459
+ className?: string;
3460
+ /**
3461
+ * Content to display inside the tooltip.
3462
+ *
3463
+ * Can be a string or React node.
3464
+ *
3465
+ * @default undefined
3466
+ */
3467
+ content?: string | ReactNode;
3468
+ /**
3469
+ * Whether the tooltip is disabled and will not render.
3470
+ *
3471
+ * @default false
3472
+ */
3473
+ disabled?: boolean;
3474
+ /**
3475
+ * Side of the trigger where the tooltip should render.
3476
+ *
3477
+ * Automatically adjusts if there's not enough space.
3478
+ *
3479
+ * @default 'top'
3480
+ */
3481
+ side?: 'top' | 'right' | 'bottom' | 'left';
3482
+ /**
3483
+ * Distance in pixels between the trigger and tooltip.
3484
+ *
3485
+ * @default 0
3486
+ */
3487
+ sideOffset?: number;
3488
+ /**
3489
+ * Alignment of the tooltip relative to the trigger.
3490
+ *
3491
+ * Automatically adjusts if there's not enough space.
3492
+ *
3493
+ * @default 'center'
3494
+ */
3495
+ align?: 'start' | 'center' | 'end';
3496
+ /**
3497
+ * Offset in pixels from the alignment position.
3498
+ *
3499
+ * @default 0
3500
+ */
3501
+ alignOffset?: number;
3502
+ /**
3503
+ * Visual style variant of the tooltip.
3504
+ *
3505
+ * @default 'light'
3506
+ */
3507
+ style?: 'light' | 'dark';
3508
+ /**
3509
+ * Width of the tooltip (CSS value).
3510
+ *
3511
+ * @default 'auto'
3512
+ */
3513
+ width?: string;
3514
+ }
3515
+
3516
+ declare const Tooltip: ({ children, side, sideOffset, align, alignOffset, style, content, disabled, width, className }: TooltipProps) => react_jsx_runtime.JSX.Element;
3517
+
3518
+ declare const UIProvider: ({ children, locale }: {
3519
+ children: React$1.ReactNode;
3520
+ locale: string;
3521
+ }) => react_jsx_runtime.JSX.Element;
3522
+
3523
+ export { Avatar, type AvatarProps, Banner, Button, ButtonVariant, Calendar, Checkbox, ClickableIcon, CurrencyInput, type CurrencyInputProps, DateInput, DatePicker, Divider, DragList, Dropdown, DropdownItem, DropdownMenu, DropdownTrigger, DropdownVariant, Filters, type FiltersProps, Flex, type FlexProps, Icon, type IconName, type IconProps, type IconStyle, Image, Input, InputContainer, type InputContainerProps, type InputProps, LoadingPlaceholder, Modal, MultiSelect, Select, Slideout, Spinner, StatusLabel, Switch, TabBar, Table, Text, TextArea, type TextProps, TimeInput, Tooltip, type TooltipProps, UIProvider };