@oxyhq/services 5.11.12 → 5.12.1

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 +168 -5
  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 +168 -5
  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 +58 -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 +48 -14
  271. package/src/core/OxyServices.ts +143 -9
  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
@@ -11,6 +11,7 @@ var _fonts = require("../styles/fonts");
11
11
  var _sonner = require("../../lib/sonner");
12
12
  var _confirmAction = require("../utils/confirmAction");
13
13
  var _vectorIcons = require("@expo/vector-icons");
14
+ var _useI18n = require("../hooks/useI18n");
14
15
  var _jsxRuntime = require("react/jsx-runtime");
15
16
  const PremiumSubscriptionScreen = ({
16
17
  onClose,
@@ -33,6 +34,9 @@ const PremiumSubscriptionScreen = ({
33
34
  const [currentAppPackage, setCurrentAppPackage] = (0, _react.useState)('mention'); // Default to mention for demo
34
35
 
35
36
  const isDarkTheme = theme === 'dark';
37
+ const {
38
+ t
39
+ } = (0, _useI18n.useI18n)();
36
40
  const textColor = isDarkTheme ? '#FFFFFF' : '#000000';
37
41
  const backgroundColor = isDarkTheme ? '#121212' : '#FFFFFF';
38
42
  const secondaryBackgroundColor = isDarkTheme ? '#222222' : '#F5F5F5';
@@ -295,14 +299,16 @@ const PremiumSubscriptionScreen = ({
295
299
  const selectedPlan = mockPlans.find(plan => plan.id === planId);
296
300
  if (!selectedPlan?.applicableApps.includes(currentAppPackage)) {
297
301
  console.log(`❌ Subscription blocked: Plan "${selectedPlan?.name}" not available for app "${currentAppPackage}"`);
298
- _sonner.toast.error(`This plan is not available for the current app (${currentAppPackage})`);
302
+ _sonner.toast.error(t('premium.toasts.planUnavailable', {
303
+ app: currentAppPackage
304
+ }) || `This plan is not available for the current app (${currentAppPackage})`);
299
305
  return;
300
306
  }
301
307
 
302
308
  // Special restriction for Mention+ plan - only available in mention app
303
309
  if (planId === 'mention-plus' && currentAppPackage !== 'mention') {
304
310
  console.log(`❌ Subscription blocked: Mention+ plan requires app to be "mention", current app is "${currentAppPackage}"`);
305
- _sonner.toast.error('Mention+ is only available in the Mention app');
311
+ _sonner.toast.error(t('premium.toasts.mentionOnly') || 'Mention+ is only available in the Mention app');
306
312
  return;
307
313
  }
308
314
  console.log(`✅ Subscription allowed: Plan "${selectedPlan.name}" is available for app "${currentAppPackage}"`);
@@ -310,7 +316,7 @@ const PremiumSubscriptionScreen = ({
310
316
 
311
317
  // Mock payment processing
312
318
  await new Promise(resolve => setTimeout(resolve, 2000));
313
- _sonner.toast.success('Subscription activated successfully!');
319
+ _sonner.toast.success(t('premium.toasts.activated') || 'Subscription activated successfully!');
314
320
 
315
321
  // Mock subscription update
316
322
  setSubscription({
@@ -326,22 +332,22 @@ const PremiumSubscriptionScreen = ({
326
332
  loadSubscriptionData();
327
333
  } catch (error) {
328
334
  console.error('Payment failed:', error);
329
- _sonner.toast.error('Payment failed. Please try again.');
335
+ _sonner.toast.error(t('premium.toasts.paymentFailed') || 'Payment failed. Please try again.');
330
336
  } finally {
331
337
  setProcessingPayment(false);
332
338
  }
333
339
  };
334
340
  const handleCancelSubscription = () => {
335
- (0, _confirmAction.confirmAction)('Are you sure you want to cancel your subscription? You will lose access to premium features at the end of your current billing period.', async () => {
341
+ (0, _confirmAction.confirmAction)(t('premium.confirms.cancelSub') || 'Are you sure you want to cancel your subscription? You will lose access to premium features at the end of your current billing period.', async () => {
336
342
  try {
337
343
  // Mock cancellation
338
344
  setSubscription(prev => prev ? {
339
345
  ...prev,
340
346
  cancelAtPeriodEnd: true
341
347
  } : null);
342
- _sonner.toast.success('Subscription will be canceled at the end of the billing period');
348
+ _sonner.toast.success(t('premium.toasts.willCancel') || 'Subscription will be canceled at the end of the billing period');
343
349
  } catch (error) {
344
- _sonner.toast.error('Failed to cancel subscription');
350
+ _sonner.toast.error(t('premium.toasts.cancelFailed') || 'Failed to cancel subscription');
345
351
  }
346
352
  });
347
353
  };
@@ -351,9 +357,9 @@ const PremiumSubscriptionScreen = ({
351
357
  ...prev,
352
358
  cancelAtPeriodEnd: false
353
359
  } : null);
354
- _sonner.toast.success('Subscription reactivated successfully');
360
+ _sonner.toast.success(t('premium.toasts.reactivated') || 'Subscription reactivated successfully');
355
361
  } catch (error) {
356
- _sonner.toast.error('Failed to reactivate subscription');
362
+ _sonner.toast.error(t('premium.toasts.reactivateFailed') || 'Failed to reactivate subscription');
357
363
  }
358
364
  };
359
365
  const formatPrice = (price, currency, interval) => {
@@ -397,25 +403,31 @@ const PremiumSubscriptionScreen = ({
397
403
  isSubscribed: true
398
404
  } : feature));
399
405
  const feature = individualFeatures.find(f => f.id === featureId);
400
- _sonner.toast.success(`Subscribed to ${feature?.name} successfully!`);
406
+ _sonner.toast.success(t('premium.toasts.featureSubscribed', {
407
+ name: feature?.name ?? ''
408
+ }) ?? `Subscribed to ${feature?.name} successfully!`);
401
409
  } catch (error) {
402
410
  console.error('Feature subscription failed:', error);
403
- _sonner.toast.error('Feature subscription failed. Please try again.');
411
+ _sonner.toast.error(t('premium.toasts.featureSubscribeFailed') || 'Feature subscription failed. Please try again.');
404
412
  } finally {
405
413
  setProcessingPayment(false);
406
414
  }
407
415
  };
408
416
  const handleFeatureUnsubscribe = async featureId => {
409
417
  const feature = individualFeatures.find(f => f.id === featureId);
410
- (0, _confirmAction.confirmAction)(`Are you sure you want to unsubscribe from ${feature?.name}?`, async () => {
418
+ (0, _confirmAction.confirmAction)(t('premium.confirms.unsubscribeFeature', {
419
+ name: feature?.name ?? ''
420
+ }) ?? `Are you sure you want to unsubscribe from ${feature?.name}?`, async () => {
411
421
  try {
412
422
  setIndividualFeatures(prev => prev.map(f => f.id === featureId ? {
413
423
  ...f,
414
424
  isSubscribed: false
415
425
  } : f));
416
- _sonner.toast.success(`Unsubscribed from ${feature?.name}`);
426
+ _sonner.toast.success(t('premium.toasts.featureUnsubscribed', {
427
+ name: feature?.name ?? ''
428
+ }) ?? `Unsubscribed from ${feature?.name}`);
417
429
  } catch (error) {
418
- _sonner.toast.error('Failed to unsubscribe from feature');
430
+ _sonner.toast.error(t('premium.toasts.featureUnsubscribeFailed') || 'Failed to unsubscribe from feature');
419
431
  }
420
432
  });
421
433
  };
@@ -449,12 +461,14 @@ const PremiumSubscriptionScreen = ({
449
461
  style: [styles.headerTitle, {
450
462
  color: textColor
451
463
  }],
452
- children: "Oxy+ Subscriptions"
453
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
464
+ children: t('premium.title') || 'Oxy+ Subscriptions'
465
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
454
466
  style: [styles.currentAppText, {
455
467
  color: isDarkTheme ? '#BBBBBB' : '#666666'
456
468
  }],
457
- children: ["for ", getAppDisplayName(currentAppPackage)]
469
+ children: t('premium.forApp', {
470
+ app: getAppDisplayName(currentAppPackage)
471
+ }) || `for ${getAppDisplayName(currentAppPackage)}`
458
472
  })]
459
473
  }), onClose && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
460
474
  style: styles.closeButton,
@@ -478,7 +492,7 @@ const PremiumSubscriptionScreen = ({
478
492
  style: [styles.sectionTitle, {
479
493
  color: textColor
480
494
  }],
481
- children: "Current Subscription"
495
+ children: t('premium.current.title') || 'Current Subscription'
482
496
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
483
497
  style: [styles.currentSubscriptionCard, {
484
498
  backgroundColor: secondaryBackgroundColor,
@@ -507,22 +521,26 @@ const PremiumSubscriptionScreen = ({
507
521
  children: subscription.status.toUpperCase()
508
522
  })
509
523
  })]
510
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
524
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
511
525
  style: [styles.subscriptionDetail, {
512
526
  color: isDarkTheme ? '#BBBBBB' : '#666666'
513
527
  }],
514
- children: ["Renews on ", new Date(subscription.currentPeriodEnd).toLocaleDateString()]
528
+ children: t('premium.current.renewsOn', {
529
+ date: new Date(subscription.currentPeriodEnd).toLocaleDateString()
530
+ }) || `Renews on ${new Date(subscription.currentPeriodEnd).toLocaleDateString()}`
515
531
  }), subscription.cancelAtPeriodEnd && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
516
532
  style: styles.cancelNotice,
517
533
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
518
534
  name: "warning",
519
535
  size: 16,
520
536
  color: warningColor
521
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
537
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
522
538
  style: [styles.cancelText, {
523
539
  color: warningColor
524
540
  }],
525
- children: ["Subscription will cancel on ", new Date(subscription.currentPeriodEnd).toLocaleDateString()]
541
+ children: t('premium.current.willCancelOn', {
542
+ date: new Date(subscription.currentPeriodEnd).toLocaleDateString()
543
+ }) || `Subscription will cancel on ${new Date(subscription.currentPeriodEnd).toLocaleDateString()}`
526
544
  })]
527
545
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
528
546
  style: styles.subscriptionActions,
@@ -533,7 +551,7 @@ const PremiumSubscriptionScreen = ({
533
551
  onPress: handleReactivateSubscription,
534
552
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
535
553
  style: styles.actionButtonText,
536
- children: "Reactivate"
554
+ children: t('premium.actions.reactivate') || 'Reactivate'
537
555
  })
538
556
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
539
557
  style: [styles.actionButton, {
@@ -542,7 +560,7 @@ const PremiumSubscriptionScreen = ({
542
560
  onPress: handleCancelSubscription,
543
561
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
544
562
  style: styles.actionButtonText,
545
- children: "Cancel Subscription"
563
+ children: t('premium.actions.cancelSubBtn') || 'Cancel Subscription'
546
564
  })
547
565
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
548
566
  style: [styles.actionButton, styles.secondaryButton, {
@@ -552,7 +570,7 @@ const PremiumSubscriptionScreen = ({
552
570
  style: [styles.actionButtonText, {
553
571
  color: textColor
554
572
  }],
555
- children: "Manage Billing"
573
+ children: t('premium.actions.manageBilling') || 'Manage Billing'
556
574
  })
557
575
  })]
558
576
  })]
@@ -572,7 +590,7 @@ const PremiumSubscriptionScreen = ({
572
590
  style: [styles.billingOptionText, {
573
591
  color: billingInterval === 'month' ? '#FFFFFF' : textColor
574
592
  }],
575
- children: "Monthly"
593
+ children: t('premium.billing.monthly') || 'Monthly'
576
594
  })
577
595
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
578
596
  style: [styles.billingOption, billingInterval === 'year' && {
@@ -583,14 +601,14 @@ const PremiumSubscriptionScreen = ({
583
601
  style: [styles.billingOptionText, {
584
602
  color: billingInterval === 'year' ? '#FFFFFF' : textColor
585
603
  }],
586
- children: "Yearly"
604
+ children: t('premium.billing.yearly') || 'Yearly'
587
605
  })
588
606
  })]
