@daimo/pay 1.7.7 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.d.ts +25 -18
- package/build/index.js +953 -602
- package/build/index.js.map +1 -1
- package/package.json +4 -4
package/build/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { ExternalPaymentOptions, assert, assertNotNull, debugJson, supportedChains, ethereum, isCCTPV1Chain, getOrderDestChainId, readDaimoPayOrderID, getChainName, arbitrum as arbitrum$1, base as base$2, blast as blast$1, bsc as bsc$1, linea as linea$1, mantle as mantle$1, optimism as optimism$1, polygon as polygon$1, worldchain as worldchain$1, getAddressContraction,
|
|
2
|
+
import { ExternalPaymentOptions, assert, assertNotNull, debugJson, supportedChains, ethereum, isCCTPV1Chain, getOrderDestChainId, readDaimoPayOrderID, writeDaimoPayOrderID, getChainName, DaimoPayOrderMode, arbitrum as arbitrum$1, base as base$2, blast as blast$1, bsc as bsc$1, linea as linea$1, mantle as mantle$1, optimism as optimism$1, polygon as polygon$1, worldchain as worldchain$1, getAddressContraction, DaimoPayOrderStatusDest, getChainExplorerTxUrl, DaimoPayIntentStatus, retryBackoff, DaimoPayOrderStatusSource, DaimoPayEventType, getDaimoPayOrderView } from '@daimo/pay-common';
|
|
3
3
|
import { Buffer } from 'buffer';
|
|
4
4
|
import React, { useState, useEffect, createContext, useRef, useCallback, useLayoutEffect, useMemo, createElement } from 'react';
|
|
5
5
|
import styled$1, { css, keyframes, ThemeProvider } from 'styled-components';
|
|
@@ -22,7 +22,7 @@ import { WalletSignTransactionError, WalletSendTransactionError } from '@solana/
|
|
|
22
22
|
import { normalize } from 'viem/ens';
|
|
23
23
|
|
|
24
24
|
var name = "@daimo/pay";
|
|
25
|
-
var version = "1.
|
|
25
|
+
var version = "1.8.0";
|
|
26
26
|
var author = "Daimo";
|
|
27
27
|
var homepage = "https://pay.daimo.com";
|
|
28
28
|
var license = "BSD-2-Clause license";
|
|
@@ -45,7 +45,7 @@ var scripts = {
|
|
|
45
45
|
start: "rollup --config rollup.config.js -w",
|
|
46
46
|
dev: "rollup --config rollup.config.js -w",
|
|
47
47
|
build: "rollup --config rollup.config.js",
|
|
48
|
-
lint: "eslint --max-warnings=0"
|
|
48
|
+
lint: "eslint 'src/**/*.{js,jsx,ts,tsx}' --max-warnings=0"
|
|
49
49
|
};
|
|
50
50
|
var keywords = [
|
|
51
51
|
"ens",
|
|
@@ -61,7 +61,7 @@ var keywords = [
|
|
|
61
61
|
"crypto"
|
|
62
62
|
];
|
|
63
63
|
var dependencies = {
|
|
64
|
-
"@daimo/pay-common": "1.
|
|
64
|
+
"@daimo/pay-common": "1.8.0",
|
|
65
65
|
"@rollup/plugin-typescript": "^12.1.2",
|
|
66
66
|
"@solana/wallet-adapter-base": "^0.9.23",
|
|
67
67
|
"@solana/wallet-adapter-react": "^0.15.35",
|
|
@@ -129,7 +129,10 @@ var ROUTES;
|
|
|
129
129
|
ROUTES["SELECT_AMOUNT"] = "daimoPaySelectAmount";
|
|
130
130
|
ROUTES["SELECT_EXTERNAL_AMOUNT"] = "daimoPaySelectExternalAmount";
|
|
131
131
|
ROUTES["SELECT_DEPOSIT_ADDRESS_AMOUNT"] = "daimoPaySelectDepositAddressAmount";
|
|
132
|
+
ROUTES["SELECT_WALLET_AMOUNT"] = "daimoPaySelectWalletAmount";
|
|
133
|
+
ROUTES["SELECT_ZKP2P"] = "daimoPaySelectZKP2P";
|
|
132
134
|
ROUTES["WAITING_EXTERNAL"] = "daimoPayWaitingExternal";
|
|
135
|
+
ROUTES["WAITING_WALLET"] = "daimoPayWaitingWallet";
|
|
133
136
|
ROUTES["SELECT_DEPOSIT_ADDRESS_CHAIN"] = "daimoPaySelectDepositAddressChain";
|
|
134
137
|
ROUTES["WAITING_DEPOSIT_ADDRESS"] = "daimoPayWaitingDepositAddress";
|
|
135
138
|
ROUTES["PAY_WITH_TOKEN"] = "daimoPayPayWithToken";
|
|
@@ -266,6 +269,43 @@ const useConnectCallback = ({ onConnect, onDisconnect, }) => {
|
|
|
266
269
|
});
|
|
267
270
|
};
|
|
268
271
|
|
|
272
|
+
/**
|
|
273
|
+
*
|
|
274
|
+
* IMPORTANT NOTE: This file is a workaround for the following issue:
|
|
275
|
+
*
|
|
276
|
+
* When using rollup with styled-components to build into an ES module, styled components decides to move all of it’s DOM elements into "styled.default" rather than just within "styled"
|
|
277
|
+
*
|
|
278
|
+
* We're unsure as to why this issue occurs, if you have any ideas or a better solution please let us know by opening a discussion on our GitHub repo:
|
|
279
|
+
* https://github.com/family/connectkit/discussions/new
|
|
280
|
+
*
|
|
281
|
+
*/
|
|
282
|
+
var styled = typeof styled$1.div === "function" ? styled$1 : styled$1["default"];
|
|
283
|
+
|
|
284
|
+
styled.div `
|
|
285
|
+
position: relative;
|
|
286
|
+
width: ${({ $width }) => $width + "px" || "100%"};
|
|
287
|
+
height: ${({ $height }) => $height + "px" || "100%"};
|
|
288
|
+
`;
|
|
289
|
+
const Squircle = styled.svg `
|
|
290
|
+
z-index: 1;
|
|
291
|
+
position: relative;
|
|
292
|
+
display: block;
|
|
293
|
+
`;
|
|
294
|
+
styled.div `
|
|
295
|
+
z-index: 2;
|
|
296
|
+
position: absolute;
|
|
297
|
+
inset: 0;
|
|
298
|
+
display: block;
|
|
299
|
+
overflow: hidden;
|
|
300
|
+
svg,
|
|
301
|
+
img {
|
|
302
|
+
display: block;
|
|
303
|
+
position: relative;
|
|
304
|
+
width: 100%;
|
|
305
|
+
height: 100%;
|
|
306
|
+
}
|
|
307
|
+
`;
|
|
308
|
+
|
|
269
309
|
const Mock = ({ ...props }) => (jsxs("svg", { ...props, "aria-hidden": "true", width: "44", height: "44", viewBox: "0 0 44 44", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: {
|
|
270
310
|
background: "linear-gradient(180deg, #8995A9 0%, #424D5F 99.48%)",
|
|
271
311
|
}, children: [jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M20.5611 8.12948C21.0082 7.90729 21.5007 7.79167 22 7.79167C22.4993 7.79167 22.9919 7.90729 23.439 8.12948L23.4408 8.1304L33.0387 12.9293C33.577 13.197 34.031 13.61 34.3478 14.121C34.6649 14.6323 34.833 15.2218 34.8333 15.8234V27.2595C34.833 27.8611 34.6649 28.4511 34.3478 28.9624C34.031 29.4733 33.578 29.8858 33.0398 30.1535L23.4411 34.9528C22.9919 35.1775 22.4963 35.2947 21.994 35.2947C21.4918 35.2947 20.9964 35.1777 20.5472 34.9529L10.9475 30.1531L10.9452 30.1519C10.4071 29.8808 9.95535 29.4646 9.6411 28.9504C9.32739 28.437 9.16312 27.8464 9.16673 27.2448L9.16675 27.2417L10.0004 27.2475H9.16673V27.2448V15.8239C9.16705 15.2223 9.33518 14.6322 9.65222 14.121C9.96906 13.61 10.4221 13.1976 10.9604 12.9298L20.5592 8.1304L20.5611 8.12948ZM21.3031 9.62267L11.8706 14.3389L22 19.4036L32.1294 14.3389L22.697 9.62267C22.4806 9.51531 22.2416 9.45905 22 9.45905C21.7585 9.45905 21.5194 9.51534 21.3031 9.62267ZM10.8341 15.8241C10.8341 15.7785 10.8362 15.733 10.8401 15.6878L21.1663 20.8509V33.3983L11.6955 28.6629C11.4352 28.5315 11.2159 28.3297 11.0638 28.0809C10.9116 27.8318 10.8321 27.5452 10.8341 27.2533L10.8341 27.2475V15.8241ZM22.8337 33.3923L32.2967 28.6608C32.5576 28.5312 32.7772 28.3313 32.9308 28.0836C33.0844 27.836 33.1658 27.5504 33.166 27.259V15.8243C33.1659 15.7786 33.1639 15.7331 33.1599 15.6878L22.8337 20.8509V33.3923Z", fill: "url(#paint0_linear_3546_7073)" }), jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M10.8341 15.8241C10.8341 15.7785 10.8362 15.733 10.8401 15.6878L21.1663 20.8509V33.3983L11.6955 28.6629C11.4352 28.5315 11.2159 28.3297 11.0638 28.0809C10.9116 27.8318 10.8321 27.5452 10.8341 27.2533L10.8341 27.2475V15.8241Z", fill: "url(#paint1_linear_3546_7073)", fillOpacity: "0.3" }), jsxs("defs", { children: [jsxs("linearGradient", { id: "paint0_linear_3546_7073", x1: "22", y1: "7.79167", x2: "22", y2: "35.2947", gradientUnits: "userSpaceOnUse", children: [jsx("stop", { stopColor: "white" }), jsx("stop", { offset: "1", stopColor: "white", stopOpacity: "0.7" })] }), jsxs("linearGradient", { id: "paint1_linear_3546_7073", x1: "22", y1: "7.79167", x2: "22", y2: "35.2947", gradientUnits: "userSpaceOnUse", children: [jsx("stop", { stopColor: "white" }), jsx("stop", { offset: "1", stopColor: "white", stopOpacity: "0.7" })] })] })] }));
|
|
@@ -277,19 +317,30 @@ const MetaMask = ({ background = false, ...props }) => (jsxs("svg", { ...props,
|
|
|
277
317
|
borderRadius: "27.5%",
|
|
278
318
|
}
|
|
279
319
|
: undefined, width: "142", height: "137", viewBox: "0 0 142 137", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsx("path", { fill: "#FF5C16", d: "m132.24 131.751-30.481-9.076-22.986 13.741-16.038-.007-23-13.734-30.467 9.076L0 100.465l9.268-34.723L0 36.385 9.268 0l47.607 28.443h27.757L132.24 0l9.268 36.385-9.268 29.357 9.268 34.723-9.268 31.286Z" }), jsx("path", { fill: "#FF5C16", d: "m9.274 0 47.608 28.463-1.893 19.534L9.274 0Zm30.468 100.478 20.947 15.957-20.947 6.24v-22.197Zm19.273-26.381L54.989 48.01l-25.77 17.74-.014-.007v.013l.08 18.26 10.45-9.918h19.28ZM132.24 0 84.632 28.463l1.887 19.534L132.24 0Zm-30.467 100.478-20.948 15.957 20.948 6.24v-22.197Zm10.529-34.723h.007-.007v-.013l-.006.007-25.77-17.739L82.5 74.097h19.272l10.457 9.917.073-18.259Z" }), jsx("path", { fill: "#E34807", d: "m39.735 122.675-30.467 9.076L0 100.478h39.735v22.197ZM59.008 74.09l5.82 37.714-8.066-20.97-27.49-6.82 10.456-9.923h19.28Zm42.764 48.585 30.468 9.076 9.268-31.273h-39.736v22.197ZM82.5 74.09l-5.82 37.714 8.065-20.97 27.491-6.82-10.463-9.923H82.5Z" }), jsx("path", { fill: "#FF8D5D", d: "m0 100.465 9.268-34.723h19.93l.073 18.266 27.492 6.82 8.065 20.969-4.146 4.618-20.947-15.957H0v.007Zm141.508 0-9.268-34.723h-19.931l-.073 18.266-27.49 6.82-8.066 20.969 4.145 4.618 20.948-15.957h39.735v.007ZM84.632 28.443H56.875L54.99 47.977l9.839 63.8H76.68l9.845-63.8-1.893-19.534Z" }), jsx("path", { fill: "#661800", d: "M9.268 0 0 36.385l9.268 29.357h19.93l25.784-17.745L9.268 0Zm43.98 81.665h-9.029l-4.916 4.819 17.466 4.33-3.521-9.155v.006ZM132.24 0l9.268 36.385-9.268 29.357h-19.931L86.526 47.997 132.24 0ZM88.273 81.665h9.042l4.916 4.825-17.486 4.338 3.528-9.17v.007Zm-9.507 42.305 2.06-7.542-4.146-4.618H64.82l-4.145 4.618 2.059 7.542" }), jsx("path", { fill: "#C0C4CD", d: "M78.766 123.969v12.453H62.735v-12.453h16.03Z" }), jsx("path", { fill: "#E7EBF6", d: "m39.742 122.662 23.006 13.754v-12.453l-2.06-7.541-20.946 6.24Zm62.031 0-23.007 13.754v-12.453l2.06-7.541 20.947 6.24Z" })] }));
|
|
280
|
-
const Coinbase = ({
|
|
320
|
+
const Coinbase = ({ ...props }) => (jsxs("svg", { ...props, width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsx(Squircle, { cx: "10", cy: "10", r: "10", fill: "var(--ck-brand-coinbaseWallet)" }), jsx("rect", { rx: "27%", width: "20", height: "20", fill: "var(--ck-brand-coinbaseWallet)" }), jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M10.0001 17C13.8661 17 17.0001 13.866 17.0001 10C17.0001 6.13401 13.8661 3 10.0001 3C6.13413 3 3.00012 6.13401 3.00012 10C3.00012 13.866 6.13413 17 10.0001 17ZM8.25012 7.71429C7.95427 7.71429 7.71441 7.95414 7.71441 8.25V11.75C7.71441 12.0459 7.95427 12.2857 8.25012 12.2857H11.7501C12.046 12.2857 12.2858 12.0459 12.2858 11.75V8.25C12.2858 7.95414 12.046 7.71429 11.7501 7.71429H8.25012Z", fill: "white" })] }));
|
|
281
321
|
const Family = ({ ...props }) => {
|
|
282
322
|
const img = "data:image/png;base64,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";
|
|
283
|
-
return (jsx("svg", { ...props, width: "
|
|
323
|
+
return (jsx("svg", { ...props, width: "200", height: "200", viewBox: "0 0 200 200", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: {
|
|
284
324
|
backgroundSize: "100% 100%",
|
|
285
325
|
backgroundImage: `url("${img}")`,
|
|
286
326
|
} }));
|
|
287
327
|
};
|
|
288
|
-
const Trust = ({
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
328
|
+
const Trust = ({ background = false, ...props }) => {
|
|
329
|
+
const trust_transparent = "data:image/png;base64,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";
|
|
330
|
+
const trust_white = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAABVcSURBVHgB7V1trKVXVX72e+60FIFONVOYlnTuVFsjxt6q0cS2YcZESvwBBTXEmJQpUX9ZtCaSGCMd8CsYS4nyQyP0C2IUgdiWn9qB0R8aTOgU2xrRlKlBQyIzkPBD2t6zF/tr7Xft9e73vefce+695+tJT9/zfp175zz7WetZa+9zriEHrLG0aLDGUmNN8JJjJQj+1reAr33zZawilpZgT+o/fgH4lfcAN58EfvYz/4xf+v9P4Y+/80+4sP11rAo2sETwpD75OPDJx4BnLsR9xvEjr+Dylf+Hc/YS/mH87zi2/Tpsmevx1o2bcOvoDVhWLDzBQ6RKkG1AMDCNxcboJVymb+AcXXZkP49rX7kat5jrHNk3Lx3ZC0mwJ9ET6okdIlWCrIHdHjmCfVXoqDb+4cg+YnHJk20vB2UvG9kLQ7Ak9fwXMDWIGli7AWMtnJDROILJPdyBSLZT9sg9LsEr+1JU9rYjG9fj9o1N3DG6AYuIuSZ4r6RK2PEoKdj7Skdu4wO2J9j4/5KiW8JHG9uO7EshjD9ln8dVr1yF25qTuL05gTs2TmBRMHcEz5JUiaBgR7KxnkQK20hoS3A4HnY4hCfiHdkvb3zbhfF/C2S/+qWrnLKvw22jk0HZrzFXYF4xFwS/eBH4xGOxrJklqRLeZAWCmcici5t8LIbtRhBMgnjKZL+Eb+OL9BX8i/0vPPDSCLcZp+zRpnucmDuyD43ggyBVggnORCYFkyBvzIQiDgD9PO+nATJqxhhdue3I/g9H9n/igZc38CNO2W8d/SC2muN4Q/MaHDYOlOBA5nkXgh8FLl7EgcIKBY9FCOac64nz6ZngTFiTQjirnDhfC+KtIL3x97rXceXX83QRz9n/hn1lw7nx63Fnc/Ohkr3vBB8mqRI09gRvFCHXsRRMlwmk+jwdQ7YbDQiROm0pbFuy82BwgyMcsyqUh1r7ZTxHX8Wz9sVg7rwbv7M5eGXvC8Ge1CeeAD73+OGSKkFkMPYKRiTNk9s4lsJsqc/D1or8zPuJbG/EPK/BnMX7bSDaFPm5NGc2vVYsv57DRTxLTtnbjSP7jbhz5JTt6u39JntmBDOpXqmTNB4OGmRHTsWjYKJi+G0wti3ZUcmUwrNN5VQ67skLYTrt23QdogMnIwZHJrcJ23YfubESyE7KvhHHgrJvbzb3hWyzlwn/eSdV4roPPYujP/e1YLDQcJiN22C8mriVJkqarEB2US9Tp3aOBg7xdYxV5Ze+HvlnhzaqG4A32mN4y2i2ZE9N8CKRKnH8j57H1e/8n0gchIEqWpfUE3Kpt3TCDsfMANmZaD4PnxFMqNlvtNeGlqkP5T/QfB92ix1DtCfxyxdiSeObD4tEqkSugymFzOSS23DbKpA4f9YI45C+wyCg4nhTEE752iafb8Txxozx4uh/cZG+jsfthdAy9bX2bsgeJPgJR+ivvmdxSZUIkw3jjdY8edV4E+z+5zxQyqNwJZQ4b7oKj52wpjVRkyqfo4UpQz8PLDJlVMml22iMS6PLeJK+6ch+2pF9FB8+8ja83rx2on/3IMFffmY5yPWwLsfZcZPJa9yWknpiX5pJNUJ1cRD4LRlZO5MYBOiQHVUqjjO5VpBnUn0tybaUyzKOKm1ZFmvtb4wuJa8wGZZqwn8IMURvJJU0WbGBjFDHRuVSkRdZqQZlY4TNVpOIZ8eNXFOz487Xi5q6o3BRc8PaXKaRaVMIiVobI8SEPQFWiGCTJxuiwhoVThuhTMoKN6I3LcupQokm1sQh5LvzDaWetpXXi30OyWhJpUbU3DZNgjRpIFkVQUYTsosVIthS26rMSjCkzE37nCp51EuTw2puZRo1aWHlVGSTr4uhNt6PTC6TGhULHgyG1U7QNbUfRdxjmQSro+DUqtR5k1KODGFQ1MDyeeGOidr7Rb+6Sfd0+tjs1E05MLjh0jrsuJ+jhu1GFvYGE7OLlVLwKCmY82zKj0BoJ/r3LudfsklJXpHpfLoOeWuEMXITGFYZqaAy2+1TJ5Vrhz40RamfT4OVIRhpTVZ409MEQyDbk+cMGJsvkxw1yYYINXGWyZpEoimVmZw2l12Rg+TUcxdMEphqbUvKvFXSQoV4Wiu4izBdaL39bNp8GEhqoiKDUoUCuVSxKPMgk5iubw2TKLNS6KV8vSnSQsOh1siGiUlNFlLHy4ERXnAKEa+Qi45rsmSOpExmUzle5sGYlxtRHnGN3JIsO1ayzNJpIdTIHDGyeeL821eW8XXhfxP/u1dIwW660I5KVyvdsM6hVjlrq8NnUw2hJMouqpikfNyWgwCZRNlASYMG5ewWrRVcAfGqSqTwi6IObduQVBgjmsD0DD0fPi8ctEkRIiu77ZHnaMJTlVNgZQgejw1GdiOtzpBNBXTqzJwvuTNlaGIDNHxNcurJvJGa1eLWpJFRQ06I5NbmOkR34U1WcNGC3NxXlvtte7Kx3PGyFSVDhGSxcKCSN5nU2JZMvW5BXiCb2ImLwdF0U0gkeHKsVicruGhCudpCty2VGVJ5sWyUiPN+0KTaONfISOaNBw2v32rQ1siSvPCRCySFizJKmcLwi02IlepkjbdHwgw1g3kRKj9Cm6RKz5oyGbZVJDdQmGw/wGxaD2YUiWGLWIPbclDF3gqtc3AffB2M0Mlq69EhFzxojsRkw9ikPN2Ia6wYFEnJWalpMFhqBw3JueGi1clTlyZFk+i81y66gvjRlQ3IOrNLojBVak1WzqGGFFkU8jf02mmUZVixckT3q1mZQsnx9WtRZrrP7K9UiKYxIKf/gnkC50RKZZOJJFBcBN+ui0YyW2i7XEYMAjl5LwyRnNMtyaNyEmKKCLLOwRV4BdO4VG7OqzwZz21GnoAPykQ0TzxHGxTatLWzkUr1P6ldNF+QZ3cmr/zdqM2/6RMXeRBM8e9eqQl/TzCl5arlUtimDYnZ1cr10KZDXugopTc9h3ebwr8Ir7UyKh637X2m/cwy96Fbok2aF24X2a8VXIN3oS5EI/VzfevSO2BrVDilMszmyXyeuxVbI3rPlMqhdvqPFYeCdF13U3oeu2acQuS93Zp6GqxQqxKB4PgmtdtQdXp1N/GiYo7WVsKnNEam7Vejk0+bti8d1C5Db9O5riUeKRUk15yiR3TiYU0QsO5kdRHqy3GY2g1c50kZfoT3Lio75GOUpierqdKnHiuySedZS72GKTxnZ81TmEy6iB5y1msarFAOjo+U1lpi0SoaSSDhulB7xo8bUGeVZZ9J4nXVw0aKyWtEP9qQShEyUqhZLlrn4C7C+zwuw7NJ71PYNu11TGpYvZOvb9Jxk0jqa5iIQZBKsOh8bTGxECJAp1VJbTnG05Vcpsnrp8Bqmay4lCqgIDkw2Z5DOs7nwmnuLxTKFu3ERGCesGCHncqn4MTDz7ApinCNbFE0RKi9Pw8CI1y8pfWKjhoo5WCZd5PHqj/AoTkNBPY3iNs2j3snHt0vkQzD7QfL+eOqhtuTfNzEEiyaN6h56riENq4N4551ct5rk1VBrFxy2NVkDhENrfK4RCufa3N6CLLCkTexjubcymE7T1kC/LVOUcntB8/5+7zycVk6TYHVc9GsSpQkBch9TbI4R6bN1TIaUDEQYvkVr1flV87VMYQH581Ei1krqG02besQ3QUVjY6kOn6j+FhqEknySV4rTdmEUSByncjm8quhdDzlWb043gw/X4foGlKjg/NnGVrTJVLBJK5Jx7KjRnkvqeemj/COsuOokh9fpR3KLKwV3AN20enNKT4BonIsm6+C0GrOLa+P/eSScHmuG/bjjk1mDaKFyf1qWTvnddFTYOVyMHTIHQivRZ0sGyT6eg8R0jtKVrk9DxwSr59IJiMbKzz7xeEciJOZ6xDdAYkQHfaFEqVKqY9wqCYJYkjPalcdskK5qsYuBpB4vWJgSLLVuuh1iK5BhWgZSvNWOWMPPRA8as0R2Q0rDVb3NY1SOypEl48mmkT+Xq91q7ILoxodpAgoulpiP/BoeojSx2QzRAwINm96YJiegZSJ1gMmRInJyfVYuRAtw6oOqb3nBBGaZPSVU3IQVCJDNd+rc0aIlfQ1E2LlQnQxmaDeVN28kOUU9alZOW/9oMrxPoUWZKPrxkMDDNNhkOATJ7A0MGm6sDe8AtXwXCOtc4/qiPGAkIQFontCNd/blwrKEI2psFIhmraR69+aARoilo9V77Hl/VbdZ00bqmuRQ/+Malkl9jdfh4kxSPDWrVgahDKSXbQMkeKN7lNPXweL7+Fzjekvv5B+XuBZXMOvWRDfY9b8saOvwlQYDtGbWB5wmeQhQmRva9FjaACgrIul0kiXQSR+h6YSIfQ+36PPu2NbxzAVBgk+ejQ+luKrDLnR4aHUobtOrLJaOaPVW1N7X2OjINugINsMEC5D9K3XYirs+DmIpQnTPJsktnmGaVye4+M0Vufl/epB6vWIr7WV+9RxM1Y/z5Y/24j7p8m/HjsSfMsyESwf4s00NdLEcZIkjisDI5FgBDlGE7rdXkeVwcFE8znT87tuTfnH2HYk+O13YTnAITq90VkZWlWKPLKlgoxSVE2hRkYJRSLZlrxahDA9ivf3Hb0COH0SU2HHMmlZQrRc0ZGbHUB/qaRzM5WuODdBON9SvYGh+9jFObWff7f08+Rxv916PabGjgr2JuvUaSw8ZBiUatGhkM9bviYpnpTCzLgb2k1NkZVjRRoQ0cMoD6B/r3t+HFNjR4I93v4OLD44RKvwR2MVRtN+JnrIKMl79fG0tQOEUi1MV3I/D8JT34+pMdHfbPBl0rXXYKExfpN7w65POyr8VluEfWWOh6iPB5foiHt0+1K+Vm0JkFH33vJG4OnfxtSYSMFLEabZyapQXCtTjDZeFWXqezvXVkySPE7SuFnUnbyILPedxq4wEcEeCx+mSTlUHW7Tm0y2rGkzEds9dXElxO6Yf21r+mSq6Aw+cezUTdgVJib47jNRyQsL6smXqmQxclsxQUaRWBgkldutyLWoKNTUjlv1cMfuusU1OHb5l3UmJtiTe/c9WFgYoRzTU7vWGhiySVHcs4PJakT4bjR5tZ9RSwFp/8xPYdeYmGCPRW56EKmwKIijGhGcOwUBvY7XTnCfGkx6gHRcdjp30pnbd/wYdo2pCD51eoHNFnXf6E79OVbq3u7WzYMq3EZvzpXnqG+AVAbP2T16n6n/tJ3/Y85v+WksHOyme/g8pmZnwiYd6yzRqZRRO626gOpY6aW2usSCKolkqXTSzRy98FHsCVMp2GNhVexVQmhVk577h5Umip+PW8XLDlM1vNr+bSNKoU70GJdpwyiDdfbnsWfs6q+PLqKK7Q3ujfzeVqXgrXyujvWtU66ud96hQTLYEAE60WHT9Z1f+AvsGVMr2GMhVWxVs6H2oPK5Vjp6lEbSII3RbWiMK+f6vEB6vbPvwkyw678fvGgqtq5NSdeUqszrodJ+r5qNeCGzw7V6KSwGWqE9it50c74vPISZYFcK9vAKfu99WBxQm0PlN+6QVqlUc6371fPI873b4vm4/JnVLpft1r5nfxEzw57+ArifhLj55GKs2bLH3Rt5dVeteRIgHZeK9oepT63ydQby+DR52j/uuRN4+H2YGXatYA/f3frds1gIGHbQ1LrlrGCV/7Qqg+KEytPXXA2retxzjXLRshN29Crg/rsxU+yJYI9fv29BDJckksp9aZr0AODrq50pSZo2aoQqkbVmBs8/n313zL+zxJ5CNOPFi8BP/Oh8h2o65h5pRWLVVFXCrFyUDqC7ZKfvdYQp63z2t+ee064deW6PTY0a9qxgjxObCxCqqTU9oFK5pkeFnbDMYX2MQu1Szfq1jK08FyoPi+le7fLu72BfMBOCPXyovmue54xFF0s66Zxrdb2rB4C4VhJLtfOKdMicrUJ36Df/sgvNx7EvmEmIZvgQ/ZMuVF+8iLlD6GI5pciO0dRuWT43ZZgu6um+e9C97szbgEc+gH3DTAn2eOZCzMfzBnKOn74n7ag3vphkqJzv3CPPyYYG0PnUPnpe2++fcM2XL/21C9Gvxb5hZiGa4ddRP/ARzB8GyhoOuVQ5VnXfMuRKRyx+BtnuMQh3frUbbOf+cn/J9Zg5wR4+H89dl0uVRsXMksi5csWHJKm2VrlvwEC9TtHpStuHf8/l3euw75h5iJbwvWrfs54HkFMK8Wdra+FYDvVK/pThNz+HyueVa0iFdr9/9tfi4yCwrwTPk+kK+fdVZR1by7mmkj/zVtXIcqDoSYvqJIbD/e915N6LA8O+EuzhmyBeyYdOsnPQdCVKdQEYbHgMmKQhsvsaH2fcBP7DH8KBYt8J9pgLkl2fl64Aas6YBsqZ/KVlQC9xVVeuXm/rh51j/hwOHPtisjR8p+vTfzcH66qFQZJdJSPcrlENDVJNj45Z6ztO7Wve+kPOMf8VDgUHomCGr5G9kg+lZ+3VewTFQrfefnLt2E6huOder9yn/tYN7ik/mT8rHIiCGb5G/vvPu/JgE4cCkuVLRXlFnavaj32lEGptyfR8602HS67HgSqYcSg52akXo8naiTupuVoyKVWfuh347COHS67HgSqY4XPygStZ5dhahwk9iuxcW5llIvH8zLuccj97+OR6HArBHkzygX1FhCZzjKJzRZV24uAAkK1Kfg33/P73AQ/9GeYGh0awB5N8IG1NRRhqPeIeFecVHLV+tjj24B9GgucJh5KDa/j9D7jHB7Gv0M65NsMjmx997UmecuTn/ktbH/pzl3fvwNxhbgj2ePJx4Ld+cx/NlyeF4taIY0Vny0P3pdGdQ+ZzW1vAZ/7G+YkbMJeYK4I99s1hm5bfwcvMDi1MsX+v6yk/+CeYaxxqDq7B5+WvfBV4/1nMFiRmfNQ2n/DXyLneHpPl3fGnPzX/5HrMnYIlZh6yRYiunrPiXO06E5cIf+yhw2vWTIu5U7CE/+IX77LffQ/2jo5sUSg3E8rbprz8GtdH//CD7vd5anHI9ZhrBUt84lHgDz64RzVzHhbJOORc2zrk4s1IO6ecJ/jYw4tFLGOuFSzhVfzFp/deMweBUnmgsyIj4eg1wMcfdao9t5jkeiyMgiW80/6Fd8bZqWkQiBS5VadYacLu/Y1o9Bb6q6OwQAqW8E77X52aP/7IFMoy3RKploJPnXKR4ksu335k8cn1WEiCGT5s+5JqYqKpDcHSLHt4Yn0oPtD++AFgIUN0DT5seyP2ycd6jFgtHqey5/33A28+jaXE0hDM8ET7+vmjf9olWubgZSc2g5YYjz1CdNMm0RG0j585TXT+87QyWDoF1+AVff58/PTjm09hpbASBK8yvgsgymAUHS6wnAAAAABJRU5ErkJggg==";
|
|
331
|
+
return (jsx("svg", { ...props, xmlns: "http://www.w3.org/2000/svg", width: "120", height: "120", fill: "none", viewBox: "0 0 120 120", style: {
|
|
332
|
+
backgroundSize: "100% 100%",
|
|
333
|
+
backgroundImage: background
|
|
334
|
+
? `url("${trust_white}")`
|
|
335
|
+
: `url("${trust_transparent}")`,
|
|
336
|
+
borderRadius: "22.5%",
|
|
337
|
+
}, children: jsx(Fragment, {}) }));
|
|
338
|
+
};
|
|
339
|
+
const WalletIcon$2 = ({ inverted = false }) => (jsxs("svg", { width: "58", height: "50", viewBox: "0 0 58 50", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M57.9332 20.3335V42.1113C57.9332 46.4069 54.451 49.8891 50.1555 49.8891H8.15546C3.85991 49.8891 0.377686 46.4069 0.377686 42.1113V25.0002V7.8891C0.377686 3.59355 3.85991 0.111328 8.15546 0.111328H47.0444C48.7626 0.111328 50.1555 1.50422 50.1555 3.22244C50.1555 4.94066 48.7626 6.33355 47.0443 6.33355H9.71102C7.9928 6.33355 6.59991 7.72644 6.59991 9.44466C6.59991 11.1629 7.9928 12.5558 9.71102 12.5558H50.1555C54.451 12.5558 57.9332 16.038 57.9332 20.3335ZM46.2667 34.3337C48.4145 34.3337 50.1556 32.5926 50.1556 30.4448C50.1556 28.297 48.4145 26.5559 46.2667 26.5559C44.1189 26.5559 42.3778 28.297 42.3778 30.4448C42.3778 32.5926 44.1189 34.3337 46.2667 34.3337Z", fill: inverted
|
|
340
|
+
? "var(--ck-graphic-primary-color, var(--ck-body-background))"
|
|
341
|
+
: "var(--ck-graphic-primary-color, var(--ck-body-color))" }), jsx("defs", { children: jsxs("linearGradient", { id: "paint0_linear_2501_7732", x1: "29.1555", y1: "0.111328", x2: "29.1555", y2: "49.8891", gradientUnits: "userSpaceOnUse", children: [jsx("stop", { stopColor: inverted
|
|
342
|
+
? "var(--ck-body-color-muted)"
|
|
343
|
+
: "var(--ck-body-background-transparent, transparent)" }), jsx("stop", { offset: "1", stopColor: inverted ? "var(--ck-body-color)" : "var(--ck-body-background)" })] }) })] }));
|
|
293
344
|
const Argent = ({ ...props }) => (jsxs("svg", { ...props, width: "32", height: "32", viewBox: "0 0 32 32", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsx("rect", { width: "32", height: "32", fill: "white" }), jsx("path", { d: "M18.3242 7.63647H13.6516C13.4955 7.63647 13.3704 7.76611 13.367 7.92726C13.2726 12.4568 10.9768 16.7559 7.02532 19.8009C6.89986 19.8976 6.87128 20.0792 6.963 20.21L9.69685 24.112C9.78986 24.2448 9.97107 24.2747 10.0986 24.1772C12.5694 22.2856 14.5567 20.0038 15.9879 17.4746C17.4191 20.0038 19.4065 22.2856 21.8773 24.1772C22.0047 24.2747 22.186 24.2448 22.2791 24.112L25.013 20.21C25.1045 20.0792 25.0759 19.8976 24.9506 19.8009C20.999 16.7559 18.7033 12.4568 18.609 7.92726C18.6056 7.76611 18.4803 7.63647 18.3242 7.63647Z", fill: "var(--ck-brand-argent)" })] }));
|
|
294
345
|
const ImToken = ({ ...props }) => (jsx("svg", { ...props, width: "32", height: "32", viewBox: "0 0 32 32", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: {
|
|
295
346
|
background: `linear-gradient(
|
|
@@ -320,7 +371,7 @@ const Frontier = ({ ...props }) => (jsx("svg", { ...props, width: "88", height:
|
|
|
320
371
|
const Zerion = ({ ...props }) => (jsxs("svg", { ...props, width: "88", height: "88", viewBox: "0 0 88 88", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: {
|
|
321
372
|
background: "linear-gradient(120.22deg, #2962EF 0%, #255CE5 100%)",
|
|
322
373
|
}, children: [jsx("path", { d: "M19.0864 22C17.5783 22 16.9973 23.8648 18.2628 24.6438L49.9199 43.732C50.709 44.2178 51.7614 44.0258 52.3048 43.2969L66.2236 25.024C67.17 23.7545 66.2138 22 64.5757 22H19.0864Z", fill: "white" }), jsx("path", { d: "M68.8425 66C70.3503 66 70.9466 64.1252 69.6814 63.3464L38.015 44.2605C37.2259 43.7748 36.1989 43.991 35.6558 44.7198L21.7099 62.9891C20.7639 64.2582 21.7499 66 23.3877 66H68.8425Z", fill: "white" })] }));
|
|
323
|
-
const Phantom = ({
|
|
374
|
+
const Phantom = ({ ...props }) => (jsx("svg", { ...props, width: "88", height: "88", viewBox: "0 0 88 88", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { background: "#AB9FF2" }, children: jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M37.7425 57.0705C34.1942 62.3362 28.2483 69 20.3366 69C16.5965 69 13.0001 67.5093 13 61.0322C12.9997 44.5362 36.2555 19.0003 57.8334 19C70.1084 18.9998 75 27.2474 75 36.6136C75 48.6357 66.9442 62.3824 58.9368 62.3824C56.3955 62.3824 55.1487 61.031 55.1487 58.888C55.1487 58.3288 55.2442 57.7228 55.4365 57.0705C52.7029 61.5902 47.4285 65.7849 42.4896 65.7849C38.8933 65.7849 37.0713 63.5944 37.0713 60.5187C37.0713 59.4003 37.311 58.2357 37.7425 57.0705ZM53.7586 31.6834C51.8054 31.6868 50.4738 33.2938 50.478 35.5864C50.4822 37.879 51.8198 39.5273 53.7729 39.5241C55.6789 39.5208 57.0099 37.8679 57.0058 35.5752C57.0016 33.2827 55.6646 31.6802 53.7586 31.6834ZM64.1193 31.6725C62.1661 31.6759 60.8345 33.2829 60.8387 35.5755C60.8429 37.868 62.1798 39.5164 64.1336 39.5131C66.0396 39.5099 67.3706 37.8569 67.3664 35.5643C67.3622 33.2718 66.0253 31.6693 64.1193 31.6725Z", fill: "#ffffff" }) }));
|
|
324
375
|
const Solflare = ({ ...props }) => {
|
|
325
376
|
const img = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjkwIiBoZWlnaHQ9IjI5MCIgdmlld0JveD0iMCAwIDI5MCAyOTAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xNDZfMjk5KSI+CjxwYXRoIGQ9Ik02My4yOTUxIDFIMjI2LjcwNUMyNjEuMTEgMSAyODkgMjguODkwNSAyODkgNjMuMjk1MVYyMjYuNzA1QzI4OSAyNjEuMTEgMjYxLjExIDI4OSAyMjYuNzA1IDI4OUg2My4yOTUxQzI4Ljg5MDUgMjg5IDEgMjYxLjExIDEgMjI2LjcwNVY2My4yOTUxQzEgMjguODkwNSAyOC44OTA1IDEgNjMuMjk1MSAxWiIgZmlsbD0iI0ZGRUY0NiIgc3Ryb2tlPSIjRUVEQTBGIiBzdHJva2Utd2lkdGg9IjIiLz4KPHBhdGggZD0iTTE0MC41NDggMTUzLjIzMUwxNTQuODMyIDEzOS40MzJMMTgxLjQ2MiAxNDguMTQ3QzE5OC44OTMgMTUzLjk1OCAyMDcuNjA5IDE2NC42MSAyMDcuNjA5IDE3OS42MkMyMDcuNjA5IDE5MC45OTkgMjAzLjI1MSAxOTguNTA0IDE5NC41MzYgMjA4LjE4OEwxOTEuODczIDIxMS4wOTNMMTkyLjg0MSAyMDQuMzE0QzE5Ni43MTQgMTc5LjYyIDE4OS40NTIgMTY4Ljk2OCAxNjUuNDg0IDE2MS4yMkwxNDAuNTQ4IDE1My4yMzFaTTEwNC43MTcgNjguNzM5TDE3Ny4zNDcgOTIuOTQ4OEwxNjEuNjEgMTA3Ljk1OUwxMjMuODQzIDk1LjM2OThDMTEwLjc3IDkxLjAxMiAxMDYuNDEyIDgzLjk5MTEgMTA0LjcxNyA2OS4yMjMyVjY4LjczOVpNMTAwLjM1OSAxOTEuNzI1TDExNi44MjIgMTc1Ljk4OEwxNDcuODExIDE4Ni4xNTdDMTY0LjAzMSAxOTEuNDgzIDE2OS41OTkgMTk4LjUwNCAxNjcuOTA1IDIxNi4xNzdMMTAwLjM1OSAxOTEuNzI1Wk03OS41MzkgMTIxLjUxNkM3OS41MzkgMTE2LjkxNyA4MS45NTk5IDExMi41NTkgODYuMDc1NiAxMDguOTI3QzkwLjQzMzQgMTE1LjIyMiA5Ny45Mzg0IDEyMC43OSAxMDkuODAxIDEyNC42NjRMMTM1LjQ2NCAxMzMuMTM3TDEyMS4xOCAxNDYuOTM3TDk2LjAwMTYgMTM4LjcwNUM4NC4zODA5IDEzNC44MzIgNzkuNTM5IDEyOS4wMjEgNzkuNTM5IDEyMS41MTZaTTE1NS41NTggMjQ4LjYxOEMyMDguODE5IDIxMy4yNzIgMjM3LjM4NyAxODkuMzA0IDIzNy4zODcgMTU5Ljc2OEMyMzcuMzg3IDE0MC4xNTggMjI1Ljc2NiAxMjkuMjYzIDIwMC4xMDQgMTIwLjc5TDE4MC43MzYgMTE0LjI1M0wyMzMuNzU2IDYzLjQxMjhMMjIzLjEwMyA1Mi4wMzQyTDIwNy4zNjcgNjUuODMzN0wxMzMuMDQzIDQxLjM4MThDMTEwLjA0MyA0OC44ODY5IDgwLjk5MTYgNzAuOTE3OCA4MC45OTE2IDkyLjk0ODdDODAuOTkxNiA5NS4zNjk3IDgxLjIzMzcgOTcuNzkwNyA4MS45NiAxMDAuNDU0QzYyLjgzNDIgMTExLjM0OCA1NS4wODcxIDEyMS41MTYgNTUuMDg3MSAxMzQuMTA1QzU1LjA4NzEgMTQ1Ljk2OCA2MS4zODE2IDE1Ny44MzEgODEuNDc1OCAxNjQuMzY4TDk3LjQ1NDIgMTY5LjY5NEw0Mi4yNTU5IDIyMi43MTNMNTIuOTA4MiAyMzQuMDkyTDcwLjA5NzIgMjE4LjM1NkwxNTUuNTU4IDI0OC42MThaIiBmaWxsPSIjMDIwNTBBIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMTQ2XzI5OSI+CjxyZWN0IHdpZHRoPSIyOTAiIGhlaWdodD0iMjkwIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=";
|
|
326
377
|
return (jsx("svg", { ...props, width: "120", height: "120", viewBox: "0 0 120 120", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: {
|
|
@@ -328,13 +379,20 @@ const Solflare = ({ ...props }) => {
|
|
|
328
379
|
backgroundImage: `url("${img}")`,
|
|
329
380
|
} }));
|
|
330
381
|
};
|
|
331
|
-
const Backpack = ({
|
|
382
|
+
const Backpack = ({ ...props }) => {
|
|
332
383
|
const img = "data:image/png;base64,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";
|
|
333
384
|
return (jsx("svg", { ...props, width: "120", height: "120", viewBox: "0 0 120 120", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: {
|
|
334
385
|
backgroundSize: "100% 100%",
|
|
335
386
|
backgroundImage: `url("${img}")`,
|
|
336
387
|
} }));
|
|
337
388
|
};
|
|
389
|
+
const Bitget = ({ ...props }) => {
|
|
390
|
+
const img = "data:image/png;base64,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";
|
|
391
|
+
return (jsx("svg", { ...props, width: "120", height: "120", viewBox: "0 0 120 120", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: {
|
|
392
|
+
backgroundSize: "100% 100%",
|
|
393
|
+
backgroundImage: `url("${img}")`,
|
|
394
|
+
} }));
|
|
395
|
+
};
|
|
338
396
|
const PlaceHolder = () => {
|
|
339
397
|
return jsx("div", { style: { width: 80, height: 80, background: "#555" } });
|
|
340
398
|
};
|
|
@@ -353,6 +411,7 @@ const InfinityWallet = ({ ...props }) => (jsxs("svg", { ...props, version: "1.1"
|
|
|
353
411
|
const Rabby = ({ ...props }) => (jsxs("svg", { ...props, width: "88", height: "88", viewBox: "0 0 88 88", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { background: "#8697FF" }, children: [jsx("path", { d: "M76.2062 48.0657C78.7621 42.356 66.1267 26.404 54.0555 19.7581C46.4467 14.6095 38.5183 15.3169 36.9125 17.5775C33.3886 22.5385 48.5814 26.7423 58.742 31.6478C56.5579 32.5964 54.4996 34.2987 53.2893 36.4758C49.5013 32.3404 41.1872 28.7791 31.4315 31.6478C24.8574 33.5809 19.3937 38.1382 17.2821 45.0216C16.7689 44.7936 16.2009 44.6669 15.6032 44.6669C13.3176 44.6669 11.4648 46.5197 11.4648 48.8052C11.4648 51.0908 13.3176 52.9435 15.6032 52.9435C16.0268 52.9435 17.3514 52.6594 17.3514 52.6594L38.5183 52.8128C30.0532 66.2418 23.3634 68.2049 23.3634 70.5314C23.3634 72.8579 29.7643 72.2274 32.1678 71.3602C43.6732 67.2088 56.0306 54.2706 58.1511 50.5462C67.056 51.6572 74.5397 51.7886 76.2062 48.0657Z", fill: "url(#paint0_linear_60607_36577)" }), jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M58.65 31.6053C58.682 31.6193 58.7139 31.6332 58.7458 31.6471C59.2168 31.4616 59.1406 30.766 59.0113 30.2198C58.714 28.9643 53.5856 23.9001 48.7696 21.6318C42.1984 18.5367 37.3618 18.7007 36.6582 20.1307C37.9975 22.8695 44.1927 25.441 50.663 28.1266C53.3909 29.2589 56.1676 30.4114 58.65 31.6053Z", fill: "url(#paint1_linear_60607_36577)" }), jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M50.4154 59.2247C49.0895 58.7182 47.592 58.2536 45.8898 57.8319C47.707 54.5801 48.0884 49.7663 46.3721 46.7226C43.9635 42.4512 40.9399 40.1777 33.9139 40.1777C30.0495 40.1777 19.6451 41.4794 19.4603 50.1648C19.441 51.0763 19.4599 51.9118 19.5259 52.68L38.5175 52.8176C35.9568 56.8798 33.5586 59.8928 31.4589 62.1841C33.9831 62.8309 36.0657 63.3738 37.9775 63.8722C39.7885 64.3443 41.4462 64.7764 43.1809 65.2191C45.8007 63.3102 48.2635 61.2288 50.4154 59.2247Z", fill: "url(#paint2_linear_60607_36577)" }), jsx("path", { d: "M17.0296 51.7821C17.8058 58.38 21.5555 60.9657 29.2177 61.7309C36.8799 62.4961 41.2751 61.9828 47.1265 62.5151C52.0136 62.9598 56.3772 65.4502 57.996 64.5895C59.4529 63.815 58.6378 61.0167 56.6884 59.2214C54.1614 56.8943 50.6641 55.2763 44.5104 54.7021C45.7368 51.3443 45.3931 46.6362 43.4885 44.0748C40.7345 40.3711 35.6513 38.6967 29.2177 39.4282C22.4962 40.1926 16.0556 43.5018 17.0296 51.7821Z", fill: "url(#paint3_linear_60607_36577)" }), jsxs("defs", { children: [jsxs("linearGradient", { id: "paint0_linear_60607_36577", x1: "30.666", y1: "43.0094", x2: "75.6558", y2: "55.7677", gradientUnits: "userSpaceOnUse", children: [jsx("stop", { stopColor: "white" }), jsx("stop", { offset: "1", stopColor: "white" })] }), jsxs("linearGradient", { id: "paint1_linear_60607_36577", x1: "68.0842", y1: "42.1521", x2: "35.6221", y2: "9.60636", gradientUnits: "userSpaceOnUse", children: [jsx("stop", { stopColor: "#7258DC" }), jsx("stop", { offset: "1", stopColor: "#797DEA", stopOpacity: "0" })] }), jsxs("linearGradient", { id: "paint2_linear_60607_36577", x1: "51.3184", y1: "60.3591", x2: "20.1383", y2: "42.4347", gradientUnits: "userSpaceOnUse", children: [jsx("stop", { stopColor: "#7461EA" }), jsx("stop", { offset: "1", stopColor: "#BFC2FF", stopOpacity: "0" })] }), jsxs("linearGradient", { id: "paint3_linear_60607_36577", x1: "33.3531", y1: "42.6732", x2: "54.4308", y2: "69.4547", gradientUnits: "userSpaceOnUse", children: [jsx("stop", { stopColor: "white" }), jsx("stop", { offset: "0.983895", stopColor: "#D5CEFF" })] })] })] }));
|
|
354
412
|
const TokenPocket = ({ ...props }) => (jsxs("svg", { ...props, width: "88px", height: "88px", viewBox: "0 0 88 88", version: "1.1", xmlns: "http://www.w3.org/2000/svg", children: [jsx("defs", { children: jsxs("linearGradient", { x1: "107.511425%", y1: "50.0147427%", x2: "0.0459570557%", y2: "50.0147427%", id: "linearGradient-1", children: [jsx("stop", { stopColor: "#FFFFFF", offset: "0%" }), jsx("stop", { stopColor: "#FFFFFF", stopOpacity: "0.3233", offset: "96.67%" }), jsx("stop", { stopColor: "#FFFFFF", stopOpacity: "0.3", offset: "100%" })] }) }), jsx("g", { stroke: "none", strokeWidth: "1", fill: "none", fillRule: "evenodd", children: jsxs("g", { id: "tokenpocket", fillRule: "nonzero", children: [jsx("polygon", { fill: "#2980FE", points: "87.9604864 0 0 0 0 88 87.9604864 88" }), jsxs("g", { transform: "translate(16.052385, 23.804688)", children: [jsx("path", { d: "M19.6653508,13.8911953 L19.6784508,13.8911953 C19.6653508,13.8236484 19.6653508,13.7448437 19.6653508,13.6772969 L19.6653508,13.8911953 Z", fill: "#29AEFF" }), jsx("path", { d: "M41.1271993,16.0301797 L29.2440711,16.0301797 L29.2440711,38.4205938 C29.2440711,39.4787422 30.0635659,40.3343359 31.0771712,40.3343359 L39.2940168,40.3343359 C40.3077044,40.3343359 41.1271993,39.4787422 41.1271993,38.4205938 L41.1271993,16.0301797 Z", fill: "#FFFFFF" }), jsx("path", { d: "M23.5075248,0 L23.1085201,0 L1.83318241,0 C0.819494855,0 0,0.855507812 0,1.91374219 L0,9.68111719 C0,10.7393516 0.819494855,11.5948594 1.83318241,11.5948594 L6.82580355,11.5948594 L8.80996071,11.5948594 L8.80996071,13.8912813 L8.80996071,38.4768828 C8.80996071,39.5351172 9.62945557,40.390625 10.6430608,40.390625 L18.4502002,40.390625 C19.4638054,40.390625 20.2833003,39.5351172 20.2833003,38.4768828 L20.2833003,13.8912813 L20.2833003,13.6774688 L20.2833003,11.5948594 L22.2674574,11.5948594 L23.0761684,11.5948594 L23.4751731,11.5948594 C26.5376389,11.5948594 29.0285575,8.99447656 29.0285575,5.79742969 C29.0609093,2.60038281 26.5699906,0 23.5075248,0 Z", fill: "#FFFFFF" }), jsx("path", { d: "M41.1381478,16.0301797 L41.1381478,31.6550781 C41.5479364,31.7563984 41.9684266,31.8352031 42.399783,31.90275 C43.0036819,31.9928125 43.6290664,32.0491016 44.2545332,32.0603594 C44.2868849,32.0603594 44.3192367,32.0603594 44.3623723,32.0603594 L44.3623723,19.6324219 C42.5615416,19.5085859 41.1381478,17.9438359 41.1381478,16.0301797 Z", fill: "url(#linearGradient-1)" }), jsx("path", { d: "M44.5993714,0 C36.1237942,0 29.2440711,7.18205469 29.2440711,16.0301797 C29.2440711,23.6400312 34.3229635,30.0115234 41.1379832,31.6550781 L41.1379832,16.0301797 C41.1379832,14.0376328 42.6907839,12.4165937 44.5993714,12.4165937 C46.5080412,12.4165937 48.0608419,14.0376328 48.0608419,16.0301797 C48.0608419,17.7075078 46.9717493,19.1146484 45.483652,19.5198437 C45.2032703,19.5986484 44.9013209,19.6436797 44.5993714,19.6436797 L44.5993714,32.0603594 C44.9013209,32.0603594 45.1924864,32.0491016 45.483652,32.0378438 C53.5495229,31.5537578 59.9547666,24.5743438 59.9547666,16.0301797 C59.9655379,7.18205469 53.0858148,0 44.5993714,0 Z", fill: "#FFFFFF" }), jsx("path", { d: "M44.5992891,32.0603594 L44.5992891,19.6436797 C44.5131001,19.6436797 44.4376127,19.6436797 44.3513414,19.6324219 L44.3513414,32.0603594 C44.4376127,32.0603594 44.523884,32.0603594 44.5992891,32.0603594 Z", fill: "#FFFFFF" })] })] }) })] }));
|
|
355
413
|
const Talisman = ({ ...props }) => (jsxs("svg", { ...props, width: "82", height: "82", viewBox: "0 0 82 82", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsx("rect", { width: "82", height: "82", rx: "12", fill: "#D5FF5C" }), jsx("path", { d: "M35.04 55C35.04 58.2905 37.6887 60.9623 40.9703 60.9996C44.2519 60.9623 46.9006 58.2905 46.9006 55C46.9006 51.7096 44.2519 49.0377 40.9703 49.0004C37.6887 49.0377 35.04 51.7096 35.04 55Z", fill: "#FD4848" }), jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M22.8544 44.6623C22.2462 45.9868 20.4553 46.4546 19.4248 45.4241L17.5356 43.5349C15.583 41.5823 12.4171 41.5823 10.4645 43.5349C8.51184 45.4875 8.51184 48.6534 10.4645 50.606L25.7391 65.8807C29.3942 70.2176 34.8595 72.9788 40.9703 72.9994C47.0811 72.9788 52.5464 70.2176 56.2014 65.8807L71.4761 50.606C73.4287 48.6534 73.4287 45.4875 71.4761 43.5349C69.5234 41.5823 66.3576 41.5823 64.4049 43.5349L62.5158 45.4241C61.4852 46.4546 59.6943 45.9868 59.0861 44.6623C58.9663 44.4013 58.901 44.1213 58.901 43.8341L58.901 20.9995C58.901 18.2381 56.6624 15.9995 53.901 15.9995C51.1396 15.9995 48.901 18.2381 48.901 20.9995L48.901 32.5568C48.901 33.5506 47.8829 34.2252 46.9353 33.9257C46.3356 33.7361 45.9023 33.1901 45.9023 32.5611L45.9023 13.9996C45.9023 11.2608 43.7004 9.03637 40.9703 9C38.2402 9.03637 36.0382 11.2608 36.0382 13.9996L36.0382 32.5611C36.0382 33.1901 35.605 33.7361 35.0052 33.9257C34.0576 34.2252 33.0395 33.5506 33.0395 32.5568L33.0396 20.9995C33.0396 18.2381 30.801 15.9995 28.0395 15.9995C25.2781 15.9995 23.0395 18.2381 23.0395 20.9995L23.0395 43.8341C23.0395 44.1213 22.9743 44.4013 22.8544 44.6623ZM40.9703 44.9999C32.1659 45.0525 25.0403 54.9997 25.0403 54.9997C25.0403 54.9997 32.1659 64.9469 40.9703 64.9995C49.7746 64.9469 56.9002 54.9997 56.9002 54.9997C56.9002 54.9997 49.7746 45.0525 40.9703 44.9999Z", fill: "#FD4848" })] }));
|
|
414
|
+
const OKX = ({ ...props }) => (jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", id: "a", viewBox: "0 0 150 150", style: { background: "#FFFFFF" }, children: [jsx("g", { id: "b", children: jsx("g", { id: "c", children: jsx("path", { id: "d", fill: "none", d: "M0 0h150v150H0z" }) }) }), jsx("path", { d: "M0 -0.239624V150H150.24V-0.239624H0ZM32.5006 34.4665C32.5006 33.4122 33.361 32.5518 34.4153 32.5518H59.0149C60.0692 32.5518 60.9296 33.4122 60.9296 34.4665V59.0661C60.9296 60.1325 60.0692 60.9929 59.0149 60.9929H34.4153C33.361 60.9929 32.5006 60.1325 32.5006 59.0661V34.4665ZM60.9296 115.294C60.9296 116.348 60.0692 117.209 59.0149 117.209H34.4153C33.361 117.209 32.5006 116.348 32.5006 115.294V90.6943C32.5006 89.6279 33.361 88.7675 34.4153 88.7675H59.0149C60.0692 88.7675 60.9296 89.6279 60.9296 90.6943V115.294ZM87.4196 89.0947H62.82C61.7657 89.0947 60.8932 88.2343 60.8932 87.1679V62.5682C60.8932 61.514 61.7536 60.6415 62.82 60.6415H87.4196C88.4739 60.6415 89.3464 61.5019 89.3464 62.5682V87.1679C89.3464 88.2222 88.486 89.0947 87.4196 89.0947ZM117.775 115.294C117.775 116.348 116.915 117.209 115.849 117.209H91.2489C90.1947 117.209 89.3343 116.348 89.3343 115.294V90.6943C89.3343 89.6279 90.1947 88.7675 91.2489 88.7675H115.849C116.903 88.7675 117.775 89.6279 117.775 90.6943V115.294ZM117.775 59.054C117.775 60.1204 116.915 60.9808 115.849 60.9808H91.2489C90.1947 60.9808 89.3343 60.1204 89.3343 59.054V34.4544C89.3343 33.4001 90.1947 32.5397 91.2489 32.5397H115.849C116.903 32.5397 117.775 33.4001 117.775 34.4544V59.054Z", fill: "black" })] }));
|
|
356
415
|
const OtherWallets = ({ ...props }) => {
|
|
357
416
|
const column = {
|
|
358
417
|
position: "relative",
|
|
@@ -370,7 +429,7 @@ const OtherWallets = ({ ...props }) => {
|
|
|
370
429
|
overflow: "hidden",
|
|
371
430
|
borderRadius: "27.5%",
|
|
372
431
|
};
|
|
373
|
-
return (jsxs("div", { style: column, ...props, children: [jsxs("div", { style: row, children: [jsx("div", { style: cell, children: jsx(
|
|
432
|
+
return (jsxs("div", { style: column, ...props, children: [jsxs("div", { style: row, children: [jsx("div", { style: cell, children: jsx(MetaMask, {}) }), jsx("div", { style: cell, children: jsx(Phantom, {}) })] }), jsxs("div", { style: row, children: [jsx("div", { style: cell, children: jsx(Coinbase, {}) }), jsx("div", { style: cell, children: jsx(Family, {}) })] })] }));
|
|
374
433
|
};
|
|
375
434
|
const Fordefi = ({ ...props }) => (jsxs("svg", { ...props, width: "88", height: "88", viewBox: "0 0 96 96", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsxs("g", { clipPath: "url(#clip0_14298_75627)", children: [jsx("path", { d: "M43.5075 62.5508H6V73.5954C6 79.2046 10.5379 83.7515 16.1357 83.7515H32.9997L43.5075 62.5508Z", fill: "#7994FF" }), jsx("path", { d: "M6.00098 39.1016H76.2075L68.0567 55.4841H6.00098V39.1016Z", fill: "#486DFF" }), jsx("path", { d: "M30.6398 12H6.09766V32.0282H89.8447V12H65.3025V26.9577H60.2423V12H35.7001V26.9577H30.6398V12Z", fill: "#5CD1FA" })] }), jsx("defs", { children: jsx("clipPath", { id: "clip0_14298_75627", children: jsx("rect", { width: "84", height: "72", fill: "white", transform: "translate(6 12)" }) }) })] }));
|
|
376
435
|
const SquircleIcon = ({ icon, alt, }) => {
|
|
@@ -382,6 +441,7 @@ var Logos$1 = {
|
|
|
382
441
|
Injected,
|
|
383
442
|
OtherWallets,
|
|
384
443
|
WalletConnect,
|
|
444
|
+
WalletIcon: WalletIcon$2,
|
|
385
445
|
MetaMask,
|
|
386
446
|
Coinbase,
|
|
387
447
|
Family,
|
|
@@ -411,32 +471,57 @@ var Logos$1 = {
|
|
|
411
471
|
SquircleIcon,
|
|
412
472
|
Backpack,
|
|
413
473
|
Solflare,
|
|
474
|
+
OKX,
|
|
475
|
+
Bitget,
|
|
414
476
|
};
|
|
415
477
|
|
|
478
|
+
// Infer in-wallet payment URL from environment.
|
|
479
|
+
let daimoPayHost = "https://pay.daimo.com";
|
|
480
|
+
// TODO: add this as a parameter to getWalletConnectDeeplink
|
|
481
|
+
function setInWalletPaymentUrlFromApiUrl(apiUrl) {
|
|
482
|
+
if (apiUrl.startsWith("http://localhost")) {
|
|
483
|
+
daimoPayHost = "http://localhost:3001";
|
|
484
|
+
}
|
|
485
|
+
else if (apiUrl.startsWith("https://pay-api-stage.daimo.xyz")) {
|
|
486
|
+
daimoPayHost = "https://daimo.ngrok.app";
|
|
487
|
+
}
|
|
488
|
+
else {
|
|
489
|
+
daimoPayHost = "https://pay.daimo.com";
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
function getDaimoPayUrl(payId) {
|
|
493
|
+
return daimoPayHost + "/pay?id=" + payId;
|
|
494
|
+
}
|
|
495
|
+
function getEncodedDaimoPayUrl(payId) {
|
|
496
|
+
let url = getDaimoPayUrl(payId);
|
|
497
|
+
let encodedUrl = encodeURIComponent(url);
|
|
498
|
+
return encodedUrl;
|
|
499
|
+
}
|
|
416
500
|
// Organised in alphabetical order by key
|
|
417
501
|
const walletConfigs = {
|
|
418
502
|
//TODO: update new wallet configs with favorite wallets
|
|
419
|
-
mock: {
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
},
|
|
423
|
-
argent: {
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
},
|
|
503
|
+
// mock: {
|
|
504
|
+
// icon: <Logos.Mock />,
|
|
505
|
+
// showInMobileConnectors: false,
|
|
506
|
+
// },
|
|
507
|
+
// argent: {
|
|
508
|
+
// name: "Argent",
|
|
509
|
+
// icon: <Logos.Argent />,
|
|
510
|
+
// downloadUrls: {
|
|
511
|
+
// download: "https://connect.family.co/v0/download/argent",
|
|
512
|
+
// android:
|
|
513
|
+
// "https://play.google.com/store/apps/details?id=im.argent.contractwalletclient",
|
|
514
|
+
// ios: "https://apps.apple.com/app/argent/id1358741926",
|
|
515
|
+
// },
|
|
516
|
+
// showInMobileConnectors: false,
|
|
517
|
+
// getWalletConnectDeeplink: (uri: string) => {
|
|
518
|
+
// return `https://argent.link/app/wc?uri=${encodeURIComponent(uri)}`;
|
|
519
|
+
// },
|
|
520
|
+
// },
|
|
436
521
|
"coinbaseWallet, coinbaseWalletSDK": {
|
|
437
522
|
name: "Coinbase Wallet",
|
|
438
523
|
shortName: "Coinbase",
|
|
439
|
-
icon: jsx(Logos$1.Coinbase, {
|
|
524
|
+
icon: jsx(Logos$1.Coinbase, {}),
|
|
440
525
|
iconShape: "squircle",
|
|
441
526
|
downloadUrls: {
|
|
442
527
|
download: "https://connect.family.co/v0/download/coinbasewallet",
|
|
@@ -445,16 +530,17 @@ const walletConfigs = {
|
|
|
445
530
|
ios: "https://apps.apple.com/app/coinbase-wallet-store-crypto/id1278383455",
|
|
446
531
|
chrome: "https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad",
|
|
447
532
|
},
|
|
448
|
-
showInMobileConnectors:
|
|
449
|
-
|
|
450
|
-
|
|
533
|
+
showInMobileConnectors: true,
|
|
534
|
+
deeplinkScheme: "cbwallet://",
|
|
535
|
+
getDaimoPayDeeplink: (payId) => {
|
|
536
|
+
return "cbwallet://dapp?url=" + getEncodedDaimoPayUrl(payId);
|
|
451
537
|
},
|
|
452
538
|
},
|
|
453
539
|
"com.coinbase.wallet": {
|
|
454
540
|
name: "Coinbase Wallet",
|
|
455
541
|
shortName: "Coinbase",
|
|
456
|
-
icon: jsx(Logos$1.Coinbase, {
|
|
457
|
-
iconShape: "
|
|
542
|
+
icon: jsx(Logos$1.Coinbase, {}),
|
|
543
|
+
iconShape: "squircle",
|
|
458
544
|
downloadUrls: {
|
|
459
545
|
download: "https://connect.family.co/v0/download/coinbasewallet",
|
|
460
546
|
website: "https://www.coinbase.com/wallet/getting-started-extension",
|
|
@@ -463,25 +549,48 @@ const walletConfigs = {
|
|
|
463
549
|
chrome: "https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad",
|
|
464
550
|
},
|
|
465
551
|
showInMobileConnectors: false,
|
|
466
|
-
|
|
467
|
-
|
|
552
|
+
deeplinkScheme: "cbwallet://",
|
|
553
|
+
getDaimoPayDeeplink: (payId) => {
|
|
554
|
+
return "cbwallet://dapp?url=" + getEncodedDaimoPayUrl(payId);
|
|
468
555
|
},
|
|
469
556
|
},
|
|
470
|
-
"com.crypto.wallet": {
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
557
|
+
// "com.crypto.wallet": {
|
|
558
|
+
// name: "Crypto.com",
|
|
559
|
+
// shortName: "Crypto",
|
|
560
|
+
// showInMobileConnectors: false,
|
|
561
|
+
// },
|
|
562
|
+
backpack: {
|
|
563
|
+
name: "Backpack",
|
|
564
|
+
shortName: "Backpack",
|
|
565
|
+
icon: jsx(Logos$1.Backpack, {}),
|
|
566
|
+
iconShape: "squircle",
|
|
567
|
+
showInMobileConnectors: true,
|
|
568
|
+
getDaimoPayDeeplink: (payId) => {
|
|
569
|
+
const url = encodeURIComponent(getDaimoPayUrl(payId));
|
|
570
|
+
return `https://backpack.app/ul/v1/browse/${url}`;
|
|
571
|
+
},
|
|
474
572
|
},
|
|
475
|
-
|
|
476
|
-
name: "
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
573
|
+
bitget: {
|
|
574
|
+
name: "Bitget",
|
|
575
|
+
icon: jsx(Logos$1.Bitget, {}),
|
|
576
|
+
iconShape: "squircle",
|
|
577
|
+
showInMobileConnectors: true,
|
|
578
|
+
deeplinkScheme: "bitkeep://",
|
|
579
|
+
getDaimoPayDeeplink: (payId) => {
|
|
580
|
+
return "bitkeep://bkconnect?action=dapp&url=" + getDaimoPayUrl(payId);
|
|
482
581
|
},
|
|
483
|
-
showInMobileConnectors: false,
|
|
484
582
|
},
|
|
583
|
+
// dawn: {
|
|
584
|
+
// name: "Dawn Wallet",
|
|
585
|
+
// shortName: "Dawn",
|
|
586
|
+
// downloadUrls: {
|
|
587
|
+
// download:
|
|
588
|
+
// "https://apps.apple.com/us/app/dawn-ethereum-wallet/id1673143782",
|
|
589
|
+
// website: "https://www.dawnwallet.xyz/",
|
|
590
|
+
// ios: "https://apps.apple.com/us/app/dawn-ethereum-wallet/id1673143782",
|
|
591
|
+
// },
|
|
592
|
+
// showInMobileConnectors: false,
|
|
593
|
+
// },
|
|
485
594
|
"co.family.wallet": {
|
|
486
595
|
name: "Family",
|
|
487
596
|
shortName: "Family",
|
|
@@ -492,48 +601,18 @@ const walletConfigs = {
|
|
|
492
601
|
website: "https://family.co",
|
|
493
602
|
ios: "https://family.co/download",
|
|
494
603
|
},
|
|
495
|
-
|
|
496
|
-
|
|
604
|
+
deeplinkScheme: "familywallet://",
|
|
605
|
+
getDaimoPayDeeplink: (payId) => {
|
|
606
|
+
return "familywallet://browser?url=" + getDaimoPayUrl(payId);
|
|
497
607
|
},
|
|
498
|
-
walletDeepLink: "familywallet://",
|
|
499
608
|
showInMobileConnectors: true,
|
|
500
609
|
},
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
website: "https://frame.sh",
|
|
508
|
-
chrome: "https://chrome.google.com/webstore/detail/frame-companion/ldcoohedfbjoobcadoglnnmmfbdlmmhf",
|
|
509
|
-
firefox: "https://addons.mozilla.org/en-US/firefox/addon/frame-extension",
|
|
510
|
-
brave: "https://chrome.google.com/webstore/detail/frame-companion/ldcoohedfbjoobcadoglnnmmfbdlmmhf",
|
|
511
|
-
},
|
|
512
|
-
showInMobileConnectors: false,
|
|
513
|
-
getWalletConnectDeeplink: (uri) => uri,
|
|
514
|
-
},
|
|
515
|
-
frontier: {
|
|
516
|
-
name: "Frontier Wallet",
|
|
517
|
-
shortName: "Frontier",
|
|
518
|
-
icon: jsx(Logos$1.Frontier, {}),
|
|
519
|
-
downloadUrls: {
|
|
520
|
-
download: "https://connect.family.co/v0/download/frontier",
|
|
521
|
-
ios: "https://apps.apple.com/app/frontier-crypto-defi-wallet/id1482380988",
|
|
522
|
-
android: "https://play.google.com/store/apps/details?id=com.frontierwallet",
|
|
523
|
-
website: "https://frontier.xyz/",
|
|
524
|
-
chrome: "https://chrome.google.com/webstore/detail/frontier-wallet/kppfdiipphfccemcignhifpjkapfbihd",
|
|
525
|
-
},
|
|
526
|
-
showInMobileConnectors: false,
|
|
527
|
-
getWalletConnectDeeplink: (uri) => {
|
|
528
|
-
return `frontier://wc?uri=${encodeURIComponent(uri)}`;
|
|
529
|
-
},
|
|
530
|
-
},
|
|
531
|
-
injected: {
|
|
532
|
-
name: "Browser Wallet",
|
|
533
|
-
shortName: "Browser",
|
|
534
|
-
icon: jsx(Logos$1.Injected, {}),
|
|
535
|
-
showInMobileConnectors: false,
|
|
536
|
-
},
|
|
610
|
+
// injected: {
|
|
611
|
+
// name: "Browser Wallet",
|
|
612
|
+
// shortName: "Browser",
|
|
613
|
+
// icon: <Logos.Injected />,
|
|
614
|
+
// showInMobileConnectors: false,
|
|
615
|
+
// },
|
|
537
616
|
"metaMask, metaMask-io, io.metamask, io.metamask.mobile, metaMaskSDK": {
|
|
538
617
|
name: "MetaMask",
|
|
539
618
|
shortName: "MetaMask",
|
|
@@ -550,15 +629,24 @@ const walletConfigs = {
|
|
|
550
629
|
brave: "https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn",
|
|
551
630
|
edge: "https://microsoftedge.microsoft.com/addons/detail/metamask/ejbalbakoplchlghecdalmeeeajnimhm",
|
|
552
631
|
},
|
|
553
|
-
showInMobileConnectors:
|
|
554
|
-
|
|
555
|
-
|
|
632
|
+
showInMobileConnectors: true,
|
|
633
|
+
deeplinkScheme: "metamask://",
|
|
634
|
+
getDaimoPayDeeplink: (payId) => {
|
|
635
|
+
const daimoPayUrl = getDaimoPayUrl(payId);
|
|
636
|
+
return ("https://metamask.app.link/dapp/" + daimoPayUrl.replace("https://", ""));
|
|
556
637
|
},
|
|
557
638
|
},
|
|
558
639
|
"app.phantom": {
|
|
559
640
|
name: "Phantom",
|
|
641
|
+
icon: jsx(Logos$1.Phantom, {}),
|
|
560
642
|
iconShape: "squircle",
|
|
561
|
-
showInMobileConnectors:
|
|
643
|
+
showInMobileConnectors: true,
|
|
644
|
+
deeplinkScheme: "phantom://",
|
|
645
|
+
getDaimoPayDeeplink: (payId) => {
|
|
646
|
+
const url = encodeURIComponent(getDaimoPayUrl(payId));
|
|
647
|
+
const ref = encodeURIComponent(window.location.origin);
|
|
648
|
+
return `https://phantom.app/ul/browse/${url}?ref=${ref}`;
|
|
649
|
+
},
|
|
562
650
|
},
|
|
563
651
|
"me.rainbow": {
|
|
564
652
|
name: "Rainbow Wallet",
|
|
@@ -576,145 +664,176 @@ const walletConfigs = {
|
|
|
576
664
|
},
|
|
577
665
|
showInMobileConnectors: false,
|
|
578
666
|
isWcMobileConnector: false,
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
walletDeepLink: "rainbow://",
|
|
583
|
-
},
|
|
584
|
-
"io.rabby": {
|
|
585
|
-
name: "Rabby Wallet",
|
|
586
|
-
shortName: "Rabby",
|
|
587
|
-
downloadUrls: {
|
|
588
|
-
website: "https://rabby.io",
|
|
589
|
-
chrome: "https://chrome.google.com/webstore/detail/rabby-wallet/acmacodkjbdgmoleebolmdjonilkdbch",
|
|
590
|
-
},
|
|
591
|
-
showInMobileConnectors: false,
|
|
592
|
-
},
|
|
593
|
-
safe: {
|
|
594
|
-
name: "Safe",
|
|
595
|
-
icon: jsx(Logos$1.Safe, {}),
|
|
596
|
-
downloadUrls: {
|
|
597
|
-
download: "https://connect.family.co/v0/download/safe",
|
|
598
|
-
website: "https://safe.global/",
|
|
599
|
-
ios: "https://apps.apple.com/app/id1515759131",
|
|
600
|
-
android: "https://play.google.com/store/apps/details?id=io.gnosis.safe",
|
|
667
|
+
deeplinkScheme: "rainbow://",
|
|
668
|
+
getDaimoPayDeeplink: (payId) => {
|
|
669
|
+
return "rainbow://dapp?url=" + getDaimoPayUrl(payId);
|
|
601
670
|
},
|
|
602
|
-
showInMobileConnectors: false,
|
|
603
|
-
getWalletConnectDeeplink: (uri) => {
|
|
604
|
-
return `https://gnosis-safe.io/wc?uri=${encodeURIComponent(uri)}`;
|
|
605
|
-
},
|
|
606
|
-
},
|
|
607
|
-
"xyz.talisman": {
|
|
608
|
-
name: "Talisman",
|
|
609
|
-
shortName: "Talisman",
|
|
610
|
-
iconShape: "squircle",
|
|
611
|
-
downloadUrls: {
|
|
612
|
-
download: "https://talisman.xyz/download",
|
|
613
|
-
website: "https://talisman.xyz",
|
|
614
|
-
chrome: "https://chrome.google.com/webstore/detail/talisman-polkadot-wallet/fijngjgcjhjmmpcmkeiomlglpeiijkld",
|
|
615
|
-
firefox: "https://addons.mozilla.org/en-US/firefox/addon/talisman-wallet-extension/",
|
|
616
|
-
},
|
|
617
|
-
showInMobileConnectors: false,
|
|
618
671
|
},
|
|
672
|
+
// "io.rabby": {
|
|
673
|
+
// name: "Rabby Wallet",
|
|
674
|
+
// shortName: "Rabby",
|
|
675
|
+
// downloadUrls: {
|
|
676
|
+
// website: "https://rabby.io",
|
|
677
|
+
// chrome:
|
|
678
|
+
// "https://chrome.google.com/webstore/detail/rabby-wallet/acmacodkjbdgmoleebolmdjonilkdbch",
|
|
679
|
+
// },
|
|
680
|
+
// showInMobileConnectors: false,
|
|
681
|
+
// //TODO: add wallet deep link
|
|
682
|
+
// // edit rabby scheme to deeplink URL: https://github.com/RabbyHub/rabby-mobile/blob/999d60f49c5254e4aa8e6aa8bb80ad46e267845c/apps/mobile/src/LinkingConfig.ts#L25
|
|
683
|
+
// },
|
|
684
|
+
// safe: {
|
|
685
|
+
// name: "Safe",
|
|
686
|
+
// icon: <Logos.Safe />,
|
|
687
|
+
// downloadUrls: {
|
|
688
|
+
// download: "https://connect.family.co/v0/download/safe",
|
|
689
|
+
// website: "https://safe.global/",
|
|
690
|
+
// ios: "https://apps.apple.com/app/id1515759131",
|
|
691
|
+
// android: "https://play.google.com/store/apps/details?id=io.gnosis.safe",
|
|
692
|
+
// },
|
|
693
|
+
// showInMobileConnectors: false,
|
|
694
|
+
// },
|
|
695
|
+
// "xyz.talisman": {
|
|
696
|
+
// name: "Talisman",
|
|
697
|
+
// shortName: "Talisman",
|
|
698
|
+
// iconShape: "squircle",
|
|
699
|
+
// downloadUrls: {
|
|
700
|
+
// download: "https://talisman.xyz/download",
|
|
701
|
+
// website: "https://talisman.xyz",
|
|
702
|
+
// chrome:
|
|
703
|
+
// "https://chrome.google.com/webstore/detail/talisman-polkadot-wallet/fijngjgcjhjmmpcmkeiomlglpeiijkld",
|
|
704
|
+
// firefox:
|
|
705
|
+
// "https://addons.mozilla.org/en-US/firefox/addon/talisman-wallet-extension/",
|
|
706
|
+
// },
|
|
707
|
+
// showInMobileConnectors: false,
|
|
708
|
+
// },
|
|
619
709
|
"com.trustwallet.app": {
|
|
620
710
|
name: "Trust Wallet",
|
|
621
711
|
shortName: "Trust",
|
|
622
712
|
icon: jsx(Logos$1.Trust, {}),
|
|
623
|
-
|
|
713
|
+
iconConnector: jsx(Logos$1.Trust, { background: true }),
|
|
624
714
|
downloadUrls: {
|
|
625
715
|
download: "https://connect.family.co/v0/download/trust",
|
|
626
716
|
android: "https://play.google.com/store/apps/details?id=com.wallet.crypto.trustapp",
|
|
627
717
|
ios: "https://apps.apple.com/app/trust-crypto-bitcoin-wallet/id1288339409",
|
|
628
718
|
},
|
|
629
719
|
showInMobileConnectors: false,
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
},
|
|
634
|
-
infinityWallet: {
|
|
635
|
-
name: "Infinity Wallet",
|
|
636
|
-
icon: jsx(Logos$1.InfinityWallet, {}),
|
|
637
|
-
downloadUrls: {
|
|
638
|
-
download: "https://connect.family.co/v0/download/infinityWallet",
|
|
639
|
-
website: "https://infinitywallet.io/download",
|
|
640
|
-
chrome: "https://infinitywallet.io/download",
|
|
641
|
-
firefox: "https://infinitywallet.io/download",
|
|
642
|
-
brave: "https://infinitywallet.io/download",
|
|
643
|
-
edge: "https://infinitywallet.io/download",
|
|
644
|
-
},
|
|
645
|
-
showInMobileConnectors: false,
|
|
646
|
-
},
|
|
647
|
-
imToken: {
|
|
648
|
-
name: "imToken",
|
|
649
|
-
icon: jsx(Logos$1.ImToken, {}),
|
|
650
|
-
downloadUrls: {
|
|
651
|
-
//website: 'https://support.token.im/hc/en-us/categories/360000925393',
|
|
652
|
-
download: "https://connect.family.co/v0/download/imToken",
|
|
653
|
-
android: "https://play.google.com/store/apps/details?id=im.token.app",
|
|
654
|
-
ios: "https://itunes.apple.com/us/app/imtoken2/id1384798940",
|
|
655
|
-
},
|
|
656
|
-
showInMobileConnectors: false,
|
|
657
|
-
getWalletConnectDeeplink: (uri) => {
|
|
658
|
-
return `imtokenv2://wc?uri=${encodeURIComponent(uri)}`;
|
|
659
|
-
},
|
|
660
|
-
},
|
|
661
|
-
unstoppable: {
|
|
662
|
-
name: "Unstoppable",
|
|
663
|
-
icon: jsx(Logos$1.Unstoppable, {}),
|
|
664
|
-
downloadUrls: {
|
|
665
|
-
download: "https://connect.family.co/v0/download/unstoppable",
|
|
666
|
-
ios: "https://apps.apple.com/app/bank-bitcoin-wallet/id1447619907",
|
|
667
|
-
android: "https://play.google.com/store/apps/details?id=io.horizontalsystems.bankwallet",
|
|
668
|
-
},
|
|
669
|
-
showInMobileConnectors: false,
|
|
670
|
-
getWalletConnectDeeplink: (uri) => {
|
|
671
|
-
return `https://unstoppable.money/wc?uri=${encodeURIComponent(uri)}`;
|
|
672
|
-
},
|
|
673
|
-
},
|
|
674
|
-
onto: {
|
|
675
|
-
name: "ONTO",
|
|
676
|
-
icon: jsx(Logos$1.ONTO, {}),
|
|
677
|
-
downloadUrls: {
|
|
678
|
-
download: "https://connect.family.co/v0/download/onto",
|
|
679
|
-
ios: "https://apps.apple.com/app/onto-an-ontology-dapp/id1436009823",
|
|
680
|
-
android: "https://play.google.com/store/apps/details?id=com.github.ontio.onto",
|
|
681
|
-
website: "https://onto.app/en/download/",
|
|
682
|
-
},
|
|
683
|
-
showInMobileConnectors: false,
|
|
684
|
-
getWalletConnectDeeplink: (uri) => {
|
|
685
|
-
return `https://onto.app/wc?uri=${encodeURIComponent(uri)}`;
|
|
720
|
+
deeplinkScheme: "trust://",
|
|
721
|
+
getDaimoPayDeeplink: (payId) => {
|
|
722
|
+
return "trust://open_url?coin_id=60&url=" + getDaimoPayUrl(payId);
|
|
686
723
|
},
|
|
687
724
|
},
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
725
|
+
// infinityWallet: {
|
|
726
|
+
// name: "Infinity Wallet",
|
|
727
|
+
// icon: <Logos.InfinityWallet />,
|
|
728
|
+
// downloadUrls: {
|
|
729
|
+
// download: "https://connect.family.co/v0/download/infinityWallet",
|
|
730
|
+
// website: "https://infinitywallet.io/download",
|
|
731
|
+
// chrome: "https://infinitywallet.io/download",
|
|
732
|
+
// firefox: "https://infinitywallet.io/download",
|
|
733
|
+
// brave: "https://infinitywallet.io/download",
|
|
734
|
+
// edge: "https://infinitywallet.io/download",
|
|
735
|
+
// },
|
|
736
|
+
// showInMobileConnectors: false,
|
|
737
|
+
// },
|
|
738
|
+
// imToken: {
|
|
739
|
+
// name: "imToken",
|
|
740
|
+
// icon: <Logos.ImToken />,
|
|
741
|
+
// downloadUrls: {
|
|
742
|
+
// //website: 'https://support.token.im/hc/en-us/categories/360000925393',
|
|
743
|
+
// download: "https://connect.family.co/v0/download/imToken",
|
|
744
|
+
// android: "https://play.google.com/store/apps/details?id=im.token.app",
|
|
745
|
+
// ios: "https://itunes.apple.com/us/app/imtoken2/id1384798940",
|
|
746
|
+
// },
|
|
747
|
+
// showInMobileConnectors: false,
|
|
748
|
+
// getWalletConnectDeeplink: (uri: string) => {
|
|
749
|
+
// return `imtokenv2://wc?uri=${encodeURIComponent(uri)}`;
|
|
750
|
+
// },
|
|
751
|
+
// },
|
|
752
|
+
// unstoppable: {
|
|
753
|
+
// name: "Unstoppable",
|
|
754
|
+
// icon: <Logos.Unstoppable />,
|
|
755
|
+
// downloadUrls: {
|
|
756
|
+
// download: "https://connect.family.co/v0/download/unstoppable",
|
|
757
|
+
// ios: "https://apps.apple.com/app/bank-bitcoin-wallet/id1447619907",
|
|
758
|
+
// android:
|
|
759
|
+
// "https://play.google.com/store/apps/details?id=io.horizontalsystems.bankwallet",
|
|
760
|
+
// },
|
|
761
|
+
// showInMobileConnectors: false,
|
|
762
|
+
// getWalletConnectDeeplink: (uri: string) => {
|
|
763
|
+
// return `https://unstoppable.money/wc?uri=${encodeURIComponent(uri)}`;
|
|
764
|
+
// },
|
|
765
|
+
// },
|
|
766
|
+
// onto: {
|
|
767
|
+
// name: "ONTO",
|
|
768
|
+
// icon: <Logos.ONTO />,
|
|
769
|
+
// downloadUrls: {
|
|
770
|
+
// download: "https://connect.family.co/v0/download/onto",
|
|
771
|
+
// ios: "https://apps.apple.com/app/onto-an-ontology-dapp/id1436009823",
|
|
772
|
+
// android:
|
|
773
|
+
// "https://play.google.com/store/apps/details?id=com.github.ontio.onto",
|
|
774
|
+
// website: "https://onto.app/en/download/",
|
|
775
|
+
// },
|
|
776
|
+
// showInMobileConnectors: false,
|
|
777
|
+
// getWalletConnectDeeplink: (uri: string) => {
|
|
778
|
+
// return `https://onto.app/wc?uri=${encodeURIComponent(uri)}`;
|
|
779
|
+
// },
|
|
780
|
+
// },
|
|
781
|
+
okx: {
|
|
782
|
+
name: "OKX",
|
|
783
|
+
icon: jsx(Logos$1.OKX, {}),
|
|
784
|
+
showInMobileConnectors: true,
|
|
785
|
+
deeplinkScheme: "okx://",
|
|
786
|
+
getDaimoPayDeeplink: (payId) => {
|
|
787
|
+
return "okx://wallet/dapp/url?dappUrl=" + getDaimoPayUrl(payId);
|
|
700
788
|
},
|
|
701
789
|
},
|
|
702
|
-
|
|
703
|
-
name: "
|
|
704
|
-
|
|
705
|
-
icon: jsx(Logos$1.Ledger, {}),
|
|
706
|
-
downloadUrls: {
|
|
707
|
-
download: "https://connect.family.co/v0/download/ledger",
|
|
708
|
-
website: "https://www.ledger.com/ledger-live/download#download-device-2",
|
|
709
|
-
android: "https://play.google.com/store/apps/details?id=com.ledger.live",
|
|
710
|
-
ios: "https://apps.apple.com/app/ledger-live-web3-wallet/id1361671700",
|
|
711
|
-
},
|
|
790
|
+
solflare: {
|
|
791
|
+
name: "Solflare",
|
|
792
|
+
icon: jsx(Logos$1.Solflare, {}),
|
|
712
793
|
showInMobileConnectors: true,
|
|
713
|
-
|
|
714
|
-
|
|
794
|
+
deeplinkScheme: "solflare://",
|
|
795
|
+
getDaimoPayDeeplink: (payId) => {
|
|
796
|
+
const url = encodeURIComponent(getDaimoPayUrl(payId));
|
|
797
|
+
const ref = encodeURIComponent(window.location.origin);
|
|
798
|
+
return `https://solflare.com/ul/v1/browse/${url}?ref=${ref}`;
|
|
715
799
|
},
|
|
716
|
-
shouldDeeplinkDesktop: true,
|
|
717
800
|
},
|
|
801
|
+
// steak: {
|
|
802
|
+
// name: "Steak",
|
|
803
|
+
// icon: <Logos.Steak />,
|
|
804
|
+
// downloadUrls: {
|
|
805
|
+
// download: "https://connect.family.co/v0/download/steak",
|
|
806
|
+
// android:
|
|
807
|
+
// "https://play.google.com/store/apps/details?id=fi.steakwallet.app",
|
|
808
|
+
// ios: "https://apps.apple.com/app/steakwallet/id1569375204",
|
|
809
|
+
// website: "https://steakwallet.fi/download",
|
|
810
|
+
// },
|
|
811
|
+
// showInMobileConnectors: false,
|
|
812
|
+
// getWalletConnectDeeplink: (uri: string) => {
|
|
813
|
+
// return `https://links.steakwallet.fi/wc?uri=${encodeURIComponent(uri)}`;
|
|
814
|
+
// },
|
|
815
|
+
// },
|
|
816
|
+
// ledger: {
|
|
817
|
+
// name: "Ledger Live",
|
|
818
|
+
// shortName: "Ledger",
|
|
819
|
+
// icon: <Logos.Ledger />,
|
|
820
|
+
// downloadUrls: {
|
|
821
|
+
// download: "https://connect.family.co/v0/download/ledger",
|
|
822
|
+
// website: "https://www.ledger.com/ledger-live/download#download-device-2",
|
|
823
|
+
// android: "https://play.google.com/store/apps/details?id=com.ledger.live",
|
|
824
|
+
// ios: "https://apps.apple.com/app/ledger-live-web3-wallet/id1361671700",
|
|
825
|
+
// },
|
|
826
|
+
// showInMobileConnectors: true,
|
|
827
|
+
// deeplinkScheme: "ledgerlive://",
|
|
828
|
+
// getWalletConnectDeeplink: (uri: string) => {
|
|
829
|
+
// return `ledgerlive://wc?uri=${encodeURIComponent(uri)}`;
|
|
830
|
+
// },
|
|
831
|
+
// // getDaimoPayDeeplink: (payId: string) => {
|
|
832
|
+
// // return "ledgerlive://discover/" + daimoPayUrl + payId;
|
|
833
|
+
// // },
|
|
834
|
+
// // TODO: Add Daimo Pay to Ledger Live's Discover section https://developers.ledger.com/docs/ledger-live/discover/getting-started
|
|
835
|
+
// shouldDeeplinkDesktop: true,
|
|
836
|
+
// },
|
|
718
837
|
zerion: {
|
|
719
838
|
name: "Zerion",
|
|
720
839
|
icon: jsx(Logos$1.Zerion, {}),
|
|
@@ -724,49 +843,55 @@ const walletConfigs = {
|
|
|
724
843
|
android: "https://play.google.com/store/apps/details?id=io.zerion.android",
|
|
725
844
|
website: "https://zerion.io/",
|
|
726
845
|
},
|
|
727
|
-
getWalletConnectDeeplink: (uri) => {
|
|
728
|
-
return `https://app.zerion.io/wc?uri=${encodeURIComponent(uri)}`;
|
|
729
|
-
},
|
|
730
846
|
showInMobileConnectors: true,
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
icon: jsx(Logos$1.Slope, {}),
|
|
735
|
-
downloadUrls: {
|
|
736
|
-
download: "https://connect.family.co/v0/download/slope",
|
|
737
|
-
ios: "https://apps.apple.com/app/slope-wallet/id1574624530",
|
|
738
|
-
android: "https://play.google.com/store/apps/details?id=com.wd.wallet",
|
|
739
|
-
chrome: "https://chrome.google.com/webstore/detail/slope-wallet/pocmplpaccanhmnllbbkpgfliimjljgo",
|
|
740
|
-
website: "https://slope.finance/",
|
|
741
|
-
},
|
|
742
|
-
showInMobileConnectors: false,
|
|
743
|
-
getWalletConnectDeeplink: (uri) => {
|
|
744
|
-
return `https://slope.finance/app/wc?uri=${encodeURIComponent(uri)}`;
|
|
745
|
-
},
|
|
746
|
-
},
|
|
747
|
-
tokenPocket: {
|
|
748
|
-
name: "TokenPocket Wallet",
|
|
749
|
-
icon: jsx(Logos$1.TokenPocket, {}),
|
|
750
|
-
downloadUrls: {
|
|
751
|
-
website: "https://www.tokenpocket.pro/en/download/app",
|
|
752
|
-
download: "https://www.tokenpocket.pro/en/download/app",
|
|
753
|
-
android: "https://play.google.com/store/apps/details?id=vip.mytokenpocket",
|
|
754
|
-
ios: "https://apps.apple.com/us/app/tp-global-wallet/id6444625622",
|
|
755
|
-
chrome: "https://chrome.google.com/webstore/detail/tokenpocket/mfgccjchihfkkindfppnaooecgfneiii",
|
|
756
|
-
},
|
|
757
|
-
showInMobileConnectors: false,
|
|
758
|
-
},
|
|
759
|
-
talisman: {
|
|
760
|
-
name: "Talisman",
|
|
761
|
-
icon: jsx(Logos$1.Talisman, {}),
|
|
762
|
-
downloadUrls: {
|
|
763
|
-
download: "https://talisman.xyz/download",
|
|
764
|
-
website: "https://talisman.xyz",
|
|
765
|
-
chrome: "https://chrome.google.com/webstore/detail/talisman-polkadot-wallet/fijngjgcjhjmmpcmkeiomlglpeiijkld",
|
|
766
|
-
firefox: "https://addons.mozilla.org/en-US/firefox/addon/talisman-wallet-extension/",
|
|
847
|
+
deeplinkScheme: "zerion://",
|
|
848
|
+
getDaimoPayDeeplink: (payId) => {
|
|
849
|
+
return "zerion://browser?url=" + getDaimoPayUrl(payId);
|
|
767
850
|
},
|
|
768
|
-
showInMobileConnectors: false,
|
|
769
851
|
},
|
|
852
|
+
// slope: {
|
|
853
|
+
// name: "Slope",
|
|
854
|
+
// icon: <Logos.Slope />,
|
|
855
|
+
// downloadUrls: {
|
|
856
|
+
// download: "https://connect.family.co/v0/download/slope",
|
|
857
|
+
// ios: "https://apps.apple.com/app/slope-wallet/id1574624530",
|
|
858
|
+
// android: "https://play.google.com/store/apps/details?id=com.wd.wallet",
|
|
859
|
+
// chrome:
|
|
860
|
+
// "https://chrome.google.com/webstore/detail/slope-wallet/pocmplpaccanhmnllbbkpgfliimjljgo",
|
|
861
|
+
// website: "https://slope.finance/",
|
|
862
|
+
// },
|
|
863
|
+
// showInMobileConnectors: false,
|
|
864
|
+
// getWalletConnectDeeplink: (uri: string) => {
|
|
865
|
+
// return `https://slope.finance/app/wc?uri=${encodeURIComponent(uri)}`;
|
|
866
|
+
// },
|
|
867
|
+
// },
|
|
868
|
+
// tokenPocket: {
|
|
869
|
+
// name: "TokenPocket Wallet",
|
|
870
|
+
// icon: <Logos.TokenPocket />,
|
|
871
|
+
// downloadUrls: {
|
|
872
|
+
// website: "https://www.tokenpocket.pro/en/download/app",
|
|
873
|
+
// download: "https://www.tokenpocket.pro/en/download/app",
|
|
874
|
+
// android:
|
|
875
|
+
// "https://play.google.com/store/apps/details?id=vip.mytokenpocket",
|
|
876
|
+
// ios: "https://apps.apple.com/us/app/tp-global-wallet/id6444625622",
|
|
877
|
+
// chrome:
|
|
878
|
+
// "https://chrome.google.com/webstore/detail/tokenpocket/mfgccjchihfkkindfppnaooecgfneiii",
|
|
879
|
+
// },
|
|
880
|
+
// showInMobileConnectors: false,
|
|
881
|
+
// },
|
|
882
|
+
// talisman: {
|
|
883
|
+
// name: "Talisman",
|
|
884
|
+
// icon: <Logos.Talisman />,
|
|
885
|
+
// downloadUrls: {
|
|
886
|
+
// download: "https://talisman.xyz/download",
|
|
887
|
+
// website: "https://talisman.xyz",
|
|
888
|
+
// chrome:
|
|
889
|
+
// "https://chrome.google.com/webstore/detail/talisman-polkadot-wallet/fijngjgcjhjmmpcmkeiomlglpeiijkld",
|
|
890
|
+
// firefox:
|
|
891
|
+
// "https://addons.mozilla.org/en-US/firefox/addon/talisman-wallet-extension/",
|
|
892
|
+
// },
|
|
893
|
+
// showInMobileConnectors: false,
|
|
894
|
+
// },
|
|
770
895
|
walletConnect: {
|
|
771
896
|
name: "Other Wallets",
|
|
772
897
|
shortName: "Other",
|
|
@@ -804,7 +929,7 @@ function useExtractWcWallet({ log, connector, }) {
|
|
|
804
929
|
setWcWallet(undefined);
|
|
805
930
|
}
|
|
806
931
|
}
|
|
807
|
-
}, [connector]);
|
|
932
|
+
}, [connector, log]);
|
|
808
933
|
return wcWallet;
|
|
809
934
|
}
|
|
810
935
|
function extractWcWalletFromProvider(p, log) {
|
|
@@ -829,7 +954,7 @@ function extractWcWalletFromProvider(p, log) {
|
|
|
829
954
|
wallet = {
|
|
830
955
|
name: name,
|
|
831
956
|
icon: p.session?.peer?.metadata?.icons[0],
|
|
832
|
-
|
|
957
|
+
deeplinkScheme: deeplinkUrl,
|
|
833
958
|
isWcMobileConnector: true,
|
|
834
959
|
};
|
|
835
960
|
}
|
|
@@ -885,16 +1010,12 @@ function useDepositAddressOptions({ trpc, usdRequired, mode, }) {
|
|
|
885
1010
|
return { options, loading };
|
|
886
1011
|
}
|
|
887
1012
|
|
|
888
|
-
const DEFAULT_EXTERNAL_PAYMENT_OPTIONS =
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
ExternalPaymentOptions.
|
|
892
|
-
ExternalPaymentOptions.RampNetwork,
|
|
893
|
-
ExternalPaymentOptions.Lemon,
|
|
894
|
-
// Solana and ExternalChains are handled in the SelectMethod component.
|
|
895
|
-
];
|
|
1013
|
+
const DEFAULT_EXTERNAL_PAYMENT_OPTIONS = Object.values(ExternalPaymentOptions).filter((opt) =>
|
|
1014
|
+
// Solana and ExternalChains are handled in the SelectMethod component.
|
|
1015
|
+
opt !== ExternalPaymentOptions.Solana &&
|
|
1016
|
+
opt !== ExternalPaymentOptions.ExternalChains);
|
|
896
1017
|
function useExternalPaymentOptions({ trpc, filterIds, platform, usdRequired, mode, }) {
|
|
897
|
-
const [options, setOptions] = useState(
|
|
1018
|
+
const [options, setOptions] = useState(new Map());
|
|
898
1019
|
const [loading, setLoading] = useState(false);
|
|
899
1020
|
useEffect(() => {
|
|
900
1021
|
const refreshExternalPaymentOptions = async (usd, mode) => {
|
|
@@ -910,7 +1031,15 @@ function useExternalPaymentOptions({ trpc, filterIds, platform, usdRequired, mod
|
|
|
910
1031
|
// Filter out options not in options JSON
|
|
911
1032
|
const enabledExtPaymentOptions = filterIds || DEFAULT_EXTERNAL_PAYMENT_OPTIONS;
|
|
912
1033
|
const filteredOptions = newOptions.filter((option) => enabledExtPaymentOptions.includes(option.id));
|
|
913
|
-
|
|
1034
|
+
const optionsByType = new Map();
|
|
1035
|
+
filteredOptions.forEach((option) => {
|
|
1036
|
+
const { optionType } = option;
|
|
1037
|
+
if (!optionsByType.has(optionType)) {
|
|
1038
|
+
optionsByType.set(optionType, []);
|
|
1039
|
+
}
|
|
1040
|
+
optionsByType.get(optionType).push(option);
|
|
1041
|
+
});
|
|
1042
|
+
setOptions(optionsByType);
|
|
914
1043
|
}
|
|
915
1044
|
catch (error) {
|
|
916
1045
|
console.error(error);
|
|
@@ -922,11 +1051,8 @@ function useExternalPaymentOptions({ trpc, filterIds, platform, usdRequired, mod
|
|
|
922
1051
|
if (usdRequired != null && mode != null) {
|
|
923
1052
|
refreshExternalPaymentOptions(usdRequired, mode);
|
|
924
1053
|
}
|
|
925
|
-
}, [usdRequired, filterIds, platform, mode]);
|
|
926
|
-
return {
|
|
927
|
-
options,
|
|
928
|
-
loading,
|
|
929
|
-
};
|
|
1054
|
+
}, [usdRequired, filterIds, platform, mode, trpc]);
|
|
1055
|
+
return { options, loading };
|
|
930
1056
|
}
|
|
931
1057
|
|
|
932
1058
|
function useOrderUsdLimits({ trpc }) {
|
|
@@ -1121,7 +1247,15 @@ function useWalletPaymentOptions({ trpc, address, usdRequired, destChainId, pref
|
|
|
1121
1247
|
if (address != null && usdRequired != null && destChainId != null) {
|
|
1122
1248
|
refreshWalletPaymentOptions();
|
|
1123
1249
|
}
|
|
1124
|
-
}, [
|
|
1250
|
+
}, [
|
|
1251
|
+
address,
|
|
1252
|
+
usdRequired,
|
|
1253
|
+
destChainId,
|
|
1254
|
+
isDepositFlow,
|
|
1255
|
+
preferredChains,
|
|
1256
|
+
preferredTokens,
|
|
1257
|
+
evmChains,
|
|
1258
|
+
]);
|
|
1125
1259
|
return {
|
|
1126
1260
|
options,
|
|
1127
1261
|
isLoading,
|
|
@@ -1155,14 +1289,17 @@ function usePaymentState({ trpc, lockPayParams, daimoPayOrder, setDaimoPayOrder,
|
|
|
1155
1289
|
// lockPayParams is true
|
|
1156
1290
|
const latestPayParamsRef = useRef();
|
|
1157
1291
|
const latestPayIdRef = useRef();
|
|
1158
|
-
//
|
|
1292
|
+
// From DaimoPayButton props
|
|
1293
|
+
const [buttonProps, setButtonProps] = useState();
|
|
1159
1294
|
const [payParams, setPayParamsState] = useState();
|
|
1160
1295
|
const [paymentWaitingMessage, setPaymentWaitingMessage] = useState();
|
|
1161
1296
|
const [isDepositFlow, setIsDepositFlow] = useState(false);
|
|
1162
1297
|
// UI state. Selection for external payment (Binance, etc) vs wallet payment.
|
|
1163
1298
|
const externalPaymentOptions = useExternalPaymentOptions({
|
|
1164
1299
|
trpc,
|
|
1165
|
-
|
|
1300
|
+
// allow <DaimoPayButton payId={...} paymentOptions={override} />
|
|
1301
|
+
filterIds: buttonProps?.paymentOptions ??
|
|
1302
|
+
daimoPayOrder?.metadata.payer?.paymentOptions,
|
|
1166
1303
|
platform,
|
|
1167
1304
|
usdRequired: daimoPayOrder?.destFinalCallTokenAmount.usd,
|
|
1168
1305
|
mode: daimoPayOrder?.mode,
|
|
@@ -1244,6 +1381,8 @@ function usePaymentState({ trpc, lockPayParams, daimoPayOrder, setDaimoPayOrder,
|
|
|
1244
1381
|
const [selectedTokenOption, setSelectedTokenOption] = useState();
|
|
1245
1382
|
const [selectedSolanaTokenOption, setSelectedSolanaTokenOption] = useState();
|
|
1246
1383
|
const [selectedDepositAddressOption, setSelectedDepositAddressOption] = useState();
|
|
1384
|
+
const [selectedWallet, setSelectedWallet] = useState();
|
|
1385
|
+
const [selectedWalletDeepLink, setSelectedWalletDeepLink] = useState();
|
|
1247
1386
|
const getOrderUsdLimit = () => {
|
|
1248
1387
|
const DEFAULT_USD_LIMIT = 20000;
|
|
1249
1388
|
if (daimoPayOrder == null || chainOrderUsdLimits.loading) {
|
|
@@ -1281,6 +1420,35 @@ function usePaymentState({ trpc, lockPayParams, daimoPayOrder, setDaimoPayOrder,
|
|
|
1281
1420
|
});
|
|
1282
1421
|
return depositAddressOption;
|
|
1283
1422
|
};
|
|
1423
|
+
/// Hydrates an order to prepare for paying in an in-wallet browser via
|
|
1424
|
+
/// deeplink. Then, if wallet is specified, opens in that wallet.
|
|
1425
|
+
const payWithWallet = async (wallet, amountUsd) => {
|
|
1426
|
+
if (daimoPayOrder == null)
|
|
1427
|
+
return;
|
|
1428
|
+
// In deposit mode, set the amount
|
|
1429
|
+
let order = daimoPayOrder;
|
|
1430
|
+
if (amountUsd != null) {
|
|
1431
|
+
assert(amountUsd > 0, "amount must be positive");
|
|
1432
|
+
order = setChosenUsd(amountUsd);
|
|
1433
|
+
}
|
|
1434
|
+
// Hydrate the order
|
|
1435
|
+
log(`payWithWallet: hydrating order ${order.id}${amountUsd && ` for $${amountUsd}`}`);
|
|
1436
|
+
const { hydratedOrder } = await createOrHydrate({ order });
|
|
1437
|
+
setDaimoPayOrder(hydratedOrder);
|
|
1438
|
+
// If we already picked a wallet, open in that wallet.
|
|
1439
|
+
if (wallet == null)
|
|
1440
|
+
return;
|
|
1441
|
+
assert(wallet.getDaimoPayDeeplink != null, "payWithWallet: missing deeplink");
|
|
1442
|
+
const payId = writeDaimoPayOrderID(hydratedOrder.id);
|
|
1443
|
+
const deeplink = wallet.getDaimoPayDeeplink(payId);
|
|
1444
|
+
window.open(deeplink, "_blank");
|
|
1445
|
+
setSelectedWalletDeepLink(deeplink);
|
|
1446
|
+
setRoute(ROUTES.WAITING_WALLET, {
|
|
1447
|
+
amountUsd,
|
|
1448
|
+
payId,
|
|
1449
|
+
wallet_name: wallet.name,
|
|
1450
|
+
});
|
|
1451
|
+
};
|
|
1284
1452
|
const refreshOrder = useCallback(async () => {
|
|
1285
1453
|
const id = daimoPayOrder?.id?.toString();
|
|
1286
1454
|
if (!id)
|
|
@@ -1306,14 +1474,16 @@ function usePaymentState({ trpc, lockPayParams, daimoPayOrder, setDaimoPayOrder,
|
|
|
1306
1474
|
// TODO: remove amount from destFinalCall, it is redundant with
|
|
1307
1475
|
// destFinalCallTokenAmount. Here, we only modify one and not the other.
|
|
1308
1476
|
log(`[CHECKOUT] chose USD amount $${usd} = ${tokenUnits} ${token.symbol}`);
|
|
1309
|
-
|
|
1477
|
+
const ret = {
|
|
1310
1478
|
...daimoPayOrder,
|
|
1311
1479
|
destFinalCallTokenAmount: {
|
|
1312
1480
|
token,
|
|
1313
1481
|
amount: tokenAmount.toString(),
|
|
1314
1482
|
usd: usd,
|
|
1315
1483
|
},
|
|
1316
|
-
}
|
|
1484
|
+
};
|
|
1485
|
+
setDaimoPayOrder(ret);
|
|
1486
|
+
return ret;
|
|
1317
1487
|
};
|
|
1318
1488
|
const setPayId = useCallback(async (payId) => {
|
|
1319
1489
|
latestPayIdRef.current = payId;
|
|
@@ -1370,6 +1540,7 @@ function usePaymentState({ trpc, lockPayParams, daimoPayOrder, setDaimoPayOrder,
|
|
|
1370
1540
|
refundAddress: payParams.refundAddress,
|
|
1371
1541
|
});
|
|
1372
1542
|
log(`[CHECKOUT] generated preview: ${JSON.stringify(orderPreview)}`);
|
|
1543
|
+
// TODO: Properly type this and fix hacky type casting
|
|
1373
1544
|
setDaimoPayOrder(orderPreview);
|
|
1374
1545
|
}, [trpc, log, setDaimoPayOrder]);
|
|
1375
1546
|
const resetOrder = useCallback(() => {
|
|
@@ -1394,6 +1565,8 @@ function usePaymentState({ trpc, lockPayParams, daimoPayOrder, setDaimoPayOrder,
|
|
|
1394
1565
|
generatePreviewOrder,
|
|
1395
1566
|
]);
|
|
1396
1567
|
return {
|
|
1568
|
+
buttonProps,
|
|
1569
|
+
setButtonProps,
|
|
1397
1570
|
setPayId,
|
|
1398
1571
|
payParams,
|
|
1399
1572
|
setPayParams,
|
|
@@ -1406,12 +1579,16 @@ function usePaymentState({ trpc, lockPayParams, daimoPayOrder, setDaimoPayOrder,
|
|
|
1406
1579
|
selectedSolanaTokenOption,
|
|
1407
1580
|
externalPaymentOptions,
|
|
1408
1581
|
showSolanaPaymentMethod,
|
|
1582
|
+
selectedWallet,
|
|
1583
|
+
selectedWalletDeepLink,
|
|
1409
1584
|
walletPaymentOptions,
|
|
1410
1585
|
solanaPaymentOptions,
|
|
1411
1586
|
depositAddressOptions,
|
|
1412
1587
|
selectedDepositAddressOption,
|
|
1413
1588
|
getOrderUsdLimit,
|
|
1414
1589
|
resetOrder,
|
|
1590
|
+
setSelectedWallet,
|
|
1591
|
+
setSelectedWalletDeepLink,
|
|
1415
1592
|
setPaymentWaitingMessage,
|
|
1416
1593
|
setSelectedExternalOption,
|
|
1417
1594
|
setSelectedTokenOption,
|
|
@@ -1422,6 +1599,7 @@ function usePaymentState({ trpc, lockPayParams, daimoPayOrder, setDaimoPayOrder,
|
|
|
1422
1599
|
payWithExternal,
|
|
1423
1600
|
payWithDepositAddress,
|
|
1424
1601
|
payWithSolanaToken,
|
|
1602
|
+
payWithWallet,
|
|
1425
1603
|
refreshOrder,
|
|
1426
1604
|
senderEnsName: senderEnsName ?? undefined,
|
|
1427
1605
|
};
|
|
@@ -1543,18 +1721,6 @@ const hexToP3 = (hex) => {
|
|
|
1543
1721
|
return `color(display-p3 ${values.r / 255} ${values.g / 255} ${values.b / 255})`;
|
|
1544
1722
|
};
|
|
1545
1723
|
|
|
1546
|
-
/**
|
|
1547
|
-
*
|
|
1548
|
-
* IMPORTANT NOTE: This file is a workaround for the following issue:
|
|
1549
|
-
*
|
|
1550
|
-
* When using rollup with styled-components to build into an ES module, styled components decides to move all of it’s DOM elements into "styled.default" rather than just within "styled"
|
|
1551
|
-
*
|
|
1552
|
-
* We're unsure as to why this issue occurs, if you have any ideas or a better solution please let us know by opening a discussion on our GitHub repo:
|
|
1553
|
-
* https://github.com/family/connectkit/discussions/new
|
|
1554
|
-
*
|
|
1555
|
-
*/
|
|
1556
|
-
var styled = typeof styled$1.div === "function" ? styled$1 : styled$1["default"];
|
|
1557
|
-
|
|
1558
1724
|
var base = {
|
|
1559
1725
|
light: {
|
|
1560
1726
|
/** Connect Wallet Button */
|
|
@@ -4900,8 +5066,8 @@ const useWallets = (isMobile) => {
|
|
|
4900
5066
|
...wallet,
|
|
4901
5067
|
});
|
|
4902
5068
|
}
|
|
5069
|
+
addIfNotPresent("com.trustwallet.app");
|
|
4903
5070
|
addIfNotPresent("me.rainbow");
|
|
4904
|
-
addIfNotPresent("metaMask, metaMask-io, io.metamask, io.metamask.mobile, metaMaskSDK");
|
|
4905
5071
|
// Add WalletConnect last
|
|
4906
5072
|
const walletConnectConnector = connectors.find((c) => c.id === "walletConnect");
|
|
4907
5073
|
if (walletConnectConnector) {
|
|
@@ -4926,7 +5092,7 @@ const useWallets = (isMobile) => {
|
|
|
4926
5092
|
name: connector.name ?? connector.id ?? connector.type,
|
|
4927
5093
|
icon: (jsx("img", { src: connector.icon, alt: connector.name, width: "100%", height: "100%" })),
|
|
4928
5094
|
connector,
|
|
4929
|
-
iconShape: "squircle",
|
|
5095
|
+
iconShape: connector.id === "io.rabby" ? "circle" : "squircle",
|
|
4930
5096
|
isInstalled: connector.type === "mock" ||
|
|
4931
5097
|
(connector.type === "injected" && connector.id !== "metaMask") ||
|
|
4932
5098
|
connector.type === "farcasterFrame" ||
|
|
@@ -5228,6 +5394,7 @@ const Modal = ({ open, pages, pageId, positionInside, inline, demo, onClose, onB
|
|
|
5228
5394
|
? 2
|
|
5229
5395
|
: 1;
|
|
5230
5396
|
const prevDepth = usePrevious(currentDepth, currentDepth);
|
|
5397
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
5231
5398
|
if (!positionInside)
|
|
5232
5399
|
useLockBodyScroll(mounted);
|
|
5233
5400
|
usePrevious(pageId, pageId);
|
|
@@ -5260,6 +5427,7 @@ const Modal = ({ open, pages, pageId, positionInside, inline, demo, onClose, onB
|
|
|
5260
5427
|
// Avoid transition mixups
|
|
5261
5428
|
setInTransition(inTransition === undefined ? false : true);
|
|
5262
5429
|
clearTimeout(blockTimeout);
|
|
5430
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
5263
5431
|
blockTimeout = setTimeout(() => setInTransition(false), 360);
|
|
5264
5432
|
// Calculate new content bounds
|
|
5265
5433
|
updateBounds(node);
|
|
@@ -5342,10 +5510,13 @@ const Modal = ({ open, pages, pageId, positionInside, inline, demo, onClose, onB
|
|
|
5342
5510
|
if (!selectedDepositAddressOption)
|
|
5343
5511
|
return undefined;
|
|
5344
5512
|
return `Pay with ${selectedDepositAddressOption.id}`;
|
|
5513
|
+
case ROUTES.SELECT_ZKP2P:
|
|
5514
|
+
return "Select App";
|
|
5345
5515
|
case ROUTES.SELECT_AMOUNT:
|
|
5346
5516
|
case ROUTES.SELECT_EXTERNAL_AMOUNT:
|
|
5347
5517
|
case ROUTES.SELECT_DEPOSIT_ADDRESS_AMOUNT:
|
|
5348
5518
|
case ROUTES.SOLANA_SELECT_AMOUNT:
|
|
5519
|
+
case ROUTES.SELECT_WALLET_AMOUNT:
|
|
5349
5520
|
return "Select Amount";
|
|
5350
5521
|
case ROUTES.PAY_WITH_TOKEN:
|
|
5351
5522
|
if (selectedTokenOption == null)
|
|
@@ -6193,14 +6364,14 @@ const About = () => {
|
|
|
6193
6364
|
};
|
|
6194
6365
|
}, [sliderRef]);
|
|
6195
6366
|
const graphics = [
|
|
6196
|
-
jsx(SlideOne, { layoutId: "graphicCircle", duration: animationDuration, ease: animationEase }),
|
|
6197
|
-
jsx(SlideTwo, { layoutId: "graphicCircle", duration: animationDuration, ease: animationEase }),
|
|
6198
|
-
jsx(SlideThree, { layoutId: "graphicCircle", duration: animationDuration, ease: animationEase }),
|
|
6367
|
+
jsx(SlideOne, { layoutId: "graphicCircle", duration: animationDuration, ease: animationEase }, "slideOne"),
|
|
6368
|
+
jsx(SlideTwo, { layoutId: "graphicCircle", duration: animationDuration, ease: animationEase }, "slideTwo"),
|
|
6369
|
+
jsx(SlideThree, { layoutId: "graphicCircle", duration: animationDuration, ease: animationEase }, "slideThree"),
|
|
6199
6370
|
];
|
|
6200
6371
|
const mobileGraphics = [
|
|
6201
|
-
jsx(SlideOne, { duration: animationDuration, ease: animationEase }),
|
|
6202
|
-
jsx(SlideTwo, { duration: animationDuration, ease: animationEase }),
|
|
6203
|
-
jsx(SlideThree, { duration: animationDuration, ease: animationEase }),
|
|
6372
|
+
jsx(SlideOne, { duration: animationDuration, ease: animationEase }, "slideOne"),
|
|
6373
|
+
jsx(SlideTwo, { duration: animationDuration, ease: animationEase }, "slideTwo"),
|
|
6374
|
+
jsx(SlideThree, { duration: animationDuration, ease: animationEase }, "slideThree"),
|
|
6204
6375
|
];
|
|
6205
6376
|
// Adjust height of ModalBody to fit content based on language
|
|
6206
6377
|
const slideHeight = (() => {
|
|
@@ -6228,9 +6399,9 @@ const About = () => {
|
|
|
6228
6399
|
} }, i))) }) }), jsx(Button, { href: ctaUrl, arrow: true, children: locales.aboutScreen_ctaText })] }));
|
|
6229
6400
|
};
|
|
6230
6401
|
|
|
6231
|
-
|
|
6402
|
+
function WalletIcon$1({ ...props }) {
|
|
6232
6403
|
return (jsxs("svg", { "aria-hidden": "true", width: "20", height: "19", viewBox: "0 0 20 19", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [jsx("path", { d: "M1.57568 4.60616C1.57568 2.69827 3.12234 1.15161 5.03023 1.15161H15.3939C17.3018 1.15161 18.8484 2.69826 18.8484 4.60616V10.3637C18.8484 12.2716 17.3018 13.8183 15.3939 13.8183H5.03023C3.12234 13.8183 1.57568 12.2716 1.57568 10.3637V4.60616Z", stroke: "currentColor", strokeWidth: "2" }), jsx("path", { d: "M1 4.79293C1 2.435 3.31004 0.770014 5.54697 1.51566L12.4561 3.81869C13.8667 4.2889 14.8182 5.60901 14.8182 7.09596V13.6313C14.8182 15.9892 12.5081 17.6542 10.2712 16.9086L3.36212 14.6056C1.95149 14.1353 1 12.8152 1 11.3283V4.79293Z", fill: "var(--ck-body-background)", stroke: "currentColor", strokeWidth: "2" }), jsx("circle", { cx: "10.3863", cy: "10.1894", r: "1.32574", fill: "currentColor" })] }));
|
|
6233
|
-
}
|
|
6404
|
+
}
|
|
6234
6405
|
|
|
6235
6406
|
const Shimmer$1 = keyframes `
|
|
6236
6407
|
0%{ transform: translate(-100%) rotate(-45deg); }
|
|
@@ -6783,136 +6954,6 @@ const ScrollArea = ({ children, height, backgroundColor, mobileDirection, hideBo
|
|
|
6783
6954
|
}, children: jsxs("span", { children: [jsx(ArrowDown, {}), " More Available"] }) })] }));
|
|
6784
6955
|
};
|
|
6785
6956
|
|
|
6786
|
-
function useWalletConnectUri({ enabled } = {
|
|
6787
|
-
enabled: true,
|
|
6788
|
-
}) {
|
|
6789
|
-
const { log } = usePayContext();
|
|
6790
|
-
const [uri, setUri] = useState(undefined);
|
|
6791
|
-
const connector = useWalletConnectConnector();
|
|
6792
|
-
const { isConnected } = useAccount();
|
|
6793
|
-
const { connectAsync } = useConnect();
|
|
6794
|
-
useEffect(() => {
|
|
6795
|
-
if (!enabled)
|
|
6796
|
-
return;
|
|
6797
|
-
async function handleMessage(message) {
|
|
6798
|
-
const { type, data } = message;
|
|
6799
|
-
log("WC Message", type, data);
|
|
6800
|
-
if (type === "display_uri") {
|
|
6801
|
-
setUri(data);
|
|
6802
|
-
}
|
|
6803
|
-
/*
|
|
6804
|
-
// This has the URI as well, but we're probably better off using the one in the display_uri event
|
|
6805
|
-
if (type === 'connecting') {
|
|
6806
|
-
const p = await connector.getProvider();
|
|
6807
|
-
const uri = p.signer.uri;
|
|
6808
|
-
setConnectorUri(uri);
|
|
6809
|
-
}
|
|
6810
|
-
*/
|
|
6811
|
-
}
|
|
6812
|
-
async function handleDisconnect() {
|
|
6813
|
-
log("WC Disconnect");
|
|
6814
|
-
if (connector)
|
|
6815
|
-
connectWallet(connector);
|
|
6816
|
-
}
|
|
6817
|
-
async function connectWallet(connector) {
|
|
6818
|
-
const result = await connectAsync({ connector });
|
|
6819
|
-
if (result)
|
|
6820
|
-
return result;
|
|
6821
|
-
return false;
|
|
6822
|
-
}
|
|
6823
|
-
async function connectWalletConnect(connector) {
|
|
6824
|
-
try {
|
|
6825
|
-
await connectWallet(connector);
|
|
6826
|
-
}
|
|
6827
|
-
catch (error) {
|
|
6828
|
-
log("catch error");
|
|
6829
|
-
log(error);
|
|
6830
|
-
if (error.code) {
|
|
6831
|
-
switch (error.code) {
|
|
6832
|
-
case 4001:
|
|
6833
|
-
log("error.code - User rejected");
|
|
6834
|
-
connectWalletConnect(connector); // Regenerate QR code
|
|
6835
|
-
break;
|
|
6836
|
-
default:
|
|
6837
|
-
log("error.code - Unknown Error");
|
|
6838
|
-
break;
|
|
6839
|
-
}
|
|
6840
|
-
}
|
|
6841
|
-
else {
|
|
6842
|
-
// Sometimes the error doesn't respond with a code
|
|
6843
|
-
log("WalletConnect cannot connect.", error);
|
|
6844
|
-
}
|
|
6845
|
-
}
|
|
6846
|
-
}
|
|
6847
|
-
if (isConnected) {
|
|
6848
|
-
setUri(undefined);
|
|
6849
|
-
}
|
|
6850
|
-
else {
|
|
6851
|
-
if (!connector || uri)
|
|
6852
|
-
return;
|
|
6853
|
-
if (connector && !isConnected) {
|
|
6854
|
-
connectWalletConnect(connector);
|
|
6855
|
-
log("add wc listeners");
|
|
6856
|
-
connector.emitter.on("message", handleMessage);
|
|
6857
|
-
connector.emitter.on("disconnect", handleDisconnect);
|
|
6858
|
-
return () => {
|
|
6859
|
-
log("remove wc listeners");
|
|
6860
|
-
connector.emitter.off("message", handleMessage);
|
|
6861
|
-
connector.emitter.off("disconnect", handleDisconnect);
|
|
6862
|
-
};
|
|
6863
|
-
}
|
|
6864
|
-
}
|
|
6865
|
-
}, [enabled, connector, isConnected]);
|
|
6866
|
-
return {
|
|
6867
|
-
uri,
|
|
6868
|
-
};
|
|
6869
|
-
}
|
|
6870
|
-
|
|
6871
|
-
/** Determines whether the current wagmi configuration supports a given chain. */
|
|
6872
|
-
function useChainIsSupported(chainId) {
|
|
6873
|
-
const { chains } = useConfig();
|
|
6874
|
-
if (!chainId)
|
|
6875
|
-
return false;
|
|
6876
|
-
return chains.some((x) => x.id === chainId);
|
|
6877
|
-
}
|
|
6878
|
-
|
|
6879
|
-
const Web3Context = React.createContext({
|
|
6880
|
-
connect: {
|
|
6881
|
-
getUri: () => "",
|
|
6882
|
-
},
|
|
6883
|
-
dapp: {
|
|
6884
|
-
chains: [],
|
|
6885
|
-
},
|
|
6886
|
-
account: undefined,
|
|
6887
|
-
});
|
|
6888
|
-
const Web3ContextProvider = ({ enabled, children, }) => {
|
|
6889
|
-
const { uri: walletConnectUri } = useWalletConnectUri({
|
|
6890
|
-
enabled,
|
|
6891
|
-
});
|
|
6892
|
-
const { address: currentAddress, chain } = useAccount();
|
|
6893
|
-
const chainIsSupported = useChainIsSupported(chain?.id);
|
|
6894
|
-
const chains = useChains();
|
|
6895
|
-
const value = {
|
|
6896
|
-
connect: {
|
|
6897
|
-
getUri: (id) => {
|
|
6898
|
-
return walletConnectUri;
|
|
6899
|
-
},
|
|
6900
|
-
},
|
|
6901
|
-
dapp: {
|
|
6902
|
-
chains,
|
|
6903
|
-
},
|
|
6904
|
-
account: currentAddress
|
|
6905
|
-
? {
|
|
6906
|
-
chain,
|
|
6907
|
-
chainIsSupported,
|
|
6908
|
-
address: currentAddress,
|
|
6909
|
-
}
|
|
6910
|
-
: undefined,
|
|
6911
|
-
};
|
|
6912
|
-
return jsx(Web3Context.Provider, { value: value, children: children });
|
|
6913
|
-
};
|
|
6914
|
-
const useWeb3 = () => React.useContext(Web3Context);
|
|
6915
|
-
|
|
6916
6957
|
const AlertContainer = styled(motion.div) `
|
|
6917
6958
|
display: flex;
|
|
6918
6959
|
gap: 8px;
|
|
@@ -7290,27 +7331,35 @@ const ConnectorList = () => {
|
|
|
7290
7331
|
return (jsxs(ScrollArea, { mobileDirection: "horizontal", children: [walletsToDisplay.length === 0 && (jsx(Alert, { error: true, children: "No connectors found in ConnectKit config." })), walletsToDisplay.length > 0 && (jsx(ConnectorsContainer, { "$mobile": isMobile, "$totalResults": walletsToDisplay.length, children: walletsToDisplay.map((wallet) => (jsx(ConnectorItem, { wallet: wallet, isRecent: wallet.id === lastConnectorId }, wallet.id))) }))] }));
|
|
7291
7332
|
};
|
|
7292
7333
|
const ConnectorItem = ({ wallet, isRecent, }) => {
|
|
7293
|
-
const { connect: { getUri }, } = useWeb3();
|
|
7294
|
-
const uri = getUri();
|
|
7295
7334
|
const { isMobile } = useIsMobile();
|
|
7296
7335
|
const context = usePayContext();
|
|
7297
7336
|
const { connect } = useConnect();
|
|
7298
|
-
|
|
7299
|
-
|
|
7300
|
-
|
|
7301
|
-
|
|
7337
|
+
const order = context.paymentState.daimoPayOrder;
|
|
7338
|
+
// Deeplink directly to wallet if we have a already-hydrated order.
|
|
7339
|
+
const deeplink = order?.mode === DaimoPayOrderMode.HYDRATED &&
|
|
7340
|
+
wallet.getDaimoPayDeeplink?.(writeDaimoPayOrderID(order.id));
|
|
7341
|
+
// The "Other" 2x2 connector, goes to the MobileConnectors page.
|
|
7302
7342
|
const redirectToMoreWallets = isMobile && isWalletConnectConnector(wallet.id);
|
|
7303
7343
|
// Safari requires opening popup on user gesture, so we connect immediately here
|
|
7304
7344
|
const shouldConnectImmediately = (detectBrowser() === "safari" || detectBrowser() === "ios") &&
|
|
7305
7345
|
isCoinbaseWalletConnector(wallet.connector?.id);
|
|
7306
|
-
if (redirectToMoreWallets || shouldConnectImmediately)
|
|
7307
|
-
deeplink = undefined; // mobile redirects to more wallets page
|
|
7308
7346
|
return (jsxs(ConnectorButton, { type: "button", as: deeplink ? "a" : undefined, href: deeplink ? deeplink : undefined, disabled: context.route !== ROUTES.CONNECTORS, onClick: deeplink
|
|
7309
|
-
?
|
|
7347
|
+
? () => {
|
|
7348
|
+
context.paymentState.setSelectedWallet(wallet);
|
|
7349
|
+
context.paymentState.setSelectedWalletDeepLink(deeplink);
|
|
7350
|
+
context.setRoute(ROUTES.WAITING_WALLET, {
|
|
7351
|
+
event: "click-option",
|
|
7352
|
+
wallet_name: wallet.name,
|
|
7353
|
+
});
|
|
7354
|
+
}
|
|
7310
7355
|
: () => {
|
|
7311
7356
|
if (redirectToMoreWallets) {
|
|
7312
7357
|
context.setRoute(ROUTES.MOBILECONNECTORS);
|
|
7313
7358
|
}
|
|
7359
|
+
else if (context.paymentState.isDepositFlow && isMobile) {
|
|
7360
|
+
context.paymentState.setSelectedWallet(wallet);
|
|
7361
|
+
context.setRoute(ROUTES.SELECT_WALLET_AMOUNT);
|
|
7362
|
+
}
|
|
7314
7363
|
else {
|
|
7315
7364
|
if (shouldConnectImmediately) {
|
|
7316
7365
|
connect({ connector: wallet.connector });
|
|
@@ -7468,7 +7517,7 @@ function tokenAmountToRoundedUsd(amount, token, round = "nearest") {
|
|
|
7468
7517
|
}
|
|
7469
7518
|
|
|
7470
7519
|
/** Shows payment amount. */
|
|
7471
|
-
const OrderHeader = ({ minified = false, showEth = false, showSolana = false, }) => {
|
|
7520
|
+
const OrderHeader = ({ minified = false, showEth = false, showSolana = false, showZKP2P = false, }) => {
|
|
7472
7521
|
const { paymentState, route, wcWallet } = usePayContext();
|
|
7473
7522
|
const { isConnected: isEthConnected, address, connector } = useAccount();
|
|
7474
7523
|
const { connected: isSolanaConnected, publicKey, wallet: solanaWallet, } = useWallet$1();
|
|
@@ -7497,7 +7546,7 @@ const OrderHeader = ({ minified = false, showEth = false, showSolana = false, })
|
|
|
7497
7546
|
let solanaIcon = renderIcon(solanaWallet?.adapter.icon || jsx(Solana, {}), solanaWallet?.adapter.name);
|
|
7498
7547
|
if (minified) {
|
|
7499
7548
|
if (titleAmountContent != null) {
|
|
7500
|
-
return (jsxs(MinifiedContainer, { children: [jsx(MinifiedTitleAmount, { children: titleAmountContent }), showEth && isEthConnected && (jsx(Fragment, { children: jsxs(SubtitleContainer, { children: [jsx(Subtitle, { children: ethWalletDisplayName }), walletIcon] }) })), showSolana && isSolanaConnected && (jsx(Fragment, { children: jsxs(SubtitleContainer, { children: [jsx(Subtitle, { children: solWalletDisplayName }), solanaIcon] }) })), !showEth && !showSolana && (jsx(Fragment, { children: jsx(CoinLogos, { "$size": 32 }) }))] }));
|
|
7549
|
+
return (jsxs(MinifiedContainer, { children: [jsx(MinifiedTitleAmount, { children: titleAmountContent }), showEth && isEthConnected && (jsx(Fragment, { children: jsxs(SubtitleContainer, { children: [jsx(Subtitle, { children: ethWalletDisplayName }), walletIcon] }) })), showSolana && isSolanaConnected && (jsx(Fragment, { children: jsxs(SubtitleContainer, { children: [jsx(Subtitle, { children: solWalletDisplayName }), solanaIcon] }) })), !showEth && !showSolana && !showZKP2P && (jsx(Fragment, { children: jsx(CoinLogos, { "$size": 32 }) }))] }));
|
|
7501
7550
|
}
|
|
7502
7551
|
else {
|
|
7503
7552
|
return (jsxs(MinifiedContainer, { children: [jsx(CoinLogos, {}), jsx(Subtitle, { children: "1000+ tokens accepted" })] }));
|
|
@@ -7509,13 +7558,13 @@ const OrderHeader = ({ minified = false, showEth = false, showSolana = false, })
|
|
|
7509
7558
|
};
|
|
7510
7559
|
function CoinLogos({ $size = 24 }) {
|
|
7511
7560
|
const logos = [
|
|
7512
|
-
jsx(Ethereum, {}),
|
|
7513
|
-
jsx(USDC, {}),
|
|
7514
|
-
jsx(Optimism, {}),
|
|
7515
|
-
jsx(Arbitrum, {}),
|
|
7516
|
-
jsx(Base, {}),
|
|
7517
|
-
jsx(Polygon, {}),
|
|
7518
|
-
jsx(Solana, {}),
|
|
7561
|
+
jsx(Ethereum, {}, "eth"),
|
|
7562
|
+
jsx(USDC, {}, "usdc"),
|
|
7563
|
+
jsx(Optimism, {}, "optimism"),
|
|
7564
|
+
jsx(Arbitrum, {}, "arbitrum"),
|
|
7565
|
+
jsx(Base, {}, "base"),
|
|
7566
|
+
jsx(Polygon, {}, "polygon"),
|
|
7567
|
+
jsx(Solana, {}, "solana"),
|
|
7519
7568
|
];
|
|
7520
7569
|
const logoBlock = (element, index) => (jsx(LogoContainer$4, { "$marginLeft": index !== 0 ? -($size / 3) : 0, "$zIndex": logos.length - index, "$size": $size, transition: { duration: 0.5, ease: [0.175, 0.885, 0.32, 0.98] }, children: element }, index));
|
|
7521
7570
|
return (jsx(Logos, { children: logos.map((element, index) => logoBlock(element, index)) }));
|
|
@@ -7607,6 +7656,12 @@ const Wallets = () => {
|
|
|
7607
7656
|
const context = usePayContext();
|
|
7608
7657
|
const locales = useLocales({});
|
|
7609
7658
|
const { isMobile } = useIsMobile();
|
|
7659
|
+
// If we're on mobile & not in deposit mode, hydrate immediately.
|
|
7660
|
+
useEffect(() => {
|
|
7661
|
+
if (isMobile && !context.paymentState.isDepositFlow) {
|
|
7662
|
+
context.paymentState.payWithWallet();
|
|
7663
|
+
}
|
|
7664
|
+
}, [isMobile, context.paymentState.isDepositFlow]);
|
|
7610
7665
|
return (jsxs(PageContent, { children: [jsx(OrderHeader, { minified: true }), jsx(ConnectorList, {}), isMobile ? (jsx(Fragment, { children: jsxs(InfoBox, { children: [jsxs(ModalContent, { style: { padding: 0, textAlign: "left" }, children: [jsx(ModalH1, { "$small": true, children: locales.connectorsScreen_h1 }), jsx(ModalBody, { children: locales.connectorsScreen_p })] }), jsxs(InfoBoxButtons, { children: [!context.options?.hideQuestionMarkCTA && (jsx(Button, { variant: "tertiary", onClick: () => context.setRoute(ROUTES.ABOUT), children: locales.learnMore })), !context.options?.hideNoWalletCTA && (jsx(Button, { variant: "tertiary", onClick: () => context.setRoute(ROUTES.ONBOARDING), children: locales.getWallet }))] })] }) })) : (jsx(Fragment, { children: !context.options?.hideNoWalletCTA && (jsx(LearnMoreContainer, { children: jsxs(LearnMoreButton, { onClick: () => context.setRoute(ROUTES.ONBOARDING), children: [jsx(WalletIcon$1, {}), " ", locales.connectorsScreen_newcomer] }) })) })), context.options?.disclaimer && (jsx(Disclaimer, { style: { visibility: "hidden", pointerEvents: "none" }, children: jsx("div", { children: context.options?.disclaimer }) }))] }));
|
|
7611
7666
|
};
|
|
7612
7667
|
|
|
@@ -7838,8 +7893,6 @@ const TooltipTail = styled(motion.div) `
|
|
|
7838
7893
|
const Tooltip = ({ children, message, open, xOffset = 0, yOffset = 0, delay, }) => {
|
|
7839
7894
|
const context = usePayContext();
|
|
7840
7895
|
const themeContext = useThemeContext();
|
|
7841
|
-
if (context.options?.hideTooltips)
|
|
7842
|
-
return jsx(Fragment, { children: children });
|
|
7843
7896
|
const [isOpen, setIsOpen] = useState(false);
|
|
7844
7897
|
const [outOfBounds, setOutOfBounds] = useState(false);
|
|
7845
7898
|
const [size, setSize] = useState("small");
|
|
@@ -7888,6 +7941,8 @@ const Tooltip = ({ children, message, open, xOffset = 0, yOffset = 0, delay, })
|
|
|
7888
7941
|
useEffect(() => {
|
|
7889
7942
|
setIsOpen(!!open);
|
|
7890
7943
|
}, [open]);
|
|
7944
|
+
if (context.options?.hideTooltips)
|
|
7945
|
+
return jsx(Fragment, { children: children });
|
|
7891
7946
|
return (jsxs(Fragment, { children: [jsx(motion.div, { ref: ref, style: open === undefined
|
|
7892
7947
|
? {
|
|
7893
7948
|
cursor: "help",
|
|
@@ -8245,11 +8300,141 @@ const CopyToClipboard = ({ string, children, variant }) => {
|
|
|
8245
8300
|
return (jsxs(Container$5, { onClick: onCopy, "$disabled": !string, children: [jsx(CopyToClipboardIcon, { copied: clipboard, dark: true }), children] }));
|
|
8246
8301
|
};
|
|
8247
8302
|
|
|
8303
|
+
function useWalletConnectUri({ enabled } = {
|
|
8304
|
+
enabled: true,
|
|
8305
|
+
}) {
|
|
8306
|
+
const { log } = usePayContext();
|
|
8307
|
+
const [uri, setUri] = useState(undefined);
|
|
8308
|
+
const connector = useWalletConnectConnector();
|
|
8309
|
+
const { isConnected } = useAccount();
|
|
8310
|
+
const { connectAsync } = useConnect();
|
|
8311
|
+
useEffect(() => {
|
|
8312
|
+
if (!enabled)
|
|
8313
|
+
return;
|
|
8314
|
+
async function handleMessage(message) {
|
|
8315
|
+
const { type, data } = message;
|
|
8316
|
+
log("WC Message", type, data);
|
|
8317
|
+
if (type === "display_uri") {
|
|
8318
|
+
setUri(data);
|
|
8319
|
+
}
|
|
8320
|
+
/*
|
|
8321
|
+
// This has the URI as well, but we're probably better off using the one in the display_uri event
|
|
8322
|
+
if (type === 'connecting') {
|
|
8323
|
+
const p = await connector.getProvider();
|
|
8324
|
+
const uri = p.signer.uri;
|
|
8325
|
+
setConnectorUri(uri);
|
|
8326
|
+
}
|
|
8327
|
+
*/
|
|
8328
|
+
}
|
|
8329
|
+
async function handleDisconnect() {
|
|
8330
|
+
log("WC Disconnect");
|
|
8331
|
+
if (connector)
|
|
8332
|
+
connectWallet(connector);
|
|
8333
|
+
}
|
|
8334
|
+
async function connectWallet(connector) {
|
|
8335
|
+
const result = await connectAsync({ connector });
|
|
8336
|
+
if (result)
|
|
8337
|
+
return result;
|
|
8338
|
+
return false;
|
|
8339
|
+
}
|
|
8340
|
+
async function connectWalletConnect(connector) {
|
|
8341
|
+
try {
|
|
8342
|
+
await connectWallet(connector);
|
|
8343
|
+
}
|
|
8344
|
+
catch (error) {
|
|
8345
|
+
log("catch error");
|
|
8346
|
+
log(error);
|
|
8347
|
+
if (error.code) {
|
|
8348
|
+
switch (error.code) {
|
|
8349
|
+
case 4001:
|
|
8350
|
+
log("error.code - User rejected");
|
|
8351
|
+
connectWalletConnect(connector); // Regenerate QR code
|
|
8352
|
+
break;
|
|
8353
|
+
default:
|
|
8354
|
+
log("error.code - Unknown Error");
|
|
8355
|
+
break;
|
|
8356
|
+
}
|
|
8357
|
+
}
|
|
8358
|
+
else {
|
|
8359
|
+
// Sometimes the error doesn't respond with a code
|
|
8360
|
+
log("WalletConnect cannot connect.", error);
|
|
8361
|
+
}
|
|
8362
|
+
}
|
|
8363
|
+
}
|
|
8364
|
+
if (isConnected) {
|
|
8365
|
+
setUri(undefined);
|
|
8366
|
+
}
|
|
8367
|
+
else {
|
|
8368
|
+
if (!connector || uri)
|
|
8369
|
+
return;
|
|
8370
|
+
if (connector && !isConnected) {
|
|
8371
|
+
connectWalletConnect(connector);
|
|
8372
|
+
log("add wc listeners");
|
|
8373
|
+
connector.emitter.on("message", handleMessage);
|
|
8374
|
+
connector.emitter.on("disconnect", handleDisconnect);
|
|
8375
|
+
return () => {
|
|
8376
|
+
log("remove wc listeners");
|
|
8377
|
+
connector.emitter.off("message", handleMessage);
|
|
8378
|
+
connector.emitter.off("disconnect", handleDisconnect);
|
|
8379
|
+
};
|
|
8380
|
+
}
|
|
8381
|
+
}
|
|
8382
|
+
}, [enabled, connector, isConnected]);
|
|
8383
|
+
return {
|
|
8384
|
+
uri,
|
|
8385
|
+
};
|
|
8386
|
+
}
|
|
8387
|
+
|
|
8388
|
+
/** Determines whether the current wagmi configuration supports a given chain. */
|
|
8389
|
+
function useChainIsSupported(chainId) {
|
|
8390
|
+
const { chains } = useConfig();
|
|
8391
|
+
if (!chainId)
|
|
8392
|
+
return false;
|
|
8393
|
+
return chains.some((x) => x.id === chainId);
|
|
8394
|
+
}
|
|
8395
|
+
|
|
8396
|
+
const Web3Context = React.createContext({
|
|
8397
|
+
connect: {
|
|
8398
|
+
getUri: () => "",
|
|
8399
|
+
},
|
|
8400
|
+
dapp: {
|
|
8401
|
+
chains: [],
|
|
8402
|
+
},
|
|
8403
|
+
account: undefined,
|
|
8404
|
+
});
|
|
8405
|
+
const Web3ContextProvider = ({ enabled, children, }) => {
|
|
8406
|
+
const { uri: walletConnectUri } = useWalletConnectUri({
|
|
8407
|
+
enabled,
|
|
8408
|
+
});
|
|
8409
|
+
const { address: currentAddress, chain } = useAccount();
|
|
8410
|
+
const chainIsSupported = useChainIsSupported(chain?.id);
|
|
8411
|
+
const chains = useChains();
|
|
8412
|
+
const value = {
|
|
8413
|
+
connect: {
|
|
8414
|
+
getUri: (id) => {
|
|
8415
|
+
return walletConnectUri;
|
|
8416
|
+
},
|
|
8417
|
+
},
|
|
8418
|
+
dapp: {
|
|
8419
|
+
chains,
|
|
8420
|
+
},
|
|
8421
|
+
account: currentAddress
|
|
8422
|
+
? {
|
|
8423
|
+
chain,
|
|
8424
|
+
chainIsSupported,
|
|
8425
|
+
address: currentAddress,
|
|
8426
|
+
}
|
|
8427
|
+
: undefined,
|
|
8428
|
+
};
|
|
8429
|
+
return jsx(Web3Context.Provider, { value: value, children: children });
|
|
8430
|
+
};
|
|
8431
|
+
const useWeb3 = () => React.useContext(Web3Context);
|
|
8432
|
+
|
|
8248
8433
|
const MoreIcon = (jsx("svg", { width: "60", height: "60", viewBox: "0 0 60 60", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: jsx("path", { d: "M30 42V19M19 30.5H42", stroke: "var(--ck-body-color-muted)", strokeWidth: "3", strokeLinecap: "round" }) }));
|
|
8249
8434
|
const MobileConnectors = () => {
|
|
8250
|
-
const context = usePayContext();
|
|
8251
|
-
const { log } = context;
|
|
8252
8435
|
const locales = useLocales();
|
|
8436
|
+
const context = usePayContext();
|
|
8437
|
+
const { paymentState, setRoute } = context;
|
|
8253
8438
|
const { connect: { getUri }, } = useWeb3();
|
|
8254
8439
|
const wcUri = getUri();
|
|
8255
8440
|
const { open: openW3M, isOpen: isOpenW3M } = useWalletConnectModal();
|
|
@@ -8259,22 +8444,24 @@ const MobileConnectors = () => {
|
|
|
8259
8444
|
const wallet = walletConfigs[walletId];
|
|
8260
8445
|
if (wallets.find((w) => w.connector?.id === walletId))
|
|
8261
8446
|
return false;
|
|
8262
|
-
if (!wallet.getWalletConnectDeeplink)
|
|
8263
|
-
return false;
|
|
8264
8447
|
if (!wallet.showInMobileConnectors)
|
|
8265
8448
|
return false;
|
|
8266
8449
|
return true;
|
|
8267
8450
|
}) ?? [];
|
|
8268
|
-
const
|
|
8269
|
-
|
|
8270
|
-
|
|
8271
|
-
|
|
8272
|
-
|
|
8273
|
-
|
|
8274
|
-
if (
|
|
8275
|
-
|
|
8451
|
+
const goToWallet = (wallet) => {
|
|
8452
|
+
if (wallet.getDaimoPayDeeplink == null) {
|
|
8453
|
+
console.error(`wallet ${wallet.name} has no deeplink`);
|
|
8454
|
+
return;
|
|
8455
|
+
}
|
|
8456
|
+
context.paymentState.setSelectedWallet(wallet);
|
|
8457
|
+
if (paymentState.isDepositFlow) {
|
|
8458
|
+
setRoute(ROUTES.SELECT_WALLET_AMOUNT);
|
|
8459
|
+
}
|
|
8460
|
+
else {
|
|
8461
|
+
paymentState.payWithWallet(wallet);
|
|
8462
|
+
}
|
|
8276
8463
|
};
|
|
8277
|
-
return (jsx(PageContent, { style: { width: 312 }, children: jsxs(Container$6, { children: [jsx(ModalContent, { style: { paddingBottom: 0 }, children: jsx(ScrollArea, { height: 340, children: jsxs(WalletList, {
|
|
8464
|
+
return (jsx(PageContent, { style: { width: 312 }, children: jsxs(Container$6, { children: [jsx(ModalContent, { style: { paddingBottom: 0 }, children: jsx(ScrollArea, { height: 340, children: jsxs(WalletList, { children: [walletsIdsToDisplay
|
|
8278
8465
|
.sort(
|
|
8279
8466
|
// sort by name
|
|
8280
8467
|
(a, b) => {
|
|
@@ -8289,9 +8476,9 @@ const MobileConnectors = () => {
|
|
|
8289
8476
|
.map((walletId, i) => {
|
|
8290
8477
|
const wallet = walletConfigs[walletId];
|
|
8291
8478
|
const { name, shortName, iconConnector, icon } = wallet;
|
|
8292
|
-
return (jsxs(WalletItem, { onClick: () =>
|
|
8479
|
+
return (jsxs(WalletItem, { onClick: () => goToWallet(wallet), style: {
|
|
8293
8480
|
animationDelay: `${i * 50}ms`,
|
|
8294
|
-
}, children: [jsx(WalletIcon, {
|
|
8481
|
+
}, children: [jsx(WalletIcon, { children: iconConnector ?? icon }), jsx(WalletLabel, { children: shortName ?? name })] }, i));
|
|
8295
8482
|
}), jsxs(WalletItem, { onClick: openW3M, "$waiting": isOpenW3M, children: [jsx(WalletIcon, { style: { background: "var(--ck-body-background-secondary)" }, children: isOpenW3M ? (jsx("div", { style: {
|
|
8296
8483
|
position: "absolute",
|
|
8297
8484
|
inset: 0,
|
|
@@ -8306,7 +8493,7 @@ const MobileConnectors = () => {
|
|
|
8306
8493
|
justifyContent: "center",
|
|
8307
8494
|
gap: 14,
|
|
8308
8495
|
paddingTop: 8,
|
|
8309
|
-
}, children: jsx(CopyToClipboard, { variant: "button", string: wcUri, children:
|
|
8496
|
+
}, children: jsx(CopyToClipboard, { variant: "button", string: wcUri, children: "Copy WC link" }) }))] }) }));
|
|
8310
8497
|
};
|
|
8311
8498
|
|
|
8312
8499
|
const Graphic = styled(motion.div) `
|
|
@@ -8537,7 +8724,7 @@ const Introduction = () => {
|
|
|
8537
8724
|
const context = usePayContext();
|
|
8538
8725
|
const locales = useLocales({});
|
|
8539
8726
|
const ctaUrl = context.options?.walletOnboardingUrl ?? locales.onboardingScreen_ctaUrl;
|
|
8540
|
-
return (jsxs(PageContent, { children: [jsxs(Graphic, { children: [jsxs(LogoGroup, { children: [jsx(Logo$2, { children: jsx(LogoPosition, { children: jsx(LogoInner, { children: jsx(FloatWrapper, { children: jsx(RotateWrapper, { children: jsx(LogoGraphic, { children: jsx(Logos$1.Coinbase, { background: true }) }) }) }) }) }) }), jsx(Logo$2, { children: jsx(LogoPosition, { children: jsx(LogoInner, { children: jsx(FloatWrapper, { children: jsx(RotateWrapper, { children: jsx(LogoGraphic, { children: jsx(Logos$1.MetaMask, {
|
|
8727
|
+
return (jsxs(PageContent, { children: [jsxs(Graphic, { children: [jsxs(LogoGroup, { children: [jsx(Logo$2, { children: jsx(LogoPosition, { children: jsx(LogoInner, { children: jsx(FloatWrapper, { children: jsx(RotateWrapper, { children: jsx(LogoGraphic, { children: jsx(Logos$1.Coinbase, { background: true }) }) }) }) }) }) }), jsx(Logo$2, { children: jsx(LogoPosition, { children: jsx(LogoInner, { children: jsx(FloatWrapper, { children: jsx(RotateWrapper, { children: jsx(LogoGraphic, { children: jsx(Logos$1.MetaMask, {}) }) }) }) }) }) }), jsx(Logo$2, { children: jsx(LogoPosition, { children: jsx(LogoInner, { children: jsx(FloatWrapper, { children: jsx(RotateWrapper, { children: jsx(LogoGraphic, { children: jsx(Logos$1.Rainbow, {}) }) }) }) }) }) }), jsx(Logo$2, { children: jsx(LogoPosition, { children: jsx(LogoInner, { children: jsx(FloatWrapper, { children: jsx(RotateWrapper, { children: jsx(LogoGraphic, { children: jsx(Logos$1.Phantom, {}) }) }) }) }) }) }), jsx(Logo$2, { children: jsx(LogoPosition, { children: jsx(LogoInner, { children: jsx(FloatWrapper, { children: jsx(RotateWrapper, { children: jsx(LogoGraphic, { children: jsx(Logos$1.Trust, {}) }) }) }) }) }) })] }), jsx(GraphicBackground, { children: wave })] }), jsxs(ModalContent, { style: { paddingBottom: 18 }, children: [jsx(ModalH1, { "$small": true, children: locales.onboardingScreen_h1 }), jsx(ModalBody, { children: locales.onboardingScreen_p })] }), jsx(Button, { href: ctaUrl, arrow: true, children: locales.onboardingScreen_ctaText })] }));
|
|
8541
8728
|
};
|
|
8542
8729
|
|
|
8543
8730
|
const SwitchNetworksContainer = styled.div `
|
|
@@ -9354,12 +9541,11 @@ const ConnectWithInjector = ({ switchConnectMethod, forceState }) => {
|
|
|
9354
9541
|
setStatus(states$1.UNAVAILABLE);
|
|
9355
9542
|
}
|
|
9356
9543
|
};
|
|
9357
|
-
let connectTimeout;
|
|
9358
9544
|
useEffect(() => {
|
|
9359
9545
|
if (status === states$1.UNAVAILABLE)
|
|
9360
9546
|
return;
|
|
9361
9547
|
// UX: Give user time to see the UI before opening the extension
|
|
9362
|
-
connectTimeout = setTimeout(runConnect, 600);
|
|
9548
|
+
const connectTimeout = setTimeout(runConnect, 600);
|
|
9363
9549
|
return () => {
|
|
9364
9550
|
clearTimeout(connectTimeout);
|
|
9365
9551
|
};
|
|
@@ -9421,18 +9607,18 @@ const IconContainer = styled(motion.div) `
|
|
|
9421
9607
|
display: block;
|
|
9422
9608
|
max-width: 100%;
|
|
9423
9609
|
height: auto;
|
|
9424
|
-
|
|
9610
|
+
}
|
|
9425
9611
|
`;
|
|
9426
9612
|
const ScanIconWithLogos = ({ logo }) => {
|
|
9427
9613
|
const logoList = [
|
|
9428
|
-
jsx(Logos$1.MetaMask, { background: true }),
|
|
9429
|
-
jsx(Logos$1.Coinbase, { background: true }),
|
|
9430
|
-
jsx(Logos$1.Crypto, {}),
|
|
9431
|
-
jsx(Logos$1.ImToken, {}),
|
|
9432
|
-
jsx(Logos$1.Argent, {}),
|
|
9433
|
-
jsx(Logos$1.Trust, {}),
|
|
9614
|
+
jsx(Logos$1.MetaMask, { background: true }, "metamask"),
|
|
9615
|
+
jsx(Logos$1.Coinbase, { background: true }, "coinbase"),
|
|
9616
|
+
jsx(Logos$1.Crypto, {}, "crypto"),
|
|
9617
|
+
jsx(Logos$1.ImToken, {}, "imtoken"),
|
|
9618
|
+
jsx(Logos$1.Argent, {}, "argent"),
|
|
9619
|
+
jsx(Logos$1.Trust, {}, "trust"),
|
|
9434
9620
|
];
|
|
9435
|
-
return (jsx(IconContainer, { children: jsxs("svg", { "aria-hidden": "true", width: "47", height: "52", viewBox: "0 0 47 52", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsxs("g", { mask: "url(#gradient-mask)", children: [jsx("path", { d: "M7 14.5C7 11.4624 9.46243 9 12.5 9H31.5C34.5376 9 37 11.4624 37 14.5V47H7V14.5Z", fill: "var(--ck-graphic-scaniconwithlogos-04)" }), logo ? (jsx("foreignObject", { x: "13", y: "21", width: "18", height: "18", rx: "5", children: jsx("div", { style: { overflow:
|
|
9621
|
+
return (jsx(IconContainer, { children: jsxs("svg", { "aria-hidden": "true", width: "47", height: "52", viewBox: "0 0 47 52", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsxs("g", { mask: "url(#gradient-mask)", children: [jsx("path", { d: "M7 14.5C7 11.4624 9.46243 9 12.5 9H31.5C34.5376 9 37 11.4624 37 14.5V47H7V14.5Z", fill: "var(--ck-graphic-scaniconwithlogos-04)" }), logo ? (jsx("foreignObject", { x: "13", y: "21", width: "18", height: "18", rx: "5", children: jsx("div", { style: { overflow: "hidden", borderRadius: 5 }, children: logo }) })) : (jsxs(Fragment, { children: [jsx("foreignObject", { x: "12", y: "15", width: "9", height: "9", rx: "2.5", children: jsx("div", { style: { overflow: "hidden", borderRadius: 2.5 }, children: logoList[0] }) }), jsx("foreignObject", { x: "23", y: "15", width: "9", height: "9", rx: "2.5", children: jsx("div", { style: { overflow: "hidden", borderRadius: 2.5 }, children: logoList[1] }) }), jsx("foreignObject", { x: "12", y: "26", width: "9", height: "9", rx: "2.5", children: jsx("div", { style: { overflow: "hidden", borderRadius: 2.5 }, children: jsx("div", { style: { overflow: "hidden", borderRadius: 2.5 }, children: logoList[2] }) }) }), jsx("foreignObject", { x: "23", y: "26", width: "9", height: "9", rx: "2.5", children: jsx("div", { style: { overflow: "hidden", borderRadius: 2.5 }, children: logoList[3] }) }), jsx("foreignObject", { x: "12", y: "37", width: "9", height: "9", rx: "2.5", children: jsx("div", { style: { overflow: "hidden", borderRadius: 2.5 }, children: logoList[4] }) }), jsx("foreignObject", { x: "23", y: "37", width: "9", height: "9", rx: "2.5", children: jsx("div", { style: { overflow: "hidden", borderRadius: 2.5 }, children: logoList[5] }) })] })), jsx("path", { d: "M36 47V13.7143C36 11.1107 33.8893 9 31.2857 9H12.7143C10.1107 9 8 11.1107 8 13.7143V47", stroke: "url(#paint0_linear_924_12568)", strokeWidth: "2" }), jsx("path", { d: "M15 10H29C29 11.1046 28.1046 12 27 12H17C15.8954 12 15 11.1046 15 10Z", fill: "var(--ck-graphic-scaniconwithlogos-01)" }), jsx("rect", { x: "1", y: "47", width: "43", height: "5", fill: "var(--ck-tooltip-background)" }), jsx("rect", { x: "22", y: "1", width: "24", height: "24", rx: "12", fill: "var(--ck-graphic-scaniconwithlogos-03)", stroke: "var(--ck-tooltip-background)", strokeWidth: "2" }), jsx("rect", { x: "34.5", y: "10", width: "2.5", height: "2.5", rx: "0.75", fill: "#373737" }), jsx("rect", { x: "31", y: "10", width: "2.5", height: "2.5", rx: "0.75", fill: "#373737" }), jsx("rect", { x: "31", y: "13.5", width: "2.5", height: "2.5", rx: "0.75", fill: "#373737" }), jsx("rect", { x: "34.5", y: "13.5", width: "2.5", height: "2.5", rx: "0.75", fill: "#373737" }), jsx("path", { d: "M28.5 10.5V9C28.5 8.17157 29.1716 7.5 30 7.5H31.5", stroke: "#373737", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }), jsx("path", { d: "M36.5 7.5L38 7.5C38.8284 7.5 39.5 8.17157 39.5 9L39.5 10.5", stroke: "#373737", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }), jsx("path", { d: "M39.5 15.5L39.5 17C39.5 17.8284 38.8284 18.5 38 18.5L36.5 18.5", stroke: "#373737", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }), jsx("path", { d: "M31.5 18.5L30 18.5C29.1716 18.5 28.5 17.8284 28.5 17L28.5 15.5", stroke: "#373737", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })] }), jsxs("defs", { children: [jsxs("linearGradient", { id: "paint0_linear_924_12568", x1: "22", y1: "8.2549", x2: "22", y2: "47", gradientUnits: "userSpaceOnUse", children: [jsx("stop", { stopColor: "var(--ck-graphic-scaniconwithlogos-01)" }), jsx("stop", { offset: "1", stopColor: "var(--ck-graphic-scaniconwithlogos-02)" })] }), jsxs("linearGradient", { id: "linear-gradient-mask", x1: "47", y1: "42", x2: "47", y2: "47", gradientUnits: "userSpaceOnUse", children: [jsx("stop", { stopColor: "white" }), jsx("stop", { offset: "1", stopColor: "black", stopOpacity: "0" })] }), jsx("mask", { id: "gradient-mask", children: jsx("rect", { x: "0", y: "0", width: "47", height: "52", fill: "url(#linear-gradient-mask)" }) })] })] }) }));
|
|
9436
9622
|
};
|
|
9437
9623
|
|
|
9438
9624
|
const ConnectWithQRCode = () => {
|
|
@@ -9524,9 +9710,9 @@ function getSupportUrl(daimoPayOrder, screen) {
|
|
|
9524
9710
|
return `mailto:${email}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;
|
|
9525
9711
|
}
|
|
9526
9712
|
|
|
9527
|
-
|
|
9713
|
+
function CrepeIcon({ ...props }) {
|
|
9528
9714
|
return (jsxs("svg", { width: "20", height: "20", viewBox: "0 0 512 512", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [jsx("path", { d: "M256.48 492.035L491.96 84.0876C422.688 44.0149 342.263 21.0746 256.48 21.0746C170.697 21.0746 90.2722 44.0149 21 84.0876L256.48 492.035Z", stroke: "currentColor", strokeWidth: "35", strokeMiterlimit: "10", strokeLinecap: "round", strokeLinejoin: "round" }), jsx("path", { d: "M473.885 84.5848C417.669 176.594 247.311 44.0744 143.584 148.461L257.946 487.638", stroke: "currentColor", strokeWidth: "35", strokeMiterlimit: "10", strokeLinecap: "round", strokeLinejoin: "round" })] }));
|
|
9529
|
-
}
|
|
9715
|
+
}
|
|
9530
9716
|
|
|
9531
9717
|
const PoweredByFooter = ({ supportUrl } = {}) => {
|
|
9532
9718
|
const [supportVisible, setSupportVisible] = useState(false);
|
|
@@ -9538,7 +9724,7 @@ const PoweredByFooter = ({ supportUrl } = {}) => {
|
|
|
9538
9724
|
setSupportVisible(true);
|
|
9539
9725
|
}, 2500);
|
|
9540
9726
|
return () => clearTimeout(timer);
|
|
9541
|
-
}, []);
|
|
9727
|
+
}, [supportUrl]);
|
|
9542
9728
|
return (jsx(Container$3, { children: jsxs(TextButton, { onClick: () => {
|
|
9543
9729
|
window.open(supportVisible
|
|
9544
9730
|
? supportUrl
|
|
@@ -9805,6 +9991,7 @@ var PayState$1;
|
|
|
9805
9991
|
})(PayState$1 || (PayState$1 = {}));
|
|
9806
9992
|
const PayWithToken = () => {
|
|
9807
9993
|
const { isMobile, isIOS } = useIsMobile();
|
|
9994
|
+
const { connector } = useAccount();
|
|
9808
9995
|
const { triggerResize, paymentState, setRoute, log, wcWallet } = usePayContext();
|
|
9809
9996
|
const { payWithToken, selectedTokenOption } = paymentState;
|
|
9810
9997
|
const [payState, setPayState] = useState(PayState$1.RequestingPayment);
|
|
@@ -9867,10 +10054,10 @@ const PayWithToken = () => {
|
|
|
9867
10054
|
console.error("Failed to pay with token", e);
|
|
9868
10055
|
}
|
|
9869
10056
|
};
|
|
9870
|
-
let transferTimeout; // Prevent double-triggering in React dev strict mode.
|
|
9871
10057
|
useEffect(() => {
|
|
9872
10058
|
if (!selectedTokenOption)
|
|
9873
10059
|
return;
|
|
10060
|
+
let transferTimeout;
|
|
9874
10061
|
// Give user time to see the UI before opening on mobile
|
|
9875
10062
|
if (wcWallet && isMobile) {
|
|
9876
10063
|
if (!isIOS) {
|
|
@@ -9900,11 +10087,14 @@ const PayWithToken = () => {
|
|
|
9900
10087
|
if (selectedTokenOption == null) {
|
|
9901
10088
|
return jsx(PageContent, {});
|
|
9902
10089
|
}
|
|
9903
|
-
return (jsxs(PageContent, { children: [jsx(TokenLogoSpinner, { token: selectedTokenOption.required.token }), jsxs(ModalContent, { style: { paddingBottom: 0 }, "$preserveDisplay": true, children: [jsx(ModalH1, { children: payState }), jsx(PaymentBreakdown, { paymentOption: selectedTokenOption }), payState === PayState$1.RequestingPayment &&
|
|
10090
|
+
return (jsxs(PageContent, { children: [jsx(TokenLogoSpinner, { token: selectedTokenOption.required.token }), jsxs(ModalContent, { style: { paddingBottom: 0 }, "$preserveDisplay": true, children: [jsx(ModalH1, { children: payState }), jsx(PaymentBreakdown, { paymentOption: selectedTokenOption }), payState === PayState$1.RequestingPayment &&
|
|
10091
|
+
wcWallet &&
|
|
10092
|
+
isMobile &&
|
|
10093
|
+
!connector?.id?.includes("injected") && (jsx(Button, { icon: jsx(ExternalLinkIcon, {}), onClick: wcWallet.isWcMobileConnector
|
|
9904
10094
|
? () => handleTransfer(selectedTokenOption)
|
|
9905
10095
|
: undefined, href: wcWallet.isWcMobileConnector
|
|
9906
10096
|
? undefined
|
|
9907
|
-
: wcWallet.
|
|
10097
|
+
: wcWallet.deeplinkScheme ||
|
|
9908
10098
|
wcWallet.getWalletConnectDeeplink?.(""), children: "Tap Here to Pay" })), payState === PayState$1.RequestCancelled && (jsx(Button, { onClick: () => handleTransfer(selectedTokenOption), children: "Retry Payment" }))] })] }));
|
|
9909
10099
|
};
|
|
9910
10100
|
|
|
@@ -10118,11 +10308,11 @@ const MultiCurrencySelectAmount = ({ selectedTokenOption, setSelectedTokenOption
|
|
|
10118
10308
|
tokenSymbol: balanceToken.symbol,
|
|
10119
10309
|
});
|
|
10120
10310
|
};
|
|
10121
|
-
return (jsxs(PageContent, { children: [jsx(TokenLogoSpinner, { token: balanceToken }), jsxs(ModalContent, { "$preserveDisplay": true, children: [jsxs(AmountInputContainer$
|
|
10311
|
+
return (jsxs(PageContent, { children: [jsx(TokenLogoSpinner, { token: balanceToken }), jsxs(ModalContent, { "$preserveDisplay": true, children: [jsxs(AmountInputContainer$3, { children: [jsx(MaxButton, { style: { visibility: "hidden" }, children: "Max" }), jsx(AmountInputField, { value: isEditingUsd ? usdValue : tokenValue, onChange: handleAmountChange, currency: isEditingUsd ? "$" : balanceToken.symbol, onKeyDown: handleKeyDown }), jsx(MaxButton, { onClick: handleMax, children: "Max" })] }), balanceToken.fiatISO !== "USD" && (jsx(SwitchContainer, { children: jsx(SwitchButton, { onClick: handleSwitchCurrency, children: jsx(SecondaryAmount, { children: isEditingUsd
|
|
10122
10312
|
? `${tokenValue} ${balanceToken.symbol}`
|
|
10123
10313
|
: `$${usdValue}` }) }) })), message && jsx(ModalBody, { children: message }), jsx(Button, { onClick: handleContinue, disabled: continueDisabled, children: "Continue" })] })] }));
|
|
10124
10314
|
};
|
|
10125
|
-
const AmountInputContainer$
|
|
10315
|
+
const AmountInputContainer$3 = styled.div `
|
|
10126
10316
|
display: flex;
|
|
10127
10317
|
align-items: center;
|
|
10128
10318
|
justify-content: center;
|
|
@@ -10218,9 +10408,9 @@ const SelectDepositAddressAmount = () => {
|
|
|
10218
10408
|
paymentState.setChosenUsd(amountUsd);
|
|
10219
10409
|
setRoute(ROUTES.WAITING_DEPOSIT_ADDRESS, { amountUsd });
|
|
10220
10410
|
};
|
|
10221
|
-
return (jsxs(PageContent, { children: [jsx(ExternalPaymentSpinner, { logoURI: selectedDepositAddressOption.logoURI, logoShape: "circle" }), jsxs(ModalContent, { "$preserveDisplay": true, children: [jsx(AmountInputContainer$
|
|
10411
|
+
return (jsxs(PageContent, { children: [jsx(ExternalPaymentSpinner, { logoURI: selectedDepositAddressOption.logoURI, logoShape: "circle" }), jsxs(ModalContent, { "$preserveDisplay": true, children: [jsx(AmountInputContainer$2, { children: jsx(AmountInputField, { value: usdInput, onChange: handleAmountChange, onKeyDown: handleKeyDown }) }), message && jsx(ModalBody, { children: message }), jsx(Button, { onClick: handleContinue, disabled: continueDisabled, children: "Continue" })] })] }));
|
|
10222
10412
|
};
|
|
10223
|
-
const AmountInputContainer$
|
|
10413
|
+
const AmountInputContainer$2 = styled.div `
|
|
10224
10414
|
display: flex;
|
|
10225
10415
|
align-items: center;
|
|
10226
10416
|
justify-content: center;
|
|
@@ -10346,32 +10536,6 @@ const OptionSubtitle = styled(motion.span) `
|
|
|
10346
10536
|
overflow: hidden;
|
|
10347
10537
|
width: 100%;
|
|
10348
10538
|
`;
|
|
10349
|
-
const OptionIcon = styled(motion.div) `
|
|
10350
|
-
position: absolute;
|
|
10351
|
-
right: 20px;
|
|
10352
|
-
width: 32px;
|
|
10353
|
-
height: 32px;
|
|
10354
|
-
overflow: visible;
|
|
10355
|
-
svg,
|
|
10356
|
-
img {
|
|
10357
|
-
display: block;
|
|
10358
|
-
position: relative;
|
|
10359
|
-
pointer-events: none;
|
|
10360
|
-
overflow: hidden;
|
|
10361
|
-
width: 100%;
|
|
10362
|
-
height: 100%;
|
|
10363
|
-
}
|
|
10364
|
-
|
|
10365
|
-
&[data-shape="squircle"] {
|
|
10366
|
-
border-radius: 22.5%;
|
|
10367
|
-
}
|
|
10368
|
-
&[data-shape="circle"] {
|
|
10369
|
-
border-radius: 100%;
|
|
10370
|
-
}
|
|
10371
|
-
&[data-shape="square"] {
|
|
10372
|
-
border-radius: 0;
|
|
10373
|
-
}
|
|
10374
|
-
`;
|
|
10375
10539
|
const OptionsContainer$1 = styled.div `
|
|
10376
10540
|
transition: opacity 300ms ease;
|
|
10377
10541
|
display: flex;
|
|
@@ -10385,7 +10549,7 @@ const OptionsContainer$1 = styled.div `
|
|
|
10385
10549
|
`}
|
|
10386
10550
|
`;
|
|
10387
10551
|
|
|
10388
|
-
const OptionsList = ({ options, isLoading, requiredSkeletons, scrollHeight = 300, orDivider = false, }) => {
|
|
10552
|
+
const OptionsList = ({ options, isLoading, requiredSkeletons, scrollHeight = 300, orDivider = false, hideBottomLine = false, }) => {
|
|
10389
10553
|
const { triggerResize, log } = usePayContext();
|
|
10390
10554
|
const optionsLength = options.length;
|
|
10391
10555
|
useEffect(() => {
|
|
@@ -10401,7 +10565,7 @@ const OptionsList = ({ options, isLoading, requiredSkeletons, scrollHeight = 300
|
|
|
10401
10565
|
return (jsxs(OptionsContainer$1, { "$totalResults": options.length, children: [options.map((option) => (jsx(OptionItem, { option: option }, option.id))), isLoading &&
|
|
10402
10566
|
Array.from({ length: skeletonCount }).map((_, index) => (jsx(SkeletonOptionItem, {}, index)))] }));
|
|
10403
10567
|
}
|
|
10404
|
-
return (jsxs(Fragment, { children: [jsx(ScrollArea, { mobileDirection: "vertical", height: scrollHeight, hideBottomLine: orDivider, totalItems: options.length, children: jsx(OptionsContainer$1, { "$totalResults": options.length, children: options.map((option) => (jsx(OptionItem, { option: option }, option.id))) }) }), orDivider && jsx(OrDivider, {})] }));
|
|
10568
|
+
return (jsxs(Fragment, { children: [jsx(ScrollArea, { mobileDirection: "vertical", height: scrollHeight, hideBottomLine: orDivider || hideBottomLine, totalItems: options.length, children: jsx(OptionsContainer$1, { "$totalResults": options.length, children: options.map((option) => (jsx(OptionItem, { option: option }, option.id))) }) }), orDivider && jsx(OrDivider, {})] }));
|
|
10405
10569
|
};
|
|
10406
10570
|
const SkeletonOptionItem = () => {
|
|
10407
10571
|
return (jsxs(OptionButton, { type: "button", children: [jsx(SkeletonIcon, {}), jsx(SkeletonLabel, {})] }));
|
|
@@ -10436,16 +10600,12 @@ const SkeletonLabel = styled.div `
|
|
|
10436
10600
|
const OptionItem = ({ option }) => {
|
|
10437
10601
|
const hydratedIcons = option.icons.map((icon) => {
|
|
10438
10602
|
if (typeof icon === "string") {
|
|
10439
|
-
return jsx("img", { src: icon, alt: "" });
|
|
10603
|
+
return jsx("img", { src: icon, alt: "" }, option.id);
|
|
10440
10604
|
}
|
|
10441
10605
|
return icon;
|
|
10442
10606
|
});
|
|
10443
10607
|
const iconContent = (() => {
|
|
10444
|
-
|
|
10445
|
-
return jsx(OptionIcon, { children: hydratedIcons[0] });
|
|
10446
|
-
else {
|
|
10447
|
-
return (jsx(IconStackContainer, { children: hydratedIcons.map((icon, index) => (jsx(IconStackItem, { "$marginRight": index !== hydratedIcons.length - 1 ? -12 : 0, "$zIndex": hydratedIcons.length - index, children: icon }, index))) }));
|
|
10448
|
-
}
|
|
10608
|
+
return (jsx(IconStackContainer, { children: hydratedIcons.map((icon, index) => (jsx(IconStackItem, { "$marginRight": index !== hydratedIcons.length - 1 ? -12 : 0, "$zIndex": hydratedIcons.length - index, children: icon }, index))) }));
|
|
10449
10609
|
})();
|
|
10450
10610
|
return (jsxs(OptionButton, { type: "button", onClick: option.onClick, disabled: option.disabled, children: [iconContent, jsxs(OptionLabel, { children: [jsx(OptionTitle, { children: option.title }), option.subtitle && jsx(OptionSubtitle, { children: option.subtitle })] })] }));
|
|
10451
10611
|
};
|
|
@@ -10488,12 +10648,8 @@ function SelectAnotherMethodButton() {
|
|
|
10488
10648
|
const { paymentState, setRoute } = usePayContext();
|
|
10489
10649
|
const { externalPaymentOptions, daimoPayOrder } = paymentState;
|
|
10490
10650
|
const { connector } = useAccount();
|
|
10491
|
-
const { disconnectAsync } = useDisconnect();
|
|
10492
10651
|
const paymentOptions = daimoPayOrder?.metadata.payer?.paymentOptions;
|
|
10493
|
-
const allPaymentOptions =
|
|
10494
|
-
...externalPaymentOptions.options.map((option) => option.id),
|
|
10495
|
-
...(paymentOptions ?? []),
|
|
10496
|
-
].flat();
|
|
10652
|
+
const allPaymentOptions = Array.from(externalPaymentOptions.options.values()).flat();
|
|
10497
10653
|
const includeSolana = paymentOptions == null ||
|
|
10498
10654
|
paymentOptions.includes(ExternalPaymentOptions.Solana);
|
|
10499
10655
|
// Deposit address options, e.g. Bitcoin, Tron, Zcash, etc.
|
|
@@ -10512,9 +10668,8 @@ function SelectAnotherMethodButton() {
|
|
|
10512
10668
|
id: "select-wallet",
|
|
10513
10669
|
title: "Pay with another wallet",
|
|
10514
10670
|
icons: getBestUnconnectedWalletIcons(connector),
|
|
10515
|
-
onClick:
|
|
10516
|
-
|
|
10517
|
-
setRoute(ROUTES.CONNECTORS);
|
|
10671
|
+
onClick: () => {
|
|
10672
|
+
setRoute(ROUTES.SELECT_METHOD);
|
|
10518
10673
|
},
|
|
10519
10674
|
};
|
|
10520
10675
|
function getBestUnconnectedWalletIcons(connector) {
|
|
@@ -10536,9 +10691,9 @@ function SelectAnotherMethodButton() {
|
|
|
10536
10691
|
return icons;
|
|
10537
10692
|
}
|
|
10538
10693
|
function getBestPaymentMethodIcons() {
|
|
10539
|
-
let icons = externalPaymentOptions.options
|
|
10694
|
+
let icons = (externalPaymentOptions.options.get("external") ?? [])
|
|
10540
10695
|
.filter((option) => option.id !== ExternalPaymentOptions.Daimo)
|
|
10541
|
-
.map((option) => (jsx("div", { style: { borderRadius: "22.5%", overflow: "hidden" }, children: jsx("img", { src: option.logoURI, alt: "" }) }, option.id)));
|
|
10696
|
+
.map((option) => (jsx("div", { style: { borderRadius: "22.5%", overflow: "hidden" }, children: typeof option.logoURI === "string" ? (jsx("img", { src: option.logoURI, alt: "" })) : (option.logoURI) }, option.id)));
|
|
10542
10697
|
if (icons.length < 3) {
|
|
10543
10698
|
const additionalIcons = [];
|
|
10544
10699
|
if (includeSolana)
|
|
@@ -10629,9 +10784,9 @@ const SelectExternalAmount = () => {
|
|
|
10629
10784
|
paymentState.setChosenUsd(amountUsd);
|
|
10630
10785
|
setRoute(ROUTES.WAITING_EXTERNAL, { amountUsd });
|
|
10631
10786
|
};
|
|
10632
|
-
return (jsxs(PageContent, { children: [jsx(ExternalPaymentSpinner, { logoURI: selectedExternalOption.logoURI, logoShape: selectedExternalOption.logoShape }), jsxs(ModalContent, { "$preserveDisplay": true, children: [jsx(AmountInputContainer, { children: jsx(AmountInputField, { value: usdInput, onChange: handleAmountChange, onKeyDown: handleKeyDown }) }), message && jsx(ModalBody, { children: message }), jsx(Button, { onClick: handleContinue, disabled: continueDisabled, children: "Continue" })] })] }));
|
|
10787
|
+
return (jsxs(PageContent, { children: [jsx(ExternalPaymentSpinner, { logoURI: selectedExternalOption.logoURI, logoShape: selectedExternalOption.logoShape }), jsxs(ModalContent, { "$preserveDisplay": true, children: [jsx(AmountInputContainer$1, { children: jsx(AmountInputField, { value: usdInput, onChange: handleAmountChange, onKeyDown: handleKeyDown }) }), message && jsx(ModalBody, { children: message }), jsx(Button, { onClick: handleContinue, disabled: continueDisabled, children: "Continue" })] })] }));
|
|
10633
10788
|
};
|
|
10634
|
-
const AmountInputContainer = styled.div `
|
|
10789
|
+
const AmountInputContainer$1 = styled.div `
|
|
10635
10790
|
display: flex;
|
|
10636
10791
|
align-items: center;
|
|
10637
10792
|
justify-content: center;
|
|
@@ -10656,17 +10811,19 @@ const ChainContainer$2 = styled(motion.div) `
|
|
|
10656
10811
|
`;
|
|
10657
10812
|
|
|
10658
10813
|
function SelectMethod() {
|
|
10659
|
-
const { isMobile, isIOS } = useIsMobile();
|
|
10814
|
+
const { isMobile, isIOS, isAndroid } = useIsMobile();
|
|
10660
10815
|
const { address, chain, isConnected: isEthConnected, connector, } = useAccount();
|
|
10661
|
-
const { connected: isSolanaConnected, wallet: solanaWallet, publicKey, } = useWallet$1();
|
|
10816
|
+
const { connected: isSolanaConnected, wallet: solanaWallet, wallets: solanaWallets, disconnect: disconnectSolana, publicKey, } = useWallet$1();
|
|
10662
10817
|
const { setRoute, paymentState, wcWallet, log } = usePayContext();
|
|
10663
10818
|
const { disconnectAsync } = useDisconnect();
|
|
10664
10819
|
const { daimoPayOrder, setSelectedExternalOption, externalPaymentOptions, showSolanaPaymentMethod, depositAddressOptions, senderEnsName, } = paymentState;
|
|
10665
|
-
|
|
10820
|
+
// Decide whether to show the connected eth account, solana account, or both.
|
|
10821
|
+
const showConnectedEth = isEthConnected;
|
|
10822
|
+
const showConnectedSolana = isSolanaConnected && showSolanaPaymentMethod;
|
|
10666
10823
|
const getConnectedWalletOptions = () => {
|
|
10667
10824
|
const showChainLogo = isEthConnected && isSolanaConnected;
|
|
10668
10825
|
const connectedOptions = [];
|
|
10669
|
-
if (
|
|
10826
|
+
if (showConnectedEth) {
|
|
10670
10827
|
const ethWalletDisplayName = senderEnsName ?? (address ? getAddressContraction(address) : "wallet");
|
|
10671
10828
|
let walletIcon;
|
|
10672
10829
|
if (connector?.icon) {
|
|
@@ -10676,8 +10833,7 @@ function SelectMethod() {
|
|
|
10676
10833
|
walletIcon = (jsx("div", { style: { borderRadius: "22.5%", overflow: "hidden" }, children: typeof wcWallet.icon === "string" ? (jsx("img", { src: wcWallet.icon, alt: wcWallet.name })) : (wcWallet.icon) }));
|
|
10677
10834
|
}
|
|
10678
10835
|
else {
|
|
10679
|
-
|
|
10680
|
-
walletIcon = jsx(MetaMask, {});
|
|
10836
|
+
walletIcon = jsx(WalletIcon$2, {});
|
|
10681
10837
|
}
|
|
10682
10838
|
const connectedEthWalletOption = {
|
|
10683
10839
|
id: "connectedWallet",
|
|
@@ -10696,17 +10852,17 @@ function SelectMethod() {
|
|
|
10696
10852
|
};
|
|
10697
10853
|
connectedOptions.push(connectedEthWalletOption);
|
|
10698
10854
|
}
|
|
10699
|
-
if (
|
|
10855
|
+
if (showConnectedSolana) {
|
|
10700
10856
|
const solWalletDisplayName = getAddressContraction(publicKey?.toBase58() ?? "");
|
|
10701
10857
|
const connectedSolWalletOption = {
|
|
10702
10858
|
id: "connectedSolanaWallet",
|
|
10703
10859
|
title: `Pay with ${solWalletDisplayName}`,
|
|
10704
10860
|
icons: solanaWallet?.adapter.icon
|
|
10705
10861
|
? [
|
|
10706
|
-
jsx(WalletChainLogo, { walletIcon: solanaWallet.adapter.icon, walletName: solanaWallet.adapter.name, chainLogo: showChainLogo && jsx(Solana, {}) }),
|
|
10862
|
+
jsx(WalletChainLogo, { walletIcon: solanaWallet.adapter.icon, walletName: solanaWallet.adapter.name, chainLogo: showChainLogo && jsx(Solana, {}) }, "sol-wallet"),
|
|
10707
10863
|
]
|
|
10708
10864
|
: [
|
|
10709
|
-
jsx(WalletChainLogo, { walletIcon: jsx(Solana, {}), walletName: "Default wallet icon", chainLogo: null }),
|
|
10865
|
+
jsx(WalletChainLogo, { walletIcon: jsx(Solana, {}), walletName: "Default wallet icon", chainLogo: null }, "sol-wallet"),
|
|
10710
10866
|
],
|
|
10711
10867
|
onClick: () => {
|
|
10712
10868
|
setRoute(ROUTES.SOLANA_SELECT_TOKEN, {
|
|
@@ -10723,15 +10879,16 @@ function SelectMethod() {
|
|
|
10723
10879
|
};
|
|
10724
10880
|
// Deposit address options, e.g. Bitcoin, Tron, Zcash, etc.
|
|
10725
10881
|
// Include by default if paymentOptions not provided
|
|
10726
|
-
const showDepositAddressMethod =
|
|
10727
|
-
|
|
10882
|
+
const showDepositAddressMethod = externalPaymentOptions.options
|
|
10883
|
+
.get("external")
|
|
10884
|
+
?.some((o) => o.id == ExternalPaymentOptions.ExternalChains);
|
|
10728
10885
|
const connectedWalletOptions = getConnectedWalletOptions();
|
|
10729
10886
|
const unconnectedWalletOption = {
|
|
10730
10887
|
id: "unconnectedWallet",
|
|
10731
10888
|
title: isEthConnected || isSolanaConnected
|
|
10732
10889
|
? `Pay with another wallet`
|
|
10733
10890
|
: `Pay with wallet`,
|
|
10734
|
-
icons: getBestUnconnectedWalletIcons(connector),
|
|
10891
|
+
icons: getBestUnconnectedWalletIcons(connector, isMobile),
|
|
10735
10892
|
onClick: async () => {
|
|
10736
10893
|
await disconnectAsync();
|
|
10737
10894
|
setRoute(ROUTES.CONNECTORS);
|
|
@@ -10742,13 +10899,27 @@ function SelectMethod() {
|
|
|
10742
10899
|
options.push(unconnectedWalletOption);
|
|
10743
10900
|
log(`[SELECT_METHOD] loading: ${externalPaymentOptions.loading}, options: ${JSON.stringify(externalPaymentOptions.options)}`);
|
|
10744
10901
|
if (showSolanaPaymentMethod) {
|
|
10745
|
-
const solanaOption = getSolanaOption(isIOS);
|
|
10902
|
+
const solanaOption = getSolanaOption(isIOS, isAndroid, solanaWallets, disconnectSolana, setRoute);
|
|
10746
10903
|
if (solanaOption) {
|
|
10747
10904
|
options.push(solanaOption);
|
|
10748
10905
|
}
|
|
10749
10906
|
}
|
|
10907
|
+
// ZKP2P is currently only available on desktop. Check if the user is on
|
|
10908
|
+
// desktop and if any ZKP2P options are available.
|
|
10909
|
+
const zkp2pOptions = externalPaymentOptions.options.get("zkp2p") ?? [];
|
|
10910
|
+
const showZkp2pPaymentMethod = !isMobile && zkp2pOptions.length > 0;
|
|
10911
|
+
if (showZkp2pPaymentMethod) {
|
|
10912
|
+
options.push({
|
|
10913
|
+
id: "ZKP2P",
|
|
10914
|
+
title: "Pay via payment app",
|
|
10915
|
+
icons: zkp2pOptions.slice(0, 3).map((option) => option.logoURI),
|
|
10916
|
+
onClick: () => {
|
|
10917
|
+
setRoute(ROUTES.SELECT_ZKP2P);
|
|
10918
|
+
},
|
|
10919
|
+
});
|
|
10920
|
+
}
|
|
10750
10921
|
// External payment options, e.g. Binance, Coinbase, etc.
|
|
10751
|
-
options.push(...(externalPaymentOptions.options ?? []).map((option) => ({
|
|
10922
|
+
options.push(...(externalPaymentOptions.options.get("external") ?? []).map((option) => ({
|
|
10752
10923
|
id: option.id,
|
|
10753
10924
|
title: option.cta,
|
|
10754
10925
|
icons: [option.logoURI],
|
|
@@ -10766,49 +10937,63 @@ function SelectMethod() {
|
|
|
10766
10937
|
subtitle: option.message,
|
|
10767
10938
|
})));
|
|
10768
10939
|
if (showDepositAddressMethod) {
|
|
10769
|
-
const depositAddressOption = getDepositAddressOption(depositAddressOptions);
|
|
10940
|
+
const depositAddressOption = getDepositAddressOption(depositAddressOptions, setRoute, paymentState.isDepositFlow);
|
|
10770
10941
|
options.push(depositAddressOption);
|
|
10771
10942
|
}
|
|
10772
10943
|
return (jsxs(PageContent, { children: [jsx(OrderHeader, {}), jsx(OptionsList, { requiredSkeletons: isMobile ? 4 : 3, isLoading: externalPaymentOptions.loading, options: externalPaymentOptions.loading ? [] : options }), jsx(PoweredByFooter, {})] }));
|
|
10773
10944
|
}
|
|
10774
10945
|
// Get 3 icons, skipping the one that is already connected
|
|
10775
|
-
function getBestUnconnectedWalletIcons(connector) {
|
|
10946
|
+
function getBestUnconnectedWalletIcons(connector, isMobile) {
|
|
10776
10947
|
const icons = [];
|
|
10777
10948
|
const strippedId = connector?.id.toLowerCase(); // some connector ids can have weird casing and or suffixes and prefixes
|
|
10778
|
-
const [
|
|
10779
|
-
strippedId?.includes("
|
|
10780
|
-
strippedId?.includes("
|
|
10949
|
+
const [isRainbow, isTrust, isPhantom, isCoinbase] = [
|
|
10950
|
+
strippedId?.includes("rainbow.me"),
|
|
10951
|
+
strippedId?.includes("trust"),
|
|
10952
|
+
strippedId?.includes("phantom"),
|
|
10781
10953
|
strippedId?.includes("coinbase"),
|
|
10954
|
+
strippedId?.includes("rainbow"),
|
|
10782
10955
|
];
|
|
10783
|
-
if (
|
|
10784
|
-
|
|
10785
|
-
|
|
10786
|
-
|
|
10787
|
-
|
|
10788
|
-
|
|
10789
|
-
|
|
10790
|
-
icons.
|
|
10956
|
+
if (isMobile) {
|
|
10957
|
+
if (!isTrust)
|
|
10958
|
+
icons.push(jsx(Trust, { background: true }));
|
|
10959
|
+
if (!isRainbow)
|
|
10960
|
+
icons.push(jsx(Rainbow, {}));
|
|
10961
|
+
if (!isPhantom)
|
|
10962
|
+
icons.push(jsx(Phantom, {}));
|
|
10963
|
+
if (icons.length < 3)
|
|
10964
|
+
icons.push(jsx(Coinbase, {}));
|
|
10965
|
+
}
|
|
10966
|
+
else {
|
|
10967
|
+
if (!isRainbow)
|
|
10968
|
+
icons.push(jsx(Rainbow, {}));
|
|
10969
|
+
if (!isPhantom)
|
|
10970
|
+
icons.push(jsx(Phantom, {}));
|
|
10971
|
+
if (!isCoinbase)
|
|
10972
|
+
icons.push(jsx(Coinbase, {}));
|
|
10973
|
+
if (icons.length < 3)
|
|
10974
|
+
icons.push(jsx(Rabby, {}));
|
|
10975
|
+
}
|
|
10791
10976
|
return icons;
|
|
10792
10977
|
}
|
|
10793
|
-
function getSolanaOption(
|
|
10794
|
-
|
|
10795
|
-
|
|
10796
|
-
if (
|
|
10978
|
+
function getSolanaOption(isIOS, isAndroid, solanaWallets, disconnectSolana, setRoute) {
|
|
10979
|
+
// If we're on iOS and there are no wallets, we don't need to show the Solana option
|
|
10980
|
+
// If we're on Android and there are less than 2 wallets, we don't need to show the Solana option because there is always a default wallet called Mobile Wallet Adapter that is not useful
|
|
10981
|
+
if ((isIOS && solanaWallets.length === 0) ||
|
|
10982
|
+
(isAndroid && solanaWallets.length < 2))
|
|
10797
10983
|
return null;
|
|
10798
10984
|
return {
|
|
10799
10985
|
id: "solana",
|
|
10800
10986
|
title: "Pay on Solana",
|
|
10801
|
-
icons: [jsx(Solana, {})],
|
|
10987
|
+
icons: [jsx(Solana, {}, "solana")],
|
|
10802
10988
|
onClick: async () => {
|
|
10803
10989
|
await disconnectSolana();
|
|
10804
10990
|
setRoute(ROUTES.SOLANA_CONNECT);
|
|
10805
10991
|
},
|
|
10806
10992
|
};
|
|
10807
10993
|
}
|
|
10808
|
-
function getDepositAddressOption(depositAddressOptions) {
|
|
10809
|
-
const { setRoute, paymentState } = usePayContext();
|
|
10994
|
+
function getDepositAddressOption(depositAddressOptions, setRoute, isDepositFlow) {
|
|
10810
10995
|
// TODO: API should serve the subtitle and disabled
|
|
10811
|
-
const disabled = !
|
|
10996
|
+
const disabled = !isDepositFlow &&
|
|
10812
10997
|
!depositAddressOptions.loading &&
|
|
10813
10998
|
depositAddressOptions.options.length === 0;
|
|
10814
10999
|
const subtitle = disabled ? "Minimum $20.00" : "Bitcoin, Tron, Zcash...";
|
|
@@ -10816,7 +11001,11 @@ function getDepositAddressOption(depositAddressOptions) {
|
|
|
10816
11001
|
id: "depositAddress",
|
|
10817
11002
|
title: "Pay on another chain",
|
|
10818
11003
|
subtitle,
|
|
10819
|
-
icons: [
|
|
11004
|
+
icons: [
|
|
11005
|
+
jsx(Bitcoin, {}, "bitcoin"),
|
|
11006
|
+
jsx(Tron, {}, "tron"),
|
|
11007
|
+
jsx(Zcash, {}, "zcash"),
|
|
11008
|
+
],
|
|
10820
11009
|
onClick: () => {
|
|
10821
11010
|
setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN);
|
|
10822
11011
|
},
|
|
@@ -10843,9 +11032,12 @@ const ChainContainer$1 = styled(motion.div) `
|
|
|
10843
11032
|
|
|
10844
11033
|
function SelectToken() {
|
|
10845
11034
|
const { isMobile, isIOS } = useIsMobile();
|
|
10846
|
-
const isMobileFormat =
|
|
11035
|
+
const isMobileFormat = isMobile || window?.innerWidth < defaultTheme.mobileWidth;
|
|
10847
11036
|
const { setRoute, paymentState, wcWallet } = usePayContext();
|
|
10848
11037
|
const { isDepositFlow, walletPaymentOptions, setSelectedTokenOption } = paymentState;
|
|
11038
|
+
const { connector } = useAccount();
|
|
11039
|
+
const { connected: isSolanaConnected } = useWallet$1();
|
|
11040
|
+
console.log("connector", connector);
|
|
10849
11041
|
const optionsList = walletPaymentOptions.options?.map((option) => {
|
|
10850
11042
|
const chainName = getChainName(option.balance.token.chainId);
|
|
10851
11043
|
const titlePrice = isDepositFlow
|
|
@@ -10876,8 +11068,8 @@ function SelectToken() {
|
|
|
10876
11068
|
else {
|
|
10877
11069
|
setRoute(ROUTES.PAY_WITH_TOKEN, meta);
|
|
10878
11070
|
if (isMobile && isIOS) {
|
|
10879
|
-
if (wcWallet?.
|
|
10880
|
-
window.open(wcWallet?.
|
|
11071
|
+
if (wcWallet?.deeplinkScheme) {
|
|
11072
|
+
window.open(wcWallet?.deeplinkScheme, "_blank");
|
|
10881
11073
|
}
|
|
10882
11074
|
else {
|
|
10883
11075
|
//If the wallet is a wc mobile connector we don't have the deep link
|
|
@@ -10891,18 +11083,102 @@ function SelectToken() {
|
|
|
10891
11083
|
disabled,
|
|
10892
11084
|
};
|
|
10893
11085
|
}) ?? [];
|
|
11086
|
+
// IsAnotherMethodButtonVisible is true when there are token options and we are in desktop mode or in mobile mode using a wallet connect connector
|
|
11087
|
+
const isAnotherMethodButtonVisible = (optionsList.length != 0 &&
|
|
11088
|
+
(!isMobileFormat || isWalletConnectConnector(connector?.id))) ||
|
|
11089
|
+
(optionsList.length == 0 && isSolanaConnected);
|
|
10894
11090
|
return (jsxs(PageContent, { children: [jsx(OrderHeader, { minified: true, showEth: true }), !walletPaymentOptions.isLoading && optionsList.length === 0 && (jsxs(ModalContent, { style: {
|
|
10895
11091
|
display: "flex",
|
|
10896
11092
|
alignItems: "center",
|
|
10897
11093
|
justifyContent: "center",
|
|
10898
11094
|
paddingTop: 16,
|
|
10899
11095
|
paddingBottom: 16,
|
|
10900
|
-
}, children: [jsx(ModalH1, { children: "Insufficient balance." }), jsx(SelectAnotherMethodButton, {})] })), jsx(OptionsList, { requiredSkeletons: 4, isLoading: walletPaymentOptions.isLoading, options: optionsList, scrollHeight: isMobileFormat ? 225 : 300, orDivider:
|
|
11096
|
+
}, children: [jsx(ModalH1, { children: "Insufficient balance." }), jsx(SelectAnotherMethodButton, {})] })), jsx(OptionsList, { requiredSkeletons: 4, isLoading: walletPaymentOptions.isLoading, options: optionsList, scrollHeight: isAnotherMethodButtonVisible && isMobileFormat ? 225 : 300, orDivider: isAnotherMethodButtonVisible, hideBottomLine: !isAnotherMethodButtonVisible }), isAnotherMethodButtonVisible && jsx(SelectAnotherMethodButton, {})] }));
|
|
10901
11097
|
}
|
|
10902
11098
|
function getDaimoTokenKey(token) {
|
|
10903
11099
|
return `${token.chainId}-${token.token}`;
|
|
10904
11100
|
}
|
|
10905
11101
|
|
|
11102
|
+
const WalletPaymentSpinner = ({ logo, logoShape, }) => {
|
|
11103
|
+
const optionSpinner = (() => {
|
|
11104
|
+
if (typeof logo === "string") {
|
|
11105
|
+
if (logoShape === "circle") {
|
|
11106
|
+
return (jsx(CircleSpinner, { logo: jsx("img", { src: logo }), loading: false, unavailable: false }));
|
|
11107
|
+
}
|
|
11108
|
+
else {
|
|
11109
|
+
return jsx(SquircleSpinner, { logo: jsx("img", { src: logo }), loading: false });
|
|
11110
|
+
}
|
|
11111
|
+
}
|
|
11112
|
+
else {
|
|
11113
|
+
if (logoShape === "circle") {
|
|
11114
|
+
return (jsx(CircleSpinner, { logo: logo, loading: false, unavailable: false }));
|
|
11115
|
+
}
|
|
11116
|
+
else {
|
|
11117
|
+
return jsx(SquircleSpinner, { logo: logo, loading: false });
|
|
11118
|
+
}
|
|
11119
|
+
}
|
|
11120
|
+
})();
|
|
11121
|
+
return (jsx(LoadingContainer$2, { children: jsx(AnimationContainer$1, { "$circle": logoShape === "circle", children: jsx(AnimatePresence, { children: optionSpinner }) }) }));
|
|
11122
|
+
};
|
|
11123
|
+
|
|
11124
|
+
const SelectWalletAmount = () => {
|
|
11125
|
+
const { paymentState } = usePayContext();
|
|
11126
|
+
const { selectedWallet, payWithWallet } = paymentState;
|
|
11127
|
+
const maxUsdLimit = paymentState.getOrderUsdLimit();
|
|
11128
|
+
const [usdInput, setUsdInput] = useState("");
|
|
11129
|
+
const [continueDisabled, setContinueDisabled] = useState(true);
|
|
11130
|
+
if (selectedWallet == null) {
|
|
11131
|
+
return jsx(PageContent, {});
|
|
11132
|
+
}
|
|
11133
|
+
const handleAmountChange = (e) => {
|
|
11134
|
+
const value = e.target.value;
|
|
11135
|
+
if (value !== "" && !isValidNumber(value, USD_DECIMALS))
|
|
11136
|
+
return;
|
|
11137
|
+
setUsdInput(value);
|
|
11138
|
+
const usd = Number(sanitizeNumber(value));
|
|
11139
|
+
setContinueDisabled(usd <= 0 || usd > maxUsdLimit);
|
|
11140
|
+
};
|
|
11141
|
+
const handleContinue = async () => {
|
|
11142
|
+
const amountUsd = Number(sanitizeNumber(usdInput));
|
|
11143
|
+
await payWithWallet(selectedWallet, amountUsd);
|
|
11144
|
+
};
|
|
11145
|
+
return (jsxs(PageContent, { children: [jsx(WalletPaymentSpinner, { logo: selectedWallet.icon, logoShape: selectedWallet.iconShape === "square"
|
|
11146
|
+
? "squircle"
|
|
11147
|
+
: selectedWallet.iconShape || "squircle" }), jsxs(ModalContent, { "$preserveDisplay": true, children: [jsx(AmountInputContainer, { children: jsx(AmountInputField, { value: usdInput, onChange: handleAmountChange }) }), jsx(Button, { onClick: handleContinue, disabled: continueDisabled, children: "Continue" })] })] }));
|
|
11148
|
+
};
|
|
11149
|
+
const AmountInputContainer = styled.div `
|
|
11150
|
+
display: flex;
|
|
11151
|
+
align-items: center;
|
|
11152
|
+
justify-content: center;
|
|
11153
|
+
`;
|
|
11154
|
+
|
|
11155
|
+
const SelectZKP = () => {
|
|
11156
|
+
const { paymentState, setRoute } = usePayContext();
|
|
11157
|
+
const { externalPaymentOptions, setSelectedExternalOption } = paymentState;
|
|
11158
|
+
const zkp2pOptions = externalPaymentOptions.options.get("zkp2p");
|
|
11159
|
+
if (!zkp2pOptions) {
|
|
11160
|
+
return (jsxs(PageContent, { children: [jsx(OrderHeader, { minified: true, showZKP2P: true }), jsx(ModalH1, { children: "No ZKP2P options available" })] }));
|
|
11161
|
+
}
|
|
11162
|
+
const options = zkp2pOptions.map((option) => ({
|
|
11163
|
+
id: option.id,
|
|
11164
|
+
title: option.cta,
|
|
11165
|
+
icons: [option.logoURI],
|
|
11166
|
+
onClick: () => {
|
|
11167
|
+
setSelectedExternalOption(option);
|
|
11168
|
+
const meta = { event: "click-option", option: option.id };
|
|
11169
|
+
if (paymentState.isDepositFlow) {
|
|
11170
|
+
setRoute(ROUTES.SELECT_EXTERNAL_AMOUNT, meta);
|
|
11171
|
+
}
|
|
11172
|
+
else {
|
|
11173
|
+
setRoute(ROUTES.WAITING_EXTERNAL, meta);
|
|
11174
|
+
}
|
|
11175
|
+
},
|
|
11176
|
+
disabled: option.disabled,
|
|
11177
|
+
subtitle: option.message,
|
|
11178
|
+
}));
|
|
11179
|
+
return (jsxs(PageContent, { children: [jsx(OrderHeader, { minified: true, showZKP2P: true }), jsx(OptionsList, { options: options })] }));
|
|
11180
|
+
};
|
|
11181
|
+
|
|
10906
11182
|
const ConnectSolana$1 = () => {
|
|
10907
11183
|
const solanaWallets = useWallet$1();
|
|
10908
11184
|
const isConnected = solanaWallets.connected;
|
|
@@ -10954,7 +11230,7 @@ const ConnectSolana = () => {
|
|
|
10954
11230
|
id: wallet.adapter.name,
|
|
10955
11231
|
title: `${wallet.adapter.name}`,
|
|
10956
11232
|
icons: [
|
|
10957
|
-
jsx(SquircleIcon, { icon: wallet.adapter.icon, alt: wallet.adapter.name }),
|
|
11233
|
+
jsx(SquircleIcon, { icon: wallet.adapter.icon, alt: wallet.adapter.name }, wallet.adapter.name),
|
|
10958
11234
|
],
|
|
10959
11235
|
onClick: async () => {
|
|
10960
11236
|
log("wallet.adapter.name ", wallet.adapter.name);
|
|
@@ -10973,7 +11249,7 @@ const ConnectSolana = () => {
|
|
|
10973
11249
|
id: "phantom",
|
|
10974
11250
|
title: "Open in Phantom",
|
|
10975
11251
|
icons: [
|
|
10976
|
-
jsx(SquircleIcon, { icon: (props) => jsx(Phantom, { ...props, background: true }), alt: "Phantom" }),
|
|
11252
|
+
jsx(SquircleIcon, { icon: (props) => jsx(Phantom, { ...props, background: true }), alt: "Phantom" }, "phantom"),
|
|
10977
11253
|
],
|
|
10978
11254
|
onClick: () => window.open(`https://phantom.app/ul/browse/${encodeURIComponent(window.location.href)}?ref=${encodeURIComponent(window.location.origin)}`),
|
|
10979
11255
|
},
|
|
@@ -10981,7 +11257,7 @@ const ConnectSolana = () => {
|
|
|
10981
11257
|
id: "solflare",
|
|
10982
11258
|
title: "Open in Solflare",
|
|
10983
11259
|
icons: [
|
|
10984
|
-
jsx(SquircleIcon, { icon: (props) => jsx(Solflare, { ...props, background: true }), alt: "Solflare" }),
|
|
11260
|
+
jsx(SquircleIcon, { icon: (props) => jsx(Solflare, { ...props, background: true }), alt: "Solflare" }, "solflare"),
|
|
10985
11261
|
],
|
|
10986
11262
|
onClick: () => window.open(`https://solflare.com/ul/v1/browse/${encodeURIComponent(window.location.href)}?ref=${encodeURIComponent(window.location.origin)}`, "_blank"),
|
|
10987
11263
|
},
|
|
@@ -10989,7 +11265,7 @@ const ConnectSolana = () => {
|
|
|
10989
11265
|
id: "backpack",
|
|
10990
11266
|
title: "Open in Backpack",
|
|
10991
11267
|
icons: [
|
|
10992
|
-
jsx(SquircleIcon, { icon: (props) => jsx(Backpack, { ...props, background: true }), alt: "Backpack" }),
|
|
11268
|
+
jsx(SquircleIcon, { icon: (props) => jsx(Backpack, { ...props, background: true }), alt: "Backpack" }, "backpack"),
|
|
10993
11269
|
],
|
|
10994
11270
|
onClick: () => window.open(`https://backpack.app/ul/v1/browse/${encodeURIComponent(window.location.href)}?ref=${encodeURIComponent(window.location.origin)}`, "_blank"),
|
|
10995
11271
|
},
|
|
@@ -11048,14 +11324,13 @@ const PayWithSolanaToken = () => {
|
|
|
11048
11324
|
}
|
|
11049
11325
|
}
|
|
11050
11326
|
};
|
|
11051
|
-
let transferTimeout; // Prevent double-triggering in React dev strict mode.
|
|
11052
11327
|
useEffect(() => {
|
|
11053
11328
|
if (!selectedSolanaTokenOption)
|
|
11054
11329
|
return;
|
|
11055
11330
|
// Give user time to see the UI before opening
|
|
11056
|
-
transferTimeout = setTimeout(handleTransfer, 100);
|
|
11331
|
+
const transferTimeout = setTimeout(handleTransfer, 100);
|
|
11057
11332
|
return () => clearTimeout(transferTimeout);
|
|
11058
|
-
}, []);
|
|
11333
|
+
}, [selectedSolanaTokenOption]);
|
|
11059
11334
|
useEffect(() => {
|
|
11060
11335
|
triggerResize();
|
|
11061
11336
|
}, [payState]);
|
|
@@ -11155,7 +11430,7 @@ const WaitingDepositAddress = () => {
|
|
|
11155
11430
|
useEffect(() => {
|
|
11156
11431
|
triggerResize();
|
|
11157
11432
|
}, [details]);
|
|
11158
|
-
return (jsx(PageContent, { children: failed ? (jsxs(ModalContent, { style: { marginLeft: 24, marginRight: 24 }, children: [jsxs(ModalH1, { children: [selectedDepositAddressOption?.id, " unavailable"] }), jsxs(ModalBody, { children: ["We're unable to process ", selectedDepositAddressOption?.id, " payments at this time. Please select another payment method."] }), jsx(SelectAnotherMethodButton, {})] })) : (jsxs(ModalContent, { children: [jsx(CustomQRCode, { value: details?.uri, image: jsx("img", { src: selectedDepositAddressOption?.logoURI, width: "100%", height: "100%" }), tooltipMessage: jsxs(Fragment, { children: [jsx(ScanIconWithLogos, { logo: jsx("img", { src: selectedDepositAddressOption?.logoURI }) }), jsxs("span", { children: ["Use a ", selectedDepositAddressOption?.id, " wallet to scan"] })] }) }), details && (jsxs(Fragment, { children: [jsx(OrDivider, {}), jsxs(ModalBody, { children: ["Send exactly ", details.amount, " ", details.suffix, " to", " ", getAddressContraction(details.address), " and return to this page. Confirmation should appear in a few minutes."] }), jsx(CopyToClipboard, { variant: "button", string: details.address, children: "Copy Address" }), jsx(CopyToClipboard, { variant: "left", string: details.amount, children: "Copy Amount" })] }))] })) }));
|
|
11433
|
+
return (jsx(PageContent, { children: failed ? (jsxs(ModalContent, { style: { marginLeft: 24, marginRight: 24 }, children: [jsxs(ModalH1, { children: [selectedDepositAddressOption?.id, " unavailable"] }), jsxs(ModalBody, { children: ["We're unable to process ", selectedDepositAddressOption?.id, " ", "payments at this time. Please select another payment method."] }), jsx(SelectAnotherMethodButton, {})] })) : (jsxs(ModalContent, { children: [jsx(CustomQRCode, { value: details?.uri, image: jsx("img", { src: selectedDepositAddressOption?.logoURI, width: "100%", height: "100%" }), tooltipMessage: jsxs(Fragment, { children: [jsx(ScanIconWithLogos, { logo: jsx("img", { src: selectedDepositAddressOption?.logoURI }) }), jsxs("span", { children: ["Use a ", selectedDepositAddressOption?.id, " wallet to scan"] })] }) }), details && (jsxs(Fragment, { children: [jsx(OrDivider, {}), jsxs(ModalBody, { children: ["Send exactly ", details.amount, " ", details.suffix, " to", " ", getAddressContraction(details.address), " and return to this page. Confirmation should appear in a few minutes."] }), jsx(CopyToClipboard, { variant: "button", string: details.address, children: "Copy Address" }), jsx(CopyToClipboard, { variant: "left", string: details.amount, children: "Copy Amount" })] }))] })) }));
|
|
11159
11434
|
};
|
|
11160
11435
|
|
|
11161
11436
|
const WaitingExternal = () => {
|
|
@@ -11164,6 +11439,15 @@ const WaitingExternal = () => {
|
|
|
11164
11439
|
const trpc = context.trpc;
|
|
11165
11440
|
const { isMobile } = useIsMobile();
|
|
11166
11441
|
const { selectedExternalOption, payWithExternal, paymentWaitingMessage, daimoPayOrder, } = paymentState;
|
|
11442
|
+
let isPaymentApp = false;
|
|
11443
|
+
if (selectedExternalOption) {
|
|
11444
|
+
isPaymentApp =
|
|
11445
|
+
selectedExternalOption.id === ExternalPaymentOptions.Venmo ||
|
|
11446
|
+
selectedExternalOption.id === ExternalPaymentOptions.CashApp ||
|
|
11447
|
+
selectedExternalOption.id === ExternalPaymentOptions.MercadoPago ||
|
|
11448
|
+
selectedExternalOption.id === ExternalPaymentOptions.Revolut ||
|
|
11449
|
+
selectedExternalOption.id === ExternalPaymentOptions.Wise;
|
|
11450
|
+
}
|
|
11167
11451
|
const [externalURL, setExternalURL] = useState(null);
|
|
11168
11452
|
useEffect(() => {
|
|
11169
11453
|
const checkForSourcePayment = async () => {
|
|
@@ -11188,15 +11472,19 @@ const WaitingExternal = () => {
|
|
|
11188
11472
|
});
|
|
11189
11473
|
}, [selectedExternalOption]);
|
|
11190
11474
|
const openExternalWindow = (url) => {
|
|
11191
|
-
if (isMobile) {
|
|
11475
|
+
if (isMobile || isPaymentApp) {
|
|
11192
11476
|
// on mobile: open in a new tab
|
|
11193
11477
|
window.open(url, "_blank");
|
|
11194
11478
|
}
|
|
11195
11479
|
else {
|
|
11196
11480
|
// on desktop: open in a popup window in
|
|
11197
11481
|
// portrait mode in the center of the screen
|
|
11198
|
-
|
|
11199
|
-
|
|
11482
|
+
let width = 500;
|
|
11483
|
+
let height = 700;
|
|
11484
|
+
// if (isPaymentApp) {
|
|
11485
|
+
// height = 800;
|
|
11486
|
+
// width = 800;
|
|
11487
|
+
// }
|
|
11200
11488
|
const left = Math.max(0, Math.floor((window.innerWidth - width) / 2) + window.screenX);
|
|
11201
11489
|
const top = Math.max(0, Math.floor((window.innerHeight - height) / 2) + window.screenY);
|
|
11202
11490
|
window.open(url, "popupWindow", `width=${width},height=${height},left=${left},top=${top},scrollbars=yes`);
|
|
@@ -11216,19 +11504,51 @@ const WaitingExternal = () => {
|
|
|
11216
11504
|
}, children: selectedExternalOption.cta })] }));
|
|
11217
11505
|
};
|
|
11218
11506
|
|
|
11507
|
+
const WaitingWallet = () => {
|
|
11508
|
+
const context = usePayContext();
|
|
11509
|
+
const { triggerResize, paymentState, setRoute } = context;
|
|
11510
|
+
const trpc = context.trpc;
|
|
11511
|
+
const { selectedWallet, paymentWaitingMessage, daimoPayOrder, selectedWalletDeepLink, refreshOrder, } = paymentState;
|
|
11512
|
+
useEffect(() => {
|
|
11513
|
+
if (daimoPayOrder?.id == null)
|
|
11514
|
+
return;
|
|
11515
|
+
const checkForSourcePayment = async () => {
|
|
11516
|
+
const found = await trpc.findSourcePayment.query({
|
|
11517
|
+
orderId: daimoPayOrder.id.toString(),
|
|
11518
|
+
});
|
|
11519
|
+
if (found) {
|
|
11520
|
+
setRoute(ROUTES.CONFIRMATION, { event: "found-source-payment" });
|
|
11521
|
+
}
|
|
11522
|
+
};
|
|
11523
|
+
const pollFn = daimoPayOrder?.mode === DaimoPayOrderMode.HYDRATED
|
|
11524
|
+
? checkForSourcePayment
|
|
11525
|
+
: refreshOrder;
|
|
11526
|
+
const interval = setInterval(pollFn, 1000);
|
|
11527
|
+
return () => clearInterval(interval);
|
|
11528
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
11529
|
+
}, [daimoPayOrder?.id, daimoPayOrder?.mode]);
|
|
11530
|
+
const openWalletWindow = (url) => {
|
|
11531
|
+
window.open(url, "_blank");
|
|
11532
|
+
};
|
|
11533
|
+
if (!selectedWallet) {
|
|
11534
|
+
return jsx(PageContent, { children: " No wallet selected " });
|
|
11535
|
+
}
|
|
11536
|
+
return (jsxs(PageContent, { children: [jsx(WalletPaymentSpinner, { logo: selectedWallet.icon, logoShape: selectedWallet.iconShape === "square"
|
|
11537
|
+
? "squircle"
|
|
11538
|
+
: selectedWallet.iconShape || "squircle" }), jsxs(ModalContent, { style: { marginLeft: 24, marginRight: 24 }, children: [jsxs(ModalH1, { children: ["Continue in ", selectedWallet.shortName ?? selectedWallet.name] }), paymentWaitingMessage && (jsx(ModalBody, { style: { marginTop: 12, marginBottom: 12 }, children: paymentWaitingMessage }))] }), jsx(Button, { icon: jsx(ExternalLinkIcon, {}), onClick: () => {
|
|
11539
|
+
if (selectedWalletDeepLink) {
|
|
11540
|
+
openWalletWindow(selectedWalletDeepLink);
|
|
11541
|
+
}
|
|
11542
|
+
}, children: `Open ${selectedWallet.name}` })] }));
|
|
11543
|
+
};
|
|
11544
|
+
|
|
11219
11545
|
const DaimoPayModal = ({ mode, theme, customTheme, lang, }) => {
|
|
11220
11546
|
const context = usePayContext();
|
|
11221
11547
|
const { setMode, setTheme, setCustomTheme, setLang } = context;
|
|
11222
11548
|
const paymentState = context.paymentState;
|
|
11223
|
-
const { payParams, generatePreviewOrder, isDepositFlow, showSolanaPaymentMethod, setPaymentWaitingMessage, setSelectedExternalOption, setSelectedTokenOption, setSelectedSolanaTokenOption, setSelectedDepositAddressOption, } = paymentState;
|
|
11549
|
+
const { payParams, generatePreviewOrder, isDepositFlow, showSolanaPaymentMethod, setPaymentWaitingMessage, setSelectedExternalOption, setSelectedTokenOption, setSelectedSolanaTokenOption, setSelectedDepositAddressOption, setSelectedWallet, } = paymentState;
|
|
11224
11550
|
const { isConnected: isEthConnected, connector, chain, address, } = useAccount();
|
|
11225
|
-
|
|
11226
|
-
const { daimoPayOrder } = paymentState;
|
|
11227
|
-
const paymentOptions = daimoPayOrder?.metadata.payer?.paymentOptions;
|
|
11228
|
-
// Solana payment option
|
|
11229
|
-
// Include by default if paymentOptions not provided
|
|
11230
|
-
paymentOptions == null ||
|
|
11231
|
-
paymentOptions.includes(ExternalPaymentOptions.Solana);
|
|
11551
|
+
useWallet$1();
|
|
11232
11552
|
const chainIsSupported = useChainIsSupported(chain?.id);
|
|
11233
11553
|
//if chain is unsupported we enforce a "switch chain" prompt
|
|
11234
11554
|
const closeable = !(context.options?.enforceSupportedChains &&
|
|
@@ -11259,6 +11579,9 @@ const DaimoPayModal = ({ mode, theme, customTheme, lang, }) => {
|
|
|
11259
11579
|
setSelectedDepositAddressOption(undefined);
|
|
11260
11580
|
context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, meta);
|
|
11261
11581
|
}
|
|
11582
|
+
else if (context.route === ROUTES.SELECT_ZKP2P) {
|
|
11583
|
+
context.setRoute(ROUTES.SELECT_METHOD, meta);
|
|
11584
|
+
}
|
|
11262
11585
|
else if (context.route === ROUTES.WAITING_EXTERNAL) {
|
|
11263
11586
|
setPaymentWaitingMessage(undefined);
|
|
11264
11587
|
if (isDepositFlow) {
|
|
@@ -11296,6 +11619,17 @@ const DaimoPayModal = ({ mode, theme, customTheme, lang, }) => {
|
|
|
11296
11619
|
context.setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN, meta);
|
|
11297
11620
|
}
|
|
11298
11621
|
}
|
|
11622
|
+
else if (context.route === ROUTES.WAITING_WALLET) {
|
|
11623
|
+
if (isDepositFlow) {
|
|
11624
|
+
assert(payParams != null, "[PAY MODAL] payParams cannot be null in deposit flow");
|
|
11625
|
+
generatePreviewOrder(payParams);
|
|
11626
|
+
context.setRoute(ROUTES.SELECT_WALLET_AMOUNT, meta);
|
|
11627
|
+
}
|
|
11628
|
+
else {
|
|
11629
|
+
setSelectedWallet(undefined);
|
|
11630
|
+
context.setRoute(ROUTES.SELECT_METHOD, meta);
|
|
11631
|
+
}
|
|
11632
|
+
}
|
|
11299
11633
|
else if (context.route === ROUTES.SOLANA_SELECT_AMOUNT) {
|
|
11300
11634
|
setSelectedSolanaTokenOption(undefined);
|
|
11301
11635
|
context.setRoute(ROUTES.SOLANA_SELECT_TOKEN, meta);
|
|
@@ -11321,9 +11655,12 @@ const DaimoPayModal = ({ mode, theme, customTheme, lang, }) => {
|
|
|
11321
11655
|
[ROUTES.SELECT_AMOUNT]: jsx(SelectAmount, {}),
|
|
11322
11656
|
[ROUTES.SELECT_EXTERNAL_AMOUNT]: jsx(SelectExternalAmount, {}),
|
|
11323
11657
|
[ROUTES.SELECT_DEPOSIT_ADDRESS_AMOUNT]: jsx(SelectDepositAddressAmount, {}),
|
|
11658
|
+
[ROUTES.SELECT_WALLET_AMOUNT]: jsx(SelectWalletAmount, {}),
|
|
11324
11659
|
[ROUTES.WAITING_EXTERNAL]: jsx(WaitingExternal, {}),
|
|
11325
11660
|
[ROUTES.SELECT_DEPOSIT_ADDRESS_CHAIN]: jsx(SelectDepositAddressChain, {}),
|
|
11326
11661
|
[ROUTES.WAITING_DEPOSIT_ADDRESS]: jsx(WaitingDepositAddress, {}),
|
|
11662
|
+
[ROUTES.SELECT_ZKP2P]: jsx(SelectZKP, {}),
|
|
11663
|
+
[ROUTES.WAITING_WALLET]: jsx(WaitingWallet, {}),
|
|
11327
11664
|
[ROUTES.CONFIRMATION]: jsx(Confirmation, {}),
|
|
11328
11665
|
[ROUTES.PAY_WITH_TOKEN]: jsx(PayWithToken, {}),
|
|
11329
11666
|
[ROUTES.SOLANA_CONNECT]: jsx(ConnectSolana, {}),
|
|
@@ -11354,12 +11691,12 @@ const DaimoPayModal = ({ mode, theme, customTheme, lang, }) => {
|
|
|
11354
11691
|
return;
|
|
11355
11692
|
if (context.route !== ROUTES.SELECT_METHOD)
|
|
11356
11693
|
return;
|
|
11357
|
-
const
|
|
11358
|
-
const
|
|
11694
|
+
const canPayEth = paymentState.walletPaymentOptions.options?.some((o) => o.disabledReason == null);
|
|
11695
|
+
const canPaySolana = paymentState.solanaPaymentOptions.options?.some((o) => o.disabledReason == null);
|
|
11359
11696
|
// Skip to token selection if exactly one wallet is connected. If both
|
|
11360
11697
|
// wallets are connected, stay on the SELECT_METHOD screen to allow the
|
|
11361
11698
|
// user to select which wallet to use
|
|
11362
|
-
if (
|
|
11699
|
+
if (canPayEth && !canPaySolana) {
|
|
11363
11700
|
context.setRoute(ROUTES.SELECT_TOKEN, {
|
|
11364
11701
|
event: "eth_connected_on_open",
|
|
11365
11702
|
walletId: connector?.id,
|
|
@@ -11367,7 +11704,7 @@ const DaimoPayModal = ({ mode, theme, customTheme, lang, }) => {
|
|
|
11367
11704
|
address,
|
|
11368
11705
|
});
|
|
11369
11706
|
}
|
|
11370
|
-
else if (
|
|
11707
|
+
else if (canPaySolana && !canPayEth) {
|
|
11371
11708
|
context.setRoute(ROUTES.SOLANA_SELECT_TOKEN, {
|
|
11372
11709
|
event: "solana_connected_on_open",
|
|
11373
11710
|
});
|
|
@@ -11378,8 +11715,8 @@ const DaimoPayModal = ({ mode, theme, customTheme, lang, }) => {
|
|
|
11378
11715
|
}, [
|
|
11379
11716
|
context.open,
|
|
11380
11717
|
context.wcWallet,
|
|
11381
|
-
|
|
11382
|
-
|
|
11718
|
+
paymentState.walletPaymentOptions.options,
|
|
11719
|
+
paymentState.solanaPaymentOptions.options,
|
|
11383
11720
|
showSolanaPaymentMethod,
|
|
11384
11721
|
address,
|
|
11385
11722
|
chain?.id,
|
|
@@ -11525,7 +11862,10 @@ const DaimoPayProviderWithoutSolana = ({ children, theme = "auto", mode = "auto"
|
|
|
11525
11862
|
const [redirectReturnUrl, setRedirectReturnUrl] = useState(undefined);
|
|
11526
11863
|
const log = useMemo(() => (debugMode ? console.log : () => { }), [debugMode]);
|
|
11527
11864
|
// Connect to the Daimo Pay TRPC API
|
|
11528
|
-
const trpc = useMemo(() =>
|
|
11865
|
+
const trpc = useMemo(() => {
|
|
11866
|
+
setInWalletPaymentUrlFromApiUrl(payApiUrl);
|
|
11867
|
+
return createTrpcClient(payApiUrl, sessionId);
|
|
11868
|
+
}, [payApiUrl, sessionId]);
|
|
11529
11869
|
const [resize, onResize] = useState(0);
|
|
11530
11870
|
const setOpen = useCallback((open, meta) => {
|
|
11531
11871
|
setOpenState(open);
|
|
@@ -11957,6 +12297,7 @@ function DaimoPayButtonCustom(props) {
|
|
|
11957
12297
|
else if (payParams != null) {
|
|
11958
12298
|
paymentState.setPayParams(payParams);
|
|
11959
12299
|
}
|
|
12300
|
+
paymentState.setButtonProps(props);
|
|
11960
12301
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
11961
12302
|
}, [payId, JSON.stringify(payParams || {})]);
|
|
11962
12303
|
// Set the confirmation message
|
|
@@ -11986,7 +12327,6 @@ function DaimoPayButtonCustom(props) {
|
|
|
11986
12327
|
// Payment events: call these three event handlers.
|
|
11987
12328
|
const { onPaymentStarted, onPaymentCompleted, onPaymentBounced } = props;
|
|
11988
12329
|
const order = paymentState.daimoPayOrder;
|
|
11989
|
-
const intentStatus = order?.intentStatus;
|
|
11990
12330
|
const hydOrder = order?.mode === DaimoPayOrderMode.HYDRATED ? order : null;
|
|
11991
12331
|
// Functions to show and hide the modal
|
|
11992
12332
|
const { children, closeOnSuccess, resetOnSuccess } = props;
|
|
@@ -11999,11 +12339,15 @@ function DaimoPayButtonCustom(props) {
|
|
|
11999
12339
|
const hide = useCallback(() => context.setOpen(false), [context]);
|
|
12000
12340
|
// Emit event handlers when payment status changes
|
|
12001
12341
|
const sentStart = useRef(false);
|
|
12342
|
+
const sentComplete = useRef(false);
|
|
12002
12343
|
useEffect(() => {
|
|
12003
12344
|
if (hydOrder == null)
|
|
12004
12345
|
return;
|
|
12005
|
-
|
|
12346
|
+
const intentStatus = hydOrder.intentStatus;
|
|
12347
|
+
// Started? Send start.
|
|
12348
|
+
if (intentStatus === DaimoPayIntentStatus.UNPAID) {
|
|
12006
12349
|
return;
|
|
12350
|
+
}
|
|
12007
12351
|
if (!sentStart.current && hydOrder.sourceTokenAmount) {
|
|
12008
12352
|
sentStart.current = true;
|
|
12009
12353
|
onPaymentStarted?.({
|
|
@@ -12014,8 +12358,13 @@ function DaimoPayButtonCustom(props) {
|
|
|
12014
12358
|
payment: getDaimoPayOrderView(hydOrder),
|
|
12015
12359
|
});
|
|
12016
12360
|
}
|
|
12017
|
-
|
|
12018
|
-
|
|
12361
|
+
// Finished? Send end event.
|
|
12362
|
+
if (intentStatus !== DaimoPayIntentStatus.COMPLETED &&
|
|
12363
|
+
intentStatus !== DaimoPayIntentStatus.BOUNCED) {
|
|
12364
|
+
return;
|
|
12365
|
+
}
|
|
12366
|
+
if (!sentComplete.current) {
|
|
12367
|
+
sentComplete.current = true;
|
|
12019
12368
|
const eventType = intentStatus === DaimoPayIntentStatus.COMPLETED
|
|
12020
12369
|
? DaimoPayEventType.PaymentCompleted
|
|
12021
12370
|
: DaimoPayEventType.PaymentBounced;
|
|
@@ -12033,12 +12382,14 @@ function DaimoPayButtonCustom(props) {
|
|
|
12033
12382
|
onPaymentBounced?.(event);
|
|
12034
12383
|
}
|
|
12035
12384
|
}
|
|
12036
|
-
|
|
12385
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
12386
|
+
}, [hydOrder]);
|
|
12037
12387
|
// Open the modal by default if the defaultOpen prop is true
|
|
12038
12388
|
useEffect(() => {
|
|
12039
12389
|
if (props.defaultOpen && order != null) {
|
|
12040
12390
|
show();
|
|
12041
12391
|
}
|
|
12392
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
12042
12393
|
}, [order != null, props.defaultOpen]);
|
|
12043
12394
|
// Validation
|
|
12044
12395
|
if ((payId == null) == (payParams == null)) {
|