Skip to content

shadcn.io is not affiliated with official shadcn/ui

Shadcn File Upload for React Radix UI

A component that allows users to upload files.

Framework
UI library

Radix UI does not include this primitive, so this page uses the Ark UI component. The visuals match the Ark UI version.

Upload files
Drag and drop or click to browse. PNG, JPG, PDF up to 10MB.

Installation

bunx --bun shadcn@latest add https://kit.dev/r/radix/file-upload.json

Anatomy

FileUpload
├── FileUploadDropzone
├── FileUploadItem
│   ├── FileUploadItemDeleteTrigger
│   ├── FileUploadItemGroup
│   ├── FileUploadItemName
│   ├── FileUploadItemPreview
│   │   └── FileUploadItemPreviewImage
│   └── FileUploadItemSize
├── FileUploadLabel
├── FileUploadTrigger
└── FileUploadClearTrigger

Usage

import { Button } from "@/components/ui/button";
import {
  FileUpload,
  FileUploadDescription,
  FileUploadDropzone,
  FileUploadDropzoneIcon,
  FileUploadHelper,
  FileUploadList,
  FileUploadTitle,
  FileUploadTrigger,
} from "@/components/ui/file-upload";
import { Separator } from "@/components/ui/separator";
<FileUpload className="mx-auto w-full max-w-xs">
  <FileUploadDropzone>
    <FileUploadDropzoneIcon />
    <FileUploadTitle>Drop files here</FileUploadTitle>
    <div className="flex items-center justify-center gap-2">
      <Separator />
      <FileUploadDescription>or</FileUploadDescription>
      <Separator />
    </div>
    <FileUploadTrigger asChild>
      <Button>Browse files</Button>
    </FileUploadTrigger>
    <FileUploadHelper>
      You can upload up to 2 files at a time.
    </FileUploadHelper>
  </FileUploadDropzone>
  <FileUploadList />
</FileUpload>

Accessibility

KeyDescription
Enter
Activate the focused control.
Space
Activate the focused control.

Demos

Accepted File Types

Clear Trigger

Custom Preview

Custom Spacing

Directory Upload

Dropzone

Media Capture

Multiple Files

Trigger

With Field

API Reference

FileUpload

div

PropType
AttributeType

FileUploadDropzone

div

PropType
AttributeType

FileUploadItem

li

PropType
AttributeType

FileUploadItemDeleteTrigger

button

PropType
AttributeType

FileUploadItemGroup

ul

PropType
AttributeType

FileUploadItemName

div

PropType
AttributeType

FileUploadItemPreview

div

PropType
AttributeType

FileUploadItemPreviewImage

img

PropType
AttributeType

FileUploadItemSize

div

PropType
AttributeType

FileUploadTrigger

button

PropType
AttributeType

FileUploadClearTrigger

button

PropType
AttributeType

FileUploadDropzoneIcon

div

PropType
AttributeType

FileUploadTitle

div

PropType
AttributeType

FileUploadDescription

div

PropType
AttributeType

FileUploadHelper

div

PropType
AttributeType

FileUploadList

li

PropType
AttributeType

FileUploadRootProvider

div

PropType
valueUseFileUploadReturn
AttributeType

useFileUpload

PropType