๐ Fix route bug
Changes
6 files changed, +145 -42
DELETE
app/(tabs)/_layout.swipe.tsx
+0 -0
MODIFY
app/(tabs)/_layout.tsx
+64 -35
@@ -1,41 +1,70 @@
1
-import React, { useState } from 'react';
2
-import { Dimensions } from 'react-native';
3
-import { TabView, SceneMap } from 'react-native-tab-view';
4
-import InboxScreen from './index';
5
-import TodayScreen from './today';
6
-import CalendarScreen from './calendar';
7
-import ProjectsScreen from './projects';
8
-import SettingsScreen from './settings';
9
-import { SwipeableTabBar } from '@/components/swipeable-tab-bar';
10
-
11
-const renderScene = SceneMap({
12
- inbox: InboxScreen,
13
- today: TodayScreen,
14
- calendar: CalendarScreen,
15
- projects: ProjectsScreen,
16
- settings: SettingsScreen,
17
-});
1
+import { Tabs } from 'expo-router';
2
+import { Ionicons } from '@expo/vector-icons';
3
+import { useColorScheme } from '@/hooks/use-color-scheme';
4
+import { Colors } from '@/constants/theme';
18
5
19
6
export default function TabLayout() {
20
- const [index, setIndex] = useState(0);
21
- const [routes] = useState([
22
- { key: 'inbox', title: 'Inbox' },
23
- { key: 'today', title: 'Today' },
24
- { key: 'calendar', title: 'Calendar' },
25
- { key: 'projects', title: 'Projects' },
26
- { key: 'settings', title: 'Settings' },
27
- ]);
28
-
29
- const initialLayout = { width: Dimensions.get('window').width };
7
+ const colorScheme = useColorScheme();
8
+ const colors = Colors[colorScheme];
30
9
31
10
return (
32
- <TabView
33
- navigationState={{ index, routes }}
34
- renderScene={renderScene}
35
- onIndexChange={setIndex}
36
- initialLayout={initialLayout}
37
- tabBarPosition="bottom"
38
- renderTabBar={props => <SwipeableTabBar {...props} />}
39
- />
11
+ <Tabs
12
+ screenOptions={{
13
+ headerShown: false,
14
+ tabBarActiveTintColor: colors.tint,
15
+ tabBarInactiveTintColor: colors.tabIconDefault,
16
+ tabBarStyle: {
17
+ backgroundColor: colors.background,
18
+ borderTopColor: colors.border,
19
+ borderTopWidth: 1,
20
+ },
21
+ }}
22
+ >
23
+ <Tabs.Screen
24
+ name="index"
25
+ options={{
26
+ title: 'Inbox',
27
+ tabBarIcon: ({ color, focused }) => (
28
+ <Ionicons name={focused ? 'mail' : 'mail-outline'} size={24} color={color} />
29
+ ),
30
+ }}
31
+ />
32
+ <Tabs.Screen
33
+ name="today"
34
+ options={{
35
+ title: 'Today',
36
+ tabBarIcon: ({ color, focused }) => (
37
+ <Ionicons name={focused ? 'today' : 'today-outline'} size={24} color={color} />
38
+ ),
39
+ }}
40
+ />
41
+ <Tabs.Screen
42
+ name="calendar"
43
+ options={{
44
+ title: 'Calendar',
45
+ tabBarIcon: ({ color, focused }) => (
46
+ <Ionicons name={focused ? 'calendar' : 'calendar-outline'} size={24} color={color} />
47
+ ),
48
+ }}
49
+ />
50
+ <Tabs.Screen
51
+ name="projects"
52
+ options={{
53
+ title: 'Projects',
54
+ tabBarIcon: ({ color, focused }) => (
55
+ <Ionicons name={focused ? 'folder' : 'folder-outline'} size={24} color={color} />
56
+ ),
57
+ }}
58
+ />
59
+ <Tabs.Screen
60
+ name="settings"
61
+ options={{
62
+ title: 'Settings',
63
+ tabBarIcon: ({ color, focused }) => (
64
+ <Ionicons name={focused ? 'settings' : 'settings-outline'} size={24} color={color} />
65
+ ),
66
+ }}
67
+ />
68
+ </Tabs>
40
69
);
41
70
}
MODIFY
app/_layout.tsx
+1 -2
@@ -13,8 +13,7 @@
13
13
14
14
return (
15
15
<NavigationThemeProvider value={colorScheme === 'dark' ? DarkTheme : DefaultTheme}>
16
- <Stack screenOptions={{ headerShown: false }} initialRouteName="index">
17
- <Stack.Screen name="index" options={{ headerShown: false }} />
16
+ <Stack screenOptions={{ headerShown: false }}>
18
17
<Stack.Screen name="(tabs)" options={{ headerShown: false }} />
19
18
<Stack.Screen name="project/[id]" options={{ headerShown: false }} />
20
19
<Stack.Screen name="archive" options={{ headerShown: false }} />
DELETE
app/index.tsx
+0 -5
@@ -1,5 +0,0 @@
1
-import { Redirect } from 'expo-router';
2
-
3
-export default function Index() {
4
- return <Redirect href="/(tabs)" />;
5
-}
MODIFY
package-lock.json
+79 -0
@@ -16,6 +16,7 @@
16
16
"@react-navigation/native": "^7.1.8",
17
17
"expo": "^54.0.23",
18
18
"expo-constants": "~18.0.10",
19
+ "expo-dev-client": "~6.0.17",
19
20
"expo-document-picker": "^14.0.7",
20
21
"expo-file-system": "^19.0.17",
21
22
"expo-font": "~14.0.9",
@@ -6387,6 +6388,56 @@
6387
6388
"react-native": "*"
6388
6389
}
6389
6390
},
6391
+ "node_modules/expo-dev-client": {
6392
+ "version": "6.0.17",
6393
+ "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-6.0.17.tgz",
6394
+ "integrity": "sha512-zVilIum3sqXFbhYhPT6TuxR3ddH/IfHL82FiOTqJUiYaTQqun1I6ogSvU1djhY1eXUYhfYIBieQNWMVjXPxMvw==",
6395
+ "license": "MIT",
6396
+ "dependencies": {
6397
+ "expo-dev-launcher": "6.0.17",
6398
+ "expo-dev-menu": "7.0.16",
6399
+ "expo-dev-menu-interface": "2.0.0",
6400
+ "expo-manifests": "~1.0.8",
6401
+ "expo-updates-interface": "~2.0.0"
6402
+ },
6403
+ "peerDependencies": {
6404
+ "expo": "*"
6405
+ }
6406
+ },
6407
+ "node_modules/expo-dev-launcher": {
6408
+ "version": "6.0.17",
6409
+ "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-6.0.17.tgz",
6410
+ "integrity": "sha512-riLxFXaw6Nvgb27TiQtUvoHkW/zTz0aO7M+qxDBBaEbJMJSFl51KSwOJJBTItVQIE9f9jB8x5L1CfLw81/McZw==",
6411
+ "license": "MIT",
6412
+ "dependencies": {
6413
+ "expo-dev-menu": "7.0.16",
6414
+ "expo-manifests": "~1.0.8"
6415
+ },
6416
+ "peerDependencies": {
6417
+ "expo": "*"
6418
+ }
6419
+ },
6420
+ "node_modules/expo-dev-menu": {
6421
+ "version": "7.0.16",
6422
+ "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-7.0.16.tgz",
6423
+ "integrity": "sha512-/kjTjk5tcZV0ixYnV3JyzPXKlMimpBNYaDo4XxBbRFIkTf/vmb/9e1BTR2nALnoa/D3MRwtR43gZYT+W/wfKXw==",
6424
+ "license": "MIT",
6425
+ "dependencies": {
6426
+ "expo-dev-menu-interface": "2.0.0"
6427
+ },
6428
+ "peerDependencies": {
6429
+ "expo": "*"
6430
+ }
6431
+ },
6432
+ "node_modules/expo-dev-menu-interface": {
6433
+ "version": "2.0.0",
6434
+ "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-2.0.0.tgz",
6435
+ "integrity": "sha512-BvAMPt6x+vyXpThsyjjOYyjwfjREV4OOpQkZ0tNl+nGpsPfcY9mc6DRACoWnH9KpLzyIt3BOgh3cuy/h/OxQjw==",
6436
+ "license": "MIT",
6437
+ "peerDependencies": {
6438
+ "expo": "*"
6439
+ }
6440
+ },
6390
6441
"node_modules/expo-document-picker": {
6391
6442
"version": "14.0.7",
6392
6443
"resolved": "https://registry.npmjs.org/expo-document-picker/-/expo-document-picker-14.0.7.tgz",
@@ -6447,6 +6498,12 @@
6447
6498
}
6448
6499
}
6449
6500
},
6501
+ "node_modules/expo-json-utils": {
6502
+ "version": "0.15.0",
6503
+ "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-0.15.0.tgz",
6504
+ "integrity": "sha512-duRT6oGl80IDzH2LD2yEFWNwGIC2WkozsB6HF3cDYNoNNdUvFk6uN3YiwsTsqVM/D0z6LEAQ01/SlYvN+Fw0JQ==",
6505
+ "license": "MIT"
6506
+ },
6450
6507
"node_modules/expo-keep-awake": {
6451
6508
"version": "15.0.7",
6452
6509
"resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-15.0.7.tgz",
@@ -6472,6 +6529,19 @@
6472
6529
"react-native": "*"
6473
6530
}
6474
6531
},
6532
+ "node_modules/expo-manifests": {
6533
+ "version": "1.0.8",
6534
+ "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-1.0.8.tgz",
6535
+ "integrity": "sha512-nA5PwU2uiUd+2nkDWf9e71AuFAtbrb330g/ecvuu52bmaXtN8J8oiilc9BDvAX0gg2fbtOaZdEdjBYopt1jdlQ==",
6536
+ "license": "MIT",
6537
+ "dependencies": {
6538
+ "@expo/config": "~12.0.8",
6539
+ "expo-json-utils": "~0.15.0"
6540
+ },
6541
+ "peerDependencies": {
6542
+ "expo": "*"
6543
+ }
6544
+ },
6475
6545
"node_modules/expo-modules-autolinking": {
6476
6546
"version": "3.0.21",
6477
6547
"resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-3.0.21.tgz",
@@ -6850,6 +6920,15 @@
6850
6920
}
6851
6921
}
6852
6922
},
6923
+ "node_modules/expo-updates-interface": {
6924
+ "version": "2.0.0",
6925
+ "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-2.0.0.tgz",
6926
+ "integrity": "sha512-pTzAIufEZdVPKql6iMi5ylVSPqV1qbEopz9G6TSECQmnNde2nwq42PxdFBaUEd8IZJ/fdJLQnOT3m6+XJ5s7jg==",
6927
+ "license": "MIT",
6928
+ "peerDependencies": {
6929
+ "expo": "*"
6930
+ }
6931
+ },
6853
6932
"node_modules/expo-web-browser": {
6854
6933
"version": "15.0.9",
6855
6934
"resolved": "https://registry.npmjs.org/expo-web-browser/-/expo-web-browser-15.0.9.tgz",
MODIFY
package.json
+1 -0
@@ -19,6 +19,7 @@
19
19
"@react-navigation/native": "^7.1.8",
20
20
"expo": "^54.0.23",
21
21
"expo-constants": "~18.0.10",
22
+ "expo-dev-client": "~6.0.17",
22
23
"expo-document-picker": "^14.0.7",
23
24
"expo-file-system": "^19.0.17",
24
25
"expo-font": "~14.0.9",