import { useState } from 'react'; import { AlertTriangle, AlertCircle } from 'lucide-react'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Textarea } from '@/components/ui/textarea'; import { Label } from '@/components/ui/label'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select'; import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert'; interface EscalationDialogProps { open: boolean; onOpenChange: (open: boolean) => void; onEscalate: (reason: string) => Promise; submissionType: string; error?: { message: string; errorId?: string } | null; } const escalationReasons = [ 'Complex dependency issue', 'Potential policy violation', 'Unclear submission content', 'Requires admin judgment', 'Technical issue', 'Other', ]; export function EscalationDialog({ open, onOpenChange, onEscalate, submissionType, error, }: EscalationDialogProps) { const [selectedReason, setSelectedReason] = useState(''); const [additionalNotes, setAdditionalNotes] = useState(''); const [isSubmitting, setIsSubmitting] = useState(false); const handleEscalate = async () => { const reason = selectedReason === 'Other' ? additionalNotes : `${selectedReason}${additionalNotes ? ': ' + additionalNotes : ''}`; if (!reason.trim()) return; setIsSubmitting(true); try { await onEscalate(reason); setSelectedReason(''); setAdditionalNotes(''); onOpenChange(false); } finally { setIsSubmitting(false); } }; return ( Escalate Submission Escalating this {submissionType} will mark it as high priority and notify senior moderators. {error && ( Escalation Failed

{error.message}

{error.errorId && (

Reference: {error.errorId.slice(0, 8)}

)}
)}