thirdweb 5.64.0 → 5.64.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/auth/core/generate-login-payload.js +1 -1
- package/dist/cjs/auth/core/generate-login-payload.js.map +1 -1
- package/dist/cjs/extensions/prebuilts/deploy-vote.js +13 -13
- package/dist/cjs/extensions/prebuilts/deploy-vote.js.map +1 -1
- package/dist/cjs/react/core/utils/walletIcon.js +7 -7
- package/dist/cjs/react/core/utils/walletIcon.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/MenuButton.js +0 -3
- package/dist/cjs/react/web/ui/ConnectWallet/MenuButton.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/WalletSelector.js +2 -2
- package/dist/cjs/react/web/ui/ConnectWallet/WalletSelector.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/WalletTypeRowButton.js +1 -4
- package/dist/cjs/react/web/ui/ConnectWallet/WalletTypeRowButton.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/icons/EmailIcon.js +12 -0
- package/dist/cjs/react/web/ui/ConnectWallet/icons/EmailIcon.js.map +1 -0
- package/dist/cjs/react/web/ui/ConnectWallet/icons/FingerPrintIcon.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/icons/FingerPrintIcon.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/icons/GuestIcon.js +12 -0
- package/dist/cjs/react/web/ui/ConnectWallet/icons/GuestIcon.js.map +1 -0
- package/dist/cjs/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/icons/PhoneIcon.js +12 -0
- package/dist/cjs/react/web/ui/ConnectWallet/icons/PhoneIcon.js.map +1 -0
- package/dist/cjs/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.js +5 -2
- package/dist/cjs/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/components/WalletImage.js +34 -9
- package/dist/cjs/react/web/ui/components/WalletImage.js.map +1 -1
- package/dist/cjs/react/web/wallets/in-app/WalletAuth.js +9 -2
- package/dist/cjs/react/web/wallets/in-app/WalletAuth.js.map +1 -1
- package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js +11 -6
- package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/auth/core/generate-login-payload.js +1 -1
- package/dist/esm/auth/core/generate-login-payload.js.map +1 -1
- package/dist/esm/extensions/prebuilts/deploy-vote.js +13 -13
- package/dist/esm/extensions/prebuilts/deploy-vote.js.map +1 -1
- package/dist/esm/react/core/utils/walletIcon.js +3 -3
- package/dist/esm/react/core/utils/walletIcon.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/MenuButton.js +0 -3
- package/dist/esm/react/web/ui/ConnectWallet/MenuButton.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/WalletSelector.js +2 -2
- package/dist/esm/react/web/ui/ConnectWallet/WalletSelector.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/WalletTypeRowButton.js +2 -5
- package/dist/esm/react/web/ui/ConnectWallet/WalletTypeRowButton.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/icons/EmailIcon.js +8 -0
- package/dist/esm/react/web/ui/ConnectWallet/icons/EmailIcon.js.map +1 -0
- package/dist/esm/react/web/ui/ConnectWallet/icons/FingerPrintIcon.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/icons/FingerPrintIcon.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/icons/GuestIcon.js +8 -0
- package/dist/esm/react/web/ui/ConnectWallet/icons/GuestIcon.js.map +1 -0
- package/dist/esm/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/icons/PhoneIcon.js +8 -0
- package/dist/esm/react/web/ui/ConnectWallet/icons/PhoneIcon.js.map +1 -0
- package/dist/esm/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.js +5 -2
- package/dist/esm/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.js.map +1 -1
- package/dist/esm/react/web/ui/components/WalletImage.js +34 -9
- package/dist/esm/react/web/ui/components/WalletImage.js.map +1 -1
- package/dist/esm/react/web/wallets/in-app/WalletAuth.js +9 -2
- package/dist/esm/react/web/wallets/in-app/WalletAuth.js.map +1 -1
- package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js +12 -7
- package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/react/core/utils/walletIcon.d.ts +0 -3
- package/dist/types/react/core/utils/walletIcon.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/MenuButton.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/WalletTypeRowButton.d.ts +2 -1
- package/dist/types/react/web/ui/ConnectWallet/WalletTypeRowButton.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/icons/EmailIcon.d.ts +6 -0
- package/dist/types/react/web/ui/ConnectWallet/icons/EmailIcon.d.ts.map +1 -0
- package/dist/types/react/web/ui/ConnectWallet/icons/GuestIcon.d.ts +6 -0
- package/dist/types/react/web/ui/ConnectWallet/icons/GuestIcon.d.ts.map +1 -0
- package/dist/types/react/web/ui/ConnectWallet/icons/PhoneIcon.d.ts +6 -0
- package/dist/types/react/web/ui/ConnectWallet/icons/PhoneIcon.d.ts.map +1 -0
- package/dist/types/react/web/ui/ConnectWallet/icons/types.d.ts +1 -0
- package/dist/types/react/web/ui/ConnectWallet/icons/types.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.d.ts.map +1 -1
- package/dist/types/react/web/ui/components/WalletImage.d.ts.map +1 -1
- package/dist/types/react/web/wallets/in-app/WalletAuth.d.ts.map +1 -1
- package/dist/types/react/web/wallets/shared/ConnectWalletSocialOptions.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/auth/core/generate-login-payload.test.ts +1 -1
- package/src/auth/core/generate-login-payload.ts +1 -1
- package/src/extensions/prebuilts/deploy-vote.test.ts +1 -46
- package/src/extensions/prebuilts/deploy-vote.ts +21 -20
- package/src/extensions/split/split.test.ts +76 -0
- package/src/extensions/vote/{read/proposalExists.test.ts → vote.test.ts} +21 -52
- package/src/react/core/utils/walletIcon.ts +3 -3
- package/src/react/web/ui/ConnectWallet/MenuButton.tsx +0 -3
- package/src/react/web/ui/ConnectWallet/WalletSelector.tsx +2 -2
- package/src/react/web/ui/ConnectWallet/WalletTypeRowButton.tsx +4 -17
- package/src/react/web/ui/ConnectWallet/icons/EmailIcon.tsx +30 -0
- package/src/react/web/ui/ConnectWallet/icons/FingerPrintIcon.tsx +9 -9
- package/src/react/web/ui/ConnectWallet/icons/GuestIcon.tsx +24 -0
- package/src/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.tsx +2 -2
- package/src/react/web/ui/ConnectWallet/icons/PhoneIcon.tsx +32 -0
- package/src/react/web/ui/ConnectWallet/icons/types.ts +1 -1
- package/src/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.tsx +10 -1
- package/src/react/web/ui/components/WalletImage.tsx +48 -21
- package/src/react/web/wallets/in-app/WalletAuth.tsx +14 -2
- package/src/react/web/wallets/shared/ConnectWalletSocialOptions.tsx +12 -13
- package/src/version.ts +1 -1
- package/src/wallets/smart/smart-wallet-integration.test.ts +11 -8
- package/src/extensions/prebuilts/deploy-split.test.ts +0 -31
- package/src/extensions/split/read/getAllRecipientsAddresses.test.ts +0 -41
- package/src/extensions/split/read/getAllRecipientsPercentages.test.ts +0 -50
- package/src/extensions/split/read/getRecipientSplitPercentage.test.ts +0 -49
@@ -136,6 +136,27 @@ async function getInitializeTransaction(options: {
|
|
136
136
|
external_link,
|
137
137
|
social_urls,
|
138
138
|
} = params;
|
139
|
+
|
140
|
+
// Validate initialVoteQuorumFraction
|
141
|
+
const _num = Number(minVoteQuorumRequiredPercent);
|
142
|
+
if (Number.isNaN(_num)) {
|
143
|
+
throw new Error(
|
144
|
+
`${minVoteQuorumRequiredPercent} is not a valid minVoteQuorumRequiredPercent`,
|
145
|
+
);
|
146
|
+
}
|
147
|
+
if (_num < 0 || _num > 100) {
|
148
|
+
throw new Error("minVoteQuorumRequiredPercent must be >= 0 and <= 100");
|
149
|
+
}
|
150
|
+
|
151
|
+
// Make sure if user is passing a float, it should only have 2 digit after the decimal point
|
152
|
+
if (!Number.isInteger(_num)) {
|
153
|
+
throw new Error(
|
154
|
+
`${_num} is an invalid value. Only integer-like values accepted`,
|
155
|
+
);
|
156
|
+
}
|
157
|
+
|
158
|
+
const initialVoteQuorumFraction = BigInt(_num);
|
159
|
+
|
139
160
|
const tokenErc20Contract = getContract({
|
140
161
|
address: tokenAddress,
|
141
162
|
client,
|
@@ -177,26 +198,6 @@ async function getInitializeTransaction(options: {
|
|
177
198
|
})) ||
|
178
199
|
"";
|
179
200
|
|
180
|
-
// Validate initialVoteQuorumFraction
|
181
|
-
const _num = Number(minVoteQuorumRequiredPercent);
|
182
|
-
if (Number.isNaN(_num)) {
|
183
|
-
throw new Error(
|
184
|
-
`${minVoteQuorumRequiredPercent} is not a valid minVoteQuorumRequiredPercent`,
|
185
|
-
);
|
186
|
-
}
|
187
|
-
if (_num < 0 || _num > 100) {
|
188
|
-
throw new Error("minVoteQuorumRequiredPercent must be >= 0 and <= 100");
|
189
|
-
}
|
190
|
-
|
191
|
-
// Make sure if user is passing a float, it should only have 2 digit after the decimal point
|
192
|
-
if (!Number.isInteger(_num)) {
|
193
|
-
throw new Error(
|
194
|
-
`${_num} is an invalid value. Only integer-like values accepted`,
|
195
|
-
);
|
196
|
-
}
|
197
|
-
|
198
|
-
const initialVoteQuorumFraction = BigInt(_num);
|
199
|
-
|
200
201
|
return initialize({
|
201
202
|
contract: implementationContract,
|
202
203
|
name,
|
@@ -0,0 +1,76 @@
|
|
1
|
+
import { beforeAll, describe, expect, it } from "vitest";
|
2
|
+
import { ANVIL_CHAIN } from "~test/chains.js";
|
3
|
+
import { TEST_CLIENT } from "~test/test-clients.js";
|
4
|
+
import { TEST_ACCOUNT_D } from "~test/test-wallets.js";
|
5
|
+
import { type ThirdwebContract, getContract } from "../../contract/contract.js";
|
6
|
+
import { isAddress } from "../../utils/address.js";
|
7
|
+
import { deploySplitContract } from "../prebuilts/deploy-split.js";
|
8
|
+
import { getAllRecipientsAddresses } from "./read/getAllRecipientsAddresses.js";
|
9
|
+
import { getAllRecipientsPercentages } from "./read/getAllRecipientsPercentages.js";
|
10
|
+
import { getRecipientSplitPercentage } from "./read/getRecipientSplitPercentage.js";
|
11
|
+
|
12
|
+
let contract: ThirdwebContract;
|
13
|
+
const chain = ANVIL_CHAIN;
|
14
|
+
const client = TEST_CLIENT;
|
15
|
+
|
16
|
+
describe.runIf(process.env.TW_SECRET_KEY)("Split contract tests", () => {
|
17
|
+
beforeAll(async () => {
|
18
|
+
const address = await deploySplitContract({
|
19
|
+
account: TEST_ACCOUNT_D,
|
20
|
+
client,
|
21
|
+
chain,
|
22
|
+
params: {
|
23
|
+
name: "split-contract",
|
24
|
+
payees: [
|
25
|
+
"0x12345674b599ce99958242b3D3741e7b01841DF3",
|
26
|
+
"0xA6f11e47dE28B3dB934e945daeb6F538E9019694",
|
27
|
+
],
|
28
|
+
shares: [
|
29
|
+
5100n, // 51%
|
30
|
+
4900n, // 49%
|
31
|
+
],
|
32
|
+
},
|
33
|
+
});
|
34
|
+
expect(address).toBeDefined();
|
35
|
+
expect(isAddress(address)).toBe(true);
|
36
|
+
contract = getContract({
|
37
|
+
address,
|
38
|
+
client,
|
39
|
+
chain,
|
40
|
+
});
|
41
|
+
}, 60_000);
|
42
|
+
|
43
|
+
it("should return all recipient addresses", async () => {
|
44
|
+
const result = await getAllRecipientsAddresses({ contract });
|
45
|
+
expect(result).toStrictEqual([
|
46
|
+
"0x12345674b599ce99958242b3D3741e7b01841DF3",
|
47
|
+
"0xA6f11e47dE28B3dB934e945daeb6F538E9019694",
|
48
|
+
]);
|
49
|
+
});
|
50
|
+
|
51
|
+
it("should return all recipients and their share percentages", async () => {
|
52
|
+
const result = await getAllRecipientsPercentages({ contract });
|
53
|
+
expect(result).toStrictEqual([
|
54
|
+
{
|
55
|
+
address: "0x12345674b599ce99958242b3D3741e7b01841DF3",
|
56
|
+
splitPercentage: 51,
|
57
|
+
},
|
58
|
+
{
|
59
|
+
address: "0xA6f11e47dE28B3dB934e945daeb6F538E9019694",
|
60
|
+
splitPercentage: 49,
|
61
|
+
},
|
62
|
+
]);
|
63
|
+
});
|
64
|
+
|
65
|
+
it("should return split percentage for individual recipient", async () => {
|
66
|
+
const result = await getRecipientSplitPercentage({
|
67
|
+
contract,
|
68
|
+
recipientAddress: "0x12345674b599ce99958242b3D3741e7b01841DF3",
|
69
|
+
});
|
70
|
+
|
71
|
+
expect(result).toStrictEqual({
|
72
|
+
address: "0x12345674b599ce99958242b3D3741e7b01841DF3",
|
73
|
+
splitPercentage: 51,
|
74
|
+
});
|
75
|
+
});
|
76
|
+
});
|
@@ -3,22 +3,22 @@ import { ANVIL_CHAIN } from "~test/chains.js";
|
|
3
3
|
import { TEST_CONTRACT_URI } from "~test/ipfs-uris.js";
|
4
4
|
import { TEST_CLIENT } from "~test/test-clients.js";
|
5
5
|
import { TEST_ACCOUNT_C } from "~test/test-wallets.js";
|
6
|
-
import { getContract } from "
|
7
|
-
import {
|
8
|
-
import {
|
9
|
-
import {
|
10
|
-
import {
|
11
|
-
import {
|
12
|
-
import { propose } from "
|
13
|
-
import { getAll } from "./getAll.js";
|
14
|
-
import { proposalExists } from "./proposalExists.js";
|
6
|
+
import { getContract } from "../../contract/contract.js";
|
7
|
+
import { sendAndConfirmTransaction } from "../../transaction/actions/send-and-confirm-transaction.js";
|
8
|
+
import { delegate } from "../erc20/__generated__/IVotes/write/delegate.js";
|
9
|
+
import { mintTo } from "../erc20/write/mintTo.js";
|
10
|
+
import { deployERC20Contract } from "../prebuilts/deploy-erc20.js";
|
11
|
+
import { deployVoteContract } from "../prebuilts/deploy-vote.js";
|
12
|
+
import { propose } from "./__generated__/Vote/write/propose.js";
|
13
|
+
import { getAll } from "./read/getAll.js";
|
14
|
+
import { proposalExists } from "./read/proposalExists.js";
|
15
15
|
|
16
16
|
const account = TEST_ACCOUNT_C;
|
17
17
|
const client = TEST_CLIENT;
|
18
18
|
const chain = ANVIL_CHAIN;
|
19
19
|
|
20
20
|
describe.runIf(process.env.TW_SECRET_KEY)("proposal exists", () => {
|
21
|
-
it("
|
21
|
+
it("`proposalExists` and `propose` should work", async () => {
|
22
22
|
const tokenAddress = await deployERC20Contract({
|
23
23
|
client: TEST_CLIENT,
|
24
24
|
chain: ANVIL_CHAIN,
|
@@ -42,47 +42,16 @@ describe.runIf(process.env.TW_SECRET_KEY)("proposal exists", () => {
|
|
42
42
|
minVoteQuorumRequiredPercent: 51,
|
43
43
|
},
|
44
44
|
});
|
45
|
-
|
46
|
-
const contract = getContract({
|
45
|
+
const voteContract = getContract({
|
47
46
|
address,
|
48
47
|
chain,
|
49
48
|
client,
|
50
49
|
});
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
});
|
55
|
-
|
56
|
-
it("should return true if Vote has the proposal (id)", async () => {
|
57
|
-
const tokenAddress = await deployERC20Contract({
|
58
|
-
client: TEST_CLIENT,
|
59
|
-
chain: ANVIL_CHAIN,
|
60
|
-
account,
|
61
|
-
type: "TokenERC20",
|
62
|
-
params: {
|
63
|
-
name: "Token",
|
64
|
-
contractURI: TEST_CONTRACT_URI,
|
65
|
-
},
|
66
|
-
});
|
67
|
-
const address = await deployVoteContract({
|
68
|
-
account,
|
69
|
-
client: TEST_CLIENT,
|
70
|
-
chain: ANVIL_CHAIN,
|
71
|
-
params: {
|
72
|
-
name: "",
|
73
|
-
contractURI: TEST_CONTRACT_URI,
|
74
|
-
tokenAddress: tokenAddress,
|
75
|
-
initialProposalThreshold: "0.5",
|
76
|
-
initialVotingPeriod: 10,
|
77
|
-
minVoteQuorumRequiredPercent: 51,
|
78
|
-
},
|
79
|
-
});
|
80
|
-
|
81
|
-
const contract = getContract({
|
82
|
-
address,
|
83
|
-
chain,
|
84
|
-
client,
|
50
|
+
const result = await proposalExists({
|
51
|
+
contract: voteContract,
|
52
|
+
proposalId: 0n,
|
85
53
|
});
|
54
|
+
expect(result).toBe(false);
|
86
55
|
|
87
56
|
const tokenContract = getContract({
|
88
57
|
address: tokenAddress,
|
@@ -105,19 +74,19 @@ describe.runIf(process.env.TW_SECRET_KEY)("proposal exists", () => {
|
|
105
74
|
|
106
75
|
// step 3: create a proposal
|
107
76
|
const transaction = propose({
|
108
|
-
contract,
|
77
|
+
contract: voteContract,
|
109
78
|
description: "first proposal",
|
110
|
-
targets: [
|
79
|
+
targets: [voteContract.address],
|
111
80
|
values: [0n],
|
112
81
|
calldatas: ["0x"],
|
113
82
|
});
|
114
83
|
await sendAndConfirmTransaction({ transaction, account });
|
115
|
-
const allProposals = await getAll({ contract });
|
84
|
+
const allProposals = await getAll({ contract: voteContract });
|
116
85
|
expect(allProposals.length).toBe(1);
|
117
|
-
const
|
118
|
-
contract,
|
86
|
+
const exists = await proposalExists({
|
87
|
+
contract: voteContract,
|
119
88
|
proposalId: allProposals[0]?.proposalId || -1n,
|
120
89
|
});
|
121
|
-
expect(
|
90
|
+
expect(exists).toBe(true);
|
122
91
|
});
|
123
92
|
});
|
@@ -23,9 +23,9 @@ const githubIconUri =
|
|
23
23
|
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTA2IiBoZWlnaHQ9IjEwNiIgdmlld0JveD0iMCAwIDEwNiAxMDYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxjaXJjbGUgY3g9IjUzIiBjeT0iNTMiIHI9IjUzIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTUyLjg1NCA0QzI1LjgzOSA0IDQgMjYgNCA1My4yMTdDNCA3NC45NzMgMTcuOTkzIDkzLjM4OSAzNy40MDUgOTkuOTA3QzM5LjgzMiAxMDAuMzk3IDQwLjcyMSA5OC44NDggNDAuNzIxIDk3LjU0NUM0MC43MjEgOTYuNDA0IDQwLjY0MSA5Mi40OTMgNDAuNjQxIDg4LjQxOEMyNy4wNTEgOTEuMzUyIDI0LjIyMSA4Mi41NTEgMjQuMjIxIDgyLjU1MUMyMi4wMzcgNzYuODQ3IDE4LjgwMSA3NS4zODEgMTguODAxIDc1LjM4MUMxNC4zNTMgNzIuMzY2IDE5LjEyNSA3Mi4zNjYgMTkuMTI1IDcyLjM2NkMyNC4wNTkgNzIuNjkyIDI2LjY0OCA3Ny40MTggMjYuNjQ4IDc3LjQxOEMzMS4wMTUgODQuOTE0IDM4LjA1MiA4Mi43OTYgNDAuODgzIDgxLjQ5MkM0MS4yODcgNzguMzE0IDQyLjU4MiA3Ni4xMTQgNDMuOTU3IDc0Ljg5MkMzMy4xMTggNzMuNzUxIDIxLjcxNCA2OS41MTQgMjEuNzE0IDUwLjYwOUMyMS43MTQgNDUuMjMxIDIzLjY1NCA0MC44MzEgMjYuNzI4IDM3LjQwOUMyNi4yNDMgMzYuMTg3IDI0LjU0NCAzMS4xMzQgMjcuMjE0IDI0LjM3MUMyNy4yMTQgMjQuMzcxIDMxLjMzOSAyMy4wNjcgNDAuNjQgMjkuNDIzQzQ0LjYyMjEgMjguMzQ1NyA0OC43Mjg4IDI3Ljc5NzYgNTIuODU0IDI3Ljc5M0M1Ni45NzkgMjcuNzkzIDYxLjE4NCAyOC4zNjQgNjUuMDY3IDI5LjQyM0M3NC4zNjkgMjMuMDY3IDc4LjQ5NCAyNC4zNzEgNzguNDk0IDI0LjM3MUM4MS4xNjQgMzEuMTM0IDc5LjQ2NCAzNi4xODcgNzguOTc5IDM3LjQwOUM4Mi4xMzQgNDAuODMxIDgzLjk5NCA0NS4yMzEgODMuOTk0IDUwLjYwOUM4My45OTQgNjkuNTE0IDcyLjU5IDczLjY2OSA2MS42NyA3NC44OTJDNjMuNDUgNzYuNDQgNjQuOTg2IDc5LjM3MyA2NC45ODYgODQuMDE4QzY0Ljk4NiA5MC42MTggNjQuOTA2IDk1LjkxNSA2NC45MDYgOTcuNTQ0QzY0LjkwNiA5OC44NDggNjUuNzk2IDEwMC4zOTcgNjguMjIyIDk5LjkwOEM4Ny42MzQgOTMuMzg4IDEwMS42MjcgNzQuOTczIDEwMS42MjcgNTMuMjE3QzEwMS43MDcgMjYgNzkuNzg4IDQgNTIuODU0IDRaIiBmaWxsPSIjMjQyOTJGIi8+Cjwvc3ZnPgo=";
|
24
24
|
const xIcon =
|
25
25
|
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIwIiBoZWlnaHQ9IjMyMCIgdmlld0JveD0iMCAwIDMyMCAzMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIzMjAiIGhlaWdodD0iMzIwIiByeD0iMjQiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xNzcuMzE1IDE0NS4zMzVMMjQ1LjA2OCA2N0gyMjkuMDEzTDE3MC4xODIgMTM1LjAxN0wxMjMuMTk1IDY3SDY5TDE0MC4wNTUgMTY5Ljg1NEw2OSAyNTJIODUuMDU2M0wxNDcuMTgzIDE4MC4xNzJMMTk2LjgwNSAyNTJIMjUxTDE3Ny4zMTEgMTQ1LjMzNUgxNzcuMzE1Wk0xNTUuMzIzIDE3MC43NkwxNDguMTI0IDE2MC41MThMOTAuODQxNyA3OS4wMjJIMTE1LjUwM0wxNjEuNzMxIDE0NC43OTJMMTY4LjkzIDE1NS4wMzRMMjI5LjAyIDI0MC41MjVIMjA0LjM1OUwxNTUuMzIzIDE3MC43NjRWMTcwLjc2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==";
|
26
|
-
|
26
|
+
const emailIcon =
|
27
27
|
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEzLjMzMzUgMi42NjY1SDIuNjY2ODNDMS45MzA0NSAyLjY2NjUgMS4zMzM1IDMuMjYzNDYgMS4zMzM1IDMuOTk5ODRWMTEuOTk5OEMxLjMzMzUgMTIuNzM2MiAxLjkzMDQ1IDEzLjMzMzIgMi42NjY4MyAxMy4zMzMySDEzLjMzMzVDMTQuMDY5OSAxMy4zMzMyIDE0LjY2NjggMTIuNzM2MiAxNC42NjY4IDExLjk5OThWMy45OTk4NEMxNC42NjY4IDMuMjYzNDYgMTQuMDY5OSAyLjY2NjUgMTMuMzMzNSAyLjY2NjVaIiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTQuNjY2OCA0LjY2NjVMOC42ODY4MyA4LjQ2NjVDOC40ODEwMSA4LjU5NTQ1IDguMjQzMDQgOC42NjM4NCA4LjAwMDE2IDguNjYzODRDNy43NTcyOCA4LjY2Mzg0IDcuNTE5MzEgOC41OTU0NSA3LjMxMzUgOC40NjY1TDEuMzMzNSA0LjY2NjUiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=";
|
28
|
-
|
28
|
+
const phoneIcon =
|
29
29
|
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzU2MzlfNjMyKSI+CjxwYXRoIGQ9Ik0xNC42NjY5IDExLjI4MDJWMTMuMjgwMkMxNC42Njc3IDEzLjQ2NTkgMTQuNjI5NyAxMy42NDk3IDE0LjU1NTMgMTMuODE5OEMxNC40ODA5IDEzLjk4OTkgMTQuMzcxOCAxNC4xNDI2IDE0LjIzNSAxNC4yNjgxQzE0LjA5ODIgMTQuMzkzNyAxMy45MzY3IDE0LjQ4OTIgMTMuNzYwOCAxNC41NDg3QzEzLjU4NDkgMTQuNjA4MiAxMy4zOTg1IDE0LjYzMDMgMTMuMjEzNiAxNC42MTM2QzExLjE2MjIgMTQuMzkwNyA5LjE5MTYxIDEzLjY4OTcgNy40NjAyOCAxMi41NjY5QzUuODQ5NSAxMS41NDMzIDQuNDgzODQgMTAuMTc3NyAzLjQ2MDI4IDguNTY2ODlDMi4zMzM2IDYuODI3NyAxLjYzMjQ0IDQuODQ3NTYgMS40MTM2MSAyLjc4Njg5QzEuMzk2OTUgMi42MDI1NCAxLjQxODg2IDIuNDE2NzMgMS40Nzc5NSAyLjI0MTMxQzEuNTM3MDMgMi4wNjU4OSAxLjYzMTk5IDEuOTA0NjkgMS43NTY3OSAxLjc2Nzk3QzEuODgxNTkgMS42MzEyNiAyLjAzMzQ4IDEuNTIyMDMgMi4yMDI4MSAxLjQ0NzI0QzIuMzcyMTMgMS4zNzI0NSAyLjU1NTE3IDEuMzMzNzQgMi43NDAyOCAxLjMzMzU2SDQuNzQwMjhDNS4wNjM4MiAxLjMzMDM4IDUuMzc3NDggMS40NDQ5NSA1LjYyMjc5IDEuNjU1OTJDNS44NjgxIDEuODY2ODkgNi4wMjgzMyAyLjE1OTg2IDYuMDczNjEgMi40ODAyM0M2LjE1ODAzIDMuMTIwMjcgNi4zMTQ1OCAzLjc0ODcxIDYuNTQwMjggNC4zNTM1NkM2LjYyOTk4IDQuNTkyMTggNi42NDkzOSA0Ljg1MTUgNi41OTYyMiA1LjEwMDgxQzYuNTQzMDUgNS4zNTAxMiA2LjQxOTUyIDUuNTc4OTcgNi4yNDAyOCA1Ljc2MDIzTDUuMzkzNjEgNi42MDY4OUM2LjM0MjY1IDguMjc1OTIgNy43MjQ1OCA5LjY1Nzg2IDkuMzkzNjEgMTAuNjA2OUwxMC4yNDAzIDkuNzYwMjNDMTAuNDIxNSA5LjU4MDk5IDEwLjY1MDQgOS40NTc0NiAxMC44OTk3IDkuNDA0MjlDMTEuMTQ5IDkuMzUxMTIgMTEuNDA4MyA5LjM3MDUzIDExLjY0NjkgOS40NjAyM0MxMi4yNTE4IDkuNjg1OTMgMTIuODgwMiA5Ljg0MjQ4IDEzLjUyMDMgOS45MjY4OUMxMy44NDQxIDkuOTcyNTggMTQuMTM5OSAxMC4xMzU3IDE0LjM1MTMgMTAuMzg1MkMxNC41NjI3IDEwLjYzNDggMTQuNjc1MSAxMC45NTMzIDE0LjY2NjkgMTEuMjgwMloiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF81NjM5XzYzMiI+CjxyZWN0IHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K";
|
30
30
|
export const genericTokenIcon =
|
31
31
|
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQwNDhfNDIzMSkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNTg0IDQuODU1NjZDNy43MTA2OSA0Ljc4MjUyIDcuODU0MzkgNC43NDQwMiA4LjAwMDY3IDQuNzQ0MDJDOC4xNDY5NSA0Ljc0NDAyIDguMjkwNjUgNC43ODI1MiA4LjQxNzM0IDQuODU1NjZMMTAuNTE1MyA2LjA2NjY2QzEwLjY0MiA2LjEzOTggMTAuNzQ3MiA2LjI0NSAxMC44MjA0IDYuMzcxNjhDMTAuODkzNSA2LjQ5ODM1IDEwLjkzMiA2LjY0MjA1IDEwLjkzMiA2Ljc4ODMzVjkuMjExQzEwLjkzMiA5LjM1NzI3IDEwLjg5MzUgOS41MDA5NyAxMC44MjA0IDkuNjI3NjVDMTAuNzQ3MiA5Ljc1NDMzIDEwLjY0MiA5Ljg1OTUzIDEwLjUxNTMgOS45MzI2Nkw4LjQxNzM0IDExLjE0NEM4LjI5MDY1IDExLjIxNzEgOC4xNDY5NSAxMS4yNTU2IDguMDAwNjcgMTEuMjU1NkM3Ljg1NDM5IDExLjI1NTYgNy43MTA2OSAxMS4yMTcxIDcuNTg0IDExLjE0NEw1LjQ4NiA5LjkzMjY2QzUuMzU5MzIgOS44NTk1MyA1LjI1NDEzIDkuNzU0MzMgNS4xODA5OSA5LjYyNzY1QzUuMTA3ODUgOS41MDA5NyA1LjA2OTM0IDkuMzU3MjcgNS4wNjkzNCA5LjIxMVY2Ljc4ODY2QzUuMDY5MjggNi42NDIzMyA1LjEwNzc2IDYuNDk4NTYgNS4xODA5IDYuMzcxODJDNS4yNTQwNSA2LjI0NTA4IDUuMzU5MjcgNi4xMzk4MyA1LjQ4NiA2LjA2NjY2TDcuNTg0IDQuODU1NjZaTTguMDg0IDUuNDMzQzguMDU4NjcgNS40MTgzNyA4LjAyOTkzIDUuNDEwNjcgOC4wMDA2NyA1LjQxMDY3QzcuOTcxNDEgNS40MTA2NyA3Ljk0MjY3IDUuNDE4MzcgNy45MTczNCA1LjQzM0w1LjgxOTM0IDYuNjQ0MzNDNS43OTQgNi42NTg5NiA1Ljc3Mjk2IDYuNjggNS43NTgzMyA2LjcwNTMzQzUuNzQzNyA2LjczMDY3IDUuNzM2IDYuNzU5NDEgNS43MzYgNi43ODg2NlY5LjIxMTMzQzUuNzM2IDkuMjQwNTkgNS43NDM3IDkuMjY5MzMgNS43NTgzMyA5LjI5NDY2QzUuNzcyOTYgOS4zMiA1Ljc5NCA5LjM0MTA0IDUuODE5MzQgOS4zNTU2Nkw3LjkxNzM0IDEwLjU2NjdDNy45NDI2NyAxMC41ODEzIDcuOTcxNDEgMTAuNTg5IDguMDAwNjcgMTAuNTg5QzguMDI5OTMgMTAuNTg5IDguMDU4NjcgMTAuNTgxMyA4LjA4NCAxMC41NjY3TDEwLjE4MiA5LjM1NTMzQzEwLjIwNzMgOS4zNDA3IDEwLjIyODQgOS4zMTk2NiAxMC4yNDMgOS4yOTQzM0MxMC4yNTc2IDkuMjY4OTkgMTAuMjY1MyA5LjI0MDI1IDEwLjI2NTMgOS4yMTFWNi43ODg2NkMxMC4yNjUzIDYuNzU5NDEgMTAuMjU3NiA2LjczMDY3IDEwLjI0MyA2LjcwNTMzQzEwLjIyODQgNi42OCAxMC4yMDczIDYuNjU4OTYgMTAuMTgyIDYuNjQ0MzNMOC4wODQgNS40MzNaIiBmaWxsPSIjNUM1QzVDIi8+CjwvZz4KPGNpcmNsZSBjeD0iOCIgY3k9IjgiIHI9IjcuNjkyMzEiIHN0cm9rZT0iIzVDNUM1QyIgc3Ryb2tlLXdpZHRoPSIwLjYxNTM4NSIvPgo8Y2lyY2xlIGN4PSI3Ljk5OTU1IiBjeT0iOC4wMDAwNCIgcj0iNS44NDYxNSIgc3Ryb2tlPSIjNUM1QzVDIiBzdHJva2Utd2lkdGg9IjAuNjE1Mzg1Ii8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzQwNDhfNDIzMSI+CjxyZWN0IHdpZHRoPSI4IiBoZWlnaHQ9IjgiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0IDQpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==";
|
@@ -33,7 +33,7 @@ const guestIcon =
|
|
33
33
|
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDIxVjE5QzE5IDE3LjkzOTEgMTguNTc4NiAxNi45MjE3IDE3LjgyODQgMTYuMTcxNkMxNy4wNzgzIDE1LjQyMTQgMTYuMDYwOSAxNSAxNSAxNUg5QzcuOTM5MTMgMTUgNi45MjE3MiAxNS40MjE0IDYuMTcxNTcgMTYuMTcxNkM1LjQyMTQzIDE2LjkyMTcgNSAxNy45MzkxIDUgMTlWMjEiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEyIDExQzE0LjIwOTEgMTEgMTYgOS4yMDkxNCAxNiA3QzE2IDQuNzkwODYgMTQuMjA5MSAzIDEyIDNDOS43OTA4NiAzIDggNC43OTA4NiA4IDdDOCA5LjIwOTE0IDkuNzkwODYgMTEgMTIgMTFaIiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=";
|
34
34
|
export const genericWalletIcon =
|
35
35
|
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyLjY2NjcgNC42NjY2N1YyLjY2NjY3QzEyLjY2NjcgMi40ODk4NiAxMi41OTY0IDIuMzIwMjkgMTIuNDcxNCAyLjE5NTI2QzEyLjM0NjQgMi4wNzAyNCAxMi4xNzY4IDIgMTIgMkgzLjMzMzMzQzIuOTc5NzEgMiAyLjY0MDU3IDIuMTQwNDggMi4zOTA1MiAyLjM5MDUyQzIuMTQwNDggMi42NDA1NyAyIDIuOTc5NzEgMiAzLjMzMzMzQzIgMy42ODY5NiAyLjE0MDQ4IDQuMDI2MDkgMi4zOTA1MiA0LjI3NjE0QzIuNjQwNTcgNC41MjYxOSAyLjk3OTcxIDQuNjY2NjcgMy4zMzMzMyA0LjY2NjY3SDEzLjMzMzNDMTMuNTEwMSA0LjY2NjY3IDEzLjY3OTcgNC43MzY5IDEzLjgwNDcgNC44NjE5M0MxMy45Mjk4IDQuOTg2OTUgMTQgNS4xNTY1MiAxNCA1LjMzMzMzVjhNMTQgOEgxMkMxMS42NDY0IDggMTEuMzA3MiA4LjE0MDQ4IDExLjA1NzIgOC4zOTA1MkMxMC44MDcxIDguNjQwNTcgMTAuNjY2NyA4Ljk3OTcxIDEwLjY2NjcgOS4zMzMzM0MxMC42NjY3IDkuNjg2OTYgMTAuODA3MSAxMC4wMjYxIDExLjA1NzIgMTAuMjc2MUMxMS4zMDcyIDEwLjUyNjIgMTEuNjQ2NCAxMC42NjY3IDEyIDEwLjY2NjdIMTRDMTQuMTc2OCAxMC42NjY3IDE0LjM0NjQgMTAuNTk2NCAxNC40NzE0IDEwLjQ3MTRDMTQuNTk2NCAxMC4zNDY0IDE0LjY2NjcgMTAuMTc2OCAxNC42NjY3IDEwVjguNjY2NjdDMTQuNjY2NyA4LjQ4OTg2IDE0LjU5NjQgOC4zMjAyOSAxNC40NzE0IDguMTk1MjZDMTQuMzQ2NCA4LjA3MDI0IDE0LjE3NjggOCAxNCA4WiIgc3Ryb2tlPSIjMzM4NUZGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTIgMy4zMzM1VjEyLjY2NjhDMiAxMy4wMjA1IDIuMTQwNDggMTMuMzU5NiAyLjM5MDUyIDEzLjYwOTZDMi42NDA1NyAxMy44NTk3IDIuOTc5NzEgMTQuMDAwMiAzLjMzMzMzIDE0LjAwMDJIMTMuMzMzM0MxMy41MTAxIDE0LjAwMDIgMTMuNjc5NyAxMy45Mjk5IDEzLjgwNDcgMTMuODA0OUMxMy45Mjk4IDEzLjY3OTkgMTQgMTMuNTEwMyAxNCAxMy4zMzM1VjEwLjY2NjgiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=";
|
36
|
-
|
36
|
+
const passkeyIcon =
|
37
37
|
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzU2MzlfMzIpIj4KPHBhdGggZD0iTTcuOTk5NTkgNi42NjY1QzcuNjQ1OTYgNi42NjY1IDcuMzA2ODMgNi44MDY5OCA3LjA1Njc4IDcuMDU3MDNDNi44MDY3MyA3LjMwNzA4IDYuNjY2MjUgNy42NDYyMiA2LjY2NjI1IDcuOTk5ODRDNi42NjYyNSA4LjY3OTg0IDYuNTk5NTkgOS42NzMxNyA2LjQ5MjkyIDEwLjY2NjUiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLXdpZHRoPSIxLjI1NDkiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNOS4zMzI5MyA4Ljc0NjU4QzkuMzMyOTMgMTAuMzMzMiA5LjMzMjkzIDEyLjk5OTkgOC42NjYyNiAxNC42NjY2IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTExLjUyNzMgMTQuMDEzM0MxMS42MDczIDEzLjYxMzMgMTEuODE0IDEyLjQ4IDExLjg2MDcgMTIiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLXdpZHRoPSIxLjI1NDkiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMS4zMzM5OCA4LjAwMDE2QzEuMzMzOTggNi42MDA5NSAxLjc3NDIzIDUuMjM3MiAyLjU5MjM3IDQuMTAyMDlDMy40MTA1MSAyLjk2Njk5IDQuNTY1MDUgMi4xMTgwOCA1Ljg5MjQ3IDEuNjc1NjFDNy4yMTk4OCAxLjIzMzE0IDguNjUyODYgMS4yMTk1NCA5Ljk4ODQ0IDEuNjM2NzRDMTEuMzI0IDIuMDUzOTQgMTIuNDk0NSAyLjg4MDc5IDEzLjMzNCA0LjAwMDE2IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEuMzMzOTggMTAuNjY2NUgxLjMzOTE0IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTE0LjUzMjcgMTAuNjY2NUMxNC42NjYgOS4zMzMxNyAxNC42MiA3LjA5NzE3IDE0LjUzMjcgNi42NjY1IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTMuMzMzOTggMTIuOTk5OEMzLjY2NzMyIDExLjk5OTggNC4wMDA2NSA5Ljk5OTg0IDQuMDAwNjUgNy45OTk4NEMzLjk5OTk4IDcuNTQ1NzUgNC4wNzY2MyA3LjA5NDg2IDQuMjI3MzIgNi42NjY1IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTUuNzY3MDkgMTQuNjY2OEM1LjkwNzA5IDE0LjIyNjggNi4wNjcwOSAxMy43ODY4IDYuMTQ3MDkgMTMuMzMzNSIgc3Ryb2tlPSIjMzM4NUZGIiBzdHJva2Utd2lkdGg9IjEuMjU0OSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik02IDQuNTMzNDZDNi42MDgyNyA0LjE4MjI4IDcuMjk4MjggMy45OTc0NSA4LjAwMDY0IDMuOTk3NTZDOC43MDMwMSAzLjk5NzY3IDkuMzkyOTYgNC4xODI3MiAxMC4wMDExIDQuNTM0MUMxMC42MDkzIDQuODg1NDggMTEuMTE0MiA1LjM5MDc5IDExLjQ2NTEgNS45OTkyM0MxMS44MTYgNi42MDc2NiAxMi4wMDA1IDcuMjk3NzYgMTIgOC4wMDAxMlY5LjMzMzQ2IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF81NjM5XzMyIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=";
|
38
38
|
|
39
39
|
export const socialIcons = {
|
@@ -16,7 +16,6 @@ import {
|
|
16
16
|
radius,
|
17
17
|
spacing,
|
18
18
|
} from "../../../core/design-system/index.js";
|
19
|
-
import { genericWalletIcon } from "../../../core/utils/walletIcon.js";
|
20
19
|
import { useSetSelectionData } from "../../providers/wallet-ui-states-provider.js";
|
21
20
|
import { sortWallets } from "../../utils/sortWallets.js";
|
22
21
|
import { LoadingScreen } from "../../wallets/shared/LoadingScreen.js";
|
@@ -42,6 +41,7 @@ import { PoweredByThirdweb } from "./PoweredByTW.js";
|
|
42
41
|
import { WalletButtonEl, WalletEntryButton } from "./WalletEntryButton.js";
|
43
42
|
import { WalletTypeRowButton } from "./WalletTypeRowButton.js";
|
44
43
|
import { compactModalMaxHeight } from "./constants.js";
|
44
|
+
import { OutlineWalletIcon } from "./icons/OutlineWalletIcon.js";
|
45
45
|
import type { ConnectLocale } from "./locale/types.js";
|
46
46
|
|
47
47
|
const InAppWalletSelectionUI = /* @__PURE__ */ lazy(
|
@@ -226,7 +226,7 @@ const WalletSelectorInner: React.FC<WalletSelectorProps> = (props) => {
|
|
226
226
|
const connectAWallet = (
|
227
227
|
<WalletTypeRowButton
|
228
228
|
client={props.client}
|
229
|
-
icon={
|
229
|
+
icon={OutlineWalletIcon}
|
230
230
|
onClick={() => {
|
231
231
|
setIsWalletGroupExpanded(true);
|
232
232
|
}}
|
@@ -1,19 +1,15 @@
|
|
1
1
|
import type { ThirdwebClient } from "../../../../client/client.js";
|
2
|
-
import {
|
3
|
-
iconSize,
|
4
|
-
radius,
|
5
|
-
spacing,
|
6
|
-
} from "../../../core/design-system/index.js";
|
2
|
+
import { iconSize, spacing } from "../../../core/design-system/index.js";
|
7
3
|
import { Text } from "../../ui/components/text.js";
|
8
|
-
import { Img } from "../components/Img.js";
|
9
4
|
import { Container } from "../components/basic.js";
|
10
5
|
import { Button } from "../components/buttons.js";
|
6
|
+
import type { IconFC } from "./icons/types.js";
|
11
7
|
|
12
8
|
type WalletTypeRowProps = {
|
13
9
|
client: ThirdwebClient;
|
14
10
|
onClick: () => void;
|
15
11
|
title: string;
|
16
|
-
icon:
|
12
|
+
icon: IconFC;
|
17
13
|
disabled?: boolean;
|
18
14
|
};
|
19
15
|
|
@@ -33,16 +29,7 @@ export function WalletTypeRowButton(props: WalletTypeRowProps) {
|
|
33
29
|
disabled={props.disabled}
|
34
30
|
>
|
35
31
|
<Container flex="row" gap="sm" center="y" color="accentText">
|
36
|
-
<
|
37
|
-
client={props.client}
|
38
|
-
src={props.icon}
|
39
|
-
width={iconSize.md}
|
40
|
-
height={iconSize.md}
|
41
|
-
loading="eager"
|
42
|
-
style={{
|
43
|
-
borderRadius: radius.md,
|
44
|
-
}}
|
45
|
-
/>
|
32
|
+
<props.icon size={iconSize.md} />
|
46
33
|
<Text color="primaryText">{props.title}</Text>
|
47
34
|
</Container>
|
48
35
|
</Button>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import type { IconFC } from "./types.js";
|
2
|
+
|
3
|
+
/**
|
4
|
+
* @internal
|
5
|
+
*/
|
6
|
+
export const EmailIcon: IconFC = (props) => {
|
7
|
+
return (
|
8
|
+
<svg
|
9
|
+
width={props.size}
|
10
|
+
height={props.size}
|
11
|
+
viewBox="0 0 16 16"
|
12
|
+
fill="none"
|
13
|
+
xmlns="http://www.w3.org/2000/svg"
|
14
|
+
role="presentation"
|
15
|
+
>
|
16
|
+
<path
|
17
|
+
d="M13.3335 2.6665H2.66683C1.93045 2.6665 1.3335 3.26346 1.3335 3.99984V11.9998C1.3335 12.7362 1.93045 13.3332 2.66683 13.3332H13.3335C14.0699 13.3332 14.6668 12.7362 14.6668 11.9998V3.99984C14.6668 3.26346 14.0699 2.6665 13.3335 2.6665Z"
|
18
|
+
stroke={props.color ?? "currentColor"}
|
19
|
+
strokeLinecap="round"
|
20
|
+
strokeLinejoin="round"
|
21
|
+
/>
|
22
|
+
<path
|
23
|
+
d="M14.6668 4.6665L8.68683 8.4665C8.48101 8.59545 8.24304 8.66384 8.00016 8.66384C7.75728 8.66384 7.51931 8.59545 7.3135 8.4665L1.3335 4.6665"
|
24
|
+
stroke={props.color ?? "currentColor"}
|
25
|
+
strokeLinecap="round"
|
26
|
+
strokeLinejoin="round"
|
27
|
+
/>
|
28
|
+
</svg>
|
29
|
+
);
|
30
|
+
};
|
@@ -11,63 +11,63 @@ export const FingerPrintIcon: IconFC = (props) => {
|
|
11
11
|
>
|
12
12
|
<path
|
13
13
|
d="M18.0001 15C17.2045 15 16.4414 15.3161 15.8788 15.8787C15.3162 16.4413 15.0001 17.2044 15.0001 18C15.0001 19.53 14.8501 21.765 14.6101 24"
|
14
|
-
stroke="currentColor"
|
14
|
+
stroke={props.color ?? "currentColor"}
|
15
15
|
strokeWidth="3"
|
16
16
|
strokeLinecap="round"
|
17
17
|
strokeLinejoin="round"
|
18
18
|
/>
|
19
19
|
<path
|
20
20
|
d="M21.0002 19.6801C21.0002 23.2501 21.0002 29.2501 19.5002 33.0001"
|
21
|
-
stroke="currentColor"
|
21
|
+
stroke={props.color ?? "currentColor"}
|
22
22
|
strokeWidth="3"
|
23
23
|
strokeLinecap="round"
|
24
24
|
strokeLinejoin="round"
|
25
25
|
/>
|
26
26
|
<path
|
27
27
|
d="M25.9348 31.53C26.1148 30.63 26.5798 28.08 26.6848 27"
|
28
|
-
stroke="currentColor"
|
28
|
+
stroke={props.color ?? "currentColor"}
|
29
29
|
strokeWidth="3"
|
30
30
|
strokeLinecap="round"
|
31
31
|
strokeLinejoin="round"
|
32
32
|
/>
|
33
33
|
<path
|
34
34
|
d="M2.99976 18C2.99976 14.8518 3.99032 11.7833 5.83112 9.22935C7.67193 6.67536 10.2697 4.76531 13.2563 3.76975C16.243 2.77419 19.4672 2.74359 22.4723 3.6823C25.4773 4.621 28.1108 6.48141 29.9998 9"
|
35
|
-
stroke="currentColor"
|
35
|
+
stroke={props.color ?? "currentColor"}
|
36
36
|
strokeWidth="3"
|
37
37
|
strokeLinecap="round"
|
38
38
|
strokeLinejoin="round"
|
39
39
|
/>
|
40
40
|
<path
|
41
41
|
d="M2.99976 24H3.01628"
|
42
|
-
stroke="currentColor"
|
42
|
+
stroke={props.color ?? "currentColor"}
|
43
43
|
strokeWidth="3"
|
44
44
|
strokeLinecap="round"
|
45
45
|
strokeLinejoin="round"
|
46
46
|
/>
|
47
47
|
<path
|
48
48
|
d="M32.7 24C33 21 32.8965 15.969 32.7 15"
|
49
|
-
stroke="currentColor"
|
49
|
+
stroke={props.color ?? "currentColor"}
|
50
50
|
strokeWidth="3"
|
51
51
|
strokeLinecap="round"
|
52
52
|
strokeLinejoin="round"
|
53
53
|
/>
|
54
54
|
<path
|
55
55
|
d="M7.49976 29.25C8.24976 27 8.99976 22.5 8.99976 18C8.99824 16.9783 9.17071 15.9638 9.50976 15"
|
56
|
-
stroke="currentColor"
|
56
|
+
stroke={props.color ?? "currentColor"}
|
57
57
|
strokeWidth="3"
|
58
58
|
strokeLinecap="round"
|
59
59
|
strokeLinejoin="round"
|
60
60
|
/>
|
61
61
|
<path
|
62
62
|
d="M12.9751 33C13.2901 32.01 13.6501 31.02 13.8301 30"
|
63
|
-
stroke="currentColor"
|
63
|
+
stroke={props.color ?? "currentColor"}
|
64
64
|
strokeWidth="3"
|
65
65
|
strokeLinecap="round"
|
66
66
|
strokeLinejoin="round"
|
67
67
|
/>
|
68
68
|
<path
|
69
69
|
d="M13.5 10.2C14.8686 9.40988 16.4211 8.99401 18.0014 8.99426C19.5818 8.99452 21.1342 9.41088 22.5025 10.2015C23.8708 10.9921 25.0069 12.129 25.7964 13.498C26.5859 14.867 27.001 16.4197 27 18V21"
|
70
|
-
stroke="currentColor"
|
70
|
+
stroke={props.color ?? "currentColor"}
|
71
71
|
strokeWidth="3"
|
72
72
|
strokeLinecap="round"
|
73
73
|
strokeLinejoin="round"
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import type { IconFC } from "./types.js";
|
2
|
+
|
3
|
+
/**
|
4
|
+
* @internal
|
5
|
+
*/
|
6
|
+
export const GuestIcon: IconFC = (props) => {
|
7
|
+
return (
|
8
|
+
<svg
|
9
|
+
xmlns="http://www.w3.org/2000/svg"
|
10
|
+
width={props.size}
|
11
|
+
height={props.size}
|
12
|
+
viewBox="0 0 24 24"
|
13
|
+
fill="none"
|
14
|
+
stroke={props.color ?? "currentColor"}
|
15
|
+
strokeWidth="2"
|
16
|
+
strokeLinecap="round"
|
17
|
+
strokeLinejoin="round"
|
18
|
+
role="presentation"
|
19
|
+
>
|
20
|
+
<path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2" />
|
21
|
+
<circle cx="12" cy="7" r="4" />
|
22
|
+
</svg>
|
23
|
+
);
|
24
|
+
};
|
@@ -15,14 +15,14 @@ export const OutlineWalletIcon: IconFC = (props) => {
|
|
15
15
|
>
|
16
16
|
<path
|
17
17
|
d="M19 7V4C19 3.73478 18.8946 3.48043 18.7071 3.29289C18.5196 3.10536 18.2652 3 18 3H5C4.46957 3 3.96086 3.21071 3.58579 3.58579C3.21071 3.96086 3 4.46957 3 5C3 5.53043 3.21071 6.03914 3.58579 6.41421C3.96086 6.78929 4.46957 7 5 7H20C20.2652 7 20.5196 7.10536 20.7071 7.29289C20.8946 7.48043 21 7.73478 21 8V12M21 12H18C17.4696 12 16.9609 12.2107 16.5858 12.5858C16.2107 12.9609 16 13.4696 16 14C16 14.5304 16.2107 15.0391 16.5858 15.4142C16.9609 15.7893 17.4696 16 18 16H21C21.2652 16 21.5196 15.8946 21.7071 15.7071C21.8946 15.5196 22 15.2652 22 15V13C22 12.7348 21.8946 12.4804 21.7071 12.2929C21.5196 12.1054 21.2652 12 21 12Z"
|
18
|
-
stroke="currentColor"
|
18
|
+
stroke={props.color ?? "currentColor"}
|
19
19
|
strokeWidth="1.5"
|
20
20
|
strokeLinecap="round"
|
21
21
|
strokeLinejoin="round"
|
22
22
|
/>
|
23
23
|
<path
|
24
24
|
d="M3 5V19C3 19.5304 3.21071 20.0391 3.58579 20.4142C3.96086 20.7893 4.46957 21 5 21H20C20.2652 21 20.5196 20.8946 20.7071 20.7071C20.8946 20.5196 21 20.2652 21 20V16"
|
25
|
-
stroke="currentColor"
|
25
|
+
stroke={props.color ?? "currentColor"}
|
26
26
|
strokeWidth="1.5"
|
27
27
|
strokeLinecap="round"
|
28
28
|
strokeLinejoin="round"
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import type { IconFC } from "./types.js";
|
2
|
+
|
3
|
+
/**
|
4
|
+
* @internal
|
5
|
+
*/
|
6
|
+
export const PhoneIcon: IconFC = (props) => {
|
7
|
+
return (
|
8
|
+
<svg
|
9
|
+
width={props.size}
|
10
|
+
height={props.size}
|
11
|
+
viewBox="0 0 16 16"
|
12
|
+
fill="none"
|
13
|
+
xmlns="http://www.w3.org/2000/svg"
|
14
|
+
role="presentation"
|
15
|
+
>
|
16
|
+
<g clipPath="url(#clip0_5639_632)">
|
17
|
+
<path
|
18
|
+
d="M14.6669 11.2802V13.2802C14.6677 13.4659 14.6297 13.6497 14.5553 13.8198C14.4809 13.9899 14.3718 14.1426 14.235 14.2681C14.0982 14.3937 13.9367 14.4892 13.7608 14.5487C13.5849 14.6082 13.3985 14.6303 13.2136 14.6136C11.1622 14.3907 9.19161 13.6897 7.46028 12.5669C5.8495 11.5433 4.48384 10.1777 3.46028 8.56689C2.3336 6.8277 1.63244 4.84756 1.41361 2.78689C1.39695 2.60254 1.41886 2.41673 1.47795 2.24131C1.53703 2.06589 1.63199 1.90469 1.75679 1.76797C1.88159 1.63126 2.03348 1.52203 2.20281 1.44724C2.37213 1.37245 2.55517 1.33374 2.74028 1.33356H4.74028C5.06382 1.33038 5.37748 1.44495 5.62279 1.65592C5.8681 1.86689 6.02833 2.15986 6.07361 2.48023C6.15803 3.12027 6.31458 3.74871 6.54028 4.35356C6.62998 4.59218 6.64939 4.8515 6.59622 5.10081C6.54305 5.35012 6.41952 5.57897 6.24028 5.76023L5.39361 6.60689C6.34265 8.27592 7.72458 9.65786 9.39361 10.6069L10.2403 9.76023C10.4215 9.58099 10.6504 9.45746 10.8997 9.40429C11.149 9.35112 11.4083 9.37053 11.6469 9.46023C12.2518 9.68593 12.8802 9.84248 13.5203 9.92689C13.8441 9.97258 14.1399 10.1357 14.3513 10.3852C14.5627 10.6348 14.6751 10.9533 14.6669 11.2802Z"
|
19
|
+
stroke={props.color ?? "currentColor"}
|
20
|
+
strokeWidth="1.33333"
|
21
|
+
strokeLinecap="round"
|
22
|
+
strokeLinejoin="round"
|
23
|
+
/>
|
24
|
+
</g>
|
25
|
+
<defs>
|
26
|
+
<clipPath id="clip0_5639_632">
|
27
|
+
<rect width="16" height="16" fill="white" />
|
28
|
+
</clipPath>
|
29
|
+
</defs>
|
30
|
+
</svg>
|
31
|
+
);
|
32
|
+
};
|
@@ -1 +1 @@
|
|
1
|
-
export type IconFC = React.FC<{ size: string }>;
|
1
|
+
export type IconFC = React.FC<{ size: string; color?: string }>;
|
@@ -14,6 +14,9 @@ import { Text } from "../../components/text.js";
|
|
14
14
|
import { Blobbie } from "../Blobbie.js";
|
15
15
|
import { MenuButton } from "../MenuButton.js";
|
16
16
|
import { AddUserIcon } from "../icons/AddUserIcon.js";
|
17
|
+
import { EmailIcon } from "../icons/EmailIcon.js";
|
18
|
+
import { FingerPrintIcon } from "../icons/FingerPrintIcon.js";
|
19
|
+
import { PhoneIcon } from "../icons/PhoneIcon.js";
|
17
20
|
import type { ConnectLocale } from "../locale/types.js";
|
18
21
|
import type { WalletDetailsModalScreen } from "./types.js";
|
19
22
|
|
@@ -84,7 +87,7 @@ export function LinkedProfilesScreen(props: {
|
|
84
87
|
fontSize: fontSize.sm,
|
85
88
|
}}
|
86
89
|
>
|
87
|
-
<AddUserIcon size={iconSize.
|
90
|
+
<AddUserIcon size={iconSize.lg} />
|
88
91
|
<Text color="primaryText">
|
89
92
|
{props.locale.manageWallet.linkProfile}
|
90
93
|
</Text>
|
@@ -147,6 +150,12 @@ function LinkedProfile({
|
|
147
150
|
>
|
148
151
|
<Blobbie address={profile.details.address} size={32} />
|
149
152
|
</Container>
|
153
|
+
) : profile.type === "passkey" ? (
|
154
|
+
<FingerPrintIcon size={iconSize.lg} />
|
155
|
+
) : profile.type === "email" ? (
|
156
|
+
<EmailIcon size={iconSize.lg} />
|
157
|
+
) : profile.type === "phone" ? (
|
158
|
+
<PhoneIcon size={iconSize.lg} />
|
150
159
|
) : (
|
151
160
|
<Img
|
152
161
|
src={getSocialIcon(profile.type)}
|