create-expo-stack 2.1.24 → 2.2.0
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 +27 -12
- package/build/constants.js +1 -1
- package/build/templates/base/App.tsx.ejs +44 -44
- package/build/templates/base/package.json.ejs +11 -0
- package/build/templates/packages/expo-router/stack/app/index.tsx.ejs +1 -0
- package/build/templates/packages/expo-router/tabs/app/(tabs)/index.tsx.ejs +42 -40
- package/build/templates/packages/expo-router/tabs/app/(tabs)/two.tsx.ejs +40 -38
- package/build/templates/packages/expo-router/tabs/app/_layout.tsx.ejs +33 -33
- package/build/templates/packages/expo-router/tabs/app/modal.tsx.ejs +44 -42
- package/build/templates/packages/firebase/.env +8 -0
- package/build/templates/packages/firebase/metro.config.js +6 -0
- package/build/templates/packages/firebase/utils/firebase.ts.ejs +26 -0
- package/build/templates/packages/react-navigation/navigation/index.tsx.ejs +2 -1
- package/build/templates/packages/react-navigation/screens/modal.tsx.ejs +57 -55
- package/build/templates/packages/react-navigation/screens/one.tsx.ejs +53 -51
- package/build/templates/packages/react-navigation/screens/two.tsx.ejs +53 -51
- package/build/templates/packages/supabase/.env +2 -0
- package/build/templates/packages/supabase/utils/supabase.ts.ejs +15 -0
- package/build/templates/packages/tamagui/tamagui.config.ts.ejs +94 -88
- package/build/types/types.d.ts +2 -2
- package/build/types/utilities/configureProjectFiles.d.ts +1 -1
- package/build/types/utilities/generateProjectFiles.d.ts +1 -1
- package/build/types.js +6 -4
- package/build/utilities/configureProjectFiles.js +19 -2
- package/build/utilities/generateProjectFiles.js +13 -5
- package/build/utilities/printOutput.js +43 -9
- package/build/utilities/runCLI.js +25 -5
- package/build/utilities/showHelp.js +21 -4
- package/package.json +1 -1
|
@@ -44,7 +44,7 @@ var command = {
|
|
|
44
44
|
name: 'create-expo-stack',
|
|
45
45
|
description: 'Create a new Expo project',
|
|
46
46
|
run: function (toolbox) { return __awaiter(void 0, void 0, void 0, function () {
|
|
47
|
-
var _a, first, options, _b, info, highlight, warning, cliResults, useDefault, skipCLI, useBlankTypescript, optionsPassedIn, packages, navigationPackage, stylingPackage, files, formattedFiles, error_1;
|
|
47
|
+
var _a, first, options, _b, info, highlight, warning, cliResults, useDefault, skipCLI, useBlankTypescript, optionsPassedIn, packages, authenticationPackage, navigationPackage, stylingPackage, files, formattedFiles, error_1;
|
|
48
48
|
return __generator(this, function (_c) {
|
|
49
49
|
switch (_c.label) {
|
|
50
50
|
case 0:
|
|
@@ -100,8 +100,8 @@ var command = {
|
|
|
100
100
|
cliResults = _c.sent();
|
|
101
101
|
_c.label = 7;
|
|
102
102
|
case 7:
|
|
103
|
-
//
|
|
104
|
-
//
|
|
103
|
+
// Update the cliResults with the options passed in via the command
|
|
104
|
+
// Navigation packages
|
|
105
105
|
if (options.reactNavigation ||
|
|
106
106
|
options['react-navigation'] ||
|
|
107
107
|
options.reactnavigation) {
|
|
@@ -126,28 +126,41 @@ var command = {
|
|
|
126
126
|
},
|
|
127
127
|
});
|
|
128
128
|
}
|
|
129
|
+
// Styling packages
|
|
129
130
|
if (options.nativewind) {
|
|
130
131
|
// Add nativewind package
|
|
131
132
|
cliResults.packages.push({
|
|
132
133
|
name: 'nativewind',
|
|
133
134
|
type: 'styling',
|
|
134
|
-
options: {},
|
|
135
135
|
});
|
|
136
136
|
}
|
|
137
|
-
if (options.tamagui) {
|
|
137
|
+
else if (options.tamagui) {
|
|
138
138
|
// Add tamagui package
|
|
139
139
|
cliResults.packages.push({
|
|
140
140
|
name: 'tamagui',
|
|
141
141
|
type: 'styling',
|
|
142
|
-
options: {},
|
|
143
142
|
});
|
|
144
143
|
}
|
|
145
|
-
|
|
144
|
+
else {
|
|
146
145
|
// Add stylesheet package
|
|
147
146
|
cliResults.packages.push({
|
|
148
147
|
name: 'stylesheet',
|
|
149
148
|
type: 'styling',
|
|
150
|
-
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
// Authentication packages
|
|
152
|
+
if (options.supabase) {
|
|
153
|
+
// Add supabase package
|
|
154
|
+
cliResults.packages.push({
|
|
155
|
+
name: 'supabase',
|
|
156
|
+
type: 'authentication',
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
if (options.firebase) {
|
|
160
|
+
// Add firebase package
|
|
161
|
+
cliResults.packages.push({
|
|
162
|
+
name: 'firebase',
|
|
163
|
+
type: 'authentication',
|
|
151
164
|
});
|
|
152
165
|
}
|
|
153
166
|
// Destructure the results but set the projectName if the first param is passed in
|
|
@@ -155,15 +168,17 @@ var command = {
|
|
|
155
168
|
cliResults.projectName = first;
|
|
156
169
|
}
|
|
157
170
|
// By this point, all cliResults should be set
|
|
158
|
-
info('
|
|
171
|
+
info('');
|
|
172
|
+
highlight('Your project configuration:');
|
|
159
173
|
info(util.inspect(cliResults, false, null, true /* enable colors */));
|
|
160
174
|
packages = cliResults.packages;
|
|
175
|
+
authenticationPackage = packages.find(function (p) { return p.type === 'authentication'; }) || undefined;
|
|
161
176
|
navigationPackage = packages.find(function (p) { return p.type === 'navigation'; }) || undefined;
|
|
162
177
|
stylingPackage = packages.find(function (p) { return p.type === 'styling'; });
|
|
163
178
|
files = [];
|
|
164
|
-
files = (0, utilities_1.configureProjectFiles)(files, navigationPackage, stylingPackage, toolbox);
|
|
179
|
+
files = (0, utilities_1.configureProjectFiles)(authenticationPackage, files, navigationPackage, stylingPackage, toolbox);
|
|
165
180
|
formattedFiles = [];
|
|
166
|
-
formattedFiles = (0, utilities_1.generateProjectFiles)(cliResults, files, formattedFiles, navigationPackage,
|
|
181
|
+
formattedFiles = (0, utilities_1.generateProjectFiles)(authenticationPackage, cliResults, files, formattedFiles, navigationPackage, stylingPackage, toolbox);
|
|
167
182
|
return [4 /*yield*/, (0, utilities_1.printOutput)(cliResults, formattedFiles, toolbox)];
|
|
168
183
|
case 8:
|
|
169
184
|
_c.sent();
|
|
@@ -183,4 +198,4 @@ var command = {
|
|
|
183
198
|
}); },
|
|
184
199
|
};
|
|
185
200
|
exports.default = command;
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7QUFFNUIsMENBUXFCO0FBQ3JCLDBDQUE2QztBQUM3QyxrQ0FBd0Q7QUFFeEQsSUFBTSxPQUFPLEdBQW1CO0lBQy9CLElBQUksRUFBRSxtQkFBbUI7SUFDekIsV0FBVyxFQUFFLDJCQUEyQjtJQUN4QyxHQUFHLEVBQUUsVUFBTyxPQUFPOzs7OztvQkFFakIsS0FFRyxPQUFPLFdBRm9CLEVBQWhCLEtBQUssV0FBQSxFQUFFLE9BQU8sYUFBQSxFQUM1QixLQUNHLE9BQU8sTUFEeUIsRUFBMUIsSUFBSSxVQUFBLEVBQUUsU0FBUyxlQUFBLEVBQUUsT0FBTyxhQUFBLENBQ3ZCO29CQUNYLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFO3dCQUM5QixJQUFBLG9CQUFRLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQTt3QkFFbEMsc0JBQU07cUJBQ047Ozs7b0JBRUEsMklBQTJJO29CQUMzSSxJQUNDLE9BQU8sQ0FBQyxJQUFJO3dCQUNaLENBQUMsT0FBTyxDQUFDLGVBQWU7d0JBQ3hCLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDO3dCQUM1QixDQUFDLE9BQU8sQ0FBQyxlQUFlO3dCQUN4QixDQUFDLE9BQU8sQ0FBQyxVQUFVO3dCQUNuQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7d0JBQ3ZCLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFDbEI7d0JBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDZCxrR0FBa0csQ0FDbEcsQ0FBQTtxQkFDRDtvQkFFRCxxQkFBTSxJQUFB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
|
package/build/constants.js
CHANGED
|
@@ -12,4 +12,4 @@ exports.defaultOptions = {
|
|
|
12
12
|
importAlias: '~/',
|
|
13
13
|
},
|
|
14
14
|
};
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFYSxRQUFBLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQTtBQUVoQyxRQUFBLGdCQUFnQixHQUFHLGFBQWEsQ0FBQTtBQUVoQyxRQUFBLGNBQWMsR0FBZTtJQUN6QyxXQUFXLEVBQUUsd0JBQWdCO0lBQzdCLFFBQVEsRUFBRSxFQUFFO0lBQ1osS0FBSyxFQUFFO1FBQ04sS0FBSyxFQUFFLEtBQUs7UUFDWixTQUFTLEVBQUUsS0FBSztRQUNoQixXQUFXLEVBQUUsSUFBSTtLQUNqQjtDQUNELENBQUEifQ==
|
|
@@ -1,64 +1,64 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
3
|
<% if (props.stylingPackage?.name === "nativewind") {%>
|
|
4
|
-
|
|
4
|
+
import { Text, View } from 'react-native';
|
|
5
5
|
<% } else if (props.stylingPackage?.name === "tamagui") {%>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
import { View } from 'react-native';
|
|
7
|
+
import { TamaguiProvider, Text, styled } from 'tamagui';
|
|
8
|
+
import config from './tamagui.config'
|
|
9
9
|
<% } else {%>
|
|
10
|
-
|
|
10
|
+
import { StyleSheet, Text, View } from 'react-native';
|
|
11
11
|
<% } %>
|
|
12
12
|
|
|
13
13
|
import { StatusBar } from 'expo-status-bar';
|
|
14
14
|
|
|
15
15
|
<% if (props.stylingPackage?.name === "nativewind") {%>
|
|
16
16
|
export default function App() {
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
return (
|
|
18
|
+
<View className={styles.container} %>>
|
|
19
19
|
<Text>Open up App.tsx to start working on your app!</Text>
|
|
20
20
|
<StatusBar style="auto" />
|
|
21
|
-
</View>
|
|
21
|
+
</View >
|
|
22
22
|
);
|
|
23
|
-
|
|
23
|
+
}
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
const styles = {
|
|
26
|
+
container: 'flex flex-1 items-center justify-center bg-white',
|
|
27
|
+
};
|
|
28
28
|
<% } else if (props.stylingPackage?.name === "tamagui") {%>
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
const MyView = styled(View, {
|
|
30
|
+
name: "MyView",
|
|
31
|
+
flex: 1,
|
|
32
|
+
alignItems: 'center',
|
|
33
|
+
justifyContent: 'center',
|
|
34
|
+
});
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
36
|
+
export default function App() {
|
|
37
|
+
return (
|
|
38
|
+
<TamaguiProvider config={config}>
|
|
39
|
+
<MyView %>>
|
|
40
|
+
<Text>Open up App.tsx to start working on your app!</Text>
|
|
41
|
+
<StatusBar style="auto" />
|
|
42
|
+
</MyView>
|
|
43
|
+
</TamaguiProvider >
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
46
|
<% } else {%>
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
47
|
+
export default function App() {
|
|
48
|
+
return (
|
|
49
|
+
<View style={styles.container}>
|
|
50
|
+
<Text>Open up App.tsx to start working on your app!</Text>
|
|
51
|
+
<StatusBar style="auto" />
|
|
52
|
+
</View >
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
56
|
+
const styles = StyleSheet.create({
|
|
57
|
+
container: {
|
|
58
|
+
flex: 1,
|
|
59
|
+
backgroundColor: '#fff',
|
|
60
|
+
alignItems: 'center',
|
|
61
|
+
justifyContent: 'center',
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
64
|
<% } %>
|
|
@@ -51,6 +51,17 @@
|
|
|
51
51
|
"react-native-web": "~0.19.6",
|
|
52
52
|
<% } %>
|
|
53
53
|
|
|
54
|
+
<% if (props.authenticationPackage?.name === "supabase") { %>
|
|
55
|
+
"@react-native-async-storage/async-storage": "1.18.2",
|
|
56
|
+
"@supabase/supabase-js": "^2.38.4",
|
|
57
|
+
"react-native-url-polyfill": "^2.0.0",
|
|
58
|
+
<% } %>
|
|
59
|
+
|
|
60
|
+
<% if (props.authenticationPackage?.name === "firebase") { %>
|
|
61
|
+
"firebase": "^10.5.2",
|
|
62
|
+
"react-native-url-polyfill": "^2.0.0",
|
|
63
|
+
<% } %>
|
|
64
|
+
|
|
54
65
|
"expo": "~49.0.11",
|
|
55
66
|
"expo-status-bar": "~1.6.0",
|
|
56
67
|
"react": "18.2.0",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
2
2
|
import { Text, View } from "react-native";
|
|
3
3
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
4
|
-
import { YStack, H2, Separator } from "tamagui";
|
|
4
|
+
import { YStack, H2, Separator, Theme } from "tamagui";
|
|
5
5
|
<% } else { %>
|
|
6
6
|
import { StyleSheet, Text, View } from "react-native";
|
|
7
7
|
<% } %>
|
|
@@ -11,52 +11,54 @@ import EditScreenInfo from "../../components/edit-screen-info";
|
|
|
11
11
|
export default function TabOneScreen() {
|
|
12
12
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
13
13
|
return (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
<View className={styles.container}>
|
|
15
|
+
<Text className={styles.title}>Tab One</Text>
|
|
16
|
+
<View className={styles.separator} />
|
|
17
|
+
<EditScreenInfo path="app/(tabs)/index.tsx" />
|
|
18
|
+
</View>
|
|
19
|
+
);
|
|
20
|
+
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
21
21
|
return (
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
<Theme name="light">
|
|
23
|
+
<YStack flex={1} alignItems="center" justifyContent="center">
|
|
24
|
+
<H2>Tab One</H2>
|
|
25
|
+
<Separator />
|
|
26
|
+
<EditScreenInfo path="app/(tabs)/index.tsx" />
|
|
27
|
+
</YStack>
|
|
28
|
+
</Theme>
|
|
29
|
+
);
|
|
30
|
+
<% } else { %>
|
|
29
31
|
return (
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
<View style={styles.container}>
|
|
33
|
+
<Text style={styles.title}>Tab One</Text>
|
|
34
|
+
<View style={styles.separator} />
|
|
35
|
+
<EditScreenInfo path="app/(tabs)/index.tsx" />
|
|
36
|
+
</View>
|
|
37
|
+
);
|
|
36
38
|
<% } %>
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
40
42
|
const styles = {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
container: `items-center flex-1 justify-center`,
|
|
44
|
+
separator: `h-[1px] my-7 w-4/5 bg-gray-200`,
|
|
45
|
+
title: `text-xl font-bold`
|
|
46
|
+
};
|
|
45
47
|
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
46
48
|
const styles = StyleSheet.create({
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
49
|
+
container: {
|
|
50
|
+
alignItems: "center",
|
|
51
|
+
flex: 1,
|
|
52
|
+
justifyContent: "center",
|
|
53
|
+
},
|
|
54
|
+
separator: {
|
|
55
|
+
height: 1,
|
|
56
|
+
marginVertical: 30,
|
|
57
|
+
width: "80%",
|
|
58
|
+
},
|
|
59
|
+
title: {
|
|
60
|
+
fontSize: 20,
|
|
61
|
+
fontWeight: "bold",
|
|
62
|
+
}
|
|
63
|
+
});
|
|
62
64
|
<% } %>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
2
2
|
import { Text, View } from "react-native";
|
|
3
3
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
4
|
-
import { YStack, H2, Separator } from "tamagui";
|
|
4
|
+
import { YStack, H2, Separator, Theme } from "tamagui";
|
|
5
5
|
<% } else { %>
|
|
6
6
|
import { StyleSheet, Text, View } from "react-native";
|
|
7
7
|
<% } %>
|
|
@@ -11,52 +11,54 @@ import EditScreenInfo from "../../components/edit-screen-info";
|
|
|
11
11
|
export default function TabTwoScreen() {
|
|
12
12
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
13
13
|
return (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
<View className={styles.container}>
|
|
15
|
+
<Text className={styles.title}>Tab Two</Text>
|
|
16
|
+
<View className={styles.separator} />
|
|
17
|
+
<EditScreenInfo path="app/(tabs)/index.tsx" />
|
|
18
|
+
</View>
|
|
19
|
+
);
|
|
20
20
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
21
21
|
return (
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
<Theme name="light">
|
|
23
|
+
<YStack flex={1} alignItems="center" justifyContent="center">
|
|
24
|
+
<H2>Tab Two</H2>
|
|
25
|
+
<Separator />
|
|
26
|
+
<EditScreenInfo path="app/(tabs)/index.tsx" />
|
|
27
|
+
</YStack>
|
|
28
|
+
</Theme>
|
|
29
|
+
);
|
|
28
30
|
<% } else { %>
|
|
29
31
|
return (
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
<View style={styles.container}>
|
|
33
|
+
<Text style={styles.title}>Tab Two</Text>
|
|
34
|
+
<View style={styles.separator} />
|
|
35
|
+
<EditScreenInfo path="app/(tabs)/two.tsx" />
|
|
36
|
+
</View>
|
|
37
|
+
);
|
|
36
38
|
<% } %>
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
40
42
|
const styles = {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
container: `items-center flex-1 justify-center`,
|
|
44
|
+
separator: `h-[1px] my-7 w-4/5 bg-gray-200`,
|
|
45
|
+
title: `text-xl font-bold`
|
|
46
|
+
};
|
|
45
47
|
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
46
48
|
const styles = StyleSheet.create({
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
49
|
+
container: {
|
|
50
|
+
alignItems: "center",
|
|
51
|
+
flex: 1,
|
|
52
|
+
justifyContent: "center",
|
|
53
|
+
},
|
|
54
|
+
separator: {
|
|
55
|
+
height: 1,
|
|
56
|
+
marginVertical: 30,
|
|
57
|
+
width: "80%",
|
|
58
|
+
},
|
|
59
|
+
title: {
|
|
60
|
+
fontSize: 20,
|
|
61
|
+
fontWeight: "bold",
|
|
62
|
+
}
|
|
63
|
+
});
|
|
62
64
|
<% } %>
|
|
@@ -1,48 +1,48 @@
|
|
|
1
1
|
import { Stack } from "expo-router";
|
|
2
2
|
<% if (props.stylingPackage?.name === "tamagui") { %>
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
import React, { useEffect } from "react";
|
|
4
|
+
import { TamaguiProvider } from 'tamagui'
|
|
5
|
+
import { SplashScreen, Stack } from "expo-router";
|
|
6
|
+
import { useFonts } from "expo-font";
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
import config from '../tamagui.config'
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
SplashScreen.preventAutoHideAsync();
|
|
11
11
|
<% } else { %>
|
|
12
|
-
|
|
12
|
+
import { Stack } from "expo-router";
|
|
13
13
|
<% } %>
|
|
14
14
|
|
|
15
15
|
export const unstable_settings = {
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
// Ensure that reloading on `/modal` keeps a back button present.
|
|
17
|
+
initialRouteName: "(tabs)",
|
|
18
18
|
};
|
|
19
19
|
|
|
20
20
|
export default function RootLayout() {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
<% if (props.stylingPackage?.name === "tamagui") { %>
|
|
22
|
+
const [loaded] = useFonts({
|
|
23
|
+
Inter: require("@tamagui/font-inter/otf/Inter-Medium.otf"),
|
|
24
|
+
InterBold: require("@tamagui/font-inter/otf/Inter-Bold.otf")
|
|
25
|
+
});
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
if (loaded) {
|
|
29
|
+
SplashScreen.hideAsync();
|
|
30
|
+
}
|
|
31
|
+
}, [loaded]);
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
if (!loaded) return null;
|
|
34
|
+
<% } %>
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
36
|
+
return (
|
|
37
|
+
<% if (props.stylingPackage?.name === "tamagui") { %>
|
|
38
|
+
<TamaguiProvider config={config}>
|
|
39
|
+
<% } %>
|
|
40
|
+
<Stack>
|
|
41
|
+
<Stack.Screen name="(tabs)" options={{ headerShown: false }} />
|
|
42
|
+
<Stack.Screen name="modal" options={{ presentation: "modal" }} />
|
|
43
|
+
</Stack>
|
|
44
|
+
<% if (props.stylingPackage?.name === "tamagui") { %>
|
|
45
|
+
</TamaguiProvider>
|
|
46
|
+
<% } %>
|
|
47
|
+
);
|
|
48
48
|
}
|