thirdweb 5.64.2 → 5.64.3-nightly-ddec3dadcc260e0d4d0ed2b43c502e0915a14203-20241029000326

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/dist/cjs/react/core/hooks/transaction/useSendTransaction.js +19 -1
  2. package/dist/cjs/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
  3. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +27 -78
  4. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  5. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js +27 -13
  6. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js.map +1 -1
  7. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js +50 -19
  8. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js.map +1 -1
  9. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.js +0 -2
  10. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.js.map +1 -1
  11. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js +21 -32
  12. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js.map +1 -1
  13. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.js +138 -0
  14. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.js.map +1 -0
  15. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/useSwapSupportedChains.js +1 -0
  16. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/useSwapSupportedChains.js.map +1 -1
  17. package/dist/cjs/react/web/ui/ConnectWallet/screens/formatTokenBalance.js +2 -2
  18. package/dist/cjs/react/web/ui/ConnectWallet/screens/formatTokenBalance.js.map +1 -1
  19. package/dist/cjs/version.js +1 -1
  20. package/dist/cjs/version.js.map +1 -1
  21. package/dist/cjs/wallets/smart/lib/bundler.js +3 -1
  22. package/dist/cjs/wallets/smart/lib/bundler.js.map +1 -1
  23. package/dist/esm/react/core/hooks/transaction/useSendTransaction.js +19 -1
  24. package/dist/esm/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
  25. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +29 -80
  26. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  27. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js +28 -14
  28. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js.map +1 -1
  29. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js +50 -19
  30. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js.map +1 -1
  31. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.js +0 -2
  32. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.js.map +1 -1
  33. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js +21 -32
  34. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js.map +1 -1
  35. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.js +135 -0
  36. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.js.map +1 -0
  37. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/useSwapSupportedChains.js +1 -1
  38. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/useSwapSupportedChains.js.map +1 -1
  39. package/dist/esm/react/web/ui/ConnectWallet/screens/formatTokenBalance.js +2 -2
  40. package/dist/esm/react/web/ui/ConnectWallet/screens/formatTokenBalance.js.map +1 -1
  41. package/dist/esm/version.js +1 -1
  42. package/dist/esm/version.js.map +1 -1
  43. package/dist/esm/wallets/smart/lib/bundler.js +3 -1
  44. package/dist/esm/wallets/smart/lib/bundler.js.map +1 -1
  45. package/dist/types/react/core/hooks/transaction/useSendTransaction.d.ts.map +1 -1
  46. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.d.ts.map +1 -1
  47. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.d.ts +1 -1
  48. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.d.ts.map +1 -1
  49. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.d.ts +12 -8
  50. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.d.ts.map +1 -1
  51. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/types.d.ts +1 -1
  52. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/types.d.ts.map +1 -1
  53. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.d.ts +0 -1
  54. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.d.ts.map +1 -1
  55. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.d.ts +1 -2
  56. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.d.ts.map +1 -1
  57. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.d.ts +30 -0
  58. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.d.ts.map +1 -0
  59. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/useSwapSupportedChains.d.ts +1 -0
  60. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/useSwapSupportedChains.d.ts.map +1 -1
  61. package/dist/types/react/web/ui/ConnectWallet/screens/formatTokenBalance.d.ts +1 -1
  62. package/dist/types/react/web/ui/ConnectWallet/screens/formatTokenBalance.d.ts.map +1 -1
  63. package/dist/types/react/web/ui/components/token/TokenSymbol.d.ts +1 -1
  64. package/dist/types/react/web/ui/components/token/TokenSymbol.d.ts.map +1 -1
  65. package/dist/types/version.d.ts +1 -1
  66. package/dist/types/version.d.ts.map +1 -1
  67. package/dist/types/wallets/smart/lib/bundler.d.ts.map +1 -1
  68. package/dist/types/wallets/smart/types.d.ts +1 -1
  69. package/dist/types/wallets/smart/types.d.ts.map +1 -1
  70. package/package.json +11 -11
  71. package/src/extensions/unstoppable-domains/read/resolveName.test.ts +20 -17
  72. package/src/react/core/hooks/transaction/useSendTransaction.ts +34 -4
  73. package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +35 -148
  74. package/src/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.tsx +62 -31
  75. package/src/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.tsx +136 -48
  76. package/src/react/web/ui/ConnectWallet/screens/Buy/main/types.ts +1 -1
  77. package/src/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.ts +0 -4
  78. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.tsx +57 -71
  79. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.tsx +251 -0
  80. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/useSwapSupportedChains.ts +1 -1
  81. package/src/react/web/ui/ConnectWallet/screens/formatTokenBalance.ts +2 -1
  82. package/src/react/web/ui/components/token/TokenSymbol.tsx +2 -2
  83. package/src/version.ts +1 -1
  84. package/src/wallets/smart/lib/bundler.ts +4 -1
  85. package/src/wallets/smart/smart-wallet-dev.test.ts +23 -4
  86. package/src/wallets/smart/types.ts +1 -1
  87. package/dist/cjs/react/web/ui/ConnectWallet/icons/GenericWalletIcon.js +0 -12
  88. package/dist/cjs/react/web/ui/ConnectWallet/icons/GenericWalletIcon.js.map +0 -1
  89. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.js +0 -34
  90. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.js.map +0 -1
  91. package/dist/esm/react/web/ui/ConnectWallet/icons/GenericWalletIcon.js +0 -8
  92. package/dist/esm/react/web/ui/ConnectWallet/icons/GenericWalletIcon.js.map +0 -1
  93. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.js +0 -31
  94. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.js.map +0 -1
  95. package/dist/types/react/web/ui/ConnectWallet/icons/GenericWalletIcon.d.ts +0 -6
  96. package/dist/types/react/web/ui/ConnectWallet/icons/GenericWalletIcon.d.ts.map +0 -1
  97. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.d.ts +0 -14
  98. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.d.ts.map +0 -1
  99. package/src/react/web/ui/ConnectWallet/icons/GenericWalletIcon.tsx +0 -22
  100. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.tsx +0 -83
