@oxyhq/services 5.13.11 → 5.13.15

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.
Files changed (96) hide show
  1. package/lib/commonjs/core/HttpClient.js +79 -0
  2. package/lib/commonjs/core/HttpClient.js.map +1 -1
  3. package/lib/commonjs/core/OxyServices.js +159 -0
  4. package/lib/commonjs/core/OxyServices.js.map +1 -1
  5. package/lib/commonjs/index.js.map +1 -1
  6. package/lib/commonjs/ui/context/OxyContext.js +1 -47
  7. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  8. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +239 -1
  9. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  10. package/lib/commonjs/utils/apiUtils.js +0 -14
  11. package/lib/commonjs/utils/apiUtils.js.map +1 -1
  12. package/lib/commonjs/utils/asyncUtils.js +0 -20
  13. package/lib/commonjs/utils/asyncUtils.js.map +1 -1
  14. package/lib/module/core/HttpClient.js +79 -0
  15. package/lib/module/core/HttpClient.js.map +1 -1
  16. package/lib/module/core/OxyServices.js +159 -0
  17. package/lib/module/core/OxyServices.js.map +1 -1
  18. package/lib/module/index.js.map +1 -1
  19. package/lib/module/ui/context/OxyContext.js +1 -47
  20. package/lib/module/ui/context/OxyContext.js.map +1 -1
  21. package/lib/module/ui/navigation/types.js.map +1 -1
  22. package/lib/module/ui/screens/PrivacySettingsScreen.js +241 -3
  23. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  24. package/lib/module/utils/apiUtils.js +0 -13
  25. package/lib/module/utils/apiUtils.js.map +1 -1
  26. package/lib/module/utils/asyncUtils.js +0 -20
  27. package/lib/module/utils/asyncUtils.js.map +1 -1
  28. package/lib/typescript/core/HttpClient.d.ts +46 -0
  29. package/lib/typescript/core/HttpClient.d.ts.map +1 -1
  30. package/lib/typescript/core/OxyServices.d.ts +65 -1
  31. package/lib/typescript/core/OxyServices.d.ts.map +1 -1
  32. package/lib/typescript/index.d.ts +1 -1
  33. package/lib/typescript/index.d.ts.map +1 -1
  34. package/lib/typescript/models/interfaces.d.ts +26 -0
  35. package/lib/typescript/models/interfaces.d.ts.map +1 -1
  36. package/lib/typescript/ui/context/OxyContext.d.ts +0 -6
  37. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  38. package/lib/typescript/ui/navigation/types.d.ts +0 -1
  39. package/lib/typescript/ui/navigation/types.d.ts.map +1 -1
  40. package/lib/typescript/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  41. package/lib/typescript/utils/apiUtils.d.ts +0 -7
  42. package/lib/typescript/utils/apiUtils.d.ts.map +1 -1
  43. package/lib/typescript/utils/asyncUtils.d.ts +0 -11
  44. package/lib/typescript/utils/asyncUtils.d.ts.map +1 -1
  45. package/package.json +1 -1
  46. package/src/core/HttpClient.ts +69 -0
  47. package/src/core/OxyServices.ts +174 -1
  48. package/src/index.ts +4 -0
  49. package/src/models/interfaces.ts +28 -0
  50. package/src/ui/context/OxyContext.tsx +0 -54
  51. package/src/ui/navigation/types.ts +0 -1
  52. package/src/ui/screens/PrivacySettingsScreen.tsx +240 -2
  53. package/src/utils/apiUtils.ts +0 -14
  54. package/src/utils/asyncUtils.ts +0 -20
  55. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js +0 -192
  56. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js.map +0 -1
  57. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js +0 -142
  58. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js.map +0 -1
  59. package/lib/commonjs/ui/screens/internal/SignUpIdentityStep.js +0 -113
  60. package/lib/commonjs/ui/screens/internal/SignUpIdentityStep.js.map +0 -1
  61. package/lib/commonjs/ui/screens/internal/SignUpSecurityStep.js +0 -132
  62. package/lib/commonjs/ui/screens/internal/SignUpSecurityStep.js.map +0 -1
  63. package/lib/commonjs/ui/screens/internal/SignUpSummaryStep.js +0 -83
  64. package/lib/commonjs/ui/screens/internal/SignUpSummaryStep.js.map +0 -1
  65. package/lib/commonjs/ui/screens/internal/SignUpWelcomeStep.js +0 -58
  66. package/lib/commonjs/ui/screens/internal/SignUpWelcomeStep.js.map +0 -1
  67. package/lib/module/ui/screens/internal/SignInPasswordStep.js +0 -186
  68. package/lib/module/ui/screens/internal/SignInPasswordStep.js.map +0 -1
  69. package/lib/module/ui/screens/internal/SignInUsernameStep.js +0 -136
  70. package/lib/module/ui/screens/internal/SignInUsernameStep.js.map +0 -1
  71. package/lib/module/ui/screens/internal/SignUpIdentityStep.js +0 -108
  72. package/lib/module/ui/screens/internal/SignUpIdentityStep.js.map +0 -1
  73. package/lib/module/ui/screens/internal/SignUpSecurityStep.js +0 -127
  74. package/lib/module/ui/screens/internal/SignUpSecurityStep.js.map +0 -1
  75. package/lib/module/ui/screens/internal/SignUpSummaryStep.js +0 -78
  76. package/lib/module/ui/screens/internal/SignUpSummaryStep.js.map +0 -1
  77. package/lib/module/ui/screens/internal/SignUpWelcomeStep.js +0 -53
  78. package/lib/module/ui/screens/internal/SignUpWelcomeStep.js.map +0 -1
  79. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts +0 -28
  80. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts.map +0 -1
  81. package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts +0 -25
  82. package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts.map +0 -1
  83. package/lib/typescript/ui/screens/internal/SignUpIdentityStep.d.ts +0 -20
  84. package/lib/typescript/ui/screens/internal/SignUpIdentityStep.d.ts.map +0 -1
  85. package/lib/typescript/ui/screens/internal/SignUpSecurityStep.d.ts +0 -24
  86. package/lib/typescript/ui/screens/internal/SignUpSecurityStep.d.ts.map +0 -1
  87. package/lib/typescript/ui/screens/internal/SignUpSummaryStep.d.ts +0 -15
  88. package/lib/typescript/ui/screens/internal/SignUpSummaryStep.d.ts.map +0 -1
  89. package/lib/typescript/ui/screens/internal/SignUpWelcomeStep.d.ts +0 -13
  90. package/lib/typescript/ui/screens/internal/SignUpWelcomeStep.d.ts.map +0 -1
  91. package/src/ui/screens/internal/SignInPasswordStep.tsx +0 -184
  92. package/src/ui/screens/internal/SignInUsernameStep.tsx +0 -145
  93. package/src/ui/screens/internal/SignUpIdentityStep.tsx +0 -112
  94. package/src/ui/screens/internal/SignUpSecurityStep.tsx +0 -132
  95. package/src/ui/screens/internal/SignUpSummaryStep.tsx +0 -66
  96. package/src/ui/screens/internal/SignUpWelcomeStep.tsx +0 -52
