File Upload

A drag-and-drop file intake surface for business documents — résumés, attachments, deal-room docs. Accessible-first (a real, keyboard-operable file input; drag is progressive enhancement) and transport-agnostic (it owns file state, validation, and per-item status/progress display — the consumer drives the actual upload and reports progress back through a controlled `files` array). Typed rejections (type/size/count/totalSize/duplicate), directory drop, a running total, retry/remove, and drag-reorder — with rows composed from List + per-row Progress.

Stablev0.3.0@garn/ui/file-upload

Default

Uncontrolled — the component holds the queue; a plain document field with accept + maxSize.

Uploading

Controlled — a fake transport ticks each file to success; one is forced to fail to show the error + Retry.

Validation

Typed rejections surfaced to the user — accept + per-file + count limits, every reason reported.

Reorderable

Attachments the user can drag to reorder (via List's Sortable wiring).

Directory

Folder drop + a running total capped by maxTotalSize, with a custom dropzone prompt.

0 files · 0 B of 19.1 MB

Disabled

The whole surface inert.