'use client'; import React, { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import { SidebarProvider, SidebarInset } from '@/components/ui/sidebar'; import { AppSidebar } from '@/components/app-sidebar'; import { SiteHeader } from '@/components/site-header'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@/components/ui/table'; import { Card, CardContent, CardHeader, CardTitle, } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { formatDistanceToNow } from 'date-fns'; import { Eye } from 'lucide-react'; type User = { id: string; email: string; name: string | null; image: string | null; role: string; createdAt: Date; enrollments: Array<{ course: { id: string; title: string; }; }>; lastActivity: Date | null; }; function UsersAdminClientUI() { const [users, setUsers] = useState([]); const [isLoading, setIsLoading] = useState(true); const router = useRouter(); useEffect(() => { const fetchUsers = async () => { setIsLoading(true); try { const res = await fetch('/api/admin/users'); if (res.ok) { const data = await res.json(); setUsers(data); } } catch (err) { console.error('Failed to fetch users:', err); } finally { setIsLoading(false); } }; fetchUsers(); }, []); const getRoleBadgeVariant = (role: string) => { switch (role) { case 'superadmin': return 'default'; case 'admin': return 'secondary'; default: return 'outline'; } }; if (isLoading) { return (
Loading users...
); } return (
Total: {users.length} users Email Name Role Courses Last Activity Joined Actions {users.length === 0 ? ( No users found ) : ( users.map((user) => ( {user.email} {user.name || '-'} {user.role} {user.enrollments.length > 0 ? (
{user.enrollments.map((enrollment, idx) => ( {enrollment.course.title} ))}
) : ( - )}
{user.lastActivity ? ( formatDistanceToNow(new Date(user.lastActivity), { addSuffix: true }) ) : ( No activity )} {formatDistanceToNow(new Date(user.createdAt), { addSuffix: true })}
)) )}
); } export default function sersAdminClient() { return (
); }