diff --git a/app/constants/routes.constants.ts b/app/constants/routes.constants.ts index d0fa8f7..daee1d1 100644 --- a/app/constants/routes.constants.ts +++ b/app/constants/routes.constants.ts @@ -24,6 +24,7 @@ export enum RouteName { VideoPlayer = "VideoPlayer", Webview = "Webview", Welcome = "Welcome", + ProjectsScreen = "Projects " } export const TAB_ROUTES: Array<{ diff --git a/app/hooks/useAccountScreenItem.ts b/app/hooks/useAccountScreenItem.ts index d0059b2..cdcf922 100644 --- a/app/hooks/useAccountScreenItem.ts +++ b/app/hooks/useAccountScreenItem.ts @@ -1,6 +1,6 @@ import { useCallback, useMemo } from "react" import { useNavigation } from "@react-navigation/core" -import { InfoIcon, LogOutIcon, ShieldIcon } from "lucide-react-native" +import {FolderCodeIcon, InfoIcon, LogOutIcon, ShieldIcon } from "lucide-react-native" import { closeBottomSheet, openBottomSheet } from "app/utils" import { RouteName } from "app/constants" @@ -18,6 +18,10 @@ export const useAccountScreenItem = () => { [navigation], ) + const handleProjectsPress = useCallback(() => { + navigation.navigate(RouteName.ProjectsScreen) + }, []) + const handleLogoutConfirm = useCallback(() => { closeBottomSheet() logout() @@ -35,6 +39,11 @@ export const useAccountScreenItem = () => { const accountItems = useMemo( () => [ + { + icon: FolderCodeIcon, + title: "Projects", + onPress: handleProjectsPress, + }, { icon: InfoIcon, title: "Terms & Conditions", diff --git a/app/navigators/AppNavigator.tsx b/app/navigators/AppNavigator.tsx index 0bb5ac9..590f41c 100644 --- a/app/navigators/AppNavigator.tsx +++ b/app/navigators/AppNavigator.tsx @@ -69,6 +69,7 @@ const AppStack = observer(function AppStack() { + ) }) diff --git a/app/navigators/TabNavigator.tsx b/app/navigators/TabNavigator.tsx index 7802513..5f37b35 100644 --- a/app/navigators/TabNavigator.tsx +++ b/app/navigators/TabNavigator.tsx @@ -16,6 +16,7 @@ export type TabParamList = { History: undefined MyCourses: undefined Storybook: undefined + ProjectsScreen: undefined } /** @@ -92,9 +93,10 @@ const $tabBar: ViewStyle = { backgroundColor: colors.background.secondary, borderTopColor: colors.border.default, borderTopWidth: 1, + // TODO: Can make an issue for this [#issue] - // borderTopRightRadius: spacing.md, - // borderTopLeftRadius: spacing.md, + //borderTopRightRadius: spacing.md, + //borderTopLeftRadius: spacing.md, } const $tabBarItem: ViewStyle = { diff --git a/app/screens/ProjectsScreen.tsx b/app/screens/ProjectsScreen.tsx new file mode 100644 index 0000000..36797a2 --- /dev/null +++ b/app/screens/ProjectsScreen.tsx @@ -0,0 +1,53 @@ +import React, { FC } from "react" +import { observer } from "mobx-react-lite" +import { TextStyle, ViewStyle } from "react-native" +import { FileCodeIcon } from "lucide-react-native" + +import { $styles, spacing } from "app/theme" +import { Button, EmptyPlaceholder, ListView, Screen, Text } from "app/components" +import { TabScreenProps } from "app/navigators" +import { ProjectCard } from "app/components/ProjectCard" + +interface ProjectsScreenProps extends TabScreenProps<"ProjectsScreen"> {} + + +const handleAddProject = () => { +} + +const renderEmptyPlaceholder = ( + +) + +export const ProjectsScreen: FC = observer(function ProjectsScreen() { + return ( + + +