@onairos/react-native 3.1.12 → 3.1.13

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 (604) hide show
  1. package/lib/commonjs/api/index.js +75 -1
  2. package/lib/commonjs/api/index.js.map +1 -1
  3. package/lib/commonjs/assets/fonts/EBGaramond-VariableFont_wght.ttf +0 -0
  4. package/lib/commonjs/assets/fonts/IBMPlexSans-VariableFont_wdth,wght.ttf +0 -0
  5. package/lib/commonjs/assets/icons/Facebookicon.png +0 -0
  6. package/lib/commonjs/assets/icons/Gmail.png +0 -0
  7. package/lib/commonjs/assets/icons/Linkedinicon.png +0 -0
  8. package/lib/commonjs/assets/icons/Redditicon.png +0 -0
  9. package/lib/commonjs/assets/icons/YouTubeicon2.png +0 -0
  10. package/lib/commonjs/assets/icons/YouTubeicon3.png +0 -0
  11. package/lib/commonjs/assets/icons/farcaster.png +0 -0
  12. package/lib/commonjs/assets/icons/instagram.png +0 -0
  13. package/lib/commonjs/assets/icons/pinterest.png +0 -0
  14. package/lib/commonjs/assets/icons/swerv_logo.png +0 -0
  15. package/lib/commonjs/assets/icons/twitter.jpg +0 -0
  16. package/lib/commonjs/assets/images/Checkbox.svg +3 -0
  17. package/lib/commonjs/assets/images/EnochE.svg +19 -0
  18. package/lib/commonjs/assets/images/Enochicon1.png +0 -0
  19. package/lib/commonjs/assets/images/Face_ID_logo.png +0 -0
  20. package/lib/commonjs/assets/images/Facebookicon.png +0 -0
  21. package/lib/commonjs/assets/images/Gmail.png +0 -0
  22. package/lib/commonjs/assets/images/Googlelogo.png +0 -0
  23. package/lib/commonjs/assets/images/Linkedinicon.png +0 -0
  24. package/lib/commonjs/assets/images/Onairoslogo.png +0 -0
  25. package/lib/commonjs/assets/images/Personalityprofile.svg +3 -0
  26. package/lib/commonjs/assets/images/Personalitytraits.svg +3 -0
  27. package/lib/commonjs/assets/images/Redditicon.png +0 -0
  28. package/lib/commonjs/assets/images/Userpreferences.svg +3 -0
  29. package/lib/commonjs/assets/images/YouTubeicon3.png +0 -0
  30. package/lib/commonjs/assets/images/arrow.svg +20 -0
  31. package/lib/commonjs/assets/images/basicproficon.svg +43 -0
  32. package/lib/commonjs/assets/images/basicprofile.svg +3 -0
  33. package/lib/commonjs/assets/images/checkmark.svg +4 -0
  34. package/lib/commonjs/assets/images/contentanalysis.svg +3 -0
  35. package/lib/commonjs/assets/images/contenticon.svg +23 -0
  36. package/lib/commonjs/assets/images/persona1.png +0 -0
  37. package/lib/commonjs/assets/images/persona2.png +0 -0
  38. package/lib/commonjs/assets/images/persona3.png +0 -0
  39. package/lib/commonjs/assets/images/persona4.png +0 -0
  40. package/lib/commonjs/assets/images/persona5.png +0 -0
  41. package/lib/commonjs/assets/images/personalityicon.svg +18 -0
  42. package/lib/commonjs/assets/images/x-close.svg +3 -0
  43. package/lib/commonjs/components/BodyText.js +27 -0
  44. package/lib/commonjs/components/BodyText.js.map +1 -0
  45. package/lib/commonjs/components/BrandMark.js +44 -0
  46. package/lib/commonjs/components/BrandMark.js.map +1 -0
  47. package/lib/commonjs/components/CodeInput.js +30 -0
  48. package/lib/commonjs/components/CodeInput.js.map +1 -0
  49. package/lib/commonjs/components/EmailInput.js +30 -0
  50. package/lib/commonjs/components/EmailInput.js.map +1 -0
  51. package/lib/commonjs/components/ExistingUserDataConfirmation.js +474 -0
  52. package/lib/commonjs/components/ExistingUserDataConfirmation.js.map +1 -0
  53. package/lib/commonjs/components/GoogleButton.js +55 -0
  54. package/lib/commonjs/components/GoogleButton.js.map +1 -0
  55. package/lib/commonjs/components/HeadingGroup.js +43 -0
  56. package/lib/commonjs/components/HeadingGroup.js.map +1 -0
  57. package/lib/commonjs/components/ModalHeader.js +99 -0
  58. package/lib/commonjs/components/ModalHeader.js.map +1 -0
  59. package/lib/commonjs/components/ModalSheet.js +41 -0
  60. package/lib/commonjs/components/ModalSheet.js.map +1 -0
  61. package/lib/commonjs/components/Onairos.js +1 -3
  62. package/lib/commonjs/components/Onairos.js.map +1 -1
  63. package/lib/commonjs/components/OnairosButton.js +171 -190
  64. package/lib/commonjs/components/OnairosButton.js.map +1 -1
  65. package/lib/commonjs/components/OnairosSignInButton.js +169 -0
  66. package/lib/commonjs/components/OnairosSignInButton.js.map +1 -0
  67. package/lib/commonjs/components/Overlay.js +5 -5
  68. package/lib/commonjs/components/Overlay.js.map +1 -1
  69. package/lib/commonjs/components/PersonaImage.js +60 -0
  70. package/lib/commonjs/components/PersonaImage.js.map +1 -0
  71. package/lib/commonjs/components/PersonaLoadingScreen.js +156 -0
  72. package/lib/commonjs/components/PersonaLoadingScreen.js.map +1 -0
  73. package/lib/commonjs/components/PersonalizationConsentScreen.js +316 -0
  74. package/lib/commonjs/components/PersonalizationConsentScreen.js.map +1 -0
  75. package/lib/commonjs/components/PinCreationScreen.js +393 -0
  76. package/lib/commonjs/components/PinCreationScreen.js.map +1 -0
  77. package/lib/commonjs/components/PinInput.js +282 -120
  78. package/lib/commonjs/components/PinInput.js.map +1 -1
  79. package/lib/commonjs/components/PlatformConnectorsStep.js +828 -0
  80. package/lib/commonjs/components/PlatformConnectorsStep.js.map +1 -0
  81. package/lib/commonjs/components/PlatformToggle.js +180 -0
  82. package/lib/commonjs/components/PlatformToggle.js.map +1 -0
  83. package/lib/commonjs/components/PrimaryButton.js +180 -0
  84. package/lib/commonjs/components/PrimaryButton.js.map +1 -0
  85. package/lib/commonjs/components/SignInMatchAnimation.js +197 -0
  86. package/lib/commonjs/components/SignInMatchAnimation.js.map +1 -0
  87. package/lib/commonjs/components/SignInStep.js +179 -0
  88. package/lib/commonjs/components/SignInStep.js.map +1 -0
  89. package/lib/commonjs/components/TrainingModal.js +808 -563
  90. package/lib/commonjs/components/TrainingModal.js.map +1 -1
  91. package/lib/commonjs/components/UniversalOnboarding.js +2304 -1283
  92. package/lib/commonjs/components/UniversalOnboarding.js.map +1 -1
  93. package/lib/commonjs/components/VerificationStep.js +154 -0
  94. package/lib/commonjs/components/VerificationStep.js.map +1 -0
  95. package/lib/commonjs/components/WelcomeScreen.js +385 -0
  96. package/lib/commonjs/components/WelcomeScreen.js.map +1 -0
  97. package/lib/commonjs/components/icons/Basicproficon.js +37 -0
  98. package/lib/commonjs/components/icons/Basicproficon.js.map +1 -0
  99. package/lib/commonjs/components/icons/Basicprofile.js +21 -0
  100. package/lib/commonjs/components/icons/Basicprofile.js.map +1 -0
  101. package/lib/commonjs/components/icons/Checkbox.js +21 -0
  102. package/lib/commonjs/components/icons/Checkbox.js.map +1 -0
  103. package/lib/commonjs/components/icons/Checkmark.js +27 -0
  104. package/lib/commonjs/components/icons/Checkmark.js.map +1 -0
  105. package/lib/commonjs/components/icons/Contentanalysis.js +21 -0
  106. package/lib/commonjs/components/icons/Contentanalysis.js.map +1 -0
  107. package/lib/commonjs/components/icons/Contenticon.js +39 -0
  108. package/lib/commonjs/components/icons/Contenticon.js.map +1 -0
  109. package/lib/commonjs/components/icons/EnochE.js +41 -0
  110. package/lib/commonjs/components/icons/EnochE.js.map +1 -0
  111. package/lib/commonjs/components/icons/Personalityicon.js +30 -0
  112. package/lib/commonjs/components/icons/Personalityicon.js.map +1 -0
  113. package/lib/commonjs/components/icons/Personalityprofile.js +21 -0
  114. package/lib/commonjs/components/icons/Personalityprofile.js.map +1 -0
  115. package/lib/commonjs/components/icons/Personalitytraits.js +21 -0
  116. package/lib/commonjs/components/icons/Personalitytraits.js.map +1 -0
  117. package/lib/commonjs/components/icons/Userpreferences.js +21 -0
  118. package/lib/commonjs/components/icons/Userpreferences.js.map +1 -0
  119. package/lib/commonjs/components/icons/index.js +84 -0
  120. package/lib/commonjs/components/icons/index.js.map +1 -0
  121. package/lib/commonjs/components/onboarding/OAuthWebView.js +134 -743
  122. package/lib/commonjs/components/onboarding/OAuthWebView.js.map +1 -1
  123. package/lib/commonjs/config/api.js +34 -0
  124. package/lib/commonjs/config/api.js.map +1 -0
  125. package/lib/commonjs/context/AuthContext.js +345 -0
  126. package/lib/commonjs/context/AuthContext.js.map +1 -0
  127. package/lib/commonjs/hooks/useConnectedAccounts.js +111 -0
  128. package/lib/commonjs/hooks/useConnectedAccounts.js.map +1 -0
  129. package/lib/commonjs/hooks/useConnections.js +120 -125
  130. package/lib/commonjs/hooks/useConnections.js.map +1 -1
  131. package/lib/commonjs/hooks/useUserConnections.js +148 -0
  132. package/lib/commonjs/hooks/useUserConnections.js.map +1 -0
  133. package/lib/commonjs/index.js +149 -27
  134. package/lib/commonjs/index.js.map +1 -1
  135. package/lib/commonjs/services/apiClient.js +302 -0
  136. package/lib/commonjs/services/apiClient.js.map +1 -0
  137. package/lib/commonjs/services/apiKeyService.js +8 -9
  138. package/lib/commonjs/services/apiKeyService.js.map +1 -1
  139. package/lib/commonjs/services/authService.js +935 -0
  140. package/lib/commonjs/services/authService.js.map +1 -0
  141. package/lib/commonjs/services/biometricPinService.js +184 -0
  142. package/lib/commonjs/services/biometricPinService.js.map +1 -0
  143. package/lib/commonjs/services/connectedAccountsService.js +268 -0
  144. package/lib/commonjs/services/connectedAccountsService.js.map +1 -0
  145. package/lib/commonjs/services/googleAuthService.js +268 -0
  146. package/lib/commonjs/services/googleAuthService.js.map +1 -0
  147. package/lib/commonjs/services/imageCompressionService.js +260 -0
  148. package/lib/commonjs/services/imageCompressionService.js.map +1 -0
  149. package/lib/commonjs/services/jwtStorageService.js +256 -0
  150. package/lib/commonjs/services/jwtStorageService.js.map +1 -0
  151. package/lib/commonjs/services/mobileTrainingService.js +185 -0
  152. package/lib/commonjs/services/mobileTrainingService.js.map +1 -0
  153. package/lib/commonjs/services/pinEncryptionService.js +84 -0
  154. package/lib/commonjs/services/pinEncryptionService.js.map +1 -0
  155. package/lib/commonjs/services/pinStorageUtils.js +105 -0
  156. package/lib/commonjs/services/pinStorageUtils.js.map +1 -0
  157. package/lib/commonjs/services/platformAuthService.js +956 -722
  158. package/lib/commonjs/services/platformAuthService.js.map +1 -1
  159. package/lib/commonjs/services/storageService.js +404 -0
  160. package/lib/commonjs/services/storageService.js.map +1 -0
  161. package/lib/commonjs/services/trainingApiHelpers.js +73 -0
  162. package/lib/commonjs/services/trainingApiHelpers.js.map +1 -0
  163. package/lib/commonjs/services/userConnectionsService.js +486 -0
  164. package/lib/commonjs/services/userConnectionsService.js.map +1 -0
  165. package/lib/commonjs/services/youtubeMigrationService.js +415 -0
  166. package/lib/commonjs/services/youtubeMigrationService.js.map +1 -0
  167. package/lib/commonjs/theme/index.js +249 -0
  168. package/lib/commonjs/theme/index.js.map +1 -0
  169. package/lib/commonjs/utils/eventUtils.js +288 -0
  170. package/lib/commonjs/utils/eventUtils.js.map +1 -0
  171. package/lib/commonjs/utils/haptics.js +66 -0
  172. package/lib/commonjs/utils/haptics.js.map +1 -0
  173. package/lib/commonjs/utils/imagePreloader.js +6 -0
  174. package/lib/commonjs/utils/imagePreloader.js.map +1 -0
  175. package/lib/module/api/index.js +72 -0
  176. package/lib/module/api/index.js.map +1 -1
  177. package/lib/module/assets/fonts/EBGaramond-VariableFont_wght.ttf +0 -0
  178. package/lib/module/assets/fonts/IBMPlexSans-VariableFont_wdth,wght.ttf +0 -0
  179. package/lib/module/assets/icons/Facebookicon.png +0 -0
  180. package/lib/module/assets/icons/Gmail.png +0 -0
  181. package/lib/module/assets/icons/Linkedinicon.png +0 -0
  182. package/lib/module/assets/icons/Redditicon.png +0 -0
  183. package/lib/module/assets/icons/YouTubeicon2.png +0 -0
  184. package/lib/module/assets/icons/YouTubeicon3.png +0 -0
  185. package/lib/module/assets/icons/farcaster.png +0 -0
  186. package/lib/module/assets/icons/instagram.png +0 -0
  187. package/lib/module/assets/icons/pinterest.png +0 -0
  188. package/lib/module/assets/icons/swerv_logo.png +0 -0
  189. package/lib/module/assets/icons/twitter.jpg +0 -0
  190. package/lib/module/assets/images/Checkbox.svg +3 -0
  191. package/lib/module/assets/images/EnochE.svg +19 -0
  192. package/lib/module/assets/images/Enochicon1.png +0 -0
  193. package/lib/module/assets/images/Face_ID_logo.png +0 -0
  194. package/lib/module/assets/images/Facebookicon.png +0 -0
  195. package/lib/module/assets/images/Gmail.png +0 -0
  196. package/lib/module/assets/images/Googlelogo.png +0 -0
  197. package/lib/module/assets/images/Linkedinicon.png +0 -0
  198. package/lib/module/assets/images/Onairoslogo.png +0 -0
  199. package/lib/module/assets/images/Personalityprofile.svg +3 -0
  200. package/lib/module/assets/images/Personalitytraits.svg +3 -0
  201. package/lib/module/assets/images/Redditicon.png +0 -0
  202. package/lib/module/assets/images/Userpreferences.svg +3 -0
  203. package/lib/module/assets/images/YouTubeicon3.png +0 -0
  204. package/lib/module/assets/images/arrow.svg +20 -0
  205. package/lib/module/assets/images/basicproficon.svg +43 -0
  206. package/lib/module/assets/images/basicprofile.svg +3 -0
  207. package/lib/module/assets/images/checkmark.svg +4 -0
  208. package/lib/module/assets/images/contentanalysis.svg +3 -0
  209. package/lib/module/assets/images/contenticon.svg +23 -0
  210. package/lib/module/assets/images/persona1.png +0 -0
  211. package/lib/module/assets/images/persona2.png +0 -0
  212. package/lib/module/assets/images/persona3.png +0 -0
  213. package/lib/module/assets/images/persona4.png +0 -0
  214. package/lib/module/assets/images/persona5.png +0 -0
  215. package/lib/module/assets/images/personalityicon.svg +18 -0
  216. package/lib/module/assets/images/x-close.svg +3 -0
  217. package/lib/module/components/BodyText.js +20 -0
  218. package/lib/module/components/BodyText.js.map +1 -0
  219. package/lib/module/components/BrandMark.js +37 -0
  220. package/lib/module/components/BrandMark.js.map +1 -0
  221. package/lib/module/components/CodeInput.js +23 -0
  222. package/lib/module/components/CodeInput.js.map +1 -0
  223. package/lib/module/components/EmailInput.js +23 -0
  224. package/lib/module/components/EmailInput.js.map +1 -0
  225. package/lib/module/components/ExistingUserDataConfirmation.js +465 -0
  226. package/lib/module/components/ExistingUserDataConfirmation.js.map +1 -0
  227. package/lib/module/components/GoogleButton.js +48 -0
  228. package/lib/module/components/GoogleButton.js.map +1 -0
  229. package/lib/module/components/HeadingGroup.js +36 -0
  230. package/lib/module/components/HeadingGroup.js.map +1 -0
  231. package/lib/module/components/ModalHeader.js +92 -0
  232. package/lib/module/components/ModalHeader.js.map +1 -0
  233. package/lib/module/components/ModalSheet.js +34 -0
  234. package/lib/module/components/ModalSheet.js.map +1 -0
  235. package/lib/module/components/Onairos.js +1 -3
  236. package/lib/module/components/Onairos.js.map +1 -1
  237. package/lib/module/components/OnairosButton.js +172 -192
  238. package/lib/module/components/OnairosButton.js.map +1 -1
  239. package/lib/module/components/OnairosSignInButton.js +160 -0
  240. package/lib/module/components/OnairosSignInButton.js.map +1 -0
  241. package/lib/module/components/Overlay.js +5 -5
  242. package/lib/module/components/Overlay.js.map +1 -1
  243. package/lib/module/components/PersonaImage.js +53 -0
  244. package/lib/module/components/PersonaImage.js.map +1 -0
  245. package/lib/module/components/PersonaLoadingScreen.js +148 -0
  246. package/lib/module/components/PersonaLoadingScreen.js.map +1 -0
  247. package/lib/module/components/PersonalizationConsentScreen.js +309 -0
  248. package/lib/module/components/PersonalizationConsentScreen.js.map +1 -0
  249. package/lib/module/components/PinCreationScreen.js +386 -0
  250. package/lib/module/components/PinCreationScreen.js.map +1 -0
  251. package/lib/module/components/PinInput.js +283 -120
  252. package/lib/module/components/PinInput.js.map +1 -1
  253. package/lib/module/components/PlatformConnectorsStep.js +820 -0
  254. package/lib/module/components/PlatformConnectorsStep.js.map +1 -0
  255. package/lib/module/components/PlatformToggle.js +173 -0
  256. package/lib/module/components/PlatformToggle.js.map +1 -0
  257. package/lib/module/components/PrimaryButton.js +172 -0
  258. package/lib/module/components/PrimaryButton.js.map +1 -0
  259. package/lib/module/components/SignInMatchAnimation.js +189 -0
  260. package/lib/module/components/SignInMatchAnimation.js.map +1 -0
  261. package/lib/module/components/SignInStep.js +171 -0
  262. package/lib/module/components/SignInStep.js.map +1 -0
  263. package/lib/module/components/TrainingModal.js +809 -565
  264. package/lib/module/components/TrainingModal.js.map +1 -1
  265. package/lib/module/components/UniversalOnboarding.js +2307 -1284
  266. package/lib/module/components/UniversalOnboarding.js.map +1 -1
  267. package/lib/module/components/VerificationStep.js +146 -0
  268. package/lib/module/components/VerificationStep.js.map +1 -0
  269. package/lib/module/components/WelcomeScreen.js +378 -0
  270. package/lib/module/components/WelcomeScreen.js.map +1 -0
  271. package/lib/module/components/icons/Basicproficon.js +30 -0
  272. package/lib/module/components/icons/Basicproficon.js.map +1 -0
  273. package/lib/module/components/icons/Basicprofile.js +14 -0
  274. package/lib/module/components/icons/Basicprofile.js.map +1 -0
  275. package/lib/module/components/icons/Checkbox.js +14 -0
  276. package/lib/module/components/icons/Checkbox.js.map +1 -0
  277. package/lib/module/components/icons/Checkmark.js +20 -0
  278. package/lib/module/components/icons/Checkmark.js.map +1 -0
  279. package/lib/module/components/icons/Contentanalysis.js +14 -0
  280. package/lib/module/components/icons/Contentanalysis.js.map +1 -0
  281. package/lib/module/components/icons/Contenticon.js +32 -0
  282. package/lib/module/components/icons/Contenticon.js.map +1 -0
  283. package/lib/module/components/icons/EnochE.js +34 -0
  284. package/lib/module/components/icons/EnochE.js.map +1 -0
  285. package/lib/module/components/icons/Personalityicon.js +23 -0
  286. package/lib/module/components/icons/Personalityicon.js.map +1 -0
  287. package/lib/module/components/icons/Personalityprofile.js +14 -0
  288. package/lib/module/components/icons/Personalityprofile.js.map +1 -0
  289. package/lib/module/components/icons/Personalitytraits.js +14 -0
  290. package/lib/module/components/icons/Personalitytraits.js.map +1 -0
  291. package/lib/module/components/icons/Userpreferences.js +14 -0
  292. package/lib/module/components/icons/Userpreferences.js.map +1 -0
  293. package/lib/module/components/icons/index.js +13 -0
  294. package/lib/module/components/icons/index.js.map +1 -0
  295. package/lib/module/components/onboarding/OAuthWebView.js +136 -744
  296. package/lib/module/components/onboarding/OAuthWebView.js.map +1 -1
  297. package/lib/module/config/api.js +26 -0
  298. package/lib/module/config/api.js.map +1 -0
  299. package/lib/module/context/AuthContext.js +335 -0
  300. package/lib/module/context/AuthContext.js.map +1 -0
  301. package/lib/module/hooks/useConnectedAccounts.js +106 -0
  302. package/lib/module/hooks/useConnectedAccounts.js.map +1 -0
  303. package/lib/module/hooks/useConnections.js +119 -125
  304. package/lib/module/hooks/useConnections.js.map +1 -1
  305. package/lib/module/hooks/useUserConnections.js +140 -0
  306. package/lib/module/hooks/useUserConnections.js.map +1 -0
  307. package/lib/module/index.js +51 -15
  308. package/lib/module/index.js.map +1 -1
  309. package/lib/module/services/apiClient.js +298 -0
  310. package/lib/module/services/apiClient.js.map +1 -0
  311. package/lib/module/services/apiKeyService.js +8 -9
  312. package/lib/module/services/apiKeyService.js.map +1 -1
  313. package/lib/module/services/authService.js +905 -0
  314. package/lib/module/services/authService.js.map +1 -0
  315. package/lib/module/services/biometricPinService.js +173 -0
  316. package/lib/module/services/biometricPinService.js.map +1 -0
  317. package/lib/module/services/connectedAccountsService.js +255 -0
  318. package/lib/module/services/connectedAccountsService.js.map +1 -0
  319. package/lib/module/services/googleAuthService.js +258 -0
  320. package/lib/module/services/googleAuthService.js.map +1 -0
  321. package/lib/module/services/imageCompressionService.js +250 -0
  322. package/lib/module/services/imageCompressionService.js.map +1 -0
  323. package/lib/module/services/jwtStorageService.js +239 -0
  324. package/lib/module/services/jwtStorageService.js.map +1 -0
  325. package/lib/module/services/mobileTrainingService.js +172 -0
  326. package/lib/module/services/mobileTrainingService.js.map +1 -0
  327. package/lib/module/services/pinEncryptionService.js +75 -0
  328. package/lib/module/services/pinEncryptionService.js.map +1 -0
  329. package/lib/module/services/pinStorageUtils.js +93 -0
  330. package/lib/module/services/pinStorageUtils.js.map +1 -0
  331. package/lib/module/services/platformAuthService.js +943 -704
  332. package/lib/module/services/platformAuthService.js.map +1 -1
  333. package/lib/module/services/storageService.js +383 -0
  334. package/lib/module/services/storageService.js.map +1 -0
  335. package/lib/module/services/trainingApiHelpers.js +67 -0
  336. package/lib/module/services/trainingApiHelpers.js.map +1 -0
  337. package/lib/module/services/userConnectionsService.js +476 -0
  338. package/lib/module/services/userConnectionsService.js.map +1 -0
  339. package/lib/module/services/youtubeMigrationService.js +404 -0
  340. package/lib/module/services/youtubeMigrationService.js.map +1 -0
  341. package/lib/module/theme/index.js +244 -0
  342. package/lib/module/theme/index.js.map +1 -0
  343. package/lib/module/utils/eventUtils.js +270 -0
  344. package/lib/module/utils/eventUtils.js.map +1 -0
  345. package/lib/module/utils/haptics.js +59 -0
  346. package/lib/module/utils/haptics.js.map +1 -0
  347. package/lib/module/utils/imagePreloader.js +3 -0
  348. package/lib/module/utils/imagePreloader.js.map +1 -0
  349. package/lib/typescript/api/index.d.ts +8 -0
  350. package/lib/typescript/api/index.d.ts.map +1 -1
  351. package/lib/typescript/components/BodyText.d.ts +10 -0
  352. package/lib/typescript/components/BodyText.d.ts.map +1 -0
  353. package/lib/typescript/components/BrandMark.d.ts +11 -0
  354. package/lib/typescript/components/BrandMark.d.ts.map +1 -0
  355. package/lib/typescript/components/CodeInput.d.ts +10 -0
  356. package/lib/typescript/components/CodeInput.d.ts.map +1 -0
  357. package/lib/typescript/components/EmailInput.d.ts +8 -0
  358. package/lib/typescript/components/EmailInput.d.ts.map +1 -0
  359. package/lib/typescript/components/ExistingUserDataConfirmation.d.ts +12 -0
  360. package/lib/typescript/components/ExistingUserDataConfirmation.d.ts.map +1 -0
  361. package/lib/typescript/components/GoogleButton.d.ts +11 -0
  362. package/lib/typescript/components/GoogleButton.d.ts.map +1 -0
  363. package/lib/typescript/components/HeadingGroup.d.ts +11 -0
  364. package/lib/typescript/components/HeadingGroup.d.ts.map +1 -0
  365. package/lib/typescript/components/ModalHeader.d.ts +11 -0
  366. package/lib/typescript/components/ModalHeader.d.ts.map +1 -0
  367. package/lib/typescript/components/ModalSheet.d.ts +13 -0
  368. package/lib/typescript/components/ModalSheet.d.ts.map +1 -0
  369. package/lib/typescript/components/Onairos.d.ts.map +1 -1
  370. package/lib/typescript/components/OnairosButton.d.ts +29 -4
  371. package/lib/typescript/components/OnairosButton.d.ts.map +1 -1
  372. package/lib/typescript/components/OnairosSignInButton.d.ts +14 -0
  373. package/lib/typescript/components/OnairosSignInButton.d.ts.map +1 -0
  374. package/lib/typescript/components/PersonaImage.d.ts +8 -0
  375. package/lib/typescript/components/PersonaImage.d.ts.map +1 -0
  376. package/lib/typescript/components/PersonaLoadingScreen.d.ts +10 -0
  377. package/lib/typescript/components/PersonaLoadingScreen.d.ts.map +1 -0
  378. package/lib/typescript/components/PersonalizationConsentScreen.d.ts +10 -0
  379. package/lib/typescript/components/PersonalizationConsentScreen.d.ts.map +1 -0
  380. package/lib/typescript/components/PinCreationScreen.d.ts +10 -0
  381. package/lib/typescript/components/PinCreationScreen.d.ts.map +1 -0
  382. package/lib/typescript/components/PinInput.d.ts +11 -1
  383. package/lib/typescript/components/PinInput.d.ts.map +1 -1
  384. package/lib/typescript/components/PlatformConnectorsStep.d.ts +11 -0
  385. package/lib/typescript/components/PlatformConnectorsStep.d.ts.map +1 -0
  386. package/lib/typescript/components/PlatformToggle.d.ts +20 -0
  387. package/lib/typescript/components/PlatformToggle.d.ts.map +1 -0
  388. package/lib/typescript/components/PrimaryButton.d.ts +22 -0
  389. package/lib/typescript/components/PrimaryButton.d.ts.map +1 -0
  390. package/lib/typescript/components/SignInMatchAnimation.d.ts +9 -0
  391. package/lib/typescript/components/SignInMatchAnimation.d.ts.map +1 -0
  392. package/lib/typescript/components/SignInStep.d.ts +12 -0
  393. package/lib/typescript/components/SignInStep.d.ts.map +1 -0
  394. package/lib/typescript/components/TrainingModal.d.ts +12 -1
  395. package/lib/typescript/components/TrainingModal.d.ts.map +1 -1
  396. package/lib/typescript/components/UniversalOnboarding.d.ts +14 -1
  397. package/lib/typescript/components/UniversalOnboarding.d.ts.map +1 -1
  398. package/lib/typescript/components/VerificationStep.d.ts +13 -0
  399. package/lib/typescript/components/VerificationStep.d.ts.map +1 -0
  400. package/lib/typescript/components/WelcomeScreen.d.ts +9 -0
  401. package/lib/typescript/components/WelcomeScreen.d.ts.map +1 -0
  402. package/lib/typescript/components/icons/Basicproficon.d.ts +5 -0
  403. package/lib/typescript/components/icons/Basicproficon.d.ts.map +1 -0
  404. package/lib/typescript/components/icons/Basicprofile.d.ts +5 -0
  405. package/lib/typescript/components/icons/Basicprofile.d.ts.map +1 -0
  406. package/lib/typescript/components/icons/Checkbox.d.ts +5 -0
  407. package/lib/typescript/components/icons/Checkbox.d.ts.map +1 -0
  408. package/lib/typescript/components/icons/Checkmark.d.ts +5 -0
  409. package/lib/typescript/components/icons/Checkmark.d.ts.map +1 -0
  410. package/lib/typescript/components/icons/Contentanalysis.d.ts +5 -0
  411. package/lib/typescript/components/icons/Contentanalysis.d.ts.map +1 -0
  412. package/lib/typescript/components/icons/Contenticon.d.ts +5 -0
  413. package/lib/typescript/components/icons/Contenticon.d.ts.map +1 -0
  414. package/lib/typescript/components/icons/EnochE.d.ts +5 -0
  415. package/lib/typescript/components/icons/EnochE.d.ts.map +1 -0
  416. package/lib/typescript/components/icons/Personalityicon.d.ts +5 -0
  417. package/lib/typescript/components/icons/Personalityicon.d.ts.map +1 -0
  418. package/lib/typescript/components/icons/Personalityprofile.d.ts +5 -0
  419. package/lib/typescript/components/icons/Personalityprofile.d.ts.map +1 -0
  420. package/lib/typescript/components/icons/Personalitytraits.d.ts +5 -0
  421. package/lib/typescript/components/icons/Personalitytraits.d.ts.map +1 -0
  422. package/lib/typescript/components/icons/Userpreferences.d.ts +5 -0
  423. package/lib/typescript/components/icons/Userpreferences.d.ts.map +1 -0
  424. package/lib/typescript/components/icons/index.d.ts +12 -0
  425. package/lib/typescript/components/icons/index.d.ts.map +1 -0
  426. package/lib/typescript/components/onboarding/OAuthWebView.d.ts.map +1 -1
  427. package/lib/typescript/config/api.d.ts +24 -0
  428. package/lib/typescript/config/api.d.ts.map +1 -0
  429. package/lib/typescript/context/AuthContext.d.ts +34 -0
  430. package/lib/typescript/context/AuthContext.d.ts.map +1 -0
  431. package/lib/typescript/hooks/useConnectedAccounts.d.ts +11 -0
  432. package/lib/typescript/hooks/useConnectedAccounts.d.ts.map +1 -0
  433. package/lib/typescript/hooks/useConnections.d.ts +10 -5
  434. package/lib/typescript/hooks/useConnections.d.ts.map +1 -1
  435. package/lib/typescript/hooks/useUserConnections.d.ts +12 -0
  436. package/lib/typescript/hooks/useUserConnections.d.ts.map +1 -0
  437. package/lib/typescript/index.d.ts +24 -6
  438. package/lib/typescript/index.d.ts.map +1 -1
  439. package/lib/typescript/services/apiClient.d.ts +91 -0
  440. package/lib/typescript/services/apiClient.d.ts.map +1 -0
  441. package/lib/typescript/services/apiKeyService.d.ts.map +1 -1
  442. package/lib/typescript/services/authService.d.ts +216 -0
  443. package/lib/typescript/services/authService.d.ts.map +1 -0
  444. package/lib/typescript/services/biometricPinService.d.ts +29 -0
  445. package/lib/typescript/services/biometricPinService.d.ts.map +1 -0
  446. package/lib/typescript/services/connectedAccountsService.d.ts +56 -0
  447. package/lib/typescript/services/connectedAccountsService.d.ts.map +1 -0
  448. package/lib/typescript/services/googleAuthService.d.ts +63 -0
  449. package/lib/typescript/services/googleAuthService.d.ts.map +1 -0
  450. package/lib/typescript/services/imageCompressionService.d.ts +37 -0
  451. package/lib/typescript/services/imageCompressionService.d.ts.map +1 -0
  452. package/lib/typescript/services/jwtStorageService.d.ts +86 -0
  453. package/lib/typescript/services/jwtStorageService.d.ts.map +1 -0
  454. package/lib/typescript/services/mobileTrainingService.d.ts +45 -0
  455. package/lib/typescript/services/mobileTrainingService.d.ts.map +1 -0
  456. package/lib/typescript/services/pinEncryptionService.d.ts +17 -0
  457. package/lib/typescript/services/pinEncryptionService.d.ts.map +1 -0
  458. package/lib/typescript/services/pinStorageUtils.d.ts +25 -0
  459. package/lib/typescript/services/pinStorageUtils.d.ts.map +1 -0
  460. package/lib/typescript/services/platformAuthService.d.ts +34 -109
  461. package/lib/typescript/services/platformAuthService.d.ts.map +1 -1
  462. package/lib/typescript/services/storageService.d.ts +128 -0
  463. package/lib/typescript/services/storageService.d.ts.map +1 -0
  464. package/lib/typescript/services/trainingApiHelpers.d.ts +38 -0
  465. package/lib/typescript/services/trainingApiHelpers.d.ts.map +1 -0
  466. package/lib/typescript/services/userConnectionsService.d.ts +90 -0
  467. package/lib/typescript/services/userConnectionsService.d.ts.map +1 -0
  468. package/lib/typescript/services/youtubeMigrationService.d.ts +12 -0
  469. package/lib/typescript/services/youtubeMigrationService.d.ts.map +1 -0
  470. package/lib/typescript/theme/index.d.ts +416 -0
  471. package/lib/typescript/theme/index.d.ts.map +1 -0
  472. package/lib/typescript/types/index.d.ts +39 -0
  473. package/lib/typescript/types/index.d.ts.map +1 -1
  474. package/lib/typescript/utils/eventUtils.d.ts +108 -0
  475. package/lib/typescript/utils/eventUtils.d.ts.map +1 -0
  476. package/lib/typescript/utils/haptics.d.ts +11 -0
  477. package/lib/typescript/utils/haptics.d.ts.map +1 -0
  478. package/lib/typescript/utils/imagePreloader.d.ts +2 -0
  479. package/lib/typescript/utils/imagePreloader.d.ts.map +1 -0
  480. package/package.json +158 -145
  481. package/src/api/index.ts +41 -0
  482. package/src/assets/fonts/EBGaramond-VariableFont_wght.ttf +0 -0
  483. package/src/assets/fonts/IBMPlexSans-VariableFont_wdth,wght.ttf +0 -0
  484. package/src/assets/icons/Facebookicon.png +0 -0
  485. package/src/assets/icons/Gmail.png +0 -0
  486. package/src/assets/icons/Linkedinicon.png +0 -0
  487. package/src/assets/icons/Redditicon.png +0 -0
  488. package/src/assets/icons/YouTubeicon2.png +0 -0
  489. package/src/assets/icons/YouTubeicon3.png +0 -0
  490. package/src/assets/icons/farcaster.png +0 -0
  491. package/src/assets/icons/instagram.png +0 -0
  492. package/src/assets/icons/pinterest.png +0 -0
  493. package/src/assets/icons/swerv_logo.png +0 -0
  494. package/src/assets/icons/twitter.jpg +0 -0
  495. package/src/assets/images/Checkbox.svg +3 -0
  496. package/src/assets/images/EnochE.svg +19 -0
  497. package/src/assets/images/Enochicon1.png +0 -0
  498. package/src/assets/images/Face_ID_logo.png +0 -0
  499. package/src/assets/images/Facebookicon.png +0 -0
  500. package/src/assets/images/Gmail.png +0 -0
  501. package/src/assets/images/Googlelogo.png +0 -0
  502. package/src/assets/images/Linkedinicon.png +0 -0
  503. package/src/assets/images/Onairoslogo.png +0 -0
  504. package/src/assets/images/Personalityprofile.svg +3 -0
  505. package/src/assets/images/Personalitytraits.svg +3 -0
  506. package/src/assets/images/Redditicon.png +0 -0
  507. package/src/assets/images/Userpreferences.svg +3 -0
  508. package/src/assets/images/YouTubeicon3.png +0 -0
  509. package/src/assets/images/arrow.svg +20 -0
  510. package/src/assets/images/basicproficon.svg +43 -0
  511. package/src/assets/images/basicprofile.svg +3 -0
  512. package/src/assets/images/checkmark.svg +4 -0
  513. package/src/assets/images/contentanalysis.svg +3 -0
  514. package/src/assets/images/contenticon.svg +23 -0
  515. package/src/assets/images/persona1.png +0 -0
  516. package/src/assets/images/persona2.png +0 -0
  517. package/src/assets/images/persona3.png +0 -0
  518. package/src/assets/images/persona4.png +0 -0
  519. package/src/assets/images/persona5.png +0 -0
  520. package/src/assets/images/personalityicon.svg +18 -0
  521. package/src/assets/images/x-close.svg +3 -0
  522. package/src/components/BodyText.tsx +33 -0
  523. package/src/components/BrandMark.tsx +62 -0
  524. package/src/components/CodeInput.tsx +32 -0
  525. package/src/components/EmailInput.tsx +31 -0
  526. package/src/components/ExistingUserDataConfirmation.tsx +507 -0
  527. package/src/components/GoogleButton.tsx +55 -0
  528. package/src/components/HeadingGroup.tsx +49 -0
  529. package/src/components/ModalHeader.tsx +125 -0
  530. package/src/components/ModalSheet.tsx +57 -0
  531. package/src/components/Onairos.tsx +422 -424
  532. package/src/components/OnairosButton.tsx +339 -359
  533. package/src/components/OnairosSignInButton.tsx +166 -0
  534. package/src/components/Overlay.tsx +506 -506
  535. package/src/components/PersonaImage.tsx +79 -0
  536. package/src/components/PersonaLoadingScreen.tsx +201 -0
  537. package/src/components/PersonalizationConsentScreen.tsx +410 -0
  538. package/src/components/PinCreationScreen.tsx +492 -0
  539. package/src/components/PinInput.tsx +555 -343
  540. package/src/components/PlatformConnectorsStep.tsx +892 -0
  541. package/src/components/PlatformToggle.tsx +226 -0
  542. package/src/components/PrimaryButton.tsx +214 -0
  543. package/src/components/SignInMatchAnimation.tsx +225 -0
  544. package/src/components/SignInStep.tsx +217 -0
  545. package/src/components/TrainingModal.tsx +1047 -737
  546. package/src/components/UniversalOnboarding.tsx +2888 -1820
  547. package/src/components/VerificationStep.tsx +198 -0
  548. package/src/components/WelcomeScreen.tsx +473 -0
  549. package/src/components/icons/Basicproficon.tsx +30 -0
  550. package/src/components/icons/Basicprofile.tsx +17 -0
  551. package/src/components/icons/Checkbox.tsx +17 -0
  552. package/src/components/icons/Checkmark.tsx +24 -0
  553. package/src/components/icons/Contentanalysis.tsx +17 -0
  554. package/src/components/icons/Contenticon.tsx +30 -0
  555. package/src/components/icons/EnochE.tsx +39 -0
  556. package/src/components/icons/Personalityicon.tsx +22 -0
  557. package/src/components/icons/Personalityprofile.tsx +17 -0
  558. package/src/components/icons/Personalitytraits.tsx +17 -0
  559. package/src/components/icons/Userpreferences.tsx +17 -0
  560. package/src/components/icons/index.ts +12 -0
  561. package/src/components/onboarding/OAuthWebView.tsx +232 -838
  562. package/src/config/api.ts +25 -0
  563. package/src/context/AuthContext.tsx +393 -0
  564. package/src/hooks/useConnectedAccounts.ts +139 -0
  565. package/src/hooks/useConnections.ts +129 -131
  566. package/src/hooks/useUserConnections.ts +166 -0
  567. package/src/index.ts +94 -49
  568. package/src/services/apiClient.ts +337 -0
  569. package/src/services/apiKeyService.ts +9 -11
  570. package/src/services/authService.ts +1008 -0
  571. package/src/services/biometricPinService.ts +193 -0
  572. package/src/services/connectedAccountsService.ts +290 -0
  573. package/src/services/googleAuthService.ts +279 -0
  574. package/src/services/imageCompressionService.ts +303 -0
  575. package/src/services/jwtStorageService.ts +257 -0
  576. package/src/services/mobileTrainingService.ts +204 -0
  577. package/src/services/pinEncryptionService.ts +76 -0
  578. package/src/services/pinStorageUtils.ts +97 -0
  579. package/src/services/platformAuthService.ts +1346 -1113
  580. package/src/services/storageService.ts +452 -0
  581. package/src/services/trainingApiHelpers.ts +67 -0
  582. package/src/services/userConnectionsService.ts +557 -0
  583. package/src/services/youtubeMigrationService.ts +454 -0
  584. package/src/theme/index.ts +239 -0
  585. package/src/types/index.ts +265 -238
  586. package/src/utils/eventUtils.ts +303 -0
  587. package/src/utils/haptics.ts +59 -0
  588. package/src/utils/imagePreloader.ts +2 -0
  589. package/README.md +0 -375
  590. package/lib/commonjs/assets/images/email.png +0 -0
  591. package/lib/commonjs/assets/images/linkedin.png +0 -0
  592. package/lib/commonjs/assets/images/reddit.png +0 -0
  593. package/lib/commonjs/assets/images/youtube.png +0 -0
  594. package/lib/commonjs/components/UniversalOnboarding.tsx.new +0 -455
  595. package/lib/module/assets/images/email.png +0 -0
  596. package/lib/module/assets/images/linkedin.png +0 -0
  597. package/lib/module/assets/images/reddit.png +0 -0
  598. package/lib/module/assets/images/youtube.png +0 -0
  599. package/lib/module/components/UniversalOnboarding.tsx.new +0 -455
  600. package/src/assets/images/email.png +0 -0
  601. package/src/assets/images/linkedin.png +0 -0
  602. package/src/assets/images/reddit.png +0 -0
  603. package/src/assets/images/youtube.png +0 -0
  604. package/src/components/UniversalOnboarding.tsx.new +0 -455
