import { createContext, FC, useContext, useState } from "react"; import { ConfirmModal, ConfirmModalProps } from "~/components/ConfirmModal"; export interface ModalData { content: React.ReactNode; props: Omit; } export interface ModalManagerContextType { createModal: (modalData: ModalData) => void; } export const ModalManagerContext = createContext( null! ); export const ModalManagerProvider: FC = ({ children }) => { const [modalData, setModalData] = useState(null); const createModal = (modalData: ModalData) => { setModalData(modalData); }; const removeModal = () => { setModalData(null); }; const handleClose = () => { removeModal(); if (modalData) { modalData.props.onClose(); } }; const handleConfirm = () => { removeModal(); if (modalData) { modalData.props.onConfirm(); } }; return ( {children} {modalData?.content} ); }; export const useModalManager = () => { return useContext(ModalManagerContext); };