"use client"; import { useEffect, useState } from "react"; import { useTranslations } from "next-intl"; interface Summary { totalRuns: number; totalTokensSaved: number; runsWithStyles: number; bypassCount: number; totalOutputTokens: number; appliedStyleCounts: Record; } const EMPTY: Summary = { totalRuns: 0, totalTokensSaved: 0, runsWithStyles: 0, bypassCount: 0, totalOutputTokens: 0, appliedStyleCounts: {}, }; export default function CompressionStylesTile() { const t = useTranslations("settings"); const [summary, setSummary] = useState(EMPTY); useEffect(() => { fetch("/api/settings/compression/run-telemetry") .then((r) => (r.ok ? r.json() : null)) .then((data: Summary | null) => { if (data) setSummary(data); }) .catch(() => {}); }, []); const styles = Object.entries(summary.appliedStyleCounts); return (

{t("compressionStylesTileTitle")}

{summary.totalTokensSaved.toLocaleString("en-US", { useGrouping: false })}

tokens saved · {summary.runsWithStyles} runs styled

{styles.length === 0 ? ( No styled runs yet. ) : ( styles.map(([id, count]) => ( {id} · {count} )) )}
); }