@lerianstudio/sindarian-ui 2.0.0-beta.1 → 2.0.0-beta.3

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 (42) hide show
  1. package/dist/components/form/file-upload-field/index.d.ts +11 -2
  2. package/dist/components/form/file-upload-field/index.d.ts.map +1 -1
  3. package/dist/components/form/file-upload-field/index.js +8 -3
  4. package/dist/components/form/input-field/index.d.ts +41 -2
  5. package/dist/components/form/input-field/index.d.ts.map +1 -1
  6. package/dist/components/form/input-field/index.js +73 -15
  7. package/dist/components/form/select-field/index.d.ts +9 -1
  8. package/dist/components/form/select-field/index.d.ts.map +1 -1
  9. package/dist/components/form/select-field/index.js +2 -2
  10. package/dist/components/ui/button/styles.css +31 -1
  11. package/dist/components/ui/calendar/index.d.ts.map +1 -1
  12. package/dist/components/ui/calendar/index.js +7 -1
  13. package/dist/components/ui/file-upload/index.d.ts +235 -9
  14. package/dist/components/ui/file-upload/index.d.ts.map +1 -1
  15. package/dist/components/ui/file-upload/index.js +328 -13
  16. package/dist/components/ui/form.d.ts +4 -0
  17. package/dist/components/ui/form.d.ts.map +1 -1
  18. package/dist/components/ui/form.js +48 -6
  19. package/dist/components/ui/toggle-group/index.d.ts +1 -1
  20. package/dist/components/ui/toggle-group/index.d.ts.map +1 -1
  21. package/dist/components/ui/toggle-group/index.js +73 -4
  22. package/dist/esm/components/form/file-upload-field/index.d.ts +11 -2
  23. package/dist/esm/components/form/file-upload-field/index.d.ts.map +1 -1
  24. package/dist/esm/components/form/file-upload-field/index.js +8 -3
  25. package/dist/esm/components/form/input-field/index.d.ts +41 -2
  26. package/dist/esm/components/form/input-field/index.d.ts.map +1 -1
  27. package/dist/esm/components/form/input-field/index.js +73 -15
  28. package/dist/esm/components/form/select-field/index.d.ts +9 -1
  29. package/dist/esm/components/form/select-field/index.d.ts.map +1 -1
  30. package/dist/esm/components/form/select-field/index.js +2 -2
  31. package/dist/esm/components/ui/calendar/index.d.ts.map +1 -1
  32. package/dist/esm/components/ui/calendar/index.js +8 -2
  33. package/dist/esm/components/ui/file-upload/index.d.ts +235 -9
  34. package/dist/esm/components/ui/file-upload/index.d.ts.map +1 -1
  35. package/dist/esm/components/ui/file-upload/index.js +327 -13
  36. package/dist/esm/components/ui/form.d.ts +4 -0
  37. package/dist/esm/components/ui/form.d.ts.map +1 -1
  38. package/dist/esm/components/ui/form.js +48 -6
  39. package/dist/esm/components/ui/toggle-group/index.d.ts +1 -1
  40. package/dist/esm/components/ui/toggle-group/index.d.ts.map +1 -1
  41. package/dist/esm/components/ui/toggle-group/index.js +73 -4
  42. package/package.json +1 -1
@@ -1,9 +1,16 @@
1
1
  /**
2
- * FileUpload — a controlled "pick a file, read it to text, hand back the text"
3
- * primitive. The defining job: select one file (by click, keyboard, or
4
- * drag-and-drop), validate it against an accept filter + a byte ceiling, read
5
- * it as UTF-8 via FileReader.readAsText, and emit `{ file, text }`. Binary/DER
6
- * (.pfx/.p12) is explicitly OUT of scope — readAsText only.
2
+ * FileUpload — a controlled "pick a file, hand it back" primitive. The defining
3
+ * job: select one file (by click, keyboard, or drag-and-drop), validate it
4
+ * against an accept filter + a byte ceiling, and emit `{ file, text }`.
5
+ *
6
+ * `readAs` decides whether the bytes are decoded on the way through. `'text'`
7
+ * (the default) reads UTF-8 via FileReader.readAsText, which is what a PEM/CSV
8
+ * host wants. `'none'` hands the `File` over untouched and is the only mode a
9
+ * BINARY file can use: a PDF, XLSX or PFX put through readAsText decodes into
10
+ * replacement-character garbage, and that garbage string is then retained for
11
+ * as long as the host holds the value — 20 MiB of PDF became a useless 20 MiB
12
+ * string, and the host still had to read the file a second time to get at the
13
+ * real bytes.
7
14
  *
8
15
  * The real `<input type="file">` IS the accessible control: it is `sr-only`
9
16
  * (visually hidden) but focusable and labelable — never `aria-hidden`, never
@@ -24,6 +31,11 @@
24
31
  * a value, so it cannot masquerade as valid. `accept` is validated against
25
32
  * BOTH extension and MIME because the native `accept` attribute is only a
26
33
  * browser hint and is bypassable via drag-drop.
34
+ *
35
+ * A host that already announces the rejection itself — a toast in its own
36
+ * locale, driven off `onError` — silences this one by returning nothing from
37
+ * `labels.error`. Two announcements for one event, in two languages, is the
38
+ * accessibility defect; the wording is not.
27
39
  */
