import { useEffect } from 'react' import { AlertTriangle, Info, Trash2, X } from 'lucide-react' import { clsx } from 'clsx' import { useConfirmStore, type ConfirmVariant } from '@/store/confirm' import { NeonButton } from './NeonButton' const icons: Record = { danger: , warning: , info: , } const iconStyles: Record = { danger: 'bg-red-500/10 text-red-400 border border-red-500/30', warning: 'bg-yellow-500/10 text-yellow-400 border border-yellow-500/30', info: 'bg-neon-500/10 text-neon-400 border border-neon-500/30', } const confirmButtonStyles: Record = { danger: 'border-red-500/50 text-red-400 hover:bg-red-500/10 hover:border-red-500', warning: 'border-yellow-500/50 text-yellow-400 hover:bg-yellow-500/10 hover:border-yellow-500', info: '', // Will use NeonButton default } 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 */}
{options.cancelText || 'Отмена'} {variant === 'info' ? ( {options.confirmText || 'Подтвердить'} ) : ( )}
) }