@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.
- package/dist/component-manifest.json +749 -0
- package/dist/index.d.ts +3523 -0
- package/dist/index.js +979 -0
- package/package.json +93 -0
package/dist/index.d.ts
ADDED
|
@@ -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 };
|