expo-template-default 54.0.0 → 54.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,10 @@
1
1
  import { Tabs } from 'expo-router';
2
2
  import React from 'react';
3
- import { Platform } from 'react-native';
4
3
 
5
- import { HapticTab } from '@/components/HapticTab';
6
- import { IconSymbol } from '@/components/ui/IconSymbol';
7
- import { TabBarBackground } from '@/components/ui/TabBarBackground';
8
- import { Colors } from '@/constants/Colors';
9
- import { useColorScheme } from '@/hooks/useColorScheme';
4
+ import { HapticTab } from '@/components/haptic-tab';
5
+ import { IconSymbol } from '@/components/ui/icon-symbol';
6
+ import { Colors } from '@/constants/theme';
7
+ import { useColorScheme } from '@/hooks/use-color-scheme';
10
8
 
11
9
  export default function TabLayout() {
12
10
  const colorScheme = useColorScheme();
@@ -17,14 +15,6 @@ export default function TabLayout() {
17
15
  tabBarActiveTintColor: Colors[colorScheme ?? 'light'].tint,
18
16
  headerShown: false,
19
17
  tabBarButton: HapticTab,
20
- tabBarBackground: TabBarBackground,
21
- tabBarStyle: Platform.select({
22
- ios: {
23
- // Use a transparent background on iOS to show the blur effect
24
- position: 'absolute',
25
- },
26
- default: {},
27
- }),
28
18
  }}>
29
19
  <Tabs.Screen
30
20
  name="index"
@@ -1,12 +1,13 @@
1
1
  import { Image } from 'expo-image';
2
2
  import { Platform, StyleSheet } from 'react-native';
3
3
 
4
- import { Collapsible } from '@/components/Collapsible';
5
- import { ExternalLink } from '@/components/ExternalLink';
6
- import ParallaxScrollView from '@/components/ParallaxScrollView';
7
- import { ThemedText } from '@/components/ThemedText';
8
- import { ThemedView } from '@/components/ThemedView';
9
- import { IconSymbol } from '@/components/ui/IconSymbol';
4
+ import { Collapsible } from '@/components/ui/collapsible';
5
+ import { ExternalLink } from '@/components/external-link';
6
+ import ParallaxScrollView from '@/components/parallax-scroll-view';
7
+ import { ThemedText } from '@/components/themed-text';
8
+ import { ThemedView } from '@/components/themed-view';
9
+ import { IconSymbol } from '@/components/ui/icon-symbol';
10
+ import { Fonts } from '@/constants/theme';
10
11
 
