create-expo-stack 2.0.7 → 2.0.9

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 (34) hide show
  1. package/build/commands/create-expo-stack.js +65 -49
  2. package/build/templates/base/App.tsx.ejs +41 -0
  3. package/build/templates/base/app.json.ejs +43 -0
  4. package/build/templates/base/assets/adaptive-icon.png +0 -0
  5. package/build/templates/base/assets/favicon.png +0 -0
  6. package/build/templates/base/assets/icon.png +0 -0
  7. package/build/templates/base/assets/splash.png +0 -0
  8. package/build/templates/base/babel.config.js.ejs +17 -0
  9. package/build/templates/base/package.json.ejs +75 -0
  10. package/build/templates/base/tsconfig.json.ejs +16 -0
  11. package/build/templates/packages/expo-router/expo-env.d.ts +4 -0
  12. package/build/templates/packages/expo-router/index.ts +1 -0
  13. package/build/templates/packages/expo-router/metro.config.js +11 -0
  14. package/build/templates/packages/expo-router/stack/app/_layout.tsx.ejs +56 -0
  15. package/build/templates/packages/expo-router/stack/app/details.tsx.ejs +58 -0
  16. package/build/templates/packages/expo-router/stack/app/index.tsx.ejs +96 -0
  17. package/build/templates/packages/expo-router/tabs/app/(tabs)/_layout.tsx.ejs +57 -0
  18. package/build/templates/packages/expo-router/tabs/app/(tabs)/index.tsx.ejs +52 -0
  19. package/build/templates/packages/expo-router/tabs/app/(tabs)/two.tsx.ejs +52 -0
  20. package/build/templates/packages/expo-router/tabs/app/_layout.tsx.ejs +15 -0
  21. package/build/templates/packages/expo-router/tabs/app/modal.tsx.ejs +55 -0
  22. package/build/templates/packages/expo-router/tabs/components/edit-screen-info.tsx.ejs +84 -0
  23. package/build/templates/packages/nativewind/app.d.ts +2 -0
  24. package/build/templates/packages/nativewind/tailwind.config.js.ejs +16 -0
  25. package/build/templates/packages/react-navigation/App.tsx.ejs +8 -0
  26. package/build/templates/packages/react-navigation/components/edit-screen-info.tsx.ejs +99 -0
  27. package/build/templates/packages/react-navigation/navigation/index.tsx.ejs +98 -0
  28. package/build/templates/packages/react-navigation/navigation/tab-navigator.tsx.ejs +62 -0
  29. package/build/templates/packages/react-navigation/screens/details.tsx.ejs +61 -0
  30. package/build/templates/packages/react-navigation/screens/modal.tsx.ejs +57 -0
  31. package/build/templates/packages/react-navigation/screens/one.tsx.ejs +54 -0
  32. package/build/templates/packages/react-navigation/screens/overview.tsx.ejs +97 -0
  33. package/build/templates/packages/react-navigation/screens/two.tsx.ejs +54 -0
  34. package/package.json +3 -2
@@ -47,10 +47,11 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
47
47
  Object.defineProperty(exports, "__esModule", { value: true });
48
48
  var gluegun_1 = require("gluegun");
49
49
  var gradient = require("gradient-string");
50
- var getUserPackageManager_1 = require("../utilities/getUserPackageManager");
51
- var DEFAULT_APP_NAME = "my-expo-app";
50
+ var figlet = require("figlet");
51
+ // import { getUserPackageManager } from '../utilities/getUserPackageManager';
52
+ var DEFAULT_APP_NAME = "myExpoApp";
53
+ var TITLE_TEXT = "create expo stack";
52
54
  var availablePackages = ["nativewind", "react-navigation", "expo-router"];
