@oxyhq/services 5.7.5 → 5.8.2

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 (303) hide show
  1. package/README.md +76 -76
  2. package/lib/commonjs/core/index.js +177 -102
  3. package/lib/commonjs/core/index.js.map +1 -1
  4. package/lib/commonjs/index.js +69 -28
  5. package/lib/commonjs/index.js.map +1 -1
  6. package/lib/commonjs/ui/components/Avatar.js +15 -6
  7. package/lib/commonjs/ui/components/Avatar.js.map +1 -1
  8. package/lib/commonjs/ui/components/FollowButton.js +100 -12
  9. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  10. package/lib/commonjs/ui/components/GroupedItem.js +58 -13
  11. package/lib/commonjs/ui/components/GroupedItem.js.map +1 -1
  12. package/lib/commonjs/ui/components/GroupedSection.js +7 -1
  13. package/lib/commonjs/ui/components/GroupedSection.js.map +1 -1
  14. package/lib/commonjs/ui/components/Header.js +356 -0
  15. package/lib/commonjs/ui/components/Header.js.map +1 -0
  16. package/lib/commonjs/ui/components/OxyProvider.js +28 -7
  17. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  18. package/lib/commonjs/ui/components/index.js +7 -0
  19. package/lib/commonjs/ui/components/index.js.map +1 -1
  20. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js +1 -1
  21. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js.map +1 -1
  22. package/lib/commonjs/ui/components/internal/TextField.js +606 -546
  23. package/lib/commonjs/ui/components/internal/TextField.js.map +1 -1
  24. package/lib/commonjs/ui/components/internal/TextField.md +436 -0
  25. package/lib/commonjs/ui/context/OxyContext.js +181 -199
  26. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  27. package/lib/commonjs/ui/hooks/index.js +6 -0
  28. package/lib/commonjs/ui/hooks/index.js.map +1 -1
  29. package/lib/commonjs/ui/hooks/useFollow.js +59 -2
  30. package/lib/commonjs/ui/hooks/useFollow.js.map +1 -1
  31. package/lib/commonjs/ui/hooks/useSessionSocket.js +5 -2
  32. package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -1
  33. package/lib/commonjs/ui/navigation/OxyRouter.js +11 -1
  34. package/lib/commonjs/ui/navigation/OxyRouter.js.map +1 -1
  35. package/lib/commonjs/ui/screens/AccountCenterScreen.js +6 -6
  36. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  37. package/lib/commonjs/ui/screens/AccountManagementDemo.js +3 -3
  38. package/lib/commonjs/ui/screens/AccountManagementDemo.js.map +1 -1
  39. package/lib/commonjs/ui/screens/AccountOverviewScreen.js +241 -598
  40. package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
  41. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +1160 -406
  42. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  43. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +135 -237
  44. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  45. package/lib/commonjs/ui/screens/AppInfoScreen.js +246 -463
  46. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  47. package/lib/commonjs/ui/screens/FeedbackScreen.js +3 -3
  48. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  49. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +808 -650
  50. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
  51. package/lib/commonjs/ui/screens/ProfileScreen.js +214 -37
  52. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  53. package/lib/commonjs/ui/screens/RecoverAccountScreen.js +51 -72
  54. package/lib/commonjs/ui/screens/RecoverAccountScreen.js.map +1 -1
  55. package/lib/commonjs/ui/screens/SessionManagementScreen.js +11 -29
  56. package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
  57. package/lib/commonjs/ui/screens/SignInScreen.js +30 -303
  58. package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
  59. package/lib/commonjs/ui/screens/SignUpScreen.js +4 -4
  60. package/lib/commonjs/ui/screens/SignUpScreen.js.map +1 -1
  61. package/lib/commonjs/ui/screens/UserLinksScreen.js +90 -0
  62. package/lib/commonjs/ui/screens/UserLinksScreen.js.map +1 -0
  63. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js +19 -31
  64. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js.map +1 -1
  65. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js +7 -10
  66. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js.map +1 -1
  67. package/lib/commonjs/ui/screens/internal/SignUpIdentityStep.js +11 -5
  68. package/lib/commonjs/ui/screens/internal/SignUpIdentityStep.js.map +1 -1
  69. package/lib/commonjs/ui/screens/internal/SignUpSecurityStep.js +11 -4
  70. package/lib/commonjs/ui/screens/internal/SignUpSecurityStep.js.map +1 -1
  71. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js +9 -6
  72. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
  73. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +3 -30
  74. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  75. package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js +37 -46
  76. package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
  77. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js +9 -12
  78. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
  79. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js +9 -12
  80. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
  81. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js +9 -12
  82. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
  83. package/lib/commonjs/ui/stores/authStore.js +36 -6
  84. package/lib/commonjs/ui/stores/authStore.js.map +1 -1
  85. package/lib/commonjs/ui/stores/followStore.js +106 -1
  86. package/lib/commonjs/ui/stores/followStore.js.map +1 -1
  87. package/lib/commonjs/ui/styles/authStyles.js +337 -0
  88. package/lib/commonjs/ui/styles/authStyles.js.map +1 -0
  89. package/lib/commonjs/ui/styles/index.js +11 -0
  90. package/lib/commonjs/ui/styles/index.js.map +1 -1
  91. package/lib/module/core/index.js +177 -41
  92. package/lib/module/core/index.js.map +1 -1
  93. package/lib/module/index.js +24 -4
  94. package/lib/module/index.js.map +1 -1
  95. package/lib/module/ui/components/Avatar.js +15 -6
  96. package/lib/module/ui/components/Avatar.js.map +1 -1
  97. package/lib/module/ui/components/FollowButton.js +101 -13
  98. package/lib/module/ui/components/FollowButton.js.map +1 -1
  99. package/lib/module/ui/components/GroupedItem.js +59 -14
  100. package/lib/module/ui/components/GroupedItem.js.map +1 -1
  101. package/lib/module/ui/components/GroupedSection.js +7 -1
  102. package/lib/module/ui/components/GroupedSection.js.map +1 -1
  103. package/lib/module/ui/components/Header.js +351 -0
  104. package/lib/module/ui/components/Header.js.map +1 -0
  105. package/lib/module/ui/components/OxyProvider.js +30 -9
  106. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  107. package/lib/module/ui/components/index.js +1 -0
  108. package/lib/module/ui/components/index.js.map +1 -1
  109. package/lib/module/ui/components/internal/GroupedPillButtons.js +1 -1
  110. package/lib/module/ui/components/internal/GroupedPillButtons.js.map +1 -1
  111. package/lib/module/ui/components/internal/TextField.js +607 -547
  112. package/lib/module/ui/components/internal/TextField.js.map +1 -1
  113. package/lib/module/ui/components/internal/TextField.md +436 -0
  114. package/lib/module/ui/context/OxyContext.js +180 -198
  115. package/lib/module/ui/context/OxyContext.js.map +1 -1
  116. package/lib/module/ui/hooks/index.js +1 -1
  117. package/lib/module/ui/hooks/index.js.map +1 -1
  118. package/lib/module/ui/hooks/useFollow.js +57 -1
  119. package/lib/module/ui/hooks/useFollow.js.map +1 -1
  120. package/lib/module/ui/hooks/useSessionSocket.js +5 -2
  121. package/lib/module/ui/hooks/useSessionSocket.js.map +1 -1
  122. package/lib/module/ui/navigation/OxyRouter.js +11 -1
  123. package/lib/module/ui/navigation/OxyRouter.js.map +1 -1
  124. package/lib/module/ui/screens/AccountCenterScreen.js +6 -6
  125. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  126. package/lib/module/ui/screens/AccountManagementDemo.js +3 -3
  127. package/lib/module/ui/screens/AccountManagementDemo.js.map +1 -1
  128. package/lib/module/ui/screens/AccountOverviewScreen.js +242 -597
  129. package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
  130. package/lib/module/ui/screens/AccountSettingsScreen.js +1161 -407
  131. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  132. package/lib/module/ui/screens/AccountSwitcherScreen.js +135 -237
  133. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  134. package/lib/module/ui/screens/AppInfoScreen.js +248 -465
  135. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  136. package/lib/module/ui/screens/FeedbackScreen.js +3 -3
  137. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  138. package/lib/module/ui/screens/PaymentGatewayScreen.js +809 -651
  139. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
  140. package/lib/module/ui/screens/ProfileScreen.js +214 -37
  141. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  142. package/lib/module/ui/screens/RecoverAccountScreen.js +53 -74
  143. package/lib/module/ui/screens/RecoverAccountScreen.js.map +1 -1
  144. package/lib/module/ui/screens/SessionManagementScreen.js +11 -29
  145. package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
  146. package/lib/module/ui/screens/SignInScreen.js +32 -305
  147. package/lib/module/ui/screens/SignInScreen.js.map +1 -1
  148. package/lib/module/ui/screens/SignUpScreen.js +5 -5
  149. package/lib/module/ui/screens/SignUpScreen.js.map +1 -1
  150. package/lib/module/ui/screens/UserLinksScreen.js +85 -0
  151. package/lib/module/ui/screens/UserLinksScreen.js.map +1 -0
  152. package/lib/module/ui/screens/internal/SignInPasswordStep.js +19 -31
  153. package/lib/module/ui/screens/internal/SignInPasswordStep.js.map +1 -1
  154. package/lib/module/ui/screens/internal/SignInUsernameStep.js +7 -10
  155. package/lib/module/ui/screens/internal/SignInUsernameStep.js.map +1 -1
  156. package/lib/module/ui/screens/internal/SignUpIdentityStep.js +11 -5
  157. package/lib/module/ui/screens/internal/SignUpIdentityStep.js.map +1 -1
  158. package/lib/module/ui/screens/internal/SignUpSecurityStep.js +11 -4
  159. package/lib/module/ui/screens/internal/SignUpSecurityStep.js.map +1 -1
  160. package/lib/module/ui/screens/karma/KarmaAboutScreen.js +9 -6
  161. package/lib/module/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
  162. package/lib/module/ui/screens/karma/KarmaCenterScreen.js +3 -30
  163. package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  164. package/lib/module/ui/screens/karma/KarmaFAQScreen.js +37 -46
  165. package/lib/module/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
  166. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js +9 -12
  167. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
  168. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js +9 -12
  169. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
  170. package/lib/module/ui/screens/karma/KarmaRulesScreen.js +9 -12
  171. package/lib/module/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
  172. package/lib/module/ui/stores/authStore.js +36 -6
  173. package/lib/module/ui/stores/authStore.js.map +1 -1
  174. package/lib/module/ui/stores/followStore.js +106 -1
  175. package/lib/module/ui/stores/followStore.js.map +1 -1
  176. package/lib/module/ui/styles/authStyles.js +332 -0
  177. package/lib/module/ui/styles/authStyles.js.map +1 -0
  178. package/lib/module/ui/styles/index.js +1 -0
  179. package/lib/module/ui/styles/index.js.map +1 -1
  180. package/lib/typescript/core/index.d.ts +68 -24
  181. package/lib/typescript/core/index.d.ts.map +1 -1
  182. package/lib/typescript/index.d.ts +13 -3
  183. package/lib/typescript/index.d.ts.map +1 -1
  184. package/lib/typescript/ui/components/Avatar.d.ts.map +1 -1
  185. package/lib/typescript/ui/components/FollowButton.d.ts +1 -0
  186. package/lib/typescript/ui/components/FollowButton.d.ts.map +1 -1
  187. package/lib/typescript/ui/components/GroupedItem.d.ts +6 -0
  188. package/lib/typescript/ui/components/GroupedItem.d.ts.map +1 -1
  189. package/lib/typescript/ui/components/GroupedSection.d.ts +6 -0
  190. package/lib/typescript/ui/components/GroupedSection.d.ts.map +1 -1
  191. package/lib/typescript/ui/components/Header.d.ts +24 -0
  192. package/lib/typescript/ui/components/Header.d.ts.map +1 -0
  193. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  194. package/lib/typescript/ui/components/index.d.ts +1 -0
  195. package/lib/typescript/ui/components/index.d.ts.map +1 -1
  196. package/lib/typescript/ui/components/internal/TextField.d.ts +31 -16
  197. package/lib/typescript/ui/components/internal/TextField.d.ts.map +1 -1
  198. package/lib/typescript/ui/context/OxyContext.d.ts +5 -2
  199. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  200. package/lib/typescript/ui/hooks/index.d.ts +1 -1
  201. package/lib/typescript/ui/hooks/index.d.ts.map +1 -1
  202. package/lib/typescript/ui/hooks/useFollow.d.ts +20 -0
  203. package/lib/typescript/ui/hooks/useFollow.d.ts.map +1 -1
  204. package/lib/typescript/ui/hooks/useSessionSocket.d.ts.map +1 -1
  205. package/lib/typescript/ui/navigation/OxyRouter.d.ts.map +1 -1
  206. package/lib/typescript/ui/navigation/types.d.ts +9 -2
  207. package/lib/typescript/ui/navigation/types.d.ts.map +1 -1
  208. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
  209. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  210. package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
  211. package/lib/typescript/ui/screens/AppInfoScreen.d.ts.map +1 -1
  212. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  213. package/lib/typescript/ui/screens/ProfileScreen.d.ts.map +1 -1
  214. package/lib/typescript/ui/screens/RecoverAccountScreen.d.ts +5 -1
  215. package/lib/typescript/ui/screens/RecoverAccountScreen.d.ts.map +1 -1
  216. package/lib/typescript/ui/screens/SessionManagementScreen.d.ts.map +1 -1
  217. package/lib/typescript/ui/screens/SignInScreen.d.ts.map +1 -1
  218. package/lib/typescript/ui/screens/UserLinksScreen.d.ts +15 -0
  219. package/lib/typescript/ui/screens/UserLinksScreen.d.ts.map +1 -0
  220. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts +1 -1
  221. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts.map +1 -1
  222. package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts +0 -1
  223. package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts.map +1 -1
  224. package/lib/typescript/ui/screens/internal/SignUpIdentityStep.d.ts.map +1 -1
  225. package/lib/typescript/ui/screens/internal/SignUpSecurityStep.d.ts.map +1 -1
  226. package/lib/typescript/ui/screens/karma/KarmaAboutScreen.d.ts.map +1 -1
  227. package/lib/typescript/ui/screens/karma/KarmaCenterScreen.d.ts.map +1 -1
  228. package/lib/typescript/ui/screens/karma/KarmaFAQScreen.d.ts.map +1 -1
  229. package/lib/typescript/ui/screens/karma/KarmaLeaderboardScreen.d.ts.map +1 -1
  230. package/lib/typescript/ui/screens/karma/KarmaRewardsScreen.d.ts.map +1 -1
  231. package/lib/typescript/ui/screens/karma/KarmaRulesScreen.d.ts.map +1 -1
  232. package/lib/typescript/ui/stores/authStore.d.ts +3 -1
  233. package/lib/typescript/ui/stores/authStore.d.ts.map +1 -1
  234. package/lib/typescript/ui/stores/followStore.d.ts +10 -0
  235. package/lib/typescript/ui/stores/followStore.d.ts.map +1 -1
  236. package/lib/typescript/ui/styles/authStyles.d.ts +326 -0
  237. package/lib/typescript/ui/styles/authStyles.d.ts.map +1 -0
  238. package/lib/typescript/ui/styles/index.d.ts +1 -0
  239. package/lib/typescript/ui/styles/index.d.ts.map +1 -1
  240. package/package.json +1 -4
  241. package/src/core/index.ts +195 -41
  242. package/src/index.ts +64 -4
  243. package/src/ui/components/Avatar.tsx +11 -5
  244. package/src/ui/components/FollowButton.tsx +95 -11
  245. package/src/ui/components/GroupedItem.tsx +57 -9
  246. package/src/ui/components/GroupedSection.tsx +12 -0
  247. package/src/ui/components/Header.tsx +405 -0
  248. package/src/ui/components/OxyProvider.tsx +37 -15
  249. package/src/ui/components/index.ts +1 -0
  250. package/src/ui/components/internal/GroupedPillButtons.tsx +1 -1
  251. package/src/ui/components/internal/TextField.md +436 -0
  252. package/src/ui/components/internal/TextField.tsx +720 -620
  253. package/src/ui/context/OxyContext.tsx +211 -195
  254. package/src/ui/hooks/index.ts +1 -1
  255. package/src/ui/hooks/useFollow.ts +63 -0
  256. package/src/ui/hooks/useSessionSocket.ts +5 -2
  257. package/src/ui/navigation/OxyRouter.tsx +11 -1
  258. package/src/ui/navigation/types.ts +10 -2
  259. package/src/ui/screens/AccountCenterScreen.tsx +5 -5
  260. package/src/ui/screens/AccountManagementDemo.tsx +9 -9
  261. package/src/ui/screens/AccountOverviewScreen.tsx +265 -414
  262. package/src/ui/screens/AccountSettingsScreen.tsx +1173 -403
  263. package/src/ui/screens/AccountSwitcherScreen.tsx +158 -202
  264. package/src/ui/screens/AppInfoScreen.tsx +270 -497
  265. package/src/ui/screens/FeedbackScreen.tsx +3 -3
  266. package/src/ui/screens/PaymentGatewayScreen.tsx +668 -365
  267. package/src/ui/screens/ProfileScreen.tsx +196 -33
  268. package/src/ui/screens/RecoverAccountScreen.tsx +46 -74
  269. package/src/ui/screens/SessionManagementScreen.tsx +14 -22
  270. package/src/ui/screens/SignInScreen.tsx +27 -294
  271. package/src/ui/screens/SignUpScreen.tsx +5 -5
  272. package/src/ui/screens/UserLinksScreen.tsx +96 -0
  273. package/src/ui/screens/internal/SignInPasswordStep.tsx +11 -22
  274. package/src/ui/screens/internal/SignInUsernameStep.tsx +3 -10
  275. package/src/ui/screens/internal/SignUpIdentityStep.tsx +2 -5
  276. package/src/ui/screens/internal/SignUpSecurityStep.tsx +3 -4
  277. package/src/ui/screens/karma/KarmaAboutScreen.tsx +9 -2
  278. package/src/ui/screens/karma/KarmaCenterScreen.tsx +1 -20
  279. package/src/ui/screens/karma/KarmaFAQScreen.tsx +40 -24
  280. package/src/ui/screens/karma/KarmaLeaderboardScreen.tsx +9 -3
  281. package/src/ui/screens/karma/KarmaRewardsScreen.tsx +9 -3
  282. package/src/ui/screens/karma/KarmaRulesScreen.tsx +9 -3
  283. package/src/ui/stores/authStore.ts +34 -7
  284. package/src/ui/stores/followStore.ts +102 -1
  285. package/src/ui/styles/authStyles.ts +352 -0
  286. package/src/ui/styles/index.ts +1 -0
  287. package/lib/commonjs/core/auth-manager.js +0 -440
  288. package/lib/commonjs/core/auth-manager.js.map +0 -1
  289. package/lib/commonjs/core/use-auth.js +0 -244
  290. package/lib/commonjs/core/use-auth.js.map +0 -1
  291. package/lib/module/core/auth-manager.js +0 -432
  292. package/lib/module/core/auth-manager.js.map +0 -1
  293. package/lib/module/core/use-auth.js +0 -235
  294. package/lib/module/core/use-auth.js.map +0 -1
  295. package/lib/typescript/core/auth-manager.d.ts +0 -136
  296. package/lib/typescript/core/auth-manager.d.ts.map +0 -1
  297. package/lib/typescript/core/use-auth.d.ts +0 -79
  298. package/lib/typescript/core/use-auth.d.ts.map +0 -1
  299. package/src/__tests__/middleware.test.ts +0 -105
  300. package/src/__tests__/setup.ts +0 -10
  301. package/src/__tests__/zero-config-auth.test.ts +0 -607
  302. package/src/core/auth-manager.ts +0 -500
  303. package/src/core/use-auth.tsx +0 -245
