File upload components

Dropzones, progress lists, image pickers and paste-to-upload.

Upload is one of the few interactions where the happy path is the easy half. What these get right is the rest: per-file progress, a cancel that actually aborts the request, a rejection message that names the reason, and a drop target big enough to hit. Drag-and-drop is an enhancement over a real `<input type="file">`, never a replacement.

7 matching7 blocksFree to copy
Open the full page for this block

Drag & Drop Upload

Dropzone with per-file progress and a drag counter that fixes the flicker every naive dragleave handler produces.

File Upload219 lines1 dep
Open the full page for this block

CSV Column Mapper

The screen between "file uploaded" and "data imported": source columns mapped to schema fields, with a sample value under each and required fields blocking the button.

File Upload280 lines1 dep
Open the full page for this block

Upload Progress List

The list that follows the dropzone: complete, uploading, queued and failed rows with cancel and retry — because hiding the failure is the classic upload bug.

File Upload171 lines1 dep
Open the full page for this block

Resumable Large Upload

One big file on a connection that will drop: a bar allowed to go backwards when a chunk is retried, a time estimate that is a range or nothing, and a promise about closing the tab made before it is needed.

File Upload237 lines1 dep
Open the full page for this block

Avatar Crop & Upload

Framing a profile photo with keyboard-operable zoom and position, showing what gets trimmed rather than hiding it behind the mask.

File Upload268 lines1 dep
Open the full page for this block

Upload Requirements Form

An upload form that states the constraints before the file is chosen, rather than rejecting it after a two-minute transfer.

File Upload184 linesNo deps
Open the full page for this block

Import From URL Form

The import path for a file that is already on the internet, which does not need to travel through the browser at all.

File Upload178 linesNo deps

Questions about file upload components

Is a drag-and-drop zone keyboard accessible?
Only if there is still a real file input underneath — which there is in all of these. The dropzone is a label for it, so Enter opens the picker and the browser handles the rest.
Where should validation happen?
Both ends. Client-side checks on type and size give instant feedback; the server has to repeat them, because the client check is a convenience and not a control.
Are these file upload components free to use?
All 7 are free to copy and use in your own projects, including commercial ones. A Pro licence exists for redistribution — shipping them inside a product other people buy — and the full terms are on the licence page.
How do I add one to my project?
Install it with the CLI: `npx hoverlab add file-dropzone` writes the component and its dependencies into your project. Every artifact here also has a copy button for the raw source, and an "Open in sandbox" link if you would rather try it first.