import { ExclamationTriangleIcon, CheckCircleIcon, InformationCircleIcon } from "@heroicons/react/24/outline"; import { cx } from "@/cva.config"; import { Button } from "@/components/Button"; import Modal from "@/components/Modal"; type Variant = "danger" | "success" | "warning" | "info"; interface ConfirmDialogProps { open: boolean; onClose: () => void; title: string; description: string; variant?: Variant; confirmText?: string; cancelText?: string | null; onConfirm: () => void; isConfirming?: boolean; } const variantConfig = { danger: { icon: ExclamationTriangleIcon, iconClass: "text-red-600", iconBgClass: "bg-red-100", buttonTheme: "danger", }, success: { icon: CheckCircleIcon, iconClass: "text-green-600", iconBgClass: "bg-green-100", buttonTheme: "primary", }, warning: { icon: ExclamationTriangleIcon, iconClass: "text-yellow-600", iconBgClass: "bg-yellow-100", buttonTheme: "lightDanger", }, info: { icon: InformationCircleIcon, iconClass: "text-blue-600", iconBgClass: "bg-blue-100", buttonTheme: "primary", }, } as Record; export function ConfirmDialog({ open, onClose, title, description, variant = "info", confirmText = "Confirm", cancelText = "Cancel", onConfirm, isConfirming = false, }: ConfirmDialogProps) { const { icon: Icon, iconClass, iconBgClass, buttonTheme } = variantConfig[variant]; return (

{title}

{description}
{cancelText && (
); }