@oxyhq/services 5.7.5 → 5.8.1

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 (239) hide show
  1. package/README.md +76 -76
  2. package/lib/commonjs/core/index.js +177 -102
  3. package/lib/commonjs/core/index.js.map +1 -1
  4. package/lib/commonjs/index.js +88 -29
  5. package/lib/commonjs/index.js.map +1 -1
  6. package/lib/commonjs/node/createAuth.js +585 -7
  7. package/lib/commonjs/node/createAuth.js.map +1 -1
  8. package/lib/commonjs/node/index.js +38 -1
  9. package/lib/commonjs/node/index.js.map +1 -1
  10. package/lib/commonjs/ui/components/Avatar.js +15 -6
  11. package/lib/commonjs/ui/components/Avatar.js.map +1 -1
  12. package/lib/commonjs/ui/components/GroupedItem.js +58 -13
  13. package/lib/commonjs/ui/components/GroupedItem.js.map +1 -1
  14. package/lib/commonjs/ui/components/GroupedSection.js +7 -1
  15. package/lib/commonjs/ui/components/GroupedSection.js.map +1 -1
  16. package/lib/commonjs/ui/components/Header.js +322 -0
  17. package/lib/commonjs/ui/components/Header.js.map +1 -0
  18. package/lib/commonjs/ui/components/OxyProvider.js +23 -7
  19. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  20. package/lib/commonjs/ui/components/index.js +7 -0
  21. package/lib/commonjs/ui/components/index.js.map +1 -1
  22. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js +1 -1
  23. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js.map +1 -1
  24. package/lib/commonjs/ui/components/internal/TextField.js +606 -546
  25. package/lib/commonjs/ui/components/internal/TextField.js.map +1 -1
  26. package/lib/commonjs/ui/components/internal/TextField.md +436 -0
  27. package/lib/commonjs/ui/context/OxyContext.js +122 -78
  28. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  29. package/lib/commonjs/ui/hooks/useSessionSocket.js +5 -2
  30. package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -1
  31. package/lib/commonjs/ui/navigation/OxyRouter.js +1 -1
  32. package/lib/commonjs/ui/navigation/OxyRouter.js.map +1 -1
  33. package/lib/commonjs/ui/screens/AccountCenterScreen.js +6 -6
  34. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  35. package/lib/commonjs/ui/screens/AccountManagementDemo.js +3 -3
  36. package/lib/commonjs/ui/screens/AccountManagementDemo.js.map +1 -1
  37. package/lib/commonjs/ui/screens/AccountOverviewScreen.js +241 -598
  38. package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
  39. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +1151 -406
  40. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  41. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +135 -237
  42. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  43. package/lib/commonjs/ui/screens/AppInfoScreen.js +246 -463
  44. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  45. package/lib/commonjs/ui/screens/FeedbackScreen.js +3 -3
  46. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  47. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +808 -650
  48. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
  49. package/lib/commonjs/ui/screens/RecoverAccountScreen.js +51 -72
  50. package/lib/commonjs/ui/screens/RecoverAccountScreen.js.map +1 -1
  51. package/lib/commonjs/ui/screens/SessionManagementScreen.js +11 -29
  52. package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
  53. package/lib/commonjs/ui/screens/SignInScreen.js +30 -303
  54. package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
  55. package/lib/commonjs/ui/screens/SignUpScreen.js +4 -4
  56. package/lib/commonjs/ui/screens/SignUpScreen.js.map +1 -1
  57. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js +19 -31
  58. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js.map +1 -1
  59. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js +7 -10
  60. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js.map +1 -1
  61. package/lib/commonjs/ui/screens/internal/SignUpIdentityStep.js +11 -5
  62. package/lib/commonjs/ui/screens/internal/SignUpIdentityStep.js.map +1 -1
  63. package/lib/commonjs/ui/screens/internal/SignUpSecurityStep.js +11 -4
  64. package/lib/commonjs/ui/screens/internal/SignUpSecurityStep.js.map +1 -1
  65. package/lib/commonjs/ui/stores/authStore.js +12 -0
  66. package/lib/commonjs/ui/stores/authStore.js.map +1 -1
  67. package/lib/commonjs/ui/styles/authStyles.js +337 -0
  68. package/lib/commonjs/ui/styles/authStyles.js.map +1 -0
  69. package/lib/commonjs/ui/styles/index.js +11 -0
  70. package/lib/commonjs/ui/styles/index.js.map +1 -1
  71. package/lib/module/core/index.js +177 -41
  72. package/lib/module/core/index.js.map +1 -1
  73. package/lib/module/index.js +26 -4
  74. package/lib/module/index.js.map +1 -1
  75. package/lib/module/node/createAuth.js +584 -7
  76. package/lib/module/node/createAuth.js.map +1 -1
  77. package/lib/module/node/index.js +7 -1
  78. package/lib/module/node/index.js.map +1 -1
  79. package/lib/module/ui/components/Avatar.js +15 -6
  80. package/lib/module/ui/components/Avatar.js.map +1 -1
  81. package/lib/module/ui/components/GroupedItem.js +59 -14
  82. package/lib/module/ui/components/GroupedItem.js.map +1 -1
  83. package/lib/module/ui/components/GroupedSection.js +7 -1
  84. package/lib/module/ui/components/GroupedSection.js.map +1 -1
  85. package/lib/module/ui/components/Header.js +317 -0
  86. package/lib/module/ui/components/Header.js.map +1 -0
  87. package/lib/module/ui/components/OxyProvider.js +25 -9
  88. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  89. package/lib/module/ui/components/index.js +1 -0
  90. package/lib/module/ui/components/index.js.map +1 -1
  91. package/lib/module/ui/components/internal/GroupedPillButtons.js +1 -1
  92. package/lib/module/ui/components/internal/GroupedPillButtons.js.map +1 -1
  93. package/lib/module/ui/components/internal/TextField.js +607 -547
  94. package/lib/module/ui/components/internal/TextField.js.map +1 -1
  95. package/lib/module/ui/components/internal/TextField.md +436 -0
  96. package/lib/module/ui/context/OxyContext.js +121 -77
  97. package/lib/module/ui/context/OxyContext.js.map +1 -1
  98. package/lib/module/ui/hooks/useSessionSocket.js +5 -2
  99. package/lib/module/ui/hooks/useSessionSocket.js.map +1 -1
  100. package/lib/module/ui/navigation/OxyRouter.js +1 -1
  101. package/lib/module/ui/navigation/OxyRouter.js.map +1 -1
  102. package/lib/module/ui/screens/AccountCenterScreen.js +6 -6
  103. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  104. package/lib/module/ui/screens/AccountManagementDemo.js +3 -3
  105. package/lib/module/ui/screens/AccountManagementDemo.js.map +1 -1
  106. package/lib/module/ui/screens/AccountOverviewScreen.js +242 -597
  107. package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
  108. package/lib/module/ui/screens/AccountSettingsScreen.js +1152 -407
  109. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  110. package/lib/module/ui/screens/AccountSwitcherScreen.js +135 -237
  111. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  112. package/lib/module/ui/screens/AppInfoScreen.js +248 -465
  113. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  114. package/lib/module/ui/screens/FeedbackScreen.js +3 -3
  115. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  116. package/lib/module/ui/screens/PaymentGatewayScreen.js +809 -651
  117. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
  118. package/lib/module/ui/screens/RecoverAccountScreen.js +53 -74
  119. package/lib/module/ui/screens/RecoverAccountScreen.js.map +1 -1
  120. package/lib/module/ui/screens/SessionManagementScreen.js +11 -29
  121. package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
  122. package/lib/module/ui/screens/SignInScreen.js +32 -305
  123. package/lib/module/ui/screens/SignInScreen.js.map +1 -1
  124. package/lib/module/ui/screens/SignUpScreen.js +5 -5
  125. package/lib/module/ui/screens/SignUpScreen.js.map +1 -1
  126. package/lib/module/ui/screens/internal/SignInPasswordStep.js +19 -31
  127. package/lib/module/ui/screens/internal/SignInPasswordStep.js.map +1 -1
  128. package/lib/module/ui/screens/internal/SignInUsernameStep.js +7 -10
  129. package/lib/module/ui/screens/internal/SignInUsernameStep.js.map +1 -1
  130. package/lib/module/ui/screens/internal/SignUpIdentityStep.js +11 -5
  131. package/lib/module/ui/screens/internal/SignUpIdentityStep.js.map +1 -1
  132. package/lib/module/ui/screens/internal/SignUpSecurityStep.js +11 -4
  133. package/lib/module/ui/screens/internal/SignUpSecurityStep.js.map +1 -1
  134. package/lib/module/ui/stores/authStore.js +12 -0
  135. package/lib/module/ui/stores/authStore.js.map +1 -1
  136. package/lib/module/ui/styles/authStyles.js +332 -0
  137. package/lib/module/ui/styles/authStyles.js.map +1 -0
  138. package/lib/module/ui/styles/index.js +1 -0
  139. package/lib/module/ui/styles/index.js.map +1 -1
  140. package/lib/typescript/core/index.d.ts +68 -24
  141. package/lib/typescript/core/index.d.ts.map +1 -1
  142. package/lib/typescript/index.d.ts +13 -3
  143. package/lib/typescript/index.d.ts.map +1 -1
  144. package/lib/typescript/node/createAuth.d.ts +112 -0
  145. package/lib/typescript/node/createAuth.d.ts.map +1 -1
  146. package/lib/typescript/node/index.d.ts +2 -0
  147. package/lib/typescript/node/index.d.ts.map +1 -1
  148. package/lib/typescript/ui/components/Avatar.d.ts.map +1 -1
  149. package/lib/typescript/ui/components/GroupedItem.d.ts +6 -0
  150. package/lib/typescript/ui/components/GroupedItem.d.ts.map +1 -1
  151. package/lib/typescript/ui/components/GroupedSection.d.ts +6 -0
  152. package/lib/typescript/ui/components/GroupedSection.d.ts.map +1 -1
  153. package/lib/typescript/ui/components/Header.d.ts +22 -0
  154. package/lib/typescript/ui/components/Header.d.ts.map +1 -0
  155. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  156. package/lib/typescript/ui/components/index.d.ts +1 -0
  157. package/lib/typescript/ui/components/index.d.ts.map +1 -1
  158. package/lib/typescript/ui/components/internal/TextField.d.ts +31 -16
  159. package/lib/typescript/ui/components/internal/TextField.d.ts.map +1 -1
  160. package/lib/typescript/ui/context/OxyContext.d.ts +5 -2
  161. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  162. package/lib/typescript/ui/hooks/useSessionSocket.d.ts.map +1 -1
  163. package/lib/typescript/ui/navigation/types.d.ts +9 -2
  164. package/lib/typescript/ui/navigation/types.d.ts.map +1 -1
  165. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
  166. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  167. package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
  168. package/lib/typescript/ui/screens/AppInfoScreen.d.ts.map +1 -1
  169. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  170. package/lib/typescript/ui/screens/RecoverAccountScreen.d.ts +5 -1
  171. package/lib/typescript/ui/screens/RecoverAccountScreen.d.ts.map +1 -1
  172. package/lib/typescript/ui/screens/SessionManagementScreen.d.ts.map +1 -1
  173. package/lib/typescript/ui/screens/SignInScreen.d.ts.map +1 -1
  174. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts +1 -1
  175. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts.map +1 -1
  176. package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts +0 -1
  177. package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts.map +1 -1
  178. package/lib/typescript/ui/screens/internal/SignUpIdentityStep.d.ts.map +1 -1
  179. package/lib/typescript/ui/screens/internal/SignUpSecurityStep.d.ts.map +1 -1
  180. package/lib/typescript/ui/stores/authStore.d.ts.map +1 -1
  181. package/lib/typescript/ui/styles/authStyles.d.ts +326 -0
  182. package/lib/typescript/ui/styles/authStyles.d.ts.map +1 -0
  183. package/lib/typescript/ui/styles/index.d.ts +1 -0
  184. package/lib/typescript/ui/styles/index.d.ts.map +1 -1
  185. package/package.json +1 -4
  186. package/src/core/index.ts +195 -41
  187. package/src/index.ts +72 -4
  188. package/src/node/createAuth.ts +623 -7
  189. package/src/node/index.ts +19 -1
  190. package/src/ui/components/Avatar.tsx +11 -5
  191. package/src/ui/components/GroupedItem.tsx +57 -9
  192. package/src/ui/components/GroupedSection.tsx +12 -0
  193. package/src/ui/components/Header.tsx +364 -0
  194. package/src/ui/components/OxyProvider.tsx +31 -15
  195. package/src/ui/components/index.ts +1 -0
  196. package/src/ui/components/internal/GroupedPillButtons.tsx +1 -1
  197. package/src/ui/components/internal/TextField.md +436 -0
  198. package/src/ui/components/internal/TextField.tsx +720 -620
  199. package/src/ui/context/OxyContext.tsx +150 -63
  200. package/src/ui/hooks/useSessionSocket.ts +5 -2
  201. package/src/ui/navigation/OxyRouter.tsx +1 -1
  202. package/src/ui/navigation/types.ts +10 -2
  203. package/src/ui/screens/AccountCenterScreen.tsx +5 -5
  204. package/src/ui/screens/AccountManagementDemo.tsx +9 -9
  205. package/src/ui/screens/AccountOverviewScreen.tsx +265 -414
  206. package/src/ui/screens/AccountSettingsScreen.tsx +1165 -403
  207. package/src/ui/screens/AccountSwitcherScreen.tsx +158 -202
  208. package/src/ui/screens/AppInfoScreen.tsx +270 -497
  209. package/src/ui/screens/FeedbackScreen.tsx +3 -3
  210. package/src/ui/screens/PaymentGatewayScreen.tsx +668 -365
  211. package/src/ui/screens/ProfileScreen.tsx +5 -5
  212. package/src/ui/screens/RecoverAccountScreen.tsx +46 -74
  213. package/src/ui/screens/SessionManagementScreen.tsx +14 -22
  214. package/src/ui/screens/SignInScreen.tsx +27 -294
  215. package/src/ui/screens/SignUpScreen.tsx +5 -5
  216. package/src/ui/screens/internal/SignInPasswordStep.tsx +11 -22
  217. package/src/ui/screens/internal/SignInUsernameStep.tsx +3 -10
  218. package/src/ui/screens/internal/SignUpIdentityStep.tsx +2 -5
  219. package/src/ui/screens/internal/SignUpSecurityStep.tsx +3 -4
  220. package/src/ui/stores/authStore.ts +12 -0
  221. package/src/ui/styles/authStyles.ts +352 -0
  222. package/src/ui/styles/index.ts +1 -0
  223. package/lib/commonjs/core/auth-manager.js +0 -440
  224. package/lib/commonjs/core/auth-manager.js.map +0 -1
  225. package/lib/commonjs/core/use-auth.js +0 -244
  226. package/lib/commonjs/core/use-auth.js.map +0 -1
  227. package/lib/module/core/auth-manager.js +0 -432
  228. package/lib/module/core/auth-manager.js.map +0 -1
  229. package/lib/module/core/use-auth.js +0 -235
  230. package/lib/module/core/use-auth.js.map +0 -1
  231. package/lib/typescript/core/auth-manager.d.ts +0 -136
  232. package/lib/typescript/core/auth-manager.d.ts.map +0 -1
  233. package/lib/typescript/core/use-auth.d.ts +0 -79
  234. package/lib/typescript/core/use-auth.d.ts.map +0 -1
  235. package/src/__tests__/middleware.test.ts +0 -105
  236. package/src/__tests__/setup.ts +0 -10
  237. package/src/__tests__/zero-config-auth.test.ts +0 -607
  238. package/src/core/auth-manager.ts +0 -500
  239. package/src/core/use-auth.tsx +0 -245
