Components

Choose a file and keep going

The picker opens the system chooser on a phone and accepts a drop on a computer. A chosen file gets its preview, name, size and Remove control. Sites pass the transfer function that reaches Media.

See progress states →

Try the picker

This example stays on your device; it does not upload the file.

Use it

<link rel="stylesheet" href="/shared/ov-upload.css">
<script src="/shared/ov-upload.js" defer></script>
<div id="files"></div>
<script>
  OVUpload.queue(document.querySelector('#files'), {
    label: 'Choose files', multiple: true, concurrency: 3,
    upload: (file, { onProgress, signal }) => media.upload(file, { onProgress, signal })
  });
</script>

Use OVUpload.picker for a single file. Use OVUpload.queue for multiple files and a total progress bar. The transport owns retry and resume; Media's multipart API supports both.

Tokens: --ov-accent for focus, --ov-line for the drop card, --ov-surface for its background. The native input is labelled and visually hidden.