@clockpay/react-native 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +50 -13
  2. package/lib/commonjs/api/client.js +39 -0
  3. package/lib/commonjs/api/client.js.map +1 -1
  4. package/lib/commonjs/api/endpoints.js +3 -0
  5. package/lib/commonjs/api/endpoints.js.map +1 -1
  6. package/lib/commonjs/components/icons.js +19 -0
  7. package/lib/commonjs/components/icons.js.map +1 -1
  8. package/lib/commonjs/components/payment-button.js +53 -39
  9. package/lib/commonjs/components/payment-button.js.map +1 -1
  10. package/lib/commonjs/components/selection-sheet.js +393 -0
  11. package/lib/commonjs/components/selection-sheet.js.map +1 -0
  12. package/lib/commonjs/internal/format.js +11 -0
  13. package/lib/commonjs/internal/format.js.map +1 -1
  14. package/lib/module/api/client.js +39 -0
  15. package/lib/module/api/client.js.map +1 -1
  16. package/lib/module/api/endpoints.js +3 -0
  17. package/lib/module/api/endpoints.js.map +1 -1
  18. package/lib/module/components/icons.js +18 -0
  19. package/lib/module/components/icons.js.map +1 -1
  20. package/lib/module/components/payment-button.js +56 -42
  21. package/lib/module/components/payment-button.js.map +1 -1
  22. package/lib/module/components/selection-sheet.js +391 -0
  23. package/lib/module/components/selection-sheet.js.map +1 -0
  24. package/lib/module/internal/format.js +10 -0
  25. package/lib/module/internal/format.js.map +1 -1
  26. package/lib/typescript/api/client.d.ts +7 -1
  27. package/lib/typescript/api/client.d.ts.map +1 -1
  28. package/lib/typescript/api/endpoints.d.ts +3 -0
  29. package/lib/typescript/api/endpoints.d.ts.map +1 -1
  30. package/lib/typescript/components/icons.d.ts +1 -0
  31. package/lib/typescript/components/icons.d.ts.map +1 -1
  32. package/lib/typescript/components/payment-button.d.ts +3 -2
  33. package/lib/typescript/components/payment-button.d.ts.map +1 -1
  34. package/lib/typescript/components/selection-sheet.d.ts +25 -0
  35. package/lib/typescript/components/selection-sheet.d.ts.map +1 -0
  36. package/lib/typescript/index.d.ts +1 -1
  37. package/lib/typescript/index.d.ts.map +1 -1
  38. package/lib/typescript/internal/format.d.ts +2 -0
  39. package/lib/typescript/internal/format.d.ts.map +1 -1
  40. package/lib/typescript/types.d.ts +65 -2
  41. package/lib/typescript/types.d.ts.map +1 -1
  42. package/package.json +1 -1
  43. package/src/api/client.ts +45 -0
  44. package/src/api/endpoints.ts +3 -0
  45. package/src/components/icons.tsx +14 -0
  46. package/src/components/payment-button.tsx +54 -38
  47. package/src/components/selection-sheet.tsx +383 -0
  48. package/src/index.ts +10 -0
  49. package/src/internal/format.ts +8 -0
  50. package/src/types.ts +75 -2
package/README.md CHANGED
@@ -7,6 +7,7 @@ single `<PaymentButton />` — it opens a **Stripe-style bottom-sheet** payment
7
7
  that slides up from the bottom of the screen.
8
8
 
9
9
  - 📱 **Native bottom sheet** — slides up with a dimmed backdrop and drag-to-dismiss.
10
+ - 🪙 **Buyer picks coin & network** — a selection sheet fetches the coins and networks you support.
10
11
  - 🎨 **Themeable** — a Stripe-style `appearance` object controls colours and shape.
11
12
  - 🔑 **Env-aware** — the API gateway is auto-selected from your key prefix.
12
13
  - 🛡️ **Type-safe** — full TypeScript types for props, callbacks and responses.
@@ -31,11 +32,20 @@ cd ios && pod install # iOS only
31
32
  ```tsx
32
33
  import { PaymentButton } from '@clockpay/react-native';
33
34
 
34
- export function Checkout({ clientSecret }: { clientSecret: string }) {
35
+ export function Checkout() {
35
36
  return (
36
37
  <PaymentButton
37
- publicKey="cpay_test_pk_..." // from your developer dashboard
38
- clientSecret={clientSecret} // from your server-side checkout call
38
+ publicKey="cpay_test_pk_..." // from your developer dashboard
39
+ amount={20000} // in the currency below
40
+ currency="ngn" // 'ngn' | 'usd'
41
+ reference="order_12345" // your own order reference
42
+ meta={{
43
+ title: 'Order #12345',
44
+ description: 'Two coffees and a croissant',
45
+ fullName: 'Paul Paito',
46
+ email: 'paul@example.com', // optional
47
+ phoneNumber: { code: '+234', number: '09012345678' }, // optional
48
+ }}
39
49
  appearance={{ buttonColor: '#27AAE1', variant: 'outline' }}
40
50
  onSuccess={(data) => console.log('Payment confirmed', data)}
41
51
  onError={(error) => console.error(error)}
@@ -44,19 +54,42 @@ export function Checkout({ clientSecret }: { clientSecret: string }) {
44
54
  }
45
55
  ```
