namespace BudgetApp.Components; public partial class ToastContainer { private readonly List _toasts = []; protected override void OnInitialized() { ToastService.OnShow += ShowToast; } private async void ShowToast(string message) { var toast = new ToastItem { Message = message }; _toasts.Add(toast); await InvokeAsync(StateHasChanged); _ = DismissAfterDelay(toast); } private async Task DismissAfterDelay(ToastItem toast) { await Task.Delay(3500); toast.Dismissing = true; await InvokeAsync(StateHasChanged); await Task.Delay(300); _toasts.Remove(toast); await InvokeAsync(StateHasChanged); } public void Dispose() { ToastService.OnShow -= ShowToast; } private sealed class ToastItem { public string Message { get; set; } = ""; public bool Dismissing { get; set; } } }