create-expo-stack 2.22.0 → 2.24.0-next.163e6ee

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 (49) hide show
  1. package/README.md +30 -30
  2. package/build/commands/create-expo-stack.js +17 -6
  3. package/build/templates/base/App.tsx.ejs +1 -1
  4. package/build/templates/base/babel.config.js.ejs +1 -8
  5. package/build/templates/base/components/TabBarIcon.tsx.ejs +2 -2
  6. package/build/templates/base/package.json.ejs +35 -3
  7. package/build/templates/packages/expo-router/drawer/app/_layout.tsx.ejs +10 -6
  8. package/build/templates/packages/expo-router/drawer/app/modal.tsx.ejs +1 -1
  9. package/build/templates/packages/expo-router/metro.config.js.ejs +3 -3
  10. package/build/templates/packages/expo-router/stack/app/+not-found.tsx.ejs +13 -7
  11. package/build/templates/packages/expo-router/stack/app/_layout.tsx.ejs +4 -1
  12. package/build/templates/packages/expo-router/stack/app/details.tsx.ejs +12 -13
  13. package/build/templates/packages/expo-router/stack/app/index.tsx.ejs +39 -18
  14. package/build/templates/packages/expo-router/tabs/app/_layout.tsx.ejs +11 -7
  15. package/build/templates/packages/expo-router/tabs/app/modal.tsx.ejs +1 -1
  16. package/build/templates/packages/firebase/metro.config.js.ejs +3 -3
  17. package/build/templates/packages/i18next/translation/index.ts.ejs +3 -3
  18. package/build/templates/packages/nativewind/components/BackButton.tsx.ejs +1 -0
  19. package/build/templates/packages/nativewind/components/Button.tsx.ejs +1 -1
  20. package/build/templates/packages/nativewind/components/EditScreenInfo.tsx.ejs +1 -0
  21. package/build/templates/packages/nativewind/components/ScreenContent.tsx.ejs +2 -2
  22. package/build/templates/packages/nativewind/global.css +5 -3
  23. package/build/templates/packages/nativewind/metro.config.js +4 -3
  24. package/build/templates/packages/nativewind/nativewind-env.d.ts +3 -1
  25. package/build/templates/packages/nativewind/postcss.config.mjs +5 -0
  26. package/build/templates/packages/nativewind/prettier.config.js +10 -0
  27. package/build/templates/packages/nativewindui/components/TabBarIcon.tsx.ejs +2 -2
  28. package/build/templates/packages/nativewindui/drawer/app/(drawer)/index.tsx.ejs +7 -7
  29. package/build/templates/packages/nativewindui/drawer/app/_layout.tsx.ejs +4 -5
  30. package/build/templates/packages/nativewindui/drawer/app/modal.tsx.ejs +2 -2
  31. package/build/templates/packages/nativewindui/lib/useHeaderSearchBar.tsx.ejs +33 -0
  32. package/build/templates/packages/nativewindui/stack/app/_layout.tsx.ejs +1 -1
  33. package/build/templates/packages/nativewindui/stack/app/index.tsx.ejs +9 -39
  34. package/build/templates/packages/nativewindui/tabs/app/(tabs)/index.tsx.ejs +10 -13
  35. package/build/templates/packages/nativewindui/tabs/app/_layout.tsx.ejs +5 -9
  36. package/build/templates/packages/nativewindui/tabs/app/modal.tsx.ejs +1 -1
  37. package/build/templates/packages/nativewindui/theme/index.ts.ejs +1 -1
  38. package/build/templates/packages/react-navigation/screens/modal.tsx.ejs +1 -1
  39. package/build/templates/packages/react-navigation/screens/overview.tsx.ejs +1 -1
  40. package/build/types/types.d.ts +3 -2
  41. package/build/types/utilities/softwareMansion.d.ts +13 -0
  42. package/build/types.js +10 -2
  43. package/build/utilities/configureProjectFiles.js +5 -3
  44. package/build/utilities/generateNWUI.js +105 -1
  45. package/build/utilities/runCLI.js +68 -14
  46. package/build/utilities/showHelp.js +8 -2
  47. package/build/utilities/softwareMansion.js +48 -0
  48. package/package.json +74 -74
  49. package/build/templates/packages/nativewind/tailwind.config.js.ejs +0 -15
package/README.md CHANGED
@@ -59,24 +59,24 @@ Each project is generated based on the results of the CLI, on a per-file basis.
59
59
 
