components
file-uploader
Upload de arquivos com drag-and-drop ou click. Lista de arquivos selecionados com remoção individual.
overview
arraste arquivos ou clica pra escolher
máx 10MB · png, jpg, pdf
variantes
Multi-file
arraste vários arquivos
aceita múltiplos
Single file
enviar foto de perfil
jpg ou png · até 5MB
comportamentos
- Click na zona abre o file picker
- Drag-and-drop de arquivo(s) sobre a zona destaca borda
- Drop registra os arquivos
- Lista mostra nome, tamanho formatado (KB/MB) e botão remover
- Remover é só visual — em produção precisa interagir com upload state
modifiers · api
| prop | tipo | default | descrição |
|---|---|---|---|
| .file-uploader | class | — | zona drop |
| .file-list | class | — | lista de arquivos selecionados |
| .is-dragover | class | — | estado durante drag (auto) |
| accept | attr | — | filtro de tipos (image/*, .pdf) |
| multiple | attr | — | permite múltiplos |
quando usar
use
não use
acessibilidade
- Zona com tabindex='0' pra ser focável
- Input file sempre presente (mesmo escondido) — fallback total
- role="button" implícito quando interativo
- Lista de arquivos anunciada por SR (region com aria-live)
- Botão remover com aria-label
código
<div class="file-uploader" tabindex="0">
<div class="uploader-icon">↑</div>
<div class="uploader-text">arraste ou <strong>escolha</strong></div>
<div class="uploader-hint">máx 10MB · png, jpg</div>
<input type="file" multiple>
</div>
<ul class="file-list"></ul>