CodeLens / dashboard /src /components /StatsRow.tsx
ArshVerma's picture
Switch dashboard to Light Mode Premium Aesthetic
3fc3cc7
Raw
History Blame Contribute Delete
1.27 kB
import React from "react";
import { useQuery } from "@tanstack/react-query";
import { Trophy, Zap, Activity } from "lucide-react";
import { fetchStats, fetchHealth } from "../api";
import StatCard from "./StatCard";
const StatsRow: React.FC = () => {
const { data: stats } = useQuery({
queryKey: ["stats"],
queryFn: fetchStats,
refetchInterval: 30_000,
});
const { data: health } = useQuery({
queryKey: ["health"],
queryFn: fetchHealth,
refetchInterval: 10_000,
});
return (
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
<StatCard
label="Total Episodes"
value={stats?.total_episodes ?? 0}
icon={<Trophy className="w-5 h-5 text-amber-600" />}
iconBg="bg-amber-50 border border-amber-100"
/>
<StatCard
label="Avg. Score"
value={stats?.avg_score?.toFixed(2) ?? "0.00"}
icon={<Zap className="w-5 h-5 text-blue-600" />}
iconBg="bg-blue-50 border border-blue-100"
/>
<StatCard
label="Active Episodes"
value={health?.active_episodes ?? 0}
icon={<Activity className="w-5 h-5 text-emerald-600" />}
iconBg="bg-emerald-50 border border-emerald-100"
/>
</div>
);
};
export default StatsRow;