'use client'; import { Service, ServiceCheckResult } from '@/src/types/service'; interface ServiceCardProps { service: Service; result?: ServiceCheckResult; } const STATUS_CONFIG = { online: { bgColor: 'bg-green-50 dark:bg-green-950', textColor: 'text-green-700 dark:text-green-300', dotColor: 'bg-green-500', label: 'Online', }, warning: { bgColor: 'bg-amber-50 dark:bg-amber-950', textColor: 'text-amber-700 dark:text-amber-300', dotColor: 'bg-amber-500', label: 'Warnung', }, offline: { bgColor: 'bg-red-50 dark:bg-red-950', textColor: 'text-red-700 dark:text-red-300', dotColor: 'bg-red-500', label: 'Offline', }, unknown: { bgColor: 'bg-slate-50 dark:bg-slate-950', textColor: 'text-slate-700 dark:text-slate-300', dotColor: 'bg-slate-500', label: 'Unbekannt', }, } as const; /** * ServiceCard - Zeigt einen einzelnen Service mit Status, Icon und Öffnen-Button * @param service - Das Service-Objekt mit Name, Beschreibung, etc. * @param result - Optionale Status-Check-Ergebnisse */ export function ServiceCard({ service, result }: ServiceCardProps) { const status = result?.status || 'unknown'; const config = STATUS_CONFIG[status]; return (
{/* Header mit Name, Kategorie und Status */}

{service.name}

{service.category}

{/* Status Badge */}
{config.label}
{/* Status Details */} {result && (
{result.httpStatus && (
HTTP: {result.httpStatus}
)} {result.responseTimeMs !== null && (
Zeit: {result.responseTimeMs}ms
)}
)} {/* Beschreibung */}

{service.description}

{/* Öffnen Button */}
); }