"use client" import Link from "next/link" import { aiQuotaUsedMonthPct, formatAiCostEUR, type AiQuota, } from "@/lib/api/hooks/use-ai-queries" import { ACCOUNT_SETTINGS_BASE_PATH } from "@/lib/compte-settings/settings-nav" import { cn } from "@/lib/utils" export function AiSpendBar({ quota, compact = false, className, }: { quota: AiQuota compact?: boolean className?: string }) { const pct = aiQuotaUsedMonthPct(quota) const warnPct = quota.warn_threshold_pct || 80 const nearLimit = pct != null && pct >= warnPct const isBYOK = !quota.billing_scope_org if (isBYOK) { const byokTotal = (quota.by_provider_keys ?? []).reduce( (sum, k) => sum + k.cost_month_micro_eur, quota.cost_used_month_micro_eur ) return (
Clé personnelle {formatAiCostEUR(byokTotal)} / mois
{!compact && (quota.by_provider_keys?.length ?? 0) > 0 ? (
{quota.by_provider_keys!.slice(0, 3).map((k) => (
{k.label} {formatAiCostEUR(k.cost_month_micro_eur)}
))}
) : null}
) } return (
IA {nearLimit ? "· proche du plafond" : ""} {formatAiCostEUR(quota.cost_used_month_micro_eur)} {quota.cost_limit_month_micro_eur ? ` / ${formatAiCostEUR(quota.cost_limit_month_micro_eur)}` : ""}
{pct != null ? (
) : null} {!compact ? ( Détail de consommation ) : null}
) }