589
607
  }), billingInterval === 'year' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
590
608
  style: [styles.savingsText, {
591
609
  color: successColor
592
610
  }],
593
- children: "\uD83D\uDCB0 Save 20% with yearly billing"
611
+ children: t('premium.billing.saveYearly') || '💰 Save 20% with yearly billing'
594
612
  })]
595
613
  });
596
614
  const renderPlanCard = plan => {
@@ -601,12 +619,16 @@ const PremiumSubscriptionScreen = ({
601
619
  const isAvailableForCurrentApp = plan.applicableApps.includes(currentAppPackage);
602
620
  const getAppScopeText = () => {
603
621
  if (plan.appScope === 'ecosystem') {
604
- return 'Works across all Oxy apps';
622
+ return t('premium.plan.scope.allApps') || 'Works across all Oxy apps';
605
623
  } else if (isAppSpecific) {
606
624
  const appName = plan.applicableApps[0];
607
- return `Exclusive to ${appName} app`;
625
+ return t('premium.plan.scope.exclusive', {
626
+ app: appName
627
+ }) || `Exclusive to ${appName} app`;
608
628
  } else {
609
- return `Available in: ${plan.applicableApps.join(', ')}`;
629
+ return t('premium.plan.scope.availableIn', {
630
+ apps: plan.applicableApps.join(', ')
631
+ }) || `Available in: ${plan.applicableApps.join(', ')}`;
610
632
  }
611
633
  };
612
634
  const getAvailabilityStatus = () => {
@@ -614,7 +636,9 @@ const PremiumSubscriptionScreen = ({
614
636
  const requiredApp = plan.applicableApps[0];
615
637
  return {
616
638
  available: false,
617
- reason: `Only available in ${requiredApp} app`
639
+ reason: t('premium.plan.scope.exclusive', {
640
+ app: requiredApp
641
+ }) || `Only available in ${requiredApp} app`
618
642
  };
619
643
  }
620
644
  return {
@@ -647,7 +671,7 @@ const PremiumSubscriptionScreen = ({
647
671
  }],
648
672
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
649
673
  style: styles.appSpecificText,
650
- children: isAvailableForCurrentApp ? 'App Exclusive' : 'Not Available'
674
+ children: isAvailableForCurrentApp ? t('premium.plan.badge.appExclusive') || 'App Exclusive' : t('premium.plan.badge.notAvailable') || 'Not Available'
651
675
  })
652
676
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
653
677
  style: styles.planHeader,
@@ -679,11 +703,13 @@ const PremiumSubscriptionScreen = ({
679
703
  color: textColor
680
704
  }],
681
705
  children: pricing.formatted
682
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
706
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
683
707
  style: [styles.planInterval, {
684
708
  color: isDarkTheme ? '#BBBBBB' : '#666666'
685
709
  }],
686
- children: ["per ", pricing.interval]
710
+ children: t('premium.plan.perInterval', {
711
+ interval: pricing.interval
712
+ }) || `per ${pricing.interval}`
687
713
  })]
688
714
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
689
715
  style: styles.planFeatures,
@@ -706,7 +732,7 @@ const PremiumSubscriptionScreen = ({
706
732
  }],
707
733
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
708
734
  style: styles.currentPlanText,
709
- children: "Current Plan"
735
+ children: t('premium.plan.current') || 'Current Plan'
710
736
  })
