@daimo/sdk 1.3.1 → 1.4.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.
- 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 +24 -13
- package/dist/common/api.d.ts.map +1 -1
- package/dist/common/api.js +8 -2
- 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 +6 -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 +5 -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/ChooseOptionPage.d.ts.map +1 -1
- package/dist/web/components/ChooseOptionPage.js +0 -2
- package/dist/web/components/ChooseOptionPage.js.map +1 -1
- package/dist/web/components/ChooseWalletPage.d.ts +8 -2
- package/dist/web/components/ChooseWalletPage.d.ts.map +1 -1
- package/dist/web/components/ChooseWalletPage.js +55 -4
- package/dist/web/components/ChooseWalletPage.js.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 +3 -2
- package/dist/web/components/DaimoModal.d.ts.map +1 -1
- package/dist/web/components/DaimoModal.js +46 -15
- package/dist/web/components/DaimoModal.js.map +1 -1
- package/dist/web/components/DeeplinkPage.d.ts +3 -1
- package/dist/web/components/DeeplinkPage.d.ts.map +1 -1
- package/dist/web/components/DeeplinkPage.js +3 -3
- package/dist/web/components/DeeplinkPage.js.map +1 -1
- package/dist/web/components/ExchangePage.d.ts +3 -1
- package/dist/web/components/ExchangePage.d.ts.map +1 -1
- package/dist/web/components/ExchangePage.js +3 -3
- package/dist/web/components/ExchangePage.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/TokenAmountEntry.d.ts +57 -0
- package/dist/web/components/TokenAmountEntry.d.ts.map +1 -0
- package/dist/web/components/TokenAmountEntry.js +157 -0
- package/dist/web/components/TokenAmountEntry.js.map +1 -0
- package/dist/web/components/WalletAmountPage.d.ts +4 -2
- package/dist/web/components/WalletAmountPage.d.ts.map +1 -1
- package/dist/web/components/WalletAmountPage.js +12 -156
- 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 +10 -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 +3 -3
- package/dist/web/components/account/AccountDeeplinkPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountDeeplinkPage.js +10 -9
- 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 +23 -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.d.ts +2 -1
- package/dist/web/components/account/openDeeplink.d.ts.map +1 -1
- package/dist/web/components/account/openDeeplink.js +33 -17
- 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/shared.d.ts +8 -3
- package/dist/web/components/shared.d.ts.map +1 -1
- package/dist/web/components/shared.js +44 -15
- 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 +18 -0
- package/dist/web/hooks/locales/en.d.ts.map +1 -1
- package/dist/web/hooks/locales/en.js +20 -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 +18 -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/types.d.ts +17 -3
- 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 +49 -13
- package/dist/web/hooks/useAccountFlow.d.ts.map +1 -1
- package/dist/web/hooks/useAccountFlow.js +90 -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 +21 -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 +4 -2
- package/dist/web/hooks/useSessionNav.d.ts.map +1 -1
- package/dist/web/hooks/useSessionNav.js +28 -14
- 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 +2 -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 +5 -0
- package/dist/web/platform.d.ts.map +1 -0
- package/dist/web/platform.js +20 -0
- package/dist/web/platform.js.map +1 -0
- 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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DepositDeeplink } from "../../../common/account.js";
|
|
2
|
+
import { type DaimoPlatform } from "../../platform.js";
|
|
2
3
|
/** Execute a provider deeplink in the user's browser. */
|
|
3
|
-
export declare function openDeeplink(deeplink: DepositDeeplink): void;
|
|
4
|
+
export declare function openDeeplink(deeplink: DepositDeeplink, platform: DaimoPlatform): void;
|
|
4
5
|
//# sourceMappingURL=openDeeplink.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openDeeplink.d.ts","sourceRoot":"","sources":["../../../../src/web/components/account/openDeeplink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"openDeeplink.d.ts","sourceRoot":"","sources":["../../../../src/web/components/account/openDeeplink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElE,yDAAyD;AACzD,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,aAAa,GACtB,IAAI,CAqBN"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isDesktop } from "../../platform.js";
|
|
2
2
|
/** Execute a provider deeplink in the user's browser. */
|
|
3
|
-
export function openDeeplink(deeplink) {
|
|
4
|
-
const desktop =
|
|
3
|
+
export function openDeeplink(deeplink, platform) {
|
|
4
|
+
const desktop = isDesktop(platform);
|
|
5
5
|
if (!desktop) {
|
|
6
6
|
const url = deeplink.type === "form-post" ? deeplink.warmUrl : deeplink.url;
|
|
7
7
|
// In a native WKWebView, use the bridge to open in Safari directly.
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"openDeeplink.js","sourceRoot":"","sources":["../../../../src/web/components/account/openDeeplink.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
|
@@ -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. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/web/components/shared.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/web/components/shared.tsx"],"names":[],"mappings":"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"}
|