import { ReactNode, useEffect } from "react"; import { createPortal } from "react-dom"; type DialogProps = { open: boolean; title: string; description?: string; children: ReactNode; onClose: () => void; footer?: ReactNode; size?: "sm" | "lg" | "xl"; loading?: boolean; }; const sizeClass = { sm: "modal-dialog modal-sm", lg: "modal-dialog modal-lg", xl: "modal-dialog modal-xl" }; export default function Dialog({ open, title, description, children, onClose, footer, size = "sm", loading }: DialogProps) { useEffect(() => { if (!open) return; const onEsc = (event: KeyboardEvent) => { if (event.key === "Escape") onClose(); }; window.addEventListener("keydown", onEsc); return () => window.removeEventListener("keydown", onEsc); }, [open, onClose]); if (!open) return null; return createPortal(
{description}
} {loading ?