create-expo-stack 2.3.12-next.5199dce → 2.3.12
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.
- package/build/templates/packages/expo-router/drawer/app/+html.tsx.ejs +46 -0
- package/build/templates/packages/expo-router/drawer/app/[...unmatched].tsx.ejs +77 -0
- package/build/templates/packages/expo-router/stack/app/+html.tsx.ejs +46 -0
- package/build/templates/packages/expo-router/stack/app/[...unmatched].tsx.ejs +77 -0
- package/build/templates/packages/expo-router/stack/app/_layout.tsx.ejs +21 -6
- package/build/templates/packages/expo-router/stack/app/details.tsx.ejs +2 -15
- package/build/templates/packages/expo-router/tabs/app/+html.tsx.ejs +46 -0
- package/build/templates/packages/expo-router/tabs/app/[...unmatched].tsx.ejs +77 -0
- package/build/templates/packages/expo-router/tabs/app/modal.tsx.ejs +1 -1
- package/build/templates/packages/tamagui/tamagui.config.ts.ejs +25 -24
- package/build/utilities/configureProjectFiles.js +9 -3
- package/package.json +66 -66
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ScrollViewStyleReset } from 'expo-router/html';
|
|
2
|
+
|
|
3
|
+
// This file is web-only and used to configure the root HTML for every
|
|
4
|
+
// web page during static rendering.
|
|
5
|
+
// The contents of this function only run in Node.js environments and
|
|
6
|
+
// do not have access to the DOM or browser APIs.
|
|
7
|
+
export default function Root({ children }: { children: React.ReactNode }) {
|
|
8
|
+
return (
|
|
9
|
+
<html lang="en">
|
|
10
|
+
<head>
|
|
11
|
+
<meta charSet="utf-8" />
|
|
12
|
+
<meta httpEquiv="X-UA-Compatible" content="IE=edge" />
|
|
13
|
+
|
|
14
|
+
{/*
|
|
15
|
+
This viewport disables scaling which makes the mobile website act more like a native app.
|
|
16
|
+
However this does reduce built-in accessibility. If you want to enable scaling, use this instead:
|
|
17
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
|
|
18
|
+
*/}
|
|
19
|
+
<meta
|
|
20
|
+
name="viewport"
|
|
21
|
+
content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1.00001,viewport-fit=cover"
|
|
22
|
+
/>
|
|
23
|
+
{/*
|
|
24
|
+
Disable body scrolling on web. This makes ScrollView components work closer to how they do on native.
|
|
25
|
+
However, body scrolling is often nice to have for mobile web. If you want to enable it, remove this line.
|
|
26
|
+
*/}
|
|
27
|
+
<ScrollViewStyleReset />
|
|
28
|
+
|
|
29
|
+
{/* Using raw CSS styles as an escape-hatch to ensure the background color never flickers in dark-mode. */}
|
|
30
|
+
<style dangerouslySetInnerHTML={{ __html: responsiveBackground }} />
|
|
31
|
+
{/* Add any additional <head> elements that you want globally available on web... */}
|
|
32
|
+
</head>
|
|
33
|
+
<body>{children}</body>
|
|
34
|
+
</html>
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const responsiveBackground = `
|
|
39
|
+
body {
|
|
40
|
+
background-color: #fff;
|
|
41
|
+
}
|
|
42
|
+
@media (prefers-color-scheme: dark) {
|
|
43
|
+
body {
|
|
44
|
+
background-color: #000;
|
|
45
|
+
}
|
|
46
|
+
}`;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Link, Stack } from 'expo-router';
|
|
2
|
+
<% if (props.stylingPackage?.name === "nativewind") {%>
|
|
3
|
+
import { Text, View } from 'react-native';
|
|
4
|
+
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
5
|
+
import { StyleSheet, Text, View } from 'react-native';
|
|
6
|
+
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
7
|
+
import { YStack } from "tamagui";
|
|
8
|
+
import { Container, Main, Subtitle, Title } from "../tamagui.config";
|
|
9
|
+
<% } %>
|
|
10
|
+
|
|
11
|
+
export default function NotFoundScreen() {
|
|
12
|
+
return (
|
|
13
|
+
<% if (props.stylingPackage?.name === "nativewind") {%>
|
|
14
|
+
<>
|
|
15
|
+
<Stack.Screen options={{ title: "Oops!" }} />
|
|
16
|
+
<View className={styles.container}>
|
|
17
|
+
<Text className={styles.title}>This screen doesn't exist.</Text>
|
|
18
|
+
<Link href="/" className={styles.link}>
|
|
19
|
+
<Text className={styles.linkText}>Go to home screen!</Text>
|
|
20
|
+
</Link>
|
|
21
|
+
</View>
|
|
22
|
+
</>
|
|
23
|
+
<% } else if (props.stylingPackage?.name === "tamagui") {%>
|
|
24
|
+
<Container>
|
|
25
|
+
<Stack.Screen options={{ title: "Oops!" />
|
|
26
|
+
<Main>
|
|
27
|
+
<YStack>
|
|
28
|
+
<Title>This screen doesn't exist.</Title>
|
|
29
|
+
<Link href="/">
|
|
30
|
+
<Subtitle>Go to home screen!</Subtitle>
|
|
31
|
+
</Link>
|
|
32
|
+
</YStack>
|
|
33
|
+
</Main>
|
|
34
|
+
</Container>
|
|
35
|
+
<% } else { %>
|
|
36
|
+
<>
|
|
37
|
+
<Stack.Screen options={{ title: "Oops!" }} />
|
|
38
|
+
<View style={styles.container}>
|
|
39
|
+
<Text style={styles.title}>This screen doesn't exist.</Text>
|
|
40
|
+
<Link href="/" style={styles.link}>
|
|
41
|
+
<Text style={styles.linkText}>Go to home screen!</Text>
|
|
42
|
+
</Link>
|
|
43
|
+
</View>
|
|
44
|
+
</>
|
|
45
|
+
<% } %>
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
50
|
+
const styles = {
|
|
51
|
+
container: `items-center flex-1 justify-center p-5`,
|
|
52
|
+
title: `text-xl font-bold`,
|
|
53
|
+
link: `mt-4 pt-4`,
|
|
54
|
+
linkText: `text-base text-[#2e78b7]`,
|
|
55
|
+
};
|
|
56
|
+
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
57
|
+
const styles = StyleSheet.create({
|
|
58
|
+
container: {
|
|
59
|
+
flex: 1,
|
|
60
|
+
alignItems: 'center',
|
|
61
|
+
justifyContent: 'center',
|
|
62
|
+
padding: 20,
|
|
63
|
+
},
|
|
64
|
+
title: {
|
|
65
|
+
fontSize: 20,
|
|
66
|
+
fontWeight: 'bold',
|
|
67
|
+
},
|
|
68
|
+
link: {
|
|
69
|
+
marginTop: 16,
|
|
70
|
+
paddingVertical: 16,
|
|
71
|
+
},
|
|
72
|
+
linkText: {
|
|
73
|
+
fontSize: 14,
|
|
74
|
+
color: '#2e78b7',
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
<% } %>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ScrollViewStyleReset } from 'expo-router/html';
|
|
2
|
+
|
|
3
|
+
// This file is web-only and used to configure the root HTML for every
|
|
4
|
+
// web page during static rendering.
|
|
5
|
+
// The contents of this function only run in Node.js environments and
|
|
6
|
+
// do not have access to the DOM or browser APIs.
|
|
7
|
+
export default function Root({ children }: { children: React.ReactNode }) {
|
|
8
|
+
return (
|
|
9
|
+
<html lang="en">
|
|
10
|
+
<head>
|
|
11
|
+
<meta charSet="utf-8" />
|
|
12
|
+
<meta httpEquiv="X-UA-Compatible" content="IE=edge" />
|
|
13
|
+
|
|
14
|
+
{/*
|
|
15
|
+
This viewport disables scaling which makes the mobile website act more like a native app.
|
|
16
|
+
However this does reduce built-in accessibility. If you want to enable scaling, use this instead:
|
|
17
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
|
|
18
|
+
*/}
|
|
19
|
+
<meta
|
|
20
|
+
name="viewport"
|
|
21
|
+
content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1.00001,viewport-fit=cover"
|
|
22
|
+
/>
|
|
23
|
+
{/*
|
|
24
|
+
Disable body scrolling on web. This makes ScrollView components work closer to how they do on native.
|
|
25
|
+
However, body scrolling is often nice to have for mobile web. If you want to enable it, remove this line.
|
|
26
|
+
*/}
|
|
27
|
+
<ScrollViewStyleReset />
|
|
28
|
+
|
|
29
|
+
{/* Using raw CSS styles as an escape-hatch to ensure the background color never flickers in dark-mode. */}
|
|
30
|
+
<style dangerouslySetInnerHTML={{ __html: responsiveBackground }} />
|
|
31
|
+
{/* Add any additional <head> elements that you want globally available on web... */}
|
|
32
|
+
</head>
|
|
33
|
+
<body>{children}</body>
|
|
34
|
+
</html>
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const responsiveBackground = `
|
|
39
|
+
body {
|
|
40
|
+
background-color: #fff;
|
|
41
|
+
}
|
|
42
|
+
@media (prefers-color-scheme: dark) {
|
|
43
|
+
body {
|
|
44
|
+
background-color: #000;
|
|
45
|
+
}
|
|
46
|
+
}`;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Link, Stack } from 'expo-router';
|
|
2
|
+
<% if (props.stylingPackage?.name === "nativewind") {%>
|
|
3
|
+
import { Text, View } from 'react-native';
|
|
4
|
+
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
5
|
+
import { StyleSheet, Text, View } from 'react-native';
|
|
6
|
+
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
7
|
+
import { YStack } from "tamagui";
|
|
8
|
+
import { Container, Main, Subtitle, Title } from "../tamagui.config";
|
|
9
|
+
<% } %>
|
|
10
|
+
|
|
11
|
+
export default function NotFoundScreen() {
|
|
12
|
+
return (
|
|
13
|
+
<% if (props.stylingPackage?.name === "nativewind") {%>
|
|
14
|
+
<>
|
|
15
|
+
<Stack.Screen options={{ title: "Oops!" }} />
|
|
16
|
+
<View className={styles.container}>
|
|
17
|
+
<Text className={styles.title}>This screen doesn't exist.</Text>
|
|
18
|
+
<Link href="/" className={styles.link}>
|
|
19
|
+
<Text className={styles.linkText}>Go to home screen!</Text>
|
|
20
|
+
</Link>
|
|
21
|
+
</View>
|
|
22
|
+
</>
|
|
23
|
+
<% } else if (props.stylingPackage?.name === "tamagui") {%>
|
|
24
|
+
<Container>
|
|
25
|
+
<Stack.Screen options={{ title: "Oops!" />
|
|
26
|
+
<Main>
|
|
27
|
+
<YStack>
|
|
28
|
+
<Title>This screen doesn't exist.</Title>
|
|
29
|
+
<Link href="/">
|
|
30
|
+
<Subtitle>Go to home screen!</Subtitle>
|
|
31
|
+
</Link>
|
|
32
|
+
</YStack>
|
|
33
|
+
</Main>
|
|
34
|
+
</Container>
|
|
35
|
+
<% } else { %>
|
|
36
|
+
<>
|
|
37
|
+
<Stack.Screen options={{ title: "Oops!" }} />
|
|
38
|
+
<View style={styles.container}>
|
|
39
|
+
<Text style={styles.title}>This screen doesn't exist.</Text>
|
|
40
|
+
<Link href="/" style={styles.link}>
|
|
41
|
+
<Text style={styles.linkText}>Go to home screen!</Text>
|
|
42
|
+
</Link>
|
|
43
|
+
</View>
|
|
44
|
+
</>
|
|
45
|
+
<% } %>
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
50
|
+
const styles = {
|
|
51
|
+
container: `items-center flex-1 justify-center p-5`,
|
|
52
|
+
title: `text-xl font-bold`,
|
|
53
|
+
link: `mt-4 pt-4`,
|
|
54
|
+
linkText: `text-base text-[#2e78b7]`,
|
|
55
|
+
};
|
|
56
|
+
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
57
|
+
const styles = StyleSheet.create({
|
|
58
|
+
container: {
|
|
59
|
+
flex: 1,
|
|
60
|
+
alignItems: 'center',
|
|
61
|
+
justifyContent: 'center',
|
|
62
|
+
padding: 20,
|
|
63
|
+
},
|
|
64
|
+
title: {
|
|
65
|
+
fontSize: 20,
|
|
66
|
+
fontWeight: 'bold',
|
|
67
|
+
},
|
|
68
|
+
link: {
|
|
69
|
+
marginTop: 16,
|
|
70
|
+
paddingVertical: 16,
|
|
71
|
+
},
|
|
72
|
+
linkText: {
|
|
73
|
+
fontSize: 14,
|
|
74
|
+
color: '#2e78b7',
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
<% } %>
|
|
@@ -1,16 +1,31 @@
|
|
|
1
|
-
<% if (props.stylingPackage?.name === "
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
<% if (props.stylingPackage?.name === "tamagui") { %>
|
|
2
|
+
import { useFonts } from 'expo-font';
|
|
3
|
+
import { SplashScreen, Stack } from 'expo-router';
|
|
4
|
+
import { useEffect } from 'react';
|
|
5
|
+
import { TamaguiProvider } from 'tamagui';
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
import config from '../tamagui.config';
|
|
8
8
|
<% } else { %>
|
|
9
9
|
import { Stack } from "expo-router";
|
|
10
10
|
<% } %>
|
|
11
11
|
|
|
12
12
|
export default function Layout() {
|
|
13
13
|
|
|
14
|
+
<% if (props.stylingPackage?.name === "tamagui") { %>
|
|
15
|
+
const [loaded] = useFonts({
|
|
16
|
+
Inter: require("@tamagui/font-inter/otf/Inter-Medium.otf"),
|
|
17
|
+
InterBold: require("@tamagui/font-inter/otf/Inter-Bold.otf")
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
if (loaded) {
|
|
22
|
+
SplashScreen.hideAsync();
|
|
23
|
+
}
|
|
24
|
+
}, [loaded]);
|
|
25
|
+
|
|
26
|
+
if (!loaded) return null;
|
|
27
|
+
<% } %>
|
|
28
|
+
|
|
14
29
|
return (
|
|
15
30
|
<% if (props.stylingPackage?.name === "tamagui") { %>
|
|
16
31
|
<TamaguiProvider config={config}>
|
|
@@ -1,9 +1,8 @@
|
|
|
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 React
|
|
5
|
-
import {
|
|
6
|
-
import { Stack, useRouter, SplashScreen } from "expo-router";
|
|
4
|
+
import React from "react";
|
|
5
|
+
import { Stack, useRouter } from "expo-router";
|
|
7
6
|
import { Button, Text, YStack } from "tamagui";
|
|
8
7
|
import { Container, Main, Subtitle, Title } from "../tamagui.config";
|
|
9
8
|
<% } else { %>
|
|
@@ -25,18 +24,6 @@ export default function Details() {
|
|
|
25
24
|
</TouchableOpacity>
|
|
26
25
|
);
|
|
27
26
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
28
|
-
const [loaded] = useFonts({
|
|
29
|
-
Inter: require("@tamagui/font-inter/otf/Inter-Medium.otf"),
|
|
30
|
-
InterBold: require("@tamagui/font-inter/otf/Inter-Bold.otf")
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
useEffect(() => {
|
|
34
|
-
if (loaded) {
|
|
35
|
-
SplashScreen.hideAsync();
|
|
36
|
-
}
|
|
37
|
-
}, [loaded]);
|
|
38
|
-
|
|
39
|
-
if (!loaded) return null;
|
|
40
27
|
|
|
41
28
|
const BackButton = () => (
|
|
42
29
|
<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>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ScrollViewStyleReset } from 'expo-router/html';
|
|
2
|
+
|
|
3
|
+
// This file is web-only and used to configure the root HTML for every
|
|
4
|
+
// web page during static rendering.
|
|
5
|
+
// The contents of this function only run in Node.js environments and
|
|
6
|
+
// do not have access to the DOM or browser APIs.
|
|
7
|
+
export default function Root({ children }: { children: React.ReactNode }) {
|
|
8
|
+
return (
|
|
9
|
+
<html lang="en">
|
|
10
|
+
<head>
|
|
11
|
+
<meta charSet="utf-8" />
|
|
12
|
+
<meta httpEquiv="X-UA-Compatible" content="IE=edge" />
|
|
13
|
+
|
|
14
|
+
{/*
|
|
15
|
+
This viewport disables scaling which makes the mobile website act more like a native app.
|
|
16
|
+
However this does reduce built-in accessibility. If you want to enable scaling, use this instead:
|
|
17
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
|
|
18
|
+
*/}
|
|
19
|
+
<meta
|
|
20
|
+
name="viewport"
|
|
21
|
+
content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1.00001,viewport-fit=cover"
|
|
22
|
+
/>
|
|
23
|
+
{/*
|
|
24
|
+
Disable body scrolling on web. This makes ScrollView components work closer to how they do on native.
|
|
25
|
+
However, body scrolling is often nice to have for mobile web. If you want to enable it, remove this line.
|
|
26
|
+
*/}
|
|
27
|
+
<ScrollViewStyleReset />
|
|
28
|
+
|
|
29
|
+
{/* Using raw CSS styles as an escape-hatch to ensure the background color never flickers in dark-mode. */}
|
|
30
|
+
<style dangerouslySetInnerHTML={{ __html: responsiveBackground }} />
|
|
31
|
+
{/* Add any additional <head> elements that you want globally available on web... */}
|
|
32
|
+
</head>
|
|
33
|
+
<body>{children}</body>
|
|
34
|
+
</html>
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const responsiveBackground = `
|
|
39
|
+
body {
|
|
40
|
+
background-color: #fff;
|
|
41
|
+
}
|
|
42
|
+
@media (prefers-color-scheme: dark) {
|
|
43
|
+
body {
|
|
44
|
+
background-color: #000;
|
|
45
|
+
}
|
|
46
|
+
}`;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Link, Stack } from 'expo-router';
|
|
2
|
+
<% if (props.stylingPackage?.name === "nativewind") {%>
|
|
3
|
+
import { Text, View } from 'react-native';
|
|
4
|
+
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
5
|
+
import { StyleSheet, Text, View } from 'react-native';
|
|
6
|
+
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
7
|
+
import { YStack } from "tamagui";
|
|
8
|
+
import { Container, Main, Subtitle, Title } from "../tamagui.config";
|
|
9
|
+
<% } %>
|
|
10
|
+
|
|
11
|
+
export default function NotFoundScreen() {
|
|
12
|
+
return (
|
|
13
|
+
<% if (props.stylingPackage?.name === "nativewind") {%>
|
|
14
|
+
<>
|
|
15
|
+
<Stack.Screen options={{ title: "Oops!" }} />
|
|
16
|
+
<View className={styles.container}>
|
|
17
|
+
<Text className={styles.title}>This screen doesn't exist.</Text>
|
|
18
|
+
<Link href="/" className={styles.link}>
|
|
19
|
+
<Text className={styles.linkText}>Go to home screen!</Text>
|
|
20
|
+
</Link>
|
|
21
|
+
</View>
|
|
22
|
+
</>
|
|
23
|
+
<% } else if (props.stylingPackage?.name === "tamagui") {%>
|
|
24
|
+
<Container>
|
|
25
|
+
<Stack.Screen options={{ title: "Oops!" />
|
|
26
|
+
<Main>
|
|
27
|
+
<YStack>
|
|
28
|
+
<Title>This screen doesn't exist.</Title>
|
|
29
|
+
<Link href="/">
|
|
30
|
+
<Subtitle>Go to home screen!</Subtitle>
|
|
31
|
+
</Link>
|
|
32
|
+
</YStack>
|
|
33
|
+
</Main>
|
|
34
|
+
</Container>
|
|
35
|
+
<% } else { %>
|
|
36
|
+
<>
|
|
37
|
+
<Stack.Screen options={{ title: "Oops!" }} />
|
|
38
|
+
<View style={styles.container}>
|
|
39
|
+
<Text style={styles.title}>This screen doesn't exist.</Text>
|
|
40
|
+
<Link href="/" style={styles.link}>
|
|
41
|
+
<Text style={styles.linkText}>Go to home screen!</Text>
|
|
42
|
+
</Link>
|
|
43
|
+
</View>
|
|
44
|
+
</>
|
|
45
|
+
<% } %>
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
50
|
+
const styles = {
|
|
51
|
+
container: `items-center flex-1 justify-center p-5`,
|
|
52
|
+
title: `text-xl font-bold`,
|
|
53
|
+
link: `mt-4 pt-4`,
|
|
54
|
+
linkText: `text-base text-[#2e78b7]`,
|
|
55
|
+
};
|
|
56
|
+
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
57
|
+
const styles = StyleSheet.create({
|
|
58
|
+
container: {
|
|
59
|
+
flex: 1,
|
|
60
|
+
alignItems: 'center',
|
|
61
|
+
justifyContent: 'center',
|
|
62
|
+
padding: 20,
|
|
63
|
+
},
|
|
64
|
+
title: {
|
|
65
|
+
fontSize: 20,
|
|
66
|
+
fontWeight: 'bold',
|
|
67
|
+
},
|
|
68
|
+
link: {
|
|
69
|
+
marginTop: 16,
|
|
70
|
+
paddingVertical: 16,
|
|
71
|
+
},
|
|
72
|
+
linkText: {
|
|
73
|
+
fontSize: 14,
|
|
74
|
+
color: '#2e78b7',
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
<% } %>
|
|
@@ -44,7 +44,7 @@ export default function ModalScreen() {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
47
|
-
|
|
47
|
+
const styles = {
|
|
48
48
|
container: `items-center flex-1 justify-center`,
|
|
49
49
|
separator: `h-[1px] my-7 w-4/5 bg-gray-200`,
|
|
50
50
|
title: `text-xl font-bold`
|
|
@@ -4,28 +4,28 @@ import { createMedia } from "@tamagui/react-native-media-driver";
|
|
|
4
4
|
import { shorthands } from "@tamagui/shorthands";
|
|
5
5
|
import { themes, tokens } from "@tamagui/themes";
|
|
6
6
|
<% if ((props.navigationPackage?.type === "navigation") && (props.navigationPackage?.options.type === "stack")) { %>
|
|
7
|
-
import { createTamagui, styled,
|
|
7
|
+
import { createTamagui, styled, SizableText, H1, YStack } from "tamagui";
|
|
8
8
|
<% } else { %>
|
|
9
9
|
import { createTamagui } from "tamagui";
|
|
10
10
|
<% } %>
|
|
11
11
|
|
|
12
12
|
const animations = createAnimations({
|
|
13
13
|
bouncy: {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
mass: 0.9,
|
|
14
|
+
damping: 10,
|
|
15
|
+
mass: 0.9,
|
|
17
16
|
stiffness: 100,
|
|
17
|
+
type: 'spring',
|
|
18
18
|
},
|
|
19
19
|
lazy: {
|
|
20
|
+
damping: 20,
|
|
20
21
|
type: 'spring',
|
|
21
|
-
damping: 20,
|
|
22
22
|
stiffness: 60,
|
|
23
23
|
},
|
|
24
24
|
quick: {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
mass: 1.2,
|
|
25
|
+
damping: 20,
|
|
26
|
+
mass: 1.2,
|
|
28
27
|
stiffness: 250,
|
|
28
|
+
type: 'spring',
|
|
29
29
|
},
|
|
30
30
|
});
|
|
31
31
|
|
|
@@ -34,32 +34,36 @@ const headingFont = createInterFont();
|
|
|
34
34
|
const bodyFont = createInterFont();
|
|
35
35
|
|
|
36
36
|
<% if ((props.navigationPackage?.type === "navigation") && (props.navigationPackage?.options.type === "stack")) { %>
|
|
37
|
-
|
|
37
|
+
export const Container = styled(YStack, {
|
|
38
38
|
flex: 1,
|
|
39
39
|
padding: 24,
|
|
40
40
|
});
|
|
41
41
|
|
|
42
42
|
export const Main = styled(YStack, {
|
|
43
43
|
flex: 1,
|
|
44
|
+
justifyContent: 'space-between',
|
|
44
45
|
maxWidth: 960,
|
|
45
|
-
justifyContent: 'space-between',
|
|
46
46
|
});
|
|
47
47
|
|
|
48
|
-
export const Title = styled(
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
export const Title = styled(H1, {
|
|
49
|
+
color: '#000',
|
|
50
|
+
size: '$12',
|
|
51
|
+
});
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
export const Subtitle = styled(SizableText, {
|
|
54
|
+
color: '#38434D',
|
|
55
|
+
size: '$9',
|
|
56
|
+
});
|
|
57
57
|
|
|
58
58
|
export const Button = styled(YStack, {
|
|
59
59
|
alignItems: 'center',
|
|
60
60
|
backgroundColor: '#6366F1',
|
|
61
|
-
borderRadius:
|
|
61
|
+
borderRadius: 28,
|
|
62
|
+
hoverStyle: {
|
|
63
|
+
backgroundColor: '#5a5fcf',
|
|
64
|
+
},
|
|
62
65
|
justifyContent: 'center',
|
|
66
|
+
maxWidth: 500,
|
|
63
67
|
padding: 16,
|
|
64
68
|
shadowColor: '#000',
|
|
65
69
|
shadowOffset: {
|
|
@@ -68,12 +72,9 @@ const bodyFont = createInterFont();
|
|
|
68
72
|
},
|
|
69
73
|
shadowOpacity: 0.25,
|
|
70
74
|
shadowRadius: 3.84,
|
|
71
|
-
hoverStyle: {
|
|
72
|
-
backgroundColor: '#5a5fcf',
|
|
73
|
-
},
|
|
74
75
|
});
|
|
75
76
|
|
|
76
|
-
export const ButtonText = styled(
|
|
77
|
+
export const ButtonText = styled(SizableText, {
|
|
77
78
|
color: '#FFFFFF',
|
|
78
79
|
fontSize: 16,
|
|
79
80
|
fontWeight: '600',
|
|
@@ -123,7 +124,7 @@ type AppConfig = typeof config;
|
|
|
123
124
|
// Docs: https://tamagui.dev/docs/core/configuration
|
|
124
125
|
|
|
125
126
|
declare module "tamagui" {
|
|
126
|
-
|
|
127
|
+
interface TamaguiCustomConfig extends AppConfig {}
|
|
127
128
|
}
|
|
128
129
|
|
|
129
130
|
export default config;
|
|
@@ -92,7 +92,9 @@ function configureProjectFiles(authenticationPackage, files, navigationPackage,
|
|
|
92
92
|
expoRouterFiles = __spreadArray(__spreadArray([], expoRouterFiles, true), [
|
|
93
93
|
'packages/expo-router/stack/app/_layout.tsx.ejs',
|
|
94
94
|
'packages/expo-router/stack/app/details.tsx.ejs',
|
|
95
|
-
'packages/expo-router/stack/app/index.tsx.ejs'
|
|
95
|
+
'packages/expo-router/stack/app/index.tsx.ejs',
|
|
96
|
+
'packages/expo-router/stack/app/[...unmatched].tsx.ejs',
|
|
97
|
+
'packages/expo-router/stack/app/+html.tsx.ejs'
|
|
96
98
|
], false);
|
|
97
99
|
}
|
|
98
100
|
else if (((_e = navigationPackage === null || navigationPackage === void 0 ? void 0 : navigationPackage.options) === null || _e === void 0 ? void 0 : _e.type) === 'tabs') {
|
|
@@ -103,6 +105,8 @@ function configureProjectFiles(authenticationPackage, files, navigationPackage,
|
|
|
103
105
|
'packages/expo-router/tabs/app/(tabs)/two.tsx.ejs',
|
|
104
106
|
'packages/expo-router/tabs/app/_layout.tsx.ejs',
|
|
105
107
|
'packages/expo-router/tabs/app/modal.tsx.ejs',
|
|
108
|
+
'packages/expo-router/tabs/app/[...unmatched].tsx.ejs',
|
|
109
|
+
'packages/expo-router/tabs/app/+html.tsx.ejs',
|
|
106
110
|
'packages/expo-router/tabs/components/edit-screen-info.tsx.ejs'
|
|
107
111
|
], false);
|
|
108
112
|
}
|
|
@@ -112,7 +116,9 @@ function configureProjectFiles(authenticationPackage, files, navigationPackage,
|
|
|
112
116
|
'packages/expo-router/drawer/app/(drawer)/_layout.tsx.ejs',
|
|
113
117
|
'packages/expo-router/drawer/app/(drawer)/index.tsx.ejs',
|
|
114
118
|
'packages/expo-router/drawer/app/(drawer)/news.tsx.ejs',
|
|
115
|
-
'packages/expo-router/drawer/app/_layout.tsx.ejs'
|
|
119
|
+
'packages/expo-router/drawer/app/_layout.tsx.ejs',
|
|
120
|
+
'packages/expo-router/drawer/app/[...unmatched].tsx.ejs',
|
|
121
|
+
'packages/expo-router/drawer/app/+html.tsx.ejs'
|
|
116
122
|
], false);
|
|
117
123
|
}
|
|
118
124
|
// Remove the base App.tsx.ejs file since we'll be using index.tsx from expo-router
|
|
@@ -136,4 +142,4 @@ function configureProjectFiles(authenticationPackage, files, navigationPackage,
|
|
|
136
142
|
return files;
|
|
137
143
|
}
|
|
138
144
|
exports.configureProjectFiles = configureProjectFiles;
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJlUHJvamVjdEZpbGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxpdGllcy9jb25maWd1cmVQcm9qZWN0RmlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBRUEseURBQXdEO0FBRXhELFNBQWdCLHFCQUFxQixDQUNuQyxxQkFBb0QsRUFDcEQsS0FBZSxFQUNmLGlCQUFnRCxFQUNoRCxjQUE2QyxFQUM3QyxPQUFnQixFQUNoQixVQUFzQjs7SUFFdEIsMkRBQTJEO0lBQzNELElBQU0sU0FBUyxHQUFHO1FBQ2hCLHdCQUF3QjtRQUN4QixtQkFBbUI7UUFDbkIsa0JBQWtCO1FBQ2xCLDBCQUEwQjtRQUMxQix1QkFBdUI7UUFDdkIscUJBQXFCO1FBQ3JCLGtCQUFrQjtLQUNuQixDQUFDO0lBRUYsSUFBTSxjQUFjLEdBQUcsSUFBQSxxQ0FBaUIsRUFBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDOUQsdURBQXVEO0lBQ3ZELElBQUksY0FBYyxLQUFLLE1BQU0sSUFBSSxDQUFBLGlCQUFpQixhQUFqQixpQkFBaUIsdUJBQWpCLGlCQUFpQixDQUFFLElBQUksTUFBSyxhQUFhLEVBQUUsQ0FBQztRQUMzRSxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELEtBQUsscUJBQU8sU0FBUyxPQUFDLENBQUM7SUFFdkIsaUNBQWlDO0lBQ2pDLG1EQUFtRDtJQUNuRCxJQUFJLENBQUEsY0FBYyxhQUFkLGNBQWMsdUJBQWQsY0FBYyxDQUFFLElBQUksTUFBSyxZQUFZLEVBQUUsQ0FBQztRQUMxQyxJQUFNLGVBQWUsR0FBRyxDQUFDLDRDQUE0QyxFQUFFLGtDQUFrQyxDQUFDLENBQUM7UUFFM0csS0FBSyxtQ0FBTyxLQUFLLFNBQUssZUFBZSxPQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELDhCQUE4QjtJQUM5QixnREFBZ0Q7SUFDaEQsSUFBSSxD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
|
package/package.json
CHANGED
|
@@ -1,68 +1,68 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
2
|
+
"name": "create-expo-stack",
|
|
3
|
+
"version": "2.3.12",
|
|
4
|
+
"description": "CLI tool to initialize a React Native application with Expo",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/danstepanov/create-expo-stack.git",
|
|
8
|
+
"directory": "cli"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://createexpostack.com",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"types": "build/types/types.d.ts",
|
|
13
|
+
"bin": {
|
|
14
|
+
"create-expo-stack": "bin/create-expo-stack.js"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"build",
|
|
18
|
+
"LICENSE",
|
|
19
|
+
"readme.md",
|
|
20
|
+
"docs",
|
|
21
|
+
"bin"
|
|
22
|
+
],
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "bun run clean-build && bun run compile && bun run copy-templates && bun run lint-templates",
|
|
25
|
+
"bump": "bun run ./src/utilities/bumpVersion.ts",
|
|
26
|
+
"clean-build": "rm -rf ./build",
|
|
27
|
+
"compile": "tsc -p .",
|
|
28
|
+
"copy-templates": "bun run copyfiles -u 2 -a \"./src/templates/**/*\" ./build/templates",
|
|
29
|
+
"format": "eslint \"**/*.{js,jsx,ts,tsx}\" --fix && prettier \"**/*.{js,jsx,ts,tsx,json}\" --write",
|
|
30
|
+
"lint-templates": "bun run ejslint ./src/templates",
|
|
31
|
+
"prepublishOnly": "bun run build",
|
|
32
|
+
"publishPublic": "bun run build && npm publish --access public",
|
|
33
|
+
"snapupdate": "jest --updateSnapshot",
|
|
34
|
+
"test:watch": "bun test --watch",
|
|
35
|
+
"test": "bun test --timeout 30000"
|
|
36
|
+
},
|
|
37
|
+
"prettier": {
|
|
38
|
+
"arrowParens": "always",
|
|
39
|
+
"bracketSameLine": false,
|
|
40
|
+
"bracketSpacing": true,
|
|
41
|
+
"printWidth": 120,
|
|
42
|
+
"semi": true,
|
|
43
|
+
"singleQuote": true,
|
|
44
|
+
"tabWidth": 2,
|
|
45
|
+
"trailingComma": "none",
|
|
46
|
+
"useTabs": false
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"ejs-lint": "^2.0.0",
|
|
50
|
+
"figlet": "^1.6.0",
|
|
51
|
+
"gluegun": "latest",
|
|
52
|
+
"gradient-string": "^2.0.2"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@types/gradient-string": "^1.1.2",
|
|
56
|
+
"@typescript-eslint/eslint-plugin": "^6.9.1",
|
|
57
|
+
"@typescript-eslint/parser": "^6.9.1",
|
|
58
|
+
"copyfiles": "^2.4.1",
|
|
59
|
+
"eslint": "^8.53.0",
|
|
60
|
+
"eslint-config-prettier": "^9.0.0",
|
|
61
|
+
"eslint-plugin-prettier": "^5.0.1",
|
|
62
|
+
"husky": "^5.1.3",
|
|
63
|
+
"prettier": "^3.1.0"
|
|
64
|
+
},
|
|
65
|
+
"publishConfig": {
|
|
66
|
+
"provenance": false
|
|
67
|
+
}
|
|
68
68
|
}
|