create-expo-stack 2.5.0-next.cfc261a → 2.5.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 (32) hide show
  1. package/README.md +209 -7
  2. package/build/commands/create-expo-stack.js +51 -53
  3. package/build/templates/base/components/Container.tsx.ejs +13 -0
  4. package/build/templates/base/package.json.ejs +1 -1
  5. package/build/templates/packages/expo-router/drawer/app/(drawer)/(tabs)/index.tsx.ejs +3 -10
  6. package/build/templates/packages/expo-router/drawer/app/(drawer)/(tabs)/two.tsx.ejs +4 -11
  7. package/build/templates/packages/expo-router/drawer/app/(drawer)/index.tsx.ejs +4 -10
  8. package/build/templates/packages/expo-router/drawer/app/+not-found.tsx.ejs +17 -22
  9. package/build/templates/packages/expo-router/drawer/app/modal.tsx.ejs +2 -1
  10. package/build/templates/packages/expo-router/stack/app/+not-found.tsx.ejs +13 -18
  11. package/build/templates/packages/expo-router/stack/app/details.tsx.ejs +6 -12
  12. package/build/templates/packages/expo-router/stack/app/index.tsx.ejs +5 -13
  13. package/build/templates/packages/expo-router/tabs/app/modal.tsx.ejs +2 -1
  14. package/build/templates/packages/nativewind/components/Button.tsx.ejs +2 -2
  15. package/build/templates/packages/nativewind/components/Container.tsx.ejs +9 -0
  16. package/build/templates/packages/nativewind/tailwind.config.js.ejs +1 -1
  17. package/build/templates/packages/restyle/components/Button.tsx.ejs +3 -2
  18. package/build/templates/packages/restyle/components/Container.tsx.ejs +6 -0
  19. package/build/templates/packages/tamagui/components/Button.tsx.ejs +1 -1
  20. package/build/templates/packages/tamagui/components/Container.tsx.ejs +6 -0
  21. package/build/templates/packages/unistyles/components/Button.tsx.ejs +1 -1
  22. package/build/templates/packages/unistyles/components/Container.tsx.ejs +9 -0
  23. package/build/templates/packages/unistyles/theme.ts.ejs +2 -1
  24. package/build/types/utilities/getPackageManager.d.ts +1 -0
  25. package/build/types/utilities/validateProjectName.d.ts +1 -1
  26. package/build/utilities/configureProjectFiles.js +10 -2
  27. package/build/utilities/getPackageManager.js +9 -2
  28. package/build/utilities/printOutput.js +4 -2
  29. package/build/utilities/renderTitle.js +8 -1
  30. package/build/utilities/runCLI.js +114 -40
  31. package/build/utilities/validateProjectName.js +14 -8
  32. package/package.json +66 -66
package/README.md CHANGED
@@ -12,14 +12,20 @@
12
12
 
13
13
  ## Sponsors
14
14
 
15
- NativeWind
16
- Restyle
17
- StyleSheets
18
- Tamagui
19
-
20
15
  Support this project by <a href="https://github.com/sponsors/danstepanov" target="_blank">becoming a sponsor</a>. Your logo will show up here with a link to your website.
21
16
 
22
- <a href="https://galaxies.dev/" target="_blank" style="margin-top: 10px;margin-right: 10px; margin-bottom: 10px;" ><img src="https://expostack.dev/galaxies-logo.svg" style="border-radius: 50%;"></a> <a href="https://expo.dev/" target="_blank" style="margin: 10px;"><img src="https://expostack.dev/expo-logo.svg" style="border-radius: 50%;"></a>
17
+ <a href="https://galaxies.dev/" target="_blank" style="margin-top: 10px;margin-right: 10px; margin-bottom: 10px;" >
18
+ <img src="https://expostack.dev/galaxies-logo.svg" style="border-radius: 50%;">
19
+ </a>
20
+ <a href="https://expo.dev/" target="_blank" style="margin: 10px;">
21
+ <img src="https://expostack.dev/expo-logo.svg" style="border-radius: 50%;">
22
+ </a>
23
+ <a href="https://github.com/derkweijers" target="_blank" style="margin: 10px;">
24
+ <img src="https://avatars.githubusercontent.com/u/11644998?v=4" height="64" width="64" style="border-radius: 50%;">
25
+ </a>
26
+ <a href="https://paradigmpost.com" target="_blank" style="margin: 10px;">
27
+ <img src="https://expostack.dev/paradigmpost.png" height="64" width="64" style="border-radius: 50%;">
28
+ </a>
23
29
 
