@daimo/sdk 1.4.0 → 1.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/createDaimoClient.d.ts +31 -21
- package/dist/client/createDaimoClient.d.ts.map +1 -1
- package/dist/client/createDaimoClient.js +24 -16
- package/dist/client/createDaimoClient.js.map +1 -1
- package/dist/common/account.d.ts +75 -8
- package/dist/common/account.d.ts.map +1 -1
- package/dist/common/account.js +7 -1
- package/dist/common/account.js.map +1 -1
- package/dist/common/api.d.ts +47 -8
- package/dist/common/api.d.ts.map +1 -1
- package/dist/common/api.js +10 -1
- package/dist/common/api.js.map +1 -1
- package/dist/common/chain.d.ts +0 -1
- package/dist/common/chain.d.ts.map +1 -1
- package/dist/common/chain.js +0 -10
- package/dist/common/chain.js.map +1 -1
- package/dist/common/session.d.ts +11 -3
- package/dist/common/session.d.ts.map +1 -1
- package/dist/common/session.js.map +1 -1
- package/dist/common/token.d.ts +16 -4
- package/dist/common/token.d.ts.map +1 -1
- package/dist/common/token.js +12 -42
- package/dist/common/token.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/web/api/index.d.ts +3 -3
- package/dist/web/api/index.d.ts.map +1 -1
- package/dist/web/api/navTree.d.ts +12 -5
- package/dist/web/api/navTree.d.ts.map +1 -1
- package/dist/web/api/walletTypes.d.ts +2 -15
- package/dist/web/api/walletTypes.d.ts.map +1 -1
- package/dist/web/components/ConfirmationPage.d.ts.map +1 -1
- package/dist/web/components/ConfirmationPage.js +3 -3
- package/dist/web/components/ConfirmationPage.js.map +1 -1
- package/dist/web/components/DaimoModal.d.ts.map +1 -1
- package/dist/web/components/DaimoModal.js +41 -9
- package/dist/web/components/DaimoModal.js.map +1 -1
- package/dist/web/components/QRCode.d.ts.map +1 -1
- package/dist/web/components/QRCode.js +2 -2
- package/dist/web/components/QRCode.js.map +1 -1
- package/dist/web/components/StripeOnrampPage.d.ts +40 -0
- package/dist/web/components/StripeOnrampPage.d.ts.map +1 -0
- package/dist/web/components/StripeOnrampPage.js +121 -0
- package/dist/web/components/StripeOnrampPage.js.map +1 -0
- package/dist/web/components/TokenAmountEntry.d.ts +57 -0
- package/dist/web/components/TokenAmountEntry.d.ts.map +1 -0
- package/dist/web/components/TokenAmountEntry.js +155 -0
- package/dist/web/components/TokenAmountEntry.js.map +1 -0
- package/dist/web/components/WalletAmountPage.d.ts +2 -2
- package/dist/web/components/WalletAmountPage.d.ts.map +1 -1
- package/dist/web/components/WalletAmountPage.js +11 -146
- package/dist/web/components/WalletAmountPage.js.map +1 -1
- package/dist/web/components/account/AccountApplePayPage.d.ts +24 -0
- package/dist/web/components/account/AccountApplePayPage.d.ts.map +1 -0
- package/dist/web/components/account/AccountApplePayPage.js +253 -0
- package/dist/web/components/account/AccountApplePayPage.js.map +1 -0
- package/dist/web/components/account/AccountBankDetailsPage.d.ts +16 -0
- package/dist/web/components/account/AccountBankDetailsPage.d.ts.map +1 -0
- package/dist/web/components/account/AccountBankDetailsPage.js +140 -0
- package/dist/web/components/account/AccountBankDetailsPage.js.map +1 -0
- package/dist/web/components/account/AccountBankPickerPage.d.ts +8 -8
- package/dist/web/components/account/AccountBankPickerPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountBankPickerPage.js +66 -19
- package/dist/web/components/account/AccountBankPickerPage.js.map +1 -1
- package/dist/web/components/account/AccountBankTransferSubmittedPage.d.ts +13 -0
- package/dist/web/components/account/AccountBankTransferSubmittedPage.d.ts.map +1 -0
- package/dist/web/components/account/AccountBankTransferSubmittedPage.js +27 -0
- package/dist/web/components/account/AccountBankTransferSubmittedPage.js.map +1 -0
- package/dist/web/components/account/AccountDeeplinkPage.d.ts +0 -2
- package/dist/web/components/account/AccountDeeplinkPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountDeeplinkPage.js +7 -6
- package/dist/web/components/account/AccountDeeplinkPage.js.map +1 -1
- package/dist/web/components/account/AccountEnrollmentPage.d.ts +5 -18
- package/dist/web/components/account/AccountEnrollmentPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountEnrollmentPage.js +86 -20
- package/dist/web/components/account/AccountEnrollmentPage.js.map +1 -1
- package/dist/web/components/account/AccountFlowProvider.d.ts.map +1 -1
- package/dist/web/components/account/AccountFlowProvider.js +26 -2
- package/dist/web/components/account/AccountFlowProvider.js.map +1 -1
- package/dist/web/components/account/AccountOtpCodeEntry.d.ts +16 -0
- package/dist/web/components/account/AccountOtpCodeEntry.d.ts.map +1 -0
- package/dist/web/components/account/AccountOtpCodeEntry.js +101 -0
- package/dist/web/components/account/AccountOtpCodeEntry.js.map +1 -0
- package/dist/web/components/account/AccountOtpPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountOtpPage.js +10 -53
- package/dist/web/components/account/AccountOtpPage.js.map +1 -1
- package/dist/web/components/account/AccountPaymentPage.d.ts +7 -4
- package/dist/web/components/account/AccountPaymentPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountPaymentPage.js +29 -34
- package/dist/web/components/account/AccountPaymentPage.js.map +1 -1
- package/dist/web/components/account/AccountPhoneOtpPage.d.ts +14 -0
- package/dist/web/components/account/AccountPhoneOtpPage.d.ts.map +1 -0
- package/dist/web/components/account/AccountPhoneOtpPage.js +56 -0
- package/dist/web/components/account/AccountPhoneOtpPage.js.map +1 -0
- package/dist/web/components/account/AccountPhonePage.d.ts +11 -0
- package/dist/web/components/account/AccountPhonePage.d.ts.map +1 -0
- package/dist/web/components/account/AccountPhonePage.js +100 -0
- package/dist/web/components/account/AccountPhonePage.js.map +1 -0
- package/dist/web/components/account/AccountReadyPage.d.ts +2 -0
- package/dist/web/components/account/AccountReadyPage.d.ts.map +1 -0
- package/dist/web/components/account/AccountReadyPage.js +7 -0
- package/dist/web/components/account/AccountReadyPage.js.map +1 -0
- package/dist/web/components/account/AccountStatusPage.d.ts +1 -3
- package/dist/web/components/account/AccountStatusPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountStatusPage.js +8 -8
- package/dist/web/components/account/AccountStatusPage.js.map +1 -1
- package/dist/web/components/account/accountNav.d.ts +14 -0
- package/dist/web/components/account/accountNav.d.ts.map +1 -0
- package/dist/web/components/account/accountNav.js +35 -0
- package/dist/web/components/account/accountNav.js.map +1 -0
- package/dist/web/components/account/openDeeplink.js +30 -14
- package/dist/web/components/account/openDeeplink.js.map +1 -1
- package/dist/web/components/account/phone.d.ts +6 -0
- package/dist/web/components/account/phone.d.ts.map +1 -0
- package/dist/web/components/account/phone.js +35 -0
- package/dist/web/components/account/phone.js.map +1 -0
- package/dist/web/components/account/useCoinbaseApplePayWidget.d.ts +20 -0
- package/dist/web/components/account/useCoinbaseApplePayWidget.d.ts.map +1 -0
- package/dist/web/components/account/useCoinbaseApplePayWidget.js +159 -0
- package/dist/web/components/account/useCoinbaseApplePayWidget.js.map +1 -0
- package/dist/web/components/buttons.d.ts +11 -1
- package/dist/web/components/buttons.d.ts.map +1 -1
- package/dist/web/components/buttons.js +11 -3
- package/dist/web/components/buttons.js.map +1 -1
- package/dist/web/components/icons.d.ts +5 -0
- package/dist/web/components/icons.d.ts.map +1 -1
- package/dist/web/components/icons.js +7 -0
- package/dist/web/components/icons.js.map +1 -1
- package/dist/web/components/shared.d.ts +8 -3
- package/dist/web/components/shared.d.ts.map +1 -1
- package/dist/web/components/shared.js +50 -16
- package/dist/web/components/shared.js.map +1 -1
- package/dist/web/hooks/locale.d.ts +4 -0
- package/dist/web/hooks/locale.d.ts.map +1 -1
- package/dist/web/hooks/locale.js +23 -1
- package/dist/web/hooks/locale.js.map +1 -1
- package/dist/web/hooks/locales/en.d.ts +17 -0
- package/dist/web/hooks/locales/en.d.ts.map +1 -1
- package/dist/web/hooks/locales/en.js +19 -2
- package/dist/web/hooks/locales/en.js.map +1 -1
- package/dist/web/hooks/locales/es.d.ts.map +1 -1
- package/dist/web/hooks/locales/es.js +17 -0
- package/dist/web/hooks/locales/es.js.map +1 -1
- package/dist/web/hooks/locales/ja.d.ts +4 -0
- package/dist/web/hooks/locales/ja.d.ts.map +1 -0
- package/dist/web/hooks/locales/ja.js +140 -0
- package/dist/web/hooks/locales/ja.js.map +1 -0
- package/dist/web/hooks/locales/ko.d.ts +4 -0
- package/dist/web/hooks/locales/ko.d.ts.map +1 -0
- package/dist/web/hooks/locales/ko.js +140 -0
- package/dist/web/hooks/locales/ko.js.map +1 -0
- package/dist/web/hooks/locales/zh.d.ts +4 -0
- package/dist/web/hooks/locales/zh.d.ts.map +1 -0
- package/dist/web/hooks/locales/zh.js +140 -0
- package/dist/web/hooks/locales/zh.js.map +1 -0
- package/dist/web/hooks/navEvent.d.ts +4 -0
- package/dist/web/hooks/navEvent.d.ts.map +1 -1
- package/dist/web/hooks/navEvent.js.map +1 -1
- package/dist/web/hooks/types.d.ts +25 -4
- package/dist/web/hooks/types.d.ts.map +1 -1
- package/dist/web/hooks/types.js.map +1 -1
- package/dist/web/hooks/useAccountFlow.d.ts +50 -13
- package/dist/web/hooks/useAccountFlow.d.ts.map +1 -1
- package/dist/web/hooks/useAccountFlow.js +93 -13
- package/dist/web/hooks/useAccountFlow.js.map +1 -1
- package/dist/web/hooks/useCreateDeposit.d.ts +1 -1
- package/dist/web/hooks/useCreateDeposit.d.ts.map +1 -1
- package/dist/web/hooks/useCreateDeposit.js +103 -15
- package/dist/web/hooks/useCreateDeposit.js.map +1 -1
- package/dist/web/hooks/useDepositAddress.d.ts.map +1 -1
- package/dist/web/hooks/useDepositAddress.js +23 -2
- package/dist/web/hooks/useDepositAddress.js.map +1 -1
- package/dist/web/hooks/useDraftDeposit.d.ts +35 -0
- package/dist/web/hooks/useDraftDeposit.d.ts.map +1 -0
- package/dist/web/hooks/useDraftDeposit.js +155 -0
- package/dist/web/hooks/useDraftDeposit.js.map +1 -0
- package/dist/web/hooks/useSessionNav.d.ts +1 -1
- package/dist/web/hooks/useSessionNav.d.ts.map +1 -1
- package/dist/web/hooks/useSessionNav.js +122 -12
- package/dist/web/hooks/useSessionNav.js.map +1 -1
- package/dist/web/hooks/useWalletFlow.d.ts.map +1 -1
- package/dist/web/hooks/useWalletFlow.js +9 -0
- package/dist/web/hooks/useWalletFlow.js.map +1 -1
- package/dist/web/index.d.ts +1 -1
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +1 -1
- package/dist/web/index.js.map +1 -1
- package/dist/web/platform.d.ts +1 -0
- package/dist/web/platform.d.ts.map +1 -1
- package/dist/web/platform.js +11 -0
- package/dist/web/platform.js.map +1 -1
- package/dist/web/styles.css +1 -1
- package/dist/web/theme.css +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountStatusPage.d.ts","sourceRoot":"","sources":["../../../../src/web/components/account/AccountStatusPage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AccountStatusPage.d.ts","sourceRoot":"","sources":["../../../../src/web/components/account/AccountStatusPage.tsx"],"names":[],"mappings":"AASA,KAAK,sBAAsB,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAoBF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,YAAY,EACZ,OAAO,GACR,EAAE,sBAAsB,2CAuDxB"}
|
|
@@ -10,10 +10,6 @@ const TERMINAL_STATUSES = [
|
|
|
10
10
|
"failed",
|
|
11
11
|
"expired",
|
|
12
12
|
];
|
|
13
|
-
const REGION_ETA = {
|
|
14
|
-
CA: "5–30 min",
|
|
15
|
-
US: "1–3 days",
|
|
16
|
-
};
|
|
17
13
|
/** Map status to a 0-2 step index for the progress indicator. */
|
|
18
14
|
function getStep(status) {
|
|
19
15
|
switch (status) {
|
|
@@ -27,14 +23,18 @@ const STEP_LABELS = ["Received", "Processing", "Complete"];
|
|
|
27
23
|
/**
|
|
28
24
|
* Async deposit status — ConfirmationSpinner + progress steps + action rows.
|
|
29
25
|
*/
|
|
30
|
-
export function AccountStatusPage({
|
|
26
|
+
export function AccountStatusPage({ sessionId, clientSecret, baseUrl, }) {
|
|
31
27
|
const client = useDaimoClient();
|
|
32
28
|
const [status, setStatus] = useState("payment_received");
|
|
29
|
+
const [eta, setEta] = useState(null);
|
|
33
30
|
useDepositPoller({
|
|
34
31
|
client,
|
|
35
32
|
sessionId,
|
|
36
33
|
clientSecret,
|
|
37
|
-
onUpdate: (deposit) =>
|
|
34
|
+
onUpdate: (deposit) => {
|
|
35
|
+
setStatus(deposit.status);
|
|
36
|
+
setEta(deposit.eta);
|
|
37
|
+
},
|
|
38
38
|
shouldStop: (deposit) => TERMINAL_STATUSES.includes(deposit.status),
|
|
39
39
|
});
|
|
40
40
|
const isComplete = status === "completed";
|
|
@@ -45,11 +45,11 @@ export function AccountStatusPage({ region, sessionId, clientSecret, baseUrl, })
|
|
|
45
45
|
const title = isComplete ? t.accountDepositComplete : t.accountDepositReceived;
|
|
46
46
|
const receiptUrl = `${baseUrl}/receipt?id=${sessionId}`;
|
|
47
47
|
const accountUrl = `${baseUrl}/account?session=${sessionId}`;
|
|
48
|
-
return (_jsxs("div", { className: "daimo-flex daimo-flex-col daimo-flex-1 daimo-min-h-0", children: [_jsx(PageHeader, { title: title }), _jsx(CenteredContent, { children: _jsxs("div", { className: "daimo-flex daimo-flex-col daimo-items-center daimo-gap-3", children: [_jsx(DepositProgress, { step: step }), !isComplete && (_jsxs("span", { className: "daimo-text-[10px] daimo-px-2.5 daimo-py-1 daimo-rounded-full", style: {
|
|
48
|
+
return (_jsxs("div", { className: "daimo-flex daimo-flex-col daimo-flex-1 daimo-min-h-0", children: [_jsx(PageHeader, { title: title }), _jsx(CenteredContent, { children: _jsxs("div", { className: "daimo-flex daimo-flex-col daimo-items-center daimo-gap-3", children: [_jsx(DepositProgress, { step: step }), !isComplete && eta && (_jsxs("span", { className: "daimo-text-[10px] daimo-px-2.5 daimo-py-1 daimo-rounded-full", style: {
|
|
49
49
|
backgroundColor: "var(--daimo-surface-secondary)",
|
|
50
50
|
color: "var(--daimo-text-muted)",
|
|
51
51
|
fontVariantNumeric: "tabular-nums",
|
|
52
|
-
}, children: ["ETA ",
|
|
52
|
+
}, children: ["ETA ", eta] }))] }) }), _jsxs("div", { className: "daimo-px-8 daimo-pb-4 daimo-flex daimo-flex-col daimo-gap-1", children: [_jsx(LinkPill, { href: accountUrl, icon: "user", label: t.accountViewAccount }), _jsx(LinkPill, { href: receiptUrl, icon: "receipt", label: t.showReceipt })] })] }));
|
|
53
53
|
}
|
|
54
54
|
/** Three-dot progress indicator with current step label. */
|
|
55
55
|
function DepositProgress({ step }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountStatusPage.js","sourceRoot":"","sources":["../../../../src/web/components/account/AccountStatusPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,CAAC,EAAE,MAAM,uBAAuB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"AccountStatusPage.js","sourceRoot":"","sources":["../../../../src/web/components/account/AccountStatusPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AccountRail } from "../../../common/account.js";
|
|
2
|
+
/**
|
|
3
|
+
* Pick the modal entry page for a rail. Each rail has its own payment UX:
|
|
4
|
+
* - interac: two-step amount entry → bank picker
|
|
5
|
+
* - ach/sepa: two-step amount entry → bank details
|
|
6
|
+
* - apple_pay: single unified amount+Apple Pay page (Coinbase Headless)
|
|
7
|
+
*/
|
|
8
|
+
export declare function getAccountPaymentEntryTarget(rail: AccountRail): "account-payment" | "account-apple-pay";
|
|
9
|
+
/**
|
|
10
|
+
* Pick the modal page that follows the deposit amount screen (for rails
|
|
11
|
+
* that use the two-step flow).
|
|
12
|
+
*/
|
|
13
|
+
export declare function getAccountPaymentAdvanceTarget(rail: AccountRail): "account-canada-bank-picker" | "account-bank-details" | "account-apple-pay";
|
|
14
|
+
//# sourceMappingURL=accountNav.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accountNav.d.ts","sourceRoot":"","sources":["../../../../src/web/components/account/accountNav.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,WAAW,2CAW7D;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,WAAW,+EAW/D"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pick the modal entry page for a rail. Each rail has its own payment UX:
|
|
3
|
+
* - interac: two-step amount entry → bank picker
|
|
4
|
+
* - ach/sepa: two-step amount entry → bank details
|
|
5
|
+
* - apple_pay: single unified amount+Apple Pay page (Coinbase Headless)
|
|
6
|
+
*/
|
|
7
|
+
export function getAccountPaymentEntryTarget(rail) {
|
|
8
|
+
switch (rail) {
|
|
9
|
+
case "apple_pay":
|
|
10
|
+
// Coinbase Headless: amount input + Apple Pay live in the same page.
|
|
11
|
+
return "account-apple-pay";
|
|
12
|
+
case "interac":
|
|
13
|
+
case "ach":
|
|
14
|
+
case "sepa":
|
|
15
|
+
// Old two-step flow: amount first, then picker/details.
|
|
16
|
+
return "account-payment";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Pick the modal page that follows the deposit amount screen (for rails
|
|
21
|
+
* that use the two-step flow).
|
|
22
|
+
*/
|
|
23
|
+
export function getAccountPaymentAdvanceTarget(rail) {
|
|
24
|
+
switch (rail) {
|
|
25
|
+
case "interac":
|
|
26
|
+
return "account-canada-bank-picker";
|
|
27
|
+
case "ach":
|
|
28
|
+
case "sepa":
|
|
29
|
+
return "account-bank-details";
|
|
30
|
+
case "apple_pay":
|
|
31
|
+
// Never used — apple_pay skips account-payment entirely.
|
|
32
|
+
return "account-apple-pay";
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=accountNav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accountNav.js","sourceRoot":"","sources":["../../../../src/web/components/account/accountNav.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAAiB;IAC5D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,WAAW;YACd,qEAAqE;YACrE,OAAO,mBAA4B,CAAC;QACtC,KAAK,SAAS,CAAC;QACf,KAAK,KAAK,CAAC;QACX,KAAK,MAAM;YACT,wDAAwD;YACxD,OAAO,iBAA0B,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAAC,IAAiB;IAC9D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,4BAAqC,CAAC;QAC/C,KAAK,KAAK,CAAC;QACX,KAAK,MAAM;YACT,OAAO,sBAA+B,CAAC;QACzC,KAAK,WAAW;YACd,yDAAyD;YACzD,OAAO,mBAA4B,CAAC;IACxC,CAAC;AACH,CAAC"}
|
|
@@ -25,23 +25,39 @@ function openFormPost(deeplink) {
|
|
|
25
25
|
if (!popup)
|
|
26
26
|
return;
|
|
27
27
|
setTimeout(() => {
|
|
28
|
+
if (popup.closed)
|
|
29
|
+
return;
|
|
28
30
|
popup.location.href = "about:blank";
|
|
29
|
-
|
|
30
|
-
popup.document.open();
|
|
31
|
-
const fields = Object.entries(deeplink.formFields)
|
|
32
|
-
.map(([k, v]) => `<input type="hidden" name="${escAttr(k)}" value="${escAttr(v)}"/>`)
|
|
33
|
-
.join("\n");
|
|
34
|
-
popup.document.write(`<html><body>` +
|
|
35
|
-
`<p style="font-family:system-ui;color:#666;text-align:center;margin-top:40vh">` +
|
|
36
|
-
`Connecting to your bank\u2026</p>` +
|
|
37
|
-
`<form id="f" method="POST" action="${escAttr(deeplink.formAction)}">` +
|
|
38
|
-
`${fields}</form>` +
|
|
39
|
-
`<script>document.getElementById('f').submit();</script>` +
|
|
40
|
-
`</body></html>`);
|
|
41
|
-
popup.document.close();
|
|
42
|
-
}, 500);
|
|
31
|
+
writeFormPostPage(popup, deeplink);
|
|
43
32
|
}, deeplink.warmDelayMs);
|
|
44
33
|
}
|
|
34
|
+
function writeFormPostPage(popup, deeplink, attempt = 0) {
|
|
35
|
+
if (popup.closed)
|
|
36
|
+
return;
|
|
37
|
+
try {
|
|
38
|
+
popup.document.open();
|
|
39
|
+
const fields = Object.entries(deeplink.formFields)
|
|
40
|
+
.map(([k, v]) => `<input type="hidden" name="${escAttr(k)}" value="${escAttr(v)}"/>`)
|
|
41
|
+
.join("\n");
|
|
42
|
+
popup.document.write(`<html><body>` +
|
|
43
|
+
`<p style="font-family:system-ui;color:#666;text-align:center;margin-top:40vh">` +
|
|
44
|
+
`Connecting to your bank\u2026</p>` +
|
|
45
|
+
`<form id="f" method="POST" action="${escAttr(deeplink.formAction)}">` +
|
|
46
|
+
`${fields}</form>` +
|
|
47
|
+
`<script>document.getElementById('f').submit();</script>` +
|
|
48
|
+
`</body></html>`);
|
|
49
|
+
popup.document.close();
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
if (attempt >= 20) {
|
|
53
|
+
console.error("[openDeeplink] failed to prepare form-post popup:", error);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
setTimeout(() => {
|
|
57
|
+
writeFormPostPage(popup, deeplink, attempt + 1);
|
|
58
|
+
}, 100);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
45
61
|
/** Escape a string for safe embedding in an HTML attribute (double-quoted). */
|
|
46
62
|
function escAttr(s) {
|
|
47
63
|
return s
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openDeeplink.js","sourceRoot":"","sources":["../../../../src/web/components/account/openDeeplink.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAsB,MAAM,mBAAmB,CAAC;AAElE,yDAAyD;AACzD,MAAM,UAAU,YAAY,CAC1B,QAAyB,EACzB,QAAuB;IAEvB,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,GAAG,GACP,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClE,oEAAoE;QACpE,IAAI,iBAAiB,CAAC,GAAG,CAAC;YAAE,OAAO;QACnC,qEAAqE;QACrE,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,UAAU;YACb,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACpC,MAAM;QACR,KAAK,WAAW;YACd,YAAY,CAAC,QAAQ,CAAC,CAAC;YACvB,MAAM;IACV,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,QAAiD;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,UAAU,CAAC,GAAG,EAAE;QACd,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC;QACpC,
|
|
1
|
+
{"version":3,"file":"openDeeplink.js","sourceRoot":"","sources":["../../../../src/web/components/account/openDeeplink.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAsB,MAAM,mBAAmB,CAAC;AAElE,yDAAyD;AACzD,MAAM,UAAU,YAAY,CAC1B,QAAyB,EACzB,QAAuB;IAEvB,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,GAAG,GACP,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClE,oEAAoE;QACpE,IAAI,iBAAiB,CAAC,GAAG,CAAC;YAAE,OAAO;QACnC,qEAAqE;QACrE,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,UAAU;YACb,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACpC,MAAM;QACR,KAAK,WAAW;YACd,YAAY,CAAC,QAAQ,CAAC,CAAC;YACvB,MAAM;IACV,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,QAAiD;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,KAAK,CAAC,MAAM;YAAE,OAAO;QACzB,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC;QACpC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAa,EACb,QAAiD,EACjD,OAAO,GAAG,CAAC;IAEX,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO;IACzB,IAAI,CAAC;QACH,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;aAC/C,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,8BAA8B,OAAO,CAAC,CAAC,CAAC,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;aACpF,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,KAAK,CAAC,QAAQ,CAAC,KAAK,CAClB,cAAc;YACd,gFAAgF;YAChF,mCAAmC;YACnC,sCAAsC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI;YACtE,GAAG,MAAM,SAAS;YAClB,yDAAyD;YACzD,gBAAgB,CACjB,CAAC;QACF,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QACD,UAAU,CAAC,GAAG,EAAE;YACd,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;QAClD,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,SAAS,OAAO,CAAC,CAAS;IACxB,OAAO,CAAC;SACL,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC;AAED,oFAAoF;AACpF,SAAS,iBAAiB,CAAC,GAAW;IACpC,MAAM,CAAC,GAAG,MAIT,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,CAAC;IACpD,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function normalizeUsPhoneDigits(raw: string): string;
|
|
2
|
+
export declare function formatUsPhoneInput(digits: string): string;
|
|
3
|
+
export declare function formatUsPhoneLocal(digits: string): string;
|
|
4
|
+
export declare function formatUsPhoneDisplay(raw: string): string;
|
|
5
|
+
export declare function toUsPhoneE164(digits: string): string;
|
|
6
|
+
//# sourceMappingURL=phone.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone.d.ts","sourceRoot":"","sources":["../../../../src/web/components/account/phone.ts"],"names":[],"mappings":"AAAA,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO1D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOzD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOzD;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export function normalizeUsPhoneDigits(raw) {
|
|
2
|
+
const allDigits = raw.replace(/\D/g, "");
|
|
3
|
+
const withoutCountryCode = allDigits.length > 10 && allDigits.startsWith("1")
|
|
4
|
+
? allDigits.slice(1)
|
|
5
|
+
: allDigits;
|
|
6
|
+
return withoutCountryCode.slice(0, 10);
|
|
7
|
+
}
|
|
8
|
+
export function formatUsPhoneInput(digits) {
|
|
9
|
+
if (digits.length === 0)
|
|
10
|
+
return "";
|
|
11
|
+
if (digits.length <= 3)
|
|
12
|
+
return `+1 ${digits}`;
|
|
13
|
+
if (digits.length <= 6) {
|
|
14
|
+
return `+1 ${digits.slice(0, 3)} ${digits.slice(3)}`;
|
|
15
|
+
}
|
|
16
|
+
return `+1 ${digits.slice(0, 3)} ${digits.slice(3, 6)} ${digits.slice(6)}`;
|
|
17
|
+
}
|
|
18
|
+
export function formatUsPhoneLocal(digits) {
|
|
19
|
+
if (digits.length === 0)
|
|
20
|
+
return "";
|
|
21
|
+
if (digits.length <= 3)
|
|
22
|
+
return digits;
|
|
23
|
+
if (digits.length <= 6) {
|
|
24
|
+
return `${digits.slice(0, 3)} ${digits.slice(3)}`;
|
|
25
|
+
}
|
|
26
|
+
return `${digits.slice(0, 3)} ${digits.slice(3, 6)} ${digits.slice(6)}`;
|
|
27
|
+
}
|
|
28
|
+
export function formatUsPhoneDisplay(raw) {
|
|
29
|
+
const digits = normalizeUsPhoneDigits(raw);
|
|
30
|
+
return digits.length === 0 ? raw : formatUsPhoneInput(digits);
|
|
31
|
+
}
|
|
32
|
+
export function toUsPhoneE164(digits) {
|
|
33
|
+
return digits.length === 10 ? `+1${digits}` : "";
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=phone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone.js","sourceRoot":"","sources":["../../../../src/web/components/account/phone.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,kBAAkB,GACtB,SAAS,CAAC,MAAM,GAAG,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;QAChD,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,MAAM,MAAM,EAAE,CAAC;IAC9C,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,CAAC;IACD,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IACtC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,CAAC;IACD,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
type UseCoinbaseApplePayWidgetArgs = {
|
|
2
|
+
allowExpandedView: boolean;
|
|
3
|
+
onRefreshDeposit: () => Promise<void>;
|
|
4
|
+
paymentLinkUrl: string | null;
|
|
5
|
+
};
|
|
6
|
+
type UseCoinbaseApplePayWidgetResult = {
|
|
7
|
+
iframeExpanded: boolean;
|
|
8
|
+
onIframeLoad: () => void;
|
|
9
|
+
iframeReady: boolean;
|
|
10
|
+
iframeRef: React.RefObject<HTMLIFrameElement | null>;
|
|
11
|
+
resetWidget: () => void;
|
|
12
|
+
widgetError: string | null;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Coinbase iframe lifecycle and postMessage handling. Keeps the account page
|
|
16
|
+
* focused on amount entry / layout while this hook owns hosted-widget state.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useCoinbaseApplePayWidget({ allowExpandedView, onRefreshDeposit, paymentLinkUrl, }: UseCoinbaseApplePayWidgetArgs): UseCoinbaseApplePayWidgetResult;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=useCoinbaseApplePayWidget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCoinbaseApplePayWidget.d.ts","sourceRoot":"","sources":["../../../../src/web/components/account/useCoinbaseApplePayWidget.ts"],"names":[],"mappings":"AASA,KAAK,6BAA6B,GAAG;IACnC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,KAAK,+BAA+B,GAAG;IACrC,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACrD,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,GACf,EAAE,6BAA6B,GAAG,+BAA+B,CAsIjE"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Coinbase iframe lifecycle and postMessage handling. Keeps the account page
|
|
4
|
+
* focused on amount entry / layout while this hook owns hosted-widget state.
|
|
5
|
+
*/
|
|
6
|
+
export function useCoinbaseApplePayWidget({ allowExpandedView, onRefreshDeposit, paymentLinkUrl, }) {
|
|
7
|
+
const [widgetError, setWidgetError] = useState(null);
|
|
8
|
+
const [iframeReady, setIframeReady] = useState(false);
|
|
9
|
+
const [iframeExpanded, setIframeExpanded] = useState(false);
|
|
10
|
+
const iframeRef = useRef(null);
|
|
11
|
+
const refreshRef = useRef(onRefreshDeposit);
|
|
12
|
+
const resetWidget = useCallback(() => {
|
|
13
|
+
debugApplePay("reset widget", { paymentLinkUrl });
|
|
14
|
+
setWidgetError(null);
|
|
15
|
+
setIframeReady(false);
|
|
16
|
+
setIframeExpanded(false);
|
|
17
|
+
}, [paymentLinkUrl]);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
refreshRef.current = onRefreshDeposit;
|
|
20
|
+
}, [onRefreshDeposit]);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (!allowExpandedView)
|
|
23
|
+
setIframeExpanded(false);
|
|
24
|
+
}, [allowExpandedView]);
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
debugApplePay("payment link updated", { paymentLinkUrl });
|
|
27
|
+
resetWidget();
|
|
28
|
+
}, [paymentLinkUrl, resetWidget]);
|
|
29
|
+
const updateExpandedView = useCallback((expanded) => {
|
|
30
|
+
if (!allowExpandedView) {
|
|
31
|
+
if (!expanded)
|
|
32
|
+
setIframeExpanded(false);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
setIframeExpanded(expanded);
|
|
36
|
+
}, [allowExpandedView]);
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
const handler = (event) => {
|
|
39
|
+
if (typeof event.origin !== "string" || !isCoinbaseOrigin(event.origin)) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const iframeWindow = iframeRef.current?.contentWindow;
|
|
43
|
+
if (iframeWindow && event.source !== iframeWindow) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const parsed = parseCoinbaseEvent(event.data);
|
|
47
|
+
if (!parsed)
|
|
48
|
+
return;
|
|
49
|
+
debugApplePay("coinbase event", {
|
|
50
|
+
eventName: parsed.eventName,
|
|
51
|
+
data: parsed.data,
|
|
52
|
+
});
|
|
53
|
+
switch (parsed.eventName) {
|
|
54
|
+
case "onramp_api.load_pending":
|
|
55
|
+
setIframeReady(false);
|
|
56
|
+
return;
|
|
57
|
+
case "onramp_api.load_success":
|
|
58
|
+
setWidgetError(null);
|
|
59
|
+
setIframeReady(true);
|
|
60
|
+
return;
|
|
61
|
+
case "onramp_api.load_error":
|
|
62
|
+
if (parsed.data?.errorCode ===
|
|
63
|
+
"ERROR_CODE_GUEST_APPLE_PAY_NOT_SUPPORTED") {
|
|
64
|
+
setIframeReady(false);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
setWidgetError(parsed.data?.errorMessage ?? "failed to load payment widget");
|
|
68
|
+
return;
|
|
69
|
+
case "onramp_api.apple_pay_button_pressed":
|
|
70
|
+
updateExpandedView(true);
|
|
71
|
+
return;
|
|
72
|
+
case "onramp_api.pending_payment_auth":
|
|
73
|
+
case "onramp_api.payment_authorized":
|
|
74
|
+
updateExpandedView(true);
|
|
75
|
+
return;
|
|
76
|
+
case "onramp_api.commit_success":
|
|
77
|
+
updateExpandedView(false);
|
|
78
|
+
void refreshRef.current();
|
|
79
|
+
return;
|
|
80
|
+
case "onramp_api.commit_error":
|
|
81
|
+
updateExpandedView(false);
|
|
82
|
+
setWidgetError(parsed.data?.errorMessage ?? "payment failed");
|
|
83
|
+
return;
|
|
84
|
+
case "onramp_api.cancel":
|
|
85
|
+
debugApplePay("collapsing widget after cancel event");
|
|
86
|
+
updateExpandedView(false);
|
|
87
|
+
return;
|
|
88
|
+
case "onramp_api.apple_pay_session_cancelled":
|
|
89
|
+
updateExpandedView(false);
|
|
90
|
+
return;
|
|
91
|
+
case "onramp_api.polling_start":
|
|
92
|
+
updateExpandedView(true);
|
|
93
|
+
void refreshRef.current();
|
|
94
|
+
return;
|
|
95
|
+
case "onramp_api.polling_success":
|
|
96
|
+
updateExpandedView(false);
|
|
97
|
+
void refreshRef.current();
|
|
98
|
+
return;
|
|
99
|
+
case "onramp_api.polling_error":
|
|
100
|
+
updateExpandedView(false);
|
|
101
|
+
setWidgetError(parsed.data?.errorMessage ?? "transaction processing error");
|
|
102
|
+
return;
|
|
103
|
+
default:
|
|
104
|
+
debugApplePay("unhandled coinbase event", {
|
|
105
|
+
eventName: parsed.eventName,
|
|
106
|
+
data: parsed.data,
|
|
107
|
+
});
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
window.addEventListener("message", handler);
|
|
112
|
+
return () => window.removeEventListener("message", handler);
|
|
113
|
+
}, [updateExpandedView]);
|
|
114
|
+
const onIframeLoad = useCallback(() => {
|
|
115
|
+
debugApplePay("iframe load", { paymentLinkUrl });
|
|
116
|
+
}, [paymentLinkUrl]);
|
|
117
|
+
return {
|
|
118
|
+
iframeExpanded,
|
|
119
|
+
onIframeLoad,
|
|
120
|
+
iframeReady,
|
|
121
|
+
iframeRef,
|
|
122
|
+
resetWidget,
|
|
123
|
+
widgetError,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Coinbase sends postMessage payloads as JSON strings. Parse and narrow them
|
|
128
|
+
* before the page reacts to lifecycle events.
|
|
129
|
+
*/
|
|
130
|
+
function parseCoinbaseEvent(raw) {
|
|
131
|
+
let parsed;
|
|
132
|
+
try {
|
|
133
|
+
parsed = typeof raw === "string" ? JSON.parse(raw) : raw;
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
if (!parsed || typeof parsed !== "object")
|
|
139
|
+
return null;
|
|
140
|
+
const maybe = parsed;
|
|
141
|
+
if (typeof maybe.eventName !== "string")
|
|
142
|
+
return null;
|
|
143
|
+
if (!maybe.eventName.startsWith("onramp_api."))
|
|
144
|
+
return null;
|
|
145
|
+
return maybe;
|
|
146
|
+
}
|
|
147
|
+
function isCoinbaseOrigin(origin) {
|
|
148
|
+
try {
|
|
149
|
+
const { hostname } = new URL(origin);
|
|
150
|
+
return hostname === "coinbase.com" || hostname.endsWith(".coinbase.com");
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
function debugApplePay(message, fields) {
|
|
157
|
+
console.info("[apple-pay]", message, fields ?? {});
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=useCoinbaseApplePayWidget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCoinbaseApplePayWidget.js","sourceRoot":"","sources":["../../../../src/web/components/account/useCoinbaseApplePayWidget.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ReactNode } from "react";
|
|
1
|
+
import { CSSProperties, ReactNode } from "react";
|
|
2
2
|
import { ExternalLinkIcon } from "./icons.js";
|
|
3
3
|
export { ExternalLinkIcon };
|
|
4
4
|
type ButtonProps = {
|
|
@@ -12,4 +12,14 @@ type ButtonProps = {
|
|
|
12
12
|
export declare function PrimaryButton({ children, onClick, disabled, icon, className, }: ButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
13
13
|
/** Secondary action button - for less prominent actions like "Done", "Close" */
|
|
14
14
|
export declare function SecondaryButton({ children, onClick, disabled, icon, className, }: ButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
type SecondaryLinkButtonProps = {
|
|
16
|
+
children: ReactNode;
|
|
17
|
+
href?: string;
|
|
18
|
+
onClick?: () => void;
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
className?: string;
|
|
21
|
+
style?: CSSProperties;
|
|
22
|
+
};
|
|
23
|
+
/** Small underlined text link. Renders <a> when href is set, <button> otherwise. */
|
|
24
|
+
export declare function SecondaryLinkButton({ children, href, onClick, disabled, className, style, }: SecondaryLinkButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
15
25
|
//# sourceMappingURL=buttons.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buttons.d.ts","sourceRoot":"","sources":["../../../src/web/components/buttons.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"buttons.d.ts","sourceRoot":"","sources":["../../../src/web/components/buttons.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,KAAK,WAAW,GAAG;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,OAAO,EACP,QAAgB,EAChB,IAAI,EACJ,SAAc,GACf,EAAE,WAAW,2CAoBb;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,OAAO,EACP,QAAgB,EAChB,IAAI,EACJ,SAAc,GACf,EAAE,WAAW,2CAoBb;AAED,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,SAAc,EACd,KAAK,GACN,EAAE,wBAAwB,2CAsB1B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { ExternalLinkIcon } from "./icons.js";
|
|
3
3
|
export { ExternalLinkIcon };
|
|
4
4
|
/** Primary action button - full width, prominent styling */
|
|
@@ -7,7 +7,7 @@ export function PrimaryButton({ children, onClick, disabled = false, icon, class
|
|
|
7
7
|
const baseStyles = "daimo-w-full daimo-max-w-xs daimo-min-h-[44px] daimo-py-4 daimo-px-6 daimo-rounded-[var(--daimo-radius-lg)] daimo-font-medium daimo-flex daimo-items-center daimo-justify-center daimo-gap-2 daimo-touch-action-manipulation daimo-transition-[background-color] daimo-duration-100 daimo-ease";
|
|
8
8
|
const enabledStyles = "daimo-bg-[var(--daimo-surface-secondary)] daimo-text-[var(--daimo-text)] hover:[@media(hover:hover)]:daimo-bg-[var(--daimo-surface-hover)]";
|
|
9
9
|
const disabledStyles = "daimo-bg-[var(--daimo-surface-secondary)] daimo-text-[var(--daimo-text-muted)] daimo-cursor-not-allowed";
|
|
10
|
-
return (_jsxs("button", { onClick: onClick, disabled: disabled, className: `${baseStyles} ${disabled ? disabledStyles : enabledStyles} ${className}`, children: [icon, children] }));
|
|
10
|
+
return (_jsxs("button", { type: "button", onClick: onClick, disabled: disabled, className: `${baseStyles} ${disabled ? disabledStyles : enabledStyles} ${className}`, children: [icon, children] }));
|
|
11
11
|
}
|
|
12
12
|
/** Secondary action button - for less prominent actions like "Done", "Close" */
|
|
13
13
|
export function SecondaryButton({ children, onClick, disabled = false, icon, className = "", }) {
|
|
@@ -15,6 +15,14 @@ export function SecondaryButton({ children, onClick, disabled = false, icon, cla
|
|
|
15
15
|
const baseStyles = "daimo-min-h-[44px] daimo-py-3 daimo-px-8 daimo-rounded-[var(--daimo-radius-md)] daimo-font-medium daimo-flex daimo-items-center daimo-justify-center daimo-gap-2 daimo-touch-action-manipulation daimo-transition-[background-color] daimo-duration-100 daimo-ease";
|
|
16
16
|
const enabledStyles = "daimo-bg-[var(--daimo-surface-secondary)] daimo-text-[var(--daimo-text)] hover:[@media(hover:hover)]:daimo-bg-[var(--daimo-surface-hover)]";
|
|
17
17
|
const disabledStyles = "daimo-bg-[var(--daimo-surface-secondary)] daimo-text-[var(--daimo-text-muted)] daimo-cursor-not-allowed";
|
|
18
|
-
return (_jsxs("button", { onClick: onClick, disabled: disabled, className: `${baseStyles} ${disabled ? disabledStyles : enabledStyles} ${className}`, children: [icon, children] }));
|
|
18
|
+
return (_jsxs("button", { type: "button", onClick: onClick, disabled: disabled, className: `${baseStyles} ${disabled ? disabledStyles : enabledStyles} ${className}`, children: [icon, children] }));
|
|
19
|
+
}
|
|
20
|
+
/** Small underlined text link. Renders <a> when href is set, <button> otherwise. */
|
|
21
|
+
export function SecondaryLinkButton({ children, href, onClick, disabled, className = "", style, }) {
|
|
22
|
+
const styles = `daimo-text-sm daimo-text-[var(--daimo-text-secondary)] hover:daimo-text-[var(--daimo-text)] daimo-underline daimo-transition-colors ${className}`;
|
|
23
|
+
if (href != null) {
|
|
24
|
+
return (_jsx("a", { href: href, className: styles, style: style, children: children }));
|
|
25
|
+
}
|
|
26
|
+
return (_jsx("button", { type: "button", onClick: onClick, disabled: disabled, className: styles, style: style, children: children }));
|
|
19
27
|
}
|
|
20
28
|
//# sourceMappingURL=buttons.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buttons.js","sourceRoot":"","sources":["../../../src/web/components/buttons.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAU5B,4DAA4D;AAC5D,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,IAAI,EACJ,SAAS,GAAG,EAAE,GACF;IACZ,qDAAqD;IACrD,MAAM,UAAU,GACd,gSAAgS,CAAC;IACnS,MAAM,aAAa,GACjB,4IAA4I,CAAC;IAC/I,MAAM,cAAc,GAClB,yGAAyG,CAAC;IAE5G,OAAO,CACL,kBACE,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,GAAG,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,IAAI,SAAS,EAAE,aAEnF,IAAI,EACJ,QAAQ,IACF,CACV,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAAC,EAC9B,QAAQ,EACR,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,IAAI,EACJ,SAAS,GAAG,EAAE,GACF;IACZ,qDAAqD;IACrD,MAAM,UAAU,GACd,oQAAoQ,CAAC;IACvQ,MAAM,aAAa,GACjB,4IAA4I,CAAC;IAC/I,MAAM,cAAc,GAClB,yGAAyG,CAAC;IAE5G,OAAO,CACL,kBACE,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,GAAG,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,IAAI,SAAS,EAAE,aAEnF,IAAI,EACJ,QAAQ,IACF,CACV,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"buttons.js","sourceRoot":"","sources":["../../../src/web/components/buttons.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAU5B,4DAA4D;AAC5D,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,IAAI,EACJ,SAAS,GAAG,EAAE,GACF;IACZ,qDAAqD;IACrD,MAAM,UAAU,GACd,gSAAgS,CAAC;IACnS,MAAM,aAAa,GACjB,4IAA4I,CAAC;IAC/I,MAAM,cAAc,GAClB,yGAAyG,CAAC;IAE5G,OAAO,CACL,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,GAAG,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,IAAI,SAAS,EAAE,aAEnF,IAAI,EACJ,QAAQ,IACF,CACV,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAAC,EAC9B,QAAQ,EACR,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,IAAI,EACJ,SAAS,GAAG,EAAE,GACF;IACZ,qDAAqD;IACrD,MAAM,UAAU,GACd,oQAAoQ,CAAC;IACvQ,MAAM,aAAa,GACjB,4IAA4I,CAAC;IAC/I,MAAM,cAAc,GAClB,yGAAyG,CAAC;IAE5G,OAAO,CACL,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,GAAG,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,IAAI,SAAS,EAAE,aAEnF,IAAI,EACJ,QAAQ,IACF,CACV,CAAC;AACJ,CAAC;AAWD,oFAAoF;AACpF,MAAM,UAAU,mBAAmB,CAAC,EAClC,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,SAAS,GAAG,EAAE,EACd,KAAK,GACoB;IACzB,MAAM,MAAM,GAAG,uIAAuI,SAAS,EAAE,CAAC;IAElK,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,OAAO,CACL,YAAG,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,YAC3C,QAAQ,GACP,CACL,CAAC;IACJ,CAAC;IAED,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,KAAK,YAEX,QAAQ,GACF,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -10,6 +10,11 @@ export declare function ExpiredIcon({ className, size }: IconProps): import("rea
|
|
|
10
10
|
export declare function ErrorIcon({ className, size }: IconProps): import("react/jsx-runtime").JSX.Element;
|
|
11
11
|
/** Back arrow for navigation */
|
|
12
12
|
export declare function BackArrowIcon({ className, size }: IconProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
/** Opposing arrows for switching payment modes */
|
|
14
|
+
export declare function SwitchArrowsIcon({ className, size, flipY, animated, }: IconProps & {
|
|
15
|
+
flipY?: boolean;
|
|
16
|
+
animated?: boolean;
|
|
17
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
13
18
|
/** Close X icon for modal dismiss */
|
|
14
19
|
export declare function CloseIcon({ className, size }: IconProps): import("react/jsx-runtime").JSX.Element;
|
|
15
20
|
/** Copy icon with checkmark state */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../src/web/components/icons.tsx"],"names":[],"mappings":"AAAA,KAAK,SAAS,GAAG;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,8CAA8C;AAC9C,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,2CAgB5D;AAED,4CAA4C;AAC5C,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,2CAiB9D;AAED,8BAA8B;AAC9B,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,2CAkB5D;AAED,gCAAgC;AAChC,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,IAAQ,EAAE,EAAE,SAAS,2CAkB/D;AAED,qCAAqC;AACrC,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,2CAiB5D;AAED,qCAAqC;AACrC,wBAAgB,QAAQ,CAAC,EACvB,SAAS,EACT,IAAS,EACT,MAAc,GACf,EAAE,SAAS,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,2CAkClC;AAED,0BAA0B;AAC1B,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,2CA6BhE;AAED,yBAAyB;AACzB,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,2CA2BnE"}
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../src/web/components/icons.tsx"],"names":[],"mappings":"AAAA,KAAK,SAAS,GAAG;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,8CAA8C;AAC9C,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,2CAgB5D;AAED,4CAA4C;AAC5C,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,2CAiB9D;AAED,8BAA8B;AAC9B,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,2CAkB5D;AAED,gCAAgC;AAChC,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,IAAQ,EAAE,EAAE,SAAS,2CAkB/D;AAED,kDAAkD;AAClD,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,IAAS,EACT,KAAa,EACb,QAAgB,GACjB,EAAE,SAAS,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,2CAuBrD;AAED,qCAAqC;AACrC,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,2CAiB5D;AAED,qCAAqC;AACrC,wBAAgB,QAAQ,CAAC,EACvB,SAAS,EACT,IAAS,EACT,MAAc,GACf,EAAE,SAAS,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,2CAkClC;AAED,0BAA0B;AAC1B,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,2CA6BhE;AAED,yBAAyB;AACzB,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,2CA2BnE"}
|
|
@@ -15,6 +15,13 @@ export function ErrorIcon({ className, size = 40 }) {
|
|
|
15
15
|
export function BackArrowIcon({ className, size = 9 }) {
|
|
16
16
|
return (_jsx("svg", { width: size, height: Math.round((size * 16) / 9), viewBox: "0 0 9 16", fill: "none", className: className ?? "daimo-text-[var(--daimo-text-muted)]", children: _jsx("path", { d: "M8 1L1 8L8 15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }));
|
|
17
17
|
}
|
|
18
|
+
/** Opposing arrows for switching payment modes */
|
|
19
|
+
export function SwitchArrowsIcon({ className, size = 16, flipY = false, animated = false, }) {
|
|
20
|
+
return (_jsx("svg", { "aria-hidden": "true", width: size, height: size, viewBox: "0 0 24 24", fill: "none", className: className ?? "daimo-text-[var(--daimo-text-muted)]", style: {
|
|
21
|
+
transform: flipY ? "scaleY(-1)" : "scaleY(1)",
|
|
22
|
+
transition: animated ? "transform 0.2s ease-in-out" : undefined,
|
|
23
|
+
}, children: _jsx("path", { d: "M3 7.5 7.5 3m0 0L12 7.5M7.5 3v13.5m13.5 0L16.5 21m0 0L12 16.5m4.5 4.5V7.5", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", strokeLinejoin: "round" }) }));
|
|
24
|
+
}
|
|
18
25
|
/** Close X icon for modal dismiss */
|
|
19
26
|
export function CloseIcon({ className, size = 14 }) {
|
|
20
27
|
return (_jsx("svg", { width: size, height: size, viewBox: "0 0 14 14", fill: "none", className: className ?? "daimo-text-[var(--daimo-text-muted)]", children: _jsx("path", { d: "M1 13L13 1M1 1L13 13", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icons.js","sourceRoot":"","sources":["../../../src/web/components/icons.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"icons.js","sourceRoot":"","sources":["../../../src/web/components/icons.tsx"],"names":[],"mappings":"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"}
|
|
@@ -19,14 +19,15 @@ type AmountInputProps = {
|
|
|
19
19
|
onSubmit: (amount: number) => void;
|
|
20
20
|
/** Called whenever the amount changes */
|
|
21
21
|
onChange?: (amount: number, isValid: boolean) => void;
|
|
22
|
+
disabled?: boolean;
|
|
22
23
|
};
|
|
23
24
|
/**
|
|
24
25
|
* Amount input with dynamic width, currency symbol, and min/max validation.
|
|
25
26
|
* Shows warning messages when amount is outside valid range.
|
|
26
27
|
*/
|
|
27
|
-
export declare function AmountInput({ minimum, maximum, currencySymbol, defaultLabel, initialValue, onSubmit, onChange, }: AmountInputProps): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
export declare function AmountInput({ minimum, maximum, currencySymbol, defaultLabel, initialValue, onSubmit, onChange, disabled, }: AmountInputProps): import("react/jsx-runtime").JSX.Element;
|
|
28
29
|
/** Hook to manage amount input state externally */
|
|
29
|
-
export declare function useAmountInput(minimum: number, maximum: number): {
|
|
30
|
+
export declare function useAmountInput(minimum: number, maximum: number, initialValue?: string): {
|
|
30
31
|
amount: number;
|
|
31
32
|
isValid: boolean;
|
|
32
33
|
handleChange: (amt: number, valid: boolean) => void;
|
|
@@ -97,6 +98,10 @@ type TokenIconWithChainBadgeProps = {
|
|
|
97
98
|
size?: "sm" | "lg" | "qr";
|
|
98
99
|
/** Border color class for the chain badge (defaults to row background colors) */
|
|
99
100
|
badgeBorderClass?: string;
|
|
101
|
+
/** Override for the badge logo. Null hides the badge; undefined falls back to the chain logo. */
|
|
102
|
+
badgeLogoURI?: string | null;
|
|
103
|
+
/** Alt text for the badge image. Falls back to the chain name. */
|
|
104
|
+
badgeAlt?: string;
|
|
100
105
|
baseUrl: string;
|
|
101
106
|
};
|
|
102
107
|
/**
|
|
@@ -105,7 +110,7 @@ type TokenIconWithChainBadgeProps = {
|
|
|
105
110
|
* - "lg": 80x80 token, 32x32 badge (for page headers)
|
|
106
111
|
* - "qr": 48x48 token, 16x16 badge at top-right (for QR code centers)
|
|
107
112
|
*/
|
|
108
|
-
export declare function TokenIconWithChainBadge({ token, chainId, symbol, logoURI, size, badgeBorderClass, baseUrl, }: TokenIconWithChainBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
113
|
+
export declare function TokenIconWithChainBadge({ token, chainId, symbol, logoURI, size, badgeBorderClass, badgeLogoURI, badgeAlt, baseUrl, }: TokenIconWithChainBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
109
114
|
/** Map chainId to logo filename */
|
|
110
115
|
export declare function getChainLogoFilename(chainId: number): string;
|
|
111
116
|
/** Fully resolved chain logo URL, ready to use as an img src. */
|