'use client'; import { useState, useEffect } from 'react'; import { toast } from 'react-hot-toast'; import { Shield, Users, Activity, TrendingUp, DollarSign, Clock, AlertTriangle, } from 'lucide-react'; import AdminGuard from '@/components/AdminGuard'; import api from '@/lib/api'; export default function AdminDashboard() { const [stats, setStats] = useState({ totalUsers: 0, activeUsers: 0, totalJobs: 0, jobsToday: 0, failedJobs: 0, avgProcessingTime: 0, apiCosts: 0, }); const [recentActivity, setRecentActivity] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { const fetchAdminStats = async () => { try { // These would be admin-only endpoints const [statsRes, activityRes] = await Promise.all([ api.get('/admin/stats'), api.get('/admin/activity?limit=10'), ]); setStats(statsRes.data); setRecentActivity(activityRes.data.items || []); } catch (err) { // Use mock data for demo setStats({ totalUsers: 24, activeUsers: 8, totalJobs: 1247, jobsToday: 47, failedJobs: 3, avgProcessingTime: 4.2, apiCosts: 142.50, }); setRecentActivity([ { id: 1, user: 'john@example.com', action: 'Generated image', module: 'image_generation', time: '2 min ago' }, { id: 2, user: 'jane@example.com', action: 'Transcribed audio', module: 'voice_to_text', time: '5 min ago' }, { id: 3, user: 'admin@example.com', action: 'Updated user role', module: 'admin', time: '12 min ago' }, ]); } finally { setLoading(false); } }; fetchAdminStats(); }, []); return (
{/* Header */}

Admin Dashboard

System overview and management

{/* Stats Grid */}

Total Users

{stats.totalUsers}

{stats.activeUsers} active

Jobs Today

{stats.jobsToday}

{stats.totalJobs} total

Failed Jobs

{stats.failedJobs}

Today

API Costs (Est.)

${stats.apiCosts.toFixed(2)}

This month

{/* Quick Links */}

User Management

Manage users, roles, and permissions

Usage Reports

View detailed usage analytics and reports

Audit Logs

Review system activity and audit trail

{/* Recent Activity */}

Recent Activity

{loading ? (
Loading...
) : recentActivity.length === 0 ? (
No recent activity
) : ( recentActivity.map((activity) => (

{activity.action}

{activity.user}

{activity.module}

{activity.time}

)) )}
); }