import { getAuthNotice } from "@/lib/auth/messages"; export type StatusToastVariant = "success" | "info" | "warning" | "error"; export type StatusToast = { variant: StatusToastVariant; title?: string; message: string; }; const dashboardStatusToasts: Record = { "onboarding-completed": { variant: "success", title: "Onboarding opgeslagen", message: "Je basisinstellingen staan nu klaar.", }, "onboarding-skipped": { variant: "info", title: "Onboarding overgeslagen", message: "Je kunt de onboarding later alsnog afronden vanuit het dashboard.", }, "test-wizard-completed": { variant: "success", title: "Test wizard afgerond", message: "De generieke wizard-flow werkt nu vanaf het dashboard.", }, "check-in-saved": { variant: "success", title: "Ochtendcheck-in opgeslagen", message: "Je energiestart van vandaag staat nu klaar op je dashboard.", }, }; const settingsStatusToasts: Record = { saved: { variant: "success", title: "Instellingen opgeslagen", message: "Je voorkeuren zijn bijgewerkt.", }, }; const settingsErrorToasts: Record = { "invalid-settings-input": { variant: "error", title: "Instellingen niet opgeslagen", message: "Controleer je tijd, timezone en voorkeurvelden en probeer het opnieuw.", }, "invalid-avatar-file": { variant: "error", title: "Profielfoto niet opgeslagen", message: "Gebruik een JPG, PNG of WebP-bestand tot 2 MB en probeer het opnieuw.", }, }; const onboardingErrorToasts: Record = { "invalid-onboarding-input": { variant: "error", title: "Onboarding niet opgeslagen", message: "Controleer je ingevoerde voorkeuren en probeer het opnieuw.", }, }; const checkInErrorToasts: Record = { "invalid-check-in-input": { variant: "error", title: "Check-in niet opgeslagen", message: "Kies een energiescore tussen 1 en 10 en een geldige slaapkwaliteit.", }, }; const planningStatusToasts: Record = { "activity-saved": { variant: "success", title: "Activiteit gepland", message: "Je activiteit staat nu in je dagplanning van vandaag.", }, "ad-hoc-activity-saved": { variant: "success", title: "Ongeplande activiteit toegevoegd", message: "Deze activiteit staat nu ook in je daglijst van vandaag.", }, "activity-status-saved": { variant: "success", title: "Activiteit bijgewerkt", message: "De status van je activiteit is opgeslagen.", }, "activity-evaluation-saved": { variant: "success", title: "Evaluatie opgeslagen", message: "De extra context bij deze activiteit is bijgewerkt.", }, }; const planningErrorToasts: Record = { "invalid-activity-input": { variant: "error", title: "Activiteit niet opgeslagen", message: "Controleer naam, categorie, duur, impact en prioriteit en probeer het opnieuw.", }, "invalid-ad-hoc-activity-input": { variant: "error", title: "Ongeplande activiteit niet opgeslagen", message: "Controleer naam, categorie, duur en impact en probeer het opnieuw.", }, "invalid-activity-status": { variant: "error", title: "Status niet opgeslagen", message: "De gekozen activiteit of status is ongeldig voor vandaag.", }, "activity-status-failed": { variant: "error", title: "Status niet opgeslagen", message: "De activiteitstatus kon niet worden bijgewerkt. Probeer het opnieuw.", }, "invalid-activity-evaluation": { variant: "error", title: "Evaluatie niet opgeslagen", message: "Controleer de skip-reden of toelichting en probeer het opnieuw.", }, "activity-evaluation-failed": { variant: "error", title: "Evaluatie niet opgeslagen", message: "De extra context bij deze activiteit kon niet worden opgeslagen.", }, "ad-hoc-activity-failed": { variant: "error", title: "Ongeplande activiteit niet opgeslagen", message: "De ongeplande activiteit kon niet worden toegevoegd. Probeer het opnieuw.", }, }; export function getDashboardStatusToast(status: string | null): StatusToast | null { if (!status) { return null; } return dashboardStatusToasts[status] ?? null; } export function getSettingsStatusToast( error: string | null, status: string | null, ): StatusToast | null { if (error && settingsErrorToasts[error]) { return settingsErrorToasts[error]; } if (!status) { return null; } return settingsStatusToasts[status] ?? null; } export function getOnboardingStatusToast( error: string | null, status: string | null, ): StatusToast | null { if (error && onboardingErrorToasts[error]) { return onboardingErrorToasts[error]; } if (!status) { return null; } return null; } export function getCheckInStatusToast( error: string | null, status: string | null, ): StatusToast | null { if (error && checkInErrorToasts[error]) { return checkInErrorToasts[error]; } if (!status) { return null; } return null; } export function getPlanningStatusToast( error: string | null, status: string | null, ): StatusToast | null { if (error && planningErrorToasts[error]) { return planningErrorToasts[error]; } if (!status) { return null; } return planningStatusToasts[status] ?? null; } export function getAuthStatusToast( error: string | null, status: string | null, ): StatusToast | null { const notice = getAuthNotice(error, status); if (!notice) { return null; } return { variant: notice.tone, message: notice.text, }; }