711
737
  }) : !availability.available ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
712
738
  style: [styles.unavailablePlanButton, {
@@ -716,7 +742,7 @@ const PremiumSubscriptionScreen = ({
716
742
  style: [styles.unavailablePlanText, {
717
743
  color: isDarkTheme ? '#888888' : '#999999'
718
744
  }],
719
- children: "Not Available in Current App"
745
+ children: t('premium.plan.notAvailableInApp') || 'Not Available in Current App'
720
746
  })
721
747
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
722
748
  style: [styles.selectPlanButton, {
@@ -727,11 +753,13 @@ const PremiumSubscriptionScreen = ({
727
753
  children: processingPayment ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
728
754
  color: "#FFFFFF",
729
755
  size: "small"
730
- }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
756
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
731
757
  style: [styles.selectPlanText, {
732
758
  color: plan.isPopular ? '#FFFFFF' : textColor
733
759
  }],
734
- children: ["Subscribe to ", plan.name]
760
+ children: t('premium.actions.subscribeTo', {
761
+ name: plan.name
762
+ }) || `Subscribe to ${plan.name}`
735
763
  })
736
764
  })]
737
765
  }, plan.id);
@@ -752,7 +780,7 @@ const PremiumSubscriptionScreen = ({
752
780
  style: [styles.tabText, {
753
781
  color: activeTab === 'plans' ? primaryColor : textColor
754
782
  }],
755
- children: "Full Plans"
783
+ children: t('premium.tabs.plans') || 'Full Plans'
756
784
  })
