@onairos/react-native 3.7.2 → 3.7.4

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 (237) hide show
  1. package/lib/commonjs/api/index.js +219 -9
  2. package/lib/commonjs/components/BodyText.js +27 -9
  3. package/lib/commonjs/components/BrandMark.js +111 -10
  4. package/lib/commonjs/components/CodeInput.js +120 -9
  5. package/lib/commonjs/components/EmailInput.js +30 -8
  6. package/lib/commonjs/components/GoogleButton.js +56 -9
  7. package/lib/commonjs/components/HeadingGroup.js +43 -9
  8. package/lib/commonjs/components/LLMDataInputModal.js +664 -14
  9. package/lib/commonjs/components/ModalHeader.js +99 -9
  10. package/lib/commonjs/components/ModalSheet.js +47 -9
  11. package/lib/commonjs/components/Onairos.js +380 -14
  12. package/lib/commonjs/components/OnairosButton.js +313 -13
  13. package/lib/commonjs/components/OnairosSignInButton.js +130 -12
  14. package/lib/commonjs/components/Overlay.js +465 -13
  15. package/lib/commonjs/components/PersonaImage.js +137 -10
  16. package/lib/commonjs/components/PersonaLoadingScreen.js +318 -12
  17. package/lib/commonjs/components/PersonalizationConsentScreen.js +467 -13
  18. package/lib/commonjs/components/PinCreationScreen.js +403 -12
  19. package/lib/commonjs/components/PinInput.js +464 -9
  20. package/lib/commonjs/components/PlatformConnectorsStep.js +1311 -23
  21. package/lib/commonjs/components/PlatformList.js +137 -10
  22. package/lib/commonjs/components/PlatformToggle.js +180 -9
  23. package/lib/commonjs/components/PrimaryButton.js +180 -10
  24. package/lib/commonjs/components/SignInMatchAnimation.js +197 -9
  25. package/lib/commonjs/components/SignInStep.js +345 -12
  26. package/lib/commonjs/components/UniversalOnboarding.js +2780 -30
  27. package/lib/commonjs/components/VerificationStep.js +176 -11
  28. package/lib/commonjs/components/WelcomeScreen.js +461 -22
  29. package/lib/commonjs/components/icons/Basicproficon.js +37 -8
  30. package/lib/commonjs/components/icons/Basicprofile.js +21 -8
  31. package/lib/commonjs/components/icons/Checkbox.js +21 -8
  32. package/lib/commonjs/components/icons/Checkmark.js +27 -8
  33. package/lib/commonjs/components/icons/Contentanalysis.js +21 -8
  34. package/lib/commonjs/components/icons/Contenticon.js +39 -8
  35. package/lib/commonjs/components/icons/EnochE.js +41 -8
  36. package/lib/commonjs/components/icons/Personalityicon.js +30 -8
  37. package/lib/commonjs/components/icons/Personalityprofile.js +21 -8
  38. package/lib/commonjs/components/icons/Personalitytraits.js +21 -8
  39. package/lib/commonjs/components/icons/Userpreferences.js +21 -8
  40. package/lib/commonjs/components/icons/index.js +84 -17
  41. package/lib/commonjs/components/onboarding/OAuthWebView.js +1754 -18
  42. package/lib/commonjs/components/onboarding/OnboardingHeader.js +74 -10
  43. package/lib/commonjs/components/onboarding/PinInput.js +283 -10
  44. package/lib/commonjs/components/onboarding/PlatformConnector.js +249 -11
  45. package/lib/commonjs/config/PLATFORM_APIS.md +849 -0
  46. package/lib/commonjs/config/api.js +56 -7
  47. package/lib/commonjs/constants/index.js +120 -7
  48. package/lib/commonjs/context/AuthContext.js +345 -10
  49. package/lib/commonjs/hooks/useConnectedAccounts.js +111 -9
  50. package/lib/commonjs/hooks/useConnections.js +102 -8
  51. package/lib/commonjs/hooks/useCredentials.js +178 -10
  52. package/lib/commonjs/hooks/useUserConnections.js +148 -10
  53. package/lib/commonjs/index.js +439 -34
  54. package/lib/commonjs/services/apiClient.js +298 -8
  55. package/lib/commonjs/services/biometricPinService.js +180 -8
  56. package/lib/commonjs/services/chatGPTConversationExtractor.js +155 -8
  57. package/lib/commonjs/services/chatGPTConversationService.js +275 -9
  58. package/lib/commonjs/services/claudeConversationExtractor.js +103 -8
  59. package/lib/commonjs/services/claudeConversationService.js +158 -9
  60. package/lib/commonjs/services/connectedAccountsService.js +310 -10
  61. package/lib/commonjs/services/googleAuthService.js +252 -11
  62. package/lib/commonjs/services/hingeDataExtractor.js +105 -8
  63. package/lib/commonjs/services/hingeDataService.js +150 -9
  64. package/lib/commonjs/services/imageCompressionService.js +260 -7
  65. package/lib/commonjs/services/instagramDataExtractor.js +126 -8
  66. package/lib/commonjs/services/instagramDataService.js +163 -9
  67. package/lib/commonjs/services/jwtStorageService.js +276 -7
  68. package/lib/commonjs/services/linkedinDOMExtractor.js +245 -7
  69. package/lib/commonjs/services/linkedinProfileService.js +222 -9
  70. package/lib/commonjs/services/linkedinScrapingService.js +230 -8
  71. package/lib/commonjs/services/llmDataStorage.js +294 -8
  72. package/lib/commonjs/services/mobileTrainingService.js +186 -8
  73. package/lib/commonjs/services/netflixDataExtractor.js +120 -8
  74. package/lib/commonjs/services/netflixDataService.js +198 -9
  75. package/lib/commonjs/services/pinEncryptionService.js +84 -8
  76. package/lib/commonjs/services/pinStorageUtils.js +105 -7
  77. package/lib/commonjs/services/platformAuthService.js +1484 -12
  78. package/lib/commonjs/services/sephoraDataExtractor.js +140 -8
  79. package/lib/commonjs/services/sephoraDataService.js +200 -9
  80. package/lib/commonjs/services/spotifyDataExtractor.js +148 -8
  81. package/lib/commonjs/services/spotifyDataService.js +241 -9
  82. package/lib/commonjs/services/storageService.js +404 -8
  83. package/lib/commonjs/services/telegramDataExtractor.js +115 -8
  84. package/lib/commonjs/services/telegramDataService.js +499 -9
  85. package/lib/commonjs/services/trainingApiHelpers.js +73 -7
  86. package/lib/commonjs/services/userConnectionsService.js +340 -10
  87. package/lib/commonjs/services/youtubeMigrationService.js +416 -10
  88. package/lib/commonjs/theme/index.js +250 -7
  89. package/lib/commonjs/types/ambient.d.js +2 -1
  90. package/lib/commonjs/types/declarations.d.js +2 -1
  91. package/lib/commonjs/types/index.js +6 -1
  92. package/lib/commonjs/types/node-fix.d.js +2 -1
  93. package/lib/commonjs/types/node-override.d.js +2 -1
  94. package/lib/commonjs/types/opacity.d.js +2 -1
  95. package/lib/commonjs/types.js +14 -1
  96. package/lib/commonjs/utils/Portal.js +98 -8
  97. package/lib/commonjs/utils/api.js +130 -9
  98. package/lib/commonjs/utils/assetRegistry.js +210 -35
  99. package/lib/commonjs/utils/auth.js +112 -9
  100. package/lib/commonjs/utils/connectorTests.js +613 -29
  101. package/lib/commonjs/utils/crypto.js +62 -8
  102. package/lib/commonjs/utils/debugHelper.js +64 -1
  103. package/lib/commonjs/utils/encryption.js +76 -7
  104. package/lib/commonjs/utils/eventUtils.js +288 -1
  105. package/lib/commonjs/utils/haptics.js +66 -9
  106. package/lib/commonjs/utils/imagePreloader.js +6 -1
  107. package/lib/commonjs/utils/networkDiagnostics.js +226 -8
  108. package/lib/commonjs/utils/onairosApi.js +350 -9
  109. package/lib/commonjs/utils/programmaticFlow.js +117 -9
  110. package/lib/commonjs/utils/retryHelper.js +220 -1
  111. package/lib/commonjs/utils/secureStorage.js +349 -10
  112. package/lib/commonjs/utils/webviewScripts/chatgpt.js +551 -1
  113. package/lib/commonjs/utils/webviewScripts/claude.js +376 -1
  114. package/lib/commonjs/utils/webviewScripts/hinge.js +411 -1
  115. package/lib/commonjs/utils/webviewScripts/index.js +698 -15
  116. package/lib/commonjs/utils/webviewScripts/instagram.js +454 -1
  117. package/lib/commonjs/utils/webviewScripts/linkedin.js +880 -1
  118. package/lib/commonjs/utils/webviewScripts/netflix.js +382 -1
  119. package/lib/commonjs/utils/webviewScripts/sephora.js +516 -1
  120. package/lib/commonjs/utils/webviewScripts/spotify.js +419 -1
  121. package/lib/commonjs/utils/webviewScripts/telegram.js +678 -1
  122. package/lib/module/api/index.js +211 -1
  123. package/lib/module/components/BodyText.js +20 -1
  124. package/lib/module/components/BrandMark.js +104 -1
  125. package/lib/module/components/CodeInput.js +113 -1
  126. package/lib/module/components/EmailInput.js +23 -1
  127. package/lib/module/components/GoogleButton.js +49 -1
  128. package/lib/module/components/HeadingGroup.js +36 -1
  129. package/lib/module/components/LLMDataInputModal.js +656 -7
  130. package/lib/module/components/ModalHeader.js +92 -1
  131. package/lib/module/components/ModalSheet.js +39 -1
  132. package/lib/module/components/Onairos.js +373 -1
  133. package/lib/module/components/OnairosButton.js +305 -1
  134. package/lib/module/components/OnairosSignInButton.js +121 -1
  135. package/lib/module/components/Overlay.js +456 -1
  136. package/lib/module/components/PersonaImage.js +129 -1
  137. package/lib/module/components/PersonaLoadingScreen.js +310 -1
  138. package/lib/module/components/PersonalizationConsentScreen.js +460 -1
  139. package/lib/module/components/PinCreationScreen.js +396 -1
  140. package/lib/module/components/PinInput.js +456 -1
  141. package/lib/module/components/PlatformConnectorsStep.js +1302 -6
  142. package/lib/module/components/PlatformList.js +129 -1
  143. package/lib/module/components/PlatformToggle.js +173 -1
  144. package/lib/module/components/PrimaryButton.js +172 -1
  145. package/lib/module/components/SignInMatchAnimation.js +189 -1
  146. package/lib/module/components/SignInStep.js +338 -1
  147. package/lib/module/components/UniversalOnboarding.js +2770 -1
  148. package/lib/module/components/VerificationStep.js +168 -1
  149. package/lib/module/components/WelcomeScreen.js +453 -1
  150. package/lib/module/components/icons/Basicproficon.js +30 -1
  151. package/lib/module/components/icons/Basicprofile.js +14 -1
  152. package/lib/module/components/icons/Checkbox.js +14 -1
  153. package/lib/module/components/icons/Checkmark.js +20 -1
  154. package/lib/module/components/icons/Contentanalysis.js +14 -1
  155. package/lib/module/components/icons/Contenticon.js +32 -1
  156. package/lib/module/components/icons/EnochE.js +34 -1
  157. package/lib/module/components/icons/Personalityicon.js +23 -1
  158. package/lib/module/components/icons/Personalityprofile.js +14 -1
  159. package/lib/module/components/icons/Personalitytraits.js +14 -1
  160. package/lib/module/components/icons/Userpreferences.js +14 -1
  161. package/lib/module/components/icons/index.js +13 -1
  162. package/lib/module/components/onboarding/OAuthWebView.js +1746 -1
  163. package/lib/module/components/onboarding/OnboardingHeader.js +66 -1
  164. package/lib/module/components/onboarding/PinInput.js +274 -1
  165. package/lib/module/components/onboarding/PlatformConnector.js +240 -1
  166. package/lib/module/config/PLATFORM_APIS.md +849 -0
  167. package/lib/module/config/api.js +47 -1
  168. package/lib/module/constants/index.js +114 -1
  169. package/lib/module/context/AuthContext.js +335 -1
  170. package/lib/module/hooks/useConnectedAccounts.js +106 -1
  171. package/lib/module/hooks/useConnections.js +95 -1
  172. package/lib/module/hooks/useCredentials.js +171 -6
  173. package/lib/module/hooks/useUserConnections.js +140 -1
  174. package/lib/module/index.js +172 -1
  175. package/lib/module/services/apiClient.js +295 -1
  176. package/lib/module/services/biometricPinService.js +169 -1
  177. package/lib/module/services/chatGPTConversationExtractor.js +149 -1
  178. package/lib/module/services/chatGPTConversationService.js +268 -1
  179. package/lib/module/services/claudeConversationExtractor.js +97 -1
  180. package/lib/module/services/claudeConversationService.js +151 -1
  181. package/lib/module/services/connectedAccountsService.js +293 -1
  182. package/lib/module/services/googleAuthService.js +241 -1
  183. package/lib/module/services/hingeDataExtractor.js +99 -1
  184. package/lib/module/services/hingeDataService.js +143 -1
  185. package/lib/module/services/imageCompressionService.js +250 -1
  186. package/lib/module/services/instagramDataExtractor.js +120 -1
  187. package/lib/module/services/instagramDataService.js +156 -1
  188. package/lib/module/services/jwtStorageService.js +257 -1
  189. package/lib/module/services/linkedinDOMExtractor.js +234 -1
  190. package/lib/module/services/linkedinProfileService.js +210 -1
  191. package/lib/module/services/linkedinScrapingService.js +219 -1
  192. package/lib/module/services/llmDataStorage.js +277 -1
  193. package/lib/module/services/mobileTrainingService.js +173 -1
  194. package/lib/module/services/netflixDataExtractor.js +114 -1
  195. package/lib/module/services/netflixDataService.js +191 -1
  196. package/lib/module/services/pinEncryptionService.js +74 -6
  197. package/lib/module/services/pinStorageUtils.js +93 -1
  198. package/lib/module/services/platformAuthService.js +1461 -1
  199. package/lib/module/services/sephoraDataExtractor.js +134 -1
  200. package/lib/module/services/sephoraDataService.js +193 -1
  201. package/lib/module/services/spotifyDataExtractor.js +142 -1
  202. package/lib/module/services/spotifyDataService.js +234 -1
  203. package/lib/module/services/storageService.js +383 -1
  204. package/lib/module/services/telegramDataExtractor.js +109 -1
  205. package/lib/module/services/telegramDataService.js +493 -1
  206. package/lib/module/services/trainingApiHelpers.js +67 -1
  207. package/lib/module/services/userConnectionsService.js +329 -1
  208. package/lib/module/services/youtubeMigrationService.js +405 -1
  209. package/lib/module/theme/index.js +245 -1
  210. package/lib/module/types.js +10 -1
  211. package/lib/module/utils/Portal.js +90 -1
  212. package/lib/module/utils/api.js +118 -1
  213. package/lib/module/utils/assetRegistry.js +200 -34
  214. package/lib/module/utils/auth.js +100 -1
  215. package/lib/module/utils/connectorTests.js +600 -27
  216. package/lib/module/utils/crypto.js +54 -1
  217. package/lib/module/utils/debugHelper.js +54 -1
  218. package/lib/module/utils/encryption.js +67 -1
  219. package/lib/module/utils/eventUtils.js +270 -1
  220. package/lib/module/utils/haptics.js +59 -8
  221. package/lib/module/utils/imagePreloader.js +3 -1
  222. package/lib/module/utils/networkDiagnostics.js +217 -1
  223. package/lib/module/utils/onairosApi.js +333 -1
  224. package/lib/module/utils/programmaticFlow.js +111 -1
  225. package/lib/module/utils/retryHelper.js +211 -1
  226. package/lib/module/utils/secureStorage.js +330 -6
  227. package/lib/module/utils/webviewScripts/chatgpt.js +545 -1
  228. package/lib/module/utils/webviewScripts/claude.js +370 -1
  229. package/lib/module/utils/webviewScripts/hinge.js +405 -1
  230. package/lib/module/utils/webviewScripts/index.js +434 -1
  231. package/lib/module/utils/webviewScripts/instagram.js +448 -1
  232. package/lib/module/utils/webviewScripts/linkedin.js +874 -1
  233. package/lib/module/utils/webviewScripts/netflix.js +376 -1
  234. package/lib/module/utils/webviewScripts/sephora.js +510 -1
  235. package/lib/module/utils/webviewScripts/spotify.js +413 -1
  236. package/lib/module/utils/webviewScripts/telegram.js +672 -1
  237. package/package.json +2 -2
