@onairos/react-native 3.7.1 → 3.7.3

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 (241) hide show
  1. package/lib/commonjs/api/index.js +219 -9
  2. package/lib/commonjs/assets/icons/spotify.png +0 -0
  3. package/lib/commonjs/assets/images/spotify.png +0 -0
  4. package/lib/commonjs/components/BodyText.js +27 -9
  5. package/lib/commonjs/components/BrandMark.js +111 -10
  6. package/lib/commonjs/components/CodeInput.js +116 -9
  7. package/lib/commonjs/components/EmailInput.js +30 -8
  8. package/lib/commonjs/components/GoogleButton.js +56 -9
  9. package/lib/commonjs/components/HeadingGroup.js +43 -9
  10. package/lib/commonjs/components/LLMDataInputModal.js +664 -14
  11. package/lib/commonjs/components/ModalHeader.js +99 -9
  12. package/lib/commonjs/components/ModalSheet.js +47 -9
  13. package/lib/commonjs/components/Onairos.js +380 -14
  14. package/lib/commonjs/components/OnairosButton.js +313 -13
  15. package/lib/commonjs/components/OnairosSignInButton.js +130 -12
  16. package/lib/commonjs/components/Overlay.js +465 -13
  17. package/lib/commonjs/components/PersonaImage.js +137 -10
  18. package/lib/commonjs/components/PersonaLoadingScreen.js +318 -12
  19. package/lib/commonjs/components/PersonalizationConsentScreen.js +467 -13
  20. package/lib/commonjs/components/PinCreationScreen.js +403 -12
  21. package/lib/commonjs/components/PinInput.js +464 -9
  22. package/lib/commonjs/components/PlatformConnectorsStep.js +1311 -23
  23. package/lib/commonjs/components/PlatformList.js +137 -10
  24. package/lib/commonjs/components/PlatformToggle.js +180 -9
  25. package/lib/commonjs/components/PrimaryButton.js +180 -10
  26. package/lib/commonjs/components/SignInMatchAnimation.js +197 -9
  27. package/lib/commonjs/components/SignInStep.js +345 -12
  28. package/lib/commonjs/components/UniversalOnboarding.js +2780 -30
  29. package/lib/commonjs/components/VerificationStep.js +176 -11
  30. package/lib/commonjs/components/WelcomeScreen.js +461 -22
  31. package/lib/commonjs/components/icons/Basicproficon.js +37 -8
  32. package/lib/commonjs/components/icons/Basicprofile.js +21 -8
  33. package/lib/commonjs/components/icons/Checkbox.js +21 -8
  34. package/lib/commonjs/components/icons/Checkmark.js +27 -8
  35. package/lib/commonjs/components/icons/Contentanalysis.js +21 -8
  36. package/lib/commonjs/components/icons/Contenticon.js +39 -8
  37. package/lib/commonjs/components/icons/EnochE.js +41 -8
  38. package/lib/commonjs/components/icons/Personalityicon.js +30 -8
  39. package/lib/commonjs/components/icons/Personalityprofile.js +21 -8
  40. package/lib/commonjs/components/icons/Personalitytraits.js +21 -8
  41. package/lib/commonjs/components/icons/Userpreferences.js +21 -8
  42. package/lib/commonjs/components/icons/index.js +84 -17
  43. package/lib/commonjs/components/onboarding/OAuthWebView.js +1754 -18
  44. package/lib/commonjs/components/onboarding/OnboardingHeader.js +74 -10
  45. package/lib/commonjs/components/onboarding/PinInput.js +283 -10
  46. package/lib/commonjs/components/onboarding/PlatformConnector.js +249 -11
  47. package/lib/commonjs/config/PLATFORM_APIS.md +849 -0
  48. package/lib/commonjs/config/api.js +56 -7
  49. package/lib/commonjs/constants/index.js +120 -7
  50. package/lib/commonjs/context/AuthContext.js +345 -10
  51. package/lib/commonjs/hooks/useConnectedAccounts.js +111 -9
  52. package/lib/commonjs/hooks/useConnections.js +102 -8
  53. package/lib/commonjs/hooks/useCredentials.js +178 -10
  54. package/lib/commonjs/hooks/useUserConnections.js +148 -10
  55. package/lib/commonjs/index.js +439 -34
  56. package/lib/commonjs/services/apiClient.js +298 -8
  57. package/lib/commonjs/services/biometricPinService.js +180 -8
  58. package/lib/commonjs/services/chatGPTConversationExtractor.js +155 -8
  59. package/lib/commonjs/services/chatGPTConversationService.js +275 -9
  60. package/lib/commonjs/services/claudeConversationExtractor.js +103 -8
  61. package/lib/commonjs/services/claudeConversationService.js +158 -9
  62. package/lib/commonjs/services/connectedAccountsService.js +310 -10
  63. package/lib/commonjs/services/googleAuthService.js +252 -11
  64. package/lib/commonjs/services/hingeDataExtractor.js +105 -8
  65. package/lib/commonjs/services/hingeDataService.js +150 -9
  66. package/lib/commonjs/services/imageCompressionService.js +260 -7
  67. package/lib/commonjs/services/instagramDataExtractor.js +126 -8
  68. package/lib/commonjs/services/instagramDataService.js +163 -9
  69. package/lib/commonjs/services/jwtStorageService.js +276 -7
  70. package/lib/commonjs/services/linkedinDOMExtractor.js +245 -7
  71. package/lib/commonjs/services/linkedinProfileService.js +222 -9
  72. package/lib/commonjs/services/linkedinScrapingService.js +230 -8
  73. package/lib/commonjs/services/llmDataStorage.js +294 -8
  74. package/lib/commonjs/services/mobileTrainingService.js +186 -8
  75. package/lib/commonjs/services/netflixDataExtractor.js +120 -8
  76. package/lib/commonjs/services/netflixDataService.js +198 -9
  77. package/lib/commonjs/services/pinEncryptionService.js +84 -8
  78. package/lib/commonjs/services/pinStorageUtils.js +105 -7
  79. package/lib/commonjs/services/platformAuthService.js +1484 -12
  80. package/lib/commonjs/services/sephoraDataExtractor.js +140 -8
  81. package/lib/commonjs/services/sephoraDataService.js +200 -9
  82. package/lib/commonjs/services/spotifyDataExtractor.js +148 -8
  83. package/lib/commonjs/services/spotifyDataService.js +241 -9
  84. package/lib/commonjs/services/storageService.js +404 -8
  85. package/lib/commonjs/services/telegramDataExtractor.js +115 -8
  86. package/lib/commonjs/services/telegramDataService.js +499 -9
  87. package/lib/commonjs/services/trainingApiHelpers.js +73 -7
  88. package/lib/commonjs/services/userConnectionsService.js +340 -10
  89. package/lib/commonjs/services/youtubeMigrationService.js +416 -10
  90. package/lib/commonjs/theme/index.js +250 -7
  91. package/lib/commonjs/types/ambient.d.js +2 -1
  92. package/lib/commonjs/types/declarations.d.js +2 -1
  93. package/lib/commonjs/types/index.js +6 -1
  94. package/lib/commonjs/types/node-fix.d.js +2 -1
  95. package/lib/commonjs/types/node-override.d.js +2 -1
  96. package/lib/commonjs/types/opacity.d.js +2 -1
  97. package/lib/commonjs/types.js +14 -1
  98. package/lib/commonjs/utils/Portal.js +98 -8
  99. package/lib/commonjs/utils/api.js +130 -9
  100. package/lib/commonjs/utils/assetRegistry.js +210 -35
  101. package/lib/commonjs/utils/auth.js +112 -9
  102. package/lib/commonjs/utils/connectorTests.js +613 -29
  103. package/lib/commonjs/utils/crypto.js +62 -8
  104. package/lib/commonjs/utils/debugHelper.js +64 -1
  105. package/lib/commonjs/utils/encryption.js +76 -7
  106. package/lib/commonjs/utils/eventUtils.js +288 -1
  107. package/lib/commonjs/utils/haptics.js +66 -9
  108. package/lib/commonjs/utils/imagePreloader.js +6 -1
  109. package/lib/commonjs/utils/networkDiagnostics.js +226 -8
  110. package/lib/commonjs/utils/onairosApi.js +350 -9
  111. package/lib/commonjs/utils/programmaticFlow.js +117 -9
  112. package/lib/commonjs/utils/retryHelper.js +220 -1
  113. package/lib/commonjs/utils/secureStorage.js +349 -10
  114. package/lib/commonjs/utils/webviewScripts/chatgpt.js +551 -1
  115. package/lib/commonjs/utils/webviewScripts/claude.js +376 -1
  116. package/lib/commonjs/utils/webviewScripts/hinge.js +411 -1
  117. package/lib/commonjs/utils/webviewScripts/index.js +698 -15
  118. package/lib/commonjs/utils/webviewScripts/instagram.js +454 -1
  119. package/lib/commonjs/utils/webviewScripts/linkedin.js +880 -1
  120. package/lib/commonjs/utils/webviewScripts/netflix.js +382 -1
  121. package/lib/commonjs/utils/webviewScripts/sephora.js +516 -1
  122. package/lib/commonjs/utils/webviewScripts/spotify.js +419 -1
  123. package/lib/commonjs/utils/webviewScripts/telegram.js +678 -1
  124. package/lib/module/api/index.js +211 -1
  125. package/lib/module/assets/icons/spotify.png +0 -0
  126. package/lib/module/assets/images/spotify.png +0 -0
  127. package/lib/module/components/BodyText.js +20 -1
  128. package/lib/module/components/BrandMark.js +104 -1
  129. package/lib/module/components/CodeInput.js +109 -1
  130. package/lib/module/components/EmailInput.js +23 -1
  131. package/lib/module/components/GoogleButton.js +49 -1
  132. package/lib/module/components/HeadingGroup.js +36 -1
  133. package/lib/module/components/LLMDataInputModal.js +656 -7
  134. package/lib/module/components/ModalHeader.js +92 -1
  135. package/lib/module/components/ModalSheet.js +39 -1
  136. package/lib/module/components/Onairos.js +373 -1
  137. package/lib/module/components/OnairosButton.js +305 -1
  138. package/lib/module/components/OnairosSignInButton.js +121 -1
  139. package/lib/module/components/Overlay.js +456 -1
  140. package/lib/module/components/PersonaImage.js +129 -1
  141. package/lib/module/components/PersonaLoadingScreen.js +310 -1
  142. package/lib/module/components/PersonalizationConsentScreen.js +460 -1
  143. package/lib/module/components/PinCreationScreen.js +396 -1
  144. package/lib/module/components/PinInput.js +456 -1
  145. package/lib/module/components/PlatformConnectorsStep.js +1302 -6
  146. package/lib/module/components/PlatformList.js +129 -1
  147. package/lib/module/components/PlatformToggle.js +173 -1
  148. package/lib/module/components/PrimaryButton.js +172 -1
  149. package/lib/module/components/SignInMatchAnimation.js +189 -1
  150. package/lib/module/components/SignInStep.js +338 -1
  151. package/lib/module/components/UniversalOnboarding.js +2770 -1
  152. package/lib/module/components/VerificationStep.js +168 -1
  153. package/lib/module/components/WelcomeScreen.js +453 -1
  154. package/lib/module/components/icons/Basicproficon.js +30 -1
  155. package/lib/module/components/icons/Basicprofile.js +14 -1
  156. package/lib/module/components/icons/Checkbox.js +14 -1
  157. package/lib/module/components/icons/Checkmark.js +20 -1
  158. package/lib/module/components/icons/Contentanalysis.js +14 -1
  159. package/lib/module/components/icons/Contenticon.js +32 -1
  160. package/lib/module/components/icons/EnochE.js +34 -1
  161. package/lib/module/components/icons/Personalityicon.js +23 -1
  162. package/lib/module/components/icons/Personalityprofile.js +14 -1
  163. package/lib/module/components/icons/Personalitytraits.js +14 -1
  164. package/lib/module/components/icons/Userpreferences.js +14 -1
  165. package/lib/module/components/icons/index.js +13 -1
  166. package/lib/module/components/onboarding/OAuthWebView.js +1746 -1
  167. package/lib/module/components/onboarding/OnboardingHeader.js +66 -1
  168. package/lib/module/components/onboarding/PinInput.js +274 -1
  169. package/lib/module/components/onboarding/PlatformConnector.js +240 -1
  170. package/lib/module/config/PLATFORM_APIS.md +849 -0
  171. package/lib/module/config/api.js +47 -1
  172. package/lib/module/constants/index.js +114 -1
  173. package/lib/module/context/AuthContext.js +335 -1
  174. package/lib/module/hooks/useConnectedAccounts.js +106 -1
  175. package/lib/module/hooks/useConnections.js +95 -1
  176. package/lib/module/hooks/useCredentials.js +171 -6
  177. package/lib/module/hooks/useUserConnections.js +140 -1
  178. package/lib/module/index.js +172 -1
  179. package/lib/module/services/apiClient.js +295 -1
  180. package/lib/module/services/biometricPinService.js +169 -1
  181. package/lib/module/services/chatGPTConversationExtractor.js +149 -1
  182. package/lib/module/services/chatGPTConversationService.js +268 -1
  183. package/lib/module/services/claudeConversationExtractor.js +97 -1
  184. package/lib/module/services/claudeConversationService.js +151 -1
  185. package/lib/module/services/connectedAccountsService.js +293 -1
  186. package/lib/module/services/googleAuthService.js +241 -1
  187. package/lib/module/services/hingeDataExtractor.js +99 -1
  188. package/lib/module/services/hingeDataService.js +143 -1
  189. package/lib/module/services/imageCompressionService.js +250 -1
  190. package/lib/module/services/instagramDataExtractor.js +120 -1
  191. package/lib/module/services/instagramDataService.js +156 -1
  192. package/lib/module/services/jwtStorageService.js +257 -1
  193. package/lib/module/services/linkedinDOMExtractor.js +234 -1
  194. package/lib/module/services/linkedinProfileService.js +210 -1
  195. package/lib/module/services/linkedinScrapingService.js +219 -1
  196. package/lib/module/services/llmDataStorage.js +277 -1
  197. package/lib/module/services/mobileTrainingService.js +173 -1
  198. package/lib/module/services/netflixDataExtractor.js +114 -1
  199. package/lib/module/services/netflixDataService.js +191 -1
  200. package/lib/module/services/pinEncryptionService.js +74 -6
  201. package/lib/module/services/pinStorageUtils.js +93 -1
  202. package/lib/module/services/platformAuthService.js +1461 -1
  203. package/lib/module/services/sephoraDataExtractor.js +134 -1
  204. package/lib/module/services/sephoraDataService.js +193 -1
  205. package/lib/module/services/spotifyDataExtractor.js +142 -1
  206. package/lib/module/services/spotifyDataService.js +234 -1
  207. package/lib/module/services/storageService.js +383 -1
  208. package/lib/module/services/telegramDataExtractor.js +109 -1
  209. package/lib/module/services/telegramDataService.js +493 -1
  210. package/lib/module/services/trainingApiHelpers.js +67 -1
  211. package/lib/module/services/userConnectionsService.js +329 -1
  212. package/lib/module/services/youtubeMigrationService.js +405 -1
  213. package/lib/module/theme/index.js +245 -1
  214. package/lib/module/types.js +10 -1
  215. package/lib/module/utils/Portal.js +90 -1
  216. package/lib/module/utils/api.js +118 -1
  217. package/lib/module/utils/assetRegistry.js +200 -34
  218. package/lib/module/utils/auth.js +100 -1
  219. package/lib/module/utils/connectorTests.js +600 -27
  220. package/lib/module/utils/crypto.js +54 -1
  221. package/lib/module/utils/debugHelper.js +54 -1
  222. package/lib/module/utils/encryption.js +67 -1
  223. package/lib/module/utils/eventUtils.js +270 -1
  224. package/lib/module/utils/haptics.js +59 -8
  225. package/lib/module/utils/imagePreloader.js +3 -1
  226. package/lib/module/utils/networkDiagnostics.js +217 -1
  227. package/lib/module/utils/onairosApi.js +333 -1
  228. package/lib/module/utils/programmaticFlow.js +111 -1
  229. package/lib/module/utils/retryHelper.js +211 -1
  230. package/lib/module/utils/secureStorage.js +330 -6
  231. package/lib/module/utils/webviewScripts/chatgpt.js +545 -1
  232. package/lib/module/utils/webviewScripts/claude.js +370 -1
  233. package/lib/module/utils/webviewScripts/hinge.js +405 -1
  234. package/lib/module/utils/webviewScripts/index.js +434 -1
  235. package/lib/module/utils/webviewScripts/instagram.js +448 -1
  236. package/lib/module/utils/webviewScripts/linkedin.js +874 -1
  237. package/lib/module/utils/webviewScripts/netflix.js +376 -1
  238. package/lib/module/utils/webviewScripts/sephora.js +510 -1
  239. package/lib/module/utils/webviewScripts/spotify.js +413 -1
  240. package/lib/module/utils/webviewScripts/telegram.js +672 -1
  241. package/package.json +2 -2