@@ -0,0 +1,251 @@
1
+ import { IdCardIcon } from "@radix-ui/react-icons";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import type { Chain } from "../../../../../../../chains/types.js";
4
+ import { getCachedChain } from "../../../../../../../chains/utils.js";
5
+ import type { ThirdwebClient } from "../../../../../../../client/client.js";
6
+ import { NATIVE_TOKEN_ADDRESS } from "../../../../../../../constants/addresses.js";
7
+ import type { Wallet } from "../../../../../../../wallets/interfaces/wallet.js";
8
+ import {
9
+ type GetWalletBalanceResult,
10
+ getWalletBalance,
11
+ } from "../../../../../../../wallets/utils/getWalletBalance.js";
12
+ import type { WalletId } from "../../../../../../../wallets/wallet-types.js";
13
+ import { useCustomTheme } from "../../../../../../core/design-system/CustomThemeProvider.js";
14
+ import {
15
+ iconSize,
16
+ radius,
17
+ spacing,
18
+ } from "../../../../../../core/design-system/index.js";
19
+ import type { PayUIOptions } from "../../../../../../core/hooks/connection/ConnectButtonProps.js";
20
+ import { useChainMetadata } from "../../../../../../core/hooks/others/useChainQuery.js";
21
+ import { useActiveAccount } from "../../../../../../core/hooks/wallets/useActiveAccount.js";
22
+ import { useConnectedWallets } from "../../../../../../core/hooks/wallets/useConnectedWallets.js";
23
+ import type {
24
+ SupportedTokens,
25
+ TokenInfo,
26
+ } from "../../../../../../core/utils/defaultTokens.js";
27
+ import { LoadingScreen } from "../../../../../wallets/shared/LoadingScreen.js";
28
+ import { Spacer } from "../../../../components/Spacer.js";
29
+ import { Container } from "../../../../components/basic.js";
30
+ import { Button } from "../../../../components/buttons.js";
31
+ import { Text } from "../../../../components/text.js";
32
+ import { OutlineWalletIcon } from "../../../icons/OutlineWalletIcon.js";
33
+ import { type ERC20OrNativeToken, isNativeToken } from "../../nativeToken.js";
34
+ import { WalletRowWithBalances } from "../WalletSelectorButton.js";
35
+
36
+ export type TokenBalance = {
37
+ balance: GetWalletBalanceResult;
38
+ chain: Chain;
39
+ token: TokenInfo;
40
+ };
41
+
42
+ export function PaymentSelectionScreen(props: {
43
+ client: ThirdwebClient;
44
+ mode: PayUIOptions["mode"];
45
+ showAllWallets: boolean;
46
+ sourceSupportedTokens: SupportedTokens | undefined;
47
+ toChain: Chain;
48
+ toToken: ERC20OrNativeToken;
49
+ tokenAmount: string;
50
+ wallets: Wallet[] | undefined;
51
+ onSelect: (wallet: Wallet, token: TokenInfo, chain: Chain) => void;
52
+ onSelectFiat: () => void;
53
+ onBack: () => void;
54
+ onConnect: () => void;
55
+ hiddenWallets?: WalletId[];
56
+ payWithFiatEnabled: boolean;
57
+ }) {
58
+ const theme = useCustomTheme();
59
+ const connectedWallets = useConnectedWallets();
60
+
61
+ // if all wallets are connected and showAll wallets is disabled, hide the connect button
62
+ const hideConnectButton =
63
+ !props.showAllWallets &&
64
+ props.wallets?.every((w) => connectedWallets.includes(w));
65
+
66
+ const chainInfo = useChainMetadata(props.toChain);
67
+ const activeAccount = useActiveAccount();
68
+
69
+ const walletsAndBalances = useQuery({
70
+ queryKey: [
71
+ "wallets-and-balances",
72
+ connectedWallets.map((w) => w.getAccount()?.address),
73
+ props.sourceSupportedTokens,
74
+ props.toChain.id,
75
+ props.toToken,
76
+ props.tokenAmount,
77
+ props.mode,
78
+ activeAccount?.address,
79
+ ],
80
+ queryFn: async () => {
81
+ // in parallel, get the balances of all the wallets on each of the sourceSupportedTokens
82
+ const walletBalanceMap = new Map<Wallet, TokenBalance[]>();
83
+
84
+ const balancePromises = connectedWallets.flatMap((wallet) => {
85
+ const account = wallet.getAccount();
86
+ if (!account) return [];
87
+ walletBalanceMap.set(wallet, []);
88
+
89
+ // inject the destination token too since it can be used as well to pay/transfer
90
+ const toToken = isNativeToken(props.toToken)
91
+ ? {
92
+ address: NATIVE_TOKEN_ADDRESS,
93
+ name: chainInfo.data?.nativeCurrency.name || "",
94
+ symbol: chainInfo.data?.nativeCurrency.symbol || "",
95
+ icon: chainInfo.data?.icon?.url,
96
+ }
97
+ : props.toToken;
98
+
99
+ const tokens = {
100
+ ...props.sourceSupportedTokens,
101
+ [props.toChain.id]: [
102
+ toToken,
103
+ ...(props.sourceSupportedTokens?.[props.toChain.id] || []),
104
+ ],
105
+ };
106
+
107
+ return Object.entries(tokens).flatMap(([chainId, tokens]) => {
108
+ return tokens.map(async (token) => {
109
+ try {
110
+ const chain = getCachedChain(Number(chainId));
111
+ const balance = await getWalletBalance({
112
+ address: account.address,
113
+ chain,
114
+ tokenAddress: isNativeToken(token) ? undefined : token.address,
115
+ client: props.client,
116
+ });
117
+
118
+ // show the token if:
119
+ // - its not the destination token and balance is greater than 0
120
+ // - its the destination token and balance is greater than the token amount AND we the account is not the default account in fund_wallet mode
121
+ const shouldInclude =
122
+ token.address === toToken.address &&
123
+ chain.id === props.toChain.id
124
+ ? props.mode === "fund_wallet" &&
125
+ account.address === activeAccount?.address
126
+ ? false
127
+ : Number(balance.displayValue) > Number(props.tokenAmount)
128
+ : balance.value > 0n;
129
+
130
+ if (shouldInclude) {
131
+ const existingBalances = walletBalanceMap.get(wallet) || [];
132
+ existingBalances.push({ balance, chain, token });
133
+ existingBalances.sort((a, b) => {
134
+ if (
135
+ a.chain.id === props.toChain.id &&
136
+ a.token.address === toToken.address
137
+ )
138
+ return -1;
139
+ if (
140
+ b.chain.id === props.toChain.id &&
141
+ b.token.address === toToken.address
142
+ )
143
+ return 1;
144
+ if (a.chain.id === props.toChain.id) return -1;
145
+ if (b.chain.id === props.toChain.id) return 1;
146
+ return a.chain.id > b.chain.id ? 1 : -1;
147
+ });
148
+ }
149
+ } catch (error) {
150
+ console.error(
151
+ `Failed to fetch balance for wallet ${wallet.id} on chain ${chainId} for token ${token.symbol}:`,
152
+ error,
153
+ );
154
+ }
155
+ });
156
+ });
157
+ });
158
+
159
+ await Promise.all(balancePromises);
160
+ return walletBalanceMap;
161
+ },
162
+ enabled: !!props.sourceSupportedTokens && !!chainInfo.data,
163
+ });
164
+
165
+ if (walletsAndBalances.isLoading || !walletsAndBalances.data) {
166
+ return <LoadingScreen />;
167
+ }
168
+
169
+ return (
170
+ <Container>
171
+ <Container flex="column" gap="xs">
172
+ {Array.from(walletsAndBalances.data?.entries() || [])
173
+ .filter(([w]) => !props.hiddenWallets?.includes(w.id))
174
+ .map(([w, balances]) => {
175
+ const address = w.getAccount()?.address;
176
+ if (!address) return null;
177
+ return (
178
+ <WalletRowWithBalances
179
+ key={w.id}
180
+ wallet={w}
181
+ balances={balances}
182
+ client={props.client}
183
+ address={address}
184
+ onClick={props.onSelect}
185
+ />
186
+ );
187
+ })}
188
+ {!hideConnectButton && (
189
+ <Button
190
+ variant="secondary"
191
+ fullWidth
192
+ onClick={props.onConnect}
193
+ gap="xs"
194
+ bg="tertiaryBg"
195
+ style={{
196
+ borderRadius: radius.lg,
197
+ border: `1px solid ${theme.colors.borderColor}`,
198
+ padding: spacing.sm,
199
+ }}
200
+ >
201
+ <Container
202
+ flex="row"
203
+ gap="sm"
204
+ center="y"
205
+ expand
206
+ color="secondaryIconColor"
207
+ >
208
+ <OutlineWalletIcon size={iconSize.md} />
209
+ <Text size="sm" color="primaryText">
210
+ Pay with another wallet
211
+ </Text>
212
+ </Container>
213
+ </Button>
214
+ )}
215
+ {props.payWithFiatEnabled && (
216
+ <Button
217
+ variant="secondary"
218
+ fullWidth
219
+ gap="xs"
220
+ bg="tertiaryBg"
221
+ onClick={props.onSelectFiat}
222
+ style={{
223
+ borderRadius: radius.lg,
224
+ border: `1px solid ${theme.colors.borderColor}`,
225
+ padding: spacing.sm,
226
+ }}
227
+ >
228
+ <Container
229
+ flex="row"
230
+ gap="sm"
231
+ center="y"
232
+ expand
233
+ color="secondaryIconColor"
234
+ >
235
+ <IdCardIcon
236
+ style={{
237
+ width: iconSize.md,
238
+ height: iconSize.md,
239
+ }}
240
+ />
241
+ <Text size="sm" color="primaryText">
242
+ Pay with credit card
243
+ </Text>
244
+ </Container>
245
+ </Button>
246
+ )}
247
+ </Container>
248
+ <Spacer y="sm" />
249
+ </Container>
250
+ );
251
+ }
@@ -34,7 +34,7 @@ export type SupportedChainAndTokens = Array<{
34
34
  }>;
