"use client" import { CompactDataGrid, type CompactDataGridColumn } from "@/components/data-grids/compact-data-grid" import { Flag } from "@/components/flag" import { Badge } from "@/components/reui/badge" import { fmtBps, formatBytes } from "@/lib/fmt-rate" import { cn } from "@/lib/utils" import { STATISTICS_UNBOUND_USER_ID, type StatisticsBreakdownRow } from "@mmapp/contracts/statistics" export type StatisticsSliceKind = "users" | "servers" | "interfaces" | "countries" | "services" | "asns" export function StatisticsBreakdownDataGrid({ rows, kind, selectedId, onRowClick, isLoading, density = "full", }: { rows: StatisticsBreakdownRow[] kind: StatisticsSliceKind selectedId?: string onRowClick?: (row: StatisticsBreakdownRow) => void isLoading?: boolean density?: "full" | "mini" }) { const mini = density === "mini" const columns: CompactDataGridColumn[] = [ { id: "label", header: "Имя", accessorKey: "label", cell: (row) => ( {kind === "countries" && row.id !== "XX" && row.id !== STATISTICS_UNBOUND_USER_ID ? ( ) : null} {row.label || row.id} {selectedId === row.id ? ( слайс ) : null} ), }, { id: "bytes", header: "Байты", accessorKey: "bytes", cell: (row) => {formatBytes(row.bytes)}, }, ...(!mini ? [ { id: "packets", header: "Пакеты", accessorKey: "packets" as const, cell: (row: StatisticsBreakdownRow) => ( {row.packets.toLocaleString("ru-RU")} ), }, { id: "bps", header: "Средний bitrate", accessorKey: "bps" as const, cell: (row: StatisticsBreakdownRow) => {fmtBps(row.bps)}, }, ] : []), { id: "percent", header: "Доля", accessorKey: "percent", cell: (row) => {row.percent.toFixed(1)}%, }, ] return ( ) }