Saltar al contenido
Logic2BUI

Buscar en la documentación

Busca componentes y documentación

Nuevo
Menú

Zona de archivos

Superficie para arrastrar y soltar archivos que también abre el explorador mediante clic o teclado, construida sobre DnD nativo.

Click to upload or drag and drop

Instalación

npx logic2b@next add file-dropzone

Uso

import { FileDropzone } from "@/components/ui/file-dropzone"

<FileDropzone
  inputLabel="Subir imágenes de producto"
  multiple
  accept="image/*"
  onFiles={(files) => upload(files)}
/>

Se resalta mientras se arrastra un archivo sobre ella y llama a onFiles con el File[] soltado o seleccionado. La lista de archivos, las previsualizaciones y el progreso de subida quedan a tu cargo: pasa contenido propio como children para sustituir el icono y mensaje predeterminados.

Accesibilidad

La superficie es una región con role="button", admite foco y responde a Intro o Espacio para abrir el selector de archivos, por lo que funciona sin ratón. Junto a ella se genera un <input type="file"> nativo con etiqueta, fuera de la región de botón, para evitar controles interactivos anidados. Usa inputLabel para describir la finalidad de la subida.

Playground interactivo

Edita las propiedades del componente y revisa el JSX exacto antes de copiarlo. La vista previa se carga solo cuando esta sección entra en pantalla.

JSX generado
<FileDropzone
  accept="image/*"
  multiple
  inputLabel="Upload project images"
  className="w-full max-w-md"
 />

Referencia de API

Generada a partir de las exportaciones públicas de TypeScript en src/ui/file-dropzone.tsx. Las descripciones técnicas conservan el texto canónico del código fuente.

Ver JSON

FileDropzoneProps

Tipo
interface FileDropzoneProps extends Omit<React.ComponentProps<"div">, "onDrop" | "children"> { /** Called with the accepted files when they are dropped or selected. */ onFiles?: (files: File[]) => void /** `accept` attribute forwarded to the file input (e.g. `"image/*"`). */ accept?: string /** Allow selecting more than one file. Default `false`. */ multiple?: boolean disabled?: boolean /** Accessible name for the native file input. Default `"Upload files"`. */ inputLabel?: string /** Replace the default icon/prompt with your own content. */ children?: React.ReactNode }

FileDropzone

Componente

A drag-and-drop file surface with click / keyboard to browse. Native DnD (no dependencies): highlights while a file is dragged over it and calls `onFiles` with the dropped or selected files. Rendering the file list is left to the consumer.

Props: FileDropzoneProps
PropiedadTipoObligatoriaValor predeterminadoDescripción
onFiles(files: File[]) => voidNo—Called with the accepted files when they are dropped or selected.
acceptstringNo—`accept` attribute forwarded to the file input (e.g. `"image/*"`).
multiplebooleanNofalseAllow selecting more than one file. Default `false`.
disabledbooleanNo——
inputLabelstringNo"Upload files"Accessible name for the native file input. Default `"Upload files"`.
childrenReact.ReactNodeNo—Replace the default icon/prompt with your own content.

Contrato de accesibilidad

Comportamiento legible por máquinas y responsabilidades de quien integra file-dropzone. Los detalles normativos conservan el texto canónico del registro.

Ver JSON
Soporte
Comportamiento implementado
Patrón
file upload
HTMLInputElement type=file
Interacciones de teclado para file-dropzone
TeclasComportamiento
Enter SpaceActivate the focused control.

Semántica incorporada

  • A hidden native file input owns the picker; the visible drop surface is keyboard activatable.

Responsabilidades de integración

  • Provide contextual instructions, accepted formats and validation feedback.