app-expo-cli 1.0.5 → 1.0.7
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/README.md +11 -5
- package/package.json +1 -1
- package/src/copy-template.js +19 -1
- package/src/install-deps.js +6 -0
- package/template/assets/fonts/Inter_18pt-Black.ttf +0 -0
- package/template/assets/fonts/Inter_18pt-BlackItalic.ttf +0 -0
- package/template/assets/icon/index.ts +146 -0
- package/template/assets/images/about_us.png +0 -0
- package/template/assets/images/index.ts +6 -0
- package/template/assets/images/logo.png +0 -0
- package/template/assets/images/privacy_policy.png +0 -0
- package/template/assets/images/terms_and_conditions.png +0 -0
- package/template/src/app/_layout.tsx +3 -3
- package/template/src/app/auth/change_pass.tsx +18 -15
- package/template/src/app/auth/change_pass_modal.tsx +32 -51
- package/template/src/app/auth/forgot.tsx +74 -88
- package/template/src/app/auth/index.tsx +161 -192
- package/template/src/app/auth/opt_verify.tsx +93 -103
- package/template/src/app/auth/register.tsx +198 -260
- package/template/src/app/auth/reset_pass.tsx +102 -105
- package/template/src/app/index.tsx +70 -7
- package/template/src/app/modals/confirmation_logout_modal.tsx +0 -5
- package/template/src/app/modals/success_modal.tsx +28 -48
- package/template/src/app/settings/about_us.tsx +1 -1
- package/template/src/app/settings/privacy_policy.tsx +1 -1
- package/template/src/app/settings/terms_and_conditions.tsx +1 -1
- package/template/src/lib/DateTimePicker/DateTimePicker.tsx +63 -0
- package/template/src/lib/Empty/EmptyCard.tsx +67 -0
- package/template/src/lib/Error/GlobalErrorBoundary.tsx +111 -0
- package/template/src/lib/animate/AniImage.tsx +32 -0
- package/template/src/lib/backHeader/BackButton.tsx +62 -0
- package/template/src/lib/backHeader/BackWithCoponent.tsx +112 -0
- package/template/src/lib/backHeader/BackWithHeader.tsx +46 -0
- package/template/src/lib/backHeader/BackWithTitle.tsx +53 -0
- package/template/src/lib/buttons/IButton.tsx +69 -0
- package/template/src/lib/buttons/IwtButton.tsx +199 -0
- package/template/src/lib/buttons/Or.tsx +27 -0
- package/template/src/lib/buttons/SimpleButton.tsx +45 -0
- package/template/src/lib/buttons/TButton.tsx +70 -0
- package/template/src/lib/cards/Card.tsx +175 -0
- package/template/src/lib/cards/OptionSelect.tsx +44 -0
- package/template/src/lib/cards/SearchCard.tsx +35 -0
- package/template/src/lib/editor/TextEditor.tsx +81 -0
- package/template/src/lib/expend/ExpendComponent.tsx +36 -0
- package/template/src/lib/imageViewer/ImageViwer.tsx +332 -0
- package/template/src/lib/imageZoomer/ImageZoomer.tsx +104 -0
- package/template/src/lib/inputs/CheckBox.tsx +86 -0
- package/template/src/lib/inputs/InputText.tsx +232 -0
- package/template/src/lib/loader/GLoading.tsx +26 -0
- package/template/src/lib/loading/MLoading.tsx +14 -0
- package/template/src/lib/loading/SLoading.tsx +14 -0
- package/template/src/lib/modals/ActionModal.tsx +97 -0
- package/template/src/lib/modals/BottomModal.tsx +224 -0
- package/template/src/lib/modals/ConfrimationModal.tsx +116 -0
- package/template/src/lib/modals/DateModal.tsx +152 -0
- package/template/src/lib/modals/NormalModal.tsx +73 -0
- package/template/src/lib/modals/SideModal.tsx +57 -0
- package/template/src/lib/modals/Toaster.tsx +256 -0
- package/template/src/lib/payment/PaymentCardForD.tsx +47 -0
- package/template/src/lib/progressBar/ProgressBar.tsx +64 -0
- package/template/src/lib/tailwind.js +9 -0
- package/template/src/lib/ui/Avatar.tsx +55 -0
- package/template/src/redux/api-config/baseApi.ts +0 -22
- package/template/src/redux/interface/interface.ts +11 -193
- package/template/src/redux/store.ts +2 -2
- package/template/src/app/home/_layout.tsx +0 -29
- package/template/src/app/home/drawer/_layout.tsx +0 -27
- package/template/src/app/home/tabs/_layout.tsx +0 -75
- package/template/src/app/home/tabs/index.tsx +0 -11
- package/template/src/app/modals/payment_modal.tsx +0 -105
- package/template/src/hooks/useCheckLocation.ts +0 -36
- package/template/src/hooks/useDocPicker.ts +0 -83
- package/template/src/hooks/useSuggestionLocation.ts +0 -36
- package/template/src/hooks/useUploadProgress.ts +0 -127
|
@@ -1,25 +1,18 @@
|
|
|
1
1
|
import * as Yup from "yup";
|
|
2
2
|
|
|
3
3
|
import { Image, Text, TouchableOpacity, View } from "react-native";
|
|
4
|
-
import {
|
|
5
|
-
useGoogleLoginMutation,
|
|
6
|
-
useSignUpMutation,
|
|
7
|
-
} from "@/src/redux/apiSlices/authSlices";
|
|
8
4
|
|
|
9
|
-
import
|
|
5
|
+
import { Icon } from "@/assets/icon";
|
|
6
|
+
import { ImageAssets } from "@/assets/images";
|
|
10
7
|
import BackButton from "@/src/lib/backHeader/BackButton";
|
|
8
|
+
import TButton from "@/src/lib/buttons/TButton";
|
|
11
9
|
import CheckBox from "@/src/lib/inputs/CheckBox";
|
|
12
|
-
import { Formik } from "formik";
|
|
13
|
-
import { Icon } from "@/assets/icons/Icon";
|
|
14
|
-
import { ImageAssets } from "@/assets/images/image";
|
|
15
10
|
import InputText from "@/src/lib/inputs/InputText";
|
|
16
|
-
import
|
|
17
|
-
import
|
|
11
|
+
import tw from "@/src/lib/tailwind";
|
|
12
|
+
import { router } from "expo-router";
|
|
13
|
+
import { Formik } from "formik";
|
|
18
14
|
import React from "react";
|
|
19
15
|
import { SvgXml } from "react-native-svg";
|
|
20
|
-
import TButton from "@/src/lib/buttons/TButton";
|
|
21
|
-
import { router } from "expo-router";
|
|
22
|
-
import tw from "@/src/lib/tailwind";
|
|
23
16
|
|
|
24
17
|
const Register = () => {
|
|
25
18
|
const [showPassword, setShowPassword] = React.useState(false);
|
|
@@ -27,8 +20,7 @@ const Register = () => {
|
|
|
27
20
|
|
|
28
21
|
const [checked, setChecked] = React.useState(false);
|
|
29
22
|
|
|
30
|
-
const [register, { isLoading }] = useSignUpMutation();
|
|
31
|
-
const [loginWithGoogle, googleResults] = useGoogleLoginMutation();
|
|
23
|
+
// const [register, { isLoading }] = useSignUpMutation();
|
|
32
24
|
|
|
33
25
|
const handleRegister = async (values: any) => {
|
|
34
26
|
try {
|
|
@@ -39,35 +31,18 @@ const Register = () => {
|
|
|
39
31
|
password: values.password,
|
|
40
32
|
confirmPassword: values.confirmPassword,
|
|
41
33
|
name: values.name,
|
|
42
|
-
display_name: values.display_name,
|
|
43
|
-
gender: values.gender,
|
|
44
34
|
};
|
|
45
|
-
const res = await register(sendData).unwrap();
|
|
46
|
-
if (res?.success) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
35
|
+
// const res = await register(sendData).unwrap();
|
|
36
|
+
// if (res?.success) {
|
|
37
|
+
// }
|
|
38
|
+
console.log(sendData);
|
|
39
|
+
router.push(`/auth/opt_verify?email=${values.email}&account=true`);
|
|
50
40
|
} catch (error: any) {
|
|
51
41
|
// console.log(error);
|
|
52
42
|
router.push(`/modals/toaster?content=${error?.message}&time=4000`);
|
|
53
43
|
}
|
|
54
44
|
};
|
|
55
45
|
|
|
56
|
-
const handleLoginWithGoogle = async () => {
|
|
57
|
-
try {
|
|
58
|
-
const response = await loginWithGoogle({}).unwrap();
|
|
59
|
-
// console.log(response);
|
|
60
|
-
if (response?.success) {
|
|
61
|
-
// router.push("/home/tabs");
|
|
62
|
-
router.replace(`/auth/google_login?url=${`${response?.data}`}`);
|
|
63
|
-
} else {
|
|
64
|
-
router.push(`/modals/toaster?content=${response?.message}`);
|
|
65
|
-
}
|
|
66
|
-
} catch (error: any) {
|
|
67
|
-
router.push(`/modals/toaster?content=${error?.message}`);
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
|
|
71
46
|
// Define validation schema using Yup
|
|
72
47
|
const loginValidationSchema = Yup.object().shape({
|
|
73
48
|
email: Yup.string()
|
|
@@ -83,216 +58,182 @@ const Register = () => {
|
|
|
83
58
|
// show match password to confirm password
|
|
84
59
|
|
|
85
60
|
name: Yup.string().required("Fullname is required"),
|
|
86
|
-
display_name: Yup.string().required("Display name is required"),
|
|
87
61
|
});
|
|
88
62
|
|
|
89
63
|
return (
|
|
90
|
-
<
|
|
91
|
-
<
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
<View style={tw`
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
</View>
|
|
64
|
+
<View>
|
|
65
|
+
<BackButton
|
|
66
|
+
onPress={() => router.dismiss()}
|
|
67
|
+
containerStyle={tw`absolute top-0`}
|
|
68
|
+
/>
|
|
69
|
+
<View style={tw`flex-1 items-center justify-center p-5`}>
|
|
70
|
+
<View style={tw`justify-center items-center gap-2`}>
|
|
71
|
+
{/*============= If you want to show logo then you can add here========= */}
|
|
72
|
+
<Image
|
|
73
|
+
source={ImageAssets.logo}
|
|
74
|
+
style={tw`h-28 aspect-square `}
|
|
75
|
+
resizeMode="contain"
|
|
76
|
+
/>
|
|
77
|
+
<View style={tw`items-center justify-center gap-1`}>
|
|
78
|
+
<Text
|
|
79
|
+
style={tw`text-white font-InterSemiBold text-2xl -tracking-[1px]`}
|
|
80
|
+
>
|
|
81
|
+
Create a new account
|
|
82
|
+
</Text>
|
|
83
|
+
<Text
|
|
84
|
+
style={tw`text-white text-base font-InterRegular -tracking-[1px]`}
|
|
85
|
+
>
|
|
86
|
+
Please input your details to sign up
|
|
87
|
+
</Text>
|
|
115
88
|
</View>
|
|
89
|
+
</View>
|
|
116
90
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
/>
|
|
154
|
-
<InputText
|
|
155
|
-
svgFirstIcon={Icon.display_name}
|
|
156
|
-
textInputProps={{
|
|
157
|
-
placeholder: "Enter your display name",
|
|
158
|
-
placeholderTextColor: "#A9A9A9",
|
|
159
|
-
}}
|
|
160
|
-
value={values.display_name}
|
|
161
|
-
onChangeText={handleChange("display_name")}
|
|
162
|
-
onBlur={handleBlur("display_name")}
|
|
163
|
-
touched={touched.display_name}
|
|
164
|
-
errorText={errors.display_name}
|
|
165
|
-
/>
|
|
166
|
-
<InputText
|
|
167
|
-
svgFirstIcon={Icon.email}
|
|
168
|
-
textInputProps={{
|
|
169
|
-
placeholder: "Email",
|
|
170
|
-
placeholderTextColor: "#A9A9A9",
|
|
171
|
-
}}
|
|
172
|
-
value={values.email}
|
|
173
|
-
onChangeText={handleChange("email")}
|
|
174
|
-
onBlur={handleBlur("email")}
|
|
175
|
-
touched={touched.email}
|
|
176
|
-
errorText={errors.email}
|
|
177
|
-
/>
|
|
178
|
-
<View style={tw` px-4`}>
|
|
179
|
-
<Text style={tw`text-white font-InterRegular mb-2 `}>
|
|
180
|
-
Gender
|
|
181
|
-
</Text>
|
|
182
|
-
<View style={tw`flex-row items-center gap-3`}>
|
|
183
|
-
<TouchableOpacity
|
|
184
|
-
onPress={() => setFieldValue("gender", "male")}
|
|
185
|
-
style={
|
|
186
|
-
values.gender === "male"
|
|
187
|
-
? tw`px-4 py-2 rounded-full bg-blue-500`
|
|
188
|
-
: tw`px-4 py-2 rounded-full bg-[#3D3D3D]`
|
|
189
|
-
}
|
|
190
|
-
>
|
|
191
|
-
<Text style={tw`text-white`}>Male</Text>
|
|
192
|
-
</TouchableOpacity>
|
|
193
|
-
<TouchableOpacity
|
|
194
|
-
onPress={() => setFieldValue("gender", "female")}
|
|
195
|
-
style={
|
|
196
|
-
values.gender === "female"
|
|
197
|
-
? tw`px-4 py-2 rounded-full bg-blue-500`
|
|
198
|
-
: tw`px-4 py-2 rounded-full bg-[#3D3D3D]`
|
|
199
|
-
}
|
|
200
|
-
>
|
|
201
|
-
<Text style={tw`text-white`}>Female</Text>
|
|
202
|
-
</TouchableOpacity>
|
|
203
|
-
</View>
|
|
204
|
-
</View>
|
|
205
|
-
<InputText
|
|
206
|
-
svgFirstIcon={Icon.lock}
|
|
207
|
-
textInputProps={{
|
|
208
|
-
placeholder: "Password",
|
|
209
|
-
placeholderTextColor: "#A9A9A9",
|
|
210
|
-
secureTextEntry: !showPassword,
|
|
211
|
-
}}
|
|
212
|
-
svgSecondIcon={!showPassword ? Icon.eyeOff : Icon.eye}
|
|
213
|
-
svgSecondOnPress={() => setShowPassword(!showPassword)}
|
|
214
|
-
value={values.password}
|
|
215
|
-
onChangeText={handleChange("password")}
|
|
216
|
-
onBlur={handleBlur("password")}
|
|
217
|
-
touched={touched.password}
|
|
218
|
-
errorText={errors.password}
|
|
219
|
-
/>
|
|
220
|
-
<InputText
|
|
221
|
-
svgFirstIcon={Icon.lock}
|
|
222
|
-
textInputProps={{
|
|
223
|
-
placeholder: "Confirm Password",
|
|
224
|
-
placeholderTextColor: "#A9A9A9",
|
|
225
|
-
secureTextEntry: !showPasswordTwo,
|
|
226
|
-
}}
|
|
227
|
-
svgSecondIcon={!showPasswordTwo ? Icon.eyeOff : Icon.eye}
|
|
228
|
-
svgSecondOnPress={() =>
|
|
229
|
-
setShowPasswordTwo(!showPasswordTwo)
|
|
230
|
-
}
|
|
231
|
-
value={values.confirmPassword}
|
|
232
|
-
onChangeText={handleChange("confirmPassword")}
|
|
233
|
-
onBlur={handleBlur("confirmPassword")}
|
|
234
|
-
touched={touched.confirmPassword}
|
|
235
|
-
errorText={errors.confirmPassword}
|
|
236
|
-
/>
|
|
237
|
-
</View>
|
|
91
|
+
{/* Formik Wrapper */}
|
|
92
|
+
<Formik
|
|
93
|
+
initialValues={{
|
|
94
|
+
email: "",
|
|
95
|
+
password: "",
|
|
96
|
+
confirmPassword: "",
|
|
97
|
+
name: "",
|
|
98
|
+
}}
|
|
99
|
+
validationSchema={loginValidationSchema}
|
|
100
|
+
onSubmit={handleRegister}
|
|
101
|
+
>
|
|
102
|
+
{({
|
|
103
|
+
handleChange,
|
|
104
|
+
handleBlur,
|
|
105
|
+
handleSubmit,
|
|
106
|
+
values,
|
|
107
|
+
errors,
|
|
108
|
+
touched,
|
|
109
|
+
isValid,
|
|
110
|
+
setFieldValue,
|
|
111
|
+
}) => (
|
|
112
|
+
<View style={tw`w-full py-8 gap-6`}>
|
|
113
|
+
<View style={tw`gap-3`}>
|
|
114
|
+
<InputText
|
|
115
|
+
// === Place icons here ===
|
|
116
|
+
svgFirstIcon={Icon.user}
|
|
117
|
+
textInputProps={{
|
|
118
|
+
placeholder: "Your Full Name",
|
|
119
|
+
placeholderTextColor: "#A9A9A9",
|
|
120
|
+
}}
|
|
121
|
+
value={values.name}
|
|
122
|
+
onChangeText={handleChange("name")}
|
|
123
|
+
onBlur={handleBlur("name")}
|
|
124
|
+
touched={touched.name}
|
|
125
|
+
errorText={errors.name}
|
|
126
|
+
/>
|
|
238
127
|
|
|
239
|
-
<
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
<Text
|
|
253
|
-
onPress={() =>
|
|
254
|
-
router.push("/settings/terms_and_conditions")
|
|
255
|
-
}
|
|
256
|
-
style={tw`text-blue-500 underline font-InterRegular text-[13px]`}
|
|
257
|
-
>
|
|
258
|
-
Terms & conditions
|
|
259
|
-
</Text>
|
|
260
|
-
<Text
|
|
261
|
-
style={tw`text-white font-InterRegular text-[13px]`}
|
|
262
|
-
>
|
|
263
|
-
and
|
|
264
|
-
</Text>
|
|
265
|
-
<Text
|
|
266
|
-
onPress={() =>
|
|
267
|
-
router.push("/settings/privacy_policy")
|
|
268
|
-
}
|
|
269
|
-
style={tw` text-blue-500 underline font-InterRegular text-[13px]`}
|
|
270
|
-
>
|
|
271
|
-
Privacy policy
|
|
272
|
-
</Text>
|
|
273
|
-
<Text
|
|
274
|
-
style={tw`text-white font-InterRegular text-[13px]`}
|
|
275
|
-
>
|
|
276
|
-
.
|
|
277
|
-
</Text>
|
|
278
|
-
</View>
|
|
279
|
-
}
|
|
280
|
-
/>
|
|
281
|
-
</View>
|
|
282
|
-
</View>
|
|
128
|
+
<InputText
|
|
129
|
+
// === Place icons here ===
|
|
130
|
+
// svgFirstIcon={Icon.email}
|
|
131
|
+
textInputProps={{
|
|
132
|
+
placeholder: "Email",
|
|
133
|
+
placeholderTextColor: "#A9A9A9",
|
|
134
|
+
}}
|
|
135
|
+
value={values.email}
|
|
136
|
+
onChangeText={handleChange("email")}
|
|
137
|
+
onBlur={handleBlur("email")}
|
|
138
|
+
touched={touched.email}
|
|
139
|
+
errorText={errors.email}
|
|
140
|
+
/>
|
|
283
141
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
142
|
+
<InputText
|
|
143
|
+
// === Place icons here ===
|
|
144
|
+
svgFirstIcon={Icon.lock}
|
|
145
|
+
textInputProps={{
|
|
146
|
+
placeholder: "Password",
|
|
147
|
+
placeholderTextColor: "#A9A9A9",
|
|
148
|
+
secureTextEntry: !showPassword,
|
|
149
|
+
}}
|
|
150
|
+
// Place svg for eye icon to show/hide password
|
|
151
|
+
svgSecondIcon={!showPassword ? Icon.eyeOff : Icon.eye}
|
|
152
|
+
svgSecondOnPress={() => setShowPassword(!showPassword)}
|
|
153
|
+
value={values.password}
|
|
154
|
+
onChangeText={handleChange("password")}
|
|
155
|
+
onBlur={handleBlur("password")}
|
|
156
|
+
touched={touched.password}
|
|
157
|
+
errorText={errors.password}
|
|
158
|
+
/>
|
|
159
|
+
<InputText
|
|
160
|
+
// === Place icons here ===
|
|
161
|
+
svgFirstIcon={Icon.lock}
|
|
162
|
+
textInputProps={{
|
|
163
|
+
placeholder: "Confirm Password",
|
|
164
|
+
placeholderTextColor: "#A9A9A9",
|
|
165
|
+
secureTextEntry: !showPasswordTwo,
|
|
291
166
|
}}
|
|
292
|
-
|
|
167
|
+
// Place svg for eye icon to show/hide password
|
|
168
|
+
// svgSecondIcon={!showPasswordTwo ? Icon.eyeOff : Icon.eye}
|
|
169
|
+
svgSecondOnPress={() => setShowPasswordTwo(!showPasswordTwo)}
|
|
170
|
+
value={values.confirmPassword}
|
|
171
|
+
onChangeText={handleChange("confirmPassword")}
|
|
172
|
+
onBlur={handleBlur("confirmPassword")}
|
|
173
|
+
touched={touched.confirmPassword}
|
|
174
|
+
errorText={errors.confirmPassword}
|
|
293
175
|
/>
|
|
176
|
+
</View>
|
|
177
|
+
|
|
178
|
+
<View style={tw`flex-row justify-between items-center`}>
|
|
179
|
+
<View style={tw`flex-row items-center`}>
|
|
180
|
+
<CheckBox
|
|
181
|
+
checked={checked}
|
|
182
|
+
onPress={() => setChecked(!checked)}
|
|
183
|
+
containerStyle={tw`items-center flex-1`}
|
|
184
|
+
titleComponent={
|
|
185
|
+
<View style={tw` flex-row items-center gap-1`}>
|
|
186
|
+
<Text
|
|
187
|
+
style={tw`text-white font-InterRegular text-[13px]`}
|
|
188
|
+
>
|
|
189
|
+
Agree to
|
|
190
|
+
</Text>
|
|
191
|
+
<Text
|
|
192
|
+
onPress={() =>
|
|
193
|
+
router.push("/settings/terms_and_conditions")
|
|
194
|
+
}
|
|
195
|
+
style={tw`text-blue-500 underline font-InterRegular text-[13px]`}
|
|
196
|
+
>
|
|
197
|
+
Terms & conditions
|
|
198
|
+
</Text>
|
|
199
|
+
<Text
|
|
200
|
+
style={tw`text-white font-InterRegular text-[13px]`}
|
|
201
|
+
>
|
|
202
|
+
and
|
|
203
|
+
</Text>
|
|
204
|
+
<Text
|
|
205
|
+
onPress={() =>
|
|
206
|
+
router.push("/settings/privacy_policy")
|
|
207
|
+
}
|
|
208
|
+
style={tw` text-blue-500 underline font-InterRegular text-[13px]`}
|
|
209
|
+
>
|
|
210
|
+
Privacy policy
|
|
211
|
+
</Text>
|
|
212
|
+
<Text
|
|
213
|
+
style={tw`text-white font-InterRegular text-[13px]`}
|
|
214
|
+
>
|
|
215
|
+
.
|
|
216
|
+
</Text>
|
|
217
|
+
</View>
|
|
218
|
+
}
|
|
219
|
+
/>
|
|
220
|
+
</View>
|
|
221
|
+
</View>
|
|
294
222
|
|
|
295
|
-
|
|
223
|
+
{/* Submit button calls handleSubmit from Formik */}
|
|
224
|
+
<TButton
|
|
225
|
+
// If you connect API then you can add loading here
|
|
226
|
+
// isLoading={isLoading}
|
|
227
|
+
title="Sign Up"
|
|
228
|
+
onPress={() => {
|
|
229
|
+
handleSubmit();
|
|
230
|
+
// router.push("/auth/opt_verify");
|
|
231
|
+
}}
|
|
232
|
+
disabled={!isValid || !checked}
|
|
233
|
+
/>
|
|
234
|
+
|
|
235
|
+
{/* =========== IF need social login button then you can add here ======= */}
|
|
236
|
+
{/* <Or title="Or continue with" />
|
|
296
237
|
<View style={tw`flex-row justify-center items-center gap-5`}>
|
|
297
238
|
<TouchableOpacity
|
|
298
239
|
onPress={handleLoginWithGoogle}
|
|
@@ -300,34 +241,31 @@ const Register = () => {
|
|
|
300
241
|
>
|
|
301
242
|
<SvgXml xml={Icon.google} />
|
|
302
243
|
</TouchableOpacity>
|
|
303
|
-
|
|
244
|
+
<TouchableOpacity
|
|
304
245
|
style={tw`w-16 h-16 rounded-full bg-[#3D3D3D] items-center justify-center`}
|
|
305
246
|
>
|
|
306
247
|
<SvgXml xml={Icon.apple} />
|
|
307
|
-
</TouchableOpacity> */}
|
|
308
|
-
</View>
|
|
309
|
-
|
|
310
|
-
<View style={tw`flex-row justify-center mt-6`}>
|
|
311
|
-
<Text style={tw`text-white`}>Already have an account?</Text>
|
|
312
|
-
<TouchableOpacity
|
|
313
|
-
onPress={() => {
|
|
314
|
-
router.replace("/auth");
|
|
315
|
-
}}
|
|
316
|
-
style={tw`flex-row items-center gap-3`}
|
|
317
|
-
>
|
|
318
|
-
<Text style={tw`text-[#339DFF] underline ml-1`}>
|
|
319
|
-
Sign In
|
|
320
|
-
</Text>
|
|
321
|
-
<SvgXml xml={Icon.play} />
|
|
322
248
|
</TouchableOpacity>
|
|
323
|
-
</View>
|
|
249
|
+
</View> */}
|
|
250
|
+
|
|
251
|
+
<View style={tw`flex-row justify-center mt-6`}>
|
|
252
|
+
<Text style={tw`text-white`}>Already have an account?</Text>
|
|
253
|
+
<TouchableOpacity
|
|
254
|
+
onPress={() => {
|
|
255
|
+
router.replace("/auth");
|
|
256
|
+
}}
|
|
257
|
+
style={tw`flex-row items-center gap-3`}
|
|
258
|
+
>
|
|
259
|
+
<Text style={tw`text-[#339DFF] underline ml-1`}>Sign In</Text>
|
|
260
|
+
<SvgXml xml={Icon.play} />
|
|
261
|
+
</TouchableOpacity>
|
|
324
262
|
</View>
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
</
|
|
330
|
-
</
|
|
263
|
+
</View>
|
|
264
|
+
)}
|
|
265
|
+
</Formik>
|
|
266
|
+
{/* End of Formik Wrapper */}
|
|
267
|
+
</View>
|
|
268
|
+
</View>
|
|
331
269
|
);
|
|
332
270
|
};
|
|
333
271
|
|