import { ActionIcon, Box, Tooltip } from '@mantine/core'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { IconProp } from '@fortawesome/fontawesome-svg-core'; const radius = 60; // https://codesandbox.io/embed/circular-menu-e94ug function getTransform(index: number, totalItems: number) { const value = index / totalItems; const x = radius * Math.cos(Math.PI * 2 * (value - 0.25)); const y = radius * Math.sin(Math.PI * 2 * (value - 0.25)); return `translate(${x}px, ${y}px)`; } const items: { icon: IconProp; label: string }[] = [ { icon: 'handcuffs', label: 'Arrest' }, { icon: 'warehouse', label: 'Garage' }, { icon: 'heart', label: 'Info' }, { icon: 'handcuffs', label: 'Arrest' }, { icon: 'warehouse', label: 'Garage' }, { icon: 'heart', label: 'Info' }, ]; const PlanetMenu: React.FC = () => { return ( {items.map((item, index) => ( ({ transform: getTransform(index, items.length), position: 'absolute', width: 40, height: 40, display: 'flex', alignItems: 'center', justifyContent: 'center', borderRadius: '50%', backgroundColor: theme.colors.dark[6], color: theme.colors.dark[0], boxShadow: theme.shadows.sm, padding: 12, '&:hover': { backgroundColor: theme.colors.dark[5], cursor: 'pointer', }, })} > ))} ); }; export default PlanetMenu;