import React from "react"; import {Drawer} from "expo-router/drawer"; import {useSignOut} from "@/hooks/firebase/useSignOut"; import {DrawerContentScrollView, DrawerNavigationOptions, DrawerNavigationProp} from "@react-navigation/drawer"; import {Button, ButtonSize, Text, TouchableOpacity, View,} from "react-native-ui-lib"; import {ImageBackground, StyleSheet} from "react-native"; import DrawerButton from "@/components/shared/DrawerButton"; import NavGroceryIcon from "@/assets/svgs/NavGroceryIcon"; import NavToDosIcon from "@/assets/svgs/NavToDosIcon"; import NavBrainDumpIcon from "@/assets/svgs/NavBrainDumpIcon"; import NavCalendarIcon from "@/assets/svgs/NavCalendarIcon"; import NavSettingsIcon from "@/assets/svgs/NavSettingsIcon"; import ViewSwitch from "@/components/pages/(tablet_pages)/ViewSwitch"; import {useSetAtom} from "jotai"; import { isFamilyViewAtom, settingsPageIndex, toDosPageIndex, userSettingsView, } from "@/components/pages/calendar/atoms"; import Ionicons from "@expo/vector-icons/Ionicons"; import * as Device from "expo-device"; import {DeviceType} from "expo-device"; import FeedbackNavIcon from "@/assets/svgs/FeedbackNavIcon"; import DrawerIcon from "@/assets/svgs/DrawerIcon"; import {RouteProp} from "@react-navigation/core"; type DrawerParamList = { index: undefined; calendar: undefined; todos: undefined; }; type NavigationProp = DrawerNavigationProp; interface ViewSwitchProps { navigation: NavigationProp; } interface HeaderRightProps { routeName: keyof DrawerParamList; navigation: NavigationProp; } const MemoizedViewSwitch = React.memo(({navigation}) => ( )); const HeaderRight = React.memo(({routeName, navigation}) => { const showViewSwitch = ["calendar", "todos", "index"].includes(routeName); if (Device.deviceType !== DeviceType.TABLET || !showViewSwitch) { return null; } return ; }); export default function TabLayout() { const {mutateAsync: signOut} = useSignOut(); const setIsFamilyView = useSetAtom(isFamilyViewAtom); const setPageIndex = useSetAtom(settingsPageIndex); const setUserView = useSetAtom(userSettingsView); const setToDosIndex = useSetAtom(toDosPageIndex); const screenOptions = ({ navigation, route, }: { navigation: DrawerNavigationProp; route: RouteProp; }): DrawerNavigationOptions => ({ headerShown: true, headerTitleAlign: Device.deviceType === DeviceType.TABLET ? "left" : "center", headerTitleStyle: { fontFamily: "Manrope_600SemiBold", fontSize: Device.deviceType === DeviceType.TABLET ? 22 : 17, }, headerLeft: () => ( ), headerRight: () => { const showViewSwitch = ["calendar", "todos", "index"].includes(route.name); if (Device.deviceType !== DeviceType.TABLET || !showViewSwitch) { return null; } return ; }, drawerStyle: { width: Device.deviceType === DeviceType.TABLET ? "30%" : "90%", backgroundColor: "#f9f8f7", height: "100%", }, }) return ( { return ( Welcome to Cally { props.navigation.navigate("calendar"); setPageIndex(0); setToDosIndex(0); setUserView(true); setIsFamilyView(false); }} icon={} /> { props.navigation.navigate("grocery"); setPageIndex(0); setToDosIndex(0); setUserView(true); setIsFamilyView(false); }} icon={} /> { props.navigation.navigate("feedback"); setPageIndex(0); setToDosIndex(0); setUserView(true); setIsFamilyView(false); }} icon={} /> {/* props.navigation.navigate("reminders")} icon={ } />*/} { props.navigation.navigate("todos"); setPageIndex(0); setToDosIndex(0); setUserView(true); setIsFamilyView(false); }} icon={} /> { props.navigation.navigate("brain_dump"); setPageIndex(0); setToDosIndex(0); setUserView(true); setIsFamilyView(false); }} icon={} /> { props.navigation.navigate("notifications"); setPageIndex(0); setToDosIndex(0); setUserView(true); setIsFamilyView(false); }} icon={ } />