1. framework components
  2. file upload

File Upload

File upload dropzone and input patterns for selecting files.

Select file or drag here.

    Disabled

    Set the disabled prop to enable the disabled state.

      Button Only

      Replace the interface with a simple “browse” button.

      Provider Pattern

      Use the Provider Pattern to gain access to the inner component APIs.

      • example.png
        4 bytes

      Direction

      Set the text direction (ltr or rtl) using the dir prop.

        API Reference

        Root

        txt
        flex flex-col gap-2 w-full data-disabled:disabled
        PropDefaultType
        namestring | undefined

        The name of the underlying file input

        idsPartial<{ 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; }> | undefined

        The ids of the elements. Useful for composition.

        translationsIntlTranslations | undefined

        The localized messages to use.

        acceptRecord<string, string[]> | FileMimeType | FileMimeType[] | undefined

        The accept file types

        disabledboolean | undefined

        Whether the file input is disabled

        requiredboolean | undefined

        Whether the file input is required

        allowDroptrueboolean | undefined

        Whether to allow drag and drop in the dropzone element

        maxFileSizeInfinitynumber | undefined

        The maximum file size in bytes

        minFileSize0number | undefined

        The minimum file size in bytes

        maxFiles1number | undefined

        The maximum number of files

        preventDocumentDroptrueboolean | undefined

        Whether to prevent the drop event on the document

        validate((file: File, details: FileValidateDetails) => FileError[] | null) | undefined

        Function to validate a file

        defaultAcceptedFilesFile[] | undefined

        The default accepted files when rendered. Use when you don't need to control the accepted files of the input.

        acceptedFilesFile[] | undefined

        The controlled accepted files

        onFileChange((details: FileChangeDetails) => void) | undefined

        Function called when the value changes, whether accepted or rejected

        onFileAccept((details: FileAcceptDetails) => void) | undefined

        Function called when the file is accepted

        onFileReject((details: FileRejectDetails) => void) | undefined

        Function called when the file is rejected

        capture"user" | "environment" | undefined

        The default camera to use when capturing media

        directoryboolean | undefined

        Whether to accept directories, only works in webkit browsers

        invalidboolean | undefined

        Whether the file input is invalid

        transformFiles((files: File[]) => Promise<File[]>) | undefined

        Function to transform the accepted files to apply transformations

        locale"en-US"string | undefined

        The current locale. Based on the BCP 47 definition.

        dir"ltr""ltr" | "rtl" | undefined

        The document's text/writing direction.

        getRootNode(() => ShadowRoot | Node | Document) | undefined

        A root node to correctly resolve document in custom environments. E.x.: Iframes, Electron.

        element((attributes: HTMLAttributes<"div">) => Element) | undefined

        Render the element yourself

        Provider

        PropDefaultType
        valueFileUploadApi<PropTypes>

        element((attributes: HTMLAttributes<"div">) => Element) | undefined

        Render the element yourself

        Context

        PropDefaultType
        children(fileUpload: FileUploadApi<PropTypes>) => ReactNode

        Label

        txt
        label-text
        PropDefaultType
        element((attributes: HTMLAttributes<"label">) => Element) | undefined

        Render the element yourself

        Dropzone

        txt
        card px-4 py-10 border border-dashed border-surface-200-800 flex flex-col justify-center items-center gap-2 data-dragging:preset-tonal
        PropDefaultType
        element((attributes: HTMLAttributes<"div">) => Element) | undefined

        Render the element yourself

        Trigger

        txt
        btn preset-filled
        PropDefaultType
        element((attributes: HTMLAttributes<"button">) => Element) | undefined

        Render the element yourself

        HiddenInput

        PropDefaultType
        element((attributes: HTMLAttributes<"input">) => Element) | undefined

        Render the element yourself

        ItemGroup

        txt
        flex flex-col gap-2
        PropDefaultType
        element((attributes: HTMLAttributes<"ul">) => Element) | undefined

        Render the element yourself

        Item

        txt
        grid grid-cols-[auto_1fr_auto] gap-4 items-center preset-tonal px-4 py-2 rounded
        PropDefaultType
        fileFile

        typeItemType | undefined

        element((attributes: HTMLAttributes<"li">) => Element) | undefined

        Render the element yourself

        ItemName

        txt
        text-sm
        PropDefaultType
        element((attributes: HTMLAttributes<"div">) => Element) | undefined

        Render the element yourself

        ItemSizeText

        txt
        text-xs opacity-60
        PropDefaultType
        element((attributes: HTMLAttributes<"div">) => Element) | undefined

        Render the element yourself

        ItemDeleteTrigger

        txt
        btn-icon
        PropDefaultType
        element((attributes: HTMLAttributes<"button">) => Element) | undefined

        Render the element yourself

        View page on GitHub