"use client"; import React, { useRef, useState } from "react"; type UploadAreaProps = { onFilesSelected?: (files: File[]) => void; className?: string; }; export default function UploadArea({ onFilesSelected, className, }: UploadAreaProps) { const fileInputRef = useRef(null); const [isDragging, setIsDragging] = useState(false); const handleClick = () => fileInputRef.current?.click(); const handleDragOver: React.DragEventHandler = (e) => { e.preventDefault(); setIsDragging(true); }; const handleDragLeave: React.DragEventHandler = () => { setIsDragging(false); }; const handleDrop: React.DragEventHandler = (e) => { e.preventDefault(); setIsDragging(false); if (e.dataTransfer?.files?.length) { onFilesSelected?.(Array.from(e.dataTransfer.files)); } }; const handleChange: React.ChangeEventHandler = (e) => { if (e.target.files?.length) { onFilesSelected?.(Array.from(e.target.files)); // reset input to allow re-selecting the same file e.currentTarget.value = ""; } }; return (
Upload files here
or click to browse files
); }