"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 ? ( {`minecraft ) : ( ))} {formatNumber(data.players.online, 1)} / {formatNumber(data.players.max, 1)} {isAdvanced && = 90 ? "orange" : "teal"} />} )} {isAdvanced && !data.online && ( {options.domain} )} ); }