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.
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.