import { CircleUser } from "lucide-react"; import StatusCircle from "~/components/status-circle"; import cn from "~/utils/cn"; import type { UnlinkedHeadscaleUser } from "../overview"; import HeadscaleUserMenu from "./headscale-user-menu"; interface HeadscaleUserRowProps { user: UnlinkedHeadscaleUser; writable?: boolean; } export default function HeadscaleUserRow({ user, writable }: HeadscaleUserRowProps) { const isOnline = user.machines.some((machine) => machine.online); const lastSeen = user.machines.reduce( (acc, machine) => Math.max(acc, new Date(machine.lastSeen).getTime()), 0, ); const displayName = user.displayName || user.name; const displayUsername = user.displayName && user.displayName !== user.name ? user.name : undefined; return (
{user.profilePicUrl ? ( {displayName} ) : ( )}

{displayName}

{displayUsername &&

{displayUsername}

} {user.email &&

{user.email}

}

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

{user.machines.length > 0 ? (

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

) : (

No machines

)} {writable ? : null} ); }