11
12
  export default function TabTwoScreen() {
12
13
  return (
@@ -21,7 +22,13 @@ export default function TabTwoScreen() {
21
22
  />
22
23
  }>
23
24
  <ThemedView style={styles.titleContainer}>
24
- <ThemedText type="title">Explore</ThemedText>
25
+ <ThemedText
26
+ type="title"
27
+ style={{
28
+ fontFamily: Fonts.rounded,
29
+ }}>
30
+ Explore
31
+ </ThemedText>
25
32
  </ThemedView>
26
33
  <ThemedText>This app includes example code to help you get started.</ThemedText>
27
34
  <Collapsible title="File-based routing">
@@ -58,17 +65,6 @@ export default function TabTwoScreen() {
58
65
  <ThemedText type="link">Learn more</ThemedText>
59
66
  </ExternalLink>
60
67
  </Collapsible>
61
- <Collapsible title="Custom fonts">
62
- <ThemedText>
63
- Open <ThemedText type="defaultSemiBold">app/_layout.tsx</ThemedText> to see how to load{' '}
64
- <ThemedText style={{ fontFamily: 'SpaceMono' }}>
65
- custom fonts such as this one.
66
- </ThemedText>
67
- </ThemedText>
68
- <ExternalLink href="https://docs.expo.dev/versions/latest/sdk/font">
69
- <ThemedText type="link">Learn more</ThemedText>
70
- </ExternalLink>
71
- </Collapsible>
72
68
  <Collapsible title="Light and dark mode components">
73
69
  <ThemedText>
74
70
  This template has light and dark mode support. The{' '}
@@ -83,7 +79,10 @@ export default function TabTwoScreen() {
83
79
  <ThemedText>
84
80
  This template includes an example of an animated component. The{' '}
85
81
  <ThemedText type="defaultSemiBold">components/HelloWave.tsx</ThemedText> component uses
86
- the powerful <ThemedText type="defaultSemiBold">react-native-reanimated</ThemedText>{' '}
82
+ the powerful{' '}
83
+ <ThemedText type="defaultSemiBold" style={{ fontFamily: Fonts.mono }}>
84
+ react-native-reanimated
85
+ </ThemedText>{' '}
87
86
  library to create a waving hand animation.
88
87
  </ThemedText>
89
88
  {Platform.select({
@@ -1,10 +1,11 @@
1
1
  import { Image } from 'expo-image';
2
2
  import { Platform, StyleSheet } from 'react-native';
3
3
 
4
- import { HelloWave } from '@/components/HelloWave';
5
- import ParallaxScrollView from '@/components/ParallaxScrollView';
6
- import { ThemedText } from '@/components/ThemedText';
7
- import { ThemedView } from '@/components/ThemedView';
4
+ import { HelloWave } from '@/components/hello-wave';
5
+ import ParallaxScrollView from '@/components/parallax-scroll-view';
6
+ import { ThemedText } from '@/components/themed-text';
7
+ import { ThemedView } from '@/components/themed-view';
8
+ import { Link } from 'expo-router';
8
9
 
9
10
  export default function HomeScreen() {
10
11
  return (
@@ -36,7 +37,29 @@ export default function HomeScreen() {
36
37
  </ThemedText>
37
38
  </ThemedView>
38
39
  <ThemedView style={styles.stepContainer}>
39
- <ThemedText type="subtitle">Step 2: Explore</ThemedText>
40
+ <Link href="/modal">
41
+ <Link.Trigger>
42
+ <ThemedText type="subtitle">Step 2: Explore</ThemedText>
43
+ </Link.Trigger>
44
+ <Link.Preview />
45
+ <Link.Menu>
46
+ <Link.MenuAction title="Action" icon="cube" onPress={() => alert('Action pressed')} />
47
+ <Link.MenuAction
48
+ title="Share"
49
+ icon="square.and.arrow.up"
50
+ onPress={() => alert('Share pressed')}
51
+ />
52
+ <Link.Menu title="More" icon="ellipsis">
53
+ <Link.MenuAction
54
+ title="Delete"
55
+ icon="trash"
56
+ destructive
57
+ onPress={() => alert('Delete pressed')}
58
+ />
59
+ </Link.Menu>
60
+ </Link.Menu>
61
+ </Link>
62
+
40
63
  <ThemedText>
41
64
  {`Tap the Explore tab to learn more about what's included in this starter app.`}
42
65
  </ThemedText>
package/app/_layout.tsx CHANGED
@@ -1,27 +1,22 @@
1
1
  import { DarkTheme, DefaultTheme, ThemeProvider } from '@react-navigation/native';
2
- import { useFonts } from 'expo-font';
3
2
  import { Stack } from 'expo-router';
4
3
  import { StatusBar } from 'expo-status-bar';
5
4
  import 'react-native-reanimated';
6
5
 
7
- import { useColorScheme } from '@/hooks/useColorScheme';
6
+ import { useColorScheme } from '@/hooks/use-color-scheme';
7
+
8
+ export const unstable_settings = {
9
+ anchor: '(tabs)',
10
+ };
8
11
 
9
12
  export default function RootLayout() {
10
13
  const colorScheme = useColorScheme();
11
- const [loaded] = useFonts({
12
- SpaceMono: require('../assets/fonts/SpaceMono-Regular.ttf'),
13
- });
14
-
15
- if (!loaded) {
16
- // Async font loading only occurs in development.
17
- return null;
18
- }
19
14
 
20
15
  return (
21
16
  <ThemeProvider value={colorScheme === 'dark' ? DarkTheme : DefaultTheme}>
22
17
  <Stack>
23
18
  <Stack.Screen name="(tabs)" options={{ headerShown: false }} />
24
- <Stack.Screen name="+not-found" />
19
+ <Stack.Screen name="modal" options={{ presentation: 'modal', title: 'Modal' }} />
25
20
  </Stack>
26
21
  <StatusBar style="auto" />
27
22
  </ThemeProvider>
package/app/modal.tsx ADDED
@@ -0,0 +1,29 @@
1
+ import { Link } from 'expo-router';
2
+ import { StyleSheet } from 'react-native';
3
+
4
+ import { ThemedText } from '@/components/themed-text';
5
+ import { ThemedView } from '@/components/themed-view';
6
+
7
+ export default function ModalScreen() {
8
+ return (
9
+ <ThemedView style={styles.container}>
10
+ <ThemedText type="title">This is a modal</ThemedText>
11
+ <Link href="/" dismissTo style={styles.link}>
12
+ <ThemedText type="link">Go to home screen</ThemedText>
13
+ </Link>
14
+ </ThemedView>
15
+ );
16
+ }
17
+
18
+ const styles = StyleSheet.create({
19
+ container: {
20
+ flex: 1,
21
+ alignItems: 'center',
22
+ justifyContent: 'center',
23
+ padding: 20,
24
+ },
25
+ link: {
26
+ marginTop: 15,
27
+ paddingVertical: 15,
28
+ },
29
+ });
package/app.json CHANGED
@@ -16,10 +16,10 @@
16
16
  "foregroundImage": "./assets/images/adaptive-icon.png",
17
17
  "backgroundColor": "#ffffff"
18
18
  },
19
- "edgeToEdgeEnabled": true
19
+ "edgeToEdgeEnabled": true,
20
+ "predictiveBackGestureEnabled": true
20
21
  },
21
22
  "web": {
22
- "bundler": "metro",
23
23
  "output": "static",
24
24
  "favicon": "./assets/images/favicon.png"
25
25
  },
@@ -1,7 +1,6 @@
1
1
  import { Href, Link } from 'expo-router';
2
- import { openBrowserAsync } from 'expo-web-browser';
2
+ import { openBrowserAsync, WebBrowserPresentationStyle } from 'expo-web-browser';
3
3
  import { type ComponentProps } from 'react';
4
- import { Platform } from 'react-native';
5
4
 
6
5
  type Props = Omit<ComponentProps<typeof Link>, 'href'> & { href: Href & string };
7
6
 
@@ -12,11 +11,13 @@ export function ExternalLink({ href, ...rest }: Props) {
12
11
  {...rest}
13
12
  href={href}
14
13
  onPress={async (event) => {
15
- if (Platform.OS !== 'web') {
14
+ if (process.env.EXPO_OS !== 'web') {
16
15
  // Prevent the default behavior of linking to the default browser on native.
17
16
  event.preventDefault();
18
17
  // Open the link in an in-app browser.
19
- await openBrowserAsync(href);
18
+ await openBrowserAsync(href, {
19
+ presentationStyle: WebBrowserPresentationStyle.AUTOMATIC,
20
+ });
20
21
  }
21
22
  }}
22
23
  />
@@ -0,0 +1,19 @@
1
+ import Animated from 'react-native-reanimated';
2
+
3
+ export function HelloWave() {
4
+ return (
5
+ <Animated.Text
6
+ style={{
7
+ fontSize: 28,
8
+ lineHeight: 32,
9
+ marginTop: -6,
10
+ animationName: {
11
+ '50%': { transform: [{ rotate: '25deg' }] },
12
+ },
13
+ animationIterationCount: 4,
14
+ animationDuration: '300ms',
15
+ }}>
16
+ 👋
17
+ </Animated.Text>
18
+ );
19
+ }
@@ -4,12 +4,12 @@ import Animated, {
4
4
  interpolate,
5
5
  useAnimatedRef,
6
6
  useAnimatedStyle,
7
- useScrollViewOffset,
7
+ useScrollOffset,
8
8
  } from 'react-native-reanimated';
9
9
 
10
- import { ThemedView } from '@/components/ThemedView';
11
- import { useBottomTabOverflow } from '@/components/ui/TabBarBackground';
12
- import { useColorScheme } from '@/hooks/useColorScheme';
10
+ import { ThemedView } from '@/components/themed-view';
11
+ import { useColorScheme } from '@/hooks/use-color-scheme';
12
+ import { useThemeColor } from '@/hooks/use-theme-color';
13
13
 
14
14
  const HEADER_HEIGHT = 250;
15
15
 
@@ -23,10 +23,10 @@ export default function ParallaxScrollView({
23
23
  headerImage,
24
24
  headerBackgroundColor,
25
25
  }: Props) {
26
+ const backgroundColor = useThemeColor({}, 'background');
26
27
  const colorScheme = useColorScheme() ?? 'light';
27
28
  const scrollRef = useAnimatedRef<Animated.ScrollView>();
28
- const scrollOffset = useScrollViewOffset(scrollRef);
29
- const { scrollInsetBottom, paddingBottom } = useBottomTabOverflow();
29
+ const scrollOffset = useScrollOffset(scrollRef);
30
30
  const headerAnimatedStyle = useAnimatedStyle(() => {
31
31
  return {
32
32
  transform: [
@@ -45,23 +45,20 @@ export default function ParallaxScrollView({
45
45
  });
46
46
 
47
47
  return (
48
- <ThemedView style={styles.container}>
49
- <Animated.ScrollView
50
- ref={scrollRef}
51
- scrollEventThrottle={16}
52
- scrollIndicatorInsets={{ bottom: scrollInsetBottom }}
53
- contentContainerStyle={{ paddingBottom }}>
54
- <Animated.View
55
- style={[
56
- styles.header,
57
- { backgroundColor: headerBackgroundColor[colorScheme] },
58
- headerAnimatedStyle,
59
- ]}>
60
- {headerImage}
61
- </Animated.View>
62
- <ThemedView style={styles.content}>{children}</ThemedView>
63
- </Animated.ScrollView>
64
- </ThemedView>
48
+ <Animated.ScrollView
49
+ ref={scrollRef}
50
+ style={{ backgroundColor, flex: 1 }}
51
+ scrollEventThrottle={16}>
52
+ <Animated.View
53
+ style={[
54
+ styles.header,
55
+ { backgroundColor: headerBackgroundColor[colorScheme] },
56
+ headerAnimatedStyle,
57
+ ]}>
58
+ {headerImage}
59
+ </Animated.View>
60
+ <ThemedView style={styles.content}>{children}</ThemedView>
61
+ </Animated.ScrollView>
65
62
  );
66
63
  }
67
64
 
@@ -1,6 +1,6 @@
1
1
  import { StyleSheet, Text, type TextProps } from 'react-native';
2
2
 
3
- import { useThemeColor } from '@/hooks/useThemeColor';
3
+ import { useThemeColor } from '@/hooks/use-theme-color';
4
4
 
5
5
  export type ThemedTextProps = TextProps & {
6
6
  lightColor?: string;
@@ -1,6 +1,6 @@
1
1
  import { View, type ViewProps } from 'react-native';
2
2
 
3
- import { useThemeColor } from '@/hooks/useThemeColor';
3
+ import { useThemeColor } from '@/hooks/use-theme-color';
4
4
 
5
5
  export type ThemedViewProps = ViewProps & {
6
6
  lightColor?: string;
@@ -1,11 +1,11 @@
1
1
  import { PropsWithChildren, useState } from 'react';
2
2
  import { StyleSheet, TouchableOpacity } from 'react-native';
3
3
 
4
- import { ThemedText } from '@/components/ThemedText';
5
- import { ThemedView } from '@/components/ThemedView';
6
- import { IconSymbol } from '@/components/ui/IconSymbol';
7
- import { Colors } from '@/constants/Colors';
8
- import { useColorScheme } from '@/hooks/useColorScheme';
4
+ import { ThemedText } from '@/components/themed-text';
5
+ import { ThemedView } from '@/components/themed-view';
6
+ import { IconSymbol } from '@/components/ui/icon-symbol';
7
+ import { Colors } from '@/constants/theme';
8
+ import { useColorScheme } from '@/hooks/use-color-scheme';
9
9
 
10
10
  export function Collapsible({ children, title }: PropsWithChildren & { title: string }) {
11
11
  const [isOpen, setIsOpen] = useState(false);
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Below are the colors that are used in the app. The colors are defined in the light and dark mode.
3
+ * There are many other ways to style your app. For example, [Nativewind](https://www.nativewind.dev/), [Tamagui](https://tamagui.dev/), [unistyles](https://reactnativeunistyles.vercel.app), etc.
4
+ */
5
+
6
+ import { Platform } from 'react-native';
7
+
8
+ const tintColorLight = '#0a7ea4';
9
+ const tintColorDark = '#fff';
10
+
11
+ export const Colors = {
12
+ light: {
13
+ text: '#11181C',
14
+ background: '#fff',
15
+ tint: tintColorLight,
16
+ icon: '#687076',
17
+ tabIconDefault: '#687076',
18
+ tabIconSelected: tintColorLight,
19
+ },
20
+ dark: {
21
+ text: '#ECEDEE',
22
+ background: '#151718',
23
+ tint: tintColorDark,
24
+ icon: '#9BA1A6',
25
+ tabIconDefault: '#9BA1A6',
26
+ tabIconSelected: tintColorDark,
27
+ },
28
+ };
29
+
30
+ export const Fonts = Platform.select({
31
+ ios: {
32
+ /** iOS `UIFontDescriptorSystemDesignDefault` */
33
+ sans: 'system-ui',
34
+ /** iOS `UIFontDescriptorSystemDesignSerif` */
35
+ serif: 'ui-serif',
36
+ /** iOS `UIFontDescriptorSystemDesignRounded` */
37
+ rounded: 'ui-rounded',
38
+ /** iOS `UIFontDescriptorSystemDesignMonospaced` */
39
+ mono: 'ui-monospace',
40
+ },
41
+ default: {
42
+ sans: 'normal',
43
+ serif: 'serif',
44
+ rounded: 'normal',
45
+ mono: 'monospace',
46
+ },
47
+ web: {
48
+ sans: "system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif",
49
+ serif: "Georgia, 'Times New Roman', serif",
50
+ rounded: "'SF Pro Rounded', 'Hiragino Maru Gothic ProN', Meiryo, 'MS PGothic', sans-serif",
51
+ mono: "SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace",
52
+ },
53
+ });
@@ -3,8 +3,8 @@
3
3
  * https://docs.expo.dev/guides/color-schemes/
4
4
  */
5
5
 
6
- import { Colors } from '@/constants/Colors';
7
- import { useColorScheme } from '@/hooks/useColorScheme';
6
+ import { Colors } from '@/constants/theme';
7
+ import { useColorScheme } from '@/hooks/use-color-scheme';
8
8
 
9
9
  export function useThemeColor(
10
10
  props: { light?: string; dark?: string },
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "expo-template-default",
3
3
  "license": "0BSD",
4
4
  "main": "expo-router/entry",
5
- "version": "54.0.0",
5
+ "version": "54.0.1",
6
6
  "scripts": {
7
7
  "start": "expo start",
8
8
  "reset-project": "node ./scripts/reset-project.js",
@@ -13,39 +13,31 @@
13
13
  },
14
14
  "dependencies": {
15
15
  "@expo/vector-icons": "^14.1.0",
16
- "@react-navigation/bottom-tabs": "^7.3.10",
17
- "@react-navigation/elements": "^2.3.8",
18
- "@react-navigation/native": "^7.1.6",
19
- "expo": "~54.0.0-preview.0",
20
- "expo-blur": "~15.0.0",
21
- "expo-constants": "~18.0.0",
22
- "expo-font": "~14.0.0",
23
- "expo-haptics": "~15.0.0",
24
- "expo-image": "~3.0.0",
25
- "expo-linking": "~8.0.0",
26
- "expo-router": "~6.0.0-beta.0",
27
- "expo-splash-screen": "~31.0.0",
28
- "expo-status-bar": "~3.0.0",
29
- "expo-symbols": "~1.0.0",
30
- "expo-system-ui": "~6.0.0",
31
- "expo-web-browser": "~15.0.0",
16
+ "@react-navigation/bottom-tabs": "^7.4.0",
17
+ "@react-navigation/elements": "^2.6.3",
18
+ "@react-navigation/native": "^7.1.8",
19
+ "expo": "~54.0.0-preview.1",
20
+ "expo-haptics": "~15.0.1",
21
+ "expo-image": "~3.0.1",
22
+ "expo-router": "~6.0.0-beta.1",
23
+ "expo-splash-screen": "~31.0.1",
24
+ "expo-status-bar": "~3.0.1",
25
+ "expo-symbols": "~1.0.1",
26
+ "expo-web-browser": "~15.0.1",
32
27
  "react": "19.1.0",
33
28
  "react-dom": "19.1.0",
34
29
  "react-native": "0.81.0",
35
30
  "react-native-gesture-handler": "~2.28.0",
36
31
  "react-native-worklets": "~0.4.1",
37
32
  "react-native-reanimated": "~4.0.2",
38
- "react-native-safe-area-context": "5.5.2",
39
- "react-native-screens": "~4.11.1",
40
- "react-native-web": "~0.21.0",
41
- "react-native-webview": "13.15.0"
33
+ "react-native-safe-area-context": "5.6.0",
34
+ "react-native-screens": "4.14.0",
35
+ "react-native-web": "~0.21.0"
42
36
  },
43
37
  "devDependencies": {
44
- "@babel/core": "^7.25.2",
45
- "@types/react": "~19.0.10",
46
- "typescript": "~5.8.3",
38
+ "@types/react": "~19.1.0",
39
+ "typescript": "~5.9.2",
47
40
  "eslint": "^9.25.0",
48
- "eslint-config-expo": "~9.2.0"
49
- },
50
- "gitHead": "cb7062e2c17d1fb09522834aaaac0e19b766df62"
41
+ "eslint-config-expo": "~10.0.0"
42
+ }
51
43
  }
@@ -1,32 +0,0 @@
1
- import { Link, Stack } from 'expo-router';
2
- import { StyleSheet } from 'react-native';
3
-
4
- import { ThemedText } from '@/components/ThemedText';
5
- import { ThemedView } from '@/components/ThemedView';
6
-
7
- export default function NotFoundScreen() {
8
- return (
9
- <>
10
- <Stack.Screen options={{ title: 'Oops!' }} />
11
- <ThemedView style={styles.container}>
12
- <ThemedText type="title">This screen does not exist.</ThemedText>
13
- <Link href="/" style={styles.link}>
14
- <ThemedText type="link">Go to home screen!</ThemedText>
15
- </Link>
16
- </ThemedView>
17
- </>
18
- );
19
- }
20
-
21
- const styles = StyleSheet.create({
22
- container: {
23
- flex: 1,
24
- alignItems: 'center',
25
- justifyContent: 'center',
26
- padding: 20,
27
- },
28
- link: {
29
- marginTop: 15,
30
- paddingVertical: 15,
31
- },
32
- });
Binary file
@@ -1,40 +0,0 @@
1
- import { useEffect } from 'react';
2
- import { StyleSheet } from 'react-native';
3
- import Animated, {
4
- useAnimatedStyle,
5
- useSharedValue,
6
- withRepeat,
7
- withSequence,
8
- withTiming,
9
- } from 'react-native-reanimated';
10
-
11
- import { ThemedText } from '@/components/ThemedText';
12
-
13
- export function HelloWave() {
14
- const rotationAnimation = useSharedValue(0);
15
-
16
- useEffect(() => {
17
- rotationAnimation.value = withRepeat(
18
- withSequence(withTiming(25, { duration: 150 }), withTiming(0, { duration: 150 })),
19
- 4 // Run the animation 4 times
20
- );
21
- }, [rotationAnimation]);
22
-
23
- const animatedStyle = useAnimatedStyle(() => ({
24
- transform: [{ rotate: `${rotationAnimation.value}deg` }],
25
- }));
26
-
27
- return (
28
- <Animated.View style={animatedStyle}>
29
- <ThemedText style={styles.text}>👋</ThemedText>
30
- </Animated.View>
31
- );
32
- }
33
-
34
- const styles = StyleSheet.create({
35
- text: {
36
- fontSize: 28,
37
- lineHeight: 32,
38
- marginTop: -6,
39
- },
40
- });
@@ -1,26 +0,0 @@
1
- import { BlurView } from 'expo-blur';
2
- import { StyleSheet } from 'react-native';
3
- import { useBottomTabBarHeight } from '@react-navigation/bottom-tabs';
4
- import { useSafeAreaInsets } from 'react-native-safe-area-context';
5
-
6
- export function TabBarBackground() {
7
- return (
8
- <BlurView
9
- // System chrome material automatically adapts to the system's theme
10
- // and matches the native tab bar appearance on iOS.
11
- tint="systemChromeMaterial"
12
- intensity={70}
13
- style={StyleSheet.absoluteFill}
14
- />
15
- );
16
- }
17
-
18
- export function useBottomTabOverflow() {
19
- const insets = useSafeAreaInsets();
20
- const tabBarHeight = useBottomTabBarHeight();
21
-
22
- return {
23
- scrollInsetBottom: tabBarHeight - insets.bottom,
24
- paddingBottom: tabBarHeight,
25
- };
26
- }
@@ -1,9 +0,0 @@
1
- // This is a shim for web and Android where the tab bar is generally opaque.
2
- export const TabBarBackground = undefined;
3
-
4
- export function useBottomTabOverflow() {
5
- return {
6
- scrollInsetBottom: 0,
7
- paddingBottom: 0,
8
- }
9
- }
@@ -1,26 +0,0 @@
1
- /**
2
- * Below are the colors that are used in the app. The colors are defined in the light and dark mode.
3
- * There are many other ways to style your app. For example, [Nativewind](https://www.nativewind.dev/), [Tamagui](https://tamagui.dev/), [unistyles](https://reactnativeunistyles.vercel.app), etc.
4
- */
5
-
6
- const tintColorLight = '#0a7ea4';
7
- const tintColorDark = '#fff';
8
-
9
- export const Colors = {
10
- light: {
11
- text: '#11181C',
12
- background: '#fff',
13
- tint: tintColorLight,
14
- icon: '#687076',
15
- tabIconDefault: '#687076',
16
- tabIconSelected: tintColorLight,
17
- },
18
- dark: {
19
- text: '#ECEDEE',
20
- background: '#151718',
21
- tint: tintColorDark,
22
- icon: '#9BA1A6',
23
- tabIconDefault: '#9BA1A6',
24
- tabIconSelected: tintColorDark,
25
- },
26
- };
File without changes