create-expo-stack 2.1.18 → 2.1.20

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.
@@ -56,6 +56,10 @@ var command = {
56
56
  _c.label = 1;
57
57
  case 1:
58
58
  _c.trys.push([1, 10, , 11]);
59
+ // Validation: check if the user passed in the tabs option without passing in either expo router or react navigation. If so, throw an error
60
+ if (options.tabs && !options.reactNavigation && !options['react-navigation'] && !options.reactnavigation && !options.expoRouter && !options['expo-router'] && !options.exporouter) {
61
+ throw new Error("You must pass in either --react-navigation or --expo-router if you want to use the --tabs option");
62
+ }
59
63
  return [4 /*yield*/, (0, utilities_1.renderTitle)(toolbox)];
60
64
  case 2:
61
65
  _c.sent();
@@ -86,7 +90,7 @@ var command = {
86
90
  case 7:
87
91
  // @internal Update the cliResults with the options passed in via the command
88
92
  // This is used for testing purposes only
89
- if (options.reactNavigation) {
93
+ if (options.reactNavigation || options['react-navigation'] || options.reactnavigation) {
90
94
  // Add react-navigation package
91
95
  cliResults.packages.push({
92
96
  name: "react-navigation", type: 'navigation', options: {
@@ -94,7 +98,7 @@ var command = {
94
98
  }
95
99
  });
96
100
  }
97
- if (options.expoRouter) {
101
+ if (options.expoRouter || options['expo-router'] || options.exporouter) {
98
102
  // Add expo-router package
99
103
  cliResults.packages.push({
100
104
  name: "expo-router", type: 'navigation', options: {
@@ -110,6 +114,10 @@ var command = {
110
114
  // Add tamagui package
111
115
  cliResults.packages.push({ name: "tamagui", type: 'styling', options: {} });
112
116
  }
117
+ if (options.stylesheet || options.stylesheets) {
118
+ // Add stylesheet package
119
+ cliResults.packages.push({ name: "stylesheet", type: 'styling', options: {} });
120
+ }
113
121
  // Destructure the results but set the projectName if the first param is passed in
114
122
  if (first) {
115
123
  cliResults.projectName = first;
@@ -143,4 +151,4 @@ var command = {
143
151
  }); },
144
152
  };
145
153
  exports.default = command;
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7QUFFNUIsMENBUXNCO0FBQ3RCLDBDQUE4QztBQUM5QyxrQ0FBeUQ7QUFFekQsSUFBTSxPQUFPLEdBQW1CO0lBQzlCLElBQUksRUFBRSxtQkFBbUI7SUFDekIsV0FBVyxFQUFFLDJCQUEyQjtJQUN4QyxHQUFHLEVBQUUsVUFBTyxPQUFPOzs7OztvQkFFZixLQUVFLE9BQU8sV0FGcUIsRUFBaEIsS0FBSyxXQUFBLEVBQUUsT0FBTyxhQUFBLEVBQzVCLEtBQ0UsT0FBTyxNQUQwQixFQUExQixJQUFJLFVBQUEsRUFBRSxTQUFTLGVBQUEsRUFBRSxPQUFPLGFBQUEsQ0FDdkI7b0JBQ1osSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUU7d0JBQzdCLElBQUEsb0JBQVEsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFBO3dCQUVsQyxzQkFBTztxQkFDUjs7OztvQkFFQyxxQkFBTSxJQUFBLHVCQUFXLEVBQUMsT0FBTyxDQUFDLEVBQUE7O29CQUExQixTQUEwQixDQUFDO29CQUUzQiwwREFBMEQ7b0JBQzFELDRFQUE0RTtvQkFDNUUscUJBQU0sSUFBSSxPQUFPLENBQUMsVUFBQyxPQUFPLElBQUssT0FBQSxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUF4QixDQUF3QixDQUFDLEVBQUE7O29CQUZ4RCwwREFBMEQ7b0JBQzFELDRFQUE0RTtvQkFDNUUsU0FBd0QsQ0FBQztvQkFHckQsVUFBVSxHQUFlLDBCQUFjLENBQUM7eUJBR3hDLE9BQU8sQ0FBQyxNQUFN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
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7QUFFNUIsMENBUXNCO0FBQ3RCLDBDQUE4QztBQUM5QyxrQ0FBeUQ7QUFFekQsSUFBTSxPQUFPLEdBQW1CO0lBQzlCLElBQUksRUFBRSxtQkFBbUI7SUFDekIsV0FBVyxFQUFFLDJCQUEyQjtJQUN4QyxHQUFHLEVBQUUsVUFBTyxPQUFPOzs7OztvQkFFZixLQUVFLE9BQU8sV0FGcUIsRUFBaEIsS0FBSyxXQUFBLEVBQUUsT0FBTyxhQUFBLEVBQzVCLEtBQ0UsT0FBTyxNQUQwQixFQUExQixJQUFJLFVBQUEsRUFBRSxTQUFTLGVBQUEsRUFBRSxPQUFPLGFBQUEsQ0FDdkI7b0JBQ1osSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUU7d0JBQzdCLElBQUEsb0JBQVEsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFBO3dCQUVsQyxzQkFBTztxQkFDUjs7OztvQkFFQywySUFBMkk7b0JBQzNJLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTt3QkFDakwsTUFBTSxJQUFJLEtBQUssQ0FBQyxrR0FBa0csQ0FBQyxDQUFBO3FCQUNwSDtvQkFFRCxxQkFBTSxJQUFBLHVCQUFXLEVBQUMs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
@@ -4,7 +4,7 @@ import { Feather } from "@expo/vector-icons";
4
4
  import { Text, TouchableOpacity, View } from "react-native";
5
5
  <% } else if (props.stylingPackage?.name === "tamagui") { %>
6
6
  import React, { useEffect } from "react";
7
- import { TamaguiProvider, Button } from "tamagui";
7
+ import { TamaguiProvider, Button, Text } from "tamagui";
8
8
  import { useFonts } from "expo-font";
9
9
  import { Stack, useRouter, SplashScreen } from "expo-router";
10
10
 
@@ -42,7 +42,7 @@ export default function Layout() {
42
42
  if (!loaded) return null;
43
43
 
44
44
  const BackButton = () => (
45
- <Button onPress={router.back} icon={<Feather name="chevron-left" size={16} color="#007AFF" />}>Back</Button>
45
+ <Button unstyled flexDirection="row" backgroundColor="transparent" paddingLeft={0} pressStyle={{ opacity: 0.5 }} onPress={router.back} icon={<Feather name="chevron-left" size={16} color="#007AFF" />}><Text color="#007AFF">Back</Text></Button>
46
46
  )
47
47
  <% } else { %>
48
48
  const BackButton = () => (
@@ -58,7 +58,7 @@ export default function Layout() {
58
58
  return (
59
59
  <% if (props.stylingPackage?.name === "tamagui") { %>
60
60
  <TamaguiProvider config={config}>
61
- <% } %>
61
+ <% } %>
62
62
  <Stack>
63
63
  <Stack.Screen name="index" options={{ title: "Overview" }} />
64
64
  <Stack.Screen name="details"
@@ -1,7 +1,8 @@
1
1
  <% if (props.stylingPackage?.name === "nativewind") { %>
2
2
  import { View, Text } from "react-native";
3
3
  <% } else if (props.stylingPackage?.name === "tamagui") { %>
4
- import { YStack, H2, Paragraph } from "tamagui";
4
+ import { YStack } from "tamagui";
5
+ import { Container, Main, Subtitle, Title } from "../tamagui.config";
5
6
  <% } else { %>
6
7
  import { StyleSheet, View, Text } from "react-native";
7
8
  <% } %>
@@ -9,34 +10,32 @@ import { useLocalSearchParams } from "expo-router";
9
10
 
10
11
  export default function Details() {
11
12
  const { name } = useLocalSearchParams();
13
+ return (
12
14
  <% if (props.stylingPackage?.name === "nativewind") { %>
13
- return (
14
- <View className={styles.container}>
15
- <View className={styles.main}>
16
- <Text className={styles.title}>Details</Text>
17
- <Text className={styles.subtitle}>Showing details for user {name}.</Text>
18
- </View>
15
+ <View className={styles.container}>
16
+ <View className={styles.main}>
17
+ <Text className={styles.title}>Details</Text>
18
+ <Text className={styles.subtitle}>Showing details for user {name}.</Text>
19
19
  </View>
20
- );
20
+ </View>
21
21
  <% } else if (props.stylingPackage?.name === "tamagui") { %>
22
- return (
23
- <YStack flex={1} padding="$2">
24
- <YStack flex={1} maxWidth="100%">
25
- <H2>Details</H2>
26
- <Paragraph theme="alt1">Showing details for user {name}.</Paragraph>
22
+ <Container>
23
+ <Main>
24
+ <YStack>
25
+ <Title>Details</Title>
26
+ <Subtitle>Showing details for user {name}.</Subtitle>
27
27
  </YStack>
28
- </YStack>
29
- );
28
+ </Main>
29
+ </Container>
30
30
  <% } else { %>
31
- return (
32
- <View style={styles.container}>
33
- <View style={styles.main}>
34
- <Text style={styles.title}>Details</Text>
35
- <Text style={styles.subtitle}>Showing details for user {name}.</Text>
36
- </View>
31
+ <View style={styles.container}>
32
+ <View style={styles.main}>
33
+ <Text style={styles.title}>Details</Text>
34
+ <Text style={styles.subtitle}>Showing details for user {name}.</Text>
37
35
  </View>
38
- );
36
+ </View>
39
37
  <% } %>
38
+ );
40
39
  }
41
40
 
42
41
  <% if (props.stylingPackage?.name === "nativewind") { %>
@@ -1,60 +1,57 @@
1
1
  <% if (props.stylingPackage?.name === "nativewind") { %>
2
2
  import { Text, TouchableOpacity, View } from "react-native";
3
3
  <% } else if (props.stylingPackage?.name === "tamagui") { %>
4
- import { YStack, H2, Paragraph, Button } from "tamagui"
4
+ import { YStack } from "tamagui";
5
+ import { Container, Main, Title, Subtitle, Button, ButtonText } from '../tamagui.config';
5
6
  <% } else { %>
6
7
  import { StyleSheet, Text, TouchableOpacity, View } from "react-native";
7
8
  <% } %>
8
9
  import { Link } from "expo-router";
9
10
 
10
11
  export default function Page() {
12
+ return (
11
13
  <% if (props.stylingPackage?.name === "nativewind") { %>
12
- return (
13
- <View className={styles.container}>
14
- <View className={styles.main}>
15
- <View>
16
- <Text className={styles.title}>Hello World</Text>
17
- <Text className={styles.subtitle}>This is the first page of your app.</Text>
18
- </View>
19
- <Link href={{ pathname: "/details", params: { name: "Dan" } }} asChild>
20
- <TouchableOpacity className={styles.button} >
21
- <Text className={styles.buttonText}>Show Details</Text>
22
- </TouchableOpacity>
23
- </Link>
14
+ <View className={styles.container}>
15
+ <View className={styles.main}>
16
+ <View>
17
+ <Text className={styles.title}>Hello World</Text>
18
+ <Text className={styles.subtitle}>This is the first page of your app.</Text>
24
19
  </View>
20
+ <Link href={{ pathname: "/details", params: { name: "Dan" } }} asChild>
21
+ <TouchableOpacity className={styles.button} >
22
+ <Text className={styles.buttonText}>Show Details</Text>
23
+ </TouchableOpacity>
24
+ </Link>
25
25
  </View>
26
- );
26
+ </View>
27
27
  <% } else if (props.stylingPackage?.name === "tamagui") { %>
28
- return (
29
- <YStack flex={1} padding="$3">
30
- <YStack flex={1} maxWidth="100%" justifyContent="space-between">
31
- <YStack>
32
- <H2>Hello World</H2>
33
- <Paragraph>This is the first page of your app.</Paragraph>
34
- </YStack>
35
- <Link href={{ pathname: "/details", params: { name: "Dan" } }} asChild>
36
- <Button>Show Details</Button>
37
- </Link>
28
+ <Container>
29
+ <Main>
30
+ <YStack>
31
+ <Title>Hello World</Title>
32
+ <Subtitle>This is the first page of your app.</Subtitle>
38
33
  </YStack>
39
- </YStack>
40
- )
34
+ <Link href={{ pathname: "/details", params: { name: "Dan" } }} asChild>
35
+ <Button><ButtonText>Show Details</ButtonText></Button>
36
+ </Link>
37
+ </Main>
38
+ </Container>
41
39
  <% } else { %>
42
- return (
43
- <View style={styles.container}>
44
- <View style={styles.main}>
45
- <View>
46
- <Text style={styles.title}>Hello World</Text>
47
- <Text style={styles.subtitle}>This is the first page of your app.</Text>
48
- </View>
49
- <Link href={{ pathname: "/details", params: { name: "Dan" } }} asChild>
50
- <TouchableOpacity style={styles.button} >
51
- <Text style={styles.buttonText}>Show Details</Text>
52
- </TouchableOpacity>
53
- </Link>
40
+ <View style={styles.container}>
41
+ <View style={styles.main}>
42
+ <View>
43
+ <Text style={styles.title}>Hello World</Text>
44
+ <Text style={styles.subtitle}>This is the first page of your app.</Text>
54
45
  </View>
46
+ <Link href={{ pathname: "/details", params: { name: "Dan" } }} asChild>
47
+ <TouchableOpacity style={styles.button} >
48
+ <Text style={styles.buttonText}>Show Details</Text>
49
+ </TouchableOpacity>
50
+ </Link>
55
51
  </View>
56
- );
52
+ </View>
57
53
  <% } %>
54
+ );
58
55
  }
59
56
 
60
57
  <% if (props.stylingPackage?.name === "nativewind") { %>
@@ -1,9 +1,9 @@
1
- import { createTamagui } from 'tamagui'
2
- import { createInterFont } from '@tamagui/font-inter'
3
- import { shorthands } from '@tamagui/shorthands'
4
- import { themes, tokens } from '@tamagui/themes'
5
- import { createMedia } from '@tamagui/react-native-media-driver'
6
- import { createAnimations } from '@tamagui/animations-react-native'
1
+ import { createAnimations } from "@tamagui/animations-react-native";
2
+ import { createInterFont } from "@tamagui/font-inter";
3
+ import { createMedia } from "@tamagui/react-native-media-driver";
4
+ import { shorthands } from "@tamagui/shorthands";
5
+ import { themes, tokens } from "@tamagui/themes";
6
+ import { createTamagui, styled, Text, YStack } from "tamagui";
7
7
 
8
8
  export const animations = createAnimations({
9
9
  bouncy: {
@@ -23,54 +23,60 @@ export const animations = createAnimations({
23
23
  mass: 1.2,
24
24
  stiffness: 250,
25
25
  },
26
- })
26
+ });
27
27
 
28
- const headingFont = createInterFont({
29
- size: {
30
- 6: 15,
31
- },
32
- transform: {
33
- 6: 'uppercase',
34
- 7: 'none',
35
- },
36
- weight: {
37
- 6: '400',
38
- 7: '700',
39
- },
40
- color: {
41
- 6: '$colorFocus',
42
- 7: '$color',
43
- },
44
- letterSpacing: {
45
- 5: 2,
46
- 6: 1,
47
- 7: 0,
48
- 8: -1,
49
- 9: -2,
50
- 10: -3,
51
- 12: -4,
52
- 14: -5,
53
- 15: -6,
28
+ const headingFont = createInterFont();
29
+
30
+ const bodyFont = createInterFont();
31
+
32
+ export const Container = styled(YStack, {
33
+ flex: 1,
34
+ padding: 24,
35
+ });
36
+
37
+ export const Main = styled(YStack, {
38
+ flex: 1,
39
+ maxWidth: 960,
40
+ justifyContent: 'space-between',
41
+ });
42
+
43
+ export const Title = styled(Text, {
44
+ fontSize: 64,
45
+ fontWeight: 'bold',
46
+ });
47
+
48
+ export const Subtitle = styled(Text, {
49
+ color: '#38434D',
50
+ fontSize: 36,
51
+ });
52
+
53
+ export const Button = styled(YStack, {
54
+ alignItems: 'center',
55
+ backgroundColor: '#6366F1',
56
+ borderRadius: 24,
57
+ justifyContent: 'center',
58
+ padding: 16,
59
+ shadowColor: '#000',
60
+ shadowOffset: {
61
+ height: 2,
62
+ width: 0,
54
63
  },
55
- face: {
56
- 700: { normal: 'InterBold' },
64
+ shadowOpacity: 0.25,
65
+ shadowRadius: 3.84,
66
+ hoverStyle: {
67
+ backgroundColor: '#5a5fcf',
57
68
  },
58
- })
69
+ });
59
70
 
60
- const bodyFont = createInterFont(
61
- {
62
- face: {
63
- 700: { normal: 'InterBold' },
64
- },
65
- },
66
- {
67
- sizeSize: (size) => Math.round(size * 1.1),
68
- sizeLineHeight: (size) => Math.round(size * 1.1 + (size > 20 ? 10 : 10)),
69
- }
70
- )
71
+ export const ButtonText = styled(Text, {
72
+ color: '#FFFFFF',
73
+ fontSize: 16,
74
+ fontWeight: '600',
75
+ textAlign: 'center',
76
+ });
71
77
 
72
78
  const config = createTamagui({
73
- defaultFont: 'body',
79
+ defaultFont: "body",
74
80
  animations,
75
81
  shouldAddPrefersColorThemes: true,
76
82
  themeClassNameOnRoot: true,
@@ -94,9 +100,9 @@ const config = createTamagui({
94
100
  gtLg: { minWidth: 1280 + 1 },
95
101
  short: { maxHeight: 820 },
96
102
  tall: { minHeight: 820 },
97
- hoverNone: { hover: 'none' },
98
- pointerCoarse: { pointer: 'coarse' },
103
+ hoverNone: { hover: "none" },
104
+ pointerCoarse: { pointer: "coarse" },
99
105
  }),
100
- })
106
+ });
101
107
 
102
108
  export default config;
@@ -3,7 +3,7 @@ export interface CliFlags {
3
3
  noInstall: boolean;
4
4
  importAlias: string;
5
5
  }
6
- export declare const availablePackages: readonly ["nativewind", "tamagui", "react-navigation", "expo-router", "stylesheet"];
6
+ export declare const availablePackages: readonly ["nativewind", "tamagui", "react-navigation", "reactNavigation", "reactnavigation", "expo-router", "expoRouter", "stylesheet"];
7
7
  export type NavigationTypes = "stack" | "tabs" | undefined;
8
8
  export type AvailablePackages = {
9
9
  name: (typeof availablePackages)[number];
package/build/types.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.availablePackages = void 0;
4
- exports.availablePackages = ["nativewind", "tamagui", "react-navigation", "expo-router", "stylesheet"];
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBT2EsUUFBQSxpQkFBaUIsR0FBRyxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBVSxDQUFDIn0=
4
+ exports.availablePackages = ["nativewind", "tamagui", "react-navigation", "reactNavigation", "reactnavigation", "expo-router", "expoRouter", "stylesheet"];
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBT2EsUUFBQSxpQkFBaUIsR0FBRyxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQVUsQ0FBQyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-expo-stack",
3
- "version": "2.1.18",
3
+ "version": "2.1.20",
4
4
  "description": "create-expo-stack CLI",
5
5
  "private": false,
6
6
  "types": "build/types/types.d.ts",