import { Portal, Popover, PopoverTrigger, PopoverBody, PopoverContent, Box, Text, Flex, Spacer, Image, HStack, } from '@chakra-ui/react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Option, ContextMenuProps } from '../../../interfaces/context'; import { fetchNui } from '../../../utils/fetchNui'; const openMenu = (id: string | undefined) => { fetchNui('openContext', { id: id, back: false }); }; const clickContext = (id: string) => { fetchNui('clickContext', id); }; const Item: React.FC<{ option: [string, Option]; }> = ({ option }) => { const button = option[1]; const buttonKey = option[0]; return ( <> (button.menu ? openMenu(button.menu) : clickContext(buttonKey))} > {button?.icon && ( )} {button.title ? button.title : buttonKey} {button.description && ( {button.description} )} {(button.menu || button.arrow) && button.arrow !== false && ( <> )} {(button.metadata || button.image) && ( <> {button.image && } {Array.isArray(button.metadata) ? ( button.metadata.map((metadata: string | { label: string; value: any }, index: number) => ( {typeof metadata === 'string' ? `${metadata}` : `${metadata.label}: ${metadata.value}`} )) ) : ( <> {typeof button.metadata === 'object' && Object.entries(button.metadata).map((metadata: { [key: string]: any }, index) => ( {metadata[0]}: {metadata[1]} ))} )} )} ); }; export default Item;