create-expo-stack 2.4.0-next.e5da919 → 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 (33) hide show
  1. package/build/commands/create-expo-stack.js +30 -16
  2. package/build/templates/base/App.tsx.ejs +3 -0
  3. package/build/templates/base/babel.config.js.ejs +10 -11
  4. package/build/templates/base/package.json.ejs +25 -21
  5. package/build/templates/packages/expo-router/drawer/app/(drawer)/(tabs)/_layout.tsx.ejs +41 -0
  6. package/build/templates/packages/expo-router/drawer/app/(drawer)/(tabs)/index.tsx.ejs +88 -0
  7. package/build/templates/packages/expo-router/drawer/app/(drawer)/(tabs)/two.tsx.ejs +88 -0
  8. package/build/templates/packages/expo-router/drawer/app/(drawer)/_layout.tsx.ejs +43 -19
  9. package/build/templates/packages/expo-router/drawer/app/(drawer)/index.tsx.ejs +3 -0
  10. package/build/templates/packages/expo-router/drawer/app/_layout.tsx.ejs +35 -30
  11. package/build/templates/packages/expo-router/drawer/app/modal.tsx.ejs +96 -0
  12. package/build/templates/packages/expo-router/drawer/components/edit-screen-info.tsx.ejs +153 -0
  13. package/build/templates/packages/expo-router/metro.config.js.ejs +16 -0
  14. package/build/templates/packages/expo-router/stack/app/_layout.tsx.ejs +3 -0
  15. package/build/templates/packages/expo-router/tabs/app/(tabs)/index.tsx.ejs +1 -0
  16. package/build/templates/packages/expo-router/tabs/app/_layout.tsx.ejs +3 -0
  17. package/build/templates/packages/firebase/metro.config.js.ejs +9 -10
  18. package/build/templates/packages/nativewind/global.css +3 -0
  19. package/build/templates/packages/nativewind/metro.config.js +7 -0
  20. package/build/templates/packages/nativewind/tailwind.config.js.ejs +1 -0
  21. package/build/templates/packages/react-navigation/App.tsx.ejs +3 -0
  22. package/build/templates/packages/react-navigation/navigation/drawer-navigator.tsx.ejs +41 -6
  23. package/build/templates/packages/react-navigation/navigation/index.tsx.ejs +3 -2
  24. package/build/templates/packages/react-navigation/navigation/tab-navigator.tsx.ejs +27 -20
  25. package/build/templates/packages/react-navigation/screens/home.tsx.ejs +83 -0
  26. package/build/types/types.d.ts +1 -1
  27. package/build/utilities/configureProjectFiles.js +19 -8
  28. package/build/utilities/generateProjectFiles.js +2 -2
  29. package/build/utilities/runCLI.js +2 -2
  30. package/build/utilities/showHelp.js +2 -1
  31. package/package.json +66 -66
  32. package/build/templates/packages/expo-router/drawer/app/(drawer)/news.tsx.ejs +0 -83
  33. package/build/templates/packages/expo-router/metro.config.js +0 -11
@@ -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
  }
@@ -271,8 +285,8 @@ var command = {
271
285
  if (((_a = p.options) === null || _a === void 0 ? void 0 : _a.type) === 'tabs') {
272
286
  script += '--tabs ';
273
287
  }
274
- else if (((_b = p.options) === null || _b === void 0 ? void 0 : _b.type) === 'drawer') {
275
- script += '--drawer ';
288
+ else if (((_b = p.options) === null || _b === void 0 ? void 0 : _b.type) === 'drawer + tabs') {
289
+ script += '--drawer+tabs ';
276
290
  }
277
291
  }
278
292
  });
@@ -310,19 +324,19 @@ var command = {
310
324
  _d.label = 17;
311
325
  case 17: return [3 /*break*/, 19];
312
326
  case 18:
313
- error_2 = _d.sent();
314
- if (error_2 === '') {
327
+ err_2 = _d.sent();
328
+ if (err_2 === '') {
315
329
  // user cancelled/exited the interactive CLI
316
- return [2 /*return*/, void success("\nCancelled... \uD83D\uDC4B ")];
330
+ return [2 /*return*/, void success("\nCancelled... \uD83D\uDC4B \n")];
317
331
  }
318
332
  // TODO: delete all files with projectName
319
333
  // await removeAsync(cliResults.projectName);
320
334
  printSomethingWentWrong();
321
- throw error_2;
335
+ throw err_2;
322
336
  case 19: return [2 /*return*/];
323
337
  }
324
338
  });
