"use client"; import React, { useEffect, useState } from "react"; import { CheckCircle2, X } from "lucide-react"; import { clsx, type ClassValue } from "clsx"; import { twMerge } from "tailwind-merge"; function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)); } interface SuccessModalProps { isOpen: boolean; onClose: () => void; title: string; message: string; duration?: number; } export function SuccessModal({ isOpen, onClose, title, message, duration = 3000 }: SuccessModalProps) { const [isVisible, setIsVisible] = useState(false); useEffect(() => { if (isOpen) { setIsVisible(true); const timer = setTimeout(() => { handleClose(); }, duration); return () => clearTimeout(timer); } }, [isOpen, duration]); const handleClose = () => { setIsVisible(false); setTimeout(onClose, 300); // Wait for fade out animation }; if (!isOpen && !isVisible) return null; return (
{message}