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