import { useEffect, useState } from "react"; import { getJSONAuth } from "../../../api"; import { getToken } from "../../../admin/token"; import { useAdminT } from "../../../admin/useAdminT"; type Dash = { totalResources: number; published: number; todayNew: number; totalViews: number; totalDownloads: number; totalFavorites: number; totalShares: number; hotResources: { id: string; title: string; downloads: number; favorites: number; views: number; }[]; }; export function AdminDashboard() { const t = useAdminT(); const [d, setD] = useState(null); const token = getToken(); useEffect(() => { getJSONAuth("/api/admin/dashboard", token) .then(setD) .catch(() => setD(null)); }, [token]); if (!d) return
{t("loading")}
; return (

{t("dashboard")}

{t("popular")}
{(d.hotResources ?? []).map((x) => (
{x.title}
{t("adminMetricDownloads")} {x.downloads} ·{" "} {t("adminMetricFavorites")} {x.favorites} ·{" "} {t("adminMetricViews")} {x.views}
))}
); } function Stat({ label, value }: { label: string; value: number }) { return (
{label}
{value}
); }