"use client"; import { AnimatePresence, motion, useReducedMotion } from "motion/react"; import { type ReactNode, useEffect, useRef } from "react"; import { cn } from "@/lib/utils"; export interface DialogProps { open: boolean; onClose: () => void; children: ReactNode; className?: string; labelledBy?: string; } export function Dialog({ open, onClose, children, className, labelledBy, }: DialogProps) { const ref = useRef(null); const reduce = useReducedMotion(); useEffect(() => { if (!open) return; const onKey = (e: KeyboardEvent) => { if (e.key === "Escape") onClose(); }; document.addEventListener("keydown", onKey); document.body.style.overflow = "hidden"; return () => { document.removeEventListener("keydown", onKey); document.body.style.overflow = ""; }; }, [open, onClose]); return ( {open && (
{children} )} ); }