@@ -0,0 +1,198 @@
1
+ import React, { useState } from 'react';
2
+ import {
3
+ View,
4
+ Text,
5
+ StyleSheet,
6
+ TouchableOpacity,
7
+ KeyboardAvoidingView,
8
+ Platform,
9
+ } from 'react-native';
10
+ import { COLORS, SPACING } from '../theme';
11
+ import CodeInput from './CodeInput';
12
+ import PrimaryButton from './PrimaryButton';
13
+
14
+ interface VerificationStepProps {
15
+ email: string;
16
+ onCodeSubmit: (code: string) => void;
17
+ onBack: () => void;
18
+ loading?: boolean;
19
+ error?: string;
20
+ onResendCode?: () => void;
21
+ }
22
+
23
+ const VerificationStep: React.FC<VerificationStepProps> = ({
24
+ email,
25
+ onCodeSubmit,
26
+ onBack,
27
+ loading = false,
28
+ error = '',
29
+ onResendCode,
30
+ }) => {
31
+ const [code, setCode] = useState('');
32
+
33
+ const handleCodeChange = (newCode: string) => {
34
+ setCode(newCode);
35
+ };
36
+
37
+ const handleContinue = () => {
38
+ if (code.length === 6) {
39
+ onCodeSubmit(code);
40
+ }
41
+ };
42
+
43
+ return (
44
+ <KeyboardAvoidingView
45
+ behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
46
+ style={styles.container}
47
+ >
48
+ <View style={styles.content}>
49
+ {/* Heading */}
50
+ <View style={styles.headingContainer}>
51
+ <Text style={styles.title}>Enter verification code</Text>
52
+ <Text style={styles.subtitle}>
53
+ We've sent a 6-digit code to {email}
54
+ </Text>
55
+ </View>
56
+
57
+ {/* Code Input */}
58
+ <View style={styles.codeContainer}>
59
+ <CodeInput
60
+ length={6}
61
+ onCodeChange={handleCodeChange}
62
+ />
63
+ {error ? (
64
+ <Text style={styles.errorText}>{error}</Text>
65
+ ) : null}
66
+ </View>
67
+
68
+ {/* Continue Button - positioned right below code inputs */}
69
+ <View style={styles.continueContainer}>
70
+ <PrimaryButton
71
+ label="Continue"
72
+ onPress={handleContinue}
73
+ disabled={loading || code.length !== 6}
74
+ loading={loading}
75
+ />
76
+ </View>
77
+
78
+ {/* Resend Code Link */}
79
+ {onResendCode && (
80
+ <View style={styles.resendContainer}>
81
+ <Text style={styles.resendText}>Didn't receive the code? </Text>
82
+ <TouchableOpacity
83
+ onPress={onResendCode}
84
+ disabled={loading}
85
+ style={styles.resendButton}
86
+ >
87
+ <Text style={[styles.resendLink, loading && styles.resendLinkDisabled]}>
88
+ Resend Code
89
+ </Text>
90
+ </TouchableOpacity>
91
+ </View>
92
+ )}
93
+
94
+ {/* Spacer */}
95
+ <View style={styles.spacer} />
96
+ </View>
97
+ </KeyboardAvoidingView>
98
+ );
99
+ };
100
+
101
+ const styles = StyleSheet.create({
102
+ container: {
103
+ flex: 1,
104
+ },
105
+
106
+ content: {
107
+ flex: 1,
108
+ paddingTop: 8,
109
+ paddingHorizontal: 0,
110
+ },
111
+
112
+
113
+
114
+ headingContainer: {
115
+ width: '100%',
116
+ marginBottom: 40,
117
+ paddingHorizontal: 0,
118
+ },
119
+
120
+ title: {
121
+ fontFamily: 'IBM Plex Sans',
122
+ fontWeight: '700',
123
+ fontSize: 24,
124
+ lineHeight: 32,
125
+ color: COLORS.grey800,
126
+ textAlign: 'left',
127
+ marginBottom: 2,
128
+ },
129
+
130
+ subtitle: {
131
+ fontFamily: 'Inter',
132
+ fontWeight: '400',
133
+ fontSize: 16,
134
+ lineHeight: 24,
135
+ color: COLORS.grey600,
136
+ textAlign: 'left',
137
+ marginBottom: 8,
138
+ },
139
+
140
+ codeContainer: {
141
+ paddingHorizontal: 16,
142
+ marginBottom: 24, // Reduced spacing to bring Continue button closer
143
+ },
144
+
145
+ spacer: {
146
+ flex: 1,
147
+ minHeight: 20,
148
+ },
149
+
150
+ continueContainer: {
151
+ paddingHorizontal: 0,
152
+ marginBottom: 24, // Add spacing below Continue button
153
+ },
154
+
155
+ errorText: {
156
+ fontSize: 14,
157
+ fontFamily: 'Inter',
158
+ fontWeight: '400',
159
+ color: '#DC3545', // Red color for errors
160
+ marginTop: 12,
161
+ textAlign: 'center',
162
+ },
163
+
164
+ resendContainer: {
165
+ flexDirection: 'row',
166
+ justifyContent: 'center',
167
+ alignItems: 'center',
168
+ marginTop: 16,
169
+ paddingHorizontal: 0,
170
+ },
171
+
172
+ resendText: {
173
+ fontSize: 14,
174
+ fontFamily: 'Inter',
175
+ fontWeight: '400',
176
+ color: COLORS.grey600,
177
+ },
178
+
179
+ resendButton: {
180
+ // No additional padding - let the text handle touch target
181
+ },
182
+
183
+ resendLink: {
184
+ fontSize: 14,
185
+ fontFamily: 'Inter',
186
+ fontWeight: '500',
187
+ color: '#D4A536', // Brand color
188
+ textDecorationLine: 'underline',
189
+ },
190
+
191
+ resendLinkDisabled: {
192
+ color: COLORS.grey400,
193
+ textDecorationLine: 'none',
194
+ },
195
+ });
196
+
197
+ export { VerificationStep };
198
+ export default VerificationStep;
@@ -0,0 +1,473 @@
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import {
3
+ View,
4
+ StyleSheet,
5
+ Modal,
6
+ TouchableWithoutFeedback,
7
+ Animated,
8
+ Easing,
9
+ StatusBar,
10
+ } from 'react-native';
11
+ import { SafeAreaProvider } from 'react-native-safe-area-context';
12
+ import { triggerHaptic, HapticType } from '../utils/haptics';
13
+ import { sendEmailVerificationCode, confirmEmailVerificationCode } from '../api';
14
+ import { signInWithGoogle } from '../services/googleAuthService';
15
+ import AsyncStorage from '@react-native-async-storage/async-storage';
16
+
17
+ // Import our new components
18
+ import ModalSheet from './ModalSheet';
19
+ import ModalHeader from './ModalHeader';
20
+ import BrandMark from './BrandMark';
21
+ import HeadingGroup from './HeadingGroup';
22
+ import BodyText from './BodyText';
23
+ import PrimaryButton from './PrimaryButton';
24
+ import SignInStep from './SignInStep';
25
+ import VerificationStep from './VerificationStep';
26
+ import PlatformConnectorsStep from './PlatformConnectorsStep';
27
+
28
+ // Type definitions for navigation
29
+ export interface WelcomeScreenProps {
30
+ visible: boolean;
31
+ onClose: () => void;
32
+ onComplete?: (token: string, email?: string) => void;
33
+ }
34
+
35
+ type ModalStep = 'welcome' | 'signin' | 'verification' | 'platforms';
36
+
37
+ const WelcomeScreen: React.FC<WelcomeScreenProps> = ({
38
+ visible,
39
+ onClose,
40
+ onComplete,
41
+ }) => {
42
+ const [currentStep, setCurrentStep] = useState<ModalStep>('welcome');
43
+ const [userEmail, setUserEmail] = useState<string>('');
44
+ const [loading, setLoading] = useState<boolean>(false);
45
+ const [error, setError] = useState<string>('');
46
+
47
+ // Animation values
48
+ const slideAnim = useRef(new Animated.Value(1)).current; // Start from bottom
49
+ const fadeAnim = useRef(new Animated.Value(0)).current;
50
+
51
+ // Animate in when visible (matching existing modal style)
52
+ useEffect(() => {
53
+ if (visible) {
54
+ Animated.parallel([
55
+ Animated.timing(slideAnim, {
56
+ toValue: 0,
57
+ duration: 400,
58
+ easing: Easing.out(Easing.cubic),
59
+ useNativeDriver: true,
60
+ }),
61
+ Animated.timing(fadeAnim, {
62
+ toValue: 1,
63
+ duration: 300,
64
+ useNativeDriver: true,
65
+ }),
66
+ ]).start();
67
+ } else {
68
+ slideAnim.setValue(1);
69
+ fadeAnim.setValue(0);
70
+ }
71
+ }, [visible]);
72
+
73
+ const handleClose = () => {
74
+ triggerHaptic(HapticType.BUTTON_PRESS);
75
+
76
+ // Reset to welcome step
77
+ setCurrentStep('welcome');
78
+
79
+ Animated.parallel([
80
+ Animated.timing(slideAnim, {
81
+ toValue: 1,
82
+ duration: 300,
83
+ easing: Easing.in(Easing.cubic),
84
+ useNativeDriver: true,
85
+ }),
86
+ Animated.timing(fadeAnim, {
87
+ toValue: 0,
88
+ duration: 250,
89
+ useNativeDriver: true,
90
+ }),
91
+ ]).start(() => {
92
+ onClose();
93
+ });
94
+ };
95
+
96
+ const handleGetStarted = () => {
97
+ triggerHaptic(HapticType.BUTTON_PRESS);
98
+ // Move to sign-in step instead of closing modal
99
+ setCurrentStep('signin');
100
+ };
101
+
102
+ const handleEmailSubmit = async (email: string) => {
103
+ triggerHaptic(HapticType.BUTTON_PRESS);
104
+ setLoading(true);
105
+ setError('');
106
+
107
+ try {
108
+ // Check for reviewer bypass
109
+ if (email === 'reviewer@bypass.com') {
110
+ console.log('🔍 Reviewer bypass detected in WelcomeScreen');
111
+
112
+ try {
113
+ // Store the same markers as the old UI
114
+ await AsyncStorage.setItem('onairos_user', 'true');
115
+ await AsyncStorage.setItem('onairos_jwt_token', 'reviewer-bypass-token');
116
+ console.log('✅ Stored reviewer bypass markers for email bypass');
117
+
118
+ // Store the reviewer email and skip directly to platforms
119
+ setUserEmail(email);
120
+ setCurrentStep('platforms');
121
+ } catch (error) {
122
+ console.error('❌ Failed to store reviewer bypass markers:', error);
123
+ // Continue to platforms even if storage fails
124
+ setUserEmail(email);
125
+ setCurrentStep('platforms');
126
+ }
127
+
128
+ setLoading(false);
129
+ return;
130
+ }
131
+
132
+ console.log('📧 Sending verification code to:', email);
133
+
134
+ // Send verification code using the existing API
135
+ const result = await sendEmailVerificationCode(email);
136
+
137
+ if (result.success) {
138
+ console.log('✅ Verification code sent successfully');
139
+ // Store the email and move to verification
140
+ setUserEmail(email);
141
+ setCurrentStep('verification');
142
+ } else {
143
+ console.log('❌ Failed to send verification code:', result.message);
144
+ setError(result.message || 'Failed to send verification code. Please try again.');
145
+ }
146
+ } catch (error) {
147
+ console.error('❌ Error sending verification code:', error);
148
+ setError('Network error. Please check your connection and try again.');
149
+ } finally {
150
+ setLoading(false);
151
+ }
152
+ };
153
+
154
+ const handleGoogleSignIn = async () => {
155
+ triggerHaptic(HapticType.BUTTON_PRESS);
156
+ setLoading(true);
157
+ setError('');
158
+
159
+ try {
160
+ console.log('🔗 Initiating Google Sign-In');
161
+
162
+ const result = await signInWithGoogle();
163
+
164
+ if (result.success && result.user) {
165
+ console.log('✅ Google Sign-In successful:', result.user.email);
166
+
167
+ // Store user information
168
+ setUserEmail(result.user.email);
169
+
170
+ // Skip to platform connectors (user is already authenticated)
171
+ setCurrentStep('platforms');
172
+ } else if (result.cancelled) {
173
+ console.log('ℹ️ Google Sign-In cancelled by user');
174
+ // Don't show error for cancellation, just reset loading
175
+ } else {
176
+ console.log('❌ Google Sign-In failed:', result.message);
177
+ setError(result.message || 'Google Sign-In failed. Please try again.');
178
+ }
179
+ } catch (error) {
180
+ console.error('❌ Unexpected Google Sign-In error:', error);
181
+ setError('Google Sign-In failed. Please try again.');
182
+ } finally {
183
+ setLoading(false);
184
+ }
185
+ };
186
+
187
+ const handleContinue = () => {
188
+ triggerHaptic(HapticType.BUTTON_PRESS);
189
+ // Move to verification step
190
+ setCurrentStep('verification');
191
+ };
192
+
193
+ const handleCodeSubmit = async (code: string) => {
194
+ triggerHaptic(HapticType.BUTTON_PRESS);
195
+ setLoading(true);
196
+ setError('');
197
+
198
+ try {
199
+ console.log('🔍 Verifying email code:', userEmail, code);
200
+
201
+ // Verify the email code using the existing API
202
+ const result = await confirmEmailVerificationCode(userEmail, code);
203
+
204
+ if (result.success) {
205
+ console.log('✅ Email verification successful');
206
+ // Move to platform connectors step
207
+ setCurrentStep('platforms');
208
+ } else {
209
+ console.log('❌ Email verification failed:', result.message);
210
+ setError(result.message || 'Invalid verification code. Please try again.');
211
+ }
212
+ } catch (error) {
213
+ console.error('❌ Error verifying email code:', error);
214
+ setError('Verification failed. Please try again.');
215
+ } finally {
216
+ setLoading(false);
217
+ }
218
+ };
219
+
220
+ const handleBackToSignIn = () => {
221
+ triggerHaptic(HapticType.BUTTON_PRESS);
222
+ setError(''); // Clear any errors when going back
223
+ setCurrentStep('signin');
224
+ };
225
+
226
+ const handleBackToVerification = () => {
227
+ triggerHaptic(HapticType.BUTTON_PRESS);
228
+ setCurrentStep('verification');
229
+ };
230
+
231
+ const handleResendCode = async () => {
232
+ triggerHaptic(HapticType.BUTTON_PRESS);
233
+ setLoading(true);
234
+ setError('');
235
+
236
+ try {
237
+ console.log('🔄 Resending verification code to:', userEmail);
238
+
239
+ // Resend verification code using the existing API
240
+ const result = await sendEmailVerificationCode(userEmail);
241
+
242
+ if (result.success) {
243
+ console.log('✅ Verification code resent successfully');
244
+ // Could show a success message here if needed
245
+ } else {
246
+ console.log('❌ Failed to resend verification code:', result.message);
247
+ setError(result.message || 'Failed to resend verification code. Please try again.');
248
+ }
249
+ } catch (error) {
250
+ console.error('❌ Error resending verification code:', error);
251
+ setError('Network error. Please check your connection and try again.');
252
+ } finally {
253
+ setLoading(false);
254
+ }
255
+ };
256
+
257
+ const handlePlatformUpdate = (connectedPlatforms: string[]) => {
258
+ triggerHaptic(HapticType.BUTTON_PRESS);
259
+ console.log('Connected platforms:', connectedPlatforms);
260
+
261
+ // Complete the onboarding flow
262
+ if (onComplete) {
263
+ // Return the stored token and email
264
+ AsyncStorage.getItem('onairos_jwt_token').then(token => {
265
+ onComplete(token || 'onboarding-complete-token', userEmail);
266
+ });
267
+ } else {
268
+ onClose();
269
+ }
270
+ };
271
+
272
+ const handlePlatformSkip = () => {
273
+ triggerHaptic(HapticType.BUTTON_PRESS);
274
+ // Skip platform connections and complete onboarding
275
+ if (onComplete) {
276
+ // Return a skip token
277
+ onComplete('onboarding-skipped-token', userEmail);
278
+ } else {
279
+ onClose();
280
+ }
281
+ };
282
+
283
+ const handleReviewerBypass = async () => {
284
+ console.log('🔍 Reviewer bypass triggered from platforms screen');
285
+ triggerHaptic(HapticType.BUTTON_PRESS);
286
+
287
+ try {
288
+ // Store the same markers as the old UI
289
+ await AsyncStorage.setItem('onairos_user', 'true');
290
+ await AsyncStorage.setItem('onairos_jwt_token', 'reviewer-bypass-token');
291
+ console.log('✅ Stored reviewer bypass markers for new UI');
292
+
293
+ // Complete the onboarding with bypass token
294
+ if (onComplete) {
295
+ onComplete('reviewer-bypass-token', 'reviewer@apple.com');
296
+ } else {
297
+ onClose();
298
+ }
299
+ } catch (error) {
300
+ console.error('❌ Failed to store reviewer bypass markers:', error);
301
+ // Still complete the onboarding even if storage fails
302
+ if (onComplete) {
303
+ onComplete('reviewer-bypass-token', 'reviewer@apple.com');
304
+ } else {
305
+ onClose();
306
+ }
307
+ }
308
+ };
309
+
310
+ const handleBackdropPress = () => {
311
+ // Optional: allow closing by tapping backdrop
312
+ handleClose();
313
+ };
314
+
315
+ if (!visible) {
316
+ return null;
317
+ }
318
+
319
+ return (
320
+ <Modal
321
+ visible={visible}
322
+ transparent
323
+ animationType="slide" // Use built-in slide animation like existing modal
324
+ onRequestClose={handleClose}
325
+ statusBarTranslucent
326
+ >
327
+ <StatusBar backgroundColor="rgba(0,0,0,0.5)" barStyle="light-content" />
328
+
329
+ {/* Backdrop */}
330
+ <Animated.View style={[styles.backdrop, { opacity: fadeAnim }]}>
331
+ <TouchableWithoutFeedback onPress={handleBackdropPress}>
332
+ <View style={styles.backdropTouchable} />
333
+ </TouchableWithoutFeedback>
334
+ </Animated.View>
335
+
336
+ {/* Modal Content */}
337
+ <Animated.View
338
+ style={[
339
+ styles.modalContainer,
340
+ {
341
+ transform: [{
342
+ translateY: slideAnim.interpolate({
343
+ inputRange: [0, 1],
344
+ outputRange: [0, 600], // Slide from bottom
345
+ })
346
+ }]
347
+ }
348
+ ]}
349
+ >
350
+ <SafeAreaProvider>
351
+ <ModalSheet topPadding={0}>
352
+ <ModalHeader
353
+ onClose={handleClose}
354
+ onBack={currentStep === 'verification' ? handleBackToSignIn : handleBackToVerification}
355
+ showBackButton={currentStep === 'verification' || currentStep === 'platforms'}
356
+ />
357
+
358
+ {currentStep === 'welcome' && (
359
+ <View style={styles.content}>
360
+ {/* Brand Mark */}
361
+ <View style={styles.brandMarkContainer}>
362
+ <BrandMark />
363
+ </View>
364
+
365
+ {/* Heading Group */}
366
+ <View style={styles.headingContainer}>
367
+ <HeadingGroup />
368
+ </View>
369
+
370
+ {/* Body Text */}
371
+ <View style={styles.bodyContainer}>
372
+ <BodyText />
373
+ </View>
374
+
375
+ {/* Flexible Spacer */}
376
+ <View style={styles.spacer} />
377
+
378
+ {/* Primary Button */}
379
+ <View style={styles.buttonContainer}>
380
+ <PrimaryButton
381
+ label="Get Started"
382
+ onPress={handleGetStarted}
383
+ testID="welcome-get-started-button"
384
+ />
385
+ </View>
386
+ </View>
387
+ )}
388
+
389
+ {currentStep === 'signin' && (
390
+ <SignInStep
391
+ onEmailSubmit={handleEmailSubmit}
392
+ onGoogleSignIn={handleGoogleSignIn}
393
+ onContinue={handleContinue}
394
+ loading={loading}
395
+ error={error}
396
+ />
397
+ )}
398
+
399
+ {currentStep === 'verification' && (
400
+ <VerificationStep
401
+ email={userEmail}
402
+ onCodeSubmit={handleCodeSubmit}
403
+ onBack={handleBackToSignIn}
404
+ loading={loading}
405
+ error={error}
406
+ onResendCode={handleResendCode}
407
+ />
408
+ )}
409
+
410
+ {currentStep === 'platforms' && (
411
+ <PlatformConnectorsStep
412
+ onUpdate={handlePlatformUpdate}
413
+ onSkip={handlePlatformSkip}
414
+ onReviewerBypass={handleReviewerBypass}
415
+ />
416
+ )}
417
+ </ModalSheet>
418
+ </SafeAreaProvider>
419
+ </Animated.View>
420
+ </Modal>
421
+ );
422
+ };
423
+
424
+ const styles = StyleSheet.create({
425
+ backdrop: {
426
+ ...StyleSheet.absoluteFillObject,
427
+ backgroundColor: 'transparent', // Remove grey overlay
428
+ },
429
+
430
+ backdropTouchable: {
431
+ flex: 1,
432
+ },
433
+
434
+ modalContainer: {
435
+ position: 'absolute',
436
+ bottom: 0,
437
+ left: 0,
438
+ right: 0,
439
+ height: '85%', // Take most of the screen
440
+ },
441
+
442
+ content: {
443
+ flex: 1,
444
+ alignItems: 'center',
445
+ paddingTop: 20,
446
+ },
447
+
448
+ brandMarkContainer: {
449
+ marginBottom: 32,
450
+ },
451
+
452
+ headingContainer: {
453
+ marginBottom: 24,
454
+ },
455
+
456
+ bodyContainer: {
457
+ marginBottom: 32,
458
+ width: '100%',
459
+ },
460
+
461
+ spacer: {
462
+ flex: 1,
463
+ minHeight: 20, // Ensure some minimum space
464
+ },
465
+
466
+ buttonContainer: {
467
+ width: '100%',
468
+ paddingHorizontal: 24,
469
+ paddingBottom: 20,
470
+ },
471
+ });
472
+
473
+ export default WelcomeScreen;
@@ -0,0 +1,30 @@
1
+ import * as React from 'react';
2
+ import Svg, {G, Rect, Path, Defs} from 'react-native-svg';
3
+ /* SVGR has dropped some elements not supported by react-native-svg: filter */
4
+ import type {SvgProps} from 'react-native-svg';
5
+ const SvgBasicproficon = (props: SvgProps) => (
6
+ <Svg
7
+ width={32}
8
+ height={32}
9
+ fill="none"
10
+ viewBox="0 0 32 32"
11
+ {...props}>
12
+ <G filter="url(#basicproficon_svg__a)">
13
+ <Rect width={32} height={32} fill="#ECECED" rx={16} />
14
+ <G filter="url(#basicproficon_svg__b)">
15
+ <Path
16
+ fill="#1F242F"
17
+ d="M16 15.746c.952 0 1.776-.341 2.45-1.015a3.35 3.35 0 0 0 1.014-2.449c0-.952-.341-1.776-1.015-2.45A3.35 3.35 0 0 0 16 8.819c-.952 0-1.776.341-2.45 1.015a3.35 3.35 0 0 0-1.014 2.449c0 .952.341 1.776 1.015 2.45A3.35 3.35 0 0 0 16 15.745"
18
+ />
19
+ </G>
20
+ <G filter="url(#basicproficon_svg__c)">
21
+ <Path
22
+ fill="#1F242F"
23
+ d="M21.97 19.859a9 9 0 0 0-.116-.909 7 7 0 0 0-.223-.914 4.5 4.5 0 0 0-.376-.852 3.2 3.2 0 0 0-.566-.738 2.5 2.5 0 0 0-.814-.511 2.8 2.8 0 0 0-1.039-.188c-.147 0-.289.06-.563.239l-.586.378q-.285.18-.76.334c-.307.1-.62.15-.927.15q-.464 0-.929-.15a3.4 3.4 0 0 1-.758-.334q-.329-.21-.587-.379c-.274-.178-.416-.238-.563-.238q-.563 0-1.039.188c-.316.125-.59.297-.813.511a3.2 3.2 0 0 0-.567.738 4.5 4.5 0 0 0-.375.852c-.09.281-.165.589-.224.914a9 9 0 0 0-.116.91c-.02.274-.029.56-.029.849 0 .75.239 1.358.71 1.806.464.443 1.08.667 1.827.667h6.926c.748 0 1.363-.224 1.827-.667.471-.448.71-1.055.71-1.807q0-.436-.03-.85"
24
+ />
25
+ </G>
26
+ </G>
27
+ <Defs></Defs>
28
+ </Svg>
29
+ );
30
+ export default SvgBasicproficon;