@oxyhq/services 5.11.12 → 5.12.0

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 (322) hide show
  1. package/README.md +48 -7
  2. package/lib/commonjs/core/OxyServices.js +162 -12
  3. package/lib/commonjs/core/OxyServices.js.map +1 -1
  4. package/lib/commonjs/i18n/index.js +40 -0
  5. package/lib/commonjs/i18n/index.js.map +1 -0
  6. package/lib/commonjs/i18n/locales/en-US.json +681 -0
  7. package/lib/commonjs/i18n/locales/es-ES.json +689 -0
  8. package/lib/commonjs/ui/components/GroupedItem.js +2 -1
  9. package/lib/commonjs/ui/components/GroupedItem.js.map +1 -1
  10. package/lib/commonjs/ui/components/Header.js +4 -3
  11. package/lib/commonjs/ui/components/Header.js.map +1 -1
  12. package/lib/commonjs/ui/components/OxyProvider.js +110 -103
  13. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  14. package/lib/commonjs/ui/components/ProfileCard.js +5 -1
  15. package/lib/commonjs/ui/components/ProfileCard.js.map +1 -1
  16. package/lib/commonjs/ui/components/Section.js +1 -1
  17. package/lib/commonjs/ui/components/StepBasedScreen.js +16 -16
  18. package/lib/commonjs/ui/components/StepBasedScreen.js.map +1 -1
  19. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js +15 -3
  20. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js.map +1 -1
  21. package/lib/commonjs/ui/components/internal/PinInput.js +10 -4
  22. package/lib/commonjs/ui/components/internal/PinInput.js.map +1 -1
  23. package/lib/commonjs/ui/context/OxyContext.js +128 -12
  24. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  25. package/lib/commonjs/ui/hooks/useI18n.js +22 -0
  26. package/lib/commonjs/ui/hooks/useI18n.js.map +1 -0
  27. package/lib/commonjs/ui/navigation/OxyRouter.js +11 -131
  28. package/lib/commonjs/ui/navigation/OxyRouter.js.map +1 -1
  29. package/lib/commonjs/ui/navigation/routes.js +127 -0
  30. package/lib/commonjs/ui/navigation/routes.js.map +1 -0
  31. package/lib/commonjs/ui/navigation/types.js +7 -0
  32. package/lib/commonjs/ui/navigation/types.js.map +1 -1
  33. package/lib/commonjs/ui/screens/AccountCenterScreen.js +55 -47
  34. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  35. package/lib/commonjs/ui/screens/AccountOverviewScreen.js +69 -61
  36. package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
  37. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +378 -37
  38. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  39. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +52 -34
  40. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  41. package/lib/commonjs/ui/screens/FeedbackScreen.js +40 -36
  42. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  43. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +105 -78
  44. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
  45. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +1 -1
  46. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
  47. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +92 -60
  48. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  49. package/lib/commonjs/ui/screens/ProfileScreen.js +21 -11
  50. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  51. package/lib/commonjs/ui/screens/RecoverAccountScreen.js +30 -8
  52. package/lib/commonjs/ui/screens/RecoverAccountScreen.js.map +1 -1
  53. package/lib/commonjs/ui/screens/SignInScreen.js +47 -26
  54. package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
  55. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +31 -24
  56. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  57. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js +11 -7
  58. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js.map +1 -1
  59. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js +12 -6
  60. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js.map +1 -1
  61. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js +11 -7
  62. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
  63. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +15 -11
  64. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  65. package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js +19 -27
  66. package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
  67. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js +8 -4
  68. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
  69. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js +14 -10
  70. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
  71. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js +7 -3
  72. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
  73. package/lib/commonjs/ui/screens/steps/RecoverRequestStep.js +19 -14
  74. package/lib/commonjs/ui/screens/steps/RecoverRequestStep.js.map +1 -1
  75. package/lib/commonjs/ui/screens/steps/RecoverResetPasswordStep.js +130 -0
  76. package/lib/commonjs/ui/screens/steps/RecoverResetPasswordStep.js.map +1 -0
  77. package/lib/commonjs/ui/screens/steps/RecoverSuccessStep.js +13 -13
  78. package/lib/commonjs/ui/screens/steps/RecoverSuccessStep.js.map +1 -1
  79. package/lib/commonjs/ui/screens/steps/RecoverVerifyStep.js +14 -20
  80. package/lib/commonjs/ui/screens/steps/RecoverVerifyStep.js.map +1 -1
  81. package/lib/commonjs/ui/screens/steps/SignInPasswordStep.js +22 -8
  82. package/lib/commonjs/ui/screens/steps/SignInPasswordStep.js.map +1 -1
  83. package/lib/commonjs/ui/screens/steps/SignInTotpStep.js +161 -0
  84. package/lib/commonjs/ui/screens/steps/SignInTotpStep.js.map +1 -0
  85. package/lib/commonjs/ui/screens/steps/SignInUsernameStep.js +12 -6
  86. package/lib/commonjs/ui/screens/steps/SignInUsernameStep.js.map +1 -1
  87. package/lib/commonjs/ui/screens/steps/SignUpIdentityStep.js +10 -6
  88. package/lib/commonjs/ui/screens/steps/SignUpIdentityStep.js.map +1 -1
  89. package/lib/commonjs/ui/screens/steps/SignUpSecurityStep.js +10 -6
  90. package/lib/commonjs/ui/screens/steps/SignUpSecurityStep.js.map +1 -1
  91. package/lib/commonjs/ui/screens/steps/SignUpSummaryStep.js +34 -4
  92. package/lib/commonjs/ui/screens/steps/SignUpSummaryStep.js.map +1 -1
  93. package/lib/commonjs/ui/screens/steps/SignUpWelcomeStep.js +9 -10
  94. package/lib/commonjs/ui/screens/steps/SignUpWelcomeStep.js.map +1 -1
  95. package/lib/commonjs/ui/styles/authStyles.js +1 -2
  96. package/lib/commonjs/ui/styles/authStyles.js.map +1 -1
  97. package/lib/commonjs/utils/deviceManager.js +1 -1
  98. package/lib/commonjs/utils/deviceManager.js.map +1 -1
  99. package/lib/commonjs/utils/validationUtils.js +4 -2
  100. package/lib/commonjs/utils/validationUtils.js.map +1 -1
  101. package/lib/module/core/OxyServices.js +162 -12
  102. package/lib/module/core/OxyServices.js.map +1 -1
  103. package/lib/module/i18n/index.js +35 -0
  104. package/lib/module/i18n/index.js.map +1 -0
  105. package/lib/module/i18n/locales/en-US.json +681 -0
  106. package/lib/module/i18n/locales/es-ES.json +689 -0
  107. package/lib/module/ui/components/GroupedItem.js +2 -1
  108. package/lib/module/ui/components/GroupedItem.js.map +1 -1
  109. package/lib/module/ui/components/Header.js +4 -3
  110. package/lib/module/ui/components/Header.js.map +1 -1
  111. package/lib/module/ui/components/OxyProvider.js +109 -103
  112. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  113. package/lib/module/ui/components/ProfileCard.js +5 -1
  114. package/lib/module/ui/components/ProfileCard.js.map +1 -1
  115. package/lib/module/ui/components/Section.js +1 -1
  116. package/lib/module/ui/components/StepBasedScreen.js +16 -16
  117. package/lib/module/ui/components/StepBasedScreen.js.map +1 -1
  118. package/lib/module/ui/components/internal/GroupedPillButtons.js +15 -3
  119. package/lib/module/ui/components/internal/GroupedPillButtons.js.map +1 -1
  120. package/lib/module/ui/components/internal/PinInput.js +9 -4
  121. package/lib/module/ui/components/internal/PinInput.js.map +1 -1
  122. package/lib/module/ui/context/OxyContext.js +128 -12
  123. package/lib/module/ui/context/OxyContext.js.map +1 -1
  124. package/lib/module/ui/hooks/useI18n.js +18 -0
  125. package/lib/module/ui/hooks/useI18n.js.map +1 -0
  126. package/lib/module/ui/navigation/OxyRouter.js +7 -124
  127. package/lib/module/ui/navigation/OxyRouter.js.map +1 -1
  128. package/lib/module/ui/navigation/routes.js +122 -0
  129. package/lib/module/ui/navigation/routes.js.map +1 -0
  130. package/lib/module/ui/navigation/types.js +19 -1
  131. package/lib/module/ui/navigation/types.js.map +1 -1
  132. package/lib/module/ui/screens/AccountCenterScreen.js +55 -47
  133. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  134. package/lib/module/ui/screens/AccountOverviewScreen.js +69 -61
  135. package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
  136. package/lib/module/ui/screens/AccountSettingsScreen.js +378 -37
  137. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  138. package/lib/module/ui/screens/AccountSwitcherScreen.js +52 -34
  139. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  140. package/lib/module/ui/screens/FeedbackScreen.js +40 -36
  141. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  142. package/lib/module/ui/screens/LanguageSelectorScreen.js +107 -80
  143. package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
  144. package/lib/module/ui/screens/PaymentGatewayScreen.js +1 -1
  145. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
  146. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +92 -60
  147. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  148. package/lib/module/ui/screens/ProfileScreen.js +21 -11
  149. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  150. package/lib/module/ui/screens/RecoverAccountScreen.js +30 -8
  151. package/lib/module/ui/screens/RecoverAccountScreen.js.map +1 -1
  152. package/lib/module/ui/screens/SignInScreen.js +47 -26
  153. package/lib/module/ui/screens/SignInScreen.js.map +1 -1
  154. package/lib/module/ui/screens/WelcomeNewUserScreen.js +31 -24
  155. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  156. package/lib/module/ui/screens/internal/SignInPasswordStep.js +11 -7
  157. package/lib/module/ui/screens/internal/SignInPasswordStep.js.map +1 -1
  158. package/lib/module/ui/screens/internal/SignInUsernameStep.js +12 -6
  159. package/lib/module/ui/screens/internal/SignInUsernameStep.js.map +1 -1
  160. package/lib/module/ui/screens/karma/KarmaAboutScreen.js +11 -7
  161. package/lib/module/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
  162. package/lib/module/ui/screens/karma/KarmaCenterScreen.js +15 -11
  163. package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  164. package/lib/module/ui/screens/karma/KarmaFAQScreen.js +19 -27
  165. package/lib/module/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
  166. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js +8 -4
  167. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
  168. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js +14 -10
  169. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
  170. package/lib/module/ui/screens/karma/KarmaRulesScreen.js +7 -3
  171. package/lib/module/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
  172. package/lib/module/ui/screens/steps/RecoverRequestStep.js +19 -14
  173. package/lib/module/ui/screens/steps/RecoverRequestStep.js.map +1 -1
  174. package/lib/module/ui/screens/steps/RecoverResetPasswordStep.js +125 -0
  175. package/lib/module/ui/screens/steps/RecoverResetPasswordStep.js.map +1 -0
  176. package/lib/module/ui/screens/steps/RecoverSuccessStep.js +13 -13
  177. package/lib/module/ui/screens/steps/RecoverSuccessStep.js.map +1 -1
  178. package/lib/module/ui/screens/steps/RecoverVerifyStep.js +14 -20
  179. package/lib/module/ui/screens/steps/RecoverVerifyStep.js.map +1 -1
  180. package/lib/module/ui/screens/steps/SignInPasswordStep.js +22 -8
  181. package/lib/module/ui/screens/steps/SignInPasswordStep.js.map +1 -1
  182. package/lib/module/ui/screens/steps/SignInTotpStep.js +156 -0
  183. package/lib/module/ui/screens/steps/SignInTotpStep.js.map +1 -0
  184. package/lib/module/ui/screens/steps/SignInUsernameStep.js +12 -6
  185. package/lib/module/ui/screens/steps/SignInUsernameStep.js.map +1 -1
  186. package/lib/module/ui/screens/steps/SignUpIdentityStep.js +10 -6
  187. package/lib/module/ui/screens/steps/SignUpIdentityStep.js.map +1 -1
  188. package/lib/module/ui/screens/steps/SignUpSecurityStep.js +10 -6
  189. package/lib/module/ui/screens/steps/SignUpSecurityStep.js.map +1 -1
  190. package/lib/module/ui/screens/steps/SignUpSummaryStep.js +34 -4
  191. package/lib/module/ui/screens/steps/SignUpSummaryStep.js.map +1 -1
  192. package/lib/module/ui/screens/steps/SignUpWelcomeStep.js +9 -10
  193. package/lib/module/ui/screens/steps/SignUpWelcomeStep.js.map +1 -1
  194. package/lib/module/ui/styles/authStyles.js +1 -2
  195. package/lib/module/ui/styles/authStyles.js.map +1 -1
  196. package/lib/module/utils/deviceManager.js +1 -1
  197. package/lib/module/utils/deviceManager.js.map +1 -1
  198. package/lib/module/utils/validationUtils.js +4 -2
  199. package/lib/module/utils/validationUtils.js.map +1 -1
  200. package/lib/typescript/core/OxyServices.d.ts +57 -3
  201. package/lib/typescript/core/OxyServices.d.ts.map +1 -1
  202. package/lib/typescript/i18n/index.d.ts +4 -0
  203. package/lib/typescript/i18n/index.d.ts.map +1 -0
  204. package/lib/typescript/models/interfaces.d.ts +4 -0
  205. package/lib/typescript/models/interfaces.d.ts.map +1 -1
  206. package/lib/typescript/ui/components/GroupedItem.d.ts.map +1 -1
  207. package/lib/typescript/ui/components/Header.d.ts.map +1 -1
  208. package/lib/typescript/ui/components/OxyProvider.d.ts +1 -1
  209. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  210. package/lib/typescript/ui/components/ProfileCard.d.ts.map +1 -1
  211. package/lib/typescript/ui/components/StepBasedScreen.d.ts +2 -1
  212. package/lib/typescript/ui/components/StepBasedScreen.d.ts.map +1 -1
  213. package/lib/typescript/ui/components/internal/GroupedPillButtons.d.ts.map +1 -1
  214. package/lib/typescript/ui/components/internal/PinInput.d.ts +6 -3
  215. package/lib/typescript/ui/components/internal/PinInput.d.ts.map +1 -1
  216. package/lib/typescript/ui/context/OxyContext.d.ts +7 -4
  217. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  218. package/lib/typescript/ui/hooks/useI18n.d.ts +5 -0
  219. package/lib/typescript/ui/hooks/useI18n.d.ts.map +1 -0
  220. package/lib/typescript/ui/navigation/OxyRouter.d.ts.map +1 -1
  221. package/lib/typescript/ui/navigation/routes.d.ts +9 -0
  222. package/lib/typescript/ui/navigation/routes.d.ts.map +1 -0
  223. package/lib/typescript/ui/navigation/types.d.ts +24 -10
  224. package/lib/typescript/ui/navigation/types.d.ts.map +1 -1
  225. package/lib/typescript/ui/screens/AccountCenterScreen.d.ts.map +1 -1
  226. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
  227. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  228. package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
  229. package/lib/typescript/ui/screens/FeedbackScreen.d.ts.map +1 -1
  230. package/lib/typescript/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  231. package/lib/typescript/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  232. package/lib/typescript/ui/screens/ProfileScreen.d.ts.map +1 -1
  233. package/lib/typescript/ui/screens/RecoverAccountScreen.d.ts.map +1 -1
  234. package/lib/typescript/ui/screens/SignInScreen.d.ts.map +1 -1
  235. package/lib/typescript/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  236. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts +2 -1
  237. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts.map +1 -1
  238. package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts.map +1 -1
  239. package/lib/typescript/ui/screens/karma/KarmaAboutScreen.d.ts.map +1 -1
  240. package/lib/typescript/ui/screens/karma/KarmaCenterScreen.d.ts.map +1 -1
  241. package/lib/typescript/ui/screens/karma/KarmaFAQScreen.d.ts.map +1 -1
  242. package/lib/typescript/ui/screens/karma/KarmaLeaderboardScreen.d.ts.map +1 -1
  243. package/lib/typescript/ui/screens/karma/KarmaRewardsScreen.d.ts.map +1 -1
  244. package/lib/typescript/ui/screens/karma/KarmaRulesScreen.d.ts.map +1 -1
  245. package/lib/typescript/ui/screens/steps/RecoverRequestStep.d.ts +4 -1
  246. package/lib/typescript/ui/screens/steps/RecoverRequestStep.d.ts.map +1 -1
  247. package/lib/typescript/ui/screens/steps/RecoverResetPasswordStep.d.ts +24 -0
  248. package/lib/typescript/ui/screens/steps/RecoverResetPasswordStep.d.ts.map +1 -0
  249. package/lib/typescript/ui/screens/steps/RecoverSuccessStep.d.ts +2 -1
  250. package/lib/typescript/ui/screens/steps/RecoverSuccessStep.d.ts.map +1 -1
  251. package/lib/typescript/ui/screens/steps/RecoverVerifyStep.d.ts +3 -1
  252. package/lib/typescript/ui/screens/steps/RecoverVerifyStep.d.ts.map +1 -1
  253. package/lib/typescript/ui/screens/steps/SignInPasswordStep.d.ts +1 -0
  254. package/lib/typescript/ui/screens/steps/SignInPasswordStep.d.ts.map +1 -1
  255. package/lib/typescript/ui/screens/steps/SignInTotpStep.d.ts +19 -0
  256. package/lib/typescript/ui/screens/steps/SignInTotpStep.d.ts.map +1 -0
  257. package/lib/typescript/ui/screens/steps/SignInUsernameStep.d.ts +2 -1
  258. package/lib/typescript/ui/screens/steps/SignInUsernameStep.d.ts.map +1 -1
  259. package/lib/typescript/ui/screens/steps/SignUpIdentityStep.d.ts +2 -1
  260. package/lib/typescript/ui/screens/steps/SignUpIdentityStep.d.ts.map +1 -1
  261. package/lib/typescript/ui/screens/steps/SignUpSecurityStep.d.ts +2 -1
  262. package/lib/typescript/ui/screens/steps/SignUpSecurityStep.d.ts.map +1 -1
  263. package/lib/typescript/ui/screens/steps/SignUpSummaryStep.d.ts +2 -1
  264. package/lib/typescript/ui/screens/steps/SignUpSummaryStep.d.ts.map +1 -1
  265. package/lib/typescript/ui/screens/steps/SignUpWelcomeStep.d.ts +2 -1
  266. package/lib/typescript/ui/screens/steps/SignUpWelcomeStep.d.ts.map +1 -1
  267. package/lib/typescript/ui/styles/authStyles.d.ts +0 -1
  268. package/lib/typescript/ui/styles/authStyles.d.ts.map +1 -1
  269. package/lib/typescript/utils/validationUtils.d.ts.map +1 -1
  270. package/package.json +49 -15
  271. package/src/core/OxyServices.ts +138 -19
  272. package/src/i18n/index.ts +39 -0
  273. package/src/i18n/locales/en-US.json +681 -0
  274. package/src/i18n/locales/es-ES.json +689 -0
  275. package/src/models/interfaces.ts +6 -1
  276. package/src/ui/components/GroupedItem.tsx +2 -1
  277. package/src/ui/components/Header.tsx +4 -3
  278. package/src/ui/components/OxyProvider.tsx +105 -112
  279. package/src/ui/components/ProfileCard.tsx +5 -1
  280. package/src/ui/components/Section.tsx +1 -1
  281. package/src/ui/components/StepBasedScreen.tsx +16 -13
  282. package/src/ui/components/internal/GroupedPillButtons.tsx +10 -6
  283. package/src/ui/components/internal/PinInput.tsx +15 -6
  284. package/src/ui/context/OxyContext.tsx +123 -20
  285. package/src/ui/hooks/useI18n.ts +12 -0
  286. package/src/ui/navigation/OxyRouter.tsx +15 -134
  287. package/src/ui/navigation/routes.ts +153 -0
  288. package/src/ui/navigation/types.ts +28 -10
  289. package/src/ui/screens/AccountCenterScreen.tsx +47 -45
  290. package/src/ui/screens/AccountOverviewScreen.tsx +68 -70
  291. package/src/ui/screens/AccountSettingsScreen.tsx +265 -41
  292. package/src/ui/screens/AccountSwitcherScreen.tsx +35 -33
  293. package/src/ui/screens/FeedbackScreen.tsx +39 -37
  294. package/src/ui/screens/LanguageSelectorScreen.tsx +99 -70
  295. package/src/ui/screens/PaymentGatewayScreen.tsx +5 -5
  296. package/src/ui/screens/PremiumSubscriptionScreen.tsx +56 -54
  297. package/src/ui/screens/ProfileScreen.tsx +14 -8
  298. package/src/ui/screens/RecoverAccountScreen.tsx +29 -8
  299. package/src/ui/screens/SignInScreen.tsx +39 -30
  300. package/src/ui/screens/WelcomeNewUserScreen.tsx +31 -17
  301. package/src/ui/screens/internal/SignInPasswordStep.tsx +11 -8
  302. package/src/ui/screens/internal/SignInUsernameStep.tsx +10 -8
  303. package/src/ui/screens/karma/KarmaAboutScreen.tsx +23 -11
  304. package/src/ui/screens/karma/KarmaCenterScreen.tsx +21 -11
  305. package/src/ui/screens/karma/KarmaFAQScreen.tsx +15 -33
  306. package/src/ui/screens/karma/KarmaLeaderboardScreen.tsx +6 -4
  307. package/src/ui/screens/karma/KarmaRewardsScreen.tsx +28 -10
  308. package/src/ui/screens/karma/KarmaRulesScreen.tsx +5 -3
  309. package/src/ui/screens/steps/RecoverRequestStep.tsx +20 -17
  310. package/src/ui/screens/steps/RecoverResetPasswordStep.tsx +133 -0
  311. package/src/ui/screens/steps/RecoverSuccessStep.tsx +12 -19
  312. package/src/ui/screens/steps/RecoverVerifyStep.tsx +15 -24
  313. package/src/ui/screens/steps/SignInPasswordStep.tsx +19 -6
  314. package/src/ui/screens/steps/SignInTotpStep.tsx +129 -0
  315. package/src/ui/screens/steps/SignInUsernameStep.tsx +11 -10
  316. package/src/ui/screens/steps/SignUpIdentityStep.tsx +10 -11
  317. package/src/ui/screens/steps/SignUpSecurityStep.tsx +10 -11
  318. package/src/ui/screens/steps/SignUpSummaryStep.tsx +24 -9
  319. package/src/ui/screens/steps/SignUpWelcomeStep.tsx +8 -14
  320. package/src/ui/styles/authStyles.ts +0 -1
  321. package/src/utils/deviceManager.ts +1 -1
  322. package/src/utils/validationUtils.ts +5 -3
