1. framework components
  2. file upload

File Upload

File upload dropzone and input patterns for selecting files.

    Custom Content

    Supply your own text and icons within the dropzone.

    Select file or drag here.

      Disabled

        Button Only

        Clear Files

        • example.png
          4 bytes

        Direction

          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