'use client' import { useState, useEffect, useCallback } from 'react' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Badge } from '@/components/ui/badge' import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@/components/ui/table' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select' import { Search, Filter, Download, UserPlus } from 'lucide-react' interface User { id: string name: string email: string role: 'ADMIN' | 'MEMBER' | 'CUSTOMER' | 'WHOLESALER' | 'PART_TIME' isActive: boolean joinedAt: string referralCode: string _count: { referrals: number orders: number } referrer?: { name: string email: string } } export default function AdminUsersPage() { const [users, setUsers] = useState([]) const [loading, setLoading] = useState(true) const [search, setSearch] = useState('') const [roleFilter, setRoleFilter] = useState('all') const [page, setPage] = useState(1) const fetchUsers = useCallback(async () => { try { setLoading(true) const params = new URLSearchParams({ page: page.toString(), limit: '10' }) if (search) params.append('search', search) if (roleFilter && roleFilter !== 'all') params.append('role', roleFilter) const response = await fetch(`/api/admin/users?${params}`) const data = await response.json() setUsers(data.users || []) } catch (error) { console.error('Error fetching users:', error) } finally { setLoading(false) } }, [search, roleFilter, page]) useEffect(() => { fetchUsers() }, [fetchUsers]) const getRoleBadgeColor = (role: string) => { switch (role) { case 'ADMIN': return 'bg-red-500' case 'MEMBER': return 'bg-blue-500' case 'CUSTOMER': return 'bg-gray-500' default: return 'bg-gray-500' } } return (

Users

Manage your platform users

All Users
setSearch(e.target.value)} className="pl-10 w-64" />
{loading ? (
Loading...
) : ( User Role Status Referrals Orders Joined Actions {users.map((user) => (

{user.name}

{user.email}

{user.referrer && (

Referred by: {user.referrer.name}

)}
{user.role} {user.isActive ? 'Active' : 'Inactive'} {user._count.referrals} {user._count.orders} {new Date(user.joinedAt).toLocaleDateString()}
))}
)}
) }