create-expo-stack 2.4.0-next.f483b52 → 2.4.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.
Files changed (55) hide show
  1. package/README.md +1 -0
  2. package/build/commands/create-expo-stack.js +39 -17
  3. package/build/templates/base/App.tsx.ejs +25 -0
  4. package/build/templates/base/babel.config.js.ejs +10 -11
  5. package/build/templates/base/package.json.ejs +29 -21
  6. package/build/templates/packages/expo-router/drawer/app/(drawer)/(tabs)/_layout.tsx.ejs +41 -0
  7. package/build/templates/packages/expo-router/drawer/app/(drawer)/(tabs)/index.tsx.ejs +88 -0
  8. package/build/templates/packages/expo-router/drawer/app/(drawer)/(tabs)/two.tsx.ejs +88 -0
  9. package/build/templates/packages/expo-router/drawer/app/(drawer)/_layout.tsx.ejs +43 -19
  10. package/build/templates/packages/expo-router/drawer/app/(drawer)/index.tsx.ejs +16 -1
  11. package/build/templates/packages/expo-router/drawer/app/[...unmatched].tsx.ejs +26 -0
  12. package/build/templates/packages/expo-router/drawer/app/_layout.tsx.ejs +39 -30
  13. package/build/templates/packages/expo-router/drawer/app/modal.tsx.ejs +96 -0
  14. package/build/templates/packages/expo-router/drawer/components/edit-screen-info.tsx.ejs +153 -0
  15. package/build/templates/packages/expo-router/metro.config.js.ejs +16 -0
  16. package/build/templates/packages/expo-router/stack/app/[...unmatched].tsx.ejs +28 -0
  17. package/build/templates/packages/expo-router/stack/app/_layout.tsx.ejs +7 -0
  18. package/build/templates/packages/expo-router/stack/app/details.tsx.ejs +43 -1
  19. package/build/templates/packages/expo-router/stack/app/index.tsx.ejs +36 -0
  20. package/build/templates/packages/expo-router/tabs/app/(tabs)/_layout.tsx.ejs +30 -8
  21. package/build/templates/packages/expo-router/tabs/app/(tabs)/index.tsx.ejs +16 -2
  22. package/build/templates/packages/expo-router/tabs/app/(tabs)/two.tsx.ejs +15 -2
  23. package/build/templates/packages/expo-router/tabs/app/[...unmatched].tsx.ejs +28 -0
  24. package/build/templates/packages/expo-router/tabs/app/_layout.tsx.ejs +7 -0
  25. package/build/templates/packages/expo-router/tabs/app/modal.tsx.ejs +15 -1
  26. package/build/templates/packages/expo-router/tabs/components/edit-screen-info.tsx.ejs +36 -0
  27. package/build/templates/packages/firebase/metro.config.js.ejs +9 -10
  28. package/build/templates/packages/nativewind/global.css +3 -0
  29. package/build/templates/packages/nativewind/metro.config.js +7 -0
  30. package/build/templates/packages/nativewind/tailwind.config.js.ejs +1 -0
  31. package/build/templates/packages/react-navigation/App.tsx.ejs +6 -0
  32. package/build/templates/packages/react-navigation/components/edit-screen-info.tsx.ejs +59 -0
  33. package/build/templates/packages/react-navigation/navigation/drawer-navigator.tsx.ejs +41 -6
  34. package/build/templates/packages/react-navigation/navigation/index.tsx.ejs +31 -2
  35. package/build/templates/packages/react-navigation/navigation/tab-navigator.tsx.ejs +47 -17
  36. package/build/templates/packages/react-navigation/screens/details.tsx.ejs +25 -0
  37. package/build/templates/packages/react-navigation/screens/home.tsx.ejs +83 -0
  38. package/build/templates/packages/react-navigation/screens/modal.tsx.ejs +13 -0
  39. package/build/templates/packages/react-navigation/screens/one.tsx.ejs +12 -0
  40. package/build/templates/packages/react-navigation/screens/overview.tsx.ejs +33 -2
  41. package/build/templates/packages/react-navigation/screens/two.tsx.ejs +12 -0
  42. package/build/templates/packages/unistyles/breakpoints.ts.ejs +9 -0
  43. package/build/templates/packages/unistyles/theme.ts.ejs +76 -0
  44. package/build/templates/packages/unistyles/unistyles.ts.ejs +27 -0
  45. package/build/types/types.d.ts +2 -2
  46. package/build/types/utilities/printOutput.d.ts +2 -2
  47. package/build/types.js +3 -2
  48. package/build/utilities/configureProjectFiles.js +29 -8
  49. package/build/utilities/generateProjectFiles.js +5 -2
  50. package/build/utilities/printOutput.js +14 -2
  51. package/build/utilities/runCLI.js +7 -3
  52. package/build/utilities/showHelp.js +3 -1
  53. package/package.json +66 -66
  54. package/build/templates/packages/expo-router/drawer/app/(drawer)/news.tsx.ejs +0 -71
  55. package/build/templates/packages/expo-router/metro.config.js +0 -11
package/README.md CHANGED
@@ -58,6 +58,7 @@ Each project is generated based on the results of the CLI, on a per-file basis.
58
58
  | NativeWind | UI Framework | v2 | Tailwind CSS for React Native |
59
59
  | Restyle | UI Framework | v2 | Theme-based styling library for React Native |
60
60
  | Tamagui | UI Framework | v1 | Universal UI with a smart optimizing compiler |
61
+ | Unistyles | UI Framework | v2 | Superset of StyleSheet |
61
62
  | Safe Area Context | Safe Area Library | v4 | Safe area support |
62
63
  | React Native Web | Web Support | v0.19 | React Native for Web |
63
64
  | Firebase | Backend and Auth | v10 | Cloud-hosted NoSQL database from Google |
@@ -45,15 +45,16 @@ var constants_1 = require("../constants");
45
45
  var types_1 = require("../types");
46
46
  var clearStylingPackages_1 = __importDefault(require("../utilities/clearStylingPackages"));
47
47
  var validateProjectName_1 = require("../utilities/validateProjectName");
