import { useQuery } from '@tanstack/react-query' import { api } from '../../shared/api/endpoints' function boolView(value: boolean | undefined): string { if (value === undefined) { return 'n/a' } return value ? 'ok' : 'missing' } function queryErrorMessage(error: unknown): string { if (error instanceof Error) { return error.message } return 'unknown error' } export function OverviewPage() { const healthQuery = useQuery({ queryKey: ['healthz'], queryFn: api.healthz, refetchInterval: 5000, }) const statusQuery = useQuery({ queryKey: ['status'], queryFn: api.status, refetchInterval: 5000, }) const vpnQuery = useQuery({ queryKey: ['vpn-status'], queryFn: api.vpnStatus, refetchInterval: 5000, }) const loginQuery = useQuery({ queryKey: ['vpn-login-state'], queryFn: api.vpnLoginState, refetchInterval: 5000, }) return (

Overview

Foundation mode: read-only checks and realtime connectivity indicators.

Core Health

{healthQuery.isLoading ?

Loading...

: null} {healthQuery.error ? (

Error: {queryErrorMessage(healthQuery.error)}

) : null} {healthQuery.data ? (
Status {healthQuery.data.status}
Time {healthQuery.data.time}
) : null}

Routes Snapshot

{statusQuery.isLoading ?

Loading...

: null} {statusQuery.error ? (

Error: {queryErrorMessage(statusQuery.error)}

) : null} {statusQuery.data ? (
iface {statusQuery.data.iface || '—'}
table {statusQuery.data.table || '—'}
mark {statusQuery.data.mark || '—'}
ip_count {statusQuery.data.ip_count}
domain_count {statusQuery.data.domain_count}
policy_route {boolView(statusQuery.data.policy_route_ok)}
) : null}

VPN Snapshot

{vpnQuery.isLoading ?

Loading...

: null} {vpnQuery.error ? (

Error: {queryErrorMessage(vpnQuery.error)}

) : null} {vpnQuery.data ? (
desired_location {vpnQuery.data.desired_location || '—'}
status_word {vpnQuery.data.status_word || '—'}
unit_state {vpnQuery.data.unit_state || '—'}
) : null}

Login Snapshot

{loginQuery.isLoading ?

Loading...

: null} {loginQuery.error ? (

Error: {queryErrorMessage(loginQuery.error)}

) : null} {loginQuery.data ? (
state {loginQuery.data.state || '—'}
email {loginQuery.data.email || '—'}
message {loginQuery.data.msg || '—'}
) : null}
) }