import { AlertTriangle, CheckCircle, XCircle, Info } from 'lucide-react'; import { createPortal } from 'react-dom'; export type ModalType = 'confirm' | 'success' | 'error' | 'info'; interface ModalDialogProps { isOpen: boolean; title: string; message: string; type?: ModalType; onConfirm: () => void; onCancel?: () => void; confirmText?: string; cancelText?: string; isDestructive?: boolean; } export default function ModalDialog({ isOpen, title, message, type = 'confirm', onConfirm, onCancel, confirmText = '确定', cancelText = '取消', isDestructive = false }: ModalDialogProps) { if (!isOpen) return null; const getIcon = () => { switch (type) { case 'success': return ; case 'error': return ; case 'info': return ; case 'confirm': default: return isDestructive ? : ; } }; const getIconBg = () => { switch (type) { case 'success': return 'bg-green-50 dark:bg-green-900/20'; case 'error': return 'bg-red-50 dark:bg-red-900/20'; case 'info': return 'bg-blue-50 dark:bg-blue-900/20'; case 'confirm': default: return isDestructive ? 'bg-red-50 dark:bg-red-900/20' : 'bg-blue-50 dark:bg-blue-900/20'; } }; const showCancel = type === 'confirm' && onCancel; return createPortal(
{/* Draggable Top Region */}
{getIcon()}

{title}

{message}

{showCancel && ( )}
, document.body ); }