"use client"; import { useQuery } from "@tanstack/react-query"; import { AlertTriangle, CheckCircle2, ClipboardList, Clock, FilePenLine, Gauge, Plus, Stethoscope, TestTube2, Users } from "lucide-react"; import Link from "next/link"; import { useAuth } from "@/components/auth"; import { apiGet } from "@/lib/api"; import { BrandLogo } from "@/components/brand/brand-logo"; type DashboardData = { customers: number; devices: number; equipment: number; validations: number; validation_drafts: number; validation_ready: number; validation_in_review: number; validation_approved: number; validation_completed: number; validation_overdue: number; equipment_green: number; equipment_yellow: number; equipment_red: number; }; const primaryCards = [ { label: "Neue Validierung", value: "Starten", href: "/validations/new", icon: Plus }, { label: "Validierungen", key: "validations", href: "/validations", icon: ClipboardList }, { label: "Kunden", key: "customers", href: "/customers", icon: Users }, { label: "Geraete", key: "devices", href: "/devices", icon: Stethoscope }, { label: "Pruefmittel", key: "equipment", href: "/equipment", icon: TestTube2 } ] as const; const workflowCards = [ { label: "Entwuerfe", key: "validation_drafts", href: "/validations?status=ENTWURF", icon: FilePenLine }, { label: "Bereit zur Pruefung", key: "validation_ready", href: "/validations?status=BEREIT_ZUR_PRUEFUNG", icon: ClipboardList }, { label: "In Pruefung", key: "validation_in_review", href: "/validations?status=IN_PRUEFUNG", icon: Clock }, { label: "Freigegeben", key: "validation_approved", href: "/validations?status=FREIGEGEBEN", icon: CheckCircle2 }, { label: "Ueberfaellige Revalidierungen", key: "validation_overdue", href: "/validations?overdue_only=true", icon: AlertTriangle } ] as const; export default function DashboardPage() { const { token } = useAuth(); const query = useQuery({ queryKey: ["dashboard", token], queryFn: () => apiGet("/dashboard", token ?? ""), enabled: Boolean(token) }); return (

Benutzer: angemeldet

Speicherstatus: synchronisiert

Dashboard

Validierungsworkflow und faellige Revalidierungen.

{primaryCards.map((item) => { const Icon = item.icon; const value = "key" in item ? query.data?.[item.key] ?? 0 : item.value; return (

{item.label}

{value}

); })}
{workflowCards.map((item) => { const Icon = item.icon; return (

{item.label}

{query.data?.[item.key] ?? 0}

); })}

Zuletzt bearbeitet

Aktuelle Validierungen nach Bearbeitungsdatum oeffnen.

Ueberfaellige Revalidierungen

{query.data?.validation_overdue ?? 0}

Kalibrierstatus

Gruen {query.data?.equipment_green ?? 0} · Gelb {query.data?.equipment_yellow ?? 0} · Rot {query.data?.equipment_red ?? 0}

Letzte Berichte

{query.data?.validation_completed ?? 0}

); }