@@ -1 +1,189 @@
1
- function _0x58b2(){const _0x150d55=['window','complete','found','bjbtI','bsEpY','gsycw','mBfwP','searching','Finding\x20Your\x20Matches','large','#E9C46A','Matches\x20Found!','We\x27ve\x20found\x20','Complete\x20your\x20profile\x20to\x20see\x20who\x20they\x20are.','Welcome\x20to\x20Enoch!','@...','#f5e7c1','#DDB957','mEzPn','Cywyz','Value','eAjCv','sTPDX','VlfqL','EeCKB','Higsy','sWRBA','parallel','timing','GQOpt','UsaRD','KLDvG','TgvFH','floor','cFIjz','qjpVr','grwzB','OiOFj','Uetjc','nYzib','ngibB','DxmNJ','start','rtWmm','XMOpo','iDgHy','lOdhe','CMjPB','ipFgE','AQHiU','random','pIlXB','eOyHx','UWNbp','createElement','container','content','vDdES','Fragment','title','bhVmB','loader','message','Searching\x20for\x20potential\x20connections\x20based\x20on\x20your\x20profile...','GsKCl','matchCount','\x20potential\x20connections\x20for\x20you!','RzCBp','FwuZT','ArnAU','split','button','hBfAn','UOFvc','slwZt','gradientButton','buttonText','Continue','create','rgba(0,0,0,0.7)','center','600','#333','#777','bold','#FFFFFF','100%'];_0x58b2=function(){return _0x150d55;};return _0x58b2();}import React,{useState,useEffect}from'react';import{View,Text,StyleSheet,Modal,ActivityIndicator,Animated,Dimensions,TouchableOpacity}from'react-native';function _0x374d(_0x58b229,_0x374d7d){_0x58b229=_0x58b229-0x0;const _0x3c3dff=_0x58b2();let _0x4ed7e1=_0x3c3dff[_0x58b229];return _0x4ed7e1;}import _0x34a466 from'react-native-linear-gradient';const {width,height}=Dimensions['get'](_0x374d(0x0)),SignInMatchAnimation=({email:_0x42aba7,visible:_0x3acb3f,onComplete:_0x5c9477})=>{const _0x5e18cd={'GIxoA':function(_0x8a14d3){return _0x8a14d3();},'sTPDX':function(_0x388fb9,_0x49167e){return _0x388fb9(_0x49167e);},'VlfqL':_0x374d(0x1),'EeCKB':_0x374d(0x2),'Higsy':function(_0x4125cf,_0x13df6f){return _0x4125cf!==_0x13df6f;},'FlGwU':_0x374d(0x3),'sWRBA':_0x374d(0x4),'rtWmm':function(_0x1d2b49,_0xecc57d){return _0x1d2b49+_0xecc57d;},'XMOpo':function(_0x39a844,_0x2ca2b,_0x148709){return _0x39a844(_0x2ca2b,_0x148709);},'iDgHy':_0x374d(0x5),'lOdhe':_0x374d(0x6),'mEzPn':_0x374d(0x7),'Cywyz':function(_0x253964,_0x5b228b){return _0x253964(_0x5b228b);},'SLhQq':function(_0x41fcb4,_0x54b711){return _0x41fcb4(_0x54b711);},'eJJVK':'none','vDdES':function(_0x4721e7,_0x36fa19){return _0x4721e7===_0x36fa19;},'bhVmB':_0x374d(0x8),'qLPJM':_0x374d(0x9),'UOFvc':_0x374d(0xa),'GsKCl':_0x374d(0xb),'JlMzp':_0x374d(0xc),'RzCBp':_0x374d(0xd),'FwuZT':_0x374d(0xe),'ArnAU':'We\x27ll\x20send\x20match\x20notifications\x20to\x20','QldBW':_0x374d(0xf),'hBfAn':_0x374d(0x10),'slwZt':_0x374d(0x11)},[_0x5041a7,_0x3d29d7]=_0x5e18cd['sTPDX'](useState,_0x5e18cd[_0x374d(0x12)]),[_0x1f5b8e,_0x232a4f]=_0x5e18cd['Cywyz'](useState,0x0),_0x8aa00b=_0x5e18cd[_0x374d(0x13)](useState,new Animated['Value'](0x0))[0x0],_0x27a753=_0x5e18cd['SLhQq'](useState,new Animated[(_0x374d(0x14))](0.9))[0x0];useEffect(()=>{const _0x2a8b45={'GQOpt':function(_0x2afa90,_0x3e99fd){return _0x2afa90!==_0x3e99fd;},'UsaRD':_0x374d(0x15),'KLDvG':function(_0x5da582,_0x507647){return _0x5e18cd[_0x374d(0x16)](_0x5da582,_0x507647);},'TgvFH':_0x5e18cd[_0x374d(0x17)],'cFIjz':function(_0x35d2d4,_0x2babee){return _0x35d2d4*_0x2babee;},'qjpVr':_0x5e18cd[_0x374d(0x18)],'grwzB':function(_0x778799,_0x186778,_0x435b11){return _0x778799(_0x186778,_0x435b11);}};_0x3acb3f&&(_0x5e18cd[_0x374d(0x19)](_0x5e18cd['FlGwU'],_0x5e18cd[_0x374d(0x1a)])?(Animated[_0x374d(0x1b)]([Animated[_0x374d(0x1c)](_0x8aa00b,{'toValue':0x1,'duration':0x258,'useNativeDriver':!![]}),Animated['timing'](_0x27a753,{'toValue':0x1,'duration':0x258,'useNativeDriver':!![]})])['start'](),setTimeout(()=>{const _0x3b9ff0={'OiOFj':function(_0x3bcbc4,_0x4e3508){return _0x2a8b45[_0x374d(0x1d)](_0x3bcbc4,_0x4e3508);},'Uetjc':_0x2a8b45[_0x374d(0x1e)],'ngibB':function(_0x33c04e,_0x413c18){return _0x2a8b45[_0x374d(0x1f)](_0x33c04e,_0x413c18);},'DxmNJ':_0x2a8b45[_0x374d(0x20)]},_0x1d564b=Math[_0x374d(0x21)](_0x2a8b45[_0x374d(0x22)](Math['random'](),0x6))+0x3;_0x232a4f(_0x1d564b),_0x2a8b45[_0x374d(0x1f)](_0x3d29d7,_0x2a8b45[_0x374d(0x23)]),_0x2a8b45[_0x374d(0x24)](setTimeout,()=>{_0x3b9ff0[_0x374d(0x25)](_0x3b9ff0[_0x374d(0x26)],_0x374d(0x27))?_0x3b9ff0[_0x374d(0x28)](_0x3d29d7,_0x3b9ff0[_0x374d(0x29)]):Animated[_0x374d(0x1b)]([Animated[_0x374d(0x1c)](_0x1c5cc1,{'toValue':0x0,'duration':0x190,'useNativeDriver':!![]}),Animated[_0x374d(0x1c)](_0x271db1,{'toValue':0.9,'duration':0x190,'useNativeDriver':!![]})])[_0x374d(0x2a)](()=>{_0x4ef5a3();});},0xbb8);},0x9c4)):_0x5e18cd['GIxoA'](_0x2d34c8));},[_0x3acb3f,_0x8aa00b,_0x27a753]);const _0x2820c7=()=>{const _0x32dde5={'AQHiU':function(_0x4190c8,_0x5069ab){return _0x5e18cd[_0x374d(0x2b)](_0x4190c8,_0x5069ab);},'CDYwm':function(_0x2d82a7,_0x277b40){return _0x2d82a7*_0x277b40;},'KqiAz':function(_0x1490b6,_0x469a4b){return _0x1490b6(_0x469a4b);},'pIlXB':_0x374d(0x2),'CMjPB':_0x374d(0x1),'ipFgE':function(_0x5d950a,_0x531ebb,_0x2d8802){return _0x5e18cd[_0x374d(0x2c)](_0x5d950a,_0x531ebb,_0x2d8802);}};if(_0x5e18cd[_0x374d(0x2d)]===_0x5e18cd[_0x374d(0x2e)]){const _0x156cb4={'eOyHx':function(_0x14668f,_0x31975e){return _0x32dde5['KqiAz'](_0x14668f,_0x31975e);},'UWNbp':_0x32dde5[_0x374d(0x2f)]};Animated[_0x374d(0x1b)]([Animated['timing'](_0x4a1970,{'toValue':0x1,'duration':0x258,'useNativeDriver':!![]}),Animated['timing'](_0x49dd51,{'toValue':0x1,'duration':0x258,'useNativeDriver':!![]})])[_0x374d(0x2a)](),_0x32dde5[_0x374d(0x30)](_0x30e6ca,()=>{const _0x23d17a=_0x32dde5[_0x374d(0x31)](_0x43376e['floor'](_0x32dde5['CDYwm'](_0x104177[_0x374d(0x32)](),0x6)),0x3);_0x5560ce(_0x23d17a),_0x32dde5['KqiAz'](_0x3fd1e6,_0x32dde5[_0x374d(0x33)]),_0x1471f8(()=>{_0x156cb4[_0x374d(0x34)](_0x89d95a,_0x156cb4[_0x374d(0x35)]);},0xbb8);},0x9c4);}else Animated[_0x374d(0x1b)]([Animated[_0x374d(0x1c)](_0x8aa00b,{'toValue':0x0,'duration':0x190,'useNativeDriver':!![]}),Animated['timing'](_0x27a753,{'toValue':0.9,'duration':0x190,'useNativeDriver':!![]})])[_0x374d(0x2a)](()=>{_0x5c9477();});};if(!_0x3acb3f)return null;return React[_0x374d(0x36)](Modal,{'visible':_0x3acb3f,'transparent':!![],'animationType':_0x5e18cd['eJJVK']},React['createElement'](View,{'style':styles[_0x374d(0x37)]},React[_0x374d(0x36)](Animated['View'],{'style':[styles[_0x374d(0x38)],{'opacity':_0x8aa00b,'transform':[{'scale':_0x27a753}]}]},_0x5e18cd[_0x374d(0x39)](_0x5041a7,_0x5e18cd[_0x374d(0x12)])&&React[_0x374d(0x36)](React[_0x374d(0x3a)],null,React[_0x374d(0x36)](Text,{'style':styles[_0x374d(0x3b)]},_0x5e18cd[_0x374d(0x3c)]),React[_0x374d(0x36)](ActivityIndicator,{'size':_0x5e18cd['qLPJM'],'color':_0x5e18cd['UOFvc'],'style':styles[_0x374d(0x3d)]}),React['createElement'](Text,{'style':styles[_0x374d(0x3e)]},_0x374d(0x3f))),_0x5041a7===_0x374d(0x2)&&React[_0x374d(0x36)](React[_0x374d(0x3a)],null,React['createElement'](Text,{'style':styles[_0x374d(0x3b)]},_0x5e18cd[_0x374d(0x40)]),React[_0x374d(0x36)](View,{'style':styles['matchCircle']},React[_0x374d(0x36)](Text,{'style':styles[_0x374d(0x41)]},_0x1f5b8e)),React[_0x374d(0x36)](Text,{'style':styles['message']},_0x5e18cd['JlMzp'],_0x1f5b8e,_0x374d(0x42)),React['createElement'](Text,{'style':styles['subMessage']},_0x5e18cd[_0x374d(0x43)])),_0x5041a7===_0x374d(0x1)&&React[_0x374d(0x36)](React[_0x374d(0x3a)],null,React[_0x374d(0x36)](Text,{'style':styles[_0x374d(0x3b)]},_0x5e18cd[_0x374d(0x44)]),React[_0x374d(0x36)](Text,{'style':styles[_0x374d(0x3e)]},_0x5e18cd[_0x374d(0x45)],_0x42aba7[_0x374d(0x46)]('@')[0x0],_0x5e18cd['QldBW']),React['createElement'](TouchableOpacity,{'style':styles[_0x374d(0x47)],'onPress':_0x2820c7},React[_0x374d(0x36)](_0x34a466,{'colors':[_0x5e18cd[_0x374d(0x48)],_0x5e18cd[_0x374d(0x49)],_0x5e18cd[_0x374d(0x4a)]],'start':{'x':0x0,'y':0x0},'end':{'x':0x1,'y':0x0},'style':styles[_0x374d(0x4b)]},React['createElement'](Text,{'style':styles[_0x374d(0x4c)]},_0x374d(0x4d))))))));},styles=StyleSheet[_0x374d(0x4e)]({'container':{'flex':0x1,'backgroundColor':_0x374d(0x4f),'justifyContent':_0x374d(0x50),'alignItems':_0x374d(0x50)},'content':{'width':width*0.85,'backgroundColor':'#FFFFFF','borderRadius':0x14,'padding':0x18,'alignItems':_0x374d(0x50),'shadowColor':'#000','shadowOffset':{'width':0x0,'height':0x4},'shadowOpacity':0.3,'shadowRadius':0x8,'elevation':0xa},'title':{'fontSize':0x18,'fontWeight':_0x374d(0x51),'color':_0x374d(0x52),'marginBottom':0x14,'textAlign':_0x374d(0x50)},'loader':{'marginVertical':0x18},'message':{'fontSize':0x12,'color':'#555','textAlign':_0x374d(0x50),'marginBottom':0x10,'lineHeight':0x18},'subMessage':{'fontSize':0x10,'color':_0x374d(0x53),'textAlign':_0x374d(0x50),'marginTop':0x8},'matchCircle':{'width':0x64,'height':0x64,'borderRadius':0x32,'backgroundColor':_0x374d(0xa),'justifyContent':_0x374d(0x50),'alignItems':_0x374d(0x50),'marginVertical':0x14},'matchCount':{'fontSize':0x28,'fontWeight':_0x374d(0x54),'color':_0x374d(0x55)},'button':{'width':_0x374d(0x56),'marginTop':0x18,'borderRadius':0x8,'overflow':'hidden'},'gradientButton':{'paddingVertical':0xe,'alignItems':_0x374d(0x50),'justifyContent':_0x374d(0x50)},'buttonText':{'color':_0x374d(0x52),'fontSize':0x10,'fontWeight':_0x374d(0x51)}});export default SignInMatchAnimation;
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
- function _0x3b17(_0x3fff17,_0x3b17f5){_0x3fff17=_0x3fff17-0x0;const _0xde8a53=_0x3fff();let _0x3e3023=_0xde8a53[_0x3fff17];return _0x3e3023;}function _0x3fff(){const _0x10621f=['com','org','net','edu','mil','app','dev','online','site','info','xyz','co.nz','com.br','co.jp','co.in','org.uk','net.au','gov.uk','ac.uk','edu.au','con','cmo','vom','ocm','cpm','ckm','comm','comn','ogr','orgg','nte','nett','ent','bet','ioo','lio','gmai','gmal','outlok','outloo','outlokk','yahooo','yhoo','hotmai','hotmal','hotmial','keyboardDidShow','keyboardDidHide','\x20Did\x20you\x20mean\x20.org?','❌\x20Email\x20validation\x20failed:','✅\x20Email\x20validation\x20passed','Please\x20enter\x20a\x20valid\x20email\x20address','copm','rog','kTzeS','\x20Did\x20you\x20mean\x20.net?','\x20Did\x20you\x20mean\x20.io?','gmail','outlook','yahoo','hotmail','icloud','aol','protonmail','yahoo.co.uk','yahoo.co.jp','yahoo.com.br','outlook.co.uk','mGfaR','yzKnu','trim','test','pKkwW','lastIndexOf','substring','split','vLOgC','length','AMDlZ','bZUWZ','nzYGX','YhLiw','YOVjB','QtxOt','QgSUZ','VKITY','dypeq','zeylD','umWdT','OJcdj','zmpMk','Swoaz','vcypD','QyeMg','UCdWi','MaPmh','Bpdbs','ORZGW','frmfA','MHjIt','addListener','YWnjB','gRaEO','bzdDs','remove','HHKcU','qsuPH','Invalid\x20email\x20domain\x20(.','has','DgJhw','RZkVo','join','wSKPm','GWjRC','LXpqV','XdiiK','KNGNV','ErXGK','xIhIz','PtFXG','YfThp','includes','yblle','XHLtI','geFNN','hotmail.co.uk','IySNe','flnVM','isValid','XvBSg','error','log','ykOFW','reviewer@bypass.com','KkOSJ','🧪\x20Test\x20bypass\x20detected\x20-\x20skipping\x20to\x20verification\x20screen','test@bypass.com','OAyNZ','Invalid\x20email\x20address','Sign\x20in\x20or\x20create\x20an\x20account','done','Your\x20email','BLenn','Atmmp','chATL','gUBWS','jgmWJ','wamCm','zfiAQ','toLowerCase','reviewer','ftpwy','oCzxQ','fljmg','uTcLG','TiADE','NcROG','eFVrl','Zjisc','RjLRx','Hkxkp','nBFzb','vxSNN','createElement','padding','container','content','headingContainer','title','VamFS','subtitle','OIoGg','inputContainer','Inpcv','spbeO','#9CA3AF','EvfFG','errorText','dividerContainer','dividerLine','dividerText','googleContainer','vZDeW','create','100%','IBM\x20Plex\x20Sans','700','grey800','left','400','grey600','center','#E5E5E5','grey500','#DC3545'];_0x3fff=function(){return _0x10621f;};return _0x3fff();}import React,{useState,useEffect}from'react';import{View,Text,StyleSheet,KeyboardAvoidingView,Platform,Keyboard}from'react-native';import{COLORS,SPACING}from'../theme';import _0x5263e9 from'./EmailInput';import _0x536262 from'./GoogleButton';import _0x1b3648 from'./PrimaryButton';const VALID_TLDS=new Set([_0x3b17(0x0),_0x3b17(0x1),_0x3b17(0x2),_0x3b17(0x3),'gov',_0x3b17(0x4),'int','io','co','ai',_0x3b17(0x5),_0x3b17(0x6),'tech',_0x3b17(0x7),_0x3b17(0x8),'web',_0x3b17(0x9),'biz','me','tv','cc',_0x3b17(0xa),'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','co.uk','com.au',_0x3b17(0xb),'co.za',_0x3b17(0xc),_0x3b17(0xd),'co.kr',_0x3b17(0xe),_0x3b17(0xf),_0x3b17(0x10),_0x3b17(0x11),_0x3b17(0x12),_0x3b17(0x13)]),INVALID_TLDS=new Set([_0x3b17(0x14),_0x3b17(0x15),_0x3b17(0x16),_0x3b17(0x17),'cm',_0x3b17(0x18),_0x3b17(0x19),'om',_0x3b17(0x1a),_0x3b17(0x1b),'copm',_0x3b17(0x1c),'og',_0x3b17(0x1d),'rog','rg',_0x3b17(0x1e),'ne',_0x3b17(0x1f),_0x3b17(0x20),_0x3b17(0x21),'oi',_0x3b17(0x22),_0x3b17(0x23),_0x3b17(0x24),'gmial','gmil',_0x3b17(0x25),'gamil',_0x3b17(0x26),_0x3b17(0x27),_0x3b17(0x28),_0x3b17(0x29),'yaho',_0x3b17(0x2a),_0x3b17(0x2b),_0x3b17(0x2c),_0x3b17(0x2d)]),validateEmail=_0x294273=>{const _0x46711c={'VKITY':function(_0x456bc3,_0xeeb700){return _0x456bc3===_0xeeb700;},'MHjIt':_0x3b17(0x2e),'YWnjB':_0x3b17(0x2f),'UCdWi':_0x3b17(0x30),'flnVM':function(_0xf82f58,_0x4e3aaf){return _0xf82f58(_0x4e3aaf);},'XvBSg':_0x3b17(0x31),'uWHFR':'Invalid\x20email\x20address','ykOFW':_0x3b17(0x32),'pKkwW':_0x3b17(0x33),'vLOgC':function(_0x375a2b,_0xeb9882){return _0x375a2b<_0xeb9882;},'AMDlZ':function(_0x2a4dfe,_0x3e9c59){return _0x2a4dfe>=_0x3e9c59;},'yCFol':function(_0x162e89,_0x4ab1d0){return _0x162e89-_0x4ab1d0;},'PBEAA':_0x3b17(0x14),'bZUWZ':function(_0x25f412,_0x159f47){return _0x25f412===_0x159f47;},'nzYGX':_0x3b17(0x15),'YhLiw':function(_0x3a3319,_0x376639){return _0x3a3319===_0x376639;},'tpNCr':_0x3b17(0x16),'YOVjB':function(_0x5d5cdd,_0x41aadc){return _0x5d5cdd===_0x41aadc;},'QtxOt':_0x3b17(0x17),'QgSUZ':_0x3b17(0x18),'dypeq':_0x3b17(0x1a),'zeylD':function(_0x36d209,_0x245bd2){return _0x36d209===_0x245bd2;},'umWdT':_0x3b17(0x1b),'OJcdj':function(_0x1d750a,_0x4b3e9e){return _0x1d750a===_0x4b3e9e;},'tIFPK':_0x3b17(0x34),'zmpMk':_0x3b17(0x1c),'Swoaz':_0x3b17(0x1d),'vcypD':function(_0x20d9db,_0x1a2f93){return _0x20d9db===_0x1a2f93;},'VoNby':_0x3b17(0x35),'ArDzx':_0x3b17(0x36),'uFCUc':function(_0x12d784,_0x1ec788){return _0x12d784===_0x1ec788;},'MaPmh':function(_0x3c8469,_0x539eaa){return _0x3c8469===_0x539eaa;},'Bpdbs':_0x3b17(0x1f),'ORZGW':function(_0x800b0a,_0x5309af){return _0x800b0a===_0x5309af;},'zPxaK':'frmfA','HHKcU':_0x3b17(0x37),'qsuPH':_0x3b17(0x22),'lkAkn':'lio','DDvZM':_0x3b17(0x38),'woHUn':function(_0x33d703,_0x4baf97){return _0x33d703<_0x4baf97;},'DgJhw':function(_0x467bf6,_0x22c987){return _0x467bf6<=_0x22c987;},'RZkVo':'cRhOJ','wSKPm':_0x3b17(0x39),'GWjRC':_0x3b17(0x3a),'LXpqV':_0x3b17(0x3b),'XdiiK':_0x3b17(0x3c),'KNGNV':_0x3b17(0x3d),'ErXGK':_0x3b17(0x3e),'xIhIz':_0x3b17(0x3f),'PtFXG':'zoho','YfThp':_0x3b17(0x0),'yblle':function(_0x3e66ab,_0x229078){return _0x3e66ab!==_0x229078;},'HwGMM':_0x3b17(0x40),'pgOoh':_0x3b17(0x41),'XHLtI':_0x3b17(0x42),'Hlrsy':'yahoo.com.au','geFNN':_0x3b17(0x43),'ROPnr':function(_0x5b0bf4,_0x583961){return _0x5b0bf4===_0x583961;},'IySNe':_0x3b17(0x44),'MYydc':_0x3b17(0x45)},_0x4d68ec=_0x294273[_0x3b17(0x46)]()['toLowerCase'](),_0x20b440=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;if(!_0x20b440[_0x3b17(0x47)](_0x4d68ec))return{'isValid':![],'error':_0x46711c[_0x3b17(0x48)]};const _0x4710e4=_0x4d68ec[_0x3b17(0x49)]('@'),_0x4508f0=_0x4d68ec[_0x3b17(0x4a)](_0x4710e4+0x1),_0x124414=_0x4508f0[_0x3b17(0x4b)]('.');if(_0x46711c[_0x3b17(0x4c)](_0x124414[_0x3b17(0x4d)],0x2))return{'isValid':![],'error':_0x46711c[_0x3b17(0x48)]};const _0x4e5dad=_0x124414[_0x124414[_0x3b17(0x4d)]-0x1],_0xd93d6c=_0x46711c[_0x3b17(0x4e)](_0x124414[_0x3b17(0x4d)],0x2)?_0x124414[_0x46711c['yCFol'](_0x124414['length'],0x2)]+'.'+_0x4e5dad:'';if(INVALID_TLDS['has'](_0x4e5dad)){let _0x5b2bfd='';if(_0x4e5dad===_0x46711c['PBEAA']||_0x46711c[_0x3b17(0x4f)](_0x4e5dad,_0x46711c[_0x3b17(0x50)])||_0x46711c[_0x3b17(0x51)](_0x4e5dad,_0x46711c['tpNCr'])||_0x46711c[_0x3b17(0x52)](_0x4e5dad,_0x46711c[_0x3b17(0x53)])||_0x46711c[_0x3b17(0x52)](_0x4e5dad,_0x46711c[_0x3b17(0x54)])||_0x46711c[_0x3b17(0x55)](_0x4e5dad,_0x46711c[_0x3b17(0x56)])||_0x46711c[_0x3b17(0x57)](_0x4e5dad,_0x46711c[_0x3b17(0x58)])||_0x46711c[_0x3b17(0x59)](_0x4e5dad,_0x46711c['tIFPK']))_0x5b2bfd='\x20Did\x20you\x20mean\x20.com?';else{if(_0x4e5dad===_0x46711c[_0x3b17(0x5a)]||_0x4e5dad==='og'||_0x4e5dad===_0x46711c[_0x3b17(0x5b)]||_0x46711c[_0x3b17(0x5c)](_0x4e5dad,_0x46711c['VoNby'])){if(_0x46711c['ArDzx']!==_0x3b17(0x5d))_0x5b2bfd=_0x46711c[_0x3b17(0x5e)];else return{'isValid':![],'error':_0x3b17(0x33)};}else{if(_0x46711c['uFCUc'](_0x4e5dad,_0x3b17(0x1e))||_0x46711c[_0x3b17(0x5f)](_0x4e5dad,'ne')||_0x4e5dad===_0x46711c[_0x3b17(0x60)]||_0x46711c[_0x3b17(0x61)](_0x4e5dad,'ent')){if(_0x3b17(0x62)!==_0x46711c['zPxaK']){const _0x22bf9d={'gRaEO':function(_0x4a9fdb,_0x38b458){return _0x4a9fdb===_0x38b458;},'bzdDs':function(_0x1fdc8d,_0x5074ab){return _0x46711c[_0x3b17(0x55)](_0x1fdc8d,_0x5074ab);}},_0x481c78=_0x237cce['addListener'](_0x46711c[_0x3b17(0x63)],()=>_0x2c7513(!![])),_0x47757b=_0x41438d[_0x3b17(0x64)](_0x46711c[_0x3b17(0x65)],()=>_0x5d30f9(![]));return()=>{_0x22bf9d[_0x3b17(0x66)](_0x47757b,null)||_0x22bf9d[_0x3b17(0x67)](_0x47757b,void 0x0)||_0x47757b['remove'](),_0x481c78===null||_0x481c78===void 0x0||_0x481c78[_0x3b17(0x68)]();};}else _0x5b2bfd=_0x46711c[_0x3b17(0x69)];}else(_0x4e5dad==='oi'||_0x4e5dad===_0x46711c[_0x3b17(0x6a)]||_0x46711c[_0x3b17(0x59)](_0x4e5dad,_0x46711c['lkAkn']))&&(_0x5b2bfd=_0x46711c['DDvZM']);}}return{'isValid':![],'error':_0x3b17(0x6b)+_0x4e5dad+').'+_0x5b2bfd};}if(_0x46711c['woHUn'](_0x4e5dad[_0x3b17(0x4d)],0x2))return{'isValid':![],'error':_0x46711c[_0x3b17(0x48)]};const _0x55fc0c=VALID_TLDS[_0x3b17(0x6c)](_0x4e5dad)||VALID_TLDS[_0x3b17(0x6c)](_0xd93d6c);if(!_0x55fc0c&&_0x46711c[_0x3b17(0x6d)](_0x4e5dad[_0x3b17(0x4d)],0x2)){if('PYfVG'===_0x46711c[_0x3b17(0x6e)])_0x167e3c=_0x46711c[_0x3b17(0x5e)];else return{'isValid':![],'error':_0x3b17(0x6b)+_0x4e5dad+').\x20Please\x20check\x20your\x20email.'};}const _0x3a9a3a=_0x124414['slice'](0x0,-0x1)[_0x3b17(0x6f)]('.'),_0x53dde1={'gmai':_0x46711c[_0x3b17(0x70)],'gmial':_0x46711c[_0x3b17(0x70)],'gmil':_0x46711c[_0x3b17(0x70)],'gmal':_0x3b17(0x39),'gamil':_0x46711c['wSKPm'],'outlok':_0x46711c[_0x3b17(0x71)],'outloo':_0x46711c[_0x3b17(0x71)],'outlokk':_0x46711c[_0x3b17(0x71)],'yahooo':_0x46711c['LXpqV'],'yaho':_0x46711c[_0x3b17(0x72)],'yhoo':_0x46711c[_0x3b17(0x72)],'hotmai':_0x46711c[_0x3b17(0x73)],'hotmal':_0x3b17(0x3c),'hotmial':_0x46711c[_0x3b17(0x73)],'iclod':_0x46711c[_0x3b17(0x74)],'iclould':_0x46711c[_0x3b17(0x74)]};if(_0x53dde1[_0x3a9a3a])return{'isValid':![],'error':'Did\x20you\x20mean\x20'+_0x53dde1[_0x3a9a3a]+'.'+_0x4e5dad+'?'};const _0x3b07ec=[_0x46711c['wSKPm'],_0x46711c[_0x3b17(0x72)],_0x46711c[_0x3b17(0x73)],_0x46711c[_0x3b17(0x71)],_0x3b17(0x3d),_0x46711c[_0x3b17(0x75)],_0x46711c[_0x3b17(0x76)],_0x46711c[_0x3b17(0x77)]],_0x5e8728={'gmail':_0x3b17(0x0),'yahoo':_0x46711c[_0x3b17(0x78)],'hotmail':_0x46711c[_0x3b17(0x78)],'outlook':_0x46711c[_0x3b17(0x78)],'icloud':_0x3b17(0x0),'aol':_0x46711c['YfThp'],'protonmail':_0x46711c[_0x3b17(0x78)],'zoho':_0x3b17(0x0)};if(_0x3b07ec[_0x3b17(0x79)](_0x3a9a3a)&&_0x46711c[_0x3b17(0x7a)](_0x4e5dad,_0x5e8728[_0x3a9a3a])){const _0x4d7851=[_0x46711c['HwGMM'],_0x46711c['pgOoh'],_0x46711c[_0x3b17(0x7b)],_0x46711c['Hlrsy'],_0x46711c[_0x3b17(0x7c)],_0x3b17(0x7d),'hotmail.co.jp'],_0x18e033=_0x3a9a3a+'.'+_0x4e5dad;if(!_0x4d7851[_0x3b17(0x79)](_0x18e033)){if(_0x46711c['ROPnr'](_0x46711c[_0x3b17(0x7e)],_0x46711c['MYydc'])){const _0x3f47a8=_0x46711c[_0x3b17(0x7f)](_0x194fd4,_0x9a6d42);if(!_0x3f47a8[_0x3b17(0x80)]){_0x2b6730['log'](_0x46711c[_0x3b17(0x81)],_0x3f47a8[_0x3b17(0x82)]),_0x46711c[_0x3b17(0x7f)](_0x4fbd21,_0x3f47a8[_0x3b17(0x82)]||_0x46711c['uWHFR']);return;}_0x147f95[_0x3b17(0x83)](_0x46711c[_0x3b17(0x84)]),_0x276e80(''),_0x46711c[_0x3b17(0x7f)](_0x28610a,_0x3c6674['trim']());}else return{'isValid':![],'error':'Did\x20you\x20mean\x20'+_0x3a9a3a+'.'+_0x5e8728[_0x3a9a3a]+'?'};}}return{'isValid':!![]};},SignInStep=({onEmailSubmit:_0x59803c,onGoogleSignIn:_0x3c31b8,onContinue:_0x372de9,loading:loading=![],error:error='',initialEmail:initialEmail=''})=>{const _0x4d3cf3={'chATL':_0x3b17(0x85),'gUBWS':_0x3b17(0x86),'BLenn':function(_0x2b06fc,_0x2e650d){return _0x2b06fc(_0x2e650d);},'uTcLG':_0x3b17(0x87),'zfiAQ':_0x3b17(0x88),'fljmg':_0x3b17(0x38),'jgmWJ':function(_0x376a0d,_0x19690a){return _0x376a0d===_0x19690a;},'wamCm':'PWOkP','ybMVf':'NKMxB','ODBmQ':function(_0x56be7f,_0x5493ba){return _0x56be7f===_0x5493ba;},'ftpwy':_0x3b17(0x47),'aLjDr':'ybdRf','oCzxQ':_0x3b17(0x89),'TiADE':function(_0x44dcd7,_0x5997db){return _0x44dcd7!==_0x5997db;},'eFVrl':'hEGST','Mmfnt':'Ivsjn','RjLRx':_0x3b17(0x31),'Hkxkp':_0x3b17(0x8a),'vxSNN':function(_0x2db992,_0x20abe4){return _0x2db992===_0x20abe4;},'nBFzb':_0x3b17(0x2e),'mFHoa':_0x3b17(0x2f),'Atmmp':function(_0xc18863,_0x3200e4){return _0xc18863(_0x3200e4);},'anazY':function(_0x5d2fe2,_0x3116fd){return _0x5d2fe2===_0x3116fd;},'StUiD':'height','VamFS':'Build\x20your\x20Onairos\x20persona\x20to\x20own\x20your\x20digital\x20identity','OIoGg':_0x3b17(0x8b),'Inpcv':_0x3b17(0x8c),'spbeO':_0x3b17(0x8d),'EvfFG':function(_0x13667f,_0x410c8d){return _0x13667f||_0x410c8d;},'vZDeW':'Continue'},[_0x7aa540,_0x308549]=useState(initialEmail),[_0x103a0e,_0x64ac8c]=_0x4d3cf3[_0x3b17(0x8e)](useState,![]),[_0x2dfd69,_0x5e30e1]=_0x4d3cf3[_0x3b17(0x8f)](useState,''),_0x13299a=_0x2f11d9=>{const _0x4dd44d={'hkDBJ':'🔍\x20Reviewer\x20bypass\x20detected\x20in\x20new\x20UI','yYdRM':function(_0x2ad34d,_0x207cfb){return _0x2ad34d(_0x207cfb);},'vCGSj':_0x4d3cf3[_0x3b17(0x90)]};if(_0x4d3cf3[_0x3b17(0x91)]!==_0x4d3cf3['gUBWS']){_0x5d202e['log'](_0x4dd44d['hkDBJ']),_0x4dd44d['yYdRM'](_0x18b57b,_0x4dd44d['vCGSj']);return;}else _0x4d3cf3[_0x3b17(0x8e)](_0x308549,_0x2f11d9),_0x2dfd69&&_0x4d3cf3[_0x3b17(0x8e)](_0x5e30e1,'');},_0x17eb78=()=>{const _0x48ae3f={'Zjisc':function(_0x16c281,_0x1f4343){return _0x16c281(_0x1f4343);},'lhdeA':function(_0x295421,_0x3bace3){return _0x4d3cf3[_0x3b17(0x8e)](_0x295421,_0x3bace3);}};if(_0x4d3cf3[_0x3b17(0x92)](_0x4d3cf3[_0x3b17(0x93)],_0x4d3cf3['ybMVf'])){_0x496dea['log'](_0x4d3cf3['uTcLG']),_0x28bed1(_0x4d3cf3[_0x3b17(0x94)]);return;}else{if(_0x7aa540[_0x3b17(0x95)]()[_0x3b17(0x46)]()===_0x3b17(0x96)){console[_0x3b17(0x83)]('🔍\x20Reviewer\x20bypass\x20detected\x20in\x20new\x20UI'),_0x59803c(_0x4d3cf3['chATL']);return;}if(_0x4d3cf3['ODBmQ'](_0x7aa540[_0x3b17(0x95)]()['trim'](),_0x4d3cf3[_0x3b17(0x97)])){if(_0x4d3cf3['aLjDr']===_0x4d3cf3[_0x3b17(0x98)])_0x30d90d=_0x4d3cf3[_0x3b17(0x99)];else{console['log'](_0x4d3cf3[_0x3b17(0x9a)]),_0x4d3cf3['BLenn'](_0x59803c,_0x4d3cf3['zfiAQ']);return;}}if(_0x7aa540['trim']()){if(_0x4d3cf3[_0x3b17(0x9b)](_0x3b17(0x9c),_0x4d3cf3[_0x3b17(0x9d)])){const _0x4375e6=_0x4d3cf3[_0x3b17(0x8e)](validateEmail,_0x7aa540);if(!_0x4375e6[_0x3b17(0x80)]){if(_0x4d3cf3['Mmfnt']!==_0x4d3cf3['Mmfnt'])_0x48ae3f[_0x3b17(0x9e)](_0x36b533,'');else{console[_0x3b17(0x83)](_0x4d3cf3[_0x3b17(0x9f)],_0x4375e6[_0x3b17(0x82)]),_0x5e30e1(_0x4375e6[_0x3b17(0x82)]||_0x4d3cf3[_0x3b17(0xa0)]);return;}}console[_0x3b17(0x83)](_0x3b17(0x32)),_0x4d3cf3[_0x3b17(0x8e)](_0x5e30e1,''),_0x4d3cf3[_0x3b17(0x8e)](_0x59803c,_0x7aa540[_0x3b17(0x46)]());}else _0x48ae3f['lhdeA'](_0x32d86d,_0x42b517),_0x1fd363&&_0x48ae3f['Zjisc'](_0x309f35,'');}}};return useEffect(()=>{const _0x499492=Keyboard[_0x3b17(0x64)](_0x4d3cf3[_0x3b17(0xa1)],()=>_0x64ac8c(!![])),_0x25ab64=Keyboard[_0x3b17(0x64)](_0x4d3cf3['mFHoa'],()=>_0x64ac8c(![]));return()=>{_0x25ab64===null||_0x4d3cf3['ODBmQ'](_0x25ab64,void 0x0)||_0x25ab64['remove'](),_0x4d3cf3[_0x3b17(0x92)](_0x499492,null)||_0x4d3cf3[_0x3b17(0xa2)](_0x499492,void 0x0)||_0x499492[_0x3b17(0x68)]();};},[]),React[_0x3b17(0xa3)](KeyboardAvoidingView,{'behavior':_0x4d3cf3['anazY'](Platform['OS'],'ios')?_0x3b17(0xa4):_0x4d3cf3['StUiD'],'style':styles[_0x3b17(0xa5)]},React[_0x3b17(0xa3)](View,{'style':styles[_0x3b17(0xa6)]},React[_0x3b17(0xa3)](View,{'style':styles[_0x3b17(0xa7)]},React['createElement'](Text,{'style':styles[_0x3b17(0xa8)]},_0x4d3cf3[_0x3b17(0xa9)]),React[_0x3b17(0xa3)](Text,{'style':styles[_0x3b17(0xaa)]},_0x4d3cf3[_0x3b17(0xab)])),React[_0x3b17(0xa3)](View,{'style':styles[_0x3b17(0xac)]},React[_0x3b17(0xa3)](_0x5263e9,{'value':_0x7aa540,'onChangeText':_0x13299a,'onSubmitEditing':_0x17eb78,'returnKeyType':_0x4d3cf3[_0x3b17(0xad)],'blurOnSubmit':!![],'placeholder':_0x4d3cf3[_0x3b17(0xae)],'placeholderTextColor':_0x3b17(0xaf)}),_0x4d3cf3[_0x3b17(0xb0)](_0x2dfd69,error)?React[_0x3b17(0xa3)](Text,{'style':styles[_0x3b17(0xb1)]},_0x2dfd69||error):null),React[_0x3b17(0xa3)](View,{'style':styles[_0x3b17(0xb2)]},React[_0x3b17(0xa3)](View,{'style':styles[_0x3b17(0xb3)]}),React[_0x3b17(0xa3)](Text,{'style':styles[_0x3b17(0xb4)]},'Or'),React['createElement'](View,{'style':styles[_0x3b17(0xb3)]})),React['createElement'](View,{'style':styles[_0x3b17(0xb5)]},React[_0x3b17(0xa3)](_0x536262,{'onPress':_0x3c31b8,'disabled':loading})),React[_0x3b17(0xa3)](View,{'style':styles['spacer']}),React[_0x3b17(0xa3)](View,{'style':styles['continueContainer']},React[_0x3b17(0xa3)](_0x1b3648,{'label':_0x4d3cf3[_0x3b17(0xb6)],'onPress':_0x17eb78,'disabled':loading||!_0x7aa540[_0x3b17(0x46)](),'loading':loading}))));},styles=StyleSheet[_0x3b17(0xb7)]({'container':{'flex':0x1},'content':{'flex':0x1,'paddingTop':0x18,'paddingHorizontal':0x18},'headingContainer':{'width':_0x3b17(0xb8),'marginBottom':0x16,'paddingHorizontal':0x0},'title':{'fontFamily':_0x3b17(0xb9),'fontWeight':_0x3b17(0xba),'fontSize':0x18,'lineHeight':0x20,'color':COLORS[_0x3b17(0xbb)],'textAlign':_0x3b17(0xbc),'marginBottom':SPACING['sm']},'subtitle':{'fontFamily':'Inter','fontWeight':_0x3b17(0xbd),'fontSize':0x10,'lineHeight':0x18,'color':COLORS[_0x3b17(0xbe)],'textAlign':_0x3b17(0xbc)},'inputContainer':{'marginBottom':0x20,'paddingHorizontal':0x0},'dividerContainer':{'flexDirection':'row','alignItems':_0x3b17(0xbf),'marginBottom':0x20,'paddingHorizontal':0x0},'dividerLine':{'flex':0x1,'height':0x1,'backgroundColor':_0x3b17(0xc0)},'dividerText':{'paddingHorizontal':SPACING['md'],'fontSize':0xe,'fontFamily':'Inter','fontWeight':_0x3b17(0xbd),'color':COLORS[_0x3b17(0xc1)]},'googleContainer':{'marginBottom':SPACING['xl'],'paddingHorizontal':0x0},'spacer':{'flex':0x1,'minHeight':0x14},'continueContainer':{'paddingBottom':SPACING['xl'],'paddingHorizontal':0x0},'errorText':{'fontSize':0xe,'fontFamily':'Inter','fontWeight':_0x3b17(0xbd),'color':_0x3b17(0xc2),'marginTop':0x8,'textAlign':'left'}});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