Compare commits

..
Author SHA1 Message Date
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>GitHub Action
dccb9ddd0e Version Packages (#2180)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <[email protected]>
2024-01-17 15:20:06 -08:00
Joaquim VergesandGitHub c3b264982d export sig minting classes for docs (#2194) 2024-01-17 23:14:26 +00:00
Manan TankandGitHub 0efd0f9d26 [react] add useSetWalletModalConfig hook (#2193) 2024-01-17 22:49:17 +00:00
Manan TankandGitHub 7af35a0133 only commit generated files in release-artifacts workflow (#2192) 2024-01-17 21:02:34 +00:00
Manan TankandGitHub 9caf201f24 Reorder commands in release-artifacts.yml (#2191) 2024-01-17 19:56:28 +00:00
Manan TankandGitHub ea7da5fb77 Refactor release-artifacts workflow (#2190) 2024-01-17 18:56:57 +00:00
89641e3378 [react] Add switchNetworkBtnTitle prop in ConnectWallet and Web3Button (#1884)
Co-authored-by: Manan Tank <[email protected]>
2024-01-17 16:36:39 +00:00
Manan TankandGitHub dcb6afa148 Fix release-artifacts workflow (#2189) 2024-01-17 15:38:37 +00:00
iketwandGitHub 324330d354 [RN] Exports ConnectEmbed as a standalone component (#2185) 2024-01-17 15:14:19 +00:00
Manan TankandGitHub 056643ad83 Fix error in typedoc and snippets workflows (#2188) 2024-01-17 14:39:43 +00:00
Gerry SaporitoandGitHub e21f7bb171 chore: synced chains with db (#2187) 2024-01-17 03:50:19 +00:00
Manan TankandGitHub 148e6a9166 Add bun setup in release-artifacts workflow to fix setup job (#2184) 2024-01-16 21:53:33 +00:00
YashandGitHub 9a23de2be0 [SDK] ZkSync Sepolia Addresses (#2183) 2024-01-16 21:32:46 +00:00
Manan TankandGitHub c377e868ed Fix Docs and Release workflows (#2179) 2024-01-16 21:21:50 +00:00
iketwandGitHub c4f1309dcd [RN] Reports react-native only (#2182) 2024-01-16 20:34:25 +00:00
Manan TankandGitHub 2e057827e3 [react] Remove unused deps (#2181) 2024-01-16 14:53:44 +00:00
YashandGitHub 9e1455294a Add: Example for useOwnedNFTs hook for queryParams (#2170) 2024-01-16 14:35:30 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Manan Tank
e11e645c74 Bump fuse.js from 6.6.2 to 7.0.0 (#2177)
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Manan Tank <[email protected]>
2024-01-16 14:35:12 +00:00
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
d2322fc404 Version Packages (#2166)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-01-12 13:47:41 -08:00
Manan TankandGitHub e249a56892 [react] Add onConnect prop on ConnectWallet and ConnectEmbed, JSDoc improvements (#2169) 2024-01-12 21:16:42 +00:00
iketwandGitHub 7a74bd9c8a [RN] Upgrade min RN version requirenment to 0.71 and mmkv to 2.11.0 (#2165) 2024-01-12 01:44:22 +00:00
Joaquim VergesandGitHub f6599fdc8b build before snippet generation (#2164) 2024-01-12 00:39:48 +00:00
85 changed files with 783753 additions and 206 deletions
+65
View File
@@ -0,0 +1,65 @@
# On the Version Packages branch
# Generate and Commit the Typedoc JSON files and the Snippets JSON files
name: Commit Release Artifacts
on:
push:
branches:
- changeset-release/main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
jobs:
release-artifacts:
runs-on: ubuntu-latest
steps:
- name: Checkout branch
uses: actions/checkout@v3
# bun setup is required, because pnpm typdoc will run pnpm build and some packages uses bun for build
- name: Setup bun
uses: oven-sh/setup-bun@v1
with:
bun-version: 1.0.21
- name: Install
uses: ./.github/composite-actions/install
- name: Build
run: pnpm build
- name: Typedoc
run: pnpm typedoc
- name: Generate Docs
run: |
cd packages/sdk
pnpm generate-docs
cd ../react-core
pnpm generate-docs
cd ../react
pnpm generate-docs
cd ../..
- name: Generate Snippets
run: pnpm generate-snippets
- name: Commit changes
run: |
git config --local user.email "[email protected]"
git config --local user.name "GitHub Action"
git status
git add packages/react/typedoc/documentation.json
git add packages/react-core/typedoc/documentation.json
git add packages/sdk/typedoc/documentation.json
git add packages/storage/typedoc/documentation.json
git add packages/wallets/typedoc/documentation.json
git add snippets/feature_snippets_react.json
git add snippets/feature_snippets_sdk.json
git add snippets/snippets.json
git commit -m "Commit Release Artifacts [skip ci]"
git push
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+7 -16
View File
@@ -1,3 +1,6 @@
# Using CUSTOM_GITHUB_TOKEN instead of GITHUB_TOKEN is required to trigger workflows in "Version Packages" PR created by changesets/action
# CUSTOM_GITHUB_TOKEN should be a PAT with write access to the repo and has to be created and set as a secret in the repo manually
name: Release Nightly & Stable
on:
@@ -25,6 +28,8 @@ jobs:
uses: actions/checkout@v3
with:
fetch-depth: 0
# Do not use the GITHUB_TOKEN by default
token: ${{ secrets.CUSTOM_GITHUB_TOKEN }}
- name: Setup bun
uses: oven-sh/setup-bun@v1
@@ -46,7 +51,7 @@ jobs:
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.CUSTOM_GITHUB_TOKEN }}
- name: Create @nightly release
if: steps.changesets.outputs.published != 'true'
@@ -56,18 +61,4 @@ jobs:
pnpm release:nightly
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Generate docs
if: steps.changesets.outputs.published == 'true'
run: |
pnpm typedoc
pnpm generate-docs
pnpm generate-snippets
git config --local user.email "[email protected]"
git config --local user.name "GitHub Action"
git add -A
git commit -m "doc automation: update JSON files [skip ci]"
git push
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.CUSTOM_GITHUB_TOKEN }}
-1
View File
@@ -15,7 +15,6 @@
"e2e": "turbo run e2e",
"build": "turbo run build --filter=./packages/*",
"typedoc": "turbo run typedoc",
"generate-docs": "turbo run generate-docs",
"generate-snippets": "node ./scripts/generate-snippets/index.mjs",
"build:release": "turbo run build --force --filter=./packages/*",
"dev": "turbo run dev --no-cache --parallel --continue",
+7
View File
@@ -1,5 +1,12 @@
# @thirdweb-dev/auth
## 4.1.24
### Patch Changes
- Updated dependencies []:
- @thirdweb-dev/wallets@2.4.2
## 4.1.23
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/auth",
"version": "4.1.23",
"version": "4.1.24",
"main": "dist/thirdweb-dev-auth.cjs.js",
"module": "dist/thirdweb-dev-auth.esm.js",
"browser": {
+6
View File
@@ -1,5 +1,11 @@
# @thirdweb-dev/chains
## 0.1.64
### Patch Changes
- [#2187](https://github.com/thirdweb-dev/js/pull/2187) [`e21f7bb1`](https://github.com/thirdweb-dev/js/commit/e21f7bb171334fa3003c954060e60c1ce8c1228f) Thanks [@gerrysaporito](https://github.com/gerrysaporito)! - synced chains package with chains db
## 0.1.63
### Patch Changes
+1 -1
View File
@@ -31,5 +31,5 @@ export default {
"shortName": "Baobab",
"slip44": 1,
"slug": "klaytn-testnet-baobab",
"testnet": false
"testnet": true
} as const satisfies Chain;
+10 -4
View File
@@ -4,9 +4,14 @@ export default {
"chainId": 11297108099,
"explorers": [
{
"name": "Palm Testnet Explorer",
"url": "https://explorer.palm-uat.xyz",
"name": "Chainlens",
"url": "https://testnet.palm.chainlens.com",
"standard": "EIP3091"
},
{
"name": "Dora",
"url": "https://www.ondora.xyz/network/palm-testnet",
"standard": "none"
}
],
"faucets": [],
@@ -16,7 +21,7 @@ export default {
"height": 72,
"format": "svg"
},
"infoURL": "https://palm.io",
"infoURL": "https://palm.network",
"name": "Palm Testnet",
"nativeCurrency": {
"name": "PALM",
@@ -27,7 +32,8 @@ export default {
"rpc": [
"https://palm-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://11297108099.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://palm-testnet.infura.io/v3/${INFURA_API_KEY}"
"https://palm-testnet.infura.io/v3/${INFURA_API_KEY}",
"https://palm-testnet.public.blastapi.io"
],
"shortName": "tpalm",
"slip44": 1,
+10 -4
View File
@@ -4,9 +4,14 @@ export default {
"chainId": 11297108109,
"explorers": [
{
"name": "Palm Explorer",
"url": "https://explorer.palm.io",
"name": "Chainlens",
"url": "https://palm.chainlens.com",
"standard": "EIP3091"
},
{
"name": "Dora",
"url": "https://www.ondora.xyz/network/palm",
"standard": "none"
}
],
"faucets": [],
@@ -16,7 +21,7 @@ export default {
"height": 72,
"format": "svg"
},
"infoURL": "https://palm.io",
"infoURL": "https://palm.network",
"name": "Palm",
"nativeCurrency": {
"name": "PALM",
@@ -27,7 +32,8 @@ export default {
"rpc": [
"https://palm.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://11297108109.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://palm-mainnet.infura.io/v3/${INFURA_API_KEY}"
"https://palm-mainnet.infura.io/v3/${INFURA_API_KEY}",
"https://palm-mainnet.public.blastapi.io"
],
"shortName": "palm",
"slug": "palm",
+37
View File
@@ -0,0 +1,37 @@
import type { Chain } from "../src/types";
export default {
"chain": "Jumbo",
"chainId": 129,
"explorers": [
{
"name": "ProtoJumbo",
"url": "https://protojumbo.jumbochain.org",
"standard": "EIP3091"
}
],
"faucets": [
"https://protojumbo.jumbochain.org/faucet-smart"
],
"features": [
{
"name": "EIP155"
}
],
"infoURL": "https://jumbochain.org",
"name": "ProtoJumbo Testnet",
"nativeCurrency": {
"name": "JNFTC",
"symbol": "JNFTC",
"decimals": 18
},
"networkId": 129,
"rpc": [
"https://protojumbo-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://129.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnode.jumbochain.org"
],
"shortName": "ProtoJumbo",
"slip44": 1,
"slug": "protojumbo-testnet",
"testnet": true
} as const satisfies Chain;
+1 -1
View File
@@ -14,7 +14,7 @@ export default {
"rpc": [
"https://turkey-demo-dev.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1731313.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://blockscout-poa.huabeizhenxuan.com"
"https://devchain-poa.huabeizhenxuan.com"
],
"shortName": "TDD",
"slug": "turkey-demo-dev",
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 18303,
"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": "Zeroone Testnet",
"nativeCurrency": {
"name": "Zeroone Testnet Token",
"symbol": "ZERO",
"decimals": 18
},
"networkId": 18303,
"redFlags": [],
"rpc": [
"https://zeroone-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://18303.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/zeroonetes/testnet/rpc"
],
"shortName": "Zeroone Testnet",
"slug": "zeroone-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": 1838,
"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": "Traderlands Testnet",
"nativeCurrency": {
"name": "Traderlands Testnet Token",
"symbol": "TDL3",
"decimals": 18
},
"networkId": 1838,
"redFlags": [],
"rpc": [
"https://traderlands-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1838.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/traderland/testnet/rpc"
],
"shortName": "Traderlands Testnet",
"slug": "traderlands-testnet",
"testnet": true
} as const satisfies Chain;
+2 -2
View File
@@ -10,7 +10,7 @@ export default {
}
],
"faucets": [],
"infoURL": "https:/bt.io",
"infoURL": "https://bt.io",
"name": "BitTorrent Chain Mainnet",
"nativeCurrency": {
"name": "BitTorrent",
@@ -21,7 +21,7 @@ export default {
"rpc": [
"https://bittorrent-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://199.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.bittorrentchain.io/"
"https://rpc.bt.io"
],
"shortName": "BTT",
"slug": "bittorrent-chain",
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 21758,
"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": "FST 01-16 Multi",
"nativeCurrency": {
"name": "FST 01-16 Multi Token",
"symbol": "RUI",
"decimals": 18
},
"networkId": 21758,
"redFlags": [],
"rpc": [
"https://fst-01-16-multi.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://21758.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "FST 01-16 Multi",
"slug": "fst-01-16-multi",
"testnet": true
} as const satisfies Chain;
+36
View File
@@ -0,0 +1,36 @@
import type { Chain } from "../src/types";
export default {
"chain": "Ancient8",
"chainId": 28122024,
"explorers": [
{
"name": "scan-testnet",
"url": "https://scanv2-testnet.ancient8.gg",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmXLmYMqZ2ZKyaaEjayNjLai4RUo2YmorUDwkk95xmdTUr",
"width": 80,
"height": 80,
"format": "png"
},
"infoURL": "https://ancient8.gg/",
"name": "Ancient8 Testnet",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 28122024,
"rpc": [
"https://ancient8-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://28122024.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpcv2-testnet.ancient8.gg"
],
"shortName": "a8",
"slip44": 1,
"slug": "ancient8-testnet",
"testnet": true
} as const satisfies Chain;
+8 -7
View File
@@ -11,13 +11,13 @@ export default {
],
"faucets": [],
"icon": {
"url": "ipfs://QmSX8sHToRzyFupT8BvPQjVsegRWFYz2mdnLkVnqBFKohY",
"width": 901,
"height": 901,
"url": "ipfs://QmXLmYMqZ2ZKyaaEjayNjLai4RUo2YmorUDwkk95xmdTUr",
"width": 80,
"height": 80,
"format": "png"
},
"infoURL": "https://ancient8.gg/",
"name": "Ancient8 Testnet",
"name": "Ancient8 Testnet (deprecated)",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
@@ -25,12 +25,13 @@ export default {
},
"networkId": 2863311531,
"rpc": [
"https://ancient8-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://ancient8-testnet-deprecated.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://2863311531.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc-testnet.ancient8.gg"
],
"shortName": "a8",
"shortName": "a8old",
"slip44": 1,
"slug": "ancient8-testnet",
"slug": "ancient8-testnet-deprecated",
"status": "deprecated",
"testnet": true
} as const satisfies Chain;
+37
View File
@@ -0,0 +1,37 @@
import type { Chain } from "../src/types";
export default {
"chain": "Evoke",
"chainId": 31414,
"explorers": [
{
"name": "Evoke SmartChain Testnet Explorer",
"url": "https://testnet-explorer.evokescan.org",
"standard": "EIP3091"
}
],
"faucets": [
"https://faucet.evokescan.org"
],
"icon": {
"url": "ipfs://bafkreia5q26knsvxgkwxze7woepvsqat5n2hodokh4ozzphmhexqez5s34",
"width": 100,
"height": 100,
"format": "png"
},
"infoURL": "https://testnet-explorer.evokescan.org",
"name": "Evoke Testnet",
"nativeCurrency": {
"name": "MTHN Testnet",
"symbol": "MTHN",
"decimals": 18
},
"networkId": 31414,
"rpc": [
"https://evoke-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://31414.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet-rpc.evokescan.org"
],
"shortName": "tmthn",
"slug": "evoke-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": 35439,
"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 2401122",
"nativeCurrency": {
"name": "QI M 2401122 Token",
"symbol": "HZU",
"decimals": 18
},
"networkId": 35439,
"redFlags": [],
"rpc": [
"https://qi-m-2401122.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://35439.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/f14d837e-de8f-446d-8222-0077f26e6694"
],
"shortName": "QI M 2401122",
"slug": "qi-m-2401122",
"testnet": true
} as const satisfies Chain;
+42
View File
@@ -0,0 +1,42 @@
import type { Chain } from "../src/types";
export default {
"chain": "Xai Sepolia",
"chainId": 37714555429,
"explorers": [
{
"name": "blockscout",
"url": "https://testnet-explorer-v2.xai-chain.net/",
"standard": "EIP3091"
}
],
"faucets": [],
"features": [],
"icon": {
"url": "ipfs://QmZKFekbHxDkB8gFmmmjWz89SLhwg38GkALmAKo3gn753N/2024-01-10%2012.50.15.jpg",
"width": 512,
"height": 512,
"format": "jpg"
},
"infoURL": "https://xai.games",
"name": "Xai Sepolia",
"nativeCurrency": {
"name": "sXAI",
"symbol": "sXAI",
"decimals": 18
},
"networkId": 37714555429,
"parent": {
"type": "L3",
"chain": "eip155-1",
"bridges": []
},
"redFlags": [],
"rpc": [
"https://xai-sepolia.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://37714555429.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet-v2.xai-chain.net/rpc"
],
"shortName": "xai-sepolia",
"slug": "xai-sepolia",
"testnet": true
} as const satisfies Chain;
+46
View File
@@ -0,0 +1,46 @@
import type { Chain } from "../src/types";
export default {
"chain": "Tangle Testnet",
"chainId": 3799,
"explorers": [
{
"name": "ttntscan",
"url": "https://testnet-explorer.tangle.tools",
"standard": "EIP3091",
"icon": {
"url": "ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM",
"width": 551,
"height": 540,
"format": "png"
}
}
],
"faucets": [
"https://faucet.tangle.tools"
],
"icon": {
"url": "ipfs://QmbxMNBTeQgch8t9GpWdLiS2R3wPYCzVRaX5kCQ4o5QU3w",
"width": 1600,
"height": 1600,
"format": "png"
},
"infoURL": "https://docs.tangle.tools",
"name": "Tangle Testnet",
"nativeCurrency": {
"name": "Testnet Tangle Network Token",
"symbol": "tTNT",
"decimals": 18
},
"networkId": 3799,
"rpc": [
"https://tangle-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://3799.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet-rpc.tangle.tools",
"https://testnet-rpc-archive.tangle.tools",
"wss://testnet-rpc.tangle.tools",
"wss://testnet-rpc-archive.tangle.tools"
],
"shortName": "tTangle",
"slug": "tangle-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": 39098,
"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 20240108",
"nativeCurrency": {
"name": "QI 20240108 Token",
"symbol": "COZ",
"decimals": 18
},
"networkId": 39098,
"redFlags": [],
"rpc": [
"https://qi-20240108.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://39098.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/f575b5b1-8b60-47f3-af28-13f3f3de2ba5"
],
"shortName": "QI 20240108",
"slug": "qi-20240108",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 39747,
"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": "QaUser41Testnet",
"nativeCurrency": {
"name": "QaUser41Testnet Token",
"symbol": "GYF",
"decimals": 18
},
"networkId": 39747,
"redFlags": [],
"rpc": [
"https://qauser41testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://39747.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "QaUser41Testnet",
"slug": "qauser41testnet",
"testnet": true
} as const satisfies Chain;
+38
View File
@@ -0,0 +1,38 @@
import type { Chain } from "../src/types";
export default {
"chain": "DEE",
"chainId": 45510,
"explorers": [
{
"name": "Deelance Mainnet Explorer",
"url": "https://deescan.com",
"standard": "EIP3091"
}
],
"faucets": [
"https://faucet.deelance.com"
],
"icon": {
"url": "ipfs://Qmay2j8biuo5xLJL8NcLtrzubAEHuCWz65cdbKE1pSnGf6",
"width": 500,
"height": 500,
"format": "png"
},
"infoURL": "https://deelance.com",
"name": "Deelance Mainnet",
"nativeCurrency": {
"name": "Deelance",
"symbol": "DEE",
"decimals": 18
},
"networkId": 45510,
"rpc": [
"https://deelance.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://45510.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.deelance.com"
],
"shortName": "dee",
"slug": "deelance",
"testnet": false,
"title": "Deelance Network Mainnet"
} as const satisfies Chain;
+5 -1
View File
@@ -27,7 +27,11 @@ export default {
"rpc": [
"https://areon-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://463.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet-rpc.areon.network"
"https://mainnet-rpc.areon.network",
"https://mainnet-rpc2.areon.network",
"https://mainnet-rpc3.areon.network",
"https://mainnet-rpc4.areon.network",
"https://mainnet-rpc5.areon.network"
],
"shortName": "area",
"slug": "areon-network",
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 56570,
"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": "QaUser4Testnet",
"nativeCurrency": {
"name": "QaUser4Testnet Token",
"symbol": "GYF",
"decimals": 18
},
"networkId": 56570,
"redFlags": [],
"rpc": [
"https://qauser4testnet-qauser4testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://56570.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "QaUser4Testnet",
"slug": "qauser4testnet-qauser4testnet",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 61514,
"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": "QI011624I1",
"nativeCurrency": {
"name": "QI011624I1 Token",
"symbol": "DGQ",
"decimals": 18
},
"networkId": 61514,
"redFlags": [],
"rpc": [
"https://qi011624i1.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://61514.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/e81adde6-3c1b-46ce-8dfe-e7a689f8c7eb"
],
"shortName": "QI011624I1",
"slug": "qi011624i1",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 63367,
"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": "ReSFT 1-16-24",
"nativeCurrency": {
"name": "ReSFT 1-16-24 Token",
"symbol": "ZAF",
"decimals": 18
},
"networkId": 63367,
"redFlags": [],
"rpc": [
"https://resft-1-16-24.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://63367.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "ReSFT 1-16-24",
"slug": "resft-1-16-24",
"testnet": true
} as const satisfies Chain;
+10 -4
View File
@@ -10,8 +10,14 @@ export default {
}
],
"faucets": [],
"icon": {
"url": "ipfs://bafkreieox7v337p3jfhd37dz74mq6mn3uk5i5475rmzpirmyp6ydcfzzqi",
"width": 350,
"height": 350,
"format": "png"
},
"infoURL": "https://kalichain.com",
"name": "Kalichain Mainnet",
"name": "Kalichain Testnet",
"nativeCurrency": {
"name": "kalis",
"symbol": "KALIS",
@@ -19,11 +25,11 @@ export default {
},
"networkId": 653,
"rpc": [
"https://kalichain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://kalichain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://653.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.kalichain.com"
],
"shortName": "kalichain",
"slug": "kalichain",
"testnet": false
"slug": "kalichain-testnet",
"testnet": true
} as const satisfies Chain;
+2 -2
View File
@@ -25,11 +25,11 @@ export default {
},
"networkId": 654,
"rpc": [
"https://kalichain-kalichainmainnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://kalichain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://654.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet.kalichain.com"
],
"shortName": "kalichainMainnet",
"slug": "kalichain-kalichainmainnet",
"slug": "kalichain",
"testnet": false
} as const satisfies Chain;
+41
View File
@@ -0,0 +1,41 @@
import type { Chain } from "../src/types";
export default {
"chain": "PAXB",
"chainId": 6701,
"explorers": [
{
"name": "PAXB Explorer",
"url": "https://scan.paxb.io",
"standard": "EIP3091",
"icon": {
"url": "ipfs://QmSP66CHynXpMYkjV28uLjTR4kjuoJyy92igYYpvLoqHtG",
"width": 300,
"height": 300,
"format": "png"
}
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmSP66CHynXpMYkjV28uLjTR4kjuoJyy92igYYpvLoqHtG",
"width": 300,
"height": 300,
"format": "png"
},
"infoURL": "https://paxb.io/",
"name": "PAXB Mainnet",
"nativeCurrency": {
"name": "PAXB",
"symbol": "PAXB",
"decimals": 18
},
"networkId": 6701,
"rpc": [
"https://paxb.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://6701.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://chain.paxb.io"
],
"shortName": "PAXB",
"slug": "paxb",
"testnet": false
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 68295,
"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": "qr0116y1s",
"nativeCurrency": {
"name": "qr0116y1s Token",
"symbol": "ANG",
"decimals": 18
},
"networkId": 68295,
"redFlags": [],
"rpc": [
"https://qr0116y1s.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://68295.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/qr0116y1s/testnet/rpc"
],
"shortName": "qr0116y1s",
"slug": "qr0116y1s",
"testnet": true
} as const satisfies Chain;
+23
View File
@@ -0,0 +1,23 @@
import type { Chain } from "../src/types";
export default {
"chain": "Berachain",
"chainId": 80085,
"explorers": [],
"faucets": [
"https://artio.faucet.berachain.com/"
],
"features": [],
"infoURL": "https://www.berachain.com/",
"name": "Berachain Artio",
"nativeCurrency": {
"name": "BERA",
"symbol": "BERA",
"decimals": 18
},
"networkId": 80085,
"redFlags": [],
"rpc": [],
"shortName": "bera-artio",
"slug": "berachain-artio",
"testnet": true
} as const satisfies Chain;
+51
View File
@@ -0,0 +1,51 @@
import type { Chain } from "../src/types";
export default {
"chain": "haven1",
"chainId": 810,
"explorers": [
{
"name": "Haven1 Explorer",
"url": "https://testnet-explorer.haven1.org",
"standard": "EIP3091",
"icon": {
"url": "ipfs://QmbSwngVDEiGaw3JzdME7fz5mYBWKbbz1ZerTpimaAxNXR",
"width": 32,
"height": 33,
"format": "svg"
}
}
],
"faucets": [
"https://www.haven1.org/faucet"
],
"features": [
{
"name": "EIP155"
},
{
"name": "EIP1559"
}
],
"icon": {
"url": "ipfs://QmbSwngVDEiGaw3JzdME7fz5mYBWKbbz1ZerTpimaAxNXR",
"width": 32,
"height": 33,
"format": "svg"
},
"infoURL": "https://www.haven1.org",
"name": "Haven1 Testnet",
"nativeCurrency": {
"name": "Haven1",
"symbol": "H1",
"decimals": 18
},
"networkId": 810,
"rpc": [
"https://haven1-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://810.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet-rpc.haven1.org"
],
"shortName": "h1",
"slug": "haven1-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": 82368,
"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": "QR0116S1",
"nativeCurrency": {
"name": "QR0116S1 Token",
"symbol": "USJ",
"decimals": 18
},
"networkId": 82368,
"redFlags": [],
"rpc": [
"https://qr0116s1.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://82368.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/qr0116s1/testnet/rpc"
],
"shortName": "QR0116S1",
"slug": "qr0116s1",
"testnet": true
} as const satisfies Chain;
+35
View File
@@ -0,0 +1,35 @@
import type { Chain } from "../src/types";
export default {
"chain": "MTHN",
"chainId": 9395,
"explorers": [
{
"name": "Evoke SmartChain Explorer",
"url": "https://explorer.evokescan.org",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://bafkreia5q26knsvxgkwxze7woepvsqat5n2hodokh4ozzphmhexqez5s34",
"width": 100,
"height": 100,
"format": "png"
},
"infoURL": "https://explorer.evokescan.org",
"name": "Evoke Mainnet",
"nativeCurrency": {
"name": "MTHN",
"symbol": "MTHN",
"decimals": 18
},
"networkId": 9395,
"rpc": [
"https://evoke.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://9395.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet-rpc.evokescan.org"
],
"shortName": "MTHN",
"slug": "evoke",
"testnet": false
} as const satisfies Chain;
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/chains",
"version": "0.1.63",
"version": "0.1.64",
"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
+10
View File
@@ -1,5 +1,15 @@
# thirdweb
## 0.13.32
### Patch Changes
- Updated dependencies [[`9a23de2b`](https://github.com/thirdweb-dev/js/commit/9a23de2be0c47a7a3702d65041ff654159d8e264), [`e21f7bb1`](https://github.com/thirdweb-dev/js/commit/e21f7bb171334fa3003c954060e60c1ce8c1228f)]:
- @thirdweb-dev/sdk@4.0.27
- @thirdweb-dev/chains@0.1.64
- @thirdweb-dev/wallets@2.4.2
- @thirdweb-dev/auth@4.1.24
## 0.13.31
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "thirdweb",
"main": "dist/cli/index.js",
"version": "0.13.31",
"version": "0.13.32",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/cli",
"author": "thirdweb eng <[email protected]>",
"license": "Apache-2.0",
+12
View File
@@ -1,5 +1,17 @@
# @thirdweb-dev/react-core
## 4.3.2
### Patch Changes
- Updated dependencies [[`9a23de2b`](https://github.com/thirdweb-dev/js/commit/9a23de2be0c47a7a3702d65041ff654159d8e264), [`e21f7bb1`](https://github.com/thirdweb-dev/js/commit/e21f7bb171334fa3003c954060e60c1ce8c1228f)]:
- @thirdweb-dev/sdk@4.0.27
- @thirdweb-dev/chains@0.1.64
- @thirdweb-dev/wallets@2.4.2
- @thirdweb-dev/auth@4.1.24
## 4.3.1
## 4.3.0
### Minor Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/react-core",
"version": "4.3.0",
"version": "4.3.2",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/react-core",
"author": "thirdweb eng <[email protected]>",
"license": "Apache-2.0",
+19 -1
View File
@@ -335,8 +335,26 @@ export function useTotalCirculatingSupply(
* @param ownerWalletAddress -
* The wallet address to get owned tokens for. Likely, you will want to view the connected wallet’s NFTs. use the `useAddress` hook to get this value.
*
* @param queryParams - Query params to pass to the query for pagination
* @param queryParams -
* Paginate the results by providing a `queryParams` object as an argument.
*
* ```jsx
* import { useOwnedNFTs, useContract, useAddress } from "@thirdweb-dev/react";
*
* function App() {
* const { contract } = useContract(contractAddress);
* const address = useAddress();
* const { data, isLoading, error } = useOwnedNFTs(
* contract,
* address
* {
* count: 10, // Limit the number of results
* start: 0, // Start from the nth result (useful for pagination)
* },
* );
* }
* ```
*
* @returns Query result object that includes the list of owned `NFT` objects
*
* @twfeature ERC721Enumerable | ERC1155Enumerable | ERC721Supply
File diff suppressed because it is too large Load Diff
@@ -1,5 +1,9 @@
# @thirdweb-dev/react-native-compat
## 0.6.2
## 0.6.1
## 0.6.0
## 0.5.6
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@thirdweb-dev/react-native-compat",
"description": "Shims for Thirdweb in React Native Projects",
"version": "0.6.0",
"version": "0.6.2",
"author": "thirdweb eng <[email protected]>",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/react-native-compat",
"license": "Apache-2.0",
+42
View File
@@ -1,5 +1,47 @@
# @thirdweb-dev/react-native
## 0.6.2
### Patch Changes
- [#2182](https://github.com/thirdweb-dev/js/pull/2182) [`c4f1309d`](https://github.com/thirdweb-dev/js/commit/c4f1309dcdb599b8b5f014436bce8e63a7f5a9c6) Thanks [@iketw](https://github.com/iketw)! - Reports only react-nativec
- [#2185](https://github.com/thirdweb-dev/js/pull/2185) [`324330d3`](https://github.com/thirdweb-dev/js/commit/324330d3549176542b05be5bede84ebd8f2684ca) Thanks [@iketw](https://github.com/iketw)! - Exports standalone ConnectEmbed UI
Devs can now show the Connect modal UI directly into their apps.
This component will render the wallets defined in our ThirdwebProvider.
```tsx
<ConnectEmbed
modalTitleIconUrl="<my-icon-url>"
modalTitle="Sign In"
theme={"light"}
onConnect={() => {
console.log("wallet connected");
}}
container={{
paddingVertical: "md",
marginHorizontal: "md",
borderRadius: "md",
}}
/>
```
- Updated dependencies [[`9a23de2b`](https://github.com/thirdweb-dev/js/commit/9a23de2be0c47a7a3702d65041ff654159d8e264), [`e21f7bb1`](https://github.com/thirdweb-dev/js/commit/e21f7bb171334fa3003c954060e60c1ce8c1228f)]:
- @thirdweb-dev/[email protected]
- @thirdweb-dev/[email protected]
- @thirdweb-dev/[email protected]
- @thirdweb-dev/[email protected]
## 0.6.1
### Patch Changes
- [#2165](https://github.com/thirdweb-dev/js/pull/2165) [`7a74bd9c`](https://github.com/thirdweb-dev/js/commit/7a74bd9c8a2be42ea2827a3e480f8ac0d60bf1d5) Thanks [@iketw](https://github.com/iketw)! - Upgrade min RN version requirenment to 0.71 and mmkv to 2.11.0
- Updated dependencies []:
- @thirdweb-dev/[email protected]
## 0.6.0
### Minor Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/react-native",
"version": "0.6.0",
"version": "0.6.2",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/react-native",
"author": "thirdweb eng <[email protected]>",
"license": "Apache-2.0",
@@ -78,7 +78,6 @@
"react-native": "^0.71.11",
"react-native-camera": "^4.2.1",
"react-native-device-info": "10.6.0",
"react-native-mmkv": "2.5.1",
"react-native-safe-area-context": "4.7.4",
"react-native-webview": "12.1.0",
"rimraf": "^3.0.2",
@@ -100,7 +99,8 @@
"ethers": ">=5.5.1 <6",
"expo": ">=47 <50",
"react": ">=18.0.0",
"react-native": ">=0.70.0"
"react-native": ">=0.71.0",
"react-native-mmkv": ">=2.11.0"
},
"engines": {
"node": ">=18"
@@ -5,7 +5,6 @@ import {
TW_UPLOAD_SERVER_URL,
} from "@thirdweb-dev/storage";
import { IpfsUploaderOptions, UploadDataValue } from "./types";
import { Platform } from "react-native";
import { appBundleId, packageVersion } from "../../evm/utils/version";
import { BUNDLE_ID_HEADER } from "../../evm/constants/headers";
@@ -40,7 +39,7 @@ export class IpfsUploader implements IStorageUploader<IpfsUploadBatchOptions> {
};
const { version, name: packageName } = packageVersion;
const platform = `react-native-${Platform.OS}`;
const platform = "react-native";
if ("uri" in data[0] && "type" in data[0] && "name" in data[0]) {
// then it's an array of files
@@ -23,7 +23,7 @@ export type ChooseWalletProps = {
headerText?: ReactNode | string;
subHeaderText?: ReactNode | string;
onChooseWallet: (wallet: WalletConfig<any>, data?: any) => void;
onClose: () => void;
onClose?: () => void;
wallets: WalletConfig<any>[];
excludeWalletIds?: string[];
modalTitleIconUrl?: string;
@@ -13,32 +13,125 @@ import { useColorScheme } from "react-native";
import {
useGlobalTheme,
useLocale,
useModalState,
useUIContext,
} from "../../providers/ui-context-provider";
import {
CLOSE_MODAL_STATE,
ConnectWalletFlowModal,
} from "../../utils/modalTypes";
import { CLOSE_MODAL_STATE } from "../../utils/modalTypes";
import Box from "../base/Box";
import { ThemeProvider } from "../../styles/ThemeProvider";
import { Theme } from "../../styles/theme";
export const ConnectWalletFlow = () => {
export type ConnectEmbedProps = {
/**
* Set a custom title for the Connect Wallet modal
*
* The default is `"Choose your wallet"`
*/
modalTitle?: string;
/**
* Replace the thirdweb icon next to modalTitle and set your own iconUrl
*
* Set to empty string to hide the icon
*/
modalTitleIconUrl?: string;
/**
* theme for the ConnectEmbed
*
* If a theme is set on the [`ThirdWebProvider`](https://portal.thirdweb.com/react/v4/ThirdwebProvider) component, it will be used as the default theme for all thirdweb components, else the default will be "dark"
*
* theme can be set to either "dark" or "light" or a custom theme object.
*
* You can also import `lightTheme` or `darkTheme` functions from `@thirdweb-dev/react-native` to use the default themes as base and overrides parts of it.
*
* @example
* ```ts
* import { lightTheme } from "@thirdweb-dev/react-native";
* const customTheme = lightTheme({
* colors: {
* accentButtonTextColor: 'red'
* }
* })
* ```
*/
theme?: "dark" | "light" | Theme;
/**
* If provided, Embed will show a Terms of Service message at the bottom with below link
*/
termsOfServiceUrl?: string;
/**
* If provided, Embed will show a Privacy Policy message at the bottom with below link
*/
privacyPolicyUrl?: string;
/**
* Callback to be called on successful connection of wallet
*
* ```tsx
* <ConnectEmbed
* onConnect={() => {
* console.log("wallet connected")
* }}
* />
* ```
*
* 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` prop instead
*
* ```tsx
* <ConnectEmbed
* auth={{
* onLogin: () => {
* console.log("wallet connected and signed in")
* }
* }}
* />
* ```
*
*/
onConnect?: () => void;
/**
* Props to be passed to the Embed container component to control padding, margin, etc.
*
* ```tsx
* <ConnectEmbed container={{
* paddingVertical: 'md',
* marginHorizontal: 'md',
* borderRadius: 'md',
* }} />
* ```
*/
container?: React.ComponentProps<typeof Box>;
};
export const ConnectEmbed = (props: ConnectEmbedProps) => {
return <ConnectEmbedUI {...props} isModal={false} />;
};
export const ConnectEmbedUI = ({
modalTitle,
modalTitleIconUrl,
privacyPolicyUrl,
termsOfServiceUrl,
isModal = true,
theme,
container: container,
onConnect,
}: ConnectEmbedProps & { isModal: boolean }) => {
const l = useLocale();
const { modalState, setModalState } = useModalState();
const {
modalTitle,
modalTitleIconUrl,
privacyPolicyUrl,
termsOfServiceUrl,
walletConfig,
} = (modalState as ConnectWalletFlowModal).data;
const supportedWallets = useWallets();
const setModalState = useUIContext().setModalState;
const walletConfig =
supportedWallets.length === 1 ? supportedWallets[0] : undefined;
const [modalVisible, setModalVisible] = useState(false);
const [activeWallet, setActiveWallet] = useState<WalletConfig | undefined>();
const [isConnecting, setIsConnecting] = useState(false);
const [selectionData, setSelectionData] = useState<any>();
const supportedWallets = useWallets();
const theme = useColorScheme();
const colorTheme = useColorScheme();
const appTheme = useGlobalTheme();
const setTheme = useUIContext().setTheme;
const address = useAddress();
const {
activeWallet: connectedWallet,
@@ -65,13 +158,14 @@ export const ConnectWalletFlow = () => {
setIsConnecting(true);
try {
await connect(wallet, { ...data });
onConnect?.();
} catch (error) {
console.error("Error connecting to the wallet", error);
} finally {
onClose(true);
}
},
[connect, onClose],
[connect, onClose, onConnect],
);
const onChooseWallet = useCallback(
@@ -87,6 +181,12 @@ export const ConnectWalletFlow = () => {
[connectActiveWallet],
);
useEffect(() => {
if (theme) {
setTheme(theme);
}
}, [setTheme, theme]);
useEffect(() => {
// case when only one wallet is passed in supportedWallets
if (walletConfig) {
@@ -128,7 +228,7 @@ export const ConnectWalletFlow = () => {
return (
<activeWallet.connectUI
modalSize="compact"
theme={theme || "dark"}
theme={colorTheme || "dark"}
goBack={onBackPress}
connected={handleClose}
isOpen={modalVisible}
@@ -164,12 +264,12 @@ export const ConnectWalletFlow = () => {
setConnectedWallet,
setConnectionStatus,
supportedWallets,
theme,
colorTheme,
]);
return (
<ThemeProvider theme={appTheme}>
<Box flexDirection="column">
<Box flexDirection="column" backgroundColor="background" {...container}>
{activeWallet ? (
isConnecting ? (
<ConnectingWallet
@@ -182,7 +282,7 @@ export const ConnectWalletFlow = () => {
) : undefined
}
wallet={activeWallet}
onClose={onClose}
onClose={isModal ? onClose : undefined}
onBackPress={onBackPress}
/>
) : (
@@ -196,7 +296,7 @@ export const ConnectWalletFlow = () => {
termsOfServiceUrl={termsOfServiceUrl}
wallets={supportedWallets}
onChooseWallet={onChooseWallet}
onClose={onClose}
onClose={isModal ? onClose : undefined}
/>
)}
</Box>
@@ -1,6 +1,6 @@
import { ActivityIndicator, StyleSheet } from "react-native";
import { BaseButton, Text } from "../base";
import { useConnectionStatus, useWallets } from "@thirdweb-dev/react-core";
import { useConnectionStatus } from "@thirdweb-dev/react-core";
import { useState, useEffect } from "react";
import {
useGlobalTheme,
@@ -53,7 +53,6 @@ export const ConnectWalletButton = ({
const connectionStatus = useConnectionStatus();
const isWalletConnecting = connectionStatus === "connecting";
const supportedWallets = useWallets();
const [showButtonSpinner, setShowButtonSpinner] = useState(false);
const { setModalState } = useModalState();
@@ -88,8 +87,6 @@ export const ConnectWalletButton = ({
modalTitleIconUrl,
termsOfServiceUrl,
privacyPolicyUrl,
walletConfig:
supportedWallets.length === 1 ? supportedWallets[0] : undefined,
},
caller: "ConnectWallet",
});
@@ -11,7 +11,7 @@ export type ConnectingWalletProps = {
subHeaderText?: string;
footer?: ReactNode;
content?: ReactNode;
onClose: () => void;
onClose?: () => void;
onBackPress: () => void;
wallet: WalletConfig<any>;
};
@@ -7,7 +7,7 @@ import Text from "../../base/Text";
import { FlexAlignType, StyleSheet, View } from "react-native";
interface ConnectWalletHeaderProps {
onClose: () => void;
onClose?: () => void;
onBackPress?: () => void;
middleContent?: React.ReactNode;
headerText?: string;
@@ -46,13 +46,17 @@ export const ConnectWalletHeader = ({
<View />
)}
{middleContent ? middleContent : null}
<Icon
type="close"
width={14}
height={14}
onPress={onClose}
color={theme.colors.iconPrimary}
/>
{onClose ? (
<Icon
type="close"
width={14}
height={14}
onPress={onClose}
color={theme.colors.iconPrimary}
/>
) : (
<View />
)}
</View>
<View style={{ ...styles.headerContainer, alignItems: alignHeader }}>
{headerText ? (
@@ -2,7 +2,7 @@ import {
useGlobalTheme,
useModalState,
} from "../providers/ui-context-provider";
import { ConnectWalletFlow } from "./ConnectWalletFlow/ConnectWalletFlow";
import { ConnectEmbedUI } from "./ConnectWalletFlow/ConnectEmbed";
import { Dimensions, StyleSheet, View } from "react-native";
import { useMemo } from "react";
import { ThemeProvider } from "../styles/ThemeProvider";
@@ -10,6 +10,7 @@ import { SessionRequestModal } from "./ConnectWalletDetails/SessionRequestModal"
import { SessionProposalModal } from "./ConnectWalletDetails/SessionProposalModal";
import { TWModal } from "./base/modal/TWModal";
import Box from "./base/Box";
import { ConnectWalletFlowModal } from "../utils/modalTypes";
const MODAL_HEIGHT = Dimensions.get("window").height * 0.7;
const DEVICE_WIDTH = Dimensions.get("window").width;
@@ -23,7 +24,12 @@ export const MainModal = () => {
const view = useMemo(() => {
switch (modalState?.view) {
case "ConnectWalletFlow":
return <ConnectWalletFlow />;
return (
<ConnectEmbedUI
{...(modalState as ConnectWalletFlowModal).data}
isModal={true}
/>
);
case "WalletConnectSessionRequestModal":
return <SessionRequestModal />;
case "WalletConnectSessionProposalModal":
@@ -31,7 +37,7 @@ export const MainModal = () => {
default:
return null;
}
}, [modalState.view]);
}, [modalState]);
return (
<ThemeProvider theme={theme}>
@@ -43,7 +43,6 @@ export const WalletButton = ({
paddingHorizontal="md"
paddingVertical="sm"
borderRadius="sm"
backgroundColor="background"
onPress={onPress}
{...props}
>
+6
View File
@@ -38,6 +38,12 @@ export {
ConnectWallet,
type ConnectWalletProps,
} from "./components/ConnectWallet";
export {
ConnectEmbed,
type ConnectEmbedProps,
} from "./components/ConnectWalletFlow/ConnectEmbed";
export {
Web3Button,
type Web3ButtonProps,
@@ -100,7 +100,7 @@ export const useGlobalTheme = (theme?: ThemeProviderProps["theme"]): Theme => {
const resultTheme = useMemo(() => {
const resp = getThemeObj(context.theme) || getThemeObj(theme) || appTheme;
return resp;
}, [theme, context, appTheme]);
}, [theme, context.theme, appTheme]);
return resultTheme;
};
@@ -1,4 +1,3 @@
import { WalletConfig } from "@thirdweb-dev/react-core";
import { WCProposal, WCRequest } from "@thirdweb-dev/wallets";
export const CLOSE_MODAL_STATE = (caller: Caller): ModalState => {
@@ -50,17 +49,16 @@ export type ClosedModal = {
} & SheetModal;
// connect wallet flow
export type ConnectWalletFlowData = {
export type ConnectEmbedData = {
modalTitle?: string;
modalTitleIconUrl?: string;
termsOfServiceUrl?: string;
privacyPolicyUrl?: string;
walletConfig?: WalletConfig;
};
export type ConnectWalletFlowModal = {
view: "ConnectWalletFlow";
data: ConnectWalletFlowData;
data: ConnectEmbedData;
} & SheetModal;
// wallet details
+81
View File
@@ -1,5 +1,86 @@
# @thirdweb-dev/react
## 4.3.2
### Patch Changes
- [#1884](https://github.com/thirdweb-dev/js/pull/1884) [`89641e33`](https://github.com/thirdweb-dev/js/commit/89641e33784ff74c32fcbb51db72b67065ba85cb) Thanks [@tommaay](https://github.com/tommaay)! - Add prop `switchNetworkBtnTitle` to `ConnectWallet` and `Web3Button` components to allow changing the "Switch Network" label on the button which is displayed when user needs to switch the network in the connected wallet.
```tsx
<ConnectWallet switchNetworkBtnTitle="Switch Chain" />
```
```tsx
<Web3Button
switchNetworkBtnTitle="Switch Chain"
contractAddress="0x..."
action={someAction}
/>
```
- [#2193](https://github.com/thirdweb-dev/js/pull/2193) [`0efd0f9d`](https://github.com/thirdweb-dev/js/commit/0efd0f9d2626d1cb8d7a49f26b9beaa4c27bca15) Thanks [@MananTank](https://github.com/MananTank)! - add `useSetWalletModalConfig` hook to customize the ConnectWallet Modal to programmatically open the modal without using the `ConnectWallet` component along with `useSetIsWalletModalOpen`
```tsx
import {
useSetWalletModalConfig,
useSetIsWalletModalOpen,
} from "@thirdweb-dev/react";
function Example() {
const setWalletModalConfig = useSetWalletModalConfig();
const setIsWalletModalOpen = useSetIsWalletModalOpen();
return (
<button
onClick={() => {
// customize the modal
setWalletModalConfig({
modalSize: "wide",
theme: "light",
});
// open the modal
setIsWalletModalOpen(true);
}}
>
open connect modal
</button>
);
}
```
- [#2177](https://github.com/thirdweb-dev/js/pull/2177) [`e11e645c`](https://github.com/thirdweb-dev/js/commit/e11e645c7407a37545e78bbf8976ecc31e40bee7) Thanks [@dependabot](https://github.com/apps/dependabot)! - Bump fuse.js from 6.6.2 to 7.0.0
- Updated dependencies [[`9a23de2b`](https://github.com/thirdweb-dev/js/commit/9a23de2be0c47a7a3702d65041ff654159d8e264), [`e21f7bb1`](https://github.com/thirdweb-dev/js/commit/e21f7bb171334fa3003c954060e60c1ce8c1228f)]:
- @thirdweb-dev/sdk@4.0.27
- @thirdweb-dev/chains@0.1.64
- @thirdweb-dev/react-core@4.3.2
- @thirdweb-dev/wallets@2.4.2
## 4.3.1
### Patch Changes
- [#2169](https://github.com/thirdweb-dev/js/pull/2169) [`e249a568`](https://github.com/thirdweb-dev/js/commit/e249a56892f04df1313b5cbd40d21a0bd5ac5f4e) Thanks [@MananTank](https://github.com/MananTank)! - Add `onConnect` prop to `ConnectWallet` and `ConnectEmbed` components.
```tsx
<ConnectWallet
onConnect={() => {
console.log("connected");
}}
/>
```
```tsx
<ConnectEmbed
onConnect={() => {
console.log("connected");
}}
/>
```
- Updated dependencies []:
- @thirdweb-dev/react-core@4.3.1
## 4.3.0
### Minor Changes
+2 -4
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/react",
"version": "4.3.0",
"version": "4.3.2",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/react",
"author": "thirdweb eng <[email protected]>",
"license": "Apache-2.0",
@@ -84,7 +84,6 @@
"@thirdweb-dev/auth": "workspace:*",
"@thirdweb-dev/sdk": "workspace:*",
"@thirdweb-dev/tsconfig": "workspace:*",
"@types/color": "^3.0.3",
"@types/qrcode": "^1.5.2",
"@types/react": "^18.2.17",
"@types/react-dom": "^18.2.7",
@@ -121,7 +120,6 @@
"@radix-ui/react-popover": "^1.0.6",
"@radix-ui/react-tabs": "^1.0.4",
"@radix-ui/react-tooltip": "^1.0.6",
"@react-icons/all-files": "^4.1.0",
"@tanstack/react-query": "^4.33.0",
"@thirdweb-dev/chains": "workspace:*",
"@thirdweb-dev/payments": "workspace:*",
@@ -131,7 +129,7 @@
"buffer": "^6.0.3",
"copy-to-clipboard": "^3.3.2",
"detect-browser": "^5.3.0",
"fuse.js": "^6.6.2",
"fuse.js": "^7.0.0",
"qrcode": "^1.5.3",
"tiny-invariant": "^1.2.0"
},
@@ -186,6 +186,11 @@ export interface Web3ButtonProps<TActionFn extends ActionFn> {
*/
welcomeScreen?: WelcomeScreen;
};
/**
* Set a custom label for the "Switch Network" button
*/
switchNetworkBtnTitle?: string;
}
/**
@@ -255,6 +260,8 @@ export const Web3Button = <TAction extends ActionFn>(
const theme = props.theme || contextTheme || "dark";
const locale = useTWLocale();
const switchNetworkLabel =
props.switchNetworkBtnTitle || locale.connectWallet.switchNetwork;
const [confirmStatus, setConfirmStatus] = useState<"idle" | "waiting">(
"idle",
@@ -337,7 +344,7 @@ export const Web3Button = <TAction extends ActionFn>(
{confirmStatus === "waiting" ? (
<Spinner size="sm" color={"primaryButtonText"} />
) : (
locale.connectWallet.switchNetwork
switchNetworkLabel
)}
</Button>
);
+2
View File
@@ -1,6 +1,8 @@
export {
useIsWalletModalOpen,
useSetIsWalletModalOpen,
type ModalConfigOptions,
useSetWalletModalConfig,
} from "./providers/wallet-ui-states-provider";
export { useSafe } from "./connectors/gnosis";
@@ -21,6 +21,7 @@ export type ModalConfig = {
onLogout?: () => void;
};
isEmbed?: boolean;
onConnect?: () => void;
};
const WalletModalOpen = /* @__PURE__ */ createContext(false);
@@ -54,6 +55,7 @@ export const WalletUIStatesProvider = (
onLogin?: (token: string) => void;
onLogout?: () => void;
};
onConnect?: () => void;
}>,
) => {
const [isWalletModalOpen, setIsWalletModalOpen] = useState(false);
@@ -71,6 +73,7 @@ export const WalletUIStatesProvider = (
titleIconUrl: props.titleIconUrl,
isEmbed: props.isEmbed,
auth: props.auth,
onConnect: props.onConnect,
});
return (
@@ -136,3 +139,288 @@ export const useSetIsWalletModalOpen = () => {
}
return context;
};
export type ModalConfigOptions = {
/**
* Title of the Modal
*/
title?: string;
/**
* Set the theme for the Modal
*
* By default it is set to "dark" if `theme` is not set on [`ThirdwebProvider`](https://portal.thirdweb.com/react/v4/ThirdwebProvider)
* If a `theme` is set on [`ThirdwebProvider`](https://portal.thirdweb.com/react/v4/ThirdwebProvider) then that theme will be used by default
*
* theme can be set to either `"dark"` or `"light"` or a custom theme object. You can also import `lightTheme` or `darkTheme` functions from `@thirdweb-dev/react` to use the default themes as base and overrides parts of it.
*
* ```ts
* import { lightTheme } from "@thirdweb-dev/react";
* const customTheme = lightTheme({
* colors: {
* modalBg: 'red'
* }
* })
* ```
*/
theme?: "light" | "dark" | Theme;
/**
* Set the size of the modal - `compact` or `wide` on desktop
*
* Modal size is always `compact` on mobile
*
* By default it is `"wide"` for desktop.
*/
modalSize: "wide" | "compact";
/**
* URL of the "terms of service" page
*
* If provided, Modal will show a Terms of Service message at the bottom with below link
*/
termsOfServiceUrl?: string;
/**
* URL of the "privacy policy" page
*
* If provided, Modal will show a Privacy Policy message at the bottom with below link
*/
privacyPolicyUrl?: string;
/**
* Customize the welcome screen. This is only applicable when `modalSize` is set to "wide".
* On "wide" Modal size, a welcome screen is shown on the right side of the modal.
*
* This screen can be customized in two ways
*
* #### 1. Customize Metadata and Image
*
* ```tsx
* const welcomeScreen = {
* title: "your title",
* subtitle: "your subtitle",
* img: {
* src: "https://your-image-url.png",
* width: 300,
* height: 50,
* },
* }
* ```
*
* #### 2. Render Custom Component
*
* ```tsx
* const welcomeScreen = () => {
* return <YourCustomComponent />
* }
* ```
*/
welcomeScreen?: WelcomeScreen;
/**
* Replace the thirdweb icon next to modalTitle and set your own iconUrl
*/
titleIconUrl?: string;
/**
* The object contains the following properties to customize the authentication
* - `loginOptional` - specify whether signing in is optional or not. By default it is `false` ( Sign in is required ) if `authConfig` is set on [`ThirdwebProvider`](https://portal.thirdweb.com/react/v4/ThirdwebProvider)
* - `onLogin` - Callback to be called after user signs in with their wallet
* - `onLogout` - Callback to be called after user signs out
*/
auth?: {
loginOptional?: boolean;
onLogin?: (token: string) => void;
onLogout?: () => void;
};
/**
* Callback to be called on successful connection of wallet
*
* 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;
};
/**
* Set Modal config for the [`ConnectWallet`](https://portal.thirdweb.com/react/v4/components/ConnectWallet) Modal.
* This is useful if you want to open the Modal using the `useSetIsWalletModalOpen` hook and want to configure the Modal before opening it.
*
* @example
* ```tsx
* function Example() {
* const setModalConfig = useSetWalletModalConfig();
* const setIsWalletModalOpen = useSetIsWalletModalOpen();
*
* function openModal() {
* setIsWalletModalOpen(true);
* setModalConfig({
* modalSize: "compact",
* theme: "light"
* })
* }
*
* return <button onClick={openModal}> Open Modal </button>
* }
* ```
*
* @returns Function to set the Modal config
*
* The function takes an object with the following properties
*
* ### title
* Title of the Modal
*
* ### theme
* theme to use in Modal
*
* By default it is set to "dark" if `theme` is not set on [`ThirdwebProvider`](https://portal.thirdweb.com/react/v4/ThirdwebProvider)
* If a `theme` is set on [`ThirdwebProvider`](https://portal.thirdweb.com/react/v4/ThirdwebProvider) then that theme will be used by default
*
* theme can be set to either `"dark"` or `"light"` or a custom theme object. You can also import `lightTheme` or `darkTheme` functions from `@thirdweb-dev/react` to use the default themes as base and overrides parts of it.
*
* ```ts
* import { lightTheme } from "@thirdweb-dev/react";
* const customTheme = lightTheme({
* colors: {
* modalBg: 'red'
* }
* })
* ```
*
* ### modalSize
* Set the size of the modal - `compact` or `wide` on desktop
*
* Modal size is always `compact` on mobile
*
* By default it is `"wide"` for desktop.
*
* ### termsOfServiceUrl
* URL of the "terms of service" page
*
* If provided, Modal will show a Terms of Service message at the bottom with below link
*
* ### privacyPolicyUrl
* URL of the "privacy policy" page
*
* If provided, Modal will show a Privacy Policy message at the bottom with below link
*
* ### welcomeScreen
* Customize the welcome screen. This is only applicable when `modalSize` is set to "wide".
* On "wide" Modal size, a welcome screen is shown on the right side of the modal.
*
* This screen can be customized in two ways
*
* #### 1. Customize Metadata and Image
*
* ```tsx
* function Example() {
* const setModalConfig = useSetWalletModalConfig();
* const setIsWalletModalOpen = useSetIsWalletModalOpen();
*
* function openModal() {
* setIsWalletModalOpen(true);
* setModalConfig({
* welcomeScreen: {
* title: "your title",
* subtitle: "your subtitle",
* img: {
* src: "https://your-image-url.png",
* width: 300,
* height: 50,
* }
* }
* })
* }
*
* return <button onClick={openModal}> Open Modal </button>
* }
* ```
*
* #### 2. Render Custom Component
*
* ```tsx
* function Example() {
* const setModalConfig = useSetWalletModalConfig();
* const setIsWalletModalOpen = useSetIsWalletModalOpen();
*
* function openModal() {
* setIsWalletModalOpen(true);
* setModalConfig({
* welcomeScreen() {
* return <YourCustomComponent />
* }
* })
* }
*
* return <button onClick={openModal}> Open Modal </button>
* }
* ```
*
* ### titleIconUrl
* Replace the thirdweb icon next to modalTitle and set your own iconUrl
*
* ### auth
* The object contains the following properties to customize the authentication
* - `loginOptional` - specify whether signing in is optional or not. By default it is `false` ( Sign in is required ) if `authConfig` is set on [`ThirdwebProvider`](https://portal.thirdweb.com/react/v4/ThirdwebProvider)
* - `onLogin` - Callback to be called after user signs in with their wallet
* - `onLogout` - Callback to be called after user signs out
*
* ### onConnect
* Callback to be called on successful connection of wallet
*
*
* ```tsx
* function Example() {
* const setModalConfig = useSetWalletModalConfig();
* const setIsWalletModalOpen = useSetIsWalletModalOpen();
*
* function openModal() {
* setIsWalletModalOpen(true);
* setModalConfig({
* onConnect() {
* console.log("wallet connected")
* }
* })
* }
*
* return <button onClick={openModal}> Open Modal </button>
* }
* ```
*
* 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` prop instead
*
* ```tsx
* function Example() {
* const setModalConfig = useSetWalletModalConfig();
* const setIsWalletModalOpen = useSetIsWalletModalOpen();
*
* function openModal() {
* setIsWalletModalOpen(true);
* setModalConfig({
* auth: {
* onLogin() {
* console.log("wallet connected and signed in")
* }
* }
* })
* }
*
* return <button onClick={openModal}> Open Modal </button>
* }
* ```
*/
export const useSetWalletModalConfig = () => {
const context = useContext(SetModalConfigCtx);
const _isMobile = isMobile();
const locale = useTWLocale();
if (context === undefined) {
throw new Error(
"useSetWalletModalConfig must be used within a ThirdwebProvider",
);
}
return (value: ModalConfigOptions) => {
const { title, theme, modalSize, ...rest } = value;
return context({
title: title || locale.connectWallet.defaultModalTitle,
data: undefined,
theme: theme || "dark",
modalSize: (_isMobile ? "compact" : modalSize) || "wide",
...rest,
});
};
};
@@ -44,21 +44,23 @@ interface CheckoutWithCardProps {
locale?: Locale;
}
export const CheckoutWithCard = ({
clientId,
sdkClientSecret,
appName,
options = {
...DEFAULT_BRAND_OPTIONS,
},
onPaymentSuccess,
onReview,
onError,
onBeforeModalOpen,
onPriceUpdate,
locale,
configs,
}: CheckoutWithCardProps): React.ReactElement => {
export function CheckoutWithCard(props: CheckoutWithCardProps) {
const {
clientId,
sdkClientSecret,
appName,
options = {
...DEFAULT_BRAND_OPTIONS,
},
onPaymentSuccess,
onReview,
onError,
onBeforeModalOpen,
onPriceUpdate,
locale,
configs,
} = props;
const { appName: appNameContext } = usePaymentsSDKContext();
const [isCardDetailIframeLoading, setIsCardDetailIframeLoading] =
useState<boolean>(true);
@@ -113,15 +115,13 @@ export const CheckoutWithCard = ({
]);
return (
<>
<div
className={iframeContainer}
ref={CheckoutWithCardIframeContainerRef}
// Label the package version.
data-thirdweb-sdk-version={`${packageJson.name}@${packageJson.version}`}
>
{isCardDetailIframeLoading && <SpinnerWrapper />}
</div>
</>
<div
className={iframeContainer}
ref={CheckoutWithCardIframeContainerRef}
// Label the package version.
data-thirdweb-sdk-version={`${packageJson.name}@${packageJson.version}`}
>
{isCardDetailIframeLoading && <SpinnerWrapper />}
</div>
);
};
}
@@ -79,6 +79,11 @@ export type ConnectWalletProps = {
*/
btnTitle?: string;
/**
* Set a custom label for the "Switch Network" button
*/
switchNetworkBtnTitle?: string;
/**
* Change the title of ConnectWallet Modal
*
@@ -137,7 +142,7 @@ export type ConnectWalletProps = {
/**
* specify whether signing in is optional or not.
*
* By default it is `true` if `authConfig` is set on [`ThirdwebProvider`](https://portal.thirdweb.com/react/v4/ThirdwebProvider)
* By default it is `false` ( sign in required ) if `authConfig` is set on [`ThirdwebProvider`](https://portal.thirdweb.com/react/v4/ThirdwebProvider)
*/
loginOptional?: boolean;
/**
@@ -196,6 +201,8 @@ export type ConnectWalletProps = {
modalSize?: "compact" | "wide";
/**
* URL of the "terms of service" page
*
* If provided, Modal will show a Terms of Service message at the bottom with below link
*
* @example
@@ -206,6 +213,8 @@ export type ConnectWalletProps = {
termsOfServiceUrl?: string;
/**
* URL of the "privacy policy" page
*
* If provided, Modal will show a Privacy Policy message at the bottom with below link
*
* @example
@@ -318,6 +327,32 @@ export type ConnectWalletProps = {
* ```
*/
hideDisconnect?: boolean;
/**
* Callback to be called on successful connection of wallet
*
* ```tsx
* <ConnectWallet
* onConnect={() => {
* console.log("wallet connected")
* }}
* />
* ```
*
* 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` prop instead
*
* ```tsx
* <ConnectWallet
* auth={{
* onLogin: () => {
* console.log("wallet connected and signed in")
* }
* }}
* />
* ```
*
*/
onConnect?: () => void;
};
const TW_CONNECT_WALLET = "tw-connect-wallet";
@@ -365,7 +400,7 @@ const TW_CONNECT_WALLET = "tw-connect-wallet";
*
* ### auth (optional)
* The object contains the following properties to customize the authentication
* - `loginOptional` - specify whether signing in is optional or not. By default it is `true` if `authConfig` is set on [`ThirdwebProvider`](https://portal.thirdweb.com/react/v4/ThirdwebProvider)
* - `loginOptional` - specify whether signing in is optional or not. By default it is `false` ( Sign in is required ) if `authConfig` is set on [`ThirdwebProvider`](https://portal.thirdweb.com/react/v4/ThirdwebProvider)
* - `onLogin` - Callback to be called after user signs in with their wallet
* - `onLogout` - Callback to be called after user signs out
*
@@ -671,6 +706,7 @@ export function ConnectWallet(props: ConnectWalletProps) {
welcomeScreen: props.welcomeScreen,
titleIconUrl: props.modalTitleIconUrl,
auth: props.auth,
onConnect: props.onConnect,
});
setIsWalletModalOpen(true);
}}
@@ -695,6 +731,7 @@ export function ConnectWallet(props: ConnectWalletProps) {
<SwitchNetworkButton
style={props.style}
className={props.className}
switchNetworkBtnTitle={props.switchNetworkBtnTitle}
/>
);
}
@@ -757,12 +794,16 @@ export function ConnectWallet(props: ConnectWalletProps) {
function SwitchNetworkButton(props: {
style?: React.CSSProperties;
className?: string;
switchNetworkBtnTitle?: string;
}) {
const { activeChain } = useWalletContext();
const switchChain = useSwitchChain();
const [switching, setSwitching] = useState(false);
const locale = useTWLocale();
const switchNetworkBtnTitle =
props.switchNetworkBtnTitle ?? locale.connectWallet.switchNetwork;
return (
<AnimatedButton
className={`${TW_CONNECT_WALLET}--switch-network ${
@@ -791,7 +832,7 @@ function SwitchNetworkButton(props: {
{switching ? (
<Spinner size="sm" color="primaryButtonText" />
) : (
locale.connectWallet.switchNetwork
switchNetworkBtnTitle
)}
</AnimatedButton>
);
@@ -38,7 +38,7 @@ export type ConnectEmbedProps = {
/**
* theme for the ConnectEmbed
*
* If a theme is set on the `ThirdWebProvider` component, it will be used as the default theme for all thirdweb components, else the default will be "dark"
* If a theme is set on the [`ThirdWebProvider`](https://portal.thirdweb.com/react/v4/ThirdwebProvider) component, it will be used as the default theme for all thirdweb components, else the default will be "dark"
*
* theme can be set to either "dark" or "light" or a custom theme object.
*
@@ -74,13 +74,13 @@ export type ConnectEmbedProps = {
/**
* Enforce that users must sign in with their wallet using [auth](https://portal.thirdweb.com/auth) after connecting their wallet.
*
* This requires the `authConfig` prop to be set on the `ThirdWebProvider` component.
* This requires the `authConfig` prop to be set on the [`ThirdWebProvider`](https://portal.thirdweb.com/react/v4/ThirdwebProvider) component.
*/
auth?: {
/**
* specify whether signing in is optional or not.
*
* By default it is `true` if `authConfig` is set on `ThirdWebProvider`
* By default it is `false` ( sign in is required ) if `authConfig` is set on [`ThirdWebProvider`](https://portal.thirdweb.com/react/v4/ThirdwebProvider)
*/
loginOptional?: boolean;
/**
@@ -92,6 +92,32 @@ export type ConnectEmbedProps = {
*/
onLogout?: () => void;
};
/**
* Callback to be called on successful connection of wallet
*
* ```tsx
* <ConnectEmbed
* onConnect={() => {
* console.log("wallet connected")
* }}
* />
* ```
*
* 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` prop instead
*
* ```tsx
* <ConnectEmbed
* auth={{
* onLogin: () => {
* console.log("wallet connected and signed in")
* }
* }}
* />
* ```
*
*/
onConnect?: () => void;
};
/**
@@ -154,11 +180,13 @@ export function useShowConnectEmbed(loginOptional?: boolean) {
/**
* A component that allows the user to connect their wallet.
*
* it renders the same UI as the [`ConnectWallet`](https://portal.thirdweb.com/react/v4/components/ConnectWallet) component's modal - but directly on the page instead of being in a modal.
*
* It only renders UI if either one of the following conditions are met:
* - wallet is not connected
* - wallet is connected but the user is not signed in and `auth` is required ( loginOptional is not set to false )
*
* `ConnectEmbed` uses the `useShowConnectEmbed` hook internally to determine if it should be rendered or not. You can also use this hook to determine if you should render something else instead of `ConnectEmbed`
* `ConnectEmbed` uses the [`useShowConnectEmbed`](https://portal.thirdweb.com/react/v4/useShowConnectEmbed) hook internally to determine if it should be rendered or not. You can also use this hook to determine if you should render something else instead of `ConnectEmbed`
*
* @example
* ```tsx
@@ -180,9 +208,76 @@ export function useShowConnectEmbed(loginOptional?: boolean) {
* </div>
* );
* }
*```
* ```
*
* @param props -
* The props for the component.
*
* ### className
* Class name to be added to the root element of ConnectEmbed
*
* ### theme
* theme for the ConnectEmbed
*
* If a theme is set on the [`ThirdWebProvider`](https://portal.thirdweb.com/react/v4/ThirdwebProvider) component, it will be used as the default theme for all thirdweb components, else the default will be "dark"
*
* theme can be set to either "dark" or "light" or a custom theme object.
*
* You can also import `lightTheme` or `darkTheme` functions from `@thirdweb-dev/react` to use the default themes as base and overrides parts of it.
*
* ```ts
* import { lightTheme } from "@thirdweb-dev/react";
* const customTheme = lightTheme({
* colors: {
* modalBg: 'red'
* }
* })
* ```
*
* ### style
* CSS styles to be applied to the root element of ConnectEmbed
*
* ### termsOfServiceUrl
* If provided, Embed will show a Terms of Service message at the bottom with below link
*
* ### privacyPolicyUrl
* If provided, Embed will show a Privacy Policy message at the bottom with below link
*
* ### auth
* Enforce that users must sign in with their wallet using [auth](https://portal.thirdweb.com/auth) after connecting their wallet.
*
* This requires the `authConfig` prop to be set on the [`ThirdWebProvider`](https://portal.thirdweb.com/react/v4/ThirdwebProvider) component.
*
* The `auth` prop accepts an object with the following properties:
* - `loginOptional` - specify whether signing in is optional or not. By default it is `false` ( sign in is required ) if `authConfig` is set on [`ThirdWebProvider`](https://portal.thirdweb.com/react/v4/ThirdwebProvider)
* - `onLogin` - Callback to be called after user signs in with their wallet
* - `onLogout` - Callback to be called after user signs out
*
* ### onConnect
* Callback to be called on successful connection of wallet
*
* ```tsx
* <ConnectEmbed
* onConnect={() => {
* console.log("wallet connected")
* }}
* />
* ```
*
* 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` prop instead
*
* ```tsx
* <ConnectEmbed
* auth={{
* onLogin: () => {
* console.log("wallet connected and signed in")
* }
* }}
* />
* ```
*
*/
export const ConnectEmbed = (props: ConnectEmbedProps) => {
export function ConnectEmbed(props: ConnectEmbedProps) {
const loginOptional = props.auth?.loginOptional;
const requiresSignIn = useSignInRequired(loginOptional);
const show = useShowConnectEmbed(loginOptional);
@@ -205,12 +300,13 @@ export const ConnectEmbed = (props: ConnectEmbedProps) => {
screen={screen}
setScreen={setScreen}
initialScreen={initialScreen}
onConnect={props.onConnect}
/>
);
}
return null;
};
return <div></div>;
}
const ConnectEmbedContent = (
props: Omit<ConnectEmbedProps, "onConnect"> & {
@@ -218,6 +314,7 @@ const ConnectEmbedContent = (
screen: string | WalletConfig;
setScreen: (screen: string | WalletConfig) => void;
initialScreen: string | WalletConfig;
onConnect?: () => void;
},
) => {
const modalSize = "compact" as const;
@@ -266,6 +363,7 @@ const ConnectEmbedContent = (
privacyPolicyUrl: props.privacyPolicyUrl,
isEmbed: true,
auth: props.auth,
onConnect: props.onConnect,
};
return (
@@ -56,12 +56,17 @@ export const ConnectModalContent = (props: {
const title = modalConfig.title;
const theme = modalConfig.theme;
const modalSize = modalConfig.modalSize;
const onConnect = modalConfig.onConnect;
const isWideModal = modalSize === "wide";
const { user } = useUser();
const authConfig = useThirdwebAuthContext();
const handleConnected = useCallback(() => {
if (onConnect) {
onConnect();
}
const requiresSignIn = modalConfig.auth?.loginOptional
? false
: !!authConfig?.authUrl && !user?.address;
@@ -86,6 +91,7 @@ export const ConnectModalContent = (props: {
setScreen,
onShow,
onClose,
onConnect,
]);
const handleBack = useCallback(() => {
File diff suppressed because it is too large Load Diff
+9
View File
@@ -1,5 +1,14 @@
# @thirdweb-dev/sdk
## 4.0.27
### Patch Changes
- [#2183](https://github.com/thirdweb-dev/js/pull/2183) [`9a23de2b`](https://github.com/thirdweb-dev/js/commit/9a23de2be0c47a7a3702d65041ff654159d8e264) Thanks [@kumaryash90](https://github.com/kumaryash90)! - ZkSync Sepolia addresses
- Updated dependencies [[`e21f7bb1`](https://github.com/thirdweb-dev/js/commit/e21f7bb171334fa3003c954060e60c1ce8c1228f)]:
- @thirdweb-dev/chains@0.1.64
## 4.0.26
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/sdk",
"version": "4.0.26",
"version": "4.0.27",
"description": "The main thirdweb SDK.",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/sdk",
"license": "Apache-2.0",
+4 -3
View File
@@ -11,9 +11,7 @@ export * from "./contracts";
export { StaticJsonRpcBatchProvider } from "./lib/static-batch-rpc";
// export integration things
export type {
PaperCreateCheckoutLinkShardParams
} from "./integrations/thirdweb-checkout";
export type { PaperCreateCheckoutLinkShardParams } from "./integrations/thirdweb-checkout";
// explicitly export the *TYPES* of prebuilt contracts
export type { Edition } from "./contracts/prebuilt-implementations/edition";
@@ -45,8 +43,11 @@ export * from "./core/classes/delayed-reveal";
export * from "./core/classes/drop-claim-conditions";
export * from "./core/classes/drop-erc1155-claim-conditions";
export * from "./core/classes/erc-20";
export * from "./core/classes/erc-20-signature-mintable";
export * from "./core/classes/erc-721";
export * from "./core/classes/erc-721-with-quantity-signature-mintable";
export * from "./core/classes/erc-1155";
export * from "./core/classes/erc-1155-signature-mintable";
export * from "./core/classes/account";
export * from "./core/classes/account-factory";
export * from "./core/classes/gas-cost-estimator";
@@ -26,7 +26,7 @@ export const CONTRACT_ADDRESSES: Record<
};
export const IMPLEMENTATIONS: Record<number, Record<string, string>> = {
// ZKSync Era Testnet
// ZKSync Era Goerli Testnet (Deprecated)
[280]: {
DropERC721: "0xA8E28D98203848401A4f924358e6c337153D0f04",
DropERC1155: "0xf3C7d3F0AA374a2D32489929e24D3e9313Aec8bb",
@@ -42,6 +42,22 @@ export const IMPLEMENTATIONS: Record<number, Record<string, string>> = {
AirdropERC1155: "0x8b0DBCf5b7D01eBB0F24525CE8AB72F16CE4F8C8",
},
// ZKSync Era Sepolia Testnet
[300]: {
DropERC721: "0x0006BC0D8Bf9D91290Df89341F936c612D6978eb",
DropERC1155: "0xe0AD48286BF27AE0C5953d4417fB37f3FECABB4a",
DropERC20: "0xA77041a7A34A67D7285c8d3550110e441009436e",
SignatureDrop: "",
Marketplace: "",
MarketplaceV3: "0x12A305cc7168fa3b7B172fE53c57b9a22716F667",
TokenERC721: "0x9742f5ac11958cFAd151eBF0Fc31302fA409036E",
TokenERC1155: "0x4027561E163a420c4e5Db46E07EBd581CAa8Bb62",
TokenERC20: "0xf3C7d3F0AA374a2D32489929e24D3e9313Aec8bb",
AirdropERC20: "0x4b14569c7B79DBe686Ac3Ba5996131E7EDaB7a93",
AirdropERC721: "0xDD3E3BBa3bb4edcbbEa9d52Cd1E49289Ef3DfDE3",
AirdropERC1155: "0x8A4E9034BC6ac77E1408AC878e0603A32B5d4b73",
},
// ZKSync Era Mainnet
[324]: {
DropERC721: "0x9742f5ac11958cFAd151eBF0Fc31302fA409036E",
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+10
View File
@@ -1,5 +1,15 @@
# @thirdweb-dev/unity-js-bridge
## 0.3.7
### Patch Changes
- Updated dependencies [[`9a23de2b`](https://github.com/thirdweb-dev/js/commit/9a23de2be0c47a7a3702d65041ff654159d8e264), [`e21f7bb1`](https://github.com/thirdweb-dev/js/commit/e21f7bb171334fa3003c954060e60c1ce8c1228f)]:
- @thirdweb-dev/sdk@4.0.27
- @thirdweb-dev/chains@0.1.64
- @thirdweb-dev/wallets@2.4.2
- @thirdweb-dev/auth@4.1.24
## 0.3.6
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/unity-js-bridge",
"version": "0.3.6",
"version": "0.3.7",
"main": "dist/thirdweb-unity-bridge.js",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/unity-js-bridge",
"license": "Apache-2.0",
+8
View File
@@ -1,5 +1,13 @@
# @thirdweb-dev/wallets
## 2.4.2
### Patch Changes
- Updated dependencies [[`9a23de2b`](https://github.com/thirdweb-dev/js/commit/9a23de2be0c47a7a3702d65041ff654159d8e264), [`e21f7bb1`](https://github.com/thirdweb-dev/js/commit/e21f7bb171334fa3003c954060e60c1ce8c1228f)]:
- @thirdweb-dev/sdk@4.0.27
- @thirdweb-dev/chains@0.1.64
## 2.4.1
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/wallets",
"version": "2.4.1",
"version": "2.4.2",
"main": "dist/thirdweb-dev-wallets.cjs.js",
"module": "dist/thirdweb-dev-wallets.esm.js",
"browser": {
File diff suppressed because it is too large Load Diff
+17 -47
View File
@@ -611,9 +611,6 @@ importers:
'@radix-ui/react-tooltip':
specifier: ^1.0.6
version: 1.0.6(@types/[email protected])(@types/[email protected])([email protected])([email protected])
'@react-icons/all-files':
specifier: ^4.1.0
version: 4.1.0([email protected])
'@tanstack/react-query':
specifier: ^4.33.0
version: 4.33.0([email protected])([email protected])
@@ -642,8 +639,8 @@ importers:
specifier: ^5.3.0
version: 5.3.0
fuse.js:
specifier: ^6.6.2
version: 6.6.2
specifier: ^7.0.0
version: 7.0.0
qrcode:
specifier: ^1.5.3
version: 1.5.3
@@ -684,9 +681,6 @@ importers:
'@thirdweb-dev/tsconfig':
specifier: workspace:*
version: link:../tw-tsconfig
'@types/color':
specifier: ^3.0.3
version: 3.0.3
'@types/qrcode':
specifier: ^1.5.2
version: 1.5.2
@@ -931,6 +925,9 @@ importers:
expo-secure-store:
specifier: ^12.1.1
version: 12.1.1([email protected])
react-native-mmkv:
specifier: '>=2.11.0'
version: 2.11.0([email protected])([email protected])
react-native-modal:
specifier: ^13.0.1
version: 13.0.1([email protected])([email protected])
@@ -1047,9 +1044,6 @@ importers:
react-native:
specifier: ^0.71.11
version: 0.71.11(@babel/[email protected])(@babel/[email protected])([email protected])
react-native-mmkv:
specifier: 2.5.1
version: 2.5.1([email protected])([email protected])
rimraf:
specifier: ^3.0.2
version: 3.0.2
@@ -11201,14 +11195,6 @@ packages:
'@babel/runtime': 7.23.8
dev: false
/@react-icons/[email protected]([email protected]):
resolution: {integrity: sha512-hxBI2UOuVaI3O/BhQfhtb4kcGn9ft12RWAFVMUeNjqqhLsHvFtzIkFaptBJpFDANTKoDfdVoHTKZDlwKCACbMQ==}
peerDependencies:
react: '*'
dependencies:
react: 18.2.0
dev: false
/@react-native-async-storage/[email protected]([email protected]):
resolution: {integrity: sha512-dM8AfdoeIxlh+zqgr0o5+vCTPQ0Ru1mrPzONZMsr7ufp5h+6WgNxQNza7t0r5qQ6b04AJqTlBNixTWZxqP649Q==}
peerDependencies:
@@ -13030,22 +13016,6 @@ packages:
resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==}
dev: true
/@types/[email protected]:
resolution: {integrity: sha512-m7GG7IKKGuJUXvkZ1qqG3ChccdIM/qBBo913z+Xft0nKCX4hAU/IxKwZBU4cpRZ7GS5kV4vOblUkILtSShCPXQ==}
dependencies:
'@types/color-name': 1.1.1
dev: true
/@types/[email protected]:
resolution: {integrity: sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==}
dev: true
/@types/[email protected]:
resolution: {integrity: sha512-X//qzJ3d3Zj82J9sC/C18ZY5f43utPbAJ6PhYt/M7uG6etcF6MRpKdN880KBy43B0BMzSfeT96MzrsNjFI3GbA==}
dependencies:
'@types/color-convert': 2.0.0
dev: true
/@types/[email protected]:
resolution: {integrity: sha512-GUvNiia85zTDDIx0iPrtF3pI8dwrQkfuokEqxqPDE55qxH0U5SZz4awVZjiJLWN2ZZRkXCUqgsMUbygXY+kytA==}
dev: true
@@ -20486,8 +20456,8 @@ packages:
/[email protected]:
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
/fuse.js@6.6.2:
resolution: {integrity: sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==}
/fuse.js@7.0.0:
resolution: {integrity: sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==}
engines: {node: '>=10'}
dev: false
@@ -27499,6 +27469,16 @@ packages:
dev: false
optional: true
/[email protected]([email protected])([email protected]):
resolution: {integrity: sha512-28PdUHjZJmAw3q+8zJDAAdohnZMpDC7WgRUJxACOMkcmJeqS3u5cKS/lSq2bhf1CvaeIiHYHUWiyatUjMRCDQQ==}
peerDependencies:
react: '*'
react-native: '>=0.71.0'
dependencies:
react: 18.2.0
react-native: 0.71.11(@babel/[email protected])(@babel/[email protected])([email protected])
dev: false
/[email protected]([email protected])([email protected]):
resolution: {integrity: sha512-0hYNOTbsjJ5j5cpX+qjwReGIxuYE9MWRsyPQ72fTOvzmEjYXCF4Wr2VQoqx8R6W1/Uinekvln7dGvJ4RExmHhQ==}
peerDependencies:
@@ -27509,16 +27489,6 @@ packages:
react-native: 0.71.11(@babel/[email protected])(@babel/[email protected])([email protected])
dev: false
/[email protected]([email protected])([email protected]):
resolution: {integrity: sha512-5eQu25z3H6zf6w0NkJoTuFEFrbOu6luZxZ6+rK1W+XwY/rjPSFZFQPVtMaz3im90RbILFXXM/KrFGZrpaJJRoQ==}
peerDependencies:
react: '*'
react-native: '*'
dependencies:
react: 18.2.0
react-native: 0.71.11(@babel/[email protected])(@babel/[email protected])([email protected])
dev: true
/[email protected]([email protected])([email protected]):
resolution: {integrity: sha512-UB+mjmUtf+miaG/sDhOikRfBOv0gJdBU2ZE1HtFWp6UixW9jCk/bhGdHUgmZljbPpp0RaO/6YiMmQSSK3kkMaw==}
peerDependencies:
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-4
View File
@@ -9,10 +9,6 @@
"outputs": ["typedoc/**"],
"dependsOn": ["^build"]
},
"generate-docs": {
"outputs": ["docs/**"],
"dependsOn": ["^build"]
},
"@thirdweb-dev/chains#build": {
"outputs": ["dist/**", "chains/**"],
"dependsOn": ["^build"],