import React, { useState } from 'react' import { Modal, Platform, StyleSheet, TouchableOpacity, View, } from 'react-native' import PropTypes from 'prop-types' import AppText from '../common/app-text' import AppIcon from '../common/app-icon' import CloseIcon from '../common/close-icon' import { Colors, Sizes, Typography } from '../../styles' import { HIT_SLOP } from '../../config' import { useTranslation } from 'react-i18next' const settingsMenuItems = [ { labelKey: 'settings', componentName: 'SettingsMenu' }, { labelKey: 'about', componentName: 'About' }, { labelKey: 'license', componentName: 'License' }, { labelKey: 'privacyPolicy', componentName: 'PrivacyPolicy' }, ] const HamburgerMenu = ({ navigate }) => { const [isOpen, setIsOpen] = useState(false) const closeMenu = () => setIsOpen(false) const { t } = useTranslation(null, { keyPrefix: 'hamburgerMenu.menuMain' }) if (!isOpen) return ( setIsOpen(true)} hitSlop={HIT_SLOP}> ) function onPress(componentName) { closeMenu() navigate(componentName) } return ( {settingsMenuItems.map(({ labelKey, componentName }) => ( onPress(componentName)} key={labelKey} > {t(labelKey)} ))} ) } export default HamburgerMenu HamburgerMenu.propTypes = { navigate: PropTypes.func, } const styles = StyleSheet.create({ blackBackground: { backgroundColor: 'black', flex: 1, opacity: 0.65, }, iconContainer: { alignSelf: 'flex-end', marginBottom: Sizes.base, }, menu: { alignSelf: 'flex-end', backgroundColor: 'white', height: '100%', padding: Sizes.base, paddingTop: Platform.OS === 'ios' ? Sizes.huge : Sizes.base, position: 'absolute', width: '60%', }, menuItem: Typography.subtitle, })