'use client'; import { useState, useEffect } from 'react'; import { ServiceCheckResult } from '@/src/types/service'; import { services } from '@/src/data/services'; import { ServiceCard } from './ServiceCard'; export function DashboardClient() { const [results, setResults] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const fetchStatus = async () => { try { setError(null); const response = await fetch('/api/status'); if (!response.ok) { throw new Error('Failed to fetch status'); } const data: ServiceCheckResult[] = await response.json(); setResults(data); } catch (err) { setError(err instanceof Error ? err.message : 'Unknown error'); } finally { setLoading(false); } }; useEffect(() => { fetchStatus(); // Auto-refresh every 30 seconds const interval = setInterval(fetchStatus, 30000); return () => clearInterval(interval); }, []); const getResultForService = (serviceId: string): ServiceCheckResult | undefined => { return results.find(result => result.id === serviceId); }; return (
{/* Header */}

Homelab Dashboard

{loading ? ( 'Lade Status...' ) : ( 'Automatische Aktualisierung: 30s' )}

Live-Status aller verwalteten Dienste

{/* Main Content */}
{error && (
Fehler beim Laden der Status-Daten: {error}
)} {/* Services Grid */}
{services.map((service) => ( ))}
); }