import TablePagination from "@/components/TablePagination"; import { Clock, Edit3, Loader2, Lock, Trash2 } from "lucide-react"; import type { UserRecord } from "@/lib/api"; import { getRoleMeta } from "@/app/users/components/user-role-config"; import { formatRelativeDate, getInitials, getServerAccessSummary, } from "@/app/users/components/user-utils"; interface ActiveUsersPanelProps { loading: boolean; items: UserRecord[]; currentUserId: string | undefined; canManageUsers: boolean; mutatingKey: string | null; currentPage: number; totalPages: number; totalItems: number; startItem: number; endItem: number; emptyMessage: string; onPageChange: (page: number) => void; onEdit: (user: UserRecord) => void; onDelete: (user: UserRecord) => void | Promise; } export default function ActiveUsersPanel({ loading, items, currentUserId, canManageUsers, mutatingKey, currentPage, totalPages, totalItems, startItem, endItem, emptyMessage, onPageChange, onEdit, onDelete, }: ActiveUsersPanelProps) { return (
{loading ? (
Loading users...
) : items.length === 0 ? (
{emptyMessage}
) : ( <> {items.map((item) => { const role = getRoleMeta(item.role); const RoleIcon = role.icon; const isSelf = currentUserId === item.id; const access = getServerAccessSummary({ role: item.role, allServersAccess: item.allServersAccess, names: item.serverAssignments.map( (assignment) => assignment.server.name, ), }); const canEdit = canManageUsers && item.role !== "SUPER_ADMIN"; const canDeactivate = canManageUsers && item.role !== "SUPER_ADMIN" && !isSelf; return ( ); })}
User Role Server Access Status Last Login Actions
{getInitials(item.name)}

{item.name}

{item.email}

{role.label} {access.label} {item.isActive ? ( ) : null} {item.isActive ? "active" : "inactive"} {formatRelativeDate(item.lastLogin)}
{canDeactivate ? ( ) : ( )}
)}
); }