@@ -21,6 +21,7 @@ import { toast } from '../../lib/sonner';
21
21
  import { confirmAction } from '../utils/confirmAction';
22
22
  import { Ionicons } from '@expo/vector-icons';
23
23
  import { Header, Section, GroupedSection, GroupedItem } from '../components';
24
+ import { useI18n } from '../hooks/useI18n';
24
25
 
25
26
  /**
26
27
  * AccountOverviewScreen - Optimized for performance
@@ -38,6 +39,7 @@ const AccountOverviewScreen: React.FC<BaseScreenProps> = ({
38
39
  navigate,
39
40
  }) => {
40
41
  const { user, logout, isLoading, sessions, activeSessionId, oxyServices, isAuthenticated } = useOxy();
42
+ const { t } = useI18n();
41
43
  const [showMoreAccounts, setShowMoreAccounts] = useState(false);
42
44
  const [additionalAccountsData, setAdditionalAccountsData] = useState<any[]>([]);
43
45
  const [loadingAdditionalAccounts, setLoadingAdditionalAccounts] = useState(false);
@@ -127,32 +129,26 @@ const AccountOverviewScreen: React.FC<BaseScreenProps> = ({
127
129
  }
128
130
  } catch (error) {
129
131
  console.error('Logout failed:', error);
130
- toast.error('There was a problem signing you out. Please try again.');
132
+ toast.error(t('common.errors.signOutFailed'));
131
133
  }
132
134
  }, [logout, onClose]);
133
135
 
134
136
  const confirmLogout = useCallback(() => {
135
- confirmAction(
136
- 'Are you sure you want to sign out?',
137
- handleLogout
138
- );
137
+ confirmAction(t('common.confirms.signOut'), handleLogout);
139
138
  }, [handleLogout]);
140
139
 
141
140
  const handleAddAccount = useCallback(() => {
142
- toast.info('Add another account feature coming soon!');
143
- }, []);
141
+ toast.info(t('accountOverview.addAccountComing'));
142
+ }, [t]);
144
143
 
145
144
  const handleSignOutAll = useCallback(() => {
146
- confirmAction(
147
- 'Are you sure you want to sign out of all accounts?',
148
- handleLogout
149
- );
145
+ confirmAction(t('common.confirms.signOutAll'), handleLogout);
150
146
  }, [handleLogout]);
151
147
 
152
148
  if (!isAuthenticated) {
153
149
  return (
154
150
  <View style={[styles.container, { backgroundColor: themeStyles.backgroundColor }]}>
155
- <Text style={[styles.message, { color: themeStyles.textColor }]}>Not signed in</Text>
151
+ <Text style={[styles.message, { color: themeStyles.textColor }]}>{t('common.status.notSignedIn')}</Text>
156
152
  </View>
157
153
  );
158
154
  }
@@ -169,7 +165,7 @@ const AccountOverviewScreen: React.FC<BaseScreenProps> = ({
169
165
  <View style={[styles.container, { backgroundColor: '#f2f2f2' }]}>
170
166
  {/* Header */}
