import React from 'react';
import { useTranslation } from '@/hooks/useI18n.tsx';
import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/Card.tsx';
import DashboardStats from '@/components/admin/DashboardStats.tsx';
import EconomicGraph from '@/components/admin/EconomicGraph.tsx';
import SupplyChainAnalysis from '@/components/admin/SupplyChainAnalysis.tsx';
import { ActivityFeed } from '@/components/admin/ActivityFeed.tsx';
import { useAdminDashboard } from '@/hooks/features/useAdminDashboard.ts';
import { Grid, Stack } from '@/components/ui/layout';
import { Button } from '@/components/ui';
import { useNavigate } from 'react-router-dom';
import { CheckCircle, AlertCircle, Clock, Users } from 'lucide-react';
import { useAuth } from '@/contexts/AuthContext';
const AdminDashboard = () => {
const { t } = useTranslation();
const { stats, recentActivity, quickActions, isLoading, error } = useAdminDashboard();
const { user } = useAuth();
const navigate = useNavigate();
const quickActionButtons = [
{
label: t('adminPage.quickActions.verifyPending'),
icon: ,
count: quickActions.pendingVerifications,
onClick: () => navigate('/admin/organizations/verification'),
variant: 'default' as const,
},
{
label: t('adminPage.quickActions.reviewTranslations'),
icon: ,
count: quickActions.pendingTranslations,
onClick: () => navigate('/admin/localization/ui'),
variant: 'secondary' as const,
},
{
label: t('adminPage.quickActions.viewAlerts'),
icon: ,
count: quickActions.systemAlerts,
onClick: () => navigate('/admin/settings/maintenance'),
variant: 'outline' as const,
},
{
label: t('adminPage.quickActions.help'),
icon: ,
onClick: () => navigate('/help'),
variant: 'ghost' as const,
},
];
// Show error message if API call failed (likely 403 - not admin)
if (error && !isLoading) {
const apiError = error as {
status?: number;
data?: { user_role?: string; required_role?: string };
};
const isForbidden = apiError?.status === 403;
const errorData = apiError?.data;
const userRole = errorData?.user_role || user?.role;
const requiredRole = errorData?.required_role || 'admin';
return (
{isForbidden && (
{t('common.accessDenied')}: {t('common.administratorPrivileges')}
{t('common.currentRole')}{' '}
{userRole || 'unknown'}
{t('common.requiredRole')}{' '}
{requiredRole}
{userRole !== 'admin' && (
{t('common.fixThis')}
- {t('common.contactAdmin')}
- {t('common.logoutAndLogin')}
- {t('common.contactAdmin')}
)}
{t('common.contactAdminHelp')}
)}
{!isForbidden && (
{t('common.errorLoadingDashboard')}: {(error as Error)?.message || 'Unknown error'}
)}
);
}
return (
{/* Key Metrics */}
{/* Charts Section */}
{t('adminPage.economicConnections')}
{t('adminPage.economicConnectionsDesc')}
{t('adminPage.supplyDemand')}
{/* Bottom Row: Recent Activity & Quick Actions */}
{t('adminPage.recentActivity')}
{t('adminPage.quickActions.title')}
{quickActionButtons.map((action, index) => (
))}
);
};
export default AdminDashboard;