24
30
  ## Description
25
31
 
@@ -55,7 +61,7 @@ Each project is generated based on the results of the CLI, on a per-file basis.
55
61
  | Expo Status Bar | Status Bar Library | v1 | Status bar support |
56
62
  | Expo System UI | System UI Library | v2 | System UI support |
57
63
  | Expo Web Browser | Web Browser Library | v12 | Open links in the browser |
58
- | NativeWind | UI Framework | v2 | Tailwind CSS for React Native |
64
+ | NativeWind | UI Framework | v4 | Tailwind CSS for React Native |
59
65
  | Restyle | UI Framework | v2 | Theme-based styling library for React Native |
60
66
  | Tamagui | UI Framework | v1 | Universal UI with a smart optimizing compiler |
61
67
  | Unistyles | UI Framework | v2 | Superset of StyleSheet |
@@ -85,6 +91,202 @@ If you'd like help with your React Native/Expo app or are just looking for a tec
85
91
  Thanks go to these wonderful people:
86
92
 
87
93
  <!-- readme: contributors -start -->
94
+ <table>
95
+ <tr>
96
+ <td align="center">
97
+ <a href="https://github.com/danstepanov">
98
+ <img src="https://avatars.githubusercontent.com/u/5482800?v=4" width="100;" alt="danstepanov"/>
99
+ <br />
100
+ <sub><b>Dan Stepanov</b></sub>
101
+ </a>
102
+ </td>
103
+ <td align="center">
104
+ <a href="https://github.com/hqasmei">
105
+ <img src="https://avatars.githubusercontent.com/u/39573679?v=4" width="100;" alt="hqasmei"/>
106
+ <br />
107
+ <sub><b>Hosna Qasmei</b></sub>
108
+ </a>
109
+ </td>
110
+ <td align="center">
111
+ <a href="https://github.com/sammoore">
112
+ <img src="https://avatars.githubusercontent.com/u/2035492?v=4" width="100;" alt="sammoore"/>
113
+ <br />
114
+ <sub><b>Sam Moore</b></sub>
115
+ </a>
116
+ </td>
117
+ <td align="center">
118
+ <a href="https://github.com/ernestoresende">
119
+ <img src="https://avatars.githubusercontent.com/u/55156145?v=4" width="100;" alt="ernestoresende"/>
120
+ <br />
121
+ <sub><b>Ernesto Resende</b></sub>
122
+ </a>
123
+ </td>
124
+ <td align="center">
125
+ <a href="https://github.com/frankcalise">
126
+ <img src="https://avatars.githubusercontent.com/u/374022?v=4" width="100;" alt="frankcalise"/>
127
+ <br />
128
+ <sub><b>Frank Calise</b></sub>
129
+ </a>
130
+ </td>
131
+ <td align="center">
132
+ <a href="https://github.com/ludwig-pro">
133
+ <img src="https://avatars.githubusercontent.com/u/62896243?v=4" width="100;" alt="ludwig-pro"/>
134
+ <br />
135
+ <sub><b>Ludwig</b></sub>
136
+ </a>
137
+ </td></tr>
138
+ <tr>
139
+ <td align="center">
140
+ <a href="https://github.com/PickleNik">
141
+ <img src="https://avatars.githubusercontent.com/u/31113245?v=4" width="100;" alt="PickleNik"/>
142
+ <br />
143
+ <sub><b>Null</b></sub>
144
+ </a>
145
+ </td>
146
+ <td align="center">
147
+ <a href="https://github.com/kratos-respawned">
148
+ <img src="https://avatars.githubusercontent.com/u/87561983?v=4" width="100;" alt="kratos-respawned"/>
149
+ <br />
150
+ <sub><b>Gaurav Bhandari</b></sub>
151
+ </a>
152
+ </td>
153
+ <td align="center">
154
+ <a href="https://github.com/finnbayer">
155
+ <img src="https://avatars.githubusercontent.com/u/115630860?v=4" width="100;" alt="finnbayer"/>
156
+ <br />
157
+ <sub><b>Finn Bayer</b></sub>
158
+ </a>
159
+ </td>
160
+ <td align="center">
161
+ <a href="https://github.com/saimon24">
162
+ <img src="https://avatars.githubusercontent.com/u/2514208?v=4" width="100;" alt="saimon24"/>
163
+ <br />
164
+ <sub><b>Simon Grimm</b></sub>
165
+ </a>
166
+ </td>
167
+ <td align="center">
168
+ <a href="https://github.com/todevmilen">
169
+ <img src="https://avatars.githubusercontent.com/u/78319110?v=4" width="100;" alt="todevmilen"/>
170
+ <br />
171
+ <sub><b>Milen Todev</b></sub>
172
+ </a>
173
+ </td>
174
+ <td align="center">
175
+ <a href="https://github.com/alitnk">
176
+ <img src="https://avatars.githubusercontent.com/u/35243344?v=4" width="100;" alt="alitnk"/>
177
+ <br />
178
+ <sub><b>Alireza Zamani</b></sub>
179
+ </a>
180
+ </td></tr>
181
+ <tr>
182
+ <td align="center">
183
+ <a href="https://github.com/dannyhw">
184
+ <img src="https://avatars.githubusercontent.com/u/3481514?v=4" width="100;" alt="dannyhw"/>
185
+ <br />
186
+ <sub><b>Daniel Williams</b></sub>
187
+ </a>
188
+ </td>
189
+ <td align="center">
190
+ <a href="https://github.com/catalinmiron">
191
+ <img src="https://avatars.githubusercontent.com/u/2805320?v=4" width="100;" alt="catalinmiron"/>
192
+ <br />
193
+ <sub><b>Catalin Miron</b></sub>
194
+ </a>
195
+ </td>
196
+ <td align="center">
197
+ <a href="https://github.com/b0iq">
198
+ <img src="https://avatars.githubusercontent.com/u/106549013?v=4" width="100;" alt="b0iq"/>
199
+ <br />
200
+ <sub><b>Null</b></sub>
201
+ </a>
202
+ </td>
203
+ <td align="center">
204
+ <a href="https://github.com/coyksdev">
205
+ <img src="https://avatars.githubusercontent.com/u/19565694?v=4" width="100;" alt="coyksdev"/>
206
+ <br />
207
+ <sub><b>Gerald</b></sub>
208
+ </a>
209
+ </td>
210
+ <td align="center">
211
+ <a href="https://github.com/andrew-levy">
212
+ <img src="https://avatars.githubusercontent.com/u/29075740?v=4" width="100;" alt="andrew-levy"/>
213
+ <br />
214
+ <sub><b>Andrew Levy</b></sub>
215
+ </a>
216
+ </td>
217
+ <td align="center">
218
+ <a href="https://github.com/gialencar">
219
+ <img src="https://avatars.githubusercontent.com/u/11895696?v=4" width="100;" alt="gialencar"/>
220
+ <br />
221
+ <sub><b>Gilson Alencar</b></sub>
222
+ </a>
223
+ </td></tr>
224
+ <tr>
225
+ <td align="center">
226
+ <a href="https://github.com/mwarger">
227
+ <img src="https://avatars.githubusercontent.com/u/686823?v=4" width="100;" alt="mwarger"/>
228
+ <br />
229
+ <sub><b>Mat Warger</b></sub>
230
+ </a>
231
+ </td>
232
+ <td align="center">
233
+ <a href="https://github.com/gabimoncha">
234
+ <img src="https://avatars.githubusercontent.com/u/39256258?v=4" width="100;" alt="gabimoncha"/>
235
+ <br />
236
+ <sub><b>Gabimoncha</b></sub>
237
+ </a>
238
+ </td>
239
+ <td align="center">
240
+ <a href="https://github.com/gwenoleR">
241
+ <img src="https://avatars.githubusercontent.com/u/10418241?v=4" width="100;" alt="gwenoleR"/>
242
+ <br />
243
+ <sub><b>Null</b></sub>
244
+ </a>
245
+ </td>
246
+ <td align="center">
247
+ <a href="https://github.com/zamplyy">
248
+ <img src="https://avatars.githubusercontent.com/u/26258710?v=4" width="100;" alt="zamplyy"/>
249
+ <br />
250
+ <sub><b>Joar Karlsson</b></sub>
251
+ </a>
252
+ </td>
253
+ <td align="center">
254
+ <a href="https://github.com/Joehoel">
255
+ <img src="https://avatars.githubusercontent.com/u/31251240?v=4" width="100;" alt="Joehoel"/>
256
+ <br />
257
+ <sub><b>Joël Kuijper</b></sub>
258
+ </a>
259
+ </td>
260
+ <td align="center">
261
+ <a href="https://github.com/asapMaki">
262
+ <img src="https://avatars.githubusercontent.com/u/30200380?v=4" width="100;" alt="asapMaki"/>
263
+ <br />
264
+ <sub><b>Mahir Kadić</b></sub>
265
+ </a>
266
+ </td></tr>
267
+ <tr>
268
+ <td align="center">
269
+ <a href="https://github.com/Hacksore">
270
+ <img src="https://avatars.githubusercontent.com/u/996134?v=4" width="100;" alt="Hacksore"/>
271
+ <br />
272
+ <sub><b>Sean Boult</b></sub>
273
+ </a>
274
+ </td>
275
+ <td align="center">
276
+ <a href="https://github.com/bautistaaa">
277
+ <img src="https://avatars.githubusercontent.com/u/3660667?v=4" width="100;" alt="bautistaaa"/>
278
+ <br />
279
+ <sub><b>Null</b></sub>
280
+ </a>
281
+ </td>
282
+ <td align="center">
283
+ <a href="https://github.com/debugtheworldbot">
284
+ <img src="https://avatars.githubusercontent.com/u/62830430?v=4" width="100;" alt="debugtheworldbot"/>
285
+ <br />
286
+ <sub><b>Pipizhu</b></sub>
287
+ </a>
288
+ </td></tr>
289
+ </table>
88
290
  <!-- readme: contributors -end -->