35
35
  }>;
36
36
 
37
- async function fetchBuySupportedDestinations(
37
+ export async function fetchBuySupportedDestinations(
38
38
  client: ThirdwebClient,
39
39
  isTestMode?: boolean,
40
40
  ): Promise<SupportedChainAndTokens> {
@@ -13,9 +13,10 @@ export function formatTokenBalance(
13
13
  displayValue: string;
14
14
  },
15
15
  showSymbol = true,
16
+ decimals = 5,
16
17
  ) {
17
18
  return (
18
- formatNumber(Number(balanceData.displayValue), 5) +
19
+ formatNumber(Number(balanceData.displayValue), decimals) +
19
20
  (showSymbol ? ` ${balanceData.symbol}` : "")
20
21
  );
21
22
  }
@@ -15,7 +15,7 @@ import { Text } from "../text.js";
15
15
  export function TokenSymbol(props: {
16
16
  token: ERC20OrNativeToken;
17
17
  chain: Chain;
18
- size: "sm" | "md" | "lg";
18
+ size: "xs" | "sm" | "md" | "lg";
19
19
  color?: keyof Theme["colors"];
20
20
  inline?: boolean;
21
21
  }) {
@@ -43,7 +43,7 @@ export function TokenSymbol(props: {
43
43
 
44
44
  function NativeTokenSymbol(props: {
45
45
  chain: Chain;
46
- size: "sm" | "md" | "lg";
46
+ size: "xs" | "sm" | "md" | "lg";
47
47
  color?: keyof Theme["colors"];
48
48
  inline?: boolean;
49
49
  }) {
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = "5.64.2";
1
+ export const version = "5.64.3-nightly-ddec3dadcc260e0d4d0ed2b43c502e0915a14203-20241029000326";
@@ -84,7 +84,10 @@ export async function estimateUserOpGas(args: {
84
84
  // add gas buffer for managed account factory delegate calls
85
85
  return {
86
86
  preVerificationGas: hexToBigInt(res.preVerificationGas),
87
- verificationGas: hexToBigInt(res.verificationGas),
87
+ verificationGas:
88
+ res.verificationGas !== undefined
89
+ ? hexToBigInt(res.verificationGas)
90
+ : undefined,
88
91
  verificationGasLimit: hexToBigInt(res.verificationGasLimit),
89
92
  callGasLimit: hexToBigInt(res.callGasLimit) + MANAGED_ACCOUNT_GAS_BUFFER,
90
93
  paymasterVerificationGasLimit:
@@ -1,10 +1,12 @@
1
1
  import { beforeAll, describe, expect, it } from "vitest";
2
2
  import { TEST_CLIENT } from "../../../test/src/test-clients.js";
3
- import { arbitrumSepolia } from "../../chains/chain-definitions/arbitrum-sepolia.js";
3
+ import { zkSyncSepolia } from "../../chains/chain-definitions/zksync-sepolia.js";
4
4
  import { type ThirdwebContract, getContract } from "../../contract/contract.js";
5
5
  import { balanceOf } from "../../extensions/erc1155/__generated__/IERC1155/read/balanceOf.js";
6
6
  import { claimTo } from "../../extensions/erc1155/drops/write/claimTo.js";
7
7
  import { sendAndConfirmTransaction } from "../../transaction/actions/send-and-confirm-transaction.js";
8
+ import { sendTransaction } from "../../transaction/actions/send-transaction.js";
9
+ import { prepareTransaction } from "../../transaction/prepare-transaction.js";
8
10
  import type { Address } from "../../utils/address.js";
9
11
  import { isContractDeployed } from "../../utils/bytecode/is-contract-deployed.js";
10
12
  import { setThirdwebDomains } from "../../utils/domains.js";
@@ -18,7 +20,7 @@ let smartWalletAddress: Address;
18
20
  let personalAccount: Account;
19
21
  let accountContract: ThirdwebContract;
20
22
 
21
- const chain = arbitrumSepolia;
23
+ const chain = zkSyncSepolia;
22
24
  const client = TEST_CLIENT;
23
25
  const contract = getContract({
24
26
  client,
@@ -61,13 +63,30 @@ describe.runIf(process.env.TW_SECRET_KEY).skip.sequential(
61
63
  expect(smartWalletAddress).toHaveLength(42);
62
64
  });
63
65
 
64
- it("can sign a msg", async () => {
66
+ it.skip("can sign a msg", async () => {
65
67
  await smartAccount.signMessage({ message: "hello world" });
66
68
  const isDeployed = await isContractDeployed(accountContract);
67
69
  expect(isDeployed).toEqual(true);
68
70
  });
69
71
 
70
- it("can execute a tx", async () => {
72
+ it("should send a transaction", async () => {
73
+ const tx = prepareTransaction({
74
+ client,
75
+ chain,
76
+ to: smartAccount.address,
77
+ value: 0n,
78
+ });
79
+
80
+ console.log("Sending transaction...");
81
+ const receipt = await sendTransaction({
82
+ transaction: tx,
83
+ account: smartAccount,
84
+ });
85
+ console.log("Transaction sent:", receipt.transactionHash);
86
+ expect(receipt.transactionHash).toBeDefined();
87
+ });
88
+
89
+ it.skip("can execute a tx", async () => {
71
90
  const tx = await sendAndConfirmTransaction({
72
91
  transaction: claimTo({
73
92
  contract,
@@ -172,7 +172,7 @@ export type PaymasterResult = {
172
172
 
173
173
  export type EstimationResult = {
174
174
  preVerificationGas: bigint;
175
- verificationGas: bigint;
175
+ verificationGas?: bigint;
176
176
  verificationGasLimit: bigint;
177
177
  callGasLimit: bigint;
178
178
  // v0.7 types
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GenericWalletIcon = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- /**
6
- * @internal
7
- */
8
- const GenericWalletIcon = (props) => {
9
- return ((0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 18 18", width: props.size, height: props.size, role: "presentation", children: (0, jsx_runtime_1.jsx)("path", { fill: "currentColor", d: "M15.6 4.6H1.85v-.55l12.1-.968v.968h1.65V2.4c0-1.21-.98-2.059-2.177-1.888L2.378 2.089C1.18 2.26.2 3.39.2 4.6v11a2.2 2.2 0 002.2 2.2h13.2a2.2 2.2 0 002.2-2.2V6.8a2.2 2.2 0 00-2.2-2.2zm-1.65 7.707a1.65 1.65 0 01-.63-3.176 1.65 1.65 0 11.63 3.176z" }) }));
10
- };
11
- exports.GenericWalletIcon = GenericWalletIcon;
12
- //# sourceMappingURL=GenericWalletIcon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GenericWalletIcon.js","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/ConnectWallet/icons/GenericWalletIcon.tsx"],"names":[],"mappings":";;;;AAEA;;GAEG;AACI,MAAM,iBAAiB,GAAW,CAAC,KAAK,EAAE,EAAE;IACjD,OAAO,CACL,gCACE,KAAK,EAAC,4BAA4B,EAClC,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,WAAW,EACnB,KAAK,EAAE,KAAK,CAAC,IAAI,EACjB,MAAM,EAAE,KAAK,CAAC,IAAI,EAClB,IAAI,EAAC,cAAc,YAEnB,iCACE,IAAI,EAAC,cAAc,EACnB,CAAC,EAAC,qPAAqP,GACvP,GACE,CACP,CAAC;AACJ,CAAC,CAAC;AAhBW,QAAA,iBAAiB,qBAgB5B"}
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WalletSwitcherDrawerContent = WalletSwitcherDrawerContent;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_icons_1 = require("@radix-ui/react-icons");
6
- const CustomThemeProvider_js_1 = require("../../../../../../core/design-system/CustomThemeProvider.js");
7
- const index_js_1 = require("../../../../../../core/design-system/index.js");
8
- const useConnectedWallets_js_1 = require("../../../../../../core/hooks/wallets/useConnectedWallets.js");
9
- const Spacer_js_1 = require("../../../../components/Spacer.js");
10
- const basic_js_1 = require("../../../../components/basic.js");
11
- const buttons_js_1 = require("../../../../components/buttons.js");
12
- const text_js_1 = require("../../../../components/text.js");
13
- const WalletSelectorButton_js_1 = require("../WalletSelectorButton.js");
14
- function WalletSwitcherDrawerContent(props) {
15
- const theme = (0, CustomThemeProvider_js_1.useCustomTheme)();
16
- const connectedWallets = (0, useConnectedWallets_js_1.useConnectedWallets)();
17
- // if all wallets are connected and showAll wallets is disabled, hide the connect button
18
- const hideConnectButton = !props.showAllWallets &&
19
- props.wallets?.every((w) => connectedWallets.includes(w));
20
- return ((0, jsx_runtime_1.jsxs)(basic_js_1.Container, { children: [(0, jsx_runtime_1.jsxs)(basic_js_1.Container, { flex: "column", gap: "xs", children: [connectedWallets
21
- .filter((w) => !props.hiddenWallets?.includes(w.id))
22
- .map((w) => {
23
- const address = w.getAccount()?.address;
24
- return ((0, jsx_runtime_1.jsx)(WalletSelectorButton_js_1.WalletSelectorButton, { walletId: w.id, client: props.client, address: address || "", onClick: () => {
25
- props.onSelect(w);
26
- props.onBack();
27
- }, disableChevron: true, checked: false }, w.id));
28
- }), !hideConnectButton && ((0, jsx_runtime_1.jsx)(buttons_js_1.Button, { variant: "secondary", fullWidth: true, onClick: props.onConnect, gap: "xs", bg: "tertiaryBg", style: {
29
- borderRadius: index_js_1.radius.lg,
30
- border: `1px solid ${theme.colors.borderColor}`,
31
- padding: index_js_1.spacing.sm,
32
- }, children: (0, jsx_runtime_1.jsxs)(basic_js_1.Container, { flex: "row", gap: "sm", center: "y", expand: true, children: [(0, jsx_runtime_1.jsx)(react_icons_1.PlusIcon, { width: index_js_1.iconSize.md, height: index_js_1.iconSize.md }), (0, jsx_runtime_1.jsx)(text_js_1.Text, { size: "sm", color: "primaryText", children: "Add Another Wallet" })] }) }))] }), (0, jsx_runtime_1.jsx)(Spacer_js_1.Spacer, { y: "sm" })] }));
33
- }
34
- //# sourceMappingURL=WalletSwitcherDrawerContent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WalletSwitcherDrawerContent.js","sourceRoot":"","sources":["../../../../../../../../../src/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.tsx"],"names":[],"mappings":";;AAiBA,kEAiEC;;AAlFD,uDAAiD;AAIjD,wGAA6F;AAC7F,4EAIuD;AACvD,wGAAkG;AAClG,gEAA0D;AAC1D,8DAA4D;AAC5D,kEAA2D;AAC3D,4DAAsD;AACtD,wEAAkE;AAElE,SAAgB,2BAA2B,CAAC,KAS3C;IACC,MAAM,KAAK,GAAG,IAAA,uCAAc,GAAE,CAAC;IAC/B,MAAM,gBAAgB,GAAG,IAAA,4CAAmB,GAAE,CAAC;IAE/C,wFAAwF;IACxF,MAAM,iBAAiB,GACrB,CAAC,KAAK,CAAC,cAAc;QACrB,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5D,OAAO,CACL,wBAAC,oBAAS,eACR,wBAAC,oBAAS,IAAC,IAAI,EAAC,QAAQ,EAAC,GAAG,EAAC,IAAI,aAC9B,gBAAgB;yBACd,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;yBACnD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBACT,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC;wBACxC,OAAO,CACL,uBAAC,8CAAoB,IAEnB,QAAQ,EAAE,CAAC,CAAC,EAAE,EACd,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,OAAO,EAAE,OAAO,IAAI,EAAE,EACtB,OAAO,EAAE,GAAG,EAAE;gCACZ,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gCAClB,KAAK,CAAC,MAAM,EAAE,CAAC;4BACjB,CAAC,EACD,cAAc,QACd,OAAO,EAAE,KAAK,IATT,CAAC,CAAC,EAAE,CAUT,CACH,CAAC;oBACJ,CAAC,CAAC,EACH,CAAC,iBAAiB,IAAI,CACrB,uBAAC,mBAAM,IACL,OAAO,EAAC,WAAW,EACnB,SAAS,QACT,OAAO,EAAE,KAAK,CAAC,SAAS,EACxB,GAAG,EAAC,IAAI,EACR,EAAE,EAAC,YAAY,EACf,KAAK,EAAE;4BACL,YAAY,EAAE,iBAAM,CAAC,EAAE;4BACvB,MAAM,EAAE,aAAa,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE;4BAC/C,OAAO,EAAE,kBAAO,CAAC,EAAE;yBACpB,YAED,wBAAC,oBAAS,IAAC,IAAI,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,MAAM,EAAC,GAAG,EAAC,MAAM,mBAC9C,uBAAC,sBAAQ,IAAC,KAAK,EAAE,mBAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,mBAAQ,CAAC,EAAE,GAAI,EACrD,uBAAC,cAAI,IAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,aAAa,mCAE5B,IACG,GACL,CACV,IACS,EACZ,uBAAC,kBAAM,IAAC,CAAC,EAAC,IAAI,GAAG,IACP,CACb,CAAC;AACJ,CAAC"}
@@ -1,8 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- /**
3
- * @internal
4
- */
5
- export const GenericWalletIcon = (props) => {
6
- return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 18 18", width: props.size, height: props.size, role: "presentation", children: _jsx("path", { fill: "currentColor", d: "M15.6 4.6H1.85v-.55l12.1-.968v.968h1.65V2.4c0-1.21-.98-2.059-2.177-1.888L2.378 2.089C1.18 2.26.2 3.39.2 4.6v11a2.2 2.2 0 002.2 2.2h13.2a2.2 2.2 0 002.2-2.2V6.8a2.2 2.2 0 00-2.2-2.2zm-1.65 7.707a1.65 1.65 0 01-.63-3.176 1.65 1.65 0 11.63 3.176z" }) }));
7
- };
8
- //# sourceMappingURL=GenericWalletIcon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GenericWalletIcon.js","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/ConnectWallet/icons/GenericWalletIcon.tsx"],"names":[],"mappings":";AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAW,CAAC,KAAK,EAAE,EAAE;IACjD,OAAO,CACL,cACE,KAAK,EAAC,4BAA4B,EAClC,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,WAAW,EACnB,KAAK,EAAE,KAAK,CAAC,IAAI,EACjB,MAAM,EAAE,KAAK,CAAC,IAAI,EAClB,IAAI,EAAC,cAAc,YAEnB,eACE,IAAI,EAAC,cAAc,EACnB,CAAC,EAAC,qPAAqP,GACvP,GACE,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -1,31 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { PlusIcon } from "@radix-ui/react-icons";
3
- import { useCustomTheme } from "../../../../../../core/design-system/CustomThemeProvider.js";
4
- import { iconSize, radius, spacing, } from "../../../../../../core/design-system/index.js";
5
- import { useConnectedWallets } from "../../../../../../core/hooks/wallets/useConnectedWallets.js";
6
- import { Spacer } from "../../../../components/Spacer.js";
7
- import { Container } from "../../../../components/basic.js";
8
- import { Button } from "../../../../components/buttons.js";
9
- import { Text } from "../../../../components/text.js";
10
- import { WalletSelectorButton } from "../WalletSelectorButton.js";
11
- export function WalletSwitcherDrawerContent(props) {
12
- const theme = useCustomTheme();
13
- const connectedWallets = useConnectedWallets();
14
- // if all wallets are connected and showAll wallets is disabled, hide the connect button
15
- const hideConnectButton = !props.showAllWallets &&
16
- props.wallets?.every((w) => connectedWallets.includes(w));
17
- return (_jsxs(Container, { children: [_jsxs(Container, { flex: "column", gap: "xs", children: [connectedWallets
18
- .filter((w) => !props.hiddenWallets?.includes(w.id))
19
- .map((w) => {
20
- const address = w.getAccount()?.address;
21
- return (_jsx(WalletSelectorButton, { walletId: w.id, client: props.client, address: address || "", onClick: () => {
22
- props.onSelect(w);
23
- props.onBack();
24
- }, disableChevron: true, checked: false }, w.id));
25
- }), !hideConnectButton && (_jsx(Button, { variant: "secondary", fullWidth: true, onClick: props.onConnect, gap: "xs", bg: "tertiaryBg", style: {
26
- borderRadius: radius.lg,
27
- border: `1px solid ${theme.colors.borderColor}`,
28
- padding: spacing.sm,
29
- }, children: _jsxs(Container, { flex: "row", gap: "sm", center: "y", expand: true, children: [_jsx(PlusIcon, { width: iconSize.md, height: iconSize.md }), _jsx(Text, { size: "sm", color: "primaryText", children: "Add Another Wallet" })] }) }))] }), _jsx(Spacer, { y: "sm" })] }));
30
- }
31
- //# sourceMappingURL=WalletSwitcherDrawerContent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WalletSwitcherDrawerContent.js","sourceRoot":"","sources":["../../../../../../../../../src/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAIjD,OAAO,EAAE,cAAc,EAAE,MAAM,6DAA6D,CAAC;AAC7F,OAAO,EACL,QAAQ,EACR,MAAM,EACN,OAAO,GACR,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AAClG,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,UAAU,2BAA2B,CAAC,KAS3C;IACC,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAC/B,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IAE/C,wFAAwF;IACxF,MAAM,iBAAiB,GACrB,CAAC,KAAK,CAAC,cAAc;QACrB,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5D,OAAO,CACL,MAAC,SAAS,eACR,MAAC,SAAS,IAAC,IAAI,EAAC,QAAQ,EAAC,GAAG,EAAC,IAAI,aAC9B,gBAAgB;yBACd,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;yBACnD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBACT,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC;wBACxC,OAAO,CACL,KAAC,oBAAoB,IAEnB,QAAQ,EAAE,CAAC,CAAC,EAAE,EACd,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,OAAO,EAAE,OAAO,IAAI,EAAE,EACtB,OAAO,EAAE,GAAG,EAAE;gCACZ,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gCAClB,KAAK,CAAC,MAAM,EAAE,CAAC;4BACjB,CAAC,EACD,cAAc,QACd,OAAO,EAAE,KAAK,IATT,CAAC,CAAC,EAAE,CAUT,CACH,CAAC;oBACJ,CAAC,CAAC,EACH,CAAC,iBAAiB,IAAI,CACrB,KAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,SAAS,QACT,OAAO,EAAE,KAAK,CAAC,SAAS,EACxB,GAAG,EAAC,IAAI,EACR,EAAE,EAAC,YAAY,EACf,KAAK,EAAE;4BACL,YAAY,EAAE,MAAM,CAAC,EAAE;4BACvB,MAAM,EAAE,aAAa,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE;4BAC/C,OAAO,EAAE,OAAO,CAAC,EAAE;yBACpB,YAED,MAAC,SAAS,IAAC,IAAI,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,MAAM,EAAC,GAAG,EAAC,MAAM,mBAC9C,KAAC,QAAQ,IAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAI,EACrD,KAAC,IAAI,IAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,aAAa,mCAE5B,IACG,GACL,CACV,IACS,EACZ,KAAC,MAAM,IAAC,CAAC,EAAC,IAAI,GAAG,IACP,CACb,CAAC;AACJ,CAAC"}
@@ -1,6 +0,0 @@
1
- import type { IconFC } from "./types.js";
2
- /**
3
- * @internal
4
- */
5
- export declare const GenericWalletIcon: IconFC;
6
- //# sourceMappingURL=GenericWalletIcon.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GenericWalletIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/ConnectWallet/icons/GenericWalletIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAgB/B,CAAC"}
@@ -1,14 +0,0 @@
1
- import type { ThirdwebClient } from "../../../../../../../client/client.js";
2
- import type { Wallet } from "../../../../../../../wallets/interfaces/wallet.js";
3
- import type { WalletId } from "../../../../../../../wallets/wallet-types.js";
4
- export declare function WalletSwitcherDrawerContent(props: {
5
- client: ThirdwebClient;
6
- showAllWallets: boolean;
7
- wallets: Wallet[] | undefined;
8
- onSelect: (wallet: Wallet) => void;
9
- onBack: () => void;
10
- onConnect: () => void;
11
- selectedAddress: string;
12
- hiddenWallets?: WalletId[];
13
- }): import("react/jsx-runtime.js").JSX.Element;
14
- //# sourceMappingURL=WalletSwitcherDrawerContent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WalletSwitcherDrawerContent.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mDAAmD,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8CAA8C,CAAC;AAc7E,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,MAAM,EAAE,cAAc,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC9B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC;CAC5B,8CAwDA"}
@@ -1,22 +0,0 @@
1
- import type { IconFC } from "./types.js";
2
-
3
- /**
4
- * @internal
5
- */
6
- export const GenericWalletIcon: IconFC = (props) => {
7
- return (
8
- <svg
9
- xmlns="http://www.w3.org/2000/svg"
10
- fill="none"
11
- viewBox="0 0 18 18"
12
- width={props.size}
13
- height={props.size}
14
- role="presentation"
15
- >
16
- <path
17
- fill="currentColor"
18
- d="M15.6 4.6H1.85v-.55l12.1-.968v.968h1.65V2.4c0-1.21-.98-2.059-2.177-1.888L2.378 2.089C1.18 2.26.2 3.39.2 4.6v11a2.2 2.2 0 002.2 2.2h13.2a2.2 2.2 0 002.2-2.2V6.8a2.2 2.2 0 00-2.2-2.2zm-1.65 7.707a1.65 1.65 0 01-.63-3.176 1.65 1.65 0 11.63 3.176z"
19
- />
20
- </svg>
21
- );
22
- };
@@ -1,83 +0,0 @@
1
- import { PlusIcon } from "@radix-ui/react-icons";
2
- import type { ThirdwebClient } from "../../../../../../../client/client.js";
3
- import type { Wallet } from "../../../../../../../wallets/interfaces/wallet.js";
4
- import type { WalletId } from "../../../../../../../wallets/wallet-types.js";
5
- import { useCustomTheme } from "../../../../../../core/design-system/CustomThemeProvider.js";
6
- import {
7
- iconSize,
8
- radius,
9
- spacing,
10
- } from "../../../../../../core/design-system/index.js";
11
- import { useConnectedWallets } from "../../../../../../core/hooks/wallets/useConnectedWallets.js";
12
- import { Spacer } from "../../../../components/Spacer.js";
13
- import { Container } from "../../../../components/basic.js";
14
- import { Button } from "../../../../components/buttons.js";
15
- import { Text } from "../../../../components/text.js";
16
- import { WalletSelectorButton } from "../WalletSelectorButton.js";
17
-
18
- export function WalletSwitcherDrawerContent(props: {
19
- client: ThirdwebClient;
20
- showAllWallets: boolean;
21
- wallets: Wallet[] | undefined;
22
- onSelect: (wallet: Wallet) => void;
23
- onBack: () => void;
24
- onConnect: () => void;
25
- selectedAddress: string;
26
- hiddenWallets?: WalletId[];
27
- }) {
28
- const theme = useCustomTheme();
29
- const connectedWallets = useConnectedWallets();
30
-
31
- // if all wallets are connected and showAll wallets is disabled, hide the connect button
32
- const hideConnectButton =
33
- !props.showAllWallets &&
34
- props.wallets?.every((w) => connectedWallets.includes(w));
35
-
36
- return (
37
- <Container>
38
- <Container flex="column" gap="xs">
39
- {connectedWallets
40
- .filter((w) => !props.hiddenWallets?.includes(w.id))
41
- .map((w) => {
42
- const address = w.getAccount()?.address;
43
- return (
44
- <WalletSelectorButton
45
- key={w.id}
46
- walletId={w.id}
47
- client={props.client}
48
- address={address || ""}
49
- onClick={() => {
50
- props.onSelect(w);
51
- props.onBack();
52
- }}
53
- disableChevron
54
- checked={false}
55
- />
56
- );
57
- })}
58
- {!hideConnectButton && (
59
- <Button
60
- variant="secondary"
61
- fullWidth
62
- onClick={props.onConnect}
63
- gap="xs"
64
- bg="tertiaryBg"
65
- style={{
66
- borderRadius: radius.lg,
67
- border: `1px solid ${theme.colors.borderColor}`,
68
- padding: spacing.sm,
69
- }}
70
- >
71
- <Container flex="row" gap="sm" center="y" expand>
72
- <PlusIcon width={iconSize.md} height={iconSize.md} />
73
- <Text size="sm" color="primaryText">
74
- Add Another Wallet
75
- </Text>
76
- </Container>
77
- </Button>
78
- )}
79
- </Container>
80
- <Spacer y="sm" />
81
- </Container>
82
- );
83
- }