create-expo-stack 2.5.0-next.738ca1b → 2.5.0-next.77e2bc3

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.
Files changed (55) hide show
  1. package/build/templates/base/App.tsx.ejs +44 -110
  2. package/build/templates/base/components/BackButton.tsx.ejs +23 -0
  3. package/build/templates/base/components/Button.tsx.ejs +40 -0
  4. package/build/templates/base/components/EditScreenInfo.tsx.ejs +55 -0
  5. package/build/templates/base/components/HeaderButton.tsx.ejs +28 -0
  6. package/build/templates/base/components/ScreenContent.tsx.ejs +38 -0
  7. package/build/templates/base/components/TabBarIcon.tsx.ejs +15 -0
  8. package/build/templates/packages/expo-router/drawer/app/(drawer)/(tabs)/_layout.tsx.ejs +1 -13
  9. package/build/templates/packages/expo-router/drawer/app/(drawer)/(tabs)/index.tsx.ejs +18 -84
  10. package/build/templates/packages/expo-router/drawer/app/(drawer)/(tabs)/two.tsx.ejs +18 -84
  11. package/build/templates/packages/expo-router/drawer/app/(drawer)/_layout.tsx.ejs +4 -18
  12. package/build/templates/packages/expo-router/drawer/app/(drawer)/index.tsx.ejs +12 -98
  13. package/build/templates/packages/expo-router/drawer/app/modal.tsx.ejs +16 -92
  14. package/build/templates/packages/expo-router/stack/app/details.tsx.ejs +17 -171
  15. package/build/templates/packages/expo-router/stack/app/index.tsx.ejs +20 -202
  16. package/build/templates/packages/expo-router/tabs/app/(tabs)/_layout.tsx.ejs +6 -50
  17. package/build/templates/packages/expo-router/tabs/app/(tabs)/index.tsx.ejs +18 -102
  18. package/build/templates/packages/expo-router/tabs/app/(tabs)/two.tsx.ejs +18 -83
  19. package/build/templates/packages/expo-router/tabs/app/modal.tsx.ejs +17 -92
  20. package/build/templates/packages/i18next/components/InternalizationExample.tsx.ejs +1 -1
  21. package/build/templates/packages/i18next/translation/en.json.ejs +3 -3
  22. package/build/templates/packages/i18next/translation/fr.json.ejs +3 -3
  23. package/build/templates/packages/nativewind/components/BackButton.tsx.ejs +18 -0
  24. package/build/templates/packages/nativewind/components/Button.tsx.ejs +14 -0
  25. package/build/templates/packages/nativewind/components/EditScreenInfo.tsx.ejs +40 -0
  26. package/build/templates/packages/nativewind/components/ScreenContent.tsx.ejs +25 -0
  27. package/build/templates/packages/react-navigation/App.tsx.ejs +1 -1
  28. package/build/templates/packages/react-navigation/navigation/drawer-navigator.tsx.ejs +14 -26
  29. package/build/templates/packages/react-navigation/navigation/index.tsx.ejs +2 -101
  30. package/build/templates/packages/react-navigation/navigation/tab-navigator.tsx.ejs +8 -62
  31. package/build/templates/packages/react-navigation/screens/details.tsx.ejs +22 -108
  32. package/build/templates/packages/react-navigation/screens/home.tsx.ejs +3 -100
  33. package/build/templates/packages/react-navigation/screens/modal.tsx.ejs +16 -104
  34. package/build/templates/packages/react-navigation/screens/one.tsx.ejs +2 -115
  35. package/build/templates/packages/react-navigation/screens/overview.tsx.ejs +37 -199
  36. package/build/templates/packages/react-navigation/screens/two.tsx.ejs +3 -98
  37. package/build/templates/packages/restyle/components/BackButton.tsx.ejs +15 -0
  38. package/build/templates/packages/restyle/components/Button.tsx.ejs +32 -0
  39. package/build/templates/packages/restyle/components/EditScreenInfo.tsx.ejs +29 -0
  40. package/build/templates/packages/restyle/components/ScreenContent.tsx.ejs +20 -0
  41. package/build/templates/packages/tamagui/components/BackButton.tsx.ejs +19 -0
  42. package/build/templates/packages/tamagui/components/Button.tsx.ejs +9 -0
  43. package/build/templates/packages/tamagui/components/EditScreenInfo.tsx.ejs +29 -0
  44. package/build/templates/packages/tamagui/components/ScreenContent.tsx.ejs +22 -0
  45. package/build/templates/packages/unistyles/components/BackButton.tsx.ejs +26 -0
  46. package/build/templates/packages/unistyles/components/Button.tsx.ejs +12 -0
  47. package/build/templates/packages/unistyles/components/EditScreenInfo.tsx.ejs +61 -0
  48. package/build/templates/packages/unistyles/components/ScreenContent.tsx.ejs +24 -0
  49. package/build/templates/packages/unistyles/theme.ts.ejs +30 -46
  50. package/build/utilities/configureProjectFiles.js +68 -10
  51. package/build/utilities/generateProjectFiles.js +2 -2
  52. package/package.json +1 -1
  53. package/build/templates/packages/expo-router/drawer/components/edit-screen-info.tsx.ejs +0 -153
  54. package/build/templates/packages/expo-router/tabs/components/edit-screen-info.tsx.ejs +0 -153
  55. package/build/templates/packages/react-navigation/components/edit-screen-info.tsx.ejs +0 -180
