"use client"; import React from 'react'; import { ScrollArea } from '@/components/ui/scroll-area'; import { useAppStore } from '@/store/app-store'; import { formatTimestamp } from '@/lib/utils'; import { ChevronRight } from 'lucide-react'; export function NexusSyncMonitor() { const { syncEvents, syncStates } = useAppStore(); const [expandedItems, setExpandedItems] = React.useState>(new Set(['players'])); const toggleExpand = (id: string) => { setExpandedItems(prev => { const next = new Set(prev); if (next.has(id)) { next.delete(id); } else { next.add(id); } return next; }); }; return (
{/* Left: State Tree */}

State Tree

└─ GameState
{expandedItems.has('players') && (
├─ Player_001
├─ position: {JSON.stringify({x: 120, y: 85, z: 0})}
├─ health: 100
└─ inventory: [item1, item2]
├─ Player_002
└─ Player_003
)}
{expandedItems.has('world') && (
├─ objects: [...]
└─ weather: "sunny"
)}
{expandedItems.has('matchmaking') && (
└─ queue: []
)}
{/* Right: Activity Feed */}

Sync Activity Feed

{/* Mock events */}
14:30:45.123 [Roblox→All] Player_001.position updated
14:30:45.124 [Web] Ack received (12ms latency)
14:30:45.126 [Mobile] Ack received (14ms latency)
14:30:45.140 [Desktop] Ack received (28ms latency)
14:30:46.001 [Web→All] Player_002.health changed: 100→95
14:30:46.015 [Conflict] Player_001.inventory - resolving...
14:30:46.020 [Resolved] Server authority applied
{syncEvents.map((event: any) => (
{formatTimestamp(event.timestamp)} [{event.source}→{event.target}] {event.variable} {event.type}
))}
{/* Bottom Stats */}
Total syncs
1,247
Conflicts
3
Avg latency
18ms
Bandwidth
2.3 KB/s
); }