import React from 'react'; const bootCopy = { 'control-unreachable': { title: 'Harbor недоступен', message: 'Control plane не ответил. Проверьте, что контейнер запущен, и повторите запрос.', }, 'incompatible-api': { title: 'Версия Harbor несовместима', message: 'Интерфейс получил state неизвестной версии. Обновите frontend и control plane вместе.', }, fatal: { title: 'Harbor не удалось запустить', message: 'Произошла непредвиденная ошибка. Технические детали помогут найти причину.', }, }; export function BootStatePage({ transport, onRetry }) { if (transport.bootStatus === 'loading') return
Harbor
; const copy = bootCopy[transport.bootStatus] || bootCopy.fatal; return (
Harbor

{copy.title}

{copy.message}

Технические детали {transport.error?.message}
{`curl -i ${window.location.origin}/api/state\ndocker compose logs --tail=100`}
); } export function StaleBanner({ transport, onRetry }) { if (!transport.stale) return null; const lastSync = transport.lastSuccessfulSyncAt ? new Date(transport.lastSuccessfulSyncAt).toLocaleTimeString('ru-RU') : 'неизвестно'; const incompatible = transport.error?.kind === 'incompatible-api'; return ( ); }