import { Cog, Ellipsis } from 'lucide-react'; import { useState } from 'react'; import Menu from '~/components/Menu'; import type { Machine, Route, User } from '~/types'; import cn from '~/utils/cn'; 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 { machine: Machine; routes: Route[]; users: User[]; magic?: string; isFullButton?: boolean; } type Modal = 'rename' | 'expire' | 'remove' | 'routes' | 'move' | 'tags' | null; export default function MachineMenu({ machine, routes, magic, users, isFullButton, }: MenuProps) { const [modal, setModal] = useState(null); const expired = machine.expiry === '0001-01-01 00:00:00' || machine.expiry === '0001-01-01T00:00:00Z' || machine.expiry === null ? false : new Date(machine.expiry).getTime() < Date.now(); 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); }} /> )} {expired && modal === 'expire' ? undefined : ( { if (!isOpen) setModal(null); }} /> )} {isFullButton ? (

Machine Settings

) : ( )} setModal(key as Modal)}> Edit machine name Edit route settings Edit ACL tags Change owner {expired ? ( <> ) : (

Expire

)}

Remove

); }