28
40
  import * as React from 'react';
29
41
  export type FileUploadResult = {
@@ -42,6 +54,33 @@ export type FileUploadError = {
42
54
  kind: 'read-failed';
43
55
  file: File;
44
56
  };
57
+ /** How the picked file's bytes are handled on the way to `onSelect`. */
58
+ export type FileUploadReadAs = 'text' | 'none';
59
+ /**
60
+ * Overrides for the fixed English copy. Every field is optional and defaults to
61
+ * the current value, so a consumer that passes nothing renders exactly as
62
+ * before. These four strings were the whole of the component's user-visible
63
+ * text, and none of them was reachable — a pt-BR console rendered an English
64
+ * affordance and handed a screen reader an English accessible name.
65
+ */
66
+ export interface FileUploadLabels {
67
+ /** Emphasised call to action in the empty zone. Defaults to "Choose a file". */
68
+ action?: string;
69
+ /** Trailing hint after the action. Defaults to "or drag and drop". */
70
+ hint?: string;
71
+ /** Accessible name of the clear button. Defaults to "Remove file". */
72
+ remove?: string;
73
+ /**
74
+ * Copy for the component's own `role="alert"` refusal. Receives the rejection
75
+ * so the message can interpolate the cap or the accept filter; use the
76
+ * exported `humanizeSize` to format `maxSizeBytes` the way the chip does.
77
+ *
78
+ * Return `null`, `undefined` or `''` to stay SILENT and leave the
79
+ * announcement to the host's own `onError` handling. Defaults to the
80
+ * built-in English messages.
81
+ */
82
+ error?: (error: FileUploadError) => string | null | undefined;
83
+ }
45
84
  export type FileUploadProps = {
46
85
  /** Comma-separated accept filter, e.g. ".pem,.key" or "text/plain". Mirrors the native input accept. */
47
86
  accept?: string;
@@ -49,7 +88,18 @@ export type FileUploadProps = {
49
88
  maxSizeBytes?: number;
50
89
  /** Controlled selection. `null` = empty. The host owns state. */
51
90
  value?: FileUploadResult | null;
52
- /** Fires on accept (with {file,text}) or clear (null). Reads UTF-8 via FileReader.readAsText. */
91
+ /**
92
+ * How the accepted file is handed over.
93
+ * - `'text'` (default): decode as UTF-8 via FileReader.readAsText and emit
94
+ * `{ file, text }`. Unchanged behaviour for every existing consumer.
95
+ * - `'none'`: skip decoding entirely and emit `{ file, text: '' }`. The mode
96
+ * for BINARY files (PDF, XLSX, PFX/DER): the host gets the `File` intact
97
+ * and `text` carries nothing, so do not read it in this mode.
98
+ */
99
+ readAs?: FileUploadReadAs;
100
+ /** Override the fixed English copy. Omitted fields keep their defaults. */
101
+ labels?: FileUploadLabels;
102
+ /** Fires on accept (with the result) or clear (null). See `readAs` for whether `text` is populated. */
53
103
  onSelect: (result: FileUploadResult | null) => void;
54
104
  /** Fires when a pick is rejected (size/type/read). Optional — the component also shows its own inline error. */
55
105
  onError?: (error: FileUploadError) => void;
@@ -60,7 +110,7 @@ export type FileUploadProps = {
60
110
  'aria-required'?: boolean;
61
111
  'aria-describedby'?: string;
62
112
  'aria-label'?: string;
63
- } & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'accept' | 'value' | 'disabled' | 'onChange' | 'onSelect' | 'className' | 'multiple'>;
113
+ } & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'accept' | 'value' | 'disabled' | 'onChange' | 'onSelect' | 'className' | 'onError' | 'multiple'>;
64
114
  /**
65
115
  * Validate a chosen file against an accept filter and a byte ceiling. Exported
66
116
  * so hosts can pre-validate before handing a file over. `accept` is matched
@@ -72,6 +122,12 @@ export declare function validateFile(file: File, opts: {
72
122
  accept?: string;
73
123
  maxSizeBytes?: number;
74
124
  }): FileUploadError | null;
125
+ /**
126
+ * Humanize a byte count for the selected-file chip. Binary units, 1 decimal.
127
+ * Exported so a `labels.error` override can format `maxSizeBytes` exactly the
128
+ * way the chip and the default message do, instead of re-deriving binary units.
129
+ */
130
+ export declare function humanizeSize(bytes: number): string;
75
131
  export declare const FileUpload: React.ForwardRefExoticComponent<{
76
132
  /** Comma-separated accept filter, e.g. ".pem,.key" or "text/plain". Mirrors the native input accept. */
77
133
  accept?: string;
@@ -79,7 +135,18 @@ export declare const FileUpload: React.ForwardRefExoticComponent<{
79
135
  maxSizeBytes?: number;
80
136
  /** Controlled selection. `null` = empty. The host owns state. */
81
137
  value?: FileUploadResult | null;
82
- /** Fires on accept (with {file,text}) or clear (null). Reads UTF-8 via FileReader.readAsText. */
138
+ /**
139
+ * How the accepted file is handed over.
140
+ * - `'text'` (default): decode as UTF-8 via FileReader.readAsText and emit
141
+ * `{ file, text }`. Unchanged behaviour for every existing consumer.
142
+ * - `'none'`: skip decoding entirely and emit `{ file, text: '' }`. The mode
143
+ * for BINARY files (PDF, XLSX, PFX/DER): the host gets the `File` intact
144
+ * and `text` carries nothing, so do not read it in this mode.
145
+ */
146
+ readAs?: FileUploadReadAs;
147
+ /** Override the fixed English copy. Omitted fields keep their defaults. */
148
+ labels?: FileUploadLabels;
149
+ /** Fires on accept (with the result) or clear (null). See `readAs` for whether `text` is populated. */
83
150
  onSelect: (result: FileUploadResult | null) => void;
84
151
  /** Fires when a pick is rejected (size/type/read). Optional — the component also shows its own inline error. */
85
152
  onError?: (error: FileUploadError) => void;
@@ -90,5 +157,164 @@ export declare const FileUpload: React.ForwardRefExoticComponent<{
90
157
  'aria-required'?: boolean;
91
158
  'aria-describedby'?: string;
92
159
  'aria-label'?: string;
93
- } & Omit<React.InputHTMLAttributes<HTMLInputElement>, "className" | "disabled" | "type" | "value" | "onChange" | "onSelect" | "accept" | "multiple"> & React.RefAttributes<HTMLInputElement>>;
160
+ } & Omit<React.InputHTMLAttributes<HTMLInputElement>, "className" | "disabled" | "type" | "value" | "onChange" | "onError" | "onSelect" | "accept" | "multiple"> & React.RefAttributes<HTMLInputElement>>;
161
+ /**
162
+ * A rejection from `MultipleFileUpload`: every rejection the single-file
163
+ * sibling can produce, plus the one only a plural selection has — the cap.
164
+ */
165
+ export type MultipleFileUploadError = FileUploadError | {
166
+ kind: 'too-many';
167
+ file: File;
168
+ maxFiles: number;
169
+ };
170
+ /** Overrides for the fixed English copy. Every field is optional. */
171
+ export interface MultipleFileUploadLabels {
172
+ /** Emphasised call to action in the empty zone. Defaults to "Choose files". */
173
+ action?: string;
174
+ /** Trailing hint after the action. Defaults to "or drag and drop". */
175
+ hint?: string;
176
+ /** Zone copy once `maxFiles` is reached. Receives the cap to interpolate. */
177
+ full?: (maxFiles: number) => string;
178
+ /**
179
+ * Accessible name of a row's remove control. Receives that row's file, so the
180
+ * name identifies it. Defaults to `Remove <filename>`.
181
+ */
182
+ remove?: (file: File) => string;
183
+ /**
184
+ * Copy for one rejection. Called once per rejection in a batch; use the
185
+ * exported `humanizeSize` to format `maxSizeBytes`. Return `null`,
186
+ * `undefined` or `''` to stay SILENT and leave the announcement to the host's
187
+ * own `onError` handling. A batch whose every message is silent renders no
188
+ * alert at all.
189
+ */
190
+ error?: (error: MultipleFileUploadError) => string | null | undefined;
191
+ }
192
+ export type MultipleFileUploadProps = {
193
+ /** Comma-separated accept filter. Applied to every file, extension or MIME. */
194
+ accept?: string;
195
+ /** Inclusive per-file byte ceiling. Applied to each file independently. */
196
+ maxSizeBytes?: number;
197
+ /** Ceiling on the TOTAL selection. Omitted means unbounded. */
198
+ maxFiles?: number;
199
+ /** Controlled selection. The host owns state; defaults to empty. */
200
+ value?: FileUploadResult[];
201
+ /**
202
+ * How each accepted file is handed over. `'text'` (default) decodes UTF-8
203
+ * and populates `text`; `'none'` skips decoding entirely and is the mode
204
+ * BINARY files need. See FileUpload's `readAs` for why.
205
+ */
206
+ readAs?: FileUploadReadAs;
207
+ /** Override the fixed English copy. Omitted fields keep their defaults. */
208
+ labels?: MultipleFileUploadLabels;
209
+ /** Fires with the WHOLE next selection whenever files are added or removed. */
210
+ onValueChange: (values: FileUploadResult[]) => void;
211
+ /** Fires once per rejected file. A batch can produce several. */
212
+ onError?: (error: MultipleFileUploadError) => void;
213
+ disabled?: boolean;
214
+ id?: string;
215
+ className?: string;
216
+ 'aria-invalid'?: boolean;
217
+ 'aria-required'?: boolean;
218
+ 'aria-describedby'?: string;
219
+ 'aria-label'?: string;
220
+ } & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'accept' | 'value' | 'disabled' | 'onChange' | 'onSelect' | 'className' | 'multiple' | 'onError'>;
221
+ /**
222
+ * MultipleFileUpload: the plural sibling of FileUpload. Pick SEVERAL files,
223
+ * accumulate them across repeated picks, validate each one, cap the total, and
224
+ * hand back `FileUploadResult[]`.
225
+ *
226
+ * A SIBLING COMPONENT, not a `multiple` flag. This library already answers
227
+ * "this one takes many" that way (`Select` / `MultipleSelect`), and FileUpload
228
+ * strips `'multiple'` from its props on purpose: single-file is its contract,
229
+ * not a default it happens to have. A boolean would have forced every prop
230
+ * here into a union that means one thing when the flag is set and another when
231
+ * it is not: `value` as `Result | Result[] | null`, a `maxFiles` that is
232
+ * meaningless in half the configurations, and a remove control whose
233
+ * accessible name is fixed copy in one mode and per-file in the other. The
234
+ * plural props follow the house shape for plural components: `value?: T[]`
235
+ * with `onValueChange?: (values: T[]) => void`.
236
+ *
237
+ * WHERE THE LINE SITS: this component owns SELECTION and nothing after it.
238
+ * Choosing, validating, capping, listing and removing are its job; uploading
239
+ * is not. That split is not squeamishness about scope, it is where the
240
+ * knowledge actually lives. An upload needs an endpoint, an auth scheme, a
241
+ * concurrency policy, a retry policy and, very often, a parent id that does
242
+ * not exist yet when the files are chosen: the motivating host stages evidence
243
+ * files while a form is being filled and can only upload them against the id
244
+ * that its create call returns afterwards. None of that is knowable from
245
+ * inside a library primitive, and a component that guessed would have to be
246
+ * fought rather than used. So the host keeps its own per-file record with
247
+ * status and retry, and this component keeps the part a form can hold and
248
+ * validate: the chosen files. `FileUploadResult[]` is a value; an upload state
249
+ * machine is not.
250
+ *
251
+ * ACCUMULATION is the defining behaviour. A second pick ADDS to the selection
252
+ * rather than replacing it, because a user assembling five documents does it
253
+ * in two or three trips to the file dialog, not one. Everything else follows
254
+ * from that: room is measured against what is already selected, and the batch
255
+ * that overflows the cap still contributes the files that fit.
256
+ *
257
+ * A BATCH SURVIVES ITS OWN CASUALTIES. One file rejected for type, size or a
258
+ * failed read does not discard the rest of the batch, and it does not consume
259
+ * a slot either: validation runs over the WHOLE batch before the cap is
260
+ * applied, so a file that was never eligible cannot cost an eligible one its
261
+ * place, and `'too-many'` always names a file a slot would genuinely have
262
+ * taken. The alternative punishes
263
+ * a user for a mistake in one file by throwing away four good ones, and hands
264
+ * back no way to tell which was which. Every rejection is reported through
265
+ * `onError` and announced together in one `role="alert"`.
266
+ *
267
+ * Accessibility follows the sibling BELOW THE CAP: the real `<input
268
+ * type="file">` is `sr-only` but focusable and labelable, and never
269
+ * `aria-hidden`, so FormControl-injected ARIA and react-hook-form's focus on
270
+ * error both work while the picker is enabled. At the cap that changes, and
271
+ * the paragraph below says how.
272
+ * The file list sits OUTSIDE the click zone, so activating a remove control
273
+ * cannot also reopen the picker, and each remove control is named after its
274
+ * own file: a column of identical "Remove file" buttons tells a screen-reader
275
+ * user nothing about which row they are on.
276
+ *
277
+ * AT THE CAP the picker takes the native `disabled` attribute, and that DOES
278
+ * take it out of the tab order. This is the one state in which the input is
279
+ * not a focus target, and the one state in which focus-on-error cannot land on
280
+ * it, so it is a real cost rather than a free win. The cap has no counterpart
281
+ * in the single-file sibling, so the precedent followed here is
282
+ * `DateRangePicker`'s trigger: a control whose only job is to open a dialog has
283
+ * no state worth keeping focusable, and native `disabled` is what both removes
284
+ * it from the tab order and keeps the dialog shut. The alternative, an enabled
285
+ * picker that opens the file dialog and then refuses every file with
286
+ * `too-many`, is a control that lies about being available. What keeps the cap
287
+ * from being a dead end is the escape hatch: the remove controls answer to
288
+ * `disabled` alone and NEVER to the cap, so they stay focusable and removing
289
+ * one file reopens the picker.
290
+ */
291
+ export declare const MultipleFileUpload: React.ForwardRefExoticComponent<{
292
+ /** Comma-separated accept filter. Applied to every file, extension or MIME. */
293
+ accept?: string;
294
+ /** Inclusive per-file byte ceiling. Applied to each file independently. */
295
+ maxSizeBytes?: number;
296
+ /** Ceiling on the TOTAL selection. Omitted means unbounded. */
297
+ maxFiles?: number;
298
+ /** Controlled selection. The host owns state; defaults to empty. */
299
+ value?: FileUploadResult[];
300
+ /**
301
+ * How each accepted file is handed over. `'text'` (default) decodes UTF-8
302
+ * and populates `text`; `'none'` skips decoding entirely and is the mode
303
+ * BINARY files need. See FileUpload's `readAs` for why.
304
+ */
305
+ readAs?: FileUploadReadAs;
306
+ /** Override the fixed English copy. Omitted fields keep their defaults. */
307
+ labels?: MultipleFileUploadLabels;
308
+ /** Fires with the WHOLE next selection whenever files are added or removed. */
309
+ onValueChange: (values: FileUploadResult[]) => void;
310
+ /** Fires once per rejected file. A batch can produce several. */
311
+ onError?: (error: MultipleFileUploadError) => void;
312
+ disabled?: boolean;
313
+ id?: string;
314
+ className?: string;
315
+ 'aria-invalid'?: boolean;
316
+ 'aria-required'?: boolean;
317
+ 'aria-describedby'?: string;
318
+ 'aria-label'?: string;
319
+ } & Omit<React.InputHTMLAttributes<HTMLInputElement>, "className" | "disabled" | "type" | "value" | "onChange" | "onError" | "onSelect" | "accept" | "multiple"> & React.RefAttributes<HTMLInputElement>>;
94
320
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/file-upload/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3D,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAA;AAEvC,MAAM,MAAM,eAAe,GAAG;IAC5B,wGAAwG;IACxG,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0FAA0F;IAC1F,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iEAAiE;IACjE,KAAK,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAC/B,iGAAiG;IACjG,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,CAAA;IACnD,gHAAgH;IAChH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAA;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,GAAG,IAAI,CACN,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAEzC,MAAM,GACN,QAAQ,GACR,OAAO,GACP,UAAU,GACV,UAAU,GACV,UAAU,GACV,WAAW,GAEX,UAAU,CACb,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C,eAAe,GAAG,IAAI,CASxB;AA8CD,eAAO,MAAM,UAAU;IAhGrB,wGAAwG;aAC/F,MAAM;IACf,0FAA0F;mBAC3E,MAAM;IACrB,iEAAiE;YACzD,gBAAgB,GAAG,IAAI;IAC/B,iGAAiG;cACvF,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI;IACnD,gHAAgH;cACtG,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI;eAC/B,OAAO;SACb,MAAM;gBACC,MAAM;qBACD,OAAO;sBACN,OAAO;yBACJ,MAAM;mBACZ,MAAM;6LA6RtB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/file-upload/index.tsx"],"names":[],"mappings":"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"}