60
60
  | Library | Category | Version | Description |
61
61
  | ------------------ | ------------------- | ------- | ---------------------------------------------- |
62
- | React Native | Mobile Framework | v0.79 | The best cross-platform mobile framework |
63
- | React | UI Framework | v19 | The most popular UI framework in the world |
64
- | TypeScript | Language | v5 | Static typechecking |
65
- | React Navigation | Navigation | v7 | Performant and consistent navigation framework |
66
- | Expo | SDK | v53 | Allows (optional) Expo modules |
67
- | Expo Font | Custom Fonts | v13 | Import custom fonts |
68
- | Expo Linking | URL Handling | v7 | Open your app via a URL |
69
- | Expo Router | Navigation | v5 | File-based routing in React-Native |
70
- | Expo Splash Screen | Splash Screen | v0.27 | Custom splash screen |
71
- | Expo Status Bar | Status Bar Library | v2 | Status bar support |
72
- | Expo System UI | System UI Library | v5 | System UI support |
73
- | Expo Web Browser | Web Browser Library | v14 | Open links in the browser |
74
- | Nativewind | UI Framework | v4.1 | Tailwind CSS for React Native |
62
+ | React Native | Mobile Framework | v0.85 | The best cross-platform mobile framework |
63
+ | React | UI Framework | v19.2 | The most popular UI framework in the world |
64
+ | TypeScript | Language | v6.0 | Static typechecking |
65
+ | React Navigation | Navigation | v7.1 | Performant and consistent navigation framework |
66
+ | Expo | SDK | v56 | Opionated framework for building RN apps |
67
+ | Expo Linking | URL Handling | v56 | Open your app via a URL |
68
+ | Expo Router | Navigation | v56 | File-based routing in React-Native |
69
+ | Expo Status Bar | Status Bar Library | v56 | Status bar support |
70
+ | Expo System UI | System UI Library | v56 | System UI support |
71
+ | Expo Web Browser | Web Browser Library | v56 | Open links in the browser |
72
+ | Nativewind | UI Framework | v5 | Tailwind CSS for React Native |
73
+ | Tailwind CSS | CSS Framework | v4.1 | Utility-first CSS framework |
74
+ | React Native CSS | CSS Engine | latest | CSS support for React Native |
75
75
  | Unistyles | UI Framework | v3 | Superset of StyleSheet |
76
- | Safe Area Context | Safe Area Library | v5 | Safe area support |
77
- | React Native Web | Web Support | v0.20 | React Native for Web |
78
- | Firebase | Backend and Auth | v10 | Cloud-hosted NoSQL database from Google |
79
- | Supabase | Backend and Auth | v2 | Open source Firebase alternative |
76
+ | Safe Area Context | Safe Area Library | v5.7 | Safe area support |
77
+ | React Native Web | Web Support | v0.21 | React Native for Web |
78
+ | Firebase | Backend and Auth | v12 | Cloud-hosted NoSQL database from Google |
79
+ | Supabase | Backend and Auth | v2.38 | Open source Firebase alternative |
80
80
 
81
81
  ## Reporting Bugs & Feedback
82
82
 
@@ -129,21 +129,28 @@ Thanks go to these wonderful people:
129
129
  <sub><b>Sam Moore</b></sub>
130
130
  </a>
131
131
  </td>
132
+ <td align="center">
133
+ <a href="https://github.com/DavidJGrimsley">
134
+ <img src="https://avatars.githubusercontent.com/u/114373822?v=4" width="100;" alt="DavidJGrimsley"/>
135
+ <br />
136
+ <sub><b>David Grimsley</b></sub>
137
+ </a>
138
+ </td>
132
139
  <td align="center">
133
140
  <a href="https://github.com/ernestoresende">
134
141
  <img src="https://avatars.githubusercontent.com/u/55156145?v=4" width="100;" alt="ernestoresende"/>
135
142
  <br />
136
143
  <sub><b>Ernesto Resende</b></sub>
137
144
  </a>
138
- </td>
145
+ </td></tr>
146
+ <tr>
139
147
  <td align="center">
140
148
  <a href="https://github.com/PickleNik">
141
149
  <img src="https://avatars.githubusercontent.com/u/31113245?v=4" width="100;" alt="PickleNik"/>
142
150
  <br />
143
151
  <sub><b>Null</b></sub>
144
152
  </a>
