import { Dialog, DialogBackdrop, DialogTitle, Description, DialogPanel, CloseButton, Transition, } from "@headlessui/react"; import { XMarkIcon } from "@heroicons/react/24/outline"; import { type ReactNode, useCallback } from "react"; import { Button } from "../Button"; type Props = { open: boolean; onClose: () => void; closeDisabled?: boolean | undefined; afterLeave?: (() => void) | undefined; children?: ReactNode | ReactNode[] | undefined; title: ReactNode | ReactNode[]; description?: string; additionalButtons?: ReactNode | ReactNode[] | undefined; }; export const Modal = ({ open, onClose, closeDisabled, afterLeave, children, title, description, additionalButtons, }: Props) => { const handleClose = useCallback(() => { if (!closeDisabled) { onClose(); } }, [closeDisabled, onClose]); return (
{title} {closeDisabled !== true && ( )} {description && ( {description} )} {children}
Close {additionalButtons}
); };