89
291
 
90
292
  [downloads-image]: https://img.shields.io/npm/dm/create-expo-stack?color=364fc7&logoColor=364fc7
@@ -46,6 +46,8 @@ var types_1 = require("../types");
46
46
  var clearStylingPackages_1 = __importDefault(require("../utilities/clearStylingPackages"));
47
47
  var validateProjectName_1 = require("../utilities/validateProjectName");
48
48
  var navigationValidationError = "You must pass in either --react-navigation or --expo-router if you want to use the --tabs or --drawer+tabs options";
49
+ var projectNameValidationError = "A project with the name";
50
+ var bunInstallationError = 'User cancelled to install recommended version of Bun.';
49
51
  var command = {
50
52
  name: 'create-expo-stack',
51
53
  description: 'Create a new Expo project',
@@ -69,9 +71,10 @@ var command = {
69
71
  useBlankTypescript = options.blank || false;
70
72
  optionsPassedIn = types_1.availablePackages.some(function (condition) { return options[condition] !== undefined; });
71
73
  cliResults = constants_1.defaultOptions;
74
+ cliResults.flags.packageManager = (0, utilities_1.getPackageManager)(toolbox, cliResults);
72
75
  _d.label = 1;
73
76
  case 1:
74
- _d.trys.push([1, 10, , 11]);
77
+ _d.trys.push([1, 7, , 9]);
75
78
  // 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
76
79
  if ((options.tabs || options['drawer+tabs']) &&
77
80
  !options.reactNavigation &&
@@ -86,41 +89,36 @@ var command = {
86
89
  return [4 /*yield*/, (0, utilities_1.renderTitle)(toolbox)];
87
90
  case 2:
88
91
  _d.sent();
89
- // TODO: this is hacky, figure out a way to do this better
90
- // set timeout for 1 second so that the title can render before the CLI runs
91
- return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 200); })];
92
- case 3:
93
- // TODO: this is hacky, figure out a way to do this better
94
- // set timeout for 1 second so that the title can render before the CLI runs
95
- _d.sent();
96
- if (!(!first && (options.ignite || !(useDefault || optionsPassedIn || skipCLI || useBlankTypescript)))) return [3 /*break*/, 5];
92
+ if (!(!first && (options.ignite || !(useDefault || optionsPassedIn || skipCLI || useBlankTypescript)))) return [3 /*break*/, 4];
97
93
  askName = {
98
94
  type: 'input',
99
95
  name: 'name',
100
96
  message: "What do you want to name your project? (".concat(constants_1.DEFAULT_APP_NAME, ")")
101
97
  };
