import { useQuery } from '@tanstack/react-query'; import { Network, Wifi, WifiOff } from 'lucide-react'; import { api } from '@/lib/api'; import { formatBytes } from '@/lib/utils'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; interface NodeItem { id: string; name: string; fqdn: string; daemonPort: number; grpcPort: number; memoryTotal: number; diskTotal: number; isOnline: boolean; organizationId: string; } export function AdminNodesPage() { const { data } = useQuery({ queryKey: ['admin-nodes'], queryFn: () => api.get<{ data: NodeItem[] }>('/admin/nodes'), }); const nodes = data?.data ?? []; return (

All Nodes

{nodes.length} nodes across all organizations

{nodes.map((node) => (
{node.name}
{node.isOnline ? ( <> Online ) : ( <> Offline )}

{node.fqdn}:{node.daemonPort}

{formatBytes(node.memoryTotal)} RAM {formatBytes(node.diskTotal)} Disk
))} {nodes.length === 0 && ( No nodes registered )}
); }