import { PageHeader } from "@/components/page-header"
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
import { StatusDot } from "@/components/status-dot"
import { StatusBadge } from "@/components/status-badge"
import { Sparkline } from "@/components/sparkline"
import { LatencyChart } from "@/components/dashboard/latency-chart"
import { BandwidthChart } from "@/components/dashboard/bandwidth-chart"
import { servers, pingProbes, systemEvents, dashLatency, traffic } from "@/lib/data"
import { Flag } from "@/components/flag"
import { AlertCircleIcon, AlertTriangleIcon, InfoIcon, FilterIcon, DownloadIcon } from "lucide-react"
import { Button } from "@/components/ui/button"
function StatCard({
label, value, unit, delta, deltaDir, spark, sparkColor,
}: {
label: string; value: string; unit?: string; delta?: string
deltaDir?: "up" | "down"; spark?: number[]; sparkColor?: string
}) {
return (
{label}
{delta}
Последние 60 минут · ping от монитора → серверы MikroTik
Система и BGP-активность
{e.title}
{e.message}
Суммарный RX / TX по всем серверам
7 узлов MikroTik
{s.name}
8 ping-зондов · опрос раз в секунду
| Проба | Цель | Фильтр | RTT | Потери | 60с | Статус |
|---|---|---|---|---|---|---|
| {p.name} | {p.target} |
|
{p.rtt == null ? "—" : `${p.rtt} мс`} | 5 ? "text-red-500" : p.loss > 0 ? "text-amber-500" : "text-muted-foreground"}`}> {p.loss}% |
|
|