create-expo-stack 2.1.22 → 2.1.25
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/commands/create-expo-stack.js +3 -6
- package/build/constants.js +1 -1
- package/build/templates/packages/expo-router/tabs/app/(tabs)/index.tsx.ejs +42 -40
- package/build/templates/packages/expo-router/tabs/app/(tabs)/two.tsx.ejs +40 -38
- package/build/templates/packages/expo-router/tabs/app/modal.tsx.ejs +44 -42
- package/build/templates/packages/react-navigation/screens/modal.tsx.ejs +57 -55
- package/build/templates/packages/react-navigation/screens/one.tsx.ejs +53 -51
- package/build/templates/packages/react-navigation/screens/two.tsx.ejs +53 -51
- package/build/templates/packages/tamagui/tamagui.config.ts.ejs +94 -88
- package/package.json +1 -1
- package/readme.md +111 -0
|
@@ -131,23 +131,20 @@ var command = {
|
|
|
131
131
|
cliResults.packages.push({
|
|
132
132
|
name: 'nativewind',
|
|
133
133
|
type: 'styling',
|
|
134
|
-
options: {},
|
|
135
134
|
});
|
|
136
135
|
}
|
|
137
|
-
if (options.tamagui) {
|
|
136
|
+
else if (options.tamagui) {
|
|
138
137
|
// Add tamagui package
|
|
139
138
|
cliResults.packages.push({
|
|
140
139
|
name: 'tamagui',
|
|
141
140
|
type: 'styling',
|
|
142
|
-
options: {},
|
|
143
141
|
});
|
|
144
142
|
}
|
|
145
|
-
|
|
143
|
+
else {
|
|
146
144
|
// Add stylesheet package
|
|
147
145
|
cliResults.packages.push({
|
|
148
146
|
name: 'stylesheet',
|
|
149
147
|
type: 'styling',
|
|
150
|
-
options: {},
|
|
151
148
|
});
|
|
152
149
|
}
|
|
153
150
|
// Destructure the results but set the projectName if the first param is passed in
|
|
@@ -183,4 +180,4 @@ var command = {
|
|
|
183
180
|
}); },
|
|
184
181
|
};
|
|
185
182
|
exports.default = command;
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7QUFFNUIsMENBUXFCO0FBQ3JCLDBDQUE2QztBQUM3QyxrQ0FBd0Q7QUFFeEQsSUFBTSxPQUFPLEdBQW1CO0lBQy9CLElBQUksRUFBRSxtQkFBbUI7SUFDekIsV0FBVyxFQUFFLDJCQUEyQjtJQUN4QyxHQUFHLEVBQUUsVUFBTyxPQUFPOzs7OztvQkFFakIsS0FFRyxPQUFPLFdBRm9CLEVBQWhCLEtBQUssV0FBQSxFQUFFLE9BQU8sYUFBQSxFQUM1QixLQUNHLE9BQU8sTUFEeUIsRUFBMUIsSUFBSSxVQUFBLEVBQUUsU0FBUyxlQUFBLEVBQUUsT0FBTyxhQUFBLENBQ3ZCO29CQUNYLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFO3dCQUM5QixJQUFBLG9CQUFRLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQTt3QkFFbEMsc0JBQU07cUJBQ047Ozs7b0JBRUEsMklBQTJJO29CQUMzSSxJQUNDLE9BQU8sQ0FBQyxJQUFJO3dCQUNaLENBQUMsT0FBTyxDQUFDLGVBQWU7d0JBQ3hCLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDO3dCQUM1QixDQUFDLE9BQU8sQ0FBQyxlQUFlO3dCQUN4QixDQUFDLE9BQU8sQ0FBQyxVQUFVO3dCQUNuQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7d0JBQ3ZCLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFDbEI7d0JBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDZCxrR0FBa0csQ0FDbEcsQ0FBQTtxQkFDRDtvQkFFRCxxQkFBTSxJQUFB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
|
package/build/constants.js
CHANGED
|
@@ -12,4 +12,4 @@ exports.defaultOptions = {
|
|
|
12
12
|
importAlias: '~/',
|
|
13
13
|
},
|
|
14
14
|
};
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFYSxRQUFBLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQTtBQUVoQyxRQUFBLGdCQUFnQixHQUFHLGFBQWEsQ0FBQTtBQUVoQyxRQUFBLGNBQWMsR0FBZTtJQUN6QyxXQUFXLEVBQUUsd0JBQWdCO0lBQzdCLFFBQVEsRUFBRSxFQUFFO0lBQ1osS0FBSyxFQUFFO1FBQ04sS0FBSyxFQUFFLEtBQUs7UUFDWixTQUFTLEVBQUUsS0FBSztRQUNoQixXQUFXLEVBQUUsSUFBSTtLQUNqQjtDQUNELENBQUEifQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
2
2
|
import { Text, View } from "react-native";
|
|
3
3
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
4
|
-
import { YStack, H2, Separator } from "tamagui";
|
|
4
|
+
import { YStack, H2, Separator, Theme } from "tamagui";
|
|
5
5
|
<% } else { %>
|
|
6
6
|
import { StyleSheet, Text, View } from "react-native";
|
|
7
7
|
<% } %>
|
|
@@ -11,52 +11,54 @@ import EditScreenInfo from "../../components/edit-screen-info";
|
|
|
11
11
|
export default function TabOneScreen() {
|
|
12
12
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
13
13
|
return (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
<View className={styles.container}>
|
|
15
|
+
<Text className={styles.title}>Tab One</Text>
|
|
16
|
+
<View className={styles.separator} />
|
|
17
|
+
<EditScreenInfo path="app/(tabs)/index.tsx" />
|
|
18
|
+
</View>
|
|
19
|
+
);
|
|
20
|
+
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
21
21
|
return (
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
<Theme name="light">
|
|
23
|
+
<YStack flex={1} alignItems="center" justifyContent="center">
|
|
24
|
+
<H2>Tab One</H2>
|
|
25
|
+
<Separator />
|
|
26
|
+
<EditScreenInfo path="app/(tabs)/index.tsx" />
|
|
27
|
+
</YStack>
|
|
28
|
+
</Theme>
|
|
29
|
+
);
|
|
30
|
+
<% } else { %>
|
|
29
31
|
return (
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
<View style={styles.container}>
|
|
33
|
+
<Text style={styles.title}>Tab One</Text>
|
|
34
|
+
<View style={styles.separator} />
|
|
35
|
+
<EditScreenInfo path="app/(tabs)/index.tsx" />
|
|
36
|
+
</View>
|
|
37
|
+
);
|
|
36
38
|
<% } %>
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
40
42
|
const styles = {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
container: `items-center flex-1 justify-center`,
|
|
44
|
+
separator: `h-[1px] my-7 w-4/5 bg-gray-200`,
|
|
45
|
+
title: `text-xl font-bold`
|
|
46
|
+
};
|
|
45
47
|
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
46
48
|
const styles = StyleSheet.create({
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
49
|
+
container: {
|
|
50
|
+
alignItems: "center",
|
|
51
|
+
flex: 1,
|
|
52
|
+
justifyContent: "center",
|
|
53
|
+
},
|
|
54
|
+
separator: {
|
|
55
|
+
height: 1,
|
|
56
|
+
marginVertical: 30,
|
|
57
|
+
width: "80%",
|
|
58
|
+
},
|
|
59
|
+
title: {
|
|
60
|
+
fontSize: 20,
|
|
61
|
+
fontWeight: "bold",
|
|
62
|
+
}
|
|
63
|
+
});
|
|
62
64
|
<% } %>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
2
2
|
import { Text, View } from "react-native";
|
|
3
3
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
4
|
-
import { YStack, H2, Separator } from "tamagui";
|
|
4
|
+
import { YStack, H2, Separator, Theme } from "tamagui";
|
|
5
5
|
<% } else { %>
|
|
6
6
|
import { StyleSheet, Text, View } from "react-native";
|
|
7
7
|
<% } %>
|
|
@@ -11,52 +11,54 @@ import EditScreenInfo from "../../components/edit-screen-info";
|
|
|
11
11
|
export default function TabTwoScreen() {
|
|
12
12
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
13
13
|
return (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
<View className={styles.container}>
|
|
15
|
+
<Text className={styles.title}>Tab Two</Text>
|
|
16
|
+
<View className={styles.separator} />
|
|
17
|
+
<EditScreenInfo path="app/(tabs)/index.tsx" />
|
|
18
|
+
</View>
|
|
19
|
+
);
|
|
20
20
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
21
21
|
return (
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
<Theme name="light">
|
|
23
|
+
<YStack flex={1} alignItems="center" justifyContent="center">
|
|
24
|
+
<H2>Tab Two</H2>
|
|
25
|
+
<Separator />
|
|
26
|
+
<EditScreenInfo path="app/(tabs)/index.tsx" />
|
|
27
|
+
</YStack>
|
|
28
|
+
</Theme>
|
|
29
|
+
);
|
|
28
30
|
<% } else { %>
|
|
29
31
|
return (
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
<View style={styles.container}>
|
|
33
|
+
<Text style={styles.title}>Tab Two</Text>
|
|
34
|
+
<View style={styles.separator} />
|
|
35
|
+
<EditScreenInfo path="app/(tabs)/two.tsx" />
|
|
36
|
+
</View>
|
|
37
|
+
);
|
|
36
38
|
<% } %>
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
40
42
|
const styles = {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
container: `items-center flex-1 justify-center`,
|
|
44
|
+
separator: `h-[1px] my-7 w-4/5 bg-gray-200`,
|
|
45
|
+
title: `text-xl font-bold`
|
|
46
|
+
};
|
|
45
47
|
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
46
48
|
const styles = StyleSheet.create({
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
49
|
+
container: {
|
|
50
|
+
alignItems: "center",
|
|
51
|
+
flex: 1,
|
|
52
|
+
justifyContent: "center",
|
|
53
|
+
},
|
|
54
|
+
separator: {
|
|
55
|
+
height: 1,
|
|
56
|
+
marginVertical: 30,
|
|
57
|
+
width: "80%",
|
|
58
|
+
},
|
|
59
|
+
title: {
|
|
60
|
+
fontSize: 20,
|
|
61
|
+
fontWeight: "bold",
|
|
62
|
+
}
|
|
63
|
+
});
|
|
62
64
|
<% } %>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
2
2
|
import { Platform, Text, View } from "react-native";
|
|
3
3
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
4
|
-
import { YStack, Paragraph, Separator } from "tamagui";
|
|
5
|
-
|
|
4
|
+
import { YStack, Paragraph, Separator, Theme } from "tamagui";
|
|
5
|
+
import { Platform } from 'react-native'
|
|
6
6
|
<% } else { %>
|
|
7
7
|
import { Platform, StyleSheet, Text, View } from "react-native";
|
|
8
8
|
<% } %>
|
|
@@ -13,55 +13,57 @@ import EditScreenInfo from "../components/edit-screen-info";
|
|
|
13
13
|
export default function ModalScreen() {
|
|
14
14
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
15
15
|
return (
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
<View className={styles.container}>
|
|
17
|
+
<StatusBar style={Platform.OS === "ios" ? "light" : "auto"} />
|
|
18
|
+
<Text className={styles.title}>Modal</Text>
|
|
19
|
+
<View className={styles.separator} />
|
|
20
|
+
<EditScreenInfo path="app/modal.tsx" />
|
|
21
|
+
</View>
|
|
22
|
+
);
|
|
23
23
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
24
24
|
return (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
25
|
+
<Theme name="light">
|
|
26
|
+
<YStack flex={1} alignItems="center" justifyContent="center">
|
|
27
|
+
<StatusBar style={Platform.OS === "ios" ? "light" : "auto"} />
|
|
28
|
+
<Paragraph>Modal</Paragraph>
|
|
29
|
+
<Separator />
|
|
30
|
+
<EditScreenInfo path="app/modal.tsx" />
|
|
31
|
+
</YStack>
|
|
32
|
+
</Theme>
|
|
33
|
+
);
|
|
32
34
|
<% } else { %>
|
|
33
35
|
return (
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
<View style={styles.container}>
|
|
37
|
+
<StatusBar style={Platform.OS === "ios" ? "light" : "auto"} />
|
|
38
|
+
<Text style={styles.title}>Modal</Text>
|
|
39
|
+
<View style={styles.separator} />
|
|
40
|
+
<EditScreenInfo path="app/modal.tsx" />
|
|
41
|
+
</View>
|
|
42
|
+
);
|
|
41
43
|
<% } %>
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
45
47
|
const styles = {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
container: `items-center flex-1 justify-center`,
|
|
49
|
+
separator: `h-[1px] my-7 w-4/5 bg-gray-200`,
|
|
50
|
+
title: `text-xl font-bold`
|
|
51
|
+
};
|
|
50
52
|
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
51
53
|
const styles = StyleSheet.create({
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
54
|
+
container: {
|
|
55
|
+
alignItems: "center",
|
|
56
|
+
flex: 1,
|
|
57
|
+
justifyContent: "center"
|
|
58
|
+
},
|
|
59
|
+
separator: {
|
|
60
|
+
height: 1,
|
|
61
|
+
marginVertical: 30,
|
|
62
|
+
width: "80%"
|
|
63
|
+
},
|
|
64
|
+
title: {
|
|
65
|
+
fontSize: 20,
|
|
66
|
+
fontWeight: "bold"
|
|
67
|
+
}
|
|
68
|
+
});
|
|
67
69
|
<% } %>
|
|
@@ -1,69 +1,71 @@
|
|
|
1
1
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
2
|
-
|
|
2
|
+
import { Platform, Text, View } from "react-native";
|
|
3
3
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
import { YStack, Paragraph, Separator, Theme } from "tamagui";
|
|
5
|
+
import { Platform } from 'react-native'
|
|
6
6
|
<% } else { %>
|
|
7
|
-
|
|
7
|
+
import { Platform, StyleSheet, Text, View } from "react-native";
|
|
8
8
|
<% } %>
|
|
9
9
|
import { StatusBar } from "expo-status-bar";
|
|
10
10
|
|
|
11
11
|
import EditScreenInfo from "../components/edit-screen-info";
|
|
12
12
|
|
|
13
13
|
export default function Modal() {
|
|
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
|
-
|
|
14
|
+
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
15
|
+
return (
|
|
16
|
+
<View className={styles.container}>
|
|
17
|
+
<StatusBar style={Platform.OS === "ios" ? "light" : "auto"} />
|
|
18
|
+
<Text className={styles.title}>Modal</Text>
|
|
19
|
+
<View className={styles.separator} />
|
|
20
|
+
<EditScreenInfo path="src/screens/modal.tsx" />
|
|
21
|
+
</View>
|
|
22
|
+
)
|
|
23
|
+
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
24
|
+
return (
|
|
25
|
+
<Theme name="light">
|
|
26
|
+
<YStack flex={1} alignItems="center" justifyContent="center">
|
|
27
|
+
<StatusBar style={Platform.OS === "ios" ? "light" : "auto"} />
|
|
28
|
+
<Paragraph>Modal</Paragraph>
|
|
29
|
+
<Separator />
|
|
30
|
+
<EditScreenInfo path="src/screens/modal.tsx" />
|
|
31
|
+
</YStack>
|
|
32
|
+
</Theme>
|
|
33
|
+
);
|
|
34
|
+
<% } else { %>
|
|
35
|
+
return (
|
|
36
|
+
<View style={styles.container}>
|
|
37
|
+
<StatusBar style={Platform.OS === "ios" ? "light" : "auto"} />
|
|
38
|
+
<Text style={styles.title}>Modal</Text>
|
|
39
|
+
<View style={styles.separator} />
|
|
40
|
+
<EditScreenInfo path="src/screens/modal.tsx" />
|
|
41
|
+
</View>
|
|
42
|
+
);
|
|
43
|
+
<% } %>
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
const styles = {
|
|
48
|
+
container: "items-center flex-1 justify-center",
|
|
49
|
+
separator: "h-[1px] my-7 w-4/5 bg-gray-200",
|
|
50
|
+
title: "text-xl font-bold"
|
|
51
|
+
};
|
|
50
52
|
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
53
|
+
const styles = StyleSheet.create({
|
|
54
|
+
container: {
|
|
55
|
+
alignItems: "center",
|
|
56
|
+
flex: 1,
|
|
57
|
+
justifyContent: "center"
|
|
58
|
+
},
|
|
59
|
+
separator: {
|
|
60
|
+
backgroundColor: "gray",
|
|
61
|
+
height: 1,
|
|
62
|
+
marginVertical: 30,
|
|
63
|
+
opacity: 0.25,
|
|
64
|
+
width: "80%",
|
|
65
|
+
},
|
|
66
|
+
title: {
|
|
67
|
+
fontSize: 20,
|
|
68
|
+
fontWeight: "bold"
|
|
69
|
+
}
|
|
70
|
+
});
|
|
69
71
|
<% } %>
|
|
@@ -1,64 +1,66 @@
|
|
|
1
1
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
2
|
-
|
|
2
|
+
import { Text, View } from "react-native";
|
|
3
3
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
4
|
-
|
|
4
|
+
import { YStack, H2, Separator, Theme } from "tamagui";
|
|
5
5
|
<% } else { %>
|
|
6
|
-
|
|
6
|
+
import { StyleSheet, Text, View } from "react-native";
|
|
7
7
|
<% } %>
|
|
8
8
|
|
|
9
9
|
import EditScreenInfo from "../components/edit-screen-info";
|
|
10
10
|
|
|
11
11
|
export default function TabOneScreen() {
|
|
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
|
-
|
|
12
|
+
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
13
|
+
return (
|
|
14
|
+
<View className={styles.container}>
|
|
15
|
+
<Text className={styles.title}>Tab One</Text>
|
|
16
|
+
<View className={styles.separator} />
|
|
17
|
+
<EditScreenInfo path="src/screens/one.tsx" />
|
|
18
|
+
</View>
|
|
19
|
+
);
|
|
20
|
+
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
21
|
+
return (
|
|
22
|
+
<Theme name="light">
|
|
23
|
+
<YStack flex={1} alignItems="center" justifyContent="center">
|
|
24
|
+
<H2>Tab One</H2>
|
|
25
|
+
<Separator />
|
|
26
|
+
<EditScreenInfo path="src/screens/one.tsx" />
|
|
27
|
+
</YStack>
|
|
28
|
+
</Theme>
|
|
29
|
+
);
|
|
30
|
+
<% } else { %>
|
|
31
|
+
return (
|
|
32
|
+
<View style={styles.container}>
|
|
33
|
+
<Text style={styles.title}>Tab One</Text>
|
|
34
|
+
<View style={styles.separator} />
|
|
35
|
+
<EditScreenInfo path="src/screens/one.tsx" />
|
|
36
|
+
</View>
|
|
37
|
+
);
|
|
38
|
+
<% } %>
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
const styles = {
|
|
43
|
+
container: "items-center flex-1 justify-center",
|
|
44
|
+
separator: "h-[1px] my-7 w-4/5 bg-gray-200",
|
|
45
|
+
title: "text-xl font-bold"
|
|
46
|
+
};
|
|
45
47
|
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
48
|
+
const styles = StyleSheet.create({
|
|
49
|
+
container: {
|
|
50
|
+
alignItems: "center",
|
|
51
|
+
flex: 1,
|
|
52
|
+
justifyContent: "center",
|
|
53
|
+
},
|
|
54
|
+
separator: {
|
|
55
|
+
backgroundColor: "gray",
|
|
56
|
+
height: 1,
|
|
57
|
+
marginVertical: 30,
|
|
58
|
+
opacity: 0.25,
|
|
59
|
+
width: "80%",
|
|
60
|
+
},
|
|
61
|
+
title: {
|
|
62
|
+
fontSize: 20,
|
|
63
|
+
fontWeight: "bold",
|
|
64
|
+
}
|
|
65
|
+
});
|
|
64
66
|
<% } %>
|
|
@@ -1,64 +1,66 @@
|
|
|
1
1
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
2
|
-
|
|
2
|
+
import { Text, View } from "react-native";
|
|
3
3
|
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
4
|
-
|
|
4
|
+
import { YStack, H2, Separator, Theme } from "tamagui";
|
|
5
5
|
<% } else { %>
|
|
6
|
-
|
|
6
|
+
import { StyleSheet, Text, View } from "react-native";
|
|
7
7
|
<% } %>
|
|
8
8
|
|
|
9
9
|
import EditScreenInfo from "../components/edit-screen-info";
|
|
10
10
|
|
|
11
11
|
export default function TabTwoScreen() {
|
|
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
|
-
|
|
12
|
+
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
13
|
+
return (
|
|
14
|
+
<View className={styles.container}>
|
|
15
|
+
<Text className={styles.title}>Tab Two</Text>
|
|
16
|
+
<View className={styles.separator} />
|
|
17
|
+
<EditScreenInfo path="src/screens/two.tsx" />
|
|
18
|
+
</View>
|
|
19
|
+
);
|
|
20
|
+
<% } else if (props.stylingPackage?.name === "tamagui") { %>
|
|
21
|
+
return (
|
|
22
|
+
<Theme name="light">
|
|
23
|
+
<YStack flex={1} alignItems="center" justifyContent="center">
|
|
24
|
+
<H2>Tab Two</H2>
|
|
25
|
+
<Separator />
|
|
26
|
+
<EditScreenInfo path="src/screens/two.tsx" />
|
|
27
|
+
</YStack>
|
|
28
|
+
</Theme>
|
|
29
|
+
);
|
|
30
|
+
<% } else { %>
|
|
31
|
+
return (
|
|
32
|
+
<View style={styles.container}>
|
|
33
|
+
<Text style={styles.title}>Tab Two</Text>
|
|
34
|
+
<View style={styles.separator} />
|
|
35
|
+
<EditScreenInfo path="src/screens/two.tsx" />
|
|
36
|
+
</View>
|
|
37
|
+
);
|
|
38
|
+
<% } %>
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
const styles = {
|
|
43
|
+
container: "items-center flex-1 justify-center",
|
|
44
|
+
separator: "h-[1px] my-7 w-4/5 bg-gray-200",
|
|
45
|
+
title: "text-xl font-bold"
|
|
46
|
+
};
|
|
45
47
|
<% } else if (props.stylingPackage?.name === "stylesheet") { %>
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
48
|
+
const styles = StyleSheet.create({
|
|
49
|
+
container: {
|
|
50
|
+
alignItems: "center",
|
|
51
|
+
flex: 1,
|
|
52
|
+
justifyContent: "center",
|
|
53
|
+
},
|
|
54
|
+
separator: {
|
|
55
|
+
backgroundColor: "gray",
|
|
56
|
+
height: 1,
|
|
57
|
+
marginVertical: 30,
|
|
58
|
+
opacity: 0.25,
|
|
59
|
+
width: "80%",
|
|
60
|
+
},
|
|
61
|
+
title: {
|
|
62
|
+
fontSize: 20,
|
|
63
|
+
fontWeight: "bold",
|
|
64
|
+
}
|
|
65
|
+
});
|
|
64
66
|
<% } %>
|
|
@@ -3,112 +3,118 @@ import { createInterFont } from "@tamagui/font-inter";
|
|
|
3
3
|
import { createMedia } from "@tamagui/react-native-media-driver";
|
|
4
4
|
import { shorthands } from "@tamagui/shorthands";
|
|
5
5
|
import { themes, tokens } from "@tamagui/themes";
|
|
6
|
-
<% if (props.navigationPackage?.type === "navigation") { %>
|
|
7
|
-
|
|
6
|
+
<% if ((props.navigationPackage?.type === "navigation") && (props.navigationPackage?.options.type === "stack")) { %>
|
|
7
|
+
import { createTamagui, styled, Text, YStack } from "tamagui";
|
|
8
8
|
<% } else { %>
|
|
9
|
-
|
|
9
|
+
import { createTamagui } from "tamagui";
|
|
10
10
|
<% } %>
|
|
11
11
|
|
|
12
12
|
const animations = createAnimations({
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
13
|
+
bouncy: {
|
|
14
|
+
type: 'spring',
|
|
15
|
+
damping: 10,
|
|
16
|
+
mass: 0.9,
|
|
17
|
+
stiffness: 100,
|
|
18
|
+
},
|
|
19
|
+
lazy: {
|
|
20
|
+
type: 'spring',
|
|
21
|
+
damping: 20,
|
|
22
|
+
stiffness: 60,
|
|
23
|
+
},
|
|
24
|
+
quick: {
|
|
25
|
+
type: 'spring',
|
|
26
|
+
damping: 20,
|
|
27
|
+
mass: 1.2,
|
|
28
|
+
stiffness: 250,
|
|
29
|
+
},
|
|
30
30
|
});
|
|
31
31
|
|
|
32
32
|
const headingFont = createInterFont();
|
|
33
33
|
|
|
34
34
|
const bodyFont = createInterFont();
|
|
35
35
|
|
|
36
|
-
<% if (props.navigationPackage?.type === "navigation") { %>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
<% if ((props.navigationPackage?.type === "navigation") && (props.navigationPackage?.options.type === "stack")) { %>
|
|
37
|
+
export const Container = styled(YStack, {
|
|
38
|
+
flex: 1,
|
|
39
|
+
padding: 24,
|
|
40
|
+
});
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
export const Main = styled(YStack, {
|
|
43
|
+
flex: 1,
|
|
44
|
+
maxWidth: 960,
|
|
45
|
+
justifyContent: 'space-between',
|
|
46
|
+
});
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
export const Title = styled(Text, {
|
|
49
|
+
fontSize: 64,
|
|
50
|
+
fontWeight: 'bold',
|
|
51
|
+
});
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
export const Subtitle = styled(Text, {
|
|
54
|
+
color: '#38434D',
|
|
55
|
+
fontSize: 36,
|
|
56
|
+
});
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
58
|
+
export const Button = styled(YStack, {
|
|
59
|
+
alignItems: 'center',
|
|
60
|
+
backgroundColor: '#6366F1',
|
|
61
|
+
borderRadius: 24,
|
|
62
|
+
justifyContent: 'center',
|
|
63
|
+
padding: 16,
|
|
64
|
+
shadowColor: '#000',
|
|
65
|
+
shadowOffset: {
|
|
66
|
+
height: 2,
|
|
67
|
+
width: 0,
|
|
68
|
+
},
|
|
69
|
+
shadowOpacity: 0.25,
|
|
70
|
+
shadowRadius: 3.84,
|
|
71
|
+
hoverStyle: {
|
|
72
|
+
backgroundColor: '#5a5fcf',
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
76
|
+
export const ButtonText = styled(Text, {
|
|
77
|
+
color: '#FFFFFF',
|
|
78
|
+
fontSize: 16,
|
|
79
|
+
fontWeight: '600',
|
|
80
|
+
textAlign: 'center',
|
|
81
|
+
});
|
|
82
82
|
<% } %>
|
|
83
83
|
|
|
84
84
|
const config = createTamagui({
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
85
|
+
light: {
|
|
86
|
+
color: {
|
|
87
|
+
background: "gray",
|
|
88
|
+
text: "black",
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
defaultFont: "body",
|
|
92
|
+
animations,
|
|
93
|
+
shouldAddPrefersColorThemes: true,
|
|
94
|
+
themeClassNameOnRoot: true,
|
|
95
|
+
shorthands,
|
|
96
|
+
fonts: {
|
|
97
|
+
body: bodyFont,
|
|
98
|
+
heading: headingFont,
|
|
99
|
+
},
|
|
100
|
+
themes,
|
|
101
|
+
tokens,
|
|
102
|
+
media: createMedia({
|
|
103
|
+
xs: { maxWidth: 660 },
|
|
104
|
+
sm: { maxWidth: 800 },
|
|
105
|
+
md: { maxWidth: 1020 },
|
|
106
|
+
lg: { maxWidth: 1280 },
|
|
107
|
+
xl: { maxWidth: 1420 },
|
|
108
|
+
xxl: { maxWidth: 1600 },
|
|
109
|
+
gtXs: { minWidth: 660 + 1 },
|
|
110
|
+
gtSm: { minWidth: 800 + 1 },
|
|
111
|
+
gtMd: { minWidth: 1020 + 1 },
|
|
112
|
+
gtLg: { minWidth: 1280 + 1 },
|
|
113
|
+
short: { maxHeight: 820 },
|
|
114
|
+
tall: { minHeight: 820 },
|
|
115
|
+
hoverNone: { hover: "none" },
|
|
116
|
+
pointerCoarse: { pointer: "coarse" },
|
|
117
|
+
}),
|
|
112
118
|
});
|
|
113
119
|
|
|
114
120
|
export default config;
|
package/package.json
CHANGED
package/readme.md
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# Create Expo Stack CLI
|
|
2
|
+
|
|
3
|
+
<a href="https://badge.fury.io/js/create-expo-stack"><img src="https://badge.fury.io/js/create-expo-stack.svg" alt="npm version" height="18"></a>
|
|
4
|
+
|
|
5
|
+
## Description
|
|
6
|
+
|
|
7
|
+
This CLI tool is designed to help you get started with React Native and Expo as quickly as possible. The CLI options allow you to configure your project with Typescript, file-based routing with Expo Router, configuration-based navigation via React-Navigation, and styling with StyleSheets, Tamagui, or Tailwind CSS, with NativeWind.
|
|
8
|
+
|
|
9
|
+
You can also use flags such as `--noInstall`, `--noGit`, and `--default` in order to customize your project. The CLI will attempt to automatically determine your package manager of choice but you can also pass in your preferred package manager via `--npm`, `--yarn`, `--pnpm`, or `--bun`. Roadmap coming soon...
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
To get started, use npx to run the CLI tool. You will be prompted to opt into the features you want to use.
|
|
14
|
+
|
|
15
|
+
`npx create-expo-stack@latest`
|
|
16
|
+
|
|
17
|
+
<img src="https://github.com/danstepanov/create-expo-stack/assets/5482800/6c4b5a00-63ae-4b3d-af0b-6da805e8c547" />
|
|
18
|
+
|
|
19
|
+
## Tech Stack for the templates
|
|
20
|
+
|
|
21
|
+
Currently, all of the [templates](https://github.com/danstepanov/create-expo-stack/tree/main/src/templates) use the same versions of the following libraries. Not all of the templates include all of the libraries, but they are all available for use.
|
|
22
|
+
|
|
23
|
+
Each project is generated based on the results of the CLI, on a per-file basis. This approach makes this CLI extremely extendable and easy to use. Common files to all generated projects are stored in the [base template folder](https://github.com/danstepanov/create-expo-stack/tree/main/src/templates/base) while files pertaining to additional packages are stored in the [packages template folder](https://github.com/danstepanov/create-expo-stack/tree/main/src/templates/packages). Beyond adding files, this project makes use of [EJS](https://ejs.co/) in order to manipulate existing files as necessary.
|
|
24
|
+
|
|
25
|
+
| Library | Category | Version | Description |
|
|
26
|
+
| ------------------ | ------------------- | ------- | ---------------------------------------------- |
|
|
27
|
+
| React Native | Mobile Framework | v0.72 | The best cross-platform mobile framework |
|
|
28
|
+
| React | UI Framework | v18 | The most popular UI framework in the world |
|
|
29
|
+
| TypeScript | Language | v4 | Static typechecking |
|
|
30
|
+
| React Navigation | Navigation | v6 | Performant and consistent navigation framework |
|
|
31
|
+
| Expo | SDK | v49 | Allows (optional) Expo modules |
|
|
32
|
+
| Expo Font | Custom Fonts | v11 | Import custom fonts |
|
|
33
|
+
| Expo Linking | URL Handling | v5 | Open your app via a URL |
|
|
34
|
+
| Expo Router | Navigation | v2 | File-based routing in React-Native |
|
|
35
|
+
| Expo Splash Screen | Splash Screen | v0.18 | Custom splash screen |
|
|
36
|
+
| Expo Status Bar | Status Bar Library | v1 | Status bar support |
|
|
37
|
+
| Expo System UI | System UI Library | v2 | System UI support |
|
|
38
|
+
| Expo Web Browser | Web Browser Library | v12 | Open links in the browser |
|
|
39
|
+
| NativeWind | UI Framework | v2 | Tailwind CSS for React Native |
|
|
40
|
+
| Tamagui | UI Framework | v1 | Universal UI with a smart optimizing compiler |
|
|
41
|
+
| Safe Area Context | Safe Area Library | v4 | Safe area support |
|
|
42
|
+
| React Native Web | Web Support | v0.19 | React Native for Web |
|
|
43
|
+
|
|
44
|
+
## Reporting Bugs & Feedback
|
|
45
|
+
|
|
46
|
+
If you run into problems or have feedback, first search the issues and discussions in this repository. If you don't find anything, feel free to message me on [Twitter](https://twitter.com/danstepanov) or open a new issue.
|
|
47
|
+
|
|
48
|
+
## Contributing
|
|
49
|
+
|
|
50
|
+
### [See this guide.](https://github.com/danstepanov/create-expo-stack/blob/main/contributing.md)
|
|
51
|
+
|
|
52
|
+
Contributions are welcome! Please open a pull request or an issue if you would like to contribute. There are existing feature requests labeled as `[FR]` in the issues section of this repo.
|
|
53
|
+
|
|
54
|
+
## Want to move faster? I can help 😎
|
|
55
|
+
|
|
56
|
+
Getting up-to-speed on a new framework can be cumbersome. If you find that you need to move more quickly, I may be available to help.
|
|
57
|
+
|
|
58
|
+
If you'd like help with your React Native/Expo app or are just looking for a technical advisor to guide you along your journey, [let's chat](https://twitter.com/danstepanov).
|
|
59
|
+
|
|
60
|
+
## Contributors ✨
|
|
61
|
+
|
|
62
|
+
Thanks go to these wonderful people:
|
|
63
|
+
|
|
64
|
+
<table>
|
|
65
|
+
<tbody>
|
|
66
|
+
<tr>
|
|
67
|
+
<td align="center" valign="top" width="14.28%">
|
|
68
|
+
<a href="https://onlydans.gg/">
|
|
69
|
+
<img src="https://pbs.twimg.com/profile_images/1689473757713514496/8fQrCrBx_400x400.jpg" width="100px;" alt="Dan Stepanov"/>
|
|
70
|
+
<br />
|
|
71
|
+
Dan Stepanov
|
|
72
|
+
</a>
|
|
73
|
+
</td>
|
|
74
|
+
<td align="center" valign="top" width="14.28%">
|
|
75
|
+
<a href="https://twitter.com/ernestodotgg">
|
|
76
|
+
<img src="https://pbs.twimg.com/profile_images/1647055447931617285/RPeZJI3z_400x400.jpg" width="100px;" alt="Ernesto Resende"/>
|
|
77
|
+
<br />
|
|
78
|
+
Ernesto Resende
|
|
79
|
+
</a>
|
|
80
|
+
</td>
|
|
81
|
+
<td align="center" valign="top" width="14.28%">
|
|
82
|
+
<a href="https://github.com/frankcalise/">
|
|
83
|
+
<img src="https://pbs.twimg.com/profile_images/1262363198839238662/uIfRNVBY_400x400.jpg" width="100px;" alt="Frank Calise"/>
|
|
84
|
+
<br />
|
|
85
|
+
Frank Calise
|
|
86
|
+
</a>
|
|
87
|
+
</td>
|
|
88
|
+
<td align="center" valign="top" width="14.28%">
|
|
89
|
+
<a href="https://twitter.com/PickleNik0864">
|
|
90
|
+
<img src="https://pbs.twimg.com/profile_images/1694518037385244672/eaS0RTwB_400x400.jpg" width="100px;" alt="PickleNik"/>
|
|
91
|
+
<br />
|
|
92
|
+
PickleNik
|
|
93
|
+
</a>
|
|
94
|
+
</td>
|
|
95
|
+
<td align="center" valign="top" width="14.28%">
|
|
96
|
+
<a href="https://twitter.com/trashh_dev">
|
|
97
|
+
<img src="https://pbs.twimg.com/profile_images/1598959528518643713/aWdwBYxv_400x400.jpg" width="100px;" alt="Chris Bautista"/>
|
|
98
|
+
<br />
|
|
99
|
+
Chris Bautista
|
|
100
|
+
</a>
|
|
101
|
+
</td>
|
|
102
|
+
<td align="center" valign="top" width="14.28%">
|
|
103
|
+
<a href="https://aodhan.netlify.app/">
|
|
104
|
+
<img src="https://pbs.twimg.com/profile_images/1472990183993888772/3X5J4d9__400x400.png" width="100px;" alt="Aodhan Hamilton"/>
|
|
105
|
+
<br />
|
|
106
|
+
Aodhan Hamilton
|
|
107
|
+
</a>
|
|
108
|
+
</td>
|
|
109
|
+
</tr>
|
|
110
|
+
</tbody>
|
|
111
|
+
</table>
|