145
- </td></tr>
146
- <tr>
153
+ </td>
147
154
  <td align="center">
148
155
  <a href="https://github.com/frankcalise">
149
156
  <img src="https://avatars.githubusercontent.com/u/374022?v=4" width="100;" alt="frankcalise"/>
@@ -178,15 +185,15 @@ Thanks go to these wonderful people:
178
185
  <br />
179
186
  <sub><b>Gaurav Bhandari</b></sub>
180
187
  </a>
181
- </td>
188
+ </td></tr>
189
+ <tr>
182
190
  <td align="center">
183
191
  <a href="https://github.com/finnbayer">
184
192
  <img src="https://avatars.githubusercontent.com/u/115630860?v=4" width="100;" alt="finnbayer"/>
185
193
  <br />
186
194
  <sub><b>Finn Bayer</b></sub>
187
195
  </a>
188
- </td></tr>
189
- <tr>
196
+ </td>
190
197
  <td align="center">
191
198
  <a href="https://github.com/saimon24">
192
199
  <img src="https://avatars.githubusercontent.com/u/2514208?v=4" width="100;" alt="saimon24"/>
@@ -221,13 +228,6 @@ Thanks go to these wonderful people:
221
228
  <br />
222
229
  <sub><b>Jacek Pudysz</b></sub>
223
230
  </a>
224
- </td>
225
- <td align="center">
226
- <a href="https://github.com/DavidJGrimsley">
227
- <img src="https://avatars.githubusercontent.com/u/114373822?v=4" width="100;" alt="DavidJGrimsley"/>
228
- <br />
229
- <sub><b>David Grimsley</b></sub>
230
- </a>
231
231
  </td></tr>
232
232
  <tr>
233
233
  <td align="center">
@@ -17,6 +17,7 @@ const utilities_1 = require("../utilities");
17
17
  const constants_1 = require("../constants");
18
18
  const types_1 = require("../types");
19
19
  const clearStylingPackages_1 = __importDefault(require("../utilities/clearStylingPackages"));
20
+ const softwareMansion_1 = require("../utilities/softwareMansion");
20
21
  const systemCommand_1 = require("../utilities/systemCommand");
21
22
  const validateProjectName_1 = require("../utilities/validateProjectName");
22
23
  const prompts_1 = require("@clack/prompts");
@@ -272,6 +273,11 @@ const command = {
272
273
  if (options.vexoAnalytics || options['vexo-analytics'] || options.vexoanalytics) {
273
274
  cliResults.packages.push({ name: 'vexo-analytics', type: 'analytics' });
274
275
  }
276
+ softwareMansion_1.softwareMansionPackageOptions.forEach(({ name, aliases }) => {
277
+ if (aliases.some((alias) => options[alias]) && (0, softwareMansion_1.shouldAddSoftwareMansionPackage)(name, cliResults)) {
278
+ cliResults.packages.push({ name, type: 'software-mansion' });
279
+ }
280
+ });
275
281
  // By this point, all cliResults should be set
276
282
  info('');
277
283
  highlight('Your project configuration:');
@@ -309,10 +315,6 @@ const command = {
309
315
  script += '--drawer+tabs ';
310
316
  }
311
317
  }
312
- const stateManagementPackage = cliResults.packages.find((p) => p.type === 'state-management');
313
- if (stateManagementPackage) {
314
- script += `--${stateManagementPackage.name} `;
315
- }
316
318
  }
317
319
  else {
318
320
  // Add the packages
@@ -330,6 +332,16 @@ const command = {
330
332
  }
331
333
  });
332
334
  }
335
+ if (isNativewindUISelected) {
336
+ cliResults.packages.forEach((p) => {
337
+ if (p.type === 'state-management' ||
338
+ p.type === 'internationalization' ||
339
+ p.type === 'analytics' ||
340
+ p.type === 'software-mansion') {
341
+ script += `--${p.name} `;
342
+ }
343
+ });
344
+ }
333
345
  // Check if the user wants to skip installing packages
334
346
  if (cliResults.flags.noInstall) {
335
347
  script += '--no-install ';
@@ -361,7 +373,6 @@ const command = {
361
373
  const stylingPackage = packages.find((p) => p.type === 'styling');
362
374
  const internalizationPackage = packages.find((p) => p.type === 'internationalization');
363
375
  const analyticsPackage = packages.find((p) => p.type === 'analytics');
364
- //add the state management package if it is selected
365
376
  const stateManagementPackage = packages.find((p) => p.type === 'state-management') || undefined;
366
377
  let files = [];
367
378
  files = (0, utilities_1.configureProjectFiles)(authenticationPackage, files, navigationPackage, stylingPackage, analyticsPackage, toolbox, cliResults, internalizationPackage, stateManagementPackage);
@@ -401,4 +412,4 @@ const command = {
401
412
  })
402
413
  };
