FileUpload

Drag-and-drop file upload zone with file previews and validation.

Live Demo

Single file

Multiple images, max 2MB

Props

PropTypeDefaultDescription
acceptstringAccepted file types (e.g. image/*)
multiplebooleanfalseAllow multiple file selection
maxSizenumberMaximum file size in bytes
maxFilesnumberMaximum number of files
onFilesChange(files: FileUploadFile[]) => voidCallback with current file list
disabledbooleanfalseDisables the upload zone
labelstring'Drop files here or click to upload'Primary label text
hintstringHint text (e.g. file types)
errorstringError message

Usage

import { FileUpload, FileUploadFile } from '@ghiberti85/ui'

const [files, setFiles] = useState<FileUploadFile[]>([])

// Basic
<FileUpload onFilesChange={setFiles} />

// Images only, max 5MB
<FileUpload
  accept="image/*"
  multiple
  maxSize={5_000_000}
  maxFiles={10}
  label="Upload images"
  hint="PNG, JPG, GIF up to 5MB"
  onFilesChange={setFiles}
/>

// Access file data
files.forEach(({ file, id, preview }) => {
  console.log(file.name, file.size)
})

View in Storybook

Open in Storybook
Ghiberti UI — Design System