102
98
  return [4 /*yield*/, prompt.ask(askName)];
103
- case 4:
99
+ case 3:
104
100
  name = (_d.sent()).name;
105
101
  // if name is undefined or empty string, use default name
106
102
  cliResults.projectName = name || constants_1.DEFAULT_APP_NAME;
107
- return [3 /*break*/, 6];
108
- case 5:
103
+ return [3 /*break*/, 5];
104
+ case 4:
109
105
  // Destructure the results but set the projectName if the first param is passed in
110
106
  cliResults.projectName = first || constants_1.DEFAULT_APP_NAME;
111
107
  pathSegments = cliResults.projectName.split('/');
112
108
  cliResults.projectName = pathSegments.pop(); // get last segment as the project name
113
- _d.label = 6;
109
+ _d.label = 5;
110
+ case 5:
111
+ // Validate the provided project name; check if the directory already exists
112
+ // - We may or may not be interactive, so conditionally pass in prompt.
113
+ // - Ignore validation if the overwrite option is passed in.
114
+ if (options.overwrite) {
115
+ cliResults.flags.overwrite = true;
116
+ }
117
+ return [4 /*yield*/, (0, validateProjectName_1.validateProjectName)(exists, removeAsync, !(useDefault || optionsPassedIn || skipCLI || useBlankTypescript) ? prompt : null, cliResults.projectName, success, cliResults.flags.overwrite)];
114
118
  case 6:
