+
+
Universele rapportage
+
Tijdlijn en notities
+
+ Alle behandeladviezen en vrije notities voor deze cliënt op één plek.
- {/* Placeholder */}
-
-
-
-
-
- Rapportage Module - Coming Soon
-
-
- De rapportage functionaliteit wordt in een latere fase geïmplementeerd.
- Dit omvat overzichten, statistieken en exportfunctionaliteit.
-
+
+ }
+ label="Totaal rapportages"
+ value={totalReports.toString()}
+ helper={totalReports > 0 ? 'Inclusief soft-deletes' : 'Nog geen rapportages'}
+ />
+ }
+ label="AI classificaties"
+ value={`${reports.filter((r) => r.ai_confidence !== null).length}`}
+ helper="AI helpt bij type bepaling"
+ />
+ }
+ label="Laatste activiteit"
+ value={latestDate ?? '—'}
+ helper={latestDate ? 'Recentste rapportage' : 'Nog geen activiteit'}
+ />
+
+
+
+ );
+}
+
+function StatCard({
+ icon,
+ label,
+ value,
+ helper,
+}: {
+ icon: ReactNode;
+ label: string;
+ value: string;
+ helper: string;
+}) {
+ return (
+
);
}
diff --git a/app/layout.tsx b/app/layout.tsx
index c678c1d..68ab03e 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -1,6 +1,7 @@
import type { Metadata } from "next";
import localFont from "next/font/local";
import "./globals.css";
+import { Toaster } from '@/components/ui/toaster';
// Serif font voor long-form content (manifesto) - lokaal geladen om build zonder netwerk te laten slagen
const crimsonText = localFont({
@@ -129,6 +130,7 @@ export default function RootLayout({
className={`${crimsonText.variable} ${inter.variable} ${jetBrainsMono.variable} antialiased`}
>
{children}
+