@amineslab/ui 0.1.0-next.20260925131012 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/form-fields-B1bIqSFO.d.cts +517 -0
  2. package/dist/form-fields-B1bIqSFO.d.ts +517 -0
  3. package/dist/label-1M8BaNQZ.d.cts +573 -0
  4. package/dist/label-1M8BaNQZ.d.ts +573 -0
  5. package/dist/label-B5sC6OFk.d.cts +565 -0
  6. package/dist/label-B5sC6OFk.d.ts +565 -0
  7. package/dist/label-BALpBplm.d.cts +565 -0
  8. package/dist/label-BALpBplm.d.ts +565 -0
  9. package/dist/label-BEgWK5BT.d.cts +588 -0
  10. package/dist/label-BEgWK5BT.d.ts +588 -0
  11. package/dist/label-BOY-jYQ0.d.cts +581 -0
  12. package/dist/label-BOY-jYQ0.d.ts +581 -0
  13. package/dist/label-BPY4z_UR.d.cts +588 -0
  14. package/dist/label-BPY4z_UR.d.ts +588 -0
  15. package/dist/label-BTlFxyV0.d.cts +586 -0
  16. package/dist/label-BTlFxyV0.d.ts +586 -0
  17. package/dist/label-BoJzJasZ.d.cts +582 -0
  18. package/dist/label-BoJzJasZ.d.ts +582 -0
  19. package/dist/label-BzBMyN3M.d.cts +577 -0
  20. package/dist/label-BzBMyN3M.d.ts +577 -0
  21. package/dist/label-C25JWmwg.d.cts +575 -0
  22. package/dist/label-C25JWmwg.d.ts +575 -0
  23. package/dist/label-C39geBGu.d.cts +569 -0
  24. package/dist/label-C39geBGu.d.ts +569 -0
  25. package/dist/label-CFa7H0MJ.d.cts +581 -0
  26. package/dist/label-CFa7H0MJ.d.ts +581 -0
  27. package/dist/label-CHN6RDds.d.cts +570 -0
  28. package/dist/label-CHN6RDds.d.ts +570 -0
  29. package/dist/label-CR4YDuK3.d.cts +576 -0
  30. package/dist/label-CR4YDuK3.d.ts +576 -0
  31. package/dist/label-CVCQcIB5.d.cts +581 -0
  32. package/dist/label-CVCQcIB5.d.ts +581 -0
  33. package/dist/label-Ccb4jRcY.d.cts +588 -0
  34. package/dist/label-Ccb4jRcY.d.ts +588 -0
  35. package/dist/label-CkBy2dW7.d.cts +591 -0
  36. package/dist/label-CkBy2dW7.d.ts +591 -0
  37. package/dist/label-CpDbegkn.d.cts +555 -0
  38. package/dist/label-CpDbegkn.d.ts +555 -0
  39. package/dist/label-D1UMApWv.d.cts +598 -0
  40. package/dist/label-D1UMApWv.d.ts +598 -0
  41. package/dist/label-DGHM7QEj.d.cts +591 -0
  42. package/dist/label-DGHM7QEj.d.ts +591 -0
  43. package/dist/label-DaXK-RuI.d.cts +576 -0
  44. package/dist/label-DaXK-RuI.d.ts +576 -0
  45. package/dist/label-DbfulioI.d.cts +581 -0
  46. package/dist/label-DbfulioI.d.ts +581 -0
  47. package/dist/label-DeyDJRuK.d.cts +600 -0
  48. package/dist/label-DeyDJRuK.d.ts +600 -0
  49. package/dist/label-Dx8QsMPn.d.cts +598 -0
  50. package/dist/label-Dx8QsMPn.d.ts +598 -0
  51. package/dist/label-Dz0DrmrO.d.cts +588 -0
  52. package/dist/label-Dz0DrmrO.d.ts +588 -0
  53. package/dist/label-DziZP2VL.d.cts +590 -0
  54. package/dist/label-DziZP2VL.d.ts +590 -0
  55. package/dist/label-FFoDgC1Z.d.cts +583 -0
  56. package/dist/label-FFoDgC1Z.d.ts +583 -0
  57. package/dist/label-NUIyafzR.d.cts +588 -0
  58. package/dist/label-NUIyafzR.d.ts +588 -0
  59. package/dist/label-NwHLobGQ.d.cts +590 -0
  60. package/dist/label-NwHLobGQ.d.ts +590 -0
  61. package/dist/label-SoZfJG7i.d.cts +571 -0
  62. package/dist/label-SoZfJG7i.d.ts +571 -0
  63. package/dist/label-YrBpLATh.d.cts +570 -0
  64. package/dist/label-YrBpLATh.d.ts +570 -0
  65. package/dist/label-Z97Pco2v.d.cts +567 -0
  66. package/dist/label-Z97Pco2v.d.ts +567 -0
  67. package/dist/label-a0g6Y_Q8.d.cts +543 -0
  68. package/dist/label-a0g6Y_Q8.d.ts +543 -0
  69. package/dist/label-gpy0nv42.d.cts +598 -0
  70. package/dist/label-gpy0nv42.d.ts +598 -0
  71. package/dist/label-ixshRIuw.d.cts +569 -0
  72. package/dist/label-ixshRIuw.d.ts +569 -0
  73. package/dist/label-voR-52GX.d.cts +588 -0
  74. package/dist/label-voR-52GX.d.ts +588 -0
  75. package/dist/use-submit-guard-AFkewFH5.d.cts +600 -0
  76. package/dist/use-submit-guard-AFkewFH5.d.ts +600 -0
  77. package/dist/use-submit-guard-BhJ0rrq_.d.cts +562 -0
  78. package/dist/use-submit-guard-BhJ0rrq_.d.ts +562 -0
  79. package/dist/use-submit-guard-D-knm_JT.d.cts +600 -0
  80. package/dist/use-submit-guard-D-knm_JT.d.ts +600 -0
  81. package/dist/use-submit-guard-D1dbZ2fP.d.cts +600 -0
  82. package/dist/use-submit-guard-D1dbZ2fP.d.ts +600 -0
  83. package/dist/use-submit-guard-DAoHfwqu.d.cts +600 -0
  84. package/dist/use-submit-guard-DAoHfwqu.d.ts +600 -0
  85. package/dist/use-submit-guard-DyOToVDM.d.cts +600 -0
  86. package/dist/use-submit-guard-DyOToVDM.d.ts +600 -0
  87. package/dist/use-submit-guard-P8ekrSuw.d.cts +600 -0
  88. package/dist/use-submit-guard-P8ekrSuw.d.ts +600 -0
  89. package/package.json +1 -1
