@onairos/react-native 3.7.2 → 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.
- package/lib/commonjs/api/index.js +219 -9
- package/lib/commonjs/components/BodyText.js +27 -9
- package/lib/commonjs/components/BrandMark.js +111 -10
- package/lib/commonjs/components/CodeInput.js +116 -9
- package/lib/commonjs/components/EmailInput.js +30 -8
- package/lib/commonjs/components/GoogleButton.js +56 -9
- package/lib/commonjs/components/HeadingGroup.js +43 -9
- package/lib/commonjs/components/LLMDataInputModal.js +664 -14
- package/lib/commonjs/components/ModalHeader.js +99 -9
- package/lib/commonjs/components/ModalSheet.js +47 -9
- package/lib/commonjs/components/Onairos.js +380 -14
- package/lib/commonjs/components/OnairosButton.js +313 -13
- package/lib/commonjs/components/OnairosSignInButton.js +130 -12
- package/lib/commonjs/components/Overlay.js +465 -13
- package/lib/commonjs/components/PersonaImage.js +137 -10
- package/lib/commonjs/components/PersonaLoadingScreen.js +318 -12
- package/lib/commonjs/components/PersonalizationConsentScreen.js +467 -13
- package/lib/commonjs/components/PinCreationScreen.js +403 -12
- package/lib/commonjs/components/PinInput.js +464 -9
- package/lib/commonjs/components/PlatformConnectorsStep.js +1311 -23
- package/lib/commonjs/components/PlatformList.js +137 -10
- package/lib/commonjs/components/PlatformToggle.js +180 -9
- package/lib/commonjs/components/PrimaryButton.js +180 -10
- package/lib/commonjs/components/SignInMatchAnimation.js +197 -9
- package/lib/commonjs/components/SignInStep.js +345 -12
- package/lib/commonjs/components/UniversalOnboarding.js +2780 -30
- package/lib/commonjs/components/VerificationStep.js +176 -11
- package/lib/commonjs/components/WelcomeScreen.js +461 -22
- package/lib/commonjs/components/icons/Basicproficon.js +37 -8
- package/lib/commonjs/components/icons/Basicprofile.js +21 -8
- package/lib/commonjs/components/icons/Checkbox.js +21 -8
- package/lib/commonjs/components/icons/Checkmark.js +27 -8
- package/lib/commonjs/components/icons/Contentanalysis.js +21 -8
- package/lib/commonjs/components/icons/Contenticon.js +39 -8
- package/lib/commonjs/components/icons/EnochE.js +41 -8
- package/lib/commonjs/components/icons/Personalityicon.js +30 -8
- package/lib/commonjs/components/icons/Personalityprofile.js +21 -8
- package/lib/commonjs/components/icons/Personalitytraits.js +21 -8
- package/lib/commonjs/components/icons/Userpreferences.js +21 -8
- package/lib/commonjs/components/icons/index.js +84 -17
- package/lib/commonjs/components/onboarding/OAuthWebView.js +1754 -18
- package/lib/commonjs/components/onboarding/OnboardingHeader.js +74 -10
- package/lib/commonjs/components/onboarding/PinInput.js +283 -10
- package/lib/commonjs/components/onboarding/PlatformConnector.js +249 -11
- package/lib/commonjs/config/PLATFORM_APIS.md +849 -0
- package/lib/commonjs/config/api.js +56 -7
- package/lib/commonjs/constants/index.js +120 -7
- package/lib/commonjs/context/AuthContext.js +345 -10
- package/lib/commonjs/hooks/useConnectedAccounts.js +111 -9
- package/lib/commonjs/hooks/useConnections.js +102 -8
- package/lib/commonjs/hooks/useCredentials.js +178 -10
- package/lib/commonjs/hooks/useUserConnections.js +148 -10
- package/lib/commonjs/index.js +439 -34
- package/lib/commonjs/services/apiClient.js +298 -8
- package/lib/commonjs/services/biometricPinService.js +180 -8
- package/lib/commonjs/services/chatGPTConversationExtractor.js +155 -8
- package/lib/commonjs/services/chatGPTConversationService.js +275 -9
- package/lib/commonjs/services/claudeConversationExtractor.js +103 -8
- package/lib/commonjs/services/claudeConversationService.js +158 -9
- package/lib/commonjs/services/connectedAccountsService.js +310 -10
- package/lib/commonjs/services/googleAuthService.js +252 -11
- package/lib/commonjs/services/hingeDataExtractor.js +105 -8
- package/lib/commonjs/services/hingeDataService.js +150 -9
- package/lib/commonjs/services/imageCompressionService.js +260 -7
- package/lib/commonjs/services/instagramDataExtractor.js +126 -8
- package/lib/commonjs/services/instagramDataService.js +163 -9
- package/lib/commonjs/services/jwtStorageService.js +276 -7
- package/lib/commonjs/services/linkedinDOMExtractor.js +245 -7
- package/lib/commonjs/services/linkedinProfileService.js +222 -9
- package/lib/commonjs/services/linkedinScrapingService.js +230 -8
- package/lib/commonjs/services/llmDataStorage.js +294 -8
- package/lib/commonjs/services/mobileTrainingService.js +186 -8
- package/lib/commonjs/services/netflixDataExtractor.js +120 -8
- package/lib/commonjs/services/netflixDataService.js +198 -9
- package/lib/commonjs/services/pinEncryptionService.js +84 -8
- package/lib/commonjs/services/pinStorageUtils.js +105 -7
- package/lib/commonjs/services/platformAuthService.js +1484 -12
- package/lib/commonjs/services/sephoraDataExtractor.js +140 -8
- package/lib/commonjs/services/sephoraDataService.js +200 -9
- package/lib/commonjs/services/spotifyDataExtractor.js +148 -8
- package/lib/commonjs/services/spotifyDataService.js +241 -9
- package/lib/commonjs/services/storageService.js +404 -8
- package/lib/commonjs/services/telegramDataExtractor.js +115 -8
- package/lib/commonjs/services/telegramDataService.js +499 -9
- package/lib/commonjs/services/trainingApiHelpers.js +73 -7
- package/lib/commonjs/services/userConnectionsService.js +340 -10
- package/lib/commonjs/services/youtubeMigrationService.js +416 -10
- package/lib/commonjs/theme/index.js +250 -7
- package/lib/commonjs/types/ambient.d.js +2 -1
- package/lib/commonjs/types/declarations.d.js +2 -1
- package/lib/commonjs/types/index.js +6 -1
- package/lib/commonjs/types/node-fix.d.js +2 -1
- package/lib/commonjs/types/node-override.d.js +2 -1
- package/lib/commonjs/types/opacity.d.js +2 -1
- package/lib/commonjs/types.js +14 -1
- package/lib/commonjs/utils/Portal.js +98 -8
- package/lib/commonjs/utils/api.js +130 -9
- package/lib/commonjs/utils/assetRegistry.js +210 -35
- package/lib/commonjs/utils/auth.js +112 -9
- package/lib/commonjs/utils/connectorTests.js +613 -29
- package/lib/commonjs/utils/crypto.js +62 -8
- package/lib/commonjs/utils/debugHelper.js +64 -1
- package/lib/commonjs/utils/encryption.js +76 -7
- package/lib/commonjs/utils/eventUtils.js +288 -1
- package/lib/commonjs/utils/haptics.js +66 -9
- package/lib/commonjs/utils/imagePreloader.js +6 -1
- package/lib/commonjs/utils/networkDiagnostics.js +226 -8
- package/lib/commonjs/utils/onairosApi.js +350 -9
- package/lib/commonjs/utils/programmaticFlow.js +117 -9
- package/lib/commonjs/utils/retryHelper.js +220 -1
- package/lib/commonjs/utils/secureStorage.js +349 -10
- package/lib/commonjs/utils/webviewScripts/chatgpt.js +551 -1
- package/lib/commonjs/utils/webviewScripts/claude.js +376 -1
- package/lib/commonjs/utils/webviewScripts/hinge.js +411 -1
- package/lib/commonjs/utils/webviewScripts/index.js +698 -15
- package/lib/commonjs/utils/webviewScripts/instagram.js +454 -1
- package/lib/commonjs/utils/webviewScripts/linkedin.js +880 -1
- package/lib/commonjs/utils/webviewScripts/netflix.js +382 -1
- package/lib/commonjs/utils/webviewScripts/sephora.js +516 -1
- package/lib/commonjs/utils/webviewScripts/spotify.js +419 -1
- package/lib/commonjs/utils/webviewScripts/telegram.js +678 -1
- package/lib/module/api/index.js +211 -1
- package/lib/module/components/BodyText.js +20 -1
- package/lib/module/components/BrandMark.js +104 -1
- package/lib/module/components/CodeInput.js +109 -1
- package/lib/module/components/EmailInput.js +23 -1
- package/lib/module/components/GoogleButton.js +49 -1
- package/lib/module/components/HeadingGroup.js +36 -1
- package/lib/module/components/LLMDataInputModal.js +656 -7
- package/lib/module/components/ModalHeader.js +92 -1
- package/lib/module/components/ModalSheet.js +39 -1
- package/lib/module/components/Onairos.js +373 -1
- package/lib/module/components/OnairosButton.js +305 -1
- package/lib/module/components/OnairosSignInButton.js +121 -1
- package/lib/module/components/Overlay.js +456 -1
- package/lib/module/components/PersonaImage.js +129 -1
- package/lib/module/components/PersonaLoadingScreen.js +310 -1
- package/lib/module/components/PersonalizationConsentScreen.js +460 -1
- package/lib/module/components/PinCreationScreen.js +396 -1
- package/lib/module/components/PinInput.js +456 -1
- package/lib/module/components/PlatformConnectorsStep.js +1302 -6
- package/lib/module/components/PlatformList.js +129 -1
- package/lib/module/components/PlatformToggle.js +173 -1
- package/lib/module/components/PrimaryButton.js +172 -1
- package/lib/module/components/SignInMatchAnimation.js +189 -1
- package/lib/module/components/SignInStep.js +338 -1
- package/lib/module/components/UniversalOnboarding.js +2770 -1
- package/lib/module/components/VerificationStep.js +168 -1
- package/lib/module/components/WelcomeScreen.js +453 -1
- package/lib/module/components/icons/Basicproficon.js +30 -1
- package/lib/module/components/icons/Basicprofile.js +14 -1
- package/lib/module/components/icons/Checkbox.js +14 -1
- package/lib/module/components/icons/Checkmark.js +20 -1
- package/lib/module/components/icons/Contentanalysis.js +14 -1
- package/lib/module/components/icons/Contenticon.js +32 -1
- package/lib/module/components/icons/EnochE.js +34 -1
- package/lib/module/components/icons/Personalityicon.js +23 -1
- package/lib/module/components/icons/Personalityprofile.js +14 -1
- package/lib/module/components/icons/Personalitytraits.js +14 -1
- package/lib/module/components/icons/Userpreferences.js +14 -1
- package/lib/module/components/icons/index.js +13 -1
- package/lib/module/components/onboarding/OAuthWebView.js +1746 -1
- package/lib/module/components/onboarding/OnboardingHeader.js +66 -1
- package/lib/module/components/onboarding/PinInput.js +274 -1
- package/lib/module/components/onboarding/PlatformConnector.js +240 -1
- package/lib/module/config/PLATFORM_APIS.md +849 -0
- package/lib/module/config/api.js +47 -1
- package/lib/module/constants/index.js +114 -1
- package/lib/module/context/AuthContext.js +335 -1
- package/lib/module/hooks/useConnectedAccounts.js +106 -1
- package/lib/module/hooks/useConnections.js +95 -1
- package/lib/module/hooks/useCredentials.js +171 -6
- package/lib/module/hooks/useUserConnections.js +140 -1
- package/lib/module/index.js +172 -1
- package/lib/module/services/apiClient.js +295 -1
- package/lib/module/services/biometricPinService.js +169 -1
- package/lib/module/services/chatGPTConversationExtractor.js +149 -1
- package/lib/module/services/chatGPTConversationService.js +268 -1
- package/lib/module/services/claudeConversationExtractor.js +97 -1
- package/lib/module/services/claudeConversationService.js +151 -1
- package/lib/module/services/connectedAccountsService.js +293 -1
- package/lib/module/services/googleAuthService.js +241 -1
- package/lib/module/services/hingeDataExtractor.js +99 -1
- package/lib/module/services/hingeDataService.js +143 -1
- package/lib/module/services/imageCompressionService.js +250 -1
- package/lib/module/services/instagramDataExtractor.js +120 -1
- package/lib/module/services/instagramDataService.js +156 -1
- package/lib/module/services/jwtStorageService.js +257 -1
- package/lib/module/services/linkedinDOMExtractor.js +234 -1
- package/lib/module/services/linkedinProfileService.js +210 -1
- package/lib/module/services/linkedinScrapingService.js +219 -1
- package/lib/module/services/llmDataStorage.js +277 -1
- package/lib/module/services/mobileTrainingService.js +173 -1
- package/lib/module/services/netflixDataExtractor.js +114 -1
- package/lib/module/services/netflixDataService.js +191 -1
- package/lib/module/services/pinEncryptionService.js +74 -6
- package/lib/module/services/pinStorageUtils.js +93 -1
- package/lib/module/services/platformAuthService.js +1461 -1
- package/lib/module/services/sephoraDataExtractor.js +134 -1
- package/lib/module/services/sephoraDataService.js +193 -1
- package/lib/module/services/spotifyDataExtractor.js +142 -1
- package/lib/module/services/spotifyDataService.js +234 -1
- package/lib/module/services/storageService.js +383 -1
- package/lib/module/services/telegramDataExtractor.js +109 -1
- package/lib/module/services/telegramDataService.js +493 -1
- package/lib/module/services/trainingApiHelpers.js +67 -1
- package/lib/module/services/userConnectionsService.js +329 -1
- package/lib/module/services/youtubeMigrationService.js +405 -1
- package/lib/module/theme/index.js +245 -1
- package/lib/module/types.js +10 -1
- package/lib/module/utils/Portal.js +90 -1
- package/lib/module/utils/api.js +118 -1
- package/lib/module/utils/assetRegistry.js +200 -34
- package/lib/module/utils/auth.js +100 -1
- package/lib/module/utils/connectorTests.js +600 -27
- package/lib/module/utils/crypto.js +54 -1
- package/lib/module/utils/debugHelper.js +54 -1
- package/lib/module/utils/encryption.js +67 -1
- package/lib/module/utils/eventUtils.js +270 -1
- package/lib/module/utils/haptics.js +59 -8
- package/lib/module/utils/imagePreloader.js +3 -1
- package/lib/module/utils/networkDiagnostics.js +217 -1
- package/lib/module/utils/onairosApi.js +333 -1
- package/lib/module/utils/programmaticFlow.js +111 -1
- package/lib/module/utils/retryHelper.js +211 -1
- package/lib/module/utils/secureStorage.js +330 -6
- package/lib/module/utils/webviewScripts/chatgpt.js +545 -1
- package/lib/module/utils/webviewScripts/claude.js +370 -1
- package/lib/module/utils/webviewScripts/hinge.js +405 -1
- package/lib/module/utils/webviewScripts/index.js +434 -1
- package/lib/module/utils/webviewScripts/instagram.js +448 -1
- package/lib/module/utils/webviewScripts/linkedin.js +874 -1
- package/lib/module/utils/webviewScripts/netflix.js +376 -1
- package/lib/module/utils/webviewScripts/sephora.js +510 -1
- package/lib/module/utils/webviewScripts/spotify.js +413 -1
- package/lib/module/utils/webviewScripts/telegram.js +672 -1
- package/package.json +2 -2
package/lib/module/api/index.js
CHANGED
|
@@ -1 +1,211 @@
|
|
|
1
|
-
import axios from'axios';import{Platform}from'react-native';import{API_ENDPOINTS}from'../constants';const isDevelopmentMode=()=>{const _0x42fb25={'oCEyZ':function(_0x290ce8,_0x6e8323){return _0x290ce8===_0x6e8323;}};return __DEV__||_0x42fb25['oCEyZ'](process['env'][_0x4df3(0x0)],_0x4df3(0x1));},createMockResponse=_0x59ed1e=>{return Promise[_0x4df3(0x2)]({'data':_0x59ed1e,'status':0xc8,'statusText':'OK','headers':{},'config':{}});},apiInstance=axios['create']({'baseURL':API_ENDPOINTS[_0x4df3(0x3)],'timeout':0x2710,'headers':{'Content-Type':'application/json','Accept':'application/json'}});apiInstance[_0x4df3(0x4)]['response']['use'](_0x120d2a=>_0x120d2a,_0x24a275=>{const _0xd9a352={'RwjEF':function(_0x2bf04b){return _0x2bf04b();},'jYHki':_0x4df3(0x5),'pOGia':function(_0x5a1bd0,_0x1063d6){return _0x5a1bd0(_0x1063d6);}};if(_0xd9a352[_0x4df3(0x6)](isDevelopmentMode))return console[_0x4df3(0x7)](_0xd9a352[_0x4df3(0x8)],_0x24a275),_0xd9a352[_0x4df3(0x9)](createMockResponse,{'success':!![],'data':{'mockData':!![]}});return Promise['reject'](_0x24a275);});function _0x4df3(_0x19785c,_0x4df3d4){_0x19785c=_0x19785c-0x0;const _0x551180=_0x1978();let _0x340166=_0x551180[_0x19785c];return _0x340166;}export const onairosApi={async 'get'(_0x4f3d8c){const _0x54bf8f={'IyCug':function(_0x23f972,_0x24fa9a){return _0x23f972===_0x24fa9a;},'STGHr':'web','XghgY':function(_0x1cdc15){return _0x1cdc15();},'HIdnO':function(_0x3a26cb,_0x24bac7){return _0x3a26cb(_0x24bac7);}};try{if(_0x54bf8f[_0x4df3(0xa)](Platform['OS'],_0x54bf8f['STGHr'])&&_0x54bf8f[_0x4df3(0xb)](isDevelopmentMode))return _0x54bf8f['HIdnO'](createMockResponse,{'success':!![],'data':{'mockData':!![]}});return await apiInstance[_0x4df3(0xc)](_0x4f3d8c);}catch(_0x3d0e01){console['error']('GET\x20'+_0x4f3d8c+_0x4df3(0xd),_0x3d0e01);if(_0x54bf8f[_0x4df3(0xb)](isDevelopmentMode))return _0x54bf8f[_0x4df3(0xe)](createMockResponse,{'success':!![],'data':{'mockData':!![]}});throw _0x3d0e01;}},async 'post'(_0x1f11b3,_0x3a4ec1){const _0x6f16ca={'qLZIy':'Mock\x20verification\x20code\x20sent','RMnUU':_0x4df3(0xf),'NndlX':'xOnrw','XBwHJ':function(_0x586e96,_0x126018){return _0x586e96===_0x126018;},'jgWlR':function(_0x4fc33e){return _0x4fc33e();},'jwLME':function(_0x1124d3,_0x2c01e4){return _0x1124d3(_0x2c01e4);}};try{if(_0x6f16ca[_0x4df3(0x10)]!==_0x6f16ca[_0x4df3(0x11)]){if(_0x6f16ca[_0x4df3(0x12)](Platform['OS'],'web')&&_0x6f16ca['jgWlR'](isDevelopmentMode))return _0x6f16ca[_0x4df3(0x13)](createMockResponse,{'success':!![],'data':{'mockData':!![]}});return await apiInstance[_0x4df3(0x14)](_0x1f11b3,_0x3a4ec1);}else return{'success':!![],'message':_0x6f16ca['qLZIy']};}catch(_0x472a17){console[_0x4df3(0x15)](_0x4df3(0x16)+_0x1f11b3+_0x4df3(0xd),_0x472a17);if(_0x6f16ca['jgWlR'](isDevelopmentMode))return _0x6f16ca[_0x4df3(0x13)](createMockResponse,{'success':!![],'data':{'mockData':!![]}});throw _0x472a17;}},async 'validateCredentials'(_0x4cb192){const _0x25499f={'hlEDa':function(_0x5b73ce,_0x2ee76c){return _0x5b73ce===_0x2ee76c;},'PCFpt':_0x4df3(0x17),'MICsu':_0x4df3(0x18),'SNWrO':function(_0x4d50f2,_0x2acd3a){return _0x4d50f2!==_0x2acd3a;},'gMuxq':'EhpqT','GGKdr':'TAGEx','vrmJG':function(_0x4d83dc){return _0x4d83dc();},'PeShv':function(_0x2c8406,_0x56b9fd){return _0x2c8406!==_0x56b9fd;},'MifXh':_0x4df3(0x19),'oQNqS':'Using\x20mock\x20validation\x20for:','OtJRb':'validate','AzGnM':function(_0xbd70f2,_0x375d82){return _0xbd70f2===_0x375d82;},'dktoz':_0x4df3(0x1a)};try{if(_0x25499f[_0x4df3(0x1b)](_0x25499f[_0x4df3(0x1c)],_0x25499f[_0x4df3(0x1d)])){var _0xf64ce8;if(_0x25499f['vrmJG'](isDevelopmentMode))return _0x25499f['PeShv']('AtskJ',_0x25499f['MifXh'])?_0x2a8159[_0x4df3(0x2)]({'data':_0x1005b9,'status':0xc8,'statusText':'OK','headers':{},'config':{}}):(console[_0x4df3(0x1e)](_0x25499f[_0x4df3(0x1f)],_0x4cb192),!![]);const _0x4b0c70=await this['post'](_0x25499f[_0x4df3(0x20)],{'username':_0x4cb192});return((_0xf64ce8=_0x4b0c70[_0x4df3(0x21)])===null||_0x25499f[_0x4df3(0x22)](_0xf64ce8,void 0x0)?void 0x0:_0xf64ce8[_0x4df3(0x23)])||![];}else{_0x48e845[_0x4df3(0x1e)](_0x4df3(0x24),_0x5d4460,_0x4df3(0x25),_0xd4fe2e);if(_0x25499f[_0x4df3(0x26)](_0xd24b1c[_0x4df3(0x27)],0x6)||_0x25499f[_0x4df3(0x26)](_0x5e97f2,_0x25499f['PCFpt']))return{'success':!![],'message':_0x4df3(0x28)};return{'success':![],'message':_0x25499f[_0x4df3(0x29)]};}}catch(_0x302494){return console[_0x4df3(0x15)](_0x25499f[_0x4df3(0x2a)],_0x302494),isDevelopmentMode();}},async 'getUserProfile'(_0x4d1451){const _0x29aadf={'hyilY':'Email\x20verified\x20successfully','VDNXE':function(_0x27e4cd){return _0x27e4cd();},'FZcuv':_0x4df3(0x2b),'hTmeI':'demo_user','YdorA':_0x4df3(0x2c),'BeFLN':_0x4df3(0x2d),'dlBON':_0x4df3(0x2e),'LOSmF':function(_0x32351c,_0x2089b9){return _0x32351c===_0x2089b9;},'fcWbK':function(_0x35cdc6,_0x2359c0){return _0x35cdc6===_0x2359c0;},'OqEEw':function(_0x1b9dc7,_0x2d1978){return _0x1b9dc7!==_0x2d1978;},'OtZGu':_0x4df3(0x2f)};try{var _0x166351;if(_0x29aadf['VDNXE'](isDevelopmentMode))return _0x29aadf['FZcuv']!==_0x29aadf[_0x4df3(0x30)]?{'success':!![],'message':_0x29aadf[_0x4df3(0x31)]}:{'username':_0x29aadf[_0x4df3(0x32)],'platforms':[_0x29aadf['YdorA'],_0x29aadf['BeFLN']],'createdAt':Date['now']()};apiInstance['defaults'][_0x4df3(0x33)][_0x4df3(0x34)]['Authorization']=_0x4df3(0x35)+_0x4d1451;const _0x1e7fe5=await this[_0x4df3(0xc)](_0x29aadf[_0x4df3(0x36)]);return _0x29aadf[_0x4df3(0x37)](_0x166351=_0x1e7fe5[_0x4df3(0x21)],null)||_0x29aadf[_0x4df3(0x38)](_0x166351,void 0x0)?void 0x0:_0x166351[_0x4df3(0x21)];}catch(_0x33c3b4){if(_0x29aadf[_0x4df3(0x39)](_0x29aadf[_0x4df3(0x3a)],_0x29aadf['OtZGu'])){if(_0x29aadf[_0x4df3(0x3b)](_0x196b67))return _0xfe5ff5[_0x4df3(0x7)](_0x4df3(0x5),_0x2f570e),_0xd7d358({'success':!![],'data':{'mockData':!![]}});return _0x2faf49[_0x4df3(0x3c)](_0x40a565);}else{console[_0x4df3(0x15)](_0x4df3(0x3d),_0x33c3b4);if(_0x29aadf['VDNXE'](isDevelopmentMode))return{'username':_0x4df3(0x3e),'platforms':[_0x29aadf[_0x4df3(0x3f)],_0x29aadf['BeFLN']],'createdAt':Date[_0x4df3(0x40)]()};throw _0x33c3b4;}}}};function _0x1978(){const _0x1a3dc3=['NODE_ENV','development','resolve','base','interceptors','API\x20error\x20in\x20development\x20mode,\x20using\x20fallback:','RwjEF','warn','jYHki','pOGia','IyCug','XghgY','get','\x20error:','HIdnO','eCMvU','RMnUU','NndlX','XBwHJ','jwLME','post','error','POST\x20','reviewer','Invalid\x20verification\x20code','AtskJ','Error\x20validating\x20credentials:','SNWrO','gMuxq','GGKdr','log','oQNqS','OtJRb','data','AzGnM','success','Mock:\x20Verifying\x20code\x20for:','code:','hlEDa','length','Email\x20verified\x20successfully','MICsu','dktoz','Vbxjh','instagram','youtube','user/profile','HjEEb','FZcuv','hyilY','hTmeI','headers','common','Bearer\x20','dlBON','LOSmF','fcWbK','OqEEw','OtZGu','VDNXE','reject','Error\x20fetching\x20user\x20profile:','demo_user','YdorA','now','lvVLS','Mock:\x20Sending\x20verification\x20code\x20to:','email/verify','Error\x20sending\x20verification\x20code:','Mock\x20verification\x20code\x20sent','Failed\x20to\x20send\x20verification\x20code','LnLcZ','NWVeT','Verification\x20code\x20sent\x20successfully','cvmsz','bOJWz','fsUdp','caEPy','message','sJjcR','CXRLS','AJPoa','dDnHX','txYBJ','qAGpl','Using\x20mock\x20validation\x20for:','uVhMw','icteY','Email\x20verified','Njzqn','Okbye','woFQR','cvoPE','OGAgl','email/verify/confirm','SpRBO','YsfYl','sTNFJ','Verification\x20failed'];_0x1978=function(){return _0x1a3dc3;};return _0x1978();}export const sendEmailVerificationCode=async _0x1415f6=>{const _0x1208cc={'UGjAF':_0x4df3(0x3e),'elQSQ':_0x4df3(0x2c),'cvmsz':_0x4df3(0x2d),'dDnHX':_0x4df3(0x1a),'xZSyH':function(_0x8e61f6){return _0x8e61f6();},'LnLcZ':_0x4df3(0x41),'NWVeT':_0x4df3(0x42),'bOJWz':_0x4df3(0x43),'fsUdp':function(_0x109402,_0x540684){return _0x109402===_0x540684;},'caEPy':function(_0x1ff381,_0x292458){return _0x1ff381===_0x292458;},'sJjcR':'Verification\x20code\x20sent','CXRLS':function(_0x43efa5,_0x18d7eb){return _0x43efa5!==_0x18d7eb;},'AJPoa':'jXXNd','txYBJ':_0x4df3(0x44),'oZRjz':_0x4df3(0x45),'qAGpl':_0x4df3(0x46)};try{var _0x11cab2;if(isDevelopmentMode())return _0x1208cc[_0x4df3(0x47)]===_0x1208cc[_0x4df3(0x47)]?(console[_0x4df3(0x1e)](_0x1208cc[_0x4df3(0x48)],_0x1415f6),{'success':!![],'message':_0x4df3(0x49)}):{'username':_0x1208cc['UGjAF'],'platforms':[_0x1208cc['elQSQ'],_0x1208cc[_0x4df3(0x4a)]],'createdAt':_0x40447e[_0x4df3(0x40)]()};const _0x1d71b6=await onairosApi[_0x4df3(0x14)](_0x1208cc[_0x4df3(0x4b)],{'email':_0x1415f6});return{'success':!![],'message':(_0x1208cc[_0x4df3(0x4c)](_0x11cab2=_0x1d71b6[_0x4df3(0x21)],null)||_0x1208cc[_0x4df3(0x4d)](_0x11cab2,void 0x0)?void 0x0:_0x11cab2[_0x4df3(0x4e)])||_0x1208cc[_0x4df3(0x4f)]};}catch(_0x2d3c5){if(_0x1208cc[_0x4df3(0x50)](_0x1208cc[_0x4df3(0x51)],_0x1208cc[_0x4df3(0x51)]))return _0x4eec70[_0x4df3(0x15)](_0x1208cc[_0x4df3(0x52)],_0x882844),_0x1208cc['xZSyH'](_0x3e3bd7);else{console[_0x4df3(0x15)](_0x1208cc[_0x4df3(0x53)],_0x2d3c5);if(isDevelopmentMode())return{'success':!![],'message':_0x1208cc['oZRjz']};return{'success':![],'message':_0x1208cc[_0x4df3(0x54)]};}}};export const confirmEmailVerificationCode=async(_0x3cafaa,_0x22739c)=>{const _0x4b52b1={'OGAgl':_0x4df3(0x55),'uslsP':function(_0x3b6293,_0x2dde91){return _0x3b6293(_0x2dde91);},'Okbye':_0x4df3(0x24),'mGLZu':_0x4df3(0x25),'woFQR':_0x4df3(0x17),'TfKLH':function(_0x3f71bd,_0x4c80cc){return _0x3f71bd!==_0x4c80cc;},'cvoPE':_0x4df3(0x56),'iecvp':_0x4df3(0x57),'SpRBO':function(_0x237556,_0x3687a3){return _0x237556===_0x3687a3;},'YsfYl':_0x4df3(0x58),'sTNFJ':_0x4df3(0x59)};try{var _0x39dc9e;if(isDevelopmentMode()){console[_0x4df3(0x1e)](_0x4b52b1[_0x4df3(0x5a)],_0x3cafaa,_0x4b52b1['mGLZu'],_0x22739c);if(_0x22739c['length']===0x6||_0x22739c===_0x4b52b1[_0x4df3(0x5b)])return _0x4b52b1['TfKLH'](_0x4b52b1[_0x4df3(0x5c)],_0x4b52b1['iecvp'])?{'success':!![],'message':_0x4df3(0x28)}:(_0x5a75ec[_0x4df3(0x1e)](_0x4b52b1[_0x4df3(0x5d)],_0x342b63),!![]);return{'success':![],'message':_0x4df3(0x18)};}const _0x41c1b5=await onairosApi[_0x4df3(0x14)](_0x4df3(0x5e),{'email':_0x3cafaa,'code':_0x22739c});return{'success':!![],'message':((_0x39dc9e=_0x41c1b5[_0x4df3(0x21)])===null||_0x4b52b1[_0x4df3(0x5f)](_0x39dc9e,void 0x0)?void 0x0:_0x39dc9e[_0x4df3(0x4e)])||_0x4b52b1[_0x4df3(0x60)]};}catch(_0x3bf3ba){if(_0x4df3(0x59)!==_0x4b52b1[_0x4df3(0x61)])return _0x4b52b1['uslsP'](_0x24521d,{'success':!![],'data':{'mockData':!![]}});else{console[_0x4df3(0x15)]('Error\x20verifying\x20email\x20code:',_0x3bf3ba);if(isDevelopmentMode())return{'success':![],'message':'Invalid\x20verification\x20code'};return{'success':![],'message':_0x4df3(0x62)};}}};
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { Platform } from 'react-native';
|
|
3
|
+
import { API_ENDPOINTS } from '../constants';
|
|
4
|
+
|
|
5
|
+
// Check if running in development mode
|
|
6
|
+
const isDevelopmentMode = () => {
|
|
7
|
+
return __DEV__ || process.env.NODE_ENV === 'development';
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
// Create mock response helper
|
|
11
|
+
const createMockResponse = data => {
|
|
12
|
+
return Promise.resolve({
|
|
13
|
+
data,
|
|
14
|
+
status: 200,
|
|
15
|
+
statusText: 'OK',
|
|
16
|
+
headers: {},
|
|
17
|
+
config: {}
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
// Create API instance
|
|
22
|
+
const apiInstance = axios.create({
|
|
23
|
+
baseURL: API_ENDPOINTS.base,
|
|
24
|
+
timeout: 10000,
|
|
25
|
+
headers: {
|
|
26
|
+
'Content-Type': 'application/json',
|
|
27
|
+
'Accept': 'application/json'
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// Add error handling interceptor
|
|
32
|
+
apiInstance.interceptors.response.use(response => response, error => {
|
|
33
|
+
if (isDevelopmentMode()) {
|
|
34
|
+
console.warn('API error in development mode, using fallback:', error);
|
|
35
|
+
return createMockResponse({
|
|
36
|
+
success: true,
|
|
37
|
+
data: {
|
|
38
|
+
mockData: true
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return Promise.reject(error);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
// API service with Expo compatibility
|
|
46
|
+
export const onairosApi = {
|
|
47
|
+
// Core API methods with fallbacks
|
|
48
|
+
async get(url) {
|
|
49
|
+
try {
|
|
50
|
+
if (Platform.OS === 'web' && isDevelopmentMode()) {
|
|
51
|
+
return createMockResponse({
|
|
52
|
+
success: true,
|
|
53
|
+
data: {
|
|
54
|
+
mockData: true
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return await apiInstance.get(url);
|
|
59
|
+
} catch (error) {
|
|
60
|
+
console.error(`GET ${url} error:`, error);
|
|
61
|
+
if (isDevelopmentMode()) {
|
|
62
|
+
return createMockResponse({
|
|
63
|
+
success: true,
|
|
64
|
+
data: {
|
|
65
|
+
mockData: true
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
async post(url, data) {
|
|
73
|
+
try {
|
|
74
|
+
if (Platform.OS === 'web' && isDevelopmentMode()) {
|
|
75
|
+
return createMockResponse({
|
|
76
|
+
success: true,
|
|
77
|
+
data: {
|
|
78
|
+
mockData: true
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return await apiInstance.post(url, data);
|
|
83
|
+
} catch (error) {
|
|
84
|
+
console.error(`POST ${url} error:`, error);
|
|
85
|
+
if (isDevelopmentMode()) {
|
|
86
|
+
return createMockResponse({
|
|
87
|
+
success: true,
|
|
88
|
+
data: {
|
|
89
|
+
mockData: true
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
throw error;
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
// Helper methods for specific API endpoints
|
|
97
|
+
async validateCredentials(username) {
|
|
98
|
+
try {
|
|
99
|
+
var _response$data;
|
|
100
|
+
if (isDevelopmentMode()) {
|
|
101
|
+
console.log('Using mock validation for:', username);
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
const response = await this.post('validate', {
|
|
105
|
+
username
|
|
106
|
+
});
|
|
107
|
+
return ((_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.success) || false;
|
|
108
|
+
} catch (error) {
|
|
109
|
+
console.error('Error validating credentials:', error);
|
|
110
|
+
return isDevelopmentMode(); // Return true in dev mode to allow flow to continue
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
async getUserProfile(token) {
|
|
114
|
+
try {
|
|
115
|
+
var _response$data2;
|
|
116
|
+
if (isDevelopmentMode()) {
|
|
117
|
+
return {
|
|
118
|
+
username: 'demo_user',
|
|
119
|
+
platforms: ['instagram', 'youtube'],
|
|
120
|
+
createdAt: Date.now()
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
apiInstance.defaults.headers.common['Authorization'] = `Bearer ${token}`;
|
|
124
|
+
const response = await this.get('user/profile');
|
|
125
|
+
return (_response$data2 = response.data) === null || _response$data2 === void 0 ? void 0 : _response$data2.data;
|
|
126
|
+
} catch (error) {
|
|
127
|
+
console.error('Error fetching user profile:', error);
|
|
128
|
+
if (isDevelopmentMode()) {
|
|
129
|
+
return {
|
|
130
|
+
username: 'demo_user',
|
|
131
|
+
platforms: ['instagram', 'youtube'],
|
|
132
|
+
createdAt: Date.now()
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
throw error;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
// Email verification functions for WelcomeScreen
|
|
141
|
+
export const sendEmailVerificationCode = async email => {
|
|
142
|
+
try {
|
|
143
|
+
var _response$data3;
|
|
144
|
+
if (isDevelopmentMode()) {
|
|
145
|
+
console.log('Mock: Sending verification code to:', email);
|
|
146
|
+
return {
|
|
147
|
+
success: true,
|
|
148
|
+
message: 'Verification code sent successfully'
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
const response = await onairosApi.post('email/verify', {
|
|
152
|
+
email
|
|
153
|
+
});
|
|
154
|
+
return {
|
|
155
|
+
success: true,
|
|
156
|
+
message: ((_response$data3 = response.data) === null || _response$data3 === void 0 ? void 0 : _response$data3.message) || 'Verification code sent'
|
|
157
|
+
};
|
|
158
|
+
} catch (error) {
|
|
159
|
+
console.error('Error sending verification code:', error);
|
|
160
|
+
if (isDevelopmentMode()) {
|
|
161
|
+
return {
|
|
162
|
+
success: true,
|
|
163
|
+
message: 'Mock verification code sent'
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
success: false,
|
|
168
|
+
message: 'Failed to send verification code'
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
export const confirmEmailVerificationCode = async (email, code) => {
|
|
173
|
+
try {
|
|
174
|
+
var _response$data4;
|
|
175
|
+
if (isDevelopmentMode()) {
|
|
176
|
+
console.log('Mock: Verifying code for:', email, 'code:', code);
|
|
177
|
+
// Accept any 6-digit code in dev mode
|
|
178
|
+
if (code.length === 6 || code === 'reviewer') {
|
|
179
|
+
return {
|
|
180
|
+
success: true,
|
|
181
|
+
message: 'Email verified successfully'
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
success: false,
|
|
186
|
+
message: 'Invalid verification code'
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
const response = await onairosApi.post('email/verify/confirm', {
|
|
190
|
+
email,
|
|
191
|
+
code
|
|
192
|
+
});
|
|
193
|
+
return {
|
|
194
|
+
success: true,
|
|
195
|
+
message: ((_response$data4 = response.data) === null || _response$data4 === void 0 ? void 0 : _response$data4.message) || 'Email verified'
|
|
196
|
+
};
|
|
197
|
+
} catch (error) {
|
|
198
|
+
console.error('Error verifying email code:', error);
|
|
199
|
+
if (isDevelopmentMode()) {
|
|
200
|
+
return {
|
|
201
|
+
success: false,
|
|
202
|
+
message: 'Invalid verification code'
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
return {
|
|
206
|
+
success: false,
|
|
207
|
+
message: 'Verification failed'
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1,20 @@
|
|
|
1
|
-
import React from'react';
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Text, StyleSheet } from 'react-native';
|
|
3
|
+
import { TEXT_STYLES } from '../theme';
|
|
4
|
+
const BodyText = ({
|
|
5
|
+
children = "The secure, portable persona built from your data. Every app personalized while your data stays yours.",
|
|
6
|
+
style
|
|
7
|
+
}) => {
|
|
8
|
+
return /*#__PURE__*/React.createElement(Text, {
|
|
9
|
+
style: [styles.text, style]
|
|
10
|
+
}, children);
|
|
11
|
+
};
|
|
12
|
+
const styles = StyleSheet.create({
|
|
13
|
+
text: {
|
|
14
|
+
...TEXT_STYLES.body,
|
|
15
|
+
paddingHorizontal: 20 // Add horizontal padding for nice text wrapping
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
export { BodyText };
|
|
19
|
+
export default BodyText;
|
|
20
|
+
//# sourceMappingURL=BodyText.js.map
|
|
@@ -1 +1,104 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { View, StyleSheet, Image, Platform } from 'react-native';
|
|
3
|
+
import { SHADOWS } from '../theme';
|
|
4
|
+
import { BRAND_IMAGES } from '../utils/assetRegistry';
|
|
5
|
+
const BrandMark = ({
|
|
6
|
+
containerSize = 110,
|
|
7
|
+
imageSize = 110,
|
|
8
|
+
style,
|
|
9
|
+
showGlow = true
|
|
10
|
+
}) => {
|
|
11
|
+
const borderRadius = containerSize * 0.2;
|
|
12
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
13
|
+
style: [styles.glowWrapper, style]
|
|
14
|
+
}, showGlow && /*#__PURE__*/React.createElement(View, {
|
|
15
|
+
style: [styles.glowLayer, styles.redGlow, {
|
|
16
|
+
width: containerSize,
|
|
17
|
+
height: containerSize,
|
|
18
|
+
borderRadius
|
|
19
|
+
}]
|
|
20
|
+
}), showGlow && /*#__PURE__*/React.createElement(View, {
|
|
21
|
+
style: [styles.glowLayer, styles.blueGlow, {
|
|
22
|
+
width: containerSize,
|
|
23
|
+
height: containerSize,
|
|
24
|
+
borderRadius
|
|
25
|
+
}]
|
|
26
|
+
}), /*#__PURE__*/React.createElement(View, {
|
|
27
|
+
style: [styles.container, {
|
|
28
|
+
width: containerSize,
|
|
29
|
+
height: containerSize,
|
|
30
|
+
borderRadius
|
|
31
|
+
}]
|
|
32
|
+
}, /*#__PURE__*/React.createElement(Image, {
|
|
33
|
+
source: BRAND_IMAGES.onairosLogo,
|
|
34
|
+
style: [styles.logo, {
|
|
35
|
+
width: imageSize,
|
|
36
|
+
height: imageSize,
|
|
37
|
+
transform: [{
|
|
38
|
+
translateY: -1
|
|
39
|
+
}, {
|
|
40
|
+
translateX: -4
|
|
41
|
+
}] // Nudge logo slightly up and left
|
|
42
|
+
}],
|
|
43
|
+
resizeMode: "contain"
|
|
44
|
+
})));
|
|
45
|
+
};
|
|
46
|
+
const styles = StyleSheet.create({
|
|
47
|
+
glowWrapper: {
|
|
48
|
+
position: 'relative',
|
|
49
|
+
alignItems: 'center',
|
|
50
|
+
justifyContent: 'center'
|
|
51
|
+
},
|
|
52
|
+
glowLayer: {
|
|
53
|
+
position: 'absolute',
|
|
54
|
+
backgroundColor: 'transparent'
|
|
55
|
+
},
|
|
56
|
+
redGlow: {
|
|
57
|
+
// Red/pink glow - offset to bottom-right
|
|
58
|
+
shadowColor: '#FF4D6A',
|
|
59
|
+
shadowOffset: {
|
|
60
|
+
width: 8,
|
|
61
|
+
height: 8
|
|
62
|
+
},
|
|
63
|
+
shadowOpacity: 0.5,
|
|
64
|
+
shadowRadius: 20,
|
|
65
|
+
elevation: 8,
|
|
66
|
+
// For Android, we need a background to show shadow
|
|
67
|
+
...Platform.select({
|
|
68
|
+
android: {
|
|
69
|
+
backgroundColor: 'rgba(255, 77, 106, 0.15)'
|
|
70
|
+
}
|
|
71
|
+
})
|
|
72
|
+
},
|
|
73
|
+
blueGlow: {
|
|
74
|
+
// Blue/cyan glow - offset to top-left
|
|
75
|
+
shadowColor: '#4D79FF',
|
|
76
|
+
shadowOffset: {
|
|
77
|
+
width: -8,
|
|
78
|
+
height: -8
|
|
79
|
+
},
|
|
80
|
+
shadowOpacity: 0.5,
|
|
81
|
+
shadowRadius: 20,
|
|
82
|
+
elevation: 8,
|
|
83
|
+
// For Android, we need a background to show shadow
|
|
84
|
+
...Platform.select({
|
|
85
|
+
android: {
|
|
86
|
+
backgroundColor: 'rgba(77, 121, 255, 0.15)'
|
|
87
|
+
}
|
|
88
|
+
})
|
|
89
|
+
},
|
|
90
|
+
container: {
|
|
91
|
+
backgroundColor: '#FFFFFF',
|
|
92
|
+
justifyContent: 'center',
|
|
93
|
+
alignItems: 'center',
|
|
94
|
+
overflow: 'hidden',
|
|
95
|
+
// Clip logo at container edges
|
|
96
|
+
...SHADOWS.brandMark
|
|
97
|
+
},
|
|
98
|
+
logo: {
|
|
99
|
+
// Logo styling is handled via props for flexibility
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
export { BrandMark };
|
|
103
|
+
export default BrandMark;
|
|
104
|
+
//# sourceMappingURL=BrandMark.js.map
|
|
@@ -1 +1,109 @@
|
|
|
1
|
-
import React,
|
|
1
|
+
import React, { useRef, useState, useEffect } from 'react';
|
|
2
|
+
import { View, TextInput, StyleSheet, Pressable, Keyboard } from 'react-native';
|
|
3
|
+
import { COLORS } from '../theme';
|
|
4
|
+
const CodeInput = ({
|
|
5
|
+
length = 6,
|
|
6
|
+
onCodeChange,
|
|
7
|
+
onCodeComplete
|
|
8
|
+
}) => {
|
|
9
|
+
const [code, setCode] = useState(Array(length).fill(''));
|
|
10
|
+
const [focusedIndex, setFocusedIndex] = useState(0);
|
|
11
|
+
const inputRefs = useRef([]);
|
|
12
|
+
const hiddenInputRef = useRef(null);
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
// Focus the hidden input on mount
|
|
15
|
+
setTimeout(() => {
|
|
16
|
+
var _hiddenInputRef$curre;
|
|
17
|
+
(_hiddenInputRef$curre = hiddenInputRef.current) === null || _hiddenInputRef$curre === void 0 || _hiddenInputRef$curre.focus();
|
|
18
|
+
}, 100);
|
|
19
|
+
}, []);
|
|
20
|
+
const handleHiddenInputChange = text => {
|
|
21
|
+
// Only allow numbers
|
|
22
|
+
const numericText = text.replace(/[^0-9]/g, '');
|
|
23
|
+
const newCode = numericText.slice(0, length).split('');
|
|
24
|
+
|
|
25
|
+
// Pad with empty strings
|
|
26
|
+
while (newCode.length < length) {
|
|
27
|
+
newCode.push('');
|
|
28
|
+
}
|
|
29
|
+
setCode(newCode);
|
|
30
|
+
setFocusedIndex(Math.min(numericText.length, length - 1));
|
|
31
|
+
const codeString = newCode.join('');
|
|
32
|
+
onCodeChange === null || onCodeChange === void 0 || onCodeChange(codeString);
|
|
33
|
+
if (numericText.length === length) {
|
|
34
|
+
onCodeComplete === null || onCodeComplete === void 0 || onCodeComplete(codeString);
|
|
35
|
+
Keyboard.dismiss();
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
const handleBoxPress = () => {
|
|
39
|
+
var _hiddenInputRef$curre2;
|
|
40
|
+
(_hiddenInputRef$curre2 = hiddenInputRef.current) === null || _hiddenInputRef$curre2 === void 0 || _hiddenInputRef$curre2.focus();
|
|
41
|
+
};
|
|
42
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
43
|
+
style: styles.container
|
|
44
|
+
}, /*#__PURE__*/React.createElement(TextInput, {
|
|
45
|
+
ref: hiddenInputRef,
|
|
46
|
+
style: styles.hiddenInput,
|
|
47
|
+
value: code.join(''),
|
|
48
|
+
onChangeText: handleHiddenInputChange,
|
|
49
|
+
keyboardType: "number-pad",
|
|
50
|
+
maxLength: length,
|
|
51
|
+
autoComplete: "sms-otp",
|
|
52
|
+
textContentType: "oneTimeCode",
|
|
53
|
+
caretHidden: true
|
|
54
|
+
}), /*#__PURE__*/React.createElement(Pressable, {
|
|
55
|
+
style: styles.boxesContainer,
|
|
56
|
+
onPress: handleBoxPress
|
|
57
|
+
}, Array(length).fill(0).map((_, index) => /*#__PURE__*/React.createElement(View, {
|
|
58
|
+
key: index,
|
|
59
|
+
style: [styles.box, code[index] ? styles.boxFilled : null, focusedIndex === index && !code[index] ? styles.boxFocused : null]
|
|
60
|
+
}, /*#__PURE__*/React.createElement(TextInput, {
|
|
61
|
+
style: styles.boxText,
|
|
62
|
+
value: code[index],
|
|
63
|
+
editable: false,
|
|
64
|
+
pointerEvents: "none"
|
|
65
|
+
})))));
|
|
66
|
+
};
|
|
67
|
+
const styles = StyleSheet.create({
|
|
68
|
+
container: {
|
|
69
|
+
width: '100%'
|
|
70
|
+
},
|
|
71
|
+
hiddenInput: {
|
|
72
|
+
position: 'absolute',
|
|
73
|
+
opacity: 0,
|
|
74
|
+
height: 0,
|
|
75
|
+
width: 0
|
|
76
|
+
},
|
|
77
|
+
boxesContainer: {
|
|
78
|
+
flexDirection: 'row',
|
|
79
|
+
justifyContent: 'space-between',
|
|
80
|
+
width: '100%'
|
|
81
|
+
},
|
|
82
|
+
box: {
|
|
83
|
+
width: 48,
|
|
84
|
+
height: 56,
|
|
85
|
+
borderWidth: 1.5,
|
|
86
|
+
borderColor: '#E0E0E0',
|
|
87
|
+
borderRadius: 12,
|
|
88
|
+
justifyContent: 'center',
|
|
89
|
+
alignItems: 'center',
|
|
90
|
+
backgroundColor: '#FAFAFA'
|
|
91
|
+
},
|
|
92
|
+
boxFilled: {
|
|
93
|
+
borderColor: COLORS.grey600,
|
|
94
|
+
backgroundColor: '#FFFFFF'
|
|
95
|
+
},
|
|
96
|
+
boxFocused: {
|
|
97
|
+
borderColor: '#D4A536',
|
|
98
|
+
borderWidth: 2
|
|
99
|
+
},
|
|
100
|
+
boxText: {
|
|
101
|
+
fontSize: 24,
|
|
102
|
+
fontWeight: '600',
|
|
103
|
+
color: COLORS.grey800,
|
|
104
|
+
textAlign: 'center'
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
export { CodeInput };
|
|
108
|
+
export default CodeInput;
|
|
109
|
+
//# sourceMappingURL=CodeInput.js.map
|
|
@@ -1 +1,23 @@
|
|
|
1
|
-
function
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { TextInput, StyleSheet } from 'react-native';
|
|
4
|
+
const EmailInput = props => {
|
|
5
|
+
return /*#__PURE__*/React.createElement(TextInput, _extends({}, props, {
|
|
6
|
+
keyboardType: "email-address",
|
|
7
|
+
autoCapitalize: "none",
|
|
8
|
+
autoComplete: "email",
|
|
9
|
+
style: [styles.input, props.style]
|
|
10
|
+
}));
|
|
11
|
+
};
|
|
12
|
+
const styles = StyleSheet.create({
|
|
13
|
+
input: {
|
|
14
|
+
borderWidth: 1,
|
|
15
|
+
borderColor: '#E0E0E0',
|
|
16
|
+
borderRadius: 8,
|
|
17
|
+
padding: 12,
|
|
18
|
+
fontSize: 16
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
export { EmailInput };
|
|
22
|
+
export default EmailInput;
|
|
23
|
+
//# sourceMappingURL=EmailInput.js.map
|
|
@@ -1 +1,49 @@
|
|
|
1
|
-
import React from'react';
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TouchableOpacity, Text, Image, StyleSheet } from 'react-native';
|
|
3
|
+
import { BRAND_IMAGES } from '../utils/assetRegistry';
|
|
4
|
+
const GoogleButton = ({
|
|
5
|
+
onPress,
|
|
6
|
+
style,
|
|
7
|
+
disabled = false
|
|
8
|
+
}) => {
|
|
9
|
+
return /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
10
|
+
style: [styles.button, style, disabled && styles.disabled],
|
|
11
|
+
onPress: onPress,
|
|
12
|
+
disabled: disabled
|
|
13
|
+
}, /*#__PURE__*/React.createElement(Image, {
|
|
14
|
+
source: BRAND_IMAGES.googleLogo,
|
|
15
|
+
style: styles.icon,
|
|
16
|
+
resizeMode: "contain"
|
|
17
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
18
|
+
style: styles.text
|
|
19
|
+
}, "Continue with Google"));
|
|
20
|
+
};
|
|
21
|
+
const styles = StyleSheet.create({
|
|
22
|
+
button: {
|
|
23
|
+
flexDirection: 'row',
|
|
24
|
+
alignItems: 'center',
|
|
25
|
+
justifyContent: 'center',
|
|
26
|
+
backgroundColor: '#FFFFFF',
|
|
27
|
+
borderWidth: 1,
|
|
28
|
+
borderColor: '#E0E0E0',
|
|
29
|
+
borderRadius: 8,
|
|
30
|
+
paddingVertical: 12,
|
|
31
|
+
paddingHorizontal: 16
|
|
32
|
+
},
|
|
33
|
+
disabled: {
|
|
34
|
+
opacity: 0.5
|
|
35
|
+
},
|
|
36
|
+
icon: {
|
|
37
|
+
width: 20,
|
|
38
|
+
height: 20,
|
|
39
|
+
marginRight: 8
|
|
40
|
+
},
|
|
41
|
+
text: {
|
|
42
|
+
fontSize: 16,
|
|
43
|
+
fontWeight: '500',
|
|
44
|
+
color: '#333333'
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
export { GoogleButton };
|
|
48
|
+
export default GoogleButton;
|
|
49
|
+
//# sourceMappingURL=GoogleButton.js.map
|
|
@@ -1 +1,36 @@
|
|
|
1
|
-
import React from'react';
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { View, Text, StyleSheet } from 'react-native';
|
|
3
|
+
import { TEXT_STYLES } from '../theme';
|
|
4
|
+
const HeadingGroup = ({
|
|
5
|
+
kicker = "Welcome to",
|
|
6
|
+
title = "Onairos",
|
|
7
|
+
style
|
|
8
|
+
}) => {
|
|
9
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
10
|
+
style: [styles.container, style]
|
|
11
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
12
|
+
style: styles.kicker
|
|
13
|
+
}, kicker), /*#__PURE__*/React.createElement(Text, {
|
|
14
|
+
style: styles.title
|
|
15
|
+
}, title));
|
|
16
|
+
};
|
|
17
|
+
const styles = StyleSheet.create({
|
|
18
|
+
container: {
|
|
19
|
+
alignItems: 'center'
|
|
20
|
+
},
|
|
21
|
+
kicker: {
|
|
22
|
+
...TEXT_STYLES.kicker,
|
|
23
|
+
fontFamily: 'IBM Plex Sans',
|
|
24
|
+
fontWeight: '700',
|
|
25
|
+
// Force bold weight
|
|
26
|
+
marginBottom: 4 // Small gap between kicker and title
|
|
27
|
+
},
|
|
28
|
+
title: {
|
|
29
|
+
...TEXT_STYLES.welcomeTitle,
|
|
30
|
+
fontFamily: 'IBM Plex Sans',
|
|
31
|
+
fontWeight: '700' // Force bold weight
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
export { HeadingGroup };
|
|
35
|
+
export default HeadingGroup;
|
|
36
|
+
//# sourceMappingURL=HeadingGroup.js.map
|