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')}

  1. {t('common.contactAdmin')}
  2. {t('common.logoutAndLogin')}
  3. {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;