import React from 'react'; import { Animated, StyleSheet, ViewStyle } from 'react-native'; import { BottomTabBarProps } from '@react-navigation/bottom-tabs'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { BottomNavigationTab, Divider, StyleService } from '@ui-kitten/components'; import { BrandBottomNavigation } from '../../components/brand-bottom-navigation.component'; import { ColorPaletteIcon, LayoutIcon, StarOutlineIcon } from '../../components/icons'; const useVisibilityAnimation = (visible: boolean): ViewStyle => { const animation = React.useRef(new Animated.Value(visible ? 1 : 0)); React.useEffect(() => { Animated.timing(animation.current, { duration: 200, toValue: visible ? 1 : 0, useNativeDriver: true, }).start(); }, [visible]); return { transform: [ { // @ts-ignore translateY: animation.current.interpolate({ inputRange: [0, 1], outputRange: [50, 0], }), }, ], position: visible ? null : 'absolute', }; }; export const HomeBottomNavigation: React.FC = ({ navigation, state, descriptors }) => { const focusedRoute = state.routes[state.index]; const { tabBarVisible } = descriptors[focusedRoute.key].options; const safeAreaInsets = useSafeAreaInsets(); const transforms = useVisibilityAnimation(tabBarVisible); const onSelect = (index: number): void => { navigation.navigate(state.routeNames[index]); }; return ( ); }; const styles = StyleService.create({ container: { left: 0, right: 0, bottom: 0, }, });