325
339
  }); }
326
340
  };
327
341
  exports.default = command;
328
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFN0IsMENBU3NCO0FBQ3RCLDBDQUFnRTtBQUNoRSxrQ0FBeUQ7QUFDekQsMkZBQXFFO0FBQ3JFLHdFQUF1RTtBQUV2RSxJQUFNLE9BQU8sR0FBbUI7SUFDOUIsSUFBSSxFQUFFLG1CQUFtQjtJQUN6QixXQUFXLEVBQUUsMkJBQTJCO0lBQ3hDLEdBQUcsRUFBRSxVQUFPLE9BQU87Ozs7O29CQUVmLEtBS0UsT0FBTyxXQUwwQixFQUFyQixNQUFNLFlBQUEsRUFBRSxXQUFXLGlCQUFBLEVBQ2pDLEtBSUUsT0FBTyxXQUpxQixFQUFoQixLQUFLLFdBQUEsRUFBRSxPQUFPLGFBQUEsRUFDNUIsS0FHRSxPQUFPLE1BSG1DLEVBQW5DLElBQUksVUFBQSxFQUFFLFNBQVMsZUFBQSxFQUFFLE9BQU8sYUFBQSxFQUFFLE9BQU8sYUFBQSxFQUMxQyxNQUFNLEdBRUosT0FBTyxPQUZILEVBQ0ssVUFBVSxHQUNuQixPQUFPLG1CQURZLENBQ1g7b0JBRU4sdUJBQXVCLEdBQUc7d0JBQzlCLElBQUksQ0FBQyx1RUFBNkQsQ0FBQyxDQUFDO3dCQUNwRSxJQUFJLENBQ0YsMkhBQTJILENBQzVILENBQUM7d0JBQ0YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNYLENBQUMsQ0FBQztvQkFDRixJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUM5QixJQUFBLG9CQUFRLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQzt3QkFFbkMsc0JBQU87b0JBQ1Qs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
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") {%>
@@ -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,7 +27,7 @@
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
31
  <% } %>
32
32
 
33
33
  <% if (props.stylingPackage?.name === "unistyles") { %>
@@ -36,36 +36,42 @@
36
36
 
37
37
  <% if (props.navigationPackage?.type === "navigation") { %>
38
38
  "@react-navigation/native": "^6.1.7",
39
- "react-native-gesture-handler": "~2.12.0",
40
- "react-native-safe-area-context": "^4.6.3",
41
- "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",
42
42
  <% } %>
43
43
 
44
44
  <% if (props.navigationPackage?.name === "react-navigation") { %>
45
45
  "@react-navigation/stack": "^6.3.17",
46
- "@expo/vector-icons": "^13.0.0",
46
+ "@expo/vector-icons": "^14.0.0",
47
47
  <% } %>
48
48
 
49
49
  <% if ((props.navigationPackage?.name === "react-navigation") && (props.stylingPackage?.name === "tamagui")) { %>
50
- "expo-splash-screen": "~0.20.5",
50
+ "expo-splash-screen": "~0.26.4",
51
51
  <% } %>
52
52
 
53
53
  <% if (props.navigationPackage?.options.type === "tabs" && props.navigationPackage?.name === "react-navigation") { %>
54
54
  "@react-navigation/bottom-tabs": "^6.5.8",
55
55
  <% } %>
56
56
 
57
- <% if (props.navigationPackage?.options.type === "drawer") { %>
57
+ <% if ((props.navigationPackage?.options.type === "drawer + tabs") && (props.navigationPackage?.name === "react-navigation")) { %>
58
58
  "@react-navigation/drawer": "^6.6.6",
59
- "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",
60
64
  <% } %>
61
65
 
62
66
  <% if (props.navigationPackage?.name === "expo-router") { %>
63
- "@expo/vector-icons": "^13.0.0",
64
- "expo-linking": "~5.0.2",
65
- "expo-router": "^2.0.0",
66
- "expo-system-ui": "~2.4.0",
67
- "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",
68
73
  "react-dom": "18.2.0",
74
+ "react-native-reanimated": "~3.6.2",
69
75
  "react-native-web": "~0.19.6",
70
76
  <% } %>
71
77
 
@@ -80,10 +86,10 @@
80
86
  "react-native-url-polyfill": "^2.0.0",
81
87
  <% } %>
82
88
 
83
- "expo": "~49.0.11",
84
- "expo-status-bar": "~1.6.0",
89
+ "expo": "~50.0.4",
90
+ "expo-status-bar": "~1.11.1",
85
91
  "react": "18.2.0",
86
- "react-native": "0.72.6"
92
+ "react-native": "0.73.2"
87
93
  },