46
56
 
47
- Pressing the button initiates a checkout and presents the bottom sheet: a QR code +
48
- deposit address to transfer to, a countdown, then a screen to paste the transaction
49
- hash for on-chain verification. `onSuccess` fires once the payment is confirmed.
50
-
51
- > `clientSecret` must be created on **your server** (never expose your secret key in
52
- > the app), then passed to the button.
57
+ Pressing the button opens a **selection sheet** where the buyer picks a coin and
58
+ network. On continue, the SDK generates a payment link and presents the payment
59
+ sheet: a QR code + deposit address to transfer to, a countdown, then a screen to
60
+ paste the transaction hash for on-chain verification. `onSuccess` fires once the
61
+ payment is confirmed.
62
+
63
+ > No `clientSecret` or server-side call is required — the SDK creates the payment
64
+ > link from the order details you pass. Your `publicKey` is safe in the app; keep
65
+ > your **secret** key on the server.
66
+
67
+ ### Order details (`meta`)
68
+
69
+ The business supplies the order and buyer details up front — the buyer only picks a
70
+ coin and network.
71
+
72
+ | Field | Type | Required | Description |
73
+ |-------|------|----------|-------------|
74
+ | `amount` | `number` | Yes | Order amount, in `currency`. |
75
+ | `currency` | `'ngn' \| 'usd'` | Yes | Fiat currency of `amount`. |
76
+ | `reference` | `string` | Yes | Your own reference for the order. |
77
+ | `meta.title` | `string` | Yes | Short order title. |
78
+ | `meta.description` | `string` | Yes | Order description. |
79
+ | `meta.fullName` | `string` | Yes | Buyer's full name. |
80
+ | `meta.email` | `string` | No | Buyer email. |
81
+ | `meta.customerId` | `string` | No | Your id for the buyer. |
82
+ | `meta.phoneNumber` | `{ code: string; number: string }` | No | Buyer phone number. |
53
83
 
54
84
  ## Theming
55
85
 
