'use client'; import { ApiError } from '@/lib/api/base/ApiError'; import { AlertTriangle, Wifi, RefreshCw, ArrowLeft } from 'lucide-react'; import { useRouter } from 'next/navigation'; import { useState } from 'react'; interface ErrorDisplayProps { error: ApiError; onRetry?: () => void; } /** * User-friendly error display for production environments */ export function ErrorDisplay({ error, onRetry }: ErrorDisplayProps) { const router = useRouter(); const [isRetrying, setIsRetrying] = useState(false); const userMessage = error.getUserMessage(); const isConnectivity = error.isConnectivityIssue(); const handleRetry = async () => { if (onRetry) { setIsRetrying(true); try { onRetry(); } finally { setIsRetrying(false); } } }; const handleGoBack = () => { router.back(); }; const handleGoHome = () => { router.push('/'); }; return (
Error {error.context.statusCode || 'N/A'}
{userMessage}
{/* Details for debugging (collapsed by default) */}