All files / packages/components/src toast.web.tsx

100% Statements 10/10
100% Branches 2/2
100% Functions 5/5
100% Lines 8/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59                              332x 1658x                             332x       95x 332x 332x                 332x           141x            
import {
	ToastProvider as ToastProviderRaw,
	addToast as addToastRaw,
	closeAll,
	getToastQueue,
} from "@heroui/toast";
 
import {
	DESCRIPTION_CLASSNAME,
	MAX_VISIBLE_TOASTS,
	TOAST_TIMEOUT,
} from "~utils/toast";
 
export type ToastProviderProps = React.PropsWithChildren;
 
export const ToastProvider: React.FC<ToastProviderProps> = ({ children }) => (
	<>
		<ToastProviderRaw
			maxVisibleToasts={MAX_VISIBLE_TOASTS}
			toastProps={{
				shouldShowTimeoutProgress: true,
				classNames: {
					description: DESCRIPTION_CLASSNAME,
				},
				disableAnimation: import.meta.env.MODE === "test",
			}}
		/>
		{children}
	</>
);
 
export const closeAllToasts = ({
	disableAnimation,
}: {
	disableAnimation?: boolean;
}) => closeAll({ disableAnimation });
export const closeToastById = (id: string) => getToastQueue().close(id);
export const getToastsAmount = () => getToastQueue().visibleToasts.length;
 
export type AddProps = {
	title: string;
	description?: string;
	timeout?: number;
	color?: "default" | "success" | "danger";
};
 
export const addToast = ({
	title,
	description,
	timeout = TOAST_TIMEOUT,
	color = "default",
}: AddProps) =>
	addToastRaw({
		title,
		description,
		timeout,
		color,
	});