@@ -7,7 +7,6 @@ exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactNative = require("react-native");
9
9
  var _styles = require("../styles");
10
- var _OxyLogo = _interopRequireDefault(require("../components/OxyLogo"));
11
10
  var _GroupedPillButtons = _interopRequireDefault(require("../components/internal/GroupedPillButtons"));
12
11
  var _TextField = _interopRequireDefault(require("../components/internal/TextField"));
13
12
  var _vectorIcons = require("@expo/vector-icons");
@@ -15,6 +14,7 @@ var _icon = require("../components/icon");
15
14
  var _sonner = require("sonner");
16
15
  var _reactNativeQrcodeSvg = _interopRequireDefault(require("react-native-qrcode-svg"));
17
16
  var RNIap = _interopRequireWildcard(require("react-native-iap"));
17
+ var _components = require("../components");
18
18
  var _jsxRuntime = require("react/jsx-runtime");
19
19
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
20
20
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
@@ -223,12 +223,12 @@ const PaymentGatewayScreen = props => {
223
223
  _reactNative.Animated.timing(scaleAnim, {
224
224
  toValue: 0.95,
225
225
  duration: 150,
226
- useNativeDriver: true
226
+ useNativeDriver: _reactNative.Platform.OS !== 'web'
227
227
  }).start();
228
228
  _reactNative.Animated.timing(fadeAnim, {
229
229
  toValue: 0,
230
230
  duration: 200,
231
- useNativeDriver: true
231
+ useNativeDriver: _reactNative.Platform.OS !== 'web'
232
232
  }).start(() => {
233
233
  setCurrentStep(nextStep);
234
234
  slideAnim.setValue(-50);
@@ -236,17 +236,17 @@ const PaymentGatewayScreen = props => {
236
236
  _reactNative.Animated.parallel([_reactNative.Animated.timing(fadeAnim, {
237
237
  toValue: 1,
238
238
  duration: 300,
239
- useNativeDriver: true
239
+ useNativeDriver: _reactNative.Platform.OS !== 'web'
240
240
  }), _reactNative.Animated.spring(slideAnim, {
241
241
  toValue: 0,
242
242
  tension: 80,
243
243
  friction: 8,
244
- useNativeDriver: true
244
+ useNativeDriver: _reactNative.Platform.OS !== 'web'
245
245
  }), _reactNative.Animated.spring(scaleAnim, {
246
246
  toValue: 1,
247
247
  tension: 80,
248
248
  friction: 8,
249
- useNativeDriver: true
249
+ useNativeDriver: _reactNative.Platform.OS !== 'web'
250
250
  })]).start();
251
251
  });
252
252
  }, [fadeAnim, slideAnim, scaleAnim]);
