import Layout from '../components/shared/Layout' import Search from 'lucide-react/dist/esm/icons/search' import RefreshCw from 'lucide-react/dist/esm/icons/refresh-cw' import { Card } from '@/components/ui/card' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Table, TableHeader, TableBody, TableRow, TableHead, TableCell, } from '@/components/ui/table' import useAdminUsers from '../hooks/useAdminUsers' import UserRow from '../components/admin/UserRow' import UserMobileCard from '../components/admin/UserMobileCard' import UsersTableSkeleton from '../components/admin/UsersTableSkeleton' import UsersPagination from '../components/admin/UsersPagination' import ResetLinkDialog from '../components/admin/ResetLinkDialog' const TABLE_HEADERS = ['Name', 'Email', 'Role', 'Status', 'Joined', 'Actions'] export default function AdminUsers() { const { pageIndex, users, loading, totalUsers, pendingUsers, searchInput, setSearchInput, updating, resetLink, setResetLink, reload, changeRole, toggleStatus, createResetLink, copyResetLink, goToPreviousPage, goToNextPage, showingFrom, showingTo, hasPagination, hasMore, } = useAdminUsers() return (

Users

{totalUsers} registered ยท {pendingUsers} pending approval

setSearchInput(e.target.value)} placeholder="Search all users by name or email..." className="pl-10 h-10" />
{loading ? ( ) : ( <> {TABLE_HEADERS.map(h => ( {h} ))} {users.map(u => ( ))} {users.length === 0 && ( No users found )}
{users.map(u => ( ))} {users.length === 0 && (

No users found

)}
)} setResetLink(null)} onCopy={copyResetLink} />
) }