171
167
  <Header
172
- title="Account"
168
+ title={t('accountOverview.title')}
173
169
  theme={theme}
174
170
  onBack={onClose}
175
171
  variant="minimal"
@@ -178,16 +174,16 @@ const AccountOverviewScreen: React.FC<BaseScreenProps> = ({
178
174
 
179
175
  <ScrollView style={styles.content}>
180
176
  {/* User Profile Section */}
181
- <Section title="Profile" theme={theme} isFirst={true}>
177
+ <Section title={t('accountOverview.sections.profile')} theme={theme} isFirst={true}>
182
178
  <GroupedSection
183
179
  items={[
184
180
  {
185
181
  id: 'profile-info',
186
182
  icon: 'person',
187
183
  iconColor: '#007AFF',
188
- title: user ? (typeof user.name === 'string' ? user.name : user.name?.full || user.name?.first || user.username) : 'Loading...',
189
- subtitle: user ? (user.email || user.username) : 'Loading...',
190
- onPress: () => toast.info('Manage your Oxy Account feature coming soon!'),
184
+ title: user ? (typeof user.name === 'string' ? user.name : user.name?.full || user.name?.first || user.username) : (t('common.status.loading') || 'Loading...'),
185
+ subtitle: user ? (user.email || user.username) : (t('common.status.loading') || 'Loading...'),
186
+ onPress: () => toast.info(t('accountOverview.manageComing')),
191
187
  customContent: (
192
188
  <>
193
189
  <View style={styles.userIcon}>
@@ -200,9 +196,9 @@ const AccountOverviewScreen: React.FC<BaseScreenProps> = ({
200
196
  </View>
201
197
  <TouchableOpacity
202
198
  style={styles.manageButton}
203
- onPress={() => toast.info('Manage your Oxy Account feature coming soon!')}
199
+ onPress={() => toast.info(t('accountOverview.manageComing'))}
204
200
  >
205
- <Text style={styles.manageButtonText}>Manage</Text>
201
+ <Text style={styles.manageButtonText}>{t('accountOverview.actions.manage')}</Text>
206
202
  </TouchableOpacity>
207
203
  </>
208
204
  ),
@@ -213,48 +209,48 @@ const AccountOverviewScreen: React.FC<BaseScreenProps> = ({
213
209
  </Section>
214
210
 
215
211
  {/* Account Settings */}
216
- <Section title="Account Settings" theme={theme}>
212
+ <Section title={t('accountOverview.sections.accountSettings')} theme={theme}>
217
213
  <GroupedSection
218
214
  items={[
219
215
  {
220
216
  id: 'edit-profile',
221
217
  icon: 'person-circle',
222
218
  iconColor: '#007AFF',
223
- title: 'Edit Profile',
224
- subtitle: 'Update your personal information',
219
+ title: t('accountOverview.items.editProfile.title'),
220
+ subtitle: t('accountOverview.items.editProfile.subtitle'),
225
221
  onPress: () => navigate?.('EditProfile', { activeTab: 'profile' }),
226
222
  },
227
223
  {
228
224
  id: 'security-privacy',
229
225
  icon: 'shield-checkmark',
230
226
  iconColor: '#30D158',
231
- title: 'Security & Privacy',
232
- subtitle: 'Password, 2FA, and privacy settings',
227
+ title: t('accountOverview.items.security.title'),
228
+ subtitle: t('accountOverview.items.security.subtitle'),
233
229
  onPress: () => navigate?.('EditProfile', { activeTab: 'password' }),
234
230
  },
235
231
  {
236
232
  id: 'notifications',
237
233
  icon: 'notifications',
238
234
  iconColor: '#FF9500',
239
- title: 'Notifications',
240
- subtitle: 'Manage your notification preferences',
235
+ title: t('accountOverview.items.notifications.title'),
236
+ subtitle: t('accountOverview.items.notifications.subtitle'),
241
237
  onPress: () => navigate?.('EditProfile', { activeTab: 'notifications' }),
242
238
  },
243
239
  {
244
240
  id: 'premium-subscription',
245
241
  icon: 'star',
246
242
  iconColor: '#FFD700',
247
- title: 'Oxy+ Subscriptions',
248
- subtitle: user?.isPremium ? 'Manage your premium plan' : 'Upgrade to premium features',
243
+ title: t('accountOverview.items.premium.title'),
244
+ subtitle: user?.isPremium ? t('accountOverview.items.premium.manage') : t('accountOverview.items.premium.upgrade'),
249
245
  onPress: () => navigate?.('PremiumSubscription'),
250
246
  },
251
247
  ...(user?.isPremium ? [{
252
248
  id: 'billing-management',
253
249
  icon: 'card',
254
250
  iconColor: '#34C759',
255
- title: 'Billing Management',
256
- subtitle: 'Payment methods and invoices',
257
- onPress: () => toast.info('Billing management feature coming soon!'),
251
+ title: t('accountOverview.items.billing.title'),
252
+ subtitle: t('accountOverview.items.billing.subtitle'),
253
+ onPress: () => toast.info(t('accountOverview.items.billing.coming')),
258
254
  }] : []),
259
255
  ]}
260
256
  theme={theme}
@@ -263,7 +259,7 @@ const AccountOverviewScreen: React.FC<BaseScreenProps> = ({
263
259
 
264
260
  {/* Additional Accounts */}
265
261
  {showMoreAccounts && (
266
- <Section title={`Additional Accounts${additionalAccountsData.length > 0 ? ` (${additionalAccountsData.length})` : ''}`} theme={theme}>
262
+ <Section title={`${t('accountOverview.sections.additionalAccounts') || 'Additional Accounts'}${additionalAccountsData.length > 0 ? ` (${additionalAccountsData.length})` : ''}`} theme={theme}>
267
263
  {loadingAdditionalAccounts ? (
268
264
  <GroupedSection
269
265
  items={[
@@ -271,12 +267,12 @@ const AccountOverviewScreen: React.FC<BaseScreenProps> = ({
271
267
  id: 'loading-accounts',
272
268
  icon: 'sync',
273
269
  iconColor: '#007AFF',
274
- title: 'Loading accounts...',
275
- subtitle: 'Please wait while we load your additional accounts',
270
+ title: t('accountOverview.loadingAdditional.title') || 'Loading accounts...',
271
+ subtitle: t('accountOverview.loadingAdditional.subtitle') || 'Please wait while we load your additional accounts',
276
272
  customContent: (
277
273
  <View style={styles.loadingContainer}>
278
274
  <ActivityIndicator size="small" color="#007AFF" />
279
- <Text style={styles.loadingText}>Loading accounts...</Text>
275
+ <Text style={styles.loadingText}>{t('accountOverview.loadingAdditional.title') || 'Loading accounts...'}</Text>
280
276
  </View>
281
277
  ),
282
278
  },
@@ -294,7 +290,7 @@ const AccountOverviewScreen: React.FC<BaseScreenProps> = ({
294
290
  : account.name || account.username,
295
291
  subtitle: account.email || account.username,
296
292
  onPress: () => {
297
- toast.info(`Switch to ${account.username}?`);
293
+ toast.info(t('accountOverview.items.accountSwitcher.switchPrompt', { username: account.username }) || `Switch to ${account.username}?`);
298
294
  // TODO: Implement account switching logic
299
295
  // switchSession(account.sessionId);
300
296
  },
@@ -324,8 +320,8 @@ const AccountOverviewScreen: React.FC<BaseScreenProps> = ({
324
320
  id: 'no-accounts',
325
321
  icon: 'person-outline',
326
322
  iconColor: '#ccc',
327
- title: 'No other accounts',
328
- subtitle: 'Add another account to switch between them',
323
+ title: t('accountOverview.additional.noAccounts.title') || 'No other accounts',
324
+ subtitle: t('accountOverview.additional.noAccounts.subtitle') || 'Add another account to switch between them',
329
325
  },
330
326
  ]}
331
327
  theme={theme}
@@ -336,23 +332,23 @@ const AccountOverviewScreen: React.FC<BaseScreenProps> = ({
336
332
 
337
333
  {/* Account Management */}
338
334
  {showMoreAccounts && (
339
- <Section title="Account Management" theme={theme}>
335
+ <Section title={t('accountOverview.sections.accountManagement') || 'Account Management'} theme={theme}>
340
336
  <GroupedSection
341
337
  items={[
342
338
  {
343
339
  id: 'add-account',
344
340
  icon: 'add',
345
341
  iconColor: '#007AFF',
346
- title: 'Add another account',
347
- subtitle: 'Sign in with a different account',
342
+ title: t('accountOverview.items.addAccount.title') || 'Add Another Account',
343
+ subtitle: t('accountOverview.items.addAccount.subtitle') || 'Sign in with a different account',
348
344
  onPress: handleAddAccount,
349
345
  },
350
346
  {
351
347
  id: 'sign-out-all',
352
348
  icon: 'log-out',
353
349
  iconColor: '#FF3B30',
354
- title: 'Sign out of all accounts',
355
- subtitle: 'Remove all accounts from this device',
350
+ title: t('accountOverview.items.signOutAll.title') || 'Sign out of all accounts',
351
+ subtitle: t('accountOverview.items.signOutAll.subtitle') || 'Remove all accounts from this device',
356
352
  onPress: handleSignOutAll,
357
353
  },
358
354
  ]}
@@ -362,38 +358,40 @@ const AccountOverviewScreen: React.FC<BaseScreenProps> = ({
362
358
  )}
363
359
 
364
360
  {/* Quick Actions */}
365
- <Section title="Quick Actions" theme={theme}>
361
+ <Section title={t('accountOverview.sections.quickActions')} theme={theme}>
366
362
  <GroupedSection
367
363
  items={[
368
364
  {
369
365
  id: 'account-switcher',
370
366
  icon: 'people',
371
367
  iconColor: '#5856D6',
372
- title: `${showMoreAccounts ? 'Hide' : 'Show'} Account Switcher`,
368
+ title: showMoreAccounts
369
+ ? t('accountOverview.items.accountSwitcher.titleHide')
370
+ : t('accountOverview.items.accountSwitcher.titleShow'),
373
371
  subtitle: showMoreAccounts
374
- ? 'Hide account switcher'
372
+ ? t('accountOverview.items.accountSwitcher.subtitleHide')
375
373
  : additionalAccountsData.length > 0
376
- ? `Switch between ${additionalAccountsData.length + 1} accounts`
374
+ ? t('accountOverview.items.accountSwitcher.subtitleSwitchBetween', { count: String(additionalAccountsData.length + 1) })
377
375
  : loadingAdditionalAccounts
378
- ? 'Loading additional accounts...'
379
- : 'Manage multiple accounts',
376
+ ? t('accountOverview.items.accountSwitcher.subtitleLoading')
377
+ : t('accountOverview.items.accountSwitcher.subtitleManageMultiple'),
380
378
  onPress: () => setShowMoreAccounts(!showMoreAccounts),
381
379
  },
382
380
  {
383
381
  id: 'download-data',
384
382
  icon: 'download',
385
383
  iconColor: '#34C759',
386
- title: 'Download My Data',
387
- subtitle: 'Export your account information',
388
- onPress: () => toast.info('Download account data feature coming soon!'),
384
+ title: t('accountOverview.items.downloadData.title'),
385
+ subtitle: t('accountOverview.items.downloadData.subtitle'),
386
+ onPress: () => toast.info(t('accountOverview.items.downloadData.coming')),
389
387
  },
390
388
  {
391
389
  id: 'delete-account',
392
390
  icon: 'trash',
393
391
  iconColor: '#FF3B30',
394
- title: 'Delete Account',
395
- subtitle: 'Permanently delete your account',
396
- onPress: () => toast.info('Delete account feature coming soon!'),
392
+ title: t('accountOverview.items.deleteAccount.title'),
393
+ subtitle: t('accountOverview.items.deleteAccount.subtitle'),
394
+ onPress: () => toast.info(t('accountOverview.items.deleteAccount.coming')),
397
395
  },
398
396
  ]}
399
397
  theme={theme}
@@ -401,39 +399,39 @@ const AccountOverviewScreen: React.FC<BaseScreenProps> = ({
401
399
  </Section>
402
400
 
403
401
  {/* Support & Settings */}
404
- <Section title="Support & Settings" theme={theme}>
402
+ <Section title={t('accountOverview.sections.support')} theme={theme}>
405
403
  <GroupedSection
406
404
  items={[
407
405
  {
408
406
  id: 'account-preferences',
409
407
  icon: 'settings',
410
408
  iconColor: '#8E8E93',
411
- title: 'Account Preferences',
412
- subtitle: 'Customize your account experience',
413
- onPress: () => toast.info('Account preferences coming soon!'),
409
+ title: t('accountOverview.items.preferences.title'),
410
+ subtitle: t('accountOverview.items.preferences.subtitle'),
411
+ onPress: () => toast.info(t('accountOverview.items.preferences.coming')),
414
412
  },
415
413
  {
416
414
  id: 'help-support',
417
415
  icon: 'help-circle',
418
416
  iconColor: '#007AFF',
419
- title: 'Help & Support',
420
- subtitle: 'Get help with your account',
421
- onPress: () => toast.info('Help & support feature coming soon!'),
417
+ title: t('accountOverview.items.help.title'),
418
+ subtitle: t('accountOverview.items.help.subtitle'),
419
+ onPress: () => toast.info(t('accountOverview.items.help.coming')),
422
420
  },
423
421
  {
424
422
  id: 'connected-apps',
425
423
  icon: 'link',
426
424
  iconColor: '#32D74B',
427
- title: 'Connected Apps',
428
- subtitle: 'Manage third-party app access',
429
- onPress: () => toast.info('Connected apps feature coming soon!'),
425
+ title: t('accountOverview.items.connectedApps.title'),
426
+ subtitle: t('accountOverview.items.connectedApps.subtitle'),
427
+ onPress: () => toast.info(t('accountOverview.items.connectedApps.coming')),
430
428
  },
431
429
  {
432
430
  id: 'about',
433
431
  icon: 'information-circle',
434
432
  iconColor: '#8E8E93',
435
- title: 'About',
436
- subtitle: 'App version and information',
433
+ title: t('accountOverview.items.about.title'),
434
+ subtitle: t('accountOverview.items.about.subtitle'),
437
435
  onPress: () => navigate?.('AppInfo'),
438
436
  },
439
437
  ]}
@@ -442,12 +440,12 @@ const AccountOverviewScreen: React.FC<BaseScreenProps> = ({
442
440
  </Section>
443
441
 
444
442
  {/* Sign Out */}
445
- <Section title="Account Actions" theme={theme}>
443
+ <Section title={t('accountOverview.sections.actions')} theme={theme}>
446
444
  <GroupedItem
447
445
  icon="log-out"
448
446
  iconColor="#FF3B30"
449
- title="Sign Out"
450
- subtitle="Sign out of your current account"
447
+ title={t('accountOverview.items.signOut.title')}
448
+ subtitle={t('accountOverview.items.signOut.subtitle')}
451
449
  theme={theme}
452
450
  onPress={confirmLogout}
453
451
  isFirst={true}