import * as React from 'react'; import { AlertCircle, CheckCircle2, Info, X } from 'lucide-react'; import { cn } from '../../lib/utils'; import { Button } from './button'; export type ScreenMessageVariant = 'info' | 'success' | 'error'; export interface ScreenMessageProps { className?: string; duration?: number; message: string; open?: boolean; variant?: ScreenMessageVariant; onClose?: () => void; } const iconMap: Record = { error: , info: , success: , }; export function ScreenMessage(props: ScreenMessageProps) { const { duration = 3600, message, onClose, open = Boolean(message), variant = 'info' } = props; React.useEffect(() => { if (!open || !message || duration <= 0 || !onClose) return undefined; const timer = window.setTimeout(onClose, duration); return () => window.clearTimeout(timer); }, [duration, message, onClose, open]); if (!open || !message) return null; return (
{iconMap[variant]} {message} {onClose && ( )}
); }