import React, { useState, useEffect, useRef } from 'react'; import { BarChart, Bar, XAxis, YAxis, Tooltip, ResponsiveContainer } from 'recharts'; import { initLocalEngine, routeInference } from '../utils/inferenceRouter'; import HCaptcha from '@hcaptcha/react-hcaptcha'; import { supabase, useAuth, GATEWAY_URL, LEMON_CHECKOUT_URL } from '../context'; export default function UsageCard({ usage, user, apiKey }) { const [usageHistory, setUsageHistory] = useState([]); useEffect(() => { const fetchHistory = async () => { if (!user) return; try { const res = await fetch( `${import.meta.env.VITE_GATEWAY_URL}/gateway/usage/${user.id}/history`, { headers: { 'X-API-Key': apiKey } } ); if (res.ok) { const data = await res.json(); const formatted = data.history.map(d => ({ day: d.date.slice(5), requests: d.count })); setUsageHistory(formatted); } } catch (err) { console.error('Usage history fetch failed:', err); } }; if (apiKey) fetchHistory(); }, [apiKey, user]); const percent = usage.monthly_limit > 0 ? (usage.current_usage / usage.monthly_limit) * 100 : 0 const fillClass = percent > 90 ? 'danger' : percent > 70 ? 'warning' : '' return (
API Usage
{usage.tier}
{usage.current_usage.toLocaleString()} calls used {usage.monthly_limit.toLocaleString()} limit
Resets: {usage.usage_reset_at ? new Date(usage.usage_reset_at).toLocaleDateString() : 'End of month'}
) }