react ~7 KB 0 deps v0.1.0 ↗ GitHub ↗

@mshafiqyajid/react-file-upload

Headless file upload hook and styled component. Revamped dropzone UI with customisable labels, drag-and-drop, image previews, custom preview renderer, validation callbacks, multi-file.

Playground #

Drop files here

or

Props
TSX
import { FileUploadStyled } from "@mshafiqyajid/react-file-upload/styled";
import "@mshafiqyajid/react-file-upload/styles.css";

<FileUploadStyled />

Install #

npm install @mshafiqyajid/react-file-upload

Quick start #

import { FileUploadStyled } from "@mshafiqyajid/react-file-upload/styled";
import "@mshafiqyajid/react-file-upload/styles.css";

<FileUploadStyled
  multiple
  accept="image/*"
  maxSize={5242880}
  showPreview
  onFiles={(result) => console.log(result.files, result.errors)}
/>

API #

PropTypeDefaultDescription
variant"dropzone" | "button""dropzone"Upload widget style
multiplebooleanfalseAllow multiple files
acceptstringAccepted file types (MIME or extension)
maxSizenumberMax file size in bytes
maxFilesnumberMax number of files
showPreviewbooleantrueShow image previews
size"sm" | "md" | "lg""md"Component size
onFiles(result) => voidCalled when files change. result.files, result.errors
disabledbooleanfalseDisable interaction
uploadTextstring"Drop files here"Main dropzone label
browseTextstring"browse"Browse link text
renderPreview(file, onRemove) => ReactNodeCustom preview renderer
onError(errors: string[]) => voidValidation error callback
Edit this page on GitHub