@@ -1 +1,189 @@
1
- import React,{useState,useEffect}from'react';function _0x2199(_0x5d4a34,_0x21996d){_0x5d4a34=_0x5d4a34-0x0;const _0x34639f=_0x5d4a();let _0x4a53cb=_0x34639f[_0x5d4a34];return _0x4a53cb;}import{View,Text,StyleSheet,Modal,ActivityIndicator,Animated,Dimensions,TouchableOpacity}from'react-native';import _0x2bb179 from'react-native-linear-gradient';const {width,height}=Dimensions[_0x2199(0x0)]('window'),SignInMatchAnimation=({email:_0x2a53ba,visible:_0x4532cb,onComplete:_0x540c9c})=>{const _0x11a6b5={'OCupn':_0x2199(0x1),'sfYxv':function(_0x414d45,_0x52df76){return _0x414d45*_0x52df76;},'iPRrN':function(_0xcfbe57,_0xc5493){return _0xcfbe57(_0xc5493);},'YqvJw':function(_0xf056c2,_0x4dc952,_0x47c595){return _0xf056c2(_0x4dc952,_0x47c595);},'eOBHg':function(_0x4da78b,_0x3835f9){return _0x4da78b===_0x3835f9;},'LPkwf':_0x2199(0x2),'yHDyY':_0x2199(0x3),'ALFkY':function(_0x2177ad,_0x31cb0a){return _0x2177ad(_0x31cb0a);},'FRskX':_0x2199(0x4),'aNMaD':function(_0x19809a){return _0x19809a();},'weHiX':'searching','ZUmeC':function(_0x241d47,_0x3a1d94,_0x4216f7){return _0x241d47(_0x3a1d94,_0x4216f7);},'nnlKF':_0x2199(0x5),'lKiDM':function(_0x31be08,_0xc6d9ea){return _0x31be08===_0xc6d9ea;},'RKfRZ':_0x2199(0x6),'lKMpf':_0x2199(0x7),'OobXj':_0x2199(0x8),'Bpbfs':_0x2199(0x9),'DxFWF':_0x2199(0xa),'ibpuk':_0x2199(0xb),'AMWfu':_0x2199(0xc),'McVRV':_0x2199(0xd),'XDSZg':_0x2199(0xe)},[_0x345528,_0xb9b242]=_0x11a6b5[_0x2199(0xf)](useState,_0x11a6b5[_0x2199(0x10)]),[_0x531d71,_0x5179c7]=useState(0x0),_0x1c1ace=useState(new Animated['Value'](0x0))[0x0],_0x542f01=_0x11a6b5[_0x2199(0x11)](useState,new Animated[(_0x2199(0x12))](0.9))[0x0];_0x11a6b5[_0x2199(0x13)](useEffect,()=>{const _0x31e833={'zJSTY':function(_0x5e8f6b,_0x505aa5){return _0x5e8f6b(_0x505aa5);},'HFZXo':_0x11a6b5[_0x2199(0x14)],'HCqRt':function(_0x2f4d15,_0x49bc27){return _0x2f4d15+_0x49bc27;},'FrxcY':function(_0x3961e3,_0x475af2){return _0x11a6b5[_0x2199(0x15)](_0x3961e3,_0x475af2);},'BhtHM':function(_0x2c71ae,_0x241f35){return _0x11a6b5['iPRrN'](_0x2c71ae,_0x241f35);},'FUKde':function(_0x959f79,_0x1117f0,_0x1c25a8){return _0x11a6b5['YqvJw'](_0x959f79,_0x1117f0,_0x1c25a8);},'prUBc':function(_0x4a922c,_0x1e201f){return _0x11a6b5['eOBHg'](_0x4a922c,_0x1e201f);},'AgYHn':_0x11a6b5[_0x2199(0x16)],'qycgc':_0x11a6b5[_0x2199(0x17)],'ONchF':function(_0x3cc9ae,_0x2b5059){return _0x3cc9ae*_0x2b5059;},'TWYxs':function(_0xfc487d,_0x1a88da){return _0x11a6b5['ALFkY'](_0xfc487d,_0x1a88da);},'iysAr':function(_0x40af81,_0x4ced53){return _0x11a6b5[_0x2199(0x11)](_0x40af81,_0x4ced53);},'sPTGj':function(_0x598802,_0x40487a,_0xdfef4){return _0x598802(_0x40487a,_0xdfef4);}};if(_0x4532cb){if(_0x11a6b5[_0x2199(0x18)](_0x11a6b5[_0x2199(0x19)],_0x2199(0x4)))Animated[_0x2199(0x1a)]([Animated[_0x2199(0x1b)](_0x1c1ace,{'toValue':0x1,'duration':0x258,'useNativeDriver':!![]}),Animated['timing'](_0x542f01,{'toValue':0x1,'duration':0x258,'useNativeDriver':!![]})])[_0x2199(0x1c)](),setTimeout(()=>{const _0x51704b=Math['floor'](_0x31e833[_0x2199(0x1d)](Math[_0x2199(0x1e)](),0x6))+0x3;_0x31e833['TWYxs'](_0x5179c7,_0x51704b),_0x31e833[_0x2199(0x1f)](_0xb9b242,_0x2199(0x20)),_0x31e833[_0x2199(0x21)](setTimeout,()=>{const _0x487e1c={'Ncecb':function(_0xf5789d,_0x4461af){return _0x31e833['zJSTY'](_0xf5789d,_0x4461af);},'NIHDn':_0x31e833[_0x2199(0x22)],'pCbCg':function(_0x3012bc,_0x4778d4){return _0x31e833['HCqRt'](_0x3012bc,_0x4778d4);},'GdrPi':function(_0x37c349,_0x5c3568){return _0x31e833[_0x2199(0x23)](_0x37c349,_0x5c3568);},'qobmw':function(_0x2db702,_0x17ae40){return _0x31e833[_0x2199(0x24)](_0x2db702,_0x17ae40);},'QjXTZ':function(_0x767aa8,_0x5fbada,_0x3346ca){return _0x31e833[_0x2199(0x25)](_0x767aa8,_0x5fbada,_0x3346ca);}};_0x31e833[_0x2199(0x26)](_0x31e833[_0x2199(0x27)],_0x31e833[_0x2199(0x28)])?(Animated[_0x2199(0x1a)]([Animated[_0x2199(0x1b)](_0x18aef5,{'toValue':0x1,'duration':0x258,'useNativeDriver':!![]}),Animated[_0x2199(0x1b)](_0x5d218b,{'toValue':0x1,'duration':0x258,'useNativeDriver':!![]})])[_0x2199(0x1c)](),_0x487e1c[_0x2199(0x29)](_0x1640ef,()=>{const _0x43a0f8={'jGfqN':function(_0x137953,_0x54c05d){return _0x487e1c['Ncecb'](_0x137953,_0x54c05d);},'sRHPG':_0x487e1c[_0x2199(0x2a)]},_0x3819e4=_0x487e1c['pCbCg'](_0x5ce2a4[_0x2199(0x2b)](_0x487e1c[_0x2199(0x2c)](_0x3010cd[_0x2199(0x1e)](),0x6)),0x3);_0x591d45(_0x3819e4),_0x487e1c[_0x2199(0x2d)](_0x16ca0b,_0x2199(0x20)),_0x12f437(()=>{_0x43a0f8['jGfqN'](_0x619de7,_0x43a0f8[_0x2199(0x2e)]);},0xbb8);},0x9c4)):_0xb9b242(_0x31e833['HFZXo']);},0xbb8);},0x9c4);else{const _0x2a57e1={'yrgai':function(_0xad18ee){return _0xad18ee();}};Animated[_0x2199(0x1a)]([Animated[_0x2199(0x1b)](_0x2d795f,{'toValue':0x0,'duration':0x190,'useNativeDriver':!![]}),Animated[_0x2199(0x1b)](_0x51aaf7,{'toValue':0.9,'duration':0x190,'useNativeDriver':!![]})])[_0x2199(0x1c)](()=>{_0x2a57e1[_0x2199(0x2f)](_0x2a3114);});}}},[_0x4532cb,_0x1c1ace,_0x542f01]);const _0x4fd800=()=>{Animated[_0x2199(0x1a)]([Animated['timing'](_0x1c1ace,{'toValue':0x0,'duration':0x190,'useNativeDriver':!![]}),Animated[_0x2199(0x1b)](_0x542f01,{'toValue':0.9,'duration':0x190,'useNativeDriver':!![]})])[_0x2199(0x1c)](()=>{_0x11a6b5[_0x2199(0x30)](_0x540c9c);});};if(!_0x4532cb)return null;return React[_0x2199(0x31)](Modal,{'visible':_0x4532cb,'transparent':!![],'animationType':_0x11a6b5['nnlKF']},React[_0x2199(0x31)](View,{'style':styles[_0x2199(0x32)]},React['createElement'](Animated[_0x2199(0x33)],{'style':[styles[_0x2199(0x34)],{'opacity':_0x1c1ace,'transform':[{'scale':_0x542f01}]}]},_0x11a6b5['lKiDM'](_0x345528,_0x11a6b5[_0x2199(0x10)])&&React['createElement'](React[_0x2199(0x35)],null,React[_0x2199(0x31)](Text,{'style':styles['title']},_0x2199(0x36)),React[_0x2199(0x31)](ActivityIndicator,{'size':_0x11a6b5[_0x2199(0x37)],'color':_0x11a6b5[_0x2199(0x38)],'style':styles[_0x2199(0x39)]}),React[_0x2199(0x31)](Text,{'style':styles[_0x2199(0x3a)]},_0x11a6b5[_0x2199(0x3b)])),_0x11a6b5[_0x2199(0x18)](_0x345528,_0x2199(0x20))&&React[_0x2199(0x31)](React[_0x2199(0x35)],null,React[_0x2199(0x31)](Text,{'style':styles['title']},_0x11a6b5[_0x2199(0x3c)]),React['createElement'](View,{'style':styles[_0x2199(0x3d)]},React[_0x2199(0x31)](Text,{'style':styles[_0x2199(0x3e)]},_0x531d71)),React[_0x2199(0x31)](Text,{'style':styles[_0x2199(0x3a)]},'We\x27ve\x20found\x20',_0x531d71,_0x11a6b5['DxFWF']),React[_0x2199(0x31)](Text,{'style':styles[_0x2199(0x3f)]},_0x11a6b5[_0x2199(0x40)])),_0x11a6b5[_0x2199(0x18)](_0x345528,_0x11a6b5[_0x2199(0x14)])&&React[_0x2199(0x31)](React[_0x2199(0x35)],null,React[_0x2199(0x31)](Text,{'style':styles[_0x2199(0x41)]},'Welcome\x20to\x20Enoch!'),React['createElement'](Text,{'style':styles[_0x2199(0x3a)]},_0x2199(0x42),_0x2a53ba[_0x2199(0x43)]('@')[0x0],_0x11a6b5[_0x2199(0x44)]),React[_0x2199(0x31)](TouchableOpacity,{'style':styles[_0x2199(0x45)],'onPress':_0x4fd800},React[_0x2199(0x31)](_0x2bb179,{'colors':[_0x11a6b5[_0x2199(0x46)],_0x11a6b5[_0x2199(0x38)],'#DDB957'],'start':{'x':0x0,'y':0x0},'end':{'x':0x1,'y':0x0},'style':styles[_0x2199(0x47)]},React[_0x2199(0x31)](Text,{'style':styles[_0x2199(0x48)]},_0x11a6b5[_0x2199(0x49)])))))));},styles=StyleSheet[_0x2199(0x4a)]({'container':{'flex':0x1,'backgroundColor':_0x2199(0x4b),'justifyContent':'center','alignItems':'center'},'content':{'width':width*0.85,'backgroundColor':_0x2199(0x4c),'borderRadius':0x14,'padding':0x18,'alignItems':_0x2199(0x4d),'shadowColor':_0x2199(0x4e),'shadowOffset':{'width':0x0,'height':0x4},'shadowOpacity':0.3,'shadowRadius':0x8,'elevation':0xa},'title':{'fontSize':0x18,'fontWeight':_0x2199(0x4f),'color':'#333','marginBottom':0x14,'textAlign':_0x2199(0x4d)},'loader':{'marginVertical':0x18},'message':{'fontSize':0x12,'color':_0x2199(0x50),'textAlign':_0x2199(0x4d),'marginBottom':0x10,'lineHeight':0x18},'subMessage':{'fontSize':0x10,'color':_0x2199(0x51),'textAlign':_0x2199(0x4d),'marginTop':0x8},'matchCircle':{'width':0x64,'height':0x64,'borderRadius':0x32,'backgroundColor':'#E9C46A','justifyContent':'center','alignItems':_0x2199(0x4d),'marginVertical':0x14},'matchCount':{'fontSize':0x28,'fontWeight':_0x2199(0x52),'color':_0x2199(0x4c)},'button':{'width':_0x2199(0x53),'marginTop':0x18,'borderRadius':0x8,'overflow':'hidden'},'gradientButton':{'paddingVertical':0xe,'alignItems':_0x2199(0x4d),'justifyContent':_0x2199(0x4d)},'buttonText':{'color':_0x2199(0x54),'fontSize':0x10,'fontWeight':_0x2199(0x4f)}});export default SignInMatchAnimation;function _0x5d4a(){const _0x310c70=['get','complete','BVOqC','VPFQM','TicCg','none','large','#E9C46A','Searching\x20for\x20potential\x20connections\x20based\x20on\x20your\x20profile...','Matches\x20Found!','\x20potential\x20connections\x20for\x20you!','Complete\x20your\x20profile\x20to\x20see\x20who\x20they\x20are.','@...','#f5e7c1','Continue','iPRrN','weHiX','ALFkY','Value','ZUmeC','OCupn','sfYxv','LPkwf','yHDyY','eOBHg','FRskX','parallel','timing','start','ONchF','random','iysAr','found','sPTGj','HFZXo','FrxcY','BhtHM','FUKde','prUBc','AgYHn','qycgc','QjXTZ','NIHDn','floor','GdrPi','qobmw','sRHPG','yrgai','aNMaD','createElement','container','View','content','Fragment','Finding\x20Your\x20Matches','RKfRZ','lKMpf','loader','message','OobXj','Bpbfs','matchCircle','matchCount','subMessage','ibpuk','title','We\x27ll\x20send\x20match\x20notifications\x20to\x20','split','AMWfu','button','McVRV','gradientButton','buttonText','XDSZg','create','rgba(0,0,0,0.7)','#FFFFFF','center','#000','600','#555','#777','bold','100%','#333'];_0x5d4a=function(){return _0x310c70;};return _0x5d4a();}
1
+ import React, { useState, useEffect } from 'react';
2
+ import { View, Text, StyleSheet, Modal, ActivityIndicator, Animated, Dimensions, TouchableOpacity } from 'react-native';
3
+ import LinearGradient from 'react-native-linear-gradient';
4
+ const {
5
+ width,
6
+ height
7
+ } = Dimensions.get('window');
8
+ const SignInMatchAnimation = ({
9
+ email,
10
+ visible,
11
+ onComplete
12
+ }) => {
13
+ const [step, setStep] = useState('searching');
14
+ const [matchCount, setMatchCount] = useState(0);
15
+ const fadeAnim = useState(new Animated.Value(0))[0];
16
+ const scaleAnim = useState(new Animated.Value(0.9))[0];
17
+ useEffect(() => {
18
+ if (visible) {
19
+ // Start with fade in animation
20
+ Animated.parallel([Animated.timing(fadeAnim, {
21
+ toValue: 1,
22
+ duration: 600,
23
+ useNativeDriver: true
24
+ }), Animated.timing(scaleAnim, {
25
+ toValue: 1,
26
+ duration: 600,
27
+ useNativeDriver: true
28
+ })]).start();
29
+
30
+ // Simulate search process
31
+ setTimeout(() => {
32
+ // Generate random match count (3-8)
33
+ const randomMatchCount = Math.floor(Math.random() * 6) + 3;
34
+ setMatchCount(randomMatchCount);
35
+ setStep('found');
36
+
37
+ // Auto-proceed to complete after 3 seconds
38
+ setTimeout(() => {
39
+ setStep('complete');
40
+ }, 3000);
41
+ }, 2500);
42
+ }
43
+ }, [visible, fadeAnim, scaleAnim]);
44
+ const handleContinue = () => {
45
+ // Fade out animation before calling onComplete
46
+ Animated.parallel([Animated.timing(fadeAnim, {
47
+ toValue: 0,
48
+ duration: 400,
49
+ useNativeDriver: true
50
+ }), Animated.timing(scaleAnim, {
51
+ toValue: 0.9,
52
+ duration: 400,
53
+ useNativeDriver: true
54
+ })]).start(() => {
55
+ onComplete();
56
+ });
57
+ };
58
+ if (!visible) return null;
59
+ return /*#__PURE__*/React.createElement(Modal, {
60
+ visible: visible,
61
+ transparent: true,
62
+ animationType: "none"
63
+ }, /*#__PURE__*/React.createElement(View, {
64
+ style: styles.container
65
+ }, /*#__PURE__*/React.createElement(Animated.View, {
66
+ style: [styles.content, {
67
+ opacity: fadeAnim,
68
+ transform: [{
69
+ scale: scaleAnim
70
+ }]
71
+ }]
72
+ }, step === 'searching' && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Text, {
73
+ style: styles.title
74
+ }, "Finding Your Matches"), /*#__PURE__*/React.createElement(ActivityIndicator, {
75
+ size: "large",
76
+ color: "#E9C46A",
77
+ style: styles.loader
78
+ }), /*#__PURE__*/React.createElement(Text, {
79
+ style: styles.message
80
+ }, "Searching for potential connections based on your profile...")), step === 'found' && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Text, {
81
+ style: styles.title
82
+ }, "Matches Found!"), /*#__PURE__*/React.createElement(View, {
83
+ style: styles.matchCircle
84
+ }, /*#__PURE__*/React.createElement(Text, {
85
+ style: styles.matchCount
86
+ }, matchCount)), /*#__PURE__*/React.createElement(Text, {
87
+ style: styles.message
88
+ }, "We've found ", matchCount, " potential connections for you!"), /*#__PURE__*/React.createElement(Text, {
89
+ style: styles.subMessage
90
+ }, "Complete your profile to see who they are.")), step === 'complete' && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Text, {
91
+ style: styles.title
92
+ }, "Welcome to Enoch!"), /*#__PURE__*/React.createElement(Text, {
93
+ style: styles.message
94
+ }, "We'll send match notifications to ", email.split('@')[0], "@..."), /*#__PURE__*/React.createElement(TouchableOpacity, {
95
+ style: styles.button,
96
+ onPress: handleContinue
97
+ }, /*#__PURE__*/React.createElement(LinearGradient, {
98
+ colors: ['#f5e7c1', '#E9C46A', '#DDB957'],
99
+ start: {
100
+ x: 0,
101
+ y: 0
102
+ },
103
+ end: {
104
+ x: 1,
105
+ y: 0
106
+ },
107
+ style: styles.gradientButton
108
+ }, /*#__PURE__*/React.createElement(Text, {
109
+ style: styles.buttonText
110
+ }, "Continue")))))));
111
+ };
112
+ const styles = StyleSheet.create({
113
+ container: {
114
+ flex: 1,
115
+ backgroundColor: 'rgba(0,0,0,0.7)',
116
+ justifyContent: 'center',
117
+ alignItems: 'center'
118
+ },
119
+ content: {
120
+ width: width * 0.85,
121
+ backgroundColor: '#FFFFFF',
122
+ borderRadius: 20,
123
+ padding: 24,
124
+ alignItems: 'center',
125
+ shadowColor: '#000',
126
+ shadowOffset: {
127
+ width: 0,
128
+ height: 4
129
+ },
130
+ shadowOpacity: 0.3,
131
+ shadowRadius: 8,
132
+ elevation: 10
133
+ },
134
+ title: {
135
+ fontSize: 24,
136
+ fontWeight: '600',
137
+ color: '#333',
138
+ marginBottom: 20,
139
+ textAlign: 'center'
140
+ },
141
+ loader: {
142
+ marginVertical: 24
143
+ },
144
+ message: {
145
+ fontSize: 18,
146
+ color: '#555',
147
+ textAlign: 'center',
148
+ marginBottom: 16,
149
+ lineHeight: 24
150
+ },
151
+ subMessage: {
152
+ fontSize: 16,
153
+ color: '#777',
154
+ textAlign: 'center',
155
+ marginTop: 8
156
+ },
157
+ matchCircle: {
158
+ width: 100,
159
+ height: 100,
160
+ borderRadius: 50,
161
+ backgroundColor: '#E9C46A',
162
+ justifyContent: 'center',
163
+ alignItems: 'center',
164
+ marginVertical: 20
165
+ },
166
+ matchCount: {
167
+ fontSize: 40,
168
+ fontWeight: 'bold',
169
+ color: '#FFFFFF'
170
+ },
171
+ button: {
172
+ width: '100%',
173
+ marginTop: 24,
174
+ borderRadius: 8,
175
+ overflow: 'hidden'
176
+ },
177
+ gradientButton: {
178
+ paddingVertical: 14,
179
+ alignItems: 'center',
180
+ justifyContent: 'center'
181
+ },
182
+ buttonText: {
183
+ color: '#333',
184
+ fontSize: 16,
185
+ fontWeight: '600'
186
+ }
187
+ });
188
+ export default SignInMatchAnimation;
189
+ //# sourceMappingURL=SignInMatchAnimation.js.map
@@ -1 +1,338 @@
1
- import React,{useState,useEffect}from'react';function _0x2de8(){const _0x2d66c3=['com','org','net','edu','gov','mil','app','tech','site','web','info','xyz','co.uk','co.nz','co.za','com.br','co.jp','co.kr','co.in','net.au','gov.uk','ac.uk','edu.au','con','cmo','vom','cpm','comm','comn','copm','ogr','orgg','rog','nte','nett','ent','ioo','lio','gmai','gmal','gamil','outlok','outlokk','yahooo','hotmal','hotmial','yahoo.co.jp','yahoo.com.br','hotmail.co.jp','Please\x20enter\x20a\x20valid\x20email\x20address','❌\x20Email\x20validation\x20failed:','\x20Did\x20you\x20mean\x20.net?','reviewer@bypass.com','\x20Did\x20you\x20mean\x20.org?','ECbIq','\x20Did\x20you\x20mean\x20.com?','guksZ','TctpN','PUnFI','huaFu','gmail','outlook','hotmail','icloud','Kugmx','aol','protonmail','iggfx','ugvIY','yahoo.com.au','outlook.co.uk','KnWAF','trim','toLowerCase','bVYyT','ezPzP','biBZN','LNzZv','uYSrH','hfPuA','hotmail.co.uk','qvHjH','includes','Did\x20you\x20mean\x20','FcfgO','substring','ewzbM','split','WTzLY','KyniV','length','DdHPW','has','rvlUu','RDSrp','ocm','JgzPJ','fgMXr','PLgSW','TsdQf','MUnSY','iYUtL','efptp','UClMh','goRWG','log','🧪\x20Test\x20bypass\x20detected\x20-\x20skipping\x20to\x20verification\x20screen','cfYvC','rXhXQ','LQtgu','TrOpO','MkLGG','DIBkL','hNAkH','IcoWq','nplOh','wyrgm','LznDA','zJfmZ','\x20Did\x20you\x20mean\x20.io?','Invalid\x20email\x20domain\x20(.','DzxQW','Zwerz','QkTZy','VfhyZ','cjuZK','cKobL','dKecc','HUAeq',').\x20Please\x20check\x20your\x20email.','slice','join','ZIbtr','RgHTZ','YmdOi','YdhwM','lNngN','ZmVYU','vLzTa','🔍\x20Reviewer\x20bypass\x20detected\x20in\x20new\x20UI','zRBnw','sxJPk','yahoo','YYGLz','zoho','aDlJC','BbiRf','nRONs','DNlWG','nYtLo','iSnDr','zncsQ','keyboardDidHide','AgAzz','kPvNj','test','LwDLs','WHwYb','height','Build\x20your\x20Onairos\x20persona\x20to\x20own\x20your\x20digital\x20identity','Your\x20email','Continue','hvMGl','oubbw','uzaRc','CIppx','QhpvF','GihBt','aNYcq','gkjEz','PRRBC','KDNcw','reviewer','ACnRP','olNcA','OBjcF','oupKX','sOWuW','test@bypass.com','QlypE','VKsRb','addListener','keyboardDidShow','fSOPw','VdZAs','remove','xsBGC','QUAiJ','mlgLD','isValid','kOWKz','error','Invalid\x20email\x20address','✅\x20Email\x20validation\x20passed','UhiIj','xiLkP','nnNkQ','ios','padding','bbcjx','container','createElement','content','headingContainer','title','subtitle','Sign\x20in\x20or\x20create\x20an\x20account','inputContainer','done','PEaWD','LuzXZ','errorText','TMTYw','dividerContainer','dividerLine','dividerText','googleContainer','spacer','rFmiq','create','100%','700','grey800','left','Inter','400','grey600','row','center','#E5E5E5','grey500','#DC3545'];_0x2de8=function(){return _0x2d66c3;};return _0x2de8();}import{View,Text,StyleSheet,KeyboardAvoidingView,Platform,Keyboard}from'react-native';import{COLORS,SPACING}from'../theme';import _0x2fd84a from'./EmailInput';import _0x1f898c from'./GoogleButton';import _0x45886e from'./PrimaryButton';const VALID_TLDS=new Set([_0x198e(0x0),_0x198e(0x1),_0x198e(0x2),_0x198e(0x3),_0x198e(0x4),_0x198e(0x5),'int','io','co','ai',_0x198e(0x6),'dev',_0x198e(0x7),'online',_0x198e(0x8),_0x198e(0x9),_0x198e(0xa),'biz','me','tv','cc',_0x198e(0xb),'uk','us','ca','au','de','fr','it','es','nl','be','ch','at','se','no','dk','fi','jp','cn','kr','in','br','mx','ar','ru','pl','cz','ie','nz','za','sg','hk','tw','pt','gr','tr','il','ae','sa','eg','ng','ke','gh','ph','id','my','th','vn',_0x198e(0xc),'com.au',_0x198e(0xd),_0x198e(0xe),_0x198e(0xf),_0x198e(0x10),_0x198e(0x11),_0x198e(0x12),'org.uk',_0x198e(0x13),_0x198e(0x14),_0x198e(0x15),_0x198e(0x16)]),INVALID_TLDS=new Set([_0x198e(0x17),_0x198e(0x18),_0x198e(0x19),'ocm','cm',_0x198e(0x1a),'ckm','om',_0x198e(0x1b),_0x198e(0x1c),_0x198e(0x1d),_0x198e(0x1e),'og',_0x198e(0x1f),_0x198e(0x20),'rg',_0x198e(0x21),'ne',_0x198e(0x22),_0x198e(0x23),'bet','oi',_0x198e(0x24),_0x198e(0x25),_0x198e(0x26),'gmial','gmil',_0x198e(0x27),_0x198e(0x28),_0x198e(0x29),'outloo',_0x198e(0x2a),_0x198e(0x2b),'yaho','yhoo','hotmai',_0x198e(0x2c),_0x198e(0x2d)]),validateEmail=_0x3aab8b=>{const _0x588984={'LNzZv':'yahoo.co.uk','uYSrH':_0x198e(0x2e),'hfPuA':_0x198e(0x2f),'qvHjH':_0x198e(0x30),'cjuZK':function(_0x1ef0e2,_0x42b201){return _0x1ef0e2(_0x42b201);},'sVFaX':'test@bypass.com','FcfgO':_0x198e(0x31),'VfhyZ':_0x198e(0x32),'fPwaa':'Invalid\x20email\x20address','hNAkH':_0x198e(0x33),'zRBnw':function(_0x1618e5,_0x272ebd){return _0x1618e5(_0x272ebd);},'sxJPk':_0x198e(0x34),'cfYvC':_0x198e(0x35),'bVYyT':function(_0x322edd,_0x24704d){return _0x322edd===_0x24704d;},'ezPzP':_0x198e(0x36),'ewzbM':function(_0x2a1272,_0x264312){return _0x2a1272+_0x264312;},'WTzLY':function(_0x2a606a,_0x11a4ba){return _0x2a606a<_0x11a4ba;},'KyniV':function(_0x3fe35c,_0x51a3e0){return _0x3fe35c-_0x51a3e0;},'DdHPW':function(_0x50a382,_0xd10127){return _0x50a382-_0xd10127;},'rvlUu':_0x198e(0x17),'eaOwW':'cmo','RDSrp':'vom','iYUtL':function(_0x48614d,_0x479ec9){return _0x48614d===_0x479ec9;},'JgzPJ':_0x198e(0x1a),'fgMXr':_0x198e(0x1b),'UClMh':function(_0xb57a3a,_0x56982b){return _0xb57a3a===_0x56982b;},'PLgSW':'copm','TsdQf':_0x198e(0x37),'MUnSY':_0x198e(0x1e),'Mkfye':_0x198e(0x1f),'efptp':function(_0x2fa0a7,_0x2b4859){return _0x2fa0a7===_0x2b4859;},'goRWG':'kFXSp','rXhXQ':function(_0x586eec,_0x9b2770){return _0x586eec===_0x9b2770;},'LQtgu':_0x198e(0x21),'CqwZt':function(_0x48ee04,_0x58ec8e){return _0x48ee04===_0x58ec8e;},'TrOpO':_0x198e(0x22),'MkLGG':function(_0x41ca5f,_0x453f56){return _0x41ca5f===_0x453f56;},'DIBkL':_0x198e(0x23),'IcoWq':function(_0x13c516,_0xba28de){return _0x13c516===_0xba28de;},'nplOh':_0x198e(0x24),'pJuZV':'lio','wyrgm':function(_0x28dd65,_0x20acda){return _0x28dd65!==_0x20acda;},'LznDA':_0x198e(0x38),'zJfmZ':'zyeRL','DzxQW':function(_0x22be1d,_0x434905){return _0x22be1d===_0x434905;},'Zwerz':_0x198e(0x39),'QkTZy':_0x198e(0x3a),'cKobL':function(_0x38aabb,_0x3198cf){return _0x38aabb<=_0x3198cf;},'dKecc':function(_0x37037d,_0x1a2891){return _0x37037d!==_0x1a2891;},'HUAeq':_0x198e(0x3b),'ZIbtr':_0x198e(0x3c),'RgHTZ':_0x198e(0x3d),'YmdOi':'yahoo','YdhwM':_0x198e(0x3e),'lNngN':_0x198e(0x3f),'ZmVYU':_0x198e(0x40),'FDmdw':_0x198e(0x41),'YYGLz':_0x198e(0x42),'aDlJC':_0x198e(0x0),'BbiRf':function(_0xebaa6e,_0x3b8738){return _0xebaa6e!==_0x3b8738;},'yVcga':_0x198e(0x43),'nRONs':_0x198e(0x44),'HyOYu':_0x198e(0x45),'BPqql':_0x198e(0x46),'DNlWG':function(_0x128315,_0x33a4b9){return _0x128315===_0x33a4b9;},'nYtLo':_0x198e(0x47)},_0x11e50c=_0x3aab8b[_0x198e(0x48)]()[_0x198e(0x49)](),_0x517b5f=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;if(!_0x517b5f['test'](_0x11e50c)){if(_0x588984[_0x198e(0x4a)](_0x588984[_0x198e(0x4b)],_0x198e(0x4c))){const _0x242b26=[_0x588984[_0x198e(0x4d)],_0x588984[_0x198e(0x4e)],_0x588984[_0x198e(0x4f)],'yahoo.com.au',_0x198e(0x46),_0x198e(0x50),_0x588984[_0x198e(0x51)]],_0x4862e9=_0x517534+'.'+_0x2f0c22;if(!_0x242b26[_0x198e(0x52)](_0x4862e9))return{'isValid':![],'error':_0x198e(0x53)+_0x1ea6e4+'.'+_0xfbf308[_0x18b37a]+'?'};}else return{'isValid':![],'error':_0x588984[_0x198e(0x54)]};}const _0x5e1580=_0x11e50c['lastIndexOf']('@'),_0x23f445=_0x11e50c[_0x198e(0x55)](_0x588984[_0x198e(0x56)](_0x5e1580,0x1)),_0x9781c6=_0x23f445[_0x198e(0x57)]('.');if(_0x588984[_0x198e(0x58)](_0x9781c6['length'],0x2))return{'isValid':![],'error':_0x588984[_0x198e(0x54)]};const _0x1991db=_0x9781c6[_0x588984[_0x198e(0x59)](_0x9781c6[_0x198e(0x5a)],0x1)],_0x44bf68=_0x9781c6[_0x198e(0x5a)]>=0x2?_0x9781c6[_0x588984[_0x198e(0x5b)](_0x9781c6[_0x198e(0x5a)],0x2)]+'.'+_0x1991db:'';if(INVALID_TLDS[_0x198e(0x5c)](_0x1991db)){let _0x1df7f0='';if(_0x588984['bVYyT'](_0x1991db,_0x588984[_0x198e(0x5d)])||_0x588984[_0x198e(0x4a)](_0x1991db,_0x588984['eaOwW'])||_0x1991db===_0x588984[_0x198e(0x5e)]||_0x588984[_0x198e(0x4a)](_0x1991db,_0x198e(0x5f))||_0x588984['iYUtL'](_0x1991db,_0x588984[_0x198e(0x60)])||_0x588984[_0x198e(0x4a)](_0x1991db,_0x588984[_0x198e(0x61)])||_0x588984[_0x198e(0x4a)](_0x1991db,_0x198e(0x1c))||_0x588984['UClMh'](_0x1991db,_0x588984[_0x198e(0x62)]))_0x1df7f0=_0x588984[_0x198e(0x63)];else{if(_0x1991db===_0x588984[_0x198e(0x64)]||_0x588984[_0x198e(0x65)](_0x1991db,'og')||_0x1991db===_0x588984['Mkfye']||_0x588984[_0x198e(0x66)](_0x1991db,_0x198e(0x20))){if(_0x588984[_0x198e(0x67)](_0x588984[_0x198e(0x68)],'CmZvr')){_0x31ce74[_0x198e(0x69)](_0x198e(0x6a)),_0x588984['cjuZK'](_0x37aea3,_0x588984['sVFaX']);return;}else _0x1df7f0=_0x588984[_0x198e(0x6b)];}else{if(_0x588984[_0x198e(0x6c)](_0x1991db,_0x588984[_0x198e(0x6d)])||_0x588984[_0x198e(0x66)](_0x1991db,'ne')||_0x588984['CqwZt'](_0x1991db,_0x588984[_0x198e(0x6e)])||_0x588984[_0x198e(0x6f)](_0x1991db,_0x588984[_0x198e(0x70)]))_0x1df7f0=_0x588984[_0x198e(0x71)];else{if(_0x588984[_0x198e(0x4a)](_0x1991db,'oi')||_0x588984[_0x198e(0x72)](_0x1991db,_0x588984[_0x198e(0x73)])||_0x588984[_0x198e(0x65)](_0x1991db,_0x588984['pJuZV'])){if(_0x588984[_0x198e(0x74)](_0x588984[_0x198e(0x75)],_0x588984[_0x198e(0x76)]))_0x1df7f0=_0x198e(0x77);else return{'isValid':![],'error':_0x588984[_0x198e(0x54)]};}}}}return{'isValid':![],'error':_0x198e(0x78)+_0x1991db+').'+_0x1df7f0};}if(_0x588984[_0x198e(0x58)](_0x1991db[_0x198e(0x5a)],0x2)){if(_0x588984[_0x198e(0x79)](_0x588984[_0x198e(0x7a)],_0x588984[_0x198e(0x7b)])){_0x1b301f[_0x198e(0x69)](_0x588984[_0x198e(0x7c)],_0x24a251['error']),_0x588984[_0x198e(0x7d)](_0x14a2b5,_0x59c3ff['error']||_0x588984['fPwaa']);return;}else return{'isValid':![],'error':_0x198e(0x31)};}const _0xc45a50=VALID_TLDS[_0x198e(0x5c)](_0x1991db)||VALID_TLDS[_0x198e(0x5c)](_0x44bf68);if(!_0xc45a50&&_0x588984[_0x198e(0x7e)](_0x1991db[_0x198e(0x5a)],0x2)){if(_0x588984[_0x198e(0x7f)](_0x588984[_0x198e(0x80)],_0x588984[_0x198e(0x80)]))_0x253824=_0x588984['hNAkH'];else return{'isValid':![],'error':_0x198e(0x78)+_0x1991db+_0x198e(0x81)};}const _0x24e029=_0x9781c6[_0x198e(0x82)](0x0,-0x1)[_0x198e(0x83)]('.'),_0x12c330={'gmai':'gmail','gmial':_0x588984[_0x198e(0x84)],'gmil':_0x198e(0x3c),'gmal':_0x588984[_0x198e(0x84)],'gamil':_0x588984[_0x198e(0x84)],'outlok':_0x588984[_0x198e(0x85)],'outloo':_0x588984['RgHTZ'],'outlokk':_0x198e(0x3d),'yahooo':_0x588984[_0x198e(0x86)],'yaho':_0x588984[_0x198e(0x86)],'yhoo':_0x588984['YmdOi'],'hotmai':_0x588984['YdhwM'],'hotmal':_0x198e(0x3e),'hotmial':_0x588984[_0x198e(0x87)],'iclod':_0x588984[_0x198e(0x88)],'iclould':_0x588984[_0x198e(0x88)]};if(_0x12c330[_0x24e029]){if(_0x588984[_0x198e(0x89)]!==_0x198e(0x8a))return{'isValid':![],'error':_0x198e(0x53)+_0x12c330[_0x24e029]+'.'+_0x1991db+'?'};else{_0x3f6ce0[_0x198e(0x69)](_0x198e(0x8b)),_0x588984[_0x198e(0x8c)](_0x148ca7,_0x588984[_0x198e(0x8d)]);return;}}const _0x5f6f18=[_0x588984[_0x198e(0x84)],_0x198e(0x8e),_0x588984[_0x198e(0x87)],_0x588984[_0x198e(0x85)],_0x198e(0x3f),_0x588984['FDmdw'],_0x588984[_0x198e(0x8f)],_0x198e(0x90)],_0x4d6618={'gmail':_0x198e(0x0),'yahoo':_0x588984[_0x198e(0x91)],'hotmail':_0x588984[_0x198e(0x91)],'outlook':_0x588984['aDlJC'],'icloud':_0x588984[_0x198e(0x91)],'aol':_0x588984[_0x198e(0x91)],'protonmail':_0x588984[_0x198e(0x91)],'zoho':_0x198e(0x0)};if(_0x5f6f18['includes'](_0x24e029)&&_0x588984[_0x198e(0x92)](_0x1991db,_0x4d6618[_0x24e029])){if(_0x588984[_0x198e(0x92)](_0x588984['yVcga'],_0x588984[_0x198e(0x93)])){const _0x44b437=[_0x588984[_0x198e(0x4d)],_0x588984[_0x198e(0x4e)],_0x588984[_0x198e(0x4f)],_0x588984['HyOYu'],_0x588984['BPqql'],_0x198e(0x50),_0x588984[_0x198e(0x51)]],_0x337e32=_0x24e029+'.'+_0x1991db;if(!_0x44b437[_0x198e(0x52)](_0x337e32)){if(_0x588984[_0x198e(0x94)](_0x588984[_0x198e(0x95)],_0x198e(0x96)))_0x2c8612('');else return{'isValid':![],'error':_0x198e(0x53)+_0x24e029+'.'+_0x4d6618[_0x24e029]+'?'};}}else _0x22de71=_0x588984[_0x198e(0x6b)];}return{'isValid':!![]};},SignInStep=({onEmailSubmit:_0x5445da,onGoogleSignIn:_0x4cfb98,onContinue:_0x21a513,loading:loading=![],error:error='',initialEmail:initialEmail=''})=>{const _0x5bdd38={'gkjEz':function(_0x81fc1d,_0x195d64){return _0x81fc1d(_0x195d64);},'hvMGl':function(_0x3994a9,_0x538067){return _0x3994a9(_0x538067);},'CIppx':function(_0x8f2d8d,_0x55ddfc){return _0x8f2d8d!==_0x55ddfc;},'QhpvF':_0x198e(0x97),'aNYcq':function(_0x200265,_0x46e76d){return _0x200265(_0x46e76d);},'ojPZk':'\x20Did\x20you\x20mean\x20.com?','nnNkQ':function(_0x5ab3df,_0x524db3){return _0x5ab3df===_0x524db3;},'BIUIk':function(_0x2155ff,_0x2b4012){return _0x2155ff===_0x2b4012;},'PRRBC':_0x198e(0x98),'KDNcw':function(_0x18b3ae,_0x374dbf){return _0x18b3ae===_0x374dbf;},'ACnRP':_0x198e(0x99),'olNcA':_0x198e(0x9a),'uzaRc':function(_0x4dc3d8,_0x178c6f){return _0x4dc3d8(_0x178c6f);},'OBjcF':_0x198e(0x34),'DFgwx':_0x198e(0x9b),'oupKX':_0x198e(0x9c),'sOWuW':_0x198e(0x6a),'QxpFc':function(_0x25d254,_0x4fe99d){return _0x25d254!==_0x4fe99d;},'QUAiJ':_0x198e(0x9d),'mlgLD':function(_0x1eeb6c,_0xa23386){return _0x1eeb6c(_0xa23386);},'kOWKz':_0x198e(0x32),'UhiIj':'keyboardDidShow','oubbw':function(_0x5f1bf2,_0x299428){return _0x5f1bf2(_0x299428);},'bbcjx':_0x198e(0x9e),'sXIKO':_0x198e(0x9f),'PEaWD':_0x198e(0xa0),'oLEfh':'#9CA3AF','LuzXZ':function(_0xfda5c0,_0x1a5268){return _0xfda5c0||_0x1a5268;},'TMTYw':function(_0x248f41,_0x402db2){return _0x248f41||_0x402db2;},'rFmiq':_0x198e(0xa1)},[_0x4ad398,_0x4039b7]=_0x5bdd38[_0x198e(0xa2)](useState,initialEmail),[_0x4587b7,_0x59d9c]=_0x5bdd38[_0x198e(0xa3)](useState,![]),[_0x4493f2,_0x19bd88]=_0x5bdd38[_0x198e(0xa4)](useState,''),_0x166fbd=_0x2ef3d9=>{_0x5bdd38[_0x198e(0xa2)](_0x4039b7,_0x2ef3d9),_0x4493f2&&(_0x5bdd38[_0x198e(0xa5)](_0x5bdd38[_0x198e(0xa6)],_0x198e(0xa7))?_0x5bdd38[_0x198e(0xa8)](_0x19bd88,''):(_0x5bdd38['gkjEz'](_0xc7210b,_0x25710b),_0x437eb6&&_0x5bdd38[_0x198e(0xa9)](_0x6e108b,'')));},_0x268a4f=()=>{const _0x509142={'QlypE':function(_0x9b8c32,_0x6b1e76){return _0x5bdd38['nnNkQ'](_0x9b8c32,_0x6b1e76);},'VKsRb':function(_0x51483b,_0x437975){return _0x5bdd38['BIUIk'](_0x51483b,_0x437975);},'fSOPw':_0x5bdd38[_0x198e(0xaa)]};if(_0x5bdd38[_0x198e(0xab)](_0x4ad398[_0x198e(0x49)]()['trim'](),_0x198e(0xac))){if(_0x5bdd38[_0x198e(0xad)]!==_0x5bdd38[_0x198e(0xae)]){console[_0x198e(0x69)]('🔍\x20Reviewer\x20bypass\x20detected\x20in\x20new\x20UI'),_0x5bdd38['uzaRc'](_0x5445da,_0x5bdd38[_0x198e(0xaf)]);return;}else _0x4c6b33=_0x5bdd38['ojPZk'];}if(_0x5bdd38['BIUIk'](_0x4ad398[_0x198e(0x49)]()[_0x198e(0x48)](),_0x5bdd38['DFgwx'])){if(_0x5bdd38['KDNcw'](_0x5bdd38[_0x198e(0xb0)],_0x5bdd38[_0x198e(0xb0)])){console[_0x198e(0x69)](_0x5bdd38[_0x198e(0xb1)]),_0x5445da(_0x198e(0xb2));return;}else{const _0x5d699a={'XCRag':function(_0x116519,_0x414b82){return _0x509142[_0x198e(0xb3)](_0x116519,_0x414b82);},'VdZAs':function(_0x47d904,_0x31909b){return _0x509142[_0x198e(0xb4)](_0x47d904,_0x31909b);},'xsBGC':function(_0x313c6b,_0x8d418f){return _0x313c6b===_0x8d418f;}},_0x118801=_0x230be9[_0x198e(0xb5)](_0x198e(0xb6),()=>_0xa5f7d(!![])),_0x1ec27b=_0x3e234c['addListener'](_0x509142[_0x198e(0xb7)],()=>_0x325744(![]));return()=>{_0x5d699a['XCRag'](_0x1ec27b,null)||_0x5d699a[_0x198e(0xb8)](_0x1ec27b,void 0x0)||_0x1ec27b[_0x198e(0xb9)](),_0x5d699a['XCRag'](_0x118801,null)||_0x5d699a[_0x198e(0xba)](_0x118801,void 0x0)||_0x118801[_0x198e(0xb9)]();};}}if(_0x4ad398[_0x198e(0x48)]()){if(_0x5bdd38['QxpFc'](_0x5bdd38[_0x198e(0xbb)],'MPmcv')){const _0x5257d4=_0x5bdd38[_0x198e(0xbc)](validateEmail,_0x4ad398);if(!_0x5257d4[_0x198e(0xbd)]){console['log'](_0x5bdd38[_0x198e(0xbe)],_0x5257d4['error']),_0x5bdd38[_0x198e(0xa9)](_0x19bd88,_0x5257d4[_0x198e(0xbf)]||_0x198e(0xc0));return;}console['log'](_0x198e(0xc1)),_0x19bd88(''),_0x5bdd38[_0x198e(0xa8)](_0x5445da,_0x4ad398[_0x198e(0x48)]());}else return{'isValid':![],'error':_0x198e(0x31)};}};return useEffect(()=>{const _0x5a86a2={'xiLkP':function(_0x2cf02b,_0xa56bef){return _0x2cf02b===_0xa56bef;}},_0x187f95=Keyboard['addListener'](_0x5bdd38[_0x198e(0xc2)],()=>_0x59d9c(!![])),_0x2763a6=Keyboard[_0x198e(0xb5)](_0x5bdd38[_0x198e(0xaa)],()=>_0x59d9c(![]));return()=>{_0x5a86a2['xiLkP'](_0x2763a6,null)||_0x5a86a2['xiLkP'](_0x2763a6,void 0x0)||_0x2763a6[_0x198e(0xb9)](),_0x187f95===null||_0x5a86a2[_0x198e(0xc3)](_0x187f95,void 0x0)||_0x187f95['remove']();};},[]),React['createElement'](KeyboardAvoidingView,{'behavior':_0x5bdd38[_0x198e(0xc4)](Platform['OS'],_0x198e(0xc5))?_0x198e(0xc6):_0x5bdd38[_0x198e(0xc7)],'style':styles[_0x198e(0xc8)]},React[_0x198e(0xc9)](View,{'style':styles[_0x198e(0xca)]},React[_0x198e(0xc9)](View,{'style':styles[_0x198e(0xcb)]},React[_0x198e(0xc9)](Text,{'style':styles[_0x198e(0xcc)]},_0x5bdd38['sXIKO']),React[_0x198e(0xc9)](Text,{'style':styles[_0x198e(0xcd)]},_0x198e(0xce))),React[_0x198e(0xc9)](View,{'style':styles[_0x198e(0xcf)]},React[_0x198e(0xc9)](_0x2fd84a,{'value':_0x4ad398,'onChangeText':_0x166fbd,'onSubmitEditing':_0x268a4f,'returnKeyType':_0x198e(0xd0),'blurOnSubmit':!![],'placeholder':_0x5bdd38[_0x198e(0xd1)],'placeholderTextColor':_0x5bdd38['oLEfh']}),_0x5bdd38[_0x198e(0xd2)](_0x4493f2,error)?React[_0x198e(0xc9)](Text,{'style':styles[_0x198e(0xd3)]},_0x5bdd38[_0x198e(0xd4)](_0x4493f2,error)):null),React[_0x198e(0xc9)](View,{'style':styles[_0x198e(0xd5)]},React['createElement'](View,{'style':styles[_0x198e(0xd6)]}),React[_0x198e(0xc9)](Text,{'style':styles[_0x198e(0xd7)]},'Or'),React[_0x198e(0xc9)](View,{'style':styles[_0x198e(0xd6)]})),React[_0x198e(0xc9)](View,{'style':styles[_0x198e(0xd8)]},React[_0x198e(0xc9)](_0x1f898c,{'onPress':_0x4cfb98,'disabled':loading})),React[_0x198e(0xc9)](View,{'style':styles[_0x198e(0xd9)]}),React[_0x198e(0xc9)](View,{'style':styles['continueContainer']},React[_0x198e(0xc9)](_0x45886e,{'label':_0x5bdd38[_0x198e(0xda)],'onPress':_0x268a4f,'disabled':loading||!_0x4ad398['trim'](),'loading':loading}))));},styles=StyleSheet[_0x198e(0xdb)]({'container':{'flex':0x1},'content':{'flex':0x1,'paddingTop':0x18,'paddingHorizontal':0x18},'headingContainer':{'width':_0x198e(0xdc),'marginBottom':0x16,'paddingHorizontal':0x0},'title':{'fontFamily':'IBM\x20Plex\x20Sans','fontWeight':_0x198e(0xdd),'fontSize':0x18,'lineHeight':0x20,'color':COLORS[_0x198e(0xde)],'textAlign':_0x198e(0xdf),'marginBottom':SPACING['sm']},'subtitle':{'fontFamily':_0x198e(0xe0),'fontWeight':_0x198e(0xe1),'fontSize':0x10,'lineHeight':0x18,'color':COLORS[_0x198e(0xe2)],'textAlign':_0x198e(0xdf)},'inputContainer':{'marginBottom':0x20,'paddingHorizontal':0x0},'dividerContainer':{'flexDirection':_0x198e(0xe3),'alignItems':_0x198e(0xe4),'marginBottom':0x20,'paddingHorizontal':0x0},'dividerLine':{'flex':0x1,'height':0x1,'backgroundColor':_0x198e(0xe5)},'dividerText':{'paddingHorizontal':SPACING['md'],'fontSize':0xe,'fontFamily':_0x198e(0xe0),'fontWeight':_0x198e(0xe1),'color':COLORS[_0x198e(0xe6)]},'googleContainer':{'marginBottom':SPACING['xl'],'paddingHorizontal':0x0},'spacer':{'flex':0x1,'minHeight':0x14},'continueContainer':{'paddingBottom':SPACING['xl'],'paddingHorizontal':0x0},'errorText':{'fontSize':0xe,'fontFamily':'Inter','fontWeight':_0x198e(0xe1),'color':_0x198e(0xe7),'marginTop':0x8,'textAlign':_0x198e(0xdf)}});function _0x198e(_0x2de8ee,_0x198eb3){_0x2de8ee=_0x2de8ee-0x0;const _0x570d65=_0x2de8();let _0x246fa6=_0x570d65[_0x2de8ee];return _0x246fa6;}export{SignInStep};export default SignInStep;
1
+ import React, { useState, useEffect } from 'react';
2
+ import { View, Text, StyleSheet, KeyboardAvoidingView, Platform, Keyboard } from 'react-native';
3
+ import { COLORS, SPACING } from '../theme';
4
+ import EmailInput from './EmailInput';
5
+ import GoogleButton from './GoogleButton';
6
+ import PrimaryButton from './PrimaryButton';
7
+
8
+ // Valid top-level domains (comprehensive list)
9
+ const VALID_TLDS = new Set([
10
+ // Generic TLDs
11
+ 'com', 'org', 'net', 'edu', 'gov', 'mil', 'int',
12
+ // Popular TLDs
13
+ 'io', 'co', 'ai', 'app', 'dev', 'tech', 'online', 'site', 'web', 'info', 'biz', 'me', 'tv', 'cc', 'xyz',
14
+ // Country code TLDs
15
+ 'uk', 'us', 'ca', 'au', 'de', 'fr', 'it', 'es', 'nl', 'be', 'ch', 'at', 'se', 'no', 'dk', 'fi', 'jp', 'cn', 'kr', 'in', 'br', 'mx', 'ar', 'ru', 'pl', 'cz', 'ie', 'nz', 'za', 'sg', 'hk', 'tw', 'pt', 'gr', 'tr', 'il', 'ae', 'sa', 'eg', 'ng', 'ke', 'gh', 'ph', 'id', 'my', 'th', 'vn',
16
+ // Common compound TLDs
17
+ 'co.uk', 'com.au', 'co.nz', 'co.za', 'com.br', 'co.jp', 'co.kr', 'co.in', 'org.uk', 'net.au', 'gov.uk', 'ac.uk', 'edu.au']);
18
+
19
+ // Common typos that should be rejected
20
+ const INVALID_TLDS = new Set(['con', 'cmo', 'vom', 'ocm', 'cm', 'cpm', 'ckm', 'om', 'comm', 'comn', 'copm', 'ogr', 'og', 'orgg', 'rog', 'rg', 'nte', 'ne', 'nett', 'ent', 'bet', 'oi', 'ioo', 'lio', 'gmai', 'gmial', 'gmil', 'gmal', 'gamil', 'outlok', 'outloo', 'outlokk', 'yahooo', 'yaho', 'yhoo', 'hotmai', 'hotmal', 'hotmial']);
21
+
22
+ /**
23
+ * Validates an email address
24
+ * @param email - The email to validate
25
+ * @returns Object with isValid boolean and optional error message
26
+ */
27
+ const validateEmail = email => {
28
+ const trimmedEmail = email.trim().toLowerCase();
29
+
30
+ // Basic format check
31
+ const basicEmailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
32
+ if (!basicEmailRegex.test(trimmedEmail)) {
33
+ return {
34
+ isValid: false,
35
+ error: 'Please enter a valid email address'
36
+ };
37
+ }
38
+
39
+ // Extract domain and TLD
40
+ const atIndex = trimmedEmail.lastIndexOf('@');
41
+ const domain = trimmedEmail.substring(atIndex + 1);
42
+ const parts = domain.split('.');
43
+ if (parts.length < 2) {
44
+ return {
45
+ isValid: false,
46
+ error: 'Please enter a valid email address'
47
+ };
48
+ }
49
+
50
+ // Get the TLD (last part) and check compound TLDs
51
+ const tld = parts[parts.length - 1];
52
+ const compoundTld = parts.length >= 2 ? `${parts[parts.length - 2]}.${tld}` : '';
53
+
54
+ // Check for invalid/typo TLDs first
55
+ if (INVALID_TLDS.has(tld)) {
56
+ // Suggest the correct TLD
57
+ let suggestion = '';
58
+ if (tld === 'con' || tld === 'cmo' || tld === 'vom' || tld === 'ocm' || tld === 'cpm' || tld === 'comm' || tld === 'comn' || tld === 'copm') {
59
+ suggestion = ' Did you mean .com?';
60
+ } else if (tld === 'ogr' || tld === 'og' || tld === 'orgg' || tld === 'rog') {
61
+ suggestion = ' Did you mean .org?';
62
+ } else if (tld === 'nte' || tld === 'ne' || tld === 'nett' || tld === 'ent') {
63
+ suggestion = ' Did you mean .net?';
64
+ } else if (tld === 'oi' || tld === 'ioo' || tld === 'lio') {
65
+ suggestion = ' Did you mean .io?';
66
+ }
67
+ return {
68
+ isValid: false,
69
+ error: `Invalid email domain (.${tld}).${suggestion}`
70
+ };
71
+ }
72
+
73
+ // Check if TLD is too short (likely a typo)
74
+ if (tld.length < 2) {
75
+ return {
76
+ isValid: false,
77
+ error: 'Please enter a valid email address'
78
+ };
79
+ }
80
+
81
+ // Check if TLD is valid (either compound or single)
82
+ const isValidTld = VALID_TLDS.has(tld) || VALID_TLDS.has(compoundTld);
83
+
84
+ // For single-letter or very unusual TLDs, warn but still allow if not in invalid list
85
+ // This allows for new TLDs while catching obvious typos
86
+ if (!isValidTld && tld.length <= 2) {
87
+ return {
88
+ isValid: false,
89
+ error: `Invalid email domain (.${tld}). Please check your email.`
90
+ };
91
+ }
92
+
93
+ // Additional checks for common domain typos
94
+ const domainWithoutTld = parts.slice(0, -1).join('.');
95
+ const commonDomainTypos = {
96
+ 'gmai': 'gmail',
97
+ 'gmial': 'gmail',
98
+ 'gmil': 'gmail',
99
+ 'gmal': 'gmail',
100
+ 'gamil': 'gmail',
101
+ 'outlok': 'outlook',
102
+ 'outloo': 'outlook',
103
+ 'outlokk': 'outlook',
104
+ 'yahooo': 'yahoo',
105
+ 'yaho': 'yahoo',
106
+ 'yhoo': 'yahoo',
107
+ 'hotmai': 'hotmail',
108
+ 'hotmal': 'hotmail',
109
+ 'hotmial': 'hotmail',
110
+ 'iclod': 'icloud',
111
+ 'iclould': 'icloud'
112
+ };
113
+ if (commonDomainTypos[domainWithoutTld]) {
114
+ return {
115
+ isValid: false,
116
+ error: `Did you mean ${commonDomainTypos[domainWithoutTld]}.${tld}?`
117
+ };
118
+ }
119
+
120
+ // 🔐 Check for common email providers with wrong TLDs
121
+ // These providers almost always use .com, so other TLDs are likely typos
122
+ const commonProviders = ['gmail', 'yahoo', 'hotmail', 'outlook', 'icloud', 'aol', 'protonmail', 'zoho'];
123
+ const expectedProviderTld = {
124
+ 'gmail': 'com',
125
+ 'yahoo': 'com',
126
+ 'hotmail': 'com',
127
+ 'outlook': 'com',
128
+ 'icloud': 'com',
129
+ 'aol': 'com',
130
+ 'protonmail': 'com',
131
+ 'zoho': 'com'
132
+ };
133
+
134
+ // Check if domain matches a common provider but has wrong TLD
135
+ if (commonProviders.includes(domainWithoutTld) && tld !== expectedProviderTld[domainWithoutTld]) {
136
+ // Allow known valid variants like yahoo.co.uk, outlook.co.uk etc
137
+ const validVariants = ['yahoo.co.uk', 'yahoo.co.jp', 'yahoo.com.br', 'yahoo.com.au', 'outlook.co.uk', 'hotmail.co.uk', 'hotmail.co.jp'];
138
+ const fullDomain = `${domainWithoutTld}.${tld}`;
139
+ if (!validVariants.includes(fullDomain)) {
140
+ return {
141
+ isValid: false,
142
+ error: `Did you mean ${domainWithoutTld}.${expectedProviderTld[domainWithoutTld]}?`
143
+ };
144
+ }
145
+ }
146
+ return {
147
+ isValid: true
148
+ };
149
+ };
150
+ const SignInStep = ({
151
+ onEmailSubmit,
152
+ onGoogleSignIn,
153
+ onContinue,
154
+ loading = false,
155
+ error = '',
156
+ initialEmail = ''
157
+ }) => {
158
+ const [email, setEmail] = useState(initialEmail);
159
+ const [keyboardVisible, setKeyboardVisible] = useState(false);
160
+ const [validationError, setValidationError] = useState('');
161
+
162
+ // Clear validation error when user starts typing
163
+ const handleEmailChange = text => {
164
+ setEmail(text);
165
+ if (validationError) {
166
+ setValidationError('');
167
+ }
168
+ };
169
+ const handleEmailSubmit = () => {
170
+ // Check for reviewer bypass first
171
+ if (email.toLowerCase().trim() === 'reviewer') {
172
+ console.log('🔍 Reviewer bypass detected in new UI');
173
+ // Call onEmailSubmit with a special reviewer email that the parent can recognize
174
+ onEmailSubmit('reviewer@bypass.com');
175
+ return;
176
+ }
177
+
178
+ // Check for test bypass - goes directly to verification screen
179
+ if (email.toLowerCase().trim() === 'test') {
180
+ console.log('🧪 Test bypass detected - skipping to verification screen');
181
+ onEmailSubmit('test@bypass.com');
182
+ return;
183
+ }
184
+ if (email.trim()) {
185
+ // Validate email before submitting
186
+ const validation = validateEmail(email);
187
+ if (!validation.isValid) {
188
+ console.log('❌ Email validation failed:', validation.error);
189
+ setValidationError(validation.error || 'Invalid email address');
190
+ return;
191
+ }
192
+ console.log('✅ Email validation passed');
193
+ setValidationError('');
194
+ onEmailSubmit(email.trim());
195
+ }
196
+ };
197
+ useEffect(() => {
198
+ const keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', () => setKeyboardVisible(true));
199
+ const keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', () => setKeyboardVisible(false));
200
+ return () => {
201
+ keyboardDidHideListener === null || keyboardDidHideListener === void 0 || keyboardDidHideListener.remove();
202
+ keyboardDidShowListener === null || keyboardDidShowListener === void 0 || keyboardDidShowListener.remove();
203
+ };
204
+ }, []);
205
+ return /*#__PURE__*/React.createElement(KeyboardAvoidingView, {
206
+ behavior: Platform.OS === 'ios' ? 'padding' : 'height',
207
+ style: styles.container
208
+ }, /*#__PURE__*/React.createElement(View, {
209
+ style: styles.content
210
+ }, /*#__PURE__*/React.createElement(View, {
211
+ style: styles.headingContainer
212
+ }, /*#__PURE__*/React.createElement(Text, {
213
+ style: styles.title
214
+ }, "Build your Onairos persona to own your digital identity"), /*#__PURE__*/React.createElement(Text, {
215
+ style: styles.subtitle
216
+ }, "Sign in or create an account")), /*#__PURE__*/React.createElement(View, {
217
+ style: styles.inputContainer
218
+ }, /*#__PURE__*/React.createElement(EmailInput, {
219
+ value: email,
220
+ onChangeText: handleEmailChange,
221
+ onSubmitEditing: handleEmailSubmit,
222
+ returnKeyType: "done",
223
+ blurOnSubmit: true,
224
+ placeholder: "Your email",
225
+ placeholderTextColor: "#9CA3AF"
226
+ }), validationError || error ? /*#__PURE__*/React.createElement(Text, {
227
+ style: styles.errorText
228
+ }, validationError || error) : null), /*#__PURE__*/React.createElement(View, {
229
+ style: styles.dividerContainer
230
+ }, /*#__PURE__*/React.createElement(View, {
231
+ style: styles.dividerLine
232
+ }), /*#__PURE__*/React.createElement(Text, {
233
+ style: styles.dividerText
234
+ }, "Or"), /*#__PURE__*/React.createElement(View, {
235
+ style: styles.dividerLine
236
+ })), /*#__PURE__*/React.createElement(View, {
237
+ style: styles.googleContainer
238
+ }, /*#__PURE__*/React.createElement(GoogleButton, {
239
+ onPress: onGoogleSignIn,
240
+ disabled: loading
241
+ })), /*#__PURE__*/React.createElement(View, {
242
+ style: styles.spacer
243
+ }), /*#__PURE__*/React.createElement(View, {
244
+ style: styles.continueContainer
245
+ }, /*#__PURE__*/React.createElement(PrimaryButton, {
246
+ label: "Continue",
247
+ onPress: handleEmailSubmit,
248
+ disabled: loading || !email.trim(),
249
+ loading: loading
250
+ }))));
251
+ };
252
+ const styles = StyleSheet.create({
253
+ container: {
254
+ flex: 1
255
+ },
256
+ content: {
257
+ flex: 1,
258
+ paddingTop: 24,
259
+ // Added more top padding to lower content
260
+ paddingHorizontal: 24 // Match Enoch app edge padding
261
+ },
262
+ headingContainer: {
263
+ width: '100%',
264
+ // Fill sheet width
265
+ marginBottom: 22,
266
+ // Further reduced spacing to bring subtitle closer to email input
267
+ paddingHorizontal: 0 // No padding at all - text goes to absolute edges
268
+ // Removed alignItems: 'center' - no centering
269
+ },
270
+ title: {
271
+ fontFamily: 'IBM Plex Sans',
272
+ fontWeight: '700',
273
+ fontSize: 24,
274
+ lineHeight: 32,
275
+ color: COLORS.grey800,
276
+ textAlign: 'left',
277
+ // Left-aligned as specified
278
+ marginBottom: SPACING.sm
279
+ // No fixed width - let parent's 24px insets define available width (327px on 375pt device)
280
+ // Removed height constraint to allow natural wrapping
281
+ },
282
+ subtitle: {
283
+ fontFamily: 'Inter',
284
+ fontWeight: '400',
285
+ fontSize: 16,
286
+ lineHeight: 24,
287
+ color: COLORS.grey600,
288
+ textAlign: 'left' // Also left-align subtitle for consistency
289
+ },
290
+ inputContainer: {
291
+ marginBottom: 32,
292
+ // Consistent spacing
293
+ paddingHorizontal: 0 // Match headline - no padding, full width
294
+ },
295
+ dividerContainer: {
296
+ flexDirection: 'row',
297
+ alignItems: 'center',
298
+ marginBottom: 32,
299
+ // Consistent spacing
300
+ paddingHorizontal: 0 // Match headline - no padding, full width
301
+ },
302
+ dividerLine: {
303
+ flex: 1,
304
+ height: 1,
305
+ backgroundColor: '#E5E5E5'
306
+ },
307
+ dividerText: {
308
+ paddingHorizontal: SPACING.md,
309
+ fontSize: 14,
310
+ fontFamily: 'Inter',
311
+ fontWeight: '400',
312
+ color: COLORS.grey500
313
+ },
314
+ googleContainer: {
315
+ marginBottom: SPACING.xl,
316
+ paddingHorizontal: 0 // Match headline - no padding, full width
317
+ },
318
+ spacer: {
319
+ flex: 1,
320
+ minHeight: 20
321
+ },
322
+ continueContainer: {
323
+ paddingBottom: SPACING.xl,
324
+ paddingHorizontal: 0 // Match headline - no padding, full width
325
+ },
326
+ errorText: {
327
+ fontSize: 14,
328
+ fontFamily: 'Inter',
329
+ fontWeight: '400',
330
+ color: '#DC3545',
331
+ // Red color for errors
332
+ marginTop: 8,
333
+ textAlign: 'left'
334
+ }
335
+ });
336
+ export { SignInStep };
337
+ export default SignInStep;
338
+ //# sourceMappingURL=SignInStep.js.map