115
- if (!options.overwrite) return [3 /*break*/, 7];
116
- cliResults.flags.overwrite = true;
117
- return [3 /*break*/, 9];
118
- case 7: return [4 /*yield*/, (0, validateProjectName_1.validateProjectName)(exists, removeAsync, !(useDefault || optionsPassedIn || skipCLI || useBlankTypescript) ? prompt : null, cliResults.projectName)];
119
- case 8:
120
119
  _d.sent();
121
- _d.label = 9;
122
- case 9: return [3 /*break*/, 11];
123
- case 10:
120
+ return [3 /*break*/, 9];
121
+ case 7:
124
122
  err_1 = _d.sent();
125
123
  if (err_1 === '') {
126
124
  // user cancelled/exited the interactive CLI
@@ -130,31 +128,28 @@ var command = {
130
128
  // user tried passing in tabs/drawer option without passing in either expo router or react navigation
131
129
  return [2 /*return*/, void error("\n".concat(navigationValidationError, "\n"))];
132
130
  }
133
- // TODO: delete all files with projectName
134
- // await removeAsync(cliResults.projectName);
131
+ if (err_1.message.includes(projectNameValidationError)) {
132
+ return [2 /*return*/, void success("\nCancelled... \uD83D\uDC4B \n")];
133
+ }
134
+ // Delete all files with projectName
135
+ return [4 /*yield*/, removeAsync(cliResults.projectName)];
136
+ case 8:
137
+ // Delete all files with projectName
138
+ _d.sent();
135
139
  printSomethingWentWrong();
136
140
  throw err_1;
137
- case 11:
138
- _d.trys.push([11, 18, , 19]);
139
- if (!options.ignite) return [3 /*break*/, 13];
141
+ case 9:
142
+ _d.trys.push([9, 16, , 18]);
143
+ if (!options.ignite) return [3 /*break*/, 11];
140
144
  return [4 /*yield*/, (0, utilities_1.runIgnite)(toolbox, cliResults.projectName, cliResults)];
141
- case 12:
145
+ case 10:
142
146
  _d.sent();
143
- return [3 /*break*/, 17];
144
- case 13:
147
+ return [3 /*break*/, 15];
148
+ case 11:
145
149
  // Check if the user wants to not install dependencies and/or not initialize git, update cliResults accordingly
146
150
  cliResults.flags.noInstall =
147
151
  options.noInstall || (typeof options.install === 'boolean' && !options.install) || false;
148
152
  cliResults.flags.noGit = options.noGit || (typeof options.git === 'boolean' && !options.git) || false;
149
- cliResults.flags.packageManager = options.bun
150
- ? 'bun'
151
- : options.pnpm
152
- ? 'pnpm'
153
- : options.npm
154
- ? 'npm'
155
- : options.yarn
156
- ? 'yarn'
157
- : undefined;
158
153
  // Validate import alias string forward slash and asterisk
159
154
  if (typeof options.importAlias === 'string') {
160
155
  if (!options.importAlias.endsWith('/*')) {
@@ -162,16 +157,13 @@ var command = {
162
157
  }
163
158
  }
164
159
  cliResults.flags.importAlias = options.importAlias !== false && options['import-alias'] !== false;
165
- if (!!(useDefault || optionsPassedIn || skipCLI || useBlankTypescript)) return [3 /*break*/, 15];
160
+ if (!!(useDefault || optionsPassedIn || skipCLI || useBlankTypescript)) return [3 /*break*/, 13];
166
161
  return [4 /*yield*/, (0, utilities_1.runCLI)(toolbox, cliResults.projectName)];
167
- case 14:
162
+ case 12:
168
163
  // Run the CLI to prompt the user for input
169
164
  cliResults = _d.sent();
170
- _d.label = 15;
171
- case 15:
172
- if (!cliResults.flags.packageManager) {
173
- cliResults.flags.packageManager = 'npm';
174
- }
165
+ _d.label = 13;
166
+ case 13:
175
167
  // Update the cliResults with the options passed in via the command
176
168
  // Navigation packages
177
169
  if (options.reactNavigation || options['react-navigation'] || options.reactnavigation) {
@@ -322,24 +314,30 @@ var command = {
322
314
  formattedFiles = [];
323
315
  formattedFiles = (0, utilities_1.generateProjectFiles)(authenticationPackage, cliResults, files, formattedFiles, navigationPackage, packageManager, stylingPackage, toolbox, internalizationPackage);
324
316
  return [4 /*yield*/, (0, utilities_1.printOutput)(cliResults, formattedFiles, toolbox, stylingPackage)];
325
- case 16:
317
+ case 14:
326
318
  _d.sent();
327
- _d.label = 17;
328
- case 17: return [3 /*break*/, 19];
329
- case 18:
319
+ _d.label = 15;
320
+ case 15: return [3 /*break*/, 18];
321
+ case 16:
330
322
  err_2 = _d.sent();
331
323
  if (err_2 === '') {
332
324
  // user cancelled/exited the interactive CLI
333
325
  return [2 /*return*/, void success("\nCancelled... \uD83D\uDC4B \n")];
334
326
  }
335
- // TODO: delete all files with projectName
336
- // await removeAsync(cliResults.projectName);
327
+ if (err_2.message.includes(bunInstallationError)) {
328
+ return [2 /*return*/, void success("\nUser cancelled to install recommended version of Bun... \uD83D\uDC4B \n")];
329
+ }
330
+ // Delete all files with projectName
331
+ return [4 /*yield*/, removeAsync(cliResults.projectName)];
332
+ case 17:
333
+ // Delete all files with projectName
334
+ _d.sent();
337
335
  printSomethingWentWrong();
338
336
  throw err_2;
339
- case 19: return [2 /*return*/];
337
+ case 18: return [2 /*return*/];
340
338
  }
341
339
  });
342
340
  }); }