@@ -1,145 +0,0 @@
1
- import type React from 'react';
2
- import { useRef } from 'react';
3
- import { type TextInput, View, Text } from 'react-native';
4
- import Animated, {
5
- useAnimatedStyle,
6
- SharedValue,
7
- } from 'react-native-reanimated';
8
- import { Ionicons } from '@expo/vector-icons';
9
- import { useI18n } from '../../hooks/useI18n';
10
- import HighFive from '../../../assets/illustrations/HighFive';
11
- import GroupedPillButtons from '../../components/internal/GroupedPillButtons';
12
- import TextField from '../../components/internal/TextField';
13
-
14
- interface SignInUsernameStepProps {
15
- styles: any;
16
- fadeAnim: SharedValue<number>;
17
- slideAnim: SharedValue<number>;
18
- scaleAnim: SharedValue<number>;
19
- colors: any;
20
- isAddAccountMode: boolean;
21
- user: any;
22
- errorMessage: string;
23
- isInputFocused: boolean;
24
- username: string;
25
- validationStatus: 'idle' | 'validating' | 'valid' | 'invalid';
26
- userProfile: any;
27
- isValidating: boolean;
28
- handleInputFocus: () => void;
29
- handleInputBlur: () => void;
30
- handleUsernameChange: (text: string) => void;
31
- handleUsernameContinue: () => void;
32
- navigate: any;
33
- }
34
-
35
- const SignInUsernameStep: React.FC<SignInUsernameStepProps> = ({
36
- styles,
37
- fadeAnim,
38
- slideAnim,
39
- scaleAnim,
40
- colors,
41
- isAddAccountMode,
42
- user,
43
- errorMessage,
44
- isInputFocused,
45
- username,
46
- validationStatus,
47
- userProfile,
48
- isValidating,
49
- handleInputFocus,
50
- handleInputBlur,
51
- handleUsernameChange,
52
- handleUsernameContinue: parentHandleUsernameContinue,
53
- navigate,
54
- }) => {
55
- const inputRef = useRef<TextInput>(null);
56
- const { t } = useI18n();
57
-
58
- // Animated styles - properly memoized to prevent re-renders
59
- const animatedStyle = useAnimatedStyle(() => {
60
- return {
61
- opacity: fadeAnim.value,
62
- transform: [
63
- { translateX: slideAnim.value },
64
- { scale: scaleAnim.value }
65
- ]
66
- };
67
- });
68
-
69
- const handleUsernameContinue = () => {
70
- if (!username || validationStatus === 'invalid') {
71
- setTimeout(() => {
72
- inputRef.current?.focus();
73
- }, 0);
74
- }
75
- parentHandleUsernameContinue();
76
- };
77
- return (
78
- <Animated.View style={[
79
- styles.stepContainer,
80
- animatedStyle
81
- ]}>
82
- <HighFive width={100} height={100} />
83
- <View style={styles.modernHeader}>
84
- <Text style={[styles.modernTitle, { color: colors.text }]}>
85
- {isAddAccountMode ? (t('signin.addAccountTitle') || 'Add Another Account') : (t('signin.title') || 'Sign In')}
86
- </Text>
87
- <Text style={[styles.modernSubtitle, { color: colors.secondaryText }]}>
88
- {isAddAccountMode
89
- ? (t('signin.addAccountSubtitle') || 'Sign in with another account')
90
- : (t('signin.subtitle') || 'Sign in to continue your journey')
91
- }
92
- </Text>
93
- </View>
94
- {isAddAccountMode && (
95
- <View style={[styles.modernInfoCard, { backgroundColor: colors.inputBackground }]}>
96
- <Ionicons name="information-circle" size={20} color={colors.primary} />
97
- <Text style={[styles.modernInfoText, { color: colors.text }]}>
98
- {t('signin.currentlySignedInAs') || 'Currently signed in as'} <Text style={{ fontWeight: 'bold' }}>{user?.name?.full || user?.username}</Text>
99
- </Text>
100
- </View>
101
- )}
102
- <View style={styles.modernInputContainer}>
103
- <TextField
104
- ref={inputRef}
105
- label={t('common.labels.username')}
106
- leading={<Ionicons name="person-outline" size={24} color={colors.secondaryText} />}
107
- value={username}
108
- onChangeText={handleUsernameChange}
109
- onFocus={handleInputFocus}
110
- onBlur={handleInputBlur}
111
- autoCapitalize="none"
112
- autoCorrect={false}
113
- testID="username-input"
114
- variant="filled"
115
- error={validationStatus === 'invalid' ? errorMessage : undefined}
116
- loading={validationStatus === 'validating'}
117
- success={validationStatus === 'valid'}
118
- onSubmitEditing={handleUsernameContinue}
119
- autoFocus
120
- />
121
- </View>
122
- <GroupedPillButtons
123
- buttons={[
124
- {
125
- text: t('common.links.signUp') || 'Sign Up',
126
- onPress: () => navigate('SignUp'),
127
- icon: 'person-add',
128
- variant: 'transparent',
129
- },
130
- {
131
- text: t('common.actions.continue'),
132
- onPress: handleUsernameContinue,
133
- icon: 'arrow-forward',
134
- variant: 'primary',
135
- loading: isValidating,
136
- testID: 'username-next-button',
137
- },
138
- ]}
139
- colors={colors}
140
- />
141
- </Animated.View>
142
- );
143
- };
144
-
145
- export default SignInUsernameStep;
@@ -1,112 +0,0 @@
1
- import type React from 'react';
2
- import { useRef } from 'react';
3
- import { View, Text, Animated, TouchableOpacity, type TextInput } from 'react-native';
4
- import GroupedPillButtons from '../../components/internal/GroupedPillButtons';
5
- import TextField from '../../components/internal/TextField';
6
- import HighFive from '../../../assets/illustrations/HighFive';
7
- import { Ionicons } from '@expo/vector-icons';
8
-
9
- interface SignUpIdentityStepProps {
10
- styles: any;
11
- fadeAnim: Animated.Value;
12
- slideAnim: Animated.Value;
13
- colors: any;
14
- formData: any;
15
- validationState: any;
16
- updateField: (field: string, value: string) => void;
17
- setErrorMessage: (msg: string) => void;
18
- prevStep: () => void;
19
- handleIdentityNext: () => void;
20
- ValidationMessage: React.FC<any>;
21
- validateEmail: (email: string) => boolean;
22
- navigate: any;
23
- }
24
-
25
- const SignUpIdentityStep: React.FC<SignUpIdentityStepProps> = ({
26
- styles,
27
- fadeAnim,
28
- slideAnim,
29
- colors,
30
- formData,
31
- validationState,
32
- updateField,
33
- setErrorMessage,
34
- prevStep,
35
- handleIdentityNext: parentHandleIdentityNext,
36
- ValidationMessage,
37
- validateEmail,
38
- navigate,
39
- }) => {
40
- const inputRef = useRef<TextInput>(null);
41
- const handleIdentityNext = () => {
42
- if (!formData.username || validationState.status === 'invalid') {
43
- setTimeout(() => {
44
- inputRef.current?.focus();
45
- }, 0);
46
- }
47
- parentHandleIdentityNext();
48
- };
49
- return (
50
- <Animated.View style={[
51
- styles.stepContainer,
52
- { opacity: fadeAnim, transform: [{ translateX: slideAnim }] }
53
- ]}>
54
- <View style={styles.modernHeader}>
55
- <Text style={[styles.stepTitle, { color: colors.text }]}>Who are you?</Text>
56
- </View>
57
- <TextField
58
- ref={inputRef}
59
- leading={<Ionicons name="person-outline" size={24} color={colors.secondaryText} />}
60
- label="Username"
61
- value={formData.username}
62
- onChangeText={(text) => {
63
- updateField('username', text);
64
- setErrorMessage('');
65
- }}
66
- autoCapitalize="none"
67
- autoCorrect={false}
68
- testID="username-input"
69
- variant="filled"
70
- error={validationState.status === 'invalid' ? validationState.message : undefined}
71
- loading={validationState.status === 'validating'}
72
- success={validationState.status === 'valid'}
73
- onSubmitEditing={handleIdentityNext}
74
- autoFocus
75
- />
76
- <ValidationMessage validationState={validationState} colors={colors} styles={styles} />
77
- <TextField
78
- leading={<Ionicons name="mail-outline" size={24} color={colors.secondaryText} />}
79
- label="Email"
80
- value={formData.email}
81
- onChangeText={(text) => {
82
- updateField('email', text);
83
- }}
84
- keyboardType="email-address"
85
- autoCapitalize="none"
86
- autoCorrect={false}
87
- testID="email-input"
88
- variant="filled"
89
- error={formData.email && !validateEmail(formData.email) ? 'Please enter a valid email address' : undefined}
90
- />
91
- <GroupedPillButtons
92
- buttons={[
93
- {
94
- text: 'Back',
95
- onPress: prevStep,
96
- icon: 'arrow-back',
97
- variant: 'transparent',
98
- },
99
- {
100
- text: 'Next',
101
- onPress: handleIdentityNext,
102
- icon: 'arrow-forward',
103
- variant: 'primary',
104
- },
105
- ]}
106
- colors={colors}
107
- />
108
- </Animated.View>
109
- );
110
- };
111
-
112
- export default SignUpIdentityStep;
@@ -1,132 +0,0 @@
1
- import type React from 'react';
2
- import { useRef, useCallback, useEffect } from 'react';
3
- import { View, Text, Animated, type TextInput } from 'react-native';
4
- import { Ionicons } from '@expo/vector-icons';
5
- import GroupedPillButtons from '../../components/internal/GroupedPillButtons';
6
- import TextField from '../../components/internal/TextField';
7
-
8
- interface SignUpSecurityStepProps {
9
- styles: any;
10
- fadeAnim: Animated.Value;
11
- slideAnim: Animated.Value;
12
- colors: any;
13
- formData: any;
14
- passwordVisibility: { password: boolean; confirmPassword: boolean };
15
- updateField: (field: string, value: string) => void;
16
- validatePassword: (password: string) => boolean;
17
- validatePasswordsMatch: (password: string, confirmPassword: string) => boolean;
18
- prevStep: () => void;
19
- handleSecurityNext: () => void;
20
- setErrorMessage: (msg: string) => void;
21
- togglePasswordVisibility: () => void;
22
- PASSWORD_MIN_LENGTH: number;
23
- }
24
-
25
- const SignUpSecurityStep: React.FC<SignUpSecurityStepProps> = ({
26
- styles,
27
- fadeAnim,
28
- slideAnim,
29
- colors,
30
- formData,
31
- passwordVisibility,
32
- updateField,
33
- validatePassword,
34
- validatePasswordsMatch,
35
- prevStep,
36
- handleSecurityNext: parentHandleSecurityNext,
37
- setErrorMessage,
38
- togglePasswordVisibility,
39
- PASSWORD_MIN_LENGTH,
40
- }) => {
41
- const passwordRef = useRef<TextInput>(null);
42
- const confirmPasswordRef = useRef<TextInput>(null);
43
-
44
- // Focus the first invalid field on error or when step becomes active
45
- useEffect(() => {
46
- if (formData.password && typeof formData.password === 'string' && !validatePassword(formData.password)) {
47
- setTimeout(() => {
48
- passwordRef.current?.focus();
49
- }, 0);
50
- } else if (formData.confirmPassword && typeof formData.confirmPassword === 'string' && !validatePasswordsMatch(formData.password, formData.confirmPassword)) {
51
- setTimeout(() => {
52
- confirmPasswordRef.current?.focus();
53
- }, 0);
54
- }
55
- }, [formData.password, formData.confirmPassword, validatePassword, validatePasswordsMatch]);
56
-
57
- const handleSecurityNext = useCallback(() => {
58
- if (!formData.password || !validatePassword(formData.password)) {
59
- setTimeout(() => {
60
- passwordRef.current?.focus();
61
- }, 0);
62
- return;
63
- }
64
- if (!formData.confirmPassword || !validatePasswordsMatch(formData.password, formData.confirmPassword)) {
65
- setTimeout(() => {
66
- confirmPasswordRef.current?.focus();
67
- }, 0);
68
- return;
69
- }
70
- parentHandleSecurityNext();
71
- }, [formData.password, formData.confirmPassword, validatePassword, validatePasswordsMatch, parentHandleSecurityNext]);
72
-
73
- return (
74
- <Animated.View style={[
75
- styles.stepContainer,
76
- { opacity: fadeAnim, transform: [{ translateX: slideAnim }] }
77
- ]}>
78
- <View style={styles.modernHeader}>
79
- <Text style={[styles.stepTitle, { color: colors.text }]}>Secure your account</Text>
80
- </View>
81
- <TextField
82
- ref={passwordRef}
83
- leading={<Ionicons name="lock-closed-outline" size={24} color={colors.secondaryText} />}
84
- label="Password"
85
- value={formData.password}
86
- onChangeText={text => updateField('password', text)}
87
- secureTextEntry={!passwordVisibility.password}
88
- autoCapitalize="none"
89
- autoCorrect={false}
90
- testID="password-input"
91
- variant="filled"
92
- error={formData.password && typeof formData.password === 'string' && !validatePassword(formData.password) ? `Password must be at least ${PASSWORD_MIN_LENGTH} characters` : undefined}
93
- onSubmitEditing={() => confirmPasswordRef.current?.focus()}
94
- autoFocus
95
- />
96
- <Text style={[styles.passwordHint, { color: colors.secondaryText }]}>Password must be at least {PASSWORD_MIN_LENGTH} characters long</Text>
97
- <TextField
98
- ref={confirmPasswordRef}
99
- leading={<Ionicons name="lock-closed-outline" size={24} color={colors.secondaryText} />}
100
- label="Confirm Password"
101
- value={formData.confirmPassword}
102
- onChangeText={text => updateField('confirmPassword', text)}
103
- secureTextEntry={!passwordVisibility.confirmPassword}
104
- autoCapitalize="none"
105
- autoCorrect={false}
106
- testID="confirm-password-input"
107
- variant="filled"
108
- error={formData.confirmPassword && typeof formData.confirmPassword === 'string' && !validatePasswordsMatch(formData.password, formData.confirmPassword) ? 'Passwords do not match' : undefined}
109
- onSubmitEditing={handleSecurityNext}
110
- />
111
- <GroupedPillButtons
112
- buttons={[
113
- {
114
- text: 'Back',
115
- onPress: prevStep,
116
- icon: 'arrow-back',
117
- variant: 'transparent',
118
- },
119
- {
120
- text: 'Next',
121
- onPress: handleSecurityNext,
122
- icon: 'arrow-forward',
123
- variant: 'primary',
124
- },
125
- ]}
126
- colors={colors}
127
- />
128
- </Animated.View>
129
- );
130
- };
131
-
132
- export default SignUpSecurityStep;
@@ -1,66 +0,0 @@
1
- import type React from 'react';
2
- import { View, Text, Animated, TouchableOpacity } from 'react-native';
3
- import GroupedPillButtons from '../../components/internal/GroupedPillButtons';
4
-
5
- interface SignUpSummaryStepProps {
6
- styles: any;
7
- fadeAnim: Animated.Value;
8
- slideAnim: Animated.Value;
9
- colors: any;
10
- formData: any;
11
- isLoading: boolean;
12
- handleSignUp: () => void;
13
- prevStep: () => void;
14
- }
15
-
16
- const SignUpSummaryStep: React.FC<SignUpSummaryStepProps> = ({
17
- styles,
18
- fadeAnim,
19
- slideAnim,
20
- colors,
21
- formData,
22
- isLoading,
23
- handleSignUp,
24
- prevStep,
25
- }) => (
26
- <Animated.View style={[
27
- styles.stepContainer,
28
- { opacity: fadeAnim, transform: [{ translateX: slideAnim }] }
29
- ]}>
30
- <View style={styles.modernHeader}>
31
- <Text style={[styles.stepTitle, { color: colors.text }]}>Ready to join</Text>
32
- </View>
33
- <View style={styles.summaryContainer}>
34
- <View style={styles.summaryRow}>
35
- <Text style={[styles.summaryLabel, { color: colors.secondaryText }]}>Username:</Text>
36
- <Text style={[styles.summaryValue, { color: colors.text }]}>{formData.username}</Text>
37
- </View>
38
- <View style={styles.summaryRow}>
39
- <Text style={[styles.summaryLabel, { color: colors.secondaryText }]}>Email:</Text>
40
- <Text style={[styles.summaryValue, { color: colors.text }]}>{formData.email}</Text>
41
- </View>
42
- </View>
43
- <GroupedPillButtons
44
- buttons={[
45
- {
46
- text: 'Back',
47
- onPress: prevStep,
48
- icon: 'arrow-back',
49
- variant: 'transparent',
50
- },
51
- {
52
- text: 'Create Account',
53
- onPress: handleSignUp,
54
- icon: 'checkmark',
55
- variant: 'primary',
56
- disabled: isLoading,
57
- loading: isLoading,
58
- testID: 'signup-button',
59
- },
60
- ]}
61
- colors={colors}
62
- />
63
- </Animated.View>
64
- );
65
-
66
- export default SignUpSummaryStep;
@@ -1,52 +0,0 @@
1
- import type React from 'react';
2
- import { View, Text, Animated } from 'react-native';
3
- import HighFive from '../../../assets/illustrations/HighFive';
4
- import GroupedPillButtons from '../../components/internal/GroupedPillButtons';
5
-
6
- interface SignUpWelcomeStepProps {
7
- styles: any;
8
- fadeAnim: Animated.Value;
9
- slideAnim: Animated.Value;
10
- colors: any;
11
- nextStep: () => void;
12
- navigate: any;
13
- }
14
-
15
- const SignUpWelcomeStep: React.FC<SignUpWelcomeStepProps> = ({
16
- styles,
17
- fadeAnim,
18
- slideAnim,
19
- colors,
20
- nextStep,
21
- navigate,
22
- }) => (
23
- <Animated.View style={[
24
- styles.stepContainer,
25
- { opacity: fadeAnim, transform: [{ translateX: slideAnim }] }
26
- ]}>
27
- <HighFive width={100} height={100} />
28
- <View style={styles.modernHeader}>
29
- <Text style={[styles.modernTitle, { color: colors.text }]}>Welcome to Oxy</Text>
30
- <Text style={[styles.modernSubtitle, { color: colors.secondaryText }]}>We're excited to have you join us. Let's get your account set up in just a few easy steps.</Text>
31
- </View>
32
- <GroupedPillButtons
33
- buttons={[
34
- {
35
- text: 'Sign In',
36
- onPress: () => navigate('SignIn'),
37
- icon: 'log-in-outline',
38
- variant: 'transparent',
39
- },
40
- {
41
- text: 'Get Started',
42
- onPress: nextStep,
43
- icon: 'arrow-forward',
44
- variant: 'primary',
45
- },
46
- ]}
47
- colors={colors}
48
- />
49
- </Animated.View>
50
- );
51
-
52
- export default SignUpWelcomeStep;