import { ReactNode, createContext, useCallback, useContext, useMemo, useState } from 'react'; import { Toast, ToastProps } from './Toast.component'; export type ToastContextState = Omit; export interface ToastContextType { showToast: (toastProps: ToastContextState) => void; } export const ToastContext = createContext( undefined, ); interface ToastProviderProps { children: ReactNode; } export const ToastProvider: React.FC< React.PropsWithChildren > = ({ children }) => { const [toastProps, setToastProps] = useState(null); const toastCtxValue = useMemo( () => ({ showToast: setToastProps }), [], ); const closeToast = useCallback( () => setToastProps(null), [] ); return ( {children} {toastProps && ( )} ); }; export const useToast = () => { const context = useContext(ToastContext); if (!context) { throw new Error('useToast must be used within a ToastProvider'); } return context; };