import React, { useCallback, useState } from 'react'; import { UploadIcon } from './icons/UploadIcon'; interface BulkImporterProps { onProcess: (files: FileList) => void; isProcessing: boolean; } export const BulkImporter: React.FC = ({ onProcess, isProcessing }) => { const [isDragging, setIsDragging] = useState(false); const handleFiles = (files: FileList | null) => { if (files && files.length > 0 && !isProcessing) { onProcess(files); } }; const handleFileChange = (e: React.ChangeEvent) => { handleFiles(e.target.files); // Reset input value to allow selecting the same file again e.target.value = ''; }; const handleDragEnter = useCallback((e: React.DragEvent) => { e.preventDefault(); e.stopPropagation(); if (!isProcessing) setIsDragging(true); }, [isProcessing]); const handleDragLeave = useCallback((e: React.DragEvent) => { e.preventDefault(); e.stopPropagation(); setIsDragging(false); }, []); const handleDrop = useCallback((e: React.DragEvent) => { e.preventDefault(); e.stopPropagation(); setIsDragging(false); if (!isProcessing && e.dataTransfer.files) { handleFiles(e.dataTransfer.files); } }, [isProcessing, onProcess]); const borderColor = isDragging ? 'border-brand-primary' : 'border-gray-300 dark:border-gray-600'; const bgColor = isDragging ? 'bg-brand-light/50 dark:bg-brand-dark/20' : 'bg-gray-50 dark:bg-gray-800'; return (
); };