create-expo-stack 2.22.0 → 2.23.1

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/README.md +13 -13
  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/components/TabBarIcon.tsx.ejs +2 -2
  5. package/build/templates/base/package.json.ejs +14 -0
  6. package/build/templates/packages/expo-router/drawer/app/modal.tsx.ejs +1 -1
  7. package/build/templates/packages/expo-router/stack/app/index.tsx.ejs +11 -2
  8. package/build/templates/packages/expo-router/tabs/app/modal.tsx.ejs +1 -1
  9. package/build/templates/packages/i18next/translation/index.ts.ejs +3 -3
  10. package/build/templates/packages/nativewind/components/EditScreenInfo.tsx.ejs +2 -1
  11. package/build/templates/packages/nativewindui/components/TabBarIcon.tsx.ejs +2 -2
  12. package/build/templates/packages/nativewindui/drawer/app/(drawer)/index.tsx.ejs +7 -7
  13. package/build/templates/packages/nativewindui/drawer/app/_layout.tsx.ejs +4 -5
  14. package/build/templates/packages/nativewindui/drawer/app/modal.tsx.ejs +2 -2
  15. package/build/templates/packages/nativewindui/lib/useHeaderSearchBar.tsx.ejs +33 -0
  16. package/build/templates/packages/nativewindui/stack/app/_layout.tsx.ejs +1 -1
  17. package/build/templates/packages/nativewindui/stack/app/index.tsx.ejs +9 -39
  18. package/build/templates/packages/nativewindui/tabs/app/(tabs)/index.tsx.ejs +10 -13
  19. package/build/templates/packages/nativewindui/tabs/app/_layout.tsx.ejs +5 -9
  20. package/build/templates/packages/nativewindui/tabs/app/modal.tsx.ejs +1 -1
  21. package/build/templates/packages/nativewindui/theme/index.ts.ejs +1 -1
  22. package/build/templates/packages/react-navigation/screens/modal.tsx.ejs +1 -1
  23. package/build/templates/packages/react-navigation/screens/overview.tsx.ejs +1 -1
  24. package/build/types/types.d.ts +3 -2
  25. package/build/types/utilities/softwareMansion.d.ts +13 -0
  26. package/build/types.js +10 -2
  27. package/build/utilities/configureProjectFiles.js +2 -1
  28. package/build/utilities/generateNWUI.js +105 -1
  29. package/build/utilities/runCLI.js +61 -1
  30. package/build/utilities/showHelp.js +7 -1
  31. package/build/utilities/softwareMansion.js +48 -0
  32. package/build/utilities/systemCommand.js +5 -1
  33. package/package.json +1 -1
package/README.md CHANGED
@@ -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") { %>
@@ -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
  };
@@ -72,10 +72,24 @@
72
72
 
73
73
  <% if (props.navigationPackage?.type === "navigation") { %>
74
74
  "@react-navigation/native": "^7.1.6",
75
+ <% } %>
76
+
77
+ <% if (props.navigationPackage?.type === "navigation" || props.packages?.some((p) => p.name === "react-native-gesture-handler")) { %>
75
78
  "react-native-gesture-handler": "~2.31.1",
79
+ <% } %>
80
+
81
+ <% if (props.navigationPackage?.type === "navigation" || props.packages?.some((p) => p.name === "react-native-screens")) { %>
76
82
  "react-native-screens": "4.25.2",
77
83
  <% } %>
78
84
 