88
94
  "devDependencies": {
89
95
  "@babel/core": "^7.20.0",
@@ -94,7 +100,7 @@
94
100
  "eslint-config-universe": "^12.0.0",
95
101
  "prettier": "^3.0.3",
96
102
  <% if (props.stylingPackage?.name === "nativewind") { %>
97
- "tailwindcss": "3.3.2",
103
+ "tailwindcss": "^3.4.0",
98
104
  <% } %>
99
105
  <% if (props.stylingPackage?.name === "tamagui") { %>
100
106
  "@tamagui/babel-plugin": "1.74.8",
@@ -106,14 +112,12 @@
106
112
  },
107
113
  <% if (props.navigationPackage?.name === 'expo-router') { %>
108
114
  "resolutions": {
109
- "react-refresh": "~0.14.0",
110
115
  "expo-modules-core": "~1.11.0"
111
116
  },
112
117
  "overrides": {
113
- "react-refresh": "~0.14.0",
114
118
  "expo-modules-core": "~1.11.0"
115
119
  },
116
- <% } else { %>
120
+ <% } else { %>
117
121
  "main": "node_modules/expo/AppEntry.js",
118
122
  <% } %>
119
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
+ <% } %>
@@ -1,25 +1,49 @@
1
+ import { FontAwesome, Ionicons, MaterialIcons } from '@expo/vector-icons';
2
+ import { Link } from 'expo-router';
1
3
  import { Drawer } from 'expo-router/drawer';
2
- import { Ionicons } from '@expo/vector-icons';
4
+ import { Pressable, StyleSheet } from 'react-native';
3
5
 
4
6
  const DrawerLayout = () => (
5
- <Drawer>
6
- <Drawer.Screen
7
- name="index"
8
- options={{
9
- headerTitle: 'Home',
10
- drawerLabel: 'Home',
11
- drawerIcon: ({ size, color }) => <Ionicons name="home-outline" size={size} color={color} />
12
- }}
13
- />
14
- <Drawer.Screen
15
- name="news"
16
- options={{
17
- headerTitle: 'Newsfeed',
18
- drawerLabel: 'News',
19
- drawerIcon: ({ size, color }) => <Ionicons name="newspaper-outline" size={size} color={color} />
20
- }}
21
- />
22
- </Drawer>
7
+ <Drawer>
8
+ <Drawer.Screen
9
+ name="index"
10
+ options={{
11
+ headerTitle: 'Home',
12
+ drawerLabel: 'Home',
13
+ drawerIcon: ({ size, color }) => <Ionicons name="home-outline" size={size} color={color} />,
14
+ }}
15
+ />
16
+ <Drawer.Screen
17
+ name="(tabs)"
18
+ options={{
19
+ headerTitle: 'Tabs',
20
+ drawerLabel: 'Tabs',
21
+ drawerIcon: ({ size, color }) => (
22
+ <MaterialIcons name="border-bottom" size={size} color={color} />
23
+ ),
24
+ headerRight: () => (
25
+ <Link href="/modal" asChild>
26
+ <Pressable>
27
+ {({ pressed }) => (
28
+ <FontAwesome
29
+ name="info-circle"
30
+ size={25}
31
+ color="gray"
32
+ style={[styles.headerRight, { opacity: pressed ? 0.5 : 1 }]}
33
+ />
34
+ )}
35
+ </Pressable>
36
+ </Link>
37
+ ),
38
+ }}
39
+ />
40
+ </Drawer>
23
41
  );
24
42
 
43
+ const styles = StyleSheet.create({
44
+ headerRight: {
45
+ marginRight: 15,
46
+ },
47
+ });
48
+
25
49
  export default DrawerLayout;
@@ -11,6 +11,8 @@
11
11
  import { StyleSheet, Text, View } from "react-native";
12
12
  <% } %>
13
13
 
14
+ import EditScreenInfo from "../../components/edit-screen-info";
15
+
14
16
  const Page = () => {
15
17
  <% if (props.stylingPackage?.name === "unistyles") { %>
16
18
  const { theme } = useStyles()
@@ -71,6 +73,7 @@ export default Page;
71
73
  justifyContent: "center",
72
74
  },
73
75
  separator: {
76
+ backgroundColor: '#d1d5db',
74
77
  height: 1,
75
78
  marginVertical: 30,
76
79
  width: "80%",