'use client' import React, {useEffect, useState} from 'react'; import {FontAwesomeIcon} from '@fortawesome/react-fontawesome'; import { faCheckCircle, faExclamationCircle, faInfoCircle, faTimes, faTimesCircle } from '@fortawesome/free-solid-svg-icons'; interface StaticAlertProps { type: 'success' | 'error' | 'info' | 'warning'; message: string; onClose: () => void; } const iconMap = { success: faCheckCircle, error: faExclamationCircle, info: faInfoCircle, warning: faTimesCircle, }; const bgColorMap = { success: 'bg-success', error: 'bg-error', info: 'bg-info', warning: 'bg-warning', }; export default function StaticAlert( {type, message, onClose}: StaticAlertProps) { const [visible, setVisible] = useState(false); const onCloseRef = React.useRef(onClose); useEffect(() => { onCloseRef.current = onClose; }, [onClose]); useEffect(() => { setVisible(true); const timer = setTimeout(() => { setVisible(false); setTimeout(() => onCloseRef.current(), 500); // Wait for fade out animation to complete }, 4800); return () => { clearTimeout(timer); }; }, []); const handleClose = () => { setVisible(false); setTimeout(() => onCloseRef.current(), 1000); // Wait for fade out animation to complete }; return (