"use client" import { ServerApi } from "@/app/types/nezha-api" import { Loader } from "@/components/loading/Loader" import { Card, CardContent } from "@/components/ui/card" import getEnv from "@/lib/env-entry" import { useFilter } from "@/lib/network-filter-context" import { useStatus } from "@/lib/status-context" import { cn, formatBytes, nezhaFetcher } from "@/lib/utils" import blogMan from "@/public/blog-man.webp" import { ArrowDownCircleIcon, ArrowUpCircleIcon } from "@heroicons/react/20/solid" import { useTranslations } from "next-intl" import Image from "next/image" import useSWRImmutable from "swr/immutable" export default function ServerOverviewClient() { const { status, setStatus } = useStatus() const { filter, setFilter } = useFilter() const t = useTranslations("ServerOverviewClient") const { data, error, isLoading } = useSWRImmutable("/api/server", nezhaFetcher) const disableCartoon = getEnv("NEXT_PUBLIC_DisableCartoon") === "true" if (error) { return (

Error status:{error.status} {error.info?.cause ?? error.message}

{t("error_message")}

) } return ( <>
{ setFilter(false) setStatus("all") }} className={cn("cursor-pointer hover:border-blue-500 transition-all group")} >

{t("p_816-881_Totalservers")}

{data?.result ? (
{data?.result.length}
) : (
)}
{ setFilter(false) setStatus("online") }} className={cn( "cursor-pointer hover:ring-green-500 ring-1 ring-transparent transition-all", { "ring-green-500 ring-2 border-transparent": status === "online", }, )} >

{t("p_1610-1676_Onlineservers")}

{data?.result ? (
{data?.live_servers}
) : (
)}
{ setFilter(false) setStatus("offline") }} className={cn( "cursor-pointer hover:ring-red-500 ring-1 ring-transparent transition-all", { "ring-red-500 ring-2 border-transparent": status === "offline", }, )} >

{t("p_2532-2599_Offlineservers")}

{data?.result ? (
{data?.offline_servers}
) : (
)}
{ setStatus("all") setFilter(true) }} className={cn( "cursor-pointer hover:ring-purple-500 ring-1 ring-transparent transition-all group", { "ring-purple-500 ring-2 border-transparent": filter === true, }, )} >

{t("network")}

{data?.result ? ( <>

↑{formatBytes(data?.total_out_bandwidth)}

↓{formatBytes(data?.total_in_bandwidth)}

{formatBytes(data?.total_out_speed)}/s

{formatBytes(data?.total_in_speed)}/s

) : (
)}
{!disableCartoon && ( {"Hamster1963"} )}
{data?.result === undefined && !isLoading && (

{t("error_message")}

)} ) }