"use client"; import { useEffect, useState } from "react"; import { api, AdminError, type Stats } from "@/lib/api"; export default function OverviewPage() { const [stats, setStats] = useState(null); const [error, setError] = useState(null); useEffect(() => { let cancelled = false; api .stats() .then((s) => { if (!cancelled) setStats(s); }) .catch((e) => { if (!cancelled) setError(e instanceof AdminError ? e.message : "Could not load stats."); }); return () => { cancelled = true; }; }, []); return (

Overview

{error ? (

{error}

) : !stats ? (

Loading…

) : ( <>

Feedback by category

{!stats.feedback_by_category?.length ? (

No feedback yet.

) : (
{stats.feedback_by_category.map((c) => (
{c.category.replace(/_/g, " ")} {c.count}
))}
)}
)}
); } function StatCard({ label, value, delta, }: { label: string; value: number; delta?: string; }) { return (
{label}
{value.toLocaleString()} {delta ? ( {delta} ) : null}
); }