'use client'; import { Activity, Wifi, RefreshCw, Terminal } from 'lucide-react'; import { useState } from 'react'; import { ApiConnectionMonitor } from '@/lib/api/base/ApiConnectionMonitor'; import { CircuitBreakerRegistry } from '@/lib/api/base/RetryHandler'; import { useNotifications } from '@/components/notifications/NotificationProvider'; interface APIStatusSectionProps { apiStatus: string; apiHealth: any; circuitBreakers: Record; checkingHealth: boolean; onHealthCheck: () => void; onResetStats: () => void; onTestError: () => void; } export function APIStatusSection({ apiStatus, apiHealth, circuitBreakers, checkingHealth, onHealthCheck, onResetStats, onTestError }: APIStatusSectionProps) { return (
API Status
{/* Status Indicator */}
{apiStatus.toUpperCase()}
{apiHealth.successfulRequests}/{apiHealth.totalRequests} req
{/* Reliability */}
Reliability = 0.95 ? 'text-green-400' : (apiHealth.successfulRequests / apiHealth.totalRequests) >= 0.8 ? 'text-yellow-400' : 'text-red-400' }`}> {apiHealth.totalRequests === 0 ? 'N/A' : ((apiHealth.successfulRequests / apiHealth.totalRequests) * 100).toFixed(1) + '%'}
{/* Response Time */}
Avg Response {apiHealth.averageResponseTime.toFixed(0)}ms
{/* Consecutive Failures */} {apiHealth.consecutiveFailures > 0 && (
Consecutive Failures {apiHealth.consecutiveFailures}
)} {/* Circuit Breakers */}
Circuit Breakers:
{Object.keys(circuitBreakers).length === 0 ? (
None active
) : (
{Object.entries(circuitBreakers).map(([endpoint, status]: [string, any]) => (
{endpoint.split('/').pop() || endpoint} {status.state} {status.failures > 0 && ( ({status.failures}) )}
))}
)}
{/* API Actions */}
Last Check: {apiHealth.lastCheck ? new Date(apiHealth.lastCheck).toLocaleTimeString() : 'Never'}
); }