import { useState } from 'react'; import { Button, SegmentInput, Checkbox, Spinner } from '@ifrc-go/ui'; import styles from './ExportModal.module.css'; interface ExportModalProps { isOpen: boolean; onClose: () => void; onExport: (mode: 'standard' | 'fine-tuning', selectedTypes: string[]) => void; filteredCount: number; totalCount: number; hasFilters: boolean; crisisMapsCount: number; droneImagesCount: number; isLoading?: boolean; exportSuccess?: boolean; variant?: 'bulk' | 'single'; onNavigateToList?: () => void; onNavigateAndExport?: () => void; } export default function ExportModal({ isOpen, onClose, onExport, crisisMapsCount, droneImagesCount, isLoading = false, exportSuccess = false, variant = 'bulk', onNavigateAndExport }: ExportModalProps) { const [exportMode, setExportMode] = useState<'standard' | 'fine-tuning'>('standard'); const [trainSplit, setTrainSplit] = useState(80); const [testSplit, setTestSplit] = useState(10); const [valSplit, setValSplit] = useState(10); const [crisisMapsSelected, setCrisisMapsSelected] = useState(true); const [droneImagesSelected, setDroneImagesSelected] = useState(true); const handleExport = () => { if (variant === 'single') { // For single item export, just export immediately onExport(exportMode, ['crisis_map', 'drone_image']); // Export regardless of type return; } // For bulk export, check selections if (!crisisMapsSelected && !droneImagesSelected) { alert('Please select at least one image type to export.'); return; } const selectedTypes: string[] = []; if (crisisMapsSelected) selectedTypes.push('crisis_map'); if (droneImagesSelected) selectedTypes.push('drone_image'); onExport(exportMode, selectedTypes); }; const handleClose = () => { onClose(); }; if (!isOpen) return null; // Single item export UI if (variant === 'single') { return (
This only exports the 1 item currently on display.
You may export the entire dataset from the "list view" here: