@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
@@ -1,20 +1,24 @@
1
1
  "use strict";
2
2
 
3
- import { useMemo, useState } from 'react';
4
- import { ActivityIndicator, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
5
- import { ClockPayClient } from '../api/client';
3
+ import { useMemo, useRef, useState } from 'react';
4
+ import { StyleSheet, Text, TouchableOpacity, View } from 'react-native';
6
5
  import { resolveTheme } from '../internal/theme';
6
+ import { SelectionSheet } from './selection-sheet';
7
7
  import { PaymentSheet } from './payment-sheet';
8
8
  import { LogoIcon } from './icons';
9
9
 
10
10
  /**
11
11
  * Drop-in payment button for React Native. Renders a "Pay with Clockpay" trigger
12
- * that initiates a checkout and opens a Stripe-style bottom-sheet payment modal.
12
+ * that opens a coin/network selection sheet, generates a payment link, then opens
13
+ * a Stripe-style bottom-sheet payment modal.
13
14
  */
14
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
15
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
16
  export function PaymentButton({
16
17
  publicKey,
17
- clientSecret,
18
+ amount,
19
+ currency,
20
+ reference,
21
+ meta,
18
22
  appearance,
19
23
  label = 'Pay with Clockpay',
20
24
  disabled,
@@ -24,62 +28,72 @@ export function PaymentButton({
24
28
  onError,
25
29
  onClose
26
30
  }) {
31
+ const [selecting, setSelecting] = useState(false);
27
32
  const [checkout, setCheckout] = useState(null);
28
- const [visible, setVisible] = useState(false);
29
- const [loading, setLoading] = useState(false);
33
+ const [paymentVisible, setPaymentVisible] = useState(false);
34
+ // Holds the checkout produced by the selection sheet until it finishes closing,
35
+ // so the two sheets never present at the same time.
36
+ const pending = useRef(null);
30
37
  const theme = useMemo(() => resolveTheme(appearance), [appearance]);
31
- const initiate = async () => {
32
- if (loading) return;
33
- setLoading(true);
34
- try {
35
- const client = new ClockPayClient(publicKey, apiBaseUrl);
36
- const response = await client.initiatePayment(clientSecret);
37
- setCheckout(response.data);
38
- setVisible(true);
39
- } catch (error) {
40
- onError?.(error instanceof Error ? error : new Error('Payment initialization failed.'));
41
- } finally {
42
- setLoading(false);
38
+ const handleProceed = data => {
39
+ pending.current = data;
40
+ setSelecting(false); // animate the selection sheet out first
41
+ };
42
+ const handleSelectionClosed = () => {
43
+ if (pending.current) {
44
+ setCheckout(pending.current);
45
+ pending.current = null;
46
+ setPaymentVisible(true);
47
+ } else {
48
+ onClose?.();
43
49
  }
44
50
  };
45
- const handleClosed = () => {
51
+ const handlePaymentClosed = () => {
46
52
  setCheckout(null);
47
53
  onClose?.();
48
54
  };
49
55
  return /*#__PURE__*/_jsxs(View, {
50
- children: [/*#__PURE__*/_jsx(TouchableOpacity, {
56
+ children: [/*#__PURE__*/_jsxs(TouchableOpacity, {
51
57
  activeOpacity: 0.8,
52
- disabled: disabled || loading,
53
- onPress: initiate,
58
+ disabled: disabled,
59
+ onPress: () => setSelecting(true),
54
60
  style: [styles.button, {
55
61
  backgroundColor: theme.buttonBg,
56
62
  borderColor: theme.buttonBorder,
57
63
  borderRadius: theme.radius,
58
- opacity: disabled || loading ? 0.6 : 1
64
+ opacity: disabled ? 0.6 : 1
59
65
  }],
60
- children: loading ? /*#__PURE__*/_jsx(ActivityIndicator, {
61
- size: "small",
62
- color: theme.buttonFg
63
- }) : /*#__PURE__*/_jsxs(_Fragment, {
64
- children: [/*#__PURE__*/_jsx(LogoIcon, {
65
- size: 16
66
- }), typeof label === 'string' ? /*#__PURE__*/_jsx(Text, {
67
- style: [styles.label, {
68
- color: theme.buttonFg,
69
- fontFamily: theme.fontFamily
70
- }],
71
- children: label
72
- }) : label]
73
- })
66
+ children: [/*#__PURE__*/_jsx(LogoIcon, {
67
+ size: 16
68
+ }), typeof label === 'string' ? /*#__PURE__*/_jsx(Text, {
69
+ style: [styles.label, {
70
+ color: theme.buttonFg,
71
+ fontFamily: theme.fontFamily
72
+ }],
73
+ children: label
74
+ }) : label]
75
+ }), /*#__PURE__*/_jsx(SelectionSheet, {
76
+ visible: selecting,
77
+ publicKey: publicKey,
78
+ apiBaseUrl: apiBaseUrl,
79
+ theme: theme,
80
+ amount: amount,
81
+ currency: currency,
82
+ reference: reference,
83
+ meta: meta,
84
+ onRequestClose: () => setSelecting(false),
85
+ onClosed: handleSelectionClosed,
86
+ onProceed: handleProceed,
87
+ onError: onError
74
88
  }), checkout && /*#__PURE__*/_jsx(PaymentSheet, {
75
- visible: visible,
89
+ visible: paymentVisible,
76
90
  checkout: checkout,
77
91
  publicKey: publicKey,
78
92
  apiBaseUrl: apiBaseUrl,
79
93
  theme: theme,
80
94
  redirectUrl: redirectUrl,
81
- onRequestClose: () => setVisible(false),
82
- onClosed: handleClosed,
95
+ onRequestClose: () => setPaymentVisible(false),
96
+ onClosed: handlePaymentClosed,
83
97
  onSuccess: onSuccess,
84
98
  onError: onError
85
99
  })]
@@ -1 +1 @@
1
- {"version":3,"names":["useMemo","useState","ActivityIndicator","StyleSheet","Text","TouchableOpacity","View","ClockPayClient","resolveTheme","PaymentSheet","LogoIcon","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","PaymentButton","publicKey","clientSecret","appearance","label","disabled","apiBaseUrl","redirectUrl","onSuccess","onError","onClose","checkout","setCheckout","visible","setVisible","loading","setLoading","theme","initiate","client","response","initiatePayment","data","error","Error","handleClosed","children","activeOpacity","onPress","style","styles","button","backgroundColor","buttonBg","borderColor","buttonBorder","borderRadius","radius","opacity","size","color","buttonFg","fontFamily","onRequestClose","onClosed","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":["useMemo","useRef","useState","StyleSheet","Text","TouchableOpacity","View","resolveTheme","SelectionSheet","PaymentSheet","LogoIcon","jsx","_jsx","jsxs","_jsxs","PaymentButton","publicKey","amount","currency","reference","meta","appearance","label","disabled","apiBaseUrl","redirectUrl","onSuccess","onError","onClose","selecting","setSelecting","checkout","setCheckout","paymentVisible","setPaymentVisible","pending","theme","handleProceed","data","current","handleSelectionClosed","handlePaymentClosed","children","activeOpacity","onPress","style","styles","button","backgroundColor","buttonBg","borderColor","buttonBorder","borderRadius","radius","opacity","size","color","buttonFg","fontFamily","visible","onRequestClose","onClosed","onProceed","create","flexDirection","alignItems","justifyContent","gap","paddingVertical","paddingHorizontal","borderWidth","fontSize","fontWeight"],"sourceRoot":"..\\..\\..\\src","sources":["components/payment-button.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,391 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useMemo, useState } from 'react';
4
+ import { ActivityIndicator, Pressable, ScrollView, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
5
+ import { SvgUri } from 'react-native-svg';
6
+ import { ClockPayClient } from '../api/client';
7
+ import { formatMoney } from '../internal/format';
8
+ import { BottomSheet } from './bottom-sheet';
9
+ import { ChevronDownIcon, CloseIcon, LogoIcon } from './icons';
10
+
11
+ /** Renders a coin's remote SVG logo. Falls back to a neutral placeholder circle. */
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ function CoinLogo({
14
+ uri
15
+ }) {
16
+ if (!uri) return null;
17
+ return /*#__PURE__*/_jsx(View, {
18
+ style: styles.logo,
19
+ children: /*#__PURE__*/_jsx(SvgUri, {
20
+ width: 20,
21
+ height: 20,
22
+ uri: uri
23
+ })
24
+ });
25
+ }
26
+ /** A lightweight inline dropdown — taps to expand a list of options in place. */
27
+ function Dropdown({
28
+ label,
29
+ placeholder,
30
+ value,
31
+ options,
32
+ disabled,
33
+ loading,
34
+ theme,
35
+ onSelect
36
+ }) {
37
+ const [open, setOpen] = useState(false);
38
+ const selected = options.find(o => o.id === value);
39
+ return /*#__PURE__*/_jsxs(View, {
40
+ style: [styles.field, open && styles.fieldOpen],
41
+ children: [/*#__PURE__*/_jsxs(Text, {
42
+ style: styles.label,
43
+ children: [label, " ", /*#__PURE__*/_jsx(Text, {
44
+ style: styles.req,
45
+ children: "*"
46
+ })]
47
+ }), /*#__PURE__*/_jsxs(TouchableOpacity, {
48
+ activeOpacity: 0.7,
49
+ disabled: disabled,
50
+ style: [styles.select, disabled && styles.selectDisabled],
51
+ onPress: () => setOpen(o => !o),
52
+ children: [/*#__PURE__*/_jsxs(View, {
53
+ style: styles.selectValue,
54
+ children: [selected?.image && /*#__PURE__*/_jsx(CoinLogo, {
55
+ uri: selected.image
56
+ }), /*#__PURE__*/_jsx(Text, {
57
+ style: [styles.selectText, !selected && styles.placeholder],
58
+ children: loading ? 'Loading…' : selected ? selected.label : placeholder
59
+ })]
60
+ }), loading ? /*#__PURE__*/_jsx(ActivityIndicator, {
61
+ size: "small",
62
+ color: "#94a3b8"
63
+ }) : /*#__PURE__*/_jsx(ChevronDownIcon, {})]
64
+ }), open && !disabled && /*#__PURE__*/_jsx(View, {
65
+ style: styles.options,
66
+ children: options.map(o => /*#__PURE__*/_jsxs(TouchableOpacity, {
67
+ style: styles.option,
68
+ onPress: () => {
69
+ onSelect(o.id);
70
+ setOpen(false);
71
+ },
72
+ children: [o.image && /*#__PURE__*/_jsx(CoinLogo, {
73
+ uri: o.image
74
+ }), /*#__PURE__*/_jsx(Text, {
75
+ style: [styles.optionText, o.id === value && {
76
+ color: theme.accent,
77
+ fontWeight: '600'
78
+ }],
79
+ children: o.label
80
+ })]
81
+ }, o.id))
82
+ })]
83
+ });
84
+ }
85
+
86
+ /**
87
+ * First step of the payment flow: the buyer picks a coin and then a settlement
88
+ * network. On continue, a payment link is generated (`create-link`) and the
89
+ * resulting checkout initiated, handing a {@link CheckoutData} to the caller so
90
+ * the payment sheet can open.
91
+ */
92
+ export function SelectionSheet({
93
+ visible,
94
+ publicKey,
95
+ apiBaseUrl,
96
+ theme,
97
+ amount,
98
+ currency,
99
+ reference,
100
+ meta,
101
+ onRequestClose,
102
+ onClosed,
103
+ onProceed,
104
+ onError
105
+ }) {
106
+ const client = useMemo(() => new ClockPayClient(publicKey, apiBaseUrl), [publicKey, apiBaseUrl]);
107
+ const [coins, setCoins] = useState([]);
108
+ const [networks, setNetworks] = useState([]);
109
+ const [coinId, setCoinId] = useState('');
110
+ const [networkId, setNetworkId] = useState('');
111
+ const [loadingCoins, setLoadingCoins] = useState(false);
112
+ const [loadingNetworks, setLoadingNetworks] = useState(false);
113
+ const [submitting, setSubmitting] = useState(false);
114
+ const [error, setError] = useState(null);
115
+
116
+ // Load the available coins once the sheet opens.
117
+ useEffect(() => {
118
+ if (!visible) return;
119
+ let active = true;
120
+ setLoadingCoins(true);
121
+ setError(null);
122
+ client.getCoins().then(list => active && setCoins(list)).catch(e => active && setError(e.message)).finally(() => active && setLoadingCoins(false));
123
+ return () => {
124
+ active = false;
125
+ };
126
+ }, [visible, client]);
127
+
128
+ // Load the networks for the selected coin.
129
+ useEffect(() => {
130
+ setNetworks([]);
131
+ setNetworkId('');
132
+ if (!coinId) return;
133
+ let active = true;
134
+ setLoadingNetworks(true);
135
+ setError(null);
136
+ client.getNetworks(coinId).then(list => active && setNetworks(list)).catch(e => active && setError(e.message)).finally(() => active && setLoadingNetworks(false));
137
+ return () => {
138
+ active = false;
139
+ };
140
+ }, [coinId, client]);
141
+ const canSubmit = Boolean(coinId && networkId && !submitting);
142
+ const proceed = async () => {
143
+ if (!canSubmit) return;
144
+ setSubmitting(true);
145
+ setError(null);
146
+ try {
147
+ const link = await client.createLink({
148
+ amount,
149
+ currency,
150
+ coinId,
151
+ networkId,
152
+ reference,
153
+ meta
154
+ });
155
+ const response = await client.initiatePayment(link.clientSecret);
156
+ onProceed(response.data);
157
+ } catch (e) {
158
+ const err = e instanceof Error ? e : new Error('Failed to start checkout.');
159
+ setError(err.message);
160
+ onError?.(err);
161
+ } finally {
162
+ setSubmitting(false);
163
+ }
164
+ };
165
+ const coinOptions = coins.map(c => ({
166
+ id: c.id,
167
+ label: c.name.toUpperCase(),
168
+ image: c.image
169
+ }));
170
+ const networkOptions = networks.map(n => ({
171
+ id: n.id,
172
+ label: n.name.toUpperCase()
173
+ }));
174
+ return /*#__PURE__*/_jsxs(BottomSheet, {
175
+ visible: visible,
176
+ onClose: onRequestClose,
177
+ onClosed: onClosed,
178
+ closeOnBackdropPress: false,
179
+ children: [/*#__PURE__*/_jsxs(View, {
180
+ style: styles.header,
181
+ children: [/*#__PURE__*/_jsx(LogoIcon, {
182
+ size: 18
183
+ }), /*#__PURE__*/_jsx(Text, {
184
+ style: [styles.title, {
185
+ color: theme.accent
186
+ }],
187
+ children: "Pay with Clockpay"
188
+ }), /*#__PURE__*/_jsx(Pressable, {
189
+ onPress: onRequestClose,
190
+ style: styles.cancel,
191
+ hitSlop: 8,
192
+ accessibilityRole: "button",
193
+ accessibilityLabel: "Cancel",
194
+ children: /*#__PURE__*/_jsx(CloseIcon, {
195
+ size: 22
196
+ })
197
+ })]
198
+ }), /*#__PURE__*/_jsxs(ScrollView, {
199
+ showsVerticalScrollIndicator: false,
200
+ keyboardShouldPersistTaps: "handled",
201
+ children: [/*#__PURE__*/_jsxs(View, {
202
+ style: styles.card,
203
+ children: [/*#__PURE__*/_jsx(Text, {
204
+ style: styles.muted,
205
+ children: "You are paying"
206
+ }), /*#__PURE__*/_jsx(Text, {
207
+ style: styles.amount,
208
+ children: formatMoney(amount, currency)
209
+ })]
210
+ }), /*#__PURE__*/_jsx(Dropdown, {
211
+ label: "Select coin",
212
+ placeholder: "Select a coin",
213
+ value: coinId,
214
+ options: coinOptions,
215
+ disabled: submitting,
216
+ loading: loadingCoins,
217
+ theme: theme,
218
+ onSelect: setCoinId
219
+ }), /*#__PURE__*/_jsx(Dropdown, {
220
+ label: "Select preferred network",
221
+ placeholder: !coinId ? 'Select a coin first' : 'Select a network',
222
+ value: networkId,
223
+ options: networkOptions,
224
+ disabled: !coinId || submitting,
225
+ loading: loadingNetworks,
226
+ theme: theme,
227
+ onSelect: setNetworkId
228
+ }), error && /*#__PURE__*/_jsx(Text, {
229
+ style: styles.error,
230
+ children: error
231
+ }), /*#__PURE__*/_jsx(TouchableOpacity, {
232
+ style: [styles.primaryBtn, {
233
+ backgroundColor: canSubmit ? theme.accent : '#dff0f7',
234
+ borderRadius: theme.radius
235
+ }],
236
+ disabled: !canSubmit,
237
+ onPress: proceed,
238
+ children: submitting ? /*#__PURE__*/_jsx(ActivityIndicator, {
239
+ size: "small",
240
+ color: "#fff"
241
+ }) : /*#__PURE__*/_jsx(Text, {
242
+ style: [styles.primaryBtnText, {
243
+ color: canSubmit ? '#fff' : '#9ca3af'
244
+ }],
245
+ children: "Continue"
246
+ })
247
+ })]
248
+ })]
249
+ });
250
+ }
251
+ const styles = StyleSheet.create({
252
+ header: {
253
+ flexDirection: 'row',
254
+ alignItems: 'center',
255
+ justifyContent: 'center',
256
+ gap: 8,
257
+ paddingBottom: 16
258
+ },
259
+ title: {
260
+ fontSize: 16,
261
+ fontWeight: '700'
262
+ },
263
+ cancel: {
264
+ position: 'absolute',
265
+ right: 0,
266
+ top: -2,
267
+ padding: 4
268
+ },
269
+ card: {
270
+ borderWidth: 1,
271
+ borderColor: '#edf1f6',
272
+ borderRadius: 16,
273
+ padding: 20,
274
+ alignItems: 'center',
275
+ marginBottom: 20
276
+ },
277
+ muted: {
278
+ fontSize: 13,
279
+ color: '#94a3b8'
280
+ },
281
+ amount: {
282
+ fontSize: 24,
283
+ fontWeight: '700',
284
+ color: '#000',
285
+ marginTop: 4
286
+ },
287
+ field: {
288
+ marginBottom: 16,
289
+ position: 'relative'
290
+ },
291
+ // Lift the open dropdown (and its overlay list) above the fields below it.
292
+ fieldOpen: {
293
+ zIndex: 20,
294
+ elevation: 20
295
+ },
296
+ label: {
297
+ fontSize: 14,
298
+ fontWeight: '500',
299
+ color: '#1e1e1e',
300
+ marginBottom: 6
301
+ },
302
+ req: {
303
+ color: '#fb7185'
304
+ },
305
+ select: {
306
+ flexDirection: 'row',
307
+ alignItems: 'center',
308
+ justifyContent: 'space-between',
309
+ borderWidth: 1,
310
+ borderColor: '#d9d9d9',
311
+ borderRadius: 8,
312
+ paddingVertical: 12,
313
+ paddingHorizontal: 12
314
+ },
315
+ selectDisabled: {
316
+ backgroundColor: '#f5f5f5'
317
+ },
318
+ selectValue: {
319
+ flexDirection: 'row',
320
+ alignItems: 'center',
321
+ gap: 8,
322
+ flexShrink: 1
323
+ },
324
+ selectText: {
325
+ fontSize: 14,
326
+ color: '#1e1e1e'
327
+ },
328
+ placeholder: {
329
+ color: '#9ca3af'
330
+ },
331
+ logo: {
332
+ width: 20,
333
+ height: 20,
334
+ borderRadius: 10,
335
+ overflow: 'hidden',
336
+ backgroundColor: '#f0f2f5',
337
+ alignItems: 'center',
338
+ justifyContent: 'center'
339
+ },
340
+ options: {
341
+ position: 'absolute',
342
+ top: '100%',
343
+ left: 0,
344
+ right: 0,
345
+ marginTop: 6,
346
+ zIndex: 20,
347
+ elevation: 8,
348
+ backgroundColor: '#ffffff',
349
+ borderWidth: 1,
350
+ borderColor: '#edf1f6',
351
+ borderRadius: 8,
352
+ maxHeight: 220,
353
+ overflow: 'hidden',
354
+ shadowColor: '#0f172a',
355
+ shadowOpacity: 0.18,
356
+ shadowRadius: 12,
357
+ shadowOffset: {
358
+ width: 0,
359
+ height: 6
360
+ }
361
+ },
362
+ option: {
363
+ flexDirection: 'row',
364
+ alignItems: 'center',
365
+ gap: 8,
366
+ paddingVertical: 12,
367
+ paddingHorizontal: 12,
368
+ borderBottomWidth: 1,
369
+ borderBottomColor: '#f1f5f9'
370
+ },
371
+ optionText: {
372
+ fontSize: 14,
373
+ color: '#1e1e1e'
374
+ },
375
+ error: {
376
+ color: '#ef4444',
377
+ fontSize: 13,
378
+ marginBottom: 12
379
+ },
380
+ primaryBtn: {
381
+ width: '100%',
382
+ paddingVertical: 15,
383
+ alignItems: 'center',
384
+ marginTop: 4
385
+ },
386
+ primaryBtnText: {
387
+ fontSize: 16,
388
+ fontWeight: '600'
389
+ }
390
+ });
391
+ //# sourceMappingURL=selection-sheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useMemo","useState","ActivityIndicator","Pressable","ScrollView","StyleSheet","Text","TouchableOpacity","View","SvgUri","ClockPayClient","formatMoney","BottomSheet","ChevronDownIcon","CloseIcon","LogoIcon","jsx","_jsx","jsxs","_jsxs","CoinLogo","uri","style","styles","logo","children","width","height","Dropdown","label","placeholder","value","options","disabled","loading","theme","onSelect","open","setOpen","selected","find","o","id","field","fieldOpen","req","activeOpacity","select","selectDisabled","onPress","selectValue","image","selectText","size","color","map","option","optionText","accent","fontWeight","SelectionSheet","visible","publicKey","apiBaseUrl","amount","currency","reference","meta","onRequestClose","onClosed","onProceed","onError","client","coins","setCoins","networks","setNetworks","coinId","setCoinId","networkId","setNetworkId","loadingCoins","setLoadingCoins","loadingNetworks","setLoadingNetworks","submitting","setSubmitting","error","setError","active","getCoins","then","list","catch","e","message","finally","getNetworks","canSubmit","Boolean","proceed","link","createLink","response","initiatePayment","clientSecret","data","err","Error","coinOptions","c","name","toUpperCase","networkOptions","n","onClose","closeOnBackdropPress","header","title","cancel","hitSlop","accessibilityRole","accessibilityLabel","showsVerticalScrollIndicator","keyboardShouldPersistTaps","card","muted","primaryBtn","backgroundColor","borderRadius","radius","primaryBtnText","create","flexDirection","alignItems","justifyContent","gap","paddingBottom","fontSize","position","right","top","padding","borderWidth","borderColor","marginBottom","marginTop","zIndex","elevation","paddingVertical","paddingHorizontal","flexShrink","overflow","left","maxHeight","shadowColor","shadowOpacity","shadowRadius","shadowOffset","borderBottomWidth","borderBottomColor"],"sourceRoot":"..\\..\\..\\src","sources":["components/selection-sheet.tsx"],"mappings":"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","ignoreList":[]}
@@ -9,6 +9,16 @@ export function formatTime(totalSeconds) {
9
9
  const seconds = safe % 60;
10
10
  return `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;
11
11
  }
12
+ const CURRENCY_SYMBOLS = {
13
+ ngn: '₦',
14
+ usd: '$'
15
+ };
16
+
17
+ /** Formats a fiat amount with its currency symbol, e.g. `formatMoney(20000, 'ngn')` → `₦20,000`. */
18
+ export function formatMoney(amount, currency) {
19
+ const symbol = CURRENCY_SYMBOLS[currency?.toLowerCase()] ?? '';
20
+ return `${symbol}${amount.toLocaleString()}`;
21
+ }
12
22
 
13
23
  /** Resolves the on-chain code used to verify a transaction for a given checkout. */
14
24
  export function resolveNetworkCode(network, fallback) {
@@ -1 +1 @@
1
- {"version":3,"names":["NETWORK_CODES","formatTime","totalSeconds","safe","Math","max","minutes","floor","seconds","String","padStart","resolveNetworkCode","network","fallback","key","toLowerCase","truncateMiddle","value","lead","tail","length","slice"],"sourceRoot":"..\\..\\..\\src","sources":["internal/format.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,aAAa;;AAE3C;AACA,OAAO,SAASC,UAAUA,CAACC,YAAoB,EAAU;EACvD,MAAMC,IAAI,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEH,YAAY,CAAC;EACtC,MAAMI,OAAO,GAAGF,IAAI,CAACG,KAAK,CAACJ,IAAI,GAAG,EAAE,CAAC;EACrC,MAAMK,OAAO,GAAGL,IAAI,GAAG,EAAE;EACzB,OAAO,GAAGM,MAAM,CAACH,OAAO,CAAC,CAACI,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAID,MAAM,CAACD,OAAO,CAAC,CAACE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AAClF;;AAEA;AACA,OAAO,SAASC,kBAAkBA,CAACC,OAAgB,EAAEC,QAAiB,EAAU;EAC9E,MAAMC,GAAG,GAAGF,OAAO,EAAEG,WAAW,CAAC,CAAC,IAAI,EAAE;EACxC,OAAOf,aAAa,CAACc,GAAG,CAAC,IAAID,QAAQ,IAAI,EAAE;AAC7C;;AAEA;AACA,OAAO,SAASG,cAAcA,CAACC,KAAa,EAAEC,IAAI,GAAG,EAAE,EAAEC,IAAI,GAAG,CAAC,EAAU;EACzE,IAAIF,KAAK,CAACG,MAAM,IAAIF,IAAI,GAAGC,IAAI,GAAG,CAAC,EAAE,OAAOF,KAAK;EACjD,OAAO,GAAGA,KAAK,CAACI,KAAK,CAAC,CAAC,EAAEH,IAAI,CAAC,IAAID,KAAK,CAACI,KAAK,CAAC,CAACF,IAAI,CAAC,EAAE;AACxD","ignoreList":[]}
1
+ {"version":3,"names":["NETWORK_CODES","formatTime","totalSeconds","safe","Math","max","minutes","floor","seconds","String","padStart","CURRENCY_SYMBOLS","ngn","usd","formatMoney","amount","currency","symbol","toLowerCase","toLocaleString","resolveNetworkCode","network","fallback","key","truncateMiddle","value","lead","tail","length","slice"],"sourceRoot":"..\\..\\..\\src","sources":["internal/format.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,aAAa;;AAE3C;AACA,OAAO,SAASC,UAAUA,CAACC,YAAoB,EAAU;EACvD,MAAMC,IAAI,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEH,YAAY,CAAC;EACtC,MAAMI,OAAO,GAAGF,IAAI,CAACG,KAAK,CAACJ,IAAI,GAAG,EAAE,CAAC;EACrC,MAAMK,OAAO,GAAGL,IAAI,GAAG,EAAE;EACzB,OAAO,GAAGM,MAAM,CAACH,OAAO,CAAC,CAACI,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAID,MAAM,CAACD,OAAO,CAAC,CAACE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AAClF;AAEA,MAAMC,gBAAwC,GAAG;EAAEC,GAAG,EAAE,GAAG;EAAEC,GAAG,EAAE;AAAI,CAAC;;AAEvE;AACA,OAAO,SAASC,WAAWA,CAACC,MAAc,EAAEC,QAAgB,EAAU;EACpE,MAAMC,MAAM,GAAGN,gBAAgB,CAACK,QAAQ,EAAEE,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE;EAC9D,OAAO,GAAGD,MAAM,GAAGF,MAAM,CAACI,cAAc,CAAC,CAAC,EAAE;AAC9C;;AAEA;AACA,OAAO,SAASC,kBAAkBA,CAACC,OAAgB,EAAEC,QAAiB,EAAU;EAC9E,MAAMC,GAAG,GAAGF,OAAO,EAAEH,WAAW,CAAC,CAAC,IAAI,EAAE;EACxC,OAAOlB,aAAa,CAACuB,GAAG,CAAC,IAAID,QAAQ,IAAI,EAAE;AAC7C;;AAEA;AACA,OAAO,SAASE,cAAcA,CAACC,KAAa,EAAEC,IAAI,GAAG,EAAE,EAAEC,IAAI,GAAG,CAAC,EAAU;EACzE,IAAIF,KAAK,CAACG,MAAM,IAAIF,IAAI,GAAGC,IAAI,GAAG,CAAC,EAAE,OAAOF,KAAK;EACjD,OAAO,GAAGA,KAAK,CAACI,KAAK,CAAC,CAAC,EAAEH,IAAI,CAAC,IAAID,KAAK,CAACI,KAAK,CAAC,CAACF,IAAI,CAAC,EAAE;AACxD","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { CheckoutResponse, VerifyCryptoPayload, VerifyCryptoResponse } from '../types';
1
+ import type { CheckoutResponse, Coin, CreateLinkData, CreateLinkPayload, Network, VerifyCryptoPayload, VerifyCryptoResponse } from '../types';
2
2
  /**
3
3
  * A small, typed wrapper around the ClockPay REST API.
4
4
  *
@@ -9,6 +9,12 @@ import type { CheckoutResponse, VerifyCryptoPayload, VerifyCryptoResponse } from
9
9
  export declare class ClockPayClient {
10
10
  private readonly http;
11
11
  constructor(publicKey: string, apiBaseUrl?: string);
12
+ /** Lists the coins a buyer can pay with. */
13
+ getCoins(): Promise<Coin[]>;
14
+ /** Lists the settlement networks available for a given coin. */
15
+ getNetworks(coinId: string): Promise<Network[]>;
16
+ /** Generates a payment link, returning its reference and client secret. */
17
+ createLink(payload: CreateLinkPayload): Promise<CreateLinkData>;
12
18
  /** Initiates a checkout for the given client secret. */
13
19
  initiatePayment(clientSecret: string): Promise<CheckoutResponse>;
14
20
  /** Verifies an on-chain transaction by hash. */
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAclB;;;;;;GAMG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;gBAEzB,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAclD,wDAAwD;IAClD,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAetE,gDAAgD;IAC1C,YAAY,CAChB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,oBAAoB,CAAC;CAWjC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,gBAAgB,EAChB,IAAI,EAEJ,cAAc,EACd,iBAAiB,EAEjB,OAAO,EAEP,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAclB;;;;;;GAMG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;gBAEzB,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAclD,4CAA4C;IACtC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IASjC,gEAAgE;IAC1D,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAcrD,2EAA2E;IACrE,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC;IAYrE,wDAAwD;IAClD,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAetE,gDAAgD;IAC1C,YAAY,CAChB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,oBAAoB,CAAC;CAWjC"}
@@ -1,4 +1,7 @@
1
1
  export declare const endpoints: Readonly<{
2
+ coins: "/wallet/client/checkout/coins";
3
+ networks: "/wallet/client/checkout/networks";
4
+ createLink: "/payment/client/create-link";
2
5
  initiatePayment: "/payment/client/checkout";
3
6
  verifyCrypto: "/transactions/verify-crypto";
4
7
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../../../src/api/endpoints.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;EAGpB,CAAC"}
1
+ {"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../../../src/api/endpoints.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;EAMpB,CAAC"}
@@ -7,6 +7,7 @@ export declare function LogoIcon({ size }: IconProps): import("react").JSX.Eleme
7
7
  export declare function CloseIcon({ size, color }: IconProps): import("react").JSX.Element;
8
8
  export declare function CopyIcon({ size, color }: IconProps): import("react").JSX.Element;
9
9
  export declare function InfoIcon({ size }: IconProps): import("react").JSX.Element;
10
+ export declare function ChevronDownIcon({ size, color }: IconProps): import("react").JSX.Element;
10
11
  export declare function CheckIcon({ size }: IconProps): import("react").JSX.Element;
11
12
  export {};
12
13
  //# sourceMappingURL=icons.d.ts.map