import React from 'react'; import { useTranslation } from 'react-i18next'; import { isRouteErrorResponse, useRouteError } from 'react-router'; interface FallbackComponentProps { error?: Error; reset?: () => void; } const FallbackComponent: React.FC = ({ error: errorProp, reset, }) => { const { t } = useTranslation(); const routeError = useRouteError(); const error = errorProp ?? (routeError instanceof Error ? routeError : undefined); let routeErrorDataStr = ''; if (isRouteErrorResponse(routeError)) { if (typeof routeError.data === 'string') { routeErrorDataStr = routeError.data; } else if (routeError.data == null) { routeErrorDataStr = 'no body'; } else { try { routeErrorDataStr = JSON.stringify(routeError.data); } catch { routeErrorDataStr = String(routeError.data); } } } const errorMessage = isRouteErrorResponse(routeError) ? `${routeError.status} ${routeError.statusText}${routeErrorDataStr ? `: ${routeErrorDataStr}` : ''}` : (error?.toString() ?? (routeError ? String(routeError) : undefined)); return (

{t('error_boundary.title', 'Something went wrong')}

{t( 'error_boundary.description', 'Sorry, an error occurred while loading the page.', )}

{errorMessage && (
{t('error_boundary.details', 'Error details')} {errorMessage}
)}
{reset && ( )}
); }; export default FallbackComponent;