'use client'; import { useEffect, useState } from 'react'; import { api, type User } from '@/lib/api'; import Link from 'next/link'; export default function DashboardPage() { const [stats, setStats] = useState({ totalUsers: 0, activeUsers: 0, agents: 0, pendingUsers: 0, }); const [isLoading, setIsLoading] = useState(true); const [recentUsers, setRecentUsers] = useState([]); useEffect(() => { fetchDashboardData(); }, []); const fetchDashboardData = async () => { setIsLoading(true); try { const response = await api.getUsers(1, 100); const users = response.users || []; setStats({ totalUsers: response.total || 0, activeUsers: users.filter((u) => u.status === 'ACTIVE').length, agents: users.filter((u) => u.role === 'AGENT').length, pendingUsers: users.filter((u) => u.status === 'PENDING_VERIFICATION').length, }); setRecentUsers(users.slice(0, 5)); } catch (err) { console.error('Failed to fetch dashboard data:', err); } finally { setIsLoading(false); } }; if (isLoading) { return (
); } return (
{/* Page Title */}

Dashboard

Welcome to Re-Quest Admin Panel

{/* Stats Cards */}

Total Users

{stats.totalUsers}

Active

{stats.activeUsers}

Agents

{stats.agents}

Pending

{stats.pendingUsers}

{/* Recent Users */}

Recent Users

View All →
{recentUsers.length === 0 ? (

No users found

) : ( {recentUsers.map((user) => ( ))}
User Role Status Joined
{user.profile?.avatar ? ( ) : (
{user.profile?.firstName?.[0] || user.email[0].toUpperCase()}
)}
{user.profile?.firstName} {user.profile?.lastName}
{user.email}
{user.role} {user.status === 'PENDING_VERIFICATION' ? 'PENDING' : user.status} {new Date(user.createdAt).toLocaleDateString()}
)}
); }