53
- var TITLE_TEXT = " \u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\n\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u255A\u2588\u2588\u2557\u2588\u2588\u2554\u255D\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557 \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2551 \u2588\u2588\u2554\u255D\n\u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u255A\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2554\u255D \n\u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2554\u2550\u2550\u2550\u255D \u2588\u2588\u2551 \u2588\u2588\u2551 \u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2588\u2588\u2557 \n\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2554\u255D \u2588\u2588\u2557\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2557\n \u255A\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D";
54
55
  var defaultOptions = {
55
56
  projectName: DEFAULT_APP_NAME,
56
57
  packages: [],
@@ -146,29 +147,37 @@ var command = {
146
147
  function usePackage(packageName, packages) {
147
148
  return packages.find(function (p) { return p.name === packageName; }) ? true : false;
148
149
  }
149
- // TODO: add bun support
150
- function getPackageManager() {
151
- if (options.npm)
152
- return 'npm';
153
- if (options.yarn)
154
- return 'yarn';
155
- if (options.pnpm)
156
- return 'pnpm';
157
- var packageManager = (0, getUserPackageManager_1.getUserPackageManager)();
158
- return packageManager;
159
- }
160
150
  function renderTitle() {
161
- var cesGradient = gradient(Object.values(poimandresTheme));
162
- // resolves weird behavior where the ascii is offset
163
- var pkgManager = getPackageManager();
164
- if (pkgManager === "yarn" || pkgManager === "pnpm") {
165
- console.log("");
166
- }
167
- info("");
168
- info("");
169
- console.log(cesGradient.multiline(TITLE_TEXT));
170
- info("");
171
- info("");
151
+ return __awaiter(this, void 0, void 0, function () {
152
+ var cesGradient;
153
+ return __generator(this, function (_a) {
154
+ switch (_a.label) {
155
+ case 0:
156
+ cesGradient = gradient(Object.values(poimandresTheme));
157
+ return [4 /*yield*/, figlet.text(TITLE_TEXT, {
158
+ font: "Standard",
159
+ horizontalLayout: "default",
160
+ verticalLayout: "default",
161
+ width: 80,
162
+ whitespaceBreak: true,
163
+ }, function (err, data) {
164
+ if (err) {
165
+ console.log("Something went wrong...");
166
+ console.dir(err);
167
+ return;
168
+ }
169
+ info("");
170
+ info("");
171
+ console.log(cesGradient.multiline(data));
172
+ info("");
173
+ info("");
174
+ })];
175
+ case 1:
176
+ _a.sent();
177
+ return [2 /*return*/];
178
+ }
179
+ });
180
+ });
172
181
  }
173
182
  var _a, first, options, generate, _b, info, success, _c, ask, confirm, poimandresTheme, cliResults, projectName, askName, name_2, projectName_1, packages_1, flags_1, useNativewind_1, navigationPackage_1, baseFiles, files, nativewindFiles, reactNavigationFiles, expoRouterFiles, formattedFiles, error_1;
174
183
  return __generator(this, function (_d) {
@@ -183,42 +192,49 @@ var command = {
183
192
  ;
184
193
  _d.label = 1;
185
194
  case 1:
186
- _d.trys.push([1, 11, , 12]);
187
- renderTitle();
195
+ _d.trys.push([1, 13, , 14]);
196
+ return [4 /*yield*/, renderTitle()];
197
+ case 2:
198
+ _d.sent();
199
+ // set timeout for 1 second
200
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 200); })];
201
+ case 3:
202
+ // set timeout for 1 second
203
+ _d.sent();
188
204
  cliResults = defaultOptions;
189
- if (!options.ignite) return [3 /*break*/, 6];
205
+ if (!options.ignite) return [3 /*break*/, 8];
190
206
  projectName = void 0;
191
- if (!!first) return [3 /*break*/, 3];
207
+ if (!!first) return [3 /*break*/, 5];
192
208
  askName = {
193
209
  type: 'input',
194
210
  name: 'name',
195
- message: 'What do you want to name your project? (myExpoApp)',
211
+ message: "What do you want to name your project? (".concat(DEFAULT_APP_NAME, ")"),
196
212
  };
197
213
  return [4 /*yield*/, ask(askName)];
198
- case 2:
214
+ case 4:
199
215
  name_2 = (_d.sent()).name;
200
216
  projectName = name_2;
201
- return [3 /*break*/, 4];
202
- case 3:
217
+ return [3 /*break*/, 6];
218
+ case 5:
203
219
  projectName = first;
204
- _d.label = 4;
205
- case 4:
220
+ _d.label = 6;
221
+ case 6:
206
222
  success('Running Ignite CLI to create an opinionated stack...');
207
223
  return [4 /*yield*/, gluegun_1.system.spawn("npx ignite-cli@latest new ".concat(projectName).concat(options.default && " --yes"), {
208
224
  shell: true,
209
225
  stdio: 'inherit',
210
226
  })];
211
- case 5:
227
+ case 7:
212
228
  _d.sent();
213
- return [3 /*break*/, 10];
214
- case 6:
215
- if (!((options.default !== undefined && !options.default) || !options.nonInteractive)) return [3 /*break*/, 8];
229
+ return [3 /*break*/, 12];
230
+ case 8:
231
+ if (!((options.default !== undefined && !options.default) || !options.nonInteractive)) return [3 /*break*/, 10];
216
232
  return [4 /*yield*/, runCLI()];
217
- case 7:
233
+ case 9:
218
234
  // Run the CLI to prompt the user for input
219
235
  cliResults = _d.sent();
220
- _d.label = 8;
221
- case 8:
236
+ _d.label = 10;
237
+ case 10:
222
238
  // [Internal] Update the cliResults with the options passed in via the command
223
239
  // This is used for testing purposes only
224
240
  if (options.reactNavigation) {
@@ -364,7 +380,7 @@ var command = {
364
380
  info("Initializing your project...");
365
381
  info("");
366
382
  return [4 /*yield*/, Promise.all(formattedFiles)];
367
- case 9:
383
+ case 11:
368
384
  _d.sent();
369
385
  // check if npm option is set, otherwise set based on what the system is configure to use
370
386
  // const packageManager = getPackageManager();
@@ -404,19 +420,19 @@ var command = {
404
420
  info('yarn');
405
421
  info('yarn ios');
406
422
  info("");
407
- _d.label = 10;
408
- case 10: return [3 /*break*/, 12];
409
- case 11:
423
+ _d.label = 12;
424
+ case 12: return [3 /*break*/, 14];
425
+ case 13:
410
426
  error_1 = _d.sent();
411
427
  // TODO: delete all files
412
428
  info("Oops, something went wrong while creating your project \uD83D\uDE22");
413
429
  console.error(error_1);
414
430
  info("\nIf this was unexpected, please open an issue: https://github.com/danstepanov/create-expo-stack#reporting-bugs--feedback");
415
- return [3 /*break*/, 12];
416
- case 12: return [2 /*return*/];
431
+ return [3 /*break*/, 14];
432
+ case 14: return [2 /*return*/];
417
433
  }
418
434
  });
419
435
  }); },