85
+ <% if (props.packages?.some((p) => p.name === "react-native-svg")) { %>
86
+ "react-native-svg": "15.15.4",
87
+ <% } %>
88
+
89
+ <% if (props.packages?.some((p) => p.name === "react-native-keyboard-controller")) { %>
90
+ "react-native-keyboard-controller": "1.21.6",
91
+ <% } %>
92
+
79
93
  <% if (props.navigationPackage?.name === "react-navigation") { %>
80
94
  "@react-navigation/stack": "^7.4.8",
81
95
  "@expo/vector-icons": "^15.0.2",
@@ -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() {
@@ -13,7 +13,7 @@ import { Container } from '@/components/Container';
13
13
  import { ScreenContent } from '@/components/ScreenContent';
14
14
 
15
15
  <% if (props.internalizationPackage?.name === "i18next") { %>
16
- import { InternalizationExample } from 'components/InternalizationExample';
16
+ import { InternalizationExample } from '../components/InternalizationExample';
17
17
  <% } %>
18
18
 
19
19
  export default function Home() {
@@ -30,13 +30,21 @@ export default function Home() {
30
30
  <InternalizationExample />
31
31
  <% } %>
32
32
  </ScreenContent>
33
+ <% if (props.stylingPackage?.name === "nativewind") { %>
34
+ <View className={styles.buttonWrapper}>
35
+ <% } %>
33
36
  <Link href={{ pathname: '/details', params: { name: 'Dan' } }} asChild>
34
37
  <% if (props.stylingPackage?.name === "unistyles") { %>
35
38
  <Button title="Show Details" style={styles.button} />
39
+ <% } else if (props.stylingPackage?.name === "nativewind") { %>
40
+ <Button title="Show Details" className="mx-6" />
36
41
  <% } else { %>
37
42
  <Button title="Show Details" />
38
43
  <% } %>
39
44
  </Link>
45
+ <% if (props.stylingPackage?.name === "nativewind") { %>
46
+ </View>
47
+ <% } %>
40
48
  </Container>
41
49
  </View>
42
50
  );
@@ -45,7 +53,8 @@ export default function Home() {
45
53
  <% if (props.stylingPackage?.name === "nativewind") { %>
46
54
  const styles = {
47
55
  container: "flex flex-1 bg-white",
48
- }
56
+ buttonWrapper: "mx-4",
57
+ };
49
58
  <% } else if (props.stylingPackage?.name === "stylesheet") { %>
50
59
  const styles = StyleSheet.create({
51
60
  container: {
@@ -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,6 +1,6 @@
1
- import { init18n } from 'core/i18n/init';
2
- import en from 'translation/en.json';
3
- import fr from 'translation/fr.json';
1
+ import { init18n } from '../core/i18n/init';
2
+ import en from './en.json';
3
+ import fr from './fr.json';
4
4
 
5
5
  export const resources = {
6
6
  en: {
@@ -18,7 +18,7 @@ export const EditScreenInfo: React.FC<EditScreenInfoProps> = ({ path }) => {
18
18
  const description = "Change any of the text, save the file, and your app will automatically update."
19
19
  <% } %>
20
20
  return (
21
- <View>
21
+ <View className={styles.container}>
22
22
  <View className={styles.getStartedContainer}>
23
23
  <Text className={styles.getStartedText}>{title}</Text>
24
24
  <View className={`${styles.codeHighlightContainer} ${styles.homeScreenFilename}`}>
@@ -33,6 +33,7 @@ export const EditScreenInfo: React.FC<EditScreenInfoProps> = ({ path }) => {
33
33
  };
34
34
 
35
35
  const styles = {
36
+ container: `w-full`,
36
37
  codeHighlightContainer: `rounded-md px-1`,
37
38
  getStartedContainer: `items-center mx-12`,
38
39
  getStartedText: `text-lg leading-6 text-center`,
@@ -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
  };
@@ -1,5 +1,5 @@
1
1
  import { Stack } from 'expo-router';
2
- import { useHeaderHeight } from '@react-navigation/elements';
2
+ import { useHeaderHeight } from 'expo-router/react-navigation';
3
3
  import { FlashList } from '@shopify/flash-list';
4
4
  import { cssInterop } from 'nativewind';
5
5
  import * as React from 'react';
@@ -27,12 +27,12 @@ import { useSafeAreaInsets } from 'react-native-safe-area-context';
27
27
  <% if (props.stylingPackage?.options.selectedComponents.includes('action-sheet')) { %>
28
28
  import { useActionSheet } from '@expo/react-native-action-sheet';
29
29
  <% } %>
30
- import { Icon } from '@roninoss/icons';
31
30
  <% if (props.stylingPackage?.options.selectedComponents.includes('ratings-indicator')) { %>
32
31
  import * as StoreReview from 'expo-store-review';
33
32
  <% } %>
34
33
 
35
34
  import { Container } from '@/components/Container';
35
+ import { Icon } from '@/components/nativewindui/Icon';
36
36
  <% if (props.stylingPackage?.options.selectedComponents.includes('activity-indicator')) { %>
37
37
  import { ActivityIndicator } from '@/components/nativewindui/ActivityIndicator';
38
38
  <% } %>
@@ -59,6 +59,7 @@ import { Text } from '@/components/nativewindui/Text';
59
59
  import { Toggle } from '@/components/nativewindui/Toggle';
60
60
  <% } %>
61
61
  import { useColorScheme } from '@/lib/useColorScheme';
62
+ import { useHeaderSearchBar } from '@/lib/useHeaderSearchBar';
62
63
 
63
64
  export default function Home() {
64
65
  const searchValue = useHeaderSearchBar({ hideWhenScrolling: COMPONENTS.length === 0 });
@@ -75,7 +76,6 @@ export default function Home() {
75
76
  contentInsetAdjustmentBehavior="automatic"
76
77
  keyboardShouldPersistTaps="handled"
77
78
  data={data}
78
- estimatedItemSize={200}
79
79
  contentContainerClassName="py-4 android:pb-12"
80
80
  extraData={searchValue}
81
81
  keyExtractor={keyExtractor}
@@ -112,7 +112,7 @@ function ListEmptyComponent() {
112
112
 
113
113
  return (
114
114
  <View style={{ height }} className="flex-1 items-center justify-center gap-1 px-12">
115
- <Icon name="file-plus-outline" size={42} color={colors.grey} />
115
+ <Icon name="doc.badge.plus" size={42} color={colors.grey} />
116
116
  <Text variant='title3' className='pb-1 text-center font-semibold'>
117
117
  No Components Installed
118
118
  </Text>
@@ -226,8 +226,8 @@ const COMPONENTS: ComponentItem[] = [
226
226
  <DatePicker
227
227
  value={date}
228
228
  mode='datetime'
229
- onChange={(ev) => {
230
- setDate(new Date(ev.nativeEvent.timestamp));
229
+ onValueChange={(_event, selectedDate) => {
230
+ setDate(selectedDate);
231
231
  }}
232
232
  />
233
233
  </View>
@@ -532,4 +532,4 @@ const COMPONENTS: ComponentItem[] = [
532
532
  },
533
533
  },
534
534
  <% } %>
535
- ];
535
+ ];
@@ -1,6 +1,6 @@
1
1
  import '../global.css';
2
2
  import 'expo-dev-client';
3
- import { ThemeProvider as NavThemeProvider } from '@react-navigation/native';
3
+ import { ThemeProvider as NavThemeProvider } from 'expo-router/react-navigation';
4
4
  <% if (props.stylingPackage?.options.selectedComponents.includes('action-sheet')) { %>
5
5
  import { ActionSheetProvider } from '@expo/react-native-action-sheet';
6
6
  <% } %>
@@ -13,8 +13,8 @@ import { StatusBar } from 'expo-status-bar';
13
13
  import { GestureHandlerRootView } from 'react-native-gesture-handler';
14
14
  <% } %>
15
15
 
16
- import { ThemeToggle } from '@/components/ThemeToggle';
17
- import { useColorScheme, useInitialAndroidBarSync } from '@/lib/useColorScheme';
16
+ import { ThemeToggle } from '@/components/nativewindui/ThemeToggle';
17
+ import { useColorScheme } from '@/lib/useColorScheme';
18
18
  import { NAV_THEME } from '@/theme';
19
19
 
20
20
  export {
@@ -23,7 +23,6 @@ export {
23
23
  } from 'expo-router';
24
24
 
25
25
  export default function RootLayout() {
26
- useInitialAndroidBarSync();
27
26
  const { colorScheme, isDarkColorScheme } = useColorScheme();
28
27
 
29
28
  return (
@@ -72,4 +71,4 @@ const MODAL_OPTIONS = {
72
71
  animation: 'fade_from_bottom', // for android
73
72
  title: 'Settings',
74
73
  headerRight: () => <ThemeToggle />,
75
- } as const;
74
+ } as const;
@@ -1,7 +1,7 @@
1
- import { Icon } from '@roninoss/icons';
2
1
  import { StatusBar } from 'expo-status-bar';
3
2
  import { Linking, Platform, View } from 'react-native';
4
3
 
4
+ import { Icon } from '@/components/nativewindui/Icon';
5
5
  import { Text } from '@/components/nativewindui/Text';
6
6
  import { useColorScheme } from '@/lib/useColorScheme';
7
7
 
@@ -13,7 +13,7 @@ export default function ModalScreen() {
13
13
  style={Platform.OS === 'ios' ? 'light' : colorScheme === 'dark' ? 'light' : 'dark'}
14
14
  />
15
15
  <View className="flex-1 items-center justify-center gap-1 px-12">
16
- <Icon name="file-plus-outline" size={42} color={colors.grey} />
16
+ <Icon name="doc.badge.plus" size={42} color={colors.grey} />
17
17
  <Text variant="title3" className="pb-1 text-center font-semibold">
18
18
  NativewindUI
19
19
  </Text>
@@ -0,0 +1,33 @@
1
+ import { useNavigation } from 'expo-router/react-navigation';
2
+ import * as React from 'react';
3
+ import type { SearchBarProps } from 'react-native-screens';
4
+
5
+ import { useColorScheme } from './useColorScheme';
6
+
7
+ function useHeaderSearchBar(props: SearchBarProps = {}) {
8
+ const { colorScheme, colors } = useColorScheme();
9
+ const navigation = useNavigation();
10
+ const [search, setSearch] = React.useState('');
11
+
12
+ React.useLayoutEffect(() => {
13
+ navigation.setOptions({
14
+ headerSearchBarOptions: {
15
+ placeholder: 'Search...',
16
+ textColor: colors.foreground,
17
+ tintColor: colors.primary,
18
+ headerIconColor: colors.foreground,
19
+ hintTextColor: colors.grey,
20
+ hideWhenScrolling: false,
21
+ onChangeText(event) {
22
+ setSearch(event.nativeEvent.text);
23
+ },
24
+ ...props,
25
+ } satisfies SearchBarProps,
26
+ });
27
+ // eslint-disable-next-line react-hooks/exhaustive-deps
28
+ }, [navigation, colorScheme]);
29
+
30
+ return search;
31
+ }
32
+
33
+ export { useHeaderSearchBar };
@@ -3,7 +3,7 @@ import '@/global.css';
3
3
  <% if (props.stylingPackage?.options.selectedComponents.includes('action-sheet')) { %>
4
4
  import { ActionSheetProvider } from '@expo/react-native-action-sheet';
5
5
  <% } %>
6
- import { ThemeProvider as NavThemeProvider } from '@react-navigation/native';
6
+ import { ThemeProvider as NavThemeProvider } from 'expo-router/react-navigation';
7
7
  import * as Device from 'expo-device';
8
8
  import { Link, Stack } from 'expo-router';
9
9
  import { StatusBar } from 'expo-status-bar';
@@ -1,4 +1,4 @@
1
- import { useHeaderHeight } from '@react-navigation/elements';
1
+ import { useHeaderHeight } from 'expo-router/react-navigation';
2
2
  import { FlashList } from '@shopify/flash-list';
3
3
  import { cssInterop } from 'nativewind';
4
4
  import * as React from 'react';
@@ -21,11 +21,9 @@ import {
21
21
  View,
22
22
  } from 'react-native';
23
23
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
24
- import { SearchBarProps } from 'react-native-screens';
25
24
  <% if (props.stylingPackage?.options.selectedComponents.includes('action-sheet')) { %>
26
25
  import { useActionSheet } from '@expo/react-native-action-sheet';
27
26
  <% } %>
28
- import { useNavigation } from '@react-navigation/native';
29
27
  <% if (props.stylingPackage?.options.selectedComponents.includes('button')) { %>
30
28
  import * as Haptics from 'expo-haptics';
31
29
  <% } else { %>
@@ -64,6 +62,7 @@ import { Text } from '@/components/nativewindui/Text';
64
62
  <% if (props.stylingPackage?.options.selectedComponents.includes('toggle')) { %>
65
63
  import { Toggle } from '@/components/nativewindui/Toggle';
66
64
  <% } %>
65
+ import { useHeaderSearchBar } from '@/lib/useHeaderSearchBar';
67
66
  import { useColorScheme } from '@/lib/useColorScheme';
68
67
  import { COLORS } from '@/theme/colors';
69
68
 
@@ -95,32 +94,6 @@ export default function Screen() {
95
94
  );
96
95
  }
97
96
 
98
- function useHeaderSearchBar(props: SearchBarProps = {}) {
99
- const { colorScheme, colors } = useColorScheme();
100
- const navigation = useNavigation();
101
- const [search, setSearch] = React.useState('');
102
-
103
- React.useLayoutEffect(() => {
104
- navigation.setOptions({
105
- headerSearchBarOptions: {
106
- placeholder: 'Search...',
107
- textColor: colors.foreground,
108
- tintColor: colors.primary,
109
- headerIconColor: colors.foreground,
110
- hintTextColor: colors.grey,
111
- hideWhenScrolling: false,
112
- onChangeText(ev) {
113
- setSearch(ev.nativeEvent.text);
114
- },
115
- ...props,
116
- } satisfies SearchBarProps,
117
- });
118
- // eslint-disable-next-line react-hooks/exhaustive-deps
119
- }, [navigation, colorScheme]);
120
-
121
- return search;
122
- }
123
-
124
97
  function ListEmptyComponent() {
125
98
  const insets = useSafeAreaInsets();
126
99
  const dimensions = useWindowDimensions();
@@ -315,16 +288,13 @@ const COMPONENTS: ComponentItem[] = [
315
288
  name: 'Progress Indicator',
316
289
  component: function ProgressIndicatorExample() {
317
290
  const [progress, setProgress] = React.useState(13);
291
+ React.useEffect(() => {
292
+ const intervalId = setInterval(() => {
293
+ setProgress((prev) => (prev >= 99 ? 0 : prev + 5));
294
+ }, 1000);
318
295
 
319
- React.useEffect(() => {
320
- let id: ReturnType<typeof setInterval> | null = null;
321
- if (!id) {
322
- id = setInterval(() => {
323
- setProgress((prev) => (prev >= 99 ? 0 : prev + 5));
324
- }, 1000);
325
- }
326
296
  return () => {
327
- if (id) clearInterval(id);
297
+ clearInterval(intervalId);
328
298
  };
329
299
  }, []);
330
300
  return (
@@ -378,8 +348,8 @@ const COMPONENTS: ComponentItem[] = [
378
348
  <DatePicker
379
349
  value={date}
380
350
  mode='datetime'
381
- onChange={(ev) => {
382
- setDate(new Date(ev.nativeEvent.timestamp));
351
+ onValueChange={(_event, selectedDate) => {
352
+ setDate(selectedDate);
383
353
  }}
384
354
  />
385
355
  </View>