@brycks/core-front 0.11.0 → 0.12.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/components/data/VirtualList/VirtualList.js +1 -1
- package/dist/components/data.cjs +1 -1
- package/dist/components/data.d.ts +387 -2
- package/dist/components/data.js +26 -26
- package/dist/components/feedback/Toast/ToastContext.js +3 -3
- package/dist/components/feedback.cjs +1 -1
- package/dist/components/feedback.d.ts +317 -2
- package/dist/components/feedback.js +21 -21
- package/dist/components/form/DropZone/DropZone.cjs.map +1 -1
- package/dist/components/form/DropZone/DropZone.js.map +1 -1
- package/dist/components/form/FileInput/FileInput.cjs.map +1 -1
- package/dist/components/form/FileInput/FileInput.js.map +1 -1
- package/dist/components/form/FileUpload/FileUpload.cjs +2 -0
- package/dist/components/form/FileUpload/FileUpload.cjs.map +1 -0
- package/dist/components/form/FileUpload/FileUpload.js +223 -0
- package/dist/components/form/FileUpload/FileUpload.js.map +1 -0
- package/dist/components/form/FileUpload/fileUpload.utils.cjs +2 -0
- package/dist/components/form/FileUpload/fileUpload.utils.cjs.map +1 -0
- package/dist/components/form/FileUpload/fileUpload.utils.js +43 -0
- package/dist/components/form/FileUpload/fileUpload.utils.js.map +1 -0
- package/dist/components/form/FormGroup/FormGroup.cjs +1 -1
- package/dist/components/form/FormGroup/FormGroup.js +1 -1
- package/dist/components/form/Slider/Slider.cjs +1 -1
- package/dist/components/form/Slider/Slider.js +2 -2
- package/dist/components/form/TagInput/TagInput.cjs +1 -1
- package/dist/components/form/TagInput/TagInput.js +8 -8
- package/dist/components/form.cjs +1 -1
- package/dist/components/form.d.ts +889 -2
- package/dist/components/form.js +51 -45
- package/dist/components/form.js.map +1 -1
- package/dist/components/layout.cjs +1 -1
- package/dist/components/layout.d.ts +587 -2
- package/dist/components/layout.js +30 -30
- package/dist/components/media/Video/Video.cjs +1 -1
- package/dist/components/media/Video/Video.cjs.map +1 -1
- package/dist/components/media/Video/Video.js +54 -54
- package/dist/components/media/Video/Video.js.map +1 -1
- package/dist/components/navigation/ContextMenu/ContextMenu.cjs +1 -1
- package/dist/components/navigation/ContextMenu/ContextMenu.js +5 -5
- package/dist/components/navigation/Stepper/Stepper.js +4 -4
- package/dist/components/navigation/Tabs/Tabs.js +4 -4
- package/dist/components/navigation.cjs +1 -1
- package/dist/components/navigation.d.ts +436 -2
- package/dist/components/navigation.js +22 -22
- package/dist/components/typography/Text/Text.cjs +1 -1
- package/dist/components/typography/Text/Text.js +1 -1
- package/dist/components/utility.cjs +1 -1
- package/dist/components/utility.d.ts +278 -2
- package/dist/components/utility.js +28 -28
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +87 -0
- package/dist/index.js +279 -275
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +116 -115
- package/dist/data.d.ts +0 -387
- package/dist/feedback.d.ts +0 -317
- package/dist/form.d.ts +0 -772
- package/dist/layout.d.ts +0 -587
- package/dist/navigation.d.ts +0 -436
- package/dist/utility.d.ts +0 -278
|
@@ -1,2 +1,889 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { CSSProperties } from 'react';
|
|
2
|
+
import { FormHTMLAttributes } from 'react';
|
|
3
|
+
import { ForwardRefExoticComponent } from 'react';
|
|
4
|
+
import { HTMLAttributes } from 'react';
|
|
5
|
+
import { InputHTMLAttributes } from 'react';
|
|
6
|
+
import { JSX } from 'react/jsx-runtime';
|
|
7
|
+
import { LabelHTMLAttributes } from 'react';
|
|
8
|
+
import { ReactNode } from 'react';
|
|
9
|
+
import { RefAttributes } from 'react';
|
|
10
|
+
import { SelectHTMLAttributes } from 'react';
|
|
11
|
+
import { TextareaHTMLAttributes } from 'react';
|
|
12
|
+
|
|
13
|
+
export declare const Checkbox: ForwardRefExoticComponent<CheckboxProps & RefAttributes<HTMLInputElement>>;
|
|
14
|
+
|
|
15
|
+
export declare interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {
|
|
16
|
+
/** Checkbox size */
|
|
17
|
+
size?: CheckboxSize;
|
|
18
|
+
/** Label text */
|
|
19
|
+
label?: ReactNode;
|
|
20
|
+
/** Description below label */
|
|
21
|
+
description?: ReactNode;
|
|
22
|
+
/** Error state */
|
|
23
|
+
isInvalid?: boolean;
|
|
24
|
+
/** Indeterminate state */
|
|
25
|
+
isIndeterminate?: boolean;
|
|
26
|
+
/** Custom class name */
|
|
27
|
+
className?: string;
|
|
28
|
+
/** Test ID */
|
|
29
|
+
testId?: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export declare type CheckboxSize = 'sm' | 'md' | 'lg';
|
|
33
|
+
|
|
34
|
+
export declare const Combobox: ForwardRefExoticComponent<ComboboxProps & RefAttributes<HTMLInputElement>>;
|
|
35
|
+
|
|
36
|
+
export declare interface ComboboxOption {
|
|
37
|
+
/** Unique identifier for the option */
|
|
38
|
+
value: string;
|
|
39
|
+
/** Display label */
|
|
40
|
+
label: string;
|
|
41
|
+
/** Optional description */
|
|
42
|
+
description?: string;
|
|
43
|
+
/** Optional icon */
|
|
44
|
+
icon?: ReactNode;
|
|
45
|
+
/** Whether the option is disabled */
|
|
46
|
+
disabled?: boolean;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export declare interface ComboboxProps {
|
|
50
|
+
/** Available options */
|
|
51
|
+
options: ComboboxOption[];
|
|
52
|
+
/** Currently selected value (controlled) */
|
|
53
|
+
value?: string | null;
|
|
54
|
+
/** Default selected value (uncontrolled) */
|
|
55
|
+
defaultValue?: string | null;
|
|
56
|
+
/** Callback when selection changes */
|
|
57
|
+
onChange?: (value: string | null) => void;
|
|
58
|
+
/** Callback when input value changes */
|
|
59
|
+
onInputChange?: (value: string) => void;
|
|
60
|
+
/** Placeholder text */
|
|
61
|
+
placeholder?: string;
|
|
62
|
+
/** Component size */
|
|
63
|
+
size?: ComboboxSize;
|
|
64
|
+
/** Whether the combobox is disabled */
|
|
65
|
+
disabled?: boolean;
|
|
66
|
+
/** Whether the combobox is invalid */
|
|
67
|
+
isInvalid?: boolean;
|
|
68
|
+
/** Whether the combobox is required */
|
|
69
|
+
required?: boolean;
|
|
70
|
+
/** Whether to allow clearing the selection */
|
|
71
|
+
clearable?: boolean;
|
|
72
|
+
/** Label for accessibility */
|
|
73
|
+
'aria-label'?: string;
|
|
74
|
+
/** ID of element that labels this combobox */
|
|
75
|
+
'aria-labelledby'?: string;
|
|
76
|
+
/** Custom filter function */
|
|
77
|
+
filterFn?: (option: ComboboxOption, inputValue: string) => boolean;
|
|
78
|
+
/** Text to show when no options match */
|
|
79
|
+
emptyText?: string;
|
|
80
|
+
/** Whether options are being loaded asynchronously */
|
|
81
|
+
isLoading?: boolean;
|
|
82
|
+
/** Text to show while loading */
|
|
83
|
+
loadingText?: string;
|
|
84
|
+
/** Whether to allow creating new options */
|
|
85
|
+
creatable?: boolean;
|
|
86
|
+
/** Callback when creating new option */
|
|
87
|
+
onCreate?: (inputValue: string) => void;
|
|
88
|
+
/** Label of the create-option button */
|
|
89
|
+
createLabel?: (inputValue: string) => ReactNode;
|
|
90
|
+
/** Accessible label of the clear button */
|
|
91
|
+
clearLabel?: string;
|
|
92
|
+
/** Accessible label of the options listbox (when no aria-label is given) */
|
|
93
|
+
listboxLabel?: string;
|
|
94
|
+
/** Custom class name */
|
|
95
|
+
className?: string;
|
|
96
|
+
/** Test ID */
|
|
97
|
+
testId?: string;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export declare type ComboboxSize = 'sm' | 'md' | 'lg';
|
|
101
|
+
|
|
102
|
+
export declare const DateInput: ForwardRefExoticComponent<DateInputProps & RefAttributes<HTMLInputElement>>;
|
|
103
|
+
|
|
104
|
+
export declare interface DateInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {
|
|
105
|
+
/** Input size */
|
|
106
|
+
size?: DateInputSize;
|
|
107
|
+
/** Input variant */
|
|
108
|
+
variant?: DateInputVariant;
|
|
109
|
+
/** Type of date input */
|
|
110
|
+
type?: DateInputType;
|
|
111
|
+
/** Input label */
|
|
112
|
+
label?: ReactNode;
|
|
113
|
+
/** Helper text below input */
|
|
114
|
+
helperText?: ReactNode;
|
|
115
|
+
/** Error message */
|
|
116
|
+
error?: ReactNode;
|
|
117
|
+
/** Whether the input is invalid */
|
|
118
|
+
isInvalid?: boolean;
|
|
119
|
+
/** Icon on the left side */
|
|
120
|
+
leftIcon?: ReactNode;
|
|
121
|
+
/** Custom class name */
|
|
122
|
+
className?: string;
|
|
123
|
+
/** Test ID */
|
|
124
|
+
testId?: string;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export declare type DateInputSize = 'sm' | 'md' | 'lg';
|
|
128
|
+
|
|
129
|
+
export declare type DateInputType = 'date' | 'datetime-local' | 'time' | 'month' | 'week';
|
|
130
|
+
|
|
131
|
+
export declare type DateInputVariant = 'outline' | 'filled' | 'flushed';
|
|
132
|
+
|
|
133
|
+
export declare interface DateRange {
|
|
134
|
+
start: Date | null;
|
|
135
|
+
end: Date | null;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export declare const DateRangePicker: ForwardRefExoticComponent<DateRangePickerProps & RefAttributes<HTMLDivElement>>;
|
|
139
|
+
|
|
140
|
+
export declare interface DateRangePickerProps {
|
|
141
|
+
/** Current date range value */
|
|
142
|
+
value?: DateRange;
|
|
143
|
+
/** Default date range value (uncontrolled) */
|
|
144
|
+
defaultValue?: DateRange;
|
|
145
|
+
/** Callback when date range changes */
|
|
146
|
+
onChange?: (value: DateRange) => void;
|
|
147
|
+
/** Component size */
|
|
148
|
+
size?: DateRangePickerSize;
|
|
149
|
+
/** Minimum selectable date */
|
|
150
|
+
minDate?: Date;
|
|
151
|
+
/** Maximum selectable date */
|
|
152
|
+
maxDate?: Date;
|
|
153
|
+
/** Placeholder text */
|
|
154
|
+
placeholder?: string;
|
|
155
|
+
/** Whether the input is disabled */
|
|
156
|
+
disabled?: boolean;
|
|
157
|
+
/** Whether the input is invalid */
|
|
158
|
+
isInvalid?: boolean;
|
|
159
|
+
/** Whether to allow clearing */
|
|
160
|
+
clearable?: boolean;
|
|
161
|
+
/** Preset date ranges */
|
|
162
|
+
presets?: DateRangePreset[];
|
|
163
|
+
/** Date format display */
|
|
164
|
+
dateFormat?: (date: Date) => string;
|
|
165
|
+
/** Label for accessibility */
|
|
166
|
+
'aria-label'?: string;
|
|
167
|
+
/** Custom class name */
|
|
168
|
+
className?: string;
|
|
169
|
+
/** Test ID */
|
|
170
|
+
testId?: string;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* DateRangePicker Component
|
|
175
|
+
*
|
|
176
|
+
* A date range selection component with calendar UI.
|
|
177
|
+
* Supports preset ranges and custom date selection.
|
|
178
|
+
*
|
|
179
|
+
* @module components/form/DateRangePicker
|
|
180
|
+
*/
|
|
181
|
+
export declare type DateRangePickerSize = 'sm' | 'md' | 'lg';
|
|
182
|
+
|
|
183
|
+
export declare interface DateRangePreset {
|
|
184
|
+
label: string;
|
|
185
|
+
getValue: () => DateRange;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export declare const FieldError: ForwardRefExoticComponent<FieldErrorProps & RefAttributes<HTMLSpanElement>>;
|
|
189
|
+
|
|
190
|
+
export declare interface FieldErrorProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {
|
|
191
|
+
/** Error size */
|
|
192
|
+
size?: FieldErrorSize;
|
|
193
|
+
/** Error message */
|
|
194
|
+
children: ReactNode;
|
|
195
|
+
/** Whether to show the error icon */
|
|
196
|
+
showIcon?: boolean;
|
|
197
|
+
/** Custom icon */
|
|
198
|
+
icon?: ReactNode;
|
|
199
|
+
/** Custom class name */
|
|
200
|
+
className?: string;
|
|
201
|
+
/** Test ID */
|
|
202
|
+
testId?: string;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export declare type FieldErrorSize = 'sm' | 'md' | 'lg';
|
|
206
|
+
|
|
207
|
+
export declare const FileInput: ForwardRefExoticComponent<FileInputProps & RefAttributes<HTMLInputElement>>;
|
|
208
|
+
|
|
209
|
+
export declare interface FileInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type' | 'onChange' | 'value'> {
|
|
210
|
+
/** Input size */
|
|
211
|
+
size?: FileInputSize;
|
|
212
|
+
/** Input variant */
|
|
213
|
+
variant?: FileInputVariant;
|
|
214
|
+
/** Accepted file types (e.g., "image/*,.pdf") */
|
|
215
|
+
accept?: string;
|
|
216
|
+
/** Whether multiple files can be selected */
|
|
217
|
+
multiple?: boolean;
|
|
218
|
+
/** Maximum file size in bytes */
|
|
219
|
+
maxSize?: number;
|
|
220
|
+
/** Label text */
|
|
221
|
+
label?: ReactNode;
|
|
222
|
+
/** Description text inside dropzone */
|
|
223
|
+
description?: ReactNode;
|
|
224
|
+
/** Error message */
|
|
225
|
+
error?: ReactNode;
|
|
226
|
+
/** Whether the input is invalid */
|
|
227
|
+
isInvalid?: boolean;
|
|
228
|
+
/** Callback when files are selected */
|
|
229
|
+
onChange?: (files: File[]) => void;
|
|
230
|
+
/** Icon to display in dropzone */
|
|
231
|
+
icon?: ReactNode;
|
|
232
|
+
/** Custom class name */
|
|
233
|
+
className?: string;
|
|
234
|
+
/** Test ID */
|
|
235
|
+
testId?: string;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
export declare type FileInputSize = 'sm' | 'md' | 'lg';
|
|
239
|
+
|
|
240
|
+
export declare type FileInputVariant = 'default' | 'dropzone';
|
|
241
|
+
|
|
242
|
+
export declare interface FileRejection {
|
|
243
|
+
file: File;
|
|
244
|
+
reason: FileRejectionReason;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/** Why a file was refused. */
|
|
248
|
+
export declare type FileRejectionReason = 'type' | 'size';
|
|
249
|
+
|
|
250
|
+
export declare interface FileSelectionResult {
|
|
251
|
+
accepted: File[];
|
|
252
|
+
rejected: FileRejection[];
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
export declare interface FileSelectionRules {
|
|
256
|
+
accept?: string;
|
|
257
|
+
maxSize?: number;
|
|
258
|
+
multiple?: boolean;
|
|
259
|
+
/** Files already selected — used to enforce `maxFiles` and to append. */
|
|
260
|
+
current?: File[];
|
|
261
|
+
maxFiles?: number;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
export declare const FileUpload: ForwardRefExoticComponent<FileUploadProps & RefAttributes<HTMLInputElement>>;
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Every user-facing string, so the host app supplies its own translations.
|
|
268
|
+
* The library ships English defaults and stays i18n-free.
|
|
269
|
+
*/
|
|
270
|
+
export declare interface FileUploadLabels {
|
|
271
|
+
/** Text of the button in the `compact` variant. */
|
|
272
|
+
trigger?: string;
|
|
273
|
+
/** Shown next to the trigger while nothing is selected (`compact`). */
|
|
274
|
+
placeholder?: string;
|
|
275
|
+
/** Main call to action inside the dropzone. */
|
|
276
|
+
prompt?: ReactNode;
|
|
277
|
+
/** Shown while a drag is hovering the dropzone. */
|
|
278
|
+
dropPrompt?: string;
|
|
279
|
+
/** Accessible label of the per-file remove button. */
|
|
280
|
+
remove?: string;
|
|
281
|
+
/** Error for a file whose type is not accepted. */
|
|
282
|
+
invalidType?: (fileName: string) => string;
|
|
283
|
+
/** Error for a file above `maxSize`. */
|
|
284
|
+
tooLarge?: (fileName: string, maxSizeLabel: string) => string;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
export declare interface FileUploadProps {
|
|
288
|
+
/** Selected files (controlled). */
|
|
289
|
+
files: File[];
|
|
290
|
+
/** Called with the next selection whenever files are added or removed. */
|
|
291
|
+
onFilesChange: (files: File[]) => void;
|
|
292
|
+
/** Layout. */
|
|
293
|
+
variant?: FileUploadVariant;
|
|
294
|
+
/** Size. */
|
|
295
|
+
size?: FileUploadSize;
|
|
296
|
+
/** Accepted types, e.g. `".pfx,.p12"` or `"application/pdf"`. */
|
|
297
|
+
accept?: string;
|
|
298
|
+
/** Allow selecting more than one file. */
|
|
299
|
+
multiple?: boolean;
|
|
300
|
+
/** Cap on the number of files when `multiple`. */
|
|
301
|
+
maxFiles?: number;
|
|
302
|
+
/** Maximum size per file, in bytes. Rejections are reported, never silent. */
|
|
303
|
+
maxSize?: number;
|
|
304
|
+
/** Helper text under the prompt (e.g. accepted formats). */
|
|
305
|
+
hint?: ReactNode;
|
|
306
|
+
/** Error message from the host app (e.g. a failed upload). */
|
|
307
|
+
error?: ReactNode;
|
|
308
|
+
/** Render the field as invalid without a message. */
|
|
309
|
+
isInvalid?: boolean;
|
|
310
|
+
/** Disable selection and removal. */
|
|
311
|
+
disabled?: boolean;
|
|
312
|
+
/** Icon shown in the dropzone. */
|
|
313
|
+
icon?: ReactNode;
|
|
314
|
+
/** Notified when files are refused by `accept`/`maxSize`. */
|
|
315
|
+
onReject?: (rejections: FileRejection[]) => void;
|
|
316
|
+
/** Overridable user-facing strings. */
|
|
317
|
+
labels?: FileUploadLabels;
|
|
318
|
+
/** Id of the underlying input, to pair with an external label. */
|
|
319
|
+
id?: string;
|
|
320
|
+
/** Custom class name. */
|
|
321
|
+
className?: string;
|
|
322
|
+
/** Test ID. */
|
|
323
|
+
testId?: string;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
export declare type FileUploadSize = 'sm' | 'md' | 'lg';
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* `dropzone` — generous dashed target, best for documents and images.
|
|
330
|
+
* `compact` — a single row (button + selected file), fits inline in a form.
|
|
331
|
+
*/
|
|
332
|
+
export declare type FileUploadVariant = 'dropzone' | 'compact';
|
|
333
|
+
|
|
334
|
+
export declare const Form: ForwardRefExoticComponent<FormProps & RefAttributes<HTMLFormElement>>;
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* FileUpload — pure helpers
|
|
338
|
+
*
|
|
339
|
+
* Framework-free selection logic so it can be reasoned about and tested
|
|
340
|
+
* without rendering anything.
|
|
341
|
+
*/
|
|
342
|
+
/** Human-readable file size, e.g. `1.4 MB`. */
|
|
343
|
+
export declare function formatBytes(bytes: number): string;
|
|
344
|
+
|
|
345
|
+
export declare const FormField: ForwardRefExoticComponent<FormFieldProps & RefAttributes<HTMLDivElement>>;
|
|
346
|
+
|
|
347
|
+
export declare interface FormFieldProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
348
|
+
/** Field size */
|
|
349
|
+
size?: FormFieldSize;
|
|
350
|
+
/** Field label */
|
|
351
|
+
label?: ReactNode;
|
|
352
|
+
/** Whether the field is required */
|
|
353
|
+
required?: boolean;
|
|
354
|
+
/** Helper text below the field */
|
|
355
|
+
helperText?: ReactNode;
|
|
356
|
+
/** Error message (also sets invalid state) */
|
|
357
|
+
error?: ReactNode;
|
|
358
|
+
/** Whether the field is invalid */
|
|
359
|
+
isInvalid?: boolean;
|
|
360
|
+
/** Whether the field is disabled */
|
|
361
|
+
disabled?: boolean;
|
|
362
|
+
/** Custom ID for the field (auto-generated if not provided) */
|
|
363
|
+
fieldId?: string;
|
|
364
|
+
/** Field orientation */
|
|
365
|
+
orientation?: 'vertical' | 'horizontal';
|
|
366
|
+
/** Label width for horizontal orientation */
|
|
367
|
+
labelWidth?: number | string;
|
|
368
|
+
/** Custom class name */
|
|
369
|
+
className?: string;
|
|
370
|
+
/** Children (form input) */
|
|
371
|
+
children: ReactNode | ((props: {
|
|
372
|
+
id: string;
|
|
373
|
+
'aria-describedby'?: string;
|
|
374
|
+
'aria-invalid'?: boolean;
|
|
375
|
+
}) => ReactNode);
|
|
376
|
+
/** Test ID */
|
|
377
|
+
testId?: string;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
export declare type FormFieldSize = 'sm' | 'md' | 'lg';
|
|
381
|
+
|
|
382
|
+
export declare type FormGap = 'sm' | 'md' | 'lg' | 'xl';
|
|
383
|
+
|
|
384
|
+
export declare const FormGroup: ForwardRefExoticComponent<FormGroupProps & RefAttributes<HTMLDivElement>>;
|
|
385
|
+
|
|
386
|
+
export declare type FormGroupGap = 'none' | 'xs' | 'sm' | 'md';
|
|
387
|
+
|
|
388
|
+
export declare interface FormGroupProps extends HTMLAttributes<HTMLDivElement> {
|
|
389
|
+
/** Label text for the form field */
|
|
390
|
+
label?: ReactNode;
|
|
391
|
+
/** Form field ID - auto-generated if not provided */
|
|
392
|
+
fieldId?: string;
|
|
393
|
+
/** Label size */
|
|
394
|
+
labelSize?: FormLabelSize;
|
|
395
|
+
/** Whether the field is required */
|
|
396
|
+
required?: boolean;
|
|
397
|
+
/** Whether the field is disabled */
|
|
398
|
+
disabled?: boolean;
|
|
399
|
+
/** Optional description text below the label */
|
|
400
|
+
description?: ReactNode;
|
|
401
|
+
/** Error message to display */
|
|
402
|
+
error?: ReactNode;
|
|
403
|
+
/** Helper text to display below the input */
|
|
404
|
+
helperText?: ReactNode;
|
|
405
|
+
/** Gap between label and input */
|
|
406
|
+
gap?: FormGroupGap;
|
|
407
|
+
/** Children (the form input) */
|
|
408
|
+
children: ReactNode;
|
|
409
|
+
/** Custom class name */
|
|
410
|
+
className?: string;
|
|
411
|
+
/** Test ID */
|
|
412
|
+
testId?: string;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
export declare const FormLabel: ForwardRefExoticComponent<FormLabelProps & RefAttributes<HTMLLabelElement>>;
|
|
416
|
+
|
|
417
|
+
export declare interface FormLabelProps extends LabelHTMLAttributes<HTMLLabelElement> {
|
|
418
|
+
/** Label text */
|
|
419
|
+
children: ReactNode;
|
|
420
|
+
/** Label size */
|
|
421
|
+
size?: FormLabelSize;
|
|
422
|
+
/** Whether the field is required */
|
|
423
|
+
required?: boolean;
|
|
424
|
+
/** Whether the field is disabled */
|
|
425
|
+
disabled?: boolean;
|
|
426
|
+
/** Optional description text */
|
|
427
|
+
description?: ReactNode;
|
|
428
|
+
/** Custom class name */
|
|
429
|
+
className?: string;
|
|
430
|
+
/** Test ID */
|
|
431
|
+
testId?: string;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
export declare type FormLabelSize = 'sm' | 'md' | 'lg';
|
|
435
|
+
|
|
436
|
+
export declare interface FormProps extends FormHTMLAttributes<HTMLFormElement> {
|
|
437
|
+
/** Gap between form groups */
|
|
438
|
+
gap?: FormGap;
|
|
439
|
+
/** Disable the form */
|
|
440
|
+
disabled?: boolean;
|
|
441
|
+
/** Form children */
|
|
442
|
+
children: ReactNode;
|
|
443
|
+
/** Custom class name */
|
|
444
|
+
className?: string;
|
|
445
|
+
/** Test ID */
|
|
446
|
+
testId?: string;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
export declare const Input: ForwardRefExoticComponent<InputProps & RefAttributes<HTMLInputElement>>;
|
|
450
|
+
|
|
451
|
+
export declare interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {
|
|
452
|
+
/** Input size */
|
|
453
|
+
size?: InputSize;
|
|
454
|
+
/** Visual variant */
|
|
455
|
+
variant?: InputVariant;
|
|
456
|
+
/** Error state */
|
|
457
|
+
isInvalid?: boolean;
|
|
458
|
+
/** Left element/icon */
|
|
459
|
+
leftElement?: ReactNode;
|
|
460
|
+
/** Right element/icon */
|
|
461
|
+
rightElement?: ReactNode;
|
|
462
|
+
/** Custom class name */
|
|
463
|
+
className?: string;
|
|
464
|
+
/** Test ID */
|
|
465
|
+
testId?: string;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
export declare type InputSize = 'sm' | 'md' | 'lg';
|
|
469
|
+
|
|
470
|
+
export declare type InputVariant = 'outline' | 'filled' | 'flushed';
|
|
471
|
+
|
|
472
|
+
/**
|
|
473
|
+
* Whether a file satisfies an `accept` string, using the same rules browsers
|
|
474
|
+
* apply: bare extensions (`.pfx`), exact MIME types (`application/pdf`) and
|
|
475
|
+
* wildcard MIME groups (`image/*`).
|
|
476
|
+
*/
|
|
477
|
+
export declare function matchesAccept(file: File, accept?: string): boolean;
|
|
478
|
+
|
|
479
|
+
export declare const MultiSelect: ForwardRefExoticComponent<MultiSelectProps & RefAttributes<HTMLDivElement>>;
|
|
480
|
+
|
|
481
|
+
export declare interface MultiSelectOption {
|
|
482
|
+
/** Unique identifier */
|
|
483
|
+
value: string;
|
|
484
|
+
/** Display label */
|
|
485
|
+
label: string;
|
|
486
|
+
/** Optional description */
|
|
487
|
+
description?: string;
|
|
488
|
+
/** Optional icon */
|
|
489
|
+
icon?: ReactNode;
|
|
490
|
+
/** Whether the option is disabled */
|
|
491
|
+
disabled?: boolean;
|
|
492
|
+
/** Optional group */
|
|
493
|
+
group?: string;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
export declare interface MultiSelectProps {
|
|
497
|
+
/** Available options */
|
|
498
|
+
options: MultiSelectOption[];
|
|
499
|
+
/** Selected values (controlled) */
|
|
500
|
+
value?: string[];
|
|
501
|
+
/** Default selected values (uncontrolled) */
|
|
502
|
+
defaultValue?: string[];
|
|
503
|
+
/** Callback when selection changes */
|
|
504
|
+
onChange?: (values: string[]) => void;
|
|
505
|
+
/** Placeholder text */
|
|
506
|
+
placeholder?: string;
|
|
507
|
+
/** Component size */
|
|
508
|
+
size?: MultiSelectSize;
|
|
509
|
+
/** Maximum selections allowed */
|
|
510
|
+
maxSelections?: number;
|
|
511
|
+
/** Whether the select is searchable */
|
|
512
|
+
searchable?: boolean;
|
|
513
|
+
/** Whether the select is disabled */
|
|
514
|
+
disabled?: boolean;
|
|
515
|
+
/** Whether the select is invalid */
|
|
516
|
+
isInvalid?: boolean;
|
|
517
|
+
/** Whether to allow clearing all */
|
|
518
|
+
clearable?: boolean;
|
|
519
|
+
/** Text when no options match search */
|
|
520
|
+
emptyText?: string;
|
|
521
|
+
/** Whether to close on select */
|
|
522
|
+
closeOnSelect?: boolean;
|
|
523
|
+
/** Label for accessibility */
|
|
524
|
+
'aria-label'?: string;
|
|
525
|
+
/** ID of element that labels this select */
|
|
526
|
+
'aria-labelledby'?: string;
|
|
527
|
+
/** Custom class name */
|
|
528
|
+
className?: string;
|
|
529
|
+
/** Test ID */
|
|
530
|
+
testId?: string;
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
export declare type MultiSelectSize = 'sm' | 'md' | 'lg';
|
|
534
|
+
|
|
535
|
+
declare type NativeInputProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'value' | 'defaultValue' | 'onChange' | 'type'>;
|
|
536
|
+
|
|
537
|
+
export declare const Radio: ForwardRefExoticComponent<RadioProps & RefAttributes<HTMLInputElement>>;
|
|
538
|
+
|
|
539
|
+
export declare function RadioGroup({ name, value: controlledValue, defaultValue, onChange, disabled, size, orientation, gap, children, className, style, }: RadioGroupProps): JSX.Element;
|
|
540
|
+
|
|
541
|
+
export declare namespace RadioGroup {
|
|
542
|
+
var displayName: string;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
export declare interface RadioGroupProps {
|
|
546
|
+
/** Radio group name */
|
|
547
|
+
name: string;
|
|
548
|
+
/** Current value */
|
|
549
|
+
value?: string;
|
|
550
|
+
/** Default value (uncontrolled) */
|
|
551
|
+
defaultValue?: string;
|
|
552
|
+
/** Callback when value changes */
|
|
553
|
+
onChange?: (value: string) => void;
|
|
554
|
+
/** Whether the group is disabled */
|
|
555
|
+
disabled?: boolean;
|
|
556
|
+
/** Radio size */
|
|
557
|
+
size?: RadioSize;
|
|
558
|
+
/** Orientation */
|
|
559
|
+
orientation?: 'horizontal' | 'vertical';
|
|
560
|
+
/** Gap between items */
|
|
561
|
+
gap?: number;
|
|
562
|
+
/** Children (Radio components) */
|
|
563
|
+
children: ReactNode;
|
|
564
|
+
/** Custom class name */
|
|
565
|
+
className?: string;
|
|
566
|
+
/** Custom styles */
|
|
567
|
+
style?: CSSProperties;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
export declare interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {
|
|
571
|
+
/** Radio size */
|
|
572
|
+
size?: RadioSize;
|
|
573
|
+
/** Radio label */
|
|
574
|
+
label?: ReactNode;
|
|
575
|
+
/** Description below the label */
|
|
576
|
+
description?: ReactNode;
|
|
577
|
+
/** Whether the radio is invalid */
|
|
578
|
+
isInvalid?: boolean;
|
|
579
|
+
/** Custom class name */
|
|
580
|
+
className?: string;
|
|
581
|
+
/** Test ID */
|
|
582
|
+
testId?: string;
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
export declare type RadioSize = 'sm' | 'md' | 'lg';
|
|
586
|
+
|
|
587
|
+
export declare const Rating: ForwardRefExoticComponent<RatingProps & RefAttributes<HTMLDivElement>>;
|
|
588
|
+
|
|
589
|
+
export declare interface RatingProps {
|
|
590
|
+
/** Current rating value */
|
|
591
|
+
value?: number;
|
|
592
|
+
/** Default rating value (uncontrolled) */
|
|
593
|
+
defaultValue?: number;
|
|
594
|
+
/** Callback when rating changes */
|
|
595
|
+
onChange?: (value: number) => void;
|
|
596
|
+
/** Maximum rating (number of stars) */
|
|
597
|
+
max?: number;
|
|
598
|
+
/** Component size */
|
|
599
|
+
size?: RatingSize;
|
|
600
|
+
/** Whether to allow half stars */
|
|
601
|
+
allowHalf?: boolean;
|
|
602
|
+
/** Whether the rating is read-only */
|
|
603
|
+
readOnly?: boolean;
|
|
604
|
+
/** Whether the rating is disabled */
|
|
605
|
+
disabled?: boolean;
|
|
606
|
+
/** Whether to allow clearing (clicking same value again) */
|
|
607
|
+
allowClear?: boolean;
|
|
608
|
+
/** Custom filled icon */
|
|
609
|
+
filledIcon?: ReactNode;
|
|
610
|
+
/** Custom empty icon */
|
|
611
|
+
emptyIcon?: ReactNode;
|
|
612
|
+
/** Custom half-filled icon */
|
|
613
|
+
halfIcon?: ReactNode;
|
|
614
|
+
/** Color for filled stars */
|
|
615
|
+
color?: string;
|
|
616
|
+
/** Label for accessibility */
|
|
617
|
+
'aria-label'?: string;
|
|
618
|
+
/** Custom class name */
|
|
619
|
+
className?: string;
|
|
620
|
+
/** Test ID */
|
|
621
|
+
testId?: string;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
export declare type RatingSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
625
|
+
|
|
626
|
+
export declare const SearchInput: ForwardRefExoticComponent<SearchInputProps & RefAttributes<HTMLInputElement>>;
|
|
627
|
+
|
|
628
|
+
export declare interface SearchInputProps extends NativeInputProps {
|
|
629
|
+
/** Current value (controlled) */
|
|
630
|
+
value?: string;
|
|
631
|
+
/** Initial value (uncontrolled) */
|
|
632
|
+
defaultValue?: string;
|
|
633
|
+
/** Callback when the value changes (typing or clearing) */
|
|
634
|
+
onValueChange?: (value: string) => void;
|
|
635
|
+
/** Callback fired when the clear button is pressed */
|
|
636
|
+
onClear?: () => void;
|
|
637
|
+
/** Input size */
|
|
638
|
+
size?: InputSize;
|
|
639
|
+
/** Placeholder text */
|
|
640
|
+
placeholder?: string;
|
|
641
|
+
/** Custom leading element (defaults to a search icon) */
|
|
642
|
+
leftElement?: ReactNode;
|
|
643
|
+
/** Accessible label of the clear button */
|
|
644
|
+
clearLabel?: string;
|
|
645
|
+
/** Custom class name */
|
|
646
|
+
className?: string;
|
|
647
|
+
/** Test ID */
|
|
648
|
+
testId?: string;
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
export declare const Select: ForwardRefExoticComponent<SelectProps & RefAttributes<HTMLSelectElement>>;
|
|
652
|
+
|
|
653
|
+
/**
|
|
654
|
+
* Split incoming files into accepted and rejected, applying `accept`,
|
|
655
|
+
* `maxSize`, `multiple` and `maxFiles`.
|
|
656
|
+
*
|
|
657
|
+
* Rejections are returned rather than dropped so the UI can explain what
|
|
658
|
+
* happened instead of silently ignoring the file.
|
|
659
|
+
*/
|
|
660
|
+
export declare function selectFiles(incoming: File[], { accept, maxSize, multiple, current, maxFiles }: FileSelectionRules): FileSelectionResult;
|
|
661
|
+
|
|
662
|
+
export declare interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'size'> {
|
|
663
|
+
/** Select size */
|
|
664
|
+
size?: SelectSize;
|
|
665
|
+
/** Visual variant */
|
|
666
|
+
variant?: SelectVariant;
|
|
667
|
+
/** Error state */
|
|
668
|
+
isInvalid?: boolean;
|
|
669
|
+
/** Placeholder option */
|
|
670
|
+
placeholder?: string;
|
|
671
|
+
/** Custom class name */
|
|
672
|
+
className?: string;
|
|
673
|
+
/** Test ID */
|
|
674
|
+
testId?: string;
|
|
675
|
+
/** Children (option elements) */
|
|
676
|
+
children?: ReactNode;
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
export declare type SelectSize = 'sm' | 'md' | 'lg';
|
|
680
|
+
|
|
681
|
+
export declare type SelectVariant = 'outline' | 'filled';
|
|
682
|
+
|
|
683
|
+
export declare const Slider: ForwardRefExoticComponent<SliderProps & RefAttributes<HTMLInputElement>>;
|
|
684
|
+
|
|
685
|
+
export declare interface SliderProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type' | 'onChange'> {
|
|
686
|
+
/** Slider size */
|
|
687
|
+
size?: SliderSize;
|
|
688
|
+
/** Minimum value */
|
|
689
|
+
min?: number;
|
|
690
|
+
/** Maximum value */
|
|
691
|
+
max?: number;
|
|
692
|
+
/** Step increment */
|
|
693
|
+
step?: number;
|
|
694
|
+
/** Current value (controlled) */
|
|
695
|
+
value?: number;
|
|
696
|
+
/** Default value (uncontrolled) */
|
|
697
|
+
defaultValue?: number;
|
|
698
|
+
/** Callback when value changes */
|
|
699
|
+
onChange?: (value: number) => void;
|
|
700
|
+
/** Whether to show the value label */
|
|
701
|
+
showValue?: boolean;
|
|
702
|
+
/** Format the value for display */
|
|
703
|
+
formatValue?: (value: number) => string;
|
|
704
|
+
/** Label for the slider */
|
|
705
|
+
label?: string;
|
|
706
|
+
/** Whether the slider is disabled */
|
|
707
|
+
disabled?: boolean;
|
|
708
|
+
/** Custom class name */
|
|
709
|
+
className?: string;
|
|
710
|
+
/** Test ID */
|
|
711
|
+
testId?: string;
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
export declare type SliderSize = 'sm' | 'md' | 'lg';
|
|
715
|
+
|
|
716
|
+
export declare const Switch: ForwardRefExoticComponent<SwitchProps & RefAttributes<HTMLInputElement>>;
|
|
717
|
+
|
|
718
|
+
export declare interface SwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {
|
|
719
|
+
/** Switch size */
|
|
720
|
+
size?: SwitchSize;
|
|
721
|
+
/** Label text */
|
|
722
|
+
label?: ReactNode;
|
|
723
|
+
/** Description below label */
|
|
724
|
+
description?: ReactNode;
|
|
725
|
+
/** Custom class name */
|
|
726
|
+
className?: string;
|
|
727
|
+
/** Test ID */
|
|
728
|
+
testId?: string;
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
export declare type SwitchSize = 'sm' | 'md' | 'lg';
|
|
732
|
+
|
|
733
|
+
export declare const TagInput: ForwardRefExoticComponent<TagInputProps & RefAttributes<HTMLInputElement>>;
|
|
734
|
+
|
|
735
|
+
export declare interface TagInputProps {
|
|
736
|
+
/** Current tags */
|
|
737
|
+
value?: TagItem[];
|
|
738
|
+
/** Default tags (uncontrolled) */
|
|
739
|
+
defaultValue?: TagItem[];
|
|
740
|
+
/** Callback when tags change */
|
|
741
|
+
onChange?: (tags: TagItem[]) => void;
|
|
742
|
+
/** Placeholder text */
|
|
743
|
+
placeholder?: string;
|
|
744
|
+
/** Component size */
|
|
745
|
+
size?: TagInputSize;
|
|
746
|
+
/** Maximum number of tags */
|
|
747
|
+
maxTags?: number;
|
|
748
|
+
/** Whether to allow duplicates */
|
|
749
|
+
allowDuplicates?: boolean;
|
|
750
|
+
/** Delimiter keys to create tag (default: Enter, comma) */
|
|
751
|
+
delimiters?: string[];
|
|
752
|
+
/** Whether the input is disabled */
|
|
753
|
+
disabled?: boolean;
|
|
754
|
+
/** Whether the input is invalid */
|
|
755
|
+
isInvalid?: boolean;
|
|
756
|
+
/** Whether the input is read-only */
|
|
757
|
+
readOnly?: boolean;
|
|
758
|
+
/** Validation function for new tags */
|
|
759
|
+
validateTag?: (value: string) => boolean | string;
|
|
760
|
+
/** Transform function for new tag value */
|
|
761
|
+
transformTag?: (value: string) => string;
|
|
762
|
+
/** Suggested tags for autocomplete */
|
|
763
|
+
suggestions?: TagItem[];
|
|
764
|
+
/** Custom tag renderer */
|
|
765
|
+
renderTag?: (tag: TagItem, onRemove: () => void) => ReactNode;
|
|
766
|
+
/** Message shown when the tag limit is reached */
|
|
767
|
+
maxTagsMessage?: (maxTags: number) => string;
|
|
768
|
+
/** Message shown when a duplicate tag is rejected */
|
|
769
|
+
duplicateMessage?: string;
|
|
770
|
+
/** Label for accessibility */
|
|
771
|
+
'aria-label'?: string;
|
|
772
|
+
/** Custom class name */
|
|
773
|
+
className?: string;
|
|
774
|
+
/** Test ID */
|
|
775
|
+
testId?: string;
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
export declare type TagInputSize = 'sm' | 'md' | 'lg';
|
|
779
|
+
|
|
780
|
+
export declare interface TagItem {
|
|
781
|
+
/** Unique identifier */
|
|
782
|
+
id: string;
|
|
783
|
+
/** Display label */
|
|
784
|
+
label: string;
|
|
785
|
+
/** Optional color */
|
|
786
|
+
color?: string;
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
export declare const Textarea: ForwardRefExoticComponent<TextareaProps & RefAttributes<HTMLTextAreaElement>>;
|
|
790
|
+
|
|
791
|
+
export declare interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {
|
|
792
|
+
/** Textarea size */
|
|
793
|
+
size?: TextareaSize;
|
|
794
|
+
/** Visual variant */
|
|
795
|
+
variant?: TextareaVariant;
|
|
796
|
+
/** Error state */
|
|
797
|
+
isInvalid?: boolean;
|
|
798
|
+
/** Auto resize based on content */
|
|
799
|
+
autoResize?: boolean;
|
|
800
|
+
/** Minimum rows */
|
|
801
|
+
minRows?: number;
|
|
802
|
+
/** Maximum rows */
|
|
803
|
+
maxRows?: number;
|
|
804
|
+
/** Show character count */
|
|
805
|
+
showCount?: boolean;
|
|
806
|
+
/** Max character length */
|
|
807
|
+
maxLength?: number;
|
|
808
|
+
/** Custom class name */
|
|
809
|
+
className?: string;
|
|
810
|
+
/** Test ID */
|
|
811
|
+
testId?: string;
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
export declare type TextareaSize = 'sm' | 'md' | 'lg';
|
|
815
|
+
|
|
816
|
+
export declare type TextareaVariant = 'outline' | 'filled';
|
|
817
|
+
|
|
818
|
+
export declare const TextField: ForwardRefExoticComponent<TextFieldProps & RefAttributes<HTMLInputElement>>;
|
|
819
|
+
|
|
820
|
+
export declare interface TextFieldProps extends InputProps {
|
|
821
|
+
/** Field label */
|
|
822
|
+
label?: ReactNode;
|
|
823
|
+
/** Helper text below the input */
|
|
824
|
+
helperText?: ReactNode;
|
|
825
|
+
/** Error message (also sets isInvalid) */
|
|
826
|
+
errorMessage?: ReactNode;
|
|
827
|
+
/** Whether the field is required */
|
|
828
|
+
isRequired?: boolean;
|
|
829
|
+
/** Whether to hide the label visually (still accessible) */
|
|
830
|
+
hideLabel?: boolean;
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
export declare type TimeFormat = '12h' | '24h';
|
|
834
|
+
|
|
835
|
+
export declare const TimePicker: ForwardRefExoticComponent<TimePickerProps & RefAttributes<HTMLInputElement>>;
|
|
836
|
+
|
|
837
|
+
export declare interface TimePickerProps {
|
|
838
|
+
/** Current time value */
|
|
839
|
+
value?: TimeValue | null;
|
|
840
|
+
/** Default time value (uncontrolled) */
|
|
841
|
+
defaultValue?: TimeValue | null;
|
|
842
|
+
/** Callback when time changes */
|
|
843
|
+
onChange?: (value: TimeValue | null) => void;
|
|
844
|
+
/** Time format */
|
|
845
|
+
format?: TimeFormat;
|
|
846
|
+
/** Component size */
|
|
847
|
+
size?: TimePickerSize;
|
|
848
|
+
/** Minute step interval */
|
|
849
|
+
minuteStep?: number;
|
|
850
|
+
/** Minimum selectable time */
|
|
851
|
+
minTime?: TimeValue;
|
|
852
|
+
/** Maximum selectable time */
|
|
853
|
+
maxTime?: TimeValue;
|
|
854
|
+
/** Placeholder text */
|
|
855
|
+
placeholder?: string;
|
|
856
|
+
/** Whether the input is disabled */
|
|
857
|
+
disabled?: boolean;
|
|
858
|
+
/** Whether the input is invalid */
|
|
859
|
+
isInvalid?: boolean;
|
|
860
|
+
/** Whether to allow clearing */
|
|
861
|
+
clearable?: boolean;
|
|
862
|
+
/** Label for accessibility */
|
|
863
|
+
'aria-label'?: string;
|
|
864
|
+
/** Custom class name */
|
|
865
|
+
className?: string;
|
|
866
|
+
/** Test ID */
|
|
867
|
+
testId?: string;
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
/**
|
|
871
|
+
* TimePicker Component
|
|
872
|
+
*
|
|
873
|
+
* A time selection component with hour, minute, and optional period (AM/PM).
|
|
874
|
+
* Supports keyboard navigation and manual input.
|
|
875
|
+
*
|
|
876
|
+
* @module components/form/TimePicker
|
|
877
|
+
*/
|
|
878
|
+
export declare type TimePickerSize = 'sm' | 'md' | 'lg';
|
|
879
|
+
|
|
880
|
+
export declare interface TimeValue {
|
|
881
|
+
/** Hours (0-23 for 24h, 1-12 for 12h) */
|
|
882
|
+
hours: number;
|
|
883
|
+
/** Minutes (0-59) */
|
|
884
|
+
minutes: number;
|
|
885
|
+
/** Period for 12h format */
|
|
886
|
+
period?: 'AM' | 'PM';
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
export { }
|