24 lines
685 B
TypeScript
24 lines
685 B
TypeScript
import { createContext, useContext, type ReactNode } from "react";
|
|
import { ToastViewport, useToastHost, type ToastApi } from "@/components/toast-host";
|
|
|
|
const ToastContext = createContext<ToastApi | null>(null);
|
|
|
|
export function useToast(): ToastApi {
|
|
const value = useContext(ToastContext);
|
|
if (!value) {
|
|
throw new Error("useToast must be used within ToastProvider");
|
|
}
|
|
return value;
|
|
}
|
|
|
|
export function ToastProvider({ children }: { children: ReactNode }) {
|
|
const { api, toast, dismiss } = useToastHost();
|
|
|
|
return (
|
|
<ToastContext.Provider value={api}>
|
|
{children}
|
|
<ToastViewport toast={toast} onDismiss={dismiss} />
|
|
</ToastContext.Provider>
|
|
);
|
|
}
|