summaryrefslogtreecommitdiff
path: root/app/navigators/root-navigator.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'app/navigators/root-navigator.tsx')
-rw-r--r--app/navigators/root-navigator.tsx59
1 files changed, 59 insertions, 0 deletions
diff --git a/app/navigators/root-navigator.tsx b/app/navigators/root-navigator.tsx
new file mode 100644
index 0000000..2c04f29
--- /dev/null
+++ b/app/navigators/root-navigator.tsx
@@ -0,0 +1,59 @@
+/**
+ * The root navigator is used to switch between major navigation flows of your app.
+ * Generally speaking, it will contain an auth flow (registration, login, forgot password)
+ * and a "main" flow (which is contained in your MainNavigator) which the user
+ * will use once logged in.
+ */
+import React from "react"
+import { NavigationContainer, NavigationContainerRef } from "@react-navigation/native"
+import { createStackNavigator } from "@react-navigation/stack"
+import { MainNavigator } from "./main-navigator"
+import { color } from "../theme"
+
+/**
+ * This type allows TypeScript to know what routes are defined in this navigator
+ * as well as what properties (if any) they might take when navigating to them.
+ *
+ * We recommend using MobX-State-Tree store(s) to handle state rather than navigation params.
+ *
+ * For more information, see this documentation:
+ * https://reactnavigation.org/docs/params/
+ * https://reactnavigation.org/docs/typescript#type-checking-the-navigator
+ */
+export type RootParamList = {
+ mainStack: undefined
+}
+
+const Stack = createStackNavigator<RootParamList>()
+
+const RootStack = () => {
+ return (
+ <Stack.Navigator
+ screenOptions={{
+ cardStyle: { backgroundColor: color.palette.deepPurple },
+ headerShown: false,
+ }}
+ >
+ <Stack.Screen
+ name="mainStack"
+ component={MainNavigator}
+ options={{
+ headerShown: false,
+ }}
+ />
+ </Stack.Navigator>
+ )
+}
+
+export const RootNavigator = React.forwardRef<
+ NavigationContainerRef,
+ Partial<React.ComponentProps<typeof NavigationContainer>>
+>((props, ref) => {
+ return (
+ <NavigationContainer {...props} ref={ref}>
+ <RootStack />
+ </NavigationContainer>
+ )
+})
+
+RootNavigator.displayName = "RootNavigator"