@oxyhq/services 5.17.17 → 5.18.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 (618) hide show
  1. package/README.md +32 -38
  2. package/lib/commonjs/core/CrossDomainAuth.js +277 -0
  3. package/lib/commonjs/core/CrossDomainAuth.js.map +1 -0
  4. package/lib/commonjs/core/HttpService.js +82 -15
  5. package/lib/commonjs/core/HttpService.js.map +1 -1
  6. package/lib/commonjs/core/OxyServices.base.js +11 -3
  7. package/lib/commonjs/core/OxyServices.base.js.map +1 -1
  8. package/lib/commonjs/core/OxyServices.js +4 -1
  9. package/lib/commonjs/core/OxyServices.js.map +1 -1
  10. package/lib/commonjs/core/index.js +30 -0
  11. package/lib/commonjs/core/index.js.map +1 -1
  12. package/lib/commonjs/core/mixins/OxyServices.assets.js +16 -3
  13. package/lib/commonjs/core/mixins/OxyServices.assets.js.map +1 -1
  14. package/lib/commonjs/core/mixins/OxyServices.auth.js +73 -32
  15. package/lib/commonjs/core/mixins/OxyServices.auth.js.map +1 -1
  16. package/lib/commonjs/core/mixins/OxyServices.features.js +372 -0
  17. package/lib/commonjs/core/mixins/OxyServices.features.js.map +1 -0
  18. package/lib/commonjs/core/mixins/OxyServices.fedcm.js +289 -0
  19. package/lib/commonjs/core/mixins/OxyServices.fedcm.js.map +1 -0
  20. package/lib/commonjs/core/mixins/OxyServices.popup.js +352 -0
  21. package/lib/commonjs/core/mixins/OxyServices.popup.js.map +1 -0
  22. package/lib/commonjs/core/mixins/OxyServices.redirect.js +378 -0
  23. package/lib/commonjs/core/mixins/OxyServices.redirect.js.map +1 -0
  24. package/lib/commonjs/core/mixins/OxyServices.user.js +35 -24
  25. package/lib/commonjs/core/mixins/OxyServices.user.js.map +1 -1
  26. package/lib/commonjs/core/mixins/index.js +28 -15
  27. package/lib/commonjs/core/mixins/index.js.map +1 -1
  28. package/lib/commonjs/crypto/index.js +30 -0
  29. package/lib/commonjs/crypto/index.js.map +1 -1
  30. package/lib/commonjs/crypto/keyManager.js +902 -0
  31. package/lib/commonjs/crypto/keyManager.js.map +1 -0
  32. package/lib/commonjs/crypto/polyfill.js +14 -5
  33. package/lib/commonjs/crypto/polyfill.js.map +1 -1
  34. package/lib/commonjs/crypto/recoveryPhrase.js +152 -0
  35. package/lib/commonjs/crypto/recoveryPhrase.js.map +1 -0
  36. package/lib/commonjs/crypto/signatureService.js +289 -0
  37. package/lib/commonjs/crypto/signatureService.js.map +1 -0
  38. package/lib/commonjs/i18n/locales/en-US.json +1 -1
  39. package/lib/commonjs/index.js +40 -26
  40. package/lib/commonjs/index.js.map +1 -1
  41. package/lib/commonjs/models/interfaces.js +0 -15
  42. package/lib/commonjs/models/interfaces.js.map +1 -1
  43. package/lib/commonjs/ui/components/BottomSheetRouter.js +9 -1
  44. package/lib/commonjs/ui/components/BottomSheetRouter.js.map +1 -1
  45. package/lib/commonjs/ui/components/GroupedItem.js +11 -1
  46. package/lib/commonjs/ui/components/GroupedItem.js.map +1 -1
  47. package/lib/commonjs/ui/components/Icon.js.map +1 -1
  48. package/lib/commonjs/ui/components/IconButton/utils.js.map +1 -1
  49. package/lib/commonjs/ui/components/OxyProvider.js +41 -11
  50. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  51. package/lib/commonjs/ui/components/SettingRow.js +17 -4
  52. package/lib/commonjs/ui/components/SettingRow.js.map +1 -1
  53. package/lib/commonjs/ui/components/TextField/Adornment/utils.js.map +1 -1
  54. package/lib/commonjs/ui/components/TextField/helpers.js.map +1 -1
  55. package/lib/commonjs/ui/components/TouchableRipple/utils.js.map +1 -1
  56. package/lib/commonjs/ui/components/Typography/AnimatedText.js.map +1 -1
  57. package/lib/commonjs/ui/components/feedback/FormInput.js +72 -0
  58. package/lib/commonjs/ui/components/feedback/FormInput.js.map +1 -0
  59. package/lib/commonjs/ui/components/feedback/ProgressIndicator.js +33 -0
  60. package/lib/commonjs/ui/components/feedback/ProgressIndicator.js.map +1 -0
  61. package/lib/commonjs/ui/components/feedback/constants.js +59 -0
  62. package/lib/commonjs/ui/components/feedback/constants.js.map +1 -0
  63. package/lib/commonjs/ui/components/feedback/feedbackStyles.js +262 -0
  64. package/lib/commonjs/ui/components/feedback/feedbackStyles.js.map +1 -0
  65. package/lib/commonjs/ui/components/feedback/index.js +54 -0
  66. package/lib/commonjs/ui/components/feedback/index.js.map +1 -0
  67. package/lib/commonjs/ui/components/feedback/types.js +6 -0
  68. package/lib/commonjs/ui/components/feedback/types.js.map +1 -0
  69. package/lib/commonjs/ui/components/feedback/useFeedbackForm.js +52 -0
  70. package/lib/commonjs/ui/components/feedback/useFeedbackForm.js.map +1 -0
  71. package/lib/commonjs/ui/components/modals/DeleteAccountModal.js +282 -0
  72. package/lib/commonjs/ui/components/modals/DeleteAccountModal.js.map +1 -0
  73. package/lib/commonjs/ui/components/modals/index.js +14 -0
  74. package/lib/commonjs/ui/components/modals/index.js.map +1 -0
  75. package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js +309 -0
  76. package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js.map +1 -0
  77. package/lib/commonjs/ui/components/payment/PaymentMethodStep.js +79 -0
  78. package/lib/commonjs/ui/components/payment/PaymentMethodStep.js.map +1 -0
  79. package/lib/commonjs/ui/components/payment/PaymentReviewStep.js +108 -0
  80. package/lib/commonjs/ui/components/payment/PaymentReviewStep.js.map +1 -0
  81. package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js +79 -0
  82. package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js.map +1 -0
  83. package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js +176 -0
  84. package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js.map +1 -0
  85. package/lib/commonjs/ui/components/payment/constants.js +53 -0
  86. package/lib/commonjs/ui/components/payment/constants.js.map +1 -0
  87. package/lib/commonjs/ui/components/payment/index.js +80 -0
  88. package/lib/commonjs/ui/components/payment/index.js.map +1 -0
  89. package/lib/commonjs/ui/components/payment/paymentStyles.js +409 -0
  90. package/lib/commonjs/ui/components/payment/paymentStyles.js.map +1 -0
  91. package/lib/commonjs/ui/components/payment/types.js +6 -0
  92. package/lib/commonjs/ui/components/payment/types.js.map +1 -0
  93. package/lib/commonjs/ui/context/OxyContext.js +110 -199
  94. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  95. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +150 -19
  96. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  97. package/lib/commonjs/ui/context/hooks/useSessionManagement.js +279 -0
  98. package/lib/commonjs/ui/context/hooks/useSessionManagement.js.map +1 -0
  99. package/lib/commonjs/ui/hooks/index.js +26 -0
  100. package/lib/commonjs/ui/hooks/index.js.map +1 -1
  101. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +79 -72
  102. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  103. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js +38 -51
  104. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +1 -1
  105. package/lib/commonjs/ui/hooks/queries/useSecurityQueries.js +3 -3
  106. package/lib/commonjs/ui/hooks/queries/useSecurityQueries.js.map +1 -1
  107. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js +18 -12
  108. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js.map +1 -1
  109. package/lib/commonjs/ui/hooks/useAsyncAction.js +95 -0
  110. package/lib/commonjs/ui/hooks/useAsyncAction.js.map +1 -0
  111. package/lib/commonjs/ui/hooks/useProfileEditing.js +3 -5
  112. package/lib/commonjs/ui/hooks/useProfileEditing.js.map +1 -1
  113. package/lib/commonjs/ui/hooks/useSessionManagement.js +4 -8
  114. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
  115. package/lib/commonjs/ui/hooks/useSessionSocket.js +162 -315
  116. package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -1
  117. package/lib/commonjs/ui/hooks/useSettingToggle.js +126 -0
  118. package/lib/commonjs/ui/hooks/useSettingToggle.js.map +1 -0
  119. package/lib/commonjs/ui/hooks/useStorage.js +24 -58
  120. package/lib/commonjs/ui/hooks/useStorage.js.map +1 -1
  121. package/lib/commonjs/ui/index.js +50 -21
  122. package/lib/commonjs/ui/index.js.map +1 -1
  123. package/lib/commonjs/ui/navigation/routes.js +6 -1
  124. package/lib/commonjs/ui/navigation/routes.js.map +1 -1
  125. package/lib/commonjs/ui/screens/AccountCenterScreen.js +6 -4
  126. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  127. package/lib/commonjs/ui/screens/AccountOverviewScreen.js +33 -30
  128. package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
  129. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +29 -24
  130. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  131. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +3 -3
  132. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  133. package/lib/commonjs/ui/screens/FAQScreen.js +315 -0
  134. package/lib/commonjs/ui/screens/FAQScreen.js.map +1 -0
  135. package/lib/commonjs/ui/screens/FeedbackScreen.js +73 -590
  136. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  137. package/lib/commonjs/ui/screens/HelpSupportScreen.js +8 -7
  138. package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
  139. package/lib/commonjs/ui/screens/OxyAuthScreen.js +134 -66
  140. package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
  141. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +67 -1395
  142. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
  143. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +6 -13
  144. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  145. package/lib/commonjs/ui/screens/ProfileScreen.js +13 -5
  146. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  147. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +16 -10
  148. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +1 -1
  149. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +23 -11
  150. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  151. package/lib/commonjs/ui/stores/accountStore.js +2 -4
  152. package/lib/commonjs/ui/stores/accountStore.js.map +1 -1
  153. package/lib/commonjs/ui/stores/authStore.js +45 -32
  154. package/lib/commonjs/ui/stores/authStore.js.map +1 -1
  155. package/lib/commonjs/ui/styles/spacing.js +54 -2
  156. package/lib/commonjs/ui/styles/spacing.js.map +1 -1
  157. package/lib/commonjs/ui/utils/avatarUtils.js +37 -41
  158. package/lib/commonjs/ui/utils/avatarUtils.js.map +1 -1
  159. package/lib/commonjs/ui/utils/storageHelpers.js.map +1 -1
  160. package/lib/commonjs/utils/errorUtils.js +13 -0
  161. package/lib/commonjs/utils/errorUtils.js.map +1 -1
  162. package/lib/commonjs/utils/validationUtils.js +15 -1
  163. package/lib/commonjs/utils/validationUtils.js.map +1 -1
  164. package/lib/module/core/CrossDomainAuth.js +271 -0
  165. package/lib/module/core/CrossDomainAuth.js.map +1 -0
  166. package/lib/module/core/HttpService.js +82 -15
  167. package/lib/module/core/HttpService.js.map +1 -1
  168. package/lib/module/core/OxyServices.base.js +11 -4
  169. package/lib/module/core/OxyServices.base.js.map +1 -1
  170. package/lib/module/core/OxyServices.js +4 -1
  171. package/lib/module/core/OxyServices.js.map +1 -1
  172. package/lib/module/core/index.js +6 -1
  173. package/lib/module/core/index.js.map +1 -1
  174. package/lib/module/core/mixins/OxyServices.assets.js +16 -3
  175. package/lib/module/core/mixins/OxyServices.assets.js.map +1 -1
  176. package/lib/module/core/mixins/OxyServices.auth.js +73 -32
  177. package/lib/module/core/mixins/OxyServices.auth.js.map +1 -1
  178. package/lib/module/core/mixins/OxyServices.features.js +369 -0
  179. package/lib/module/core/mixins/OxyServices.features.js.map +1 -0
  180. package/lib/module/core/mixins/OxyServices.fedcm.js +286 -0
  181. package/lib/module/core/mixins/OxyServices.fedcm.js.map +1 -0
  182. package/lib/module/core/mixins/OxyServices.popup.js +349 -0
  183. package/lib/module/core/mixins/OxyServices.popup.js.map +1 -0
  184. package/lib/module/core/mixins/OxyServices.redirect.js +375 -0
  185. package/lib/module/core/mixins/OxyServices.redirect.js.map +1 -0
  186. package/lib/module/core/mixins/OxyServices.user.js +35 -24
  187. package/lib/module/core/mixins/OxyServices.user.js.map +1 -1
  188. package/lib/module/core/mixins/index.js +16 -3
  189. package/lib/module/core/mixins/index.js.map +1 -1
  190. package/lib/module/crypto/index.js +8 -4
  191. package/lib/module/crypto/index.js.map +1 -1
  192. package/lib/module/crypto/keyManager.js +899 -0
  193. package/lib/module/crypto/keyManager.js.map +1 -0
  194. package/lib/module/crypto/polyfill.js +6 -5
  195. package/lib/module/crypto/polyfill.js.map +1 -1
  196. package/lib/module/crypto/recoveryPhrase.js +147 -0
  197. package/lib/module/crypto/recoveryPhrase.js.map +1 -0
  198. package/lib/module/crypto/signatureService.js +286 -0
  199. package/lib/module/crypto/signatureService.js.map +1 -0
  200. package/lib/module/i18n/locales/en-US.json +1 -1
  201. package/lib/module/index.js +6 -9
  202. package/lib/module/index.js.map +1 -1
  203. package/lib/module/models/interfaces.js +0 -15
  204. package/lib/module/models/interfaces.js.map +1 -1
  205. package/lib/module/ui/components/BottomSheetRouter.js +6 -2
  206. package/lib/module/ui/components/BottomSheetRouter.js.map +1 -1
  207. package/lib/module/ui/components/GroupedItem.js +11 -1
  208. package/lib/module/ui/components/GroupedItem.js.map +1 -1
  209. package/lib/module/ui/components/Icon.js.map +1 -1
  210. package/lib/module/ui/components/IconButton/utils.js.map +1 -1
  211. package/lib/module/ui/components/OxyProvider.js +41 -11
  212. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  213. package/lib/module/ui/components/SettingRow.js +17 -4
  214. package/lib/module/ui/components/SettingRow.js.map +1 -1
  215. package/lib/module/ui/components/TextField/Adornment/utils.js.map +1 -1
  216. package/lib/module/ui/components/TextField/helpers.js.map +1 -1
  217. package/lib/module/ui/components/TouchableRipple/utils.js.map +1 -1
  218. package/lib/module/ui/components/Typography/AnimatedText.js.map +1 -1
  219. package/lib/module/ui/components/feedback/FormInput.js +67 -0
  220. package/lib/module/ui/components/feedback/FormInput.js.map +1 -0
  221. package/lib/module/ui/components/feedback/ProgressIndicator.js +28 -0
  222. package/lib/module/ui/components/feedback/ProgressIndicator.js.map +1 -0
  223. package/lib/module/ui/components/feedback/constants.js +55 -0
  224. package/lib/module/ui/components/feedback/constants.js.map +1 -0
  225. package/lib/module/ui/components/feedback/feedbackStyles.js +257 -0
  226. package/lib/module/ui/components/feedback/feedbackStyles.js.map +1 -0
  227. package/lib/module/ui/components/feedback/index.js +8 -0
  228. package/lib/module/ui/components/feedback/index.js.map +1 -0
  229. package/lib/module/ui/components/feedback/types.js +4 -0
  230. package/lib/module/ui/components/feedback/types.js.map +1 -0
  231. package/lib/module/ui/components/feedback/useFeedbackForm.js +47 -0
  232. package/lib/module/ui/components/feedback/useFeedbackForm.js.map +1 -0
  233. package/lib/module/ui/components/modals/DeleteAccountModal.js +276 -0
  234. package/lib/module/ui/components/modals/DeleteAccountModal.js.map +1 -0
  235. package/lib/module/ui/components/modals/index.js +4 -0
  236. package/lib/module/ui/components/modals/index.js.map +1 -0
  237. package/lib/module/ui/components/payment/PaymentDetailsStep.js +303 -0
  238. package/lib/module/ui/components/payment/PaymentDetailsStep.js.map +1 -0
  239. package/lib/module/ui/components/payment/PaymentMethodStep.js +73 -0
  240. package/lib/module/ui/components/payment/PaymentMethodStep.js.map +1 -0
  241. package/lib/module/ui/components/payment/PaymentReviewStep.js +102 -0
  242. package/lib/module/ui/components/payment/PaymentReviewStep.js.map +1 -0
  243. package/lib/module/ui/components/payment/PaymentSuccessStep.js +73 -0
  244. package/lib/module/ui/components/payment/PaymentSuccessStep.js.map +1 -0
  245. package/lib/module/ui/components/payment/PaymentSummaryStep.js +170 -0
  246. package/lib/module/ui/components/payment/PaymentSummaryStep.js.map +1 -0
  247. package/lib/module/ui/components/payment/constants.js +47 -0
  248. package/lib/module/ui/components/payment/constants.js.map +1 -0
  249. package/lib/module/ui/components/payment/index.js +10 -0
  250. package/lib/module/ui/components/payment/index.js.map +1 -0
  251. package/lib/module/ui/components/payment/paymentStyles.js +404 -0
  252. package/lib/module/ui/components/payment/paymentStyles.js.map +1 -0
  253. package/lib/module/ui/components/payment/types.js +4 -0
  254. package/lib/module/ui/components/payment/types.js.map +1 -0
  255. package/lib/module/ui/context/OxyContext.js +112 -191
  256. package/lib/module/ui/context/OxyContext.js.map +1 -1
  257. package/lib/module/ui/context/hooks/useAuthOperations.js +150 -19
  258. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  259. package/lib/module/ui/context/hooks/useSessionManagement.js +274 -0
  260. package/lib/module/ui/context/hooks/useSessionManagement.js.map +1 -0
  261. package/lib/module/ui/hooks/index.js +2 -0
  262. package/lib/module/ui/hooks/index.js.map +1 -1
  263. package/lib/module/ui/hooks/mutations/useAccountMutations.js +80 -72
  264. package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  265. package/lib/module/ui/hooks/queries/useAccountQueries.js +31 -44
  266. package/lib/module/ui/hooks/queries/useAccountQueries.js.map +1 -1
  267. package/lib/module/ui/hooks/queries/useSecurityQueries.js +1 -1
  268. package/lib/module/ui/hooks/queries/useSecurityQueries.js.map +1 -1
  269. package/lib/module/ui/hooks/queries/useServicesQueries.js +13 -7
  270. package/lib/module/ui/hooks/queries/useServicesQueries.js.map +1 -1
  271. package/lib/module/ui/hooks/useAsyncAction.js +89 -0
  272. package/lib/module/ui/hooks/useAsyncAction.js.map +1 -0
  273. package/lib/module/ui/hooks/useProfileEditing.js +3 -5
  274. package/lib/module/ui/hooks/useProfileEditing.js.map +1 -1
  275. package/lib/module/ui/hooks/useSessionManagement.js +4 -8
  276. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
  277. package/lib/module/ui/hooks/useSessionSocket.js +162 -315
  278. package/lib/module/ui/hooks/useSessionSocket.js.map +1 -1
  279. package/lib/module/ui/hooks/useSettingToggle.js +120 -0
  280. package/lib/module/ui/hooks/useSettingToggle.js.map +1 -0
  281. package/lib/module/ui/hooks/useStorage.js +25 -59
  282. package/lib/module/ui/hooks/useStorage.js.map +1 -1
  283. package/lib/module/ui/index.js +15 -10
  284. package/lib/module/ui/index.js.map +1 -1
  285. package/lib/module/ui/navigation/routes.js +6 -1
  286. package/lib/module/ui/navigation/routes.js.map +1 -1
  287. package/lib/module/ui/screens/AccountCenterScreen.js +6 -4
  288. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  289. package/lib/module/ui/screens/AccountOverviewScreen.js +33 -30
  290. package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
  291. package/lib/module/ui/screens/AccountSettingsScreen.js +29 -24
  292. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  293. package/lib/module/ui/screens/AccountSwitcherScreen.js +3 -3
  294. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  295. package/lib/module/ui/screens/FAQScreen.js +310 -0
  296. package/lib/module/ui/screens/FAQScreen.js.map +1 -0
  297. package/lib/module/ui/screens/FeedbackScreen.js +64 -581
  298. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  299. package/lib/module/ui/screens/HelpSupportScreen.js +8 -7
  300. package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
  301. package/lib/module/ui/screens/OxyAuthScreen.js +135 -68
  302. package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
  303. package/lib/module/ui/screens/PaymentGatewayScreen.js +67 -1397
  304. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
  305. package/lib/module/ui/screens/PrivacySettingsScreen.js +6 -13
  306. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  307. package/lib/module/ui/screens/ProfileScreen.js +13 -5
  308. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  309. package/lib/module/ui/screens/SavesCollectionsScreen.js +16 -10
  310. package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
  311. package/lib/module/ui/screens/karma/KarmaCenterScreen.js +23 -11
  312. package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  313. package/lib/module/ui/stores/accountStore.js +2 -4
  314. package/lib/module/ui/stores/accountStore.js.map +1 -1
  315. package/lib/module/ui/stores/authStore.js +45 -32
  316. package/lib/module/ui/stores/authStore.js.map +1 -1
  317. package/lib/module/ui/styles/spacing.js +6 -2
  318. package/lib/module/ui/styles/spacing.js.map +1 -1
  319. package/lib/module/ui/utils/avatarUtils.js +37 -40
  320. package/lib/module/ui/utils/avatarUtils.js.map +1 -1
  321. package/lib/module/ui/utils/storageHelpers.js.map +1 -1
  322. package/lib/module/utils/errorUtils.js +7 -0
  323. package/lib/module/utils/errorUtils.js.map +1 -1
  324. package/lib/module/utils/validationUtils.js +13 -0
  325. package/lib/module/utils/validationUtils.js.map +1 -1
  326. package/lib/typescript/core/CrossDomainAuth.d.ts +161 -0
  327. package/lib/typescript/core/CrossDomainAuth.d.ts.map +1 -0
  328. package/lib/typescript/core/HttpService.d.ts +1 -1
  329. package/lib/typescript/core/HttpService.d.ts.map +1 -1
  330. package/lib/typescript/core/OxyServices.base.d.ts +0 -6
  331. package/lib/typescript/core/OxyServices.base.d.ts.map +1 -1
  332. package/lib/typescript/core/OxyServices.d.ts +5 -36
  333. package/lib/typescript/core/OxyServices.d.ts.map +1 -1
  334. package/lib/typescript/core/index.d.ts +4 -0
  335. package/lib/typescript/core/index.d.ts.map +1 -1
  336. package/lib/typescript/core/mixins/OxyServices.analytics.d.ts.map +1 -1
  337. package/lib/typescript/core/mixins/OxyServices.assets.d.ts.map +1 -1
  338. package/lib/typescript/core/mixins/OxyServices.auth.d.ts +40 -20
  339. package/lib/typescript/core/mixins/OxyServices.auth.d.ts.map +1 -1
  340. package/lib/typescript/core/mixins/OxyServices.developer.d.ts.map +1 -1
  341. package/lib/typescript/core/mixins/OxyServices.devices.d.ts.map +1 -1
  342. package/lib/typescript/core/mixins/OxyServices.features.d.ts +229 -0
  343. package/lib/typescript/core/mixins/OxyServices.features.d.ts.map +1 -0
  344. package/lib/typescript/core/mixins/OxyServices.fedcm.d.ts +195 -0
  345. package/lib/typescript/core/mixins/OxyServices.fedcm.d.ts.map +1 -0
  346. package/lib/typescript/core/mixins/OxyServices.karma.d.ts.map +1 -1
  347. package/lib/typescript/core/mixins/OxyServices.language.d.ts.map +1 -1
  348. package/lib/typescript/core/mixins/OxyServices.location.d.ts.map +1 -1
  349. package/lib/typescript/core/mixins/OxyServices.payment.d.ts.map +1 -1
  350. package/lib/typescript/core/mixins/OxyServices.popup.d.ts +206 -0
  351. package/lib/typescript/core/mixins/OxyServices.popup.d.ts.map +1 -0
  352. package/lib/typescript/core/mixins/OxyServices.privacy.d.ts.map +1 -1
  353. package/lib/typescript/core/mixins/OxyServices.redirect.d.ts +246 -0
  354. package/lib/typescript/core/mixins/OxyServices.redirect.d.ts.map +1 -0
  355. package/lib/typescript/core/mixins/OxyServices.security.d.ts.map +1 -1
  356. package/lib/typescript/core/mixins/OxyServices.user.d.ts +6 -4
  357. package/lib/typescript/core/mixins/OxyServices.user.d.ts.map +1 -1
  358. package/lib/typescript/core/mixins/OxyServices.utility.d.ts.map +1 -1
  359. package/lib/typescript/core/mixins/index.d.ts +291 -9
  360. package/lib/typescript/core/mixins/index.d.ts.map +1 -1
  361. package/lib/typescript/crypto/index.d.ts +6 -3
  362. package/lib/typescript/crypto/index.d.ts.map +1 -1
  363. package/lib/typescript/crypto/keyManager.d.ts +190 -0
  364. package/lib/typescript/crypto/keyManager.d.ts.map +1 -0
  365. package/lib/typescript/crypto/polyfill.d.ts +4 -3
  366. package/lib/typescript/crypto/polyfill.d.ts.map +1 -1
  367. package/lib/typescript/crypto/recoveryPhrase.d.ts +59 -0
  368. package/lib/typescript/crypto/recoveryPhrase.d.ts.map +1 -0
  369. package/lib/typescript/crypto/signatureService.d.ts +87 -0
  370. package/lib/typescript/crypto/signatureService.d.ts.map +1 -0
  371. package/lib/typescript/index.d.ts +5 -6
  372. package/lib/typescript/index.d.ts.map +1 -1
  373. package/lib/typescript/models/interfaces.d.ts +2 -14
  374. package/lib/typescript/models/interfaces.d.ts.map +1 -1
  375. package/lib/typescript/models/session.d.ts +0 -9
  376. package/lib/typescript/models/session.d.ts.map +1 -1
  377. package/lib/typescript/types/bip39.d.ts +32 -0
  378. package/lib/typescript/ui/components/BottomSheetRouter.d.ts +5 -0
  379. package/lib/typescript/ui/components/BottomSheetRouter.d.ts.map +1 -1
  380. package/lib/typescript/ui/components/GroupedItem.d.ts +5 -1
  381. package/lib/typescript/ui/components/GroupedItem.d.ts.map +1 -1
  382. package/lib/typescript/ui/components/IconButton/utils.d.ts +1 -1
  383. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  384. package/lib/typescript/ui/components/SettingRow.d.ts +6 -0
  385. package/lib/typescript/ui/components/SettingRow.d.ts.map +1 -1
  386. package/lib/typescript/ui/components/TextField/Addons/Outline.d.ts +2 -2
  387. package/lib/typescript/ui/components/TextField/Adornment/utils.d.ts +1 -1
  388. package/lib/typescript/ui/components/TextField/Adornment/utils.d.ts.map +1 -1
  389. package/lib/typescript/ui/components/TextField/helpers.d.ts +8 -8
  390. package/lib/typescript/ui/components/TextField/types.d.ts +1 -0
  391. package/lib/typescript/ui/components/TextField/types.d.ts.map +1 -1
  392. package/lib/typescript/ui/components/feedback/FormInput.d.ts +20 -0
  393. package/lib/typescript/ui/components/feedback/FormInput.d.ts.map +1 -0
  394. package/lib/typescript/ui/components/feedback/ProgressIndicator.d.ts +11 -0
  395. package/lib/typescript/ui/components/feedback/ProgressIndicator.d.ts.map +1 -0
  396. package/lib/typescript/ui/components/feedback/constants.d.ts +5 -0
  397. package/lib/typescript/ui/components/feedback/constants.d.ts.map +1 -0
  398. package/lib/typescript/ui/components/feedback/feedbackStyles.d.ts +280 -0
  399. package/lib/typescript/ui/components/feedback/feedbackStyles.d.ts.map +1 -0
  400. package/lib/typescript/ui/components/feedback/index.d.ts +7 -0
  401. package/lib/typescript/ui/components/feedback/index.d.ts.map +1 -0
  402. package/lib/typescript/ui/components/feedback/types.d.ts +46 -0
  403. package/lib/typescript/ui/components/feedback/types.d.ts.map +1 -0
  404. package/lib/typescript/ui/components/feedback/useFeedbackForm.d.ts +9 -0
  405. package/lib/typescript/ui/components/feedback/useFeedbackForm.d.ts.map +1 -0
  406. package/lib/typescript/ui/components/modals/DeleteAccountModal.d.ts +19 -0
  407. package/lib/typescript/ui/components/modals/DeleteAccountModal.d.ts.map +1 -0
  408. package/lib/typescript/ui/components/modals/index.d.ts +2 -0
  409. package/lib/typescript/ui/components/modals/index.d.ts.map +1 -0
  410. package/lib/typescript/ui/components/payment/PaymentDetailsStep.d.ts +21 -0
  411. package/lib/typescript/ui/components/payment/PaymentDetailsStep.d.ts.map +1 -0
  412. package/lib/typescript/ui/components/payment/PaymentMethodStep.d.ts +14 -0
  413. package/lib/typescript/ui/components/payment/PaymentMethodStep.d.ts.map +1 -0
  414. package/lib/typescript/ui/components/payment/PaymentReviewStep.d.ts +16 -0
  415. package/lib/typescript/ui/components/payment/PaymentReviewStep.d.ts.map +1 -0
  416. package/lib/typescript/ui/components/payment/PaymentSuccessStep.d.ts +10 -0
  417. package/lib/typescript/ui/components/payment/PaymentSuccessStep.d.ts.map +1 -0
  418. package/lib/typescript/ui/components/payment/PaymentSummaryStep.d.ts +15 -0
  419. package/lib/typescript/ui/components/payment/PaymentSummaryStep.d.ts.map +1 -0
  420. package/lib/typescript/ui/components/payment/constants.d.ts +7 -0
  421. package/lib/typescript/ui/components/payment/constants.d.ts.map +1 -0
  422. package/lib/typescript/ui/components/payment/index.d.ts +9 -0
  423. package/lib/typescript/ui/components/payment/index.d.ts.map +1 -0
  424. package/lib/typescript/ui/components/payment/paymentStyles.d.ts +396 -0
  425. package/lib/typescript/ui/components/payment/paymentStyles.d.ts.map +1 -0
  426. package/lib/typescript/ui/components/payment/types.d.ts +40 -0
  427. package/lib/typescript/ui/components/payment/types.d.ts.map +1 -0
  428. package/lib/typescript/ui/components/types.d.ts +4 -0
  429. package/lib/typescript/ui/components/types.d.ts.map +1 -1
  430. package/lib/typescript/ui/context/OxyContext.d.ts +57 -3
  431. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  432. package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts +10 -3
  433. package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  434. package/lib/typescript/ui/context/hooks/useSessionManagement.d.ts +41 -0
  435. package/lib/typescript/ui/context/hooks/useSessionManagement.d.ts.map +1 -0
  436. package/lib/typescript/ui/hooks/index.d.ts +2 -0
  437. package/lib/typescript/ui/hooks/index.d.ts.map +1 -1
  438. package/lib/typescript/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  439. package/lib/typescript/ui/hooks/queries/useAccountQueries.d.ts.map +1 -1
  440. package/lib/typescript/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  441. package/lib/typescript/ui/hooks/useAsyncAction.d.ts +51 -0
  442. package/lib/typescript/ui/hooks/useAsyncAction.d.ts.map +1 -0
  443. package/lib/typescript/ui/hooks/useProfileEditing.d.ts.map +1 -1
  444. package/lib/typescript/ui/hooks/useSessionManagement.d.ts.map +1 -1
  445. package/lib/typescript/ui/hooks/useSessionSocket.d.ts +1 -2
  446. package/lib/typescript/ui/hooks/useSessionSocket.d.ts.map +1 -1
  447. package/lib/typescript/ui/hooks/useSettingToggle.d.ts +55 -0
  448. package/lib/typescript/ui/hooks/useSettingToggle.d.ts.map +1 -0
  449. package/lib/typescript/ui/hooks/useStorage.d.ts +3 -9
  450. package/lib/typescript/ui/hooks/useStorage.d.ts.map +1 -1
  451. package/lib/typescript/ui/index.d.ts +6 -2
  452. package/lib/typescript/ui/index.d.ts.map +1 -1
  453. package/lib/typescript/ui/navigation/routes.d.ts +1 -1
  454. package/lib/typescript/ui/navigation/routes.d.ts.map +1 -1
  455. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
  456. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  457. package/lib/typescript/ui/screens/FAQScreen.d.ts +5 -0
  458. package/lib/typescript/ui/screens/FAQScreen.d.ts.map +1 -0
  459. package/lib/typescript/ui/screens/FeedbackScreen.d.ts.map +1 -1
  460. package/lib/typescript/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  461. package/lib/typescript/ui/screens/OxyAuthScreen.d.ts +1 -1
  462. package/lib/typescript/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  463. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts +3 -15
  464. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  465. package/lib/typescript/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  466. package/lib/typescript/ui/screens/ProfileScreen.d.ts.map +1 -1
  467. package/lib/typescript/ui/screens/SavesCollectionsScreen.d.ts.map +1 -1
  468. package/lib/typescript/ui/screens/karma/KarmaCenterScreen.d.ts.map +1 -1
  469. package/lib/typescript/ui/stores/accountStore.d.ts.map +1 -1
  470. package/lib/typescript/ui/stores/authStore.d.ts +8 -7
  471. package/lib/typescript/ui/stores/authStore.d.ts.map +1 -1
  472. package/lib/typescript/ui/styles/spacing.d.ts +5 -0
  473. package/lib/typescript/ui/styles/spacing.d.ts.map +1 -1
  474. package/lib/typescript/ui/types/navigation.d.ts +2 -1
  475. package/lib/typescript/ui/types/navigation.d.ts.map +1 -1
  476. package/lib/typescript/ui/utils/avatarUtils.d.ts +2 -13
  477. package/lib/typescript/ui/utils/avatarUtils.d.ts.map +1 -1
  478. package/lib/typescript/ui/utils/storageHelpers.d.ts +0 -3
  479. package/lib/typescript/ui/utils/storageHelpers.d.ts.map +1 -1
  480. package/lib/typescript/utils/errorUtils.d.ts +6 -0
  481. package/lib/typescript/utils/errorUtils.d.ts.map +1 -1
  482. package/lib/typescript/utils/validationUtils.d.ts +8 -0
  483. package/lib/typescript/utils/validationUtils.d.ts.map +1 -1
  484. package/package.json +8 -7
  485. package/src/core/CrossDomainAuth.ts +307 -0
  486. package/src/core/HttpService.ts +99 -16
  487. package/src/core/OxyServices.base.ts +20 -3
  488. package/src/core/OxyServices.ts +7 -3
  489. package/src/core/index.ts +9 -1
  490. package/src/core/mixins/OxyServices.assets.ts +14 -3
  491. package/src/core/mixins/OxyServices.auth.ts +105 -36
  492. package/src/core/mixins/OxyServices.features.ts +428 -0
  493. package/src/core/mixins/OxyServices.fedcm.ts +315 -0
  494. package/src/core/mixins/OxyServices.popup.ts +402 -0
  495. package/src/core/mixins/OxyServices.redirect.ts +397 -0
  496. package/src/core/mixins/OxyServices.user.ts +39 -24
  497. package/src/core/mixins/index.ts +33 -14
  498. package/src/crypto/index.ts +16 -5
  499. package/src/crypto/keyManager.ts +966 -0
  500. package/src/crypto/polyfill.ts +6 -5
  501. package/src/crypto/recoveryPhrase.ts +166 -0
  502. package/src/crypto/signatureService.ts +323 -0
  503. package/src/i18n/locales/en-US.json +1 -1
  504. package/src/index.ts +19 -15
  505. package/src/models/interfaces.ts +4 -16
  506. package/src/models/session.ts +2 -11
  507. package/src/types/bip39.d.ts +32 -0
  508. package/src/ui/components/BottomSheetRouter.tsx +6 -1
  509. package/src/ui/components/GroupedItem.tsx +19 -1
  510. package/src/ui/components/Icon.tsx +1 -1
  511. package/src/ui/components/IconButton/utils.ts +1 -1
  512. package/src/ui/components/OxyProvider.tsx +44 -12
  513. package/src/ui/components/SettingRow.tsx +26 -4
  514. package/src/ui/components/TextField/Addons/Outline.tsx +2 -2
  515. package/src/ui/components/TextField/Adornment/utils.ts +2 -2
  516. package/src/ui/components/TextField/helpers.tsx +10 -10
  517. package/src/ui/components/TextField/types.tsx +1 -1
  518. package/src/ui/components/TouchableRipple/utils.ts +2 -2
  519. package/src/ui/components/Typography/AnimatedText.tsx +2 -2
  520. package/src/ui/components/feedback/FormInput.tsx +84 -0
  521. package/src/ui/components/feedback/ProgressIndicator.tsx +35 -0
  522. package/src/ui/components/feedback/constants.ts +22 -0
  523. package/src/ui/components/feedback/feedbackStyles.ts +247 -0
  524. package/src/ui/components/feedback/index.ts +6 -0
  525. package/src/ui/components/feedback/types.ts +52 -0
  526. package/src/ui/components/feedback/useFeedbackForm.ts +44 -0
  527. package/src/ui/components/modals/DeleteAccountModal.tsx +294 -0
  528. package/src/ui/components/modals/index.ts +1 -0
  529. package/src/ui/components/payment/PaymentDetailsStep.tsx +222 -0
  530. package/src/ui/components/payment/PaymentMethodStep.tsx +89 -0
  531. package/src/ui/components/payment/PaymentReviewStep.tsx +126 -0
  532. package/src/ui/components/payment/PaymentSuccessStep.tsx +71 -0
  533. package/src/ui/components/payment/PaymentSummaryStep.tsx +159 -0
  534. package/src/ui/components/payment/constants.ts +39 -0
  535. package/src/ui/components/payment/index.ts +9 -0
  536. package/src/ui/components/payment/paymentStyles.ts +397 -0
  537. package/src/ui/components/payment/types.ts +45 -0
  538. package/src/ui/components/types.tsx +6 -0
  539. package/src/ui/context/OxyContext.tsx +173 -195
  540. package/src/ui/context/hooks/useAuthOperations.ts +177 -36
  541. package/src/ui/context/hooks/useSessionManagement.ts +399 -0
  542. package/src/ui/hooks/index.ts +3 -1
  543. package/src/ui/hooks/mutations/useAccountMutations.ts +83 -76
  544. package/src/ui/hooks/queries/useAccountQueries.ts +29 -35
  545. package/src/ui/hooks/queries/useSecurityQueries.ts +1 -1
  546. package/src/ui/hooks/queries/useServicesQueries.ts +14 -6
  547. package/src/ui/hooks/useAsyncAction.ts +129 -0
  548. package/src/ui/hooks/useProfileEditing.ts +3 -3
  549. package/src/ui/hooks/useSessionManagement.ts +5 -10
  550. package/src/ui/hooks/useSessionSocket.ts +46 -175
  551. package/src/ui/hooks/useSettingToggle.ts +147 -0
  552. package/src/ui/hooks/useStorage.ts +24 -76
  553. package/src/ui/index.ts +22 -13
  554. package/src/ui/navigation/routes.ts +8 -2
  555. package/src/ui/screens/AccountCenterScreen.tsx +4 -4
  556. package/src/ui/screens/AccountOverviewScreen.tsx +36 -38
  557. package/src/ui/screens/AccountSettingsScreen.tsx +34 -37
  558. package/src/ui/screens/AccountSwitcherScreen.tsx +4 -4
  559. package/src/ui/screens/FAQScreen.tsx +332 -0
  560. package/src/ui/screens/FeedbackScreen.tsx +91 -626
  561. package/src/ui/screens/HelpSupportScreen.tsx +7 -5
  562. package/src/ui/screens/OxyAuthScreen.tsx +138 -64
  563. package/src/ui/screens/PaymentGatewayScreen.tsx +96 -1275
  564. package/src/ui/screens/PrivacySettingsScreen.tsx +6 -12
  565. package/src/ui/screens/ProfileScreen.tsx +11 -6
  566. package/src/ui/screens/SavesCollectionsScreen.tsx +19 -10
  567. package/src/ui/screens/karma/KarmaCenterScreen.tsx +10 -10
  568. package/src/ui/stores/accountStore.ts +1 -11
  569. package/src/ui/stores/authStore.ts +43 -44
  570. package/src/ui/styles/spacing.ts +15 -2
  571. package/src/ui/types/navigation.ts +2 -2
  572. package/src/ui/utils/avatarUtils.ts +39 -46
  573. package/src/ui/utils/storageHelpers.ts +0 -4
  574. package/src/utils/__tests__/validationUtils.test.ts +16 -1
  575. package/src/utils/errorUtils.ts +8 -1
  576. package/src/utils/validationUtils.ts +12 -0
  577. package/lib/commonjs/core/services/SessionService.js +0 -163
  578. package/lib/commonjs/core/services/SessionService.js.map +0 -1
  579. package/lib/commonjs/core/services/TokenService.js +0 -220
  580. package/lib/commonjs/core/services/TokenService.js.map +0 -1
  581. package/lib/commonjs/crypto/types.js +0 -2
  582. package/lib/commonjs/crypto/types.js.map +0 -1
  583. package/lib/commonjs/ui/context/OxyContextBase.js +0 -21
  584. package/lib/commonjs/ui/context/OxyContextBase.js.map +0 -1
  585. package/lib/commonjs/ui/context/hooks/useStorage.js +0 -79
  586. package/lib/commonjs/ui/context/hooks/useStorage.js.map +0 -1
  587. package/lib/commonjs/ui/hooks/useAvatarPicker.js +0 -56
  588. package/lib/commonjs/ui/hooks/useAvatarPicker.js.map +0 -1
  589. package/lib/module/core/services/SessionService.js +0 -159
  590. package/lib/module/core/services/SessionService.js.map +0 -1
  591. package/lib/module/core/services/TokenService.js +0 -217
  592. package/lib/module/core/services/TokenService.js.map +0 -1
  593. package/lib/module/crypto/types.js +0 -2
  594. package/lib/module/crypto/types.js.map +0 -1
  595. package/lib/module/ui/context/OxyContextBase.js +0 -16
  596. package/lib/module/ui/context/OxyContextBase.js.map +0 -1
  597. package/lib/module/ui/context/hooks/useStorage.js +0 -74
  598. package/lib/module/ui/context/hooks/useStorage.js.map +0 -1
  599. package/lib/module/ui/hooks/useAvatarPicker.js +0 -50
  600. package/lib/module/ui/hooks/useAvatarPicker.js.map +0 -1
  601. package/lib/typescript/core/services/SessionService.d.ts +0 -78
  602. package/lib/typescript/core/services/SessionService.d.ts.map +0 -1
  603. package/lib/typescript/core/services/TokenService.d.ts +0 -72
  604. package/lib/typescript/core/services/TokenService.d.ts.map +0 -1
  605. package/lib/typescript/crypto/types.d.ts +0 -22
  606. package/lib/typescript/crypto/types.d.ts.map +0 -1
  607. package/lib/typescript/ui/context/OxyContextBase.d.ts +0 -63
  608. package/lib/typescript/ui/context/OxyContextBase.d.ts.map +0 -1
  609. package/lib/typescript/ui/context/hooks/useStorage.d.ts +0 -22
  610. package/lib/typescript/ui/context/hooks/useStorage.d.ts.map +0 -1
  611. package/lib/typescript/ui/hooks/useAvatarPicker.d.ts +0 -19
  612. package/lib/typescript/ui/hooks/useAvatarPicker.d.ts.map +0 -1
  613. package/src/core/services/SessionService.ts +0 -173
  614. package/src/core/services/TokenService.ts +0 -237
  615. package/src/crypto/types.ts +0 -23
  616. package/src/ui/context/OxyContextBase.tsx +0 -78
  617. package/src/ui/context/hooks/useStorage.ts +0 -104
  618. package/src/ui/hooks/useAvatarPicker.ts +0 -61
