import React from 'react'; import { X, AlertTriangle, CheckCircle, Info, AlertCircle } from 'lucide-react'; import { useTranslation } from 'react-i18next'; type ModalVariant = 'info' | 'warning' | 'danger' | 'success'; interface ConfirmationModalProps { isOpen: boolean; onClose: () => void; onConfirm: () => void; title: string; message: string | React.ReactNode; confirmText?: string; cancelText?: string; variant?: ModalVariant; isLoading?: boolean; } const variantConfig: Record = { info: { icon: , iconBg: 'bg-blue-100 dark:bg-blue-900/30', confirmButtonClass: 'bg-blue-600 hover:bg-blue-700 text-white', }, warning: { icon: , iconBg: 'bg-amber-100 dark:bg-amber-900/30', confirmButtonClass: 'bg-amber-600 hover:bg-amber-700 text-white', }, danger: { icon: , iconBg: 'bg-red-100 dark:bg-red-900/30', confirmButtonClass: 'bg-red-600 hover:bg-red-700 text-white', }, success: { icon: , iconBg: 'bg-green-100 dark:bg-green-900/30', confirmButtonClass: 'bg-green-600 hover:bg-green-700 text-white', }, }; const ConfirmationModal: React.FC = ({ isOpen, onClose, onConfirm, title, message, confirmText, cancelText, variant = 'info', isLoading = false, }) => { const { t } = useTranslation(); if (!isOpen) return null; const config = variantConfig[variant]; const handleConfirm = () => { onConfirm(); }; return (
{/* Modal Header */}
{config.icon}

{title}

{/* Modal Body */}
{typeof message === 'string' ?

{message}

: message}
{/* Modal Footer */}
); }; export default ConfirmationModal;