16 lines
389 B
JavaScript
16 lines
389 B
JavaScript
|
|
import { create } from 'zustand'
|
||
|
|
|
||
|
|
let _id = 0
|
||
|
|
|
||
|
|
const useToastStore = create((set) => ({
|
||
|
|
toasts: [],
|
||
|
|
addToast: ({ message, undoFn, duration = 30 }) => {
|
||
|
|
const id = ++_id
|
||
|
|
set(s => ({ toasts: [...s.toasts, { id, message, undoFn, duration }] }))
|
||
|
|
return id
|
||
|
|
},
|
||
|
|
removeToast: (id) => set(s => ({ toasts: s.toasts.filter(t => t.id !== id) })),
|
||
|
|
}))
|
||
|
|
|
||
|
|
export default useToastStore
|