@@ -1,119 +1,14 @@
1
1
  "use strict";
2
2
 
3
- import { useState, useRef, useMemo, useCallback } from 'react';
4
- import { View, Text, TouchableOpacity, StyleSheet, Platform, ScrollView, Animated, Linking, Clipboard, useWindowDimensions } from 'react-native';
5
- import { fontFamilies, useThemeColors, createCommonStyles } from '../styles';
3
+ import React, { useState, useRef, useMemo, useCallback } from 'react';
4
+ import { View, Text, ScrollView, Animated, Platform, useWindowDimensions } from 'react-native';
5
+ import { useThemeColors } from '../styles';
6
6
  import { normalizeTheme } from '../utils/themeUtils';
7
7
  import GroupedPillButtons from '../components/internal/GroupedPillButtons';
8
- import TextField from '../components/TextField';
9
- import { Ionicons } from '@expo/vector-icons';
10
- import { FAIRWalletIcon } from '../components/icon';
11
- import { toast } from 'sonner';
12
- import QRCode from 'react-native-qrcode-svg';
13
- import { GroupedSection } from '../components';
14
8
  import { useThemeStyles } from '../hooks/useThemeStyles';
15
-
16
- // Restrict payment methods to Card, Oxy Pay, and FairCoin (QR)
17
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
18
- const PAYMENT_METHODS = [{
19
- key: 'card',
20
- label: 'Credit/Debit Card',
21
- icon: 'card-outline',
22
- description: 'Pay securely with your credit or debit card.'
23
- }, {
24
- key: 'oxy',
25
- label: 'Oxy Pay',
26
- icon: 'wallet-outline',
27
- description: 'Use your Oxy Pay in-app balance.'
28
- }, {
29
- key: 'faircoin',
30
- label: 'FAIRWallet',
31
- icon: 'qr-code-outline',
32
- description: 'Pay with FairCoin by scanning a QR code.'
33
- }];
34
-
35
- // Add PaymentItem type
36
-
37
- // Extend props to accept onPaymentResult, amount, and currency
38
-
39
- // Currency symbol map
40
- const CURRENCY_SYMBOLS = {
41
- FAIR: '⊜',
42
- INR: '₹',
43
- USD: '$',
44
- EUR: '€',
45
- GBP: '£',
46
- JPY: '¥',
47
- CNY: '¥',
48
- AUD: 'A$',
49
- CAD: 'C$'
50
- // Add more as needed
51
- };
52
- const CURRENCY_NAMES = {
53
- FAIR: 'FairCoin',
54
- INR: 'Indian Rupee',
55
- USD: 'US Dollar',
56
- EUR: 'Euro',
57
- GBP: 'British Pound',
58
- JPY: 'Japanese Yen',
59
- CNY: 'Chinese Yuan',
60
- AUD: 'Australian Dollar',
61
- CAD: 'Canadian Dollar'
62
- // Add more as needed
63
- };
64
-
65
- // Helper: icon for item type (Ionicons only)
66
- const getItemTypeIcon = (type, color) => {
67
- switch (type) {
68
- case 'product':
69
- return /*#__PURE__*/_jsx(Ionicons, {
70
- name: "cart-outline",
71
- size: 22,
72
- color: color,
73
- style: {
74
- marginRight: 8
75
- }
76
- });
77
- case 'subscription':
78
- return /*#__PURE__*/_jsx(Ionicons, {
79
- name: "repeat-outline",
80
- size: 22,
81
- color: color,
82
- style: {
83
- marginRight: 8
84
- }
85
- });
86
- case 'service':
87
- return /*#__PURE__*/_jsx(Ionicons, {
88
- name: "construct-outline",
89
- size: 22,
90
- color: color,
91
- style: {
92
- marginRight: 8
93
- }
94
- });
95
- case 'fee':
96
- return /*#__PURE__*/_jsx(Ionicons, {
97
- name: "cash-outline",
98
- size: 22,
99
- color: color,
100
- style: {
101
- marginRight: 8
102
- }
103
- });
104
- default:
105
- return /*#__PURE__*/_jsx(Ionicons, {
106
- name: "pricetag-outline",
107
- size: 22,
108
- color: color,
109
- style: {
110
- marginRight: 8
111
- }
112
- });
113
- }
114
- };
115
-
116
- // Helper to get unique item types (move to top-level, before component)
9
+ import QRCode from 'react-native-qrcode-svg';
10
+ import { PaymentSummaryStep, PaymentMethodStep, PaymentDetailsStep, PaymentReviewStep, PaymentSuccessStep, PAYMENT_METHODS, createPaymentStyles } from '../components/payment';
11
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
117
12
  const getUniqueItemTypes = items => {
118
13
  const types = items.map(item => item.type);
119
14
  return Array.from(new Set(types));
@@ -128,8 +23,7 @@ const PaymentGatewayScreen = props => {
128
23
  currency = 'FAIR',
129
24
  onClose,
130
25
  paymentItems = [],
131
- // NEW
132
- description = '' // NEW
26
+ description = ''
133
27
  } = props;
134
28
 
135
29
  // DEV ENFORCEMENT: Only allow one type of payment item
@@ -148,9 +42,7 @@ const PaymentGatewayScreen = props => {
148
42
  expiry: '',
149
43
  cvv: ''
150
44
  });
