import React from "react"; import { useColorScheme } from "react-native"; import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; import { NavigationContainer } from "@react-navigation/native"; import { createStackNavigator } from "@react-navigation/stack"; import Icon, { IconType } from "react-native-dynamic-vector-icons"; import { isReadyRef, navigationRef } from "react-navigation-helpers"; import DetailScreen from "@screens/detail/DetailScreen"; // ? Screens import HomeScreen from "@screens/home/HomeScreen"; import NotificationScreen from "@screens/notification/NotificationScreen"; import ProfileScreen from "@screens/profile/ProfileScreen"; import SearchScreen from "@screens/search/SearchScreen"; /** * ? Local & Shared Imports */ import { SCREENS } from "@shared-constants"; import { DarkTheme, LightTheme, palette } from "@theme/themes"; // ? If you want to use stack or tab or both const Tab = createBottomTabNavigator(); const Stack = createStackNavigator(); const Navigation = () => { const scheme = useColorScheme(); const isDarkMode = scheme === "dark"; React.useEffect((): any => { return () => (isReadyRef.current = false); }, []); const renderTabIcon = ( route: any, focused: boolean, color: string, size: number, ) => { let iconName = "home"; switch (route.name) { case SCREENS.HOME: iconName = focused ? "home" : "home-outline"; break; case SCREENS.SEARCH: iconName = focused ? "search" : "search-outline"; break; case SCREENS.NOTIFICATION: iconName = focused ? "notifications" : "notifications-outline"; break; case SCREENS.PROFILE: iconName = focused ? "person" : "person-outline"; break; default: iconName = focused ? "home" : "home-outline"; break; } return ( ); }; const renderTabNavigation = () => { return ( ({ headerShown: false, tabBarIcon: ({ focused, color, size }) => renderTabIcon(route, focused, color, size), tabBarActiveTintColor: palette.primary, tabBarInactiveTintColor: "gray", tabBarStyle: { backgroundColor: isDarkMode ? palette.black : palette.white, }, })} > ); }; return ( { isReadyRef.current = true; }} theme={isDarkMode ? DarkTheme : LightTheme} > {(props) => } ); }; export default Navigation;