app-expo-cli 1.0.5 → 1.0.6
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/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,32 +1,25 @@
|
|
|
1
1
|
import * as Yup from "yup";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { Text, View } from "react-native";
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import { Icon } from "@/assets/icon";
|
|
6
6
|
import BackButton from "@/src/lib/backHeader/BackButton";
|
|
7
|
-
import { Formik } from "formik";
|
|
8
|
-
import { Icon } from "@/assets/icons/Icon";
|
|
9
|
-
import { ImageAssets } from "@/assets/images/image";
|
|
10
|
-
import InputText from "@/src/lib/inputs/InputText";
|
|
11
|
-
import { KeyboardAwareScrollView } from "react-native-keyboard-controller";
|
|
12
|
-
import React from "react";
|
|
13
7
|
import TButton from "@/src/lib/buttons/TButton";
|
|
14
|
-
import
|
|
8
|
+
import InputText from "@/src/lib/inputs/InputText";
|
|
15
9
|
import tw from "@/src/lib/tailwind";
|
|
16
|
-
import {
|
|
10
|
+
import { router } from "expo-router";
|
|
11
|
+
import { Formik } from "formik";
|
|
17
12
|
|
|
18
13
|
const Forgot = () => {
|
|
19
|
-
const [forgot, { isLoading }] = useForgotMutation();
|
|
20
|
-
|
|
21
14
|
const handleForgot = async (values: any) => {
|
|
22
15
|
try {
|
|
23
|
-
const res = await forgot(values).unwrap();
|
|
24
|
-
if (res?.success) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
} else {
|
|
28
|
-
|
|
29
|
-
}
|
|
16
|
+
// const res = await forgot(values).unwrap();
|
|
17
|
+
// if (res?.success) {
|
|
18
|
+
// router.push(`/modals/toaster?content=${res?.message}`);
|
|
19
|
+
router.replace(`/auth/opt_verify?email=${values.email}&forgot=true`);
|
|
20
|
+
// } else {
|
|
21
|
+
// router.push(`/modals/toaster?content=${res?.message}`);
|
|
22
|
+
// }
|
|
30
23
|
} catch (error: any) {
|
|
31
24
|
router.push(`/modals/toaster?content=${error?.message}`);
|
|
32
25
|
}
|
|
@@ -40,84 +33,77 @@ const Forgot = () => {
|
|
|
40
33
|
});
|
|
41
34
|
|
|
42
35
|
return (
|
|
43
|
-
<
|
|
36
|
+
<View style={tw`flex-1`}>
|
|
44
37
|
<BackButton
|
|
45
38
|
onPress={() => router.dismiss()}
|
|
46
39
|
containerStyle={tw`absolute top-5`}
|
|
47
40
|
/>
|
|
48
|
-
<KeyboardAwareScrollView
|
|
49
|
-
style={tw`z-10 flex-1`}
|
|
50
|
-
contentContainerStyle={tw`items-center justify-center flex-1`}
|
|
51
|
-
>
|
|
52
|
-
<View style={tw`z-10 flex-1 items-center justify-center p-5`}>
|
|
53
|
-
<View style={tw`justify-center items-center gap-2`}>
|
|
54
|
-
<Image
|
|
55
|
-
source={ImageAssets.logo}
|
|
56
|
-
style={tw`h-30 aspect-square mb-5`}
|
|
57
|
-
resizeMode="contain"
|
|
58
|
-
/>
|
|
59
|
-
<View style={tw`items-center justify-center gap-2`}>
|
|
60
|
-
<Text
|
|
61
|
-
style={tw`text-white font-InterSemiBold text-2xl -tracking-[1px]`}
|
|
62
|
-
>
|
|
63
|
-
Forgot password ?
|
|
64
|
-
</Text>
|
|
65
|
-
<Text
|
|
66
|
-
style={tw`text-white text-base text-center font-InterRegular -tracking-[1px]`}
|
|
67
|
-
>
|
|
68
|
-
Enter the email address that you used to create your account. We
|
|
69
|
-
will send an OTP to reset your password.
|
|
70
|
-
</Text>
|
|
71
|
-
</View>
|
|
72
|
-
</View>
|
|
73
41
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
<View style={tw`gap-3`}>
|
|
91
|
-
<InputText
|
|
92
|
-
svgFirstIcon={Icon.email}
|
|
93
|
-
textInputProps={{
|
|
94
|
-
placeholder: "Email",
|
|
95
|
-
placeholderTextColor: "#A9A9A9",
|
|
96
|
-
}}
|
|
97
|
-
value={values.email}
|
|
98
|
-
onChangeText={handleChange("email")}
|
|
99
|
-
onBlur={handleBlur("email")}
|
|
100
|
-
touched={touched.email}
|
|
101
|
-
errorText={errors.email}
|
|
102
|
-
/>
|
|
103
|
-
</View>
|
|
42
|
+
<View style={tw`z-10 flex-1 items-center justify-center p-5`}>
|
|
43
|
+
<View style={tw`justify-center items-center gap-2`}>
|
|
44
|
+
<View style={tw`items-center justify-center gap-2`}>
|
|
45
|
+
<Text
|
|
46
|
+
style={tw`text-white font-InterSemiBold text-2xl -tracking-[1px]`}
|
|
47
|
+
>
|
|
48
|
+
Forgot password ?
|
|
49
|
+
</Text>
|
|
50
|
+
<Text
|
|
51
|
+
style={tw`text-white text-base text-center font-InterRegular -tracking-[1px]`}
|
|
52
|
+
>
|
|
53
|
+
Enter the email address that you used to create your account. We
|
|
54
|
+
will send an OTP to reset your password.
|
|
55
|
+
</Text>
|
|
56
|
+
</View>
|
|
57
|
+
</View>
|
|
104
58
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
59
|
+
{/* Formik Wrapper */}
|
|
60
|
+
<Formik
|
|
61
|
+
initialValues={{ email: "" }}
|
|
62
|
+
validationSchema={loginValidationSchema}
|
|
63
|
+
onSubmit={handleForgot}
|
|
64
|
+
>
|
|
65
|
+
{({
|
|
66
|
+
handleChange,
|
|
67
|
+
handleBlur,
|
|
68
|
+
handleSubmit,
|
|
69
|
+
values,
|
|
70
|
+
errors,
|
|
71
|
+
touched,
|
|
72
|
+
isValid,
|
|
73
|
+
}) => (
|
|
74
|
+
<View style={tw`w-full py-8 gap-6`}>
|
|
75
|
+
<View style={tw`gap-3`}>
|
|
76
|
+
<InputText
|
|
77
|
+
// === Place icons here ===
|
|
78
|
+
svgFirstIcon={Icon.email}
|
|
79
|
+
textInputProps={{
|
|
80
|
+
placeholder: "Email",
|
|
81
|
+
placeholderTextColor: "#A9A9A9",
|
|
112
82
|
}}
|
|
113
|
-
|
|
83
|
+
value={values.email}
|
|
84
|
+
onChangeText={handleChange("email")}
|
|
85
|
+
onBlur={handleBlur("email")}
|
|
86
|
+
touched={touched.email}
|
|
87
|
+
errorText={errors.email}
|
|
114
88
|
/>
|
|
115
89
|
</View>
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
90
|
+
|
|
91
|
+
{/* Submit button calls handleSubmit from Formik */}
|
|
92
|
+
<TButton
|
|
93
|
+
title="Get OTP"
|
|
94
|
+
// If you connect API then you can add loading here
|
|
95
|
+
// isLoading={isLoading}
|
|
96
|
+
onPress={() => {
|
|
97
|
+
handleSubmit();
|
|
98
|
+
// router.push("/auth/opt_verify");
|
|
99
|
+
}}
|
|
100
|
+
disabled={!isValid}
|
|
101
|
+
/>
|
|
102
|
+
</View>
|
|
103
|
+
)}
|
|
104
|
+
</Formik>
|
|
105
|
+
</View>
|
|
106
|
+
</View>
|
|
121
107
|
);
|
|
122
108
|
};
|
|
123
109
|
|
|
@@ -1,27 +1,17 @@
|
|
|
1
1
|
import * as Yup from "yup";
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
useGoogleLoginMutation,
|
|
5
|
-
useLoginMutation,
|
|
6
|
-
} from "@/src/redux/apiSlices/authSlices";
|
|
7
3
|
import { Image, Text, TouchableOpacity, View } from "react-native";
|
|
8
4
|
|
|
9
|
-
import { Icon } from "@/assets/
|
|
10
|
-
import { ImageAssets } from "@/assets/images
|
|
11
|
-
import AppBgWrapper from "@/src/components/common/AppBgWrapper";
|
|
12
|
-
import IButton from "@/src/lib/buttons/IButton";
|
|
13
|
-
import Or from "@/src/lib/buttons/Or";
|
|
5
|
+
import { Icon } from "@/assets/icon";
|
|
6
|
+
import { ImageAssets } from "@/assets/images";
|
|
14
7
|
import TButton from "@/src/lib/buttons/TButton";
|
|
15
8
|
import CheckBox from "@/src/lib/inputs/CheckBox";
|
|
16
9
|
import InputText from "@/src/lib/inputs/InputText";
|
|
17
10
|
import tw from "@/src/lib/tailwind";
|
|
18
|
-
import { support } from "@/src/utils/utils";
|
|
19
11
|
import AsyncStorage from "@react-native-async-storage/async-storage";
|
|
20
12
|
import { router } from "expo-router";
|
|
21
13
|
import { Formik } from "formik";
|
|
22
14
|
import React from "react";
|
|
23
|
-
import { KeyboardAwareScrollView } from "react-native-keyboard-controller";
|
|
24
|
-
import { SvgXml } from "react-native-svg";
|
|
25
15
|
|
|
26
16
|
const Login = () => {
|
|
27
17
|
const [loginInfo, setLoginInfo] = React.useState<null | {
|
|
@@ -31,8 +21,7 @@ const Login = () => {
|
|
|
31
21
|
const [check, setCheck] = React.useState(false);
|
|
32
22
|
const [passShow, setPassShow] = React.useState(false);
|
|
33
23
|
|
|
34
|
-
const [login, results] = useLoginMutation();
|
|
35
|
-
const [loginWithGoogle, googleResults] = useGoogleLoginMutation();
|
|
24
|
+
// const [login, results] = useLoginMutation();
|
|
36
25
|
|
|
37
26
|
const handleLogin = async (values: any) => {
|
|
38
27
|
try {
|
|
@@ -43,36 +32,21 @@ const Login = () => {
|
|
|
43
32
|
AsyncStorage.removeItem("check");
|
|
44
33
|
AsyncStorage.removeItem("loginInfo");
|
|
45
34
|
}
|
|
46
|
-
const response = await login(values).unwrap();
|
|
47
|
-
if (response?.success) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
} else {
|
|
53
|
-
|
|
54
|
-
}
|
|
35
|
+
// const response = await login(values).unwrap();
|
|
36
|
+
// if (response?.success) {
|
|
37
|
+
// console.log(response?.data);
|
|
38
|
+
|
|
39
|
+
// await AsyncStorage.setItem("token", response?.data?.token);
|
|
40
|
+
router.replace("/auth/home");
|
|
41
|
+
// } else {
|
|
42
|
+
// router.push(`/modals/toaster?content=${response?.message}`);
|
|
43
|
+
// }
|
|
55
44
|
} catch (error: any) {
|
|
56
45
|
console.log(error);
|
|
57
46
|
router.push(`/modals/toaster?content=${error?.message}`);
|
|
58
47
|
}
|
|
59
48
|
};
|
|
60
49
|
|
|
61
|
-
const handleLoginWithGoogle = async () => {
|
|
62
|
-
try {
|
|
63
|
-
const response = await loginWithGoogle({}).unwrap();
|
|
64
|
-
// console.log(response);
|
|
65
|
-
if (response?.success) {
|
|
66
|
-
// router.push("/home/tabs");
|
|
67
|
-
router.push(`/auth/google_login?url=${`${response?.data}`}`);
|
|
68
|
-
} else {
|
|
69
|
-
router.push(`/modals/toaster?content=${response?.message}`);
|
|
70
|
-
}
|
|
71
|
-
} catch (error: any) {
|
|
72
|
-
router.push(`/modals/toaster?content=${error?.message}`);
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
|
|
76
50
|
// Define validation schema using Yup
|
|
77
51
|
const loginValidationSchema = Yup.object().shape({
|
|
78
52
|
email: Yup.string()
|
|
@@ -99,175 +73,170 @@ const Login = () => {
|
|
|
99
73
|
}, []);
|
|
100
74
|
|
|
101
75
|
return (
|
|
102
|
-
<
|
|
103
|
-
<
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
style={tw`text-white font-InterSemiBold text-2xl -tracking-[1px]`}
|
|
114
|
-
>
|
|
115
|
-
Welcome Back
|
|
116
|
-
</Text>
|
|
117
|
-
<Text
|
|
118
|
-
style={tw`text-white text-base font-InterRegular -tracking-[1px]`}
|
|
119
|
-
>
|
|
120
|
-
Please use your credentials to sign in
|
|
121
|
-
</Text>
|
|
122
|
-
</View>
|
|
123
|
-
</View>
|
|
124
|
-
|
|
125
|
-
{/* Formik Wrapper */}
|
|
126
|
-
<Formik
|
|
127
|
-
initialValues={{
|
|
128
|
-
email: loginInfo?.email || "",
|
|
129
|
-
password: loginInfo?.password || "",
|
|
130
|
-
}}
|
|
131
|
-
enableReinitialize
|
|
132
|
-
validationSchema={loginValidationSchema}
|
|
133
|
-
onSubmit={handleLogin}
|
|
76
|
+
<View style={tw`flex-1 items-center justify-center p-5`}>
|
|
77
|
+
<View style={tw`justify-center items-center mt-10 gap-2`}>
|
|
78
|
+
{/*=========== If need show logo then you can add here========= */}
|
|
79
|
+
<Image
|
|
80
|
+
source={ImageAssets.logo}
|
|
81
|
+
style={tw`h-18 aspect-square mb-5`}
|
|
82
|
+
resizeMode="contain"
|
|
83
|
+
/>
|
|
84
|
+
<View style={tw`items-center justify-center gap-2`}>
|
|
85
|
+
<Text
|
|
86
|
+
style={tw`text-white font-InterSemiBold text-2xl -tracking-[1px]`}
|
|
134
87
|
>
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
88
|
+
Welcome Back
|
|
89
|
+
</Text>
|
|
90
|
+
<Text
|
|
91
|
+
style={tw`text-white text-base font-InterRegular -tracking-[1px]`}
|
|
92
|
+
>
|
|
93
|
+
Please use your credentials to sign in
|
|
94
|
+
</Text>
|
|
95
|
+
</View>
|
|
96
|
+
</View>
|
|
97
|
+
|
|
98
|
+
{/* Formik Wrapper */}
|
|
99
|
+
<Formik
|
|
100
|
+
initialValues={{
|
|
101
|
+
email: loginInfo?.email || "",
|
|
102
|
+
password: loginInfo?.password || "",
|
|
103
|
+
}}
|
|
104
|
+
enableReinitialize
|
|
105
|
+
validationSchema={loginValidationSchema}
|
|
106
|
+
onSubmit={handleLogin}
|
|
107
|
+
>
|
|
108
|
+
{({
|
|
109
|
+
handleChange,
|
|
110
|
+
handleBlur,
|
|
111
|
+
handleSubmit,
|
|
112
|
+
values,
|
|
113
|
+
errors,
|
|
114
|
+
touched,
|
|
115
|
+
isValid,
|
|
116
|
+
}) => (
|
|
117
|
+
<View style={tw`w-full py-8 gap-6`}>
|
|
118
|
+
<View style={tw`gap-3`}>
|
|
119
|
+
<InputText
|
|
120
|
+
// === Place icons here ===
|
|
121
|
+
svgFirstIcon={Icon.email}
|
|
122
|
+
textInputProps={{
|
|
123
|
+
placeholder: "Email",
|
|
124
|
+
placeholderTextColor: "#A9A9A9",
|
|
125
|
+
}}
|
|
126
|
+
value={values.email}
|
|
127
|
+
onChangeText={handleChange("email")}
|
|
128
|
+
onBlur={handleBlur("email")}
|
|
129
|
+
touched={touched.email}
|
|
130
|
+
errorText={errors.email}
|
|
131
|
+
/>
|
|
132
|
+
|
|
133
|
+
<InputText
|
|
134
|
+
// === Place icons here ===
|
|
135
|
+
svgFirstIcon={Icon.lock}
|
|
136
|
+
textInputProps={{
|
|
137
|
+
placeholder: "Password",
|
|
138
|
+
placeholderTextColor: "#A9A9A9",
|
|
139
|
+
secureTextEntry: !passShow,
|
|
140
|
+
}}
|
|
141
|
+
value={values.password}
|
|
142
|
+
onChangeText={handleChange("password")}
|
|
143
|
+
onBlur={handleBlur("password")}
|
|
144
|
+
touched={touched.password}
|
|
145
|
+
errorText={errors.password}
|
|
146
|
+
// === Place second icon here ===
|
|
147
|
+
// svgSecondIcon={passShow ? Icon.eye : Icon.eyeOff}
|
|
148
|
+
svgSecondOnPress={() => setPassShow(!passShow)}
|
|
149
|
+
/>
|
|
150
|
+
</View>
|
|
158
151
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
</
|
|
152
|
+
<View style={tw`flex-row justify-between items-center`}>
|
|
153
|
+
<View style={tw`flex-row items-center`}>
|
|
154
|
+
<CheckBox
|
|
155
|
+
checked={check}
|
|
156
|
+
onPress={() => setCheck(!check)}
|
|
157
|
+
title="Remember me"
|
|
158
|
+
/>
|
|
159
|
+
</View>
|
|
160
|
+
<TouchableOpacity
|
|
161
|
+
onPress={() => {
|
|
162
|
+
router.push("/auth/forgot");
|
|
163
|
+
}}
|
|
164
|
+
>
|
|
165
|
+
<Text style={tw`text-[#339DFF] underline`}>
|
|
166
|
+
Forgot Password?
|
|
167
|
+
</Text>
|
|
168
|
+
</TouchableOpacity>
|
|
169
|
+
</View>
|
|
175
170
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
}}
|
|
188
|
-
>
|
|
189
|
-
<Text style={tw`text-[#339DFF] underline`}>
|
|
190
|
-
Forgot Password?
|
|
191
|
-
</Text>
|
|
192
|
-
</TouchableOpacity>
|
|
193
|
-
</View>
|
|
171
|
+
{/* Submit button calls handleSubmit from Formik */}
|
|
172
|
+
<TButton
|
|
173
|
+
// If you connect API then you can add loading here
|
|
174
|
+
// isLoading={results.isLoading}
|
|
175
|
+
title="Sign In"
|
|
176
|
+
onPress={() => {
|
|
177
|
+
handleSubmit();
|
|
178
|
+
// router.push("/home");
|
|
179
|
+
}}
|
|
180
|
+
disabled={!isValid}
|
|
181
|
+
/>
|
|
194
182
|
|
|
195
|
-
|
|
196
|
-
<TButton
|
|
197
|
-
isLoading={results.isLoading}
|
|
198
|
-
title="Sign In"
|
|
199
|
-
onPress={() => {
|
|
200
|
-
handleSubmit();
|
|
201
|
-
// router.push("/home");
|
|
202
|
-
}}
|
|
203
|
-
disabled={!isValid}
|
|
204
|
-
/>
|
|
183
|
+
{/* <Or title="Or continue with" /> */}
|
|
205
184
|
|
|
206
|
-
|
|
207
|
-
|
|
185
|
+
{/* Social login button if need then you can add */}
|
|
186
|
+
{/* <View style={tw`flex-row justify-center items-center gap-4`}>
|
|
208
187
|
<IButton
|
|
209
188
|
isLoading={googleResults.isLoading}
|
|
210
189
|
containerStyle={tw`w-16 h-16 bg-transparent `}
|
|
211
190
|
svg={Icon.google}
|
|
212
191
|
onPress={handleLoginWithGoogle}
|
|
213
192
|
/>
|
|
214
|
-
|
|
193
|
+
<IButton
|
|
215
194
|
containerStyle={tw`w-16 h-16 bg-transparent `}
|
|
216
195
|
svg={Icon.apple}
|
|
217
|
-
onPress={
|
|
218
|
-
/>
|
|
219
|
-
</View>
|
|
196
|
+
onPress={handleLoginWithApple}
|
|
197
|
+
/>
|
|
198
|
+
</View> */}
|
|
220
199
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
<SvgXml xml={Icon.play} />
|
|
234
|
-
</TouchableOpacity>
|
|
235
|
-
</View>
|
|
236
|
-
<View>
|
|
237
|
-
<Text style={tw`text-white text-center leading-6`}>
|
|
238
|
-
Please read our{" "}
|
|
239
|
-
<Text
|
|
240
|
-
onPress={() =>
|
|
241
|
-
router.push("/settings/terms_and_conditions")
|
|
242
|
-
}
|
|
243
|
-
style={tw`text-[#339DFF] underline`}
|
|
244
|
-
>
|
|
245
|
-
Terms
|
|
246
|
-
</Text>{" "}
|
|
247
|
-
and{" "}
|
|
248
|
-
<Text
|
|
249
|
-
onPress={() => router.push("/settings/privacy_policy")}
|
|
250
|
-
style={tw`text-[#339DFF] underline`}
|
|
251
|
-
>
|
|
252
|
-
Privacy Policy
|
|
253
|
-
</Text>{" "}
|
|
254
|
-
and if you have any problems please contact our{" "}
|
|
255
|
-
<Text
|
|
256
|
-
onPress={() => support()}
|
|
257
|
-
style={tw`text-[#339DFF] underline`}
|
|
258
|
-
>
|
|
259
|
-
Support
|
|
260
|
-
</Text>
|
|
261
|
-
</Text>
|
|
262
|
-
</View>
|
|
263
|
-
</View>
|
|
200
|
+
<View style={tw`gap-2`}>
|
|
201
|
+
<View style={tw`flex-row justify-center `}>
|
|
202
|
+
<Text style={tw`text-white`}>Dont have an account?</Text>
|
|
203
|
+
<TouchableOpacity
|
|
204
|
+
onPress={() => {
|
|
205
|
+
router.push("/auth/register");
|
|
206
|
+
}}
|
|
207
|
+
style={tw`flex-row items-center gap-3`}
|
|
208
|
+
>
|
|
209
|
+
<Text style={tw`text-[#339DFF] underline ml-1`}>Sign up</Text>
|
|
210
|
+
<SvgXml xml={Icon.play} />
|
|
211
|
+
</TouchableOpacity>
|
|
264
212
|
</View>
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
213
|
+
<View>
|
|
214
|
+
<Text style={tw`text-white text-center leading-6`}>
|
|
215
|
+
Please read our{" "}
|
|
216
|
+
<Text
|
|
217
|
+
onPress={() =>
|
|
218
|
+
router.push("/settings/terms_and_conditions")
|
|
219
|
+
}
|
|
220
|
+
style={tw`text-[#339DFF] underline`}
|
|
221
|
+
>
|
|
222
|
+
Terms
|
|
223
|
+
</Text>{" "}
|
|
224
|
+
and{" "}
|
|
225
|
+
<Text
|
|
226
|
+
onPress={() => router.push("/settings/privacy_policy")}
|
|
227
|
+
style={tw`text-[#339DFF] underline`}
|
|
228
|
+
>
|
|
229
|
+
Privacy Policy
|
|
230
|
+
</Text>{" "}
|
|
231
|
+
and if you have any problems please contact our{" "}
|
|
232
|
+
</Text>
|
|
233
|
+
</View>
|
|
234
|
+
</View>
|
|
235
|
+
</View>
|
|
236
|
+
)}
|
|
237
|
+
</Formik>
|
|
238
|
+
{/* End of Formik Wrapper */}
|
|
239
|
+
</View>
|
|
271
240
|
);
|
|
272
241
|
};
|
|
273
242
|
|