import { CircleUser } from 'lucide-react'; import StatusCircle from '~/components/StatusCircle'; import { Machine, User } from '~/types'; import cn from '~/utils/cn'; import MenuOptions from './menu'; interface UserRowProps { role: string; user: User & { machines: Machine[] }; } export default function UserRow({ user, role }: UserRowProps) { const isOnline = user.machines.some((machine) => machine.online); const lastSeen = user.machines.reduce( (acc, machine) => Math.max(acc, new Date(machine.lastSeen).getTime()), 0, ); return (
{user.profilePicUrl ? ( {user.name} ) : ( )}

{user.name}

{user.email}

{mapRoleToName(role)}

{new Date(user.createdAt).toLocaleDateString()}

{isOnline ? 'Connected' : new Date(lastSeen).toLocaleString()}

); } function mapRoleToName(role: string) { switch (role) { case 'no-oidc': return

Unmanaged

; case 'invalid-oidc': return

Invalid

; case 'no-role': return

Unregistered

; case 'owner': return 'Owner'; case 'admin': return 'Admin'; case 'network_admin': return 'Network Admin'; case 'it_admin': return 'IT Admin'; case 'auditor': return 'Auditor'; case 'member': return 'Member'; default: return 'Unknown'; } }