import type { PropsWithChildren } from 'react'; import { createContext, useContext } from 'react'; import type { ModalProps } from './Modal'; import type { ModalVariants } from './Modal.theme'; export interface ModalProviderProps extends Partial, ModalProps {} type ModalProviderContext = ReturnType; const ModalContext = createContext | undefined>( undefined, ); // For inferring return type const useModalValues = (props: ModalProviderProps) => { return props; }; export const ModalProvider = ({ children, ...props }: PropsWithChildren): JSX.Element => { const values = useModalValues(props); return ( {children} ); }; export const useModal = () => { const context = useContext(ModalContext); if (context === undefined) { throw new Error('useModal was used outside of its Provider'); } return context; }; export default ModalProvider;