"use client"; import { useState, useEffect } from 'react'; import { Button } from '@/components/ui/button'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { AlertTriangle } from 'lucide-react'; interface ConfirmDialogProps { open: boolean; onOpenChange: (open: boolean) => void; title: string; description: string; confirmText?: string; cancelText?: string; variant?: 'default' | 'destructive'; onConfirm: () => void; onCancel?: () => void; } export function ConfirmDialog({ open, onOpenChange, title, description, confirmText = '确认', cancelText = '取消', variant = 'default', onConfirm, onCancel }: ConfirmDialogProps) { const handleConfirm = () => { onConfirm(); onOpenChange(false); }; const handleCancel = () => { onCancel?.(); onOpenChange(false); }; return ( {variant === 'destructive' && ( )} {title} {description} ); } // Hook for easier usage export function useConfirmDialog() { const [confirmDialog, setConfirmDialog] = useState<{ open: boolean; title: string; description: string; confirmText?: string; cancelText?: string; variant?: 'default' | 'destructive'; onConfirm: () => void; onCancel?: () => void; }>({ open: false, title: '', description: '', onConfirm: () => {} }); const showConfirm = (options: { title: string; description: string; confirmText?: string; cancelText?: string; variant?: 'default' | 'destructive'; onConfirm: () => void; onCancel?: () => void; }) => { setConfirmDialog({ ...options, open: true }); }; const hideConfirm = () => { setConfirmDialog(prev => ({ ...prev, open: false })); }; const ConfirmDialogComponent = () => ( ); return { showConfirm, hideConfirm, ConfirmDialogComponent }; }