343
341
  };
344
342
  exports.default = command;
345
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFN0IsMENBU3NCO0FBQ3RCLDBDQUFnRTtBQUNoRSxrQ0FBeUQ7QUFDekQsMkZBQXFFO0FBQ3JFLHdFQUF1RTtBQUV2RSxJQUFNLHlCQUF5QixHQUFHLG9IQUFvSCxDQUFDO0FBRXZKLElBQU0sT0FBTyxHQUFtQjtJQUM5QixJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLFdBQVcsRUFBRSwyQkFBMkI7SUFDeEMsR0FBRyxFQUFFLFVBQU8sT0FBTzs7Ozs7b0JBRWYsS0FJRSxPQUFPLFdBSjBCLEVBQXJCLE1BQU0sWUFBQSxFQUFFLFdBQVcsaUJBQUEsRUFDakMsS0FHRSxPQUFPLFdBSHFCLEVBQWhCLEtBQUssV0FBQSxFQUFFLE9BQU8sYUFBQSxFQUM1QixLQUVFLE9BQU8sTUFGMEMsRUFBMUMsS0FBSyxXQUFBLEVBQUUsSUFBSSxVQUFBLEVBQUUsU0FBUyxlQUFBLEVBQUUsT0FBTyxhQUFBLEVBQUUsT0FBTyxhQUFBLEVBQ2pELE1BQU0sR0FDSixPQUFPLE9BREgsQ0FDSTtvQkFFTix1QkFBdUIsR0FBRzt3QkFDOUIsSUFBSSxDQUFDLHVFQUE2RCxDQUFDLENBQUM7d0JBQ3BFLElBQUksQ0FDRiwySEFBMkgsQ0FDNUgsQ0FBQzt3QkFDRixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ1gsQ0FBQyxDQUFDO29CQUNGLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQzlCLElBQUEsb0JBQVEsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxD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
343
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFN0IsMENBU3NCO0FBQ3RCLDBDQUFnRTtBQUNoRSxrQ0FBeUQ7QUFDekQsMkZBQXFFO0FBQ3JFLHdFQUF1RTtBQUV2RSxJQUFNLHlCQUF5QixHQUFHLG9IQUFvSCxDQUFDO0FBQ3ZKLElBQU0sMEJBQTBCLEdBQUcseUJBQXlCLENBQUM7QUFDN0QsSUFBTSxvQkFBb0IsR0FBRyx1REFBdUQsQ0FBQztBQUVyRixJQUFNLE9BQU8sR0FBbUI7SUFDOUIsSUFBSSxFQUFFLG1CQUFtQjtJQUN6QixXQUFXLEVBQUUsMkJBQTJCO0lBQ3hDLEdBQUcsRUFBRSxVQUFPLE9BQU87Ozs7O29CQUVmLEtBSUUsT0FBTyxXQUowQixFQUFyQixNQUFNLFlBQUEsRUFBRSxXQUFXLGlCQUFBLEVBQ2pDLEtBR0UsT0FBTyxXQUhxQixFQUFoQixLQUFLLFdBQUEsRUFBRSxPQUFPLGFBQUEsRUFDNUIsS0FFRSxPQUFPLE1BRjBDLEVBQTFDLEtBQUssV0FBQSxFQUFFLElBQUksVUFBQSxFQUFFLFNBQVMsZUFBQSxFQUFFLE9BQU8sYUFBQSxFQUFFLE9BQU8sYUFBQSxFQUNqRCxNQUFNLEdBQ0osT0FBTyxPQURILENBQ0k7b0JBRU4sdUJBQXVCLEdBQUc7d0JBQzlCLElBQUksQ0FBQyx1RUFBNkQsQ0FBQyxDQUFDO3dCQUNwRSxJQUFJLENBQ0YsMkhBQTJILENBQzVILENBQUM7d0JBQ0YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNYLENBQUMsQ0FBQztvQkFDRixJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFD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
@@ -0,0 +1,13 @@
1
+ import { StyleSheet, SafeAreaView } from 'react-native';
2
+
3
+ export const Container = ({ children }: { children: React.ReactNode }) => {
4
+ return <SafeAreaView style={styles.container}>{children}</View>;
5
+ };
6
+
7
+ const styles = StyleSheet.create({
8
+ container: {
9
+ flex: 1,
10
+ padding: 24,
11
+ },
12
+ });
13
+
@@ -98,7 +98,7 @@
98
98
  "expo": "~50.0.7",