@@ -401,140 +401,9 @@ const PaymentGatewayScreen = props => {
401
401
 
402
402
  // PaymentGatewayHeader component
403
403
  const stepTitles = ['Complete Your Payment', 'Select Payment Method', 'Enter Payment Details', 'Review & Pay', 'Success'];
404
- const PaymentGatewayHeader = ({
405
- currentStep,
406
- totalSteps,
407
- title
408
- }) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
409
- style: styles.headerWrapper,
410
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_OxyLogo.default, {
411
- style: styles.logo
412
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
413
- style: styles.headerTitle,
414
- children: title
415
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
416
- style: styles.headerStepIndicatorContainer,
417
- children: Array.from({
418
- length: totalSteps
419
- }).map((_, idx) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
420
- style: getStepIndicatorStyle(currentStep + 1 === idx + 1)
421
- }, idx))
422
- })]
423
- });
424
-
425
- // Card container for main content
426
- const Card = ({
427
- children,
428
- style
429
- }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
430
- style: [styles.card, style],
431
- children: children
432
- });
433
-
434
- // Product/Item summary card for step 1
435
- const renderItemSummary = () => {
436
- if (paymentItems && paymentItems.length > 0) {
437
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Card, {
438
- style: {
439
- marginBottom: 10
440
- },
441
- children: [paymentItems.map((item, idx) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
442
- style: {
443
- marginBottom: 8
444
- },
445
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
446
- style: {
447
- flexDirection: 'row',
448
- justifyContent: 'space-between',
449
- alignItems: 'center'
450
- },
451
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
452
- style: {
453
- fontWeight: '600',
454
- color: colors.text
455
- },
456
- children: [item.type === 'product' && item.quantity ? `${item.quantity} × ` : '', item.name, item.type === 'subscription' && item.period ? ` (${item.period})` : '']
457
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
458
- style: {
459
- color: colors.text
460
- },
461
- children: [item.currency ? CURRENCY_SYMBOLS[item.currency.toUpperCase()] || item.currency : currencySymbol, " ", item.price * (item.quantity ?? 1)]
462
- })]
463
- }), item.description ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
464
- style: {
465
- color: colors.secondaryText,
466
- fontSize: 13
467
- },
468
- children: item.description
469
- }) : null]
470
- }, idx)), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
471
- style: {
472
- borderTopWidth: 1,
473
- borderColor: colors.border,
474
- marginTop: 8,
475
- paddingTop: 8,
476
- flexDirection: 'row',
477
- justifyContent: 'space-between',
478
- alignItems: 'center'
479
- },
480
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
481
- style: {
482
- fontWeight: '700',
483
- color: colors.text
484
- },
485
- children: "Total"
486
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
487
- style: {
488
- fontWeight: '700',
489
- color: colors.primary,
490
- fontSize: 18
491
- },
492
- children: [currencySymbol, " ", computedTotal]
493
- })]
494
- })]
495
- });
496
- } else if (description) {
497
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Card, {
498
- style: {
499
- marginBottom: 10
500
- },
501
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
502
- style: {
503
- color: colors.text
504
- },
505
- children: description
506
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
507
- style: {
508
- borderTopWidth: 1,
509
- borderColor: colors.border,
510
- marginTop: 8,
511
- paddingTop: 8,
512
- flexDirection: 'row',
513
- justifyContent: 'space-between',
514
- alignItems: 'center'
515
- },
516
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
517
- style: {
518
- fontWeight: '700',
519
- color: colors.text
520
- },
521
- children: "Total"
522
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
523
- style: {
524
- fontWeight: '700',
525
- color: colors.primary,
526
- fontSize: 18
527
- },
528
- children: [currencySymbol, " ", computedTotal]
529
- })]
530
- })]
531
- });
532
- }
533
- return null;
534
- };
535
404
 
536
405
  // Step 1: Summary step (new first step, no header/dots here)
