import React from "react"; import { AlertTriangle, RefreshCw, Wifi, WifiOff } from "lucide-react"; import { useTranslation } from "react-i18next"; import "./ErrorDisplay.css"; interface ErrorDisplayProps { error: { type: 'network' | 'server' | 'unknown'; status?: number; message?: string; }; onRetry?: () => void; title?: string; className?: string; } export const ErrorDisplay: React.FC = ({ error, onRetry, title, className = "" }) => { const { t } = useTranslation(); const getErrorIcon = () => { switch (error.type) { case 'network': return ; case 'server': return ; default: return ; } }; const getErrorMessage = () => { switch (error.type) { case 'network': return t("errors.network", "No hay conexión a internet. Comprueba tu conexión y vuelve a intentarlo."); case 'server': if (error.status === 404) { return t("errors.not_found", "No se encontraron datos para esta parada."); } if (error.status === 500) { return t("errors.server_error", "Error del servidor. Inténtalo de nuevo más tarde."); } if (error.status && error.status >= 400) { return t("errors.client_error", "Error en la solicitud. Verifica que la parada existe."); } return t("errors.server_generic", "Error del servidor ({{status}})", { status: error.status || 'desconocido' }); default: return error.message || t("errors.unknown", "Ha ocurrido un error inesperado."); } }; const getErrorTitle = () => { if (title) return title; switch (error.type) { case 'network': return t("errors.network_title", "Sin conexión"); case 'server': return t("errors.server_title", "Error del servidor"); default: return t("errors.unknown_title", "Error"); } }; return (
{getErrorIcon()}

{getErrorTitle()}

{getErrorMessage()}

{onRetry && ( )}
); };