import React, { useEffect, useMemo, useState } from 'react'; import { createPortal } from 'react-dom'; import { X, Repeat, User, Loader2 } from 'lucide-react'; import { useMockStore } from '../../data/mockStore'; const inputBase = "w-full bg-white dark:bg-[#18181b] border border-zinc-200 dark:border-white/10 rounded-xl px-4 py-2.5 text-sm text-zinc-900 dark:text-white focus:outline-none focus:border-blue-500 focus:ring-1 focus:ring-blue-500 transition-all"; const ReassignTaskModal = ({ isOpen, onClose, task }) => { const { subcontractors, reassignSubcontractorTask } = useMockStore(); const [selected, setSelected] = useState(''); const [submitting, setSubmitting] = useState(false); const activeSubs = useMemo( () => subcontractors.filter(s => s.status === 'active' && s.id !== task?.subcontractorId), [subcontractors, task], ); useEffect(() => { if (isOpen) { setSelected(''); setSubmitting(false); } }, [isOpen]); useEffect(() => { const handler = (e) => { if (e.key === 'Escape') onClose(); }; if (isOpen) window.addEventListener('keydown', handler); return () => window.removeEventListener('keydown', handler); }, [isOpen, onClose]); if (!isOpen || !task) return null; const handleConfirm = async () => { if (!selected) return; setSubmitting(true); await new Promise(r => setTimeout(r, 300)); reassignSubcontractorTask(task.id, selected); setSubmitting(false); onClose(); }; return createPortal(
No other active subcontractors available.
)}