537
- const renderSummaryStep = () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
406
+ const renderSummaryStep = () => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Animated.View, {
538
407
  style: [styles.stepContainer, {
539
408
  opacity: fadeAnim,
540
409
  transform: [{
@@ -543,68 +412,121 @@ const PaymentGatewayScreen = props => {
543
412
  scale: scaleAnim
544
413
  }]
545
414
  }],
546
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(Card, {
415
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
416
+ style: styles.section,
547
417
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
548
- style: {
549
- color: colors.secondaryText,
550
- fontSize: 15,
551
- marginBottom: 16
552
- },
553
- children: "You're about to pay for the following:"
554
- }), paymentItems && paymentItems.length > 0 ? paymentItems.map((item, idx) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
555
- style: {
556
- marginBottom: 12,
557
- flexDirection: 'row',
558
- alignItems: 'flex-start'
559
- },
560
- children: [getItemTypeIcon(item.type, colors.primary), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
561
- style: {
562
- flex: 1
563
- },
564
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
565
- style: {
566
- fontWeight: '600',
567
- color: colors.text,
568
- fontSize: 16
569
- },
570
- children: [item.type === 'product' && item.quantity ? `${item.quantity} × ` : '', item.name, item.type === 'subscription' && item.period ? ` (${item.period})` : '']
571
- }), item.description ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
572
- style: {
573
- color: colors.secondaryText,
574
- fontSize: 13,
575
- marginTop: 2
576
- },
577
- children: item.description
578
- }) : null]
579
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
580
- style: {
581
- color: colors.text,
582
- fontWeight: '600',
583
- fontSize: 16,
584
- marginLeft: 8
585
- },
586
- children: [item.currency ? CURRENCY_SYMBOLS[item.currency.toUpperCase()] || item.currency : currencySymbol, " ", item.price * (item.quantity ?? 1)]
587
- })]
588
- }, idx)) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
589
- style: {
590
- color: colors.text
591
- },
592
- children: description
593
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GroupedPillButtons.default, {
594
- buttons: [{
595
- text: 'Close',
596
- onPress: handleClose,
597
- icon: 'close',
598
- variant: 'transparent'
599
- }, {
600
- text: 'Continue',
601
- onPress: nextStep,
602
- icon: 'arrow-forward',
603
- variant: 'primary'
604
- }],
605
- colors: colors
418
+ style: styles.sectionTitle,
419
+ children: "Payment Summary"
420
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
421
+ style: styles.summaryCard,
422
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
423
+ style: styles.summaryCardContent,
424
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
425
+ name: "receipt-outline",
426
+ size: 64,
427
+ color: colors.primary,
428
+ style: styles.summaryCardIcon
429
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
430
+ style: styles.summaryCardMainTitle,
431
+ children: paymentItems && paymentItems.length > 0 ? 'Order Summary' : 'Payment'
432
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
433
+ style: styles.summaryCardSubtitle,
434
+ children: paymentItems && paymentItems.length > 0 ? 'Review your payment details' : 'Complete your payment'
435
+ }), paymentItems && paymentItems.length > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
436
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
437
+ style: styles.summaryCardItems,
438
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.GroupedSection, {
439
+ items: paymentItems.map((item, idx) => ({
440
+ id: `item-${idx}`,
441
+ icon: getItemTypeIcon(item.type, colors.primary).props.name,
442
+ iconColor: colors.primary,
443
+ title: `${item.type === 'product' && item.quantity ? `${item.quantity} × ` : ''}${item.name}${item.type === 'subscription' && item.period ? ` (${item.period})` : ''}`,
444
+ subtitle: item.description || `${item.currency ? CURRENCY_SYMBOLS[item.currency.toUpperCase()] || item.currency : currencySymbol} ${item.price * (item.quantity ?? 1)}`,
445
+ customContent: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
446
+ style: styles.summaryItemPrice,
447
+ children: [item.currency ? CURRENCY_SYMBOLS[item.currency.toUpperCase()] || item.currency : currencySymbol, " ", item.price * (item.quantity ?? 1)]
448
+ })
449
+ })),
450
+ theme: theme
451
+ })
452
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
453
+ style: styles.summaryCardDivider
454
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
455
+ style: styles.summaryCardTotalSection,
456
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
457
+ style: styles.summaryCardTotalRow,
458
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
459
+ style: styles.summaryCardTotalLabel,
460
+ children: "Subtotal"
461
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
462
+ style: styles.summaryCardTotalValue,
463
+ children: [currencySymbol, " ", amount]
464
+ })]
465
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
466
+ style: styles.summaryCardTotalRow,
467
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
468
+ style: styles.summaryCardTotalLabel,
469
+ children: "Tax"
470
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
471
+ style: styles.summaryCardTotalValue,
472
+ children: [currencySymbol, " 0.00"]
473
+ })]
474
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
475
+ style: styles.summaryCardTotalRow,
476
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
477
+ style: styles.summaryCardTotalLabel,
478
+ children: "Total"
479
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
480
+ style: styles.summaryCardTotalValue,
481
+ children: [currencySymbol, " ", amount]
482
+ })]
483
+ })]
484
+ })]
485
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
486
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
487
+ style: styles.summaryCardAmount,
488
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
489
+ style: styles.summaryCardAmountLabel,
490
+ children: "Amount to Pay"
491
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
492
+ style: styles.summaryCardAmountValue,
493
+ children: [currencySymbol, " ", amount]
494
+ }), description && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
495
+ style: styles.summaryCardAmountDescription,
496
+ children: description
497
+ })]
498
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
499
+ style: styles.summaryCardDivider
500
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
501
+ style: styles.summaryCardTotalSection,
502
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
503
+ style: styles.summaryCardTotalRow,
504
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
505
+ style: styles.summaryCardTotalLabel,
506
+ children: "Total"
507
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
508
+ style: styles.summaryCardTotalValue,
509
+ children: [currencySymbol, " ", amount]
510
+ })]
511
+ })
512
+ })]
513
+ })]
514
+ })
606
515
  })]
607
- })
516
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GroupedPillButtons.default, {
517
+ buttons: [{
518
+ text: 'Close',
519
+ onPress: handleClose,
520
+ icon: 'close',
521
+ variant: 'transparent'
522
+ }, {
523
+ text: 'Continue',
524
+ onPress: nextStep,
525
+ icon: 'arrow-forward',
526
+ variant: 'primary'
527
+ }],
528
+ colors: colors
529
+ })]
608
530
  });
609
531
 
610
532
  // Step 2: Choose Payment Method (now the second step, no header/dots here)
@@ -617,38 +539,27 @@ const PaymentGatewayScreen = props => {
617
539
  scale: scaleAnim
618
540
  }]
619
541
  }],
620
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Card, {
621
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
622
- style: styles.circleListContainer,
623
- children: availablePaymentMethods.map(method => {
624
- const isSelected = paymentMethod === method.key;
625
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
626
- onPress: () => setPaymentMethod(method.key),
627
- activeOpacity: 0.85,
628
- style: [styles.circleMethod, isSelected && styles.circleMethodSelected],
629
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
630
- style: styles.circleIconWrapper,
631
- children: [method.key === 'faircoin' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FAIRWalletIcon, {
632
- size: 28
633
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
634
- name: method.icon,
635
- size: 28,
636
- color: isSelected ? colors.primary : colors.text
637
- }), isSelected && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
638
- style: styles.circleCheckOverlay,
639
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
640
- name: "checkmark-circle",
641
- size: 28,
642
- color: colors.primary
643
- })
644
- })]
645
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
646
- style: [styles.circleLabel, isSelected && styles.circleLabelSelected],
647
- children: method.label
648
- })]
649
- }, method.key);
650
- })
651
- })
542
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
543
+ style: styles.section,
544
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
545
+ style: styles.sectionTitle,
546
+ children: "Choose Payment Method"
547
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.GroupedSection, {
548
+ items: availablePaymentMethods.map(method => ({
549
+ id: method.key,
550
+ icon: method.key === 'faircoin' ? undefined : method.icon,
551
+ iconColor: method.key === 'card' ? '#007AFF' : method.key === 'oxy' ? '#32D74B' : method.key === 'faircoin' ? '#9ffb50' : colors.primary,
552
+ title: method.label,
553
+ subtitle: method.description,
554
+ onPress: () => setPaymentMethod(method.key),
555
+ selected: paymentMethod === method.key,
556
+ showChevron: false,
557
+ customIcon: method.key === 'faircoin' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FAIRWalletIcon, {
558
+ size: 20
559
+ }) : undefined
560
+ })),
561
+ theme: theme
562
+ })]
652
563
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GroupedPillButtons.default, {
653
564
  buttons: [{
654
565
  text: 'Back',
@@ -675,226 +586,235 @@ const PaymentGatewayScreen = props => {
675
586
  scale: scaleAnim
676
587
  }]
677
588
  }],
