import { useState, useEffect } from 'react' import { motion } from 'framer-motion' import { Wifi, Activity, Timer, ShieldCheck } from 'lucide-react' import { useAnimatedNumber, useLiveData, useInterval, formatNumber } from '../hooks/useUtils.js' function BarChart({ values, max, color = 'primary', height = 60 }) { return (
{values.map((v, i) => ( ))}
) } export default function Telemetry() { const [connHistory, setConnHistory] = useState(Array.from({ length: 20 }, () => 600 + Math.random() * 300)) const [reqHistory, setReqHistory] = useState(Array.from({ length: 20 }, () => 7000 + Math.random() * 3000)) const liveData = useLiveData({ connections: 842, requestsPerSec: 9224, avgLatency: 14, integrity: 100, }, 2000, 0.03) useInterval(() => { setConnHistory(prev => [...prev.slice(1), liveData.connections]) setReqHistory(prev => [...prev.slice(1), liveData.requestsPerSec]) }, 2000) const animatedConn = useAnimatedNumber(liveData.connections, 600) const animatedReq = useAnimatedNumber(liveData.requestsPerSec, 600) const animatedLat = useAnimatedNumber(liveData.avgLatency, 600) return (
Telemetry
{/* Connections */}
Connections
{Math.round(animatedConn)}
{/* Requests/sec */}
Requests/sec
{formatNumber(animatedReq)}
{/* Average Latency */}
Avg Latency
{animatedLat.toFixed(0)}ms
{/* Integrity */}
Integrity
{liveData.integrity}%
{Array.from({ length: 10 }).map((_, i) => (
))}
) }