HomePageNavigator.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import React from 'react'
  2. import LandingPage from '../screens/LandingPage';
  3. import SearchPage from '../screens/SearchPage';
  4. import BookmarkPage from '../screens/BookmarkPage';
  5. import SettingsPage from '../screens/SettingsPage';
  6. import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"
  7. import OctiIcon from 'react-native-vector-icons/dist/Octicons';
  8. import IonIcon from 'react-native-vector-icons/dist/Ionicons';
  9. import colors from '../theme/colors';
  10. import fonts from '../theme/fonts';
  11. import NewscoutHomeHeader from '../components/organisms/Headers/NewscoutHomeHeader';
  12. import Header from '../components/atoms/Header';
  13. import NewscoutTitleHeader from '../components/organisms/Headers/NewscoutTitleHeader';
  14. import { TouchableOpacity, View, Text } from 'react-native';
  15. const Tab = createBottomTabNavigator();
  16. // tabBar={props => <BottomTabBar {...props}/>}
  17. const HomePageNavigator = ({ route, navigation }) => {
  18. return (
  19. <Tab.Navigator
  20. screenOptions={({ route }) => ({
  21. tabBarItemStyle: { paddingHorizontal: fonts.getSize(36), flex: 0 },
  22. tabBarStyle: { height: fonts.getSize(64), alignItems: 'center' },
  23. tabBarShowLabel: false,
  24. tabBarIcon: ({ focused, color, size }) => {
  25. let iconName;
  26. let colorName;
  27. switch (route.name) {
  28. case "Landing":
  29. iconName = "home-outline";
  30. break;
  31. case "Search":
  32. iconName = "search-outline";
  33. break
  34. case "Bookmark":
  35. iconName = "bookmark-outline";
  36. break
  37. case "Settings":
  38. iconName = 'person-outline';
  39. break
  40. default:
  41. break;
  42. }
  43. colorName = focused ? colors.topColor : colors.baseColor;
  44. // You can return any component that you like here!
  45. return <IonIcon name={iconName} size={size} color={colorName} />;
  46. },
  47. })}
  48. >
  49. <Tab.Screen
  50. name="Landing"
  51. component={LandingPage}
  52. options={({ navigation }) => ({
  53. header: () => <NewscoutHomeHeader />
  54. })} />
  55. <Tab.Screen
  56. name="Search"
  57. component={SearchPage}
  58. options={(navigation) => ({
  59. headerShown: false
  60. })} />
  61. <Tab.Screen
  62. name="Bookmark"
  63. component={BookmarkPage}
  64. options={(navigation) => ({
  65. header: () => <NewscoutTitleHeader title={"My Bookmarks"}>
  66. <OctiIcon name='three-bars' size={24} color={colors.topColor} />
  67. </NewscoutTitleHeader>
  68. })}
  69. />
  70. <Tab.Screen
  71. name="Settings"
  72. component={SettingsPage}
  73. options={() => ({
  74. header: () => <NewscoutTitleHeader title={"Settings"} backButtonShown={true}></NewscoutTitleHeader>
  75. })}
  76. />
  77. </Tab.Navigator>
  78. )
  79. }
  80. export default HomePageNavigator