48
+ var navigationValidationError = "You must pass in either --react-navigation or --expo-router if you want to use the --tabs or --drawer+tabs options";
48
49
  var command = {
49
50
  name: 'create-expo-stack',
50
51
  description: 'Create a new Expo project',
51
52
  run: function (toolbox) { return __awaiter(void 0, void 0, void 0, function () {
52
- var _a, exists, removeAsync, _b, first, options, _c, info, highlight, success, warning, prompt, pascalCase, printSomethingWentWrong, useDefault, skipCLI, useBlankTypescript, optionsPassedIn, cliResults, askName, name, pathSegments, error_1, generateRerunScript, packageManager, packages, authenticationPackage, navigationPackage, stylingPackage, files, formattedFiles, error_2;
53
+ var _a, exists, removeAsync, _b, first, options, _c, error, info, highlight, success, warning, prompt, pascalCase, printSomethingWentWrong, useDefault, skipCLI, useBlankTypescript, optionsPassedIn, cliResults, askName, name, pathSegments, err_1, generateRerunScript, packageManager, packages, authenticationPackage, navigationPackage, stylingPackage, files, formattedFiles, err_2;
53
54
  return __generator(this, function (_d) {
54
55
  switch (_d.label) {
55
56
  case 0:
56
- _a = toolbox.filesystem, exists = _a.exists, removeAsync = _a.removeAsync, _b = toolbox.parameters, first = _b.first, options = _b.options, _c = toolbox.print, info = _c.info, highlight = _c.highlight, success = _c.success, warning = _c.warning, prompt = toolbox.prompt, pascalCase = toolbox.strings.pascalCase;
57
+ _a = toolbox.filesystem, exists = _a.exists, removeAsync = _a.removeAsync, _b = toolbox.parameters, first = _b.first, options = _b.options, _c = toolbox.print, error = _c.error, info = _c.info, highlight = _c.highlight, success = _c.success, warning = _c.warning, prompt = toolbox.prompt, pascalCase = toolbox.strings.pascalCase;
57
58
  printSomethingWentWrong = function () {
58
59
  info("\nOops, something went wrong while creating your project \uD83D\uDE22");
59
60
  info("\nIf this was unexpected, please open an issue: https://github.com/danstepanov/create-expo-stack#reporting-bugs--feedback");
@@ -72,14 +73,15 @@ var command = {
72
73
  case 1:
73
74
  _d.trys.push([1, 10, , 11]);
74
75
  // Validation: check if the user passed in the tabs/drawer option without passing in either expo router or react navigation. If so, throw an error
75
- if ((options.tabs || options.drawer) &&
76
+ if ((options.tabs || options['drawer+tabs']) &&
76
77
  !options.reactNavigation &&
77
78
  !options['react-navigation'] &&
78
79
  !options.reactnavigation &&
79
80
  !options.expoRouter &&
80
81
  !options['expo-router'] &&
81
82
  !options.exporouter) {
82
- throw new Error('You must pass in either --react-navigation or --expo-router if you want to use the --tabs or --drawer options');
83
+ // throw an error without a stack trace
84
+ throw navigationValidationError;
83
85
  }
84
86
  return [4 /*yield*/, (0, utilities_1.renderTitle)(toolbox)];
85
87
  case 2:
@@ -104,7 +106,9 @@ var command = {
104
106
  cliResults.projectName = name || constants_1.DEFAULT_APP_NAME;
105
107
  return [3 /*break*/, 6];
106
108
  case 5:
107
- pathSegments = first.split('/');
109
+ // Destructure the results but set the projectName if the first param is passed in
110
+ cliResults.projectName = first || constants_1.DEFAULT_APP_NAME;
111
+ pathSegments = cliResults.projectName.split('/');
108
112
  cliResults.projectName = pathSegments.pop(); // get last segment as the project name
109
113
  _d.label = 6;
110
114
  case 6:
@@ -122,9 +126,19 @@ var command = {
122
126
  _d.label = 9;
123
127
  case 9: return [3 /*break*/, 11];
124
128
  case 10:
125
- error_1 = _d.sent();
129
+ err_1 = _d.sent();
130
+ if (err_1 === '') {
131
+ // user cancelled/exited the interactive CLI
132
+ return [2 /*return*/, void success("\nCancelled... \uD83D\uDC4B \n")];
133
+ }
134
+ if (err_1 === navigationValidationError) {
135
+ // user tried passing in tabs/drawer option without passing in either expo router or react navigation
136
+ return [2 /*return*/, void error("\n".concat(navigationValidationError, "\n"))];
137
+ }
138
+ // TODO: delete all files with projectName
139
+ // await removeAsync(cliResults.projectName);
126
140
  printSomethingWentWrong();
127
- throw error_1;
141
+ throw err_1;
128
142
  case 11:
129
143
  _d.trys.push([11, 18, , 19]);
130
144
  if (!options.ignite) return [3 /*break*/, 13];
@@ -171,7 +185,7 @@ var command = {
171
185
  name: 'react-navigation',
172
186
  type: 'navigation',
173
187
  options: {
174
- type: options.tabs ? 'tabs' : options.drawer ? 'drawer' : 'stack'
188
+ type: options.tabs ? 'tabs' : options['drawer+tabs'] ? 'drawer + tabs' : 'stack'
175
189
  }
176
190
  });
177
191
  }
@@ -181,7 +195,7 @@ var command = {
181
195
  name: 'expo-router',
182
196
  type: 'navigation',
183
197
  options: {
184
- type: options.tabs ? 'tabs' : options.drawer ? 'drawer' : 'stack'
198
+ type: options.tabs ? 'tabs' : options['drawer+tabs'] ? 'drawer + tabs' : 'stack'
185
199
  }
186
200
  });
187
201
  }
@@ -203,6 +217,14 @@ var command = {
203
217
  type: 'styling'
204
218
  });
205
219
  }
220
+ else if (options.unistyles) {
221
+ cliResults = (0, clearStylingPackages_1.default)(cliResults);
222
+ // Add unistyles package
223
+ cliResults.packages.push({
224
+ name: 'unistyles',
225
+ type: 'styling'
226
+ });
227
+ }
206
228
  else if (options.stylesheet) {
207
229
  cliResults = (0, clearStylingPackages_1.default)(cliResults);
208
230
  // Add stylesheet package
@@ -263,8 +285,8 @@ var command = {
263
285
  if (((_a = p.options) === null || _a === void 0 ? void 0 : _a.type) === 'tabs') {
264
286
  script += '--tabs ';
265
287
  }
266
- else if (((_b = p.options) === null || _b === void 0 ? void 0 : _b.type) === 'drawer') {
267
- script += '--drawer ';
288
+ else if (((_b = p.options) === null || _b === void 0 ? void 0 : _b.type) === 'drawer + tabs') {
289
+ script += '--drawer+tabs ';
268
290
  }
269
291
  }
270
292
  });
@@ -296,25 +318,25 @@ var command = {
296
318
  files = (0, utilities_1.configureProjectFiles)(authenticationPackage, files, navigationPackage, stylingPackage, toolbox, cliResults);
297
319
  formattedFiles = [];
298
320
  formattedFiles = (0, utilities_1.generateProjectFiles)(authenticationPackage, cliResults, files, formattedFiles, navigationPackage, packageManager, stylingPackage, toolbox);
299
- return [4 /*yield*/, (0, utilities_1.printOutput)(cliResults, formattedFiles, toolbox)];
321
+ return [4 /*yield*/, (0, utilities_1.printOutput)(cliResults, formattedFiles, toolbox, stylingPackage)];
300
322
  case 16:
301
323
  _d.sent();
302
324
  _d.label = 17;
303
325
  case 17: return [3 /*break*/, 19];
304
326
  case 18:
305
- error_2 = _d.sent();
306
- if (error_2 === '') {
327
+ err_2 = _d.sent();
328
+ if (err_2 === '') {
307
329
  // user cancelled/exited the interactive CLI
308
- return [2 /*return*/, void success("\nCancelled... \uD83D\uDC4B ")];
330
+ return [2 /*return*/, void success("\nCancelled... \uD83D\uDC4B \n")];
309
331
  }
310
332
  // TODO: delete all files with projectName
311
333
  // await removeAsync(cliResults.projectName);
312
334
  printSomethingWentWrong();
313
- throw error_2;
335
+ throw err_2;
314
336
  case 19: return [2 /*return*/];
315
337
  }
316
338
  });
317
339
  }); }
318
340
  };
319
341
  exports.default = command;
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFN0IsMENBU3NCO0FBQ3RCLDBDQUFnRTtBQUNoRSxrQ0FBeUQ7QUFDekQsMkZBQXFFO0FBQ3JFLHdFQUF1RTtBQUV2RSxJQUFNLE9BQU8sR0FBbUI7SUFDOUIsSUFBSSxFQUFFLG1CQUFtQjtJQUN6QixXQUFXLEVBQUUsMkJBQTJCO0lBQ3hDLEdBQUcsRUFBRSxVQUFPLE9BQU87Ozs7O29CQUVmLEtBS0UsT0FBTyxXQUwwQixFQUFyQixNQUFNLFlBQUEsRUFBRSxXQUFXLGlCQUFBLEVBQ2pDLEtBSUUsT0FBTyxXQUpxQixFQUFoQixLQUFLLFdBQUEsRUFBRSxPQUFPLGFBQUEsRUFDNUIsS0FHRSxPQUFPLE1BSG1DLEVBQW5DLElBQUksVUFBQSxFQUFFLFNBQVMsZUFBQSxFQUFFLE9BQU8sYUFBQSxFQUFFLE9BQU8sYUFBQSxFQUMxQyxNQUFNLEdBRUosT0FBTyxPQUZILEVBQ0ssVUFBVSxHQUNuQixPQUFPLG1CQURZLENBQ1g7b0JBRU4sdUJBQXVCLEdBQUc7d0JBQzlCLElBQUksQ0FBQyx1RUFBNkQsQ0FBQyxDQUFDO3dCQUNwRSxJQUFJLENBQ0YsMkhBQTJILENBQzVILENBQUM7d0JBQ0YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNYLENBQUMsQ0FBQztvQkFDRixJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUM5QixJQUFBLG9CQUFRLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQzt3QkFFbkMsc0JBQU87b0JBQ1QsQ0FBQztvQkFHSyxVQUFVLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxLQUFLLFNBQVMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLFNBQVMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzFHLE9BQU8sR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO29CQUNqQyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztvQkFFNUMsZUFBZSxHQUFHLHlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFDLFNBQVMsSUFBSyxPQUFBLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxTQUFTLEVBQWhDLENBQWdDLENBQUMsQ0FBQztvQkFHNUYsVUFBVSxHQUFlLDBCQUFjLENBQUM7Ozs7b0JBRzFDLGtKQUFrSjtvQkFDbEosSUFDRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDaEMsQ0FBQyxPQUFPLENBQUMsZUFBZTt3QkFDeEIsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUM7d0JBQzVCLENBQUMsT0FBTyxDQUFDLGVBQWU7d0JBQ3hCLENBQUMsT0FBTyxDQUFDLFVBQVU7d0JBQ25CLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQzt3QkFDdkIsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUNuQixDQUFDO3dCQUNELE1BQU0sSUFBSSxLQUFLLENBQ2IsK0dBQStHLENBQ2hILENBQUM7b0JBQ0osQ0FBQztvQkFFRCxxQkFBTSxJQUFBLHVCQUFXLEVBQUMsT0FBTyxDQUFDLEVBQUE7O29CQUExQixTQUEwQixDQUFDO29CQUUzQiwwREFBMEQ7b0JBQzFELDRFQUE0RTtvQkFDNUUscUJBQU0sSUFBSSxPQUFPLENBQUMsVUFBQyxPQUFPLElBQUssT0FBQSxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUF4QixDQUF3QixDQUFDLEVBQUE7O29CQUZ4RCwwREFBMEQ7b0JBQzFELDRFQUE0RTtvQkFDNUUsU0FBd0QsQ0FBQzt5QkFFckQsQ0FBQSxDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxlQUFlLElBQUksT0FBTyxJQUFJLGtCQUFrQixDQUFDLENBQUMsQ0FBQSxFQUEvRix3QkFBK0Y7b0JBQzNGLE9BQU8sR0FBRzt3QkFDZCxJQUFJLEVBQUUsT0FBTzt3QkFDYixJQUFJLEVBQUUsTUFBTTt3QkFDWixPQUFPLEVBQUUsa0RBQTJDLDRCQUFnQixNQUFHO3FCQUN4RSxDQUFDO29CQUNlLHFCQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUE7O29CQUFsQyxJQUFJLEdBQUssQ0FBQSxTQUF5QixDQUFBLEtBQTlCO29CQUNaLHlEQUF5RDtvQkFDekQsVUFBVSxDQUFDLFdBQVcsR0FBRyxJQUFJLElBQUksNEJBQWdCLENBQUM7OztvQkFHNUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3RDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsdUNBQXVDOzs7b0JBR3RGLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNuQiw0REFBNEQ7d0JBQzVELGtFQUFrRTt3QkFDbEUsVUFBVSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUM5RCxDQUFDO3lCQUtHLE9BQU8sQ0FBQyxTQUFTLEVBQWpCLHdCQUFpQjtvQkFDbkIsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDOzt3QkFFbEMscUJBQU0sSUFBQSx5Q0FBbUIsRUFDdkIsTUFBTSxFQUNOLFdBQVcsRUFDWCxDQUFDLENBQUMsVUFBVSxJQUFJLGVBQWUsSUFBSSxPQUFPLElBQUksa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQ2pGLFVBQVUsQ0FBQyxXQUFXLENBQ3ZCLEVBQUE7O29CQUxELFNBS0MsQ0FBQzs7Ozs7b0JBR0osdUJBQXVCLEVBQUUsQ0FBQztvQkFDMUIsTUFBTSxPQUFLLENBQUM7Ozt5QkFNUixPQUFPLENBQUMsTUFBTSxFQUFkLHlCQUFjO29CQUNoQixxQkFBTSxJQUFBLHFCQUFTLEVBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLEVBQUE7O29CQUE1RCxTQUE0RCxDQUFDOzs7b0JBRTdELCtHQUErRztvQkFDL0csVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTO3dCQUN4QixPQUFPLENBQUMsU0FBUyxJQUFJLENBQUMsT0FBTyxPQUFPLENBQUMsT0FBTyxLQUFLLFNBQVMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUM7b0JBQzNGLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLEtBQUssU0FBUyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQztvQkFDdEcsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLEdBQUc7d0JBQzNDLENBQUMsQ0FBQyxLQUFLO3dCQUNQLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSTs0QkFDWixDQUFDLENBQUMsTUFBTTs0QkFDUixDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUc7Z0NBQ1gsQ0FBQyxDQUFDLEtBQUs7Z0NBQ1AsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJO29DQUNaLENBQUMsQ0FBQyxNQUFNO29DQUNSLENBQUMsQ0FBQyxTQUFTLENBQUM7b0JBRXBCLDBEQUEwRDtvQkFDMUQsSUFBSSxPQUFPLE9BQU8sQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7d0JBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDOzRCQUN4QyxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7d0JBQy9FLENBQUM7b0JBQ0gsQ0FBQztvQkFFRCxVQUFVLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxLQUFLLEtBQUssSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssS0FBSyxDQUFDO3lCQUU5RixDQUFDLENBQUMsVUFBVSxJQUFJLGVBQWUsSUFBSSxPQUFPLElBQUksa0JBQWtCLENBQUMsRUFBakUseUJBQWlFO29CQUV0RCxxQkFBTSxJQUFBLGtCQUFNLEVBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBQTs7b0JBRDFELDRDQUE0QztvQkFDNUMsVUFBVSxHQUFHLFNBQTZDLENBQUM7OztvQkFHN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7d0JBQ3JDLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztvQkFDMUMsQ0FBQztvQkFFRCxtRUFBbUU7b0JBQ25FLHNCQUFzQjtvQkFDdEIsSUFBSSxPQUFPLENBQUMsZUFBZSxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQzt3QkFDdEYsK0JBQStCO3dCQUMvQixVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzs0QkFDdkIsSUFBSSxFQUFFLGtCQUFrQjs0QkFDeEIsSUFBSSxFQUFFLFlBQVk7NEJBQ2xCLE9BQU8sRUFBRTtnQ0FDUCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU87NkJBQ2xFO3lCQUNGLENBQUMsQ0FBQztvQkFDTCxDQUFDO29CQUVELElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO3dCQUN2RSwwQkFBMEI7d0JBQzFCLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDOzRCQUN2QixJQUFJLEVBQUUsYUFBYTs0QkFDbkIsSUFBSSxFQUFFLFlBQVk7NEJBQ2xCLE9BQU8sRUFBRTtnQ0FDUCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU87NkJBQ2xFO3lCQUNGLENBQUMsQ0FBQztvQkFDTCxDQUFDO29CQUVELG1CQUFtQjtvQkFDbkIsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7d0JBQ3ZCLHdFQUF3RTt3QkFDeEUsVUFBVSxHQUFHLElBQUEsOEJBQW9CLEVBQUMsVUFBVSxDQUFDLENBQUM7d0JBQzlDLHlCQUF5Qjt3QkFDekIsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7NEJBQ3ZCLElBQUksRUFBRSxZQUFZOzRCQUNsQixJQUFJLEVBQUUsU0FBUzt5QkFDaEIsQ0FBQyxDQUFDO29CQUNMLENBQUM7eUJBQU0sSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQzNCLFVBQVUsR0FBRyxJQUFBLDhCQUFvQixFQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUM5QyxzQkFBc0I7d0JBQ3RCLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDOzRCQUN2QixJQUFJLEVBQUUsU0FBUzs0QkFDZixJQUFJLEVBQUUsU0FBUzt5QkFDaEIsQ0FBQyxDQUFDO29CQUNMLENBQUM7eUJBQU0sSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7d0JBQzlCLFVBQVUsR0FBRyxJQUFBLDhCQUFvQixFQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUM5Qyx5QkFBeUI7d0JBQ3pCLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDOzRCQUN2QixJQUFJLEVBQUUsWUFBWTs0QkFDbEIsSUFBSSxFQUFFLFNBQVM7eUJBQ2hCLENBQUMsQ0FBQztvQkFDTCxDQUFDO3lCQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUMzQixJQUFJLENBQUM7NEJBQ0gsVUFBVSxHQUFHLElBQUEsOEJBQW9CLEVBQUMsVUFBVSxDQUFDLENBQUM7NEJBQzlDLHlCQUF5Qjs0QkFDekIsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0NBQ3ZCLElBQUksRUFBRSxTQUFTO2dDQUNmLElBQUksRUFBRSxTQUFTOzZCQUNoQixDQUFDLENBQUM7d0JBQ0wsQ0FBQzt3QkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDOzRCQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLE9BQUEsRUFBRSxDQUFDLENBQUM7d0JBQ3pCLENBQUM7b0JBQ0gsQ0FBQztvQkFDRCwrQ0FBK0M7eUJBQzFDLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBQyxDQUFDLElBQUssT0FBQSxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBcEIsQ0FBb0IsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUM3RSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzs0QkFDdkIsSUFBSSxFQUFFLFlBQVk7NEJBQ2xCLElBQUksRUFBRSxTQUFTO3lCQUNoQixDQUFDLENBQUM7b0JBQ0wsQ0FBQztvQkFFRCwwQkFBMEI7b0JBQzFCLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUNyQix1QkFBdUI7d0JBQ3ZCLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDOzRCQUN2QixJQUFJLEVBQUUsVUFBVTs0QkFDaEIsSUFBSSxFQUFFLGdCQUFnQjt5QkFDdkIsQ0FBQyxDQUFDO29CQUNMLENBQUM7b0JBRUQsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3JCLHVCQUF1Qjt3QkFDdkIsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7NEJBQ3ZCLElBQUksRUFBRSxVQUFVOzRCQUNoQixJQUFJLEVBQUUsZ0JBQWdCO3lCQUN2QixDQUFDLENBQUM7b0JBQ0wsQ0FBQztvQkFFRCw4Q0FBOEM7b0JBQzlDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDVCxTQUFTLENBQUMsNkJBQTZCLENBQUMsQ0FBQztvQkFDekMsSUFBSSxDQUFDLFVBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBRSxDQUFDLENBQUM7b0JBRTNFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDVCxTQUFTLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztvQkFHdEMsbUJBQW1CLEdBQUcsVUFBQyxVQUFzQjt3QkFDakQsSUFBSSxNQUFNLEdBQUcsZ0NBQXlCLFVBQVUsQ0FBQyxXQUFXLE1BQUcsQ0FBQzt3QkFFaEUsbUJBQW1CO3dCQUNuQixVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFDLENBQUM7OzRCQUM1QixNQUFNLElBQUksWUFBSyxDQUFDLENBQUMsSUFBSSxNQUFHLENBQUM7NEJBQ3pCLHFFQUFxRTs0QkFDckUsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO2dDQUM1QixJQUFJLENBQUEsTUFBQSxDQUFDLENBQUMsT0FBTywwQ0FBRSxJQUFJLE1BQUssTUFBTSxFQUFFLENBQUM7b0NBQy9CLE1BQU0sSUFBSSxTQUFTLENBQUM7Z0NBQ3RCLENBQUM7cUNBQU0sSUFBSSxDQUFBLE1BQUEsQ0FBQyxDQUFDLE9BQU8sMENBQUUsSUFBSSxNQUFLLFFBQVEsRUFBRSxDQUFDO29DQUN4QyxNQUFNLElBQUksV0FBVyxDQUFDO2dDQUN4QixDQUFDOzRCQUNILENBQUM7d0JBQ0gsQ0FBQyxDQUFDLENBQUM7d0JBRUgsc0RBQXNEO3dCQUN0RCxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7NEJBQy9CLE1BQU0sSUFBSSxlQUFlLENBQUM7d0JBQzVCLENBQUM7d0JBRUQsbURBQW1EO3dCQUNuRCxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7NEJBQzNCLE1BQU0sSUFBSSxXQUFXLENBQUM7d0JBQ3hCLENBQUM7d0JBRUQsNkRBQTZEO3dCQUM3RCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQzs0QkFDbEMsTUFBTSxJQUFJLG9CQUFvQixDQUFDO3dCQUNqQyxDQUFDO3dCQUVELDBCQUEwQjt3QkFDMUIsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLGNBQWMsS0FBSyxLQUFLLEVBQUUsQ0FBQzs0QkFDOUMsTUFBTSxJQUFJLFlBQUssVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUUsQ0FBQzt3QkFDbkQsQ0FBQzt3QkFFRCxPQUFPLE1BQU0sQ0FBQztvQkFDaEIsQ0FBQyxDQUFDO29CQUVJLGNBQWMsR0FBRyxJQUFBLDZCQUFpQixFQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztvQkFDOUQsT0FBTyxDQUFDLFlBQUssbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUUsQ0FBQyxDQUFDO29CQUV4QyxRQUFRLEdBQUssVUFBVSxTQUFmLENBQWdCO29CQUcxQixxQkFBcUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQUMsQ0FBQyxJQUFLLE9BQUEsQ0FBQyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsRUFBM0IsQ0FBMkIsQ0FBQyxJQUFJLFNBQVMsQ0FBQztvQkFDdkYsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFDLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUF2QixDQUF1QixDQUFDLElBQUksU0FBUyxDQUFDO29CQUUvRSxjQUFjLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFDLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFwQixDQUFvQixDQUFDLENBQUM7b0JBRTlELEtBQUssR0FBYSxFQUFFLENBQUM7b0JBRXpCLEtBQUssR0FBRyxJQUFBLGlDQUFxQixFQUMzQixxQkFBcUIsRUFDckIsS0FBSyxFQUNMLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsT0FBTyxFQUNQLFVBQVUsQ0FDWCxDQUFDO29CQUdFLGNBQWMsR0FBVSxFQUFFLENBQUM7b0JBRS9CLGNBQWMsR0FBRyxJQUFBLGdDQUFvQixFQUNuQyxxQkFBcUIsRUFDckIsVUFBVSxFQUNWLEtBQUssRUFDTCxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxjQUFjLEVBQ2QsT0FBTyxDQUNSLENBQUM7b0JBRUYscUJBQU0sSUFBQSx1QkFBVyxFQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDLEVBQUE7O29CQUF0RCxTQUFzRCxDQUFDOzs7OztvQkFHekQsSUFBSSxPQUFLLEtBQUssRUFBRSxFQUFFLENBQUM7d0JBQ2pCLDRDQUE0Qzt3QkFDNUMsc0JBQU8sS0FBSyxPQUFPLENBQUMsOEJBQW9CLENBQUMsRUFBQztvQkFDNUMsQ0FBQztvQkFFRCwwQ0FBMEM7b0JBQzFDLDZDQUE2QztvQkFFN0MsdUJBQXVCLEVBQUUsQ0FBQztvQkFDMUIsTUFBTSxPQUFLLENBQUM7Ozs7U0FFZjtDQUNGLENBQUM7QUFFRixrQkFBZSxPQUFPLENBQUMifQ==
342
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFN0IsMENBU3NCO0FBQ3RCLDBDQUFnRTtBQUNoRSxrQ0FBeUQ7QUFDekQsMkZBQXFFO0FBQ3JFLHdFQUF1RTtBQUV2RSxJQUFNLHlCQUF5QixHQUFHLG9IQUFvSCxDQUFDO0FBRXZKLElBQU0sT0FBTyxHQUFtQjtJQUM5QixJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLFdBQVcsRUFBRSwyQkFBMkI7SUFDeEMsR0FBRyxFQUFFLFVBQU8sT0FBTzs7Ozs7b0JBRWYsS0FLRSxPQUFPLFdBTDBCLEVBQXJCLE1BQU0sWUFBQSxFQUFFLFdBQVcsaUJBQUEsRUFDakMsS0FJRSxPQUFPLFdBSnFCLEVBQWhCLEtBQUssV0FBQSxFQUFFLE9BQU8sYUFBQSxFQUM1QixLQUdFLE9BQU8sTUFIMEMsRUFBMUMsS0FBSyxXQUFBLEVBQUUsSUFBSSxVQUFBLEVBQUUsU0FBUyxlQUFBLEVBQUUsT0FBTyxhQUFBLEVBQUUsT0FBTyxhQUFBLEVBQ2pELE1BQU0sR0FFSixPQUFPLE9BRkgsRUFDSyxVQUFVLEdBQ25CLE9BQU8sbUJBRFksQ0FDWDtvQkFFTix1QkFBdUIsR0FBRzt3QkFDOUIsSUFBSSxDQUFDLHVFQUE2RCxDQUFDLENBQUM7d0JBQ3BFLElBQUksQ0FDRiwySEFBMkgsQ0FDNUgsQ0FBQzt3QkFDRixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ1gsQ0FBQyxDQUFDO29CQUNGLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQzlCLElBQUEsb0JBQVEsRUFBQyxJQUFJ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
@@ -1,3 +1,6 @@
1
+ <% if (props.stylingPackage?.name === "nativewind") { %>
2
+ import './global.css';
3
+ <% } %>
1
4
  import React from 'react';
2
5
 
3
6
  <% if (props.stylingPackage?.name === "nativewind") {%>
@@ -9,6 +12,9 @@ import React from 'react';
9
12
  <% } else if (props.stylingPackage?.name === "restyle") {%>
10
13
  import { ThemeProvider } from '@shopify/restyle';
11
14
  import {theme, Text} from './theme';
15
+ <% } else if (props.stylingPackage?.name === "unistyles") {%>
16
+ import { createStyleSheet, useStyles } from 'react-native-unistyles'
17
+ import { Text, View } from 'react-native';
12
18
  <% } else {%>
13
19
  import { StyleSheet, Text, View } from 'react-native';
14
20
  <% } %>
@@ -55,6 +61,25 @@ import { StatusBar } from 'expo-status-bar';
55
61
  </ThemeProvider>
56
62
  );
