import React, { useCallback, useState } from 'react'; import { Upload as UploadIcon, FileText, Image as ImageIcon, Folder, FileUp, ShieldCheck } from 'lucide-react'; import { useLanguage } from '../contexts/LanguageContext'; import { motion, AnimatePresence } from 'framer-motion'; interface DragDropUploadProps { onFilesSelected: (files: FileList) => void; isAdmin: boolean; globalMode?: boolean; } export const DragDropUpload: React.FC = ({ onFilesSelected, isAdmin, globalMode = false }) => { const { t } = useLanguage(); const [isDragging, setIsDragging] = useState(false); const handleDragEnter = useCallback((e: React.DragEvent) => { e.preventDefault(); e.stopPropagation(); if (e.dataTransfer.items && e.dataTransfer.items.length > 0) { setIsDragging(true); } }, []); const handleDragLeave = useCallback((e: React.DragEvent) => { e.preventDefault(); e.stopPropagation(); setIsDragging(false); }, []); const handleDragOver = useCallback((e: React.DragEvent) => { e.preventDefault(); e.stopPropagation(); e.dataTransfer.dropEffect = 'copy'; }, []); const handleDrop = useCallback((e: React.DragEvent) => { e.preventDefault(); e.stopPropagation(); setIsDragging(false); if (e.dataTransfer.files && e.dataTransfer.files.length > 0) { onFilesSelected(e.dataTransfer.files); e.dataTransfer.clearData(); } }, [onFilesSelected]); const handleFileInput = (e: React.ChangeEvent) => { if (e.target.files && e.target.files.length > 0) { onFilesSelected(e.target.files); e.target.value = ''; } }; if (!isAdmin) return null; return ( document.getElementById('file-upload-input')?.click()} >

{t('dragDropUploadTitle')}

{t('dragDropUploadDesc')}

{t('secureIngestion')}
{t('documentsAndText')}
{t('imagesAndVision')}
{isDragging && (
{t('dropToIngest')}
)}
); };