"use client" import { useState } from 'react' import { Dialog, DialogContent, 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 { Alert, AlertDescription } from '@/components/ui/alert' import { Loader2, XCircle, AlertTriangle } from 'lucide-react' interface RejectDialogProps { open: boolean onOpenChange: (open: boolean) => void onReject: (adminNotes: string) => Promise title: string itemName: string itemType: 'feature' | 'template' } export function RejectDialog({ open, onOpenChange, onReject, title, itemName, itemType }: RejectDialogProps) { const [adminNotes, setAdminNotes] = useState('') const [loading, setLoading] = useState(false) const [error, setError] = useState(null) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() if (!adminNotes.trim()) { setError('Please provide a reason for rejection') return } try { setLoading(true) setError(null) await onReject(adminNotes.trim()) // Reset form and close dialog setAdminNotes('') onOpenChange(false) } catch (error) { setError(error instanceof Error ? error.message : `Failed to reject ${itemType}`) console.error(`Error rejecting ${itemType}:`, error) } finally { setLoading(false) } } const handleCancel = () => { setAdminNotes('') setError(null) onOpenChange(false) } return ( {title}

You are about to reject: {itemName}

This action will mark the {itemType} as rejected and notify the submitter.