403
414
  exports.default = command;
404
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFN0IsNENBVXNCO0FBQ3RCLDRDQU9zQjtBQUN0QixvQ0FBeUQ7QUFDekQsNkZBQXFFO0FBQ3JFLDhEQUEyRDtBQUMzRCwwRUFBdUU7QUFDdkUsNENBQStEO0FBQy9ELG1HQUEyRTtBQUUzRSxNQUFNLE9BQU8sR0FBbUI7SUFDOUIsSUFBSSxFQUFFLG1CQUFtQjtJQUN6QixXQUFXLEVBQUUsMkJBQTJCO0lBQ3hDLEdBQUcsRUFBRSxDQUFPLE9BQU8sRUFBRSxFQUFFOztRQUNyQixNQUFNLEVBQ0osVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUNuQyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQzlCLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFDbkQsTUFBTSxFQUNQLEdBQUcsT0FBTyxDQUFDO1FBRVosTUFBTSx1QkFBdUIsR0FBRyxHQUFHLEVBQUU7WUFDbkMsSUFBSSxDQUFDLDZEQUE2RCxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUNGLHdIQUF3SCxDQUN6SCxDQUFDO1lBQ0YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDO1FBRUYsbUJBQW1CO1FBQ25CLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDOUIsSUFBQSxvQkFBUSxFQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbkMsT0FBTztRQUNULENBQUM7UUFFRCxzQkFBc0I7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
415
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFN0IsNENBVXNCO0FBQ3RCLDRDQU9zQjtBQUN0QixvQ0FBeUQ7QUFDekQsNkZBQXFFO0FBQ3JFLGtFQUE4RztBQUM5Ryw4REFBMkQ7QUFDM0QsMEVBQXVFO0FBQ3ZFLDRDQUErRDtBQUMvRCxtR0FBMkU7QUFFM0UsTUFBTSxPQUFPLEdBQW1CO0lBQzlCLElBQUksRUFBRSxtQkFBbUI7SUFDekIsV0FBVyxFQUFFLDJCQUEyQjtJQUN4QyxHQUFHLEVBQUUsQ0FBTyxPQUFPLEVBQUUsRUFBRTs7UUFDckIsTUFBTSxFQUNKLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFDbkMsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUM5QixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQ25ELE1BQU0sRUFDUCxHQUFHLE9BQU8sQ0FBQztRQUVaLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxFQUFFO1lBQ25DLElBQUksQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FDRix3SEFBd0gsQ0FDekgsQ0FBQztZQUNGLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQztRQUVGLG1CQUFtQjtRQUNuQixJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlCLElBQUEsb0JBQVEsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLE9BQU87UUFDVCxDQUFD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
@@ -6,7 +6,7 @@ import { StatusBar } from 'expo-status-bar';
6
6
 
7
7
  <% if (props.internalizationPackage?.name === "i18next") { %>
8
8
  import './translation';
9
- import { InternalizationExample } from 'components/InternalizationExample';
9
+ import { InternalizationExample } from './components/InternalizationExample';
10
10
  <% } %>
11
11
 
12
12
  <% if (props.stylingPackage?.name === "nativewind") { %>
@@ -15,14 +15,7 @@ module.exports = function(api) {
15
15
  plugins.push('react-native-worklets/plugin');
16
16
 
17
17
  return {
18
- <% if (props.stylingPackage?.name === "nativewind" || props.stylingPackage?.name === "nativewindui") { %>
19
- presets: [
20
- ['babel-preset-expo', { jsxImportSource: 'nativewind' }],
21
- 'nativewind/babel',
22
- ],
23
- <% } else { %>
24
- presets: ['babel-preset-expo'],
25
- <% } %>
18
+ presets: ['babel-preset-expo'],
26
19
  plugins,
27
20
  };
28
21
  };
@@ -1,9 +1,9 @@
1
1
  import FontAwesome from '@expo/vector-icons/FontAwesome';
2
- import { StyleSheet } from 'react-native';
2
+ import { ColorValue, StyleSheet } from 'react-native';
3
3
 
4
4
  export const TabBarIcon = (props: {
5
5
  name: React.ComponentProps<typeof FontAwesome>['name'];
6
- color: string;
6
+ color: ColorValue;
7
7
  }) => {
8
8
  return <FontAwesome size={28} style={styles.tabBarIcon} {...props} />;
9
9
  };
@@ -31,7 +31,10 @@
31
31
  },
