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 (
{/* Connections */}
Connections
{Math.round(animatedConn)}
{/* Requests/sec */}
{formatNumber(animatedReq)}
{/* Average Latency */}
Avg Latency
{animatedLat.toFixed(0)}ms
{/* Integrity */}
Integrity
{liveData.integrity}%
{Array.from({ length: 10 }).map((_, i) => (
))}
)
}