'use client'; import React from 'react'; import { Snackbar, Alert, AlertTitle } from '@mui/material'; import { extractError } from '@/lib/utils/errorHandler'; export interface ErrorToastProps { error: any; open: boolean; onClose: () => void; autoHideDuration?: number; showErrorCode?: boolean; } /** * ErrorToast Component * Displays error messages as a toast notification * Preserves backend multilingual error messages */ export function ErrorToast({ error, open, onClose, autoHideDuration = 6000, showErrorCode = false, }: ErrorToastProps) { if (!error) { return null; } const extracted = extractError(error); return ( {showErrorCode && extracted.code && ( {extracted.code} )} {extracted.message} ); } /** * Hook to manage error toast state */ export function useErrorToast() { const [error, setError] = React.useState(null); const [open, setOpen] = React.useState(false); const showError = (err: any) => { setError(err); setOpen(true); }; const hideError = () => { setOpen(false); }; const handleClose = (_event?: React.SyntheticEvent | Event, reason?: string) => { if (reason === 'clickaway') { return; } hideError(); }; return { error, open, showError, hideError, handleClose, }; }