99
99
  "expo-status-bar": "~1.11.1",
100
100
  "react": "18.2.0",
101
- "react-native": "0.73.4"
101
+ "react-native": "0.73.6"
102
102
  },
103
103
  "devDependencies": {
104
104
  <%# patch for this issue : https://github.com/expo/expo/issues/26641 %>
@@ -1,22 +1,15 @@
1
1
  import { Stack } from 'expo-router';
2
- import { StyleSheet, View } from 'react-native';
3
2
 
3
+ import { Container } from '~/components/Container';
4
4
  import { ScreenContent } from '~/components/ScreenContent';
5
5
 
6
6
  export default function Home() {
7
7
  return (
8
8
  <>
9
9
  <Stack.Screen options={{ title: 'Tab One' }} />
10
- <View style={styles.container}>
10
+ <Container>
11
11
  <ScreenContent path="app/(drawer)/(tabs)/index.tsx" title="Tab One" />
12
- </View>
12
+ </Container>
13
13
  </>
14
14
  );
15
15
  }
16
-
17
- const styles = StyleSheet.create({
18
- container: {
19
- flex: 1,
20
- padding: 24,
21
- },
22
- });
@@ -1,22 +1,15 @@
1
1
  import { Stack } from 'expo-router';
2
- import { StyleSheet, View } from 'react-native';
3
2
 
3
+ import { Container } from '~/components/Container';
4
4
  import { ScreenContent } from '~/components/ScreenContent';
5
5
 
6
6
  export default function Home() {
7
7
  return (
8
8
  <>
9
9
  <Stack.Screen options={{ title: 'Tab Two' }} />
10
- <View style={styles.container}>
10
+ <Container>
11
11
  <ScreenContent path="app/(drawer)/(tabs)/two.tsx" title="Tab Two" />
12
- </View>
12
+ </Container>
13
13
  </>
14
14
  );
15
- }
16
-
17
- const styles = StyleSheet.create({
18
- container: {
19
- flex: 1,
20
- padding: 24,
21
- },
22
- });
15
+ }
@@ -1,22 +1,16 @@
1
1
  import { Stack } from 'expo-router';
2
2
  import { StyleSheet, View } from 'react-native';
3
3
 
4
+ import { Container } from '~/components/Container';
4
5
  import { ScreenContent } from '~/components/ScreenContent';
5
6
 
6
7
  export default function Home() {
7
8
  return (
8
9
  <>
9
10
  <Stack.Screen options={{ title: 'Home' }} />
10
- <View style={styles.container}>
11
+ <Container>
11
12
  <ScreenContent path="app/(drawer)/(tabs)/index.tsx" title="Home" />
12
- </View>
13
+ </Container>
13
14
  </>
14
15
  );
15
- }
16
-
17
- const styles = StyleSheet.create({
18
- container: {
19
- flex: 1,
20
- padding: 24,
21
- },
22
- });
16
+ }