diff --git a/packages/connectkit/src/assets/logos.tsx b/packages/connectkit/src/assets/logos.tsx index 79153d77..23df9e8d 100644 --- a/packages/connectkit/src/assets/logos.tsx +++ b/packages/connectkit/src/assets/logos.tsx @@ -757,6 +757,87 @@ export const Zerion = ({ ...props }) => ( /> ); + +export const Phantom = () => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); export const PlaceHolder = () => { return
; }; @@ -847,6 +928,7 @@ export default { GnosisSafe, Frontier, Zerion, + Phantom, PlaceHolder, Dawn, }; diff --git a/packages/connectkit/src/utils/index.ts b/packages/connectkit/src/utils/index.ts index 52260f2a..66eabfdc 100644 --- a/packages/connectkit/src/utils/index.ts +++ b/packages/connectkit/src/utils/index.ts @@ -112,6 +112,8 @@ const isMetaMask = () => { const isTokenary = Boolean(ethereum.isTokenary); if (isTokenary) return false; + if (isPhantom()) return false; + return true; }; @@ -136,6 +138,14 @@ const isCoinbaseWallet = () => { ); }; +const isPhantom = () => { + if (typeof window === 'undefined') return false; + const { phantom } = window as any; + const isPhantom = Boolean(phantom?.ethereum?.isPhantom); + if (isPhantom) return true; + return false; +}; + type ReactChildArray = ReturnType; function flattenChildren(children: React.ReactNode): ReactChildArray { const childrenArray = React.Children.toArray(children); @@ -179,5 +189,6 @@ export { isMetaMask, isDawn, isCoinbaseWallet, + isPhantom, flattenChildren, }; diff --git a/packages/connectkit/src/wallets/connectors/phantom.tsx b/packages/connectkit/src/wallets/connectors/phantom.tsx new file mode 100644 index 00000000..3a2d2238 --- /dev/null +++ b/packages/connectkit/src/wallets/connectors/phantom.tsx @@ -0,0 +1,16 @@ +import { WalletProps } from '../wallet'; + +import { isPhantom } from '../../utils'; +import Logos from '../../assets/logos'; + +export const phantom = (): WalletProps => { + const isInstalled = isPhantom(); + return { + id: 'phantom', + name: 'Phantom', + shortName: 'Phantom', + scannable: false, + logos: { default: }, + installed: Boolean(isInstalled), + }; +}; diff --git a/packages/connectkit/src/wallets/index.ts b/packages/connectkit/src/wallets/index.ts index 31509b22..f232fa2a 100644 --- a/packages/connectkit/src/wallets/index.ts +++ b/packages/connectkit/src/wallets/index.ts @@ -15,8 +15,10 @@ import { onto } from './connectors/onto'; import { gnosisSafe } from './connectors/gnosisSafe'; import { frontier } from './connectors/frontier'; import { zerion } from './connectors/zerion'; +import { phantom } from './connectors/phantom'; import { dawn } from './connectors/dawn'; + export const getWallets = () => { return [ injected(), @@ -36,6 +38,7 @@ export const getWallets = () => { onto(), frontier(), zerion(), - dawn() + phantom(), + dawn(), ]; }; diff --git a/packages/connectkit/src/wallets/useDefaultWallets.tsx b/packages/connectkit/src/wallets/useDefaultWallets.tsx index ff3bec5b..593fe9d8 100644 --- a/packages/connectkit/src/wallets/useDefaultWallets.tsx +++ b/packages/connectkit/src/wallets/useDefaultWallets.tsx @@ -29,7 +29,8 @@ function useDefaultWallets(): WalletProps[] | any { 'gnosisSafe', 'frontier', 'zerion', - 'dawn' + 'phantom', + 'dawn', ); const wallets = getWallets(); diff --git a/yarn.lock b/yarn.lock index 0c5b8921..8b84c094 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4035,6 +4035,13 @@ __metadata: languageName: node linkType: hard +"@tanstack/query-core@npm:4.27.0": + version: 4.27.0 + resolution: "@tanstack/query-core@npm:4.27.0" + checksum: 914b4f01ac75632f4603b650e9105f64c739b79250baf76aad16cee216f7bad6060c04eda0c70838fe61a5f6c17883e19fcc3075b2433a906539da95ce785796 + languageName: node + linkType: hard + "@tanstack/query-persist-client-core@npm:4.15.1": version: 4.15.1 resolution: "@tanstack/query-persist-client-core@npm:4.15.1" @@ -4044,6 +4051,15 @@ __metadata: languageName: node linkType: hard +"@tanstack/query-persist-client-core@npm:4.27.0": + version: 4.27.0 + resolution: "@tanstack/query-persist-client-core@npm:4.27.0" + dependencies: + "@tanstack/query-core": 4.27.0 + checksum: 9a2df41744269d666bc0c1a5684a1d9d327e7994b57f9c1a71ea86d169dbde94f9d4af4b4ebe258d0085e0aa2cd563460b06513eccc4b016c0c5d416122d0275 + languageName: node + linkType: hard + "@tanstack/query-sync-storage-persister@npm:^4.14.5": version: 4.15.1 resolution: "@tanstack/query-sync-storage-persister@npm:4.15.1" @@ -4053,6 +4069,15 @@ __metadata: languageName: node linkType: hard +"@tanstack/query-sync-storage-persister@npm:^4.27.1": + version: 4.27.1 + resolution: "@tanstack/query-sync-storage-persister@npm:4.27.1" + dependencies: + "@tanstack/query-persist-client-core": 4.27.0 + checksum: 16cdef50af43cf854ec1244f43609c04f9a9fcb7bbb36c763ce3146aeb85095c62da098fb4c4876d76496fa5830d54c6e79691d2b353919b1e5f274a3c34a97e + languageName: node + linkType: hard + "@tanstack/react-query-persist-client@npm:^4.14.5": version: 4.16.1 resolution: "@tanstack/react-query-persist-client@npm:4.16.1" @@ -4064,6 +4089,17 @@ __metadata: languageName: node linkType: hard +"@tanstack/react-query-persist-client@npm:^4.28.0": + version: 4.28.0 + resolution: "@tanstack/react-query-persist-client@npm:4.28.0" + dependencies: + "@tanstack/query-persist-client-core": 4.27.0 + peerDependencies: + "@tanstack/react-query": 4.28.0 + checksum: 8177b41ae644774f380154ec09588cce21b6bf75f45d58691cc86fd58002927989f47e278170a1ae9c3c02638a7e26d67a29106c768d325a54cef9219115839d + languageName: node + linkType: hard + "@tanstack/react-query@npm:^4.14.5": version: 4.16.1 resolution: "@tanstack/react-query@npm:4.16.1" @@ -4083,6 +4119,25 @@ __metadata: languageName: node linkType: hard +"@tanstack/react-query@npm:^4.28.0": + version: 4.28.0 + resolution: "@tanstack/react-query@npm:4.28.0" + dependencies: + "@tanstack/query-core": 4.27.0 + use-sync-external-store: ^1.2.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-native: "*" + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + checksum: 7baa70d22b55cfa22f8a1d92ba9f8379c5436ee81fce3f0e7df4a8c29bb26bfef4a83759cf10f752b40ae2940099fcce88ce91a773240f4999ae91136980c6e3 + languageName: node + linkType: hard + "@testing-library/dom@npm:^8.5.0": version: 8.18.1 resolution: "@testing-library/dom@npm:8.18.1" @@ -4965,6 +5020,30 @@ __metadata: languageName: node linkType: hard +"@walletconnect/core@npm:2.5.2": + version: 2.5.2 + resolution: "@walletconnect/core@npm:2.5.2" + dependencies: + "@walletconnect/heartbeat": 1.2.0 + "@walletconnect/jsonrpc-provider": 1.0.10 + "@walletconnect/jsonrpc-utils": ^1.0.4 + "@walletconnect/jsonrpc-ws-connection": 1.0.10 + "@walletconnect/keyvaluestorage": ^1.0.2 + "@walletconnect/logger": ^2.0.1 + "@walletconnect/relay-api": ^1.0.9 + "@walletconnect/relay-auth": ^1.0.4 + "@walletconnect/safe-json": ^1.0.1 + "@walletconnect/time": ^1.0.2 + "@walletconnect/types": 2.5.2 + "@walletconnect/utils": 2.5.2 + events: ^3.3.0 + lodash.isequal: 4.5.0 + pino: 7.11.0 + uint8arrays: ^3.1.0 + checksum: b1a97a9c59c3d3e90b6bd9c356a3afd33b2269a919d57ec9f3fec78a6bd6b7320804f5f3c4f477ffd2e1c5bd396a4a3f51dee441565ac0005614bc5b6fd6e05a + languageName: node + linkType: hard + "@walletconnect/crypto@npm:^1.0.3": version: 1.0.3 resolution: "@walletconnect/crypto@npm:1.0.3" @@ -5285,6 +5364,24 @@ __metadata: languageName: node linkType: hard +"@walletconnect/sign-client@npm:2.5.2": + version: 2.5.2 + resolution: "@walletconnect/sign-client@npm:2.5.2" + dependencies: + "@walletconnect/core": 2.5.2 + "@walletconnect/events": ^1.0.1 + "@walletconnect/heartbeat": 1.2.0 + "@walletconnect/jsonrpc-utils": ^1.0.4 + "@walletconnect/logger": ^2.0.1 + "@walletconnect/time": ^1.0.2 + "@walletconnect/types": 2.5.2 + "@walletconnect/utils": 2.5.2 + events: ^3.3.0 + pino: 7.11.0 + checksum: 27a787e28de5c5dd01c0dc0ee7580bf872316768b95e9a06080f14554a07e192916aa76502b171ce557462ae65385c57ec8189c2b80a9e072c9d708bc1c2aa1e + languageName: node + linkType: hard + "@walletconnect/time@npm:^1.0.2": version: 1.0.2 resolution: "@walletconnect/time@npm:1.0.2" @@ -5350,6 +5447,29 @@ __metadata: languageName: node linkType: hard +"@walletconnect/utils@npm:2.5.2": + version: 2.5.2 + resolution: "@walletconnect/utils@npm:2.5.2" + dependencies: + "@stablelib/chacha20poly1305": 1.0.1 + "@stablelib/hkdf": 1.0.1 + "@stablelib/random": ^1.0.2 + "@stablelib/sha256": 1.0.1 + "@stablelib/x25519": ^1.0.3 + "@walletconnect/jsonrpc-utils": ^1.0.4 + "@walletconnect/relay-api": ^1.0.9 + "@walletconnect/safe-json": ^1.0.1 + "@walletconnect/time": ^1.0.2 + "@walletconnect/types": 2.5.2 + "@walletconnect/window-getters": ^1.0.1 + "@walletconnect/window-metadata": ^1.0.1 + detect-browser: 5.3.0 + query-string: 7.1.1 + uint8arrays: ^3.1.0 + checksum: f32cd3170eff48802112831c9ac6e75410012e6b1aaba277d4e3333af138f372d38f418b8dad91b8cd80049bccd30c7dfab72444970b9c859ba76007f7875d67 + languageName: node + linkType: hard + "@walletconnect/window-getters@npm:^1.0.1": version: 1.0.1 resolution: "@walletconnect/window-getters@npm:1.0.1" @@ -5401,6 +5521,18 @@ __metadata: languageName: node linkType: hard +"@web3modal/ui@npm:2.2.2": + version: 2.2.2 + resolution: "@web3modal/ui@npm:2.2.2" + dependencies: + "@web3modal/core": 2.2.2 + lit: 2.6.1 + motion: 10.15.5 + qrcode: 1.5.1 + checksum: 1dc36a9f8d43aaa3b69e720ef12399566e892a114395cd6fd8a0d0c82723cf3f56c042e714cb7de18ed0affe36ce662e3248194a35b864f6f402e1b058c1afb5 + languageName: node + linkType: hard + "@webassemblyjs/ast@npm:1.11.1": version: 1.11.1 resolution: "@webassemblyjs/ast@npm:1.11.1" @@ -5605,6 +5737,19 @@ __metadata: languageName: node linkType: hard +"abitype@npm:^0.7.1": + version: 0.7.1 + resolution: "abitype@npm:0.7.1" + peerDependencies: + typescript: ">=4.9.4" + zod: ^3 >=3.19.1 + peerDependenciesMeta: + zod: + optional: true + checksum: de0d7082d28a4835b3d8dc4d8c75e9222c95a1f9eed13d6b2381403b46f46b68ea7a281e8ba6628d259a98c54ea466ebc206eec21db6205fa1641c7393854f5e + languageName: node + linkType: hard + "accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.8": version: 1.3.8 resolution: "accepts@npm:1.3.8" @@ -15125,6 +15270,13 @@ __metadata: languageName: node linkType: hard +"proxy-compare@npm:2.5.0": + version: 2.5.0 + resolution: "proxy-compare@npm:2.5.0" + checksum: 81ef2a3990a999b9c3d27f5e10b18603b9236e37d7772c5dadb5726c9ec2a30df46fe3067a216ee1d14f53783703767db9c19ff26ab2a9ffb2ea31f09c87b14f + languageName: node + linkType: hard + "pseudomap@npm:^1.0.2": version: 1.0.2 resolution: "pseudomap@npm:1.0.2" @@ -18034,6 +18186,27 @@ __metadata: languageName: node linkType: hard +"wagmi@npm:^0.12.2": + version: 0.12.9 + resolution: "wagmi@npm:0.12.9" + dependencies: + "@tanstack/query-sync-storage-persister": ^4.27.1 + "@tanstack/react-query": ^4.28.0 + "@tanstack/react-query-persist-client": ^4.28.0 + "@wagmi/core": 0.10.8 + abitype: ^0.7.1 + use-sync-external-store: ^1.2.0 + peerDependencies: + ethers: ">=5.5.1 <6" + react: ">=17.0.0" + typescript: ">=4.9.4" + peerDependenciesMeta: + typescript: + optional: true + checksum: 83bf3ed9df9a48e0d0e5e030a67a20a417c171777cb1e91d658000c5f039f0222bd8a5ffbbe04164975635a00b6ea8ce28c2b17af09a5f6f698e54c13ca86b34 + languageName: node + linkType: hard + "walker@npm:^1.0.7": version: 1.0.8 resolution: "walker@npm:1.0.8"