create-expo-stack 2.1.18 → 2.1.20
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.
- package/build/commands/create-expo-stack.js +11 -3
- package/build/templates/packages/expo-router/stack/app/_layout.tsx.ejs +3 -3
- package/build/templates/packages/expo-router/stack/app/details.tsx.ejs +21 -22
- package/build/templates/packages/expo-router/stack/app/index.tsx.ejs +36 -39
- package/build/templates/packages/tamagui/tamagui.config.ts.ejs +57 -51
- package/build/types/types.d.ts +1 -1
- package/build/types.js +2 -2
- package/package.json +1 -1
|
@@ -56,6 +56,10 @@ var command = {
|
|
|
56
56
|
_c.label = 1;
|
|
57
57
|
case 1:
|
|
58
58
|
_c.trys.push([1, 10, , 11]);
|
|
59
|
+
// Validation: check if the user passed in the tabs option without passing in either expo router or react navigation. If so, throw an error
|
|
60
|
+
if (options.tabs && !options.reactNavigation && !options['react-navigation'] && !options.reactnavigation && !options.expoRouter && !options['expo-router'] && !options.exporouter) {
|
|
61
|
+
throw new Error("You must pass in either --react-navigation or --expo-router if you want to use the --tabs option");
|
|
62
|
+
}
|
|
59
63
|
return [4 /*yield*/, (0, utilities_1.renderTitle)(toolbox)];
|
|
60
64
|
case 2:
|
|
61
65
|
_c.sent();
|
|
@@ -86,7 +90,7 @@ var command = {
|
|
|
86
90
|
case 7:
|
|
87
91
|
// @internal Update the cliResults with the options passed in via the command
|
|
88
92
|
// This is used for testing purposes only
|
|
89
|
-
if (options.reactNavigation) {
|
|
93
|
+
if (options.reactNavigation || options['react-navigation'] || options.reactnavigation) {
|
|
90
94
|
// Add react-navigation package
|
|
91
95
|
cliResults.packages.push({
|
|
92
96
|
name: "react-navigation", type: 'navigation', options: {
|
|
@@ -94,7 +98,7 @@ var command = {
|
|
|
94
98
|
}
|
|
95
99
|
});
|
|
96
100
|
}
|
|
97
|
-
if (options.expoRouter) {
|
|
101
|
+
if (options.expoRouter || options['expo-router'] || options.exporouter) {
|
|
98
102
|
// Add expo-router package
|
|
99
103
|
cliResults.packages.push({
|
|
100
104
|
name: "expo-router", type: 'navigation', options: {
|
|
@@ -110,6 +114,10 @@ var command = {
|
|
|
110
114
|
// Add tamagui package
|
|
111
115
|
cliResults.packages.push({ name: "tamagui", type: 'styling', options: {} });
|
|
112
116
|
}
|
|
117
|
+
if (options.stylesheet || options.stylesheets) {
|
|
118
|
+
// Add stylesheet package
|
|
119
|
+
cliResults.packages.push({ name: "stylesheet", type: 'styling', options: {} });
|
|
120
|
+
}
|
|
113
121
|
// Destructure the results but set the projectName if the first param is passed in
|
|
114
122
|
if (first) {
|
|
115
123
|
cliResults.projectName = first;
|
|
@@ -143,4 +151,4 @@ var command = {
|
|
|
143
151
|
}); },
|
|
144
152
|
};
|
|
145
153
|
exports.default = command;
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7QUFFNUIsMENBUXNCO0FBQ3RCLDBDQUE4QztBQUM5QyxrQ0FBeUQ7QUFFekQsSUFBTSxPQUFPLEdBQW1CO0lBQzlCLElBQUksRUFBRSxtQkFBbUI7SUFDekIsV0FBVyxFQUFFLDJCQUEyQjtJQUN4QyxHQUFHLEVBQUUsVUFBTyxPQUFPOzs7OztvQkFFZixLQUVFLE9BQU8sV0FGcUIsRUFBaEIsS0FBSyxXQUFBLEVBQUUsT0FBTyxhQUFBLEVBQzVCLEtBQ0UsT0FBTyxNQUQwQixFQUExQixJQUFJLFVBQUEsRUFBRSxTQUFTLGVBQUEsRUFBRSxPQUFPLGFBQUEsQ0FDdkI7b0JBQ1osSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUU7d0JBQzdCLElBQUEsb0JBQVEsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFBO3dCQUVsQyxzQkFBTztxQkFDUjs7OztvQkFFQywySUFBMkk7b0JBQzNJLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTt3QkFDakwsTUFBTSxJQUFJLEtBQUssQ0FBQyxrR0FBa0csQ0FBQyxDQUFBO3FCQUNwSDtvQkFFRCxxQkFBTSxJQUFBLHVCQUFXLEVBQUMs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
|
|
@@ -4,7 +4,7 @@ import { Feather } from "@expo/vector-icons";
|
|
|
4
4
|
import { Text, TouchableOpacity, View } from "react-native";
|
|
5
5
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
6
6
|
import React, { useEffect } from "react";
|
|
7
|
-
import { TamaguiProvider, Button } from "tamagui";
|
|
7
|
+
import { TamaguiProvider, Button, Text } from "tamagui";
|
|
8
8
|
import { useFonts } from "expo-font";
|
|
9
9
|
import { Stack, useRouter, SplashScreen } from "expo-router";
|
|
10
10
|
|
|
@@ -42,7 +42,7 @@ export default function Layout() {
|
|
|
42
42
|
if (!loaded) return null;
|
|
43
43
|
|
|
44
44
|
const BackButton = () => (
|
|
45
|
-
<Button onPress={router.back} icon={<Feather name="chevron-left" size={16} color="#007AFF" />}>Back</Button>
|
|
45
|
+
<Button unstyled flexDirection="row" backgroundColor="transparent" paddingLeft={0} pressStyle={{ opacity: 0.5 }} onPress={router.back} icon={<Feather name="chevron-left" size={16} color="#007AFF" />}><Text color="#007AFF">Back</Text></Button>
|
|
46
46
|
)
|
|
47
47
|
<% } else { %>
|
|
48
48
|
const BackButton = () => (
|
|
@@ -58,7 +58,7 @@ export default function Layout() {
|
|
|
58
58
|
return (
|
|
59
59
|
<% if (props.stylingPackage?.name === "tamagui") { %>
|
|
60
60
|
<TamaguiProvider config={config}>
|
|
61
|
-
|
|
61
|
+
<% } %>
|
|
62
62
|
<Stack>
|
|
63
63
|
<Stack.Screen name="index" options={{ title: "Overview" }} />
|
|
64
64
|
<Stack.Screen name="details"
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
2
2
|
import { View, Text } from "react-native";
|
|
3
3
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
4
|
-
import { YStack
|
|
4
|
+
import { YStack } from "tamagui";
|
|
5
|
+
import { Container, Main, Subtitle, Title } from "../tamagui.config";
|
|
5
6
|
<% } else { %>
|
|
6
7
|
import { StyleSheet, View, Text } from "react-native";
|
|
7
8
|
<% } %>
|
|
@@ -9,34 +10,32 @@ import { useLocalSearchParams } from "expo-router";
|
|
|
9
10
|
|
|
10
11
|
export default function Details() {
|
|
11
12
|
const { name } = useLocalSearchParams();
|
|
13
|
+
return (
|
|
12
14
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
13
|
-
|
|
14
|
-
<View className={styles.
|
|
15
|
-
<
|
|
16
|
-
|
|
17
|
-
<Text className={styles.subtitle}>Showing details for user {name}.</Text>
|
|
18
|
-
</View>
|
|
15
|
+
<View className={styles.container}>
|
|
16
|
+
<View className={styles.main}>
|
|
17
|
+
<Text className={styles.title}>Details</Text>
|
|
18
|
+
<Text className={styles.subtitle}>Showing details for user {name}.</Text>
|
|
19
19
|
</View>
|
|
20
|
-
|
|
20
|
+
</View>
|
|
21
21
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
22
|
-
|
|
23
|
-
<
|
|
24
|
-
<YStack
|
|
25
|
-
<
|
|
26
|
-
<
|
|
22
|
+
<Container>
|
|
23
|
+
<Main>
|
|
24
|
+
<YStack>
|
|
25
|
+
<Title>Details</Title>
|
|
26
|
+
<Subtitle>Showing details for user {name}.</Subtitle>
|
|
27
27
|
</YStack>
|
|
28
|
-
</
|
|
29
|
-
|
|
28
|
+
</Main>
|
|
29
|
+
</Container>
|
|
30
30
|
<% } else { %>
|
|
31
|
-
|
|
32
|
-
<View style={styles.
|
|
33
|
-
<
|
|
34
|
-
|
|
35
|
-
<Text style={styles.subtitle}>Showing details for user {name}.</Text>
|
|
36
|
-
</View>
|
|
31
|
+
<View style={styles.container}>
|
|
32
|
+
<View style={styles.main}>
|
|
33
|
+
<Text style={styles.title}>Details</Text>
|
|
34
|
+
<Text style={styles.subtitle}>Showing details for user {name}.</Text>
|
|
37
35
|
</View>
|
|
38
|
-
|
|
36
|
+
</View>
|
|
39
37
|
<% } %>
|
|
38
|
+
);
|
|
40
39
|
}
|
|
41
40
|
|
|
42
41
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
@@ -1,60 +1,57 @@
|
|
|
1
1
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
2
2
|
import { Text, TouchableOpacity, View } from "react-native";
|
|
3
3
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
4
|
-
import { YStack
|
|
4
|
+
import { YStack } from "tamagui";
|
|
5
|
+
import { Container, Main, Title, Subtitle, Button, ButtonText } from '../tamagui.config';
|
|
5
6
|
<% } else { %>
|
|
6
7
|
import { StyleSheet, Text, TouchableOpacity, View } from "react-native";
|
|
7
8
|
<% } %>
|
|
8
9
|
import { Link } from "expo-router";
|
|
9
10
|
|
|
10
11
|
export default function Page() {
|
|
12
|
+
return (
|
|
11
13
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
12
|
-
|
|
13
|
-
<View className={styles.
|
|
14
|
-
<View
|
|
15
|
-
<
|
|
16
|
-
|
|
17
|
-
<Text className={styles.subtitle}>This is the first page of your app.</Text>
|
|
18
|
-
</View>
|
|
19
|
-
<Link href={{ pathname: "/details", params: { name: "Dan" } }} asChild>
|
|
20
|
-
<TouchableOpacity className={styles.button} >
|
|
21
|
-
<Text className={styles.buttonText}>Show Details</Text>
|
|
22
|
-
</TouchableOpacity>
|
|
23
|
-
</Link>
|
|
14
|
+
<View className={styles.container}>
|
|
15
|
+
<View className={styles.main}>
|
|
16
|
+
<View>
|
|
17
|
+
<Text className={styles.title}>Hello World</Text>
|
|
18
|
+
<Text className={styles.subtitle}>This is the first page of your app.</Text>
|
|
24
19
|
</View>
|
|
20
|
+
<Link href={{ pathname: "/details", params: { name: "Dan" } }} asChild>
|
|
21
|
+
<TouchableOpacity className={styles.button} >
|
|
22
|
+
<Text className={styles.buttonText}>Show Details</Text>
|
|
23
|
+
</TouchableOpacity>
|
|
24
|
+
</Link>
|
|
25
25
|
</View>
|
|
26
|
-
|
|
26
|
+
</View>
|
|
27
27
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
28
|
-
|
|
29
|
-
<
|
|
30
|
-
<YStack
|
|
31
|
-
<
|
|
32
|
-
|
|
33
|
-
<Paragraph>This is the first page of your app.</Paragraph>
|
|
34
|
-
</YStack>
|
|
35
|
-
<Link href={{ pathname: "/details", params: { name: "Dan" } }} asChild>
|
|
36
|
-
<Button>Show Details</Button>
|
|
37
|
-
</Link>
|
|
28
|
+
<Container>
|
|
29
|
+
<Main>
|
|
30
|
+
<YStack>
|
|
31
|
+
<Title>Hello World</Title>
|
|
32
|
+
<Subtitle>This is the first page of your app.</Subtitle>
|
|
38
33
|
</YStack>
|
|
39
|
-
|
|
40
|
-
|
|
34
|
+
<Link href={{ pathname: "/details", params: { name: "Dan" } }} asChild>
|
|
35
|
+
<Button><ButtonText>Show Details</ButtonText></Button>
|
|
36
|
+
</Link>
|
|
37
|
+
</Main>
|
|
38
|
+
</Container>
|
|
41
39
|
<% } else { %>
|
|
42
|
-
|
|
43
|
-
<View style={styles.
|
|
44
|
-
<View
|
|
45
|
-
<
|
|
46
|
-
|
|
47
|
-
<Text style={styles.subtitle}>This is the first page of your app.</Text>
|
|
48
|
-
</View>
|
|
49
|
-
<Link href={{ pathname: "/details", params: { name: "Dan" } }} asChild>
|
|
50
|
-
<TouchableOpacity style={styles.button} >
|
|
51
|
-
<Text style={styles.buttonText}>Show Details</Text>
|
|
52
|
-
</TouchableOpacity>
|
|
53
|
-
</Link>
|
|
40
|
+
<View style={styles.container}>
|
|
41
|
+
<View style={styles.main}>
|
|
42
|
+
<View>
|
|
43
|
+
<Text style={styles.title}>Hello World</Text>
|
|
44
|
+
<Text style={styles.subtitle}>This is the first page of your app.</Text>
|
|
54
45
|
</View>
|
|
46
|
+
<Link href={{ pathname: "/details", params: { name: "Dan" } }} asChild>
|
|
47
|
+
<TouchableOpacity style={styles.button} >
|
|
48
|
+
<Text style={styles.buttonText}>Show Details</Text>
|
|
49
|
+
</TouchableOpacity>
|
|
50
|
+
</Link>
|
|
55
51
|
</View>
|
|
56
|
-
|
|
52
|
+
</View>
|
|
57
53
|
<% } %>
|
|
54
|
+
);
|
|
58
55
|
}
|
|
59
56
|
|
|
60
57
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createInterFont } from
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import { createAnimations } from "@tamagui/animations-react-native";
|
|
2
|
+
import { createInterFont } from "@tamagui/font-inter";
|
|
3
|
+
import { createMedia } from "@tamagui/react-native-media-driver";
|
|
4
|
+
import { shorthands } from "@tamagui/shorthands";
|
|
5
|
+
import { themes, tokens } from "@tamagui/themes";
|
|
6
|
+
import { createTamagui, styled, Text, YStack } from "tamagui";
|
|
7
7
|
|
|
8
8
|
export const animations = createAnimations({
|
|
9
9
|
bouncy: {
|
|
@@ -23,54 +23,60 @@ export const animations = createAnimations({
|
|
|
23
23
|
mass: 1.2,
|
|
24
24
|
stiffness: 250,
|
|
25
25
|
},
|
|
26
|
-
})
|
|
26
|
+
});
|
|
27
27
|
|
|
28
|
-
const headingFont = createInterFont(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
28
|
+
const headingFont = createInterFont();
|
|
29
|
+
|
|
30
|
+
const bodyFont = createInterFont();
|
|
31
|
+
|
|
32
|
+
export const Container = styled(YStack, {
|
|
33
|
+
flex: 1,
|
|
34
|
+
padding: 24,
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
export const Main = styled(YStack, {
|
|
38
|
+
flex: 1,
|
|
39
|
+
maxWidth: 960,
|
|
40
|
+
justifyContent: 'space-between',
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
export const Title = styled(Text, {
|
|
44
|
+
fontSize: 64,
|
|
45
|
+
fontWeight: 'bold',
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
export const Subtitle = styled(Text, {
|
|
49
|
+
color: '#38434D',
|
|
50
|
+
fontSize: 36,
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
export const Button = styled(YStack, {
|
|
54
|
+
alignItems: 'center',
|
|
55
|
+
backgroundColor: '#6366F1',
|
|
56
|
+
borderRadius: 24,
|
|
57
|
+
justifyContent: 'center',
|
|
58
|
+
padding: 16,
|
|
59
|
+
shadowColor: '#000',
|
|
60
|
+
shadowOffset: {
|
|
61
|
+
height: 2,
|
|
62
|
+
width: 0,
|
|
54
63
|
},
|
|
55
|
-
|
|
56
|
-
|
|
64
|
+
shadowOpacity: 0.25,
|
|
65
|
+
shadowRadius: 3.84,
|
|
66
|
+
hoverStyle: {
|
|
67
|
+
backgroundColor: '#5a5fcf',
|
|
57
68
|
},
|
|
58
|
-
})
|
|
69
|
+
});
|
|
59
70
|
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
{
|
|
67
|
-
sizeSize: (size) => Math.round(size * 1.1),
|
|
68
|
-
sizeLineHeight: (size) => Math.round(size * 1.1 + (size > 20 ? 10 : 10)),
|
|
69
|
-
}
|
|
70
|
-
)
|
|
71
|
+
export const ButtonText = styled(Text, {
|
|
72
|
+
color: '#FFFFFF',
|
|
73
|
+
fontSize: 16,
|
|
74
|
+
fontWeight: '600',
|
|
75
|
+
textAlign: 'center',
|
|
76
|
+
});
|
|
71
77
|
|
|
72
78
|
const config = createTamagui({
|
|
73
|
-
defaultFont:
|
|
79
|
+
defaultFont: "body",
|
|
74
80
|
animations,
|
|
75
81
|
shouldAddPrefersColorThemes: true,
|
|
76
82
|
themeClassNameOnRoot: true,
|
|
@@ -94,9 +100,9 @@ const config = createTamagui({
|
|
|
94
100
|
gtLg: { minWidth: 1280 + 1 },
|
|
95
101
|
short: { maxHeight: 820 },
|
|
96
102
|
tall: { minHeight: 820 },
|
|
97
|
-
hoverNone: { hover:
|
|
98
|
-
pointerCoarse: { pointer:
|
|
103
|
+
hoverNone: { hover: "none" },
|
|
104
|
+
pointerCoarse: { pointer: "coarse" },
|
|
99
105
|
}),
|
|
100
|
-
})
|
|
106
|
+
});
|
|
101
107
|
|
|
102
108
|
export default config;
|
package/build/types/types.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export interface CliFlags {
|
|
|
3
3
|
noInstall: boolean;
|
|
4
4
|
importAlias: string;
|
|
5
5
|
}
|
|
6
|
-
export declare const availablePackages: readonly ["nativewind", "tamagui", "react-navigation", "expo-router", "stylesheet"];
|
|
6
|
+
export declare const availablePackages: readonly ["nativewind", "tamagui", "react-navigation", "reactNavigation", "reactnavigation", "expo-router", "expoRouter", "stylesheet"];
|
|
7
7
|
export type NavigationTypes = "stack" | "tabs" | undefined;
|
|
8
8
|
export type AvailablePackages = {
|
|
9
9
|
name: (typeof availablePackages)[number];
|
package/build/types.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.availablePackages = void 0;
|
|
4
|
-
exports.availablePackages = ["nativewind", "tamagui", "react-navigation", "expo-router", "stylesheet"];
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
exports.availablePackages = ["nativewind", "tamagui", "react-navigation", "reactNavigation", "reactnavigation", "expo-router", "expoRouter", "stylesheet"];
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBT2EsUUFBQSxpQkFBaUIsR0FBRyxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQVUsQ0FBQyJ9
|