'use client'; import { useState } from 'react'; import { useQueryClient } from '@tanstack/react-query'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { apiFetch } from '@/lib/api/client'; interface EoiPrerequisites { hasName: boolean; hasEmail: boolean; hasYachtDims: boolean; hasBerth: boolean; } interface EoiGenerateDialogProps { interestId: string; open: boolean; onOpenChange: (open: boolean) => void; prerequisites: EoiPrerequisites; } const PREREQUISITE_LABELS: { key: keyof EoiPrerequisites; label: string }[] = [ { key: 'hasName', label: 'Client has full name' }, { key: 'hasEmail', label: 'Client has email address' }, { key: 'hasYachtDims', label: 'Yacht dimensions set' }, { key: 'hasBerth', label: 'Berth linked to interest' }, ]; export function EoiGenerateDialog({ interestId, open, onOpenChange, prerequisites, }: EoiGenerateDialogProps) { const queryClient = useQueryClient(); const [isGenerating, setIsGenerating] = useState(false); const [error, setError] = useState(null); const allMet = Object.values(prerequisites).every(Boolean); const handleGenerate = async () => { if (!allMet) return; setIsGenerating(true); setError(null); try { await apiFetch('/api/v1/documents/generate-eoi', { method: 'POST', body: { interestId }, }); queryClient.invalidateQueries({ queryKey: ['documents', { interestId }] }); onOpenChange(false); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to generate EOI'); } finally { setIsGenerating(false); } }; return ( Generate Expression of Interest The following prerequisites must be met before generating the EOI document.
{PREREQUISITE_LABELS.map(({ key, label }) => (
{prerequisites[key] ? '✓' : '✗'} {label}
))}
{error && (

{error}

)}
); }