import { NezhaAPISafe } from "@/app/[locale]/types/nezha-api"; import ServerCardPopover from "@/components/ServerCardPopover"; import ServerFlag from "@/components/ServerFlag"; import ServerUsageBar from "@/components/ServerUsageBar"; import { Badge } from "@/components/ui/badge"; import { Card } from "@/components/ui/card"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; import getEnv from "@/lib/env-entry"; import { cn, formatBytes, formatNezhaInfo } from "@/lib/utils"; import { useLocale, useTranslations } from "next-intl"; import { useRouter } from "next/navigation"; export default function ServerCard({ serverInfo, }: { serverInfo: NezhaAPISafe; }) { const t = useTranslations("ServerCard"); const router = useRouter(); const { id, name, country_code, online, cpu, up, down, mem, stg, ...props } = formatNezhaInfo(serverInfo); const showFlag = getEnv("NEXT_PUBLIC_ShowFlag") === "true"; const showNetTransfer = getEnv("NEXT_PUBLIC_ShowNetTransfer") === "true"; const locale = useLocale(); return online ? ( { router.push(`/${locale}/detail/${id}`); }} > {showFlag ? : null} {name} { router.push(`/${locale}/network/${id}`); }} className="flex flex-col gap-2 cursor-pointer" > {t("CPU")} {cpu.toFixed(2)}% {t("Mem")} {mem.toFixed(2)}% {t("STG")} {stg.toFixed(2)}% {t("Upload")} {up.toFixed(2)}M/s {t("Download")} {down.toFixed(2)}M/s {showNetTransfer && ( { router.push(`/${locale}/network/${id}`); }} className={"flex items-center justify-between gap-1"} > {t("Upload")}:{formatBytes(serverInfo.status.NetOutTransfer)} {t("Download")}:{formatBytes(serverInfo.status.NetInTransfer)} )} ) : ( {showFlag ? : null} {name} {t("Offline")} ); }
{name}
{t("CPU")}
{t("Mem")}
{t("STG")}
{t("Upload")}
{t("Download")}
{t("Offline")}