import { useState, useEffect } from 'react';
import { Link } from 'react-router-dom';
import { motion } from 'framer-motion';
import { Activity, Users, Key, BarChart3, ArrowRight, CheckCircle2, XCircle } from 'lucide-react';
import { useAuth } from '../context/AuthContext';
export default function Dashboard() {
const { token } = useAuth();
const [stats, setStats] = useState({
keys: 0,
tokens: 0,
keyRequests: 0,
tokenEnabled: 0,
tokenDisabled: 0,
todayRequests: 0
});
const [isLoading, setIsLoading] = useState(true);
useEffect(() => {
const fetchData = async () => {
try {
const headers = { 'X-Admin-Token': token };
const [keysRes, tokensRes, keyStatsRes, tokenStatsRes, todayReqRes] = await Promise.all([
fetch('/admin/keys', { headers }),
fetch('/admin/tokens', { headers }),
fetch('/admin/keys/stats', { headers }),
fetch('/admin/tokens/stats', { headers }),
fetch('/admin/today-requests', { headers })
]);
const keys = await keysRes.json();
const tokens = await tokensRes.json();
const keyStats = await keyStatsRes.json();
const tokenStats = await tokenStatsRes.json();
const todayReq = await todayReqRes.json();
setStats({
keys: keys.length,
tokens: tokens.length,
keyRequests: keyStats.totalRequests || 0,
tokenEnabled: tokenStats.enabled || 0,
tokenDisabled: tokenStats.disabled || 0,
todayRequests: todayReq.todayRequests || 0
});
} catch (error) {
console.error('Failed to fetch dashboard data', error);
} finally {
setIsLoading(false);
}
};
fetchData();
}, [token]);
const container = {
hidden: { opacity: 0 },
show: {
opacity: 1,
transition: {
staggerChildren: 0.1
}
}
};
const item = {
hidden: { opacity: 0, y: 20 },
show: { opacity: 1, y: 0 }
};
return (
Antigravity API 网关正在平稳运行。这里是您的控制中心,您可以管理 Token、密钥并监控系统状态。
欢迎回来, 管理员
快速开始指南
{title}
{desc}