"use client"; import { Center, Flex, ScrollArea, SimpleGrid, Stack, Text } from "@mantine/core"; import { clientApi } from "@homarr/api/client"; import { useCurrentIntlLocale, useI18n } from "@homarr/translation/client"; import type { WidgetComponentProps } from "../definition"; import { getUsableWidgetQueryData } from "../common/query-state"; import { VpnIntegrationCard } from "./vpn-card"; export default function VpnWidget({ options, integrationIds, width, height }: WidgetComponentProps<"vpn">) { const summariesQuery = clientApi.widget.vpn.getSummaries.useQuery({ ...options, integrationIds, }); const integrations = getUsableWidgetQueryData(summariesQuery) ?? []; const { isPending } = summariesQuery; const t = useI18n("widget.vpn"); const tCommon = useI18n("common"); const locale = useCurrentIntlLocale(); const dense = width < 240 || height < 120; if (isPending || integrations.length === 0) { return (
{isPending ? tCommon("action.loading") : t("serviceUnavailable")}
); } const [vpn] = integrations; if (integrations.length === 1 && vpn) { return ( ); } return ( = 640 ? 2 : 1} spacing="sm"> {integrations.map((result) => ( {height >= 180 && !result.error && new Date(result.integration.updatedAt).getTime() > 0 && ( {new Date(result.integration.updatedAt).toLocaleString(locale)} )} ))} ); }