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 (
{displayName}
{displayUsername &&{displayUsername}
} {user.email &&{user.email}
}{new Date(user.createdAt).toLocaleDateString()}
{isOnline ? "Connected" : new Date(lastSeen).toLocaleString()}
) : (No machines
)}