# File Upload URL: https://ark-ui.com/docs/components/file-upload Source: https://raw.githubusercontent.com/chakra-ui/ark/refs/heads/main/website/src/content/pages/components/file-upload.mdx A component that is used to upload multiple files. --- ## Anatomy ```tsx ``` ## Examples **Example: basic** #### React ```tsx import { FileUpload } from '@ark-ui/react/file-upload' import { PaperclipIcon, XIcon } from 'lucide-react' import styles from 'styles/file-upload.module.css' export const Basic = () => ( File Upload Choose file(s) {({ acceptedFiles }) => acceptedFiles.map((file) => ( )) } ) ``` #### Solid ```tsx import { FileUpload } from '@ark-ui/solid/file-upload' import { For } from 'solid-js' export const Basic = () => ( File Upload Choose file(s) {(context) => ( {(file) => ( X )} )} ) ``` #### Vue ```vue ``` #### Svelte ```svelte File Upload Choose file(s) {#snippet render(context)} {#each context().acceptedFiles as file (file.name)} X {/each} {/snippet} ``` ### Initial Files Use the `defaultAcceptedFiles` prop to set the initial files in the file upload component. **Example: initial-files** #### React ```tsx import { FileUpload } from '@ark-ui/react/file-upload' import { FileIcon, PaperclipIcon, XIcon } from 'lucide-react' import styles from 'styles/file-upload.module.css' export const InitialFiles = () => ( File Upload Choose file(s) {({ acceptedFiles }) => acceptedFiles.map((file) => (
)) }
) ``` #### Solid ```tsx import { FileUpload } from '@ark-ui/solid/file-upload' import { For } from 'solid-js' export const InitialFiles = () => ( File Upload Choose file(s) {(context) => ( {(file) => (
📄
)}
)}
) ``` #### Vue ```vue ``` #### Svelte ```svelte File Upload Choose file(s) {#snippet render(context)} {#each context().acceptedFiles as file (file.name)}
📄
{/each} {/snippet}
``` ### Clear Trigger Use the `ClearTrigger` to remove all uploaded files at once. **Example: clear-trigger** #### React ```tsx import { FileUpload } from '@ark-ui/react/file-upload' import { PaperclipIcon, XIcon } from 'lucide-react' import styles from 'styles/file-upload.module.css' export const ClearTrigger = () => ( File Upload
Choose file(s) Clear Files
{({ acceptedFiles }) => acceptedFiles.map((file) => ( )) }
) ``` #### Solid ```tsx import { FileUpload } from '@ark-ui/solid/file-upload' import { For } from 'solid-js' export const ClearTrigger = () => ( File Upload Choose file(s) Clear Files {(context) => ( {(file) => ( )} )} ) ``` #### Vue ```vue ``` #### Svelte ```svelte File Upload Drag your file(s) here Choose file(s) {#snippet render(context)} {#if context().acceptedFiles.length > 0} {/if} {/snippet} {#snippet render(context)} {#each context().acceptedFiles as file (file.name)} X {/each} {/snippet} ``` ### Dropzone Use the `Dropzone` to enable drag-and-drop. It exposes a `data-dragging` attribute for styling. **Example: dropzone** #### React ```tsx import { FileUpload } from '@ark-ui/react/file-upload' import { FileIcon, UploadIcon, XIcon } from 'lucide-react' import styles from 'styles/file-upload.module.css' export const Dropzone = () => ( File Upload
Drag and drop files here or click to browse
{({ acceptedFiles }) => acceptedFiles.map((file) => ( )) }
) ``` #### Solid ```tsx import { FileUpload } from '@ark-ui/solid/file-upload' import { For } from 'solid-js' export const Dropzone = () => ( File Upload Drag and drop files here {(context) => ( {(file) => ( File X )} )} ) ``` #### Vue ```vue ``` #### Svelte ```svelte File Upload Drag and drop files here {#snippet render(fileUpload)} {#each fileUpload().acceptedFiles as file (file.name)} X {/each} {/snippet} ``` ### Directory Upload Use the `directory` prop to upload entire folders. Access file paths through `file.webkitRelativePath`. **Example: directory-upload** #### React ```tsx import { FileUpload } from '@ark-ui/react/file-upload' import { FileIcon, FolderIcon, XIcon } from 'lucide-react' import styles from 'styles/file-upload.module.css' export const DirectoryUpload = () => ( Upload Folder Select Folder {({ acceptedFiles }) => acceptedFiles.map((file) => (
{file.webkitRelativePath || file.name}
)) }
) ``` #### Solid ```tsx import { FileUpload } from '@ark-ui/solid/file-upload' import { For } from 'solid-js' export const DirectoryUpload = () => ( Upload Folder {(fileUpload) => ( {(file) => ( {file.webkitRelativePath ?? file.name} )} )} ) ``` #### Vue ```vue ``` #### Svelte ```svelte Upload Folder {#snippet render(fileUpload)} {#each fileUpload().acceptedFiles as file (file.name)} {file.webkitRelativePath ?? file.name} {/each} {/snippet} ``` > When uploading directories with many files, set `maxFiles` to a higher value or remove it entirely to prevent > rejections. ### Accepted File Types Use the `accept` prop to restrict file types. Accepts MIME types (`image/png`) or extensions (`.pdf`). **Example: accepted-file-types** #### React ```tsx import { FileUpload } from '@ark-ui/react/file-upload' import { AlertCircleIcon, ImageIcon, UploadIcon, XIcon } from 'lucide-react' import styles from 'styles/file-upload.module.css' export const AcceptedFileTypes = () => ( Upload Images (PNG and JPEG only)
Drop your images here Only PNG and JPEG files
{({ acceptedFiles, rejectedFiles }) => ( <> {acceptedFiles.length > 0 && ( {acceptedFiles.map((file) => ( ))} )} {rejectedFiles.length > 0 && ( {rejectedFiles.map((fileRejection) => (
{fileRejection.errors.map((error) => (
{error}
))}
))}
)} )}
) ``` #### Solid ```tsx import { FileUpload } from '@ark-ui/solid/file-upload' import { For } from 'solid-js' export const AcceptedFileTypes = () => ( File Upload (PNG and JPEG only) Drop your files here Select Files {(context) => ( {(file) => ( Remove )} )} {(context) => ( {(fileRejection) => (
{(error) =>
{error}
}
)}
)}
) ``` #### Vue ```vue ``` #### Svelte ```svelte File Upload (PNG and JPEG only) Drop your files here Select Files {#snippet render(context)} {#each context().acceptedFiles as file (file.name)} Remove {/each} {/snippet} {#snippet render(context)} {#each context().rejectedFiles as fileRejection (fileRejection.file.name)}
{#each fileRejection.errors as error}
{error}
{/each}
{/each} {/snippet}
``` ### Error Handling Set constraints with `maxFiles`, `maxFileSize`, `minFileSize`, and `accept`. Rejected files include error codes like `TOO_MANY_FILES`, `FILE_INVALID_TYPE`, `FILE_TOO_LARGE`, or `FILE_EXISTS`. **Example: error-handling** #### React ```tsx import { FileUpload, type FileUploadFileError } from '@ark-ui/react/file-upload' import { AlertCircleIcon, CheckCircleIcon, FileIcon, UploadIcon, XIcon } from 'lucide-react' import styles from 'styles/file-upload.module.css' const errorMessages: Record = { TOO_MANY_FILES: 'Too many files selected (max 3 allowed)', FILE_INVALID_TYPE: 'Invalid file type (only images and PDFs allowed)', FILE_TOO_LARGE: 'File too large (max 1MB)', FILE_TOO_SMALL: 'File too small (min 1KB)', FILE_INVALID: 'Invalid file', FILE_EXISTS: 'File already exists', } export const ErrorHandling = () => ( Upload Documents
Drop files here Images and PDFs, max 1MB each
{({ acceptedFiles, rejectedFiles }) => ( <> {acceptedFiles.length > 0 && (
Accepted Files
{acceptedFiles.map((file) => ( ))}
)} {rejectedFiles.length > 0 && (
Rejected Files
{rejectedFiles.map((fileRejection) => (
{fileRejection.errors.map((error, index) => (
{errorMessages[error as FileUploadFileError] || error}
))}
))}
)} )}
) ``` #### Solid ```tsx import { FileUpload, type FileUploadFileError } from '@ark-ui/solid/file-upload' import { For } from 'solid-js' const errorMessages: Record = { TOO_MANY_FILES: '📊 Too many files selected (max 3 allowed)', FILE_INVALID_TYPE: '🚫 Invalid file type (only images and PDFs allowed)', FILE_TOO_LARGE: '📏 File too large (max 1MB)', FILE_TOO_SMALL: '📐 File too small (min 1KB)', FILE_INVALID: '⚠️ Invalid file', FILE_EXISTS: '🔄 File already exists', } export const ErrorHandling = () => ( File Upload with Validation Select Files {/* Accepted Files Section */}

✅ Accepted Files

{(fileUpload) => fileUpload().acceptedFiles.length === 0 ? (
No files uploaded yet
) : ( {(file) => (
PDF
Remove
)}
) }
{/* Rejected Files Section */}

❌ Rejected Files

{(fileUpload) => fileUpload().rejectedFiles.length === 0 ? (
No rejected files
) : ( {(fileRejection) => (
Validation Errors: {(error) =>
{errorMessages[error] || `❓ ${error}`}
}
)}
) }
) ``` #### Vue ```vue ``` #### Svelte ```svelte File Upload with Validation Select Files

✅ Accepted Files

{#snippet render(fileUpload)} {#if fileUpload().acceptedFiles.length === 0}
No files uploaded yet
{:else} {#each fileUpload().acceptedFiles as file (file.name)}
PDF
Remove
{/each} {/if} {/snippet}

❌ Rejected Files

{#snippet render(fileUpload)} {#if fileUpload().rejectedFiles.length === 0}
No rejected files
{:else} {#each fileUpload().rejectedFiles as fileRejection (fileRejection.file.name)}
Validation Errors: {#each fileRejection.errors as error}
{errorMessages[error] || `❓ ${error}`}
{/each}
{/each} {/if} {/snippet}
``` ### File Transformations Use `transformFiles` to process files before they're added. Useful for image compression, format conversion, or resizing. **Example: transform-files** #### React ```tsx import { FileUpload } from '@ark-ui/react/file-upload' import { compressAccurately } from 'image-conversion' import { ImageIcon, XIcon } from 'lucide-react' import styles from 'styles/file-upload.module.css' export const TransformFiles = () => { const transformFiles = async (files: File[]) => { return Promise.all( files.map(async (file) => { if (file.type.startsWith('image/')) { try { const blob = await compressAccurately(file, 200) return new File([blob], file.name, { type: blob.type }) } catch (error) { console.error('Compression failed for:', file.name, error) return file } } return file }), ) } return ( Upload with Compression Choose Images {({ acceptedFiles }) => acceptedFiles.map((file) => ( )) } ) } ``` #### Solid ```tsx import { FileUpload } from '@ark-ui/solid/file-upload' import { compressAccurately } from 'image-conversion' import { For } from 'solid-js' export const TransformFiles = () => { const transformFiles = async (files: File[]) => { return Promise.all( files.map(async (file) => { if (file.type.startsWith('image/')) { try { const blob = await compressAccurately(file, 200) return new File([blob], file.name, { type: blob.type }) } catch (error) { console.error('Compression failed for:', file.name, error) return file } } return file }), ) } return ( File Upload with Compression Choose Images {(fileUpload) => ( {(file) => ( Remove )} )} ) } ``` #### Vue ```vue ``` #### Svelte ```svelte Upload with Compression Choose Images {#snippet render(fileUpload)} {#each fileUpload().acceptedFiles as file (file.name)} X {/each} {/snippet} ``` ### Field Use `Field` to add helper text and error handling. **Example: with-field** #### React ```tsx import { Field } from '@ark-ui/react/field' import { FileUpload } from '@ark-ui/react/file-upload' import { FileIcon, UploadIcon, XIcon } from 'lucide-react' import field from 'styles/field.module.css' import styles from 'styles/file-upload.module.css' export const WithField = () => ( Attachments
Drop files here or click to browse
{({ acceptedFiles }) => acceptedFiles.map((file) => ( )) }
Upload up to 5 files Please upload at least one file
) ``` #### Solid ```tsx import { Field } from '@ark-ui/solid/field' import { FileUpload } from '@ark-ui/solid/file-upload' export const WithField = (props: Field.RootProps) => ( Label Select Additional Info Error Info ) ``` #### Vue ```vue ``` #### Svelte ```svelte Label Select Additional Info Error Info ``` ### Root Provider An alternative way to control the file upload is to use the `RootProvider` component and the `useFileUpload` hook. This way you can access the state and methods from outside the component. **Example: root-provider** #### React ```tsx import { FileUpload, useFileUpload } from '@ark-ui/react/file-upload' import { FileIcon, UploadIcon, XIcon } from 'lucide-react' import button from 'styles/button.module.css' import styles from 'styles/file-upload.module.css' export const RootProvider = () => { const fileUpload = useFileUpload({ maxFiles: 5 }) return (
File Upload
Drop files here or click to browse
{({ acceptedFiles }) => acceptedFiles.map((file) => ( )) }
) } ``` #### Solid ```tsx import { FileUpload, useFileUpload } from '@ark-ui/solid/file-upload' import { For } from 'solid-js' export const RootProvider = () => { const fileUpload = useFileUpload({ maxFiles: 5 }) return ( <> File Upload Drag your file(s)here Choose file(s) {(context) => ( {(file) => ( Any Icon X )} )} ) } ``` #### Vue ```vue ``` #### Svelte ```svelte
File Upload Drag your file(s) here Choose file(s) {#snippet render(context)} {#each context().acceptedFiles as file (file.name)} X {/each} {/snippet}
``` ### Pasting Files Use `setClipboardFiles` to enable pasting images from the clipboard. **Example: pasting-files** #### React ```tsx import { FileUpload, useFileUpload } from '@ark-ui/react/file-upload' import { ClipboardIcon, XIcon } from 'lucide-react' import field from 'styles/field.module.css' import styles from 'styles/file-upload.module.css' export const PastingFiles = () => { const fileUpload = useFileUpload({ maxFiles: 3, accept: 'image/*' }) return ( Upload with Paste {#each fileUpload().acceptedFiles as file (file.name)} X {/each} ``` ### Media Capture Use `capture` to access the device camera. Set to `"environment"` for back camera or `"user"` for front camera. **Example: media-capture** #### React ```tsx import { FileUpload } from '@ark-ui/react/file-upload' import { CameraIcon, FileIcon, XIcon } from 'lucide-react' import styles from 'styles/file-upload.module.css' export const MediaCapture = () => ( Capture Photo Open Camera {({ acceptedFiles }) => acceptedFiles.map((file) => ( {file.webkitRelativePath || file.name} )) } ) ``` #### Solid ```tsx import { FileUpload } from '@ark-ui/solid/file-upload' import { For } from 'solid-js' export const MediaCapture = () => ( Open Camera {(context) => ( {(file) => ( {file.webkitRelativePath || file.name} )} )} ) ``` #### Vue ```vue ``` #### Svelte ```svelte Open Camera {#snippet render(context)} {#each context().acceptedFiles as file (file.name)} {file.webkitRelativePath ?? file.name} {/each} {/snippet} ``` ### Rejected Files Access `rejectedFiles` from the context to display validation errors. **Example: rejected-files** #### React ```tsx import { FileUpload } from '@ark-ui/react/file-upload' import { AlertCircleIcon, CheckCircleIcon, UploadIcon, XIcon } from 'lucide-react' import styles from 'styles/file-upload.module.css' export const RejectedFiles = () => ( { console.log('Rejected files:', details) }} > Upload Files (Max 2)
Drop files here Maximum 2 files allowed
{({ acceptedFiles, rejectedFiles }) => ( <> {acceptedFiles.length > 0 && (
Accepted Files
{acceptedFiles.map((file) => ( ))}
)} {rejectedFiles.length > 0 && (
Rejected Files
{rejectedFiles.map(({ file, errors }) => (
{errors.map((error, index) => ( {error} ))}
))}
)} )}
) ``` #### Solid ```tsx import { FileUpload } from '@ark-ui/solid' import { XIcon } from 'lucide-solid' import { For } from 'solid-js' export const RejectedFiles = () => { return ( { console.log(fileRejection) }} > Drag and drop your images here {/* Accepted Files */}

Accepted Files

{(context) => ( {(file) => ( )} )}
{/* Rejected Files */}

Rejected Files

{(context) => ( {(fileRejection) => ( )} )}
) } ``` #### Vue ```vue ``` #### Svelte ```svelte console.log(fileRejection)}> Drag and drop your images here

Accepted Files

{#snippet render(context)} {#each context().acceptedFiles as file (file.name)} {/each} {/snippet}

Rejected Files

{#snippet render(context)} {#each context().rejectedFiles as { file, errors } (file.name)} {errors.join(', ')} {/each} {/snippet}
``` ## Guides ### File Previews Use `ItemPreview` with type matching to show appropriate previews based on file format. - `type="image/*"`: Shows image thumbnails using `ItemPreviewImage` - `type="video/*"`: For video file previews - `type="application/pdf"`: For PDF files - `type=".*"`: Generic fallback for any file type ```tsx ``` ### Disable Dropzone To disable drag-and-drop functionality, set `allowDrop` to `false`. ```tsx {/* ... */} ``` ### Prevent Document Drop By default, we prevent accidental navigation when files are dropped outside the dropzone. Set `preventDocumentDrop` to `false` to disable this. ```tsx {/* ... */} ``` ### Prevent Double Open Use `disableClick` on `Dropzone` when delegating clicks to a nested `Trigger`. This prevents the file picker from opening twice. ```tsx Choose Files Drag files here ``` ## API Reference ### Props **Component API Reference** #### React **Root Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `accept` | `Record | FileMimeType | FileMimeType[]` | No | The accept file types | | `acceptedFiles` | `File[]` | No | The controlled accepted files | | `allowDrop` | `boolean` | No | Whether to allow drag and drop in the dropzone element | | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `capture` | `'user' | 'environment'` | No | The default camera to use when capturing media | | `defaultAcceptedFiles` | `File[]` | No | The default accepted files when rendered. Use when you don't need to control the accepted files of the input. | | `directory` | `boolean` | No | Whether to accept directories, only works in webkit browsers | | `disabled` | `boolean` | No | Whether the file input is disabled | | `ids` | `Partial<{ root: string dropzone: string hiddenInput: string trigger: string label: string item: (id: string) => string itemName: (id: string) => string itemSizeText: (id: string) => string itemPreview: (id: string) => string }>` | No | The ids of the elements. Useful for composition. | | `invalid` | `boolean` | No | Whether the file input is invalid | | `locale` | `string` | No | The current locale. Based on the BCP 47 definition. | | `maxFiles` | `number` | No | The maximum number of files | | `maxFileSize` | `number` | No | The maximum file size in bytes | | `minFileSize` | `number` | No | The minimum file size in bytes | | `name` | `string` | No | The name of the underlying file input | | `onFileAccept` | `(details: FileAcceptDetails) => void` | No | Function called when the file is accepted | | `onFileChange` | `(details: FileChangeDetails) => void` | No | Function called when the value changes, whether accepted or rejected | | `onFileReject` | `(details: FileRejectDetails) => void` | No | Function called when the file is rejected | | `preventDocumentDrop` | `boolean` | No | Whether to prevent the drop event on the document | | `required` | `boolean` | No | Whether the file input is required | | `transformFiles` | `(files: File[]) => Promise` | No | Function to transform the accepted files to apply transformations | | `translations` | `IntlTranslations` | No | The localized messages to use. | | `validate` | `(file: File, details: FileValidateDetails) => FileError[] | null` | No | Function to validate a file | **Root Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | root | | `[data-disabled]` | Present when disabled | | `[data-dragging]` | Present when in the dragging state | **ClearTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **ClearTrigger Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | clear-trigger | | `[data-disabled]` | Present when disabled | **Dropzone Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `disableClick` | `boolean` | No | Whether to disable the click event on the dropzone | **Dropzone Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | dropzone | | `[data-invalid]` | Present when invalid | | `[data-disabled]` | Present when disabled | | `[data-dragging]` | Present when in the dragging state | **HiddenInput Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **ItemDeleteTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **ItemDeleteTrigger Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-delete-trigger | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemGroup Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `type` | `ItemType` | No | | **ItemGroup Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-group | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemName Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **ItemName Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-name | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemPreviewImage Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **ItemPreviewImage Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-preview-image | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemPreview Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `type` | `string` | No | The file type to match against. Matches all file types by default. | **ItemPreview Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-preview | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **Item Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `file` | `File` | Yes | | | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Item Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemSizeText Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **ItemSizeText Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-size-text | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **Label Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Label Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | label | | `[data-disabled]` | Present when disabled | | `[data-required]` | Present when required | **RootProvider Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `value` | `UseFileUploadReturn` | Yes | | | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Trigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Trigger Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | trigger | | `[data-disabled]` | Present when disabled | | `[data-invalid]` | Present when invalid | #### Solid **Root Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `accept` | `Record | FileMimeType | FileMimeType[]` | No | The accept file types | | `acceptedFiles` | `File[]` | No | The controlled accepted files | | `allowDrop` | `boolean` | No | Whether to allow drag and drop in the dropzone element | | `asChild` | `(props: ParentProps<'div'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `capture` | `'user' | 'environment'` | No | The default camera to use when capturing media | | `defaultAcceptedFiles` | `File[]` | No | The default accepted files when rendered. Use when you don't need to control the accepted files of the input. | | `directory` | `boolean` | No | Whether to accept directories, only works in webkit browsers | | `disabled` | `boolean` | No | Whether the file input is disabled | | `ids` | `Partial<{ root: string dropzone: string hiddenInput: string trigger: string label: string item: (id: string) => string itemName: (id: string) => string itemSizeText: (id: string) => string itemPreview: (id: string) => string }>` | No | The ids of the elements. Useful for composition. | | `invalid` | `boolean` | No | Whether the file input is invalid | | `locale` | `string` | No | The current locale. Based on the BCP 47 definition. | | `maxFiles` | `number` | No | The maximum number of files | | `maxFileSize` | `number` | No | The maximum file size in bytes | | `minFileSize` | `number` | No | The minimum file size in bytes | | `name` | `string` | No | The name of the underlying file input | | `onFileAccept` | `(details: FileAcceptDetails) => void` | No | Function called when the file is accepted | | `onFileChange` | `(details: FileChangeDetails) => void` | No | Function called when the value changes, whether accepted or rejected | | `onFileReject` | `(details: FileRejectDetails) => void` | No | Function called when the file is rejected | | `preventDocumentDrop` | `boolean` | No | Whether to prevent the drop event on the document | | `required` | `boolean` | No | Whether the file input is required | | `transformFiles` | `(files: File[]) => Promise` | No | Function to transform the accepted files to apply transformations | | `translations` | `IntlTranslations` | No | The localized messages to use. | | `validate` | `(file: File, details: FileValidateDetails) => FileError[] | null` | No | Function to validate a file | **Root Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | root | | `[data-disabled]` | Present when disabled | | `[data-dragging]` | Present when in the dragging state | **ClearTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `(props: ParentProps<'button'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **ClearTrigger Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | clear-trigger | | `[data-disabled]` | Present when disabled | **Dropzone Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `(props: ParentProps<'div'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `disableClick` | `boolean` | No | Whether to disable the click event on the dropzone | **Dropzone Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | dropzone | | `[data-invalid]` | Present when invalid | | `[data-disabled]` | Present when disabled | | `[data-dragging]` | Present when in the dragging state | **HiddenInput Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `(props: ParentProps<'input'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **ItemDeleteTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `(props: ParentProps<'button'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **ItemDeleteTrigger Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-delete-trigger | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemGroup Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `(props: ParentProps<'ul'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `type` | `ItemType` | No | | **ItemGroup Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-group | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemName Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `(props: ParentProps<'div'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **ItemName Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-name | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemPreviewImage Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `(props: ParentProps<'img'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **ItemPreviewImage Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-preview-image | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemPreview Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `(props: ParentProps<'div'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `type` | `string` | No | The file type to match against. Matches all file types by default. | **ItemPreview Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-preview | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **Item Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `file` | `File` | Yes | | | `asChild` | `(props: ParentProps<'li'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Item Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemSizeText Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `(props: ParentProps<'div'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **ItemSizeText Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-size-text | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **Label Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `(props: ParentProps<'label'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Label Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | label | | `[data-disabled]` | Present when disabled | | `[data-required]` | Present when required | **RootProvider Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `value` | `UseFileUploadReturn` | Yes | | | `asChild` | `(props: ParentProps<'div'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Trigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `(props: ParentProps<'button'>) => Element` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Trigger Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | trigger | | `[data-disabled]` | Present when disabled | | `[data-invalid]` | Present when invalid | #### Vue **Root Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `accept` | `Record | FileMimeType | FileMimeType[]` | No | The accept file types | | `allowDrop` | `boolean` | No | Whether to allow drag and drop in the dropzone element | | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `capture` | `'user' | 'environment'` | No | The default camera to use when capturing media | | `defaultAcceptedFiles` | `File[]` | No | The default accepted files | | `directory` | `boolean` | No | Whether to accept directories, only works in webkit browsers | | `disabled` | `boolean` | No | Whether the file input is disabled | | `id` | `string` | No | The unique identifier of the machine. | | `ids` | `Partial<{ root: string dropzone: string hiddenInput: string trigger: string label: string item(id: string): string itemName(id: string): string itemSizeText(id: string): string itemPreview(id: string): string }>` | No | The ids of the elements. Useful for composition. | | `invalid` | `boolean` | No | Whether the file input is invalid | | `locale` | `string` | No | The current locale. Based on the BCP 47 definition. | | `maxFiles` | `number` | No | The maximum number of files | | `maxFileSize` | `number` | No | The maximum file size in bytes | | `minFileSize` | `number` | No | The minimum file size in bytes | | `name` | `string` | No | The name of the underlying file input | | `preventDocumentDrop` | `boolean` | No | Whether to prevent the drop event on the document | | `required` | `boolean` | No | Whether the file input is required | | `transformFiles` | `(files: File[]) => Promise` | No | Function to transform the files | | `translations` | `IntlTranslations` | No | The localized messages to use. | | `validate` | `(file: File, details: FileValidateDetails) => FileError[] | null` | No | Function to validate a file | **Root Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | root | | `[data-disabled]` | Present when disabled | | `[data-dragging]` | Present when in the dragging state | **ClearTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **ClearTrigger Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | clear-trigger | | `[data-disabled]` | Present when disabled | **Dropzone Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `disableClick` | `boolean` | No | Whether to disable the click event on the dropzone | **Dropzone Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | dropzone | | `[data-invalid]` | Present when invalid | | `[data-disabled]` | Present when disabled | | `[data-dragging]` | Present when in the dragging state | **HiddenInput Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **ItemDeleteTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **ItemDeleteTrigger Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-delete-trigger | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemGroup Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `type` | `ItemType` | No | | **ItemGroup Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-group | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemName Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **ItemName Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-name | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemPreviewImage Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **ItemPreviewImage Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-preview-image | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemPreview Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `type` | `string` | No | The file type to match against. Matches all file types by default. | **ItemPreview Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-preview | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **Item Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `file` | `File` | Yes | | | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `type` | `ItemType` | No | | **Item Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemSizeText Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **ItemSizeText Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-size-text | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **Label Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Label Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | label | | `[data-disabled]` | Present when disabled | | `[data-required]` | Present when required | **RootProvider Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `value` | `FileUploadApi` | Yes | | | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Trigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. | **Trigger Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | trigger | | `[data-disabled]` | Present when disabled | | `[data-invalid]` | Present when invalid | #### Svelte **Root Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `accept` | `Record | FileMimeType | FileMimeType[]` | No | The accept file types | | `acceptedFiles` | `File[]` | No | The controlled accepted files | | `allowDrop` | `boolean` | No | Whether to allow drag and drop in the dropzone element | | `asChild` | `Snippet<[PropsFn<'div'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `capture` | `'user' | 'environment'` | No | The default camera to use when capturing media | | `defaultAcceptedFiles` | `File[]` | No | The default accepted files when rendered. Use when you don't need to control the accepted files of the input. | | `directory` | `boolean` | No | Whether to accept directories, only works in webkit browsers | | `disabled` | `boolean` | No | Whether the file input is disabled | | `id` | `string` | No | The unique identifier of the machine. | | `ids` | `Partial<{ root: string dropzone: string hiddenInput: string trigger: string label: string item: (id: string) => string itemName: (id: string) => string itemSizeText: (id: string) => string itemPreview: (id: string) => string }>` | No | The ids of the elements. Useful for composition. | | `invalid` | `boolean` | No | Whether the file input is invalid | | `locale` | `string` | No | The current locale. Based on the BCP 47 definition. | | `maxFiles` | `number` | No | The maximum number of files | | `maxFileSize` | `number` | No | The maximum file size in bytes | | `minFileSize` | `number` | No | The minimum file size in bytes | | `name` | `string` | No | The name of the underlying file input | | `onFileAccept` | `(details: FileAcceptDetails) => void` | No | Function called when the file is accepted | | `onFileChange` | `(details: FileChangeDetails) => void` | No | Function called when the value changes, whether accepted or rejected | | `onFileReject` | `(details: FileRejectDetails) => void` | No | Function called when the file is rejected | | `preventDocumentDrop` | `boolean` | No | Whether to prevent the drop event on the document | | `ref` | `Element` | No | | | `required` | `boolean` | No | Whether the file input is required | | `transformFiles` | `(files: File[]) => Promise` | No | Function to transform the accepted files to apply transformations | | `translations` | `IntlTranslations` | No | The localized messages to use. | | `validate` | `(file: File, details: FileValidateDetails) => FileError[] | null` | No | Function to validate a file | **Root Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | root | | `[data-disabled]` | Present when disabled | | `[data-dragging]` | Present when in the dragging state | **ClearTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `Snippet<[PropsFn<'button'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | **ClearTrigger Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | clear-trigger | | `[data-disabled]` | Present when disabled | **Context Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `render` | `Snippet<[UseFileUploadContext]>` | No | | **Dropzone Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `Snippet<[PropsFn<'div'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `disableClick` | `boolean` | No | Whether to disable the click event on the dropzone | | `ref` | `Element` | No | | **Dropzone Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | dropzone | | `[data-invalid]` | Present when invalid | | `[data-disabled]` | Present when disabled | | `[data-dragging]` | Present when in the dragging state | **HiddenInput Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `Snippet<[PropsFn<'input'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | **ItemDeleteTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `Snippet<[PropsFn<'button'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | **ItemDeleteTrigger Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-delete-trigger | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemGroup Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `Snippet<[PropsFn<'div'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | | `type` | `ItemType` | No | | **ItemGroup Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-group | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemName Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `Snippet<[PropsFn<'div'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | **ItemName Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-name | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemPreviewImage Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `Snippet<[PropsFn<'img'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | **ItemPreviewImage Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-preview-image | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemPreview Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `Snippet<[PropsFn<'div'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | | `type` | `string` | No | The file type to match against. Matches all file types by default. | **ItemPreview Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-preview | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **Item Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `file` | `File` | Yes | | | `asChild` | `Snippet<[PropsFn<'li'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | **Item Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **ItemSizeText Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `Snippet<[PropsFn<'div'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | **ItemSizeText Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | item-size-text | | `[data-disabled]` | Present when disabled | | `[data-type]` | The type of the item | **Label Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `Snippet<[PropsFn<'label'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | **Label Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | label | | `[data-disabled]` | Present when disabled | | `[data-required]` | Present when required | **RootProvider Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `value` | `UseFileUploadReturn` | Yes | | | `asChild` | `Snippet<[PropsFn<'div'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | **Trigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `asChild` | `Snippet<[PropsFn<'button'>]>` | No | Use the provided child element as the default rendered element, combining their props and behavior. | | `ref` | `Element` | No | | **Trigger Data Attributes:** | Attribute | Value | |-----------|-------| | `[data-scope]` | file-upload | | `[data-part]` | trigger | | `[data-disabled]` | Present when disabled | | `[data-invalid]` | Present when invalid | ### Context **API:** | Property | Type | Description | |----------|------|-------------| | `dragging` | `boolean` | Whether the user is dragging something over the root element | | `focused` | `boolean` | Whether the user is focused on the dropzone element | | `disabled` | `boolean` | Whether the file input is disabled | | `transforming` | `boolean` | Whether files are currently being transformed via `transformFiles` | | `openFilePicker` | `VoidFunction` | Function to open the file dialog | | `deleteFile` | `(file: File, type?: ItemType) => void` | Function to delete the file from the list | | `acceptedFiles` | `File[]` | The accepted files that have been dropped or selected | | `rejectedFiles` | `FileRejection[]` | The files that have been rejected | | `setFiles` | `(files: File[]) => void` | Sets the accepted files | | `clearFiles` | `VoidFunction` | Clears the accepted files | | `clearRejectedFiles` | `VoidFunction` | Clears the rejected files | | `getFileSize` | `(file: File) => string` | Returns the formatted file size (e.g. 1.2MB) | | `createFileUrl` | `(file: File, cb: (url: string) => void) => VoidFunction` | Returns the preview url of a file. Returns a function to revoke the url. | | `setClipboardFiles` | `(dt: DataTransfer) => boolean` | Sets the clipboard files Returns `true` if the clipboard data contains files, `false` otherwise. |