/* eslint-disable react/prop-types */ import React, { useCallback } from 'react'; import { View } from 'react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { useStyles } from '../../hooks'; import { IconName } from '../Icon'; import TabBarItem from '../TabBarItem'; import styleSheet from './TabBar.styles'; import { TabBarLabel, TabBarProps, IconByTabBarLabel } from './TabBar.types'; const iconByTabBarLabel: IconByTabBarLabel = { [TabBarLabel.Wallet]: IconName.WalletFilled, [TabBarLabel.Browser]: IconName.ExploreFilled, }; const TabBar = ({ state, descriptors, navigation }: TabBarProps) => { const { bottom: bottomInset } = useSafeAreaInsets(); const { styles } = useStyles(styleSheet, { bottomInset }); const renderTabBarItem = useCallback( (route: { name: string; key: string }, index: number) => { const label = descriptors[route.key].options.tabBarLabel as TabBarLabel; const key = `tab-bar-item-${label}`; const isSelected = state.index === index; const icon = iconByTabBarLabel[label]; const onPress = () => !isSelected && navigation.navigate(route.name); return ( ); }, [state, descriptors, navigation], ); const renderTabBarItems = useCallback( () => state.routes.map(renderTabBarItem), [state, renderTabBarItem], ); return {renderTabBarItems()}; }; export default TabBar;