@daimo/pay 1.16.6 → 1.16.8
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 +1 -5
- package/build/package.json.js +2 -2
- package/build/src/components/Common/ConnectorList/index.js +2 -2
- package/build/src/components/Common/ConnectorList/index.js.map +1 -1
- package/build/src/components/Pages/MobileConnectors/index.js +3 -19
- package/build/src/components/Pages/MobileConnectors/index.js.map +1 -1
- package/build/src/defaultConfig.js +1 -3
- package/build/src/defaultConfig.js.map +1 -1
- package/build/src/defaultConnectors.js +0 -6
- package/build/src/defaultConnectors.js.map +1 -1
- package/build/src/utils/index.js +1 -2
- package/build/src/utils/index.js.map +1 -1
- package/build/src/wallets/useWallets.js +2 -9
- package/build/src/wallets/useWallets.js.map +1 -1
- package/build/src/wallets/walletConfigs.js +6 -6
- package/build/src/wallets/walletConfigs.js.map +1 -1
- package/package.json +2 -2
- package/build/src/assets/crepe.js +0 -42
- package/build/src/assets/crepe.js.map +0 -1
- package/build/src/assets/wallet.js +0 -39
- package/build/src/assets/wallet.js.map +0 -1
- package/build/src/components/Pages/Connectors/styles.js +0 -267
- package/build/src/components/Pages/Connectors/styles.js.map +0 -1
- package/build/types-7ed033b6.d.ts +0 -66
package/build/index.d.ts
CHANGED
|
@@ -18,15 +18,11 @@ type DefaultConfigProps = {
|
|
|
18
18
|
appIcon?: string;
|
|
19
19
|
appDescription?: string;
|
|
20
20
|
appUrl?: string;
|
|
21
|
-
/**
|
|
22
|
-
* RPC URL used to sponsor gas fees for transactions made with Porto wallets.
|
|
23
|
-
*/
|
|
24
|
-
merchantRpcUrl?: string;
|
|
25
21
|
coinbaseWalletPreference?: CoinbaseWalletParameters<"4">["preference"];
|
|
26
22
|
additionalConnectors?: CreateConnectorFn[];
|
|
27
23
|
} & Partial<CreateConfigParameters>;
|
|
28
24
|
/** Daimo Pay recommended config, for use with wagmi's createConfig(). */
|
|
29
|
-
declare const defaultConfig: ({ appName, appIcon, appDescription, appUrl, additionalConnectors, chains, client,
|
|
25
|
+
declare const defaultConfig: ({ appName, appIcon, appDescription, appUrl, additionalConnectors, chains, client, ...props }: DefaultConfigProps) => CreateConfigParameters;
|
|
30
26
|
|
|
31
27
|
type useConnectCallbackProps = {
|
|
32
28
|
onConnect?: ({ address, connectorId, }: {
|
package/build/package.json.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var name = "@daimo/pay";
|
|
2
|
-
var version = "1.16.
|
|
2
|
+
var version = "1.16.8";
|
|
3
3
|
var author = "Daimo";
|
|
4
4
|
var homepage = "https://pay.daimo.com";
|
|
5
5
|
var license = "BSD-2-Clause license";
|
|
@@ -31,7 +31,7 @@ var scripts = {
|
|
|
31
31
|
lint: "eslint 'src/**/*.{js,jsx,ts,tsx}' --max-warnings=0"
|
|
32
32
|
};
|
|
33
33
|
var dependencies = {
|
|
34
|
-
"@daimo/pay-common": "1.16.
|
|
34
|
+
"@daimo/pay-common": "1.16.8",
|
|
35
35
|
"@solana/wallet-adapter-base": "^0.9.23",
|
|
36
36
|
"@solana/wallet-adapter-react": "^0.15.35",
|
|
37
37
|
"@solana/web3.js": "^1.95.4",
|
|
@@ -5,7 +5,7 @@ import { useDaimoPay } from '../../../hooks/useDaimoPay.js';
|
|
|
5
5
|
import useIsMobile from '../../../hooks/useIsMobile.js';
|
|
6
6
|
import { useLastConnector } from '../../../hooks/useLastConnector.js';
|
|
7
7
|
import { usePayContext } from '../../../hooks/usePayContext.js';
|
|
8
|
-
import { detectBrowser, isBaseAccountConnector,
|
|
8
|
+
import { detectBrowser, isBaseAccountConnector, isGeminiConnector } from '../../../utils/index.js';
|
|
9
9
|
import { useWallets, WALLET_ID_OTHER_WALLET, WALLET_ID_MOBILE_WALLETS } from '../../../wallets/useWallets.js';
|
|
10
10
|
import { ScrollArea } from '../ScrollArea/index.js';
|
|
11
11
|
import Alert from '../Alert/index.js';
|
|
@@ -48,7 +48,7 @@ const ConnectorItem = ({
|
|
|
48
48
|
const redirectToMoreWallets = isMobile && wallet.id === WALLET_ID_OTHER_WALLET;
|
|
49
49
|
const redirectToMobileWallets = wallet.id === WALLET_ID_MOBILE_WALLETS;
|
|
50
50
|
const redirectToWorld = wallet.id === "world";
|
|
51
|
-
const shouldConnectImmediately = (detectBrowser() === "safari" || detectBrowser() === "ios") && (isBaseAccountConnector(wallet.connector?.id) ||
|
|
51
|
+
const shouldConnectImmediately = (detectBrowser() === "safari" || detectBrowser() === "ios") && (isBaseAccountConnector(wallet.connector?.id) || isGeminiConnector(wallet.connector?.id));
|
|
52
52
|
const onClick = () => {
|
|
53
53
|
const meta = { event: "connector-list-click", walletId: wallet.id };
|
|
54
54
|
if (wallet.solanaConnectorName && !isMobile) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/Common/ConnectorList/index.tsx"],"sourcesContent":["import { ROUTES } from \"../../../constants/routes\";\nimport { useConnect } from \"../../../hooks/useConnect\";\nimport { useDaimoPay } from \"../../../hooks/useDaimoPay\";\nimport useIsMobile from \"../../../hooks/useIsMobile\";\nimport { useLastConnector } from \"../../../hooks/useLastConnector\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\nimport {\n detectBrowser,\n isBaseAccountConnector,\n isGeminiConnector,\n isPortoConnector,\n} from \"../../../utils\";\nimport {\n WALLET_ID_MOBILE_WALLETS,\n WALLET_ID_OTHER_WALLET,\n WalletProps,\n useWallets,\n} from \"../../../wallets/useWallets\";\nimport { ScrollArea } from \"../../Common/ScrollArea\";\nimport Alert from \"../Alert\";\nimport {\n ConnectorButton,\n ConnectorIcon,\n ConnectorLabel,\n ConnectorsContainer,\n RecentlyUsedTag,\n SkeletonIcon,\n SkeletonLabel,\n} from \"./styles\";\n\nconst ConnectorList = () => {\n const context = usePayContext();\n const { isMobile } = useIsMobile();\n\n const wallets = useWallets(isMobile);\n const { lastConnectorId } = useLastConnector();\n const { paymentState } = useDaimoPay();\n\n const walletsToDisplay = context.options?.hideRecentBadge\n ? wallets\n : [\n // move last used wallet to top of list\n // using .filter and spread to avoid mutating original array order with .sort\n ...wallets.filter((wallet) => lastConnectorId === wallet.connector?.id),\n ...wallets.filter((wallet) => lastConnectorId !== wallet.connector?.id),\n ];\n\n // For mobile flow, we need to wait for the order to be hydrated before\n // we can deeplink to the in-wallet browser.\n const shouldWaitForHydration =\n isMobile && !context.paymentState.isDepositFlow;\n const ready = !shouldWaitForHydration || paymentState === \"payment_unpaid\";\n\n return (\n <ScrollArea mobileDirection={\"horizontal\"}>\n {walletsToDisplay.length === 0 && (\n <Alert error>No connectors found in ConnectKit config.</Alert>\n )}\n {!ready && walletsToDisplay.length > 0 && (\n <ConnectorsContainer $totalResults={walletsToDisplay.length}>\n {walletsToDisplay.map((_, idx) => (\n <SkeletonConnectorItem key={idx} />\n ))}\n </ConnectorsContainer>\n )}\n {ready && walletsToDisplay.length > 0 && (\n <ConnectorsContainer $totalResults={walletsToDisplay.length}>\n {walletsToDisplay.map((wallet) => (\n <ConnectorItem\n key={wallet.id}\n wallet={wallet}\n isRecent={wallet.id === lastConnectorId}\n />\n ))}\n </ConnectorsContainer>\n )}\n </ScrollArea>\n );\n};\n\nexport default ConnectorList;\n\nconst ConnectorItem = ({\n wallet,\n isRecent,\n}: {\n wallet: WalletProps;\n isRecent?: boolean;\n}) => {\n const { isMobile } = useIsMobile();\n const context = usePayContext();\n const { connect } = useConnect();\n\n // The \"Other\" 2x2 connector, goes to the MobileConnectors page.\n const redirectToMoreWallets =\n isMobile && wallet.id === WALLET_ID_OTHER_WALLET;\n const redirectToMobileWallets = wallet.id === WALLET_ID_MOBILE_WALLETS;\n const redirectToWorld = wallet.id === \"world\";\n\n // Safari requires opening popup on user gesture, so we connect immediately here\n const shouldConnectImmediately =\n (detectBrowser() === \"safari\" || detectBrowser() === \"ios\") &&\n (isBaseAccountConnector(wallet.connector?.id) ||\n isPortoConnector(wallet.connector?.id) ||\n isGeminiConnector(wallet.connector?.id));\n\n const onClick = () => {\n const meta = { event: \"connector-list-click\", walletId: wallet.id };\n\n // Desktop multi-chain wallet flow: prompt for chain selection.\n if (wallet.solanaConnectorName && !isMobile) {\n const supportsEvm = wallet.connector?.name != null;\n if (supportsEvm) {\n context.paymentState.setSelectedWallet(wallet);\n context.setRoute(ROUTES.SELECT_WALLET_CHAIN, meta);\n return;\n } else {\n context.setSolanaConnector(wallet.solanaConnectorName);\n context.setRoute(ROUTES.SOLANA_CONNECTOR, meta);\n return;\n }\n }\n if (redirectToMoreWallets) {\n context.setRoute(ROUTES.MOBILECONNECTORS, meta);\n } else if (redirectToMobileWallets) {\n if (context.paymentState.isDepositFlow) {\n context.paymentState.setSelectedWallet(wallet);\n context.setRoute(ROUTES.SELECT_WALLET_AMOUNT, meta);\n } else {\n context.setPendingConnectorId(WALLET_ID_MOBILE_WALLETS);\n context.setRoute(ROUTES.CONNECT, meta);\n }\n } else if (redirectToWorld) {\n if (context.paymentState.isDepositFlow) {\n context.paymentState.setSelectedWallet(wallet);\n context.setRoute(ROUTES.SELECT_WALLET_AMOUNT, meta);\n } else {\n context.setPendingConnectorId(\"world\");\n context.setRoute(ROUTES.CONNECT, meta);\n }\n } else if (\n context.paymentState.isDepositFlow &&\n isMobile &&\n !wallet.connector\n ) {\n context.paymentState.setSelectedWallet(wallet);\n context.setRoute(ROUTES.SELECT_WALLET_AMOUNT, meta);\n } else if (\n isMobile &&\n wallet.getDaimoPayDeeplink != null &&\n !wallet.connector\n ) {\n context.paymentState.openInWalletBrowser(wallet);\n } else {\n if (shouldConnectImmediately) {\n connect({ connector: wallet.connector! });\n }\n context.setPendingConnectorId(wallet.id);\n context.setRoute(ROUTES.CONNECT, meta);\n }\n };\n\n return (\n <ConnectorButton type=\"button\" onClick={onClick}>\n <ConnectorIcon\n data-small={wallet.iconShouldShrink}\n data-shape={wallet.iconShape}\n >\n {wallet.iconConnector ?? wallet.icon}\n </ConnectorIcon>\n <ConnectorLabel>\n {isMobile ? (wallet.shortName ?? wallet.name) : wallet.name}\n {!context.options?.hideRecentBadge && isRecent && (\n <RecentlyUsedTag>\n <span>Recent</span>\n </RecentlyUsedTag>\n )}\n </ConnectorLabel>\n </ConnectorButton>\n );\n};\n\nconst SkeletonConnectorItem = () => {\n return (\n <ConnectorButton type=\"button\" disabled>\n <SkeletonIcon />\n <SkeletonLabel />\n </ConnectorButton>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/Common/ConnectorList/index.tsx"],"sourcesContent":["import { ROUTES } from \"../../../constants/routes\";\nimport { useConnect } from \"../../../hooks/useConnect\";\nimport { useDaimoPay } from \"../../../hooks/useDaimoPay\";\nimport useIsMobile from \"../../../hooks/useIsMobile\";\nimport { useLastConnector } from \"../../../hooks/useLastConnector\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\nimport {\n detectBrowser,\n isBaseAccountConnector,\n isGeminiConnector,\n} from \"../../../utils\";\nimport {\n WALLET_ID_MOBILE_WALLETS,\n WALLET_ID_OTHER_WALLET,\n WalletProps,\n useWallets,\n} from \"../../../wallets/useWallets\";\nimport { ScrollArea } from \"../../Common/ScrollArea\";\nimport Alert from \"../Alert\";\nimport {\n ConnectorButton,\n ConnectorIcon,\n ConnectorLabel,\n ConnectorsContainer,\n RecentlyUsedTag,\n SkeletonIcon,\n SkeletonLabel,\n} from \"./styles\";\n\nconst ConnectorList = () => {\n const context = usePayContext();\n const { isMobile } = useIsMobile();\n\n const wallets = useWallets(isMobile);\n const { lastConnectorId } = useLastConnector();\n const { paymentState } = useDaimoPay();\n\n const walletsToDisplay = context.options?.hideRecentBadge\n ? wallets\n : [\n // move last used wallet to top of list\n // using .filter and spread to avoid mutating original array order with .sort\n ...wallets.filter((wallet) => lastConnectorId === wallet.connector?.id),\n ...wallets.filter((wallet) => lastConnectorId !== wallet.connector?.id),\n ];\n\n // For mobile flow, we need to wait for the order to be hydrated before\n // we can deeplink to the in-wallet browser.\n const shouldWaitForHydration =\n isMobile && !context.paymentState.isDepositFlow;\n const ready = !shouldWaitForHydration || paymentState === \"payment_unpaid\";\n\n return (\n <ScrollArea mobileDirection={\"horizontal\"}>\n {walletsToDisplay.length === 0 && (\n <Alert error>No connectors found in ConnectKit config.</Alert>\n )}\n {!ready && walletsToDisplay.length > 0 && (\n <ConnectorsContainer $totalResults={walletsToDisplay.length}>\n {walletsToDisplay.map((_, idx) => (\n <SkeletonConnectorItem key={idx} />\n ))}\n </ConnectorsContainer>\n )}\n {ready && walletsToDisplay.length > 0 && (\n <ConnectorsContainer $totalResults={walletsToDisplay.length}>\n {walletsToDisplay.map((wallet) => (\n <ConnectorItem\n key={wallet.id}\n wallet={wallet}\n isRecent={wallet.id === lastConnectorId}\n />\n ))}\n </ConnectorsContainer>\n )}\n </ScrollArea>\n );\n};\n\nexport default ConnectorList;\n\nconst ConnectorItem = ({\n wallet,\n isRecent,\n}: {\n wallet: WalletProps;\n isRecent?: boolean;\n}) => {\n const { isMobile } = useIsMobile();\n const context = usePayContext();\n const { connect } = useConnect();\n\n // The \"Other\" 2x2 connector, goes to the MobileConnectors page.\n const redirectToMoreWallets =\n isMobile && wallet.id === WALLET_ID_OTHER_WALLET;\n const redirectToMobileWallets = wallet.id === WALLET_ID_MOBILE_WALLETS;\n const redirectToWorld = wallet.id === \"world\";\n\n // Safari requires opening popup on user gesture, so we connect immediately here\n const shouldConnectImmediately =\n (detectBrowser() === \"safari\" || detectBrowser() === \"ios\") &&\n (isBaseAccountConnector(wallet.connector?.id) ||\n isGeminiConnector(wallet.connector?.id));\n\n const onClick = () => {\n const meta = { event: \"connector-list-click\", walletId: wallet.id };\n\n // Desktop multi-chain wallet flow: prompt for chain selection.\n if (wallet.solanaConnectorName && !isMobile) {\n const supportsEvm = wallet.connector?.name != null;\n if (supportsEvm) {\n context.paymentState.setSelectedWallet(wallet);\n context.setRoute(ROUTES.SELECT_WALLET_CHAIN, meta);\n return;\n } else {\n context.setSolanaConnector(wallet.solanaConnectorName);\n context.setRoute(ROUTES.SOLANA_CONNECTOR, meta);\n return;\n }\n }\n if (redirectToMoreWallets) {\n context.setRoute(ROUTES.MOBILECONNECTORS, meta);\n } else if (redirectToMobileWallets) {\n if (context.paymentState.isDepositFlow) {\n context.paymentState.setSelectedWallet(wallet);\n context.setRoute(ROUTES.SELECT_WALLET_AMOUNT, meta);\n } else {\n context.setPendingConnectorId(WALLET_ID_MOBILE_WALLETS);\n context.setRoute(ROUTES.CONNECT, meta);\n }\n } else if (redirectToWorld) {\n if (context.paymentState.isDepositFlow) {\n context.paymentState.setSelectedWallet(wallet);\n context.setRoute(ROUTES.SELECT_WALLET_AMOUNT, meta);\n } else {\n context.setPendingConnectorId(\"world\");\n context.setRoute(ROUTES.CONNECT, meta);\n }\n } else if (\n context.paymentState.isDepositFlow &&\n isMobile &&\n !wallet.connector\n ) {\n context.paymentState.setSelectedWallet(wallet);\n context.setRoute(ROUTES.SELECT_WALLET_AMOUNT, meta);\n } else if (\n isMobile &&\n wallet.getDaimoPayDeeplink != null &&\n !wallet.connector\n ) {\n context.paymentState.openInWalletBrowser(wallet);\n } else {\n if (shouldConnectImmediately) {\n connect({ connector: wallet.connector! });\n }\n context.setPendingConnectorId(wallet.id);\n context.setRoute(ROUTES.CONNECT, meta);\n }\n };\n\n return (\n <ConnectorButton type=\"button\" onClick={onClick}>\n <ConnectorIcon\n data-small={wallet.iconShouldShrink}\n data-shape={wallet.iconShape}\n >\n {wallet.iconConnector ?? wallet.icon}\n </ConnectorIcon>\n <ConnectorLabel>\n {isMobile ? (wallet.shortName ?? wallet.name) : wallet.name}\n {!context.options?.hideRecentBadge && isRecent && (\n <RecentlyUsedTag>\n <span>Recent</span>\n </RecentlyUsedTag>\n )}\n </ConnectorLabel>\n </ConnectorButton>\n );\n};\n\nconst SkeletonConnectorItem = () => {\n return (\n <ConnectorButton type=\"button\" disabled>\n <SkeletonIcon />\n <SkeletonLabel />\n </ConnectorButton>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@ import { jsx, jsxs } from 'react/jsx-runtime';
|
|
|
2
2
|
import { ROUTES } from '../../../constants/routes.js';
|
|
3
3
|
import { useConnect } from '../../../hooks/useConnect.js';
|
|
4
4
|
import { usePayContext } from '../../../hooks/usePayContext.js';
|
|
5
|
-
import { isPortoConnector, detectBrowser } from '../../../utils/index.js';
|
|
6
5
|
import { walletConfigs } from '../../../wallets/walletConfigs.js';
|
|
7
6
|
import { PageContent, ModalContent } from '../../Common/Modal/styles.js';
|
|
8
7
|
import { ScrollArea } from '../../Common/ScrollArea/index.js';
|
|
@@ -11,7 +10,7 @@ import { Container, WalletList, WalletItem, WalletIcon, WalletLabel } from './st
|
|
|
11
10
|
const MobileConnectors = () => {
|
|
12
11
|
const context = usePayContext();
|
|
13
12
|
const { paymentState, setRoute } = context;
|
|
14
|
-
|
|
13
|
+
useConnect();
|
|
15
14
|
const walletsIdsToDisplay = Object.keys(walletConfigs).filter((walletId) => {
|
|
16
15
|
const wallet = walletConfigs[walletId];
|
|
17
16
|
if (!wallet.showInMobileConnectors) return false;
|
|
@@ -19,22 +18,7 @@ const MobileConnectors = () => {
|
|
|
19
18
|
return false;
|
|
20
19
|
return true;
|
|
21
20
|
}) ?? [];
|
|
22
|
-
const goToWallet = (
|
|
23
|
-
if (walletId === "porto") {
|
|
24
|
-
const portoConnector = connectors.find((c) => isPortoConnector(c.id));
|
|
25
|
-
if (!portoConnector) {
|
|
26
|
-
console.error("Porto connector not found");
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
const browser = detectBrowser();
|
|
30
|
-
const shouldConnectImmediately = browser === "safari" || browser === "ios";
|
|
31
|
-
context.setPendingConnectorId(portoConnector.id);
|
|
32
|
-
if (shouldConnectImmediately) {
|
|
33
|
-
connect({ connector: portoConnector });
|
|
34
|
-
}
|
|
35
|
-
setRoute(ROUTES.CONNECT);
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
21
|
+
const goToWallet = (wallet) => {
|
|
38
22
|
if (wallet.getDaimoPayDeeplink == null) {
|
|
39
23
|
console.error(`wallet ${wallet.name} has no deeplink`);
|
|
40
24
|
return;
|
|
@@ -63,7 +47,7 @@ const MobileConnectors = () => {
|
|
|
63
47
|
return /* @__PURE__ */ jsxs(
|
|
64
48
|
WalletItem,
|
|
65
49
|
{
|
|
66
|
-
onClick: () => goToWallet(
|
|
50
|
+
onClick: () => goToWallet(wallet),
|
|
67
51
|
style: {
|
|
68
52
|
animationDelay: `${i * 50}ms`
|
|
69
53
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/MobileConnectors/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { ROUTES } from \"../../../constants/routes\";\nimport { useConnect } from \"../../../hooks/useConnect\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\nimport {
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/MobileConnectors/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { ROUTES } from \"../../../constants/routes\";\nimport { useConnect } from \"../../../hooks/useConnect\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\nimport {\n WalletConfigProps,\n walletConfigs,\n} from \"../../../wallets/walletConfigs\";\nimport { ModalContent, PageContent } from \"../../Common/Modal/styles\";\nimport { ScrollArea } from \"../../Common/ScrollArea\";\nimport {\n Container,\n WalletIcon,\n WalletItem,\n WalletLabel,\n WalletList,\n} from \"./styles\";\n\nconst MobileConnectors: React.FC = () => {\n const context = usePayContext();\n const { paymentState, setRoute } = context;\n const { connect, connectors } = useConnect();\n\n // filter out installed wallets\n const walletsIdsToDisplay =\n Object.keys(walletConfigs).filter((walletId) => {\n const wallet = walletConfigs[walletId];\n if (!wallet.showInMobileConnectors) return false;\n // If the mobile wallet supports solana only, don't show it if we are not supporting solana has a payment method\n if (wallet.isSolanaOnly && !context.paymentState.showSolanaPaymentMethod)\n return false;\n return true;\n }) ?? [];\n\n const goToWallet = (wallet: WalletConfigProps) => {\n if (wallet.getDaimoPayDeeplink == null) {\n console.error(`wallet ${wallet.name} has no deeplink`);\n return;\n }\n if (paymentState.isDepositFlow) {\n context.paymentState.setSelectedWallet(wallet);\n setRoute(ROUTES.SELECT_WALLET_AMOUNT);\n } else {\n paymentState.openInWalletBrowser(wallet);\n }\n };\n\n return (\n <PageContent style={{ width: 312 }}>\n <Container>\n <ModalContent style={{ paddingBottom: 0 }}>\n <ScrollArea height={340}>\n <WalletList>\n {walletsIdsToDisplay\n .sort(\n // sort by name\n (a, b) => {\n const walletA = walletConfigs[a];\n const walletB = walletConfigs[b];\n const nameA = walletA.name ?? walletA.shortName ?? a;\n const nameB = walletB.name ?? walletB.shortName ?? b;\n return nameA.localeCompare(nameB);\n },\n )\n .filter(\n (walletId) =>\n !(\n walletId === \"coinbaseWallet\" ||\n walletId === \"com.coinbase.wallet\"\n ),\n )\n .map((walletId, i) => {\n const wallet = walletConfigs[walletId];\n const { name, shortName, iconConnector, icon } = wallet;\n return (\n <WalletItem\n key={i}\n onClick={() => goToWallet(wallet)}\n style={{\n animationDelay: `${i * 50}ms`,\n }}\n >\n <WalletIcon>{iconConnector ?? icon}</WalletIcon>\n <WalletLabel>{shortName ?? name}</WalletLabel>\n </WalletItem>\n );\n })}\n </WalletList>\n </ScrollArea>\n </ModalContent>\n </Container>\n </PageContent>\n );\n};\n\nexport default MobileConnectors;\n"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,6 @@ const defaultConfig = ({
|
|
|
24
24
|
additionalConnectors,
|
|
25
25
|
chains = REQUIRED_CHAINS,
|
|
26
26
|
client,
|
|
27
|
-
merchantRpcUrl,
|
|
28
27
|
...props
|
|
29
28
|
}) => {
|
|
30
29
|
globalAppName = appName;
|
|
@@ -47,8 +46,7 @@ const defaultConfig = ({
|
|
|
47
46
|
name: appName,
|
|
48
47
|
icon: appIcon,
|
|
49
48
|
description: appDescription,
|
|
50
|
-
url: appUrl
|
|
51
|
-
merchantRpcUrl
|
|
49
|
+
url: appUrl
|
|
52
50
|
},
|
|
53
51
|
additionalConnectors
|
|
54
52
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultConfig.js","sources":["../../src/defaultConfig.ts"],"sourcesContent":["import { type CreateConfigParameters } from \"@wagmi/core\";\nimport { CreateConnectorFn, http } from \"wagmi\";\nimport {\n arbitrum,\n base,\n bsc,\n celo,\n Chain,\n linea,\n mainnet,\n optimism,\n polygon,\n scroll,\n worldchain,\n} from \"wagmi/chains\";\nimport { CoinbaseWalletParameters } from \"wagmi/connectors\";\n\nimport defaultConnectors from \"./defaultConnectors\";\n\n// TODO: Move these to a provider rather than global variable\nlet globalAppName: string;\nlet globalAppIcon: string;\nexport const getAppName = () => globalAppName;\nexport const getAppIcon = () => globalAppIcon;\n\ntype DefaultConfigProps = {\n appName: string;\n appIcon?: string;\n appDescription?: string;\n appUrl?: string;\n\n
|
|
1
|
+
{"version":3,"file":"defaultConfig.js","sources":["../../src/defaultConfig.ts"],"sourcesContent":["import { type CreateConfigParameters } from \"@wagmi/core\";\nimport { CreateConnectorFn, http } from \"wagmi\";\nimport {\n arbitrum,\n base,\n bsc,\n celo,\n Chain,\n linea,\n mainnet,\n optimism,\n polygon,\n scroll,\n worldchain,\n} from \"wagmi/chains\";\nimport { CoinbaseWalletParameters } from \"wagmi/connectors\";\n\nimport defaultConnectors from \"./defaultConnectors\";\n\n// TODO: Move these to a provider rather than global variable\nlet globalAppName: string;\nlet globalAppIcon: string;\nexport const getAppName = () => globalAppName;\nexport const getAppIcon = () => globalAppIcon;\n\ntype DefaultConfigProps = {\n appName: string;\n appIcon?: string;\n appDescription?: string;\n appUrl?: string;\n\n // Coinbase Wallet preference\n coinbaseWalletPreference?: CoinbaseWalletParameters<\"4\">[\"preference\"];\n\n // Additional connectors to use\n additionalConnectors?: CreateConnectorFn[];\n} & Partial<CreateConfigParameters>;\n\nexport const REQUIRED_CHAINS: CreateConfigParameters[\"chains\"] = [\n arbitrum,\n base,\n bsc,\n celo,\n linea,\n mainnet,\n polygon,\n optimism,\n scroll,\n worldchain,\n];\n\n/** Daimo Pay recommended config, for use with wagmi's createConfig(). */\nconst defaultConfig = ({\n appName = \"Daimo Pay\",\n appIcon,\n appDescription,\n appUrl,\n additionalConnectors,\n chains = REQUIRED_CHAINS,\n client,\n ...props\n}: DefaultConfigProps): CreateConfigParameters => {\n globalAppName = appName;\n if (appIcon) globalAppIcon = appIcon;\n\n const paddedChains: [Chain, ...Chain[]] = [...chains];\n for (const chain of REQUIRED_CHAINS) {\n if (!paddedChains.includes(chain)) {\n paddedChains.push(chain);\n }\n }\n\n const paddedTransports: CreateConfigParameters[\"transports\"] = {};\n for (const chain of paddedChains) {\n if (!props?.transports?.[chain.id]) {\n // Auto inject http transport if not provided for a chain\n paddedTransports[chain.id] = http();\n } else {\n paddedTransports[chain.id] = props.transports[chain.id];\n }\n }\n\n const connectors: CreateConfigParameters[\"connectors\"] =\n props?.connectors ??\n defaultConnectors({\n app: {\n name: appName,\n icon: appIcon,\n description: appDescription,\n url: appUrl,\n },\n additionalConnectors,\n });\n\n const config: CreateConfigParameters<any, any> = {\n ...props,\n chains: paddedChains,\n transports: paddedTransports,\n connectors,\n };\n\n return config;\n};\n\nexport default defaultConfig;\n"],"names":[],"mappings":";;;;AAoBA,IAAI,aAAA,CAAA;AAEG,MAAM,aAAa,MAAM,cAAA;AAgBzB,MAAM,eAAoD,GAAA;AAAA,EAC/D,QAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AACF,EAAA;AAGA,MAAM,gBAAgB,CAAC;AAAA,EACrB,OAAU,GAAA,WAAA;AAAA,EACV,OAAA;AAAA,EACA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,oBAAA;AAAA,EACA,MAAS,GAAA,eAAA;AAAA,EACT,MAAA;AAAA,EACA,GAAG,KAAA;AACL,CAAkD,KAAA;AAChD,EAAgB,aAAA,GAAA,OAAA,CAAA;AAGhB,EAAM,MAAA,YAAA,GAAoC,CAAC,GAAG,MAAM,CAAA,CAAA;AACpD,EAAA,KAAA,MAAW,SAAS,eAAiB,EAAA;AACnC,IAAA,IAAI,CAAC,YAAA,CAAa,QAAS,CAAA,KAAK,CAAG,EAAA;AACjC,MAAA,YAAA,CAAa,KAAK,KAAK,CAAA,CAAA;AAAA,KACzB;AAAA,GACF;AAEA,EAAA,MAAM,mBAAyD,EAAC,CAAA;AAChE,EAAA,KAAA,MAAW,SAAS,YAAc,EAAA;AAChC,IAAA,IAAI,CAAC,KAAA,EAAO,UAAa,GAAA,KAAA,CAAM,EAAE,CAAG,EAAA;AAElC,MAAiB,gBAAA,CAAA,KAAA,CAAM,EAAE,CAAA,GAAI,IAAK,EAAA,CAAA;AAAA,KAC7B,MAAA;AACL,MAAA,gBAAA,CAAiB,MAAM,EAAE,CAAA,GAAI,KAAM,CAAA,UAAA,CAAW,MAAM,EAAE,CAAA,CAAA;AAAA,KACxD;AAAA,GACF;AAEA,EAAM,MAAA,UAAA,GACJ,KAAO,EAAA,UAAA,IACP,iBAAkB,CAAA;AAAA,IAChB,GAAK,EAAA;AAAA,MACH,IAAM,EAAA,OAAA;AAAA,MACN,IAAM,EAAA,OAAA;AAAA,MACN,WAAa,EAAA,cAAA;AAAA,MACb,GAAK,EAAA,MAAA;AAAA,KACP;AAAA,IACA,oBAAA;AAAA,GACD,CAAA,CAAA;AAEH,EAAA,MAAM,MAA2C,GAAA;AAAA,IAC/C,GAAG,KAAA;AAAA,IACH,MAAQ,EAAA,YAAA;AAAA,IACR,UAAY,EAAA,gBAAA;AAAA,IACZ,UAAA;AAAA,GACF,CAAA;AAEA,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { safe, baseAccount, gemini } from '@wagmi/connectors';
|
|
2
|
-
import { porto } from 'porto/wagmi';
|
|
3
2
|
|
|
4
3
|
const defaultConnectors = ({
|
|
5
4
|
app,
|
|
@@ -31,11 +30,6 @@ const defaultConnectors = ({
|
|
|
31
30
|
}
|
|
32
31
|
})
|
|
33
32
|
);
|
|
34
|
-
connectors.push(
|
|
35
|
-
porto({
|
|
36
|
-
merchantRpcUrl: app.merchantRpcUrl
|
|
37
|
-
})
|
|
38
|
-
);
|
|
39
33
|
return connectors;
|
|
40
34
|
};
|
|
41
35
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultConnectors.js","sources":["../../src/defaultConnectors.ts"],"sourcesContent":["import { baseAccount, gemini, safe } from \"@wagmi/connectors\";\nimport {
|
|
1
|
+
{"version":3,"file":"defaultConnectors.js","sources":["../../src/defaultConnectors.ts"],"sourcesContent":["import { baseAccount, gemini, safe } from \"@wagmi/connectors\";\nimport { CreateConnectorFn } from \"wagmi\";\n\ntype DefaultConnectorsProps = {\n app: {\n name: string;\n icon?: string;\n description?: string;\n url?: string;\n };\n additionalConnectors?: CreateConnectorFn[];\n};\n\nconst defaultConnectors = ({\n app,\n additionalConnectors,\n}: DefaultConnectorsProps): CreateConnectorFn[] => {\n const shouldUseSafeConnector =\n !(typeof window === \"undefined\") && window?.parent !== window;\n\n const connectors: CreateConnectorFn[] = additionalConnectors ?? [];\n\n // If we're in an iframe, include the SafeConnector\n if (shouldUseSafeConnector) {\n connectors.push(\n safe({\n allowedDomains: [/gnosis-safe.io$/, /app.safe.global$/],\n }),\n );\n }\n // Add the rest of the connectors\n connectors.push(\n baseAccount({\n appName: app.name,\n // Use the default Daimo Pay logo if the app does not provide an icon\n appLogoUrl: app.icon ?? \"https://pay.daimo.com/daimo-pay-logo.svg\",\n }),\n );\n connectors.push(\n gemini({\n appMetadata: {\n name: app.name,\n url: app.url,\n // Use the default Daimo Pay logo if the app does not provide an icon\n appLogoUrl: app.icon ?? \"https://pay.daimo.com/daimo-pay-logo.svg\",\n },\n }),\n );\n\n return connectors;\n};\n\nexport default defaultConnectors;\n"],"names":[],"mappings":";;AAaA,MAAM,oBAAoB,CAAC;AAAA,EACzB,GAAA;AAAA,EACA,oBAAA;AACF,CAAmD,KAAA;AACjD,EAAA,MAAM,yBACJ,EAAE,OAAO,MAAW,KAAA,WAAA,CAAA,IAAgB,QAAQ,MAAW,KAAA,MAAA,CAAA;AAEzD,EAAM,MAAA,UAAA,GAAkC,wBAAwB,EAAC,CAAA;AAGjE,EAAA,IAAI,sBAAwB,EAAA;AAC1B,IAAW,UAAA,CAAA,IAAA;AAAA,MACT,IAAK,CAAA;AAAA,QACH,cAAA,EAAgB,CAAC,iBAAA,EAAmB,kBAAkB,CAAA;AAAA,OACvD,CAAA;AAAA,KACH,CAAA;AAAA,GACF;AAEA,EAAW,UAAA,CAAA,IAAA;AAAA,IACT,WAAY,CAAA;AAAA,MACV,SAAS,GAAI,CAAA,IAAA;AAAA;AAAA,MAEb,UAAA,EAAY,IAAI,IAAQ,IAAA,0CAAA;AAAA,KACzB,CAAA;AAAA,GACH,CAAA;AACA,EAAW,UAAA,CAAA,IAAA;AAAA,IACT,MAAO,CAAA;AAAA,MACL,WAAa,EAAA;AAAA,QACX,MAAM,GAAI,CAAA,IAAA;AAAA,QACV,KAAK,GAAI,CAAA,GAAA;AAAA;AAAA,QAET,UAAA,EAAY,IAAI,IAAQ,IAAA,0CAAA;AAAA,OAC1B;AAAA,KACD,CAAA;AAAA,GACH,CAAA;AAEA,EAAO,OAAA,UAAA,CAAA;AACT;;;;"}
|
package/build/src/utils/index.js
CHANGED
|
@@ -35,9 +35,8 @@ function flattenChildren(children) {
|
|
|
35
35
|
}
|
|
36
36
|
const isBaseAccountConnector = (connectorId) => connectorId === "baseAccount";
|
|
37
37
|
const isGeminiConnector = (connectorId) => connectorId === "gemini";
|
|
38
|
-
const isPortoConnector = (connectorId) => connectorId === "xyz.ithaca.porto";
|
|
39
38
|
const isSafeConnector = (connectorId) => connectorId === "safe";
|
|
40
39
|
const isInjectedConnector = (connectorId) => connectorId === "injected";
|
|
41
40
|
|
|
42
|
-
export { detectBrowser, detectOS, flattenChildren, isAndroid, isBaseAccountConnector, isGeminiConnector, isIOS, isInjectedConnector, isMobile,
|
|
41
|
+
export { detectBrowser, detectOS, flattenChildren, isAndroid, isBaseAccountConnector, isGeminiConnector, isIOS, isInjectedConnector, isMobile, isSafeConnector };
|
|
43
42
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/utils/index.ts"],"sourcesContent":["import { detect } from \"detect-browser\";\nimport React from \"react\";\n\nconst truncateRegex = /^(0x[a-zA-Z0-9]{4})[a-zA-Z0-9]+([a-zA-Z0-9]{4})$/;\n\nconst truncateEthAddress = (address?: string, separator: string = \"••••\") => {\n if (!address) return \"\";\n const match = address.match(truncateRegex);\n if (!match) return address;\n return `${match[1]}${separator}${match[2]}`;\n};\n\nconst truncateENSAddress = (ensName: string, maxLength: number) => {\n if (ensName.length > maxLength) {\n return ensName.replace(\".eth\", \"\").slice(0, maxLength) + \"...\";\n } else {\n return ensName;\n }\n};\n\nconst nFormatter = (num: number, digits: number = 2) => {\n if (num < 10000) return num.toFixed(2);\n const lookup = [\n { value: 1, symbol: \"\" },\n { value: 1e3, symbol: \"k\" },\n { value: 1e6, symbol: \"m\" },\n { value: 1e9, symbol: \"g\" },\n { value: 1e12, symbol: \"t\" },\n { value: 1e15, symbol: \"p\" },\n { value: 1e18, symbol: \"e\" },\n ];\n\n const rx = /\\.0+$|(\\.[0-9]*[1-9])0+$/;\n var item = lookup\n .slice()\n .reverse()\n .find(function (item) {\n return num >= item.value;\n });\n return item\n ? (num / item.value).toFixed(digits).replace(rx, \"$1\") + item.symbol\n : \"0\";\n};\n\nexport const detectBrowser = () => {\n const browser = detect();\n return browser?.name ?? \"\";\n};\nexport const detectOS = () => {\n const browser = detect();\n return browser?.os ?? \"\";\n};\n\nexport const isIOS = () => {\n const os = detectOS();\n return os.toLowerCase().includes(\"ios\");\n};\nexport const isAndroid = () => {\n const os = detectOS();\n return os.toLowerCase().includes(\"android\");\n};\nexport const isMobile = () => {\n const os = detectOS().toLowerCase();\n return os.includes(\"android\") || os.includes(\"ios\");\n};\n\ntype ReactChildArray = ReturnType<typeof React.Children.toArray>;\nfunction flattenChildren(children: React.ReactNode): ReactChildArray {\n const childrenArray = React.Children.toArray(children);\n return childrenArray.reduce((flatChildren: ReactChildArray, child) => {\n if ((child as React.ReactElement<any>).type === React.Fragment) {\n return flatChildren.concat(\n flattenChildren((child as React.ReactElement<any>).props.children),\n );\n }\n flatChildren.push(child);\n return flatChildren;\n }, []);\n}\n\nexport const isMetaMaskConnector = (connectorId?: string) =>\n connectorId === \"metaMaskSDK\";\n\nexport const isBaseAccountConnector = (connectorId?: string) =>\n connectorId === \"baseAccount\";\n\nexport const isGeminiConnector = (connectorId?: string) =>\n connectorId === \"gemini\";\n\nexport const
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/utils/index.ts"],"sourcesContent":["import { detect } from \"detect-browser\";\nimport React from \"react\";\n\nconst truncateRegex = /^(0x[a-zA-Z0-9]{4})[a-zA-Z0-9]+([a-zA-Z0-9]{4})$/;\n\nconst truncateEthAddress = (address?: string, separator: string = \"••••\") => {\n if (!address) return \"\";\n const match = address.match(truncateRegex);\n if (!match) return address;\n return `${match[1]}${separator}${match[2]}`;\n};\n\nconst truncateENSAddress = (ensName: string, maxLength: number) => {\n if (ensName.length > maxLength) {\n return ensName.replace(\".eth\", \"\").slice(0, maxLength) + \"...\";\n } else {\n return ensName;\n }\n};\n\nconst nFormatter = (num: number, digits: number = 2) => {\n if (num < 10000) return num.toFixed(2);\n const lookup = [\n { value: 1, symbol: \"\" },\n { value: 1e3, symbol: \"k\" },\n { value: 1e6, symbol: \"m\" },\n { value: 1e9, symbol: \"g\" },\n { value: 1e12, symbol: \"t\" },\n { value: 1e15, symbol: \"p\" },\n { value: 1e18, symbol: \"e\" },\n ];\n\n const rx = /\\.0+$|(\\.[0-9]*[1-9])0+$/;\n var item = lookup\n .slice()\n .reverse()\n .find(function (item) {\n return num >= item.value;\n });\n return item\n ? (num / item.value).toFixed(digits).replace(rx, \"$1\") + item.symbol\n : \"0\";\n};\n\nexport const detectBrowser = () => {\n const browser = detect();\n return browser?.name ?? \"\";\n};\nexport const detectOS = () => {\n const browser = detect();\n return browser?.os ?? \"\";\n};\n\nexport const isIOS = () => {\n const os = detectOS();\n return os.toLowerCase().includes(\"ios\");\n};\nexport const isAndroid = () => {\n const os = detectOS();\n return os.toLowerCase().includes(\"android\");\n};\nexport const isMobile = () => {\n const os = detectOS().toLowerCase();\n return os.includes(\"android\") || os.includes(\"ios\");\n};\n\ntype ReactChildArray = ReturnType<typeof React.Children.toArray>;\nfunction flattenChildren(children: React.ReactNode): ReactChildArray {\n const childrenArray = React.Children.toArray(children);\n return childrenArray.reduce((flatChildren: ReactChildArray, child) => {\n if ((child as React.ReactElement<any>).type === React.Fragment) {\n return flatChildren.concat(\n flattenChildren((child as React.ReactElement<any>).props.children),\n );\n }\n flatChildren.push(child);\n return flatChildren;\n }, []);\n}\n\nexport const isMetaMaskConnector = (connectorId?: string) =>\n connectorId === \"metaMaskSDK\";\n\nexport const isBaseAccountConnector = (connectorId?: string) =>\n connectorId === \"baseAccount\";\n\nexport const isGeminiConnector = (connectorId?: string) =>\n connectorId === \"gemini\";\n\nexport const isLedgerConnector = (connectorId?: string) =>\n connectorId === \"ledger\";\n\nexport const isSafeConnector = (connectorId?: string) => connectorId === \"safe\";\n\nexport const isInjectedConnector = (connectorId?: string) =>\n connectorId === \"injected\";\n\nexport { flattenChildren, nFormatter, truncateENSAddress, truncateEthAddress };\n"],"names":[],"mappings":";;;AA4CO,MAAM,gBAAgB,MAAM;AACjC,EAAA,MAAM,UAAU,MAAO,EAAA,CAAA;AACvB,EAAA,OAAO,SAAS,IAAQ,IAAA,EAAA,CAAA;AAC1B,EAAA;AACO,MAAM,WAAW,MAAM;AAC5B,EAAA,MAAM,UAAU,MAAO,EAAA,CAAA;AACvB,EAAA,OAAO,SAAS,EAAM,IAAA,EAAA,CAAA;AACxB,EAAA;AAEO,MAAM,QAAQ,MAAM;AACzB,EAAA,MAAM,KAAK,QAAS,EAAA,CAAA;AACpB,EAAA,OAAO,EAAG,CAAA,WAAA,EAAc,CAAA,QAAA,CAAS,KAAK,CAAA,CAAA;AACxC,EAAA;AACO,MAAM,YAAY,MAAM;AAC7B,EAAA,MAAM,KAAK,QAAS,EAAA,CAAA;AACpB,EAAA,OAAO,EAAG,CAAA,WAAA,EAAc,CAAA,QAAA,CAAS,SAAS,CAAA,CAAA;AAC5C,EAAA;AACO,MAAM,WAAW,MAAM;AAC5B,EAAM,MAAA,EAAA,GAAK,QAAS,EAAA,CAAE,WAAY,EAAA,CAAA;AAClC,EAAA,OAAO,GAAG,QAAS,CAAA,SAAS,CAAK,IAAA,EAAA,CAAG,SAAS,KAAK,CAAA,CAAA;AACpD,EAAA;AAGA,SAAS,gBAAgB,QAA4C,EAAA;AACnE,EAAA,MAAM,aAAgB,GAAA,KAAA,CAAM,QAAS,CAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA;AACrD,EAAA,OAAO,aAAc,CAAA,MAAA,CAAO,CAAC,YAAA,EAA+B,KAAU,KAAA;AACpE,IAAK,IAAA,KAAA,CAAkC,IAAS,KAAA,KAAA,CAAM,QAAU,EAAA;AAC9D,MAAA,OAAO,YAAa,CAAA,MAAA;AAAA,QAClB,eAAA,CAAiB,KAAkC,CAAA,KAAA,CAAM,QAAQ,CAAA;AAAA,OACnE,CAAA;AAAA,KACF;AACA,IAAA,YAAA,CAAa,KAAK,KAAK,CAAA,CAAA;AACvB,IAAO,OAAA,YAAA,CAAA;AAAA,GACT,EAAG,EAAE,CAAA,CAAA;AACP,CAAA;AAKa,MAAA,sBAAA,GAAyB,CAAC,WAAA,KACrC,WAAgB,KAAA,cAAA;AAEL,MAAA,iBAAA,GAAoB,CAAC,WAAA,KAChC,WAAgB,KAAA,SAAA;AAKL,MAAA,eAAA,GAAkB,CAAC,WAAA,KAAyB,WAAgB,KAAA,OAAA;AAE5D,MAAA,mBAAA,GAAsB,CAAC,WAAA,KAClC,WAAgB,KAAA;;;;"}
|
|
@@ -6,7 +6,7 @@ import { MobileWithLogos } from '../assets/MobileWithLogos.js';
|
|
|
6
6
|
import { useConnectors } from '../hooks/useConnectors.js';
|
|
7
7
|
import useLocales from '../hooks/useLocales.js';
|
|
8
8
|
import { usePayContext } from '../hooks/usePayContext.js';
|
|
9
|
-
import { isBaseAccountConnector, isGeminiConnector,
|
|
9
|
+
import { isBaseAccountConnector, isGeminiConnector, isInjectedConnector, flattenChildren } from '../utils/index.js';
|
|
10
10
|
import { walletConfigs } from './walletConfigs.js';
|
|
11
11
|
|
|
12
12
|
const WALLET_ID_OTHER_WALLET = "otherWallet";
|
|
@@ -42,7 +42,6 @@ const useWallets = (isMobile) => {
|
|
|
42
42
|
connectors.forEach((connector) => {
|
|
43
43
|
if (isBaseAccountConnector(connector.id)) return;
|
|
44
44
|
if (isGeminiConnector(connector.id)) return;
|
|
45
|
-
if (isPortoConnector(connector.id)) return;
|
|
46
45
|
if (!isInjectedConnector(connector.type)) return;
|
|
47
46
|
if (connector.name?.toLowerCase().includes("walletconnect")) return;
|
|
48
47
|
mobileWallets.push({
|
|
@@ -95,7 +94,7 @@ const useWallets = (isMobile) => {
|
|
|
95
94
|
) : /* @__PURE__ */ jsx(WalletIcon, {}),
|
|
96
95
|
connector,
|
|
97
96
|
iconShape: connector.id === "io.rabby" ? "circle" : "squircle",
|
|
98
|
-
isInstalled: connector.type === "mock" || connector.type === "injected" && connector.id !== "metaMask" || connector.type === "farcasterFrame" ||
|
|
97
|
+
isInstalled: connector.type === "mock" || connector.type === "injected" && connector.id !== "metaMask" || connector.type === "farcasterFrame" || isBaseAccountConnector(connector.id) || isGeminiConnector(connector.id)
|
|
99
98
|
};
|
|
100
99
|
if (walletConfigKey) {
|
|
101
100
|
const wallet = walletConfigs[walletConfigKey];
|
|
@@ -196,12 +195,6 @@ const useWallets = (isMobile) => {
|
|
|
196
195
|
const bIsInstalledInjected = b.isInstalled && isInjectedConnector(b.connector?.type);
|
|
197
196
|
if (aIsInstalledInjected && !bIsInstalledInjected) return -1;
|
|
198
197
|
if (!aIsInstalledInjected && bIsInstalledInjected) return 1;
|
|
199
|
-
if (aIsInstalledInjected && bIsInstalledInjected) {
|
|
200
|
-
const aIsPorto = isPortoConnector(a.connector?.id);
|
|
201
|
-
const bIsPorto = isPortoConnector(b.connector?.id);
|
|
202
|
-
if (aIsPorto && !bIsPorto) return 1;
|
|
203
|
-
if (!aIsPorto && bIsPorto) return -1;
|
|
204
|
-
}
|
|
205
198
|
return 0;
|
|
206
199
|
}).sort((a, b) => {
|
|
207
200
|
if (a.id === WALLET_ID_MOBILE_WALLETS) return 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWallets.js","sources":["../../../src/wallets/useWallets.tsx"],"sourcesContent":["import { assertNotNull } from \"@daimo/pay-common\";\nimport { Connector } from \"wagmi\";\n\nimport { useWallet as useSolanaWalletAdapter } from \"@solana/wallet-adapter-react\";\nimport Logos, { SquircleIcon, WalletIcon } from \"../assets/logos\";\nimport MobileWithLogos from \"../assets/MobileWithLogos\";\nimport { useConnectors } from \"../hooks/useConnectors\";\nimport useLocales from \"../hooks/useLocales\";\nimport { usePayContext } from \"../hooks/usePayContext\";\nimport { SolanaWalletName } from \"../provider/SolanaContextProvider\";\nimport {\n flattenChildren,\n isBaseAccountConnector,\n isGeminiConnector,\n isInjectedConnector,\n isPortoConnector,\n} from \"../utils\";\nimport { WalletConfigProps, walletConfigs } from \"./walletConfigs\";\n\n/** Special wallet ID for \"other wallets\" option. */\nexport const WALLET_ID_OTHER_WALLET = \"otherWallet\";\n/** Special wallet ID for \"mobile wallets\" option. */\nexport const WALLET_ID_MOBILE_WALLETS = \"mobileWallets\";\n\nexport type WalletProps = {\n id: string;\n connector?: Connector;\n isInstalled?: boolean;\n /** Name of the matching Solana wallet adapter (if any) */\n solanaConnectorName?: SolanaWalletName;\n} & WalletConfigProps;\n\nexport const useWallet = (id: string): WalletProps | null => {\n const wallets = useWallets();\n const wallet = wallets.find((c) => c.id === id);\n if (!wallet) return null;\n return wallet;\n};\n\nexport const useWallets = (isMobile?: boolean): WalletProps[] => {\n const connectors = useConnectors();\n const context = usePayContext();\n const { showSolanaPaymentMethod } = context.paymentState;\n const { disableMobileInjector } = context;\n // Solana wallets available in the session (desktop & mobile)\n const solanaWallet = useSolanaWalletAdapter();\n const locales = useLocales();\n if (isMobile) {\n const mobileWallets: WalletProps[] = [];\n\n // Add injected wallet (if any) first, unless disabled\n if (!disableMobileInjector) {\n connectors.forEach((connector) => {\n if (isBaseAccountConnector(connector.id)) return;\n if (isGeminiConnector(connector.id)) return;\n if (isPortoConnector(connector.id)) return;\n if (!isInjectedConnector(connector.type)) return;\n // Skip any connectors that mention WalletConnect\n if (connector.name?.toLowerCase().includes(\"walletconnect\")) return;\n mobileWallets.push({\n id: connector.id,\n connector,\n shortName: connector.name,\n iconConnector: connector.icon ? (\n <img src={connector.icon} alt={connector.name} />\n ) : (\n <WalletIcon />\n ),\n iconShape: \"squircle\",\n });\n });\n }\n\n function addIfNotPresent(idList: string) {\n if (mobileWallets.find((w) => idList.includes(w.id))) return;\n if (mobileWallets.length >= 3) return;\n const wallet = assertNotNull(\n walletConfigs[idList],\n () => `missing ${idList}`,\n );\n mobileWallets.push({\n id: idList,\n ...wallet,\n });\n }\n\n addIfNotPresent(\n \"metaMask, metaMask-io, io.metamask, io.metamask.mobile, metaMaskSDK\",\n );\n addIfNotPresent(\"com.trustwallet.app\");\n const otherWalletsString = flattenChildren(locales.otherWallets).join(\"\");\n const otherString = flattenChildren(locales.other).join(\"\");\n // Add other wallet\n mobileWallets.push({\n id: WALLET_ID_OTHER_WALLET,\n name: otherWalletsString,\n shortName: otherString,\n iconConnector: <Logos.OtherWallets />,\n iconShape: \"square\",\n showInMobileConnectors: false,\n });\n\n return mobileWallets;\n }\n\n const wallets = connectors.map((connector): WalletProps => {\n // First, attempt to find a config by matching connector.id (existing logic).\n let walletConfigKey: string | undefined = Object.keys(walletConfigs).find(\n (id) =>\n id\n .split(\",\")\n .map((i) => i.trim())\n .includes(connector.id),\n );\n\n // If not found by id, attempt a fuzzy match on connector.name.\n if (!walletConfigKey && connector.name) {\n walletConfigKey = Object.keys(walletConfigs).find((key) => {\n const cfgName = walletConfigs[key].name?.toLowerCase();\n const connName = connector.name!.toLowerCase();\n return (\n cfgName && (cfgName.includes(connName) || connName.includes(cfgName))\n );\n });\n }\n\n const c: WalletProps = {\n id: connector.id,\n name: connector.name ?? connector.id ?? connector.type,\n icon: connector.icon ? (\n <img\n src={connector.icon}\n alt={connector.name}\n width={\"100%\"}\n height={\"100%\"}\n />\n ) : (\n <WalletIcon />\n ),\n connector,\n iconShape: connector.id === \"io.rabby\" ? \"circle\" : \"squircle\",\n isInstalled:\n connector.type === \"mock\" ||\n (connector.type === \"injected\" && connector.id !== \"metaMask\") ||\n connector.type === \"farcasterFrame\" ||\n isPortoConnector(connector.id) ||\n isBaseAccountConnector(connector.id) ||\n isGeminiConnector(connector.id),\n };\n\n if (walletConfigKey) {\n const wallet = walletConfigs[walletConfigKey];\n return {\n ...c,\n iconConnector: connector.icon ? (\n <img\n src={connector.icon}\n alt={connector.name}\n width={\"100%\"}\n height={\"100%\"}\n />\n ) : undefined,\n ...wallet,\n };\n }\n\n return c;\n });\n\n wallets.push(walletConfigs.world as WalletProps);\n\n wallets.push({\n id: WALLET_ID_MOBILE_WALLETS,\n name: \"Mobile Wallets\",\n shortName: \"Mobile\",\n icon: (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n overflow: \"hidden\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transform: \"scale(1.2)\",\n transformOrigin: \"center center\",\n }}\n >\n <MobileWithLogos />\n </div>\n ),\n iconConnector: (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n overflow: \"hidden\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transform: \"scale(1.2)\",\n transformOrigin: \"center center\",\n }}\n >\n <MobileWithLogos />\n </div>\n ),\n });\n\n if (showSolanaPaymentMethod) {\n const solanaAdapters = solanaWallet.wallets ?? [];\n\n // Merge by fuzzy name matching (includes comparison)\n wallets.forEach((w) => {\n // Skip wallets without a usable name to avoid matching everything\n if (!w.name) return;\n\n const evm = w.name.toLowerCase();\n const match = solanaAdapters.find((sw) => {\n const sol = sw.adapter.name.toLowerCase();\n return evm.includes(sol) || sol.includes(evm);\n });\n\n if (match) {\n w.solanaConnectorName = match.adapter.name;\n }\n });\n\n const unmatched = solanaAdapters.filter(\n (sw) => !wallets.find((w) => w.solanaConnectorName === sw.adapter.name),\n );\n\n unmatched.forEach((sw) => {\n wallets.push({\n id: `solana-${sw.adapter.name}`,\n name: sw.adapter.name,\n shortName: sw.adapter.name,\n icon: <SquircleIcon icon={sw.adapter.icon} alt={sw.adapter.name} />,\n iconConnector: (\n <SquircleIcon icon={sw.adapter.icon} alt={sw.adapter.name} />\n ),\n iconShape: \"squircle\",\n solanaConnectorName: sw.adapter.name,\n });\n });\n }\n\n return (\n wallets\n // remove duplicate ids\n .filter(\n (wallet, index, self) =>\n self.findIndex((w) => w.id === wallet.id) === index,\n )\n // remove wallet with id coinbaseWalletSDK if wallet with id 'com.coinbase.wallet' exists\n .filter(\n (wallet, index, self) =>\n !(\n wallet.id === \"coinbaseWalletSDK\" &&\n self.find((w) => w.id === \"com.coinbase.wallet\")\n ),\n )\n // remove wallet with id io.metamask if wallet with id 'metaMask' exists\n .filter(\n (wallet, index, self) =>\n !(\n (wallet.id === \"metaMaskSDK\" || wallet.id === \"metaMask\") &&\n self.find(\n (w) => w.id === \"io.metamask\" || w.id === \"io.metamask.mobile\",\n )\n ),\n )\n // remove wallet with id 'com.warpcast.mobile' if wallet with id 'farcaster' exists\n .filter(\n (wallet, index, self) =>\n !(\n wallet.id === \"com.warpcast.mobile\" &&\n self.find((w) => w.id === \"farcaster\")\n ),\n )\n // order by isInstalled injected connectors first\n .sort((a, b) => {\n const aIsInstalledInjected =\n a.isInstalled && isInjectedConnector(a.connector?.type);\n const bIsInstalledInjected =\n b.isInstalled && isInjectedConnector(b.connector?.type);\n\n if (aIsInstalledInjected && !bIsInstalledInjected) return -1;\n if (!aIsInstalledInjected && bIsInstalledInjected) return 1;\n\n // Within installed injected group, push Porto to the end\n if (aIsInstalledInjected && bIsInstalledInjected) {\n const aIsPorto = isPortoConnector(a.connector?.id);\n const bIsPorto = isPortoConnector(b.connector?.id);\n if (aIsPorto && !bIsPorto) return 1;\n if (!aIsPorto && bIsPorto) return -1;\n }\n\n return 0;\n })\n // order \"mobile wallets\" option last\n .sort((a, b) => {\n if (a.id === WALLET_ID_MOBILE_WALLETS) return 1;\n if (b.id === WALLET_ID_MOBILE_WALLETS) return -1;\n return 0;\n })\n );\n};\n"],"names":["useSolanaWalletAdapter","addIfNotPresent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useWallets.js","sources":["../../../src/wallets/useWallets.tsx"],"sourcesContent":["import { assertNotNull } from \"@daimo/pay-common\";\nimport { Connector } from \"wagmi\";\n\nimport { useWallet as useSolanaWalletAdapter } from \"@solana/wallet-adapter-react\";\nimport Logos, { SquircleIcon, WalletIcon } from \"../assets/logos\";\nimport MobileWithLogos from \"../assets/MobileWithLogos\";\nimport { useConnectors } from \"../hooks/useConnectors\";\nimport useLocales from \"../hooks/useLocales\";\nimport { usePayContext } from \"../hooks/usePayContext\";\nimport { SolanaWalletName } from \"../provider/SolanaContextProvider\";\nimport {\n flattenChildren,\n isBaseAccountConnector,\n isGeminiConnector,\n isInjectedConnector,\n} from \"../utils\";\nimport { WalletConfigProps, walletConfigs } from \"./walletConfigs\";\n\n/** Special wallet ID for \"other wallets\" option. */\nexport const WALLET_ID_OTHER_WALLET = \"otherWallet\";\n/** Special wallet ID for \"mobile wallets\" option. */\nexport const WALLET_ID_MOBILE_WALLETS = \"mobileWallets\";\n\nexport type WalletProps = {\n id: string;\n connector?: Connector;\n isInstalled?: boolean;\n /** Name of the matching Solana wallet adapter (if any) */\n solanaConnectorName?: SolanaWalletName;\n} & WalletConfigProps;\n\nexport const useWallet = (id: string): WalletProps | null => {\n const wallets = useWallets();\n const wallet = wallets.find((c) => c.id === id);\n if (!wallet) return null;\n return wallet;\n};\n\nexport const useWallets = (isMobile?: boolean): WalletProps[] => {\n const connectors = useConnectors();\n const context = usePayContext();\n const { showSolanaPaymentMethod } = context.paymentState;\n const { disableMobileInjector } = context;\n // Solana wallets available in the session (desktop & mobile)\n const solanaWallet = useSolanaWalletAdapter();\n const locales = useLocales();\n if (isMobile) {\n const mobileWallets: WalletProps[] = [];\n\n // Add injected wallet (if any) first, unless disabled\n if (!disableMobileInjector) {\n connectors.forEach((connector) => {\n if (isBaseAccountConnector(connector.id)) return;\n if (isGeminiConnector(connector.id)) return;\n if (!isInjectedConnector(connector.type)) return;\n // Skip any connectors that mention WalletConnect\n if (connector.name?.toLowerCase().includes(\"walletconnect\")) return;\n mobileWallets.push({\n id: connector.id,\n connector,\n shortName: connector.name,\n iconConnector: connector.icon ? (\n <img src={connector.icon} alt={connector.name} />\n ) : (\n <WalletIcon />\n ),\n iconShape: \"squircle\",\n });\n });\n }\n\n function addIfNotPresent(idList: string) {\n if (mobileWallets.find((w) => idList.includes(w.id))) return;\n if (mobileWallets.length >= 3) return;\n const wallet = assertNotNull(\n walletConfigs[idList],\n () => `missing ${idList}`,\n );\n mobileWallets.push({\n id: idList,\n ...wallet,\n });\n }\n\n addIfNotPresent(\n \"metaMask, metaMask-io, io.metamask, io.metamask.mobile, metaMaskSDK\",\n );\n addIfNotPresent(\"com.trustwallet.app\");\n const otherWalletsString = flattenChildren(locales.otherWallets).join(\"\");\n const otherString = flattenChildren(locales.other).join(\"\");\n // Add other wallet\n mobileWallets.push({\n id: WALLET_ID_OTHER_WALLET,\n name: otherWalletsString,\n shortName: otherString,\n iconConnector: <Logos.OtherWallets />,\n iconShape: \"square\",\n showInMobileConnectors: false,\n });\n\n return mobileWallets;\n }\n\n const wallets = connectors.map((connector): WalletProps => {\n // First, attempt to find a config by matching connector.id (existing logic).\n let walletConfigKey: string | undefined = Object.keys(walletConfigs).find(\n (id) =>\n id\n .split(\",\")\n .map((i) => i.trim())\n .includes(connector.id),\n );\n\n // If not found by id, attempt a fuzzy match on connector.name.\n if (!walletConfigKey && connector.name) {\n walletConfigKey = Object.keys(walletConfigs).find((key) => {\n const cfgName = walletConfigs[key].name?.toLowerCase();\n const connName = connector.name!.toLowerCase();\n return (\n cfgName && (cfgName.includes(connName) || connName.includes(cfgName))\n );\n });\n }\n\n const c: WalletProps = {\n id: connector.id,\n name: connector.name ?? connector.id ?? connector.type,\n icon: connector.icon ? (\n <img\n src={connector.icon}\n alt={connector.name}\n width={\"100%\"}\n height={\"100%\"}\n />\n ) : (\n <WalletIcon />\n ),\n connector,\n iconShape: connector.id === \"io.rabby\" ? \"circle\" : \"squircle\",\n isInstalled:\n connector.type === \"mock\" ||\n (connector.type === \"injected\" && connector.id !== \"metaMask\") ||\n connector.type === \"farcasterFrame\" ||\n isBaseAccountConnector(connector.id) ||\n isGeminiConnector(connector.id),\n };\n\n if (walletConfigKey) {\n const wallet = walletConfigs[walletConfigKey];\n return {\n ...c,\n iconConnector: connector.icon ? (\n <img\n src={connector.icon}\n alt={connector.name}\n width={\"100%\"}\n height={\"100%\"}\n />\n ) : undefined,\n ...wallet,\n };\n }\n\n return c;\n });\n\n wallets.push(walletConfigs.world as WalletProps);\n\n wallets.push({\n id: WALLET_ID_MOBILE_WALLETS,\n name: \"Mobile Wallets\",\n shortName: \"Mobile\",\n icon: (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n overflow: \"hidden\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transform: \"scale(1.2)\",\n transformOrigin: \"center center\",\n }}\n >\n <MobileWithLogos />\n </div>\n ),\n iconConnector: (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n overflow: \"hidden\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transform: \"scale(1.2)\",\n transformOrigin: \"center center\",\n }}\n >\n <MobileWithLogos />\n </div>\n ),\n });\n\n if (showSolanaPaymentMethod) {\n const solanaAdapters = solanaWallet.wallets ?? [];\n\n // Merge by fuzzy name matching (includes comparison)\n wallets.forEach((w) => {\n // Skip wallets without a usable name to avoid matching everything\n if (!w.name) return;\n\n const evm = w.name.toLowerCase();\n const match = solanaAdapters.find((sw) => {\n const sol = sw.adapter.name.toLowerCase();\n return evm.includes(sol) || sol.includes(evm);\n });\n\n if (match) {\n w.solanaConnectorName = match.adapter.name;\n }\n });\n\n const unmatched = solanaAdapters.filter(\n (sw) => !wallets.find((w) => w.solanaConnectorName === sw.adapter.name),\n );\n\n unmatched.forEach((sw) => {\n wallets.push({\n id: `solana-${sw.adapter.name}`,\n name: sw.adapter.name,\n shortName: sw.adapter.name,\n icon: <SquircleIcon icon={sw.adapter.icon} alt={sw.adapter.name} />,\n iconConnector: (\n <SquircleIcon icon={sw.adapter.icon} alt={sw.adapter.name} />\n ),\n iconShape: \"squircle\",\n solanaConnectorName: sw.adapter.name,\n });\n });\n }\n\n return (\n wallets\n // remove duplicate ids\n .filter(\n (wallet, index, self) =>\n self.findIndex((w) => w.id === wallet.id) === index,\n )\n // remove wallet with id coinbaseWalletSDK if wallet with id 'com.coinbase.wallet' exists\n .filter(\n (wallet, index, self) =>\n !(\n wallet.id === \"coinbaseWalletSDK\" &&\n self.find((w) => w.id === \"com.coinbase.wallet\")\n ),\n )\n // remove wallet with id io.metamask if wallet with id 'metaMask' exists\n .filter(\n (wallet, index, self) =>\n !(\n (wallet.id === \"metaMaskSDK\" || wallet.id === \"metaMask\") &&\n self.find(\n (w) => w.id === \"io.metamask\" || w.id === \"io.metamask.mobile\",\n )\n ),\n )\n // remove wallet with id 'com.warpcast.mobile' if wallet with id 'farcaster' exists\n .filter(\n (wallet, index, self) =>\n !(\n wallet.id === \"com.warpcast.mobile\" &&\n self.find((w) => w.id === \"farcaster\")\n ),\n )\n // order by isInstalled injected connectors first\n .sort((a, b) => {\n const aIsInstalledInjected =\n a.isInstalled && isInjectedConnector(a.connector?.type);\n const bIsInstalledInjected =\n b.isInstalled && isInjectedConnector(b.connector?.type);\n\n if (aIsInstalledInjected && !bIsInstalledInjected) return -1;\n if (!aIsInstalledInjected && bIsInstalledInjected) return 1;\n return 0;\n })\n // order \"mobile wallets\" option last\n .sort((a, b) => {\n if (a.id === WALLET_ID_MOBILE_WALLETS) return 1;\n if (b.id === WALLET_ID_MOBILE_WALLETS) return -1;\n return 0;\n })\n );\n};\n"],"names":["useSolanaWalletAdapter","addIfNotPresent"],"mappings":"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"}
|
|
@@ -128,12 +128,12 @@ const walletConfigs = {
|
|
|
128
128
|
return `https://phantom.app/ul/browse/${url}?ref=${ref}`;
|
|
129
129
|
}
|
|
130
130
|
},
|
|
131
|
-
porto: {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
},
|
|
131
|
+
// porto: {
|
|
132
|
+
// name: "Porto",
|
|
133
|
+
// icon: <Logos.Porto />,
|
|
134
|
+
// iconShape: "squircle",
|
|
135
|
+
// showInMobileConnectors: true,
|
|
136
|
+
// },
|
|
137
137
|
farcaster: {
|
|
138
138
|
name: "Farcaster",
|
|
139
139
|
icon: /* @__PURE__ */ jsx(Logos.Farcaster, {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletConfigs.js","sources":["../../../src/wallets/walletConfigs.tsx"],"sourcesContent":["import Logos from \"../assets/logos\";\n\n// Infer in-wallet payment URL from environment.\nlet daimoPayHost = \"https://pay.daimo.com\";\n\nexport function setInWalletPaymentUrlFromApiUrl(apiUrl: string) {\n if (apiUrl.startsWith(\"http://localhost\")) {\n daimoPayHost = \"http://localhost:3001\";\n } else if (apiUrl.startsWith(\"https://pay-api-stage.daimo.xyz\")) {\n daimoPayHost = \"https://pay.stage.daimo.xyz\";\n } else {\n daimoPayHost = \"https://pay.daimo.com\";\n }\n}\n\nfunction getDaimoPayUrl(payId: string) {\n return daimoPayHost + \"/pay?id=\" + payId;\n}\n\nfunction getEncodedDaimoPayUrl(payId: string) {\n let url = getDaimoPayUrl(payId);\n let encodedUrl = encodeURIComponent(url);\n return encodedUrl;\n}\n\nexport type WalletConfigProps = {\n // Wallet ID, eg \"io.rabby\" or a sentinel value like WALLET_ID_OTHER_WALLET.\n id?: string;\n // Wallets name\n name?: string;\n // Wallets short name. Defaults to `name`\n shortName?: string;\n // Icon to display in the modal\n icon?: string | React.ReactNode;\n // Icon to use on the wallet list button. If not provided, `icon` will be used\n iconConnector?: React.ReactNode;\n // Defaults to `'circle'`, but some icons look better as squircle (e.g. if they have a background)\n iconShape?: \"squircle\" | \"circle\" | \"square\";\n // Defaults to `false`, but some icons don't have a background and look better if they shrink to fit the container\n iconShouldShrink?: boolean;\n // Links to download the wallet\n downloadUrls?: {\n // Download redirect, hosted by Family.co\n // This URL redirects to the correct download URL based on the user's device\n // Note: this will eventually be automated by the below data\n download?: string;\n // wallet's website\n website?: string;\n // app downloads\n desktop?: string;\n android?: string;\n ios?: string;\n // browser extensions\n chrome?: string;\n firefox?: string;\n brave?: string;\n edge?: string;\n safari?: string;\n };\n deeplinkScheme?: string;\n // For Daimo Pay deeplinks\n getDaimoPayDeeplink?: (payId: string) => string;\n // To sort mobile wallets to show in the connector list\n showInMobileConnectors?: boolean;\n // Used to filter wallets that only support solana in mobile mode to not show in the connector options when the payID doesn't support solana\n isSolanaOnly?: boolean;\n};\n\n// Organised in alphabetical order by key\nexport const walletConfigs: {\n [rdns: string]: WalletConfigProps; // for multiple cases seperate rdns by comma\n} = {\n \"coinbaseWallet, coinbaseWalletSDK,com.coinbase.wallet\": {\n name: \"Base App\",\n shortName: \"Base\",\n icon: <Logos.Base />,\n iconShape: \"squircle\",\n downloadUrls: {\n download: \"https://connect.family.co/v0/download/coinbasewallet\",\n website: \"https://www.coinbase.com/wallet/getting-started-extension\",\n android: \"https://play.google.com/store/apps/details?id=org.toshi\",\n ios: \"https://apps.apple.com/app/coinbase-wallet-store-crypto/id1278383455\",\n chrome:\n \"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad\",\n },\n showInMobileConnectors: true,\n deeplinkScheme: \"cbwallet://\",\n getDaimoPayDeeplink: (payId: string) => {\n return \"cbwallet://dapp?url=\" + getEncodedDaimoPayUrl(payId);\n },\n },\n baseAccount: {\n name: \"Base App\",\n shortName: \"Base\",\n icon: <Logos.Base />,\n iconShape: \"squircle\",\n downloadUrls: {\n download: \"https://connect.family.co/v0/download/coinbasewallet\",\n website: \"https://www.coinbase.com/wallet/getting-started-extension\",\n android: \"https://play.google.com/store/apps/details?id=org.toshi\",\n ios: \"https://apps.apple.com/app/coinbase-wallet-store-crypto/id1278383455\",\n chrome:\n \"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad\",\n },\n showInMobileConnectors: false,\n deeplinkScheme: \"cbwallet://\",\n getDaimoPayDeeplink: (payId: string) => {\n return \"cbwallet://dapp?url=\" + getEncodedDaimoPayUrl(payId);\n },\n },\n backpack: {\n name: \"Backpack\",\n shortName: \"Backpack\",\n icon: <Logos.Backpack />,\n iconShape: \"squircle\",\n showInMobileConnectors: true,\n getDaimoPayDeeplink: (payId: string) => {\n const url = encodeURIComponent(getDaimoPayUrl(payId));\n return `https://backpack.app/ul/v1/browse/${url}`;\n },\n },\n bitget: {\n name: \"Bitget\",\n icon: <Logos.Bitget />,\n iconShape: \"squircle\",\n showInMobileConnectors: true,\n deeplinkScheme: \"bitkeep://\",\n getDaimoPayDeeplink: (payId: string) => {\n return \"bitkeep://bkconnect?action=dapp&url=\" + getDaimoPayUrl(payId);\n },\n },\n \"co.family.wallet\": {\n name: \"Family\",\n shortName: \"Family\",\n icon: <Logos.Family />,\n iconShape: \"squircle\",\n downloadUrls: {\n download: \"https://connect.family.co/v0/download/family\",\n website: \"https://family.co\",\n ios: \"https://family.co/download\",\n },\n deeplinkScheme: \"familywallet://\",\n getDaimoPayDeeplink: (payId: string) => {\n return \"familywallet://browser?url=\" + getDaimoPayUrl(payId);\n },\n showInMobileConnectors: true,\n },\n \"metaMask, metaMask-io, io.metamask, io.metamask.mobile, metaMaskSDK\": {\n name: \"MetaMask\",\n shortName: \"MetaMask\",\n icon: <Logos.MetaMask />,\n iconConnector: <Logos.MetaMask />,\n iconShouldShrink: true,\n downloadUrls: {\n download: \"https://connect.family.co/v0/download/metamask\",\n website: \"https://metamask.io/download/\",\n android: \"https://play.google.com/store/apps/details?id=io.metamask\",\n ios: \"https://apps.apple.com/app/metamask/id1438144202\",\n chrome:\n \"https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn\",\n firefox: \"https://addons.mozilla.org/firefox/addon/ether-metamask/\",\n brave:\n \"https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn\",\n edge: \"https://microsoftedge.microsoft.com/addons/detail/metamask/ejbalbakoplchlghecdalmeeeajnimhm\",\n },\n showInMobileConnectors: false,\n deeplinkScheme: \"metamask://\",\n getDaimoPayDeeplink: (payId: string) => {\n const daimoPayUrl = getDaimoPayUrl(payId);\n return (\n \"https://metamask.app.link/dapp/\" + daimoPayUrl.replace(\"https://\", \"\")\n );\n },\n },\n \"app.phantom\": {\n name: \"Phantom\",\n icon: <Logos.Phantom />,\n iconShape: \"squircle\",\n showInMobileConnectors: true,\n deeplinkScheme: \"phantom://\",\n getDaimoPayDeeplink: (payId: string) => {\n const url = encodeURIComponent(getDaimoPayUrl(payId));\n const ref = encodeURIComponent(window.location.origin);\n return `https://phantom.app/ul/browse/${url}?ref=${ref}`;\n },\n },\n porto: {\n name: \"Porto\",\n icon: <Logos.Porto />,\n iconShape: \"squircle\",\n showInMobileConnectors: true,\n },\n farcaster: {\n name: \"Farcaster\",\n icon: <Logos.Farcaster />,\n iconShape: \"squircle\",\n // Temporarily hidden from mobile connectors to make room for World wallet.\n // Will re-enable once /pay flow is fixed for Farcaster and we support more mobile wallets.\n showInMobileConnectors: false,\n getDaimoPayDeeplink: (payId: string) => {\n return (\n \"https://farcaster.xyz/miniapps/sGRsevnRvM9P/daimo-pay/?id=\" + payId\n );\n },\n },\n minipay: {\n name: \"MiniPay\",\n icon: <Logos.MiniPay />,\n iconShape: \"squircle\",\n showInMobileConnectors: true,\n getDaimoPayDeeplink: (payId: string) => {\n return (\n \"https://cash.minipay.xyz/browse?url=\" +\n encodeURIComponent(getEncodedDaimoPayUrl(payId))\n );\n },\n },\n \"me.rainbow\": {\n name: \"Rainbow Wallet\",\n shortName: \"Rainbow\",\n icon: <Logos.Rainbow />,\n iconShape: \"squircle\",\n downloadUrls: {\n download: \"https://connect.family.co/v0/download/rainbow\",\n website: \"https://rainbow.me/?utm_source=daimopay\",\n android:\n \"https://play.google.com/store/apps/details?id=me.rainbow&referrer=utm_source%3Ddaimopay&utm_source=daimopay\",\n ios: \"https://apps.apple.com/app/rainbow-ethereum-wallet/id1457119021?pt=119997837&ct=daimopay&mt=8\",\n chrome: \"https://rainbow.me/extension?utm_source=daimopay\",\n edge: \"https://rainbow.me/extension?utm_source=daimopay\",\n brave: \"https://rainbow.me/extension?utm_source=daimopay\",\n },\n showInMobileConnectors: true,\n deeplinkScheme: \"rainbow://\",\n getDaimoPayDeeplink: (payId: string) => {\n return \"rainbow://dapp?url=\" + getDaimoPayUrl(payId);\n },\n },\n // \"io.rabby\": {\n // name: \"Rabby Wallet\",\n // shortName: \"Rabby\",\n // downloadUrls: {\n // website: \"https://rabby.io\",\n // chrome:\n // \"https://chrome.google.com/webstore/detail/rabby-wallet/acmacodkjbdgmoleebolmdjonilkdbch\",\n // },\n // showInMobileConnectors: false,\n // //TODO: add wallet deep link\n // // edit rabby scheme to deeplink URL: https://github.com/RabbyHub/rabby-mobile/blob/999d60f49c5254e4aa8e6aa8bb80ad46e267845c/apps/mobile/src/LinkingConfig.ts#L25\n // },\n \"com.trustwallet.app\": {\n name: \"Trust Wallet\",\n shortName: \"Trust\",\n icon: <Logos.Trust />,\n iconConnector: <Logos.Trust />,\n downloadUrls: {\n download: \"https://connect.family.co/v0/download/trust\",\n android:\n \"https://play.google.com/store/apps/details?id=com.wallet.crypto.trustapp\",\n ios: \"https://apps.apple.com/app/trust-crypto-bitcoin-wallet/id1288339409\",\n },\n showInMobileConnectors: false,\n deeplinkScheme: \"trust://\",\n getDaimoPayDeeplink: (payId: string) => {\n return \"trust://open_url?coin_id=60&url=\" + getDaimoPayUrl(payId);\n },\n },\n okx: {\n name: \"OKX\",\n icon: <Logos.OKX />,\n showInMobileConnectors: true,\n deeplinkScheme: \"okx://\",\n getDaimoPayDeeplink: (payId: string) => {\n return \"okx://wallet/dapp/url?dappUrl=\" + getDaimoPayUrl(payId);\n },\n },\n solflare: {\n name: \"Solflare\",\n icon: <Logos.Solflare />,\n showInMobileConnectors: true,\n deeplinkScheme: \"solflare://\",\n getDaimoPayDeeplink: (payId: string) => {\n const url = encodeURIComponent(getDaimoPayUrl(payId));\n const ref = encodeURIComponent(window.location.origin);\n return `https://solflare.com/ul/v1/browse/${url}?ref=${ref}`;\n },\n isSolanaOnly: true,\n },\n // ledger: {\n // name: \"Ledger Live\",\n // shortName: \"Ledger\",\n // icon: <Logos.Ledger />,\n // downloadUrls: {\n // download: \"https://connect.family.co/v0/download/ledger\",\n // website: \"https://www.ledger.com/ledger-live/download#download-device-2\",\n // android: \"https://play.google.com/store/apps/details?id=com.ledger.live\",\n // ios: \"https://apps.apple.com/app/ledger-live-web3-wallet/id1361671700\",\n // },\n // showInMobileConnectors: true,\n // deeplinkScheme: \"ledgerlive://\",\n // // getDaimoPayDeeplink: (payId: string) => {\n // // return \"ledgerlive://discover/\" + daimoPayUrl + payId;\n // // },\n // // TODO: Add Daimo Pay to Ledger Live's Discover section https://developers.ledger.com/docs/ledger-live/discover/getting-started\n // shouldDeeplinkDesktop: true,\n // },\n world: {\n id: \"world\",\n name: \"World\",\n shortName: \"World\",\n icon: <Logos.World />,\n iconConnector: <Logos.World />,\n showInMobileConnectors: true,\n iconShape: \"squircle\",\n deeplinkScheme: \"world\",\n getDaimoPayDeeplink: (payId: string) => {\n const path = \"/pay?id=\" + payId;\n const url =\n \"https://worldcoin.org/mini-app?app_id=app_e7d27c5ce2234e00558776f227f791ef&path=\" +\n encodeURIComponent(path);\n return url;\n },\n },\n zerion: {\n name: \"Zerion\",\n icon: <Logos.Zerion />,\n downloadUrls: {\n download: \"https://connect.family.co/v0/download/zerion\",\n ios: \"https://apps.apple.com/app/apple-store/id1456732565\",\n android:\n \"https://play.google.com/store/apps/details?id=io.zerion.android\",\n website: \"https://zerion.io/\",\n },\n showInMobileConnectors: true,\n deeplinkScheme: \"zerion://\",\n getDaimoPayDeeplink: (payId: string) => {\n return \"zerion://browser?url=\" + getDaimoPayUrl(payId);\n },\n },\n} as const;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"walletConfigs.js","sources":["../../../src/wallets/walletConfigs.tsx"],"sourcesContent":["import Logos from \"../assets/logos\";\n\n// Infer in-wallet payment URL from environment.\nlet daimoPayHost = \"https://pay.daimo.com\";\n\nexport function setInWalletPaymentUrlFromApiUrl(apiUrl: string) {\n if (apiUrl.startsWith(\"http://localhost\")) {\n daimoPayHost = \"http://localhost:3001\";\n } else if (apiUrl.startsWith(\"https://pay-api-stage.daimo.xyz\")) {\n daimoPayHost = \"https://pay.stage.daimo.xyz\";\n } else {\n daimoPayHost = \"https://pay.daimo.com\";\n }\n}\n\nfunction getDaimoPayUrl(payId: string) {\n return daimoPayHost + \"/pay?id=\" + payId;\n}\n\nfunction getEncodedDaimoPayUrl(payId: string) {\n let url = getDaimoPayUrl(payId);\n let encodedUrl = encodeURIComponent(url);\n return encodedUrl;\n}\n\nexport type WalletConfigProps = {\n // Wallet ID, eg \"io.rabby\" or a sentinel value like WALLET_ID_OTHER_WALLET.\n id?: string;\n // Wallets name\n name?: string;\n // Wallets short name. Defaults to `name`\n shortName?: string;\n // Icon to display in the modal\n icon?: string | React.ReactNode;\n // Icon to use on the wallet list button. If not provided, `icon` will be used\n iconConnector?: React.ReactNode;\n // Defaults to `'circle'`, but some icons look better as squircle (e.g. if they have a background)\n iconShape?: \"squircle\" | \"circle\" | \"square\";\n // Defaults to `false`, but some icons don't have a background and look better if they shrink to fit the container\n iconShouldShrink?: boolean;\n // Links to download the wallet\n downloadUrls?: {\n // Download redirect, hosted by Family.co\n // This URL redirects to the correct download URL based on the user's device\n // Note: this will eventually be automated by the below data\n download?: string;\n // wallet's website\n website?: string;\n // app downloads\n desktop?: string;\n android?: string;\n ios?: string;\n // browser extensions\n chrome?: string;\n firefox?: string;\n brave?: string;\n edge?: string;\n safari?: string;\n };\n deeplinkScheme?: string;\n // For Daimo Pay deeplinks\n getDaimoPayDeeplink?: (payId: string) => string;\n // To sort mobile wallets to show in the connector list\n showInMobileConnectors?: boolean;\n // Used to filter wallets that only support solana in mobile mode to not show in the connector options when the payID doesn't support solana\n isSolanaOnly?: boolean;\n};\n\n// Organised in alphabetical order by key\nexport const walletConfigs: {\n [rdns: string]: WalletConfigProps; // for multiple cases seperate rdns by comma\n} = {\n \"coinbaseWallet, coinbaseWalletSDK,com.coinbase.wallet\": {\n name: \"Base App\",\n shortName: \"Base\",\n icon: <Logos.Base />,\n iconShape: \"squircle\",\n downloadUrls: {\n download: \"https://connect.family.co/v0/download/coinbasewallet\",\n website: \"https://www.coinbase.com/wallet/getting-started-extension\",\n android: \"https://play.google.com/store/apps/details?id=org.toshi\",\n ios: \"https://apps.apple.com/app/coinbase-wallet-store-crypto/id1278383455\",\n chrome:\n \"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad\",\n },\n showInMobileConnectors: true,\n deeplinkScheme: \"cbwallet://\",\n getDaimoPayDeeplink: (payId: string) => {\n return \"cbwallet://dapp?url=\" + getEncodedDaimoPayUrl(payId);\n },\n },\n baseAccount: {\n name: \"Base App\",\n shortName: \"Base\",\n icon: <Logos.Base />,\n iconShape: \"squircle\",\n downloadUrls: {\n download: \"https://connect.family.co/v0/download/coinbasewallet\",\n website: \"https://www.coinbase.com/wallet/getting-started-extension\",\n android: \"https://play.google.com/store/apps/details?id=org.toshi\",\n ios: \"https://apps.apple.com/app/coinbase-wallet-store-crypto/id1278383455\",\n chrome:\n \"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad\",\n },\n showInMobileConnectors: false,\n deeplinkScheme: \"cbwallet://\",\n getDaimoPayDeeplink: (payId: string) => {\n return \"cbwallet://dapp?url=\" + getEncodedDaimoPayUrl(payId);\n },\n },\n backpack: {\n name: \"Backpack\",\n shortName: \"Backpack\",\n icon: <Logos.Backpack />,\n iconShape: \"squircle\",\n showInMobileConnectors: true,\n getDaimoPayDeeplink: (payId: string) => {\n const url = encodeURIComponent(getDaimoPayUrl(payId));\n return `https://backpack.app/ul/v1/browse/${url}`;\n },\n },\n bitget: {\n name: \"Bitget\",\n icon: <Logos.Bitget />,\n iconShape: \"squircle\",\n showInMobileConnectors: true,\n deeplinkScheme: \"bitkeep://\",\n getDaimoPayDeeplink: (payId: string) => {\n return \"bitkeep://bkconnect?action=dapp&url=\" + getDaimoPayUrl(payId);\n },\n },\n \"co.family.wallet\": {\n name: \"Family\",\n shortName: \"Family\",\n icon: <Logos.Family />,\n iconShape: \"squircle\",\n downloadUrls: {\n download: \"https://connect.family.co/v0/download/family\",\n website: \"https://family.co\",\n ios: \"https://family.co/download\",\n },\n deeplinkScheme: \"familywallet://\",\n getDaimoPayDeeplink: (payId: string) => {\n return \"familywallet://browser?url=\" + getDaimoPayUrl(payId);\n },\n showInMobileConnectors: true,\n },\n \"metaMask, metaMask-io, io.metamask, io.metamask.mobile, metaMaskSDK\": {\n name: \"MetaMask\",\n shortName: \"MetaMask\",\n icon: <Logos.MetaMask />,\n iconConnector: <Logos.MetaMask />,\n iconShouldShrink: true,\n downloadUrls: {\n download: \"https://connect.family.co/v0/download/metamask\",\n website: \"https://metamask.io/download/\",\n android: \"https://play.google.com/store/apps/details?id=io.metamask\",\n ios: \"https://apps.apple.com/app/metamask/id1438144202\",\n chrome:\n \"https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn\",\n firefox: \"https://addons.mozilla.org/firefox/addon/ether-metamask/\",\n brave:\n \"https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn\",\n edge: \"https://microsoftedge.microsoft.com/addons/detail/metamask/ejbalbakoplchlghecdalmeeeajnimhm\",\n },\n showInMobileConnectors: false,\n deeplinkScheme: \"metamask://\",\n getDaimoPayDeeplink: (payId: string) => {\n const daimoPayUrl = getDaimoPayUrl(payId);\n return (\n \"https://metamask.app.link/dapp/\" + daimoPayUrl.replace(\"https://\", \"\")\n );\n },\n },\n \"app.phantom\": {\n name: \"Phantom\",\n icon: <Logos.Phantom />,\n iconShape: \"squircle\",\n showInMobileConnectors: true,\n deeplinkScheme: \"phantom://\",\n getDaimoPayDeeplink: (payId: string) => {\n const url = encodeURIComponent(getDaimoPayUrl(payId));\n const ref = encodeURIComponent(window.location.origin);\n return `https://phantom.app/ul/browse/${url}?ref=${ref}`;\n },\n },\n // porto: {\n // name: \"Porto\",\n // icon: <Logos.Porto />,\n // iconShape: \"squircle\",\n // showInMobileConnectors: true,\n // },\n farcaster: {\n name: \"Farcaster\",\n icon: <Logos.Farcaster />,\n iconShape: \"squircle\",\n // Temporarily hidden from mobile connectors to make room for World wallet.\n // Will re-enable once /pay flow is fixed for Farcaster and we support more mobile wallets.\n showInMobileConnectors: false,\n getDaimoPayDeeplink: (payId: string) => {\n return (\n \"https://farcaster.xyz/miniapps/sGRsevnRvM9P/daimo-pay/?id=\" + payId\n );\n },\n },\n minipay: {\n name: \"MiniPay\",\n icon: <Logos.MiniPay />,\n iconShape: \"squircle\",\n showInMobileConnectors: true,\n getDaimoPayDeeplink: (payId: string) => {\n return (\n \"https://cash.minipay.xyz/browse?url=\" +\n encodeURIComponent(getEncodedDaimoPayUrl(payId))\n );\n },\n },\n \"me.rainbow\": {\n name: \"Rainbow Wallet\",\n shortName: \"Rainbow\",\n icon: <Logos.Rainbow />,\n iconShape: \"squircle\",\n downloadUrls: {\n download: \"https://connect.family.co/v0/download/rainbow\",\n website: \"https://rainbow.me/?utm_source=daimopay\",\n android:\n \"https://play.google.com/store/apps/details?id=me.rainbow&referrer=utm_source%3Ddaimopay&utm_source=daimopay\",\n ios: \"https://apps.apple.com/app/rainbow-ethereum-wallet/id1457119021?pt=119997837&ct=daimopay&mt=8\",\n chrome: \"https://rainbow.me/extension?utm_source=daimopay\",\n edge: \"https://rainbow.me/extension?utm_source=daimopay\",\n brave: \"https://rainbow.me/extension?utm_source=daimopay\",\n },\n showInMobileConnectors: true,\n deeplinkScheme: \"rainbow://\",\n getDaimoPayDeeplink: (payId: string) => {\n return \"rainbow://dapp?url=\" + getDaimoPayUrl(payId);\n },\n },\n // \"io.rabby\": {\n // name: \"Rabby Wallet\",\n // shortName: \"Rabby\",\n // downloadUrls: {\n // website: \"https://rabby.io\",\n // chrome:\n // \"https://chrome.google.com/webstore/detail/rabby-wallet/acmacodkjbdgmoleebolmdjonilkdbch\",\n // },\n // showInMobileConnectors: false,\n // //TODO: add wallet deep link\n // // edit rabby scheme to deeplink URL: https://github.com/RabbyHub/rabby-mobile/blob/999d60f49c5254e4aa8e6aa8bb80ad46e267845c/apps/mobile/src/LinkingConfig.ts#L25\n // },\n \"com.trustwallet.app\": {\n name: \"Trust Wallet\",\n shortName: \"Trust\",\n icon: <Logos.Trust />,\n iconConnector: <Logos.Trust />,\n downloadUrls: {\n download: \"https://connect.family.co/v0/download/trust\",\n android:\n \"https://play.google.com/store/apps/details?id=com.wallet.crypto.trustapp\",\n ios: \"https://apps.apple.com/app/trust-crypto-bitcoin-wallet/id1288339409\",\n },\n showInMobileConnectors: false,\n deeplinkScheme: \"trust://\",\n getDaimoPayDeeplink: (payId: string) => {\n return \"trust://open_url?coin_id=60&url=\" + getDaimoPayUrl(payId);\n },\n },\n okx: {\n name: \"OKX\",\n icon: <Logos.OKX />,\n showInMobileConnectors: true,\n deeplinkScheme: \"okx://\",\n getDaimoPayDeeplink: (payId: string) => {\n return \"okx://wallet/dapp/url?dappUrl=\" + getDaimoPayUrl(payId);\n },\n },\n solflare: {\n name: \"Solflare\",\n icon: <Logos.Solflare />,\n showInMobileConnectors: true,\n deeplinkScheme: \"solflare://\",\n getDaimoPayDeeplink: (payId: string) => {\n const url = encodeURIComponent(getDaimoPayUrl(payId));\n const ref = encodeURIComponent(window.location.origin);\n return `https://solflare.com/ul/v1/browse/${url}?ref=${ref}`;\n },\n isSolanaOnly: true,\n },\n // ledger: {\n // name: \"Ledger Live\",\n // shortName: \"Ledger\",\n // icon: <Logos.Ledger />,\n // downloadUrls: {\n // download: \"https://connect.family.co/v0/download/ledger\",\n // website: \"https://www.ledger.com/ledger-live/download#download-device-2\",\n // android: \"https://play.google.com/store/apps/details?id=com.ledger.live\",\n // ios: \"https://apps.apple.com/app/ledger-live-web3-wallet/id1361671700\",\n // },\n // showInMobileConnectors: true,\n // deeplinkScheme: \"ledgerlive://\",\n // // getDaimoPayDeeplink: (payId: string) => {\n // // return \"ledgerlive://discover/\" + daimoPayUrl + payId;\n // // },\n // // TODO: Add Daimo Pay to Ledger Live's Discover section https://developers.ledger.com/docs/ledger-live/discover/getting-started\n // shouldDeeplinkDesktop: true,\n // },\n world: {\n id: \"world\",\n name: \"World\",\n shortName: \"World\",\n icon: <Logos.World />,\n iconConnector: <Logos.World />,\n showInMobileConnectors: true,\n iconShape: \"squircle\",\n deeplinkScheme: \"world\",\n getDaimoPayDeeplink: (payId: string) => {\n const path = \"/pay?id=\" + payId;\n const url =\n \"https://worldcoin.org/mini-app?app_id=app_e7d27c5ce2234e00558776f227f791ef&path=\" +\n encodeURIComponent(path);\n return url;\n },\n },\n zerion: {\n name: \"Zerion\",\n icon: <Logos.Zerion />,\n downloadUrls: {\n download: \"https://connect.family.co/v0/download/zerion\",\n ios: \"https://apps.apple.com/app/apple-store/id1456732565\",\n android:\n \"https://play.google.com/store/apps/details?id=io.zerion.android\",\n website: \"https://zerion.io/\",\n },\n showInMobileConnectors: true,\n deeplinkScheme: \"zerion://\",\n getDaimoPayDeeplink: (payId: string) => {\n return \"zerion://browser?url=\" + getDaimoPayUrl(payId);\n },\n },\n} as const;\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@daimo/pay",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.16.
|
|
4
|
+
"version": "1.16.8",
|
|
5
5
|
"author": "Daimo",
|
|
6
6
|
"homepage": "https://pay.daimo.com",
|
|
7
7
|
"license": "BSD-2-Clause license",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"lint": "eslint 'src/**/*.{js,jsx,ts,tsx}' --max-warnings=0"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@daimo/pay-common": "1.16.
|
|
36
|
+
"@daimo/pay-common": "1.16.8",
|
|
37
37
|
"@solana/wallet-adapter-base": "^0.9.23",
|
|
38
38
|
"@solana/wallet-adapter-react": "^0.15.35",
|
|
39
39
|
"@solana/web3.js": "^1.95.4",
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
|
|
3
|
-
function CrepeIcon({ ...props }) {
|
|
4
|
-
return /* @__PURE__ */ jsxs(
|
|
5
|
-
"svg",
|
|
6
|
-
{
|
|
7
|
-
width: "20",
|
|
8
|
-
height: "20",
|
|
9
|
-
viewBox: "0 0 512 512",
|
|
10
|
-
fill: "none",
|
|
11
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
12
|
-
...props,
|
|
13
|
-
children: [
|
|
14
|
-
/* @__PURE__ */ jsx(
|
|
15
|
-
"path",
|
|
16
|
-
{
|
|
17
|
-
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",
|
|
18
|
-
stroke: "currentColor",
|
|
19
|
-
strokeWidth: "35",
|
|
20
|
-
strokeMiterlimit: "10",
|
|
21
|
-
strokeLinecap: "round",
|
|
22
|
-
strokeLinejoin: "round"
|
|
23
|
-
}
|
|
24
|
-
),
|
|
25
|
-
/* @__PURE__ */ jsx(
|
|
26
|
-
"path",
|
|
27
|
-
{
|
|
28
|
-
d: "M473.885 84.5848C417.669 176.594 247.311 44.0744 143.584 148.461L257.946 487.638",
|
|
29
|
-
stroke: "currentColor",
|
|
30
|
-
strokeWidth: "35",
|
|
31
|
-
strokeMiterlimit: "10",
|
|
32
|
-
strokeLinecap: "round",
|
|
33
|
-
strokeLinejoin: "round"
|
|
34
|
-
}
|
|
35
|
-
)
|
|
36
|
-
]
|
|
37
|
-
}
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export { CrepeIcon as default };
|
|
42
|
-
//# sourceMappingURL=crepe.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crepe.js","sources":["../../../src/assets/crepe.tsx"],"sourcesContent":["export default function CrepeIcon({ ...props }) {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 512 512\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n 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\"\n stroke=\"currentColor\"\n strokeWidth=\"35\"\n strokeMiterlimit=\"10\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M473.885 84.5848C417.669 176.594 247.311 44.0744 143.584 148.461L257.946 487.638\"\n stroke=\"currentColor\"\n strokeWidth=\"35\"\n strokeMiterlimit=\"10\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n};\n"],"names":[],"mappings":";;AAAA,SAAwB,SAAU,CAAA,EAAE,GAAG,KAAA,EAAS,EAAA;AAC9C,EACE,uBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAM,EAAA,IAAA;AAAA,MACN,MAAO,EAAA,IAAA;AAAA,MACP,OAAQ,EAAA,aAAA;AAAA,MACR,IAAK,EAAA,MAAA;AAAA,MACL,KAAM,EAAA,4BAAA;AAAA,MACL,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,CAAE,EAAA,0IAAA;AAAA,YACF,MAAO,EAAA,cAAA;AAAA,YACP,WAAY,EAAA,IAAA;AAAA,YACZ,gBAAiB,EAAA,IAAA;AAAA,YACjB,aAAc,EAAA,OAAA;AAAA,YACd,cAAe,EAAA,OAAA;AAAA,WAAA;AAAA,SACjB;AAAA,wBACA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,CAAE,EAAA,kFAAA;AAAA,YACF,MAAO,EAAA,cAAA;AAAA,YACP,WAAY,EAAA,IAAA;AAAA,YACZ,gBAAiB,EAAA,IAAA;AAAA,YACjB,aAAc,EAAA,OAAA;AAAA,YACd,cAAe,EAAA,OAAA;AAAA,WAAA;AAAA,SACjB;AAAA,OAAA;AAAA,KAAA;AAAA,GACF,CAAA;AAEJ;;;;"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
|
|
3
|
-
function WalletIcon({ ...props }) {
|
|
4
|
-
return /* @__PURE__ */ jsxs(
|
|
5
|
-
"svg",
|
|
6
|
-
{
|
|
7
|
-
"aria-hidden": "true",
|
|
8
|
-
width: "20",
|
|
9
|
-
height: "19",
|
|
10
|
-
viewBox: "0 0 20 19",
|
|
11
|
-
fill: "none",
|
|
12
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
13
|
-
...props,
|
|
14
|
-
children: [
|
|
15
|
-
/* @__PURE__ */ jsx(
|
|
16
|
-
"path",
|
|
17
|
-
{
|
|
18
|
-
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",
|
|
19
|
-
stroke: "currentColor",
|
|
20
|
-
strokeWidth: "2"
|
|
21
|
-
}
|
|
22
|
-
),
|
|
23
|
-
/* @__PURE__ */ jsx(
|
|
24
|
-
"path",
|
|
25
|
-
{
|
|
26
|
-
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",
|
|
27
|
-
fill: "var(--ck-body-background)",
|
|
28
|
-
stroke: "currentColor",
|
|
29
|
-
strokeWidth: "2"
|
|
30
|
-
}
|
|
31
|
-
),
|
|
32
|
-
/* @__PURE__ */ jsx("circle", { cx: "10.3863", cy: "10.1894", r: "1.32574", fill: "currentColor" })
|
|
33
|
-
]
|
|
34
|
-
}
|
|
35
|
-
);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export { WalletIcon as default };
|
|
39
|
-
//# sourceMappingURL=wallet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sources":["../../../src/assets/wallet.tsx"],"sourcesContent":["export default function WalletIcon({ ...props }) {\n return (\n <svg\n aria-hidden=\"true\"\n width=\"20\"\n height=\"19\"\n viewBox=\"0 0 20 19\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n 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\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <path\n 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\"\n fill=\"var(--ck-body-background)\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <circle cx=\"10.3863\" cy=\"10.1894\" r=\"1.32574\" fill=\"currentColor\" />\n </svg>\n );\n};\n"],"names":[],"mappings":";;AAAA,SAAwB,UAAW,CAAA,EAAE,GAAG,KAAA,EAAS,EAAA;AAC/C,EACE,uBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAY,EAAA,MAAA;AAAA,MACZ,KAAM,EAAA,IAAA;AAAA,MACN,MAAO,EAAA,IAAA;AAAA,MACP,OAAQ,EAAA,WAAA;AAAA,MACR,IAAK,EAAA,MAAA;AAAA,MACL,KAAM,EAAA,4BAAA;AAAA,MACL,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,CAAE,EAAA,mPAAA;AAAA,YACF,MAAO,EAAA,cAAA;AAAA,YACP,WAAY,EAAA,GAAA;AAAA,WAAA;AAAA,SACd;AAAA,wBACA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,CAAE,EAAA,yOAAA;AAAA,YACF,IAAK,EAAA,2BAAA;AAAA,YACL,MAAO,EAAA,cAAA;AAAA,YACP,WAAY,EAAA,GAAA;AAAA,WAAA;AAAA,SACd;AAAA,wBACA,GAAA,CAAC,YAAO,EAAG,EAAA,SAAA,EAAU,IAAG,SAAU,EAAA,CAAA,EAAE,SAAU,EAAA,IAAA,EAAK,cAAe,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GACpE,CAAA;AAEJ;;;;"}
|
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
import { keyframes } from 'styled-components';
|
|
2
|
-
import styled from '../../../styles/styled/index.js';
|
|
3
|
-
import { motion } from 'framer-motion';
|
|
4
|
-
import { ModalBody } from '../../Common/Modal/styles.js';
|
|
5
|
-
|
|
6
|
-
const Shimmer = keyframes`
|
|
7
|
-
0%{ transform: translate(-100%) rotate(-45deg); }
|
|
8
|
-
100%{ transform: translate(100%) rotate(-80deg); }
|
|
9
|
-
`;
|
|
10
|
-
const InfoBox = styled.div`
|
|
11
|
-
padding: 24px 24px 28px;
|
|
12
|
-
border-radius: var(--ck-tertiary-border-radius, 24px);
|
|
13
|
-
box-shadow: var(--ck-tertiary-box-shadow, none);
|
|
14
|
-
background: var(--ck-body-background-tertiary);
|
|
15
|
-
${ModalBody} {
|
|
16
|
-
max-width: none;
|
|
17
|
-
}
|
|
18
|
-
`;
|
|
19
|
-
const InfoBoxButtons = styled.div`
|
|
20
|
-
display: grid;
|
|
21
|
-
grid-template-columns: 1fr 1fr;
|
|
22
|
-
gap: 16px;
|
|
23
|
-
margin: 5px -8px -12px;
|
|
24
|
-
button {
|
|
25
|
-
}
|
|
26
|
-
`;
|
|
27
|
-
const LearnMoreContainer = styled(motion.div)`
|
|
28
|
-
text-align: center;
|
|
29
|
-
margin-top: 16px;
|
|
30
|
-
margin-bottom: -6px;
|
|
31
|
-
`;
|
|
32
|
-
const LearnMoreButton = styled(motion.button)`
|
|
33
|
-
appearance: none;
|
|
34
|
-
user-select: none;
|
|
35
|
-
cursor: pointer;
|
|
36
|
-
display: inline-flex;
|
|
37
|
-
align-items: center;
|
|
38
|
-
justify-content: center;
|
|
39
|
-
gap: 10px;
|
|
40
|
-
height: 42px;
|
|
41
|
-
padding: 0 16px;
|
|
42
|
-
border-radius: 6px;
|
|
43
|
-
background: none;
|
|
44
|
-
color: var(--ck-body-color-muted);
|
|
45
|
-
font-size: 15px;
|
|
46
|
-
line-height: 18px;
|
|
47
|
-
font-weight: 500;
|
|
48
|
-
/* will-change: transform; */
|
|
49
|
-
transition:
|
|
50
|
-
color 200ms ease,
|
|
51
|
-
transform 100ms ease;
|
|
52
|
-
svg {
|
|
53
|
-
transition: all 100ms ease-out;
|
|
54
|
-
display: block;
|
|
55
|
-
position: relative;
|
|
56
|
-
top: 2px;
|
|
57
|
-
left: 2px;
|
|
58
|
-
transform: translateZ(0px);
|
|
59
|
-
path,
|
|
60
|
-
circle {
|
|
61
|
-
transition: all 100ms ease-out;
|
|
62
|
-
}
|
|
63
|
-
path:last-of-type {
|
|
64
|
-
transform-origin: 0 0;
|
|
65
|
-
transform: scaleX(1.3) skewY(-12deg);
|
|
66
|
-
opacity: 0;
|
|
67
|
-
}
|
|
68
|
-
circle {
|
|
69
|
-
transform: translate(20%, -15%);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
&:hover {
|
|
73
|
-
color: var(--ck-body-color-muted-hover);
|
|
74
|
-
svg {
|
|
75
|
-
path,
|
|
76
|
-
circle {
|
|
77
|
-
opacity: 1;
|
|
78
|
-
transform: none;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
&:active {
|
|
83
|
-
transform: scale(0.96);
|
|
84
|
-
}
|
|
85
|
-
`;
|
|
86
|
-
styled(motion.div)`
|
|
87
|
-
display: flex;
|
|
88
|
-
flex-direction: column;
|
|
89
|
-
gap: 12px;
|
|
90
|
-
padding: 0 0 16px;
|
|
91
|
-
overflow-y: scroll;
|
|
92
|
-
max-height: 20rem;
|
|
93
|
-
|
|
94
|
-
&::-webkit-scrollbar {
|
|
95
|
-
display: none;
|
|
96
|
-
}
|
|
97
|
-
`;
|
|
98
|
-
styled(motion.button)`
|
|
99
|
-
cursor: pointer;
|
|
100
|
-
user-select: none;
|
|
101
|
-
position: relative;
|
|
102
|
-
display: flex;
|
|
103
|
-
align-items: center;
|
|
104
|
-
padding: 0 20px;
|
|
105
|
-
width: 100%;
|
|
106
|
-
height: 64px;
|
|
107
|
-
font-size: 17px;
|
|
108
|
-
font-weight: var(--ck-primary-button-font-weight, 500);
|
|
109
|
-
line-height: 20px;
|
|
110
|
-
text-align: var(--ck-body-button-text-align, left);
|
|
111
|
-
transition: 180ms ease;
|
|
112
|
-
transition-property: background, color, box-shadow, transform, opacity;
|
|
113
|
-
will-change: transform, box-shadow, background-color, color, opacity;
|
|
114
|
-
|
|
115
|
-
--fallback-color: var(--ck-primary-button-color);
|
|
116
|
-
--fallback-background: var(--ck-primary-button-background);
|
|
117
|
-
--fallback-box-shadow: var(--ck-primary-button-box-shadow);
|
|
118
|
-
--fallback-border-radius: var(--ck-primary-button-border-radius);
|
|
119
|
-
|
|
120
|
-
--color: var(--ck-primary-button-color, var(--fallback-color));
|
|
121
|
-
--background: var(--ck-primary-button-background, var(--fallback-background));
|
|
122
|
-
--box-shadow: var(--ck-primary-button-box-shadow, var(--fallback-box-shadow));
|
|
123
|
-
--border-radius: var(
|
|
124
|
-
--ck-primary-button-border-radius,
|
|
125
|
-
var(--fallback-border-radius)
|
|
126
|
-
);
|
|
127
|
-
|
|
128
|
-
--hover-color: var(--ck-primary-button-hover-color, var(--color));
|
|
129
|
-
--hover-background: var(
|
|
130
|
-
--ck-primary-button-hover-background,
|
|
131
|
-
var(--background)
|
|
132
|
-
);
|
|
133
|
-
--hover-box-shadow: var(
|
|
134
|
-
--ck-primary-button-hover-box-shadow,
|
|
135
|
-
var(--box-shadow)
|
|
136
|
-
);
|
|
137
|
-
--hover-border-radius: var(
|
|
138
|
-
--ck-primary-button-hover-border-radius,
|
|
139
|
-
var(--border-radius)
|
|
140
|
-
);
|
|
141
|
-
|
|
142
|
-
--active-color: var(--ck-primary-button-active-color, var(--hover-color));
|
|
143
|
-
--active-background: var(
|
|
144
|
-
--ck-primary-button-active-background,
|
|
145
|
-
var(--hover-background)
|
|
146
|
-
);
|
|
147
|
-
--active-box-shadow: var(
|
|
148
|
-
--ck-primary-button-active-box-shadow,
|
|
149
|
-
var(--hover-box-shadow)
|
|
150
|
-
);
|
|
151
|
-
--active-border-radius: var(
|
|
152
|
-
--ck-primary-button-active-border-radius,
|
|
153
|
-
var(--hover-border-radius)
|
|
154
|
-
);
|
|
155
|
-
|
|
156
|
-
color: var(--color);
|
|
157
|
-
background: var(--background);
|
|
158
|
-
box-shadow: var(--box-shadow);
|
|
159
|
-
border-radius: var(--border-radius);
|
|
160
|
-
|
|
161
|
-
&:disabled {
|
|
162
|
-
transition: 180ms ease;
|
|
163
|
-
opacity: 0.4;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
--bg: var(--background);
|
|
167
|
-
&:not(:disabled) {
|
|
168
|
-
&:hover {
|
|
169
|
-
color: var(--hover-color);
|
|
170
|
-
background: var(--hover-background);
|
|
171
|
-
box-shadow: var(--hover-box-shadow);
|
|
172
|
-
border-radius: var(--hover-border-radius);
|
|
173
|
-
--bg: var(--hover-background, var(--background));
|
|
174
|
-
}
|
|
175
|
-
&:focus-visible {
|
|
176
|
-
transition-duration: 100ms;
|
|
177
|
-
color: var(--hover-color);
|
|
178
|
-
background: var(--hover-background);
|
|
179
|
-
box-shadow: var(--hover-box-shadow);
|
|
180
|
-
border-radius: var(--hover-border-radius);
|
|
181
|
-
--bg: var(--hover-background, var(--background));
|
|
182
|
-
}
|
|
183
|
-
&:active {
|
|
184
|
-
color: var(--active-color);
|
|
185
|
-
background: var(--active-background);
|
|
186
|
-
box-shadow: var(--active-box-shadow);
|
|
187
|
-
border-radius: var(--active-border-radius);
|
|
188
|
-
--bg: var(--active-background, var(--background));
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
`;
|
|
192
|
-
styled(motion.span)`
|
|
193
|
-
position: relative;
|
|
194
|
-
top: var(--ck-recent-badge-top-offset, 0.5px);
|
|
195
|
-
display: inline-block;
|
|
196
|
-
padding: 10px 7px;
|
|
197
|
-
line-height: 0;
|
|
198
|
-
font-size: 13px;
|
|
199
|
-
font-weight: 400;
|
|
200
|
-
border-radius: var(--ck-recent-badge-border-radius, var(--border-radius));
|
|
201
|
-
color: var(
|
|
202
|
-
--ck-recent-badge-color,
|
|
203
|
-
var(--ck-accent-color, var(--ck-body-color-muted, currentColor))
|
|
204
|
-
);
|
|
205
|
-
background: var(--ck-recent-badge-background, transparent);
|
|
206
|
-
overflow: hidden;
|
|
207
|
-
span {
|
|
208
|
-
display: inline-block;
|
|
209
|
-
position: relative;
|
|
210
|
-
}
|
|
211
|
-
&:before {
|
|
212
|
-
z-index: 1;
|
|
213
|
-
content: "";
|
|
214
|
-
position: absolute;
|
|
215
|
-
inset: 0;
|
|
216
|
-
opacity: 0.4;
|
|
217
|
-
box-shadow: var(--ck-recent-badge-box-shadow, inset 0 0 0 1px currentColor);
|
|
218
|
-
border-radius: inherit;
|
|
219
|
-
}
|
|
220
|
-
&:after {
|
|
221
|
-
z-index: 2;
|
|
222
|
-
content: "";
|
|
223
|
-
position: absolute;
|
|
224
|
-
inset: -10%;
|
|
225
|
-
top: -110%;
|
|
226
|
-
aspect-ratio: 1/1;
|
|
227
|
-
opacity: 0.7;
|
|
228
|
-
background: linear-gradient(
|
|
229
|
-
170deg,
|
|
230
|
-
transparent 10%,
|
|
231
|
-
var(--ck-recent-badge-background, var(--bg)) 50%,
|
|
232
|
-
transparent 90%
|
|
233
|
-
);
|
|
234
|
-
animation: ${Shimmer} 2s linear infinite;
|
|
235
|
-
}
|
|
236
|
-
`;
|
|
237
|
-
styled(motion.span)`
|
|
238
|
-
display: flex;
|
|
239
|
-
align-items: center;
|
|
240
|
-
gap: 9px;
|
|
241
|
-
width: 100%;
|
|
242
|
-
overflow: hidden;
|
|
243
|
-
white-space: nowrap;
|
|
244
|
-
text-overflow: ellipsis;
|
|
245
|
-
padding: 2px 0;
|
|
246
|
-
padding-right: 38px;
|
|
247
|
-
`;
|
|
248
|
-
styled(motion.div)`
|
|
249
|
-
position: absolute;
|
|
250
|
-
right: 20px;
|
|
251
|
-
width: 32px;
|
|
252
|
-
height: 32px;
|
|
253
|
-
overflow: hidden;
|
|
254
|
-
svg,
|
|
255
|
-
img {
|
|
256
|
-
display: block;
|
|
257
|
-
position: relative;
|
|
258
|
-
pointer-events: none;
|
|
259
|
-
overflow: hidden;
|
|
260
|
-
border-radius: 27.5%;
|
|
261
|
-
width: 100%;
|
|
262
|
-
height: 100%;
|
|
263
|
-
}
|
|
264
|
-
`;
|
|
265
|
-
|
|
266
|
-
export { InfoBox, InfoBoxButtons, LearnMoreButton, LearnMoreContainer };
|
|
267
|
-
//# sourceMappingURL=styles.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sources":["../../../../../src/components/Pages/Connectors/styles.ts"],"sourcesContent":["import { keyframes } from \"styled-components\";\nimport styled from \"./../../../styles/styled\";\n\nimport { motion } from \"framer-motion\";\nimport { ModalBody } from \"../../Common/Modal/styles\";\n\nconst Shimmer = keyframes`\n 0%{ transform: translate(-100%) rotate(-45deg); }\n 100%{ transform: translate(100%) rotate(-80deg); }\n`;\n\nexport const InfoBox = styled.div`\n padding: 24px 24px 28px;\n border-radius: var(--ck-tertiary-border-radius, 24px);\n box-shadow: var(--ck-tertiary-box-shadow, none);\n background: var(--ck-body-background-tertiary);\n ${ModalBody} {\n max-width: none;\n }\n`;\nexport const InfoBoxButtons = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n margin: 5px -8px -12px;\n button {\n }\n`;\nexport const LearnMoreContainer = styled(motion.div)`\n text-align: center;\n margin-top: 16px;\n margin-bottom: -6px;\n`;\nexport const LearnMoreButton = styled(motion.button)`\n appearance: none;\n user-select: none;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n height: 42px;\n padding: 0 16px;\n border-radius: 6px;\n background: none;\n color: var(--ck-body-color-muted);\n font-size: 15px;\n line-height: 18px;\n font-weight: 500;\n /* will-change: transform; */\n transition:\n color 200ms ease,\n transform 100ms ease;\n svg {\n transition: all 100ms ease-out;\n display: block;\n position: relative;\n top: 2px;\n left: 2px;\n transform: translateZ(0px);\n path,\n circle {\n transition: all 100ms ease-out;\n }\n path:last-of-type {\n transform-origin: 0 0;\n transform: scaleX(1.3) skewY(-12deg);\n opacity: 0;\n }\n circle {\n transform: translate(20%, -15%);\n }\n }\n &:hover {\n color: var(--ck-body-color-muted-hover);\n svg {\n path,\n circle {\n opacity: 1;\n transform: none;\n }\n }\n }\n &:active {\n transform: scale(0.96);\n }\n`;\n\nexport const ConnectorsContainer = styled(motion.div)`\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 0 0 16px;\n overflow-y: scroll;\n max-height: 20rem;\n\n &::-webkit-scrollbar {\n display: none;\n }\n`;\n\nexport const ConnectorButton = styled(motion.button)`\n cursor: pointer;\n user-select: none;\n position: relative;\n display: flex;\n align-items: center;\n padding: 0 20px;\n width: 100%;\n height: 64px;\n font-size: 17px;\n font-weight: var(--ck-primary-button-font-weight, 500);\n line-height: 20px;\n text-align: var(--ck-body-button-text-align, left);\n transition: 180ms ease;\n transition-property: background, color, box-shadow, transform, opacity;\n will-change: transform, box-shadow, background-color, color, opacity;\n\n --fallback-color: var(--ck-primary-button-color);\n --fallback-background: var(--ck-primary-button-background);\n --fallback-box-shadow: var(--ck-primary-button-box-shadow);\n --fallback-border-radius: var(--ck-primary-button-border-radius);\n\n --color: var(--ck-primary-button-color, var(--fallback-color));\n --background: var(--ck-primary-button-background, var(--fallback-background));\n --box-shadow: var(--ck-primary-button-box-shadow, var(--fallback-box-shadow));\n --border-radius: var(\n --ck-primary-button-border-radius,\n var(--fallback-border-radius)\n );\n\n --hover-color: var(--ck-primary-button-hover-color, var(--color));\n --hover-background: var(\n --ck-primary-button-hover-background,\n var(--background)\n );\n --hover-box-shadow: var(\n --ck-primary-button-hover-box-shadow,\n var(--box-shadow)\n );\n --hover-border-radius: var(\n --ck-primary-button-hover-border-radius,\n var(--border-radius)\n );\n\n --active-color: var(--ck-primary-button-active-color, var(--hover-color));\n --active-background: var(\n --ck-primary-button-active-background,\n var(--hover-background)\n );\n --active-box-shadow: var(\n --ck-primary-button-active-box-shadow,\n var(--hover-box-shadow)\n );\n --active-border-radius: var(\n --ck-primary-button-active-border-radius,\n var(--hover-border-radius)\n );\n\n color: var(--color);\n background: var(--background);\n box-shadow: var(--box-shadow);\n border-radius: var(--border-radius);\n\n &:disabled {\n transition: 180ms ease;\n opacity: 0.4;\n }\n\n --bg: var(--background);\n &:not(:disabled) {\n &:hover {\n color: var(--hover-color);\n background: var(--hover-background);\n box-shadow: var(--hover-box-shadow);\n border-radius: var(--hover-border-radius);\n --bg: var(--hover-background, var(--background));\n }\n &:focus-visible {\n transition-duration: 100ms;\n color: var(--hover-color);\n background: var(--hover-background);\n box-shadow: var(--hover-box-shadow);\n border-radius: var(--hover-border-radius);\n --bg: var(--hover-background, var(--background));\n }\n &:active {\n color: var(--active-color);\n background: var(--active-background);\n box-shadow: var(--active-box-shadow);\n border-radius: var(--active-border-radius);\n --bg: var(--active-background, var(--background));\n }\n }\n`;\nexport const ConnectorRecentlyUsed = styled(motion.span)`\n position: relative;\n top: var(--ck-recent-badge-top-offset, 0.5px);\n display: inline-block;\n padding: 10px 7px;\n line-height: 0;\n font-size: 13px;\n font-weight: 400;\n border-radius: var(--ck-recent-badge-border-radius, var(--border-radius));\n color: var(\n --ck-recent-badge-color,\n var(--ck-accent-color, var(--ck-body-color-muted, currentColor))\n );\n background: var(--ck-recent-badge-background, transparent);\n overflow: hidden;\n span {\n display: inline-block;\n position: relative;\n }\n &:before {\n z-index: 1;\n content: \"\";\n position: absolute;\n inset: 0;\n opacity: 0.4;\n box-shadow: var(--ck-recent-badge-box-shadow, inset 0 0 0 1px currentColor);\n border-radius: inherit;\n }\n &:after {\n z-index: 2;\n content: \"\";\n position: absolute;\n inset: -10%;\n top: -110%;\n aspect-ratio: 1/1;\n opacity: 0.7;\n background: linear-gradient(\n 170deg,\n transparent 10%,\n var(--ck-recent-badge-background, var(--bg)) 50%,\n transparent 90%\n );\n animation: ${Shimmer} 2s linear infinite;\n }\n`;\n\nexport const ConnectorLabel = styled(motion.span)`\n display: flex;\n align-items: center;\n gap: 9px;\n width: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n padding: 2px 0;\n padding-right: 38px;\n`;\n\nexport const ConnectorIcon = styled(motion.div)`\n position: absolute;\n right: 20px;\n width: 32px;\n height: 32px;\n overflow: hidden;\n svg,\n img {\n display: block;\n position: relative;\n pointer-events: none;\n overflow: hidden;\n border-radius: 27.5%;\n width: 100%;\n height: 100%;\n }\n`;\n"],"names":[],"mappings":";;;;;AAMA,MAAM,OAAU,GAAA,SAAA,CAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAKT,MAAM,UAAU,MAAO,CAAA,GAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,EAK1B,SAAS,CAAA;AAAA;AAAA;AAAA,EAAA;AAIN,MAAM,iBAAiB,MAAO,CAAA,GAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAQxB,MAAA,kBAAA,GAAqB,MAAO,CAAA,MAAA,CAAO,GAAG,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAKtC,MAAA,eAAA,GAAkB,MAAO,CAAA,MAAA,CAAO,MAAM,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAuDhB,MAAO,CAAA,MAAA,CAAO,GAAG,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAarB,MAAO,CAAA,MAAA,CAAO,MAAM,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AA8Fd,MAAO,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAA,EA0CtC,OAAO,CAAA;AAAA;AAAA,EAAA;AAIM,MAAO,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAYnB,MAAO,CAAA,MAAA,CAAO,GAAG,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import React__default, { ReactNode } from 'react';
|
|
2
|
-
|
|
3
|
-
type Hash = `0x${string}`;
|
|
4
|
-
type CustomAvatarProps = {
|
|
5
|
-
address?: Hash | undefined;
|
|
6
|
-
ensName?: string | undefined;
|
|
7
|
-
ensImage?: string;
|
|
8
|
-
size: number;
|
|
9
|
-
radius: number;
|
|
10
|
-
};
|
|
11
|
-
/** Icon for an Ethereum address. Supports ENS names and avatars. */
|
|
12
|
-
declare const Avatar: React__default.FC<{
|
|
13
|
-
address?: Hash | undefined;
|
|
14
|
-
name?: string | undefined;
|
|
15
|
-
size?: number;
|
|
16
|
-
radius?: number;
|
|
17
|
-
}>;
|
|
18
|
-
|
|
19
|
-
type Languages$1 = "ar-AE" | "en-US" | "ee-EE" | "es-ES" | "fa-IR" | "fr-FR" | "ja-JP" | "pt-BR" | "zh-CN" | "ca-AD" | "ru-RU" | "zh-CN" | "tr-TR" | "vi-VN";
|
|
20
|
-
|
|
21
|
-
type Languages = Languages$1;
|
|
22
|
-
type Theme = "auto" | "web95" | "retro" | "soft" | "midnight" | "minimal" | "rounded" | "nouns";
|
|
23
|
-
type Mode = "light" | "dark" | "auto";
|
|
24
|
-
type CustomTheme = any;
|
|
25
|
-
type All = {
|
|
26
|
-
theme?: Theme;
|
|
27
|
-
mode?: Mode;
|
|
28
|
-
customTheme?: CustomTheme;
|
|
29
|
-
lang?: Languages;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
/** Global options, across all pay buttons and payments. */
|
|
33
|
-
type DaimoPayContextOptions = {
|
|
34
|
-
language?: Languages;
|
|
35
|
-
hideBalance?: boolean;
|
|
36
|
-
hideTooltips?: boolean;
|
|
37
|
-
hideQuestionMarkCTA?: boolean;
|
|
38
|
-
hideNoWalletCTA?: boolean;
|
|
39
|
-
hideRecentBadge?: boolean;
|
|
40
|
-
/** Avoids layout shift when the DaimoPay modal is open by adding padding to the body */
|
|
41
|
-
avoidLayoutShift?: boolean;
|
|
42
|
-
/** Automatically embeds Google Font of the current theme. Does not work with custom themes */
|
|
43
|
-
embedGoogleFonts?: boolean;
|
|
44
|
-
truncateLongENSAddress?: boolean;
|
|
45
|
-
reducedMotion?: boolean;
|
|
46
|
-
disclaimer?: ReactNode | string;
|
|
47
|
-
bufferPolyfill?: boolean;
|
|
48
|
-
customAvatar?: React.FC<CustomAvatarProps>;
|
|
49
|
-
initialChainId?: number;
|
|
50
|
-
enforceSupportedChains?: boolean;
|
|
51
|
-
ethereumOnboardingUrl?: string;
|
|
52
|
-
walletOnboardingUrl?: string;
|
|
53
|
-
/** Blur the background when the modal is open */
|
|
54
|
-
overlayBlur?: number;
|
|
55
|
-
/** Disable mobile wallet injector detection */
|
|
56
|
-
disableMobileInjector?: boolean;
|
|
57
|
-
};
|
|
58
|
-
/** Modal UI options, set on the pay button triggering that modal. */
|
|
59
|
-
type DaimoPayModalOptions = {
|
|
60
|
-
closeOnSuccess?: boolean;
|
|
61
|
-
resetOnSuccess?: boolean;
|
|
62
|
-
connectedWalletOnly?: boolean;
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
export { Avatar as A };
|
|
66
|
-
export type { CustomTheme as C, DaimoPayContextOptions as D, Languages as L, Mode as M, Theme as T, DaimoPayModalOptions as a, CustomAvatarProps as b, All as c };
|