import { Server, Search, RotateCcw } from 'lucide-react'; import { Skeleton } from '@/components/ui/skeleton'; import { Button } from '@/components/ui/button'; import { FleetTopology } from '../fleet/FleetTopology'; import { NodeCard } from './NodeCard'; import { OverviewToolbar } from './OverviewToolbar'; import type { FleetTopologyNode } from '@/lib/fleet-topology-layout'; import type { Label as StackLabel } from '../label-types'; import type { FleetNode, NodeUpdateStatus, ViewMode, FleetPreferences, FleetPaletteEntry } from './types'; interface OverviewTabProps { loading: boolean; nodes: FleetNode[]; processedNodes: FleetNode[]; allNodes: FleetNode[]; topologyNodes: FleetTopologyNode[]; viewMode: ViewMode; onViewModeChange: (mode: ViewMode) => void; searchQuery: string; onSearchQueryChange: (q: string) => void; prefs: FleetPreferences; onPrefsChange: (update: Partial) => void; fleetPalette: FleetPaletteEntry[]; labelFilters: Set; onLabelFiltersChange: (filters: Set) => void; onClearFilters: () => void; fleetStackLabelMap: Record>; updateStatusMap: Map; onNavigateToNode: (nodeId: number, stackName: string) => void; onUpdate?: (nodeId: number) => void; updatingNodeId: number | null; onRetryUpdate?: (nodeId: number) => void; onDismissUpdate?: (nodeId: number) => void; } export function OverviewTab({ loading, nodes, processedNodes, allNodes, topologyNodes, viewMode, onViewModeChange, searchQuery, onSearchQueryChange, prefs, onPrefsChange, fleetPalette, labelFilters, onLabelFiltersChange, onClearFilters, fleetStackLabelMap, updateStatusMap, onNavigateToNode, onUpdate, updatingNodeId, onRetryUpdate, onDismissUpdate, }: OverviewTabProps) { return ( <> {loading && (
{Array.from({ length: 3 }).map((_, i) => (
))}
)} {!loading && nodes.length === 0 && (

No nodes configured

Add nodes in Settings to see your fleet here.

)} {!loading && nodes.length > 0 && ( <> {viewMode === 'topology' && processedNodes.length > 0 ? ( onNavigateToNode(id, '')} /> ) : processedNodes.length > 0 ? (
{allNodes.map(node => ( ))}
) : (

No nodes match your filters

Try adjusting your search or filter criteria.

)}

Auto-refreshing every 30 seconds

)} ); }