57
63
  }
64
+ <% } else if (props.stylingPackage?.name === "unistyles") {%>
65
+ export default function App() {
66
+ const {styles} = useStyles(stylesheet)
67
+ return (
68
+ <View style={styles.container}>
69
+ <Text>Open up App.tsx to start working on your app!</Text>
70
+ <StatusBar style="auto" />
71
+ </View >
72
+ );
73
+ }
74
+
75
+ const stylesheet = createStyleSheet({
76
+ container: {
77
+ flex: 1,
78
+ backgroundColor: '#fff',
79
+ alignItems: 'center',
80
+ justifyContent: 'center',
81
+ },
82
+ });
58
83
  <% } else {%>
59
84
  export default function App() {
60
85
  return (
@@ -2,10 +2,6 @@ module.exports = function(api) {
2
2
  api.cache(true);
3
3
  let plugins = [];
4
4
 
5
- <% if (props.stylingPackage?.name === "nativewind") { %>
6
- plugins.push('nativewind/babel');
7
- <% } %>
8
-
9
5
  <% if (props.stylingPackage?.name === "tamagui") { %>
10
6
  plugins.push([
11
7
  '@tamagui/babel-plugin',
@@ -16,16 +12,19 @@ module.exports = function(api) {
16
12
  ]);
17
13
  <% } %>
18
14
 
19
- <% if (props.navigationPackage?.name === 'expo-router') { %>
20
- plugins.push('expo-router/babel');
21
- <% } %>
22
-
23
- <% if (props.navigationPackage?.options.type === "drawer") { %>
15
+ <% if (props.navigationPackage?.options.type === "drawer + tabs") { %>
24
16
  plugins.push('react-native-reanimated/plugin');
25
17
  <% } %>
26
18
 
27
19
  return {
28
- presets: ['babel-preset-expo'],
29
- plugins: plugins,
20
+ <% if (props.stylingPackage?.name === "nativewind") { %>
21
+ presets: [
22
+ ['babel-preset-expo', { jsxImportSource: 'nativewind' }],
23
+ 'nativewind/babel',
24
+ ],
25
+ <% } else { %>
26
+ presets: ['babel-preset-expo'],
27
+ <% } %>
28
+ plugins,
30
29
  };
31
30
  };
@@ -14,7 +14,7 @@
14
14
  },
15
15
  "dependencies": {
16
16
  <% if (props.stylingPackage?.name === "nativewind") { %>
17
- "nativewind": "^2.0.11",
17
+ "nativewind": "^4.0.1",
18
18
  <% } %>
19
19
 
20
20
  <% if (props.stylingPackage?.name === "restyle") { %>
@@ -27,41 +27,51 @@
27
27
  "@tamagui/shorthands": "1.74.8",
28
28
  "@tamagui/themes": "1.74.8",
29
29
  "@tamagui/react-native-media-driver": "1.74.8",
30
- "expo-font": "~11.4.0",
30
+ "expo-font": "~11.10.2",
31
+ <% } %>
32
+
33
+ <% if (props.stylingPackage?.name === "unistyles") { %>
34
+ "react-native-unistyles": "^2.1.1",
31
35
  <% } %>
32
36
 
33
37
  <% if (props.navigationPackage?.type === "navigation") { %>
34
38
  "@react-navigation/native": "^6.1.7",
35
- "react-native-gesture-handler": "~2.12.0",
36
- "react-native-safe-area-context": "^4.6.3",
37
- "react-native-screens": "~3.22.0",
39
+ "react-native-gesture-handler": "~2.14.0",
40
+ "react-native-safe-area-context": "^4.8.2",
41
+ "react-native-screens": "~3.29.0",
38
42
  <% } %>
39
43
 
40
44
  <% if (props.navigationPackage?.name === "react-navigation") { %>
41
45
  "@react-navigation/stack": "^6.3.17",
42
- "@expo/vector-icons": "^13.0.0",
46
+ "@expo/vector-icons": "^14.0.0",
43
47
  <% } %>
44
48
 
45
49
  <% if ((props.navigationPackage?.name === "react-navigation") && (props.stylingPackage?.name === "tamagui")) { %>
46
- "expo-splash-screen": "~0.20.5",
50
+ "expo-splash-screen": "~0.26.4",
47
51
  <% } %>
48
52
 
49
53
  <% if (props.navigationPackage?.options.type === "tabs" && props.navigationPackage?.name === "react-navigation") { %>
50
54
  "@react-navigation/bottom-tabs": "^6.5.8",
51
55
  <% } %>
52
56
 
53
- <% if (props.navigationPackage?.options.type === "drawer") { %>
57
+ <% if ((props.navigationPackage?.options.type === "drawer + tabs") && (props.navigationPackage?.name === "react-navigation")) { %>
54
58
  "@react-navigation/drawer": "^6.6.6",
55
- "react-native-reanimated": "~3.3.0",
59
+ "@react-navigation/bottom-tabs": "^6.5.8",
60
+ "react-native-reanimated": "~3.6.2",
61
+ <% } else if (props.navigationPackage?.options.type === "drawer + tabs") { %>
62
+ "@react-navigation/drawer": "^6.6.6",
63
+ "@react-navigation/bottom-tabs": "^6.5.8",
56
64
  <% } %>
57
65
 
58
66
  <% if (props.navigationPackage?.name === "expo-router") { %>
59
- "@expo/vector-icons": "^13.0.0",
60
- "expo-linking": "~5.0.2",
61
- "expo-router": "^2.0.0",
62
- "expo-system-ui": "~2.4.0",
63
- "expo-web-browser": "~12.3.2",
67
+ "@expo/vector-icons": "^14.0.0",
68
+ "expo-linking": "~6.2.2",
69
+ "expo-router": "^3.4.6",
70
+ "expo-constants": "~15.4.5",
71
+ "expo-system-ui": "~2.9.3",
72
+ "expo-web-browser": "~12.8.2",
64
73
  "react-dom": "18.2.0",
74
+ "react-native-reanimated": "~3.6.2",
65
75
  "react-native-web": "~0.19.6",
66
76
  <% } %>
67
77
 
@@ -76,10 +86,10 @@
76
86
  "react-native-url-polyfill": "^2.0.0",
77
87
  <% } %>
78
88
 
79
- "expo": "~49.0.11",
80
- "expo-status-bar": "~1.6.0",
89
+ "expo": "~50.0.4",
90
+ "expo-status-bar": "~1.11.1",
81
91
  "react": "18.2.0",
82
- "react-native": "0.72.6"
92
+ "react-native": "0.73.2"
83
93
  },
84
94
  "devDependencies": {
85
95
  "@babel/core": "^7.20.0",
@@ -90,7 +100,7 @@
90
100
  "eslint-config-universe": "^12.0.0",
91
101
  "prettier": "^3.0.3",
92
102
  <% if (props.stylingPackage?.name === "nativewind") { %>
93
- "tailwindcss": "3.3.2",
103
+ "tailwindcss": "^3.4.0",
94
104
  <% } %>
95
105
  <% if (props.stylingPackage?.name === "tamagui") { %>
96
106
  "@tamagui/babel-plugin": "1.74.8",
@@ -102,14 +112,12 @@
102
112
  },
103
113
  <% if (props.navigationPackage?.name === 'expo-router') { %>
104
114
  "resolutions": {
105
- "react-refresh": "~0.14.0",
106
115
  "expo-modules-core": "~1.11.0"
107
116
  },
108
117
  "overrides": {
109
- "react-refresh": "~0.14.0",
110
118
  "expo-modules-core": "~1.11.0"
111
119
  },
112
- <% } else { %>
120
+ <% } else { %>
113
121
  "main": "node_modules/expo/AppEntry.js",
114
122
  <% } %>
115
123
  <% if (props.navigationPackage?.type === "navigation") { %>
@@ -0,0 +1,41 @@
1
+ import FontAwesome from '@expo/vector-icons/FontAwesome';
2
+ import { Tabs } from 'expo-router';
3
+ import { StyleSheet } from 'react-native';
4
+
5
+ function TabBarIcon(props: {
6
+ name: React.ComponentProps<typeof FontAwesome>['name'];
7
+ color: string;
8
+ }) {
9
+ return <FontAwesome size={28} style={styles.tabBarIcon} {...props} />;
10
+ }
11
+
12
+ export default function TabLayout() {
13
+ return (
14
+ <Tabs
15
+ screenOptions={{
16
+ headerShown: false,
17
+ tabBarActiveTintColor: 'black',
18
+ }}>
19
+ <Tabs.Screen
20
+ name="index"
21
+ options={{
22
+ title: 'Tab One',
23
+ tabBarIcon: ({ color }) => <TabBarIcon name="code" color={color} />,
24
+ }}
25
+ />
26
+ <Tabs.Screen
27
+ name="two"
28
+ options={{
29
+ title: 'Tab Two',
30
+ tabBarIcon: ({ color }) => <TabBarIcon name="code" color={color} />,
31
+ }}
32
+ />
33
+ </Tabs>
34
+ );
35
+ }
36
+
37
+ const styles = StyleSheet.create({
38
+ tabBarIcon: {
39
+ marginBottom: -3,
40
+ },
41
+ });
@@ -0,0 +1,88 @@
1
+ <% if (props.stylingPackage?.name === 'nativewind') { %>
2
+ import { Text, View } from 'react-native';
3
+ <% } else if (props.stylingPackage?.name === 'tamagui') { %>
4
+ import { YStack, H2, Separator, Theme } from 'tamagui';
5
+ <% } else if (props.stylingPackage?.name === 'restyle') { %>
6
+ import { Box, Text } from 'theme';
7
+ <% } else if (props.stylingPackage?.name === 'unistyles') { %>
8
+ import { useStyles } from 'react-native-unistyles'
9
+ import { Text, View } from 'react-native';
10
+ <% } else { %>
11
+ import { StyleSheet, Text, View } from 'react-native';
12
+ <% } %>
13
+
14
+ import EditScreenInfo from '../../../components/edit-screen-info';
15
+
16
+ export default function TabOneScreen() {
17
+ <% if (props.stylingPackage?.name === 'unistyles') { %>
18
+ const { theme } = useStyles()
19
+
20
+ return (
21
+ <View style={theme.components.container}>
22
+ <Text style={theme.components.title}>Tab One</Text>
23
+ <View style={theme.components.separator} />
24
+ <EditScreenInfo path='app/(drawer)/(tabs)/index.tsx' />
25
+ </View>
26
+ );
27
+ <% } else if (props.stylingPackage?.name === 'nativewind') { %>
28
+ return (
29
+ <View className={styles.container}>
30
+ <Text className={styles.title}>Tab One</Text>
31
+ <View className={styles.separator} />
32
+ <EditScreenInfo path='app/(drawer)/(tabs)/index.tsx' />
33
+ </View>
34
+ );
35
+ <% } else if (props.stylingPackage?.name === 'tamagui') { %>
36
+ return (
37
+ <Theme name='light'>
38
+ <YStack flex={1} alignItems='center' justifyContent='center'>
39
+ <H2>Tab One</H2>
40
+ <Separator />
41
+ <EditScreenInfo path='app/(drawer)/(tabs)/index.tsx' />
42
+ </YStack>
43
+ </Theme>
44
+ );
45
+ <% } else if (props.stylingPackage?.name === 'restyle') { %>
46
+ return (
47
+ <Box flex={1} alignItems='center' justifyContent='center'>
48
+ <Text variant='title'>Tab One</Text>
49
+ <Box height={1} marginVertical='l_32' width='80%' />
50
+ <EditScreenInfo path='app/(drawer)/(tabs)/index.tsx' />
51
+ </Box>
52
+ );
53
+ <% } else { %>
54
+ return (
55
+ <View style={styles.container}>
56
+ <Text style={styles.title}>Tab One</Text>
57
+ <View style={styles.separator} />
58
+ <EditScreenInfo path='app/(drawer)/(tabs)/index.tsx' />
59
+ </View>
60
+ );
61
+ <% } %>
62
+ }
63
+
64
+ <% if (props.stylingPackage?.name === 'nativewind') { %>
65
+ const styles = {
66
+ container: `items-center flex-1 justify-center`,
67
+ separator: `h-[1px] my-7 w-4/5 bg-gray-200`,
68
+ title: `text-xl font-bold`
69
+ };
70
+ <% } else if (props.stylingPackage?.name === 'stylesheet') { %>
71
+ const styles = StyleSheet.create({
72
+ container: {
73
+ alignItems: 'center',
74
+ flex: 1,
75
+ justifyContent: 'center',
76
+ },
77
+ separator: {
78
+ backgroundColor: '#d1d5db',
79
+ height: 1,
80
+ marginVertical: 30,
81
+ width: '80%',
82
+ },
83
+ title: {
84
+ fontSize: 20,
85
+ fontWeight: 'bold',
86
+ }
87
+ });
88
+ <% } %>
@@ -0,0 +1,88 @@
1
+ <% if (props.stylingPackage?.name === 'nativewind') { %>
2
+ import { Text, View } from 'react-native';
3
+ <% } else if (props.stylingPackage?.name === 'tamagui') { %>
4
+ import { YStack, H2, Separator, Theme } from 'tamagui';
5
+ <% } else if (props.stylingPackage?.name === 'restyle') { %>
6
+ import { Box, Text } from 'theme';
7
+ <% } else if (props.stylingPackage?.name === 'unistyles') { %>
8
+ import { useStyles } from 'react-native-unistyles'
9
+ import { Text, View } from 'react-native';
10
+ <% } else { %>
11
+ import { StyleSheet, Text, View } from 'react-native';
12
+ <% } %>
13
+
14
+ import EditScreenInfo from '../../../components/edit-screen-info';
15
+
16
+ export default function TabTwoScreen() {
17
+ <% if (props.stylingPackage?.name === 'unistyles') { %>
18
+ const { theme } = useStyles()
19
+
20
+ return (
21
+ <View style={theme.components.container}>
22
+ <Text style={theme.components.title}>Tab Two</Text>
23
+ <View style={theme.components.separator} />
24
+ <EditScreenInfo path='app/(drawer)/(tabs)/two.tsx' />
25
+ </View>
26
+ );
27
+ <% } else if (props.stylingPackage?.name === 'nativewind') { %>
28
+ return (
29
+ <View className={styles.container}>
30
+ <Text className={styles.title}>Tab Two</Text>
31
+ <View className={styles.separator} />
32
+ <EditScreenInfo path='app/(drawer)/(tabs)/two.tsx' />
33
+ </View>
34
+ );
35
+ <% } else if (props.stylingPackage?.name === 'tamagui') { %>
36
+ return (
37
+ <Theme name='light'>
38
+ <YStack flex={1} alignItems='center' justifyContent='center'>
39
+ <H2>Tab Two</H2>
40
+ <Separator />
41
+ <EditScreenInfo path='app/(drawer)/(tabs)/two.tsx' />
42
+ </YStack>
43
+ </Theme>
44
+ );
45
+ <% } else if (props.stylingPackage?.name === 'restyle') { %>
46
+ return (
47
+ <Box flex={1} alignItems='center' justifyContent='center'>
48
+ <Text variant='title'>Tab Two</Text>
49
+ <Box height={1} marginVertical='l_32' width='80%' />
50
+ <EditScreenInfo path='app/(drawer)/(tabs)/two.tsx' />
51
+ </Box>
52
+ );
53
+ <% } else { %>
54
+ return (
55
+ <View style={styles.container}>
56
+ <Text style={styles.title}>Tab Two</Text>
57
+ <View style={styles.separator} />
58
+ <EditScreenInfo path='app/(drawer)/(tabs)/two.tsx' />
59
+ </View>
60
+ );
61
+ <% } %>
62
+ }
63
+
64
+ <% if (props.stylingPackage?.name === 'nativewind') { %>
65
+ const styles = {
66
+ container: `items-center flex-1 justify-center`,
67
+ separator: `h-[1px] my-7 w-4/5 bg-gray-200`,
68
+ title: `text-xl font-bold`
69
+ };
70
+ <% } else if (props.stylingPackage?.name === 'stylesheet') { %>
71
+ const styles = StyleSheet.create({
72
+ container: {
73
+ alignItems: 'center',
74
+ flex: 1,
75
+ justifyContent: 'center',
76
+ },
77
+ separator: {
78
+ backgroundColor: '#d1d5db',
79
+ height: 1,
80
+ marginVertical: 30,
81
+ width: '80%',
82
+ },
83
+ title: {
84
+ fontSize: 20,
85
+ fontWeight: 'bold',
86
+ }
87
+ });
88
+ <% } %>