import { Ellipsis } from "lucide-react"; import { useState } from "react"; import { Menu, MenuContent, MenuItem, MenuSeparator, MenuTrigger } from "~/components/menu"; import Delete from "../dialogs/delete-user"; import Rename from "../dialogs/rename-user"; import type { UnlinkedHeadscaleUser } from "../overview"; interface HeadscaleUserMenuProps { user: UnlinkedHeadscaleUser; } type Modal = "rename" | "delete" | null; export default function HeadscaleUserMenu({ user }: HeadscaleUserMenuProps) { const [modal, setModal] = useState(null); // Headscale-managed OIDC users cannot be renamed via the API. const canRename = user.provider !== "oidc"; return ( <> {modal === "rename" && canRename && ( { if (!isOpen) setModal(null); }} user={user} /> )} {modal === "delete" && ( { if (!isOpen) setModal(null); }} user={user} /> )} {canRename && setModal("rename")}>Rename} {canRename && } setModal("delete")}> Delete ); }