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 isForbidden = (error as any)?.status === 403; const errorData = (error as any)?.data; const userRole = errorData?.user_role || user?.role; const requiredRole = errorData?.required_role || 'admin'; return (
{isForbidden && (

Access Denied: You do not have administrator privileges to view this dashboard.

Your current role:{' '} {userRole || 'unknown'}

Required role:{' '} {requiredRole}

{userRole !== 'admin' && (

To fix this:

  1. Your user account in the database needs to have role = 'admin'
  2. You may need to log out and log back in after your role is updated
  3. Contact your database administrator to update your role
)}

Please contact your administrator if you believe you should have access.

)} {!isForbidden && (

Error loading dashboard: {(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;