"use client"; import { useState } from "react"; type AnalyticsOverview = { overview: { total_queries: number; tool_usage: Record; redflag_count: number; active_users: number; }; }; const API_BASE = process.env.NEXT_PUBLIC_API_URL?.replace(/\/$/, "") || "http://localhost:8000"; export function AnalyticsPanel() { const [tenantId, setTenantId] = useState("tenant123"); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [data, setData] = useState(null); async function fetchAnalytics() { setLoading(true); setError(null); try { const res = await fetch(`${API_BASE}/analytics/overview`, { headers: { "x-tenant-id": tenantId, }, }); if (!res.ok) { throw new Error(`Analytics endpoint returned ${res.status}`); } const payload: AnalyticsOverview = await res.json(); setData(payload.overview); } catch (err) { console.error(err); setError( err instanceof Error ? err.message : "Unable to reach analytics API. Is the FastAPI service running?", ); } finally { setLoading(false); } } return (

Compliance Pulse

Analytics snapshot

setTenantId(e.target.value)} className="rounded-full border border-white/15 bg-white/10 px-4 py-1.5 text-sm text-white outline-none focus:border-cyan-300" />
{["total_queries", "active_users", "redflag_count"].map((key) => (

{key.replace("_", " ")}

{data ? data[key as keyof typeof data] : "—"}

))}

Tool usage (top)

{data ? Object.entries(data.tool_usage) .sort((a, b) => b[1] - a[1])[0]?.[0] ?? "—" : "—"}

Raw tool usage

{data ? Object.entries(data.tool_usage).map(([tool, count]) => (

{tool}

{count}

)) : Array.from({ length: 3 }).map((_, idx) => (

Tool {idx + 1}

))}
{error && (

{error}

)}
); }