"use client";
import { Badge, Box, Flex, Group, Progress, Stack, Text, Tooltip } from "@mantine/core";
import { IconCube, IconUsersGroup } from "@tabler/icons-react";
import { clientApi } from "@homarr/api/client";
import { formatNumber } from "@homarr/common";
import { useI18n } from "@homarr/translation/client";
import { WidgetEmptyState } from "../../common/empty-state";
import type { WidgetComponentProps } from "../../definition";
export default function MinecraftServerStatusWidget({
options,
width,
height,
displayMode,
}: WidgetComponentProps<"minecraftServerStatus">) {
const { data: result } = clientApi.widget.minecraft.getServerStatus.useQuery(options);
const t = useI18n();
if (!result) return ;
const { data } = result;
const title = options.title.trim().length > 0 ? options.title : options.domain;
const isAdvanced = displayMode === "advanced";
const iconSize = Math.max(40, Math.min(isAdvanced ? 128 : 80, width * 0.45, height * 0.45));
const playerPercent = data.online && data.players.max > 0 ? (data.players.online / data.players.max) * 100 : 0;
return (
{title}
{isAdvanced && (
{options.domain}
{options.isBedrockServer && (
{t("widget.minecraftServerStatus.option.isBedrockServer.label")}
)}
)}
{data.online && (
<>
{!options.isBedrockServer &&
(data.icon ? (
) : (
))}
{formatNumber(data.players.online, 1)} / {formatNumber(data.players.max, 1)}
{isAdvanced &&
>
)}
{isAdvanced && !data.online && (
{options.domain}
)}
);
}