678
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(Card, {
679
- style: paymentMethod === 'faircoin' ? {
680
- backgroundColor: '#f6fff0',
681
- paddingVertical: 24,
682
- paddingHorizontal: 0
683
- } : undefined,
684
- children: [paymentMethod === 'card' && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
685
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
686
- style: styles.cardRowInfo,
589
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
590
+ style: styles.section,
591
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
592
+ style: styles.sectionTitle,
593
+ children: paymentMethod === 'card' ? 'Card Details' : paymentMethod === 'oxy' ? 'Oxy Pay' : paymentMethod === 'faircoin' ? 'FairCoin Payment' : 'Payment Details'
594
+ }), paymentMethod === 'card' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
595
+ style: styles.cardPaymentCard,
596
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
597
+ style: styles.cardPaymentContent,
687
598
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
688
599
  name: "card-outline",
689
- size: 24,
600
+ size: 64,
690
601
  color: colors.primary,
691
- style: styles.cardRowIcon
602
+ style: styles.cardPaymentIcon
692
603
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
693
- style: styles.cardRowText,
694
- children: "We accept Visa, Mastercard, and more"
695
- })]
696
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
697
- value: cardDetails.number,
698
- onChangeText: text => setCardDetails({
699
- ...cardDetails,
700
- number: text
701
- }),
702
- placeholder: "Card Number",
703
- keyboardType: "numeric",
704
- containerStyle: styles.cardFieldContainer,
705
- leftComponent: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
706
- name: "card-outline",
707
- size: 18,
708
- color: colors.primary
709
- })
710
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
711
- style: styles.cardFieldRow,
712
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
713
- value: cardDetails.expiry,
714
- onChangeText: text => setCardDetails({
715
- ...cardDetails,
716
- expiry: text
717
- }),
718
- placeholder: "MM/YY",
719
- containerStyle: styles.cardFieldHalfLeft,
720
- leftComponent: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
721
- name: "calendar-outline",
722
- size: 16,
723
- color: colors.primary
724
- })
725
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
726
- value: cardDetails.cvv,
727
- onChangeText: text => setCardDetails({
728
- ...cardDetails,
729
- cvv: text
730
- }),
731
- placeholder: "CVV",
732
- keyboardType: "numeric",
733
- containerStyle: styles.cardFieldHalfRight,
734
- leftComponent: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
735
- name: "lock-closed-outline",
736
- size: 16,
737
- color: colors.primary
738
- })
739
- })]
740
- })]
741
- }), paymentMethod === 'oxy' && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
742
- style: styles.oxyPayContainer,
743
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
744
- name: "wallet-outline",
745
- size: 48,
746
- color: colors.primary,
747
- style: styles.oxyPayIcon
748
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
749
- style: styles.oxyPayTitle,
750
- children: "Pay with Oxy Pay"
751
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
752
- style: styles.oxyPaySubtitle,
753
- children: "(Oxy Pay is your in-app wallet. Make sure you have enough balance.)"
754
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
755
- style: styles.oxyPayBalanceBox,
756
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
757
- style: styles.oxyPayBalanceText,
758
- children: "Balance: \u229C 123.45"
759
- })
760
- })]
761
- }), paymentMethod === 'faircoin' && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
762
- style: {
763
- alignItems: 'center',
764
- width: '100%'
765
- },
766
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FAIRWalletIcon, {
767
- size: 64,
768
- style: [styles.faircoinIcon, {
769
- shadowColor: '#1b1f0a',
770
- shadowOpacity: 0.18,
771
- shadowRadius: 12,
772
- elevation: 6,
773
- marginBottom: 12
774
- }]
775
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
776
- style: {
777
- fontFamily: _styles.fontFamilies.phuduBold,
778
- fontWeight: 'bold',
779
- fontSize: 28,
780
- color: '#1b1f0a',
781
- marginBottom: 2,
782
- textAlign: 'center',
783
- letterSpacing: 0.5
784
- },
785
- children: "FAIRWallet"
786
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
787
- style: {
788
- color: '#1b1f0a',
789
- fontWeight: '700',
790
- fontSize: 17,
791
- marginBottom: 18,
792
- textAlign: 'center',
793
- letterSpacing: 0.2
794
- },
795
- children: "Pay with FairCoin"
796
- }), !isMobile ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
797
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
798
- style: {
799
- color: '#1b1f0a',
800
- fontWeight: '600',
801
- fontSize: 15,
802
- marginBottom: 8
803
- },
804
- children: "Scan to Pay"
604
+ style: styles.cardPaymentMainTitle,
605
+ children: "Credit Card"
606
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
607
+ style: styles.cardPaymentSubtitle,
608
+ children: "Enter your card details securely"
805
609
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
806
- style: [styles.faircoinQRBox, {
807
- width: qrSize,
808
- height: qrSize,
809
- borderColor: '#9ffb50',
810
- borderWidth: 3,
811
- position: 'relative',
812
- backgroundColor: '#fff',
813
- boxShadow: '0 2px 12px #9ffb5040',
814
- justifyContent: 'center',
815
- alignItems: 'center'
816
- }],
817
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeQrcodeSvg.default, {
818
- value: faircoinAddress,
819
- size: qrSize - 32
820
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
821
- style: {
822
- position: 'absolute',
823
- bottom: 8,
824
- right: 8
610
+ style: styles.cardPaymentFields,
611
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
612
+ style: styles.cardRowInfo,
613
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
614
+ name: "card-outline",
615
+ size: 24,
616
+ color: colors.primary,
617
+ style: styles.cardRowIcon
618
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
619
+ style: styles.cardRowText,
620
+ children: "We accept Visa, Mastercard, and more"
621
+ })]
622
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
623
+ value: cardDetails.number,
624
+ onChangeText: text => {
625
+ // Format card number with spaces
626
+ const formatted = text.replace(/\s/g, '').replace(/(\d{4})/g, '$1 ').trim();
627
+ setCardDetails({
628
+ ...cardDetails,
629
+ number: formatted
630
+ });
825
631
  },
826
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FAIRWalletIcon, {
827
- size: 28
632
+ placeholder: "1234 5678 9012 3456",
633
+ keyboardType: "numeric",
634
+ maxLength: 19,
635
+ style: styles.cardFieldContainer,
636
+ leading: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
637
+ name: "card-outline",
638
+ size: 18,
639
+ color: colors.primary
828
640
  })
641
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
642
+ style: styles.cardFieldRow,
643
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
644
+ value: cardDetails.expiry,
645
+ onChangeText: text => {
646
+ // Format expiry date
647
+ const formatted = text.replace(/\D/g, '').replace(/(\d{2})(\d)/, '$1/$2');
648
+ setCardDetails({
649
+ ...cardDetails,
650
+ expiry: formatted
651
+ });
652
+ },
653
+ placeholder: "MM/YY",
654
+ maxLength: 5,
655
+ style: styles.cardFieldHalfLeft,
656
+ leading: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
657
+ name: "calendar-outline",
658
+ size: 16,
659
+ color: colors.primary
660
+ })
661
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
662
+ value: cardDetails.cvv,
663
+ onChangeText: text => {
664
+ // Only allow numbers
665
+ const formatted = text.replace(/\D/g, '');
666
+ setCardDetails({
667
+ ...cardDetails,
668
+ cvv: formatted
669
+ });
670
+ },
671
+ placeholder: "123",
672
+ keyboardType: "numeric",
673
+ maxLength: 4,
674
+ style: styles.cardFieldHalfRight,
675
+ leading: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
676
+ name: "lock-closed-outline",
677
+ size: 16,
678
+ color: colors.primary
679
+ })
680
+ })]
829
681
  })]
682
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
683
+ style: {
684
+ height: 18
685
+ }
686
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
687
+ style: styles.cardPaymentWaiting,
688
+ children: "Ready to process payment..."
830
689
  })]
831
- }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
832
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
833
- style: styles.faircoinTitle,
834
- children: "Use the options below to pay with FAIRWallet"
690
+ })
691
+ }), paymentMethod === 'oxy' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
692
+ style: styles.oxyPayCard,
693
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
694
+ style: styles.oxyPayContent,
695
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
696
+ name: "wallet-outline",
697
+ size: 64,
698
+ color: colors.primary,
699
+ style: styles.oxyPayIcon
835
700
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
836
- style: styles.faircoinAddress,
837
- children: faircoinAddress
838
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
839
- style: [styles.faircoinButton, {
840
- backgroundColor: '#9ffb50',
841
- borderRadius: 18,
842
- marginTop: 12,
843
- width: '90%',
844
- flexDirection: 'row',
845
- alignItems: 'center',
846
- justifyContent: 'center'
847
- }],
848
- onPress: handleOpenFairWallet,
849
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FAIRWalletIcon, {
850
- size: 20,
851
- style: {
852
- marginRight: 8
853
- }
854
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
855
- style: [styles.faircoinButtonText, {
856
- color: '#1b1f0a',
857
- fontWeight: 'bold',
858
- fontSize: 16
859
- }],
860
- children: "Open in FAIRWallet"
701
+ style: styles.oxyPayMainTitle,
702
+ children: "Oxy Pay"
703
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
704
+ style: styles.oxyPaySubtitle,
705
+ children: "Pay with your in-app wallet"
706
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
707
+ style: styles.oxyPayBalanceBox,
708
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
709
+ style: styles.oxyPayBalanceText,
710
+ children: "Balance: \u229C 123.45"
711
+ })
712
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
713
+ style: {
714
+ height: 18
715
+ }
716
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
717
+ style: styles.oxyPayWaiting,
718
+ children: "Ready to process payment..."
719
+ })]
720
+ })
721
+ }), paymentMethod === 'faircoin' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
722
+ style: styles.faircoinCard,
723
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
724
+ style: styles.faircoinContent,
725
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FAIRWalletIcon, {
726
+ size: 64,
727
+ style: styles.faircoinIcon
728
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
729
+ style: styles.faircoinMainTitle,
730
+ children: "FAIRWallet"
731
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
732
+ style: styles.faircoinSubtitle,
733
+ children: "Pay with FairCoin"
734
+ }), !isMobile ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
735
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
736
+ style: styles.faircoinScanText,
737
+ children: "Scan to Pay"
738
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
739
+ style: styles.faircoinQRCard,
740
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeQrcodeSvg.default, {
741
+ value: faircoinAddress,
742
+ size: qrSize - 32
743
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
744
+ style: styles.faircoinQRBadge,
745
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FAIRWalletIcon, {
746
+ size: 28
747
+ })
748
+ })]
861
749
  })]
862
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
863
- style: [styles.faircoinButton, {
864
- backgroundColor: '#9ffb50',
865
- borderRadius: 18,
866
- marginTop: 10,
867
- width: '90%',
868
- flexDirection: 'row',
869
- alignItems: 'center',
870
- justifyContent: 'center'
871
- }],
872
- onPress: handleCopyAddress,
873
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FAIRWalletIcon, {
874
- size: 20,
875
- style: {
876
- marginRight: 8
877
- }
750
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
751
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
752
+ style: styles.faircoinTitle,
753
+ children: "Use the options below to pay with FAIRWallet"
878
754
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
879
- style: [styles.faircoinButtonText, {
880
- color: '#1b1f0a',
881
- fontWeight: 'bold',
882
- fontSize: 16
755
+ style: styles.faircoinAddress,
756
+ children: faircoinAddress
757
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
758
+ style: [styles.faircoinButton, {
759
+ backgroundColor: '#9ffb50',
760
+ borderRadius: 18,
761
+ marginTop: 12,
762
+ width: '90%',
763
+ flexDirection: 'row',
764
+ alignItems: 'center',
765
+ justifyContent: 'center'
766
+ }],
767
+ onPress: handleOpenFairWallet,
768
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FAIRWalletIcon, {
769
+ size: 20,
770
+ style: {
771
+ marginRight: 8
772
+ }
773
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
774
+ style: [styles.faircoinButtonText, {
775
+ color: '#1b1f0a',
776
+ fontWeight: 'bold',
777
+ fontSize: 16
778
+ }],
779
+ children: "Open in FAIRWallet"
780
+ })]
781
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
782
+ style: [styles.faircoinButton, {
783
+ backgroundColor: '#9ffb50',
784
+ borderRadius: 18,
785
+ marginTop: 10,
786
+ width: '90%',
787
+ flexDirection: 'row',
788
+ alignItems: 'center',
789
+ justifyContent: 'center'
883
790
  }],
884
- children: "Copy Address"
791
+ onPress: handleCopyAddress,
792
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FAIRWalletIcon, {
793
+ size: 20,
794
+ style: {
795
+ marginRight: 8
796
+ }
797
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
798
+ style: [styles.faircoinButtonText, {
799
+ color: '#1b1f0a',
800
+ fontWeight: 'bold',
801
+ fontSize: 16
802
+ }],
803
+ children: "Copy Address"
804
+ })]
885
805
  })]