32
32
  "dependencies": {
33
33
  <% if (props.stylingPackage?.name === "nativewind" || props.stylingPackage?.name === "nativewindui") { %>
34
- "nativewind": "latest",
34
+ "nativewind": "preview",
35
+ "react-native-css": "latest",
36
+ "postcss": "^8.5.6",
37
+ "@tailwindcss/postcss": "^4.1.13",
35
38
  <% } %>
36
39
  <% if (props.stylingPackage?.name === "nativewindui") { %>
37
40
  "@react-navigation/elements": "^2.9.25",
@@ -72,10 +75,24 @@
72
75
 
73
76
  <% if (props.navigationPackage?.type === "navigation") { %>
74
77
  "@react-navigation/native": "^7.1.6",
78
+ <% } %>
79
+
80
+ <% if (props.navigationPackage?.type === "navigation" || props.packages?.some((p) => p.name === "react-native-gesture-handler")) { %>
75
81
  "react-native-gesture-handler": "~2.31.1",
82
+ <% } %>
83
+
84
+ <% if (props.navigationPackage?.type === "navigation" || props.packages?.some((p) => p.name === "react-native-screens")) { %>
76
85
  "react-native-screens": "4.25.2",
77
86
  <% } %>
78
87
 
88
+ <% if (props.packages?.some((p) => p.name === "react-native-svg")) { %>
89
+ "react-native-svg": "15.15.4",
90
+ <% } %>
91
+
92
+ <% if (props.packages?.some((p) => p.name === "react-native-keyboard-controller")) { %>
93
+ "react-native-keyboard-controller": "1.21.6",
94
+ <% } %>
95
+
79
96
  <% if (props.navigationPackage?.name === "react-navigation") { %>
80
97
  "@react-navigation/stack": "^7.4.8",
81
98
  "@expo/vector-icons": "^15.0.2",
@@ -148,8 +165,8 @@
148
165
  "eslint-config-prettier": "^10.1.2",
149
166
  "prettier": "^3.2.5",
150
167
  <% if (props.stylingPackage?.name === "nativewind" || props.stylingPackage?.name === "nativewindui") { %>
151
- "tailwindcss": "^3.4.0",
152
- "prettier-plugin-tailwindcss": "^0.5.11",
168
+ "tailwindcss": "^4.1.13",
169
+ "prettier-plugin-tailwindcss": "^0.6.14",
153
170
  <% } %>
154
171
  "typescript": "~6.0.3"
155
172
  },
@@ -159,5 +176,20 @@
159
176
  <% if (props.packageManager === "yarn"){ %>
160
177
  "packageManager": "yarn@4.9.4",
161
178
  <% } %>
179
+ <% if (props.stylingPackage?.name === "nativewind" && props.packageManager === "yarn") { %>
180
+ "resolutions": {
181
+ "lightningcss": "1.30.1"
182
+ },
183
+ <% } else if (props.stylingPackage?.name === "nativewind" && props.packageManager === "pnpm") { %>
184
+ "pnpm": {
185
+ "overrides": {
186
+ "lightningcss": "1.30.1"
187
+ }
188
+ },
189
+ <% } else if (props.stylingPackage?.name === "nativewind") { %>
190
+ "overrides": {
191
+ "lightningcss": "1.30.1"
192
+ },
193
+ <% } %>
162
194
  "private": true
163
195
  }
@@ -40,8 +40,12 @@ export default function RootLayout() {
40
40
  <GestureHandlerRootView style={{ flex: 1 }}>
41
41
  <% if (props.stylingPackage?.name === "nativewind") { %>
42
42
  <SafeAreaProvider>
43
- <% } %>
44
- <% if (props.stylingPackage?.name === "unistyles") { %>
43
+ <Stack>
44
+ <Stack.Screen name="(drawer)" options={{ headerShown: false }} />
45
+ <Stack.Screen name="modal" options={{ title: 'Modal', presentation: 'modal' }} />
46
+ </Stack>
47
+ </SafeAreaProvider>
48
+ <% } else if (props.stylingPackage?.name === "unistyles") { %>
45
49
  <Stack
46
50
  screenOptions={{
47
51
  headerStyle: {
@@ -60,14 +64,14 @@ export default function RootLayout() {
60
64
  drawerInactiveTintColor: theme.colors.typography,
61
65
  }}
62
66
  >
63
- <% } else { %>
67
+ <Stack.Screen name="(drawer)" options={{ headerShown: false }} />
68
+ <Stack.Screen name="modal" options={{ title: 'Modal', presentation: 'modal' }} />
69
+ </Stack>
70
+ <% } else { %>
64
71
  <Stack>
65
- <% } %>
66
72
  <Stack.Screen name="(drawer)" options={{ headerShown: false }} />
67
73
  <Stack.Screen name="modal" options={{ title: 'Modal', presentation: 'modal' }} />
68
74
  </Stack>
69
- <% if (props.stylingPackage?.name === "nativewind") { %>
70
- </SafeAreaProvider>
71
75
  <% } %>
72
76
  </GestureHandlerRootView>
73
77
  );
@@ -4,7 +4,7 @@ import { Platform } from 'react-native';
4
4
  import { ScreenContent } from '@/components/ScreenContent';
5
5
 
6
6
  <% if (props.internalizationPackage?.name === "i18next") { %>
7
- import { InternalizationExample } from 'components/InternalizationExample';
7
+ import { InternalizationExample } from '../components/InternalizationExample';
8
8
  <% } %>
9
9
 
10
10
  export default function Modal() {
@@ -1,7 +1,7 @@
1
1
  // Learn more https://docs.expo.io/guides/customizing-metro
2
2
  const { getDefaultConfig } = require('expo/metro-config');
3
3
  <% if (["nativewind", "nativewindui"].includes(props.stylingPackage?.name)) { %>
4
- const { withNativeWind } = require("nativewind/metro");
4
+ const { withNativewind } = require("nativewind/metro");
5
5
  <% } %>
6
6
 
7
7
  /** @type {import('expo/metro-config').MetroConfig} */
@@ -9,9 +9,9 @@ const { getDefaultConfig } = require('expo/metro-config');
9
9
  const config = getDefaultConfig(__dirname);
10
10
 
11
11
  <% if (props.stylingPackage?.name === "nativewind") { %>
12
- module.exports = withNativeWind(config, { input: "./global.css" });
12
+ module.exports = withNativewind(config);
13
13
  <% } else if (props.stylingPackage?.name === "nativewindui") { %>
14
- module.exports = withNativeWind(config, { input: "./global.css", inlineRem: 16 });
14
+ module.exports = withNativewind(config, { inlineRem: 16 });
15
15
  <% } else { %>
16
16
  module.exports = config;
17
17
  <% } %>
@@ -2,16 +2,13 @@ import { Link, Stack } from 'expo-router';
2
2
  <% if (props.stylingPackage?.name === "nativewind") {%>
3
3
  import { Text, View } from 'react-native';
4
4
 
5
- import { Container } from '@/components/Container';
6
5
  <% } else if (props.stylingPackage?.name === "unistyles") { %>
7
6
  import { StyleSheet } from 'react-native-unistyles'
8
7
  import { Text, View } from 'react-native';
9
8
 
10
- import { Container } from '@/components/Container';
11
9
  <% } else if (props.stylingPackage?.name === "stylesheet") { %>
12
10
  import { StyleSheet, Text, View } from 'react-native';
13
11
 
14
- import { Container } from '@/components/Container';
15
12
  <% } %>
16
13
 
17
14
  export default function NotFoundScreen() {
@@ -20,22 +17,22 @@ export default function NotFoundScreen() {
20
17
  <% if (props.stylingPackage?.name === "nativewind") { %>
21
18
  <View className={styles.container}>
22
19
  <Stack.Screen options={{ title: "Oops!" }} />
23
- <Container>
20
+ <View className={styles.contentContainer}>
24
21
  <Text className={styles.title}>{"This screen doesn't exist."}</Text>
25
22
  <Link href="/" className={styles.link}>
26
23
  <Text className={styles.linkText}>Go to home screen!</Text>
27
24
  </Link>
28
- </Container>
25
+ </View>
29
26
  </View>
30
27
  <% } else { %>
31
28
  <View style={styles.container}>
32
29
  <Stack.Screen options={{ title: "Oops!" }} />
33
- <Container>
30
+ <View style={styles.contentContainer}>
34
31
  <Text style={styles.title}>{"This screen doesn't exist."}</Text>
35
32
  <Link href="/" style={styles.link}>
36
33
  <Text style={styles.linkText}>Go to home screen!</Text>
37
34
  </Link>
38
- </Container>
35
+ </View>
39
36
  </View>
40
37
  <% } %>
41
38
  );
@@ -44,6 +41,7 @@ export default function NotFoundScreen() {
44
41
  <% if (props.stylingPackage?.name === "nativewind") { %>
45
42
  const styles = {
46
43
  container: `flex flex-1 bg-white`,
44
+ contentContainer: `flex flex-1 m-6`,
47
45
  title: `text-xl font-bold`,
48
46
  link: `mt-4 pt-4`,
49
47
  linkText: `text-base text-[#2e78b7]`,
@@ -54,6 +52,10 @@ const styles = StyleSheet.create((theme) => ({
54
52
  flex: 1,
55
53
  backgroundColor: 'white',
56
54
  },
55
+ contentContainer: {
56
+ flex: 1,
57
+ margin: 24,
58
+ },
57
59
  title: {
58
60
  fontSize: 20,
59
61
  fontWeight: 'bold',
@@ -74,6 +76,10 @@ const styles = StyleSheet.create({
74
76
  flex: 1,
75
77
  backgroundColor: 'white',
76
78
  },
79
+ contentContainer: {
80
+ flex: 1,
81
+ margin: 24,
82
+ },
77
83
  title: {
78
84
  fontSize: 20,
79
85
  fontWeight: 'bold',
@@ -39,7 +39,10 @@ export default function Layout() {
39
39
  />
40
40
  <% } else if (props.stylingPackage?.name === "nativewind") { %>
41
41
  <SafeAreaProvider>
42
- <Stack />
42
+ <Stack>
43
+ <Stack.Screen name="index" options={{ title: 'Home' }} />
44
+ <Stack.Screen name="details" options={{ title: 'Details' }} />
45
+ </Stack>
43
46
  </SafeAreaProvider>
44
47
  <% } else { %>
45
48
  <Stack />
@@ -3,12 +3,12 @@ import { StyleSheet, View } from 'react-native';
3
3
  <% } else if (props.stylingPackage?.name === "unistyles") { %>
4
4
  import { StyleSheet } from 'react-native-unistyles';
5
5
  import { View } from 'react-native';
6
- <% } else { %>
7
- import { View } from 'react-native';
8
6
  <% } %>
9
7
  import { Stack, useLocalSearchParams } from 'expo-router';
10
8
 
9
+ <% if (props.stylingPackage?.name !== "nativewind") { %>
11
10
  import { Container } from '@/components/Container';
11
+ <% } %>
12
12
  import { ScreenContent } from '@/components/ScreenContent';
13
13
 
14
14
  export default function Details() {
@@ -16,23 +16,22 @@ export default function Details() {
16
16
 
17
17
  return (
18
18
  <% if (props.stylingPackage?.name === "nativewind") { %>
19
- <View className={styles.container}>
19
+ <>
20
+ <Stack.Screen options={{ title: 'Details' }} />
21
+ <ScreenContent path="screens/details.tsx" title={`Showing details for user ${name}`} />
22
+ </>
20
23
  <% } else { %>
21
24
  <View style={styles.container}>
25
+ <Stack.Screen options={{ title: 'Details' }} />
26
+ <Container>
27
+ <ScreenContent path="screens/details.tsx" title={`Showing details for user ${name}`} />
28
+ </Container>
29
+ </View>
22
30
  <% } %>
23
- <Stack.Screen options={{ title: 'Details' }} />
24
- <Container>
25
- <ScreenContent path="screens/details.tsx" title={`Showing details for user ${name}`} />
26
- </Container>
27
- </View>
28
31
  );
29
32
  }
30
33
 
31
- <% if (props.stylingPackage?.name === "nativewind") { %>
32
- const styles = {
33
- container: "flex flex-1 bg-white",
34
- }
35
- <% } else if (props.stylingPackage?.name === "stylesheet") { %>
34
+ <% if (props.stylingPackage?.name === "stylesheet") { %>
36
35
  const styles = StyleSheet.create({
37
36
  container: {
38
37
  flex: 1,