import { useEffect, useRef, type ReactNode } from "react"; export interface DialogProps { open: boolean; onOpenChange: (open: boolean) => void; title: string; children: ReactNode; className?: string; } export function Dialog({ open, onOpenChange, title, children, className = "", }: DialogProps) { const ref = useRef(null); useEffect(() => { const dialog = ref.current!; if (!open) { if (dialog.open) dialog.close(); return; } const previous = document.activeElement; if (!dialog.open) dialog.showModal(); return () => { if (dialog.open) dialog.close(); if (previous instanceof HTMLElement && previous.isConnected) previous.focus(); }; }, [open]); return ( { event.preventDefault(); onOpenChange(false); }} >

{title}

{children}
); }