806
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
807
+ style: {
808
+ height: 18
809
+ }
810
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
811
+ style: styles.faircoinWaiting,
812
+ children: "Waiting for payment..."
813
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
814
+ style: styles.faircoinPlaceholder,
815
+ children: "(This is a placeholder. Integrate with a QR code generator for production.)"
886
816
  })]
887
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
888
- style: {
889
- height: 18
890
- }
891
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
892
- style: styles.faircoinWaiting,
893
- children: "Waiting for payment..."
894
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
895
- style: styles.faircoinPlaceholder,
896
- children: "(This is a placeholder. Integrate with a QR code generator for production.)"
897
- })]
817
+ })
898
818
  })]
899
819
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GroupedPillButtons.default, {
900
820
  buttons: [{
@@ -923,71 +843,50 @@ const PaymentGatewayScreen = props => {
923
843
  scale: scaleAnim
924
844
  }]
925
845
  }],
926
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(Card, {
927
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
928
- style: styles.reviewSecureRow,
929
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
930
- name: "shield-checkmark",
931
- size: 20,
932
- color: colors.success || '#4BB543',
933
- style: styles.reviewSecureIcon
934
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
935
- style: styles.reviewSecureText,
936
- children: "Secure payment"
937
- })]
938
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
939
- style: styles.reviewRow,
940
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
941
- style: styles.reviewLabel,
942
- children: "Amount"
943
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
944
- style: styles.reviewValue,
945
- children: [currencySymbol, " ", amount]
946
- })]
947
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
948
- style: styles.reviewRow,
949
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
950
- style: styles.reviewLabel,
951
- children: "Method"
952
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
953
- style: styles.reviewMethodRow,
954
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
955
- name: PAYMENT_METHODS.find(m => m.key === paymentMethod)?.icon,
956
- size: 18,
957
- color: colors.primary,
958
- style: styles.reviewMethodIcon
959
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
960
- style: styles.reviewMethodText,
961
- children: PAYMENT_METHODS.find(m => m.key === paymentMethod)?.label
962
- })]
963
- })]
964
- }), paymentMethod === 'card' && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
965
- style: styles.reviewRow,
966
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
967
- style: styles.reviewLabel,
968
- children: "Card"
969
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
970
- style: styles.reviewValue,
971
- children: cardDetails.number.replace(/.(?=.{4})/g, '*')
972
- })]
973
- }), paymentMethod === 'oxy' && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
974
- style: styles.reviewRow,
975
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
976
- style: styles.reviewLabel,
977
- children: "Oxy Pay Account"
978
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
979
- style: styles.reviewValue,
980
- children: "Balance: \u229C 123.45"
981
- })]
982
- }), paymentMethod === 'faircoin' && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
983
- style: styles.reviewRow,
984
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
985
- style: styles.reviewLabel,
986
- children: "FairCoin Wallet"
987
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
988
- style: styles.reviewValue,
989
- children: "Paid via QR"
990
- })]
846
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
847
+ style: styles.section,
848
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
849
+ style: styles.sectionTitle,
850
+ children: "Review Payment"
851
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.GroupedSection, {
852
+ items: [{
853
+ id: 'secure-payment',
854
+ icon: 'shield-checkmark',
855
+ iconColor: colors.success || '#4BB543',
856
+ title: 'Secure payment',
857
+ subtitle: 'Your payment is protected by industry-standard encryption'
858
+ }, {
859
+ id: 'amount',
860
+ icon: 'cash',
861
+ iconColor: colors.primary,
862
+ title: 'Amount',
863
+ subtitle: `${currencySymbol} ${amount}`
864
+ }, {
865
+ id: 'payment-method',
866
+ icon: PAYMENT_METHODS.find(m => m.key === paymentMethod)?.icon,
867
+ iconColor: colors.primary,
868
+ title: 'Payment Method',
869
+ subtitle: PAYMENT_METHODS.find(m => m.key === paymentMethod)?.label
870
+ }, ...(paymentMethod === 'card' ? [{
871
+ id: 'card-details',
872
+ icon: 'card',
873
+ iconColor: colors.primary,
874
+ title: 'Card',
875
+ subtitle: cardDetails.number.replace(/.(?=.{4})/g, '*')
876
+ }] : []), ...(paymentMethod === 'oxy' ? [{
877
+ id: 'oxy-balance',
878
+ icon: 'wallet',
879
+ iconColor: colors.primary,
880
+ title: 'Oxy Pay Account',
881
+ subtitle: 'Balance: 123.45'
882
+ }] : []), ...(paymentMethod === 'faircoin' ? [{
883
+ id: 'faircoin-wallet',
884
+ icon: 'qr-code',
885
+ iconColor: colors.primary,
886
+ title: 'FairCoin Wallet',
887
+ subtitle: 'Paid via QR'
888
+ }] : [])],
889
+ theme: theme
991
890
  })]
992
891
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GroupedPillButtons.default, {
993
892
  buttons: [{
@@ -1017,20 +916,34 @@ const PaymentGatewayScreen = props => {
1017
916
  }]
1018
917
  }],
1019
918
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1020
- style: styles.successContainer,
1021
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1022
- style: styles.successIconBox,
1023
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
1024
- name: "checkmark-circle",
1025
- size: 64,
1026
- color: colors.success || '#4BB543'
919
+ style: styles.section,
920
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
921
+ style: styles.sectionTitle,
922
+ children: "Payment Complete"
923
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
924
+ style: styles.successCard,
925
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
926
+ style: styles.successContent,
927
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
928
+ name: "checkmark-circle",
929
+ size: 64,
930
+ color: colors.success || '#4BB543',
931
+ style: styles.successIcon
932
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
933
+ style: styles.successMainTitle,
934
+ children: "Payment Successful!"
935
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
936
+ style: styles.successSubtitle,
937
+ children: "Thank you for your payment."
938
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
939
+ style: {
940
+ height: 18
941
+ }
942
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
943
+ style: styles.successMessage,
944
+ children: "Your transaction has been processed successfully."
945
+ })]
1027
946
  })
1028
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1029
- style: styles.successTitle,
1030
- children: "Payment Successful!"
1031
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1032
- style: styles.successSubtitle,
1033
- children: "Thank you for your payment."
1034
947
  })]
1035
948
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GroupedPillButtons.default, {
1036
949
  buttons: [{
@@ -1053,44 +966,40 @@ const PaymentGatewayScreen = props => {
1053
966
  scale: scaleAnim
1054
967
  }]
1055
968
  }],
1056
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(Card, {
969
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
970
+ style: styles.section,
1057
971
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1058
- style: {
1059
- color: colors.text,
1060
- fontWeight: '600',
1061
- fontSize: 16,
1062
- marginBottom: 12
1063
- },
1064
- children: "Select a product to purchase:"
1065
- }), iapLoading && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1066
- style: {
1067
- color: colors.secondaryText
1068
- },
1069
- children: "Loading products..."
1070
- }), iapError && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1071
- style: {
1072
- color: 'red'
1073
- },
1074
- children: iapError
1075
- }), iapProducts.map(product => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
1076
- style: [styles.paymentMethodButton, {
1077
- marginBottom: 8
1078
- }],
1079
- onPress: () => handleIapBuy(product.productId),
1080
- disabled: iapLoading,
1081
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
1082
- style: {
1083
- color: colors.text,
1084
- fontSize: 16
1085
- },
1086
- children: [product.title, " - ", product.localizedPrice]
972
+ style: styles.sectionTitle,
973
+ children: "Google Play Products"
974
+ }), iapLoading && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
975
+ style: styles.loadingContainer,
976
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
977
+ style: styles.loadingText,
978
+ children: "Loading products..."
979
+ })
980
+ }), iapError && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
981
+ style: styles.paymentErrorContainer,
982
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
983
+ style: styles.paymentErrorText,
984
+ children: iapError
985
+ })
986
+ }), !iapLoading && !iapError && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.GroupedSection, {
987
+ items: iapProducts.map(product => ({
988
+ id: product.productId,
989
+ icon: 'pricetag',
990
+ iconColor: colors.primary,
991
+ title: product.title,
992
+ subtitle: product.localizedPrice,
993
+ onPress: () => handleIapBuy(product.productId),
994
+ disabled: iapLoading
995
+ })),
996
+ theme: theme
997
+ }), iapPurchase && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
998
+ style: styles.iapSuccessContainer,
999
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1000
+ style: styles.iapSuccessText,
1001
+ children: "Purchase successful!"
1087
1002
  })
1088
- }, product.productId)), iapPurchase && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
1089
- style: {
1090
- color: colors.success,
1091
- marginTop: 10
1092
- },
1093
- children: "Purchase successful!"
1094
1003
  })]
