import React from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { cn } from '../../lib/cn'; import { useClickOutside } from '../../hooks/useClickOutside'; type ModalBackdrop = 'opaque' | 'blur'; interface ModalProps { className?: string; children?: React.ReactNode; backdrop?: ModalBackdrop; open: boolean; defaultOpen?: boolean; onOpenChange: (state: boolean) => void; } const modalbgVariants = { closed: { opacity: 0, backdropFilter: 'blur(0px)' }, open: { opacity: 1, backdropFilter: 'blur(6px)' }, }; const modalVariants = { closed: { opacity: 0, scale: 0.9 }, open: { opacity: 1, scale: 1 }, }; export const Modal: React.FC = ({ children, open, backdrop, className, onOpenChange, }) => { const ref = React.useRef(null); useClickOutside(ref, () => { onOpenChange(false); }); return (
{open && ( )}
{open && ( {children} )}
); };