create-expo-stack 2.1.20 → 2.1.22
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/bin/create-expo-stack.js +2 -0
- package/build/cli.js +6 -4
- package/build/commands/create-expo-stack.js +51 -19
- package/build/constants.js +4 -4
- package/build/templates/base/package.json.ejs +8 -1
- package/build/templates/packages/expo-router/expo-env.d.ts +1 -1
- package/build/templates/packages/expo-router/index.js +1 -1
- package/build/templates/packages/expo-router/index.ts +1 -1
- package/build/templates/packages/expo-router/metro.config.js +3 -3
- package/build/templates/packages/expo-router/stack/app/_layout.tsx.ejs +69 -71
- package/build/templates/packages/expo-router/stack/app/details.tsx.ejs +56 -56
- package/build/templates/packages/expo-router/stack/app/index.tsx.ejs +97 -97
- package/build/templates/packages/nativewind/app.d.ts +1 -1
- package/build/templates/packages/react-navigation/App.tsx.ejs +27 -27
- package/build/templates/packages/react-navigation/navigation/index.tsx.ejs +109 -95
- package/build/templates/packages/react-navigation/screens/details.tsx.ejs +60 -57
- package/build/templates/packages/react-navigation/screens/overview.tsx.ejs +98 -95
- package/build/templates/packages/tamagui/tamagui.config.ts.ejs +48 -42
- package/build/types/cli.d.ts +4 -1
- package/build/types/constants.d.ts +1 -1
- package/build/types/templates/packages/expo-router/index.d.ts +1 -1
- package/build/types/types.d.ts +2 -2
- package/build/types/utilities/configureProjectFiles.d.ts +2 -2
- package/build/types/utilities/generateProjectFiles.d.ts +2 -2
- package/build/types/utilities/getPackageManager.d.ts +2 -2
- package/build/types/utilities/index.d.ts +9 -9
- package/build/types/utilities/printOutput.d.ts +2 -2
- package/build/types/utilities/renderTitle.d.ts +1 -1
- package/build/types/utilities/runCLI.d.ts +2 -2
- package/build/types/utilities/runIgnite.d.ts +1 -1
- package/build/types/utilities/usePackage.d.ts +1 -1
- package/build/types.js +11 -2
- package/build/utilities/bumpVersion.js +1 -1
- package/build/utilities/configureProjectFiles.js +8 -12
- package/build/utilities/generateProjectFiles.js +5 -5
- package/build/utilities/getPackageManager.js +9 -10
- package/build/utilities/index.js +1 -1
- package/build/utilities/printOutput.js +4 -3
- package/build/utilities/renderTitle.js +15 -13
- package/build/utilities/runCLI.js +14 -14
- package/build/utilities/runIgnite.js +1 -1
- package/build/utilities/showHelp.js +29 -29
- package/build/utilities/usePackage.js +1 -1
- package/package.json +36 -48
- package/LICENSE +0 -21
- package/bin/create-expo-stack +0 -21
- package/build/extensions/cli-extension.js +0 -17
- package/build/types/extensions/cli-extension.d.ts +0 -1
- package/docs/commands.md +0 -3
- package/docs/plugins.md +0 -49
- package/readme.md +0 -104
package/build/cli.js
CHANGED
|
@@ -36,16 +36,18 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.run = void 0;
|
|
39
40
|
var gluegun_1 = require("gluegun");
|
|
40
41
|
/**
|
|
41
42
|
* Create the cli and kick it off
|
|
42
43
|
*/
|
|
43
|
-
function run(
|
|
44
|
+
function run() {
|
|
44
45
|
return __awaiter(this, void 0, void 0, function () {
|
|
45
|
-
var cli, toolbox;
|
|
46
|
+
var argv, cli, toolbox;
|
|
46
47
|
return __generator(this, function (_a) {
|
|
47
48
|
switch (_a.label) {
|
|
48
49
|
case 0:
|
|
50
|
+
argv = process.env.argv;
|
|
49
51
|
cli = (0, gluegun_1.build)()
|
|
50
52
|
.brand('create-expo-stack')
|
|
51
53
|
.src(__dirname)
|
|
@@ -66,5 +68,5 @@ function run(argv) {
|
|
|
66
68
|
});
|
|
67
69
|
});
|
|
68
70
|
}
|
|
69
|
-
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
exports.run = run;
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBK0I7QUFFL0I7O0dBRUc7QUFDSCxTQUFzQixHQUFHOzs7Ozs7b0JBQ2pCLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQTtvQkFHdkIsR0FBRyxHQUFHLElBQUEsZUFBSyxHQUFFO3lCQUNoQixLQUFLLENBQUMsbUJBQW1CLENBQUM7eUJBQzFCLEdBQUcsQ0FBQyxTQUFTLENBQUM7eUJBQ2QsT0FBTyxDQUFDLGdCQUFnQixFQUFFO3dCQUN6QixRQUFRLEVBQUUscUJBQXFCO3dCQUMvQixNQUFNLEVBQUUsSUFBSTtxQkFDYixDQUFDO3lCQUNELE9BQU8sRUFBRSxDQUFDLGlEQUFpRDt5QkFDM0QsTUFBTSxFQUFFLENBQUE7b0JBS0sscUJBQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7d0JBRW5DLHFDQUFxQztzQkFGRjs7b0JBQTdCLE9BQU8sR0FBRyxTQUFtQjtvQkFFbkMscUNBQXFDO29CQUNyQyxzQkFBTyxPQUFPLEVBQUE7Ozs7Q0FDZjtBQXJCRCxrQkFxQkMifQ==
|
|
@@ -57,15 +57,26 @@ var command = {
|
|
|
57
57
|
case 1:
|
|
58
58
|
_c.trys.push([1, 10, , 11]);
|
|
59
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 &&
|
|
61
|
-
|
|
60
|
+
if (options.tabs &&
|
|
61
|
+
!options.reactNavigation &&
|
|
62
|
+
!options['react-navigation'] &&
|
|
63
|
+
!options.reactnavigation &&
|
|
64
|
+
!options.expoRouter &&
|
|
65
|
+
!options['expo-router'] &&
|
|
66
|
+
!options.exporouter) {
|
|
67
|
+
throw new Error('You must pass in either --react-navigation or --expo-router if you want to use the --tabs option');
|
|
62
68
|
}
|
|
63
|
-
return [4 /*yield*/, (0, utilities_1.renderTitle)(toolbox)
|
|
69
|
+
return [4 /*yield*/, (0, utilities_1.renderTitle)(toolbox)
|
|
70
|
+
// TODO: this is hacky, figure out a way to do this better
|
|
71
|
+
// set timeout for 1 second so that the title can render before the CLI runs
|
|
72
|
+
];
|
|
64
73
|
case 2:
|
|
65
74
|
_c.sent();
|
|
66
75
|
// TODO: this is hacky, figure out a way to do this better
|
|
67
76
|
// set timeout for 1 second so that the title can render before the CLI runs
|
|
68
|
-
return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 200); })
|
|
77
|
+
return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 200); })
|
|
78
|
+
// Set the default options
|
|
79
|
+
];
|
|
69
80
|
case 3:
|
|
70
81
|
// TODO: this is hacky, figure out a way to do this better
|
|
71
82
|
// set timeout for 1 second so that the title can render before the CLI runs
|
|
@@ -77,7 +88,8 @@ var command = {
|
|
|
77
88
|
_c.sent();
|
|
78
89
|
return [3 /*break*/, 9];
|
|
79
90
|
case 5:
|
|
80
|
-
useDefault = (
|
|
91
|
+
useDefault = (options.default !== undefined && options.default) ||
|
|
92
|
+
(options.d !== undefined && options.d);
|
|
81
93
|
skipCLI = options.nonInteractive;
|
|
82
94
|
useBlankTypescript = options.blank || false;
|
|
83
95
|
optionsPassedIn = types_1.availablePackages.some(function (condition) { return options[condition] !== undefined; });
|
|
@@ -90,33 +102,53 @@ var command = {
|
|
|
90
102
|
case 7:
|
|
91
103
|
// @internal Update the cliResults with the options passed in via the command
|
|
92
104
|
// This is used for testing purposes only
|
|
93
|
-
if (options.reactNavigation ||
|
|
105
|
+
if (options.reactNavigation ||
|
|
106
|
+
options['react-navigation'] ||
|
|
107
|
+
options.reactnavigation) {
|
|
94
108
|
// Add react-navigation package
|
|
95
109
|
cliResults.packages.push({
|
|
96
|
-
name:
|
|
97
|
-
|
|
98
|
-
|
|
110
|
+
name: 'react-navigation',
|
|
111
|
+
type: 'navigation',
|
|
112
|
+
options: {
|
|
113
|
+
type: options.tabs ? 'tabs' : 'stack',
|
|
114
|
+
},
|
|
99
115
|
});
|
|
100
116
|
}
|
|
101
|
-
if (options.expoRouter ||
|
|
117
|
+
if (options.expoRouter ||
|
|
118
|
+
options['expo-router'] ||
|
|
119
|
+
options.exporouter) {
|
|
102
120
|
// Add expo-router package
|
|
103
121
|
cliResults.packages.push({
|
|
104
|
-
name:
|
|
105
|
-
|
|
106
|
-
|
|
122
|
+
name: 'expo-router',
|
|
123
|
+
type: 'navigation',
|
|
124
|
+
options: {
|
|
125
|
+
type: options.tabs ? 'tabs' : 'stack',
|
|
126
|
+
},
|
|
107
127
|
});
|
|
108
128
|
}
|
|
109
129
|
if (options.nativewind) {
|
|
110
130
|
// Add nativewind package
|
|
111
|
-
cliResults.packages.push({
|
|
131
|
+
cliResults.packages.push({
|
|
132
|
+
name: 'nativewind',
|
|
133
|
+
type: 'styling',
|
|
134
|
+
options: {},
|
|
135
|
+
});
|
|
112
136
|
}
|
|
113
137
|
if (options.tamagui) {
|
|
114
138
|
// Add tamagui package
|
|
115
|
-
cliResults.packages.push({
|
|
139
|
+
cliResults.packages.push({
|
|
140
|
+
name: 'tamagui',
|
|
141
|
+
type: 'styling',
|
|
142
|
+
options: {},
|
|
143
|
+
});
|
|
116
144
|
}
|
|
117
145
|
if (options.stylesheet || options.stylesheets) {
|
|
118
146
|
// Add stylesheet package
|
|
119
|
-
cliResults.packages.push({
|
|
147
|
+
cliResults.packages.push({
|
|
148
|
+
name: 'stylesheet',
|
|
149
|
+
type: 'styling',
|
|
150
|
+
options: {},
|
|
151
|
+
});
|
|
120
152
|
}
|
|
121
153
|
// Destructure the results but set the projectName if the first param is passed in
|
|
122
154
|
if (first) {
|
|
@@ -126,8 +158,8 @@ var command = {
|
|
|
126
158
|
info('Your project configuration:');
|
|
127
159
|
info(util.inspect(cliResults, false, null, true /* enable colors */));
|
|
128
160
|
packages = cliResults.packages;
|
|
129
|
-
navigationPackage = packages.find(function (p) { return p.type ===
|
|
130
|
-
stylingPackage = packages.find(function (p) { return p.type ===
|
|
161
|
+
navigationPackage = packages.find(function (p) { return p.type === 'navigation'; }) || undefined;
|
|
162
|
+
stylingPackage = packages.find(function (p) { return p.type === 'styling'; });
|
|
131
163
|
files = [];
|
|
132
164
|
files = (0, utilities_1.configureProjectFiles)(files, navigationPackage, stylingPackage, toolbox);
|
|
133
165
|
formattedFiles = [];
|
|
@@ -151,4 +183,4 @@ var command = {
|
|
|
151
183
|
}); },
|
|
152
184
|
};
|
|
153
185
|
exports.default = command;
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7QUFFNUIsMENBUXFCO0FBQ3JCLDBDQUE2QztBQUM3QyxrQ0FBd0Q7QUFFeEQsSUFBTSxPQUFPLEdBQW1CO0lBQzlCLElBQUksRUFBRSxtQkFBbUI7SUFDekIsV0FBVyxFQUFFLDJCQUEyQjtJQUN4QyxHQUFHLEVBQUUsVUFBTyxPQUFPOzs7OztvQkFFZixLQUVFLE9BQU8sV0FGcUIsRUFBaEIsS0FBSyxXQUFBLEVBQUUsT0FBTyxhQUFBLEVBQzVCLEtBQ0UsT0FBTyxNQUQwQixFQUExQixJQUFJLFVBQUEsRUFBRSxTQUFTLGVBQUEsRUFBRSxPQUFPLGFBQUEsQ0FDeEI7b0JBQ1gsSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUU7d0JBQzdCLElBQUEsb0JBQVEsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFBO3dCQUVsQyxzQkFBTTtxQkFDUDs7OztvQkFFQywySUFBMkk7b0JBQzNJLElBQ0UsT0FBTyxDQUFDLElBQUk7d0JBQ1osQ0FBQyxPQUFPLENBQUMsZUFBZTt3QkFDeEIsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUM7d0JBQzVCLENBQUMsT0FBTyxDQUFDLGVBQWU7d0JBQ3hCLENBQUMsT0FBTyxDQUFDLFVBQVU7d0JBQ25CLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQzt3QkFDdkIsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUNuQjt3QkFDQSxNQUFNLElBQUksS0FBSyxDQUNiLGtHQUFrRyxDQUNuRyxDQUFBO3FCQUNGO29CQUVELHFCQUFNLElBQUEs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
|
package/build/constants.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.defaultOptions = exports.DEFAULT_APP_NAME = exports.TITLE_TEXT = void 0;
|
|
4
|
-
exports.TITLE_TEXT =
|
|
5
|
-
exports.DEFAULT_APP_NAME =
|
|
4
|
+
exports.TITLE_TEXT = 'create expo stack';
|
|
5
|
+
exports.DEFAULT_APP_NAME = 'my-expo-app';
|
|
6
6
|
exports.defaultOptions = {
|
|
7
7
|
projectName: exports.DEFAULT_APP_NAME,
|
|
8
8
|
packages: [],
|
|
9
9
|
flags: {
|
|
10
10
|
noGit: false,
|
|
11
11
|
noInstall: false,
|
|
12
|
-
importAlias:
|
|
12
|
+
importAlias: '~/',
|
|
13
13
|
},
|
|
14
14
|
};
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFYSxRQUFBLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQTtBQUVoQyxRQUFBLGdCQUFnQixHQUFHLGFBQWEsQ0FBQTtBQUVoQyxRQUFBLGNBQWMsR0FBZTtJQUN4QyxXQUFXLEVBQUUsd0JBQWdCO0lBQzdCLFFBQVEsRUFBRSxFQUFFO0lBQ1osS0FBSyxFQUFFO1FBQ0wsS0FBSyxFQUFFLEtBQUs7UUFDWixTQUFTLEVBQUUsS0FBSztRQUNoQixXQUFXLEVBQUUsSUFBSTtLQUNsQjtDQUNGLENBQUEifQ==
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<% if (props.navigationPackage?.type === "navigation") { %>
|
|
26
26
|
"@react-navigation/native": "^6.1.7",
|
|
27
27
|
"react-native-gesture-handler": "~2.12.0",
|
|
28
|
-
"react-native-safe-area-context": "4.6.3",
|
|
28
|
+
"react-native-safe-area-context": "^4.6.3",
|
|
29
29
|
"react-native-screens": "~3.22.0",
|
|
30
30
|
<% } %>
|
|
31
31
|
|
|
@@ -87,5 +87,12 @@
|
|
|
87
87
|
<% } else { %>
|
|
88
88
|
"main": "node_modules/expo/AppEntry.js",
|
|
89
89
|
<% } %>
|
|
90
|
+
<% if (props.navigationPackage?.type === "navigation") { %>
|
|
91
|
+
"expo": {
|
|
92
|
+
"install": {
|
|
93
|
+
"exclude": ["react-native-safe-area-context"]
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
<% } %>
|
|
90
97
|
"private": true
|
|
91
98
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
require("expo-router/entry");
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGVtcGxhdGVzL3BhY2thZ2VzL2V4cG8tcm91dGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkJBQTBCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import 'expo-router/entry'
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// Learn more https://docs.expo.io/guides/customizing-metro
|
|
2
|
-
const { getDefaultConfig } = require('expo/metro-config')
|
|
2
|
+
const { getDefaultConfig } = require('expo/metro-config')
|
|
3
3
|
|
|
4
4
|
/** @type {import('expo/metro-config').MetroConfig} */
|
|
5
5
|
// eslint-disable-next-line no-undef
|
|
6
6
|
const config = getDefaultConfig(__dirname, {
|
|
7
7
|
// [Web-only]: Enables CSS support in Metro.
|
|
8
8
|
isCSSEnabled: true,
|
|
9
|
-
})
|
|
9
|
+
})
|
|
10
10
|
|
|
11
|
-
module.exports = config
|
|
11
|
+
module.exports = config
|
|
@@ -1,89 +1,87 @@
|
|
|
1
1
|
import { Feather } from "@expo/vector-icons";
|
|
2
2
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import { Stack, useRouter } from "expo-router";
|
|
4
|
+
import { Text, TouchableOpacity, View } from "react-native";
|
|
5
5
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
import React, { useEffect } from "react";
|
|
7
|
+
import { TamaguiProvider, Button, Text } from "tamagui";
|
|
8
|
+
import { useFonts } from "expo-font";
|
|
9
|
+
import { Stack, useRouter, SplashScreen } from "expo-router";
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
import config from '../tamagui.config'
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
SplashScreen.preventAutoHideAsync();
|
|
14
14
|
<% } else { %>
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
import { StyleSheet, Text, TouchableOpacity, View } from "react-native";
|
|
16
|
+
import { Stack, useRouter } from "expo-router";
|
|
17
17
|
<% } %>
|
|
18
18
|
|
|
19
19
|
export default function Layout() {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
20
|
+
const router = useRouter();
|
|
21
|
+
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
22
|
+
const BackButton = () => (
|
|
23
|
+
<TouchableOpacity onPress={router.back}>
|
|
24
|
+
<View className={styles.backButton}>
|
|
25
|
+
<Feather name="chevron-left" size={16} color="#007AFF" />
|
|
26
|
+
<Text className={styles.backButtonText}>Back</Text>
|
|
27
|
+
</View>
|
|
28
|
+
</TouchableOpacity>
|
|
29
|
+
);
|
|
30
|
+
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
31
|
+
const [loaded] = useFonts({
|
|
32
|
+
Inter: require("@tamagui/font-inter/otf/Inter-Medium.otf"),
|
|
33
|
+
InterBold: require("@tamagui/font-inter/otf/Inter-Bold.otf")
|
|
34
|
+
});
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
if (loaded) {
|
|
38
|
+
SplashScreen.hideAsync();
|
|
39
|
+
}
|
|
40
|
+
}, [loaded]);
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
if (!loaded) return null;
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
44
|
+
const BackButton = () => (
|
|
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
|
+
)
|
|
47
|
+
<% } else { %>
|
|
48
|
+
const BackButton = () => (
|
|
49
|
+
<TouchableOpacity onPress={router.back}>
|
|
50
|
+
<View style={styles.backButton}>
|
|
51
|
+
<Feather name="chevron-left" size={16} color="#007AFF" />
|
|
52
|
+
<Text style={styles.backButtonText}>Back</Text>
|
|
53
|
+
</View>
|
|
54
|
+
</TouchableOpacity>
|
|
55
|
+
);
|
|
56
|
+
<% } %>
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
<% } %>
|
|
71
|
-
);
|
|
58
|
+
return (
|
|
59
|
+
<% if (props.stylingPackage?.name === "tamagui") { %>
|
|
60
|
+
<TamaguiProvider config={config}>
|
|
61
|
+
<% } %>
|
|
62
|
+
<Stack>
|
|
63
|
+
<Stack.Screen name="index" options={{ title: "Overview" }} />
|
|
64
|
+
<Stack.Screen name="details" options={{ title: "Details", headerLeft: () => <BackButton /> }} />
|
|
65
|
+
</Stack>
|
|
66
|
+
<% if (props.stylingPackage?.name === "tamagui") { %>
|
|
67
|
+
</TamaguiProvider>
|
|
68
|
+
<% } %>
|
|
69
|
+
);
|
|
72
70
|
}
|
|
73
71
|
|
|
74
72
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
73
|
+
const styles = {
|
|
74
|
+
backButton: "flex-row",
|
|
75
|
+
backButtonText: "text-blue-500 ml-1",
|
|
76
|
+
};
|
|
79
77
|
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
78
|
+
const styles = StyleSheet.create({
|
|
79
|
+
backButton: {
|
|
80
|
+
flexDirection: "row",
|
|
81
|
+
},
|
|
82
|
+
backButtonText: {
|
|
83
|
+
color: "#007AFF",
|
|
84
|
+
marginLeft: 4,
|
|
85
|
+
},
|
|
86
|
+
});
|
|
89
87
|
<% } %>
|
|
@@ -1,68 +1,68 @@
|
|
|
1
1
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
2
|
-
|
|
2
|
+
import { View, Text } from "react-native";
|
|
3
3
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
import { YStack } from "tamagui";
|
|
5
|
+
import { Container, Main, Subtitle, Title } from "../tamagui.config";
|
|
6
6
|
<% } else { %>
|
|
7
|
-
|
|
7
|
+
import { StyleSheet, View, Text } from "react-native";
|
|
8
8
|
<% } %>
|
|
9
9
|
import { useLocalSearchParams } from "expo-router";
|
|
10
10
|
|
|
11
11
|
export default function Details() {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
12
|
+
const { name } = useLocalSearchParams();
|
|
13
|
+
return (
|
|
14
|
+
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
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
|
+
</View>
|
|
20
|
+
</View>
|
|
21
|
+
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
22
|
+
<Container>
|
|
23
|
+
<Main>
|
|
24
|
+
<YStack>
|
|
25
|
+
<Title>Details</Title>
|
|
26
|
+
<Subtitle>Showing details for user {name}.</Subtitle>
|
|
27
|
+
</YStack>
|
|
28
|
+
</Main>
|
|
29
|
+
</Container>
|
|
30
|
+
<% } else { %>
|
|
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>
|
|
35
|
+
</View>
|
|
36
|
+
</View>
|
|
37
|
+
<% } %>
|
|
38
|
+
);
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
42
|
+
const styles = {
|
|
43
|
+
container: "flex-1 p-6",
|
|
44
|
+
main: "flex-1 max-w-[960]",
|
|
45
|
+
title: "text-[64px] font-bold",
|
|
46
|
+
subtitle: "text-4xl text-gray-700",
|
|
47
|
+
};
|
|
48
48
|
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
49
|
+
const styles = StyleSheet.create({
|
|
50
|
+
container: {
|
|
51
|
+
flex: 1,
|
|
52
|
+
padding: 24,
|
|
53
|
+
},
|
|
54
|
+
main: {
|
|
55
|
+
flex: 1,
|
|
56
|
+
maxWidth: 960,
|
|
57
|
+
marginHorizontal: "auto",
|
|
58
|
+
},
|
|
59
|
+
title: {
|
|
60
|
+
fontSize: 64,
|
|
61
|
+
fontWeight: "bold",
|
|
62
|
+
},
|
|
63
|
+
subtitle: {
|
|
64
|
+
fontSize: 36,
|
|
65
|
+
color: "#38434D",
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
68
|
<% } %>
|