import React, { useCallback } from 'react'; import { Upload } from 'lucide-react'; import type { ImageFile } from '../types'; interface DropZoneProps { onFilesDrop: (files: ImageFile[]) => void; } export function DropZone({ onFilesDrop }: DropZoneProps) { const handleDrop = useCallback((e: React.DragEvent) => { e.preventDefault(); const files = Array.from(e.dataTransfer.files) .filter(file => file.type.startsWith('image/') || file.name.toLowerCase().endsWith('jxl')) .map(file => ({ id: crypto.randomUUID(), file, status: 'pending' as const, originalSize: file.size, })); onFilesDrop(files); }, [onFilesDrop]); const handleDragOver = useCallback((e: React.DragEvent) => { e.preventDefault(); }, []); const handleFileInput = useCallback((e: React.ChangeEvent) => { const files = Array.from(e.target.files || []) .filter(file => file.type.startsWith('image/') || file.name.toLowerCase().endsWith('jxl')) .map(file => ({ id: crypto.randomUUID(), file, status: 'pending' as const, originalSize: file.size, })); onFilesDrop(files); e.target.value = ''; }, [onFilesDrop]); return (
); }