import React from 'react'; import '@shared/styles/theme.css'; import { Badge, Card } from '@shared/components'; import { useToolData } from '@shared/hooks/useToolData'; import type { HealthDashboardData } from '@shared/types'; export default function App() { const { data, error, isConnected } = useToolData(); if (error) { return
Error: {error}
; } if (!isConnected) { return
Connecting...
; } if (!data) { return
Waiting for data...
; } if (!data.success && data.error) { return (
Disconnected
{data.error}
); } const d = data.data; const isConnectedStatus = d?.status === 'connected' || d?.status === 'ok' || data.success; const vc = d?.versionCheck; const perf = d?.performance; const nextSteps = d?.nextSteps ?? []; return (
{/* Connection status */}
{isConnectedStatus ? 'Connected' : 'Disconnected'} {d?.apiUrl && ( {d.apiUrl} )}
{/* Version info */} {(d?.n8nVersion || d?.mcpVersion) && (
n8n {d?.n8nVersion ?? '–'}
MCP Server {d?.mcpVersion ?? '–'}
{vc && !vc.upToDate && (
Update available: {vc.current} → {vc.latest} {vc.updateCommand && (
{vc.updateCommand}
)}
)}
)} {/* Performance */} {perf && (
{perf.responseTimeMs !== undefined && (
Response time {perf.responseTimeMs}ms
)} {perf.cacheHitRate !== undefined && (
Cache hit rate {typeof perf.cacheHitRate === 'number' && perf.cacheHitRate <= 1 ? `${(perf.cacheHitRate * 100).toFixed(0)}%` : `${perf.cacheHitRate}%`}
)}
)} {/* Next steps */} {nextSteps.length > 0 && (
    {nextSteps.map((step, i) => (
  • {step}
  • ))}
)}
); }