@@ -1,22 +1,10 @@
1
1
  <% if (props.navigationPackage?.options.type === 'stack') { %>
2
- import { Feather } from "@expo/vector-icons";
3
2
  import { NavigationContainer } from "@react-navigation/native";
4
3
  import { createStackNavigator } from "@react-navigation/stack";
5
- <% if (props.stylingPackage?.name === "nativewind") { %>
6
- import { Text, View } from "react-native";
7
- <% } else if (props.stylingPackage?.name === "tamagui") { %>
8
- import { Button, Text } from "tamagui";
9
- <% } else if (props.stylingPackage?.name === "restyle") { %>
10
- import { Box, Text, useTheme } from 'theme';
11
- <% } else if (props.stylingPackage?.name === "unistyles") { %>
12
- import { createStyleSheet, useStyles } from 'react-native-unistyles'
13
- import { Text, View } from 'react-native';
14
- <% } else { %>
15
- import { Text, View, StyleSheet } from "react-native";
16
- <% } %>
17
4
 
18
5
  import Overview from "../screens/overview";
19
6
  import Details from "../screens/details";
7
+ import { BackButton } from '../components/BackButton';
20
8
 
21
9
  export type RootStackParamList = {
22
10
  Overview: undefined;
@@ -26,14 +14,7 @@
26
14
  const Stack = createStackNavigator<RootStackParamList>();
27
15
 
28
16
  export default function RootStack() {
29
- <% if (props.stylingPackage?.name === "restyle") { %>
30
- const { colors } = useTheme();
31
- <% } %>
32
17
 
33
- <% if (props.stylingPackage?.name === "unistyles") { %>
34
- const { styles, theme } = useStyles(stylesheet);
35
- <% } %>
36
-
37
18
  return (
38
19
  <NavigationContainer>
39
20
  <Stack.Navigator initialRouteName="Overview">
@@ -41,95 +22,15 @@
41
22
  <Stack.Screen
42
23
  name="Details"
43
24
  component={Details}
44
- <% if (props.stylingPackage?.name === "nativewind") { %>
45
25
  options={({ navigation }) => ({
46
- headerLeft: () => (
47
- <View className={styles.backButton}>
48
- <Feather name="chevron-left" size={16} color="#007AFF" />
49
- <Text className={styles.backButtonText} onPress={navigation.goBack}>Back</Text>
50
- </View>
51
- )
26
+ headerLeft: () => <BackButton onPress={navigation.goBack} />,
52
27
  })}
53
- <% } else if (props.stylingPackage?.name === "tamagui") { %>
54
- options={({ navigation }) => ({
55
- headerLeft: () => (
56
- <Button
57
- unstyled
58
- flexDirection="row"
59
- backgroundColor="transparent"
60
- pressStyle={{ opacity: 0.5 }}
61
- paddingLeft={20}
62
- onPress={navigation.goBack}
63
- icon={<Feather name="chevron-left" size={16} color="#007AFF" />}
64
- >
65
- <Text color="#007AFF">Back</Text>
66
- </Button>
67
- ),
68
- })}
69
- <% } else if (props.stylingPackage?.name === "restyle") { %>
70
- options={({ navigation }) => ({
71
- headerLeft: () => (
72
- <Box flexDirection="row" paddingLeft="m_16">
73
- <Feather name="chevron-left" size={16} color={colors.blue} />
74
- <Text marginLeft="xs_4" color="blue" onPress={navigation.goBack}>
75
- Back
76
- </Text>
77
- </Box>
78
- ),
79
- })}
80
- <% } else if (props.stylingPackage?.name === "unistyles") { %>
81
- options={({ navigation }) => ({
82
- headerLeft: () => (
83
- <View style={styles.backButton}>
84
- <Feather name="chevron-left" size={16} color={theme.colors.azureRadiance} />
85
- <Text style={styles.backButtonText} onPress={navigation.goBack}>Back</Text>
86
- </View>
87
- )
88
- })}
89
- <% } else { %>
90
- options={({ navigation }) => ({
91
- headerLeft: () => (
92
- <View style={styles.backButton}>
93
- <Feather name="chevron-left" size={16} color="#007AFF" />
94
- <Text style={styles.backButtonText} onPress={navigation.goBack}>Back</Text>
95
- </View>
96
- )
97
- })}
98
- <% } %>
99
28
  />
100
29
  </Stack.Navigator>
101
30
  </NavigationContainer>
102
31
  );
103
32
  }
104
33
 
105
- <% if (props.stylingPackage?.name === "nativewind") { %>
106
- const styles = {
107
- backButton: "flex-row",
108
- backButtonText: "text-blue-500 ml-1"
109
- };
110
- <% } else if (props.stylingPackage?.name === "unistyles") { %>
111
- const stylesheet = createStyleSheet((theme) => ({
112
- backButton: {
113
- flexDirection: 'row',
114
- paddingLeft: 20,
115
- },
116
- backButtonText: {
117
- color: theme.colors.azureRadiance,
118
- marginLeft: 4,
119
- },
120
- }));
121
- <% } else if (props.stylingPackage?.name === "stylesheet") { %>
122
- const styles = StyleSheet.create({
123
- backButton: {
124
- flexDirection: "row",
125
- paddingLeft: 20,
126
- },
127
- backButtonText: {
128
- color: "#007AFF",
129
- marginLeft: 4
130
- }
131
- });
132
- <% } %>
133
34
  <% } else if (props.navigationPackage?.options.type === 'tabs') { %>
134
35
  import { NavigationContainer } from "@react-navigation/native";
135
36
  import { createStackNavigator } from "@react-navigation/stack";
@@ -1,96 +1,42 @@
1
- import FontAwesome from '@expo/vector-icons/FontAwesome';
2
1
  import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
3
2
  import { StackScreenProps } from '@react-navigation/stack';
4
- <% if (props.stylingPackage?.name === 'unistyles') { %>
5
- import { createStyleSheet, useStyles } from 'react-native-unistyles'
6
- import { Pressable } from 'react-native';
7
- <% } else if (props.navigationPackage?.options.type === 'drawer + tabs' ) { %>
8
- import { StyleSheet } from 'react-native';
9
- <% } else { %>
10
- import { Pressable, StyleSheet } from 'react-native';
11
- <% } %>
12
3
 
13
4
  import { RootStackParamList } from '.';
5
+ import { HeaderButton } from '../components/HeaderButton';
6
+ import { TabBarIcon } from '../components/TabBarIcon';
14
7
  import One from '../screens/one';
15
8
  import Two from '../screens/two';
16
9
 
17
10
  const Tab = createBottomTabNavigator();
18
11
 
19
- function TabBarIcon(props: {
20
- name: React.ComponentProps<typeof FontAwesome>['name'];
21
- color: string;
22
- }) {
23
- <% if (props.stylingPackage?.name === 'unistyles') {%>
24
- const { styles } = useStyles(stylesheet)
25
- <% } %>
26
- return <FontAwesome size={28} style={styles.tabBarIcon} {...props} />;
27
- }
28
-
29
12
  type Props = StackScreenProps<RootStackParamList, 'TabNavigator'>;
30
13
 
31
14
  export default function TabLayout({ navigation }: Props) {
32
- <% if (props.stylingPackage?.name === 'unistyles') {%>
33
- const { styles } = useStyles(stylesheet)
34
- <% } %>
35
-
36
15
  return (
37
16
  <Tab.Navigator
38
17
  screenOptions={{
39
18
  tabBarActiveTintColor: 'black',
40
- <% if (props.navigationPackage?.options.type === 'drawer + tabs') { %>
19
+ <% if (props.navigationPackage?.options.type === 'drawer + tabs') { %>
41
20
  headerShown: false,
42
21
  <% } %>
43
22
  }}>
44
23
  <Tab.Screen
45
- name='One'
24
+ name="One"
46
25
  component={One}
47
26
  options={{
48
27
  title: 'Tab One',
49
- tabBarIcon: ({ color }) => <TabBarIcon name='code' color={color} />,
50
- <% if (props.navigationPackage?.options.type === 'tabs') { %>
51
- headerRight: () => (
52
- <Pressable onPress={() => navigation.navigate('Modal')}>
53
- {({ pressed }) => (
54
- <FontAwesome
55
- name='info-circle'
56
- size={25}
57
- color='gray'
58
- style={[styles.headerRight, { opacity: pressed ? 0.5 : 1 }]}
59
- />
60
- )}
61
- </Pressable>
62
- )
63
- <% } %>
28
+ tabBarIcon: ({ color }) => <TabBarIcon name="code" color={color} />,
29
+ headerRight: () => <HeaderButton onPress={() => navigation.navigate('Modal')} />,
64
30
  }}
65
31
  />
66
32
  <Tab.Screen
67
- name='Two'
33
+ name="Two"
68
34
  component={Two}
69
35
  options={{
70
36
  title: 'Tab Two',
71
- tabBarIcon: ({ color }) => <TabBarIcon name='code' color={color} />,
37
+ tabBarIcon: ({ color }) => <TabBarIcon name="code" color={color} />,
72
38
  }}
73
39
  />
74
40
  </Tab.Navigator>
75
41
  );
76
42
  }
77
-
78
- <% if (props.stylingPackage?.name === 'unistyles') { %>
79
- const stylesheet = createStyleSheet({
80
- headerRight: {
81
- marginRight: 15
82
- },
83
- tabBarIcon: {
84
- marginBottom: -3
85
- }
86
- });
87
- <% } else { %>
88
- const styles = StyleSheet.create({
89
- headerRight: {
90
- marginRight: 15
91
- },
92
- tabBarIcon: {
93
- marginBottom: -3
94
- }
95
- });
96
- <% } %>
@@ -1,113 +1,27 @@
1
- import { RouteProp, useRoute } from "@react-navigation/native";
2
- <% if (props.stylingPackage?.name === "nativewind") { %>
3
- import { View, Text } from "react-native";
4
- <% } else if (props.stylingPackage?.name === "tamagui") { %>
5
- import { YStack } from "tamagui";
6
- import { Container, Main, Subtitle, Title } from "../../tamagui.config";
7
- <% } else if (props.stylingPackage?.name === "restyle") { %>
8
- import { Box, Text } from 'theme';
9
- <% } else if (props.stylingPackage?.name === "unistyles") { %>
10
- import { createStyleSheet, useStyles } from 'react-native-unistyles'
11
- import { View, Text } from 'react-native';
12
- <% } else { %>
13
- import { View, StyleSheet, Text } from "react-native";
14
- <% } %>
15
- import { RootStackParamList } from "../navigation";
1
+ import { RouteProp, useRoute } from '@react-navigation/native';
2
+ import { ScreenContent } from 'components/ScreenContent';
3
+ import { StyleSheet, View } from 'react-native';
16
4
 
17
- type DetailsSreenRouteProp = RouteProp<RootStackParamList, "Details">;
5
+ import { RootStackParamList } from '../navigation';
6
+
7
+ type DetailsSreenRouteProp = RouteProp<RootStackParamList, 'Details'>;
18
8
 
19
9
  export default function Details() {
20
- const router = useRoute<DetailsSreenRouteProp>();
21
- <% if (props.stylingPackage?.name === "nativewind") { %>
22
- return (
23
- <View className={styles.container}>
24
- <View className={styles.main}>
25
- <Text className={styles.title}>Details</Text>
26
- <Text className={styles.subtitle}>Showing details for user {router.params.name}.</Text>
27
- </View>
28
- </View>
29
- );
30
- <% } else if (props.stylingPackage?.name === "tamagui") { %>
31
- return (
32
- <Container>
33
- <Main>
34
- <YStack>
35
- <Title>Details</Title>
36
- <Subtitle>Showing details for user {router.params.name}.</Subtitle>
37
- </YStack>
38
- </Main>
39
- </Container>
40
- );
41
- <% } else if (props.stylingPackage?.name === "restyle") { %>
42
- return (
43
- <Box flex={1} padding="ml_24">
44
- <Box flex={1} maxWidth={960}>
45
- <Text variant="extra_large">Details</Text>
46
- <Text variant="large" color="darkGray">
47
- Showing details for user {router.params.name}.
48
- </Text>
49
- </Box>
50
- </Box>
51
- );
52
- <% } else if (props.stylingPackage?.name === "unistyles") { %>
53
- const { styles, theme } = useStyles(stylesheet)
54
- return (
55
- <View style={styles.container}>
56
- <View style={styles.main}>
57
- <Text style={theme.components.title}>Details</Text>
58
- <Text style={theme.components.subtitle}>Showing details for user {router.params.name}.</Text>
59
- </View>
60
- </View>
61
- );
62
- <% } else { %>
63
- return (
64
- <View style={styles.container}>
65
- <View style={styles.main}>
66
- <Text style={styles.title}>Details</Text>
67
- <Text style={styles.subtitle}>Showing details for user {router.params.name}.</Text>
68
- </View>
69
- </View>
70
- );
71
- <% } %>
10
+ const router = useRoute<DetailsSreenRouteProp>();
11
+
12
+ return (
13
+ <View style={styles.container}>
14
+ <ScreenContent
15
+ path="screens/details.tsx"
16
+ title={`Showing details for user ${router.params.name}`}
17
+ />
18
+ </View>
19
+ );
72
20
  }
73
21
 
74
- <% if (props.stylingPackage?.name === "nativewind") { %>
75
- const styles = {
76
- container: "flex-1 p-6",
77
- main: "flex-1 max-w-[960]",
78
- title: "text-[64px] font-bold",
79
- subtitle: "text-4xl text-gray-700",
80
- };
81
- <% } else if (props.stylingPackage?.name === "unistyles") { %>
82
- const stylesheet = createStyleSheet({
83
- container: {
84
- flex: 1,
85
- padding: 24,
86
- },
87
- main: {
88
- flex: 1,
89
- maxWidth: 960,
90
- marginHorizontal: 'auto',
91
- },
92
- });
93
- <% } else if (props.stylingPackage?.name === "stylesheet") { %>
94
- const styles = StyleSheet.create({
95
- container: {
96
- flex: 1,
97
- padding: 24,
98
- },
99
- main: {
100
- flex: 1,
101
- maxWidth: 960,
102
- marginHorizontal: "auto",
103
- },
104
- title: {
105
- fontSize: 64,
106
- fontWeight: "bold",
107
- },
108
- subtitle: {
109
- fontSize: 36,
110
- color: "#38434D",
111
- },
112
- });
113
- <% } %>
22
+ export const styles = StyleSheet.create({
23
+ container: {
24
+ flex: 1,
25
+ padding: 24,
26
+ },
27
+ });
@@ -1,102 +1,5 @@
1
- <% if (props.stylingPackage?.name === 'nativewind') { %>
2
- import { Text, View } from 'react-native';
3
- import EditScreenInfo from '../components/edit-screen-info';
4
- <% } else if (props.stylingPackage?.name === 'tamagui') { %>
5
- import { YStack, H2, Separator, Theme } from 'tamagui';
6
- <% } else if (props.stylingPackage?.name === 'restyle') { %>
7
- import { Box, Text } from 'theme';
8
- <% } else if (props.stylingPackage?.name === 'unistyles') { %>
9
- import { useStyles } from 'react-native-unistyles'
10
- import { Text, View } from 'react-native';
11
- <% } else if (props.stylingPackage?.name === 'stylesheet') { %>
12
- import { StyleSheet, Text, View } from 'react-native';
13
- <% } %>
14
- <% if (props.internalizationPackage?.name === "i18next") { %>
15
- import { InternalizationExample } from '../../components/InternalizationExample';
16
- <% } %>
1
+ import { ScreenContent } from 'components/ScreenContent';
17
2
 
18
- const Page = () => {
19
- <% if (props.stylingPackage?.name === 'unistyles') { %>
20
- const { theme } = useStyles();
21
-
22
- return (
23
- <View style={theme.components.container}>
24
- <Text style={theme.components.title}>Home</Text>
25
- <% if (props.internalizationPackage?.name === "i18next") { %>
26
- <InternalizationExample />
27
- <% } %>
28
- <View style={theme.components.separator} />
29
- </View>
30
- );
31
- <% } else if (props.stylingPackage?.name === 'nativewind') { %>
32
- return (
33
- <View className={styles.container}>
34
- <Text className={styles.title}>Home</Text>
35
- <% if (props.internalizationPackage?.name === "i18next") { %>
36
- <InternalizationExample />
37
- <% } %>
38
- <View className={styles.separator} />
39
- <EditScreenInfo path='app/(tabs)/index.tsx' />
40
- </View>
41
- );
42
- <% } else if (props.stylingPackage?.name === 'tamagui') { %>
43
- return (
44
- <Theme name='light'>
45
- <YStack flex={1} alignItems='center' justifyContent='center'>
46
- <H2>Home</H2>
47
- <% if (props.internalizationPackage?.name === "i18next") { %>
48
- <InternalizationExample />
49
- <% } %>
50
- <Separator />
51
- </YStack>
52
- </Theme>
53
- );
54
- <% } else if (props.stylingPackage?.name === 'restyle') { %>
55
- return (
56
- <Box flex={1} alignItems='center' justifyContent='center'>
57
- <Text variant='title'>Home</Text>
58
- <% if (props.internalizationPackage?.name === "i18next") { %>
59
- <InternalizationExample />
60
- <% } %>
61
- <Box height={1} marginVertical='l_32' width='80%' />
62
- </Box>
63
- );
64
- <% } else { %>
65
- return (
66
- <View style={styles.container}>
67
- <Text style={styles.title}>Home</Text>
68
- <% if (props.internalizationPackage?.name === "i18next") { %>
69
- <InternalizationExample />
70
- <% } %>
71
- <View style={styles.separator} />
72
- </View>
73
- );
74
- <% } %>
3
+ export default function Home() {
4
+ return <ScreenContent path="screens/home.tsx" title="Home" />;
75
5
  }
76
-
77
- export default Page;
78
-
79
- <% if (props.stylingPackage?.name === 'nativewind') { %>
80
- const styles = {
81
- container: `items-center flex-1 justify-center`,
82
- separator: `h-[1px] my-7 w-4/5 bg-gray-200`,
83
- title: `text-xl font-bold`
84
- };
85
- <% } else if (props.stylingPackage?.name === 'stylesheet') { %>
86
- const styles = StyleSheet.create({
87
- container: {
88
- alignItems: 'center',
89
- flex: 1,
90
- justifyContent: 'center',
91
- },
92
- separator: {
93
- height: 1,
94
- marginVertical: 30,
95
- width: '80%',
96
- },
97
- title: {
98
- fontSize: 20,
99
- fontWeight: 'bold',
100
- }
101
- });
102
- <% } %>
@@ -1,108 +1,20 @@
1
- <% if (props.stylingPackage?.name === "nativewind") { %>
2
- import { Platform, Text, View } from "react-native";
3
- <% } else if (props.stylingPackage?.name === "tamagui") { %>
4
- import { YStack, Paragraph, Separator, Theme } from "tamagui";
5
- import { Platform } from 'react-native'
6
- <% } else if (props.stylingPackage?.name === "restyle") { %>
7
- import { Platform } from 'react-native';
8
- import { Box, Text, makeStyles } from 'theme';
9
- <% } else if (props.stylingPackage?.name === "unistyles") { %>
10
- import { useStyles } from 'react-native-unistyles'
11
- import { Platform, Text, View } from 'react-native';
12
- <% } else { %>
13
- import { Platform, StyleSheet, Text, View } from "react-native";
14
- <% } %>
15
- import { StatusBar } from "expo-status-bar";
1
+ import { ScreenContent } from 'components/ScreenContent';
2
+ import { StatusBar } from 'expo-status-bar';
3
+ import { Platform } from 'react-native';
16
4
 
17
- import EditScreenInfo from "../components/edit-screen-info";
5
+ <% if (props.internalizationPackage?.name === "i18next") { %>
6
+ import { InternalizationExample } from 'components/InternalizationExample';
7
+ <% } %>
18
8
 
19
9
  export default function Modal() {
20
- <% if (props.stylingPackage?.name === "nativewind") { %>
21
- return (
22
- <View className={styles.container}>
23
- <StatusBar style={Platform.OS === "ios" ? "light" : "auto"} />
24
- <Text className={styles.title}>Modal</Text>
25
- <View className={styles.separator} />
26
- <EditScreenInfo path="src/screens/modal.tsx" />
27
- </View>
28
- )
29
- <% } else if (props.stylingPackage?.name === "tamagui") { %>
30
- return (
31
- <Theme name="light">
32
- <YStack flex={1} alignItems="center" justifyContent="center">
33
- <StatusBar style={Platform.OS === "ios" ? "light" : "auto"} />
34
- <Paragraph>Modal</Paragraph>
35
- <Separator />
36
- <EditScreenInfo path="src/screens/modal.tsx" />
37
- </YStack>
38
- </Theme>
39
- );
40
- <% } else if (props.stylingPackage?.name === "restyle") { %>
41
- const styles = useStyles();
42
-
43
- return (
44
- <Box flex={1} alignItems="center" justifyContent="center">
45
- <StatusBar style={Platform.OS === 'ios' ? 'light' : 'auto'} />
46
- <Text variant="title">Modal</Text>
47
- <Box style={styles.separator} />
48
- <EditScreenInfo path="src/screens/modal.tsx" />
49
- </Box>
50
- );
51
- <% } else if (props.stylingPackage?.name === "unistyles") { %>
52
- const { theme } = useStyles()
53
- return (
54
- <View style={theme.components.container}>
55
- <StatusBar style={Platform.OS === 'ios' ? 'light' : 'auto'} />
56
- <Text style={theme.components.title}>Modal</Text>
57
- <View style={theme.components.separator} />
58
- <EditScreenInfo path='src/screens/modal.tsx' />
59
- </View>
60
- );
61
- <% } else { %>
62
- return (
63
- <View style={styles.container}>
64
- <StatusBar style={Platform.OS === "ios" ? "light" : "auto"} />
65
- <Text style={styles.title}>Modal</Text>
66
- <View style={styles.separator} />
67
- <EditScreenInfo path="src/screens/modal.tsx" />
68
- </View>
69
- );
70
- <% } %>
10
+ return (
11
+ <>
12
+ <ScreenContent path="screens/modal.tsx" title="Modal">
13
+ <% if (props.internalizationPackage?.name === "i18next") { %>
14
+ <InternalizationExample />
15
+ <% } %>
16
+ </ScreenContent>
17
+ <StatusBar style={Platform.OS === 'ios' ? 'light' : 'auto'} />
18
+ </>
19
+ );
71
20
  }
72
-
73
- <% if (props.stylingPackage?.name === "nativewind") { %>
74
- const styles = {
75
- container: "items-center flex-1 justify-center",
76
- separator: "h-[1px] my-7 w-4/5 bg-gray-200",
77
- title: "text-xl font-bold"
78
- };
79
- <% } else if (props.stylingPackage?.name === "restyle") { %>
80
- const useStyles = makeStyles((theme) => ({
81
- separator: {
82
- backgroundColor: theme.colors.gray,
83
- height: 1,
84
- marginVertical: theme.spacing.l_32,
85
- opacity: 0.25,
86
- width: '80%',
87
- },
88
- }));
89
- <% } else if (props.stylingPackage?.name === "stylesheet") { %>
90
- const styles = StyleSheet.create({
91
- container: {
92
- alignItems: "center",
93
- flex: 1,
94
- justifyContent: "center"
95
- },
96
- separator: {
97
- backgroundColor: "gray",
98
- height: 1,
99
- marginVertical: 30,
100
- opacity: 0.25,
101
- width: "80%",
102
- },
103
- title: {
104
- fontSize: 20,
105
- fontWeight: "bold"
106
- }
107
- });
108
- <% } %>