757
785
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
758
786
  style: [styles.tab, activeTab === 'features' && {
@@ -764,7 +792,7 @@ const PremiumSubscriptionScreen = ({
764
792
  style: [styles.tabText, {
765
793
  color: activeTab === 'features' ? primaryColor : textColor
766
794
  }],
767
- children: "Individual Features"
795
+ children: t('premium.tabs.features') || 'Individual Features'
768
796
  })
769
797
  })]
770
798
  })
@@ -808,9 +836,11 @@ const PremiumSubscriptionScreen = ({
808
836
  };
809
837
  const getAppScopeText = () => {
810
838
  if (feature.appScope === 'ecosystem') {
811
- return 'Available across all Oxy apps';
839
+ return t('premium.feature.scope.allApps');
812
840
  } else {
813
- return `Available in: ${feature.applicableApps.join(', ')}`;
841
+ return t('premium.feature.scope.availableIn', {
842
+ apps: feature.applicableApps.join(', ')
843
+ }) || `Available in: ${feature.applicableApps.join(', ')}`;
814
844
  }
815
845
  };
816
846
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
@@ -870,11 +900,13 @@ const PremiumSubscriptionScreen = ({
870
900
  color: textColor
871
901
  }],
872
902
  children: pricing.formatted
873
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
903
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
874
904
  style: [styles.featureInterval, {
875
905
  color: isDarkTheme ? '#BBBBBB' : '#666666'
876
906
  }],
877
- children: ["per ", pricing.interval]
907
+ children: t('premium.plan.perInterval', {
908
+ interval: pricing.interval
909
+ }) || `per ${pricing.interval}`
878
910
  })]
