'use client'; import { useRef, useState, DragEvent, ChangeEvent } from 'react'; interface FileUploadProps { onFileContent: (text: string, fileName: string) => void; } export default function FileUpload({ onFileContent }: FileUploadProps): React.ReactElement { const [isDragging, setIsDragging] = useState(false); const [fileName, setFileName] = useState(null); const [error, setError] = useState(null); const inputRef = useRef(null); function handleFile(file: File): void { if (file.type !== 'application/pdf') { setError('Only PDF files are supported'); return; } setError(null); setFileName(file.name); const reader = new FileReader(); reader.onload = () => { onFileContent(reader.result as string, file.name); }; reader.readAsDataURL(file); } function handleDrop(e: DragEvent): void { e.preventDefault(); setIsDragging(false); const file = e.dataTransfer.files[0]; if (file) handleFile(file); } function handleChange(e: ChangeEvent): void { const file = e.target.files?.[0]; if (file) handleFile(file); } return (
inputRef.current?.click()} onDragOver={(e) => { e.preventDefault(); setIsDragging(true); }} onDragLeave={() => setIsDragging(false)} onDrop={handleDrop} className={`border-2 border-dashed rounded-lg p-12 text-center cursor-pointer transition-colors ${ isDragging ? 'border-blue-500 bg-blue-50' : 'border-gray-300 hover:border-gray-400' }`} > {fileName ? (

📄 {fileName}

Click to replace

) : (

Drag a PDF here, or click to browse

PDF only

)}
{error &&

{error}

}
); }