// import * as DropdownMenu from '@radix-ui/react-dropdown-menu'; // import { animated, useTransition } from '@react-spring/web'; // import clsx from 'clsx'; // import { DotsThree, Eye, Key as KeyIcon } from '@phosphor-icons/react'; // import { PropsWithChildren, useState } from 'react'; // import { useLibraryMutation } from '@sd/client'; // import { Button, Tooltip } from '@sd/ui'; // // TODO: Replace this with Prisma type when integrating with backend // export interface Key { // id: string; // name: string; // queue: Set; // mounted?: boolean; // locked?: boolean; // stats?: { // objectCount?: number; // containerCount?: number; // }; // default?: boolean; // memoryOnly?: boolean; // automount?: boolean; // // Nodes this key is mounted on // nodes?: string[]; // will be node object // } // interface Props extends DropdownMenu.MenuContentProps { // trigger: React.ReactNode; // transformOrigin?: string; // disabled?: boolean; // } // export const KeyDropdown = ({ // trigger, // children, // transformOrigin, // className // }: PropsWithChildren) => { // const [open, setOpen] = useState(false); // const transitions = useTransition(open, { // from: { // opacity: 0, // transform: `scale(0.9)`, // transformOrigin: transformOrigin || 'top' // }, // enter: { opacity: 1, transform: 'scale(1)' }, // leave: { opacity: -0.5, transform: 'scale(0.95)' }, // config: { mass: 0.4, tension: 200, friction: 10 } // }); // return ( // // {trigger} // {transitions( // (styles, show) => // show && ( // // // // {children} // // // // ) // )} // // ); // }; // export const Key = ({ data }: { data: Key }) => { // const mountKey = useLibraryMutation('keys.mount'); // const unmountKey = useLibraryMutation('keys.unmount'); // const deleteKey = useLibraryMutation('keys.deleteFromLibrary'); // const setDefaultKey = useLibraryMutation('keys.setDefault'); // const changeAutomountStatus = useLibraryMutation('keys.updateAutomountStatus'); // const syncToLibrary = useLibraryMutation('keys.syncKeyToLibrary'); // if (data.mounted && data.queue.has(data.id)) { // data.queue.delete(data.id); // } // return ( //
//
// //
//
//
{data.name}
// {data.mounted && ( //
// {data.nodes?.length || 0 > 0 // ? `${data.nodes?.length || 0} nodes` // : 'This node'} //
// )} // {data.default && ( //
// Default //
// )} //
// {/*
#{data.id}
*/} // {data.stats ? ( //
// {data.stats.objectCount && ( //
// {data.stats.objectCount} Objects //
// )} // {data.stats.containerCount && ( //
// {data.stats.containerCount} Containers //
// )} //
// ) : ( // !data.mounted && ( //
// {data.queue.has(data.id) ? 'Key mounting...' : 'Key not mounted'} //
// ) // )} //
//
//
// {data.mounted && ( // // // // )} // // // // } // > // { // unmountKey.mutate(data.id); // }} // hidden={!data.mounted} // value="Unmount" // /> // { // syncToLibrary.mutate(data.id); // }} // hidden={!data.memoryOnly} // value="Sync to library" // /> // { // data.queue.add(data.id); // mountKey.mutate(data.id); // }} // hidden={data.mounted || data.queue.has(data.id)} // value="Mount" // /> // { // deleteKey.mutate(data.id); // }} // value="Delete from Library" // /> // { // setDefaultKey.mutate(data.id); // }} // hidden={data.default} // value="Set as Default" // /> // { // changeAutomountStatus.mutate({ uuid: data.id, status: false }); // }} // hidden={!data.automount || data.memoryOnly} // value="Disable Automount" // /> // { // changeAutomountStatus.mutate({ uuid: data.id, status: true }); // }} // hidden={data.automount || data.memoryOnly} // value="Enable Automount" // /> // //
//
// ); // }; // export const KeyDropdownItem = (props: { // value: string; // hidden?: boolean | undefined; // onClick: () => void; // }) => { // return ( // // ); // }; // export const DummyKey = (props: { text: string }) => { // return ( //
//
// //
//
//
{props.text}
//
//
//
//
// ); // };