import React, { useState, useCallback, useRef } from 'react'; import { FileIcon, XIcon, UploadIcon } from './Icons'; interface FileUploadProps { onFileChange: (file: File | null) => void; } export const FileUpload: React.FC = ({ onFileChange }) => { const [fileName, setFileName] = useState(null); const [isDragOver, setIsDragOver] = useState(false); const fileInputRef = useRef(null); const handleFileSelect = useCallback((event: React.ChangeEvent) => { const file = event.target.files?.[0]; if (file) { setFileName(file.name); onFileChange(file); } }, [onFileChange]); const handleRemoveFile = useCallback((e: React.MouseEvent) => { e.stopPropagation(); e.preventDefault(); setFileName(null); onFileChange(null); if (fileInputRef.current) { fileInputRef.current.value = ""; } }, [onFileChange]); const onDragOver = useCallback((e: React.DragEvent) => { e.preventDefault(); setIsDragOver(true); }, []); const onDragLeave = useCallback((e: React.DragEvent) => { e.preventDefault(); setIsDragOver(false); }, []); const onDrop = useCallback((e: React.DragEvent) => { e.preventDefault(); setIsDragOver(false); const file = e.dataTransfer.files?.[0]; if (file) { setFileName(file.name); onFileChange(file); } }, [onFileChange]); return (
{!fileName ? ( ) : (
{fileName} Pronto para análise
)}
); };