@@ -0,0 +1,600 @@
1
+ import * as class_variance_authority_types from 'class-variance-authority/types';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ import * as React from 'react';
4
+ import { ReactNode, ComponentType, ExoticComponent } from 'react';
5
+ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
6
+ import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
7
+ import * as SelectPrimitive from '@radix-ui/react-select';
8
+
9
+ type FieldControlVariant = 'filled' | 'outline';
10
+ /** Shared surface contract for text fields and selection triggers. */
11
+ interface FieldControlProps {
12
+ variant?: FieldControlVariant;
13
+ /** Add an opaque theme surface beneath the elevation layer. */
14
+ opaque?: boolean;
15
+ /** Preserve error styling while focused or open. */
16
+ invalid?: boolean;
17
+ }
18
+ declare const fieldControlVariants: (props?: ({
19
+ opaque?: boolean | null | undefined;
20
+ variant?: "outline" | "filled" | null | undefined;
21
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
22
+ type FieldControlVariants = VariantProps<typeof fieldControlVariants>;
23
+
24
+ /** FileInput·FileUpload·FilePicker가 공유하는 파일 모델과 검증 함수. */
25
+ type FileItem = {
26
+ kind: 'local';
27
+ file: File;
28
+ id: string;
29
+ } | {
30
+ kind: 'remote';
31
+ name: string;
32
+ url: string;
33
+ size?: number;
34
+ mimeType?: string;
35
+ id?: string;
36
+ };
37
+ type FileErrorReason = 'too-large' | 'invalid-type' | 'too-many';
38
+ interface FileError {
39
+ fileName: string;
40
+ reason: FileErrorReason;
41
+ message: string;
42
+ }
43
+ declare function getFileName(item: FileItem): string;
44
+ declare function getFileSize(item: FileItem): number | undefined;
45
+ declare function getItemKey(item: FileItem): string;
46
+ declare function formatBytes(bytes: number): string;
47
+ /** MIME type, MIME glob, 확장자를 모두 지원하는 accept 매칭. */
48
+ declare function matchesAccept(file: File, accept?: string): boolean;
49
+ declare function newLocalId(): string;
50
+ declare function isImageFile(item: FileItem): boolean;
51
+ declare function isPdfFile(item: FileItem): boolean;
52
+ interface FileConstraints {
53
+ /** MIME type 또는 확장자 목록. 예: .jpg,.png,.pdf */
54
+ accept?: string;
55
+ /** 파일당 최대 용량(MB). 생략하면 제한하지 않습니다. */
56
+ maxSize?: number;
57
+ /** 최대 파일 개수. 생략하면 multiple 설정만 적용합니다. */
58
+ maxFiles?: number;
59
+ }
60
+
61
+ declare const fileInputVariants: (props?: ({
62
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
63
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
64
+ interface FileInputProps extends FileConstraints, Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue' | 'onError'>, VariantProps<typeof fileInputVariants> {
65
+ opaque?: FieldControlProps['opaque'];
66
+ variant?: FieldControlProps['variant'];
67
+ value?: FileItem[];
68
+ defaultValue?: FileItem[];
69
+ onValueChange?: (files: FileItem[]) => void;
70
+ multiple?: boolean;
71
+ disabled?: boolean;
72
+ uploading?: boolean;
73
+ onError?: (errors: FileError[]) => void;
74
+ /** 파일이 없을 때 안내. 빈 문자열을 포함해 사용처 문구를 그대로 표시합니다. */
75
+ placeholder?: React.ReactNode;
76
+ /** 명시한 경우에만 오른쪽 보조 문구를 표시합니다. */
77
+ triggerLabel?: React.ReactNode;
78
+ invalid?: boolean;
79
+ id?: string;
80
+ }
81
+ /** 한 줄 폼 리듬에 맞춘 파일 선택기. DnD가 필요하면 FileUpload를 사용한다. */
82
+ declare const FileInput: React.ForwardRefExoticComponent<FileInputProps & React.RefAttributes<HTMLDivElement>>;
83
+
84
+ /** FileUpload와 PhotoField가 공유하는 drop surface 표현입니다. */
85
+ type FileDropzoneVariant = FieldControlVariant;
86
+ /** 레이아웃은 소유하지 않고 표면·focus·drag·invalid 상태만 제공하는 공통 variant입니다. */
87
+ declare const fileDropzoneVariants: (props?: ({
88
+ variant?: "outline" | "filled" | null | undefined;
89
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
90
+ type FileDropzoneVariants = VariantProps<typeof fileDropzoneVariants>;
91
+
92
+ declare const fileDropAreaVariants: (props?: ({
93
+ variant?: "outline" | "filled" | null | undefined;
94
+ size?: "sm" | "md" | "lg" | null | undefined;
95
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
96
+ interface FileUploadProps extends FileConstraints, Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue' | 'onError'>, Omit<VariantProps<typeof fileDropAreaVariants>, 'variant'> {
97
+ variant?: FileDropzoneVariant;
98
+ opaque?: FieldControlProps['opaque'];
99
+ value?: FileItem[];
100
+ defaultValue?: FileItem[];
101
+ onValueChange?: (files: FileItem[]) => void;
102
+ multiple?: boolean;
103
+ /** 업로드 영역에 표시할 형식 안내. 실제 검증은 accept를 사용합니다. */
104
+ acceptLabel?: string;
105
+ disabled?: boolean;
106
+ uploading?: boolean;
107
+ onError?: (errors: FileError[]) => void;
108
+ placeholder?: React.ReactNode;
109
+ helpText?: React.ReactNode;
110
+ invalid?: boolean;
111
+ itemsClassName?: string;
112
+ itemsPlacement?: 'outside' | 'inside';
113
+ id?: string;
114
+ }
115
+ /** 클릭·키보드·드래그앤드롭과 로컬/원격 미리보기를 하나의 파일 수명주기로 묶는다. */
116
+ declare const FileUpload: React.ForwardRefExoticComponent<FileUploadProps & React.RefAttributes<HTMLDivElement>>;
117
+
118
+ declare const checkboxVariants: (props?: ({
119
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
120
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
121
+ interface CheckboxProps extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>, VariantProps<typeof checkboxVariants> {
122
+ label?: React.ReactNode;
123
+ indeterminate?: boolean;
124
+ }
125
+ declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLButtonElement>>;
126
+
127
+ /** An icon component reference, or a rendered node such as an SVG or emoji. */
128
+ type ButtonIcon = ReactNode | ComponentType<{
129
+ className?: string;
130
+ size?: number;
131
+ }> | ExoticComponent<{
132
+ className?: string;
133
+ size?: number;
134
+ }>;
135
+
136
+ /** Shared five-step control scale. Density changes spacing, not named sizes. */
137
+ type ControlSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
138
+
139
+ /**
140
+ * 단일 날짜 선택기 · `Popover` + 트리거 `Button`(outline) + `Calendar` 조합.
141
+ * value/onChange 는 `YYYY-MM-DD` 문자열(`showTime` 시 `YYYY-MM-DDTHH:mm`)을 주고받는다.
142
+ * controlled 컴포넌트이므로 호출부에서 상태를 관리한다 · react-hook-form 연동은
143
+ * `<FormField render={({ field }) => <DatePicker value={field.value} onChange={field.onChange} />} />`.
144
+ */
145
+ interface DatePickerProps {
146
+ size?: ControlSize;
147
+ /** YYYY-MM-DD 문자열 (showTime 시 YYYY-MM-DDTHH:mm) */
148
+ value?: string;
149
+ onValueChange?: (value: string) => void;
150
+ placeholder?: string;
151
+ disabled?: boolean;
152
+ /** 선택 가능한 최소 날짜 (YYYY-MM-DD) */
153
+ minDate?: string;
154
+ /** 선택 가능한 최대 날짜 (YYYY-MM-DD) */
155
+ maxDate?: string;
156
+ /** 시간(HH:mm)까지 선택한다. value 형식이 YYYY-MM-DDTHH:mm 으로 바뀐다. */
157
+ showTime?: boolean;
158
+ hourCycle?: 12 | 24;
159
+ /** 팝오버/드로어가 닫힐 때(편집 완료) 호출. 소비측이 시작↔종료 정합성 보정 등에 쓴다. */
160
+ onClose?: () => void;
161
+ /** true면 danger 상태 outline과 `aria-invalid`를 적용한다. */
162
+ invalid?: boolean;
163
+ /** 기본은 부모 면 위 alpha surface, 명시적 경계가 필요하면 outline을 선택한다. */
164
+ opaque?: FieldControlProps['opaque'];
165
+ variant?: FieldControlProps['variant'];
166
+ /** FormControl이 주입하는 설명/오류 메시지 연결 ID. 실제 트리거에 전달한다. */
167
+ 'aria-errormessage'?: string;
168
+ 'aria-label'?: string;
169
+ 'aria-labelledby'?: string;
170
+ 'aria-describedby'?: string;
171
+ /** 필수 입력 상태를 실제 트리거에 전달한다. */
172
+ 'aria-required'?: React.AriaAttributes['aria-required'];
173
+ /** FormControl이 주입하는 invalid 상태. `invalid`와 병합해 실제 트리거에 전달한다. */
174
+ 'aria-invalid'?: React.AriaAttributes['aria-invalid'];
175
+ /** 트리거가 포커스를 잃을 때 호출합니다. RHF touched 처리에 사용합니다. */
176
+ onBlur?: React.FocusEventHandler<HTMLButtonElement>;
177
+ className?: string;
178
+ id?: string;
179
+ }
180
+ declare const DatePicker: React.ForwardRefExoticComponent<DatePickerProps & React.RefAttributes<HTMLButtonElement>>;
181
+
182
+ /**
183
+ * 시작일/종료일을 선택하는 날짜 범위 입력기 · `Calendar`(range mode).
184
+ * 기본은 `DatePicker` 와 같은 1개월 뷰이고, `numberOfMonths={2}` 로 2개월을 좌우로 펼친다.
185
+ * value/onChange 는 `{ from, to }` (각각 `YYYY-MM-DD` 문자열, 미선택 시 빈 문자열)을 주고받는다.
186
+ * `showTime` 시 `from`/`to` 형식이 `YYYY-MM-DDTHH:mm` 으로 바뀐다.
187
+ *
188
+ * **반응형 캡슐화** · 데스크톱은 `Popover`, 모바일은 vaul `Drawer`(content-height, multi-detent)
189
+ * 로 풀폭 캘린더를 띄운다. 사용처는 분기 없이 한 번만 쓴다.
190
+ *
191
+ * **C2 전면 전환(plan 079)**: 이미 시트 안(`useInSheetPanel`)에서 열릴 때 종전엔 인라인
192
+ * `Collapsible` 아코디언으로 펼쳤으나, 본 플랜에서 **중첩 content-height 시트**(vaul NestedRoot)로
193
+ * 띄운다. nested 전환은 `Drawer` 프리미티브 내부에서 `useInSheetPanel()` 자동 감지로 처리되므로,
194
+ * 모바일이면 시트 안/밖 무관하게 동일하게 `Drawer` 를 렌더한다(`Combobox`·`Select` 와 동일 패턴).
195
+ *
196
+ * `to >= from` 같은 기간 정합성은 컴포넌트가 강제하지 않는다 · 소비측 zod refine 책임.
197
+ */
198
+ interface DateRange {
199
+ /** YYYY-MM-DD 문자열 (showTime 시 YYYY-MM-DDTHH:mm), 미선택 시 빈 문자열 */
200
+ from: string;
201
+ /** YYYY-MM-DD 문자열 (showTime 시 YYYY-MM-DDTHH:mm), 미선택 시 빈 문자열 */
202
+ to: string;
203
+ }
204
+ interface DateRangePickerProps {
205
+ size?: ControlSize;
206
+ value: DateRange;
207
+ onValueChange: (range: DateRange) => void;
208
+ placeholder?: string;
209
+ disabled?: boolean;
210
+ /** 시작·종료 시간(HH:mm)까지 선택한다. value.from/to 형식이 YYYY-MM-DDTHH:mm 으로 바뀐다. */
211
+ showTime?: boolean;
212
+ hourCycle?: 12 | 24;
213
+ /** 캘린더에 펼칠 개월 수. 기본 1(DatePicker 와 동일한 단일 뷰), 2 로 두 달을 좌우로 펼친다. */
214
+ numberOfMonths?: 1 | 2;
215
+ /**
216
+ * 트리거+팝오버 대신 **캘린더를 그 자리에 인라인**으로 렌더한다(중첩 오버레이 회피).
217
+ * 모바일 필터 시트처럼 이미 떠 있는 표면 안에서 날짜를 고를 때 사용 · 시트 위에 또
218
+ * 작은 팝오버를 띄우지 않는다(연구 권고). `className` 은 인라인 래퍼에 적용된다.
219
+ */
220
+ inline?: boolean;
221
+ /** true면 danger 상태 outline과 `aria-invalid`를 적용한다. */
222
+ invalid?: boolean;
223
+ /** 기본은 부모 면 위 alpha surface, 명시적 경계가 필요하면 outline을 선택한다. */
224
+ opaque?: FieldControlProps['opaque'];
225
+ variant?: FieldControlProps['variant'];
226
+ /** FormControl이 주입하는 설명/오류 메시지 연결 ID. 실제 트리거에 전달한다. */
227
+ 'aria-errormessage'?: string;
228
+ 'aria-describedby'?: string;
229
+ /** 필수 입력 상태를 실제 트리거에 전달한다. */
230
+ 'aria-required'?: React.AriaAttributes['aria-required'];
231
+ /** FormControl이 주입하는 invalid 상태. `invalid`와 병합해 실제 트리거에 전달한다. */
232
+ 'aria-invalid'?: React.AriaAttributes['aria-invalid'];
233
+ /** 트리거 또는 inline 캘린더 group의 접근 가능한 이름. */
234
+ 'aria-label'?: string;
235
+ /** 트리거 또는 inline 캘린더 group을 외부 제목에 연결한다. */
236
+ 'aria-labelledby'?: string;
237
+ /** 트리거가 포커스를 잃을 때 호출합니다. RHF touched 처리에 사용합니다. */
238
+ onBlur?: React.FocusEventHandler<HTMLButtonElement>;
239
+ className?: string;
240
+ id?: string;
241
+ }
242
+ declare const DateRangePicker: React.ForwardRefExoticComponent<DateRangePickerProps & React.RefAttributes<HTMLButtonElement>>;
243
+
244
+ interface TimeInputProps {
245
+ /** `'HH:mm'` 24시간 문자열 */
246
+ value?: string;
247
+ onValueChange?: (value: string) => void;
248
+ placeholder?: string;
249
+ /** 트리거 없이 시·분 선택을 직접 표시합니다. PC는 직접 입력, 모바일은 휠을 표시합니다. */
250
+ inline?: boolean;
251
+ /** 표시 형식. value/onChange는 항상 24시간 HH:mm입니다. */
252
+ hourCycle?: 12 | 24;
253
+ inlineLabel?: string;
254
+ inlineLabelPosition?: 'top' | 'start';
255
+ disabled?: boolean;
256
+ /** 선택 가능한 최소 시간 (`'HH:mm'`). */
257
+ minTime?: string;
258
+ /** 선택 가능한 최대 시간 (`'HH:mm'`). */
259
+ maxTime?: string;
260
+ /** 분 단위 step (1·5·10·15·30 등). 기본 1. */
261
+ step?: number;
262
+ /** 입력 또는 모바일 트리거 크기. */
263
+ size?: ControlSize;
264
+ /** invalid 시 destructive 보더. */
265
+ invalid?: boolean;
266
+ /** FormControl이 주입하는 설명/오류 메시지 연결 ID. 실제 트리거에 전달한다. */
267
+ 'aria-errormessage'?: string;
268
+ 'aria-describedby'?: string;
269
+ /** 필수 입력 상태를 실제 트리거에 전달한다. */
270
+ 'aria-required'?: React.AriaAttributes['aria-required'];
271
+ /** FormControl이 주입하는 invalid 상태. `invalid`와 병합해 실제 트리거에 전달한다. */
272
+ 'aria-invalid'?: React.AriaAttributes['aria-invalid'];
273
+ /** 트리거가 포커스를 잃을 때 호출합니다. RHF touched 처리에 사용합니다. */
274
+ onBlur?: React.FocusEventHandler<HTMLInputElement | HTMLButtonElement | HTMLFieldSetElement>;
275
+ /** 기본은 부모 면 위 alpha surface, 명시적 경계가 필요하면 outline을 선택한다. */
276
+ opaque?: FieldControlProps['opaque'];
277
+ variant?: FieldControlProps['variant'];
278
+ className?: string;
279
+ id?: string;
280
+ 'aria-label'?: string;
281
+ 'aria-labelledby'?: string;
282
+ }
283
+ type TimeInputElement = HTMLInputElement | HTMLButtonElement | HTMLFieldSetElement;
284
+ /** One time field: direct masked input on desktop, wheel on mobile. */
285
+ declare const TimeInput: React.ForwardRefExoticComponent<TimeInputProps & React.RefAttributes<TimeInputElement>>;
286
+
287
+ interface ComboboxOption {
288
+ value: string;
289
+ label: string;
290
+ keywords?: readonly string[];
291
+ disabled?: boolean;
292
+ icon?: React.ReactNode;
293
+ }
294
+ interface ComboboxProps {
295
+ size?: ControlSize;
296
+ options: readonly ComboboxOption[];
297
+ value?: string;
298
+ defaultValue?: string;
299
+ onValueChange?: (value: string) => void;
300
+ placeholder?: string;
301
+ searchPlaceholder?: string;
302
+ /** Accessible name for the search input inside the list surface. */
303
+ searchLabel?: string;
304
+ emptyLabel?: string;
305
+ disabled?: boolean;
306
+ invalid?: boolean;
307
+ triggerClassName?: string;
308
+ contentClassName?: string;
309
+ align?: 'start' | 'center' | 'end';
310
+ 'aria-label'?: string;
311
+ 'aria-errormessage'?: string;
312
+ 'aria-labelledby'?: string;
313
+ 'aria-describedby'?: string;
314
+ 'aria-required'?: React.AriaAttributes['aria-required'];
315
+ 'aria-invalid'?: React.AriaAttributes['aria-invalid'];
316
+ /** 트리거가 포커스를 잃을 때 호출합니다. RHF touched 처리에 사용합니다. */
317
+ onBlur?: React.FocusEventHandler<HTMLButtonElement>;
318
+ opaque?: FieldControlProps['opaque'];
319
+ variant?: FieldControlProps['variant'];
320
+ id?: string;
321
+ }
322
+ /** Searchable single selection that renders as a popover on pointer-fine screens and a Drawer on mobile. */
323
+ declare const Combobox: React.ForwardRefExoticComponent<ComboboxProps & React.RefAttributes<HTMLButtonElement>>;
324
+
325
+ interface FormStackProps extends React.HTMLAttributes<HTMLDivElement> {
326
+ /** 필드 사이 간격. 기본 테마에서 sm 8px, md 16px, lg 24px입니다. */
327
+ gap?: 'sm' | 'md' | 'lg';
328
+ /** PC 열 수. 모바일에서는 항상 한 열입니다. */
329
+ columns?: 1 | 2;
330
+ }
331
+ declare const FormStack: React.ForwardRefExoticComponent<FormStackProps & React.RefAttributes<HTMLDivElement>>;
332
+ /** @deprecated 새 조합에는 FormFieldProps를 사용하세요. */
333
+ interface FormLayoutFieldProps {
334
+ label?: React.ReactNode;
335
+ htmlFor?: string;
336
+ /** 복합 컨트롤의 accessible name을 연결할 label id입니다. */
337
+ labelId?: string;
338
+ required?: boolean;
339
+ description?: React.ReactNode;
340
+ error?: React.ReactNode;
341
+ descriptionId?: string;
342
+ errorId?: string;
343
+ labelClassName?: string;
344
+ className?: string;
345
+ children: React.ReactNode;
346
+ }
347
+ /** @deprecated 새 조합에는 FormField를 사용하세요. 기존 수동 ID 연결 계약을 유지하는 호환 wrapper입니다. */
348
+ declare function FormLayoutField({ children, className, description, descriptionId, error, errorId, htmlFor, label, labelId, labelClassName, required, }: FormLayoutFieldProps): React.JSX.Element;
349
+ declare namespace FormLayoutField {
350
+ var displayName: string;
351
+ }
352
+ /** @deprecated FormField를 사용하세요. */
353
+ declare const FieldLayout: typeof FormLayoutField;
354
+
355
+ declare const inputVariants: (props?: ({
356
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
357
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
358
+ interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>, VariantProps<typeof inputVariants> {
359
+ variant?: FieldControlProps['variant'];
360
+ /** Place an opaque theme surface below the elevation layer. Defaults to false. */
361
+ opaque?: FieldControlProps['opaque'];
362
+ invalid?: boolean;
363
+ startAdornment?: ButtonIcon;
364
+ endAdornment?: ButtonIcon;
365
+ wrapperClassName?: string;
366
+ }
367
+ interface InputFrameProps extends React.HTMLAttributes<HTMLDivElement> {
368
+ startAdornment?: React.ReactNode;
369
+ endAdornment?: React.ReactNode;
370
+ disabled?: boolean;
371
+ /** Control size that sets the slot gap and icon size. Defaults to md. */
372
+ size?: ControlSize;
373
+ }
374
+ declare const InputFrame: React.ForwardRefExoticComponent<InputFrameProps & React.RefAttributes<HTMLDivElement>>;
375
+ declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
376
+
377
+ type InputSize = NonNullable<InputProps['size']>;
378
+
379
+ interface NumberInputProps extends Omit<InputProps, 'type' | 'value' | 'onChange' | 'inputMode'> {
380
+ /** 천 단위 구분 기호를 표시한다. 기본값은 true다. */
381
+ showThousandsSeparator?: boolean;
382
+ /** 표시 문자열 정렬. */
383
+ textAlign?: 'start' | 'end';
384
+ /** 소비자가 받는 실제 숫자 값. 빈 값은 null이다. */
385
+ value?: number | null;
386
+ onValueChange?: (value: number | null) => void;
387
+ }
388
+ /** 표시 문자열과 실제 number 값을 분리하는 숫자 입력. */
389
+ declare const NumberInput: React.ForwardRefExoticComponent<NumberInputProps & React.RefAttributes<HTMLInputElement>>;
390
+
391
+ interface PasswordInputProps extends Omit<InputProps, 'type'> {
392
+ showToggle?: boolean;
393
+ }
394
+ /** 비밀번호 표시 상태를 키보드·스크린리더와 함께 제공하는 입력. */
395
+ declare const PasswordInput: React.ForwardRefExoticComponent<PasswordInputProps & React.RefAttributes<HTMLInputElement>>;
396
+
397
+ interface PhoneInputProps extends Omit<InputProps, 'type' | 'value' | 'onChange' | 'inputMode'> {
398
+ value?: string;
399
+ onValueChange?: (value: string) => void;
400
+ onValidityChange?: (valid: boolean) => void;
401
+ }
402
+ /** 입력 중에도 캐럿 위치를 보존하는 한국 전화번호 입력. */
403
+ declare const PhoneInput: React.ForwardRefExoticComponent<PhoneInputProps & React.RefAttributes<HTMLInputElement>>;
404
+
405
+ declare const radioItemVariants: (props?: ({
406
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
407
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
408
+ declare const RadioGroupRoot: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
409
+ label?: React.ReactNode;
410
+ size?: ControlSize;
411
+ } & React.RefAttributes<HTMLDivElement>>;
412
+ interface RadioGroupItemProps extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>, VariantProps<typeof radioItemVariants> {
413
+ label?: React.ReactNode;
414
+ }
415
+ declare const RadioGroupItem: React.ForwardRefExoticComponent<RadioGroupItemProps & React.RefAttributes<HTMLButtonElement>>;
416
+ declare const RadioGroup: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
417
+ label?: React.ReactNode;
418
+ size?: ControlSize;
419
+ } & React.RefAttributes<HTMLDivElement>> & {
420
+ Root: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
421
+ label?: React.ReactNode;
422
+ size?: ControlSize;
423
+ } & React.RefAttributes<HTMLDivElement>>;
424
+ Item: React.ForwardRefExoticComponent<RadioGroupItemProps & React.RefAttributes<HTMLButtonElement>>;
425
+ };
426
+ type RadioGroupProps = React.ComponentPropsWithoutRef<typeof RadioGroupRoot>;
427
+
428
+ declare const SelectGroup: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectGroupProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
429
+ declare const SelectValue: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectValueProps & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
430
+ declare const selectTriggerVariants: (props?: ({
431
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
432
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
433
+ interface SelectTriggerProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>, VariantProps<typeof selectTriggerVariants> {
434
+ invalid?: FieldControlProps['invalid'];
435
+ opaque?: FieldControlProps['opaque'];
436
+ variant?: FieldControlProps['variant'];
437
+ required?: boolean;
438
+ }
439
+ declare const SelectTrigger: React.ForwardRefExoticComponent<SelectTriggerProps & React.RefAttributes<HTMLButtonElement>>;
440
+ declare const SelectScrollUpButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollUpButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
441
+ declare const SelectScrollDownButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollDownButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
442
+ declare const SelectContent: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
443
+ declare const SelectLabel: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
444
+ declare const SelectItem: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
445
+ declare const SelectSeparator: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
446
+ interface SelectProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Root> {
447
+ }
448
+ declare function Select(props: SelectProps): React.JSX.Element;
449
+ declare namespace Select {
450
+ var displayName: string;
451
+ }
452
+
453
+ declare const textareaVariants: (props?: ({
454
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
455
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
456
+ interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'>, VariantProps<typeof textareaVariants> {
457
+ resize?: TextareaResize;
458
+ showCount?: boolean;
459
+ footer?: React.ReactNode;
460
+ wrapperClassName?: string;
461
+ opaque?: FieldControlProps['opaque'];
462
+ variant?: FieldControlProps['variant'];
463
+ invalid?: boolean;
464
+ }
465
+ type TextareaResize = 'none' | 'vertical' | 'horizontal' | 'both';
466
+ declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
467
+
468
+ interface ManagedFieldProps<Value> extends Omit<FormLayoutFieldProps, 'children' | 'className'> {
469
+ /** 필드 레이아웃에만 적용할 클래스. `className`은 실제 컨트롤에 전달됩니다. */
470
+ containerClassName?: string;
471
+ value?: Value;
472
+ onValueChange?: (value: Value) => void;
473
+ onAfterChange?: (value: Value) => void;
474
+ }
475
+ interface TextFieldProps extends ManagedFieldProps<string>, Omit<InputProps, 'value' | 'onChange' | 'size'> {
476
+ size?: InputProps['size'];
477
+ submitOnEnter?: boolean;
478
+ }
479
+ declare const TextField: React.ForwardRefExoticComponent<TextFieldProps & React.RefAttributes<HTMLInputElement>>;
480
+ interface PasswordFieldProps extends ManagedFieldProps<string>, Omit<PasswordInputProps, 'value' | 'onChange' | 'size'> {
481
+ size?: PasswordInputProps['size'];
482
+ submitOnEnter?: boolean;
483
+ }
484
+ declare const PasswordField: React.ForwardRefExoticComponent<PasswordFieldProps & React.RefAttributes<HTMLInputElement>>;
485
+ interface NumberFieldProps extends ManagedFieldProps<number | null>, Omit<NumberInputProps, 'value' | 'onValueChange'> {
486
+ submitOnEnter?: boolean;
487
+ }
488
+ declare const NumberField: React.ForwardRefExoticComponent<NumberFieldProps & React.RefAttributes<HTMLInputElement>>;
489
+ interface PhoneFieldProps extends ManagedFieldProps<string>, Omit<PhoneInputProps, 'value' | 'onValueChange'> {
490
+ submitOnEnter?: boolean;
491
+ }
492
+ declare const PhoneField: React.ForwardRefExoticComponent<PhoneFieldProps & React.RefAttributes<HTMLInputElement>>;
493
+ interface TextareaFieldProps extends ManagedFieldProps<string>, Omit<TextareaProps, 'value' | 'onChange'> {
494
+ }
495
+ declare const TextareaField: React.ForwardRefExoticComponent<TextareaFieldProps & React.RefAttributes<HTMLTextAreaElement>>;
496
+ interface CheckboxFieldProps extends ManagedFieldProps<boolean>, Omit<CheckboxProps, 'checked' | 'onCheckedChange' | 'onChange' | 'label' | 'value'> {
497
+ invalid?: boolean;
498
+ }
499
+ declare function CheckboxField({ 'aria-describedby': ariaDescribedBy, 'aria-label': ariaLabel, 'aria-invalid': ariaInvalid, className, containerClassName, description, descriptionId, error, errorId, htmlFor, id, invalid, label, labelId, labelClassName, onAfterChange, onValueChange, required, value, size, ...props }: CheckboxFieldProps): React.JSX.Element;
500
+ declare namespace CheckboxField {
501
+ var displayName: string;
502
+ }
503
+ interface RadioOption extends Pick<RadioGroupItemProps, 'value' | 'disabled'> {
504
+ label: React.ReactNode;
505
+ }
506
+ interface RadioGroupFieldProps extends ManagedFieldProps<string>, Omit<React.ComponentPropsWithoutRef<typeof RadioGroup>, 'value' | 'onValueChange' | 'onChange' | 'children'> {
507
+ /** 간단한 라디오 목록을 만들 때 사용합니다. `children`과 함께 쓸 수 없습니다. */
508
+ options?: RadioOption[];
509
+ /** RadioGroupItem을 직접 조합할 때 사용합니다. */
510
+ children?: React.ReactNode;
511
+ invalid?: boolean;
512
+ }
513
+ declare function RadioGroupField({ 'aria-describedby': ariaDescribedBy, 'aria-labelledby': ariaLabelledBy, 'aria-invalid': ariaInvalid, className, containerClassName, children, description, descriptionId, error, errorId, htmlFor: _htmlFor, id, invalid, label, labelId, labelClassName: _labelClassName, onAfterChange, onValueChange, options, required, value, size, ...props }: RadioGroupFieldProps): React.JSX.Element;
514
+ declare namespace RadioGroupField {
515
+ var displayName: string;
516
+ }
517
+ interface SelectOption {
518
+ value: string;
519
+ label: React.ReactNode;
520
+ disabled?: boolean;
521
+ }
522
+ interface SelectFieldProps extends ManagedFieldProps<string>, FieldControlProps, Omit<React.ComponentPropsWithoutRef<typeof Select>, 'value' | 'onValueChange' | 'children'> {
523
+ options: SelectOption[];
524
+ placeholder?: string;
525
+ triggerProps?: React.ComponentPropsWithoutRef<typeof SelectTrigger>;
526
+ /** 트리거에 적용할 추가 클래스. */
527
+ className?: string;
528
+ invalid?: boolean;
529
+ 'aria-describedby'?: string;
530
+ 'aria-invalid'?: React.AriaAttributes['aria-invalid'];
531
+ }
532
+ declare function SelectField({ variant, opaque, 'aria-describedby': ariaDescribedBy, 'aria-invalid': ariaInvalid, className, containerClassName, description, descriptionId, error, errorId, htmlFor: _htmlFor, invalid, label, labelId, labelClassName: _labelClassName, onAfterChange, onValueChange, options, placeholder, required, triggerProps, value, ...props }: SelectFieldProps): React.JSX.Element;
533
+ declare namespace SelectField {
534
+ var displayName: string;
535
+ }
536
+ /** 검색 가능한 선택 필드. Combobox가 PC Popover·모바일 Drawer 전환을 소유한다. */
537
+ interface ComboboxFieldProps extends ManagedFieldProps<string>, Omit<ComboboxProps, 'value' | 'onValueChange' | 'invalid'> {
538
+ invalid?: boolean;
539
+ }
540
+ declare function ComboboxField({ 'aria-describedby': ariaDescribedBy, 'aria-label': ariaLabel, 'aria-invalid': ariaInvalid, containerClassName, description, descriptionId, error, errorId, htmlFor: _htmlFor, id, invalid, label, labelId, labelClassName, onAfterChange, onValueChange, required, value, ...props }: ComboboxFieldProps): React.JSX.Element;
541
+ declare namespace ComboboxField {
542
+ var displayName: string;
543
+ }
544
+ interface DateFieldProps extends ManagedFieldProps<string>, Omit<DatePickerProps, 'value' | 'onValueChange'> {
545
+ }
546
+ declare function DateField({ 'aria-describedby': ariaDescribedBy, 'aria-invalid': ariaInvalid, className, containerClassName, description, descriptionId, id, error, errorId, htmlFor, invalid, label, labelId, labelClassName, onAfterChange, onValueChange, required, value, ...props }: DateFieldProps): React.JSX.Element;
547
+ declare namespace DateField {
548
+ var displayName: string;
549
+ }
550
+ interface TimeFieldProps extends ManagedFieldProps<string>, Omit<TimeInputProps, 'value' | 'onValueChange'> {
551
+ }
552
+ declare function TimeField({ 'aria-describedby': ariaDescribedBy, 'aria-invalid': ariaInvalid, className, containerClassName, description, descriptionId, id, error, errorId, htmlFor, invalid, label, labelId, labelClassName, onAfterChange, onValueChange, required, value, ...props }: TimeFieldProps): React.JSX.Element;
553
+ declare namespace TimeField {
554
+ var displayName: string;
555
+ }
556
+ interface DateRangeFieldProps extends ManagedFieldProps<DateRange>, Omit<DateRangePickerProps, 'value' | 'onValueChange'> {
557
+ }
558
+ declare function DateRangeField({ 'aria-describedby': ariaDescribedBy, 'aria-invalid': ariaInvalid, className, containerClassName, description, descriptionId, id, error, errorId, htmlFor, invalid, label, labelId, labelClassName, onAfterChange, onValueChange, required, value, ...props }: DateRangeFieldProps): React.JSX.Element;
559
+ declare namespace DateRangeField {
560
+ var displayName: string;
561
+ }
562
+
563
+ /** 폼 검증 오류에서 사용자에게 보여 줄 첫 번째 메시지를 찾는다. */
564
+ declare function firstInvalidMessage(errors: unknown): string | null;
565
+ interface InvalidSubmitOptions {
566
+ /** 제품의 toast·알림 시스템을 주입한다. 생략하면 메시지를 반환하기만 한다. */
567
+ notify?: (message: string) => void;
568
+ fallback?: string;
569
+ }
570
+ /** 숨겨진/조건부 필드 때문에 조용히 실패하는 제출을 보완하는 프레임워크 독립 핸들러. */
571
+ declare function reportInvalidSubmit(errors: unknown, { fallback, notify }?: InvalidSubmitOptions): string;
572
+
573
+ interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {
574
+ asChild?: boolean;
575
+ }
576
+ /** Standalone label. Use Field.Label when the surrounding Field owns IDs and validation. */
577
+ declare const Label: React.ForwardRefExoticComponent<LabelProps & React.RefAttributes<HTMLLabelElement>>;
578
+
579
+ interface SubmitGuardSchema {
580
+ safeParse: (value: unknown) => {
581
+ success: boolean;
582
+ };
583
+ }
584
+ interface SubmitGuardOptions {
585
+ busy?: boolean;
586
+ busyReason?: string;
587
+ incompleteReason?: string;
588
+ }
589
+ interface SubmitGuard {
590
+ canSubmit: boolean;
591
+ complete: boolean;
592
+ reason: string | null;
593
+ }
594
+ /**
595
+ * 검증 스키마와 현재 값을 연결하는 프레임워크 독립 제출 게이트.
596
+ * React Hook Form 연결은 optional subpath에서 values를 구독해 이 훅에 넘긴다.
597
+ */
598
+ declare function useSubmitGuard(values: unknown, schema: SubmitGuardSchema, { busy, busyReason, incompleteReason }?: SubmitGuardOptions): SubmitGuard;
599
+
600
+ export { Input as $, DateRangeField as A, type ButtonIcon as B, type CheckboxFieldProps as C, type DateFieldProps as D, DateRangePicker as E, type FileInputProps as F, type DateRangePickerProps as G, type FieldControlVariant as H, type InputProps as I, type FieldControlVariants as J, FieldLayout as K, type LabelProps as L, type FileDropzoneVariant as M, type NumberFieldProps as N, type FileDropzoneVariants as O, type PasswordFieldProps as P, type FileErrorReason as Q, type RadioGroupFieldProps as R, type SubmitGuardOptions as S, type TextFieldProps as T, FileInput as U, type FileItem as V, FileUpload as W, FormLayoutField as X, type FormLayoutFieldProps as Y, FormStack as Z, type FormStackProps as _, type ComboboxFieldProps as a, InputFrame as a0, type InputSize as a1, type InvalidSubmitOptions as a2, Label as a3, NumberField as a4, NumberInput as a5, type NumberInputProps as a6, PasswordField as a7, PasswordInput as a8, type PasswordInputProps as a9, type TextareaProps as aA, type TextareaResize as aB, TimeField as aC, TimeInput as aD, type TimeInputElement as aE, type TimeInputProps as aF, checkboxVariants as aG, fileDropAreaVariants as aH, fieldControlVariants as aI, fileDropzoneVariants as aJ, fileInputVariants as aK, formatBytes as aL, getFileName as aM, getFileSize as aN, getItemKey as aO, inputVariants as aP, isImageFile as aQ, isPdfFile as aR, matchesAccept as aS, newLocalId as aT, radioItemVariants as aU, selectTriggerVariants as aV, textareaVariants as aW, useSubmitGuard as aX, PhoneField as aa, PhoneInput as ab, type PhoneInputProps as ac, RadioGroup as ad, RadioGroupField as ae, RadioGroupItem as af, type RadioGroupItemProps as ag, type RadioGroupProps as ah, RadioGroupRoot as ai, Select as aj, SelectContent as ak, SelectField as al, SelectGroup as am, SelectItem as an, SelectLabel as ao, type SelectOption as ap, type SelectProps as aq, SelectScrollDownButton as ar, SelectScrollUpButton as as, SelectSeparator as at, SelectTrigger as au, type SelectTriggerProps as av, SelectValue as aw, TextField as ax, Textarea as ay, TextareaField as az, type DateRangeFieldProps as b, type FileUploadProps as c, type PhoneFieldProps as d, type SelectFieldProps as e, type TextareaFieldProps as f, type TimeFieldProps as g, type SubmitGuardSchema as h, type SubmitGuard as i, firstInvalidMessage as j, type FileConstraints as k, type FileError as l, type FieldControlProps as m, type ControlSize as n, Checkbox as o, CheckboxField as p, type CheckboxProps as q, reportInvalidSubmit as r, Combobox as s, ComboboxField as t, type ComboboxOption as u, type ComboboxProps as v, DateField as w, DatePicker as x, type DatePickerProps as y, type DateRange as z };