@clockpay/react-native 1.0.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 (109) hide show
  1. package/README.md +113 -0
  2. package/lib/commonjs/api/client.js +73 -0
  3. package/lib/commonjs/api/client.js.map +1 -0
  4. package/lib/commonjs/api/endpoints.js +11 -0
  5. package/lib/commonjs/api/endpoints.js.map +1 -0
  6. package/lib/commonjs/components/bottom-sheet.js +137 -0
  7. package/lib/commonjs/components/bottom-sheet.js.map +1 -0
  8. package/lib/commonjs/components/icons.js +129 -0
  9. package/lib/commonjs/components/icons.js.map +1 -0
  10. package/lib/commonjs/components/payment-button.js +106 -0
  11. package/lib/commonjs/components/payment-button.js.map +1 -0
  12. package/lib/commonjs/components/payment-sheet.js +156 -0
  13. package/lib/commonjs/components/payment-sheet.js.map +1 -0
  14. package/lib/commonjs/components/views/status-view.js +109 -0
  15. package/lib/commonjs/components/views/status-view.js.map +1 -0
  16. package/lib/commonjs/components/views/transfer-view.js +162 -0
  17. package/lib/commonjs/components/views/transfer-view.js.map +1 -0
  18. package/lib/commonjs/components/views/verify-view.js +98 -0
  19. package/lib/commonjs/components/views/verify-view.js.map +1 -0
  20. package/lib/commonjs/hooks/use-countdown.js +24 -0
  21. package/lib/commonjs/hooks/use-countdown.js.map +1 -0
  22. package/lib/commonjs/index.js +13 -0
  23. package/lib/commonjs/index.js.map +1 -0
  24. package/lib/commonjs/internal/constants.js +42 -0
  25. package/lib/commonjs/internal/constants.js.map +1 -0
  26. package/lib/commonjs/internal/format.js +29 -0
  27. package/lib/commonjs/internal/format.js.map +1 -0
  28. package/lib/commonjs/internal/theme.js +24 -0
  29. package/lib/commonjs/internal/theme.js.map +1 -0
  30. package/lib/commonjs/package.json +1 -0
  31. package/lib/commonjs/types.js +6 -0
  32. package/lib/commonjs/types.js.map +1 -0
  33. package/lib/module/api/client.js +67 -0
  34. package/lib/module/api/client.js.map +1 -0
  35. package/lib/module/api/endpoints.js +7 -0
  36. package/lib/module/api/endpoints.js.map +1 -0
  37. package/lib/module/components/bottom-sheet.js +133 -0
  38. package/lib/module/components/bottom-sheet.js.map +1 -0
  39. package/lib/module/components/icons.js +120 -0
  40. package/lib/module/components/icons.js.map +1 -0
  41. package/lib/module/components/payment-button.js +103 -0
  42. package/lib/module/components/payment-button.js.map +1 -0
  43. package/lib/module/components/payment-sheet.js +152 -0
  44. package/lib/module/components/payment-sheet.js.map +1 -0
  45. package/lib/module/components/views/status-view.js +105 -0
  46. package/lib/module/components/views/status-view.js.map +1 -0
  47. package/lib/module/components/views/transfer-view.js +157 -0
  48. package/lib/module/components/views/transfer-view.js.map +1 -0
  49. package/lib/module/components/views/verify-view.js +94 -0
  50. package/lib/module/components/views/verify-view.js.map +1 -0
  51. package/lib/module/hooks/use-countdown.js +21 -0
  52. package/lib/module/hooks/use-countdown.js.map +1 -0
  53. package/lib/module/index.js +4 -0
  54. package/lib/module/index.js.map +1 -0
  55. package/lib/module/internal/constants.js +37 -0
  56. package/lib/module/internal/constants.js.map +1 -0
  57. package/lib/module/internal/format.js +24 -0
  58. package/lib/module/internal/format.js.map +1 -0
  59. package/lib/module/internal/theme.js +21 -0
  60. package/lib/module/internal/theme.js.map +1 -0
  61. package/lib/module/package.json +1 -0
  62. package/lib/module/types.js +4 -0
  63. package/lib/module/types.js.map +1 -0
  64. package/lib/typescript/api/client.d.ts +17 -0
  65. package/lib/typescript/api/client.d.ts.map +1 -0
  66. package/lib/typescript/api/endpoints.d.ts +5 -0
  67. package/lib/typescript/api/endpoints.d.ts.map +1 -0
  68. package/lib/typescript/components/bottom-sheet.d.ts +18 -0
  69. package/lib/typescript/components/bottom-sheet.d.ts.map +1 -0
  70. package/lib/typescript/components/icons.d.ts +12 -0
  71. package/lib/typescript/components/icons.d.ts.map +1 -0
  72. package/lib/typescript/components/payment-button.d.ts +7 -0
  73. package/lib/typescript/components/payment-button.d.ts.map +1 -0
  74. package/lib/typescript/components/payment-sheet.d.ts +17 -0
  75. package/lib/typescript/components/payment-sheet.d.ts.map +1 -0
  76. package/lib/typescript/components/views/status-view.d.ts +12 -0
  77. package/lib/typescript/components/views/status-view.d.ts.map +1 -0
  78. package/lib/typescript/components/views/transfer-view.d.ts +13 -0
  79. package/lib/typescript/components/views/transfer-view.d.ts.map +1 -0
  80. package/lib/typescript/components/views/verify-view.d.ts +10 -0
  81. package/lib/typescript/components/views/verify-view.d.ts.map +1 -0
  82. package/lib/typescript/hooks/use-countdown.d.ts +8 -0
  83. package/lib/typescript/hooks/use-countdown.d.ts.map +1 -0
  84. package/lib/typescript/index.d.ts +3 -0
  85. package/lib/typescript/index.d.ts.map +1 -0
  86. package/lib/typescript/internal/constants.d.ts +20 -0
  87. package/lib/typescript/internal/constants.d.ts.map +1 -0
  88. package/lib/typescript/internal/format.d.ts +7 -0
  89. package/lib/typescript/internal/format.d.ts.map +1 -0
  90. package/lib/typescript/internal/theme.d.ts +13 -0
  91. package/lib/typescript/internal/theme.d.ts.map +1 -0
  92. package/lib/typescript/types.d.ts +67 -0
  93. package/lib/typescript/types.d.ts.map +1 -0
  94. package/package.json +70 -0
  95. package/src/api/client.ts +76 -0
  96. package/src/api/endpoints.ts +4 -0
  97. package/src/components/bottom-sheet.tsx +144 -0
  98. package/src/components/icons.tsx +90 -0
  99. package/src/components/payment-button.tsx +112 -0
  100. package/src/components/payment-sheet.tsx +149 -0
  101. package/src/components/views/status-view.tsx +61 -0
  102. package/src/components/views/transfer-view.tsx +112 -0
  103. package/src/components/views/verify-view.tsx +69 -0
  104. package/src/hooks/use-countdown.ts +20 -0
  105. package/src/index.ts +10 -0
  106. package/src/internal/constants.ts +34 -0
  107. package/src/internal/format.ts +21 -0
  108. package/src/internal/theme.ts +28 -0
  109. package/src/types.ts +73 -0
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.PaymentSheet = PaymentSheet;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _constants = require("../internal/constants");
10
+ var _format = require("../internal/format");
11
+ var _client = require("../api/client");
12
+ var _useCountdown = require("../hooks/use-countdown");
13
+ var _bottomSheet = require("./bottom-sheet");
14
+ var _icons = require("./icons");
15
+ var _transferView = require("./views/transfer-view");
16
+ var _verifyView = require("./views/verify-view");
17
+ var _statusView = require("./views/status-view");
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+ function PaymentSheet({
20
+ visible,
21
+ checkout,
22
+ publicKey,
23
+ apiBaseUrl,
24
+ theme,
25
+ redirectUrl,
26
+ onRequestClose,
27
+ onClosed,
28
+ onSuccess,
29
+ onError
30
+ }) {
31
+ const [step, setStep] = (0, _react.useState)('pay');
32
+ const [busy, setBusy] = (0, _react.useState)(false);
33
+ const [success, setSuccess] = (0, _react.useState)(false);
34
+ const [error, setError] = (0, _react.useState)(null);
35
+ const {
36
+ formatted,
37
+ expired
38
+ } = (0, _useCountdown.useCountdown)(_constants.COUNTDOWN_SECONDS);
39
+ const client = (0, _react.useMemo)(() => new _client.ClockPayClient(publicKey, apiBaseUrl), [publicKey, apiBaseUrl]);
40
+ const startVerification = async trxHash => {
41
+ setStep('status');
42
+ setBusy(true);
43
+ setError(null);
44
+ try {
45
+ const data = await client.verifyCrypto({
46
+ reference: checkout.reference,
47
+ trxHash,
48
+ code: (0, _format.resolveNetworkCode)(checkout.network, checkout.networkCode)
49
+ });
50
+ setSuccess(true);
51
+ onSuccess?.(data);
52
+ } catch (err) {
53
+ const e = err instanceof Error ? err : new Error('Verification failed.');
54
+ setError(e.message);
55
+ onError?.(e);
56
+ } finally {
57
+ setBusy(false);
58
+ }
59
+ };
60
+ const handleClosed = () => {
61
+ onClosed();
62
+ if (success && redirectUrl) _reactNative.Linking.openURL(redirectUrl).catch(() => {});
63
+ };
64
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_bottomSheet.BottomSheet, {
65
+ visible: visible,
66
+ onClose: onRequestClose,
67
+ onClosed: handleClosed,
68
+ closeOnBackdropPress: false,
69
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
70
+ style: styles.header,
71
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.LogoIcon, {
72
+ size: 18
73
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
74
+ style: [styles.title, {
75
+ color: theme.accent
76
+ }],
77
+ children: "Pay with Clockpay"
78
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
79
+ onPress: onRequestClose,
80
+ style: styles.cancel,
81
+ hitSlop: 8,
82
+ accessibilityRole: "button",
83
+ accessibilityLabel: "Cancel",
84
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.CloseIcon, {
85
+ size: 22
86
+ })
87
+ })]
88
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.ScrollView, {
89
+ showsVerticalScrollIndicator: false,
90
+ keyboardShouldPersistTaps: "handled",
91
+ children: [step === 'pay' && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
92
+ style: styles.card,
93
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
94
+ style: styles.muted,
95
+ children: "Total amount to be paid"
96
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
97
+ style: styles.amount,
98
+ children: [checkout.amount, checkout.coin?.toUpperCase()]
99
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_transferView.TransferView, {
100
+ checkout: checkout,
101
+ theme: theme,
102
+ formattedTime: formatted,
103
+ expired: expired,
104
+ onNext: () => setStep('verify')
105
+ })]
106
+ }), step === 'verify' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_verifyView.VerifyView, {
107
+ theme: theme,
108
+ busy: busy,
109
+ onSubmit: startVerification
110
+ }), step === 'status' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_statusView.StatusView, {
111
+ theme: theme,
112
+ busy: busy,
113
+ success: success,
114
+ error: error,
115
+ onClose: onRequestClose
116
+ })]
117
+ })]
118
+ });
119
+ }
120
+ const styles = _reactNative.StyleSheet.create({
121
+ header: {
122
+ flexDirection: 'row',
123
+ alignItems: 'center',
124
+ justifyContent: 'center',
125
+ gap: 8,
126
+ paddingBottom: 16
127
+ },
128
+ title: {
129
+ fontSize: 16,
130
+ fontWeight: '700'
131
+ },
132
+ cancel: {
133
+ position: 'absolute',
134
+ right: 0,
135
+ top: -2,
136
+ padding: 4
137
+ },
138
+ card: {
139
+ borderWidth: 1,
140
+ borderColor: '#edf1f6',
141
+ borderRadius: 16,
142
+ padding: 20,
143
+ alignItems: 'center'
144
+ },
145
+ muted: {
146
+ fontSize: 13,
147
+ color: '#94a3b8'
148
+ },
149
+ amount: {
150
+ fontSize: 24,
151
+ fontWeight: '700',
152
+ color: '#000',
153
+ marginTop: 4
154
+ }
155
+ });
156
+ //# sourceMappingURL=payment-sheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_constants","_format","_client","_useCountdown","_bottomSheet","_icons","_transferView","_verifyView","_statusView","_jsxRuntime","PaymentSheet","visible","checkout","publicKey","apiBaseUrl","theme","redirectUrl","onRequestClose","onClosed","onSuccess","onError","step","setStep","useState","busy","setBusy","success","setSuccess","error","setError","formatted","expired","useCountdown","COUNTDOWN_SECONDS","client","useMemo","ClockPayClient","startVerification","trxHash","data","verifyCrypto","reference","code","resolveNetworkCode","network","networkCode","err","e","Error","message","handleClosed","Linking","openURL","catch","jsxs","BottomSheet","onClose","closeOnBackdropPress","children","View","style","styles","header","jsx","LogoIcon","size","Text","title","color","accent","Pressable","onPress","cancel","hitSlop","accessibilityRole","accessibilityLabel","CloseIcon","ScrollView","showsVerticalScrollIndicator","keyboardShouldPersistTaps","card","muted","amount","coin","toUpperCase","TransferView","formattedTime","onNext","VerifyView","onSubmit","StatusView","StyleSheet","create","flexDirection","alignItems","justifyContent","gap","paddingBottom","fontSize","fontWeight","position","right","top","padding","borderWidth","borderColor","borderRadius","marginTop"],"sourceRoot":"..\\..\\..\\src","sources":["components/payment-sheet.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.StatusView = StatusView;
7
+ var _reactNative = require("react-native");
8
+ var _icons = require("../icons");
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ /** Terminal step: processing spinner, success confirmation, or an error. */
11
+ function StatusView({
12
+ theme,
13
+ busy,
14
+ success,
15
+ error,
16
+ onClose
17
+ }) {
18
+ if (busy) {
19
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
20
+ style: styles.center,
21
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
22
+ size: "large",
23
+ color: theme.accent
24
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
25
+ style: styles.muted,
26
+ children: "Please wait while we verify your transaction\u2026"
27
+ })]
28
+ });
29
+ }
30
+ if (success) {
31
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
32
+ style: styles.center,
33
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.CheckIcon, {
34
+ size: 48
35
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
36
+ style: styles.title,
37
+ children: "Payment received!"
38
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
39
+ style: styles.muted,
40
+ children: "You can safely close this window."
41
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
42
+ style: [styles.primaryBtn, {
43
+ backgroundColor: theme.accent,
44
+ borderRadius: theme.radius
45
+ }],
46
+ onPress: onClose,
47
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
48
+ style: styles.primaryBtnText,
49
+ children: "Close"
50
+ })
51
+ })]
52
+ });
53
+ }
54
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
55
+ style: styles.center,
56
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
57
+ style: styles.title,
58
+ children: "Verification failed"
59
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
60
+ style: styles.error,
61
+ children: error ?? 'We could not verify your transaction.'
62
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
63
+ style: [styles.primaryBtn, {
64
+ backgroundColor: theme.accent,
65
+ borderRadius: theme.radius
66
+ }],
67
+ onPress: onClose,
68
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
69
+ style: styles.primaryBtnText,
70
+ children: "Close"
71
+ })
72
+ })]
73
+ });
74
+ }
75
+ const styles = _reactNative.StyleSheet.create({
76
+ center: {
77
+ alignItems: 'center',
78
+ paddingVertical: 24,
79
+ gap: 8
80
+ },
81
+ title: {
82
+ fontSize: 18,
83
+ fontWeight: '700',
84
+ color: '#000',
85
+ marginTop: 8
86
+ },
87
+ muted: {
88
+ fontSize: 13,
89
+ color: '#94a3b8',
90
+ textAlign: 'center'
91
+ },
92
+ error: {
93
+ fontSize: 13,
94
+ color: '#ef4444',
95
+ textAlign: 'center'
96
+ },
97
+ primaryBtn: {
98
+ width: '100%',
99
+ paddingVertical: 15,
100
+ alignItems: 'center',
101
+ marginTop: 16
102
+ },
103
+ primaryBtnText: {
104
+ fontSize: 16,
105
+ fontWeight: '600',
106
+ color: '#fff'
107
+ }
108
+ });
109
+ //# sourceMappingURL=status-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_icons","_jsxRuntime","StatusView","theme","busy","success","error","onClose","jsxs","View","style","styles","center","children","jsx","ActivityIndicator","size","color","accent","Text","muted","CheckIcon","title","TouchableOpacity","primaryBtn","backgroundColor","borderRadius","radius","onPress","primaryBtnText","StyleSheet","create","alignItems","paddingVertical","gap","fontSize","fontWeight","marginTop","textAlign","width"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/views/status-view.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAAqC,IAAAE,WAAA,GAAAF,OAAA;AAUrC;AACO,SAASG,UAAUA,CAAC;EAAEC,KAAK;EAAEC,IAAI;EAAEC,OAAO;EAAEC,KAAK;EAAEC;AAAyB,CAAC,EAAE;EACpF,IAAIH,IAAI,EAAE;IACR,oBACE,IAAAH,WAAA,CAAAO,IAAA,EAACV,YAAA,CAAAW,IAAI;MAACC,KAAK,EAAEC,MAAM,CAACC,MAAO;MAAAC,QAAA,gBACzB,IAAAZ,WAAA,CAAAa,GAAA,EAAChB,YAAA,CAAAiB,iBAAiB;QAACC,IAAI,EAAC,OAAO;QAACC,KAAK,EAAEd,KAAK,CAACe;MAAO,CAAE,CAAC,eACvD,IAAAjB,WAAA,CAAAa,GAAA,EAAChB,YAAA,CAAAqB,IAAI;QAACT,KAAK,EAAEC,MAAM,CAACS,KAAM;QAAAP,QAAA,EAAC;MAA6C,CAAM,CAAC;IAAA,CAC3E,CAAC;EAEX;EAEA,IAAIR,OAAO,EAAE;IACX,oBACE,IAAAJ,WAAA,CAAAO,IAAA,EAACV,YAAA,CAAAW,IAAI;MAACC,KAAK,EAAEC,MAAM,CAACC,MAAO;MAAAC,QAAA,gBACzB,IAAAZ,WAAA,CAAAa,GAAA,EAACd,MAAA,CAAAqB,SAAS;QAACL,IAAI,EAAE;MAAG,CAAE,CAAC,eACvB,IAAAf,WAAA,CAAAa,GAAA,EAAChB,YAAA,CAAAqB,IAAI;QAACT,KAAK,EAAEC,MAAM,CAACW,KAAM;QAAAT,QAAA,EAAC;MAAiB,CAAM,CAAC,eACnD,IAAAZ,WAAA,CAAAa,GAAA,EAAChB,YAAA,CAAAqB,IAAI;QAACT,KAAK,EAAEC,MAAM,CAACS,KAAM;QAAAP,QAAA,EAAC;MAAiC,CAAM,CAAC,eACnE,IAAAZ,WAAA,CAAAa,GAAA,EAAChB,YAAA,CAAAyB,gBAAgB;QACfb,KAAK,EAAE,CAACC,MAAM,CAACa,UAAU,EAAE;UAAEC,eAAe,EAAEtB,KAAK,CAACe,MAAM;UAAEQ,YAAY,EAAEvB,KAAK,CAACwB;QAAO,CAAC,CAAE;QAC1FC,OAAO,EAAErB,OAAQ;QAAAM,QAAA,eAEjB,IAAAZ,WAAA,CAAAa,GAAA,EAAChB,YAAA,CAAAqB,IAAI;UAACT,KAAK,EAAEC,MAAM,CAACkB,cAAe;UAAAhB,QAAA,EAAC;QAAK,CAAM;MAAC,CAChC,CAAC;IAAA,CACf,CAAC;EAEX;EAEA,oBACE,IAAAZ,WAAA,CAAAO,IAAA,EAACV,YAAA,CAAAW,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACC,MAAO;IAAAC,QAAA,gBACzB,IAAAZ,WAAA,CAAAa,GAAA,EAAChB,YAAA,CAAAqB,IAAI;MAACT,KAAK,EAAEC,MAAM,CAACW,KAAM;MAAAT,QAAA,EAAC;IAAmB,CAAM,CAAC,eACrD,IAAAZ,WAAA,CAAAa,GAAA,EAAChB,YAAA,CAAAqB,IAAI;MAACT,KAAK,EAAEC,MAAM,CAACL,KAAM;MAAAO,QAAA,EAAEP,KAAK,IAAI;IAAuC,CAAO,CAAC,eACpF,IAAAL,WAAA,CAAAa,GAAA,EAAChB,YAAA,CAAAyB,gBAAgB;MACfb,KAAK,EAAE,CAACC,MAAM,CAACa,UAAU,EAAE;QAAEC,eAAe,EAAEtB,KAAK,CAACe,MAAM;QAAEQ,YAAY,EAAEvB,KAAK,CAACwB;MAAO,CAAC,CAAE;MAC1FC,OAAO,EAAErB,OAAQ;MAAAM,QAAA,eAEjB,IAAAZ,WAAA,CAAAa,GAAA,EAAChB,YAAA,CAAAqB,IAAI;QAACT,KAAK,EAAEC,MAAM,CAACkB,cAAe;QAAAhB,QAAA,EAAC;MAAK,CAAM;IAAC,CAChC,CAAC;EAAA,CACf,CAAC;AAEX;AAEA,MAAMF,MAAM,GAAGmB,uBAAU,CAACC,MAAM,CAAC;EAC/BnB,MAAM,EAAE;IAAEoB,UAAU,EAAE,QAAQ;IAAEC,eAAe,EAAE,EAAE;IAAEC,GAAG,EAAE;EAAE,CAAC;EAC7DZ,KAAK,EAAE;IAAEa,QAAQ,EAAE,EAAE;IAAEC,UAAU,EAAE,KAAK;IAAEnB,KAAK,EAAE,MAAM;IAAEoB,SAAS,EAAE;EAAE,CAAC;EACvEjB,KAAK,EAAE;IAAEe,QAAQ,EAAE,EAAE;IAAElB,KAAK,EAAE,SAAS;IAAEqB,SAAS,EAAE;EAAS,CAAC;EAC9DhC,KAAK,EAAE;IAAE6B,QAAQ,EAAE,EAAE;IAAElB,KAAK,EAAE,SAAS;IAAEqB,SAAS,EAAE;EAAS,CAAC;EAC9Dd,UAAU,EAAE;IAAEe,KAAK,EAAE,MAAM;IAAEN,eAAe,EAAE,EAAE;IAAED,UAAU,EAAE,QAAQ;IAAEK,SAAS,EAAE;EAAG,CAAC;EACvFR,cAAc,EAAE;IAAEM,QAAQ,EAAE,EAAE;IAAEC,UAAU,EAAE,KAAK;IAAEnB,KAAK,EAAE;EAAO;AACnE,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TransferView = TransferView;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _reactNativeQrcodeSvg = _interopRequireDefault(require("react-native-qrcode-svg"));
10
+ var _clipboard = _interopRequireDefault(require("@react-native-clipboard/clipboard"));
11
+ var _icons = require("../icons");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ /** Manual-transfer flow: QR + deposit address + notes + countdown. */
15
+ function TransferView({
16
+ checkout,
17
+ theme,
18
+ formattedTime,
19
+ expired,
20
+ onNext
21
+ }) {
22
+ const [copied, setCopied] = (0, _react.useState)(false);
23
+ const coin = checkout.coin?.toUpperCase() ?? '';
24
+ const copyAddress = () => {
25
+ _clipboard.default.setString(checkout.address);
26
+ setCopied(true);
27
+ setTimeout(() => setCopied(false), 1500);
28
+ };
29
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
30
+ style: styles.container,
31
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
32
+ style: [styles.qr, {
33
+ borderColor: theme.accent
34
+ }],
35
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeQrcodeSvg.default, {
36
+ value: checkout.address,
37
+ size: 108
38
+ })
39
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
40
+ style: styles.addressLabel,
41
+ children: "Address:"
42
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
43
+ style: styles.address,
44
+ children: checkout.address
45
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
46
+ style: styles.copyRow,
47
+ onPress: copyAddress,
48
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
49
+ style: [styles.copyText, {
50
+ color: theme.accent
51
+ }],
52
+ children: copied ? 'Copied!' : 'Copy'
53
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.CopyIcon, {
54
+ size: 18,
55
+ color: theme.accent
56
+ })]
57
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
58
+ style: styles.note,
59
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
60
+ style: styles.noteRow,
61
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.InfoIcon, {
62
+ size: 16
63
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
64
+ style: styles.noteText,
65
+ children: ["Only send ", coin, " (", checkout.networkCode, ") assets to this address. Other assets will be lost forever."]
66
+ })]
67
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
68
+ style: styles.noteRow,
69
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.InfoIcon, {
70
+ size: 16
71
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
72
+ style: styles.noteText,
73
+ children: "When you make a transfer, you'll paste the transaction hash on the next screen."
74
+ })]
75
+ })]
76
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
77
+ style: styles.timer,
78
+ children: formattedTime
79
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
80
+ style: [styles.primaryBtn, {
81
+ backgroundColor: expired ? '#dff0f7' : theme.accent,
82
+ borderRadius: theme.radius
83
+ }],
84
+ disabled: expired,
85
+ onPress: onNext,
86
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
87
+ style: [styles.primaryBtnText, {
88
+ color: expired ? '#9ca3af' : '#fff'
89
+ }],
90
+ children: "Next"
91
+ })
92
+ })]
93
+ });
94
+ }
95
+ const styles = _reactNative.StyleSheet.create({
96
+ container: {
97
+ alignItems: 'center'
98
+ },
99
+ qr: {
100
+ borderWidth: 1,
101
+ borderStyle: 'dashed',
102
+ borderRadius: 8,
103
+ padding: 10,
104
+ marginVertical: 12
105
+ },
106
+ addressLabel: {
107
+ fontSize: 13,
108
+ fontWeight: '700',
109
+ color: '#64748b'
110
+ },
111
+ address: {
112
+ fontSize: 13,
113
+ fontWeight: '700',
114
+ color: '#64748b',
115
+ textAlign: 'center',
116
+ marginTop: 4,
117
+ marginBottom: 8
118
+ },
119
+ copyRow: {
120
+ flexDirection: 'row',
121
+ alignItems: 'center',
122
+ gap: 6,
123
+ marginBottom: 16
124
+ },
125
+ copyText: {
126
+ fontSize: 13,
127
+ fontWeight: '700'
128
+ },
129
+ note: {
130
+ width: '100%',
131
+ backgroundColor: '#eefaff',
132
+ borderRadius: 8,
133
+ padding: 16,
134
+ gap: 8,
135
+ marginBottom: 16
136
+ },
137
+ noteRow: {
138
+ flexDirection: 'row',
139
+ gap: 8
140
+ },
141
+ noteText: {
142
+ flex: 1,
143
+ color: '#7785b0',
144
+ fontSize: 12,
145
+ lineHeight: 18
146
+ },
147
+ timer: {
148
+ color: '#3bc5ff',
149
+ fontSize: 14,
150
+ marginBottom: 12
151
+ },
152
+ primaryBtn: {
153
+ width: '100%',
154
+ paddingVertical: 15,
155
+ alignItems: 'center'
156
+ },
157
+ primaryBtnText: {
158
+ fontSize: 16,
159
+ fontWeight: '600'
160
+ }
161
+ });
162
+ //# sourceMappingURL=transfer-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_reactNativeQrcodeSvg","_interopRequireDefault","_clipboard","_icons","_jsxRuntime","e","__esModule","default","TransferView","checkout","theme","formattedTime","expired","onNext","copied","setCopied","useState","coin","toUpperCase","copyAddress","Clipboard","setString","address","setTimeout","jsxs","View","style","styles","container","children","jsx","qr","borderColor","accent","value","size","Text","addressLabel","TouchableOpacity","copyRow","onPress","copyText","color","CopyIcon","note","noteRow","InfoIcon","noteText","networkCode","timer","primaryBtn","backgroundColor","borderRadius","radius","disabled","primaryBtnText","StyleSheet","create","alignItems","borderWidth","borderStyle","padding","marginVertical","fontSize","fontWeight","textAlign","marginTop","marginBottom","flexDirection","gap","width","flex","lineHeight","paddingVertical"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/views/transfer-view.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.VerifyView = VerifyView;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ /** Step where the buyer pastes their transaction hash to confirm the transfer. */
11
+ function VerifyView({
12
+ theme,
13
+ busy,
14
+ onSubmit
15
+ }) {
16
+ const [hash, setHash] = (0, _react.useState)('');
17
+ const trimmed = hash.trim();
18
+ const disabled = !trimmed || busy;
19
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
20
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
21
+ style: styles.title,
22
+ children: "Verify transaction"
23
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
24
+ style: styles.subtitle,
25
+ children: "Enter your transaction hash to confirm the payment."
26
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
27
+ style: styles.label,
28
+ children: ["Hash ", /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
29
+ style: styles.req,
30
+ children: "*"
31
+ })]
32
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
33
+ style: styles.input,
34
+ placeholder: "Enter your transaction hash",
35
+ placeholderTextColor: "#9ca3af",
36
+ value: hash,
37
+ onChangeText: setHash,
38
+ autoCapitalize: "none",
39
+ autoCorrect: false
40
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
41
+ style: [styles.primaryBtn, {
42
+ backgroundColor: disabled ? '#dff0f7' : theme.accent,
43
+ borderRadius: theme.radius
44
+ }],
45
+ disabled: disabled,
46
+ onPress: () => onSubmit(trimmed),
47
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
48
+ style: [styles.primaryBtnText, {
49
+ color: disabled ? '#9ca3af' : '#fff'
50
+ }],
51
+ children: busy ? 'Verifying…' : 'Confirm transaction'
52
+ })
53
+ })]
54
+ });
55
+ }
56
+ const styles = _reactNative.StyleSheet.create({
57
+ title: {
58
+ fontSize: 16,
59
+ fontWeight: '700',
60
+ color: '#1e1e1e',
61
+ textAlign: 'center'
62
+ },
63
+ subtitle: {
64
+ fontSize: 13,
65
+ color: '#94a3b8',
66
+ textAlign: 'center',
67
+ marginTop: 4,
68
+ marginBottom: 16
69
+ },
70
+ label: {
71
+ fontSize: 14,
72
+ fontWeight: '500',
73
+ color: '#1e1e1e',
74
+ marginBottom: 6
75
+ },
76
+ req: {
77
+ color: '#fb7185'
78
+ },
79
+ input: {
80
+ borderWidth: 1,
81
+ borderColor: '#d9d9d9',
82
+ borderRadius: 8,
83
+ padding: 12,
84
+ fontSize: 14,
85
+ color: '#1e1e1e',
86
+ marginBottom: 20
87
+ },
88
+ primaryBtn: {
89
+ width: '100%',
90
+ paddingVertical: 15,
91
+ alignItems: 'center'
92
+ },
93
+ primaryBtnText: {
94
+ fontSize: 16,
95
+ fontWeight: '600'
96
+ }
97
+ });
98
+ //# sourceMappingURL=verify-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_jsxRuntime","VerifyView","theme","busy","onSubmit","hash","setHash","useState","trimmed","trim","disabled","jsxs","View","children","jsx","Text","style","styles","title","subtitle","label","req","TextInput","input","placeholder","placeholderTextColor","value","onChangeText","autoCapitalize","autoCorrect","TouchableOpacity","primaryBtn","backgroundColor","accent","borderRadius","radius","onPress","primaryBtnText","color","StyleSheet","create","fontSize","fontWeight","textAlign","marginTop","marginBottom","borderWidth","borderColor","padding","width","paddingVertical","alignItems"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/views/verify-view.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useCountdown = useCountdown;
7
+ var _react = require("react");
8
+ var _format = require("../internal/format");
9
+ /** A simple seconds countdown that stops at zero. */
10
+ function useCountdown(seconds) {
11
+ const [timeLeft, setTimeLeft] = (0, _react.useState)(seconds);
12
+ (0, _react.useEffect)(() => {
13
+ if (timeLeft <= 0) return;
14
+ const id = setInterval(() => setTimeLeft(t => t - 1), 1000);
15
+ return () => clearInterval(id);
16
+ }, [timeLeft]);
17
+ return {
18
+ timeLeft,
19
+ formatted: (0, _format.formatTime)(timeLeft),
20
+ expired: timeLeft <= 0,
21
+ reset: () => setTimeLeft(seconds)
22
+ };
23
+ }
24
+ //# sourceMappingURL=use-countdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_format","useCountdown","seconds","timeLeft","setTimeLeft","useState","useEffect","id","setInterval","t","clearInterval","formatted","formatTime","expired","reset"],"sourceRoot":"..\\..\\..\\src","sources":["hooks/use-countdown.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEA;AACO,SAASE,YAAYA,CAACC,OAAe,EAAE;EAC5C,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAAC,eAAQ,EAACH,OAAO,CAAC;EAEjD,IAAAI,gBAAS,EAAC,MAAM;IACd,IAAIH,QAAQ,IAAI,CAAC,EAAE;IACnB,MAAMI,EAAE,GAAGC,WAAW,CAAC,MAAMJ,WAAW,CAAEK,CAAC,IAAKA,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;IAC7D,OAAO,MAAMC,aAAa,CAACH,EAAE,CAAC;EAChC,CAAC,EAAE,CAACJ,QAAQ,CAAC,CAAC;EAEd,OAAO;IACLA,QAAQ;IACRQ,SAAS,EAAE,IAAAC,kBAAU,EAACT,QAAQ,CAAC;IAC/BU,OAAO,EAAEV,QAAQ,IAAI,CAAC;IACtBW,KAAK,EAAEA,CAAA,KAAMV,WAAW,CAACF,OAAO;EAClC,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "PaymentButton", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _paymentButton.PaymentButton;
10
+ }
11
+ });
12
+ var _paymentButton = require("./components/payment-button");
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_paymentButton","require"],"sourceRoot":"..\\..\\src","sources":["index.ts"],"mappings":";;;;;;;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA","ignoreList":[]}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TEST_API_BASE_URL = exports.NETWORK_CODES = exports.LIVE_API_BASE_URL = exports.DEFAULT_ACCENT = exports.COUNTDOWN_SECONDS = void 0;
7
+ exports.resolveApiBaseUrl = resolveApiBaseUrl;
8
+ /** API gateway for test keys (`cpay_test_pk_…`). */
9
+ const TEST_API_BASE_URL = exports.TEST_API_BASE_URL = 'https://api.dev.theclockchain.io/api/v1';
10
+
11
+ /** API gateway for live keys (`cpay_live_pk_…`). */
12
+ const LIVE_API_BASE_URL = exports.LIVE_API_BASE_URL = 'https://api.theclockchain.io/api/v1';
13
+
14
+ /** ClockPay brand blue. */
15
+ const DEFAULT_ACCENT = exports.DEFAULT_ACCENT = '#27AAE1';
16
+
17
+ /** How long the buyer has to complete a transfer, in seconds. */
18
+ const COUNTDOWN_SECONDS = exports.COUNTDOWN_SECONDS = 300;
19
+
20
+ /**
21
+ * Picks the API gateway from the public key's environment prefix, unless an
22
+ * explicit `override` (the `apiBaseUrl` prop) is provided. Unknown prefixes fall
23
+ * back to the test gateway.
24
+ */
25
+ function resolveApiBaseUrl(publicKey, override) {
26
+ if (override) return override;
27
+ if (publicKey.startsWith('cpay_live_pk_')) return LIVE_API_BASE_URL;
28
+ return TEST_API_BASE_URL;
29
+ }
30
+
31
+ /**
32
+ * Maps a coin's settlement network to its on-chain id, used when verifying a
33
+ * crypto transaction. Falls back to the `networkCode` from the checkout payload.
34
+ */
35
+ const NETWORK_CODES = exports.NETWORK_CODES = {
36
+ eth: '1',
37
+ optimism: '10',
38
+ bsc: '56',
39
+ polygon: '137',
40
+ tron: '10121'
41
+ };
42
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TEST_API_BASE_URL","exports","LIVE_API_BASE_URL","DEFAULT_ACCENT","COUNTDOWN_SECONDS","resolveApiBaseUrl","publicKey","override","startsWith","NETWORK_CODES","eth","optimism","bsc","polygon","tron"],"sourceRoot":"..\\..\\..\\src","sources":["internal/constants.ts"],"mappings":";;;;;;;AAAA;AACO,MAAMA,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG,yCAAyC;;AAE1E;AACO,MAAME,iBAAiB,GAAAD,OAAA,CAAAC,iBAAA,GAAG,qCAAqC;;AAEtE;AACO,MAAMC,cAAc,GAAAF,OAAA,CAAAE,cAAA,GAAG,SAAS;;AAEvC;AACO,MAAMC,iBAAiB,GAAAH,OAAA,CAAAG,iBAAA,GAAG,GAAG;;AAEpC;AACA;AACA;AACA;AACA;AACO,SAASC,iBAAiBA,CAACC,SAAiB,EAAEC,QAAiB,EAAU;EAC9E,IAAIA,QAAQ,EAAE,OAAOA,QAAQ;EAC7B,IAAID,SAAS,CAACE,UAAU,CAAC,eAAe,CAAC,EAAE,OAAON,iBAAiB;EACnE,OAAOF,iBAAiB;AAC1B;;AAEA;AACA;AACA;AACA;AACO,MAAMS,aAAqC,GAAAR,OAAA,CAAAQ,aAAA,GAAG;EACnDC,GAAG,EAAE,GAAG;EACRC,QAAQ,EAAE,IAAI;EACdC,GAAG,EAAE,IAAI;EACTC,OAAO,EAAE,KAAK;EACdC,IAAI,EAAE;AACR,CAAC","ignoreList":[]}