"use client"; import PropTypes from "prop-types"; import styles from "../../DashboardPage.module.css"; const integerFormatter = new Intl.NumberFormat("en-US"); const compactFormatter = new Intl.NumberFormat("en-US", { notation: "compact", maximumFractionDigits: 1, }); function toNumber(value) { const number = Number(value); return Number.isFinite(number) ? number : 0; } const statDefinitions = [ { key: "requests", label: "Today's requests", icon: "trending_up", description: "Since local midnight", getValue: (stats) => integerFormatter.format(toNumber(stats.totalRequests)), }, { key: "input", label: "Input tokens", icon: "input", description: "Prompt volume today", getValue: (stats) => compactFormatter.format(toNumber(stats.totalPromptTokens)), }, { key: "output", label: "Output tokens", icon: "output", description: "Completion volume today", getValue: (stats) => compactFormatter.format(toNumber(stats.totalCompletionTokens)), }, { key: "providers", label: "Active providers", icon: "dns", description: "Healthy connections", getValue: (_stats, providerSummary) => providerSummary ? `${providerSummary.active} / ${providerSummary.total}` : "—", }, ]; function getVisibleStatDefinitions(isAdmin) { return isAdmin ? statDefinitions : statDefinitions.filter((stat) => stat.key !== "providers"); } export function QuickStatsBarSkeleton({ isAdmin = false }) { const visibleStatDefinitions = getVisibleStatDefinitions(isAdmin); return (
Loading today's gateway statistics. {visibleStatDefinitions.map((stat) => (
); } export default function QuickStatsBar({ stats, providerSummary = null, isAdmin = false }) { if (!stats) return null; const visibleStatDefinitions = getVisibleStatDefinitions(isAdmin); return (

Today's gateway overview

{visibleStatDefinitions.map((stat) => (

{stat.label}

{stat.getValue(stats, providerSummary)}

{stat.description}

))}
); } QuickStatsBar.propTypes = { isAdmin: PropTypes.bool, stats: PropTypes.shape({ totalRequests: PropTypes.number, totalPromptTokens: PropTypes.number, totalCompletionTokens: PropTypes.number, }), providerSummary: PropTypes.shape({ active: PropTypes.number.isRequired, total: PropTypes.number.isRequired, }), };