879
911
  }), isIncludedInCurrentPlan ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
880
912
  style: [styles.includedInPlanButton, {
@@ -886,7 +918,7 @@ const PremiumSubscriptionScreen = ({
886
918
  color: "#FFFFFF"
887
919
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
888
920
  style: styles.includedInPlanText,
889
- children: "Included in your plan"
921
+ children: t('premium.feature.includedInPlan') || 'Included in your plan'
890
922
  })]
891
923
  }) : isSubscribed ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
892
924
  style: styles.featureActions,
@@ -900,7 +932,7 @@ const PremiumSubscriptionScreen = ({
900
932
  color: "#FFFFFF"
901
933
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
902
934
  style: styles.subscribedText,
903
- children: "Subscribed"
935
+ children: t('premium.feature.subscribed') || 'Subscribed'
904
936
  })]
905
937
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
906
938
  style: [styles.unsubscribeButton, {
@@ -911,7 +943,7 @@ const PremiumSubscriptionScreen = ({
911
943
  style: [styles.unsubscribeText, {
912
944
  color: dangerColor
913
945
  }],
914
- children: "Unsubscribe"
946
+ children: t('premium.actions.unsubscribe') || 'Unsubscribe'
915
947
  })
916
948
  })]
917
949
  }) : canPurchase ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
@@ -925,7 +957,7 @@ const PremiumSubscriptionScreen = ({
925
957
  size: "small"
926
958
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
927
959
  style: styles.subscribeFeatureText,
928
- children: "Subscribe"
960
+ children: t('premium.actions.subscribe') || 'Subscribe'
929
961
  })
930
962
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
931
963
  style: [styles.unavailableButton, {
@@ -1024,7 +1056,7 @@ const PremiumSubscriptionScreen = ({
1024
1056
  style: [styles.loadingText, {
1025
1057
  color: textColor
1026
1058
  }],
1027
- children: "Loading subscription plans..."
1059
+ children: t('premium.loading') || 'Loading subscription plans...'
1028
1060
  })]
1029
1061
  });
