import { Icon, Button, PopupTrigger, Popup, Menu, Item, Text } from 'react-basics'; import { useRouter } from 'next/router'; import Icons from 'components/icons'; import useMessages from 'hooks/useMessages'; import useUser from 'hooks/useUser'; import useConfig from 'hooks/useConfig'; import styles from './ProfileButton.module.css'; import useLocale from 'hooks/useLocale'; export function ProfileButton() { const { formatMessage, labels } = useMessages(); const { user } = useUser(); const { cloudMode } = useConfig(); const router = useRouter(); const { dir } = useLocale(); const handleSelect = key => { if (key === 'profile') { router.push('/settings/profile'); } if (key === 'logout') { router.push('/logout'); } }; return ( <PopupTrigger> <Button variant="quiet"> <Icon> <Icons.Profile /> </Icon> <Icon size="sm"> <Icons.ChevronDown /> </Icon> </Button> <Popup position="bottom" alignment={dir === 'rtl' ? 'start' : 'end'}> <Menu variant="popup" onSelect={handleSelect} className={styles.menu}> <Item key="user" className={styles.item}> <Text>{user.username}</Text> </Item> <Item key="profile" className={styles.item} divider={true}> <Icon> <Icons.User /> </Icon> <Text>{formatMessage(labels.profile)}</Text> </Item> {!cloudMode && ( <Item key="logout" className={styles.item}> <Icon> <Icons.Logout /> </Icon> <Text>{formatMessage(labels.logout)}</Text> </Item> )} </Menu> </Popup> </PopupTrigger> ); } export default ProfileButton;