420
436
  };
421
437
  exports.default = command;
422
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBZ0Q7QUFDaEQsMENBQTZDO0FBRzdDLDRFQUEyRTtBQUUzRSxJQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQztBQVF2QyxJQUFNLGlCQUFpQixHQUFHLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsQ0FBVSxDQUFDO0FBRXJGLElBQU0sVUFBVSxHQUFHLHVzSEFLaUgsQ0FBQztBQWdCckksSUFBTSxjQUFjLEdBQWU7SUFDakMsV0FBVyxFQUFFLGdCQUFnQjtJQUM3QixRQUFRLEVBQUUsRUFBRTtJQUNaLEtBQUssRUFBRTtRQUNMLEtBQUssRUFBRSxLQUFLO1FBQ1osU0FBUyxFQUFFLEtBQUs7UUFDaEIsV0FBVyxFQUFFLElBQUk7S0FDbEI7Q0FDRixDQUFDO0FBRUYsSUFBTSxPQUFPLEdBQW1CO0lBQzlCLElBQUksRUFBRSxtQkFBbUI7SUFDekIsV0FBVyxFQUFFLG1FQUFtRTtJQUNoRixHQUFHLEVBQUUsVUFBTyxPQUFPO1FBUWpCLFNBQWUsTUFBTTs7Ozs7OzRCQUdmLFVBQVUsR0FBRyxjQUFjLENBQUM7NEJBRWhDLCtEQUErRDs0QkFDL0QsSUFBSSxLQUFLLEVBQUU7Z0NBQ1QsVUFBVSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7NkJBQ2hDO2lDQUdHLENBQUMsS0FBSyxFQUFOLHdCQUFNOzRCQUNGLE9BQU8sR0FBRztnQ0FDZCxJQUFJLEVBQUUsT0FBTztnQ0FDYixJQUFJLEVBQUUsTUFBTTtnQ0FDWixPQUFPLEVBQUUsc0RBQXNEOzZCQUNoRSxDQUFBOzRCQUNnQixxQkFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUE7OzRCQUEzQixTQUFT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
438
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBZ0Q7QUFDaEQsMENBQTZDO0FBQzdDLCtCQUFrQztBQUVsQyw4RUFBOEU7QUFFOUUsSUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7QUFFckMsSUFBTSxVQUFVLEdBQUcsbUJBQW1CLENBQUM7QUFRdkMsSUFBTSxpQkFBaUIsR0FBRyxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxhQUFhLENBQVUsQ0FBQztBQWdCckYsSUFBTSxjQUFjLEdBQWU7SUFDakMsV0FBVyxFQUFFLGdCQUFnQjtJQUM3QixRQUFRLEVBQUUsRUFBRTtJQUNaLEtBQUssRUFBRTtRQUNMLEtBQUssRUFBRSxLQUFLO1FBQ1osU0FBUyxFQUFFLEtBQUs7UUFDaEIsV0FBVyxFQUFFLElBQUk7S0FDbEI7Q0FDRixDQUFDO0FBRUYsSUFBTSxPQUFPLEdBQW1CO0lBQzlCLElBQUksRUFBRSxtQkFBbUI7SUFDekIsV0FBVyxFQUFFLG1FQUFtRTtJQUNoRixHQUFHLEVBQUUsVUFBTyxPQUFPO1FBUWpCLFNBQWUsTUFBTTs7Ozs7OzRCQUdmLFVBQVUsR0FBRyxjQUFjLENBQUM7NEJBRWhDLCtEQUErRDs0QkFDL0QsSUFBSSxLQUFLLEVBQUU7Z0NBQ1QsVUFBVSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7NkJBQ2hDO2lDQUdHLENBQUMsS0FBSyxFQUFOLHdCQUFNOzRCQUNGLE9BQU8sR0FBRztnQ0FDZCxJQUFJLEVBQUUsT0FBTztnQ0FDYixJQUFJLEVBQUUsTUFBTTtnQ0FDWixPQUFPLEVBQUUsc0RBQXNEOzZCQUNoRSxDQUFBOzRCQUNnQixxQkFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUE7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
@@ -0,0 +1,41 @@
1
+ import React from 'react';
2
+
3
+ <% if (props.useNativewind) {%>
4
+ import { Text, View } from 'react-native';
5
+ <% } else {%>
6
+ import { StyleSheet, Text, View } from 'react-native';
7
+ <% } %>
8
+ import { StatusBar } from 'expo-status-bar';
9
+
10
+ <% if (props.useNativewind) {%>
11
+ export default function App() {
12
+ return (
13
+ <View className={styles.container} %>>
14
+ <Text>Open up App.tsx to start working on your app!</Text>
15
+ <StatusBar style="auto" />
16
+ </View>
17
+ );
18
+ }
19
+
20
+ const styles = {
21
+ container: 'flex flex-1 items-center justify-center bg-white',
22
+ };
23
+ <% } else {%>
24
+ export default function App() {
25
+ return (
26
+ <View style={styles.container} %>>
27
+ <Text>Open up App.tsx to start working on your app!</Text>
28
+ <StatusBar style="auto" />
29
+ </View>
30
+ );
31
+ }
32
+
33
+ const styles = StyleSheet.create({
34
+ container: {
35
+ flex: 1,
36
+ backgroundColor: '#fff',
37
+ alignItems: 'center',
38
+ justifyContent: 'center',
39
+ },
40
+ });
41
+ <% } %>
@@ -0,0 +1,43 @@
1
+ {
2
+ "expo": {
3
+ "name": "<%= props.projectName %>",
4
+ "slug": "<%= props.projectName %>",
5
+ "version": "1.0.0",
6
+ <% if (props.navigationPackage?.name === 'expo-router') { %>
7
+ "scheme": "<%= props.projectName %>",
8
+ "web": {
9
+ "bundler": "metro",
10
+ "output": "static",
11
+ "favicon": "./assets/favicon.png"
12
+ },
13
+ "plugins": ["expo-router"],
14
+ "experiments": {
15
+ "typedRoutes": true
16
+ },
17
+ <% } else { %>
18
+ "web": {
19
+ "favicon": "./assets/favicon.png"
20
+ },
21
+ <% } %>
22
+ "orientation": "portrait",
23
+ "icon": "./assets/icon.png",
24
+ "userInterfaceStyle": "light",
25
+ "splash": {
26
+ "image": "./assets/splash.png",
27
+ "resizeMode": "contain",
28
+ "backgroundColor": "#ffffff"
29
+ },
30
+ "assetBundlePatterns": [
31
+ "**/*"
32
+ ],
33
+ "ios": {
34
+ "supportsTablet": true
35
+ },
36
+ "android": {
37
+ "adaptiveIcon": {
38
+ "foregroundImage": "./assets/adaptive-icon.png",
39
+ "backgroundColor": "#ffffff"
40
+ }
41
+ }
42
+ }
43
+ }
@@ -0,0 +1,17 @@
1
+ module.exports = function(api) {
2
+ api.cache(true);
3
+ let plugins = [];
4
+
5
+ <% if (props.useNativewind) { %>
6
+ plugins.push('nativewind/babel');
7
+ <% } %>
8
+
9
+ <% if (props.navigationPackage?.name === 'expo-router') { %>
10
+ plugins.push('expo-router/babel');
11
+ <% } %>
12
+
13
+ return {
14
+ presets: ['babel-preset-expo'],
15
+ plugins: plugins,
16
+ };
17
+ };
@@ -0,0 +1,75 @@
1
+ {
2
+ "name": "<%= props.projectName %>",
3
+ "version": "1.0.0",
4
+ "scripts": {
5
+ "android": "expo start --android",
6
+ "format": "eslint \"**/*.{js,jsx,ts,tsx}\" --fix && prettier \"**/*.{js,jsx,ts,tsx,json}\" --write",
7
+ "ios": "expo start --ios",
8
+ "start": "expo start",
9
+ "web": "expo start --web"
10
+ },
11
+ "dependencies": {
12
+ <% if (props.useNativewind) { %>
13
+ "nativewind": "^2.0.11",
14
+ <% } %>
15
+
16
+ <% if (props.navigationPackage?.type === "navigation") { %>
17
+ "@react-navigation/native": "^6.1.7",
18
+ "react-native-gesture-handler": "~2.12.0",
19
+ "react-native-safe-area-context": "4.6.3",
20
+ "react-native-screens": "~3.22.0",
21
+ <% } %>
22
+
23
+ <% if (props.navigationPackage?.name === "react-navigation") { %>
24
+ "@react-navigation/stack": "^6.3.17",
25
+ <% } %>
26
+
27
+ <% if (props.navigationPackage?.options === "tabs" && props.navigationPackage?.name === "react-navigation") { %>
28
+ "@react-navigation/bottom-tabs": "^6.5.8",
29
+ <% } %>
30
+
31
+ <% if (props.navigationPackage?.name === "expo-router") { %>
32
+ "@expo/vector-icons": "^13.0.0",
33
+ "expo-linking": "~5.0.2",
34
+ "expo-router": "^2.0.0",
35
+ "expo-system-ui": "~2.4.0",
36
+ "expo-web-browser": "~12.3.2",
37
+ "react-dom": "18.2.0",
38
+ "react-native-web": "~0.19.6",
39
+ <% } %>
40
+
41
+ "expo": "~49.0.11",
42
+ "expo-status-bar": "~1.6.0",
43
+ "react": "18.2.0",
44
+ "react-native": "0.72.4"
45
+ },
46
+ "devDependencies": {
47
+ "@babel/core": "^7.20.0",
48
+ "@types/react": "~18.2.14",
49
+ "@typescript-eslint/eslint-plugin": "^6.7.2",
50
+ "@typescript-eslint/parser": "^6.7.2",
51
+ "eslint": "^8.50.0",
52
+ "eslint-config-universe": "^12.0.0",
53
+ "prettier": "^3.0.3",
54
+ <% if (props.useNativewind) { %>
55
+ "tailwindcss": "3.3.2",
56
+ <% } %>
57
+ "typescript": "^5.1.3"
58
+ },
59
+ "eslintConfig": {
60
+ "extends": "universe/native"
61
+ },
62
+ <% if (props.navigationPackage?.name === 'expo-router') { %>
63
+ "resolutions": {
64
+ "metro": "0.76.0",
65
+ "metro-resolver": "0.76.0"
66
+ },
67
+ "overrides": {
68
+ "metro": "0.76.0",
69
+ "metro-resolver": "0.76.0"
70
+ },
71
+ <% } else { %>
72
+ "main": "node_modules/expo/AppEntry.js",
73
+ <% } %>
74
+ "private": true
75
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "extends": "expo/tsconfig.base",
3
+ "compilerOptions": {
4
+ "strict": true
5
+ <% if (props.navigationPackage?.name === 'expo-router') { %>
6
+ },
7
+ "include": [
8
+ "**/*.ts",
9
+ "**/*.tsx",
10
+ ".expo/types/**/*.ts",
11
+ "expo-env.d.ts"
12
+ ]
13
+ <% } else { %>
14
+ }
15
+ <% } %>
16
+ }
@@ -0,0 +1,4 @@
1
+ // @ts-ignore
2
+ /// <reference types="expo-router/types" />
3
+
4
+ // NOTE: This file should not be edited and should be in your git ignore
@@ -0,0 +1 @@
1
+ import "expo-router/entry";
@@ -0,0 +1,11 @@
1
+ // Learn more https://docs.expo.io/guides/customizing-metro
2
+ const { getDefaultConfig } = require('expo/metro-config');
3
+
4
+ /** @type {import('expo/metro-config').MetroConfig} */
5
+ // eslint-disable-next-line no-undef
6
+ const config = getDefaultConfig(__dirname, {
7
+ // [Web-only]: Enables CSS support in Metro.
8
+ isCSSEnabled: true,
9
+ });
10
+
11
+ module.exports = config;
@@ -0,0 +1,56 @@
1
+ import { Feather } from "@expo/vector-icons";
2
+ import { Stack, useRouter } from "expo-router";
3
+ <% if (props.useNativewind) { %>
4
+ import { Text, TouchableOpacity, View } from "react-native";
5
+ <% } else { %>
6
+ import { StyleSheet, Text, TouchableOpacity, View } from "react-native";
7
+ <% } %>
8
+
9
+ export default function Layout() {
10
+ const router = useRouter();
11
+ <% if (props.useNativewind) { %>
12
+ const BackButton = () => (
13
+ <TouchableOpacity onPress={router.back}>
14
+ <View className={styles.backButton}>
15
+ <Feather name="chevron-left" size={16} color="#007AFF" />
16
+ <Text className={styles.backButtonText}>Back</Text>
17
+ </View>
18
+ </TouchableOpacity>
19
+ );
20
+ <% } else { %>
21
+ const BackButton = () => (
22
+ <TouchableOpacity onPress={router.back}>
23
+ <View style={styles.backButton}>
24
+ <Feather name="chevron-left" size={16} color="#007AFF" />
25
+ <Text style={styles.backButtonText}>Back</Text>
26
+ </View>
27
+ </TouchableOpacity>
28
+ );
29
+ <% } %>
30
+
31
+ return (
32
+ <Stack>
33
+ <Stack.Screen name="index" options={{ title: "Overview" }} />
34
+ <Stack.Screen name="details"
35
+ options={{ title: "Details", headerLeft: () => <BackButton /> }}
36
+ />
37
+ </Stack>
38
+ );
39
+ }
40
+
41
+ <% if (props.useNativewind) { %>
42
+ const styles = {
43
+ backButton: "flex-row",
44
+ backButtonText: "text-blue-500 ml-1",
45
+ };
46
+ <% } else { %>
47
+ const styles = StyleSheet.create({
48
+ backButton: {
49
+ flexDirection: "row",
50
+ },
51
+ backButtonText: {
52
+ color: "#007AFF",
53
+ marginLeft: 4,
54
+ },
55
+ });
56
+ <% } %>
@@ -0,0 +1,58 @@
1
+ <% if (props.useNativewind) { %>
2
+ import { View, Text } from "react-native";
3
+ <% } else { %>
4
+ import { StyleSheet, View, Text } from "react-native";
5
+ <% } %>
6
+ import { useLocalSearchParams } from "expo-router";
7
+
8
+ export default function Details() {
9
+ const { name } = useLocalSearchParams();
10
+ <% if (props.useNativewind) { %>
11
+ return (
12
+ <View className={styles.container}>
13
+ <View className={styles.main}>
14
+ <Text className={styles.title}>Details</Text>
15
+ <Text className={styles.subtitle}>Showing details for user {name}.</Text>
16
+ </View>
17
+ </View>
18
+ );
19
+ <% } else { %>
20
+ return (
21
+ <View style={styles.container}>
22
+ <View style={styles.main}>
23
+ <Text style={styles.title}>Details</Text>
24
+ <Text style={styles.subtitle}>Showing details for user {name}.</Text>
25
+ </View>
26
+ </View>
27
+ );
28
+ <% } %>
29
+ }
30
+
31
+ <% if (props.useNativewind) { %>
32
+ const styles = {
33
+ container: "flex-1 p-6",
34
+ main: "flex-1 max-w-[960]",
35
+ title: "text-[64px] font-bold",
36
+ subtitle: "text-4xl text-gray-700",
37
+ };
38
+ <% } else { %>
39
+ const styles = StyleSheet.create({
40
+ container: {
41
+ flex: 1,
42
+ padding: 24,
43
+ },
44
+ main: {
45
+ flex: 1,
46
+ maxWidth: 960,
47
+ marginHorizontal: "auto",
48
+ },
49
+ title: {
50
+ fontSize: 64,
51
+ fontWeight: "bold",
52
+ },
53
+ subtitle: {
54
+ fontSize: 36,
55
+ color: "#38434D",
56
+ },
57
+ });
58
+ <% } %>