feat: F025 button & action logic audit — global toast, confirm dialog, wired mutations

- Add ToastProvider (global MUI Snackbar stack) + toastStore (Zustand)
- Add ConfirmDialog reusable component for destructive actions
- Wire toast feedback to all async mutations: review status, AI output status,
  match approval, shortlist add/remove/title/finalize, signal review actions
- Fix dead UserMenu buttons (Profil, Einstellungen) — show info toast
- Migrate local Snackbar instances in AddToShortlistDialog and
  FutureSignalDetailPanel to global toast store

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Benjamin Sutter
2026-05-17 13:42:30 +02:00
parent 30e840489d
commit 2da62a4861
14 changed files with 226 additions and 38 deletions
+27
View File
@@ -0,0 +1,27 @@
import { create } from 'zustand'
export type ToastSeverity = 'success' | 'error' | 'warning' | 'info'
export interface ToastMessage {
id: string
message: string
severity: ToastSeverity
duration?: number
}
interface ToastState {
toasts: ToastMessage[]
showToast: (message: string, severity?: ToastSeverity, duration?: number) => void
dismissToast: (id: string) => void
}
export const useToastStore = create<ToastState>((set) => ({
toasts: [],
showToast: (message, severity = 'success', duration = 4000) => {
const id = crypto.randomUUID()
set((s) => ({ toasts: [...s.toasts, { id, message, severity, duration }] }))
},
dismissToast: (id) => {
set((s) => ({ toasts: s.toasts.filter((t) => t.id !== id) }))
},
}))