56
86
  ```tsx
57
87
  <PaymentButton
58
88
  publicKey="cpay_test_pk_..."
59
- clientSecret={clientSecret}
89
+ amount={20000}
90
+ currency="ngn"
91
+ reference="order_12345"
92
+ meta={{ title: 'Order #12345', description: 'Two coffees', fullName: 'Paul Paito' }}
60
93
  appearance={{
61
94
  variant: 'solid', // 'solid' | 'outline' (default: 'outline')
62
95
  buttonColor: '#6C5CE7', // primary brand colour
@@ -74,7 +107,10 @@ hash for on-chain verification. `onSuccess` fires once the payment is confirmed.
74
107
  | Prop | Type | Required | Description |
75
108
  |------|------|----------|-------------|
76
109
  | `publicKey` | `string` | Yes | Public key from the developer dashboard. |
77
- | `clientSecret` | `string` | Yes | Returned from your server-side checkout call. |
110
+ | `amount` | `number` | Yes | Order amount, in `currency`. |
111
+ | `currency` | `'ngn' \| 'usd'` | Yes | Fiat currency of `amount`. |
112
+ | `reference` | `string` | Yes | Your own reference for the order. |
113
+ | `meta` | `CheckoutMeta` | Yes | Order/buyer details (see [Order details](#order-details-meta)). |
78
114
  | `appearance` | `ClockPayAppearance` | No | Button/sheet theming. |
79
115
  | `label` | `ReactNode` | No | Button label. Defaults to `"Pay with Clockpay"`. |
80
116
  | `disabled` | `boolean` | No | Disables the button. |
@@ -97,8 +133,9 @@ hash for on-chain verification. `onSuccess` fires once the payment is confirmed.
97
133
 
98
134
  ## Supported networks
99
135
 
100
- ETH, Optimism, BSC, Polygon, and Tron. The network is determined by the checkout
101
- created with your `clientSecret`.
136
+ ETH, Optimism, BSC, Polygon, and Tron. The coins and networks offered on the
137
+ selection sheet come from your account (`/wallet/checkout/coins` and
138
+ `/wallet/checkout/networks/{coinId}`); the buyer chooses which to pay with.
102
139
 
103
140
  ## Local development
104
141
 
@@ -40,6 +40,45 @@ class ClockPayClient {
40
40
  });
41
41
  }
42
42
 
43
+ /** Lists the coins a buyer can pay with. */
44
+ async getCoins() {
45
+ try {
46
+ const {
47
+ data
48
+ } = await this.http.get(_endpoints.endpoints.coins);
49
+ return data.data;
50
+ } catch (error) {
51
+ throw toError(error, 'Failed to load coins.');
52
+ }
53
+ }
54
+
55
+ /** Lists the settlement networks available for a given coin. */
56
+ async getNetworks(coinId) {
57
+ if (!coinId) {
58
+ throw new Error('ClockPay: a coinId is required.');
59
+ }
60
+ try {
61
+ const {
62
+ data
63
+ } = await this.http.get(`${_endpoints.endpoints.networks}/${coinId}`);
64
+ return data.data;
65
+ } catch (error) {
66
+ throw toError(error, 'Failed to load networks.');
67
+ }
68
+ }
69
+
70
+ /** Generates a payment link, returning its reference and client secret. */
71
+ async createLink(payload) {
72
+ try {
73
+ const {
74
+ data
75
+ } = await this.http.post(_endpoints.endpoints.createLink, payload);
76
+ return data.data;
77
+ } catch (error) {
78
+ throw toError(error, 'Failed to create payment link.');
79
+ }
80
+ }
81
+
43
82
  /** Initiates a checkout for the given client secret. */
44
83
  async initiatePayment(clientSecret) {
45
84
  if (!clientSecret) {
@@ -1 +1 @@
1
- {"version":3,"names":["_axios","_interopRequireWildcard","require","_endpoints","_constants","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","toError","error","fallback","AxiosError","message","response","data","Error","ClockPayClient","constructor","publicKey","apiBaseUrl","http","axios","create","baseURL","resolveApiBaseUrl","headers","Accept","initiatePayment","clientSecret","post","endpoints","verifyCrypto","payload","exports"],"sourceRoot":"..\\..\\..\\src","sources":["api/client.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_axios","_interopRequireWildcard","require","_endpoints","_constants","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","toError","error","fallback","AxiosError","message","response","data","Error","ClockPayClient","constructor","publicKey","apiBaseUrl","http","axios","create","baseURL","resolveApiBaseUrl","headers","Accept","getCoins","endpoints","coins","getNetworks","coinId","networks","createLink","payload","post","initiatePayment","clientSecret","verifyCrypto","exports"],"sourceRoot":"..\\..\\..\\src","sources":["api/client.ts"],"mappings":"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","ignoreList":[]}
@@ -5,6 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.endpoints = void 0;
7
7
  const endpoints = exports.endpoints = Object.freeze({
8
+ coins: '/wallet/client/checkout/coins',
9
+ networks: '/wallet/client/checkout/networks',
10
+ createLink: '/payment/client/create-link',
8
11
  initiatePayment: '/payment/client/checkout',
9
12
  verifyCrypto: '/transactions/verify-crypto'
10
13
  });
@@ -1 +1 @@
1
- {"version":3,"names":["endpoints","exports","Object","freeze","initiatePayment","verifyCrypto"],"sourceRoot":"..\\..\\..\\src","sources":["api/endpoints.ts"],"mappings":";;;;;;AAAO,MAAMA,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,MAAM,CAACC,MAAM,CAAC;EACrCC,eAAe,EAAE,0BAA0B;EAC3CC,YAAY,EAAE;AAChB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["endpoints","exports","Object","freeze","coins","networks","createLink","initiatePayment","verifyCrypto"],"sourceRoot":"..\\..\\..\\src","sources":["api/endpoints.ts"],"mappings":";;;;;;AAAO,MAAMA,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,MAAM,CAACC,MAAM,CAAC;EACrCC,KAAK,EAAE,+BAA+B;EACtCC,QAAQ,EAAE,kCAAkC;EAC5CC,UAAU,EAAE,6BAA6B;EACzCC,eAAe,EAAE,0BAA0B;EAC3CC,YAAY,EAAE;AAChB,CAAC,CAAC","ignoreList":[]}
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.CheckIcon = CheckIcon;
7
+ exports.ChevronDownIcon = ChevronDownIcon;
7
8
  exports.CloseIcon = CloseIcon;
8
9
  exports.CopyIcon = CopyIcon;
9
10
  exports.InfoIcon = InfoIcon;
@@ -104,6 +105,24 @@ function InfoIcon({
104
105
  })]
105
106
  });
106
107
  }
108
+ function ChevronDownIcon({
109
+ size = 20,
110
+ color = '#94a3b8'
111
+ }) {
112
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.default, {
113
+ width: size,
114
+ height: size,
115
+ viewBox: "0 0 24 24",
116
+ fill: "none",
117
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Path, {
118
+ d: "M6 9L12 15L18 9",
119
+ stroke: color,
120
+ strokeWidth: 2,
121
+ strokeLinecap: "round",
122
+ strokeLinejoin: "round"
123
+ })
124
+ });
125
+ }
107
126
  function CheckIcon({
108
127
  size = 48
109
128
  }) {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeSvg","_interopRequireWildcard","require","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","LogoIcon","size","height","width","jsxs","viewBox","fill","children","jsx","Path","d","CloseIcon","color","stroke","strokeWidth","strokeLinecap","strokeLinejoin","CopyIcon","InfoIcon","CheckIcon","Circle","cx","cy"],"sourceRoot":"..\\..\\..\\src","sources":["components/icons.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeSvg","_interopRequireWildcard","require","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","LogoIcon","size","height","width","jsxs","viewBox","fill","children","jsx","Path","d","CloseIcon","color","stroke","strokeWidth","strokeLinecap","strokeLinejoin","CopyIcon","InfoIcon","ChevronDownIcon","CheckIcon","Circle","cx","cy"],"sourceRoot":"..\\..\\..\\src","sources":["components/icons.tsx"],"mappings":"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","ignoreList":[]}
@@ -6,18 +6,22 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.PaymentButton = PaymentButton;
7
7
  var _react = require("react");
8
8
  var _reactNative = require("react-native");
9
- var _client = require("../api/client");
10
9
  var _theme = require("../internal/theme");
10
+ var _selectionSheet = require("./selection-sheet");
11
11
  var _paymentSheet = require("./payment-sheet");
12
12
  var _icons = require("./icons");
13
13
  var _jsxRuntime = require("react/jsx-runtime");
14
14
  /**
15
15
  * Drop-in payment button for React Native. Renders a "Pay with Clockpay" trigger
16
- * that initiates a checkout and opens a Stripe-style bottom-sheet payment modal.
16
+ * that opens a coin/network selection sheet, generates a payment link, then opens
17
+ * a Stripe-style bottom-sheet payment modal.
17
18
  */
18
19
  function PaymentButton({
19
20
  publicKey,
20
- clientSecret,
21
+ amount,
22
+ currency,
23
+ reference,
24
+ meta,
21
25
  appearance,
22
26
  label = 'Pay with Clockpay',
23
27
  disabled,
@@ -27,62 +31,72 @@ function PaymentButton({
27
31
  onError,
28
32
  onClose
29
33
  }) {
34
+ const [selecting, setSelecting] = (0, _react.useState)(false);
30
35
  const [checkout, setCheckout] = (0, _react.useState)(null);
31
- const [visible, setVisible] = (0, _react.useState)(false);
32
- const [loading, setLoading] = (0, _react.useState)(false);
36
+ const [paymentVisible, setPaymentVisible] = (0, _react.useState)(false);
37
+ // Holds the checkout produced by the selection sheet until it finishes closing,
38
+ // so the two sheets never present at the same time.
39
+ const pending = (0, _react.useRef)(null);
33
40
  const theme = (0, _react.useMemo)(() => (0, _theme.resolveTheme)(appearance), [appearance]);
34
- const initiate = async () => {
35
- if (loading) return;
36
- setLoading(true);
37
- try {
38
- const client = new _client.ClockPayClient(publicKey, apiBaseUrl);
39
- const response = await client.initiatePayment(clientSecret);
40
- setCheckout(response.data);
41
- setVisible(true);
42
- } catch (error) {
43
- onError?.(error instanceof Error ? error : new Error('Payment initialization failed.'));
44
- } finally {
45
- setLoading(false);
41
+ const handleProceed = data => {
42
+ pending.current = data;
43
+ setSelecting(false); // animate the selection sheet out first
44
+ };
45
+ const handleSelectionClosed = () => {
46
+ if (pending.current) {
47
+ setCheckout(pending.current);
48
+ pending.current = null;
49
+ setPaymentVisible(true);
50
+ } else {
51
+ onClose?.();
46
52
  }
47
53
  };
48
- const handleClosed = () => {
54
+ const handlePaymentClosed = () => {
49
55
  setCheckout(null);
50
56
  onClose?.();
51
57
  };
52
58
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
53
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
59
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
54
60
  activeOpacity: 0.8,
55
- disabled: disabled || loading,
56
- onPress: initiate,
61
+ disabled: disabled,
62
+ onPress: () => setSelecting(true),
57
63
  style: [styles.button, {
58
64
  backgroundColor: theme.buttonBg,
59
65
  borderColor: theme.buttonBorder,
60
66
  borderRadius: theme.radius,
61
- opacity: disabled || loading ? 0.6 : 1
67
+ opacity: disabled ? 0.6 : 1
62
68
  }],
63
- children: loading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
64
- size: "small",
65
- color: theme.buttonFg
66
- }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
67
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.LogoIcon, {
68
- size: 16
69
- }), typeof label === 'string' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
70
- style: [styles.label, {
71
- color: theme.buttonFg,
72
- fontFamily: theme.fontFamily
73
- }],
74
- children: label
75
- }) : label]
76
- })
69
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.LogoIcon, {
70
+ size: 16
71
+ }), typeof label === 'string' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
72
+ style: [styles.label, {
73
+ color: theme.buttonFg,
74
+ fontFamily: theme.fontFamily
75
+ }],
76
+ children: label
77
+ }) : label]
78
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_selectionSheet.SelectionSheet, {
79
+ visible: selecting,
80
+ publicKey: publicKey,
81
+ apiBaseUrl: apiBaseUrl,
82
+ theme: theme,
83
+ amount: amount,
84
+ currency: currency,
85
+ reference: reference,
86
+ meta: meta,
87
+ onRequestClose: () => setSelecting(false),
88
+ onClosed: handleSelectionClosed,
89
+ onProceed: handleProceed,
90
+ onError: onError
77
91
  }), checkout && /*#__PURE__*/(0, _jsxRuntime.jsx)(_paymentSheet.PaymentSheet, {
78
- visible: visible,
92
+ visible: paymentVisible,
79
93
  checkout: checkout,
80
94
  publicKey: publicKey,
81
95
  apiBaseUrl: apiBaseUrl,
82
96
  theme: theme,
83
97
  redirectUrl: redirectUrl,
84
- onRequestClose: () => setVisible(false),
85
- onClosed: handleClosed,
98
+ onRequestClose: () => setPaymentVisible(false),
99
+ onClosed: handlePaymentClosed,
86
100
  onSuccess: onSuccess,
87
101
  onError: onError
88
102
  })]
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_client","_theme","_paymentSheet","_icons","_jsxRuntime","PaymentButton","publicKey","clientSecret","appearance","label","disabled","apiBaseUrl","redirectUrl","onSuccess","onError","onClose","checkout","setCheckout","useState","visible","setVisible","loading","setLoading","theme","useMemo","resolveTheme","initiate","client","ClockPayClient","response","initiatePayment","data","error","Error","handleClosed","jsxs","View","children","jsx","TouchableOpacity","activeOpacity","onPress","style","styles","button","backgroundColor","buttonBg","borderColor","buttonBorder","borderRadius","radius","opacity","ActivityIndicator","size","color","buttonFg","Fragment","LogoIcon","Text","fontFamily","PaymentSheet","onRequestClose","onClosed","StyleSheet","create","flexDirection","alignItems","justifyContent","gap","paddingVertical","paddingHorizontal","borderWidth","fontSize","fontWeight"],"sourceRoot":"..\\..\\..\\src","sources":["components/payment-button.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_theme","_selectionSheet","_paymentSheet","_icons","_jsxRuntime","PaymentButton","publicKey","amount","currency","reference","meta","appearance","label","disabled","apiBaseUrl","redirectUrl","onSuccess","onError","onClose","selecting","setSelecting","useState","checkout","setCheckout","paymentVisible","setPaymentVisible","pending","useRef","theme","useMemo","resolveTheme","handleProceed","data","current","handleSelectionClosed","handlePaymentClosed","jsxs","View","children","TouchableOpacity","activeOpacity","onPress","style","styles","button","backgroundColor","buttonBg","borderColor","buttonBorder","borderRadius","radius","opacity","jsx","LogoIcon","size","Text","color","buttonFg","fontFamily","SelectionSheet","visible","onRequestClose","onClosed","onProceed","PaymentSheet","StyleSheet","create","flexDirection","alignItems","justifyContent","gap","paddingVertical","paddingHorizontal","borderWidth","fontSize","fontWeight"],"sourceRoot":"..\\..\\..\\src","sources":["components/payment-button.tsx"],"mappings":"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","ignoreList":[]}