151
- const [upiId, setUpiId] = useState('');
152
45
  const [isPaying, setIsPaying] = useState(false);
153
- const [success, setSuccess] = useState(false);
154
46
 
155
47
  // Animations
156
48
  const fadeAnim = useRef(new Animated.Value(1)).current;
@@ -159,23 +51,8 @@ const PaymentGatewayScreen = props => {
159
51
  const progressAnim = useRef(new Animated.Value(0.2)).current;
160
52
  const normalizedTheme = normalizeTheme(theme);
161
53
  const colors = useThemeColors(normalizedTheme);
162
- const commonStyles = createCommonStyles(normalizedTheme);
163
- const styles = useMemo(() => createStyles(colors, normalizedTheme), [colors, normalizedTheme]);
164
-
165
- // Get symbol and name for currency
166
- const currencySymbol = CURRENCY_SYMBOLS[currency.toUpperCase()] || currency;
167
- const currencyName = CURRENCY_NAMES[currency.toUpperCase()] || currency;
168
-
169
- // Calculate total from items if provided, else use amount
170
- const computedTotal = useMemo(() => {
171
- if (paymentItems && paymentItems.length > 0) {
172
- return paymentItems.reduce((sum, item) => {
173
- const qty = item.quantity ?? 1;
174
- return sum + item.price * qty;
175
- }, 0);
176
- }
177
- return Number(amount) || 0;
178
- }, [paymentItems, amount]);
54
+ const themeStyles = useThemeStyles(normalizedTheme);
55
+ const styles = useMemo(() => createPaymentStyles(colors), [colors]);
179
56
 
180
57
  // Determine if the payment is for a recurring item (subscription)
181
58
  const isRecurring = paymentItems.length > 0 && paymentItems[0].type === 'subscription';
@@ -188,15 +65,6 @@ const PaymentGatewayScreen = props => {
188
65
  return PAYMENT_METHODS;
189
66
  }, [isRecurring]);
