@daimo/sdk 1.0.0-rc.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 +33 -0
- package/dist/client/createDaimoClient.d.ts.map +1 -0
- package/dist/client/createDaimoClient.js +79 -0
- package/dist/client/createDaimoClient.js.map +1 -0
- package/dist/client/index.d.ts +4 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +2 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/transport.d.ts +15 -0
- package/dist/client/transport.d.ts.map +1 -0
- package/dist/client/transport.js +95 -0
- package/dist/client/transport.js.map +1 -0
- package/dist/common/api.d.ts +184 -0
- package/dist/common/api.d.ts.map +1 -0
- package/dist/common/api.js +40 -0
- package/dist/common/api.js.map +1 -0
- package/dist/common/chain.d.ts +35 -0
- package/dist/common/chain.d.ts.map +1 -0
- package/dist/common/chain.js +198 -0
- package/dist/common/chain.js.map +1 -0
- package/dist/common/errors.d.ts +29 -0
- package/dist/common/errors.d.ts.map +1 -0
- package/dist/common/errors.js +41 -0
- package/dist/common/errors.js.map +1 -0
- package/dist/common/index.d.ts +7 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +7 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/primitives.d.ts +13 -0
- package/dist/common/primitives.d.ts.map +1 -0
- package/dist/common/primitives.js +14 -0
- package/dist/common/primitives.js.map +1 -0
- package/dist/common/session.d.ts +140 -0
- package/dist/common/session.d.ts.map +1 -0
- package/dist/common/session.js +16 -0
- package/dist/common/session.js.map +1 -0
- package/dist/common/token.d.ts +130 -0
- package/dist/common/token.d.ts.map +1 -0
- package/dist/common/token.js +783 -0
- package/dist/common/token.js.map +1 -0
- package/dist/web/api/index.d.ts +3 -0
- package/dist/web/api/index.d.ts.map +1 -0
- package/dist/web/api/index.js +2 -0
- package/dist/web/api/index.js.map +1 -0
- package/dist/web/api/navTree.d.ts +52 -0
- package/dist/web/api/navTree.d.ts.map +1 -0
- package/dist/web/api/navTree.js +2 -0
- package/dist/web/api/navTree.js.map +1 -0
- package/dist/web/api/walletTypes.d.ts +25 -0
- package/dist/web/api/walletTypes.d.ts.map +1 -0
- package/dist/web/api/walletTypes.js +2 -0
- package/dist/web/api/walletTypes.js.map +1 -0
- package/dist/web/components/ChooseOptionPage.d.ts +9 -0
- package/dist/web/components/ChooseOptionPage.d.ts.map +1 -0
- package/dist/web/components/ChooseOptionPage.js +51 -0
- package/dist/web/components/ChooseOptionPage.js.map +1 -0
- package/dist/web/components/ConfirmationPage.d.ts +32 -0
- package/dist/web/components/ConfirmationPage.d.ts.map +1 -0
- package/dist/web/components/ConfirmationPage.js +72 -0
- package/dist/web/components/ConfirmationPage.js.map +1 -0
- package/dist/web/components/ConfirmationSpinner.d.ts +7 -0
- package/dist/web/components/ConfirmationSpinner.d.ts.map +1 -0
- package/dist/web/components/ConfirmationSpinner.js +20 -0
- package/dist/web/components/ConfirmationSpinner.js.map +1 -0
- package/dist/web/components/DaimoModal.d.ts +15 -0
- package/dist/web/components/DaimoModal.d.ts.map +1 -0
- package/dist/web/components/DaimoModal.js +314 -0
- package/dist/web/components/DaimoModal.js.map +1 -0
- package/dist/web/components/DeeplinkPage.d.ts +8 -0
- package/dist/web/components/DeeplinkPage.d.ts.map +1 -0
- package/dist/web/components/DeeplinkPage.js +13 -0
- package/dist/web/components/DeeplinkPage.js.map +1 -0
- package/dist/web/components/ErrorPage.d.ts +29 -0
- package/dist/web/components/ErrorPage.d.ts.map +1 -0
- package/dist/web/components/ErrorPage.js +47 -0
- package/dist/web/components/ErrorPage.js.map +1 -0
- package/dist/web/components/ExchangePage.d.ts +11 -0
- package/dist/web/components/ExchangePage.d.ts.map +1 -0
- package/dist/web/components/ExchangePage.js +13 -0
- package/dist/web/components/ExchangePage.js.map +1 -0
- package/dist/web/components/ExpiredPage.d.ts +9 -0
- package/dist/web/components/ExpiredPage.d.ts.map +1 -0
- package/dist/web/components/ExpiredPage.js +12 -0
- package/dist/web/components/ExpiredPage.js.map +1 -0
- package/dist/web/components/ModalSkeleton.d.ts +7 -0
- package/dist/web/components/ModalSkeleton.d.ts.map +1 -0
- package/dist/web/components/ModalSkeleton.js +13 -0
- package/dist/web/components/ModalSkeleton.js.map +1 -0
- package/dist/web/components/ProgressDots.d.ts +16 -0
- package/dist/web/components/ProgressDots.d.ts.map +1 -0
- package/dist/web/components/ProgressDots.js +55 -0
- package/dist/web/components/ProgressDots.js.map +1 -0
- package/dist/web/components/QRCode.d.ts +7 -0
- package/dist/web/components/QRCode.d.ts.map +1 -0
- package/dist/web/components/QRCode.js +69 -0
- package/dist/web/components/QRCode.js.map +1 -0
- package/dist/web/components/SelectAmountPage.d.ts +21 -0
- package/dist/web/components/SelectAmountPage.d.ts.map +1 -0
- package/dist/web/components/SelectAmountPage.js +27 -0
- package/dist/web/components/SelectAmountPage.js.map +1 -0
- package/dist/web/components/SelectTokenPage.d.ts +14 -0
- package/dist/web/components/SelectTokenPage.d.ts.map +1 -0
- package/dist/web/components/SelectTokenPage.js +71 -0
- package/dist/web/components/SelectTokenPage.js.map +1 -0
- package/dist/web/components/WaitingDepositAddressPage.d.ts +15 -0
- package/dist/web/components/WaitingDepositAddressPage.d.ts.map +1 -0
- package/dist/web/components/WaitingDepositAddressPage.js +126 -0
- package/dist/web/components/WaitingDepositAddressPage.js.map +1 -0
- package/dist/web/components/WalletAmountPage.d.ts +10 -0
- package/dist/web/components/WalletAmountPage.d.ts.map +1 -0
- package/dist/web/components/WalletAmountPage.js +158 -0
- package/dist/web/components/WalletAmountPage.js.map +1 -0
- package/dist/web/components/buttons.d.ts +15 -0
- package/dist/web/components/buttons.d.ts.map +1 -0
- package/dist/web/components/buttons.js +24 -0
- package/dist/web/components/buttons.js.map +1 -0
- package/dist/web/components/containers.d.ts +19 -0
- package/dist/web/components/containers.d.ts.map +1 -0
- package/dist/web/components/containers.js +77 -0
- package/dist/web/components/containers.js.map +1 -0
- package/dist/web/components/icons.d.ts +22 -0
- package/dist/web/components/icons.d.ts.map +1 -0
- package/dist/web/components/icons.js +33 -0
- package/dist/web/components/icons.js.map +1 -0
- package/dist/web/components/shared.d.ts +93 -0
- package/dist/web/components/shared.d.ts.map +1 -0
- package/dist/web/components/shared.js +202 -0
- package/dist/web/components/shared.js.map +1 -0
- package/dist/web/hooks/DaimoClientContext.d.ts +7 -0
- package/dist/web/hooks/DaimoClientContext.d.ts.map +1 -0
- package/dist/web/hooks/DaimoClientContext.js +15 -0
- package/dist/web/hooks/DaimoClientContext.js.map +1 -0
- package/dist/web/hooks/formatUserError.d.ts +3 -0
- package/dist/web/hooks/formatUserError.d.ts.map +1 -0
- package/dist/web/hooks/formatUserError.js +30 -0
- package/dist/web/hooks/formatUserError.js.map +1 -0
- package/dist/web/hooks/locale.d.ts +7 -0
- package/dist/web/hooks/locale.d.ts.map +1 -0
- package/dist/web/hooks/locale.js +15 -0
- package/dist/web/hooks/locale.js.map +1 -0
- package/dist/web/hooks/locales/en.d.ts +60 -0
- package/dist/web/hooks/locales/en.d.ts.map +1 -0
- package/dist/web/hooks/locales/en.js +76 -0
- package/dist/web/hooks/locales/en.js.map +1 -0
- package/dist/web/hooks/locales/es.d.ts +4 -0
- package/dist/web/hooks/locales/es.d.ts.map +1 -0
- package/dist/web/hooks/locales/es.js +60 -0
- package/dist/web/hooks/locales/es.js.map +1 -0
- package/dist/web/hooks/navEvent.d.ts +60 -0
- package/dist/web/hooks/navEvent.d.ts.map +1 -0
- package/dist/web/hooks/navEvent.js +12 -0
- package/dist/web/hooks/navEvent.js.map +1 -0
- package/dist/web/hooks/types.d.ts +72 -0
- package/dist/web/hooks/types.d.ts.map +1 -0
- package/dist/web/hooks/types.js +14 -0
- package/dist/web/hooks/types.js.map +1 -0
- package/dist/web/hooks/useCopyToClipboard.d.ts +6 -0
- package/dist/web/hooks/useCopyToClipboard.d.ts.map +1 -0
- package/dist/web/hooks/useCopyToClipboard.js +20 -0
- package/dist/web/hooks/useCopyToClipboard.js.map +1 -0
- package/dist/web/hooks/usePaymentCallbacks.d.ts +15 -0
- package/dist/web/hooks/usePaymentCallbacks.d.ts.map +1 -0
- package/dist/web/hooks/usePaymentCallbacks.js +27 -0
- package/dist/web/hooks/usePaymentCallbacks.js.map +1 -0
- package/dist/web/hooks/useSessionNav.d.ts +28 -0
- package/dist/web/hooks/useSessionNav.d.ts.map +1 -0
- package/dist/web/hooks/useSessionNav.js +422 -0
- package/dist/web/hooks/useSessionNav.js.map +1 -0
- package/dist/web/hooks/useSessionPolling.d.ts +10 -0
- package/dist/web/hooks/useSessionPolling.d.ts.map +1 -0
- package/dist/web/hooks/useSessionPolling.js +60 -0
- package/dist/web/hooks/useSessionPolling.js.map +1 -0
- package/dist/web/hooks/useWalletFlow.d.ts +22 -0
- package/dist/web/hooks/useWalletFlow.d.ts.map +1 -0
- package/dist/web/hooks/useWalletFlow.js +350 -0
- package/dist/web/hooks/useWalletFlow.js.map +1 -0
- package/dist/web/hooks/walletProvider.d.ts +34 -0
- package/dist/web/hooks/walletProvider.d.ts.map +1 -0
- package/dist/web/hooks/walletProvider.js +14 -0
- package/dist/web/hooks/walletProvider.js.map +1 -0
- package/dist/web/index.d.ts +33 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +30 -0
- package/dist/web/index.js.map +1 -0
- package/dist/web/theme.css +183 -0
- package/package.json +64 -0
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { tron } from "../../common/chain.js";
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
4
|
+
import { formatUserError } from "../hooks/formatUserError.js";
|
|
5
|
+
import { t } from "../hooks/locale.js";
|
|
6
|
+
import { createNavLogger } from "../hooks/navEvent.js";
|
|
7
|
+
import { usePaymentCallbacks } from "../hooks/usePaymentCallbacks.js";
|
|
8
|
+
import { useSessionNav } from "../hooks/useSessionNav.js";
|
|
9
|
+
import { useSessionPolling } from "../hooks/useSessionPolling.js";
|
|
10
|
+
import { useDaimoClient } from "../hooks/DaimoClientContext.js";
|
|
11
|
+
import { findNode, } from "../hooks/types.js";
|
|
12
|
+
import { PrimaryButton } from "./buttons.js";
|
|
13
|
+
import { ChooseOptionPage } from "./ChooseOptionPage.js";
|
|
14
|
+
import { ConfirmationPage } from "./ConfirmationPage.js";
|
|
15
|
+
import { EmbeddedContainer, ModalContainer } from "./containers.js";
|
|
16
|
+
import { DeeplinkPage } from "./DeeplinkPage.js";
|
|
17
|
+
import { ExchangePage } from "./ExchangePage.js";
|
|
18
|
+
import { ExpiredPage } from "./ExpiredPage.js";
|
|
19
|
+
import { SelectAmountPage } from "./SelectAmountPage.js";
|
|
20
|
+
import { SelectTokenPage } from "./SelectTokenPage.js";
|
|
21
|
+
import { ContactSupportButton, ErrorMessage as SharedErrorMessage, } from "./shared.js";
|
|
22
|
+
import { useWalletFlow, isUserRejection } from "../hooks/useWalletFlow.js";
|
|
23
|
+
import { WaitingDepositAddressPage } from "./WaitingDepositAddressPage.js";
|
|
24
|
+
import { WalletAmountPage } from "./WalletAmountPage.js";
|
|
25
|
+
function useModalCloseHandler(sessionId, clientSecret, getNodeCtx, isOpen, setIsOpen, onClose) {
|
|
26
|
+
const client = useDaimoClient();
|
|
27
|
+
const logNavEvent = createNavLogger(client);
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
if (!isOpen)
|
|
30
|
+
return;
|
|
31
|
+
logNavEvent(sessionId, clientSecret, { ...getNodeCtx(), action: "nav_open" });
|
|
32
|
+
}, [isOpen, sessionId, getNodeCtx]);
|
|
33
|
+
const handleClose = useCallback(() => {
|
|
34
|
+
logNavEvent(sessionId, clientSecret, { ...getNodeCtx(), action: "nav_close" });
|
|
35
|
+
setIsOpen(false);
|
|
36
|
+
onClose?.();
|
|
37
|
+
}, [sessionId, clientSecret, getNodeCtx, setIsOpen, onClose]);
|
|
38
|
+
return { handleClose };
|
|
39
|
+
}
|
|
40
|
+
export function DaimoModal(props) {
|
|
41
|
+
const { sessionId, clientSecret, embedded = false, animate = true, defaultOpen = true, maxHeight, } = props;
|
|
42
|
+
const client = useDaimoClient();
|
|
43
|
+
const [session, setSession] = useState(null);
|
|
44
|
+
const [isOpen, setIsOpen] = useState(defaultOpen);
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
client.internal.sessions
|
|
47
|
+
.retrieveWithNav(sessionId)
|
|
48
|
+
.then(({ session: s }) => setSession({ ...s, clientSecret }))
|
|
49
|
+
.catch((err) => console.error("failed to fetch session:", err));
|
|
50
|
+
}, [sessionId, clientSecret]);
|
|
51
|
+
if (!session) {
|
|
52
|
+
if (!isOpen)
|
|
53
|
+
return null;
|
|
54
|
+
const skeleton = _jsx(SkeletonContent, {});
|
|
55
|
+
if (embedded)
|
|
56
|
+
return _jsx(EmbeddedContainer, { children: skeleton });
|
|
57
|
+
return (_jsx(ModalContainer, { animate: animate, maxHeight: maxHeight, children: skeleton }));
|
|
58
|
+
}
|
|
59
|
+
return (_jsx(DaimoModalInner, { ...props, session: session, isOpen: isOpen, setIsOpen: setIsOpen }));
|
|
60
|
+
}
|
|
61
|
+
const CONNECTED_WALLET_NAV = [
|
|
62
|
+
{ type: "ConnectedWallet", id: "ConnectedWallet", title: "Connected Wallet" },
|
|
63
|
+
];
|
|
64
|
+
function DaimoModalInner({ session: initialSession, isOpen, setIsOpen, connectedWalletOnly = false, embedded = false, animate = true, maxHeight, platform, returnUrl, returnLabel, onPaymentStarted, onPaymentCompleted, onOpen, onClose, }) {
|
|
65
|
+
const client = useDaimoClient();
|
|
66
|
+
const effectiveInitial = connectedWalletOnly
|
|
67
|
+
? { ...initialSession, navTree: CONNECTED_WALLET_NAV }
|
|
68
|
+
: initialSession;
|
|
69
|
+
const { session, setSession } = useSessionPolling(effectiveInitial, isOpen);
|
|
70
|
+
// Create EVM payment method on load to get the deposit address
|
|
71
|
+
const [depositAddress, setDepositAddress] = useState(session.paymentMethod?.type === "evm"
|
|
72
|
+
? session.paymentMethod.receiverAddress ?? null
|
|
73
|
+
: null);
|
|
74
|
+
const initRef = useRef(false);
|
|
75
|
+
useEffect(() => {
|
|
76
|
+
if (initRef.current || depositAddress)
|
|
77
|
+
return;
|
|
78
|
+
initRef.current = true;
|
|
79
|
+
client.sessions.paymentMethods
|
|
80
|
+
.create(session.sessionId, {
|
|
81
|
+
clientSecret: session.clientSecret,
|
|
82
|
+
paymentMethod: { type: "evm" },
|
|
83
|
+
})
|
|
84
|
+
.then((result) => {
|
|
85
|
+
const pm = result.session.paymentMethod;
|
|
86
|
+
if (pm?.type === "evm") {
|
|
87
|
+
setDepositAddress(pm.receiverAddress);
|
|
88
|
+
}
|
|
89
|
+
})
|
|
90
|
+
.catch((err) => console.error("failed to init evm payment method:", err));
|
|
91
|
+
}, [session.sessionId, session.clientSecret, depositAddress, client]);
|
|
92
|
+
const nav = useSessionNav(session, setSession, platform);
|
|
93
|
+
const hasConnectedWallet = session.navTree.some((n) => n.type === "ConnectedWallet");
|
|
94
|
+
const walletFlow = useWalletFlow(session.sessionId, depositAddress ?? "", hasConnectedWallet, session.clientSecret);
|
|
95
|
+
const autoNavRef = useRef(null);
|
|
96
|
+
useEffect(() => {
|
|
97
|
+
if (!isOpen)
|
|
98
|
+
return;
|
|
99
|
+
if (nav.topEntry &&
|
|
100
|
+
nav.topEntry.type !== "choose-option" &&
|
|
101
|
+
nav.topEntry.type !== "deeplink") {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const currentNodeId = nav.topEntry?.nodeId;
|
|
105
|
+
let node = currentNodeId
|
|
106
|
+
? findNode(currentNodeId, session.navTree)
|
|
107
|
+
: (session.navTree[0] ?? null);
|
|
108
|
+
let targetId = null;
|
|
109
|
+
while (node?.type === "ChooseOption") {
|
|
110
|
+
const chooseNode = node;
|
|
111
|
+
if (chooseNode.options?.length !== 1)
|
|
112
|
+
break;
|
|
113
|
+
targetId = chooseNode.options[0].id;
|
|
114
|
+
node = findNode(targetId, session.navTree);
|
|
115
|
+
}
|
|
116
|
+
if (!targetId && node && node.type !== "ChooseOption") {
|
|
117
|
+
targetId = node.id;
|
|
118
|
+
}
|
|
119
|
+
if (targetId && autoNavRef.current !== targetId) {
|
|
120
|
+
autoNavRef.current = targetId;
|
|
121
|
+
nav.handleNavigate(targetId, { autoNav: true });
|
|
122
|
+
}
|
|
123
|
+
}, [isOpen, nav, session.navTree]);
|
|
124
|
+
useEffect(() => {
|
|
125
|
+
if (nav.topEntry?.type !== "wallet-connect")
|
|
126
|
+
return;
|
|
127
|
+
if (walletFlow.isConnecting || !walletFlow.wallet)
|
|
128
|
+
return;
|
|
129
|
+
nav.handleWalletConnected();
|
|
130
|
+
}, [nav.topEntry, walletFlow.wallet, walletFlow.isConnecting, nav]);
|
|
131
|
+
const sendingRef = useRef(null);
|
|
132
|
+
useEffect(() => {
|
|
133
|
+
if (nav.topEntry?.type !== "wallet-sending")
|
|
134
|
+
return;
|
|
135
|
+
if (nav.topEntry.txHash || nav.topEntry.error)
|
|
136
|
+
return;
|
|
137
|
+
const sendKey = `${nav.topEntry.nodeId}-${nav.topEntry.amountUsd}`;
|
|
138
|
+
if (sendingRef.current === sendKey)
|
|
139
|
+
return;
|
|
140
|
+
sendingRef.current = sendKey;
|
|
141
|
+
const { token, amountUsd } = nav.topEntry;
|
|
142
|
+
walletFlow
|
|
143
|
+
.sendTransaction(token, amountUsd)
|
|
144
|
+
.then(({ txHash }) => {
|
|
145
|
+
nav.handleWalletTxResult(txHash);
|
|
146
|
+
sendingRef.current = null;
|
|
147
|
+
})
|
|
148
|
+
.catch((err) => {
|
|
149
|
+
sendingRef.current = null;
|
|
150
|
+
if (isUserRejection(err)) {
|
|
151
|
+
nav.handleBack();
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
nav.handleWalletTxResult(undefined, formatUserError(err, t.transactionFailed));
|
|
155
|
+
});
|
|
156
|
+
}, [nav, walletFlow]);
|
|
157
|
+
const { handleClose } = useModalCloseHandler(session.sessionId, session.clientSecret, nav.getNodeCtx, isOpen, setIsOpen, onClose);
|
|
158
|
+
usePaymentCallbacks(session, isOpen, {
|
|
159
|
+
onOpen,
|
|
160
|
+
onPaymentStarted,
|
|
161
|
+
onPaymentCompleted,
|
|
162
|
+
});
|
|
163
|
+
if (!isOpen)
|
|
164
|
+
return null;
|
|
165
|
+
const isTerminal = session.status === "expired" ||
|
|
166
|
+
session.status === "succeeded" ||
|
|
167
|
+
session.status === "bounced";
|
|
168
|
+
const pageKey = isTerminal
|
|
169
|
+
? session.status
|
|
170
|
+
: `${nav.topEntry?.type ?? "root"}-${nav.topEntry?.nodeId ?? ""}`;
|
|
171
|
+
const renderInContainer = (content, showFooterSpacer = true) => {
|
|
172
|
+
const page = (_jsx("div", { className: "daimo-page-enter flex-1 min-h-0 flex flex-col", children: content }, pageKey));
|
|
173
|
+
if (embedded) {
|
|
174
|
+
return (_jsx(EmbeddedContainer, { showFooterSpacer: showFooterSpacer, children: page }));
|
|
175
|
+
}
|
|
176
|
+
return (_jsx(ModalContainer, { showFooterSpacer: showFooterSpacer, onClose: handleClose, animate: animate, pageKey: pageKey, maxHeight: maxHeight, children: page }));
|
|
177
|
+
};
|
|
178
|
+
if (session.status === "expired") {
|
|
179
|
+
return renderInContainer(_jsx(ExpiredPage, { onClose: handleClose }));
|
|
180
|
+
}
|
|
181
|
+
if (session.status === "processing" ||
|
|
182
|
+
session.status === "succeeded" ||
|
|
183
|
+
session.status === "bounced") {
|
|
184
|
+
return renderInContainer(_jsx(ConfirmationPage, { sessionId: session.sessionId, sessionState: session.status, returnUrl: returnUrl, returnLabel: returnLabel }));
|
|
185
|
+
}
|
|
186
|
+
const content = renderEntry(nav.topEntry, {
|
|
187
|
+
session,
|
|
188
|
+
canGoBack: nav.canGoBack,
|
|
189
|
+
onNavigate: nav.handleNavigate,
|
|
190
|
+
onBack: nav.handleBack,
|
|
191
|
+
onAmountContinue: nav.handleAmountContinue,
|
|
192
|
+
onRetry: nav.handleRetry,
|
|
193
|
+
onRefresh: nav.handleRefresh,
|
|
194
|
+
walletFlow,
|
|
195
|
+
onWalletSelectToken: nav.handleWalletSelectToken,
|
|
196
|
+
onWalletSending: nav.handleWalletSending,
|
|
197
|
+
});
|
|
198
|
+
const showFooterSpacer = !(!nav.topEntry ||
|
|
199
|
+
(nav.topEntry.type === "choose-option" && !nav.canGoBack));
|
|
200
|
+
return renderInContainer(content, showFooterSpacer);
|
|
201
|
+
}
|
|
202
|
+
function renderEntry(entry, ctx) {
|
|
203
|
+
if (!entry) {
|
|
204
|
+
const rootNode = ctx.session.navTree[0];
|
|
205
|
+
if (!rootNode)
|
|
206
|
+
return _jsx(LoadingMessage, {});
|
|
207
|
+
if (rootNode.type === "ChooseOption") {
|
|
208
|
+
return (_jsx(ChooseOptionPage, { node: rootNode, onNavigate: ctx.onNavigate, onBack: null }));
|
|
209
|
+
}
|
|
210
|
+
return null;
|
|
211
|
+
}
|
|
212
|
+
switch (entry.type) {
|
|
213
|
+
case "choose-option": {
|
|
214
|
+
const node = findNode(entry.nodeId, ctx.session.navTree);
|
|
215
|
+
if (!node)
|
|
216
|
+
return null;
|
|
217
|
+
return (_jsx(ChooseOptionPage, { node: node, onNavigate: ctx.onNavigate, onBack: ctx.canGoBack ? ctx.onBack : null }));
|
|
218
|
+
}
|
|
219
|
+
case "deeplink": {
|
|
220
|
+
const node = findNode(entry.nodeId, ctx.session.navTree);
|
|
221
|
+
if (!node)
|
|
222
|
+
return null;
|
|
223
|
+
return _jsx(DeeplinkPage, { node: node, onBack: ctx.canGoBack ? ctx.onBack : null });
|
|
224
|
+
}
|
|
225
|
+
case "select-amount":
|
|
226
|
+
return renderSelectAmount(entry, ctx);
|
|
227
|
+
case "waiting-deposit":
|
|
228
|
+
return renderWaitingDeposit(entry, ctx);
|
|
229
|
+
case "waiting-tron":
|
|
230
|
+
return renderWaitingTron(entry, ctx);
|
|
231
|
+
case "exchange-page":
|
|
232
|
+
return renderExchangePage(entry, ctx);
|
|
233
|
+
case "wallet-connect":
|
|
234
|
+
return renderWalletConnect(ctx);
|
|
235
|
+
case "wallet-select-token":
|
|
236
|
+
return renderWalletSelectToken(ctx);
|
|
237
|
+
case "wallet-select-amount":
|
|
238
|
+
return renderWalletSelectAmount(entry, ctx);
|
|
239
|
+
case "wallet-sending":
|
|
240
|
+
return renderWalletSending(entry, ctx);
|
|
241
|
+
default:
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
function renderSelectAmount(entry, ctx) {
|
|
246
|
+
const node = findNode(entry.nodeId, ctx.session.navTree);
|
|
247
|
+
if (!node)
|
|
248
|
+
return null;
|
|
249
|
+
if (entry.flowType === "deposit") {
|
|
250
|
+
const depositNode = node;
|
|
251
|
+
return (_jsx(SelectAmountPage, { node: depositNode, minimumUsd: depositNode.minimumUsd, maximumUsd: depositNode.maximumUsd, tokenSuffix: depositNode.tokenSuffix, chainId: depositNode.chainId, onBack: ctx.canGoBack ? ctx.onBack : undefined, onContinue: ctx.onAmountContinue }));
|
|
252
|
+
}
|
|
253
|
+
if (entry.flowType === "tron") {
|
|
254
|
+
const tronNode = node;
|
|
255
|
+
return (_jsx(SelectAmountPage, { node: { icon: tronNode.icon, title: tronNode.title }, minimumUsd: tronNode.minimumUsd, maximumUsd: tronNode.maximumUsd, tokenSuffix: "USDT", chainId: tron.chainId, onBack: ctx.canGoBack ? ctx.onBack : undefined, onContinue: ctx.onAmountContinue }));
|
|
256
|
+
}
|
|
257
|
+
if (entry.flowType === "exchange") {
|
|
258
|
+
const exchangeNode = node;
|
|
259
|
+
return (_jsx(SelectAmountPage, { node: { icon: exchangeNode.icon, title: exchangeNode.title }, minimumUsd: exchangeNode.minimumUsd, maximumUsd: exchangeNode.maximumUsd, onBack: ctx.canGoBack ? ctx.onBack : undefined, onContinue: ctx.onAmountContinue }));
|
|
260
|
+
}
|
|
261
|
+
return null;
|
|
262
|
+
}
|
|
263
|
+
function renderWaitingDeposit(entry, ctx) {
|
|
264
|
+
const node = findNode(entry.nodeId, ctx.session.navTree);
|
|
265
|
+
if (!node)
|
|
266
|
+
return null;
|
|
267
|
+
const selectedToken = node.tokenSuffix === "USDC" || node.tokenSuffix === "USDT" ? node.tokenSuffix : undefined;
|
|
268
|
+
return _jsx(WaitingDepositAddressPage, { node: node, amountUsd: entry.amountUsd, selectedToken: selectedToken, sessionId: ctx.session.sessionId, clientSecret: ctx.session.clientSecret, onBack: ctx.onBack, onRefresh: ctx.onRefresh });
|
|
269
|
+
}
|
|
270
|
+
function renderWaitingTron(entry, ctx) {
|
|
271
|
+
const node = findNode(entry.nodeId, ctx.session.navTree);
|
|
272
|
+
if (!node)
|
|
273
|
+
return null;
|
|
274
|
+
if (entry.error)
|
|
275
|
+
return _jsx(FlowErrorMessage, { error: entry.error, onBack: ctx.onBack, onRetry: ctx.onRetry });
|
|
276
|
+
return (_jsx(WaitingDepositAddressPage, { node: { type: "DepositAddress", id: entry.nodeId, title: node.title, address: entry.address ?? "", chainId: tron.chainId, icon: node.icon, minimumUsd: node.minimumUsd, maximumUsd: node.maximumUsd, expiresAt: entry.expiresAt ?? 0, tokenSuffix: "USDT" }, amountUsd: entry.amountUsd, selectedToken: "USDT", loading: !entry.address, sessionId: ctx.session.sessionId, clientSecret: ctx.session.clientSecret, onBack: ctx.onBack, onRefresh: ctx.onRetry }));
|
|
277
|
+
}
|
|
278
|
+
function renderExchangePage(entry, ctx) {
|
|
279
|
+
const node = findNode(entry.nodeId, ctx.session.navTree);
|
|
280
|
+
if (!node)
|
|
281
|
+
return null;
|
|
282
|
+
if (entry.error)
|
|
283
|
+
return _jsx(FlowErrorMessage, { error: entry.error, onBack: ctx.onBack, onRetry: ctx.onRetry });
|
|
284
|
+
return _jsx(ExchangePage, { node: node, exchangeUrl: entry.exchangeUrl, waitingMessage: entry.waitingMessage, isLoading: !entry.exchangeUrl, onBack: ctx.onBack });
|
|
285
|
+
}
|
|
286
|
+
function renderWalletConnect(ctx) {
|
|
287
|
+
const { walletFlow } = ctx;
|
|
288
|
+
if (walletFlow.isConnecting)
|
|
289
|
+
return _jsx(LoadingMessage, {});
|
|
290
|
+
return (_jsxs("div", { className: "flex flex-col items-center justify-center flex-1 gap-6 p-6", children: [_jsx(PrimaryButton, { onClick: walletFlow.connect, children: t.connectWallet }), walletFlow.connectError && _jsx(SharedErrorMessage, { message: walletFlow.connectError }), _jsx(ContactSupportButton, { subject: "Wallet connection", info: { sessionId: ctx.session.sessionId, error: walletFlow.connectError ?? t.walletUnavailable } })] }));
|
|
291
|
+
}
|
|
292
|
+
function renderWalletSelectToken(ctx) {
|
|
293
|
+
return _jsx(SelectTokenPage, { options: ctx.walletFlow.balances, isLoading: ctx.walletFlow.isLoadingBalances, onSelect: ctx.onWalletSelectToken });
|
|
294
|
+
}
|
|
295
|
+
function renderWalletSelectAmount(entry, ctx) {
|
|
296
|
+
return _jsx(WalletAmountPage, { token: entry.token, onBack: ctx.onBack, onContinue: (amountUsd) => ctx.onWalletSending(entry.token, amountUsd) });
|
|
297
|
+
}
|
|
298
|
+
function renderWalletSending(entry, ctx) {
|
|
299
|
+
if (entry.error)
|
|
300
|
+
return _jsx(FlowErrorMessage, { error: entry.error, onBack: ctx.onBack, onRetry: ctx.onBack });
|
|
301
|
+
return (_jsx(ConfirmationPage, { sessionId: ctx.session.sessionId, sourceChainId: entry.token.balance.token.chainId, sourceTokenSymbol: entry.token.balance.token.symbol, sourceTokenLogoURI: entry.token.balance.token.logoURI, sourceAmountUsd: entry.amountUsd, pendingTxHash: entry.txHash, onBack: !entry.txHash ? ctx.onBack : undefined }));
|
|
302
|
+
}
|
|
303
|
+
function LoadingMessage() {
|
|
304
|
+
return (_jsx("div", { className: "flex items-center justify-center h-full text-[var(--daimo-text-muted)]", children: t.loading }));
|
|
305
|
+
}
|
|
306
|
+
function FlowErrorMessage({ error, onBack, onRetry }) {
|
|
307
|
+
return (_jsxs("div", { className: "flex flex-col items-center justify-center h-full gap-4 text-[var(--daimo-text-muted)]", children: [_jsx("p", { children: error }), _jsxs("div", { className: "flex gap-2", children: [_jsx("button", { className: "px-4 py-2 rounded-lg bg-[var(--daimo-surface)] hover:bg-[var(--daimo-surface-hover)] transition-colors", onClick: onBack, children: t.back }), _jsx("button", { className: "px-4 py-2 rounded-lg bg-[var(--daimo-primary)] text-white hover:opacity-90 transition-opacity", onClick: onRetry, children: t.tryAgain })] })] }));
|
|
308
|
+
}
|
|
309
|
+
function SkeletonContent({ rowCount = 4 }) {
|
|
310
|
+
const skeletonBg = "var(--daimo-skeleton, #e5e7eb)";
|
|
311
|
+
const radiusLg = "var(--daimo-radius-lg, 16px)";
|
|
312
|
+
return (_jsxs("div", { className: "flex flex-col", children: [_jsx("div", { className: "flex items-center justify-center p-6", children: _jsx("div", { className: "h-5 w-32 rounded animate-pulse", style: { backgroundColor: skeletonBg } }) }), _jsx("div", { className: "px-6 pb-4 flex flex-col gap-3", children: [...Array(rowCount)].map((_, i) => (_jsx("div", { className: "h-16 animate-pulse", style: { backgroundColor: skeletonBg, borderRadius: radiusLg, animationDelay: `${i * 100}ms` } }, i))) }), _jsx("div", { className: "py-4 text-center", children: _jsx("span", { className: "inline-block h-4 w-28 rounded animate-pulse", style: { backgroundColor: skeletonBg } }) })] }));
|
|
313
|
+
}
|
|
314
|
+
//# sourceMappingURL=DaimoModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DaimoModal.js","sourceRoot":"","sources":["../../../src/web/components/DaimoModal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { NavNodeDeeplink } from "../api/navTree.js";
|
|
2
|
+
type DeeplinkPageProps = {
|
|
3
|
+
node: NavNodeDeeplink;
|
|
4
|
+
onBack: (() => void) | null;
|
|
5
|
+
};
|
|
6
|
+
export declare function DeeplinkPage({ node, onBack }: DeeplinkPageProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=DeeplinkPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeeplinkPage.d.ts","sourceRoot":"","sources":["../../../src/web/components/DeeplinkPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAMzD,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,iBAAiB,2CAqB/D"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ExternalLinkIcon, PrimaryButton } from "./buttons.js";
|
|
3
|
+
import { t } from "../hooks/locale.js";
|
|
4
|
+
import { PageContent, PageHeader, PageLogo } from "./shared.js";
|
|
5
|
+
export function DeeplinkPage({ node, onBack }) {
|
|
6
|
+
const openDeeplink = () => {
|
|
7
|
+
if (node.url) {
|
|
8
|
+
window.open(node.url, "_blank");
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
return (_jsxs("div", { className: "flex flex-col flex-1 min-h-0", children: [_jsx(PageHeader, { title: node.title, onBack: onBack ?? undefined }), _jsxs(PageContent, { children: [node.icon && _jsx(PageLogo, { icon: node.icon, alt: node.title }), _jsxs("p", { className: "text-[var(--daimo-text-secondary)] text-center max-w-xs", children: [t.continueIn, " ", node.title, " ", t.toCompleteYourPayment] }), _jsxs(PrimaryButton, { onClick: openDeeplink, icon: _jsx(ExternalLinkIcon, {}), children: [t.openIn, " ", node.title] })] })] }));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=DeeplinkPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeeplinkPage.js","sourceRoot":"","sources":["../../../src/web/components/DeeplinkPage.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAOhE,MAAM,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAqB;IAC9D,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,8BAA8B,aAC3C,KAAC,UAAU,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,SAAS,GAAI,EAC9D,MAAC,WAAW,eACT,IAAI,CAAC,IAAI,IAAI,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,GAAI,EAC5D,aAAG,SAAS,EAAC,yDAAyD,aACnE,CAAC,CAAC,UAAU,OAAG,IAAI,CAAC,KAAK,OAAG,CAAC,CAAC,qBAAqB,IAClD,EACJ,MAAC,aAAa,IAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,KAAC,gBAAgB,KAAG,aAC7D,CAAC,CAAC,MAAM,OAAG,IAAI,CAAC,KAAK,IACR,IACJ,IACV,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type NavNodeType } from "../hooks/navEvent.js";
|
|
2
|
+
type ErrorPageProps = {
|
|
3
|
+
message: unknown;
|
|
4
|
+
/** Button text, defaults to "Reload" */
|
|
5
|
+
retryText?: string;
|
|
6
|
+
/** Retry callback, defaults to window.location.reload() */
|
|
7
|
+
onRetry?: () => void;
|
|
8
|
+
/** Email subject for support button */
|
|
9
|
+
supportSubject?: string;
|
|
10
|
+
/** Additional info to include in support email */
|
|
11
|
+
supportInfo?: Record<string, string>;
|
|
12
|
+
/** Session ID for event logging (optional) */
|
|
13
|
+
sessionId?: string;
|
|
14
|
+
clientSecret?: string;
|
|
15
|
+
/** Current node context for event logging (optional) */
|
|
16
|
+
nodeId?: string | null;
|
|
17
|
+
nodeType?: NavNodeType | null;
|
|
18
|
+
/** Hide retry button */
|
|
19
|
+
hideRetry?: boolean;
|
|
20
|
+
/** Hide support button */
|
|
21
|
+
hideSupport?: boolean;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Standard error page with icon, message, retry button, and support link.
|
|
25
|
+
* Use for network errors, session creation failures, etc.
|
|
26
|
+
*/
|
|
27
|
+
export declare function ErrorPage({ message, retryText, onRetry, supportSubject, supportInfo, sessionId, clientSecret, nodeId, nodeType, hideRetry, hideSupport, }: ErrorPageProps): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=ErrorPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorPage.d.ts","sourceRoot":"","sources":["../../../src/web/components/ErrorPage.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAYzE,KAAK,cAAc,GAAG;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,wBAAwB;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,SAAoB,EACpB,OAAO,EACP,cAAwB,EACxB,WAAgB,EAChB,SAAS,EACT,YAAiB,EACjB,MAAa,EACb,QAAe,EACf,SAAiB,EACjB,WAAmB,GACpB,EAAE,cAAc,2CAsDhB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo } from "react";
|
|
3
|
+
import { SecondaryButton } from "./buttons.js";
|
|
4
|
+
import { ErrorIcon } from "./icons.js";
|
|
5
|
+
import { useDaimoClient } from "../hooks/DaimoClientContext.js";
|
|
6
|
+
import { t } from "../hooks/locale.js";
|
|
7
|
+
import { createNavLogger } from "../hooks/navEvent.js";
|
|
8
|
+
import { ContactSupportButton, ErrorMessage, PageHeader } from "./shared.js";
|
|
9
|
+
/** Extract a displayable string from any error value. */
|
|
10
|
+
function extractMessage(value) {
|
|
11
|
+
if (typeof value === "string")
|
|
12
|
+
return value;
|
|
13
|
+
if (value && typeof value === "object" && "message" in value) {
|
|
14
|
+
return String(value.message);
|
|
15
|
+
}
|
|
16
|
+
return t.unknownError;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Standard error page with icon, message, retry button, and support link.
|
|
20
|
+
* Use for network errors, session creation failures, etc.
|
|
21
|
+
*/
|
|
22
|
+
export function ErrorPage({ message, retryText = t.reload, onRetry, supportSubject = t.error, supportInfo = {}, sessionId, clientSecret = "", nodeId = null, nodeType = null, hideRetry = false, hideSupport = false, }) {
|
|
23
|
+
const displayMessage = extractMessage(message);
|
|
24
|
+
const client = useDaimoClient();
|
|
25
|
+
const logNavEvent = useMemo(() => createNavLogger(client), [client]);
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
console.error("[ErrorPage]", message);
|
|
28
|
+
if (sessionId == null)
|
|
29
|
+
return;
|
|
30
|
+
logNavEvent(sessionId, clientSecret, {
|
|
31
|
+
nodeId,
|
|
32
|
+
nodeType,
|
|
33
|
+
action: "error_shown",
|
|
34
|
+
error: displayMessage,
|
|
35
|
+
});
|
|
36
|
+
}, [message, sessionId, nodeId, nodeType, displayMessage, logNavEvent]);
|
|
37
|
+
const handleRetry = () => {
|
|
38
|
+
if (onRetry) {
|
|
39
|
+
onRetry();
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
window.location.reload();
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
return (_jsxs("div", { className: "flex flex-col flex-1 min-h-0", children: [_jsx(PageHeader, { title: t.error }), _jsxs("div", { className: "flex-1 flex flex-col items-center justify-center p-6 gap-6", children: [_jsx("div", { className: "w-20 h-20 rounded-full flex items-center justify-center", style: { backgroundColor: "var(--daimo-error-light)" }, children: _jsx(ErrorIcon, {}) }), _jsx(ErrorMessage, { message: displayMessage }), !hideRetry && (_jsx(SecondaryButton, { onClick: handleRetry, children: retryText })), !hideSupport && (_jsx(ContactSupportButton, { subject: supportSubject, info: { error: displayMessage, ...supportInfo } }))] })] }));
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=ErrorPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorPage.js","sourceRoot":"","sources":["../../../src/web/components/ErrorPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAoB,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE7E,yDAAyD;AACzD,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QAC7D,OAAO,MAAM,CAAE,KAA8B,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,CAAC,CAAC,YAAY,CAAC;AACxB,CAAC;AAwBD;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,OAAO,EACP,SAAS,GAAG,CAAC,CAAC,MAAM,EACpB,OAAO,EACP,cAAc,GAAG,CAAC,CAAC,KAAK,EACxB,WAAW,GAAG,EAAE,EAChB,SAAS,EACT,YAAY,GAAG,EAAE,EACjB,MAAM,GAAG,IAAI,EACb,QAAQ,GAAG,IAAI,EACf,SAAS,GAAG,KAAK,EACjB,WAAW,GAAG,KAAK,GACJ;IACf,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAErE,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,SAAS,IAAI,IAAI;YAAE,OAAO;QAC9B,WAAW,CAAC,SAAS,EAAE,YAAY,EAAE;YACnC,MAAM;YACN,QAAQ;YACR,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,cAAc;SACtB,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;IAExE,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACZ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,8BAA8B,aAC3C,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,GAAI,EAC9B,eAAK,SAAS,EAAC,4DAA4D,aAEzE,cACE,SAAS,EAAC,yDAAyD,EACnE,KAAK,EAAE,EAAE,eAAe,EAAE,0BAA0B,EAAE,YAEtD,KAAC,SAAS,KAAG,GACT,EAGN,KAAC,YAAY,IAAC,OAAO,EAAE,cAAc,GAAI,EAGxC,CAAC,SAAS,IAAI,CACb,KAAC,eAAe,IAAC,OAAO,EAAE,WAAW,YAAG,SAAS,GAAmB,CACrE,EAGA,CAAC,WAAW,IAAI,CACf,KAAC,oBAAoB,IACnB,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,GAC/C,CACH,IACG,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { NavNodeExchange } from "../api/navTree.js";
|
|
2
|
+
type ExchangePageProps = {
|
|
3
|
+
node: NavNodeExchange;
|
|
4
|
+
exchangeUrl?: string;
|
|
5
|
+
waitingMessage?: string;
|
|
6
|
+
isLoading?: boolean;
|
|
7
|
+
onBack: () => void;
|
|
8
|
+
};
|
|
9
|
+
export declare function ExchangePage({ node, exchangeUrl, waitingMessage, isLoading, onBack, }: ExchangePageProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=ExchangePage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExchangePage.d.ts","sourceRoot":"","sources":["../../../src/web/components/ExchangePage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAMzD,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,eAAe,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,WAAW,EACX,cAAc,EACd,SAAS,EACT,MAAM,GACP,EAAE,iBAAiB,2CA+BnB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ExternalLinkIcon, PrimaryButton } from "./buttons.js";
|
|
3
|
+
import { t } from "../hooks/locale.js";
|
|
4
|
+
import { PageContent, PageHeader, PageLogo } from "./shared.js";
|
|
5
|
+
export function ExchangePage({ node, exchangeUrl, waitingMessage, isLoading, onBack, }) {
|
|
6
|
+
const openExchange = () => {
|
|
7
|
+
if (exchangeUrl)
|
|
8
|
+
window.open(exchangeUrl, "_blank");
|
|
9
|
+
};
|
|
10
|
+
return (_jsxs("div", { className: "flex flex-col flex-1 min-h-0", children: [_jsx(PageHeader, { title: node.title, onBack: onBack }), _jsxs(PageContent, { children: [node.icon && _jsx(PageLogo, { icon: node.icon, alt: node.title }), isLoading ? (_jsxs("div", { className: "flex flex-col items-center gap-2 max-w-xs w-full", children: [_jsx("div", { className: "h-4 w-4/5 rounded bg-[var(--daimo-surface-secondary)] animate-pulse" }), _jsx("div", { className: "h-4 w-3/5 rounded bg-[var(--daimo-surface-secondary)] animate-pulse" })] })) : (_jsx("p", { className: "text-[var(--daimo-text-secondary)] text-center max-w-xs", children: waitingMessage ||
|
|
11
|
+
`${t.continueTo} ${node.title} ${t.toCompleteYourDeposit}` })), _jsxs(PrimaryButton, { onClick: openExchange, icon: _jsx(ExternalLinkIcon, {}), disabled: isLoading, children: [t.open, " ", node.title] })] })] }));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=ExchangePage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExchangePage.js","sourceRoot":"","sources":["../../../src/web/components/ExchangePage.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAUhE,MAAM,UAAU,YAAY,CAAC,EAC3B,IAAI,EACJ,WAAW,EACX,cAAc,EACd,SAAS,EACT,MAAM,GACY;IAClB,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,WAAW;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,8BAA8B,aAC3C,KAAC,UAAU,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,EACjD,MAAC,WAAW,eACT,IAAI,CAAC,IAAI,IAAI,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,GAAI,EAC3D,SAAS,CAAC,CAAC,CAAC,CACX,eAAK,SAAS,EAAC,kDAAkD,aAC/D,cAAK,SAAS,EAAC,qEAAqE,GAAG,EACvF,cAAK,SAAS,EAAC,qEAAqE,GAAG,IACnF,CACP,CAAC,CAAC,CAAC,CACF,YAAG,SAAS,EAAC,yDAAyD,YACnE,cAAc;4BACb,GAAG,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,qBAAqB,EAAE,GAC1D,CACL,EACD,MAAC,aAAa,IACZ,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,KAAC,gBAAgB,KAAG,EAC1B,QAAQ,EAAE,SAAS,aAElB,CAAC,CAAC,IAAI,OAAG,IAAI,CAAC,KAAK,IACN,IACJ,IACV,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type ExpiredPageProps = {
|
|
2
|
+
onClose?: () => void;
|
|
3
|
+
};
|
|
4
|
+
/**
|
|
5
|
+
* Expired page shown when a payment session times out.
|
|
6
|
+
*/
|
|
7
|
+
export declare function ExpiredPage({ onClose }: ExpiredPageProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=ExpiredPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpiredPage.d.ts","sourceRoot":"","sources":["../../../src/web/components/ExpiredPage.tsx"],"names":[],"mappings":"AAKA,KAAK,gBAAgB,GAAG;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,gBAAgB,2CAoBxD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { SecondaryButton } from "./buttons.js";
|
|
3
|
+
import { ExpiredIcon } from "./icons.js";
|
|
4
|
+
import { t } from "../hooks/locale.js";
|
|
5
|
+
import { PageHeader } from "./shared.js";
|
|
6
|
+
/**
|
|
7
|
+
* Expired page shown when a payment session times out.
|
|
8
|
+
*/
|
|
9
|
+
export function ExpiredPage({ onClose }) {
|
|
10
|
+
return (_jsxs("div", { className: "flex flex-col flex-1 min-h-0", children: [_jsx(PageHeader, { title: t.expired }), _jsxs("div", { className: "flex-1 flex flex-col items-center justify-center p-6 gap-6", children: [_jsx("div", { className: "w-20 h-20 rounded-full flex items-center justify-center", style: { backgroundColor: "var(--daimo-error-light)" }, children: _jsx(ExpiredIcon, {}) }), _jsx("p", { className: "text-[var(--daimo-text-secondary)]", children: t.paymentSessionExpired }), onClose && (_jsx(SecondaryButton, { onClick: onClose, children: t.close }))] })] }));
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=ExpiredPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpiredPage.js","sourceRoot":"","sources":["../../../src/web/components/ExpiredPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAMzC;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAoB;IACvD,OAAO,CACL,eAAK,SAAS,EAAC,8BAA8B,aAC3C,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,OAAO,GAAI,EAChC,eAAK,SAAS,EAAC,4DAA4D,aACzE,cACE,SAAS,EAAC,yDAAyD,EACnE,KAAK,EAAE,EAAE,eAAe,EAAE,0BAA0B,EAAE,YAEtD,KAAC,WAAW,KAAG,GACX,EACN,YAAG,SAAS,EAAC,oCAAoC,YAC9C,CAAC,CAAC,qBAAqB,GACtB,EACH,OAAO,IAAI,CACV,KAAC,eAAe,IAAC,OAAO,EAAE,OAAO,YAAG,CAAC,CAAC,KAAK,GAAmB,CAC/D,IACG,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loading skeleton for the session modal.
|
|
3
|
+
* Shows header + scrollable token rows layout (matches SelectTokenPage).
|
|
4
|
+
* Respects prefers-reduced-motion for accessibility.
|
|
5
|
+
*/
|
|
6
|
+
export declare function ModalSkeleton(): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=ModalSkeleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModalSkeleton.d.ts","sourceRoot":"","sources":["../../../src/web/components/ModalSkeleton.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,aAAa,4CA0B5B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Loading skeleton for the session modal.
|
|
4
|
+
* Shows header + scrollable token rows layout (matches SelectTokenPage).
|
|
5
|
+
* Respects prefers-reduced-motion for accessibility.
|
|
6
|
+
*/
|
|
7
|
+
export function ModalSkeleton() {
|
|
8
|
+
return (_jsxs("div", { className: "flex flex-col flex-1 min-h-0", children: [_jsx("div", { className: "flex items-center justify-center h-14 px-6", children: _jsx("div", { className: "h-5 w-32 rounded motion-safe:animate-pulse", style: { backgroundColor: "var(--daimo-skeleton)" } }) }), _jsx("div", { className: "flex-1 px-6 pb-4 flex flex-col gap-3", children: [...Array(11)].map((_, i) => (_jsx("div", { className: "h-16 rounded-[var(--daimo-radius-lg)] motion-safe:animate-pulse", style: {
|
|
9
|
+
backgroundColor: "var(--daimo-skeleton)",
|
|
10
|
+
animationDelay: `${i * 100}ms`,
|
|
11
|
+
} }, i))) })] }));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=ModalSkeleton.js.map
|
|
@@ -0,0 +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,8BAA8B,aAE3C,cAAK,SAAS,EAAC,4CAA4C,YACzD,cACE,SAAS,EAAC,4CAA4C,EACtD,KAAK,EAAE,EAAE,eAAe,EAAE,uBAAuB,EAAE,GACnD,GACE,EAGN,cAAK,SAAS,EAAC,sCAAsC,YAClD,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5B,cAEE,SAAS,EAAC,iEAAiE,EAC3E,KAAK,EAAE;wBACL,eAAe,EAAE,uBAAuB;wBACxC,cAAc,EAAE,GAAG,CAAC,GAAG,GAAG,IAAI;qBAC/B,IALI,CAAC,CAMN,CACH,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
type ProgressDotsStatus = "confirming" | "processing" | "done" | "refunding";
|
|
2
|
+
type ProgressDotsProps = {
|
|
3
|
+
status: ProgressDotsStatus;
|
|
4
|
+
label: string;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Two-dot progress indicator with connecting line.
|
|
8
|
+
*
|
|
9
|
+
* Confirming: both dots grey (unfilled), line grey
|
|
10
|
+
* Processing: first dot blue, second gray, line gray
|
|
11
|
+
* Done: both dots green, line green
|
|
12
|
+
* Refunding: both dots red, line red
|
|
13
|
+
*/
|
|
14
|
+
export declare function ProgressDots({ status, label }: ProgressDotsProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=ProgressDots.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressDots.d.ts","sourceRoot":"","sources":["../../../src/web/components/ProgressDots.tsx"],"names":[],"mappings":"AAAA,KAAK,kBAAkB,GAAG,YAAY,GAAG,YAAY,GAAG,MAAM,GAAG,WAAW,CAAC;AAE7E,KAAK,iBAAiB,GAAG;IACvB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,iBAAiB,2CAqBhE"}
|