Files
fitaiProto/apps/admin/src/lib/toast.ts
T
2026-03-11 01:43:19 +01:00

78 lines
2.2 KiB
TypeScript

import { toast as sonnerToast } from "sonner";
/**
* Toast notification utility wrapper around Sonner
*
* Provides a consistent API for showing toast notifications throughout the app
*/
export const toast = {
/**
* Show a success toast notification
* @param message - The message to display
* @param description - Optional description text
*/
success: (message: string, description?: string) => {
return sonnerToast.success(message, { description });
},
/**
* Show an error toast notification
* @param message - The message to display
* @param description - Optional description text
*/
error: (message: string, description?: string) => {
return sonnerToast.error(message, { description });
},
/**
* Show an info toast notification
* @param message - The message to display
* @param description - Optional description text
*/
info: (message: string, description?: string) => {
return sonnerToast.info(message, { description });
},
/**
* Show a warning toast notification
* @param message - The message to display
* @param description - Optional description text
*/
warning: (message: string, description?: string) => {
return sonnerToast.warning(message, { description });
},
/**
* Show a loading toast notification
* @param message - The message to display
* @returns Toast ID that can be used to update or dismiss the toast
*/
loading: (message: string) => {
return sonnerToast.loading(message);
},
/**
* Show a promise toast that updates based on promise state
* @param promise - The promise to track
* @param messages - Messages for loading, success, and error states
*/
promise: <T>(
promise: Promise<T>,
messages: {
loading: string;
success: string | ((data: T) => string);
error: string | ((error: Error) => string);
},
) => {
return sonnerToast.promise(promise, messages);
},
/**
* Dismiss a specific toast by ID or all toasts
* @param toastId - Optional toast ID to dismiss. If not provided, dismisses all toasts
*/
dismiss: (toastId?: string | number) => {
return sonnerToast.dismiss(toastId);
},
};