190
67
 
191
- // Add after useState declarations
192
- // Remove itemTypeError state, useEffect, and user-facing error in renderSummaryStep
193
-
194
- // Helper to get unique item types
195
- // Remove itemTypeError state, useEffect, and user-facing error in renderSummaryStep
196
-
197
- // Validate item types on paymentItems change
198
- // Remove itemTypeError state, useEffect, and user-facing error in renderSummaryStep
199
-
200
68
  // Animation transitions
201
69
  const animateTransition = useCallback(nextStep => {
202
70
  Animated.timing(scaleAnim, {
@@ -228,7 +96,7 @@ const PaymentGatewayScreen = props => {
228
96
  useNativeDriver: Platform.OS !== 'web'
229
97
  })]).start();
230
98
  });
231
- }, []);
99
+ }, [fadeAnim, slideAnim, scaleAnim]);
232
100
  const nextStep = useCallback(() => {
233
101
  if (currentStep < 4) {
234
102
  Animated.timing(progressAnim, {
@@ -250,17 +118,14 @@ const PaymentGatewayScreen = props => {
250
118
  }
251
119
  }, [currentStep, progressAnim, animateTransition]);
252
120
 
253
- // Dummy pay handler
121
+ // Pay handler - TODO: Replace with actual payment API
254
122
  const handlePay = useCallback(() => {
255
123
  setIsPaying(true);
256
124
  setTimeout(() => {
257
125
  setIsPaying(false);
258
- setSuccess(true);
259
126
  nextStep();
260
127
  }, 1500);
261
128
  }, [nextStep]);
262
-
263
- // Success handler for Done button
264
129
  const handleDone = useCallback(() => {
265
130
  if (onPaymentResult) {
266
131
  onPaymentResult({
@@ -269,8 +134,6 @@ const PaymentGatewayScreen = props => {
269
134
  }
270
135
  navigate?.('AccountOverview');
271
136
  }, [onPaymentResult, navigate]);
272
-
273
- // Handle close/cancel: return failure result if payment is not completed
274
137
  const handleClose = useCallback(() => {
275
138
  if (onPaymentResult) {
276
139
  onPaymentResult({
@@ -285,10 +148,7 @@ const PaymentGatewayScreen = props => {
285
148
  }
286
149
  }, [onPaymentResult, onClose, goBack]);
287
150
 
288
- // Optionally, intercept goBack/onClose if user tries to close the screen
289
- // (You may want to use useEffect to listen for unmount or navigation away)
290
-
291
- // If amount is missing or invalid, show error
151
+ // Validate amount
292
152
  if (!amount || isNaN(Number(amount)) || Number(amount) <= 0) {
293
153
  return /*#__PURE__*/_jsxs(View, {
294
154
  style: styles.errorContainer,
@@ -302,619 +162,82 @@ const PaymentGatewayScreen = props => {
302
162
  icon: 'close',
303
163
  variant: 'primary'
304
164
  }],
305
- colors: useThemeColors(normalizedTheme)
165
+ colors: colors
306
166
  })]
307
167
  });
308
168
  }
309
169
 
310
- // Example FairCoin address (replace with real one)
170
+ // FairCoin address - TODO: Replace with dynamic address from backend
311
171
  const faircoinAddress = 'f1abc1234FAIRCOINADDRESS';
312
172
  const {
313
173
  width: windowWidth
314
174
  } = useWindowDimensions();
315
175
  const isMobile = windowWidth < 600;
316
176
  const qrSize = !isMobile ? Math.min(windowWidth * 0.3, 220) : Math.min(windowWidth * 0.8, 300);
317
- const handleCopyAddress = () => {
318
- Clipboard.setString(faircoinAddress);
319
- toast('Address copied to clipboard!');
320
- };
321
- const handleOpenFairWallet = () => {
322
- const url = `fairwallet://pay?address=${faircoinAddress}`;
323
- Linking.openURL(url);
177
+ const animations = {
178
+ fadeAnim,
179
+ slideAnim,
180
+ scaleAnim
324
181
  };
325
-
326
- // Helper for dynamic styles
327
- const getStepIndicatorStyle = active => [styles.stepIndicator, active ? styles.stepIndicatorActive : styles.stepIndicatorInactive];
328
- const getPaymentMethodButtonStyle = active => [styles.paymentMethodButton, active ? styles.paymentMethodButtonActive : styles.paymentMethodButtonInactive];
329
- const getPaymentMethodIconColor = active => active ? colors.primary : colors.text;
330
-
331
- // Step indicator
332
- const renderStepIndicator = () => {
333
- const totalSteps = 5;
334
- const activeStep = currentStep + 1;
335
- return /*#__PURE__*/_jsx(View, {
336
- style: styles.stepIndicatorContainer,
337
- children: Array.from({
338
- length: totalSteps
339
- }).map((_, idx) => /*#__PURE__*/_jsx(View, {
340
- style: getStepIndicatorStyle(activeStep === idx + 1)
341
- }, idx))
342
- });
343
- };
344
-
345
- // PaymentGatewayHeader component
346
- const stepTitles = ['Complete Your Payment', 'Select Payment Method', 'Enter Payment Details', 'Review & Pay', 'Success'];
347
-
348
- // Step 1: Summary step (new first step, no header/dots here)
349
- const renderSummaryStep = () => /*#__PURE__*/_jsxs(Animated.View, {
350
- style: [styles.stepContainer, {
351
- opacity: fadeAnim,
352
- transform: [{
353
- translateY: slideAnim
354
- }, {
355
- scale: scaleAnim
356
- }]
357
- }],
358
- children: [/*#__PURE__*/_jsxs(View, {
359
- style: styles.section,
360
- children: [/*#__PURE__*/_jsx(Text, {
361
- style: styles.sectionTitle,
362
- children: "Payment Summary"
363
- }), /*#__PURE__*/_jsx(View, {
364
- style: styles.summaryCard,
365
- children: /*#__PURE__*/_jsxs(View, {
366
- style: styles.summaryCardContent,
367
- children: [/*#__PURE__*/_jsx(Ionicons, {
368
- name: "receipt-outline",
369
- size: 64,
370
- color: colors.primary,
371
- style: styles.summaryCardIcon
372
- }), /*#__PURE__*/_jsx(Text, {
373
- style: styles.summaryCardMainTitle,
374
- children: paymentItems && paymentItems.length > 0 ? 'Order Summary' : 'Payment'
375
- }), /*#__PURE__*/_jsx(Text, {
376
- style: styles.summaryCardSubtitle,
377
- children: paymentItems && paymentItems.length > 0 ? 'Review your payment details' : 'Complete your payment'
378
- }), paymentItems && paymentItems.length > 0 ? /*#__PURE__*/_jsxs(_Fragment, {
379
- children: [/*#__PURE__*/_jsx(View, {
380
- style: styles.summaryCardItems,
381
- children: /*#__PURE__*/_jsx(GroupedSection, {
382
- items: paymentItems.map((item, idx) => ({
383
- id: `item-${idx}`,
384
- icon: getItemTypeIcon(item.type, colors.primary).props.name,
385
- iconColor: colors.primary,
386
- title: `${item.type === 'product' && item.quantity ? `${item.quantity} × ` : ''}${item.name}${item.type === 'subscription' && item.period ? ` (${item.period})` : ''}`,
387
- subtitle: item.description || `${item.currency ? CURRENCY_SYMBOLS[item.currency.toUpperCase()] || item.currency : currencySymbol} ${item.price * (item.quantity ?? 1)}`,
388
- customContent: /*#__PURE__*/_jsxs(Text, {
389
- style: styles.summaryItemPrice,
390
- children: [item.currency ? CURRENCY_SYMBOLS[item.currency.toUpperCase()] || item.currency : currencySymbol, " ", item.price * (item.quantity ?? 1)]
391
- })
392
- }))
393
- })
394
- }), /*#__PURE__*/_jsx(View, {
395
- style: styles.summaryCardDivider
396
- }), /*#__PURE__*/_jsxs(View, {
397
- style: styles.summaryCardTotalSection,
398
- children: [/*#__PURE__*/_jsxs(View, {
399
- style: styles.summaryCardTotalRow,
400
- children: [/*#__PURE__*/_jsx(Text, {
401
- style: styles.summaryCardTotalLabel,
402
- children: "Subtotal"
403
- }), /*#__PURE__*/_jsxs(Text, {
404
- style: styles.summaryCardTotalValue,
405
- children: [currencySymbol, " ", amount]
406
- })]
407
- }), /*#__PURE__*/_jsxs(View, {
408
- style: styles.summaryCardTotalRow,
409
- children: [/*#__PURE__*/_jsx(Text, {
410
- style: styles.summaryCardTotalLabel,
411
- children: "Tax"
412
- }), /*#__PURE__*/_jsxs(Text, {
413
- style: styles.summaryCardTotalValue,
414
- children: [currencySymbol, " 0.00"]
415
- })]
416
- }), /*#__PURE__*/_jsxs(View, {
417
- style: styles.summaryCardTotalRow,
418
- children: [/*#__PURE__*/_jsx(Text, {
419
- style: styles.summaryCardTotalLabel,
420
- children: "Total"
421
- }), /*#__PURE__*/_jsxs(Text, {
422
- style: styles.summaryCardTotalValue,
423
- children: [currencySymbol, " ", amount]
424
- })]
425
- })]
426
- })]
427
- }) : /*#__PURE__*/_jsxs(_Fragment, {
428
- children: [/*#__PURE__*/_jsxs(View, {
429
- style: styles.summaryCardAmount,
430
- children: [/*#__PURE__*/_jsx(Text, {
431
- style: styles.summaryCardAmountLabel,
432
- children: "Amount to Pay"
433
- }), /*#__PURE__*/_jsxs(Text, {
434
- style: styles.summaryCardAmountValue,
435
- children: [currencySymbol, " ", amount]
436
- }), description && /*#__PURE__*/_jsx(Text, {
437
- style: styles.summaryCardAmountDescription,
438
- children: description
439
- })]
440
- }), /*#__PURE__*/_jsx(View, {
441
- style: styles.summaryCardDivider
442
- }), /*#__PURE__*/_jsx(View, {
443
- style: styles.summaryCardTotalSection,
444
- children: /*#__PURE__*/_jsxs(View, {
445
- style: styles.summaryCardTotalRow,
446
- children: [/*#__PURE__*/_jsx(Text, {
447
- style: styles.summaryCardTotalLabel,
448
- children: "Total"
449
- }), /*#__PURE__*/_jsxs(Text, {
450
- style: styles.summaryCardTotalValue,
451
- children: [currencySymbol, " ", amount]
452
- })]
453
- })
454
- })]
455
- })]
456
- })
457
- })]
458
- }), /*#__PURE__*/_jsx(GroupedPillButtons, {
459
- buttons: [{
460
- text: 'Close',
461
- onPress: handleClose,
462
- icon: 'close',
463
- variant: 'transparent'
464
- }, {
465
- text: 'Continue',
466
- onPress: nextStep,
467
- icon: 'arrow-forward',
468
- variant: 'primary'
469
- }],
470
- colors: colors
471
- })]
472
- });
473
-
474
- // Step 2: Choose Payment Method (now the second step, no header/dots here)
475
- const renderMethodStep = () => /*#__PURE__*/_jsxs(Animated.View, {
476
- style: [styles.stepContainer, {
477
- opacity: fadeAnim,
478
- transform: [{
479
- translateY: slideAnim
480
- }, {
481
- scale: scaleAnim
482
- }]
483
- }],
484
- children: [/*#__PURE__*/_jsxs(View, {
485
- style: styles.section,
486
- children: [/*#__PURE__*/_jsx(Text, {
487
- style: styles.sectionTitle,
488
- children: "Choose Payment Method"
489
- }), /*#__PURE__*/_jsx(GroupedSection, {
490
- items: availablePaymentMethods.map(method => ({
491
- id: method.key,
492
- icon: method.key === 'faircoin' ? undefined : method.icon,
493
- iconColor: method.key === 'card' ? '#007AFF' : method.key === 'oxy' ? '#32D74B' : method.key === 'faircoin' ? '#9ffb50' : colors.primary,
494
- title: method.label,
495
- subtitle: method.description,
496
- onPress: () => setPaymentMethod(method.key),
497
- selected: paymentMethod === method.key,
498
- showChevron: false,
499
- customIcon: method.key === 'faircoin' ? /*#__PURE__*/_jsx(FAIRWalletIcon, {
500
- size: 20
501
- }) : undefined
502
- }))
503
- })]
504
- }), /*#__PURE__*/_jsx(GroupedPillButtons, {
505
- buttons: [{
506
- text: 'Back',
507
- onPress: prevStep,
508
- icon: 'arrow-back',
509
- variant: 'transparent'
510
- }, {
511
- text: 'Continue',
512
- onPress: nextStep,
513
- icon: 'arrow-forward',
514
- variant: 'primary'
515
- }],
516
- colors: colors
517
- })]
518
- });
519
-
520
- // Step 2: Enter Payment Details
521
- const renderDetailsStep = () => /*#__PURE__*/_jsxs(Animated.View, {
522
- style: [styles.stepContainer, {
523
- opacity: fadeAnim,
524
- transform: [{
525
- translateY: slideAnim
526
- }, {
527
- scale: scaleAnim
528
- }]
529
- }],
530
- children: [/*#__PURE__*/_jsxs(View, {
531
- style: styles.section,
532
- children: [/*#__PURE__*/_jsx(Text, {
533
- style: styles.sectionTitle,
534
- children: paymentMethod === 'card' ? 'Card Details' : paymentMethod === 'oxy' ? 'Oxy Pay' : paymentMethod === 'faircoin' ? 'FairCoin Payment' : 'Payment Details'
535
- }), paymentMethod === 'card' && /*#__PURE__*/_jsx(View, {
536
- style: styles.cardPaymentCard,
537
- children: /*#__PURE__*/_jsxs(View, {
538
- style: styles.cardPaymentContent,
539
- children: [/*#__PURE__*/_jsx(Ionicons, {
540
- name: "card-outline",
541
- size: 64,
542
- color: colors.primary,
543
- style: styles.cardPaymentIcon
544
- }), /*#__PURE__*/_jsx(Text, {
545
- style: styles.cardPaymentMainTitle,
546
- children: "Credit Card"
547
- }), /*#__PURE__*/_jsx(Text, {
548
- style: styles.cardPaymentSubtitle,
549
- children: "Enter your card details securely"
550
- }), /*#__PURE__*/_jsxs(View, {
551
- style: styles.cardPaymentFields,
552
- children: [/*#__PURE__*/_jsxs(View, {
553
- style: styles.cardRowInfo,
554
- children: [/*#__PURE__*/_jsx(Ionicons, {
555
- name: "card-outline",
556
- size: 24,
557
- color: colors.primary,
558
- style: styles.cardRowIcon
559
- }), /*#__PURE__*/_jsx(Text, {
560
- style: styles.cardRowText,
561
- children: "We accept Visa, Mastercard, and more"
562
- })]
563
- }), /*#__PURE__*/_jsx(TextField, {
564
- value: cardDetails.number,
565
- onChangeText: text => {
566
- // Format card number with spaces
567
- const formatted = text.replace(/\s/g, '').replace(/(\d{4})/g, '$1 ').trim();
568
- setCardDetails({
569
- ...cardDetails,
570
- number: formatted
571
- });
572
- },
573
- placeholder: "1234 5678 9012 3456",
574
- keyboardType: "numeric",
575
- maxLength: 19,
576
- style: styles.cardFieldContainer,
577
- left: /*#__PURE__*/_jsx(Ionicons, {
578
- name: "card-outline",
579
- size: 18,
580
- color: colors.primary
581
- })
582
- }), /*#__PURE__*/_jsxs(View, {
583
- style: styles.cardFieldRow,
584
- children: [/*#__PURE__*/_jsx(TextField, {
585
- value: cardDetails.expiry,
586
- onChangeText: text => {
587
- // Format expiry date
588
- const formatted = text.replace(/\D/g, '').replace(/(\d{2})(\d)/, '$1/$2');
589
- setCardDetails({
590
- ...cardDetails,
591
- expiry: formatted
592
- });
593
- },
594
- placeholder: "MM/YY",
595
- maxLength: 5,
596
- style: styles.cardFieldHalfLeft,
597
- left: /*#__PURE__*/_jsx(Ionicons, {
598
- name: "calendar-outline",
599
- size: 16,
600
- color: colors.primary
601
- })
602
- }), /*#__PURE__*/_jsx(TextField, {
603
- value: cardDetails.cvv,
604
- onChangeText: text => {
605
- // Only allow numbers
606
- const formatted = text.replace(/\D/g, '');
607
- setCardDetails({
608
- ...cardDetails,
609
- cvv: formatted
610
- });
611
- },
612
- placeholder: "123",
613
- keyboardType: "numeric",
614
- maxLength: 4,
615
- style: styles.cardFieldHalfRight,
616
- left: /*#__PURE__*/_jsx(Ionicons, {
617
- name: "lock-closed-outline",
618
- size: 16,
619
- color: colors.primary
620
- })
621
- })]
622
- })]
623
- }), /*#__PURE__*/_jsx(View, {
624
- style: {
625
- height: 18
626
- }
627
- }), /*#__PURE__*/_jsx(Text, {
628
- style: styles.cardPaymentWaiting,
629
- children: "Ready to process payment..."
630
- })]
631
- })
632
- }), paymentMethod === 'oxy' && /*#__PURE__*/_jsx(View, {
633
- style: styles.oxyPayCard,
634
- children: /*#__PURE__*/_jsxs(View, {
635
- style: styles.oxyPayContent,
636
- children: [/*#__PURE__*/_jsx(Ionicons, {
637
- name: "wallet-outline",
638
- size: 64,
639
- color: colors.primary,
640
- style: styles.oxyPayIcon
641
- }), /*#__PURE__*/_jsx(Text, {
642
- style: styles.oxyPayMainTitle,
643
- children: "Oxy Pay"
644
- }), /*#__PURE__*/_jsx(Text, {
645
- style: styles.oxyPaySubtitle,
646
- children: "Pay with your in-app wallet"
647
- }), /*#__PURE__*/_jsx(View, {
648
- style: styles.oxyPayBalanceBox,
649
- children: /*#__PURE__*/_jsx(Text, {
650
- style: styles.oxyPayBalanceText,
651
- children: "Balance: \u229C 123.45"
652
- })
653
- }), /*#__PURE__*/_jsx(View, {
654
- style: {
655
- height: 18
656
- }
657
- }), /*#__PURE__*/_jsx(Text, {
658
- style: styles.oxyPayWaiting,
659
- children: "Ready to process payment..."
660
- })]
661
- })
662
- }), paymentMethod === 'faircoin' && /*#__PURE__*/_jsx(View, {
663
- style: styles.faircoinCard,
664
- children: /*#__PURE__*/_jsxs(View, {
665
- style: styles.faircoinContent,
666
- children: [/*#__PURE__*/_jsx(FAIRWalletIcon, {
667
- size: 64,
668
- style: styles.faircoinIcon
669
- }), /*#__PURE__*/_jsx(Text, {
670
- style: styles.faircoinMainTitle,
671
- children: "FAIRWallet"
672
- }), /*#__PURE__*/_jsx(Text, {
673
- style: styles.faircoinSubtitle,
674
- children: "Pay with FairCoin"
675
- }), !isMobile ? /*#__PURE__*/_jsxs(_Fragment, {
676
- children: [/*#__PURE__*/_jsx(Text, {
677
- style: styles.faircoinScanText,
678
- children: "Scan to Pay"
679
- }), /*#__PURE__*/_jsxs(View, {
680
- style: styles.faircoinQRCard,
681
- children: [/*#__PURE__*/_jsx(QRCode, {
682
- value: faircoinAddress,
683
- size: qrSize - 32
684
- }), /*#__PURE__*/_jsx(View, {
685
- style: styles.faircoinQRBadge,
686
- children: /*#__PURE__*/_jsx(FAIRWalletIcon, {
687
- size: 28
688
- })
689
- })]
690
- })]
691
- }) : /*#__PURE__*/_jsxs(_Fragment, {
692
- children: [/*#__PURE__*/_jsx(Text, {
693
- style: styles.faircoinTitle,
694
- children: "Use the options below to pay with FAIRWallet"
695
- }), /*#__PURE__*/_jsx(Text, {
696
- style: styles.faircoinAddress,
697
- children: faircoinAddress
698
- }), /*#__PURE__*/_jsxs(TouchableOpacity, {
699
- style: [styles.faircoinButton, {
700
- backgroundColor: '#9ffb50',
701
- borderRadius: 18,
702
- marginTop: 12,
703
- width: '90%',
704
- flexDirection: 'row',
705
- alignItems: 'center',
706
- justifyContent: 'center'
707
- }],
708
- onPress: handleOpenFairWallet,
709
- children: [/*#__PURE__*/_jsx(FAIRWalletIcon, {
710
- size: 20,
711
- style: {
712
- marginRight: 8
713
- }
714
- }), /*#__PURE__*/_jsx(Text, {
715
- style: [styles.faircoinButtonText, {
716
- color: '#1b1f0a',
717
- fontWeight: 'bold',
718
- fontSize: 16
719
- }],
720
- children: "Open in FAIRWallet"
721
- })]
722
- }), /*#__PURE__*/_jsxs(TouchableOpacity, {
723
- style: [styles.faircoinButton, {
724
- backgroundColor: '#9ffb50',
725
- borderRadius: 18,
726
- marginTop: 10,
727
- width: '90%',
728
- flexDirection: 'row',
729
- alignItems: 'center',
730
- justifyContent: 'center'
731
- }],
732
- onPress: handleCopyAddress,
733
- children: [/*#__PURE__*/_jsx(FAIRWalletIcon, {
734
- size: 20,
735
- style: {
736
- marginRight: 8
737
- }
738
- }), /*#__PURE__*/_jsx(Text, {
739
- style: [styles.faircoinButtonText, {
740
- color: '#1b1f0a',
741
- fontWeight: 'bold',
742
- fontSize: 16
743
- }],
744
- children: "Copy Address"
745
- })]
746
- })]
747
- }), /*#__PURE__*/_jsx(View, {
748
- style: {
749
- height: 18
750
- }
751
- }), /*#__PURE__*/_jsx(Text, {
752
- style: styles.faircoinWaiting,
753
- children: "Waiting for payment..."
754
- }), /*#__PURE__*/_jsx(Text, {
755
- style: styles.faircoinPlaceholder,
756
- children: "(This is a placeholder. Integrate with a QR code generator for production.)"
757
- })]
758
- })
759
- })]
760
- }), /*#__PURE__*/_jsx(GroupedPillButtons, {
761
- buttons: [{
762
- text: 'Back',
763
- onPress: prevStep,
764
- icon: 'arrow-back',
765
- variant: 'transparent'
766
- }, {
767
- text: 'Continue',
768
- onPress: nextStep,
769
- icon: 'arrow-forward',
770
- variant: 'primary',
771
- disabled: paymentMethod === 'card' && (!cardDetails.number || !cardDetails.expiry || !cardDetails.cvv)
772
- }],
773
- colors: colors
774
- })]
775
- });
776
-
777
- // Step 4: Review & Pay
778
- const renderReviewStep = () => /*#__PURE__*/_jsxs(Animated.View, {
779
- style: [styles.stepContainer, {
780
- opacity: fadeAnim,
781
- transform: [{
782
- translateY: slideAnim
783
- }, {
784
- scale: scaleAnim
785
- }]
786
- }],
787
- children: [/*#__PURE__*/_jsxs(View, {
788
- style: styles.section,
789
- children: [/*#__PURE__*/_jsx(Text, {
790
- style: styles.sectionTitle,
791
- children: "Review Payment"
792
- }), /*#__PURE__*/_jsx(GroupedSection, {
793
- items: [{
794
- id: 'secure-payment',
795
- icon: 'shield-check',
796
- iconColor: colors.success || '#4BB543',
797
- title: 'Secure payment',
798
- subtitle: 'Your payment is protected by industry-standard encryption'
799
- }, {
800
- id: 'amount',
801
- icon: 'cash',
802
- iconColor: colors.primary,
803
- title: 'Amount',
804
- subtitle: `${currencySymbol} ${amount}`
805
- }, {
806
- id: 'payment-method',
807
- icon: PAYMENT_METHODS.find(m => m.key === paymentMethod)?.icon,
808
- iconColor: colors.primary,
809
- title: 'Payment Method',
810
- subtitle: PAYMENT_METHODS.find(m => m.key === paymentMethod)?.label
811
- }, ...(paymentMethod === 'card' ? [{
812
- id: 'card-details',
813
- icon: 'card',
814
- iconColor: colors.primary,
815
- title: 'Card',
816
- subtitle: cardDetails.number.replace(/.(?=.{4})/g, '*')
817
- }] : []), ...(paymentMethod === 'oxy' ? [{
818
- id: 'oxy-balance',
819
- icon: 'wallet',
820
- iconColor: colors.primary,
821
- title: 'Oxy Pay Account',
822
- subtitle: 'Balance: ⊜ 123.45'
823
- }] : []), ...(paymentMethod === 'faircoin' ? [{
824
- id: 'faircoin-wallet',
825
- icon: 'qr-code',
826
- iconColor: colors.primary,
827
- title: 'FairCoin Wallet',
828
- subtitle: 'Paid via QR'
829
- }] : [])]
830
- })]
831
- }), /*#__PURE__*/_jsx(GroupedPillButtons, {
832
- buttons: [{
833
- text: 'Back',
834
- onPress: prevStep,
835
- icon: 'arrow-back',
836
- variant: 'transparent'
837
- }, {
838
- text: isPaying ? 'Processing...' : 'Pay Now',
839
- onPress: handlePay,
840
- icon: 'checkmark',
841
- variant: 'primary',
842
- loading: isPaying
843
- }],
844
- colors: colors
845
- })]
846
- });
847
-
848
- // Step 5: Success
849
- const renderSuccessStep = () => /*#__PURE__*/_jsxs(Animated.View, {
850
- style: [styles.stepContainer, {
851
- opacity: fadeAnim,
852
- transform: [{
853
- translateY: slideAnim
854
- }, {
855
- scale: scaleAnim
856
- }]
857
- }],
858
- children: [/*#__PURE__*/_jsxs(View, {
859
- style: styles.section,
860
- children: [/*#__PURE__*/_jsx(Text, {
861
- style: styles.sectionTitle,
862
- children: "Payment Complete"
863
- }), /*#__PURE__*/_jsx(View, {
864
- style: styles.successCard,
865
- children: /*#__PURE__*/_jsxs(View, {
866
- style: styles.successContent,
867
- children: [/*#__PURE__*/_jsx(Ionicons, {
868
- name: "checkmark-circle",
869
- size: 64,
870
- color: colors.success || '#4BB543',
871
- style: styles.successIcon
872
- }), /*#__PURE__*/_jsx(Text, {
873
- style: styles.successMainTitle,
874
- children: "Payment Successful!"
875
- }), /*#__PURE__*/_jsx(Text, {
876
- style: styles.successSubtitle,
877
- children: "Thank you for your payment."
878
- }), /*#__PURE__*/_jsx(View, {
879
- style: {
880
- height: 18
881
- }
882
- }), /*#__PURE__*/_jsx(Text, {
883
- style: styles.successMessage,
884
- children: "Your transaction has been processed successfully."
885
- })]
886
- })
887
- })]
888
- }), /*#__PURE__*/_jsx(GroupedPillButtons, {
889
- buttons: [{
890
- text: 'Done',
891
- onPress: handleDone,
892
- icon: 'checkmark',
893
- variant: 'primary'
894
- }],
895
- colors: colors
896
- })]
897
- });
898
182
  const renderCurrentStep = () => {
899
183
  switch (currentStep) {
900
184
  case 0:
901
- return renderSummaryStep();
185
+ return /*#__PURE__*/_jsx(PaymentSummaryStep, {
186
+ paymentItems: paymentItems,
187
+ amount: amount,
188
+ currency: currency,
189
+ description: description,
190
+ colors: colors,
191
+ animations: animations,
192
+ onClose: handleClose,
193
+ onNext: nextStep
194
+ });
902
195
  case 1:
903
- return renderMethodStep();
196
+ return /*#__PURE__*/_jsx(PaymentMethodStep, {
197
+ availablePaymentMethods: availablePaymentMethods,
198
+ selectedMethod: paymentMethod,
199
+ onSelectMethod: setPaymentMethod,
200
+ colors: colors,
201
+ animations: animations,
202
+ onBack: prevStep,
203
+ onNext: nextStep
204
+ });
904
205
  case 2:
905
- return renderDetailsStep();
206
+ return /*#__PURE__*/_jsx(PaymentDetailsStep, {
207
+ paymentMethod: paymentMethod,
208
+ cardDetails: cardDetails,
209
+ onCardDetailsChange: setCardDetails,
210
+ colors: colors,
211
+ animations: animations,
212
+ faircoinAddress: faircoinAddress,
213
+ isMobile: isMobile,
214
+ qrSize: qrSize,
215
+ onBack: prevStep,
216
+ onNext: nextStep,
217
+ QRCodeComponent: QRCode
218
+ });
906
219
  case 3:
907
- return renderReviewStep();
220
+ return /*#__PURE__*/_jsx(PaymentReviewStep, {
221
+ amount: amount,
222
+ currency: currency,
223
+ paymentMethod: paymentMethod,
224
+ cardDetails: cardDetails,
225
+ colors: colors,
226
+ animations: animations,
227
+ isPaying: isPaying,
228
+ onBack: prevStep,
229
+ onPay: handlePay
230
+ });
908
231
  case 4:
909
- return renderSuccessStep();
232
+ return /*#__PURE__*/_jsx(PaymentSuccessStep, {
233
+ colors: colors,
234
+ animations: animations,
235
+ onDone: handleDone
236
+ });
910
237
  default:
911
- return renderSummaryStep();
238
+ return null;
912
239
  }
913
240
  };
914
-
915
- // Use centralized theme styles hook for consistency
916
- // primaryColor from hook (#007AFF) is already correct for this screen
917
- const themeStyles = useThemeStyles(normalizedTheme);
918
241
  return /*#__PURE__*/_jsx(View, {
919
242
  style: [styles.container, {
920
243
  backgroundColor: themeStyles.backgroundColor
@@ -926,658 +249,5 @@ const PaymentGatewayScreen = props => {
926
249
  })
927
250
  });
928
251
  };
929
- const createStyles = (colors, theme) => StyleSheet.create({
930
- container: {
931
- flex: 1
932
- },
933
- content: {
934
- flex: 1,
935
- padding: 16
936
- },
937
- stepContainer: {
938
- justifyContent: 'flex-start',
939
- alignItems: 'flex-start',
940
- width: '100%'
941
- },
942
- section: {
943
- marginBottom: 24,
944
- width: '100%'
945
- },
946
- sectionTitle: {
947
- fontSize: 16,
948
- fontWeight: '600',
949
- color: colors.text,
950
- marginBottom: 12,
951
- fontFamily: fontFamilies.phuduSemiBold
952
- },
953
- stepIndicatorContainer: {
954
- flexDirection: 'row',
955
- justifyContent: 'center',
956
- alignItems: 'center',
957
- marginVertical: 16
958
- },
959
- stepIndicator: {
960
- height: 10,
961
- borderRadius: 5,
962
- marginHorizontal: 4
963
- },
964
- stepIndicatorActive: {
965
- width: 28,
966
- backgroundColor: colors.primary
967
- },
968
- stepIndicatorInactive: {
969
- width: 10,
970
- backgroundColor: colors.border
971
- },
972
- logo: {
973
- width: 40,
974
- height: 20,
975
- alignSelf: 'center',
976
- resizeMode: 'contain'
977
- },
978
- headerTitle: {
979
- fontFamily: fontFamilies.phuduBold,
980
- fontSize: 22,
981
- fontWeight: Platform.OS === 'web' ? 'bold' : undefined,
982
- color: colors.text,
983
- letterSpacing: -0.5
984
- },
985
- paymentMethodButton: {
986
- flexDirection: 'row',
987
- alignItems: 'center',
988
- borderRadius: 16,
989
- padding: 14,
990
- marginBottom: 10,
991
- width: '90%',
992
- alignSelf: 'center',
993
- borderWidth: 1
994
- },
995
- paymentMethodButtonActive: {
996
- backgroundColor: colors.primary + '22',
997
- borderColor: colors.primary,
998
- borderWidth: 2
999
- },
1000
- paymentMethodButtonInactive: {
1001
- backgroundColor: 'transparent',
1002
- borderColor: colors.border,
1003
- borderWidth: 1
1004
- },
1005
- paymentMethodLabel: {
1006
- fontFamily: fontFamilies.phudu,
1007
- fontSize: 18,
1008
- color: colors.text,
1009
- fontWeight: '600'
1010
- },
1011
- paymentMethodDescription: {
1012
- fontFamily: fontFamilies.phudu,
1013
- fontSize: 15,
1014
- color: colors.secondaryText,
1015
- marginTop: 8,
1016
- minHeight: 36,
1017
- textAlign: 'center'
1018
- },
1019
- errorContainer: {
1020
- flex: 1,
1021
- justifyContent: 'center',
1022
- alignItems: 'center',
1023
- padding: 32
1024
- },
1025
- errorText: {
1026
- fontSize: 18,
1027
- color: 'red',
1028
- marginBottom: 24
1029
- },
1030
- methodListContainer: {
1031
- width: '100%',
1032
- alignItems: 'center'
1033
- },
1034
- methodIcon: {
1035
- marginRight: 12
1036
- },
1037
- methodCheckIcon: {
1038
- marginLeft: 'auto'
1039
- },
1040
- cardRowInfo: {
1041
- flexDirection: 'row',
1042
- alignItems: 'center',
1043
- marginBottom: 16
1044
- },
1045
- cardRowIcon: {
1046
- marginRight: 8
1047
- },
1048
- cardRowText: {
1049
- fontSize: 15,
1050
- color: colors.secondaryText
1051
- },
1052
- cardFieldContainer: {
1053
- marginBottom: 16
1054
- },
1055
- cardFieldRow: {
1056
- flexDirection: 'row',
1057
- gap: 12
1058
- },
1059
- cardFieldHalfLeft: {
1060
- flex: 1,
1061
- marginRight: 6
1062
- },
1063
- cardFieldHalfRight: {
1064
- flex: 1,
1065
- marginLeft: 6
1066
- },
1067
- oxyPayContainer: {
1068
- alignItems: 'center'
1069
- },
1070
- oxyPayIcon: {
1071
- marginBottom: 8
1072
- },
1073
- oxyPayTitle: {
1074
- fontSize: 16,
1075
- marginBottom: 8,
1076
- color: colors.text,
1077
- fontWeight: '600',
1078
- textAlign: 'center'
1079
- },
1080
- oxyPaySubtitle: {
1081
- fontSize: 14,
1082
- color: colors.secondaryText,
1083
- marginBottom: 8,
1084
- textAlign: 'center'
1085
- },
1086
- oxyPayBalanceBox: {
1087
- backgroundColor: colors.primary + '22',
1088
- borderRadius: 12,
1089
- padding: 8,
1090
- marginTop: 8
1091
- },
1092
- oxyPayBalanceText: {
1093
- color: colors.primary,
1094
- fontWeight: '600'
1095
- },
1096
- oxyPayCard: {
1097
- backgroundColor: '#fff',
1098
- borderRadius: 16,
1099
- padding: 24,
1100
- marginBottom: 24,
1101
- alignItems: 'center',
1102
- width: '100%'
1103
- },
1104
- oxyPayContent: {
1105
- alignItems: 'center',
1106
- width: '100%'
1107
- },
1108
- oxyPayMainTitle: {
1109
- fontFamily: fontFamilies.phuduBold,
1110
- fontWeight: 'bold',
1111
- fontSize: 28,
1112
- color: colors.text,
1113
- marginBottom: 2,
1114
- textAlign: 'center',
1115
- letterSpacing: 0.5
1116
- },
1117
- oxyPayWaiting: {
1118
- fontSize: 14,
1119
- color: colors.secondaryText,
1120
- textAlign: 'center',
1121
- marginBottom: 8
1122
- },
1123
- faircoinContainer: {
1124
- alignItems: 'center',
1125
- marginBottom: 24,
1126
- width: '100%'
1127
- },
1128
- faircoinIcon: {
1129
- marginBottom: 8
1130
- },
1131
- faircoinMainTitle: {
1132
- fontFamily: fontFamilies.phuduBold,
1133
- fontWeight: 'bold',
1134
- fontSize: 28,
1135
- color: '#1b1f0a',
1136
- marginBottom: 2,
1137
- textAlign: 'center',
1138
- letterSpacing: 0.5
1139
- },
1140
- faircoinSubtitle: {
1141
- color: '#1b1f0a',
1142
- fontWeight: '700',
1143
- fontSize: 17,
1144
- marginBottom: 18,
1145
- textAlign: 'center',
1146
- letterSpacing: 0.2
1147
- },
1148
- faircoinScanText: {
1149
- color: '#1b1f0a',
1150
- fontWeight: '600',
1151
- fontSize: 15,
1152
- marginBottom: 8
1153
- },
1154
- faircoinQRCard: {
1155
- width: 200,
1156
- height: 200,
1157
- backgroundColor: '#fff',
1158
- borderRadius: 32,
1159
- justifyContent: 'center',
1160
- alignItems: 'center',
1161
- marginBottom: 16,
1162
- padding: 16,
1163
- borderWidth: 3,
1164
- borderColor: '#9ffb50',
1165
- shadowColor: '#9ffb50',
1166
- shadowOffset: {
1167
- width: 0,
1168
- height: 4
1169
- },
1170
- shadowOpacity: 0.25,
1171
- shadowRadius: 12,
1172
- elevation: 8,
1173
- position: 'relative'
1174
- },
1175
- faircoinQRBadge: {
1176
- position: 'absolute',
1177
- bottom: 12,
1178
- right: 12,
1179
- backgroundColor: '#fff',
1180
- borderRadius: 16,
1181
- padding: 4,
1182
- shadowColor: '#000',
1183
- shadowOffset: {
1184
- width: 0,
1185
- height: 2
1186
- },
1187
- shadowOpacity: 0.1,
1188
- shadowRadius: 4,
1189
- elevation: 2
1190
- },
1191
- faircoinTitle: {
1192
- fontSize: 16,
1193
- marginBottom: 8,
1194
- color: colors.text,
1195
- fontWeight: '600',
1196
- textAlign: 'center'
1197
- },
1198
- faircoinQRBox: {
1199
- width: 160,
1200
- height: 160,
1201
- backgroundColor: '#eee',
1202
- borderRadius: 16,
1203
- justifyContent: 'center',
1204
- alignItems: 'center',
1205
- marginBottom: 12,
1206
- borderWidth: 2,
1207
- borderColor: colors.primary
1208
- },
1209
- faircoinQRText: {
1210
- color: '#aaa'
1211
- },
1212
- faircoinWaiting: {
1213
- fontSize: 14,
1214
- color: colors.secondaryText,
1215
- textAlign: 'center',
1216
- marginBottom: 8
1217
- },
1218
- faircoinPlaceholder: {
1219
- fontSize: 13,
1220
- color: colors.secondaryText,
1221
- textAlign: 'center'
1222
- },
1223
- faircoinCard: {
1224
- backgroundColor: '#fff',
1225
- borderRadius: 16,
1226
- padding: 24,
1227
- marginBottom: 24,
1228
- alignItems: 'center',
1229
- width: '100%'
1230
- },
1231
- faircoinContent: {
1232
- alignItems: 'center',
1233
- width: '100%'
1234
- },
1235
- successCard: {
1236
- backgroundColor: '#fff',
1237
- borderRadius: 16,
1238
- padding: 24,
1239
- marginBottom: 24,
1240
- alignItems: 'center',
1241
- width: '100%'
1242
- },
1243
- successContent: {
1244
- alignItems: 'center',
1245
- width: '100%'
1246
- },
1247
- successIcon: {
1248
- marginBottom: 8
1249
- },
1250
- successMainTitle: {
1251
- fontFamily: fontFamilies.phuduBold,
1252
- fontWeight: 'bold',
1253
- fontSize: 28,
1254
- color: colors.success || '#4BB543',
1255
- marginBottom: 2,
1256
- textAlign: 'center',
1257
- letterSpacing: 0.5
1258
- },
1259
- successSubtitle: {
1260
- fontSize: 16,
1261
- color: colors.text,
1262
- textAlign: 'center',
1263
- marginBottom: 8,
1264
- width: '100%'
1265
- },
1266
- successMessage: {
1267
- fontSize: 14,
1268
- color: colors.secondaryText,
1269
- textAlign: 'center',
1270
- marginBottom: 8
1271
- },
1272
- methodCard: {
1273
- flexDirection: 'row',
1274
- alignItems: 'center',
1275
- backgroundColor: '#fff',
1276
- borderRadius: 18,
1277
- paddingVertical: 18,
1278
- paddingHorizontal: 18,
1279
- marginBottom: 14,
1280
- borderWidth: 1.5,
1281
- borderColor: colors.border,
1282
- shadowColor: '#000',
1283
- shadowOffset: {
1284
- width: 0,
1285
- height: 2
1286
- },
1287
- shadowOpacity: 0.06,
1288
- shadowRadius: 6,
1289
- elevation: 2,
1290
- minHeight: 72
1291
- },
1292
- methodCardSelected: {
1293
- backgroundColor: colors.primary + '11',
1294
- borderColor: colors.primary,
1295
- shadowOpacity: 0.13,
1296
- shadowRadius: 10,
1297
- elevation: 4
1298
- },
1299
- methodCardContent: {
1300
- flexDirection: 'row',
1301
- alignItems: 'center',
1302
- flex: 1
1303
- },
1304
- methodCardIcon: {
1305
- marginRight: 18,
1306
- marginLeft: 2
1307
- },
1308
- methodCardTextContainer: {
1309
- flex: 1,
1310
- flexDirection: 'column',
1311
- justifyContent: 'center'
1312
- },
1313
- methodCardDescription: {
1314
- fontSize: 14,
1315
- color: colors.secondaryText,
1316
- marginTop: 2,
1317
- opacity: 0.85
1318
- },
1319
- methodCardCheckIcon: {
1320
- marginLeft: 12
1321
- },
1322
- paymentMethodLabelSelected: {
1323
- color: colors.primary
1324
- },
1325
- circleListContainer: {
1326
- flexDirection: 'row',
1327
- flexWrap: 'nowrap',
1328
- justifyContent: 'center',
1329
- alignItems: 'flex-start',
1330
- paddingHorizontal: 4,
1331
- width: '100%',
1332
- marginBottom: 0
1333
- },
1334
- circleMethod: {
1335
- alignItems: 'center',
1336
- marginHorizontal: 0,
1337
- flex: 1,
1338
- minWidth: 62,
1339
- paddingVertical: 2,
1340
- paddingHorizontal: 2
1341
- },
1342
- circleMethodSelected: {
1343
- // No extra margin, but highlight below
1344
- },
1345
- circleIconWrapper: {
1346
- width: 48,
1347
- // restored padding
1348
- height: 48,
1349
- // restored padding
1350
- borderRadius: 24,
1351
- // half of width/height
1352
- backgroundColor: '#fff',
1353
- borderWidth: 2,
1354
- borderColor: colors.border,
1355
- alignItems: 'center',
1356
- justifyContent: 'center',
1357
- marginBottom: 8,
1358
- // spacing below icon
1359
- shadowColor: '#000',
1360
- shadowOffset: {
1361
- width: 0,
1362
- height: 2
1363
- },
1364
- shadowOpacity: 0.07,
1365
- shadowRadius: 6,
1366
- elevation: 2
1367
- },
1368
- circleLabel: {
1369
- fontFamily: fontFamilies.phudu,
1370
- fontSize: 16,
1371
- color: colors.text,
1372
- fontWeight: '600',
1373
- textAlign: 'center',
1374
- marginBottom: 4,
1375
- marginTop: 2
1376
- },
1377
- circleLabelSelected: {
1378
- color: colors.primary
1379
- },
1380
- circleDescription: {
1381
- fontSize: 13,
1382
- color: colors.secondaryText,
1383
- textAlign: 'center',
1384
- opacity: 0.85,
1385
- minHeight: 36,
1386
- marginBottom: 2
1387
- },
1388
- headerStepIndicatorContainer: {
1389
- marginVertical: 2,
1390
- flexDirection: 'row',
1391
- justifyContent: 'center',
1392
- alignItems: 'center'
1393
- },
1394
- faircoinButton: {
1395
- flexDirection: 'row',
1396
- alignItems: 'center',
1397
- alignSelf: 'center',
1398
- backgroundColor: colors.primary + '11',
1399
- borderRadius: 16,
1400
- paddingHorizontal: 16,
1401
- paddingVertical: 8,
1402
- marginTop: 6,
1403
- marginBottom: 2
1404
- },
1405
- faircoinButtonText: {
1406
- color: colors.primary,
1407
- fontWeight: '600',
1408
- fontSize: 15
1409
- },
1410
- faircoinAddress: {
1411
- color: colors.secondaryText,
1412
- fontSize: 13,
1413
- textAlign: 'center',
1414
- marginTop: 6,
1415
- marginBottom: 2
1416
- },
1417
- // Summary step styles
1418
- summaryDescriptionContainer: {
1419
- marginBottom: 16
1420
- },
1421
- summaryDescriptionText: {
1422
- color: colors.secondaryText,
1423
- fontSize: 15,
1424
- lineHeight: 20
1425
- },
1426
- summaryItemPrice: {
1427
- color: colors.text,
1428
- fontWeight: '600',
1429
- fontSize: 16
1430
- },
1431
- summaryFallbackContainer: {
1432
- padding: 16,
1433
- backgroundColor: '#fff',
1434
- borderRadius: 12,
1435
- borderWidth: 1,
1436
- borderColor: colors.border
1437
- },
1438
- summaryFallbackText: {
1439
- color: colors.text,
1440
- fontSize: 16,
1441
- textAlign: 'center'
1442
- },
1443
- // Card payment styles
1444
- cardPaymentCard: {
1445
- backgroundColor: '#fff',
1446
- borderRadius: 16,
1447
- padding: 24,
1448
- marginBottom: 24,
1449
- alignItems: 'center',
1450
- width: '100%'
1451
- },
1452
- cardPaymentContent: {
1453
- alignItems: 'center',
1454
- width: '100%'
1455
- },
1456
- cardPaymentIcon: {
1457
- marginBottom: 8
1458
- },
1459
- cardPaymentMainTitle: {
1460
- fontFamily: fontFamilies.phuduBold,
1461
- fontWeight: 'bold',
1462
- fontSize: 28,
1463
- color: colors.text,
1464
- marginBottom: 2,
1465
- textAlign: 'center',
1466
- letterSpacing: 0.5
1467
- },
1468
- cardPaymentSubtitle: {
1469
- fontSize: 16,
1470
- color: colors.secondaryText,
1471
- textAlign: 'center',
1472
- marginBottom: 24,
1473
- width: '100%'
1474
- },
1475
- cardPaymentFields: {
1476
- width: '100%',
1477
- marginBottom: 16
1478
- },
1479
- cardPaymentWaiting: {
1480
- fontSize: 14,
1481
- color: colors.secondaryText,
1482
- textAlign: 'center',
1483
- marginBottom: 8
1484
- },
1485
- // Summary card styles
1486
- summaryCard: {
1487
- backgroundColor: '#fff',
1488
- borderRadius: 16,
1489
- padding: 24,
1490
- marginBottom: 24,
1491
- alignItems: 'center',
1492
- width: '100%'
1493
- },
1494
- summaryCardContent: {
1495
- alignItems: 'center',
1496
- width: '100%'
1497
- },
1498
- summaryCardIcon: {
1499
- marginBottom: 8
1500
- },
1501
- summaryCardMainTitle: {
1502
- fontFamily: fontFamilies.phuduBold,
1503
- fontWeight: 'bold',
1504
- fontSize: 28,
1505
- color: colors.text,
1506
- marginBottom: 2,
1507
- textAlign: 'center',
1508
- letterSpacing: 0.5
1509
- },
1510
- summaryCardSubtitle: {
1511
- fontSize: 16,
1512
- color: colors.secondaryText,
1513
- textAlign: 'center',
1514
- marginBottom: 24,
1515
- width: '100%'
1516
- },
1517
- summaryCardItems: {
1518
- width: '100%',
1519
- marginBottom: 16
1520
- },
1521
- summaryCardTotal: {
1522
- fontSize: 18,
1523
- fontWeight: 'bold',
1524
- color: colors.text,
1525
- textAlign: 'center',
1526
- marginBottom: 8
1527
- },
1528
- // Simple amount styles
1529
- summaryCardAmount: {
1530
- alignItems: 'center',
1531
- width: '100%',
1532
- marginBottom: 16
1533
- },
1534
- summaryCardAmountLabel: {
1535
- fontSize: 16,
1536
- color: colors.secondaryText,
1537
- textAlign: 'center',
1538
- marginBottom: 8
1539
- },
1540
- summaryCardAmountValue: {
1541
- fontSize: 32,
1542
- fontWeight: 'bold',
1543
- color: colors.text,
1544
- textAlign: 'center',
1545
- marginBottom: 8,
1546
- fontFamily: fontFamilies.phuduBold
1547
- },
1548
- summaryCardAmountDescription: {
1549
- fontSize: 14,
1550
- color: colors.secondaryText,
1551
- textAlign: 'center',
1552
- lineHeight: 20
1553
- },
1554
- // Enhanced summary styles
1555
- summaryCardDivider: {
1556
- height: 1,
1557
- backgroundColor: colors.border,
1558
- marginVertical: 16,
1559
- width: '100%'
1560
- },
1561
- summaryCardTotalSection: {
1562
- width: '100%',
1563
- marginBottom: 8
1564
- },
1565
- summaryCardTotalRow: {
1566
- flexDirection: 'row',
1567
- justifyContent: 'space-between',
1568
- alignItems: 'center',
1569
- paddingVertical: 4
1570
- },
1571
- summaryCardTotalLabel: {
1572
- fontSize: 16,
1573
- color: colors.secondaryText,
1574
- fontWeight: '500'
1575
- },
1576
- summaryCardTotalValue: {
1577
- fontSize: 16,
1578
- color: colors.text,
1579
- fontWeight: '600'
1580
- }
1581
- });
1582
252
  export default PaymentGatewayScreen;
1583
253
  //# sourceMappingURL=PaymentGatewayScreen.js.map