import { Cog, Ellipsis } from 'lucide-react'; import { useState } from 'react'; import Menu from '~/components/Menu'; import type { User } from '~/types'; import cn from '~/utils/cn'; import { PopulatedNode } from '~/utils/node-info'; import Delete from '../dialogs/delete'; import Expire from '../dialogs/expire'; import Move from '../dialogs/move'; import Rename from '../dialogs/rename'; import Routes from '../dialogs/routes'; import Tags from '../dialogs/tags'; interface MenuProps { node: PopulatedNode; users: User[]; magic?: string; isFullButton?: boolean; isDisabled?: boolean; } type Modal = 'rename' | 'expire' | 'remove' | 'routes' | 'move' | 'tags' | null; export default function MachineMenu({ node, magic, users, isFullButton, isDisabled, }: MenuProps) { const [modal, setModal] = useState(null); return ( <> {modal === 'remove' && ( { if (!isOpen) setModal(null); }} /> )} {modal === 'move' && ( { if (!isOpen) setModal(null); }} /> )} {modal === 'rename' && ( { if (!isOpen) setModal(null); }} /> )} {modal === 'routes' && ( { if (!isOpen) setModal(null); }} /> )} {modal === 'tags' && ( { if (!isOpen) setModal(null); }} /> )} {node.expired && modal === 'expire' ? undefined : ( { if (!isOpen) setModal(null); }} /> )} {isFullButton ? (

Machine Settings

) : ( )} setModal(key as Modal)} disabledKeys={node.expired ? ['expire'] : []} > Edit machine name Edit route settings Edit ACL tags Change owner

Expire

Remove

); }