import { defineStore } from 'pinia' type ToastType = 'success' | 'error' | 'info' export type Toast = { id: number type: ToastType message: string timeout?: number } let counter = 1 export const useToastStore = defineStore('toast', { state: () => ({ toasts: [] as Toast[] }), actions: { push(message: string, type: ToastType = 'info', timeout = 2500) { const id = counter++ const toast: Toast = { id, type, message, timeout } this.toasts.push(toast) if (timeout && timeout > 0) { setTimeout(() => this.remove(id), timeout) } return id }, success(message: string, timeout = 2500) { return this.push(message, 'success', timeout) }, error(message: string, timeout = 3000) { return this.push(message, 'error', timeout) }, info(message: string, timeout = 2500) { return this.push(message, 'info', timeout) }, remove(id: number) { this.toasts = this.toasts.filter(t => t.id !== id) } } })