import React from 'react' import { StyleProp, StyleSheet, TouchableOpacity, View, ViewStyle, } from 'react-native' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {useNavigation} from '@react-navigation/native' import {CenteredView} from './Views' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {useAnalytics} from 'lib/analytics/analytics' import {NavigationProp} from 'lib/routes/types' import {useSetDrawerOpen} from '#/state/shell' import {isWeb} from '#/platform/detection' const BACK_HITSLOP = {left: 20, top: 20, right: 50, bottom: 20} export function SimpleViewHeader({ showBackButton = true, style, children, }: React.PropsWithChildren<{ showBackButton?: boolean style?: StyleProp }>) { const pal = usePalette('default') const setDrawerOpen = useSetDrawerOpen() const navigation = useNavigation() const {track} = useAnalytics() const {isMobile} = useWebMediaQueries() const canGoBack = navigation.canGoBack() const onPressBack = React.useCallback(() => { if (navigation.canGoBack()) { navigation.goBack() } else { navigation.navigate('Home') } }, [navigation]) const onPressMenu = React.useCallback(() => { track('ViewHeader:MenuButtonClicked') setDrawerOpen(true) }, [track, setDrawerOpen]) const Container = isMobile ? View : CenteredView return ( {showBackButton ? ( {canGoBack ? ( ) : ( )} ) : null} {children} ) } const styles = StyleSheet.create({ header: { flexDirection: 'row', alignItems: 'center', paddingHorizontal: 18, paddingVertical: 12, width: '100%', }, headerMobile: { paddingHorizontal: 12, paddingVertical: 10, }, headerWeb: { // @ts-ignore web-only position: 'sticky', top: 0, zIndex: 1, }, backBtn: { width: 30, height: 30, }, backBtnWide: { width: 30, height: 30, paddingHorizontal: 6, }, backIcon: { marginTop: 6, }, })