"use client" import type { WireGuardPeer } from "@/lib/data" import { cn } from "@/lib/utils" import { ArrowDownIcon, ArrowUpIcon, KeyRoundIcon, } from "lucide-react" function fmtBytes(n: number | undefined): string { if (!n) return "—" if (n >= 1_000_000_000) return `${(n / 1_000_000_000).toFixed(1)} ГБ` if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(1)} МБ` if (n >= 1_000) return `${(n / 1_000).toFixed(0)} КБ` return `${n} Б` } function truncKey(key: string): string { if (key.length <= 20) return key return `${key.slice(0, 8)}…${key.slice(-8)}` } function WireGuardPeersDetail({ peers }: { peers: WireGuardPeer[] }) { if (peers.length === 0) { return (
Нет пиров
) } return (
Public Key Allowed IPs Последнее рукопожатие RX / TX Endpoint
{peers.map((peer) => (
{truncKey(peer.publicKey)}
{peer.allowedIps.join(", ")}
{peer.latestHandshake ?? "нет рукопожатия"}
{fmtBytes(peer.transferRx)} {fmtBytes(peer.transferTx)}
{peer.endpoint ?? "—"}
))}
) } export { WireGuardPeersDetail, fmtBytes, truncKey }