Compare commits

...
Author SHA1 Message Date
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>GitHub Action
d33227ab2b Version Packages (#2282)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <[email protected]>
2024-02-09 17:37:26 -08:00
Joaquim VergesandGitHub 53786fc306 [SDK] memoize extensions (#2291) 2024-02-10 01:00:42 +00:00
Manan TankandGitHub f85806c067 Update EmbeddedWallet name in CW (#2290) 2024-02-09 22:40:40 +00:00
Manan TankandGitHub 0155adcea4 Show EmbeddedWallet UI as initial screen in CW (#2289) 2024-02-09 20:57:32 +00:00
Manan TankandGitHub 74d76ff580 Add "Powered By Thirdweb" Branding in CW (#2288) 2024-02-09 16:32:27 +00:00
farhanW3andGitHub 537e5e063d [Usage]: Usage Schema to have new field (#2287) 2024-02-09 00:47:33 +00:00
Isaac DubuqueandGitHub a86478bf24 add sdk support for engine relayer options (#2233) 2024-02-09 00:40:52 +00:00
Joaquim VergesandGitHub 09de55f13c [SDK] Export MerkleTree helper functions (#2286) 2024-02-08 22:43:13 +00:00
23d0e55308 chore(chains): update chains (#2280)
Co-authored-by: GitHub Action <[email protected]>
2024-02-08 09:44:22 -08:00
FirekeeperandGitHub 185093c185 Unity 4.6.2 (#2284) 2024-02-08 14:35:00 +00:00
farhanW3andGitHub 77400fcf21 Added new properties to usage (#2281) 2024-02-08 01:34:19 +00:00
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>GitHub Action
6a41fe9829 Version Packages (#2274)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <[email protected]>
2024-02-07 13:11:26 -08:00
0092e2a317 fix(auth): Next.js App Router handler return type (#2278)
Signed-off-by: Jonas Daniels <[email protected]>
Co-authored-by: Jonas Daniels <[email protected]>
2024-02-07 12:47:09 -08:00
87b9e6d42d chore(chains): update chains (#2279)
Co-authored-by: GitHub Action <[email protected]>
2024-02-07 10:29:29 -08:00
github-actions[bot]andGitHub 336dfd3b37 chore(chains): update chains (#2277) 2024-02-07 08:52:01 -08:00
957c75a36e chore(chains): update chains (#2276)
Co-authored-by: GitHub Action <[email protected]>
2024-02-06 22:27:49 -08:00
357886e31b chore(chains): update chains (#2258)
Co-authored-by: GitHub Action <[email protected]>
2024-02-06 15:46:46 -08:00
DustinandGitHub 330c270f3c Update .env.example (#2272) 2024-02-06 13:52:51 -08:00
Joaquim VergesandGitHub 9096bdc0f1 [ServiceUtils] Add latency prop to CF worker logs (#2273) 2024-02-06 21:44:43 +00:00
saminaandGitHub 62ef83c9e0 Update pull_request_template.md (#2267)
Signed-off-by: samina <[email protected]>
2024-02-06 18:15:54 +00:00
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>GitHub Action
1e7a7a5f3c Version Packages (#2261)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <[email protected]>
2024-02-06 09:36:14 -08:00
Manan TankandGitHub 433d49e3ab [react-core] keep wallet states in sync (#2270) 2024-02-06 17:18:46 +00:00
Joaquim VergesandGitHub 5a3f7fa123 [ServiceUtil] add latency prop to logHttpRequest (#2266) 2024-02-06 05:08:46 +00:00
FirekeeperandGitHub 3857cba8ab Unity v4.6.1 (#2268) 2024-02-06 01:57:02 +00:00
Manan TankandGitHub 6a3cacb622 [react] Enforce compact CW modal size based on available space (#2260) 2024-02-02 17:35:52 +00:00
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
bdf60e9890 Version Packages (#2257)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-02-01 17:26:18 -08:00
1e50caeed1 chore(chains): update chains (#2255)
Co-authored-by: GitHub Action <[email protected]>
2024-02-01 17:21:42 -08:00
Jonas DanielsandGitHub 1decd52a36 fix(gas-price): handle flag-chain overrides (#2256) 2024-02-02 01:10:37 +00:00
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>GitHub Action
0b7010eccb Version Packages (#2249)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <[email protected]>
2024-02-01 15:52:14 -08:00
041c01341b chore(chains): update chains (#2250)
Co-authored-by: GitHub Action <[email protected]>
2024-02-01 15:09:04 -08:00
Manan TankandGitHub 439a377aa7 [react] add detailsModalFooter prop in ConnectWallet (#2252) 2024-02-01 21:53:21 +00:00
Nacho IacovinoandGitHub 4f52c29611 Update error message link (#2248) 2024-02-01 18:39:14 +00:00
374671fd9a chore(chains): update chains (#2247)
Co-authored-by: GitHub Action <[email protected]>
2024-01-31 21:25:01 -08:00
129 changed files with 2958 additions and 537 deletions
+2 -1
View File
@@ -3,4 +3,5 @@
# used for unit tests that hit real IPFS gateway
# get a secret key from https://thirdweb.com/create-api-key
TW_SECRET_KEY=""
# Learn more about API keys. https://portal.thirdweb.com/account/api-keys
TW_SECRET_KEY=""
+6
View File
@@ -11,3 +11,9 @@ Short description of the bug fixed or feature added
- [ ] Automated tests: link to unit test file
- [ ] Manual tests: step by step instructions on how to test
## Contributor NFT
Paste in your wallet address below and we will airdrop you a special NFT when your pull request is merged.
```Address: ```
+30
View File
@@ -1,5 +1,35 @@
# @thirdweb-dev/auth
## 4.1.32
### Patch Changes
- Updated dependencies []:
- @thirdweb-dev/wallets@2.4.10
## 4.1.31
### Patch Changes
- [#2278](https://github.com/thirdweb-dev/js/pull/2278) [`0092e2a3`](https://github.com/thirdweb-dev/js/commit/0092e2a3177364ad26af15ecafb4381591dc9be1) Thanks [@hsynlms](https://github.com/hsynlms)! - fix(auth): Next.js App Router handler return type
- Updated dependencies []:
- @thirdweb-dev/wallets@2.4.9
## 4.1.30
### Patch Changes
- Updated dependencies []:
- @thirdweb-dev/wallets@2.4.8
## 4.1.29
### Patch Changes
- Updated dependencies []:
- @thirdweb-dev/wallets@2.4.7
## 4.1.28
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/auth",
"version": "4.1.28",
"version": "4.1.32",
"main": "dist/thirdweb-dev-auth.cjs.js",
"module": "dist/thirdweb-dev-auth.esm.js",
"browser": {
+2 -7
View File
@@ -58,13 +58,8 @@ export function ThirdwebAuth<
auth: new ThirdwebAuthSDK(cfg.wallet, cfg.domain),
};
async function ThirdwebAuthHandler(...args: [] | [NextRequest, ThirdwebNextContext]) {
if (args.length === 0) {
return async (req: NextRequest, ctx: ThirdwebNextContext): Promise<void | Response> =>
await ThirdwebAuthRouter(req, ctx, authCtx as ThirdwebAuthContext);
}
return ThirdwebAuthRouter(args[0], args[1], authCtx as ThirdwebAuthContext);
async function ThirdwebAuthHandler(req: NextRequest, ctx: ThirdwebNextContext) {
return await ThirdwebAuthRouter(req, ctx, authCtx as ThirdwebAuthContext);
}
return {
+24
View File
@@ -1,5 +1,29 @@
# @thirdweb-dev/chains
## 0.1.72
### Patch Changes
- [#2280](https://github.com/thirdweb-dev/js/pull/2280) [`23d0e553`](https://github.com/thirdweb-dev/js/commit/23d0e553088321edfe3971950c2e7f27209d9aaf) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
## 0.1.71
### Patch Changes
- [#2258](https://github.com/thirdweb-dev/js/pull/2258) [`357886e3`](https://github.com/thirdweb-dev/js/commit/357886e31b37aad950731ce8f013a101190ebd07) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
## 0.1.70
### Patch Changes
- [#2255](https://github.com/thirdweb-dev/js/pull/2255) [`1e50caee`](https://github.com/thirdweb-dev/js/commit/1e50caeed1b85f91a6d2efb2e5204f3acf300134) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
## 0.1.69
### Patch Changes
- [#2247](https://github.com/thirdweb-dev/js/pull/2247) [`374671fd`](https://github.com/thirdweb-dev/js/commit/374671fd9ac97a93263b09c6c0a53cfd129881d7) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
## 0.1.68
### Patch Changes
+1 -1
View File
@@ -31,5 +31,5 @@ export default {
"shortName": "Baobab",
"slip44": 1,
"slug": "klaytn-testnet-baobab",
"testnet": true
"testnet": false
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 103454,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "Masa Testnet",
"nativeCurrency": {
"name": "Masa Testnet Token",
"symbol": "tMASA",
"decimals": 18
},
"networkId": 103454,
"redFlags": [],
"rpc": [
"https://masa-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://103454.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/masatestne/testnet/rpc"
],
"shortName": "Masa Testnet",
"slug": "masa-testnet",
"testnet": true
} as const satisfies Chain;
+3 -2
View File
@@ -42,11 +42,12 @@ export default {
"https://humans-ai.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1089.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://jsonrpc.humans.nodestake.top",
"https://humans-mainnet-evm.itrocket.net:443",
"https://humans-mainnet-evm.itrocket.net",
"https://humans-evm-rpc.staketab.org:443",
"https://evm.humans.stakepool.dev.br",
"https://mainnet-humans-evm.konsortech.xyz",
"https://evm-rpc.mainnet.humans.zone"
"https://evm-rpc.mainnet.humans.zone",
"https://json-rpc.humans.bh.rocks"
],
"shortName": "humans",
"slug": "humans-ai",
+35
View File
@@ -0,0 +1,35 @@
import type { Chain } from "../src/types";
export default {
"chain": "Dymension",
"chainId": 1100,
"explorers": [
{
"name": "dym.fyi",
"url": "https://dym.fyi",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://bafkreic4sjyqikz33xzpcctczvkiwfj44q5i3i7zslycnjiqmyx5ybc3fi",
"width": 1200,
"height": 1200,
"format": "png"
},
"infoURL": "https://dymension.xyz",
"name": "Dymension",
"nativeCurrency": {
"name": "DYM",
"symbol": "DYM",
"decimals": 18
},
"networkId": 1100,
"rpc": [
"https://dymension.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1100.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://dymension-evm.blockpi.network/v1/rpc/public"
],
"shortName": "dymension",
"slug": "dymension",
"testnet": false
} as const satisfies Chain;
+37
View File
@@ -0,0 +1,37 @@
import type { Chain } from "../src/types";
export default {
"chain": "MetaDAP",
"chainId": 119139,
"explorers": [
{
"name": "MetaDAP Enterprise Testnet explorer",
"url": "https://explorer.testnet.chain.metadap.io",
"standard": "none"
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmcCFUTStKKJKfzTwrjfMFoVaPCMsvAvWXRdDkYMvCkEs3",
"width": 800,
"height": 800,
"format": "svg"
},
"infoURL": "https://metadap.io/",
"name": "MetaDAP Enterprise Testnet",
"nativeCurrency": {
"name": "DAP",
"symbol": "DAP",
"decimals": 18
},
"networkId": 119139,
"rpc": [
"https://metadap-enterprise-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://119139.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.testnet.chain.metadap.io",
"wss://rpc-ws.testnet.chain.metadap.io"
],
"shortName": "MetaDAP-T",
"slug": "metadap-enterprise-testnet",
"testnet": true,
"title": "MetaDAP Enterprise Testnet"
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 12001,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "Mikias's Testnet",
"nativeCurrency": {
"name": "Mikias's Testnet Token",
"symbol": "XVL",
"decimals": 18
},
"networkId": 12001,
"redFlags": [],
"rpc": [
"https://mikias-s-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://12001.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-test.io/c3c8cc74-5101-4380-937f-4f534cad0128"
],
"shortName": "Mikias's Testnet",
"slug": "mikias-s-testnet",
"testnet": true
} as const satisfies Chain;
+6 -8
View File
@@ -2,13 +2,7 @@ import type { Chain } from "../src/types";
export default {
"chain": "1220",
"chainId": 1220,
"explorers": [
{
"name": "flagscan",
"url": "https://testnet-scan.flagscan.io/",
"standard": "EIP3091"
}
],
"explorers": [],
"faucets": [],
"features": [],
"icon": {
@@ -26,7 +20,11 @@ export default {
},
"networkId": 1220,
"redFlags": [],
"rpc": [],
"rpc": [
"https://flag-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1220.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet.flagscan.io"
],
"shortName": "Flag",
"slug": "flag-testnet",
"testnet": true
+35
View File
@@ -0,0 +1,35 @@
import type { Chain } from "../src/types";
export default {
"chain": "NEAR",
"chainId": 1313161560,
"explorers": [
{
"name": "PowerGold explorer",
"url": "https://explorer.powergold.aurora.dev",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://bafkreib2sabb6vgfoskobp2wdr6if7v6s34f2xwjecfceui6qhjudmu4u4",
"width": 512,
"height": 512,
"format": "png"
},
"infoURL": "https://www.powergold.tech",
"name": "PowerGold",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 1313161560,
"rpc": [
"https://powergold.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1313161560.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://powergold.aurora.dev"
],
"shortName": "powergold",
"slug": "powergold",
"testnet": false
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 13838,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "XTraderlands Subnet Tesnet",
"nativeCurrency": {
"name": "XTraderlands Subnet Tesnet Token",
"symbol": "XTDL",
"decimals": 18
},
"networkId": 13838,
"redFlags": [],
"rpc": [
"https://xtraderlands-subnet-tesnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://13838.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/xtraderlan/testnet/rpc"
],
"shortName": "XTraderlands Subnet Tesnet",
"slug": "xtraderlands-subnet-tesnet",
"testnet": true
} as const satisfies Chain;
@@ -1,7 +1,7 @@
import type { Chain } from "../src/types";
export default {
"chain": "XRPL",
"chainId": 1440001,
"chainId": 1440002,
"explorers": [
{
"name": "XRP Ledger Explorer",
@@ -23,11 +23,11 @@ export default {
"symbol": "XRP",
"decimals": 18
},
"networkId": 1440001,
"networkId": 1440002,
"redFlags": [],
"rpc": [
"https://xrp-ledger-evm-devnet-sidechain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1440001.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1440002.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc-evm-sidechain.xrpl.org"
],
"shortName": "XRPL-EVM-Devnet-Sidechain",
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 15056,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QI M 2402052",
"nativeCurrency": {
"name": "QI M 2402052 Token",
"symbol": "ACI",
"decimals": 18
},
"networkId": 15056,
"redFlags": [],
"rpc": [
"https://qi-m-2402052.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://15056.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
],
"shortName": "QI M 2402052",
"slug": "qi-m-2402052",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 15104,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QI M 2402054",
"nativeCurrency": {
"name": "QI M 2402054 Token",
"symbol": "ACI",
"decimals": 18
},
"networkId": 15104,
"redFlags": [],
"rpc": [
"https://qi-m-2402054.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://15104.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
],
"shortName": "QI M 2402054",
"slug": "qi-m-2402054",
"testnet": true
} as const satisfies Chain;
+37
View File
@@ -0,0 +1,37 @@
import type { Chain } from "../src/types";
export default {
"chain": "Puppynet Shibarium",
"chainId": 157,
"explorers": [
{
"name": "puppyscan",
"url": "https://puppyscan.shib.io",
"standard": "none"
}
],
"faucets": [
"https://beta.shibariumtech.com/faucet"
],
"icon": {
"url": "ipfs://QmYNVkoZgRjDBQzJz6kog9mA2yPzQFW2oSKvhnkwuBhLQE",
"width": 2000,
"height": 2000,
"format": "png"
},
"infoURL": "https://shibariumecosystem.com",
"name": "Puppynet Shibarium",
"nativeCurrency": {
"name": "BONE",
"symbol": "BONE",
"decimals": 18
},
"networkId": 157,
"rpc": [
"https://puppynet-shibarium.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://157.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://puppynet.shibrpc.com"
],
"shortName": "puppynet",
"slug": "puppynet-shibarium",
"testnet": false
} as const satisfies Chain;
-36
View File
@@ -1,36 +0,0 @@
import type { Chain } from "../src/types";
export default {
"chain": "ETH",
"chainId": 167005,
"explorers": [
{
"name": "blockscout",
"url": "https://explorer.test.taiko.xyz",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmcHdmVr5VRUJq13jnM6tgah5Ge7hn3Dm14eY6vwivJ5ui",
"width": 288,
"height": 258,
"format": "png"
},
"infoURL": "https://taiko.xyz",
"name": "Taiko Grimsvotn L2",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 167005,
"rpc": [
"https://taiko-grimsvotn-l2.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://167005.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.test.taiko.xyz"
],
"shortName": "taiko-l2",
"slug": "taiko-grimsvotn-l2",
"status": "deprecated",
"testnet": true
} as const satisfies Chain;
-36
View File
@@ -1,36 +0,0 @@
import type { Chain } from "../src/types";
export default {
"chain": "ETH",
"chainId": 167006,
"explorers": [
{
"name": "blockscout",
"url": "https://explorer.l3test.taiko.xyz",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmcHdmVr5VRUJq13jnM6tgah5Ge7hn3Dm14eY6vwivJ5ui",
"width": 288,
"height": 258,
"format": "png"
},
"infoURL": "https://taiko.xyz",
"name": "Taiko Eldfell L3",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 167006,
"rpc": [
"https://taiko-eldfell-l3.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://167006.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.l3test.taiko.xyz"
],
"shortName": "taiko-l3",
"slug": "taiko-eldfell-l3",
"status": "deprecated",
"testnet": true
} as const satisfies Chain;
-36
View File
@@ -1,36 +0,0 @@
import type { Chain } from "../src/types";
export default {
"chain": "ETH",
"chainId": 167007,
"explorers": [
{
"name": "blockscout",
"url": "https://explorer.jolnir.taiko.xyz",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmcHdmVr5VRUJq13jnM6tgah5Ge7hn3Dm14eY6vwivJ5ui",
"width": 288,
"height": 258,
"format": "png"
},
"infoURL": "https://taiko.xyz",
"name": "Taiko Jolnir L2",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 167007,
"rpc": [
"https://taiko-jolnir-l2.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://167007.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.jolnir.taiko.xyz"
],
"shortName": "tko-jolnir",
"slug": "taiko-jolnir-l2",
"status": "deprecated",
"testnet": false
} as const satisfies Chain;
+50
View File
@@ -0,0 +1,50 @@
import type { Chain } from "../src/types";
export default {
"chain": "ETH",
"chainId": 1686,
"explorers": [
{
"name": "blockscout",
"url": "https://testnet-explorer.mintchain.io",
"standard": "EIP3091",
"icon": {
"url": "ipfs://QmQsYisbKkCTKoKG2YSVs94UGuWWMiBspirH4Af4FyZeZz",
"width": 80,
"height": 80,
"format": "png"
}
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmQsYisbKkCTKoKG2YSVs94UGuWWMiBspirH4Af4FyZeZz",
"width": 80,
"height": 80,
"format": "png"
},
"infoURL": "https://www.mintchain.io",
"name": "Mint Testnet",
"nativeCurrency": {
"name": "Sepolia Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 1686,
"parent": {
"type": "L2",
"chain": "eip155-1",
"bridges": [
{
"url": "https://testnet-bridge.mintchain.io"
}
]
},
"rpc": [
"https://mint-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1686.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet-rpc.mintchain.io"
],
"shortName": "minttest",
"slug": "mint-testnet",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 234560,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "Project Orc",
"nativeCurrency": {
"name": "Project Orc Token",
"symbol": "STX",
"decimals": 18
},
"networkId": 234560,
"redFlags": [],
"rpc": [
"https://project-orc.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://234560.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/projectorc/testnet/rpc"
],
"shortName": "Project Orc",
"slug": "project-orc",
"testnet": true
} as const satisfies Chain;
+41
View File
@@ -0,0 +1,41 @@
import type { Chain } from "../src/types";
export default {
"chain": "Elizabeth",
"chainId": 2731,
"explorers": [
{
"name": "Time Network Explorer",
"url": "https://testnet-scanner.timenetwork.io",
"standard": "none",
"icon": {
"url": "ipfs://bafkreidoudwo453gr3hoxpreleguga73rm55yl6vuedxrfmhknljppqbiu",
"width": 512,
"height": 512,
"format": "png"
}
}
],
"faucets": [],
"icon": {
"url": "ipfs://bafkreidoudwo453gr3hoxpreleguga73rm55yl6vuedxrfmhknljppqbiu",
"width": 512,
"height": 512,
"format": "png"
},
"infoURL": "https://whitepaper.anttime.net/overview/anttime",
"name": "Elizabeth Testnet",
"nativeCurrency": {
"name": "TIME",
"symbol": "TIME",
"decimals": 18
},
"networkId": 2731,
"rpc": [
"https://elizabeth-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://2731.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet-rpc.timenetwork.io"
],
"shortName": "TIME",
"slug": "elizabeth-testnet",
"testnet": true
} as const satisfies Chain;
+30
View File
@@ -0,0 +1,30 @@
import type { Chain } from "../src/types";
export default {
"chain": "BPX",
"chainId": 279,
"explorers": [],
"faucets": [],
"icon": {
"url": "ipfs://bafkreiatcu42wbjlo24mr35jou4awvsqpaqys6iv4kxgkjhno3haovsiaq",
"width": 140,
"height": 140,
"format": "svg"
},
"infoURL": "https://bpxchain.cc",
"name": "BPX Blockchain",
"nativeCurrency": {
"name": "BPX",
"symbol": "BPX",
"decimals": 18
},
"networkId": 279,
"rpc": [
"https://bpx-blockchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://279.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.mainnet.bpxchain.cc",
"https://bpx-dataseed.infinex.cc"
],
"shortName": "bpx",
"slug": "bpx-blockchain",
"testnet": false
} as const satisfies Chain;
+39
View File
@@ -0,0 +1,39 @@
import type { Chain } from "../src/types";
export default {
"chain": "XEN",
"chainId": 2941,
"explorers": [
{
"name": "Xenon testnet Explorer",
"url": "https://testnet.xenonchain.com",
"standard": "none"
}
],
"faucets": [
"https://xfaucet.xenonchain.com"
],
"icon": {
"url": "ipfs://QmNSoxDnj6MV8mPJWiuzzLbATcbk5op11NTwMTdzcr272F",
"width": 500,
"height": 500,
"format": "png"
},
"infoURL": "https://xenonchain.com",
"name": "Xenon Chain Testnet",
"nativeCurrency": {
"name": "Xenon Testnet",
"symbol": "tXEN",
"decimals": 18
},
"networkId": 2941,
"rpc": [
"https://xenon-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://2941.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet-chain.xenonchain.com/",
"https://testnet-dev.xenonchain.com/"
],
"shortName": "xenon",
"slip44": 1,
"slug": "xenon-chain-testnet",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 29442,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QI M 2402055",
"nativeCurrency": {
"name": "QI M 2402055 Token",
"symbol": "ACI",
"decimals": 18
},
"networkId": 29442,
"redFlags": [],
"rpc": [
"https://qi-m-2402055.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://29442.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
],
"shortName": "QI M 2402055",
"slug": "qi-m-2402055",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 30266,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "Tnet02-06",
"nativeCurrency": {
"name": "Tnet02-06 Token",
"symbol": "LFC",
"decimals": 18
},
"networkId": 30266,
"redFlags": [],
"rpc": [
"https://tnet02-06.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://30266.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "Tnet02-06",
"slug": "tnet02-06",
"testnet": true
} as const satisfies Chain;
+37
View File
@@ -0,0 +1,37 @@
import type { Chain } from "../src/types";
export default {
"chain": "Lovely",
"chainId": 307,
"explorers": [
{
"name": "Lovely Network Testnet",
"url": "https://tscan.lovely.network",
"standard": "EIP3091"
}
],
"faucets": [
"https://faucet.lovely.network"
],
"icon": {
"url": "ipfs://QmPB7uW7Wj8zWWdeuPnUHPJ5FhaiTL76tv4ZQ4oKWEpb1g",
"width": 897,
"height": 824,
"format": "png"
},
"infoURL": "https://lovely.network",
"name": "Lovely Network Testnet",
"nativeCurrency": {
"name": "Lovely",
"symbol": "LOVELY",
"decimals": 18
},
"networkId": 307,
"rpc": [
"https://lovely-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://307.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://trpc.lovely.network"
],
"shortName": "LOVELY-Testnet",
"slug": "lovely-network-testnet",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 32277,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QI M 2402058",
"nativeCurrency": {
"name": "QI M 2402058 Token",
"symbol": "ACI",
"decimals": 18
},
"networkId": 32277,
"redFlags": [],
"rpc": [
"https://qi-m-2402058.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://32277.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
],
"shortName": "QI M 2402058",
"slug": "qi-m-2402058",
"testnet": true
} as const satisfies Chain;
+37
View File
@@ -0,0 +1,37 @@
import type { Chain } from "../src/types";
export default {
"chain": "Bloom",
"chainId": 323213,
"explorers": [
{
"name": "Bloom Genesis Testnet",
"url": "https://testnet.bloomgenesis.com",
"standard": "EIP3091"
}
],
"faucets": [
"https://faucet.bloomgenesis.com"
],
"icon": {
"url": "ipfs://Qmetu9hMLvczYo7tDPRyjqjBHwwpHU8mEgW3PEPPre56su",
"width": 2794,
"height": 2711,
"format": "png"
},
"infoURL": "https://www.bloomgenesis.com",
"name": "Bloom Genesis Testnet",
"nativeCurrency": {
"name": "Bloom",
"symbol": "BGBC",
"decimals": 18
},
"networkId": 323213,
"rpc": [
"https://bloom-genesis-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://323213.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet-rpc.bloomgenesis.com"
],
"shortName": "BGBC-Testnet",
"slug": "bloom-genesis-testnet",
"testnet": true
} as const satisfies Chain;
+35
View File
@@ -0,0 +1,35 @@
import type { Chain } from "../src/types";
export default {
"chain": "Bloom",
"chainId": 333313,
"explorers": [
{
"name": "Bloom Genesis Mainnet",
"url": "https://explorer.bloomgenesis.com",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://Qmetu9hMLvczYo7tDPRyjqjBHwwpHU8mEgW3PEPPre56su",
"width": 2794,
"height": 2711,
"format": "png"
},
"infoURL": "https://www.bloomgenesis.com",
"name": "Bloom Genesis Mainnet",
"nativeCurrency": {
"name": "Bloom",
"symbol": "BGBC",
"decimals": 18
},
"networkId": 333313,
"rpc": [
"https://bloom-genesis.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://333313.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet-rpc.bloomgenesis.com"
],
"shortName": "BGBC",
"slug": "bloom-genesis",
"testnet": false
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 37375,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QI M 2402057",
"nativeCurrency": {
"name": "QI M 2402057 Token",
"symbol": "ACI",
"decimals": 18
},
"networkId": 37375,
"redFlags": [],
"rpc": [
"https://qi-m-2402057.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://37375.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
],
"shortName": "QI M 2402057",
"slug": "qi-m-2402057",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 37767,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "Tnet 01-15",
"nativeCurrency": {
"name": "Tnet 01-15 Token",
"symbol": "LFC",
"decimals": 18
},
"networkId": 37767,
"redFlags": [],
"rpc": [
"https://tnet-01-15.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://37767.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "Tnet 01-15",
"slug": "tnet-01-15",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 41077,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "REALLY",
"nativeCurrency": {
"name": "REALLY Token",
"symbol": "FAN",
"decimals": 18
},
"networkId": 41077,
"redFlags": [],
"rpc": [
"https://really.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://41077.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/really/testnet/rpc"
],
"shortName": "REALLY",
"slug": "really",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 41425,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QR0205I1",
"nativeCurrency": {
"name": "QR0205I1 Token",
"symbol": "PVW",
"decimals": 18
},
"networkId": 41425,
"redFlags": [],
"rpc": [
"https://qr0205i1.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://41425.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/qr0205i1/testnet/rpc"
],
"shortName": "QR0205I1",
"slug": "qr0205i1",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 41604,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "Testnet",
"nativeCurrency": {
"name": "Testnet Token",
"symbol": "LFC",
"decimals": 18
},
"networkId": 41604,
"redFlags": [],
"rpc": [
"https://testnet-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://41604.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "Testnet",
"slug": "testnet-testnet",
"testnet": true
} as const satisfies Chain;
+42
View File
@@ -0,0 +1,42 @@
import type { Chain } from "../src/types";
export default {
"chain": "Merlin",
"chainId": 4200,
"explorers": [
{
"name": "blockscout",
"url": "https://scan.merlinchain.io",
"standard": "EIP3091",
"icon": {
"url": "ipfs://QmULpMFUvKSmJT8sWXS3WDnTm4EacgRbsEynDenpxcfrAj",
"width": 400,
"height": 400,
"format": "jpg"
}
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmULpMFUvKSmJT8sWXS3WDnTm4EacgRbsEynDenpxcfrAj",
"width": 400,
"height": 400,
"format": "jpg"
},
"infoURL": "https://merlinchain.io",
"name": "Merlin Mainnet",
"nativeCurrency": {
"name": "BTC",
"symbol": "BTC",
"decimals": 18
},
"networkId": 4200,
"rpc": [
"https://merlin.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://4200.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.merlinchain.io"
],
"shortName": "Merlin-Mainnet",
"slug": "merlin",
"testnet": false,
"title": "Merlin Mainnet"
} as const satisfies Chain;
+40
View File
@@ -0,0 +1,40 @@
import type { Chain } from "../src/types";
export default {
"chain": "SYNDRSEPOLIA",
"chainId": 444444,
"explorers": [
{
"name": "Syndr L3 Sepolia Testnet Explorer",
"url": "https://sepolia-explorer.syndr.com",
"standard": "EIP3091"
}
],
"faucets": [],
"infoURL": "https://syndr.com",
"name": "Syndr L3 Sepolia",
"nativeCurrency": {
"name": "Sepolia Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 444444,
"parent": {
"type": "L2",
"chain": "eip155-421614",
"bridges": [
{
"url": "https://sepolia-bridge.syndr.com"
}
]
},
"rpc": [
"https://syndr-l3-sepolia.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://444444.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://sepolia.syndr.com/http",
"wss://sepolia.syndr.com/ws"
],
"shortName": "syndr",
"slug": "syndr-l3-sepolia",
"testnet": true,
"title": "Syndr L3 Sepolia Rollup Testnet"
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 48702,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "Testnet",
"nativeCurrency": {
"name": "Testnet Token",
"symbol": "LUG",
"decimals": 18
},
"networkId": 48702,
"redFlags": [],
"rpc": [
"https://testnet-testnet-48702.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://48702.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "Testnet",
"slug": "testnet-testnet-48702",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Syndicate",
"chainId": 510,
"explorers": [],
"faucets": [],
"icon": {
"url": "ipfs://QmeSvQcD3XvLFAiMLoQSPbGK9JxVfbCWPBUTMLhhhzYPqX",
"width": 16000,
"height": 16000,
"format": "png"
},
"infoURL": "https://syndicate.io",
"name": "Syndicate Chain",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 510,
"rpc": [
"https://syndicate-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://510.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc-mainnet.syndicate.io"
],
"shortName": "syndicate-chain-mainnet",
"slug": "syndicate-chain",
"status": "incubating",
"testnet": false,
"title": "Syndicate Chain"
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Syndicate",
"chainId": 5100,
"explorers": [],
"faucets": [],
"icon": {
"url": "ipfs://QmeSvQcD3XvLFAiMLoQSPbGK9JxVfbCWPBUTMLhhhzYPqX",
"width": 16000,
"height": 16000,
"format": "png"
},
"infoURL": "https://syndicate.io",
"name": "Syndicate Testnet",
"nativeCurrency": {
"name": "S-Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 5100,
"rpc": [
"https://syndicate-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://5100.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc-testnet.syndicate.io"
],
"shortName": "syndicate-chain-testnet",
"slug": "syndicate-testnet",
"status": "incubating",
"testnet": true,
"title": "Syndicate Testnet"
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Syndicate Frame",
"chainId": 5101,
"explorers": [],
"faucets": [],
"icon": {
"url": "ipfs://QmeSvQcD3XvLFAiMLoQSPbGK9JxVfbCWPBUTMLhhhzYPqX",
"width": 16000,
"height": 16000,
"format": "png"
},
"infoURL": "https://syndicate.io",
"name": "Syndicate Frame Chain",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 5101,
"rpc": [
"https://syndicate-frame-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://5101.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc-frame.syndicate.io"
],
"shortName": "syndicate-chain-frame",
"slug": "syndicate-frame-chain",
"status": "incubating",
"testnet": false,
"title": "Syndicate Frame Chain"
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 60834,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QI M 2402059",
"nativeCurrency": {
"name": "QI M 2402059 Token",
"symbol": "ACI",
"decimals": 18
},
"networkId": 60834,
"redFlags": [],
"rpc": [
"https://qi-m-2402059.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://60834.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
],
"shortName": "QI M 2402059",
"slug": "qi-m-2402059",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 63891,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "Tnetv2",
"nativeCurrency": {
"name": "Tnetv2 Token",
"symbol": "LFC",
"decimals": 18
},
"networkId": 63891,
"redFlags": [],
"rpc": [
"https://tnetv2.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://63891.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "Tnetv2",
"slug": "tnetv2",
"testnet": true
} as const satisfies Chain;
+2 -8
View File
@@ -2,13 +2,7 @@ import type { Chain } from "../src/types";
export default {
"chain": "Xai Mainnet",
"chainId": 660279,
"explorers": [
{
"name": "blockscout",
"url": "https://explorer.xai-chain.net/",
"standard": "EIP3091"
}
],
"explorers": [],
"faucets": [],
"features": [],
"icon": {
@@ -29,7 +23,7 @@ export default {
"rpc": [
"https://xai.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://660279.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://xai-chain.net/rpc"
"https://xai-chain.net/rpc/xai79df8614da076af58f199126a07db"
],
"shortName": "xai",
"slug": "xai",
+3 -2
View File
@@ -27,10 +27,11 @@ export default {
"rpc": [
"https://zetachain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://7000.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://api.mainnet.zetachain.com/evm"
"https://zetachain-evm.blockpi.network/v1/rpc/public",
"https://zetachain-mainnet-archive.allthatnode.com:8545"
],
"shortName": "zetachain-mainnet",
"slug": "zetachain",
"status": "incubating",
"status": "active",
"testnet": false
} as const satisfies Chain;
+44
View File
@@ -0,0 +1,44 @@
import type { Chain } from "../src/types";
export default {
"chain": "Sei",
"chainId": 713715,
"explorers": [
{
"name": "Seistream",
"url": "https://seistream.app",
"standard": "none"
},
{
"name": "Seitrace",
"url": "https://seitrace.com",
"standard": "EIP3091"
}
],
"faucets": [
"https://sei-faucet.nima.enterprises",
"https://sei-evm.faucetme.pro"
],
"icon": {
"url": "ipfs://bafkreih3l3iisplmikofkbfyimqlox7nmixzlkzhjoewmpi4jbqitwryoa",
"width": 600,
"height": 600,
"format": "png"
},
"infoURL": "https://www.sei.io",
"name": "Sei Devnet",
"nativeCurrency": {
"name": "Sei",
"symbol": "SEI",
"decimals": 18
},
"networkId": 713715,
"rpc": [
"https://sei-devnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://713715.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://evm-rpc-arctic-1.sei-apis.com",
"https://evm-rpc.arctic-1.seinetwork.io"
],
"shortName": "sei-devnet",
"slug": "sei-devnet",
"testnet": false
} as const satisfies Chain;
+35
View File
@@ -0,0 +1,35 @@
import type { Chain } from "../src/types";
export default {
"chain": "Lovely",
"chainId": 730,
"explorers": [
{
"name": "Lovely Network Mainnet",
"url": "https://scan.lovely.network",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmPB7uW7Wj8zWWdeuPnUHPJ5FhaiTL76tv4ZQ4oKWEpb1g",
"width": 897,
"height": 824,
"format": "png"
},
"infoURL": "https://lovely.network",
"name": "Lovely Network Mainnet",
"nativeCurrency": {
"name": "Lovely",
"symbol": "LOVELY",
"decimals": 18
},
"networkId": 730,
"rpc": [
"https://lovely-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://730.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.lovely.network"
],
"shortName": "LOVELY",
"slug": "lovely-network",
"testnet": false
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 74738,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "Testnet",
"nativeCurrency": {
"name": "Testnet Token",
"symbol": "CWA",
"decimals": 18
},
"networkId": 74738,
"redFlags": [],
"rpc": [
"https://testnet-testnet-74738.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://74738.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "Testnet",
"slug": "testnet-testnet-74738",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 7640,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QI0205I1",
"nativeCurrency": {
"name": "QI0205I1 Token",
"symbol": "KOA",
"decimals": 18
},
"networkId": 7640,
"redFlags": [],
"rpc": [
"https://qi0205i1.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://7640.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "QI0205I1",
"slug": "qi0205i1",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 7865,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "ST 02-07",
"nativeCurrency": {
"name": "ST 02-07 Token",
"symbol": "TJO",
"decimals": 18
},
"networkId": 7865,
"redFlags": [],
"rpc": [
"https://st-02-07.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://7865.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "ST 02-07",
"slug": "st-02-07",
"testnet": true
} as const satisfies Chain;
+8 -8
View File
@@ -8,10 +8,10 @@ export default {
"url": "https://testnet-explorer.haven1.org",
"standard": "EIP3091",
"icon": {
"url": "ipfs://QmbSwngVDEiGaw3JzdME7fz5mYBWKbbz1ZerTpimaAxNXR",
"width": 32,
"height": 33,
"format": "svg"
"url": "ipfs://bafkreih4jq33lz2mjwvu62hmo2ptt277et5l6oqi5ejuyxv2dir2iohsai",
"width": 128,
"height": 128,
"format": "png"
}
}
],
@@ -27,10 +27,10 @@ export default {
}
],
"icon": {
"url": "ipfs://QmbSwngVDEiGaw3JzdME7fz5mYBWKbbz1ZerTpimaAxNXR",
"width": 32,
"height": 33,
"format": "svg"
"url": "ipfs://bafkreih4jq33lz2mjwvu62hmo2ptt277et5l6oqi5ejuyxv2dir2iohsai",
"width": 128,
"height": 128,
"format": "png"
},
"infoURL": "https://www.haven1.org",
"name": "Haven1 Testnet",
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 87815,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QI M 2402056",
"nativeCurrency": {
"name": "QI M 2402056 Token",
"symbol": "ACI",
"decimals": 18
},
"networkId": 87815,
"redFlags": [],
"rpc": [
"https://qi-m-2402056.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://87815.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
],
"shortName": "QI M 2402056",
"slug": "qi-m-2402056",
"testnet": true
} as const satisfies Chain;
+37
View File
@@ -0,0 +1,37 @@
import type { Chain } from "../src/types";
export default {
"chain": "MetaDAP",
"chainId": 91120,
"explorers": [
{
"name": "MetaDAP Enterprise Mainnet explorer",
"url": "https://explorer.chain.metadap.io",
"standard": "none"
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmcCFUTStKKJKfzTwrjfMFoVaPCMsvAvWXRdDkYMvCkEs3",
"width": 800,
"height": 800,
"format": "svg"
},
"infoURL": "https://metadap.io/",
"name": "MetaDAP Enterprise Mainnet",
"nativeCurrency": {
"name": "DAP",
"symbol": "DAP",
"decimals": 18
},
"networkId": 91120,
"rpc": [
"https://metadap-enterprise.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://91120.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.chain.metadap.io",
"wss://rpc-ws.chain.metadap.io"
],
"shortName": "MetaDAP",
"slug": "metadap-enterprise",
"testnet": false,
"title": "MetaDAP Enterprise Mainnet"
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 92780,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QI M 2402053",
"nativeCurrency": {
"name": "QI M 2402053 Token",
"symbol": "ACI",
"decimals": 18
},
"networkId": 92780,
"redFlags": [],
"rpc": [
"https://qi-m-2402053.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://92780.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
],
"shortName": "QI M 2402053",
"slug": "qi-m-2402053",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 93694,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QI M 2401291",
"nativeCurrency": {
"name": "QI M 2401291 Token",
"symbol": "HZU",
"decimals": 18
},
"networkId": 93694,
"redFlags": [],
"rpc": [
"https://qi-m-2401291.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://93694.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/f14d837e-de8f-446d-8222-0077f26e6694"
],
"shortName": "QI M 2401291",
"slug": "qi-m-2401291",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 951083,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QR0205Y1S",
"nativeCurrency": {
"name": "QR0205Y1S Token",
"symbol": "MYO",
"decimals": 18
},
"networkId": 951083,
"redFlags": [],
"rpc": [
"https://qr0205y1s.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://951083.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/qr0205y1s/testnet/rpc"
],
"shortName": "QR0205Y1S",
"slug": "qr0205y1s",
"testnet": true
} as const satisfies Chain;
+2 -2
View File
@@ -21,11 +21,11 @@ export default {
"networkId": 95395,
"redFlags": [],
"rpc": [
"https://testnet-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet-testnet-95395.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://95395.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "Testnet",
"slug": "testnet-testnet",
"slug": "testnet-testnet-95395",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 98557,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": "svg"
},
"infoURL": "https://avacloud.io",
"name": "QR0201I1",
"nativeCurrency": {
"name": "QR0201I1 Token",
"symbol": "OCZ",
"decimals": 18
},
"networkId": 98557,
"redFlags": [],
"rpc": [
"https://qr0201i1.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://98557.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/qr0201i1/testnet/rpc"
],
"shortName": "QR0201I1",
"slug": "qr0201i1",
"testnet": true
} as const satisfies Chain;
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/chains",
"version": "0.1.68",
"version": "0.1.72",
"main": "dist/thirdweb-dev-chains.cjs.js",
"module": "dist/thirdweb-dev-chains.esm.js",
"exports": {
File diff suppressed because one or more lines are too long
+40
View File
@@ -1,5 +1,45 @@
# thirdweb
## 0.13.40
### Patch Changes
- Updated dependencies [[`09de55f1`](https://github.com/thirdweb-dev/js/commit/09de55f13cbd29b4e0eb57808e0d30f9c1b3ba94), [`53786fc3`](https://github.com/thirdweb-dev/js/commit/53786fc3068568758f033a1c63975c94a8e407f5), [`a86478bf`](https://github.com/thirdweb-dev/js/commit/a86478bf248786423d03f4a20d9dc7c02270c371), [`23d0e553`](https://github.com/thirdweb-dev/js/commit/23d0e553088321edfe3971950c2e7f27209d9aaf)]:
- @thirdweb-dev/sdk@4.0.35
- @thirdweb-dev/chains@0.1.72
- @thirdweb-dev/wallets@2.4.10
- @thirdweb-dev/auth@4.1.32
## 0.13.39
### Patch Changes
- Updated dependencies [[`0092e2a3`](https://github.com/thirdweb-dev/js/commit/0092e2a3177364ad26af15ecafb4381591dc9be1), [`357886e3`](https://github.com/thirdweb-dev/js/commit/357886e31b37aad950731ce8f013a101190ebd07)]:
- @thirdweb-dev/auth@4.1.31
- @thirdweb-dev/chains@0.1.71
- @thirdweb-dev/sdk@4.0.34
- @thirdweb-dev/wallets@2.4.9
## 0.13.38
### Patch Changes
- Updated dependencies [[`1decd52a`](https://github.com/thirdweb-dev/js/commit/1decd52a36c303e540679ac43d206942ea83fc83), [`1e50caee`](https://github.com/thirdweb-dev/js/commit/1e50caeed1b85f91a6d2efb2e5204f3acf300134)]:
- @thirdweb-dev/sdk@4.0.33
- @thirdweb-dev/chains@0.1.70
- @thirdweb-dev/wallets@2.4.8
- @thirdweb-dev/auth@4.1.30
## 0.13.37
### Patch Changes
- Updated dependencies [[`4f52c296`](https://github.com/thirdweb-dev/js/commit/4f52c2961131636eed323a66568a519246d9f91d), [`374671fd`](https://github.com/thirdweb-dev/js/commit/374671fd9ac97a93263b09c6c0a53cfd129881d7)]:
- @thirdweb-dev/sdk@4.0.32
- @thirdweb-dev/chains@0.1.69
- @thirdweb-dev/wallets@2.4.7
- @thirdweb-dev/auth@4.1.29
## 0.13.36
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "thirdweb",
"main": "dist/cli/index.js",
"version": "0.13.36",
"version": "0.13.40",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/cli",
"author": "thirdweb eng <[email protected]>",
"license": "Apache-2.0",
+46
View File
@@ -1,5 +1,51 @@
# @thirdweb-dev/react-core
## 4.4.8
### Patch Changes
- Updated dependencies [[`09de55f1`](https://github.com/thirdweb-dev/js/commit/09de55f13cbd29b4e0eb57808e0d30f9c1b3ba94), [`53786fc3`](https://github.com/thirdweb-dev/js/commit/53786fc3068568758f033a1c63975c94a8e407f5), [`a86478bf`](https://github.com/thirdweb-dev/js/commit/a86478bf248786423d03f4a20d9dc7c02270c371), [`23d0e553`](https://github.com/thirdweb-dev/js/commit/23d0e553088321edfe3971950c2e7f27209d9aaf)]:
- @thirdweb-dev/sdk@4.0.35
- @thirdweb-dev/chains@0.1.72
- @thirdweb-dev/wallets@2.4.10
- @thirdweb-dev/auth@4.1.32
## 4.4.7
### Patch Changes
- Updated dependencies [[`0092e2a3`](https://github.com/thirdweb-dev/js/commit/0092e2a3177364ad26af15ecafb4381591dc9be1), [`357886e3`](https://github.com/thirdweb-dev/js/commit/357886e31b37aad950731ce8f013a101190ebd07)]:
- @thirdweb-dev/auth@4.1.31
- @thirdweb-dev/chains@0.1.71
- @thirdweb-dev/sdk@4.0.34
- @thirdweb-dev/wallets@2.4.9
## 4.4.6
### Patch Changes
- [#2270](https://github.com/thirdweb-dev/js/pull/2270) [`433d49e3`](https://github.com/thirdweb-dev/js/commit/433d49e3aba03df33678f429f19f426fd107b7eb) Thanks [@MananTank](https://github.com/MananTank)! - Keep the wallet states like signer, chainId, address in sync by setting their states at once synchronously
## 4.4.5
### Patch Changes
- Updated dependencies [[`1decd52a`](https://github.com/thirdweb-dev/js/commit/1decd52a36c303e540679ac43d206942ea83fc83), [`1e50caee`](https://github.com/thirdweb-dev/js/commit/1e50caeed1b85f91a6d2efb2e5204f3acf300134)]:
- @thirdweb-dev/sdk@4.0.33
- @thirdweb-dev/chains@0.1.70
- @thirdweb-dev/wallets@2.4.8
- @thirdweb-dev/auth@4.1.30
## 4.4.4
### Patch Changes
- Updated dependencies [[`4f52c296`](https://github.com/thirdweb-dev/js/commit/4f52c2961131636eed323a66568a519246d9f91d), [`374671fd`](https://github.com/thirdweb-dev/js/commit/374671fd9ac97a93263b09c6c0a53cfd129881d7)]:
- @thirdweb-dev/sdk@4.0.32
- @thirdweb-dev/chains@0.1.69
- @thirdweb-dev/wallets@2.4.7
- @thirdweb-dev/auth@4.1.29
## 4.4.3
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/react-core",
"version": "4.4.3",
"version": "4.4.8",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/react-core",
"author": "thirdweb eng <[email protected]>",
"license": "Apache-2.0",
@@ -90,6 +90,8 @@ type WalletSetupData = {
};
type ThirdwebWalletContextData = {
address: string | undefined;
chainId: number | undefined;
wallets: WalletConfig[];
signer?: Signer;
activeWallet?: WalletInstance;
@@ -127,7 +129,7 @@ type ThirdwebWalletContextData = {
isAutoConnecting: boolean;
};
const ThirdwebWalletContext = /* @__PURE__ */ createContext<
export const ThirdwebWalletContext = /* @__PURE__ */ createContext<
ThirdwebWalletContextData | undefined
>(undefined);
@@ -221,17 +223,26 @@ function useWalletConnectionSetup(
connectParams?: ConnectParams<Record<string, any>>,
isAutoConnect = false,
) => {
setActiveWallet(wallet);
const walletConfig = walletInstanceToConfig.get(wallet);
if (!walletConfig) {
throw new Error(
"Wallet config not found for given wallet instance. Do not create a wallet instance manually - use the useCreateWalletInstance() hook instead",
);
}
const [_signer, _chainId, _address] = await Promise.all([
wallet.getSigner(),
wallet.getChainId(),
wallet.getAddress(),
]);
// set states for the connected wallet
setActiveWallet(wallet);
setChainId(_chainId);
setWalletAddress(_address);
setSigner(_signer);
setActiveWalletConfig(walletConfig);
setConnectionStatus("connected");
const _signer = await wallet.getSigner();
setSigner(_signer);
// if personal wallet exists, we need to replace the connectParams.personalWallet to a stringifiable version
const personalWallet = wallet.getPersonalWallet() as AbstractClientWallet;
@@ -341,16 +352,14 @@ function useWalletConnectionSetup(
[createWalletInstance, setConnectedWallet, chainToConnect],
);
const onWalletDisconnect = useCallback(async () => {
await lastConnectedWalletStorage.removeItem(
LAST_CONNECTED_WALLET_STORAGE_KEY,
);
const onWalletDisconnect = useCallback(() => {
setConnectionStatus("disconnected");
setSigner(undefined);
setActiveWallet(undefined);
setActiveWalletConfig(undefined);
setChainId(undefined);
setWalletAddress(undefined);
lastConnectedWalletStorage.removeItem(LAST_CONNECTED_WALLET_STORAGE_KEY);
}, []);
const disconnectWallet = useCallback(async () => {
@@ -360,14 +369,13 @@ function useWalletConnectionSetup(
return;
}
onWalletDisconnect();
const personalWallet = activeWallet.getPersonalWallet();
await activeWallet.disconnect();
if (personalWallet) {
await (personalWallet as AbstractClientWallet)?.disconnect();
}
onWalletDisconnect();
}, [activeWallet, onWalletDisconnect]);
// handle wallet change event
@@ -380,9 +388,15 @@ function useWalletConnectionSetup(
}
const update = async () => {
activeWallet.getSigner().then(setSigner);
activeWallet.getChainId().then(setChainId);
activeWallet.getAddress().then(setWalletAddress);
Promise.all([
activeWallet.getSigner(),
activeWallet.getChainId(),
activeWallet.getAddress(),
]).then(([_signer, _chainId, _address]) => {
setSigner(_signer);
setChainId(_chainId);
setWalletAddress(_address);
});
};
update();
@@ -459,6 +473,8 @@ export function ThirdwebWalletProvider(
switchChain,
connectWallet,
disconnectWallet,
address,
chainId,
} = useWalletConnectionSetup(walletSetupData, {
connectionStatus: "unknown",
});
@@ -713,6 +729,8 @@ export function ThirdwebWalletProvider(
return (
<ThirdwebWalletContext.Provider
value={{
address,
chainId,
disconnect: disconnectWallet,
wallets: props.supportedWallets,
connect: connectWallet,
+10 -1
View File
@@ -2,6 +2,7 @@ import { useContext } from "react";
import { ThirdwebConnectedWalletContext } from "../contexts/thirdweb-wallet";
import type { Signer } from "ethers";
import invariant from "tiny-invariant";
import { ThirdwebWalletContext } from "../../core/providers/thirdweb-wallet-provider";
/**
* Hook for getting the [ethers signer](https://docs.ethers.org/v5/api/signer/) of the connected wallet.
@@ -24,9 +25,17 @@ import invariant from "tiny-invariant";
*/
export function useSigner(): Signer | undefined {
const context = useContext(ThirdwebConnectedWalletContext);
const walletCtx = useContext(ThirdwebWalletContext);
// if ThirdwebWalletContext is present, use the signer from there because signer from ThirdwebConnectedWalletContext also uses that signer but it lags behind
// walletCtx is undefined if only ThirdwebSDKProvider is used
if (walletCtx) {
return walletCtx.signer;
}
invariant(
context,
"useSigner() hook must be used within a <ThirdwebProvider/>",
"useSigner() hook must be used within a <ThirdwebProvider/> or <ThirdwebSDKProvider/> component",
);
return context.signer;
}
+21 -2
View File
@@ -10,7 +10,10 @@ import { UseQueryResult, useQuery } from "@tanstack/react-query";
import { Chain, defaultChains } from "@thirdweb-dev/chains";
import { useContext, useMemo } from "react";
import { useSDK } from "./useSDK";
import { useWalletContext } from "../../core/providers/thirdweb-wallet-provider";
import {
ThirdwebWalletContext,
useWalletContext,
} from "../../core/providers/thirdweb-wallet-provider";
import { BigNumber } from "ethers";
/**
@@ -151,6 +154,14 @@ export function useConnectedWallet() {
*/
export function useAddress(): string | undefined {
const context = useContext(ThirdwebConnectedWalletContext);
const walletCtx = useContext(ThirdwebWalletContext);
// if ThirdwebWalletContext is present, use the address from there because address from ThirdwebConnectedWalletContext also uses that address but it lags behind
// walletCtx is undefined if only ThirdwebSDKProvider is used
if (walletCtx) {
return walletCtx.address;
}
invariant(
context,
"useAddress() hook must be used within a <ThirdwebProvider/>",
@@ -185,9 +196,17 @@ export function useAddress(): string | undefined {
*/
export function useChainId(): number | undefined {
const context = useContext(ThirdwebConnectedWalletContext);
const walletCtx = useContext(ThirdwebWalletContext);
// if ThirdwebWalletContext is present, use the chainId from there because chainId from ThirdwebConnectedWalletContext also uses that chainId but it lags behind
// walletCtx is undefined if only ThirdwebSDKProvider is used
if (walletCtx) {
return walletCtx.chainId;
}
invariant(
context,
"useChainId() hook must be used within a <ThirdwebProvider/>",
"useChainId() hook must be used within a <ThirdwebProvider/> or <ThirdwebSDKProvider/> component",
);
return context.chainId;
}
Binary file not shown.
+10
View File
@@ -1,5 +1,15 @@
# @thirdweb-dev/react-native-compat
## 0.7.5
## 0.7.4
## 0.7.3
## 0.7.2
## 0.7.1
## 0.7.0
### Minor Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@thirdweb-dev/react-native-compat",
"description": "Shims for Thirdweb in React Native Projects",
"version": "0.7.0",
"version": "0.7.5",
"author": "thirdweb eng <[email protected]>",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/react-native-compat",
"license": "Apache-2.0",
+47
View File
@@ -1,5 +1,52 @@
# @thirdweb-dev/react-native
## 0.7.5
### Patch Changes
- Updated dependencies [[`09de55f1`](https://github.com/thirdweb-dev/js/commit/09de55f13cbd29b4e0eb57808e0d30f9c1b3ba94), [`53786fc3`](https://github.com/thirdweb-dev/js/commit/53786fc3068568758f033a1c63975c94a8e407f5), [`a86478bf`](https://github.com/thirdweb-dev/js/commit/a86478bf248786423d03f4a20d9dc7c02270c371), [`23d0e553`](https://github.com/thirdweb-dev/js/commit/23d0e553088321edfe3971950c2e7f27209d9aaf)]:
- @thirdweb-dev/sdk@4.0.35
- @thirdweb-dev/chains@0.1.72
- @thirdweb-dev/react-core@4.4.8
- @thirdweb-dev/wallets@2.4.10
## 0.7.4
### Patch Changes
- Updated dependencies [[`357886e3`](https://github.com/thirdweb-dev/js/commit/357886e31b37aad950731ce8f013a101190ebd07)]:
- @thirdweb-dev/chains@0.1.71
- @thirdweb-dev/react-core@4.4.7
- @thirdweb-dev/sdk@4.0.34
- @thirdweb-dev/wallets@2.4.9
## 0.7.3
### Patch Changes
- Updated dependencies [[`433d49e3`](https://github.com/thirdweb-dev/js/commit/433d49e3aba03df33678f429f19f426fd107b7eb)]:
- @thirdweb-dev/react-core@4.4.6
## 0.7.2
### Patch Changes
- Updated dependencies [[`1decd52a`](https://github.com/thirdweb-dev/js/commit/1decd52a36c303e540679ac43d206942ea83fc83), [`1e50caee`](https://github.com/thirdweb-dev/js/commit/1e50caeed1b85f91a6d2efb2e5204f3acf300134)]:
- @thirdweb-dev/sdk@4.0.33
- @thirdweb-dev/chains@0.1.70
- @thirdweb-dev/react-core@4.4.5
- @thirdweb-dev/wallets@2.4.8
## 0.7.1
### Patch Changes
- Updated dependencies [[`4f52c296`](https://github.com/thirdweb-dev/js/commit/4f52c2961131636eed323a66568a519246d9f91d), [`374671fd`](https://github.com/thirdweb-dev/js/commit/374671fd9ac97a93263b09c6c0a53cfd129881d7)]:
- @thirdweb-dev/sdk@4.0.32
- @thirdweb-dev/chains@0.1.69
- @thirdweb-dev/react-core@4.4.4
- @thirdweb-dev/wallets@2.4.7
## 0.7.0
### Minor Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/react-native",
"version": "0.7.0",
"version": "0.7.5",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/react-native",
"author": "thirdweb eng <[email protected]>",
"license": "Apache-2.0",
Binary file not shown.
+72
View File
@@ -1,5 +1,77 @@
# @thirdweb-dev/react
## 4.4.8
### Patch Changes
- [#2289](https://github.com/thirdweb-dev/js/pull/2289) [`0155adce`](https://github.com/thirdweb-dev/js/commit/0155adcea4b5379be552962f219853c0a2b1c050) Thanks [@MananTank](https://github.com/MananTank)! - - Show EmbeddedWallet UI instead of the default welcomeScreen in the ConnectWallet wide modal. If a custom welcomeScreen is provided, it will be shown instead of the EmbeddedWallet UI. Same Is done for the deprecated PaperWallet as well
- Stop treating Magic Link as a Social Login and remove the custom Select UI for it
- highlight the wallet for which the Connect UI is shown in the ConnectWallet wide modal
-
- [#2290](https://github.com/thirdweb-dev/js/pull/2290) [`f85806c0`](https://github.com/thirdweb-dev/js/commit/f85806c0674921adc7007eec9f061070eefe1d84) Thanks [@MananTank](https://github.com/MananTank)! - Update EmbeddedWallet name in ConnectWallet UI
- [#2288](https://github.com/thirdweb-dev/js/pull/2288) [`74d76ff5`](https://github.com/thirdweb-dev/js/commit/74d76ff580d78a5b98a2d7180a58457231c1b95a) Thanks [@MananTank](https://github.com/MananTank)! - Add "Powered By Thirdweb" Branding at the bottom of `ConnectEmbed` and `ConnectWallet` Modal
A new prop `showThirdwebBranding` has been added to both `ConnectEmbed` and `ConnectWallet` components to hide this branding.
- Updated dependencies [[`09de55f1`](https://github.com/thirdweb-dev/js/commit/09de55f13cbd29b4e0eb57808e0d30f9c1b3ba94), [`53786fc3`](https://github.com/thirdweb-dev/js/commit/53786fc3068568758f033a1c63975c94a8e407f5), [`a86478bf`](https://github.com/thirdweb-dev/js/commit/a86478bf248786423d03f4a20d9dc7c02270c371), [`23d0e553`](https://github.com/thirdweb-dev/js/commit/23d0e553088321edfe3971950c2e7f27209d9aaf)]:
- @thirdweb-dev/sdk@4.0.35
- @thirdweb-dev/chains@0.1.72
- @thirdweb-dev/react-core@4.4.8
- @thirdweb-dev/wallets@2.4.10
## 4.4.7
### Patch Changes
- Updated dependencies [[`357886e3`](https://github.com/thirdweb-dev/js/commit/357886e31b37aad950731ce8f013a101190ebd07)]:
- @thirdweb-dev/chains@0.1.71
- @thirdweb-dev/react-core@4.4.7
- @thirdweb-dev/sdk@4.0.34
- @thirdweb-dev/wallets@2.4.9
## 4.4.6
### Patch Changes
- [#2260](https://github.com/thirdweb-dev/js/pull/2260) [`6a3cacb6`](https://github.com/thirdweb-dev/js/commit/6a3cacb62257c1774b5bac739b89e17495f42655) Thanks [@MananTank](https://github.com/MananTank)! - Enforce compact modal size in ConnectWallet based on available space instead of just on mobile device
- Updated dependencies [[`433d49e3`](https://github.com/thirdweb-dev/js/commit/433d49e3aba03df33678f429f19f426fd107b7eb)]:
- @thirdweb-dev/react-core@4.4.6
## 4.4.5
### Patch Changes
- Updated dependencies [[`1decd52a`](https://github.com/thirdweb-dev/js/commit/1decd52a36c303e540679ac43d206942ea83fc83), [`1e50caee`](https://github.com/thirdweb-dev/js/commit/1e50caeed1b85f91a6d2efb2e5204f3acf300134)]:
- @thirdweb-dev/sdk@4.0.33
- @thirdweb-dev/chains@0.1.70
- @thirdweb-dev/react-core@4.4.5
- @thirdweb-dev/wallets@2.4.8
## 4.4.4
### Patch Changes
- [#2252](https://github.com/thirdweb-dev/js/pull/2252) [`439a377a`](https://github.com/thirdweb-dev/js/commit/439a377aa77ce86631a78daa4a409e00e48f69be) Thanks [@MananTank](https://github.com/MananTank)! - Add `detailsModalFooter` prop on `<ConnectWallet />` component to allow rendering a custom UI at the bottom of the details modal.
```tsx
<ConnectWallet
detailsModalFooter={(props) => {
const { close } = props;
return <div> .... </div>;
}}
/>
```
- Updated dependencies [[`4f52c296`](https://github.com/thirdweb-dev/js/commit/4f52c2961131636eed323a66568a519246d9f91d), [`374671fd`](https://github.com/thirdweb-dev/js/commit/374671fd9ac97a93263b09c6c0a53cfd129881d7)]:
- @thirdweb-dev/[email protected]
- @thirdweb-dev/[email protected]
- @thirdweb-dev/[email protected]
- @thirdweb-dev/[email protected]
## 4.4.3
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/react",
"version": "4.4.3",
"version": "4.4.8",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/react",
"author": "thirdweb eng <[email protected]>",
"license": "Apache-2.0",
@@ -185,6 +185,11 @@ export interface Web3ButtonProps<TActionFn extends ActionFn> {
* Either provide a component to replace the default screen entirely or an object with title, subtitle and imgSrc to change the content of the default screen
*/
welcomeScreen?: WelcomeScreen;
/**
* By default the ConnectWallet Modal shows "Powered by Thirdweb" at the bottom. If you want to hide it, set it to `false`
*/
showThirdwebBranding?: boolean;
};
/**
@@ -1,8 +1,8 @@
import { useState, createContext, useContext } from "react";
import { isMobile } from "../utils/isMobile";
import { Theme } from "../../design-system";
import { WelcomeScreen } from "../../wallet/ConnectWallet/screens/types";
import { useTWLocale } from "./locale-provider";
import { canFitWideModal } from "../utils/canFitWIdeModal";
type BoolSetter = (value: boolean) => void;
@@ -22,6 +22,7 @@ export type ModalConfig = {
};
isEmbed?: boolean;
onConnect?: () => void;
showThirdwebBranding?: boolean;
};
const WalletModalOpen = /* @__PURE__ */ createContext(false);
@@ -56,17 +57,18 @@ export const WalletUIStatesProvider = (
onLogout?: () => void;
};
onConnect?: () => void;
showThirdwebBranding?: boolean;
}>,
) => {
const [isWalletModalOpen, setIsWalletModalOpen] = useState(false);
const _isMobile = isMobile();
const enforceCompact = !canFitWideModal();
const locale = useTWLocale();
const [modalConfig, setModalConfig] = useState<ModalConfig>({
title: props.title || locale.connectWallet.defaultModalTitle,
theme: props.theme || "dark",
data: undefined,
modalSize: (_isMobile ? "compact" : props.modalSize) || "wide",
modalSize: (enforceCompact ? "compact" : props.modalSize) || "wide",
termsOfServiceUrl: props.termsOfServiceUrl,
privacyPolicyUrl: props.privacyPolicyUrl,
welcomeScreen: props.welcomeScreen,
@@ -74,6 +76,7 @@ export const WalletUIStatesProvider = (
isEmbed: props.isEmbed,
auth: props.auth,
onConnect: props.onConnect,
showThirdwebBranding: props.showThirdwebBranding,
});
return (
@@ -233,6 +236,13 @@ export type ModalConfigOptions = {
* Note that this does not include the sign in, If you want to call a callback after user connects AND signs in with their wallet, use `auth.onLogin` instead
*/
onConnect?: () => void;
/**
* By default the ConnectWallet Modal shows "powered by thirdweb" branding at the bottom of the modal.
*
* If you want to hide the branding, set this to `false`
*/
showThirdwebBranding?: boolean;
};
/**
@@ -405,7 +415,7 @@ export type ModalConfigOptions = {
*/
export const useSetWalletModalConfig = () => {
const context = useContext(SetModalConfigCtx);
const _isMobile = isMobile();
const enforceCompact = !canFitWideModal();
const locale = useTWLocale();
if (context === undefined) {
@@ -419,7 +429,7 @@ export const useSetWalletModalConfig = () => {
title: title || locale.connectWallet.defaultModalTitle,
data: undefined,
theme: theme || "dark",
modalSize: (_isMobile ? "compact" : modalSize) || "wide",
modalSize: (enforceCompact ? "compact" : modalSize) || "wide",
...rest,
});
};
@@ -0,0 +1,12 @@
import { wideModalScreenThreshold } from "../../wallet/ConnectWallet/constants";
/**
* Return true if the current screen size can fit the the wide connect modal
* @internal
*/
export function canFitWideModal(): boolean {
if (typeof window !== "undefined") {
return window.innerWidth >= wideModalScreenThreshold;
}
return false;
}
@@ -12,7 +12,7 @@ import {
useWalletContext,
useWallets,
} from "@thirdweb-dev/react-core";
import { useContext, useEffect, useMemo, useState } from "react";
import React, { useContext, useEffect, useMemo, useState } from "react";
import {
SetModalConfigCtx,
useSetIsWalletModalOpen,
@@ -21,7 +21,6 @@ import { Button } from "../../components/buttons";
import { Spinner } from "../../components/Spinner";
import styled from "@emotion/styled";
import type { NetworkSelectorProps } from "./NetworkSelector";
import { isMobile } from "../../evm/utils/isMobile";
import {
CustomThemeProvider,
useCustomTheme,
@@ -34,6 +33,7 @@ import { LockIcon } from "./icons/LockIcon";
import { SignatureScreen } from "./SignatureScreen";
import { Modal } from "../../components/Modal";
import { useTWLocale } from "../../evm/providers/locale-provider";
import { canFitWideModal } from "../../evm/utils/canFitWIdeModal";
export type ConnectWalletProps = {
/**
@@ -337,6 +337,33 @@ export type ConnectWalletProps = {
*
*/
onConnect?: () => void;
/**
* Render custom UI at the bottom of the ConnectWallet Details Modal
* @param props - props passed to the footer component which includes a function to close the modal
* @example
* ```tsx
* <ConnectWallet
* detailsModalFooter={(props) => {
* const { close } = props;
* return <div> ... </div>
* })
* />
* ```
*/
detailsModalFooter?: (props: { close: () => void }) => JSX.Element;
/**
* By default ConnectWallet shows "Powered by Thirdweb" branding at the bottom of the ConnectWallet Modal.
*
* If you want to hide the branding, set this prop to `false`
*
* @example
* ```tsx
* <ConnectWallet showThirdwebBranding={false} />
*```
*/
showThirdwebBranding?: boolean;
};
const TW_CONNECT_WALLET = "tw-connect-wallet";
@@ -559,6 +586,30 @@ const TW_CONNECT_WALLET = "tw-connect-wallet";
* ```tsx
* <ConnectWallet hideDisconnect={true} />
* ```
*
* ### detailsModalFooter
* Render custom UI at the bottom of the ConnectWallet Details Modal.
*
* The given function is passed an object with a `close` function which can be used to close the modal.
*
* ```tsx
* <ConnectWallet
* detailsModalFooter={(props) => {
* const { close } = props;
* return <div> ... </div>
* })
* />
* ```
*
*
* ### showThirdwebBranding
* By default ConnectWallet shows "Powered by Thirdweb" branding at the bottom of the ConnectWallet Modal.
*
* If you want to hide the branding, set this prop to `false`
*
* ```tsx
* <ConnectWallet showThirdwebBranding={false} />
*```
*/
export function ConnectWallet(props: ConnectWalletProps) {
const activeWallet = useWallet();
@@ -662,7 +713,7 @@ export function ConnectWallet(props: ConnectWalletProps) {
onClick={() => {
let modalSize = props.modalSize || "wide";
if (isMobile() || walletConfigs.length === 1) {
if (!canFitWideModal() || walletConfigs.length === 1) {
modalSize = "compact";
}
@@ -678,6 +729,7 @@ export function ConnectWallet(props: ConnectWalletProps) {
titleIconUrl: props.modalTitleIconUrl,
auth: props.auth,
onConnect: props.onConnect,
showThirdwebBranding: props.showThirdwebBranding,
});
setIsWalletModalOpen(true);
}}
@@ -754,6 +806,7 @@ export function ConnectWallet(props: ConnectWalletProps) {
}}
hideSwitchToPersonalWallet={props.hideSwitchToPersonalWallet}
hideDisconnect={props.hideDisconnect}
detailsModalFooter={props.detailsModalFooter}
/>
);
})()}
@@ -96,6 +96,7 @@ export const ConnectedWalletDetails: React.FC<{
displayBalanceToken?: Record<number, string>;
hideSwitchToPersonalWallet?: boolean;
hideDisconnect?: boolean;
detailsModalFooter?: (props: { close: () => void }) => JSX.Element;
}> = (props) => {
const locale = useTWLocale().connectWallet;
const chain = useChain();
@@ -517,6 +518,10 @@ export const ConnectedWalletDetails: React.FC<{
</MenuButton>
</div>
)}
{props.detailsModalFooter && (
<props.detailsModalFooter close={() => setIsOpen(false)} />
)}
</Container>
<Spacer y="md" />
@@ -8,8 +8,7 @@ import {
reservedScreens,
} from "../constants";
import { ConnectModalContent } from "./ConnectModal";
import { useScreen } from "./screen";
import { isMobile } from "../../../evm/utils/isMobile";
import { useSetupScreen } from "./screen";
import { DynamicHeight } from "../../../components/DynamicHeight";
import {
CustomThemeProvider,
@@ -20,7 +19,6 @@ import { useTWLocale } from "../../../evm/providers/locale-provider";
import { StyledDiv } from "../../../design-system/elements";
import { Theme, radius } from "../../../design-system";
import {
WalletConfig,
useConnectionStatus,
useThirdwebAuthContext,
useUser,
@@ -28,6 +26,7 @@ import {
} from "@thirdweb-dev/react-core";
import { Container } from "../../../components/basic";
import { Spinner } from "../../../components/Spinner";
import { canFitWideModal } from "../../../evm/utils/canFitWIdeModal";
export type ConnectEmbedProps = {
/**
@@ -118,6 +117,18 @@ export type ConnectEmbedProps = {
*
*/
onConnect?: () => void;
/**
* By default, A "Powered by Thirdweb" branding is shown at the bottom of the embed.
*
* If you want to hide it, set this to `false`
*
* @example
* ```tsx
* <ConnectEmbed showThirdwebBranding={false} />
* ```
*/
showThirdwebBranding?: boolean;
};
/**
@@ -276,32 +287,42 @@ export function useShowConnectEmbed(loginOptional?: boolean) {
* />
* ```
*
* ### showThirdwebBranding
* By default ConnectWallet shows "Powered by Thirdweb" branding at the bottom of the ConnectWallet Modal.
*
* If you want to hide the branding, set this prop to `false`
*
* ```tsx
* <ConnectWallet showThirdwebBranding={false} />
*```
*
*/
export function ConnectEmbed(props: ConnectEmbedProps) {
const loginOptional = props.auth?.loginOptional;
const requiresSignIn = useSignInRequired(loginOptional);
const show = useShowConnectEmbed(loginOptional);
const { screen, setScreen, initialScreen } = useScreen();
// if showing main screen but signIn is required, switch to signIn screen
useEffect(() => {
if (requiresSignIn && screen === reservedScreens.main) {
setScreen(reservedScreens.signIn);
}
}, [requiresSignIn, screen, setScreen]);
const contextTheme = useCustomTheme();
const walletUIStatesProps = {
theme: props.theme || contextTheme || defaultTheme,
modalSize: "compact" as const,
title: undefined,
termsOfServiceUrl: props.termsOfServiceUrl,
privacyPolicyUrl: props.privacyPolicyUrl,
isEmbed: true,
auth: props.auth,
onConnect: props.onConnect,
showThirdwebBranding: props.showThirdwebBranding,
};
if (show) {
return (
<ConnectEmbedContent
{...props}
onClose={() => {
setScreen(initialScreen);
}}
screen={screen}
setScreen={setScreen}
initialScreen={initialScreen}
onConnect={props.onConnect}
/>
<WalletUIStatesProvider {...walletUIStatesProps}>
<CustomThemeProvider theme={walletUIStatesProps.theme}>
<ConnectEmbedContent {...props} onConnect={props.onConnect} />
<SyncedWalletUIStates {...walletUIStatesProps} />
</CustomThemeProvider>
</WalletUIStatesProvider>
);
}
@@ -310,17 +331,23 @@ export function ConnectEmbed(props: ConnectEmbedProps) {
const ConnectEmbedContent = (
props: Omit<ConnectEmbedProps, "onConnect"> & {
onClose: () => void;
screen: string | WalletConfig;
setScreen: (screen: string | WalletConfig) => void;
initialScreen: string | WalletConfig;
onConnect?: () => void;
loginOptional?: boolean;
},
) => {
const modalSize = "compact" as const;
const requiresSignIn = useSignInRequired(props.loginOptional);
const screenSetup = useSetupScreen();
const { screen, setScreen, initialScreen } = screenSetup;
// if showing main screen but signIn is required, switch to signIn screen
useEffect(() => {
if (requiresSignIn && screen === reservedScreens.main) {
setScreen(reservedScreens.signIn);
}
}, [requiresSignIn, screen, setScreen]);
const connectionStatus = useConnectionStatus();
const { isAutoConnecting } = useWalletContext();
const contextTheme = useCustomTheme();
let content = null;
@@ -340,11 +367,11 @@ const ConnectEmbedContent = (
} else {
content = (
<ConnectModalContent
initialScreen={props.initialScreen}
screen={props.screen}
setScreen={props.setScreen}
screenSetup={screenSetup}
isOpen={true}
onClose={props.onClose}
onClose={() => {
setScreen(initialScreen);
}}
onHide={() => {
// no op
}}
@@ -355,33 +382,17 @@ const ConnectEmbedContent = (
);
}
const walletUIStatesProps = {
theme: props.theme || contextTheme || defaultTheme,
modalSize: modalSize,
title: undefined,
termsOfServiceUrl: props.termsOfServiceUrl,
privacyPolicyUrl: props.privacyPolicyUrl,
isEmbed: true,
auth: props.auth,
onConnect: props.onConnect,
};
return (
<WalletUIStatesProvider {...walletUIStatesProps}>
<CustomThemeProvider theme={walletUIStatesProps.theme}>
<EmbedContainer
className={props.className}
style={{
height: "auto",
maxWidth: modalMaxWidthCompact,
...props.style,
}}
>
<DynamicHeight> {content} </DynamicHeight>
<SyncedWalletUIStates {...walletUIStatesProps} />
</EmbedContainer>
</CustomThemeProvider>
</WalletUIStatesProvider>
<EmbedContainer
className={props.className}
style={{
height: "auto",
maxWidth: modalMaxWidthCompact,
...props.style,
}}
>
<DynamicHeight> {content} </DynamicHeight>
</EmbedContainer>
);
};
@@ -397,11 +408,12 @@ export function SyncedWalletUIStates(
...c,
title: props.title || locale.connectWallet.defaultModalTitle,
theme: props.theme || "dark",
modalSize: (isMobile() ? "compact" : props.modalSize) || "wide",
modalSize: (!canFitWideModal() ? "compact" : props.modalSize) || "wide",
termsOfServiceUrl: props.termsOfServiceUrl,
privacyPolicyUrl: props.privacyPolicyUrl,
welcomeScreen: props.welcomeScreen,
titleIconUrl: props.titleIconUrl,
showThirdwebBranding: props.showThirdwebBranding,
}));
}, [
props.title,
@@ -413,6 +425,7 @@ export function SyncedWalletUIStates(
props.titleIconUrl,
setModalConfig,
locale.connectWallet.defaultModalTitle,
props.showThirdwebBranding,
]);
return <WalletUIStatesProvider {...props} />;
@@ -26,7 +26,7 @@ import {
} from "../constants";
import { HeadlessConnectUI } from "../../wallets/headlessConnectUI";
import { Container, noScrollBar } from "../../../components/basic";
import { ScreenContext, useScreen } from "./screen";
import { ScreenSetup, ScreenSetupContext, useSetupScreen } from "./screen";
import { StartScreen } from "../screens/StartScreen";
import {
CustomThemeProvider,
@@ -36,15 +36,14 @@ import { SignatureScreen } from "../SignatureScreen";
import { StyledDiv } from "../../../design-system/elements";
export const ConnectModalContent = (props: {
screen: string | WalletConfig;
initialScreen: string | WalletConfig;
setScreen: (screen: string | WalletConfig) => void;
screenSetup: ScreenSetup;
onHide: () => void;
onShow: () => void;
isOpen: boolean;
onClose: () => void;
}) => {
const { screen, setScreen, initialScreen, onHide, onShow, onClose } = props;
const { onHide, onShow, onClose } = props;
const { screen, setScreen, initialScreen } = props.screenSetup;
const walletConfigs = useWallets();
const connectionStatus = useConnectionStatus();
@@ -173,7 +172,7 @@ export const ConnectModalContent = (props: {
);
return (
<ScreenContext.Provider value={screen}>
<ScreenSetupContext.Provider value={props.screenSetup}>
{isWideModal ? (
<div
style={{
@@ -205,14 +204,15 @@ export const ConnectModalContent = (props: {
{typeof screen !== "string" && getWalletUI(screen)}
</Container>
)}
</ScreenContext.Provider>
</ScreenSetupContext.Provider>
);
};
export const ConnectModal = () => {
const { theme, modalSize } = useContext(ModalConfigCtx);
const { screen, setScreen, initialScreen } = useScreen();
const screenSetup = useSetupScreen();
const { screen, setScreen, initialScreen } = screenSetup;
const isWalletModalOpen = useIsWalletModalOpen();
const setIsWalletModalOpen = useSetIsWalletModalOpen();
const [hideModal, setHideModal] = useState(false);
@@ -311,9 +311,7 @@ export const ConnectModal = () => {
}}
>
<ConnectModalContent
initialScreen={initialScreen}
screen={screen}
setScreen={setScreen}
screenSetup={screenSetup}
onHide={onHide}
onShow={onShow}
isOpen={isWalletModalOpen}
@@ -9,8 +9,7 @@ import {
modalMaxWidthWide,
} from "../constants";
import { ConnectModalContent } from "./ConnectModal";
import { useScreen } from "./screen";
import { isMobile } from "../../../evm/utils/isMobile";
import { useSetupScreen } from "./screen";
import { useWallets } from "@thirdweb-dev/react-core";
import { DynamicHeight } from "../../../components/DynamicHeight";
import {
@@ -20,6 +19,7 @@ import {
import { StyledDiv } from "../../../design-system/elements";
import { SyncedWalletUIStates } from "./ConnectEmbed";
import { WelcomeScreen } from "../screens/types";
import { canFitWideModal } from "../../../evm/utils/canFitWIdeModal";
/**
* @internal
@@ -27,67 +27,62 @@ import { WelcomeScreen } from "../screens/types";
export type ConnectModalInlineProps = {
className?: string;
theme?: "dark" | "light" | Theme;
/**
* Set a custom title for the modal
* @defaultValue "Connect"
*/
modalTitle?: string;
/**
* Replace the thirdweb icon next to modalTitle and set your own iconUrl
*
* Set to empty string to hide the icon
*/
modalTitleIconUrl?: string;
style?: React.CSSProperties;
/**
* Set the size of the modal - `compact` or `wide` on desktop
*
* Modal size is always `compact` on mobile
*
* @defaultValue "wide"
*/
modalSize?: "compact" | "wide";
/**
* If provided, Modal will show a Terms of Service message at the bottom with below link
*/
termsOfServiceUrl?: string;
/**
* If provided, Modal will show a Privacy Policy message at the bottom with below link
*/
privacyPolicyUrl?: string;
/**
* Customize the welcome screen
*
* Either provide a component to replace the default screen entirely
*
* or an object with title, subtitle and imgSrc to change the content of the default screen
*/
welcomeScreen?: WelcomeScreen;
showThirdwebBranding?: boolean;
};
/**
* @internal
*/
export const ConnectModalInline = (props: ConnectModalInlineProps) => {
const { screen, setScreen, initialScreen } = useScreen();
const walletConfigs = useWallets();
const modalSize =
isMobile() || walletConfigs.length === 1 ? "compact" : props.modalSize;
!canFitWideModal() || walletConfigs.length === 1
? "compact"
: props.modalSize;
const ctxTheme = useCustomTheme();
const walletUIStatesProps = {
theme: props.theme || ctxTheme,
modalSize: modalSize,
title: props.modalTitle,
termsOfServiceUrl: props.termsOfServiceUrl,
privacyPolicyUrl: props.privacyPolicyUrl,
welcomeScreen: props.welcomeScreen,
titleIconUrl: props.modalTitleIconUrl,
showThirdwebBranding: props.showThirdwebBranding,
};
return (
<WalletUIStatesProvider {...walletUIStatesProps}>
<CustomThemeProvider theme={walletUIStatesProps.theme}>
<ConnectModalInlineContent
className={props.className}
modalSize={modalSize}
/>
<SyncedWalletUIStates {...walletUIStatesProps} />
</CustomThemeProvider>
</WalletUIStatesProvider>
);
};
function ConnectModalInlineContent(props: {
className?: string;
modalSize?: "compact" | "wide";
style?: React.CSSProperties;
}) {
const screenSetup = useSetupScreen();
const content = (
<>
<ConnectModalContent
initialScreen={initialScreen}
screen={screen}
setScreen={setScreen}
screenSetup={screenSetup}
onHide={() => {
// no op
}}
@@ -115,41 +110,26 @@ export const ConnectModalInline = (props: ConnectModalInlineProps) => {
</>
);
const walletUIStatesProps = {
theme: props.theme || ctxTheme,
modalSize: modalSize,
title: props.modalTitle,
termsOfServiceUrl: props.termsOfServiceUrl,
privacyPolicyUrl: props.privacyPolicyUrl,
welcomeScreen: props.welcomeScreen,
titleIconUrl: props.modalTitleIconUrl,
};
return (
<WalletUIStatesProvider {...walletUIStatesProps}>
<CustomThemeProvider theme={walletUIStatesProps.theme}>
<ConnectModalInlineContainer
className={props.className}
style={{
height: modalSize === "compact" ? "auto" : wideModalMaxHeight,
maxWidth:
modalSize === "compact"
? modalMaxWidthCompact
: modalMaxWidthWide,
...props.style,
}}
>
{modalSize === "compact" ? (
<DynamicHeight> {content} </DynamicHeight>
) : (
content
)}
<SyncedWalletUIStates {...walletUIStatesProps} />
</ConnectModalInlineContainer>
</CustomThemeProvider>
</WalletUIStatesProvider>
<ConnectModalInlineContainer
className={props.className}
style={{
height: props.modalSize === "compact" ? "auto" : wideModalMaxHeight,
maxWidth:
props.modalSize === "compact"
? modalMaxWidthCompact
: modalMaxWidthWide,
...props.style,
}}
>
{props.modalSize === "compact" ? (
<DynamicHeight> {content} </DynamicHeight>
) : (
content
)}
</ConnectModalInlineContainer>
);
};
}
const ConnectModalInlineContainer = /* @__PURE__ */ StyledDiv(() => {
const theme = useCustomTheme();
@@ -1,19 +1,41 @@
import { WalletConfig, useWallet, useWallets } from "@thirdweb-dev/react-core";
import { createContext, useState, useContext, useEffect, useRef } from "react";
import { reservedScreens } from "../constants";
import { ModalConfigCtx } from "../../../evm/providers/wallet-ui-states-provider";
type Screen = string | WalletConfig;
export const ScreenContext = /* @__PURE__ */ createContext<Screen | undefined>(
undefined,
);
export type ScreenSetup = {
screen: Screen;
setScreen: (newSreen: Screen) => void;
initialScreen: Screen;
};
export function useScreen() {
export const ScreenSetupContext = /* @__PURE__ */ createContext<
ScreenSetup | undefined
>(undefined);
export function useSetupScreen(): ScreenSetup {
const walletConfigs = useWallets();
const initialScreen =
(walletConfigs.length === 1 && !walletConfigs[0]?.selectUI
? walletConfigs[0]
: reservedScreens.main) || reservedScreens.main;
const modalConfig = useContext(ModalConfigCtx);
let initialScreen: Screen = reservedScreens.main;
const socialLogin = walletConfigs.find((w) => w.category === "socialLogin");
if (
walletConfigs.length === 1 &&
walletConfigs[0] &&
!walletConfigs[0]?.selectUI
) {
initialScreen = walletConfigs[0];
} else if (
modalConfig.modalSize === "wide" &&
!modalConfig.welcomeScreen &&
socialLogin
) {
initialScreen = socialLogin;
}
const [screen, setScreen] = useState<string | WalletConfig>(initialScreen);
const prevInitialScreen = useRef(initialScreen);
@@ -42,11 +64,11 @@ export function useScreen() {
}
export function useScreenContext() {
const screen = useContext(ScreenContext);
if (!screen) {
const ctx = useContext(ScreenSetupContext);
if (!ctx) {
throw new Error(
"useScreenContext must be used within a <ScreenProvider />",
);
}
return screen;
return ctx;
}
@@ -0,0 +1,34 @@
import { Container } from "../../components/basic";
import { Link, Text } from "../../components/text";
import { ThirdwebTextIcon } from "./icons/ThirdwebTextIcon";
export function PoweredByThirdweb() {
return (
<Link
color="secondaryText"
hoverColor="primaryText"
target="_blank"
href="https://thirdweb.com/connect?utm_source=cw_text"
>
<Container
flex="row"
center="both"
style={{
color: "currentColor",
gap: 4,
}}
>
<Text
size="sm"
weight={600}
style={{
color: "currentColor",
}}
>
{"Powered by"}
</Text>
<ThirdwebTextIcon height={13} />
</Container>
</Link>
);
}
@@ -31,6 +31,8 @@ import { useTWLocale } from "../../evm/providers/locale-provider";
import { ChevronLeftIcon } from "@radix-ui/react-icons";
import { StyledButton, StyledUl } from "../../design-system/elements";
import { useCustomTheme } from "../../design-system/CustomThemeProvider";
import { PoweredByThirdweb } from "./PoweredByTW";
import { useScreenContext } from "./Modal/screen";
type WalletSelectUIProps = {
connect: (
@@ -429,7 +431,14 @@ export const WalletSelector: React.FC<{
{topSection}
</Container>
{bottomSection}
<div>
{bottomSection}
{isCompact && modalConfig.showThirdwebBranding !== false && (
<Container py="md">
<PoweredByThirdweb />
</Container>
)}
</div>
</Container>
);
};
@@ -499,12 +508,15 @@ export function WalletEntryButton(props: {
const { walletConfig, selectWallet } = props;
const isRecommended = walletConfig.recommended;
const locale = useTWLocale().connectWallet;
const { screen } = useScreenContext();
return (
<WalletButton
type="button"
onClick={() => {
selectWallet();
}}
data-active={screen === props.walletConfig}
>
<Img
src={walletConfig.meta.iconURL}
@@ -565,6 +577,9 @@ const WalletButton = /* @__PURE__ */ StyledButton(() => {
backgroundColor: theme.colors.walletSelectorButtonHoverBg,
transform: "scale(1.01)",
},
'&[data-active="true"]': {
backgroundColor: theme.colors.walletSelectorButtonHoverBg,
},
transition: "background-color 200ms ease, transform 200ms ease",
};
});
@@ -5,7 +5,10 @@ export const reservedScreens = {
};
export const modalMaxWidthCompact = "360px";
export const modalMaxWidthWide = "730px";
const wideModalWidth = 730;
export const modalMaxWidthWide = wideModalWidth + "px";
export const wideModalScreenThreshold = wideModalWidth + 40;
export const wideModalMaxHeight = "570px";
export const compactModalMaxHeight = "600px";
@@ -0,0 +1,31 @@
export const ThirdwebTextIcon = (props: { height: number }) => {
return (
<svg
width={(props.height * 74) / 11}
height={props.height}
viewBox="0 0 74 11"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M34.1489 0.373291C33.5297 0.373291 33.022 0.874761 33.022 1.51414C33.022 2.14097 33.5297 2.64244 34.1489 2.64244C34.7681 2.64244 35.2758 2.14097 35.2758 1.51414C35.2758 0.874761 34.7681 0.373291 34.1489 0.373291ZM35.1396 3.21913H33.1706V9.97644H35.1396V3.21913ZM21.6787 0.624035H23.5982V3.21914H25.0718V5.02444H23.5982V7.40642C23.5982 7.75745 23.8706 8.03326 24.205 8.03326H25.0594V9.95138H24.205C22.818 9.95138 21.6787 8.81054 21.6787 7.39389V5.0119H20.7871V3.20661H21.6787V0.624035ZM29.7652 3.0687C28.8736 3.0687 28.1677 3.44481 27.8953 4.03403V0.624035H25.9263V9.96392H27.8953V6.17782C27.8953 5.388 28.403 4.83639 29.1213 4.83639C29.8519 4.83639 30.2605 5.31278 30.2605 6.11514V9.97646H32.2295V5.8644C32.2295 4.10925 31.3379 3.0687 29.7652 3.0687ZM37.9507 3.2066V4.13432C38.2479 3.45734 38.9661 3.0687 39.8701 3.05616C40.0063 3.05616 40.1797 3.0687 40.3902 3.09377V4.97429C40.1921 4.93668 39.9692 4.9116 39.7339 4.9116C38.607 4.9116 37.9507 5.55098 37.9507 6.66675V9.96392H35.9817V3.2066H37.9507ZM45.9257 4.09672C45.7275 3.50749 44.9474 3.09378 43.9443 3.09378C43.0032 3.09378 42.2106 3.43227 41.5791 4.10926C40.9599 4.7737 40.6379 5.61367 40.6379 6.59154C40.6379 7.5694 40.9599 8.39683 41.5791 9.08635C42.2106 9.7508 43.0032 10.0893 43.9443 10.0893C44.9474 10.0893 45.7275 9.67558 45.9257 9.08635V9.97646H47.8946V0.624035H45.9257V4.09672ZM45.5294 7.79506C45.195 8.12102 44.7864 8.27146 44.3034 8.27146C43.8329 8.27146 43.4242 8.10848 43.1022 7.79506C42.7679 7.45657 42.6069 7.0554 42.6069 6.59154C42.6069 6.12767 42.7679 5.7265 43.1022 5.40054C43.4366 5.06205 43.8329 4.89907 44.3034 4.89907C44.7988 4.89907 45.2074 5.06205 45.5294 5.40054C45.8761 5.7265 46.0495 6.12767 46.0495 6.59154C46.0495 7.0554 45.8761 7.45657 45.5294 7.79506ZM53.5787 3.2442L55.3619 6.45361L56.5631 3.21913H58.4949L55.7458 10.3651L53.5787 6.47868L51.4115 10.3651L48.6748 3.21913H50.6066L51.7954 6.45361L53.5787 3.2442ZM61.7394 3.05616C60.7239 3.05616 59.8694 3.38212 59.2007 4.03403C58.5444 4.6734 58.2101 5.5259 58.2101 6.57899V6.64167C58.2101 7.69476 58.5444 8.54726 59.2007 9.18664C59.8818 9.81347 60.7487 10.1394 61.8384 10.1394C62.8539 10.1394 63.6836 9.93884 64.3151 9.52513V7.78252C63.6959 8.22131 62.9034 8.43443 61.9499 8.43443C60.9097 8.43443 60.2286 7.92042 60.1914 7.11807H65.0829C65.1077 6.91748 65.12 6.69182 65.12 6.46616C65.12 5.50083 64.7981 4.69848 64.1789 4.04657C63.5597 3.38212 62.73 3.05616 61.7394 3.05616ZM60.1914 5.82679C60.2038 5.51337 60.3648 5.25009 60.662 5.03697C60.9716 4.82385 61.3183 4.71101 61.7394 4.71101C62.5195 4.71101 63.1263 5.22502 63.1263 5.82679H60.1914ZM69.8135 3.09378C70.7546 3.09378 71.5472 3.43227 72.1663 4.10925C72.7979 4.78624 73.1199 5.60113 73.1199 6.579C73.1199 7.55686 72.7979 8.38429 72.1663 9.07381C71.5472 9.73826 70.7546 10.0768 69.8135 10.0768C68.8104 10.0768 68.0302 9.66304 67.8321 9.07381V9.96392H65.8631V0.624035H67.8321V4.09672C68.0302 3.50749 68.8104 3.09378 69.8135 3.09378ZM69.4543 8.27146C69.9249 8.27146 70.3212 8.12102 70.6555 7.79506C70.9899 7.45657 71.1509 7.05539 71.1509 6.59153C71.1509 6.12767 70.9899 5.7265 70.6555 5.40054C70.3336 5.06205 69.9249 4.89907 69.4543 4.89907C68.9714 4.89907 68.5627 5.06205 68.216 5.40054C67.8816 5.7265 67.7083 6.12767 67.7083 6.59153C67.7083 7.05539 67.8816 7.45657 68.216 7.79506C68.5503 8.10848 68.959 8.27146 69.4543 8.27146Z"
fill="currentColor"
/>
<g clip-path="url(#clip0_5017_2727)">
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M0.045011 0.900694C-0.126602 0.467742 0.193222 0 0.661257 0H3.56697C3.83999 0 4.08181 0.162357 4.18322 0.413623L6.49609 6.18115C6.55849 6.33578 6.55849 6.50973 6.49609 6.66822L5.04128 10.2903C4.81896 10.8431 4.03111 10.8431 3.80879 10.2903L0.045011 0.900694ZM5.65759 0.881366C5.50158 0.45228 5.8214 0 6.28164 0H8.81292C9.09374 0 9.34336 0.173954 9.43697 0.432951L11.5392 6.20048C11.5899 6.34351 11.5899 6.502 11.5392 6.6489L10.2755 10.1164C10.0649 10.6962 9.23805 10.6962 9.02744 10.1164L5.65759 0.881366ZM11.3404 0C10.8724 0 10.5525 0.467742 10.7241 0.900694L14.4879 10.2903C14.7102 10.8431 15.4981 10.8431 15.7204 10.2903L17.1752 6.66822C17.2376 6.50973 17.2376 6.33578 17.1752 6.18115L14.8623 0.413623C14.7609 0.162357 14.5191 0 14.2461 0H11.3404Z"
fill="currentColor"
/>
</g>
<defs>
<clipPath id="clip0_5017_2727">
<rect width="17.219" height="10.7049" fill="white" />
</clipPath>
</defs>
</svg>
);
};
@@ -10,12 +10,15 @@ import { Img } from "../../../components/Img";
import { useTWLocale } from "../../../evm/providers/locale-provider";
import { StyledDiv } from "../../../design-system/elements";
import { useCustomTheme } from "../../../design-system/CustomThemeProvider";
import { PoweredByThirdweb } from "../PoweredByTW";
import { spacing } from "../../../design-system";
export function StartScreen() {
const {
termsOfServiceUrl,
privacyPolicyUrl,
welcomeScreen: WelcomeScreen,
showThirdwebBranding,
} = useContext(ModalConfigCtx);
const locale = useTWLocale().connectWallet;
@@ -80,9 +83,9 @@ export function StartScreen() {
>
{subtitle}
</Text>
</Container>
<Container py="lg" flex="column" gap="lg">
<Spacer y="lg" />
<Link
target="_blank"
center
@@ -90,13 +93,27 @@ export function StartScreen() {
>
{locale.newToWallets}
</Link>
</Container>
{showTOS && (
<TOS
termsOfServiceUrl={termsOfServiceUrl}
privacyPolicyUrl={privacyPolicyUrl}
/>
)}
<Container py="lg" flex="column" gap="lg">
<div>
{showTOS && (
<TOS
termsOfServiceUrl={termsOfServiceUrl}
privacyPolicyUrl={privacyPolicyUrl}
/>
)}
{showThirdwebBranding !== false && (
<Container
style={{
paddingTop: spacing.xl,
}}
>
<PoweredByThirdweb />
</Container>
)}
</div>
</Container>
</Container>
);
@@ -16,6 +16,11 @@ import { InputSelectionUI } from "../InputSelectionUI";
import { socialIcons } from "./socialIcons";
import type { AuthOption, EmbeddedWalletLoginType } from "./types";
import { useCustomTheme } from "../../../design-system/CustomThemeProvider";
import { useScreenContext } from "../../ConnectWallet/Modal/screen";
import { PoweredByThirdweb } from "../../ConnectWallet/PoweredByTW";
import { useContext } from "react";
import { ModalConfigCtx } from "../../../evm/providers/wallet-ui-states-provider";
import { TOS } from "../../ConnectWallet/Modal/TOS";
export const EmbeddedWalletFormUI = (props: {
onSelect: (loginType: EmbeddedWalletLoginType) => void;
@@ -155,6 +160,9 @@ export const EmbeddedWalletFormUIScreen: React.FC<{
}> = (props) => {
const locale = useTWLocale().wallets.embeddedWallet.emailLoginScreen;
const isCompact = props.modalSize === "compact";
const { initialScreen, screen } = useScreenContext();
const modalConfig = useContext(ModalConfigCtx);
return (
<Container
fullHeight
@@ -165,7 +173,14 @@ export const EmbeddedWalletFormUIScreen: React.FC<{
minHeight: "250px",
}}
>
<ModalHeader onBack={props.onBack} title={locale.title} />
<ModalHeader
onBack={
screen === props.walletConfig && initialScreen === props.walletConfig
? undefined
: props.onBack
}
title={locale.title}
/>
{isCompact ? <Spacer y="xl" /> : null}
<Container
@@ -184,6 +199,20 @@ export const EmbeddedWalletFormUIScreen: React.FC<{
setConnectedWallet={props.setConnectedWallet}
/>
</Container>
{isCompact &&
(modalConfig.showThirdwebBranding !== false ||
modalConfig.termsOfServiceUrl ||
modalConfig.privacyPolicyUrl) && <Spacer y="xl" />}
<Container flex="column" gap="lg">
<TOS
termsOfServiceUrl={modalConfig.termsOfServiceUrl}
privacyPolicyUrl={modalConfig.privacyPolicyUrl}
/>
{modalConfig.showThirdwebBranding !== false && <PoweredByThirdweb />}
</Container>
</Container>
);
};
@@ -82,6 +82,21 @@ export const embeddedWallet = (
const { auth } = finalOptions;
let name = "Email & Socials";
// if only email is enabled, show the name as "Email"
if (
finalOptions?.auth?.options.length === 1 &&
finalOptions.auth.options[0] === "email"
) {
name = "Email";
}
// if email is not enabled, show the name as "Social Login"
if (finalOptions?.auth?.options.indexOf("email") === -1) {
name = "Social Login";
}
return {
category: "socialLogin",
isHeadless: true,
@@ -89,7 +104,7 @@ export const embeddedWallet = (
recommended: finalOptions?.recommended,
meta: {
...EmbeddedWallet.meta,
name: "Email",
name,
iconURL: emailIcon,
},
create(walletOptions: WalletOptions) {
@@ -123,7 +138,7 @@ const EmbeddedWalletSelectionUI: React.FC<
authOptions: AuthOption[];
}
> = (props) => {
const screen = useScreenContext();
const { screen } = useScreenContext();
// show the icon + text if
// wide -
@@ -1,7 +1,6 @@
import { MagicLink, MagicLinkAdditionalOptions } from "@thirdweb-dev/wallets";
import {
ConnectUIProps,
SelectUIProps,
WalletOptions,
useWalletContext,
} from "@thirdweb-dev/react-core";
@@ -15,7 +14,6 @@ import { fontSize, iconSize, spacing } from "../../../design-system";
import { Button, IconButton } from "../../../components/buttons";
import { ToolTip } from "../../../components/Tooltip";
import styled from "@emotion/styled";
import { WalletEntryButton } from "../../ConnectWallet/WalletSelector";
import {
emailAndPhoneIcon,
emailIcon,
@@ -177,7 +175,6 @@ export function magicLink(
}
return {
category: "socialLogin",
id: MagicLink.id,
recommended: config?.recommended,
isHeadless: true,
@@ -215,57 +212,12 @@ export function magicLink(
return <MagicConnectingUI {...props} type={type} />;
},
// select UI only for auth
selectUI:
config.type === "connect"
? undefined
: (props) => {
return (
<MagicSelectUI
{...props}
emailLoginEnabled={emailLoginEnabled}
smsLoginEnabled={smsLoginEnabled}
oauthProviders={oauthProviders}
/>
);
},
isInstalled() {
return false;
},
};
}
const MagicSelectUI = (
props: SelectUIProps<MagicLink> & {
emailLoginEnabled: boolean;
smsLoginEnabled: boolean;
oauthProviders?: OauthProvider[];
},
) => {
const screen = useScreenContext();
if (
props.modalSize === "wide" ||
(screen !== reservedScreens.main && props.modalSize === "compact")
) {
return (
<WalletEntryButton
walletConfig={props.walletConfig}
selectWallet={() => props.onSelect(undefined)}
/>
);
}
return (
<MagicUI
{...props}
emailLogin={props.emailLoginEnabled}
smsLogin={props.smsLoginEnabled}
oauthProviders={props.oauthProviders}
/>
);
};
type OauthProvider = Exclude<
MagicLinkAdditionalOptions["oauthOptions"],
undefined
@@ -305,7 +257,7 @@ const MagicUI: React.FC<{
}
const showInputUI = isEmailEnabled || isSMSEnabled;
const screen = useScreenContext();
const { screen } = useScreenContext();
const showSeparator =
props.modalSize === "wide" ||
(screen !== reservedScreens.main && props.modalSize === "compact");
@@ -13,6 +13,11 @@ import { PaperLoginType } from "./types";
import { Img } from "../../../components/Img";
import { googleIconUri } from "../../ConnectWallet/icons/socialLogins";
import { useCustomTheme } from "../../../design-system/CustomThemeProvider";
import { useContext } from "react";
import { ModalConfigCtx } from "../../../evm/providers/wallet-ui-states-provider";
import { TOS } from "../../ConnectWallet/Modal/TOS";
import { useScreenContext } from "../../ConnectWallet/Modal/screen";
import { PoweredByThirdweb } from "../../ConnectWallet/PoweredByTW";
export const PaperFormUI = (props: {
onSelect: (loginType: PaperLoginType) => void;
@@ -105,6 +110,8 @@ export const PaperFormUIScreen: React.FC<{
}> = (props) => {
const isCompact = props.modalSize === "compact";
const locale = useTWLocale().wallets.paperWallet;
const { initialScreen, screen } = useScreenContext();
const modalConfig = useContext(ModalConfigCtx);
return (
<Container
fullHeight
@@ -115,7 +122,14 @@ export const PaperFormUIScreen: React.FC<{
minHeight: "250px",
}}
>
<ModalHeader onBack={props.onBack} title={locale.signIn} />
<ModalHeader
onBack={
screen === props.walletConfig && initialScreen === props.walletConfig
? undefined
: props.onBack
}
title={locale.signIn}
/>
{isCompact ? <Spacer y="xl" /> : null}
<Container
@@ -133,6 +147,20 @@ export const PaperFormUIScreen: React.FC<{
createWalletInstance={props.createWalletInstance}
/>
</Container>
{isCompact &&
(modalConfig.showThirdwebBranding !== false ||
modalConfig.termsOfServiceUrl ||
modalConfig.privacyPolicyUrl) && <Spacer y="xl" />}
<Container flex="column" gap="lg">
<TOS
termsOfServiceUrl={modalConfig.termsOfServiceUrl}
privacyPolicyUrl={modalConfig.privacyPolicyUrl}
/>
{modalConfig.showThirdwebBranding !== false && <PoweredByThirdweb />}
</Container>
</Container>
);
};
@@ -99,7 +99,7 @@ const PaperSelectionUI: React.FC<
providers?: OAuthProvider[];
}
> = (props) => {
const screen = useScreenContext();
const { screen } = useScreenContext();
// show the icon + text if
// wide -
Binary file not shown.
+38
View File
@@ -1,5 +1,43 @@
# @thirdweb-dev/sdk
## 4.0.35
### Patch Changes
- [#2286](https://github.com/thirdweb-dev/js/pull/2286) [`09de55f1`](https://github.com/thirdweb-dev/js/commit/09de55f13cbd29b4e0eb57808e0d30f9c1b3ba94) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - Expose utilities for creating merkle trees
- [#2291](https://github.com/thirdweb-dev/js/pull/2291) [`53786fc3`](https://github.com/thirdweb-dev/js/commit/53786fc3068568758f033a1c63975c94a8e407f5) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - Perfomance improvements by memoizing extensions
- [#2233](https://github.com/thirdweb-dev/js/pull/2233) [`a86478bf`](https://github.com/thirdweb-dev/js/commit/a86478bf248786423d03f4a20d9dc7c02270c371) Thanks [@IDubuque](https://github.com/IDubuque)! - Added support for engine relayer with custom forwarder
- Updated dependencies [[`23d0e553`](https://github.com/thirdweb-dev/js/commit/23d0e553088321edfe3971950c2e7f27209d9aaf)]:
- @thirdweb-dev/chains@0.1.72
## 4.0.34
### Patch Changes
- Updated dependencies [[`357886e3`](https://github.com/thirdweb-dev/js/commit/357886e31b37aad950731ce8f013a101190ebd07)]:
- @thirdweb-dev/chains@0.1.71
## 4.0.33
### Patch Changes
- [#2256](https://github.com/thirdweb-dev/js/pull/2256) [`1decd52a`](https://github.com/thirdweb-dev/js/commit/1decd52a36c303e540679ac43d206942ea83fc83) Thanks [@jnsdls](https://github.com/jnsdls)! - add gas fee overrides for flag chains
- Updated dependencies [[`1e50caee`](https://github.com/thirdweb-dev/js/commit/1e50caeed1b85f91a6d2efb2e5204f3acf300134)]:
- @thirdweb-dev/chains@0.1.70
## 4.0.32
### Patch Changes
- [#2248](https://github.com/thirdweb-dev/js/pull/2248) [`4f52c296`](https://github.com/thirdweb-dev/js/commit/4f52c2961131636eed323a66568a519246d9f91d) Thanks [@nachoiacovino](https://github.com/nachoiacovino)! - Update link for support
- Updated dependencies [[`374671fd`](https://github.com/thirdweb-dev/js/commit/374671fd9ac97a93263b09c6c0a53cfd129881d7)]:
- @thirdweb-dev/chains@0.1.69
## 4.0.31
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/sdk",
"version": "4.0.31",
"version": "4.0.35",
"description": "The main thirdweb SDK.",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/sdk",
"license": "Apache-2.0",

Some files were not shown because too many files have changed in this diff Show More