import React, { useEffect, useState } from 'react' import { Auth } from 'aws-amplify' import styled from 'styled-components' import HeaderLink from './Link' import Search from './Search' import Dropdown from '../Dropdown' import { useWindowDimensions } from '../../hooks' import { screenSizes } from '../../constants' import MenuColored from '../../../assets/logo/menu-colored.svg' import MenuWhite from '../../../assets/logo/menu-white.svg' const RightItemsWrapper = styled.div` display: flex; height: 100%; ` const MenuContainer = styled.div` box-sizing: border-box; aspect-ratio: 1 / 1; border-radius: 7px; height: 100%; display: flex; align-items: center; justify-content: center; cursor: pointer; background-color: transparent; transition: transform 200ms ease-in; &:hover { ${({ light }) => light && 'border: 1.5px solid #FFFFFF;'} ${({ light }) => !light && 'border: 1.5px solid var(--amplify-primary-color);'} } ` const Menu = ({ navbarTheme, navBarHeight, minHeight }) => { const [groups, setGroups] = useState>([]) const { width } = useWindowDimensions() useEffect(() => { Auth.Credentials.get().then(() => { if (Auth.Credentials.getCredSource() === 'userPool') { Auth.currentSession().then((data) => { const groupsData = data.getIdToken().payload['cognito:groups'] if (groupsData !== undefined) setGroups(groupsData) }) } }) }, []) const dropdownMode = width <= screenSizes.m const ButtonsList = [ , , , , , ] if (groups.includes('Admin')) { ButtonsList.splice( 4, 0, ) } if (dropdownMode) return ( {navbarTheme.amplifyLogo === 'light' ? ( ) : ( )} ) return {ButtonsList} } export default Menu