"use client"; import type { Widget } from "@/lib/config/schema"; import { useWidgetSubscription } from "@/lib/ws/client"; import { SkeletonLines } from "@/components/widgets/Skeleton"; import { WidgetCard } from "@/components/widgets/WidgetCard"; import { StatusDot } from "@/components/widgets/StatusDot"; import { BrandIcon } from "@/components/widgets/BrandIcon"; type TraefikWidget = Extract; export function TraefikWidget({ widget, widgetId }: { widget: TraefikWidget; widgetId: string }) { const result = useWidgetSubscription(widgetId); const data = result?.type === "traefik" ? result.data : null; const errorMessage = result?.type === "error" ? result.message : null; const enabledCount = data?.routers.filter((router) => router.status === "enabled").length ?? 0; return (
{widget.href ? ( {widget.name} ) : ( {widget.name} )}
{data && ( {data.entrypoints.length} entrypoints )}
{errorMessage && {errorMessage}} {!result && !errorMessage && } {data && ( <>
{data.routers.length} Routes
{enabledCount !== data.routers.length && (
{enabledCount} Enabled
)}
{data.middlewaresCount} middlewares )}
); }