diff --git a/packages/widgets/src/beszel-system-grid/component.tsx b/packages/widgets/src/beszel-system-grid/component.tsx index b213c5e72..ab265e6ad 100644 --- a/packages/widgets/src/beszel-system-grid/component.tsx +++ b/packages/widgets/src/beszel-system-grid/component.tsx @@ -1,6 +1,6 @@ "use client"; -import { Badge, Box, Card, Group, Progress, Text, Stack } from "@mantine/core"; +import { Badge, Box, Card, Group, Progress, Text, Stack, useComputedColorScheme } from "@mantine/core"; import { Activity, Battery, @@ -16,6 +16,7 @@ import { } from "lucide-react"; import { clientApi } from "@homarr/api/client"; +import { useRequiredBoard } from "@homarr/boards/context"; import { useScopedI18n } from "@homarr/translation/client"; import type { WidgetComponentProps } from "../definition"; @@ -151,6 +152,8 @@ interface SystemCardProps { t: ReturnType>; size: SizeConfig; maxMetrics: number; + backgroundColor: string; + itemRadius: string; } const metricRenderers = [ @@ -307,19 +310,20 @@ const metricRenderers = [ }, ] as const; -const SystemCard = ({ system, options, t, size, maxMetrics }: SystemCardProps) => { +const SystemCard = ({ system, options, t, size, maxMetrics, backgroundColor, itemRadius }: SystemCardProps) => { const visibleMetrics = metricRenderers.filter((m) => m.visible(system, options)).slice(0, maxMetrics); return ( @@ -348,6 +352,11 @@ export default function BeszelSystemGridWidget({ height, }: WidgetComponentProps<"beszelSystemGrid">) { const t = useScopedI18n("widget.beszelSystemGrid"); + const board = useRequiredBoard(); + const colorScheme = useComputedColorScheme("light"); + const opacity = board.opacity / 100; + const backgroundColor = colorScheme === "dark" ? `rgba(57, 57, 57, ${opacity})` : `rgba(246, 247, 248, ${opacity})`; + const { data: results = [] } = clientApi.widget.beszel.getSystems.useQuery( { integrationIds }, { staleTime: 5_000, refetchInterval: 5_000, retry: false }, @@ -378,7 +387,16 @@ export default function BeszelSystemGridWidget({ }} > {filteredSystems.map((system) => ( - + ))} );