import { useEffect } from 'react' import { AlertTriangle, Info, Trash2, X } from 'lucide-react' import { clsx } from 'clsx' import { useConfirmStore, type ConfirmVariant } from '@/store/confirm' import { Button } from './Button' const icons: Record = { danger: , warning: , info: , } const iconStyles: Record = { danger: 'bg-red-500/20 text-red-500', warning: 'bg-yellow-500/20 text-yellow-500', info: 'bg-blue-500/20 text-blue-500', } const buttonVariants: Record = { danger: 'danger', warning: 'primary', info: 'primary', } export function ConfirmModal() { const { isOpen, options, handleConfirm, handleCancel } = useConfirmStore() // Handle escape key useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { if (e.key === 'Escape' && isOpen) { handleCancel() } } window.addEventListener('keydown', handleKeyDown) return () => window.removeEventListener('keydown', handleKeyDown) }, [isOpen, handleCancel]) // Prevent body scroll when modal is open useEffect(() => { if (isOpen) { document.body.style.overflow = 'hidden' } else { document.body.style.overflow = '' } return () => { document.body.style.overflow = '' } }, [isOpen]) if (!isOpen || !options) return null const variant = options.variant || 'warning' const Icon = icons[variant] return (
{/* Backdrop */}
{/* Modal */}
{/* Close button */}
{/* Icon */}
{Icon}
{/* Title */}

{options.title}

{/* Message */}

{options.message}

{/* Actions */}
) }