@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.
- package/README.md +48 -7
- package/lib/commonjs/core/OxyServices.js +168 -5
- package/lib/commonjs/core/OxyServices.js.map +1 -1
- package/lib/commonjs/i18n/index.js +40 -0
- package/lib/commonjs/i18n/index.js.map +1 -0
- package/lib/commonjs/i18n/locales/en-US.json +681 -0
- package/lib/commonjs/i18n/locales/es-ES.json +689 -0
- package/lib/commonjs/ui/components/GroupedItem.js +2 -1
- package/lib/commonjs/ui/components/GroupedItem.js.map +1 -1
- package/lib/commonjs/ui/components/Header.js +4 -3
- package/lib/commonjs/ui/components/Header.js.map +1 -1
- package/lib/commonjs/ui/components/OxyProvider.js +110 -103
- package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
- package/lib/commonjs/ui/components/ProfileCard.js +5 -1
- package/lib/commonjs/ui/components/ProfileCard.js.map +1 -1
- package/lib/commonjs/ui/components/Section.js +1 -1
- package/lib/commonjs/ui/components/StepBasedScreen.js +16 -16
- package/lib/commonjs/ui/components/StepBasedScreen.js.map +1 -1
- package/lib/commonjs/ui/components/internal/GroupedPillButtons.js +15 -3
- package/lib/commonjs/ui/components/internal/GroupedPillButtons.js.map +1 -1
- package/lib/commonjs/ui/components/internal/PinInput.js +10 -4
- package/lib/commonjs/ui/components/internal/PinInput.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +128 -12
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/hooks/useI18n.js +22 -0
- package/lib/commonjs/ui/hooks/useI18n.js.map +1 -0
- package/lib/commonjs/ui/navigation/OxyRouter.js +11 -131
- package/lib/commonjs/ui/navigation/OxyRouter.js.map +1 -1
- package/lib/commonjs/ui/navigation/routes.js +127 -0
- package/lib/commonjs/ui/navigation/routes.js.map +1 -0
- package/lib/commonjs/ui/navigation/types.js +7 -0
- package/lib/commonjs/ui/navigation/types.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountCenterScreen.js +55 -47
- package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js +69 -61
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js +378 -37
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +52 -34
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FeedbackScreen.js +40 -36
- package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +105 -78
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +1 -1
- package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +92 -60
- package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/ProfileScreen.js +21 -11
- package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/RecoverAccountScreen.js +30 -8
- package/lib/commonjs/ui/screens/RecoverAccountScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SignInScreen.js +47 -26
- package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +31 -24
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js +11 -7
- package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js.map +1 -1
- package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js +12 -6
- package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js +11 -7
- package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +15 -11
- package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js +19 -27
- package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js +8 -4
- package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js +14 -10
- package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js +7 -3
- package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/steps/RecoverRequestStep.js +19 -14
- package/lib/commonjs/ui/screens/steps/RecoverRequestStep.js.map +1 -1
- package/lib/commonjs/ui/screens/steps/RecoverResetPasswordStep.js +130 -0
- package/lib/commonjs/ui/screens/steps/RecoverResetPasswordStep.js.map +1 -0
- package/lib/commonjs/ui/screens/steps/RecoverSuccessStep.js +13 -13
- package/lib/commonjs/ui/screens/steps/RecoverSuccessStep.js.map +1 -1
- package/lib/commonjs/ui/screens/steps/RecoverVerifyStep.js +14 -20
- package/lib/commonjs/ui/screens/steps/RecoverVerifyStep.js.map +1 -1
- package/lib/commonjs/ui/screens/steps/SignInPasswordStep.js +22 -8
- package/lib/commonjs/ui/screens/steps/SignInPasswordStep.js.map +1 -1
- package/lib/commonjs/ui/screens/steps/SignInTotpStep.js +161 -0
- package/lib/commonjs/ui/screens/steps/SignInTotpStep.js.map +1 -0
- package/lib/commonjs/ui/screens/steps/SignInUsernameStep.js +12 -6
- package/lib/commonjs/ui/screens/steps/SignInUsernameStep.js.map +1 -1
- package/lib/commonjs/ui/screens/steps/SignUpIdentityStep.js +10 -6
- package/lib/commonjs/ui/screens/steps/SignUpIdentityStep.js.map +1 -1
- package/lib/commonjs/ui/screens/steps/SignUpSecurityStep.js +10 -6
- package/lib/commonjs/ui/screens/steps/SignUpSecurityStep.js.map +1 -1
- package/lib/commonjs/ui/screens/steps/SignUpSummaryStep.js +34 -4
- package/lib/commonjs/ui/screens/steps/SignUpSummaryStep.js.map +1 -1
- package/lib/commonjs/ui/screens/steps/SignUpWelcomeStep.js +9 -10
- package/lib/commonjs/ui/screens/steps/SignUpWelcomeStep.js.map +1 -1
- package/lib/commonjs/ui/styles/authStyles.js +1 -2
- package/lib/commonjs/ui/styles/authStyles.js.map +1 -1
- package/lib/commonjs/utils/deviceManager.js +1 -1
- package/lib/commonjs/utils/deviceManager.js.map +1 -1
- package/lib/commonjs/utils/validationUtils.js +4 -2
- package/lib/commonjs/utils/validationUtils.js.map +1 -1
- package/lib/module/core/OxyServices.js +168 -5
- package/lib/module/core/OxyServices.js.map +1 -1
- package/lib/module/i18n/index.js +35 -0
- package/lib/module/i18n/index.js.map +1 -0
- package/lib/module/i18n/locales/en-US.json +681 -0
- package/lib/module/i18n/locales/es-ES.json +689 -0
- package/lib/module/ui/components/GroupedItem.js +2 -1
- package/lib/module/ui/components/GroupedItem.js.map +1 -1
- package/lib/module/ui/components/Header.js +4 -3
- package/lib/module/ui/components/Header.js.map +1 -1
- package/lib/module/ui/components/OxyProvider.js +109 -103
- package/lib/module/ui/components/OxyProvider.js.map +1 -1
- package/lib/module/ui/components/ProfileCard.js +5 -1
- package/lib/module/ui/components/ProfileCard.js.map +1 -1
- package/lib/module/ui/components/Section.js +1 -1
- package/lib/module/ui/components/StepBasedScreen.js +16 -16
- package/lib/module/ui/components/StepBasedScreen.js.map +1 -1
- package/lib/module/ui/components/internal/GroupedPillButtons.js +15 -3
- package/lib/module/ui/components/internal/GroupedPillButtons.js.map +1 -1
- package/lib/module/ui/components/internal/PinInput.js +9 -4
- package/lib/module/ui/components/internal/PinInput.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +128 -12
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/hooks/useI18n.js +18 -0
- package/lib/module/ui/hooks/useI18n.js.map +1 -0
- package/lib/module/ui/navigation/OxyRouter.js +7 -124
- package/lib/module/ui/navigation/OxyRouter.js.map +1 -1
- package/lib/module/ui/navigation/routes.js +122 -0
- package/lib/module/ui/navigation/routes.js.map +1 -0
- package/lib/module/ui/navigation/types.js +19 -1
- package/lib/module/ui/navigation/types.js.map +1 -1
- package/lib/module/ui/screens/AccountCenterScreen.js +55 -47
- package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountOverviewScreen.js +69 -61
- package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSettingsScreen.js +378 -37
- package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSwitcherScreen.js +52 -34
- package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/module/ui/screens/FeedbackScreen.js +40 -36
- package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/module/ui/screens/LanguageSelectorScreen.js +107 -80
- package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/module/ui/screens/PaymentGatewayScreen.js +1 -1
- package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js +92 -60
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
- package/lib/module/ui/screens/ProfileScreen.js +21 -11
- package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/module/ui/screens/RecoverAccountScreen.js +30 -8
- package/lib/module/ui/screens/RecoverAccountScreen.js.map +1 -1
- package/lib/module/ui/screens/SignInScreen.js +47 -26
- package/lib/module/ui/screens/SignInScreen.js.map +1 -1
- package/lib/module/ui/screens/WelcomeNewUserScreen.js +31 -24
- package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/module/ui/screens/internal/SignInPasswordStep.js +11 -7
- package/lib/module/ui/screens/internal/SignInPasswordStep.js.map +1 -1
- package/lib/module/ui/screens/internal/SignInUsernameStep.js +12 -6
- package/lib/module/ui/screens/internal/SignInUsernameStep.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaAboutScreen.js +11 -7
- package/lib/module/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaCenterScreen.js +15 -11
- package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaFAQScreen.js +19 -27
- package/lib/module/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js +8 -4
- package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaRewardsScreen.js +14 -10
- package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaRulesScreen.js +7 -3
- package/lib/module/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
- package/lib/module/ui/screens/steps/RecoverRequestStep.js +19 -14
- package/lib/module/ui/screens/steps/RecoverRequestStep.js.map +1 -1
- package/lib/module/ui/screens/steps/RecoverResetPasswordStep.js +125 -0
- package/lib/module/ui/screens/steps/RecoverResetPasswordStep.js.map +1 -0
- package/lib/module/ui/screens/steps/RecoverSuccessStep.js +13 -13
- package/lib/module/ui/screens/steps/RecoverSuccessStep.js.map +1 -1
- package/lib/module/ui/screens/steps/RecoverVerifyStep.js +14 -20
- package/lib/module/ui/screens/steps/RecoverVerifyStep.js.map +1 -1
- package/lib/module/ui/screens/steps/SignInPasswordStep.js +22 -8
- package/lib/module/ui/screens/steps/SignInPasswordStep.js.map +1 -1
- package/lib/module/ui/screens/steps/SignInTotpStep.js +156 -0
- package/lib/module/ui/screens/steps/SignInTotpStep.js.map +1 -0
- package/lib/module/ui/screens/steps/SignInUsernameStep.js +12 -6
- package/lib/module/ui/screens/steps/SignInUsernameStep.js.map +1 -1
- package/lib/module/ui/screens/steps/SignUpIdentityStep.js +10 -6
- package/lib/module/ui/screens/steps/SignUpIdentityStep.js.map +1 -1
- package/lib/module/ui/screens/steps/SignUpSecurityStep.js +10 -6
- package/lib/module/ui/screens/steps/SignUpSecurityStep.js.map +1 -1
- package/lib/module/ui/screens/steps/SignUpSummaryStep.js +34 -4
- package/lib/module/ui/screens/steps/SignUpSummaryStep.js.map +1 -1
- package/lib/module/ui/screens/steps/SignUpWelcomeStep.js +9 -10
- package/lib/module/ui/screens/steps/SignUpWelcomeStep.js.map +1 -1
- package/lib/module/ui/styles/authStyles.js +1 -2
- package/lib/module/ui/styles/authStyles.js.map +1 -1
- package/lib/module/utils/deviceManager.js +1 -1
- package/lib/module/utils/deviceManager.js.map +1 -1
- package/lib/module/utils/validationUtils.js +4 -2
- package/lib/module/utils/validationUtils.js.map +1 -1
- package/lib/typescript/core/OxyServices.d.ts +58 -3
- package/lib/typescript/core/OxyServices.d.ts.map +1 -1
- package/lib/typescript/i18n/index.d.ts +4 -0
- package/lib/typescript/i18n/index.d.ts.map +1 -0
- package/lib/typescript/models/interfaces.d.ts +4 -0
- package/lib/typescript/models/interfaces.d.ts.map +1 -1
- package/lib/typescript/ui/components/GroupedItem.d.ts.map +1 -1
- package/lib/typescript/ui/components/Header.d.ts.map +1 -1
- package/lib/typescript/ui/components/OxyProvider.d.ts +1 -1
- package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/ui/components/ProfileCard.d.ts.map +1 -1
- package/lib/typescript/ui/components/StepBasedScreen.d.ts +2 -1
- package/lib/typescript/ui/components/StepBasedScreen.d.ts.map +1 -1
- package/lib/typescript/ui/components/internal/GroupedPillButtons.d.ts.map +1 -1
- package/lib/typescript/ui/components/internal/PinInput.d.ts +6 -3
- package/lib/typescript/ui/components/internal/PinInput.d.ts.map +1 -1
- package/lib/typescript/ui/context/OxyContext.d.ts +7 -4
- package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/ui/hooks/useI18n.d.ts +5 -0
- package/lib/typescript/ui/hooks/useI18n.d.ts.map +1 -0
- package/lib/typescript/ui/navigation/OxyRouter.d.ts.map +1 -1
- package/lib/typescript/ui/navigation/routes.d.ts +9 -0
- package/lib/typescript/ui/navigation/routes.d.ts.map +1 -0
- package/lib/typescript/ui/navigation/types.d.ts +24 -10
- package/lib/typescript/ui/navigation/types.d.ts.map +1 -1
- package/lib/typescript/ui/screens/AccountCenterScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/FeedbackScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/ProfileScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/RecoverAccountScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/SignInScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts +2 -1
- package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts.map +1 -1
- package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts.map +1 -1
- package/lib/typescript/ui/screens/karma/KarmaAboutScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/karma/KarmaCenterScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/karma/KarmaFAQScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/karma/KarmaLeaderboardScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/karma/KarmaRewardsScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/karma/KarmaRulesScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/steps/RecoverRequestStep.d.ts +4 -1
- package/lib/typescript/ui/screens/steps/RecoverRequestStep.d.ts.map +1 -1
- package/lib/typescript/ui/screens/steps/RecoverResetPasswordStep.d.ts +24 -0
- package/lib/typescript/ui/screens/steps/RecoverResetPasswordStep.d.ts.map +1 -0
- package/lib/typescript/ui/screens/steps/RecoverSuccessStep.d.ts +2 -1
- package/lib/typescript/ui/screens/steps/RecoverSuccessStep.d.ts.map +1 -1
- package/lib/typescript/ui/screens/steps/RecoverVerifyStep.d.ts +3 -1
- package/lib/typescript/ui/screens/steps/RecoverVerifyStep.d.ts.map +1 -1
- package/lib/typescript/ui/screens/steps/SignInPasswordStep.d.ts +1 -0
- package/lib/typescript/ui/screens/steps/SignInPasswordStep.d.ts.map +1 -1
- package/lib/typescript/ui/screens/steps/SignInTotpStep.d.ts +19 -0
- package/lib/typescript/ui/screens/steps/SignInTotpStep.d.ts.map +1 -0
- package/lib/typescript/ui/screens/steps/SignInUsernameStep.d.ts +2 -1
- package/lib/typescript/ui/screens/steps/SignInUsernameStep.d.ts.map +1 -1
- package/lib/typescript/ui/screens/steps/SignUpIdentityStep.d.ts +2 -1
- package/lib/typescript/ui/screens/steps/SignUpIdentityStep.d.ts.map +1 -1
- package/lib/typescript/ui/screens/steps/SignUpSecurityStep.d.ts +2 -1
- package/lib/typescript/ui/screens/steps/SignUpSecurityStep.d.ts.map +1 -1
- package/lib/typescript/ui/screens/steps/SignUpSummaryStep.d.ts +2 -1
- package/lib/typescript/ui/screens/steps/SignUpSummaryStep.d.ts.map +1 -1
- package/lib/typescript/ui/screens/steps/SignUpWelcomeStep.d.ts +2 -1
- package/lib/typescript/ui/screens/steps/SignUpWelcomeStep.d.ts.map +1 -1
- package/lib/typescript/ui/styles/authStyles.d.ts +0 -1
- package/lib/typescript/ui/styles/authStyles.d.ts.map +1 -1
- package/lib/typescript/utils/validationUtils.d.ts.map +1 -1
- package/package.json +48 -14
- package/src/core/OxyServices.ts +143 -9
- package/src/i18n/index.ts +39 -0
- package/src/i18n/locales/en-US.json +681 -0
- package/src/i18n/locales/es-ES.json +689 -0
- package/src/models/interfaces.ts +6 -1
- package/src/ui/components/GroupedItem.tsx +2 -1
- package/src/ui/components/Header.tsx +4 -3
- package/src/ui/components/OxyProvider.tsx +105 -112
- package/src/ui/components/ProfileCard.tsx +5 -1
- package/src/ui/components/Section.tsx +1 -1
- package/src/ui/components/StepBasedScreen.tsx +16 -13
- package/src/ui/components/internal/GroupedPillButtons.tsx +10 -6
- package/src/ui/components/internal/PinInput.tsx +15 -6
- package/src/ui/context/OxyContext.tsx +123 -20
- package/src/ui/hooks/useI18n.ts +12 -0
- package/src/ui/navigation/OxyRouter.tsx +15 -134
- package/src/ui/navigation/routes.ts +153 -0
- package/src/ui/navigation/types.ts +28 -10
- package/src/ui/screens/AccountCenterScreen.tsx +47 -45
- package/src/ui/screens/AccountOverviewScreen.tsx +68 -70
- package/src/ui/screens/AccountSettingsScreen.tsx +265 -41
- package/src/ui/screens/AccountSwitcherScreen.tsx +35 -33
- package/src/ui/screens/FeedbackScreen.tsx +39 -37
- package/src/ui/screens/LanguageSelectorScreen.tsx +99 -70
- package/src/ui/screens/PaymentGatewayScreen.tsx +5 -5
- package/src/ui/screens/PremiumSubscriptionScreen.tsx +56 -54
- package/src/ui/screens/ProfileScreen.tsx +14 -8
- package/src/ui/screens/RecoverAccountScreen.tsx +29 -8
- package/src/ui/screens/SignInScreen.tsx +39 -30
- package/src/ui/screens/WelcomeNewUserScreen.tsx +31 -17
- package/src/ui/screens/internal/SignInPasswordStep.tsx +11 -8
- package/src/ui/screens/internal/SignInUsernameStep.tsx +10 -8
- package/src/ui/screens/karma/KarmaAboutScreen.tsx +23 -11
- package/src/ui/screens/karma/KarmaCenterScreen.tsx +21 -11
- package/src/ui/screens/karma/KarmaFAQScreen.tsx +15 -33
- package/src/ui/screens/karma/KarmaLeaderboardScreen.tsx +6 -4
- package/src/ui/screens/karma/KarmaRewardsScreen.tsx +28 -10
- package/src/ui/screens/karma/KarmaRulesScreen.tsx +5 -3
- package/src/ui/screens/steps/RecoverRequestStep.tsx +20 -17
- package/src/ui/screens/steps/RecoverResetPasswordStep.tsx +133 -0
- package/src/ui/screens/steps/RecoverSuccessStep.tsx +12 -19
- package/src/ui/screens/steps/RecoverVerifyStep.tsx +15 -24
- package/src/ui/screens/steps/SignInPasswordStep.tsx +19 -6
- package/src/ui/screens/steps/SignInTotpStep.tsx +129 -0
- package/src/ui/screens/steps/SignInUsernameStep.tsx +11 -10
- package/src/ui/screens/steps/SignUpIdentityStep.tsx +10 -11
- package/src/ui/screens/steps/SignUpSecurityStep.tsx +10 -11
- package/src/ui/screens/steps/SignUpSummaryStep.tsx +24 -9
- package/src/ui/screens/steps/SignUpWelcomeStep.tsx +8 -14
- package/src/ui/styles/authStyles.ts +0 -1
- package/src/utils/deviceManager.ts +1 -1
- 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(
|
|
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(
|
|
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)(
|
|
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(
|
|
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:
|
|
453
|
-
}), /*#__PURE__*/(0, _jsxRuntime.
|
|
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:
|
|
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:
|
|
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.
|
|
524
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
511
525
|
style: [styles.subscriptionDetail, {
|
|
512
526
|
color: isDarkTheme ? '#BBBBBB' : '#666666'
|
|
513
527
|
}],
|
|
514
|
-
children:
|
|
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.
|
|
537
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
522
538
|
style: [styles.cancelText, {
|
|
523
539
|
color: warningColor
|
|
524
540
|
}],
|
|
525
|
-
children:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
625
|
+
return t('premium.plan.scope.exclusive', {
|
|
626
|
+
app: appName
|
|
627
|
+
}) || `Exclusive to ${appName} app`;
|
|
608
628
|
} else {
|
|
609
|
-
return
|
|
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:
|
|
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.
|
|
706
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
683
707
|
style: [styles.planInterval, {
|
|
684
708
|
color: isDarkTheme ? '#BBBBBB' : '#666666'
|
|
685
709
|
}],
|
|
686
|
-
children:
|
|
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:
|
|
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:
|
|
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.
|
|
756
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
731
757
|
style: [styles.selectPlanText, {
|
|
732
758
|
color: plan.isPopular ? '#FFFFFF' : textColor
|
|
733
759
|
}],
|
|
734
|
-
children:
|
|
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:
|
|
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:
|
|
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 '
|
|
839
|
+
return t('premium.feature.scope.allApps');
|
|
812
840
|
} else {
|
|
813
|
-
return
|
|
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.
|
|
903
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
874
904
|
style: [styles.featureInterval, {
|
|
875
905
|
color: isDarkTheme ? '#BBBBBB' : '#666666'
|
|
876
906
|
}],
|
|
877
|
-
children:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
1160
|
+
children: t('premium.benefits.support.desc') || 'Get help faster with our premium support team'
|
|
1129
1161
|
})]
|
|
1130
1162
|
})]
|
|
1131
1163
|
})]
|