'use client'; import { useCallback, useEffect, useMemo, useState } from 'react'; import { useTranslations } from 'next-intl'; import Link from 'next/link'; import { useAuthStore } from '@/lib/stores/auth-store'; import { listServers, pollServer, type ProxmoxServer } from '@/lib/proxmox-api'; import { HealthBar } from './components/HealthBar'; import { sortServersByHealth, summarizeHealth } from './components/proxmox-status'; import { ServerCard } from './components/ServerCard'; import { WELL } from './components/status-styles'; /** Relative Zeitangaben („vor 3 Min.“) bleiben stimmig, ohne neu zu laden. */ const CLOCK_TICK_MS = 60_000; function RefreshIcon({ spinning }: { spinning: boolean }) { return ( ); } function SkeletonCard() { return (
{t('description')}
{error}
)} {!error && servers === null && ({t('emptyState')}
{isAdmin && ( {t('card.settingsLink')} )}