'use client'; import { useState } from 'react'; import { useRouter } from 'next/navigation'; import { Loader2, Trash2 } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, } from '@/components/ui/alert-dialog'; interface DeleteFeedbackButtonProps { feedbackId: string; feedbackTitle: string; redirectTo?: string; size?: 'default' | 'sm'; variant?: 'outline' | 'destructive'; } export function DeleteFeedbackButton({ feedbackId, feedbackTitle, redirectTo, size = 'sm', variant = 'outline', }: DeleteFeedbackButtonProps) { const router = useRouter(); const [isDeleting, setIsDeleting] = useState(false); const [error, setError] = useState(null); const handleDelete = async () => { setIsDeleting(true); setError(null); try { const response = await fetch(`/api/admin/feedback/${feedbackId}`, { method: 'DELETE', }); const data = await response.json().catch(() => ({})); if (!response.ok) { setError((data as { error?: string }).error || 'Failed to delete feedback'); return; } if (redirectTo) { router.push(redirectTo); } else { router.refresh(); } } catch { setError('Failed to delete feedback'); } finally { setIsDeleting(false); } }; return ( Delete this feedback? This will permanently delete "{feedbackTitle}". This action cannot be undone. {error &&

{error}

}
Cancel {isDeleting ? 'Deleting...' : 'Delete'}
); }