"use client" import { useMemo } from "react" import { type ColumnDef, useTable, } from "@tanstack/react-table" import type { Server, ServerType } from "@/lib/data" import { StatusBadge } from "@/components/status-badge" import { Badge, type BadgeProps } from "@/components/reui/badge" import { Flag } from "@/components/flag" import { cn } from "@/lib/utils" import { Button } from "@/components/ui/button" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { DataGridShell } from "@/components/data-grids/shared/data-grid-shell" import { dataGridFeatures, type DataGridFeatures } from "@/components/reui/data-grid/data-grid" import { DATA_GRID_CELL_PAD, DATA_GRID_CELL_PAD_FIRST, DATA_GRID_CELL_PAD_LAST, } from "@/components/data-grids/shared/data-grid-layout" import { DataGridSortHeader } from "@/components/data-grids/shared/data-grid-sort-header" import { EmptyState } from "@/components/empty-state" import { ServerExpandedDetail } from "@/components/data-grids/server-expanded-detail" import { ChevronRightIcon, ChevronDownIcon, HomeIcon, ServerIcon, NetworkIcon, ShieldIcon, WifiIcon, MoreHorizontalIcon, ExternalLinkIcon, PencilIcon, RefreshCwIcon, PowerIcon, Trash2Icon, } from "lucide-react" const TYPE_LABELS: Record = { "jump-host": "JumpHost", "exit-node": "Exit Node", "home-router": "Home Router", } const TYPE_VARIANTS: Record = { "jump-host": "primary-light", "exit-node": "info-light", "home-router": "success-light", } function rosVer(os: string): number { const m = os.match(/(\d+)\.(\d+)/) if (!m) return 0 return parseInt(m[1], 10) * 100 + parseInt(m[2], 10) } function TypeBadge({ type }: { type: ServerType }) { const icon = type === "jump-host" ?