1095
1004
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GroupedPillButtons.default, {
1096
1005
  buttons: [{
@@ -1119,41 +1028,51 @@ const PaymentGatewayScreen = props => {
1119
1028
  return renderSummaryStep();
1120
1029
  }
1121
1030
  };
1122
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.KeyboardAvoidingView, {
1031
+
1032
+ // Memoize theme-related calculations to prevent unnecessary recalculations
1033
+ const themeStyles = (0, _react.useMemo)(() => {
1034
+ const isDarkTheme = theme === 'dark';
1035
+ return {
1036
+ isDarkTheme,
1037
+ backgroundColor: isDarkTheme ? '#121212' : '#f2f2f2',
1038
+ primaryColor: '#007AFF'
1039
+ };
1040
+ }, [theme]);
1041
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1123
1042
  style: [styles.container, {
1124
- backgroundColor: colors.background
1043
+ backgroundColor: themeStyles.backgroundColor
1125
1044
  }],
1126
- behavior: _reactNative.Platform.OS === 'ios' ? 'padding' : 'height',
1127
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.StatusBar, {
1128
- barStyle: theme === 'dark' ? 'light-content' : 'dark-content',
1129
- backgroundColor: colors.background
1130
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(PaymentGatewayHeader, {
1131
- currentStep: currentStep,
1132
- totalSteps: 5,
1133
- title: stepTitles[currentStep]
1134
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
1135
- contentContainerStyle: styles.scrollContent,
1045
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
1046
+ style: styles.content,
1136
1047
  showsVerticalScrollIndicator: false,
1137
- keyboardShouldPersistTaps: "handled",
1138
1048
  children: renderCurrentStep()
1139
- })]
1049
+ })
1140
1050
  });
1141
1051
  };
