@daimo/sdk 1.4.1 → 1.4.3
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 +16 -6
- package/dist/client/createDaimoClient.d.ts.map +1 -1
- package/dist/client/createDaimoClient.js +16 -0
- package/dist/client/createDaimoClient.js.map +1 -1
- package/dist/common/account.d.ts +89 -13
- package/dist/common/account.d.ts.map +1 -1
- package/dist/common/account.js +12 -1
- package/dist/common/account.js.map +1 -1
- package/dist/common/api.d.ts +51 -10
- package/dist/common/api.d.ts.map +1 -1
- package/dist/common/api.js +13 -1
- package/dist/common/api.js.map +1 -1
- package/dist/common/session.d.ts +32 -3
- package/dist/common/session.d.ts.map +1 -1
- package/dist/common/session.js.map +1 -1
- package/dist/common/token.d.ts +3 -0
- package/dist/common/token.d.ts.map +1 -1
- package/dist/common/token.js +21 -0
- package/dist/common/token.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/web/accountWallet.d.ts +15 -0
- package/dist/web/accountWallet.d.ts.map +1 -0
- package/dist/web/accountWallet.js +44 -0
- package/dist/web/accountWallet.js.map +1 -0
- package/dist/web/api/index.d.ts +17 -11
- package/dist/web/api/index.d.ts.map +1 -1
- package/dist/web/api/navTree.d.ts +35 -6
- package/dist/web/api/navTree.d.ts.map +1 -1
- package/dist/web/components/ApplePayLogo.d.ts +9 -0
- package/dist/web/components/ApplePayLogo.d.ts.map +1 -0
- package/dist/web/components/ApplePayLogo.js +15 -0
- package/dist/web/components/ApplePayLogo.js.map +1 -0
- package/dist/web/components/ChooseOptionPage.d.ts.map +1 -1
- package/dist/web/components/ChooseOptionPage.js +20 -7
- package/dist/web/components/ChooseOptionPage.js.map +1 -1
- package/dist/web/components/ChooseWalletPage.js +12 -3
- package/dist/web/components/ChooseWalletPage.js.map +1 -1
- package/dist/web/components/ConfirmationSpinner.d.ts +3 -1
- package/dist/web/components/ConfirmationSpinner.d.ts.map +1 -1
- package/dist/web/components/ConfirmationSpinner.js +7 -2
- package/dist/web/components/ConfirmationSpinner.js.map +1 -1
- package/dist/web/components/DaimoModal.d.ts.map +1 -1
- package/dist/web/components/DaimoModal.js +92 -49
- package/dist/web/components/DaimoModal.js.map +1 -1
- package/dist/web/components/DeeplinkPage.d.ts.map +1 -1
- package/dist/web/components/DeeplinkPage.js +4 -3
- package/dist/web/components/DeeplinkPage.js.map +1 -1
- package/dist/web/components/ErrorPage.d.ts.map +1 -1
- package/dist/web/components/ErrorPage.js +4 -1
- package/dist/web/components/ErrorPage.js.map +1 -1
- package/dist/web/components/ExchangePage.d.ts.map +1 -1
- package/dist/web/components/ExchangePage.js +8 -23
- package/dist/web/components/ExchangePage.js.map +1 -1
- package/dist/web/components/ExternalPaymentPage.d.ts +22 -0
- package/dist/web/components/ExternalPaymentPage.d.ts.map +1 -0
- package/dist/web/components/ExternalPaymentPage.js +24 -0
- package/dist/web/components/ExternalPaymentPage.js.map +1 -0
- package/dist/web/components/ModalSkeleton.d.ts.map +1 -1
- package/dist/web/components/ModalSkeleton.js +2 -4
- package/dist/web/components/ModalSkeleton.js.map +1 -1
- package/dist/web/components/SelectTokenPage.d.ts.map +1 -1
- package/dist/web/components/SelectTokenPage.js +3 -3
- package/dist/web/components/SelectTokenPage.js.map +1 -1
- package/dist/web/components/Skeleton.d.ts +19 -0
- package/dist/web/components/Skeleton.d.ts.map +1 -0
- package/dist/web/components/Skeleton.js +21 -0
- package/dist/web/components/Skeleton.js.map +1 -0
- package/dist/web/components/StripeOnrampPage.d.ts +16 -0
- package/dist/web/components/StripeOnrampPage.d.ts.map +1 -0
- package/dist/web/components/StripeOnrampPage.js +11 -0
- package/dist/web/components/StripeOnrampPage.js.map +1 -0
- package/dist/web/components/TokenAmountEntry.d.ts +9 -3
- package/dist/web/components/TokenAmountEntry.d.ts.map +1 -1
- package/dist/web/components/TokenAmountEntry.js +50 -31
- package/dist/web/components/TokenAmountEntry.js.map +1 -1
- package/dist/web/components/WaitingDepositAddressPage.d.ts +39 -0
- package/dist/web/components/WaitingDepositAddressPage.d.ts.map +1 -1
- package/dist/web/components/WaitingDepositAddressPage.js +61 -32
- package/dist/web/components/WaitingDepositAddressPage.js.map +1 -1
- package/dist/web/components/WalletAmountPage.d.ts.map +1 -1
- package/dist/web/components/WalletAmountPage.js +7 -4
- package/dist/web/components/WalletAmountPage.js.map +1 -1
- package/dist/web/components/account/AccountApplePayPage.d.ts +1 -1
- package/dist/web/components/account/AccountApplePayPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountApplePayPage.js +1 -1
- package/dist/web/components/account/AccountApplePayPage.js.map +1 -1
- package/dist/web/components/account/AccountBankDetailsPage.d.ts +2 -1
- package/dist/web/components/account/AccountBankDetailsPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountBankDetailsPage.js +166 -54
- package/dist/web/components/account/AccountBankDetailsPage.js.map +1 -1
- package/dist/web/components/account/AccountBankPickerPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountBankPickerPage.js +12 -13
- package/dist/web/components/account/AccountBankPickerPage.js.map +1 -1
- package/dist/web/components/account/AccountBankTransferSubmittedPage.d.ts +3 -1
- package/dist/web/components/account/AccountBankTransferSubmittedPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountBankTransferSubmittedPage.js +9 -3
- package/dist/web/components/account/AccountBankTransferSubmittedPage.js.map +1 -1
- package/dist/web/components/account/AccountCreatingWalletPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountCreatingWalletPage.js +6 -4
- package/dist/web/components/account/AccountCreatingWalletPage.js.map +1 -1
- package/dist/web/components/account/AccountEnrollmentPage.d.ts +5 -3
- package/dist/web/components/account/AccountEnrollmentPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountEnrollmentPage.js +107 -48
- package/dist/web/components/account/AccountEnrollmentPage.js.map +1 -1
- package/dist/web/components/account/AccountFlowProvider.d.ts +1 -1
- package/dist/web/components/account/AccountFlowProvider.d.ts.map +1 -1
- package/dist/web/components/account/AccountFlowProvider.js +26 -20
- package/dist/web/components/account/AccountFlowProvider.js.map +1 -1
- package/dist/web/components/account/AccountKycInfoPage.d.ts +13 -0
- package/dist/web/components/account/AccountKycInfoPage.d.ts.map +1 -0
- package/dist/web/components/account/AccountKycInfoPage.js +37 -0
- package/dist/web/components/account/AccountKycInfoPage.js.map +1 -0
- package/dist/web/components/account/AccountOtpCodeEntry.d.ts.map +1 -1
- package/dist/web/components/account/AccountOtpCodeEntry.js +5 -3
- package/dist/web/components/account/AccountOtpCodeEntry.js.map +1 -1
- package/dist/web/components/account/AccountPaymentPage.d.ts +3 -2
- package/dist/web/components/account/AccountPaymentPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountPaymentPage.js +30 -18
- package/dist/web/components/account/AccountPaymentPage.js.map +1 -1
- package/dist/web/components/account/AccountPhoneOtpPage.d.ts.map +1 -1
- package/dist/web/components/account/AccountPhoneOtpPage.js +21 -9
- package/dist/web/components/account/AccountPhoneOtpPage.js.map +1 -1
- package/dist/web/components/account/AccountPhonePage.d.ts.map +1 -1
- package/dist/web/components/account/AccountPhonePage.js +30 -12
- package/dist/web/components/account/AccountPhonePage.js.map +1 -1
- 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 +29 -39
- package/dist/web/components/account/AccountStatusPage.js.map +1 -1
- package/dist/web/components/account/accountNav.d.ts +1 -1
- package/dist/web/components/account/accountNav.d.ts.map +1 -1
- package/dist/web/components/account/accountNav.js +5 -1
- package/dist/web/components/account/accountNav.js.map +1 -1
- package/dist/web/components/account/kycRequirement.d.ts +14 -0
- package/dist/web/components/account/kycRequirement.d.ts.map +1 -0
- package/dist/web/components/account/kycRequirement.js +46 -0
- package/dist/web/components/account/kycRequirement.js.map +1 -0
- package/dist/web/components/account/phone.d.ts +2 -1
- package/dist/web/components/account/phone.d.ts.map +1 -1
- package/dist/web/components/account/phone.js +11 -2
- package/dist/web/components/account/phone.js.map +1 -1
- package/dist/web/components/containers.d.ts +6 -2
- package/dist/web/components/containers.d.ts.map +1 -1
- package/dist/web/components/containers.js +72 -27
- package/dist/web/components/containers.js.map +1 -1
- package/dist/web/components/icons.d.ts +16 -1
- package/dist/web/components/icons.d.ts.map +1 -1
- package/dist/web/components/icons.js +25 -2
- package/dist/web/components/icons.js.map +1 -1
- package/dist/web/components/shared.d.ts.map +1 -1
- package/dist/web/components/shared.js +24 -20
- package/dist/web/components/shared.js.map +1 -1
- package/dist/web/formatAmount.d.ts +5 -0
- package/dist/web/formatAmount.d.ts.map +1 -0
- package/dist/web/formatAmount.js +26 -0
- package/dist/web/formatAmount.js.map +1 -0
- package/dist/web/hooks/formatUserError.d.ts.map +1 -1
- package/dist/web/hooks/formatUserError.js +8 -0
- package/dist/web/hooks/formatUserError.js.map +1 -1
- package/dist/web/hooks/locales/en.d.ts +17 -2
- package/dist/web/hooks/locales/en.d.ts.map +1 -1
- package/dist/web/hooks/locales/en.js +27 -12
- 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 +26 -11
- package/dist/web/hooks/locales/es.js.map +1 -1
- package/dist/web/hooks/locales/ja.d.ts.map +1 -1
- package/dist/web/hooks/locales/ja.js +27 -12
- package/dist/web/hooks/locales/ja.js.map +1 -1
- package/dist/web/hooks/locales/ko.d.ts.map +1 -1
- package/dist/web/hooks/locales/ko.js +27 -12
- package/dist/web/hooks/locales/ko.js.map +1 -1
- package/dist/web/hooks/locales/zh.d.ts.map +1 -1
- package/dist/web/hooks/locales/zh.js +27 -12
- package/dist/web/hooks/locales/zh.js.map +1 -1
- 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 +2 -2
- package/dist/web/hooks/navEvent.js.map +1 -1
- package/dist/web/hooks/types.d.ts +18 -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 +10 -11
- package/dist/web/hooks/useAccountFlow.d.ts.map +1 -1
- package/dist/web/hooks/useAccountFlow.js +67 -26
- 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 +15 -103
- 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 +3 -1
- package/dist/web/hooks/useDepositAddress.js.map +1 -1
- package/dist/web/hooks/useDraftDeposit.d.ts.map +1 -1
- package/dist/web/hooks/useDraftDeposit.js +2 -1
- package/dist/web/hooks/useDraftDeposit.js.map +1 -1
- package/dist/web/hooks/useSessionNav.d.ts +2 -1
- package/dist/web/hooks/useSessionNav.d.ts.map +1 -1
- package/dist/web/hooks/useSessionNav.js +225 -40
- 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 +10 -0
- package/dist/web/hooks/useWalletFlow.js.map +1 -1
- package/dist/web/styles.css +1 -1
- package/dist/web/theme.css +1 -1
- package/package.json +2 -1
- package/dist/web/components/account/AccountReadyPage.d.ts +0 -2
- package/dist/web/components/account/AccountReadyPage.d.ts.map +0 -1
- package/dist/web/components/account/AccountReadyPage.js +0 -7
- package/dist/web/components/account/AccountReadyPage.js.map +0 -1
- package/dist/web/isDesktopBrowser.d.ts +0 -2
- package/dist/web/isDesktopBrowser.d.ts.map +0 -1
- package/dist/web/isDesktopBrowser.js +0 -6
- package/dist/web/isDesktopBrowser.js.map +0 -1
|
@@ -1,30 +1,15 @@
|
|
|
1
|
-
import { jsx as _jsx
|
|
2
|
-
import { ExternalLinkIcon, PrimaryButton } from "./buttons.js";
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
2
|
import { t } from "../hooks/locale.js";
|
|
4
3
|
import { isDesktop } from "../platform.js";
|
|
5
|
-
import {
|
|
6
|
-
import { QRCode } from "./QRCode.js";
|
|
4
|
+
import { ExternalPaymentPage } from "./ExternalPaymentPage.js";
|
|
7
5
|
export function ExchangePage({ node, platform, exchangeUrl, waitingMessage, isLoading, onBack, baseUrl, }) {
|
|
8
|
-
const desktop = isDesktop(platform);
|
|
9
6
|
const exchangeId = node.type === "CashApp" ? "CashApp" : node.exchangeId;
|
|
10
|
-
const
|
|
7
|
+
const desktopBehavior = exchangeId === "Coinbase" || exchangeId === "MtPelerin" ? "popup" : "qr";
|
|
8
|
+
const usesDesktopQR = isDesktop(platform) && desktopBehavior === "qr";
|
|
11
9
|
const placeholderDensity = exchangeId === "Binance" ? "medium" : "short";
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
window.open(exchangeUrl, "coinbase", "width=500,height=700");
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
window.open(exchangeUrl, "_blank");
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
// Desktop QR view for Binance, Lemon, CashApp
|
|
23
|
-
if (showQR) {
|
|
24
|
-
return (_jsxs("div", { className: "daimo-flex daimo-flex-col daimo-flex-1 daimo-min-h-0", children: [_jsx(PageHeader, { title: node.title, onBack: onBack }), _jsxs(CenteredContent, { children: [_jsx("div", { className: "daimo-w-full daimo-max-w-[200px] sm:daimo-max-w-[260px]", children: _jsx(QRCode, { value: exchangeUrl, placeholderDensity: placeholderDensity, image: node.icon ? (_jsx("img", { src: resolveIconUrl(node.icon, baseUrl), alt: node.title, className: "daimo-w-full daimo-h-full daimo-object-contain daimo-rounded-[25%]" })) : undefined }) }), exchangeUrl && (_jsx("p", { className: "daimo-text-[var(--daimo-text-secondary)] daimo-text-center daimo-max-w-xs daimo-text-sm daimo-whitespace-pre-line", children: waitingMessage || t.scanWithPhone }))] })] }));
|
|
25
|
-
}
|
|
26
|
-
// Mobile (all exchanges) and desktop Coinbase (popup)
|
|
27
|
-
return (_jsxs("div", { className: "daimo-flex daimo-flex-col daimo-flex-1 daimo-min-h-0", children: [_jsx(PageHeader, { title: node.title, onBack: onBack }), _jsxs(CenteredContent, { children: [node.icon && (_jsx(PageLogo, { icon: node.icon, alt: node.title, baseUrl: baseUrl })), isLoading ? (_jsxs("div", { className: "daimo-flex daimo-flex-col daimo-items-center daimo-gap-2 daimo-max-w-xs daimo-w-full", children: [_jsx("div", { className: "daimo-h-4 daimo-w-4/5 daimo-rounded daimo-bg-[var(--daimo-surface-secondary)] daimo-animate-daimo-pulse" }), _jsx("div", { className: "daimo-h-4 daimo-w-3/5 daimo-rounded daimo-bg-[var(--daimo-surface-secondary)] daimo-animate-daimo-pulse" })] })) : (_jsx("p", { className: "daimo-text-[var(--daimo-text-secondary)] daimo-text-center daimo-max-w-xs daimo-whitespace-pre-line", children: waitingMessage ||
|
|
28
|
-
`${t.continueTo} ${node.title} ${t.toCompleteYourDeposit}` })), _jsxs(PrimaryButton, { onClick: openExchange, icon: _jsx(ExternalLinkIcon, {}), disabled: isLoading, children: [t.open, " ", node.title] })] })] }));
|
|
10
|
+
return (_jsx(ExternalPaymentPage, { title: node.title, platform: platform, url: exchangeUrl, icon: node.icon, message: waitingMessage ||
|
|
11
|
+
(usesDesktopQR
|
|
12
|
+
? t.scanWithPhone
|
|
13
|
+
: `${t.continueTo} ${node.title} ${t.toCompleteYourDeposit}`), isLoading: isLoading, onBack: onBack, baseUrl: baseUrl, desktopBehavior: desktopBehavior, popupName: exchangeId.toLowerCase(), placeholderDensity: placeholderDensity }));
|
|
29
14
|
}
|
|
30
15
|
//# sourceMappingURL=ExchangePage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExchangePage.js","sourceRoot":"","sources":["../../../src/web/components/ExchangePage.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ExchangePage.js","sourceRoot":"","sources":["../../../src/web/components/ExchangePage.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAsB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAc/D,MAAM,UAAU,YAAY,CAAC,EAC3B,IAAI,EACJ,QAAQ,EACR,WAAW,EACX,cAAc,EACd,SAAS,EACT,MAAM,EACN,OAAO,GACW;IAClB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;IACzE,MAAM,eAAe,GACnB,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3E,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,eAAe,KAAK,IAAI,CAAC;IAEtE,MAAM,kBAAkB,GACtB,UAAU,KAAK,SAAS,CAAC,CAAC,CAAE,QAAkB,CAAC,CAAC,CAAE,OAAiB,CAAC;IAEtE,OAAO,CACL,KAAC,mBAAmB,IAClB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,OAAO,EACL,cAAc;YACd,CAAC,aAAa;gBACZ,CAAC,CAAC,CAAC,CAAC,aAAa;gBACjB,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,qBAAqB,EAAE,CAAC,EAEjE,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,UAAU,CAAC,WAAW,EAAE,EACnC,kBAAkB,EAAE,kBAAkB,GACtC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type DaimoPlatform } from "../platform.js";
|
|
2
|
+
type QRDensity = "short" | "medium" | "long";
|
|
3
|
+
type DesktopBehavior = "popup" | "qr";
|
|
4
|
+
type ExternalPaymentPageProps = {
|
|
5
|
+
title: string;
|
|
6
|
+
platform: DaimoPlatform;
|
|
7
|
+
url?: string;
|
|
8
|
+
icon?: string;
|
|
9
|
+
message: string;
|
|
10
|
+
isLoading?: boolean;
|
|
11
|
+
onBack: () => void;
|
|
12
|
+
baseUrl: string;
|
|
13
|
+
desktopBehavior: DesktopBehavior;
|
|
14
|
+
openLabel?: string;
|
|
15
|
+
popupName?: string;
|
|
16
|
+
popupFeatures?: string;
|
|
17
|
+
placeholderDensity?: QRDensity;
|
|
18
|
+
};
|
|
19
|
+
/** Shared handoff page for providers that complete payment outside the modal. */
|
|
20
|
+
export declare function ExternalPaymentPage({ title, platform, url, icon, message, isLoading, onBack, baseUrl, desktopBehavior, openLabel, popupName, popupFeatures, placeholderDensity, }: ExternalPaymentPageProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=ExternalPaymentPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExternalPaymentPage.d.ts","sourceRoot":"","sources":["../../../src/web/components/ExternalPaymentPage.tsx"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAW/D,KAAK,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAC7C,KAAK,eAAe,GAAG,OAAO,GAAG,IAAI,CAAC;AAEtC,KAAK,wBAAwB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,eAAe,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,SAAS,CAAC;CAChC,CAAC;AAIF,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,QAAQ,EACR,GAAG,EACH,IAAI,EACJ,OAAO,EACP,SAAS,EACT,MAAM,EACN,OAAO,EACP,eAAe,EACf,SAAgC,EAChC,SAAS,EACT,aAAsC,EACtC,kBAAkB,GACnB,EAAE,wBAAwB,2CAuD1B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { t } from "../hooks/locale.js";
|
|
3
|
+
import { isDesktop } from "../platform.js";
|
|
4
|
+
import { ExternalLinkIcon, PrimaryButton } from "./buttons.js";
|
|
5
|
+
import { QRCode } from "./QRCode.js";
|
|
6
|
+
import { SkeletonText } from "./Skeleton.js";
|
|
7
|
+
import { CenteredContent, PageHeader, PageLogo, resolveIconUrl, } from "./shared.js";
|
|
8
|
+
const DEFAULT_POPUP_FEATURES = "width=500,height=700";
|
|
9
|
+
/** Shared handoff page for providers that complete payment outside the modal. */
|
|
10
|
+
export function ExternalPaymentPage({ title, platform, url, icon, message, isLoading, onBack, baseUrl, desktopBehavior, openLabel = `${t.open} ${title}`, popupName, popupFeatures = DEFAULT_POPUP_FEATURES, placeholderDensity, }) {
|
|
11
|
+
const desktop = isDesktop(platform);
|
|
12
|
+
const showQR = desktop && desktopBehavior === "qr";
|
|
13
|
+
const openProvider = () => {
|
|
14
|
+
if (!url)
|
|
15
|
+
return;
|
|
16
|
+
if (desktop && desktopBehavior === "popup") {
|
|
17
|
+
window.open(url, popupName ?? title.toLowerCase(), popupFeatures);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
window.open(url, "_blank");
|
|
21
|
+
};
|
|
22
|
+
return (_jsxs("div", { className: "daimo-flex daimo-flex-col daimo-flex-1 daimo-min-h-0", children: [_jsx(PageHeader, { title: title, onBack: onBack }), _jsxs(CenteredContent, { children: [showQR ? (_jsx("div", { className: "daimo-w-full daimo-max-w-[200px] sm:daimo-max-w-[260px]", children: _jsx(QRCode, { value: url, placeholderDensity: placeholderDensity, image: icon ? (_jsx("img", { src: resolveIconUrl(icon, baseUrl), alt: title, className: "daimo-w-full daimo-h-full daimo-object-contain daimo-rounded-[25%]" })) : undefined }) })) : (icon && _jsx(PageLogo, { icon: icon, alt: title, baseUrl: baseUrl })), isLoading ? (_jsx(SkeletonText, { className: "daimo-max-w-xs", widths: ["80%", "60%"] })) : (_jsx("p", { className: "daimo-text-[var(--daimo-text-secondary)] daimo-text-center daimo-max-w-xs daimo-text-sm daimo-whitespace-pre-line", children: message })), !showQR && (_jsx(PrimaryButton, { onClick: openProvider, icon: _jsx(ExternalLinkIcon, {}), disabled: !url || isLoading, children: openLabel }))] })] }));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=ExternalPaymentPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExternalPaymentPage.js","sourceRoot":"","sources":["../../../src/web/components/ExternalPaymentPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAsB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,eAAe,EACf,UAAU,EACV,QAAQ,EACR,cAAc,GACf,MAAM,aAAa,CAAC;AAqBrB,MAAM,sBAAsB,GAAG,sBAAsB,CAAC;AAEtD,iFAAiF;AACjF,MAAM,UAAU,mBAAmB,CAAC,EAClC,KAAK,EACL,QAAQ,EACR,GAAG,EACH,IAAI,EACJ,OAAO,EACP,SAAS,EACT,MAAM,EACN,OAAO,EACP,eAAe,EACf,SAAS,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,KAAK,EAAE,EAChC,SAAS,EACT,aAAa,GAAG,sBAAsB,EACtC,kBAAkB,GACO;IACzB,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,OAAO,IAAI,eAAe,KAAK,IAAI,CAAC;IAEnD,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,IAAI,OAAO,IAAI,eAAe,KAAK,OAAO,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,sDAAsD,aACnE,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,EAC5C,MAAC,eAAe,eACb,MAAM,CAAC,CAAC,CAAC,CACR,cAAK,SAAS,EAAC,yDAAyD,YACtE,KAAC,MAAM,IACL,KAAK,EAAE,GAAG,EACV,kBAAkB,EAAE,kBAAkB,EACtC,KAAK,EACH,IAAI,CAAC,CAAC,CAAC,CACL,cACE,GAAG,EAAE,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,EAClC,GAAG,EAAE,KAAK,EACV,SAAS,EAAC,oEAAoE,GAC9E,CACH,CAAC,CAAC,CAAC,SAAS,GAEf,GACE,CACP,CAAC,CAAC,CAAC,CACF,IAAI,IAAI,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAI,CAC/D,EACA,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,YAAY,IAAC,SAAS,EAAC,gBAAgB,EAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAI,CACpE,CAAC,CAAC,CAAC,CACF,YAAG,SAAS,EAAC,mHAAmH,YAC7H,OAAO,GACN,CACL,EACA,CAAC,MAAM,IAAI,CACV,KAAC,aAAa,IACZ,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,KAAC,gBAAgB,KAAG,EAC1B,QAAQ,EAAE,CAAC,GAAG,IAAI,SAAS,YAE1B,SAAS,GACI,CACjB,IACe,IACd,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalSkeleton.d.ts","sourceRoot":"","sources":["../../../src/web/components/ModalSkeleton.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ModalSkeleton.d.ts","sourceRoot":"","sources":["../../../src/web/components/ModalSkeleton.tsx"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,aAAa,4CAqB5B"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Skeleton } from "./Skeleton.js";
|
|
2
3
|
/**
|
|
3
4
|
* Loading skeleton for the session modal.
|
|
4
5
|
* Shows header + scrollable token rows layout (matches SelectTokenPage).
|
|
5
6
|
* Respects prefers-reduced-motion for accessibility.
|
|
6
7
|
*/
|
|
7
8
|
export function ModalSkeleton() {
|
|
8
|
-
return (_jsxs("div", { className: "daimo-flex daimo-flex-col daimo-flex-1 daimo-min-h-0", children: [_jsx("div", { className: "daimo-flex daimo-items-center daimo-justify-center daimo-h-14 daimo-px-6", children: _jsx(
|
|
9
|
-
backgroundColor: "var(--daimo-skeleton)",
|
|
10
|
-
animationDelay: `${i * 100}ms`,
|
|
11
|
-
} }, i))) })] }));
|
|
9
|
+
return (_jsxs("div", { className: "daimo-flex daimo-flex-col daimo-flex-1 daimo-min-h-0", children: [_jsx("div", { className: "daimo-flex daimo-items-center daimo-justify-center daimo-h-14 daimo-px-6", children: _jsx(Skeleton, { className: "daimo-h-5 daimo-w-32", rounded: "sm" }) }), _jsx("div", { className: "daimo-flex-1 daimo-px-6 daimo-pb-4 daimo-flex daimo-flex-col daimo-gap-3", children: [...Array(11)].map((_, i) => (_jsx(Skeleton, { className: "daimo-h-16", rounded: "lg", delayMs: i * 100 }, i))) })] }));
|
|
12
10
|
}
|
|
13
11
|
//# sourceMappingURL=ModalSkeleton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalSkeleton.js","sourceRoot":"","sources":["../../../src/web/components/ModalSkeleton.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,CACL,eAAK,SAAS,EAAC,sDAAsD,aAEnE,cAAK,SAAS,EAAC,0EAA0E,YACvF,
|
|
1
|
+
{"version":3,"file":"ModalSkeleton.js","sourceRoot":"","sources":["../../../src/web/components/ModalSkeleton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,CACL,eAAK,SAAS,EAAC,sDAAsD,aAEnE,cAAK,SAAS,EAAC,0EAA0E,YACvF,KAAC,QAAQ,IAAC,SAAS,EAAC,sBAAsB,EAAC,OAAO,EAAC,IAAI,GAAG,GACtD,EAGN,cAAK,SAAS,EAAC,0EAA0E,YACtF,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5B,KAAC,QAAQ,IAEP,SAAS,EAAC,YAAY,EACtB,OAAO,EAAC,IAAI,EACZ,OAAO,EAAE,CAAC,GAAG,GAAG,IAHX,CAAC,CAIN,CACH,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectTokenPage.d.ts","sourceRoot":"","sources":["../../../src/web/components/SelectTokenPage.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"SelectTokenPage.d.ts","sourceRoot":"","sources":["../../../src/web/components/SelectTokenPage.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAchF,KAAK,oBAAoB,GAAG;IAC1B,+CAA+C;IAC/C,OAAO,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC;IACtC;;;OAGG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB,qCAAqC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAChD,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,mDAAmD;AACnD,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,YAAY,EACZ,SAAiB,EACjB,aAAkB,EAClB,QAAQ,EACR,MAAM,EACN,OAAO,EACP,SAAS,GACV,EAAE,oBAAoB,2CA0EtB"}
|
|
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { getChainName } from "../../common/chain.js";
|
|
3
3
|
import { t } from "../hooks/locale.js";
|
|
4
4
|
import { ContactSupportButton, LIST_ROW_CLASS, ListRow, PageHeader, ScrollContent, TokenIconWithChainBadge, useScrollBorder, } from "./shared.js";
|
|
5
|
+
import { Skeleton } from "./Skeleton.js";
|
|
5
6
|
/** Token selection page for wallet payment flow */
|
|
6
7
|
export function SelectTokenPage({ options, showRequired, isLoading = false, skeletonCount = 11, onSelect, onBack, baseUrl, sessionId, }) {
|
|
7
8
|
const { scrolled, atBottom, onScroll } = useScrollBorder();
|
|
@@ -15,8 +16,7 @@ export function SelectTokenPage({ options, showRequired, isLoading = false, skel
|
|
|
15
16
|
}
|
|
16
17
|
/** Skeleton loading row - matches TokenRow dimensions with token + chain badge */
|
|
17
18
|
function SkeletonRow() {
|
|
18
|
-
return (_jsxs("div", { className:
|
|
19
|
-
backgroundColor: "var(--daimo-skeleton)",
|
|
19
|
+
return (_jsxs("div", { className: LIST_ROW_CLASS, children: [_jsxs("div", { className: "daimo-flex-1 daimo-min-w-0 daimo-mr-3", children: [_jsx(Skeleton, { className: "daimo-h-5 daimo-w-48 daimo-rounded daimo-mb-2", rounded: "sm" }), _jsx(Skeleton, { className: "daimo-h-4 daimo-w-32 daimo-rounded", rounded: "sm" })] }), _jsxs("div", { className: "daimo-relative daimo-w-8 daimo-h-8 daimo-shrink-0", children: [_jsx(Skeleton, { className: "daimo-w-8 daimo-h-8 daimo-rounded-full", rounded: "full" }), _jsx(Skeleton, { className: "daimo-absolute -daimo-bottom-0.5 -daimo-right-0.5 daimo-w-[15px] daimo-h-[15px] daimo-rounded-full", rounded: "full", style: {
|
|
20
20
|
border: "1px solid var(--daimo-surface-secondary)",
|
|
21
21
|
} })] })] }));
|
|
22
22
|
}
|
|
@@ -24,7 +24,7 @@ function SkeletonRow() {
|
|
|
24
24
|
* Token option row - 64px height, matching ChooseOptionPage row style.
|
|
25
25
|
* Shows "$X TOKEN on Chain" with "Y TOKEN" subtitle.
|
|
26
26
|
*/
|
|
27
|
-
function TokenRow({ option, showRequired = false, onSelect, disabled = false, baseUrl }) {
|
|
27
|
+
function TokenRow({ option, showRequired = false, onSelect, disabled = false, baseUrl, }) {
|
|
28
28
|
const display = showRequired ? option.required : option.balance;
|
|
29
29
|
const chainName = getChainName(display.token.chainId);
|
|
30
30
|
const tokenAmount = formatTokenAmount(display.amount, display.token);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectTokenPage.js","sourceRoot":"","sources":["../../../src/web/components/SelectTokenPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AACvC,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,OAAO,EACP,UAAU,EACV,aAAa,EACb,uBAAuB,EACvB,eAAe,GAChB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"SelectTokenPage.js","sourceRoot":"","sources":["../../../src/web/components/SelectTokenPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CSSProperties } from "react";
|
|
2
|
+
type SkeletonRadius = "sm" | "md" | "lg" | "full";
|
|
3
|
+
type SkeletonProps = {
|
|
4
|
+
className?: string;
|
|
5
|
+
rounded?: SkeletonRadius;
|
|
6
|
+
delayMs?: number;
|
|
7
|
+
style?: CSSProperties;
|
|
8
|
+
};
|
|
9
|
+
type SkeletonTextProps = {
|
|
10
|
+
lines?: number;
|
|
11
|
+
widths?: string[];
|
|
12
|
+
className?: string;
|
|
13
|
+
};
|
|
14
|
+
/** Theme-aware loading placeholder with reduced-motion support. */
|
|
15
|
+
export declare function Skeleton({ className, rounded, delayMs, style, }: SkeletonProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
/** Stacked text-line skeleton for descriptions and loading messages. */
|
|
17
|
+
export declare function SkeletonText({ lines, widths, className, }: SkeletonTextProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=Skeleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Skeleton.d.ts","sourceRoot":"","sources":["../../../src/web/components/Skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,KAAK,cAAc,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAElD,KAAK,aAAa,GAAG;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AASF,mEAAmE;AACnE,wBAAgB,QAAQ,CAAC,EACvB,SAAc,EACd,OAAc,EACd,OAAO,EACP,KAAK,GACN,EAAE,aAAa,2CAef;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,EAC3B,KAAS,EACT,MAAuB,EACvB,SAAc,GACf,EAAE,iBAAiB,2CAgBnB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
const RADIUS_CLASS = {
|
|
3
|
+
sm: "daimo-rounded",
|
|
4
|
+
md: "daimo-rounded-[var(--daimo-radius-md)]",
|
|
5
|
+
lg: "daimo-rounded-[var(--daimo-radius-lg)]",
|
|
6
|
+
full: "daimo-rounded-full",
|
|
7
|
+
};
|
|
8
|
+
/** Theme-aware loading placeholder with reduced-motion support. */
|
|
9
|
+
export function Skeleton({ className = "", rounded = "md", delayMs, style, }) {
|
|
10
|
+
const animationStyle = delayMs == null ? undefined : { animationDelay: `${delayMs}ms` };
|
|
11
|
+
return (_jsx("div", { "aria-hidden": "true", className: `${RADIUS_CLASS[rounded]} motion-safe:daimo-animate-daimo-pulse ${className}`, style: {
|
|
12
|
+
backgroundColor: "var(--daimo-skeleton)",
|
|
13
|
+
...animationStyle,
|
|
14
|
+
...style,
|
|
15
|
+
} }));
|
|
16
|
+
}
|
|
17
|
+
/** Stacked text-line skeleton for descriptions and loading messages. */
|
|
18
|
+
export function SkeletonText({ lines = 2, widths = ["80%", "60%"], className = "", }) {
|
|
19
|
+
return (_jsx("div", { className: `daimo-flex daimo-w-full daimo-flex-col daimo-items-center daimo-gap-2 ${className}`, children: Array.from({ length: lines }).map((_, i) => (_jsx(Skeleton, { className: "daimo-h-4", rounded: "sm", delayMs: i * 100, style: { width: widths[i % widths.length] } }, i))) }));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=Skeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Skeleton.js","sourceRoot":"","sources":["../../../src/web/components/Skeleton.tsx"],"names":[],"mappings":";AAiBA,MAAM,YAAY,GAAmC;IACnD,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,wCAAwC;IAC5C,EAAE,EAAE,wCAAwC;IAC5C,IAAI,EAAE,oBAAoB;CAC3B,CAAC;AAEF,mEAAmE;AACnE,MAAM,UAAU,QAAQ,CAAC,EACvB,SAAS,GAAG,EAAE,EACd,OAAO,GAAG,IAAI,EACd,OAAO,EACP,KAAK,GACS;IACd,MAAM,cAAc,GAClB,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAEnE,OAAO,CACL,6BACc,MAAM,EAClB,SAAS,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,0CAA0C,SAAS,EAAE,EACxF,KAAK,EAAE;YACL,eAAe,EAAE,uBAAuB;YACxC,GAAG,cAAc;YACjB,GAAG,KAAK;SACT,GACD,CACH,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,YAAY,CAAC,EAC3B,KAAK,GAAG,CAAC,EACT,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,EACvB,SAAS,GAAG,EAAE,GACI;IAClB,OAAO,CACL,cACE,SAAS,EAAE,yEAAyE,SAAS,EAAE,YAE9F,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAC3C,KAAC,QAAQ,IAEP,SAAS,EAAC,WAAW,EACrB,OAAO,EAAC,IAAI,EACZ,OAAO,EAAE,CAAC,GAAG,GAAG,EAChB,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAJtC,CAAC,CAKN,CACH,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { NavNodeStripe } from "../api/navTree.js";
|
|
2
|
+
import type { DaimoPlatform } from "../platform.js";
|
|
3
|
+
type StripeOnrampPageProps = {
|
|
4
|
+
node: NavNodeStripe;
|
|
5
|
+
platform: DaimoPlatform;
|
|
6
|
+
amountUsd: number;
|
|
7
|
+
redirectUrl?: string;
|
|
8
|
+
isLoading?: boolean;
|
|
9
|
+
error?: string;
|
|
10
|
+
onBack: () => void;
|
|
11
|
+
onRetry?: () => void;
|
|
12
|
+
baseUrl: string;
|
|
13
|
+
};
|
|
14
|
+
export declare function StripeOnrampPage({ node, platform, amountUsd, redirectUrl, isLoading, error, onBack, onRetry, baseUrl, }: StripeOnrampPageProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=StripeOnrampPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StripeOnrampPage.d.ts","sourceRoot":"","sources":["../../../src/web/components/StripeOnrampPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD,KAAK,qBAAqB,GAAG;IAC3B,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,EACT,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,GACR,EAAE,qBAAqB,2CAyBvB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { t } from "../hooks/locale.js";
|
|
3
|
+
import { ErrorPage } from "./ErrorPage.js";
|
|
4
|
+
import { ExternalPaymentPage } from "./ExternalPaymentPage.js";
|
|
5
|
+
export function StripeOnrampPage({ node, platform, amountUsd, redirectUrl, isLoading, error, onBack, onRetry, baseUrl, }) {
|
|
6
|
+
if (error) {
|
|
7
|
+
return (_jsx(ErrorPage, { message: error, retryText: t.tryAgain, onRetry: onRetry ?? (() => window.location.reload()) }));
|
|
8
|
+
}
|
|
9
|
+
return (_jsx(ExternalPaymentPage, { title: node.title, platform: platform, url: redirectUrl, icon: node.icon, message: `Deposit exactly $${amountUsd.toFixed(2)} with Stripe, then return to this page.`, isLoading: isLoading, onBack: onBack, baseUrl: baseUrl, desktopBehavior: "popup", popupName: "stripe" }));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=StripeOnrampPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StripeOnrampPage.js","sourceRoot":"","sources":["../../../src/web/components/StripeOnrampPage.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAc/D,MAAM,UAAU,gBAAgB,CAAC,EAC/B,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,EACT,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,GACe;IACtB,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,KAAC,SAAS,IACR,OAAO,EAAE,KAAK,EACd,SAAS,EAAE,CAAC,CAAC,QAAQ,EACrB,OAAO,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GACpD,CACH,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,mBAAmB,IAClB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,OAAO,EAAE,oBAAoB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,yCAAyC,EAC1F,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,eAAe,EAAC,OAAO,EACvB,SAAS,EAAC,QAAQ,GAClB,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -8,6 +8,10 @@ export type NativeDisplay = {
|
|
|
8
8
|
kind: "suffix";
|
|
9
9
|
symbol: string;
|
|
10
10
|
};
|
|
11
|
+
export type TokenAmountEntryValue = {
|
|
12
|
+
amountUsd: number;
|
|
13
|
+
nativeAmount: number;
|
|
14
|
+
};
|
|
11
15
|
type TokenAmountEntryProps = {
|
|
12
16
|
/** Destination stablecoin. Supplies default icon, chain badge, FX rate (token.usd). */
|
|
13
17
|
token: DaimoPayToken;
|
|
@@ -22,9 +26,11 @@ type TokenAmountEntryProps = {
|
|
|
22
26
|
/** Initial USD amount (e.g. when resuming a session). */
|
|
23
27
|
initialAmountUsd?: number;
|
|
24
28
|
/** Called when the user confirms (Enter key). */
|
|
25
|
-
onContinue: (
|
|
29
|
+
onContinue: (value: TokenAmountEntryValue) => void;
|
|
26
30
|
/** Called on every change. */
|
|
27
|
-
onChange?: (
|
|
31
|
+
onChange?: (value: TokenAmountEntryValue & {
|
|
32
|
+
isValid: boolean;
|
|
33
|
+
}) => void;
|
|
28
34
|
/**
|
|
29
35
|
* Optional wallet balance. When provided, the footer shows "Balance: …"
|
|
30
36
|
* instead of min/max. Min/max warnings still take priority when the user
|
|
@@ -49,7 +55,7 @@ type TokenAmountEntryProps = {
|
|
|
49
55
|
};
|
|
50
56
|
/**
|
|
51
57
|
* Unified "Enter Amount" card: token icon with chain badge, dual-mode
|
|
52
|
-
* (USD ↔ native) amount input, FX swap arrow, and
|
|
58
|
+
* (USD ↔ native) amount input, FX swap arrow, and conditional helper footer.
|
|
53
59
|
* Used by both the wallet deposit flow and the fiat/account deposit flow.
|
|
54
60
|
*/
|
|
55
61
|
export declare function TokenAmountEntry({ token, minimumUsd, maximumUsd, nativeDisplay, initialMode, initialAmountUsd, onContinue, onChange, balance, showMax, iconLogoURI, iconAlt, badgeLogoURI, badgeAlt, platform, baseUrl, }: TokenAmountEntryProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenAmountEntry.d.ts","sourceRoot":"","sources":["../../../src/web/components/TokenAmountEntry.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"TokenAmountEntry.d.ts","sourceRoot":"","sources":["../../../src/web/components/TokenAmountEntry.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAQ3D,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAI/D,6DAA6D;AAC7D,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,uFAAuF;IACvF,KAAK,EAAE,aAAa,CAAC;IACrB,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,aAAa,EAAE,aAAa,CAAC;IAC7B,2EAA2E;IAC3E,WAAW,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC/B,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iDAAiD;IACjD,UAAU,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACnD,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,GAAG;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACzE;;;;OAIG;IACH,OAAO,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,oEAAoE;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kGAAkG;IAClG,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,UAAU,EACV,UAAU,EACV,aAAa,EACb,WAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,OAAO,EACP,OAAc,EACd,WAAW,EACX,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,OAAO,GACR,EAAE,qBAAqB,2CAyMvB"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useState } from "react";
|
|
3
|
+
import { formatAmountInput, formatFixedAmount, isValidAmountInput, parseDisplayAmount, } from "../formatAmount.js";
|
|
3
4
|
import { t } from "../hooks/locale.js";
|
|
4
5
|
import { isDesktop } from "../platform.js";
|
|
6
|
+
import { SwitchArrowsIcon } from "./icons.js";
|
|
5
7
|
import { TokenIconWithChainBadge } from "./shared.js";
|
|
6
8
|
/**
|
|
7
9
|
* Unified "Enter Amount" card: token icon with chain badge, dual-mode
|
|
8
|
-
* (USD ↔ native) amount input, FX swap arrow, and
|
|
10
|
+
* (USD ↔ native) amount input, FX swap arrow, and conditional helper footer.
|
|
9
11
|
* Used by both the wallet deposit flow and the fiat/account deposit flow.
|
|
10
12
|
*/
|
|
11
13
|
export function TokenAmountEntry({ token, minimumUsd, maximumUsd, nativeDisplay, initialMode = "usd", initialAmountUsd, onContinue, onChange, balance, showMax = true, iconLogoURI, iconAlt, badgeLogoURI, badgeAlt, platform, baseUrl, }) {
|
|
@@ -17,18 +19,33 @@ export function TokenAmountEntry({ token, minimumUsd, maximumUsd, nativeDisplay,
|
|
|
17
19
|
const [nativeStr, setNativeStr] = useState(initialNative);
|
|
18
20
|
const [isEditingUsd, setIsEditingUsd] = useState(initialMode === "usd");
|
|
19
21
|
const amountUsd = parseFloat(usdStr) || 0;
|
|
22
|
+
const nativeAmount = parseFloat(nativeStr) || 0;
|
|
23
|
+
const validationAmountUsd = isEditingUsd
|
|
24
|
+
? amountUsd
|
|
25
|
+
: nativeAmount * token.usd;
|
|
20
26
|
const roundedMaxUsd = parseFloat(roundUsd(maximumUsd));
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
|
|
27
|
+
const maxUsdForValidation = isEditingUsd ? roundedMaxUsd : maximumUsd;
|
|
28
|
+
const isValid = validationAmountUsd >= minimumUsd &&
|
|
29
|
+
validationAmountUsd <= maxUsdForValidation;
|
|
30
|
+
const hasAmount = isEditingUsd ? usdStr !== "" : nativeStr !== "";
|
|
31
|
+
const showMinWarning = hasAmount && validationAmountUsd < minimumUsd;
|
|
32
|
+
const showMaxWarning = hasAmount && validationAmountUsd > maxUsdForValidation;
|
|
33
|
+
const showMaxButton = showMax && showMaxWarning;
|
|
34
|
+
const currentEntryValue = {
|
|
35
|
+
amountUsd: validationAmountUsd,
|
|
36
|
+
nativeAmount,
|
|
37
|
+
};
|
|
24
38
|
useEffect(() => {
|
|
25
|
-
onChange?.(
|
|
26
|
-
|
|
39
|
+
onChange?.({
|
|
40
|
+
amountUsd: validationAmountUsd,
|
|
41
|
+
nativeAmount,
|
|
42
|
+
isValid,
|
|
43
|
+
});
|
|
44
|
+
}, [validationAmountUsd, nativeAmount, isValid, onChange]);
|
|
27
45
|
const handleInputChange = (e) => {
|
|
28
|
-
const value = e.target.value;
|
|
46
|
+
const value = parseDisplayAmount(e.target.value);
|
|
29
47
|
const maxDecimals = isEditingUsd ? 2 : token.displayDecimals;
|
|
30
|
-
|
|
31
|
-
if (value !== "" && !regex.test(value))
|
|
48
|
+
if (!isValidAmountInput(value, maxDecimals))
|
|
32
49
|
return;
|
|
33
50
|
if (isEditingUsd) {
|
|
34
51
|
const newUsd = parseFloat(value) || 0;
|
|
@@ -42,8 +59,9 @@ export function TokenAmountEntry({ token, minimumUsd, maximumUsd, nativeDisplay,
|
|
|
42
59
|
}
|
|
43
60
|
};
|
|
44
61
|
const handleKeyDown = (e) => {
|
|
45
|
-
if (e.key === "Enter" && isValid)
|
|
46
|
-
onContinue(
|
|
62
|
+
if (e.key === "Enter" && isValid) {
|
|
63
|
+
onContinue(currentEntryValue);
|
|
64
|
+
}
|
|
47
65
|
};
|
|
48
66
|
const handleMax = () => {
|
|
49
67
|
const maxUsdStr = roundUsd(maximumUsd);
|
|
@@ -56,9 +74,7 @@ export function TokenAmountEntry({ token, minimumUsd, maximumUsd, nativeDisplay,
|
|
|
56
74
|
// Re-format the side the user just switched away from, so it reads nicely.
|
|
57
75
|
if (nextEditingUsd) {
|
|
58
76
|
const nativeNum = parseFloat(nativeStr) || 0;
|
|
59
|
-
const formatted = nativeNum > 0
|
|
60
|
-
? stripTrailingZeros(roundNative(nativeNum, token))
|
|
61
|
-
: "";
|
|
77
|
+
const formatted = nativeNum > 0 ? stripTrailingZeros(roundNative(nativeNum, token)) : "";
|
|
62
78
|
setNativeStr(formatted);
|
|
63
79
|
}
|
|
64
80
|
else {
|
|
@@ -69,12 +85,17 @@ export function TokenAmountEntry({ token, minimumUsd, maximumUsd, nativeDisplay,
|
|
|
69
85
|
}, [isEditingUsd, nativeStr, usdStr, token]);
|
|
70
86
|
const shouldAutoFocus = isDesktop(platform);
|
|
71
87
|
const currentValue = isEditingUsd ? usdStr : nativeStr;
|
|
72
|
-
const
|
|
88
|
+
const currentDisplayValue = formatAmountInput(currentValue);
|
|
89
|
+
const inputWidth = currentDisplayValue.length === 0
|
|
73
90
|
? "3.55ch"
|
|
74
|
-
: `${Math.min(
|
|
91
|
+
: `${Math.min(currentDisplayValue.length - (currentDisplayValue.match(/\./g) || []).length * 0.55, 12)}ch`;
|
|
75
92
|
// Side decorations: $ prefix for USD mode; nativeDisplay for native mode.
|
|
76
93
|
const showPrefix = isEditingUsd || nativeDisplay.kind === "prefix";
|
|
77
|
-
const prefixText = isEditingUsd
|
|
94
|
+
const prefixText = isEditingUsd
|
|
95
|
+
? "$"
|
|
96
|
+
: nativeDisplay.kind === "prefix"
|
|
97
|
+
? nativeDisplay.symbol
|
|
98
|
+
: "";
|
|
78
99
|
const showSuffix = !isEditingUsd && nativeDisplay.kind === "suffix";
|
|
79
100
|
const suffixText = nativeDisplay.kind === "suffix" ? nativeDisplay.symbol : "";
|
|
80
101
|
const message = buildMessage({
|
|
@@ -93,13 +114,13 @@ export function TokenAmountEntry({ token, minimumUsd, maximumUsd, nativeDisplay,
|
|
|
93
114
|
// Secondary amount for the switch button.
|
|
94
115
|
const secondaryAmount = isEditingUsd
|
|
95
116
|
? formatNative(nativeStr || "0", nativeDisplay)
|
|
96
|
-
: `$${usdStr || roundUsd(0)}`;
|
|
97
|
-
return (_jsxs("div", { className: "daimo-flex daimo-flex-col daimo-items-center", children: [_jsx("div", { className: "daimo-mb-3", children: _jsx(TokenIconWithChainBadge, { token: token, symbol: iconAlt, logoURI: iconLogoURI, size: "lg", badgeLogoURI: badgeLogoURI, badgeAlt: badgeAlt, baseUrl: baseUrl }) }), _jsxs("div", { className: "daimo-flex daimo-items-center daimo-justify-center daimo-gap-2", children: [
|
|
117
|
+
: `$${formatAmountInput(usdStr || roundUsd(0))}`;
|
|
118
|
+
return (_jsxs("div", { className: "daimo-flex daimo-flex-col daimo-items-center", children: [_jsx("div", { className: "daimo-mb-3", children: _jsx(TokenIconWithChainBadge, { token: token, symbol: iconAlt, logoURI: iconLogoURI, size: "lg", badgeLogoURI: badgeLogoURI, badgeAlt: badgeAlt, baseUrl: baseUrl }) }), _jsxs("div", { className: "daimo-flex daimo-items-center daimo-justify-center daimo-gap-2", children: [showMaxButton && (_jsx("span", { className: "daimo-invisible daimo-py-[3px] daimo-px-2 daimo-text-sm", children: t.max })), _jsxs("div", { className: "daimo-flex daimo-items-center daimo-justify-center daimo-gap-1", children: [showPrefix && (_jsx("span", { className: `daimo-text-[24px] daimo-font-semibold daimo-tabular-nums ${currentValue ? "daimo-text-[var(--daimo-text)]" : "daimo-text-[var(--daimo-placeholder)]"}`, children: prefixText })), _jsx("input", { type: "text", inputMode: "decimal", value: currentDisplayValue, onChange: handleInputChange, onKeyDown: handleKeyDown, placeholder: "0.00", className: "daimo-bg-transparent daimo-font-semibold daimo-text-[var(--daimo-text)] daimo-placeholder-[var(--daimo-placeholder)] daimo-outline-none daimo-border-none daimo-shadow-none daimo-caret-[var(--daimo-text-muted)] daimo-tabular-nums daimo-ring-0 focus:daimo-outline-none focus:daimo-ring-0 focus:daimo-border-none focus:daimo-shadow-none", style: {
|
|
98
119
|
width: inputWidth,
|
|
99
120
|
minWidth: "1ch",
|
|
100
121
|
maxWidth: "10ch",
|
|
101
122
|
fontSize: "clamp(16px, 30px, 30px)",
|
|
102
|
-
}, autoFocus: shouldAutoFocus }), showSuffix && (_jsx("span", { className: "daimo-text-base daimo-font-normal daimo-text-[var(--daimo-text-muted)]", children: suffixText }))] }),
|
|
123
|
+
}, autoFocus: shouldAutoFocus }), showSuffix && (_jsx("span", { className: "daimo-text-base daimo-font-normal daimo-text-[var(--daimo-text-muted)]", children: suffixText }))] }), showMaxButton && (_jsx("button", { onClick: handleMax, className: "daimo-py-[3px] daimo-px-2 daimo-text-sm daimo-font-normal daimo-rounded-full daimo-bg-[var(--daimo-surface-secondary)] daimo-text-[var(--daimo-text-secondary)] hover:[@media(hover:hover)]:daimo-bg-[var(--daimo-surface-hover)] daimo-touch-action-manipulation daimo-transition-[background-color] daimo-duration-100 daimo-ease", children: t.max }))] }), !isUsdPegged && (_jsx(SwitchButton, { onClick: handleSwitch, secondaryAmount: secondaryAmount, isEditingUsd: isEditingUsd })), _jsx("p", { className: `${messageColor} daimo-min-h-[21px] daimo-text-base daimo-font-normal daimo-leading-[21px] daimo-tabular-nums daimo-mb-6`, children: message })] }));
|
|
103
124
|
}
|
|
104
125
|
// --- Helpers ---
|
|
105
126
|
function usdToNativeStr(usd, token) {
|
|
@@ -124,14 +145,15 @@ function stripTrailingZeros(val) {
|
|
|
124
145
|
return val.includes(".") ? val.replace(/\.?0+$/, "") : val;
|
|
125
146
|
}
|
|
126
147
|
function formatNative(value, display) {
|
|
148
|
+
const formatted = formatAmountInput(value);
|
|
127
149
|
return display.kind === "prefix"
|
|
128
|
-
? `${display.symbol}${
|
|
129
|
-
: `${
|
|
150
|
+
? `${display.symbol}${formatted}`
|
|
151
|
+
: `${formatted} ${display.symbol}`;
|
|
130
152
|
}
|
|
131
153
|
function buildMessage(args) {
|
|
132
|
-
const { showMinWarning, showMaxWarning, minimumUsd, maximumUsd, isEditingUsd, token, nativeDisplay, balance } = args;
|
|
154
|
+
const { showMinWarning, showMaxWarning, minimumUsd, maximumUsd, isEditingUsd, token, nativeDisplay, balance, } = args;
|
|
133
155
|
const fmt = (usd) => isEditingUsd
|
|
134
|
-
? `$${
|
|
156
|
+
? `$${formatFixedAmount(usd)}`
|
|
135
157
|
: formatNative(usdToNativeStr(usd, token), nativeDisplay);
|
|
136
158
|
if (showMaxWarning)
|
|
137
159
|
return `${t.maximum} ${fmt(maximumUsd)}`;
|
|
@@ -141,17 +163,14 @@ function buildMessage(args) {
|
|
|
141
163
|
if (isEditingUsd) {
|
|
142
164
|
const isUsdPegged = token.fiatISO === "USD";
|
|
143
165
|
return isUsdPegged
|
|
144
|
-
? `${t.balance} $${
|
|
145
|
-
: `${t.balance} $${
|
|
166
|
+
? `${t.balance} $${formatFixedAmount(balance.usd)}`
|
|
167
|
+
: `${t.balance} $${formatFixedAmount(balance.usd)} ${token.symbol}`;
|
|
146
168
|
}
|
|
147
169
|
return `${t.balance} ${formatNative(roundNative(balance.nativeAmountUnits, token), nativeDisplay)}`;
|
|
148
170
|
}
|
|
149
|
-
return
|
|
171
|
+
return "";
|
|
150
172
|
}
|
|
151
173
|
function SwitchButton({ onClick, secondaryAmount, isEditingUsd, }) {
|
|
152
|
-
return (_jsxs("button", { onClick: onClick, className: "daimo-flex daimo-items-center daimo-gap-1 daimo-py-3 daimo-px-4 hover:[@media(hover:hover)]:daimo-opacity-70 active:daimo-opacity-50 daimo-touch-action-manipulation daimo-transition-opacity daimo-duration-150 daimo-ease", children: [_jsx(
|
|
153
|
-
transform: isEditingUsd ? "scaleY(1)" : "scaleY(-1)",
|
|
154
|
-
transition: "transform 0.2s ease-in-out",
|
|
155
|
-
}, 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" }) }), _jsx("span", { className: "daimo-text-base daimo-font-normal daimo-leading-[21px] daimo-text-[var(--daimo-text-secondary)] daimo-tabular-nums", children: secondaryAmount })] }));
|
|
174
|
+
return (_jsxs("button", { onClick: onClick, className: "daimo-flex daimo-items-center daimo-gap-1 daimo-py-3 daimo-px-4 hover:[@media(hover:hover)]:daimo-opacity-70 active:daimo-opacity-50 daimo-touch-action-manipulation daimo-transition-opacity daimo-duration-150 daimo-ease", children: [_jsx(SwitchArrowsIcon, { flipY: !isEditingUsd, animated: true }), _jsx("span", { className: "daimo-text-base daimo-font-normal daimo-leading-[21px] daimo-text-[var(--daimo-text-secondary)] daimo-tabular-nums", children: secondaryAmount })] }));
|
|
156
175
|
}
|
|
157
176
|
//# sourceMappingURL=TokenAmountEntry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenAmountEntry.js","sourceRoot":"","sources":["../../../src/web/components/TokenAmountEntry.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGzD,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAsB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"TokenAmountEntry.js","sourceRoot":"","sources":["../../../src/web/components/TokenAmountEntry.tsx"],"names":[],"mappings":"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"}
|