Files
malenia-frontend/src/store/useToast.ts
2026-08-10 12:01:03 +07:00

25 lines
564 B
TypeScript

import { create } from 'zustand';
interface ToastItem {
id: number;
message: string;
}
interface ToastState {
toasts: ToastItem[];
show: (message: string) => void;
dismiss: (id: number) => void;
}
let counter = 0;
export const useToastStore = create<ToastState>((set, get) => ({
toasts: [],
show: (message) => {
const id = ++counter;
set((s) => ({ toasts: [...s.toasts, { id, message }] }));
window.setTimeout(() => get().dismiss(id), 2200);
},
dismiss: (id) => set((s) => ({ toasts: s.toasts.filter((t) => t.id !== id) })),
}));