1142
1052
  const createStyles = (colors, theme) => _reactNative.StyleSheet.create({
1143
1053
  container: {
1144
1054
  flex: 1
1145
1055
  },
1146
- scrollContent: {
1147
- flexGrow: 1,
1148
- paddingHorizontal: 24,
1149
- paddingBottom: 20
1056
+ content: {
1057
+ flex: 1,
1058
+ padding: 16
1150
1059
  },
1151
1060
  stepContainer: {
1152
- flex: 1,
1153
1061
  justifyContent: 'flex-start',
1154
1062
  alignItems: 'flex-start',
1155
1063
  width: '100%'
1156
1064
  },
1065
+ section: {
1066
+ marginBottom: 24,
1067
+ width: '100%'
1068
+ },
1069
+ sectionTitle: {
1070
+ fontSize: 16,
1071
+ fontWeight: '600',
1072
+ color: colors.text,
1073
+ marginBottom: 12,
1074
+ fontFamily: _styles.fontFamilies.phuduSemiBold
1075
+ },
1157
1076
  stepIndicatorContainer: {
1158
1077
  flexDirection: 'row',
1159
1078
  justifyContent: 'center',
@@ -1186,30 +1105,6 @@ const createStyles = (colors, theme) => _reactNative.StyleSheet.create({
1186
1105
  color: colors.text,
1187
1106
  letterSpacing: -0.5
1188
1107
  },
1189
- headerWrapper: {
1190
- flexDirection: 'column',
1191
- alignItems: 'center',
1192
- justifyContent: 'center',
1193
- width: '100%',
1194
- gap: 8,
1195
- paddingVertical: 8
1196
- },
1197
- card: {
1198
- backgroundColor: '#fff',
1199
- borderRadius: 20,
1200
- padding: 28,
1201
- shadowColor: '#000',
1202
- shadowOffset: {
1203
- width: 0,
1204
- height: 2
1205
- },
1206
- shadowOpacity: 0.08,
1207
- shadowRadius: 8,
1208
- elevation: 3,
1209
- marginVertical: 8,
1210
- width: '100%',
1211
- alignSelf: 'center'
1212
- },
1213
1108
  paymentMethodButton: {
1214
1109
  flexDirection: 'row',
1215
1110
  alignItems: 'center',
@@ -1321,6 +1216,33 @@ const createStyles = (colors, theme) => _reactNative.StyleSheet.create({
1321
1216
  color: colors.primary,
1322
1217
  fontWeight: '600'
1323
1218
  },
1219
+ oxyPayCard: {
1220
+ backgroundColor: '#fff',
1221
+ borderRadius: 16,
1222
+ padding: 24,
1223
+ marginBottom: 24,
1224
+ alignItems: 'center',
1225
+ width: '100%'
1226
+ },
1227
+ oxyPayContent: {
1228
+ alignItems: 'center',
1229
+ width: '100%'
1230
+ },
1231
+ oxyPayMainTitle: {
1232
+ fontFamily: _styles.fontFamilies.phuduBold,
1233
+ fontWeight: 'bold',
1234
+ fontSize: 28,
1235
+ color: colors.text,
1236
+ marginBottom: 2,
1237
+ textAlign: 'center',
1238
+ letterSpacing: 0.5
1239
+ },
1240
+ oxyPayWaiting: {
1241
+ fontSize: 14,
1242
+ color: colors.secondaryText,
1243
+ textAlign: 'center',
1244
+ marginBottom: 8
1245
+ },
1324
1246
  faircoinContainer: {
1325
1247
  alignItems: 'center',
1326
1248
  marginBottom: 24,
@@ -1329,6 +1251,66 @@ const createStyles = (colors, theme) => _reactNative.StyleSheet.create({
1329
1251
  faircoinIcon: {
1330
1252
  marginBottom: 8
1331
1253
  },
1254
+ faircoinMainTitle: {
1255
+ fontFamily: _styles.fontFamilies.phuduBold,
1256
+ fontWeight: 'bold',
1257
+ fontSize: 28,
1258
+ color: '#1b1f0a',
1259
+ marginBottom: 2,
1260
+ textAlign: 'center',
1261
+ letterSpacing: 0.5
1262
+ },
1263
+ faircoinSubtitle: {
1264
+ color: '#1b1f0a',
1265
+ fontWeight: '700',
1266
+ fontSize: 17,
1267
+ marginBottom: 18,
1268
+ textAlign: 'center',
1269
+ letterSpacing: 0.2
1270
+ },
1271
+ faircoinScanText: {
1272
+ color: '#1b1f0a',
1273
+ fontWeight: '600',
1274
+ fontSize: 15,
1275
+ marginBottom: 8
1276
+ },
1277
+ faircoinQRCard: {
1278
+ width: 200,
1279
+ height: 200,
1280
+ backgroundColor: '#fff',
1281
+ borderRadius: 32,
1282
+ justifyContent: 'center',
1283
+ alignItems: 'center',
1284
+ marginBottom: 16,
1285
+ padding: 16,
1286
+ borderWidth: 3,
1287
+ borderColor: '#9ffb50',
1288
+ shadowColor: '#9ffb50',
1289
+ shadowOffset: {
1290
+ width: 0,
1291
+ height: 4
1292
+ },
1293
+ shadowOpacity: 0.25,
1294
+ shadowRadius: 12,
1295
+ elevation: 8,
1296
+ position: 'relative'
1297
+ },
1298
+ faircoinQRBadge: {
1299
+ position: 'absolute',
1300
+ bottom: 12,
1301
+ right: 12,
1302
+ backgroundColor: '#fff',
1303
+ borderRadius: 16,
1304
+ padding: 4,
1305
+ shadowColor: '#000',
1306
+ shadowOffset: {
1307
+ width: 0,
1308
+ height: 2
1309
+ },
1310
+ shadowOpacity: 0.1,
1311
+ shadowRadius: 4,
1312
+ elevation: 2
1313
+ },
1332
1314
  faircoinTitle: {
1333
1315
  fontSize: 16,
1334
1316
  marginBottom: 8,
@@ -1361,66 +1343,41 @@ const createStyles = (colors, theme) => _reactNative.StyleSheet.create({
1361
1343
  color: colors.secondaryText,
1362
1344
  textAlign: 'center'
1363
1345
  },
1364
- reviewSecureRow: {
1365
- flexDirection: 'row',
1346
+ faircoinCard: {
1347
+ backgroundColor: '#fff',
1348
+ borderRadius: 16,
1349
+ padding: 24,
1350
+ marginBottom: 24,
1366
1351
  alignItems: 'center',
1367
- marginBottom: 12
1368
- },
1369
- reviewSecureIcon: {
1370
- marginRight: 8
1371
- },
1372
- reviewSecureText: {
1373
- color: colors.success || '#4BB543',
1374
- fontWeight: '600',
1375
- fontSize: 15
1352
+ width: '100%'
1376
1353
  },
1377
- reviewRow: {
1378
- flexDirection: 'row',
1379
- justifyContent: 'space-between',
1354
+ faircoinContent: {
1380
1355
  alignItems: 'center',
1381
- marginBottom: 8
1382
- },
1383
- reviewLabel: {
1384
- fontSize: 15,
1385
- color: colors.secondaryText
1386
- },
1387
- reviewValue: {
1388
- fontSize: 18,
1389
- fontWeight: '700',
1390
- color: colors.text
1391
- },
1392
- reviewMethodRow: {
1393
- flexDirection: 'row',
1394
- alignItems: 'center'
1395
- },
1396
- reviewMethodIcon: {
1397
- marginRight: 6
1398
- },
1399
- reviewMethodText: {
1400
- fontSize: 16,
1401
- color: colors.text
1356
+ width: '100%'
1402
1357
  },
1403
- successContainer: {
1404
- alignItems: 'center',
1405
- justifyContent: 'center',
1358
+ successCard: {
1359
+ backgroundColor: '#fff',
1360
+ borderRadius: 16,
1361
+ padding: 24,
1406
1362
  marginBottom: 24,
1363
+ alignItems: 'center',
1407
1364
  width: '100%'
1408
1365
  },
1409
- successIconBox: {
1410
- backgroundColor: colors.success + '22',
1411
- borderRadius: 48,
1412
- padding: 18,
1413
- marginBottom: 12,
1366
+ successContent: {
1414
1367
  alignItems: 'center',
1415
- justifyContent: 'center'
1368
+ width: '100%'
1416
1369
  },
1417
- successTitle: {
1418
- fontSize: 26,
1419
- fontWeight: '700',
1370
+ successIcon: {
1371
+ marginBottom: 8
1372
+ },
1373
+ successMainTitle: {
1374
+ fontFamily: _styles.fontFamilies.phuduBold,
1375
+ fontWeight: 'bold',
1376
+ fontSize: 28,
1420
1377
  color: colors.success || '#4BB543',
1421
- marginBottom: 8,
1378
+ marginBottom: 2,
1422
1379
  textAlign: 'center',
1423
- width: '100%'
1380
+ letterSpacing: 0.5
1424
1381
  },
1425
1382
  successSubtitle: {
1426
1383
  fontSize: 16,
@@ -1429,6 +1386,12 @@ const createStyles = (colors, theme) => _reactNative.StyleSheet.create({
1429
1386
  marginBottom: 8,
1430
1387
  width: '100%'
1431
1388
  },
1389
+ successMessage: {
1390
+ fontSize: 14,
1391
+ color: colors.secondaryText,
1392
+ textAlign: 'center',
1393
+ marginBottom: 8
1394
+ },
1432
1395
  methodCard: {
1433
1396
  flexDirection: 'row',
1434
1397
  alignItems: 'center',
@@ -1545,15 +1508,6 @@ const createStyles = (colors, theme) => _reactNative.StyleSheet.create({
1545
1508
  minHeight: 36,
1546
1509
  marginBottom: 2
1547
1510
  },
1548
- circleCheckOverlay: {
1549
- position: 'absolute',
1550
- bottom: -8,
1551
- right: -8,
1552
- backgroundColor: '#fff',
1553
- borderRadius: 16,
1554
- padding: 0,
1555
- zIndex: 2
1556
- },
1557
1511
  headerStepIndicatorContainer: {
1558
1512
  marginVertical: 2,
1559
1513
  flexDirection: 'row',
@@ -1582,6 +1536,210 @@ const createStyles = (colors, theme) => _reactNative.StyleSheet.create({
1582
1536
  textAlign: 'center',
1583
1537
  marginTop: 6,
1584
1538
  marginBottom: 2
1539
+ },
1540
+ // Google Play step styles
1541
+ loadingContainer: {
1542
+ padding: 16,
1543
+ alignItems: 'center',
1544
+ backgroundColor: '#fff',
1545
+ borderRadius: 12,
1546
+ marginBottom: 16
1547
+ },
1548
+ loadingText: {
1549
+ color: colors.secondaryText,
1550
+ fontSize: 16,
1551
+ fontStyle: 'italic'
1552
+ },
1553
+ paymentErrorContainer: {
1554
+ padding: 16,
1555
+ backgroundColor: '#ffebee',
1556
+ borderRadius: 12,
1557
+ marginBottom: 16,
1558
+ borderWidth: 1,
1559
+ borderColor: '#ffcdd2'
1560
+ },
1561
+ paymentErrorText: {
1562
+ color: '#d32f2f',
1563
+ fontSize: 14,
1564
+ textAlign: 'center'
1565
+ },
1566
+ iapSuccessContainer: {
1567
+ padding: 16,
1568
+ backgroundColor: '#e8f5e8',
1569
+ borderRadius: 12,
1570
+ marginTop: 16,
1571
+ borderWidth: 1,
1572
+ borderColor: '#c8e6c9'
1573
+ },
1574
+ iapSuccessText: {
1575
+ color: colors.success || '#4BB543',
1576
+ fontSize: 16,
1577
+ textAlign: 'center',
1578
+ fontWeight: '600'
1579
+ },
1580
+ // Summary step styles
1581
+ summaryDescriptionContainer: {
1582
+ marginBottom: 16
1583
+ },
1584
+ summaryDescriptionText: {
1585
+ color: colors.secondaryText,
1586
+ fontSize: 15,
1587
+ lineHeight: 20
1588
+ },
1589
+ summaryItemPrice: {
1590
+ color: colors.text,
1591
+ fontWeight: '600',
1592
+ fontSize: 16
1593
+ },
1594
+ summaryFallbackContainer: {
1595
+ padding: 16,
1596
+ backgroundColor: '#fff',
1597
+ borderRadius: 12,
1598
+ borderWidth: 1,
1599
+ borderColor: colors.border
1600
+ },
1601
+ summaryFallbackText: {
1602
+ color: colors.text,
1603
+ fontSize: 16,
1604
+ textAlign: 'center'
1605
+ },
1606
+ // Card payment styles
1607
+ cardPaymentCard: {
1608
+ backgroundColor: '#fff',
1609
+ borderRadius: 16,
1610
+ padding: 24,
1611
+ marginBottom: 24,
1612
+ alignItems: 'center',
1613
+ width: '100%'
1614
+ },
1615
+ cardPaymentContent: {
1616
+ alignItems: 'center',
1617
+ width: '100%'
1618
+ },
1619
+ cardPaymentIcon: {
1620
+ marginBottom: 8
1621
+ },
1622
+ cardPaymentMainTitle: {
1623
+ fontFamily: _styles.fontFamilies.phuduBold,
1624
+ fontWeight: 'bold',
1625
+ fontSize: 28,
1626
+ color: colors.text,
1627
+ marginBottom: 2,
1628
+ textAlign: 'center',
1629
+ letterSpacing: 0.5
1630
+ },
1631
+ cardPaymentSubtitle: {
1632
+ fontSize: 16,
1633
+ color: colors.secondaryText,
1634
+ textAlign: 'center',
1635
+ marginBottom: 24,
1636
+ width: '100%'
1637
+ },
1638
+ cardPaymentFields: {
1639
+ width: '100%',
1640
+ marginBottom: 16
1641
+ },
1642
+ cardPaymentWaiting: {
1643
+ fontSize: 14,
1644
+ color: colors.secondaryText,
1645
+ textAlign: 'center',
1646
+ marginBottom: 8
1647
+ },
1648
+ // Summary card styles
1649
+ summaryCard: {
1650
+ backgroundColor: '#fff',
1651
+ borderRadius: 16,
1652
+ padding: 24,
1653
+ marginBottom: 24,
1654
+ alignItems: 'center',
1655
+ width: '100%'
1656
+ },
1657
+ summaryCardContent: {
1658
+ alignItems: 'center',
1659
+ width: '100%'
1660
+ },
1661
+ summaryCardIcon: {
1662
+ marginBottom: 8
1663
+ },
1664
+ summaryCardMainTitle: {
1665
+ fontFamily: _styles.fontFamilies.phuduBold,
1666
+ fontWeight: 'bold',
1667
+ fontSize: 28,
1668
+ color: colors.text,
1669
+ marginBottom: 2,
1670
+ textAlign: 'center',
1671
+ letterSpacing: 0.5
1672
+ },
1673
+ summaryCardSubtitle: {
1674
+ fontSize: 16,
1675
+ color: colors.secondaryText,
1676
+ textAlign: 'center',
1677
+ marginBottom: 24,
1678
+ width: '100%'
1679
+ },
1680
+ summaryCardItems: {
1681
+ width: '100%',
1682
+ marginBottom: 16
1683
+ },
1684
+ summaryCardTotal: {
1685
+ fontSize: 18,
1686
+ fontWeight: 'bold',
1687
+ color: colors.text,
1688
+ textAlign: 'center',
1689
+ marginBottom: 8
1690
+ },
1691
+ // Simple amount styles
1692
+ summaryCardAmount: {
1693
+ alignItems: 'center',
1694
+ width: '100%',
1695
+ marginBottom: 16
1696
+ },
1697
+ summaryCardAmountLabel: {
1698
+ fontSize: 16,
1699
+ color: colors.secondaryText,
1700
+ textAlign: 'center',
1701
+ marginBottom: 8
1702
+ },
1703
+ summaryCardAmountValue: {
1704
+ fontSize: 32,
1705
+ fontWeight: 'bold',
1706
+ color: colors.text,
1707
+ textAlign: 'center',
1708
+ marginBottom: 8,
1709
+ fontFamily: _styles.fontFamilies.phuduBold
1710
+ },
1711
+ summaryCardAmountDescription: {
1712
+ fontSize: 14,
1713
+ color: colors.secondaryText,
1714
+ textAlign: 'center',
1715
+ lineHeight: 20
1716
+ },
1717
+ // Enhanced summary styles
1718
+ summaryCardDivider: {
1719
+ height: 1,
1720
+ backgroundColor: colors.border,
1721
+ marginVertical: 16,
1722
+ width: '100%'
1723
+ },
1724
+ summaryCardTotalSection: {
1725
+ width: '100%',
1726
+ marginBottom: 8
1727
+ },
1728
+ summaryCardTotalRow: {
1729
+ flexDirection: 'row',
1730
+ justifyContent: 'space-between',
1731
+ alignItems: 'center',
1732
+ paddingVertical: 4
1733
+ },
1734
+ summaryCardTotalLabel: {
1735
+ fontSize: 16,
1736
+ color: colors.secondaryText,
1737
+ fontWeight: '500'
1738
+ },
1739
+ summaryCardTotalValue: {
1740
+ fontSize: 16,
1741
+ color: colors.text,
1742
+ fontWeight: '600'
1585
1743
  }
1586
1744
  });
1587
1745
  var _default = exports.default = PaymentGatewayScreen;