@@ -1,5 +1,6 @@
1
1
  import React, { useRef, useCallback, useEffect } from 'react';
2
2
  import { View, Text, Animated, TextInput } from 'react-native';
3
+ import { Ionicons } from '@expo/vector-icons';
3
4
  import GroupedPillButtons from '../../components/internal/GroupedPillButtons';
4
5
  import TextField from '../../components/internal/TextField';
5
6
 
@@ -78,7 +79,7 @@ const SignUpSecurityStep: React.FC<SignUpSecurityStepProps> = ({
78
79
  </View>
79
80
  <TextField
80
81
  ref={passwordRef}
81
- icon="lock-closed-outline"
82
+ leading={<Ionicons name="lock-closed-outline" size={24} color={colors.secondaryText} />}
82
83
  label="Password"
83
84
  value={formData.password}
84
85
  onChangeText={text => updateField('password', text)}
@@ -86,7 +87,6 @@ const SignUpSecurityStep: React.FC<SignUpSecurityStepProps> = ({
86
87
  autoCapitalize="none"
87
88
  autoCorrect={false}
88
89
  testID="password-input"
89
- colors={colors}
90
90
  variant="filled"
91
91
  error={formData.password && typeof formData.password === 'string' && !validatePassword(formData.password) ? `Password must be at least ${PASSWORD_MIN_LENGTH} characters` : undefined}
92
92
  onSubmitEditing={() => confirmPasswordRef.current?.focus()}
@@ -95,7 +95,7 @@ const SignUpSecurityStep: React.FC<SignUpSecurityStepProps> = ({
95
95
  <Text style={[styles.passwordHint, { color: colors.secondaryText }]}>Password must be at least {PASSWORD_MIN_LENGTH} characters long</Text>
96
96
  <TextField
97
97
  ref={confirmPasswordRef}
98
- icon="lock-closed-outline"
98
+ leading={<Ionicons name="lock-closed-outline" size={24} color={colors.secondaryText} />}
99
99
  label="Confirm Password"
100
100
  value={formData.confirmPassword}
101
101
  onChangeText={text => updateField('confirmPassword', text)}
@@ -103,7 +103,6 @@ const SignUpSecurityStep: React.FC<SignUpSecurityStepProps> = ({
103
103
  autoCapitalize="none"
104
104
  autoCorrect={false}
105
105
  testID="confirm-password-input"
106
- colors={colors}
107
106
  variant="filled"
108
107
  error={formData.confirmPassword && typeof formData.confirmPassword === 'string' && !validatePasswordsMatch(formData.password, formData.confirmPassword) ? 'Passwords do not match' : undefined}
109
108
  onSubmitEditing={handleSecurityNext}
@@ -26,19 +26,31 @@ export const useAuthStore = create<AuthState>((set: (state: Partial<AuthState>)
26
26
  fetchUser: async (oxyServices) => {
27
27
  set({ isLoading: true, error: null });
28
28
  try {
29
+ console.log('AuthStore: Fetching user data...');
29
30
  const user = await oxyServices.getCurrentUser();
31
+ console.log('AuthStore: Received user data:', {
32
+ hasUser: !!user,
33
+ userLinksMetadata: user?.linksMetadata,
34
+ userLinks: user?.links,
35
+ userWebsite: user?.website
36
+ });
30
37
  set({ user, isLoading: false, isAuthenticated: true });
31
38
  } catch (error: any) {
39
+ console.error('AuthStore: Error fetching user:', error);
32
40
  set({ error: error.message || 'Failed to fetch user', isLoading: false });
33
41
  }
34
42
  },
35
43
  updateUser: async (updates, oxyServices) => {
36
44
  set({ isLoading: true, error: null });
37
45
  try {
46
+ console.log('AuthStore: Updating user with:', updates);
38
47
  await oxyServices.updateProfile(updates);
48
+ console.log('AuthStore: Profile updated successfully');
39
49
  // Immediately fetch the latest user data after update
40
50
  await useAuthStore.getState().fetchUser(oxyServices);
51
+ console.log('AuthStore: User data refreshed');
41
52
  } catch (error: any) {
53
+ console.error('AuthStore: Error updating user:', error);
42
54
  set({ error: error.message || 'Failed to update user', isLoading: false });
43
55
  }
44
56
  },
@@ -0,0 +1,352 @@
1
+ import { Platform, StyleSheet, TextStyle } from 'react-native';
2
+ import { fontFamilies } from './fonts';
3
+
4
+ export interface AuthThemeColors {
5
+ text: string;
6
+ background: string;
7
+ inputBackground: string;
8
+ placeholder: string;
9
+ primary: string;
10
+ border: string;
11
+ error: string;
12
+ success: string;
13
+ warning: string;
14
+ secondaryText: string;
15
+ }
16
+
17
+ export const createAuthStyles = (colors: AuthThemeColors, theme: string) => StyleSheet.create({
18
+ // Container styles
19
+ container: {
20
+ flex: 1,
21
+ },
22
+ scrollContent: {
23
+ flexGrow: 1,
24
+ paddingHorizontal: 24,
25
+ paddingTop: 4,
26
+ paddingBottom: 20,
27
+ },
28
+ stepContainer: {
29
+ flex: 1,
30
+ justifyContent: 'flex-start',
31
+ alignItems: 'flex-start',
32
+ },
33
+
34
+ // Header styles
35
+ modernHeader: {
36
+ alignItems: 'flex-start',
37
+ width: '100%',
38
+ marginBottom: 24,
39
+ },
40
+ modernTitle: {
41
+ fontFamily: Platform.OS === 'web' ? 'Phudu' : 'Phudu-Bold',
42
+ fontWeight: Platform.OS === 'web' ? 'bold' : undefined,
43
+ fontSize: 62,
44
+ lineHeight: 74.4, // 62 * 1.2
45
+ marginBottom: 18,
46
+ textAlign: 'left',
47
+ letterSpacing: -1,
48
+ },
49
+ modernSubtitle: {
50
+ fontSize: 18,
51
+ lineHeight: 24,
52
+ textAlign: 'left',
53
+ opacity: 0.8,
54
+ },
55
+ welcomeTitle: {
56
+ fontFamily: Platform.OS === 'web' ? 'Phudu' : 'Phudu-Bold',
57
+ fontWeight: Platform.OS === 'web' ? 'bold' : undefined,
58
+ fontSize: 42,
59
+ lineHeight: 50.4, // 42 * 1.2
60
+ marginBottom: 12,
61
+ textAlign: 'left',
62
+ letterSpacing: -1,
63
+ },
64
+ stepTitle: {
65
+ fontFamily: Platform.OS === 'web' ? 'Phudu' : 'Phudu-Bold',
66
+ fontWeight: Platform.OS === 'web' ? 'bold' : undefined,
67
+ fontSize: 42,
68
+ lineHeight: 50.4, // 42 * 1.2
69
+ marginBottom: 12,
70
+ textAlign: 'left',
71
+ letterSpacing: -1,
72
+ },
73
+
74
+ // Info and error cards
75
+ modernInfoCard: {
76
+ flexDirection: 'row',
77
+ alignItems: 'center',
78
+ padding: 16,
79
+ borderRadius: 16,
80
+ marginBottom: 24,
81
+ gap: 12,
82
+ width: '100%',
83
+ },
84
+ modernInfoText: {
85
+ fontSize: 14,
86
+ flex: 1,
87
+ },
88
+ modernErrorCard: {
89
+ flexDirection: 'row',
90
+ alignItems: 'center',
91
+ padding: 16,
92
+ borderRadius: 16,
93
+ marginBottom: 24,
94
+ gap: 12,
95
+ width: '100%',
96
+ },
97
+ errorText: {
98
+ fontSize: 14,
99
+ fontWeight: '500',
100
+ flex: 1,
101
+ },
102
+
103
+ // Input styles
104
+ modernInputContainer: {
105
+ width: '100%',
106
+ marginBottom: 24,
107
+ },
108
+ inputWrapper: {
109
+ flexDirection: 'row',
110
+ alignItems: 'center',
111
+ height: 56,
112
+ borderRadius: 16,
113
+ paddingHorizontal: 20,
114
+ borderWidth: 2,
115
+ backgroundColor: colors.inputBackground,
116
+ },
117
+ premiumInputWrapper: {
118
+ flexDirection: 'row',
119
+ alignItems: 'center',
120
+ height: 56,
121
+ borderRadius: 16,
122
+ paddingHorizontal: 20,
123
+ borderWidth: 2,
124
+ backgroundColor: colors.inputBackground,
125
+ },
126
+ inputIcon: {
127
+ marginRight: 12,
128
+ },
129
+ inputContent: {
130
+ flex: 1,
131
+ },
132
+ modernInput: {
133
+ flex: 1,
134
+ fontSize: 16,
135
+ height: '100%',
136
+ },
137
+ passwordToggle: {
138
+ padding: 4,
139
+ },
140
+
141
+ // Validation styles
142
+ validationIndicator: {
143
+ marginLeft: 8,
144
+ },
145
+ validationSuccessCard: {
146
+ flexDirection: 'row',
147
+ alignItems: 'center',
148
+ padding: 12,
149
+ borderRadius: 12,
150
+ marginTop: 8,
151
+ gap: 8,
152
+ },
153
+ validationErrorCard: {
154
+ flexDirection: 'row',
155
+ alignItems: 'center',
156
+ padding: 12,
157
+ borderRadius: 12,
158
+ marginTop: 8,
159
+ gap: 8,
160
+ },
161
+ validationCard: {
162
+ flexDirection: 'row',
163
+ alignItems: 'center',
164
+ padding: 12,
165
+ borderRadius: 12,
166
+ marginTop: 8,
167
+ gap: 8,
168
+ },
169
+ validationText: {
170
+ fontSize: 12,
171
+ fontWeight: '500',
172
+ },
173
+ belowInputMessage: {
174
+ flexDirection: 'row',
175
+ alignItems: 'center',
176
+ marginTop: 4,
177
+ marginBottom: 0,
178
+ gap: 6,
179
+ },
180
+ belowInputText: {
181
+ fontSize: 13,
182
+ fontWeight: '500',
183
+ },
184
+
185
+ // Button styles
186
+ modernButton: {
187
+ flexDirection: 'row',
188
+ alignItems: 'center',
189
+ justifyContent: 'center',
190
+ paddingVertical: 18,
191
+ paddingHorizontal: 32,
192
+ borderRadius: 16,
193
+ marginVertical: 8,
194
+ shadowOffset: {
195
+ width: 0,
196
+ height: 4,
197
+ },
198
+ shadowOpacity: 0.3,
199
+ shadowRadius: 8,
200
+ elevation: 6,
201
+ gap: 8,
202
+ width: '100%',
203
+ },
204
+ modernButtonText: {
205
+ color: '#FFFFFF',
206
+ fontSize: 16,
207
+ fontWeight: '600',
208
+ letterSpacing: 0.5,
209
+ },
210
+ buttonIcon: {
211
+ marginLeft: 4,
212
+ },
213
+
214
+ // Label and link styles
215
+ modernLabel: {
216
+ fontSize: 12,
217
+ fontWeight: '500',
218
+ marginBottom: 2,
219
+ },
220
+ modernLinkText: {
221
+ fontSize: 14,
222
+ lineHeight: 20,
223
+ fontWeight: '600',
224
+ textDecorationLine: 'underline',
225
+ },
226
+ footerTextContainer: {
227
+ flexDirection: 'row',
228
+ justifyContent: 'center',
229
+ marginTop: 16,
230
+ },
231
+ footerText: {
232
+ fontSize: 15,
233
+ },
234
+
235
+ // User profile styles
236
+ modernUserProfileContainer: {
237
+ alignItems: 'flex-start',
238
+ paddingVertical: 24,
239
+ },
240
+ avatarContainer: {
241
+ position: 'relative',
242
+ marginBottom: 20,
243
+ },
244
+ modernUserAvatar: {
245
+ borderWidth: 4,
246
+ borderColor: 'rgba(209, 105, 229, 0.2)',
247
+ },
248
+ statusIndicator: {
249
+ position: 'absolute',
250
+ bottom: 4,
251
+ right: 4,
252
+ width: 20,
253
+ height: 20,
254
+ borderRadius: 10,
255
+ borderWidth: 3,
256
+ borderColor: '#FFFFFF',
257
+ },
258
+ modernUserDisplayName: {
259
+ fontFamily: Platform.OS === 'web' ? 'Phudu' : 'Phudu-Bold',
260
+ fontWeight: Platform.OS === 'web' ? 'bold' : undefined,
261
+ fontSize: 42,
262
+ marginBottom: 4,
263
+ textAlign: 'center',
264
+ letterSpacing: -0.5,
265
+ },
266
+ modernUsernameSubtext: {
267
+ fontSize: 20,
268
+ textAlign: 'left',
269
+ marginBottom: 16,
270
+ opacity: 0.7,
271
+ },
272
+ welcomeBackBadge: {
273
+ flexDirection: 'row',
274
+ alignItems: 'center',
275
+ paddingHorizontal: 12,
276
+ paddingVertical: 6,
277
+ borderRadius: 20,
278
+ gap: 6,
279
+ },
280
+ welcomeBackText: {
281
+ fontSize: 12,
282
+ fontWeight: '600',
283
+ textTransform: 'uppercase',
284
+ letterSpacing: 0.5,
285
+ },
286
+
287
+ // Navigation styles
288
+ modernNavigationButtons: {
289
+ flexDirection: 'row',
290
+ justifyContent: 'center',
291
+ marginTop: 16,
292
+ marginBottom: 8,
293
+ width: '100%',
294
+ gap: 8,
295
+ },
296
+ modernBackButton: {
297
+ flexDirection: 'row',
298
+ alignItems: 'center',
299
+ paddingVertical: 12,
300
+ paddingHorizontal: 20,
301
+ borderRadius: 12,
302
+ borderWidth: 1,
303
+ gap: 8,
304
+ },
305
+ modernBackButtonText: {
306
+ fontSize: 16,
307
+ fontWeight: '500',
308
+ },
309
+
310
+ // Security notice
311
+ securityNotice: {
312
+ flexDirection: 'row',
313
+ alignItems: 'center',
314
+ justifyContent: 'center',
315
+ marginTop: 20,
316
+ gap: 6,
317
+ },
318
+ securityText: {
319
+ fontSize: 12,
320
+ fontWeight: '500',
321
+ },
322
+
323
+ // Welcome image container
324
+ welcomeImageContainer: {
325
+ alignItems: 'center',
326
+ justifyContent: 'center',
327
+ marginVertical: 20,
328
+ },
329
+ welcomeText: {
330
+ fontSize: 18,
331
+ lineHeight: 24,
332
+ textAlign: 'left',
333
+ opacity: 0.8,
334
+ marginBottom: 24,
335
+ },
336
+
337
+ // Success styles
338
+ successCard: {
339
+ flexDirection: 'row',
340
+ alignItems: 'center',
341
+ padding: 16,
342
+ borderRadius: 16,
343
+ marginBottom: 24,
344
+ gap: 12,
345
+ width: '100%',
346
+ },
347
+ successText: {
348
+ fontSize: 14,
349
+ fontWeight: '500',
350
+ flex: 1,
351
+ },
352
+ });
@@ -1,2 +1,3 @@
1
1
  export * from './fonts';
2
2
  export * from './theme';
3
+ export * from './authStyles';