Concrete
media
Component

Image upload

Image-specific upload composition with previews, accept filtering, and avatar/grid variants.

Image upload is a tuned FileUpload preset for media previews. It does not crop, transform, or store assets.

Upload imagesDrop images here or choose from disk.
interface-reference.png820 KB
Playground

Props in the URL.

Controls update query params directly. Complex slots use curated fixtures so component states stay deterministic, linkable, and screenshot-ready.

Loading playground.
States

Rendered matrix.

Every state maps to the same component render route through the `state` query param.

Upload imagesDrop images here or choose from disk.
interface-reference.png820 KB
Single

Single preview image upload.

/render state
Upload imagesDrop images here or choose from disk.
interface-reference.png820 KB
Avatar

Compact avatar-oriented image picker.

/render state
Upload imagesDrop images here or choose from disk.
interface-reference.png820 KB
Grid

Multi-image grid treatment.

/render state
Props

Public contract.

NameTypeDefaultDescription
variant'single' | 'avatar' | 'grid'singleImage preview layout preset.
valuereadonly UploadItemValue[]-Controlled image queue.
defaultValuereadonly UploadItemValue[][]Uncontrolled initial image queue.
multiplebooleantrueAllows multiple images in the queue.
onValueChange(value: readonly UploadItemValue[]) => void-Receives queue values.
labelReactNode-Field label.