"use client"; import React, { useRef, useState } from "react"; type UploadAreaProps = { onFilesSelected?: (files: FileList) => 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?.(e.dataTransfer.files); } }; const handleChange: React.ChangeEventHandler = (e) => { if (e.target.files?.length) { onFilesSelected?.(e.target.files); // reset input to allow re-selecting the same file e.currentTarget.value = ""; } }; return (
Upload files here
or click to browse files
); }