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 (
+
+
+
+ )
+})
+
+const $root: ViewStyle = {
+ flex: 1,
+ paddingHorizontal: spacing.md,
+}
+
+const $heading: TextStyle = {
+ marginBottom: spacing.md,
+}
+
+const $buttonStyle: TextStyle = {
+ marginBottom: spacing.md
+}
+
diff --git a/app/screens/index.ts b/app/screens/index.ts
index 6d2126d..a42037b 100644
--- a/app/screens/index.ts
+++ b/app/screens/index.ts
@@ -10,3 +10,4 @@ export * from "./Storybook/StorybookScreen"
export * from "./VideoPlayerScreen"
export * from "./WebviewScreen"
export * from "./WelcomeScreen"
+export * from "./ProjectsScreen"
\ No newline at end of file