1030
1062
  }
@@ -1041,12 +1073,12 @@ const PremiumSubscriptionScreen = ({
1041
1073
  style: [styles.sectionTitle, {
1042
1074
  color: textColor
1043
1075
  }],
1044
- children: "Choose Your Plan"
1076
+ children: t('premium.choosePlan') || 'Choose Your Plan'
1045
1077
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1046
1078
  style: [styles.sectionSubtitle, {
1047
1079
  color: isDarkTheme ? '#BBBBBB' : '#666666'
1048
1080
  }],
1049
- children: "Unlock premium features and take your experience to the next level"
1081
+ children: t('premium.choosePlanSubtitle') || 'Unlock premium features and take your experience to the next level'
1050
1082
  })]
1051
1083
  }), !subscription && renderTabNavigation(), !subscription && activeTab === 'plans' && renderBillingToggle(), activeTab === 'plans' ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1052
1084
  style: styles.section,
@@ -1054,7 +1086,7 @@ const PremiumSubscriptionScreen = ({
1054
1086
  style: [styles.sectionTitle, {
1055
1087
  color: textColor
1056
1088
  }],
1057
- children: "Available Plans"
1089
+ children: t('premium.availablePlans') || 'Available Plans'
1058
1090
  }), plans.map(renderPlanCard)]
1059
1091
  }) : renderIndividualFeatures(), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1060
1092
  style: styles.section,
@@ -1062,7 +1094,7 @@ const PremiumSubscriptionScreen = ({
1062
1094
  style: [styles.sectionTitle, {
1063
1095
  color: textColor
1064
1096
  }],
1065
- children: "Why Go Premium?"
1097
+ children: t('premium.why') || 'Why Go Premium?'
1066
1098
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1067
1099
  style: [styles.benefitsCard, {
1068
1100
  backgroundColor: secondaryBackgroundColor,
@@ -1080,12 +1112,12 @@ const PremiumSubscriptionScreen = ({
1080
1112
  style: [styles.benefitTitle, {
1081
1113
  color: textColor
1082
1114
  }],
1083
- children: "Enhanced Performance"
1115
+ children: t('premium.benefits.performance.title') || 'Enhanced Performance'
1084
1116
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1085
1117
  style: [styles.benefitDescription, {
1086
1118
  color: isDarkTheme ? '#BBBBBB' : '#666666'
1087
1119
  }],
1088
- children: "Faster processing and priority access to our servers"
1120
+ children: t('premium.benefits.performance.desc') || 'Faster processing and priority access to our servers'
1089
1121
  })]
1090
1122
  })]
1091
1123
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
@@ -1100,12 +1132,12 @@ const PremiumSubscriptionScreen = ({
1100
1132
  style: [styles.benefitTitle, {
1101
1133
  color: textColor
1102
1134
  }],
1103
- children: "Advanced Security"
1135
+ children: t('premium.benefits.security.title') || 'Advanced Security'
1104
1136
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1105
1137
  style: [styles.benefitDescription, {
1106
1138
  color: isDarkTheme ? '#BBBBBB' : '#666666'
1107
1139
  }],
1108
- children: "Enhanced encryption and security features"
1140
+ children: t('premium.benefits.security.desc') || 'Enhanced encryption and security features'
1109
1141
  })]
1110
1142
  })]
1111
1143
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
@@ -1120,12 +1152,12 @@ const PremiumSubscriptionScreen = ({
1120
1152
  style: [styles.benefitTitle, {
1121
1153
  color: textColor
1122
1154
  }],
1123
- children: "Priority Support"
1155
+ children: t('premium.benefits.support.title') || 'Priority Support'
1124
1156
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1125
1157
  style: [styles.benefitDescription, {
1126
1158
  color: isDarkTheme ? '#BBBBBB' : '#666666'
1127
1159
  }],
1128
- children: "Get help faster with our premium support team"
1160
+ children: t('premium.benefits.support.desc') || 'Get help faster with our premium support team'
1129
1161
  })]
1130
1162
  })]
1131
1163
  })]