build69
build69  /  Components  /  Media & Files  /  Upload

Upload

v1.0.7Updated 27 Aug 2026

Upload component with four visual variants (default panel / compact / avatar / gallery), drag-drop, per-file progress, pause / resume / retry, and DnD reorder.

Preview

Live · 13 stories
DefaultOpen ↗
Why this is recommendedformuploadfiledropzone+4

The default, out-of-the-box Upload.

Recommended for+14
  • Resumable multi-file uploads
  • Image gallery uploads
  • Document attachment pickers
Tags+6
formuploadfiledropzoneprogresspausereorderdefault
Features+4
  • Variants: default panel / compact / avatar / gallery
  • Drag-drop zone with hover affordance
  • Per-file progress bar
  • Pause / resume / retry per upload
  • DnD reorder of accepted files
  • Rejection feedback (size / type / count)
  • i18n: labels prop overrides every built-in string (status pills, rejection reasons, dropzone prompt/helper, aria-labels); percentages and byte sizes format through LocaleProvider (prettyBytes accepts an optional FormatLocale)
Not recommended for−2
  • Single trivial file input (use Input type="file")
  • File browser (use FileBrowser)

Install

Ask your agent, or call the MCP tool directly. The resolved bundle is written into your project.

get_registry_item({ name: "Upload" })

Usage

import { Upload } from '@/components/media/upload';

<Upload variant="gallery" accept={['image/*']} maxFiles={10} pausable reorderable onUpload={upload} />

Tick variants in the left menu — each adds a tab with that variant’s real story source, the same code the preview above renders.

Props

PropTypeRequired
variant

Visual layout

'default' | 'compact' | 'avatar' | 'gallery'
onUpload

Upload handler returning a progress observable

function
accept

Allowed MIME types or extensions

string[]
maxFiles

Max total files

number
maxSize

Max single-file size in bytes

number
pausable

Allow pause / resume per file

boolean
reorderable

Allow DnD reorder of files

boolean
labels

Override any built-in UI string — status pills, rejection reasons, dropzone prompt ({browse} token), action aria-labels (i18n). Merged over DEFAULT_UPLOAD_LABELS; {token} templates for parameterized strings. Percentages and byte sizes follow LocaleProvider.

Partial<UploadLabels>

Related