import { Icon, Button, PopupTrigger, Popup, Text } from 'react-basics'; import classNames from 'classnames'; import { languages } from 'lib/lang'; import useLocale from 'hooks/useLocale'; import Icons from 'components/icons'; import styles from './LanguageButton.module.css'; export function LanguageButton() { const { locale, saveLocale, dir } = useLocale(); const items = Object.keys(languages).map(key => ({ ...languages[key], value: key })); function handleSelect(value, close, e) { e.stopPropagation(); saveLocale(value); close(); } return ( <PopupTrigger> <Button variant="quiet"> <Icon> <Icons.Globe /> </Icon> </Button> <Popup position="bottom" alignment={dir === 'rtl' ? 'start' : 'end'}> {close => { return ( <div className={styles.menu}> {items.map(({ value, label }) => { return ( <div key={value} className={classNames(styles.item, { [styles.selected]: value === locale })} onClick={handleSelect.bind(null, value, close)} > <Text>{label}</Text> {value === locale && ( <Icon className={styles.icon}> <Icons.Check /> </Icon> )} </div> ); })} </div> ); }} </Popup> </PopupTrigger> ); } export default LanguageButton;