@vechain/vechain-kit 1.3.1 → 1.4.1

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/index.js CHANGED
@@ -3,11 +3,11 @@ import { getConfig, humanNumber, NodeStrengthLevelToImage, allNodeStrengthLevelT
3
3
  export { getConfig } from './chunk-CDZXTDVH.js';
4
4
  import { SimpleAccountFactoryABI, VechainLogoHorizontal, VechainLogo, SimpleAccountABI, PrivyLogo } from './chunk-IGUWNKV2.js';
5
5
  import './chunk-PZ5AY32C.js';
6
- import React9, { createContext, useState, useEffect, useMemo, useCallback, useContext, useRef } from 'react';
6
+ import React8, { createContext, useState, useEffect, useMemo, useCallback, useContext, useRef } from 'react';
7
7
  import { useLoginWithOAuth, usePrivy, useLoginWithPasskey as useLoginWithPasskey$1, useLoginWithEmail, PrivyProvider } from '@privy-io/react-auth';
8
8
  export { usePrivy } from '@privy-io/react-auth';
9
9
  import { useConnex, useWallet as useWallet$1, useWalletModal as useWalletModal$1, useVechainDomain as useVechainDomain$1, DAppKitProvider } from '@vechain/dapp-kit-react';
10
- export { useConnex } from '@vechain/dapp-kit-react';
10
+ export { useConnex, useWallet as useDappKitWallet } from '@vechain/dapp-kit-react';
11
11
  import { defineChain, formatEther, parseEther, zeroAddress, keccak256, toBytes, concat, encodeFunctionData } from 'viem';
12
12
  import { ABIContract, Address, Clause } from '@vechain/sdk-core';
13
13
  import { ThorClient, ProviderInternalBaseWallet, VeChainProvider, signerUtils } from '@vechain/sdk-network';
@@ -22,23 +22,25 @@ import { z } from 'zod';
22
22
  import { useAccount, createConfig, http, WagmiProvider, useConnect, useSignTypedData, useSignMessage, useDisconnect } from 'wagmi';
23
23
  import { toPrivyWalletConnector } from '@privy-io/cross-app-connect/rainbow-kit';
24
24
  import { isSafari } from 'react-device-detect';
25
- import { createMultiStyleConfigHelpers, defineStyle, defineStyleConfig, extendTheme, createStandaloneToast, IconButton, VStack, Text, HStack, Icon, Link, Box, useMediaQuery, Modal, ModalOverlay, ModalContent, Button, Image, Skeleton, useDisclosure, GridItem, Divider, InputGroup, InputLeftElement, Input, ModalHeader, ModalCloseButton, ModalBody, Stack, Grid, ModalFooter, useColorModeValue, Card, CardBody, Tag, useColorMode, Spinner, Heading, Tabs, TabList, Tab, TabPanels, TabPanel, Center, Alert, AlertIcon, Container, List, ListItem, InputRightElement, Select, Progress, PinInput, PinInputField, Accordion, AccordionItem, AccordionButton, AccordionPanel, ChakraProvider, Flex, AlertDescription, Circle } from '@chakra-ui/react';
25
+ import { createMultiStyleConfigHelpers, defineStyle, defineStyleConfig, extendTheme, createStandaloneToast, IconButton, VStack, Text, HStack, Icon, Link, Box, useMediaQuery, Modal, ModalOverlay, ModalContent, Button, Image, Skeleton, Spinner, useDisclosure, GridItem, Divider, InputGroup, InputLeftElement, Input, ModalHeader, ModalCloseButton, ModalBody, Stack, Grid, ModalFooter, useColorModeValue, Card, CardBody, Tag, Alert, AlertIcon, useColorMode, Heading, Tabs, TabList, Tab, TabPanels, TabPanel, CardFooter, Center, Container, InputRightElement, Select, Progress, PinInput, PinInputField, Accordion, AccordionItem, AccordionButton, AccordionPanel, List, ListItem, ChakraProvider, Flex, AlertDescription, Circle } from '@chakra-ui/react';
26
26
  import { motion } from 'framer-motion';
27
- import { IoChevronBack, IoCheckmarkOutline, IoCopyOutline, IoPlanet, IoCloseCircle, IoOpenOutline, IoChevronUp, IoChevronDown } from 'react-icons/io5';
27
+ import { IoChevronBack, IoCheckmarkOutline, IoCopyOutline, IoCloseCircle, IoShieldOutline, IoOpenOutline, IoChevronUp, IoChevronDown } from 'react-icons/io5';
28
28
  import { BsQuestionCircle, BsBookmarkFill, BsBookmark } from 'react-icons/bs';
29
29
  import { FcGoogle, FcCheckmark } from 'react-icons/fc';
30
- import { IoIosFingerPrint } from 'react-icons/io';
30
+ import { IoIosFingerPrint, IoMdApps } from 'react-icons/io';
31
31
  import { HiOutlineWallet } from 'react-icons/hi2';
32
32
  import { CiCircleMore, CiSearch } from 'react-icons/ci';
33
33
  import { LuMail } from 'react-icons/lu';
34
- import { MdOutlineNavigateNext, MdSwapHoriz, MdManageAccounts, MdOutlineErrorOutline, MdOutlineRefresh, MdEmail } from 'react-icons/md';
35
- import { BiBell, BiArchive } from 'react-icons/bi';
36
- import { RiLogoutBoxLine, RiTwitterXFill } from 'react-icons/ri';
34
+ import { MdOutlineNavigateNext, MdSwapHoriz, MdOutlineErrorOutline, MdOutlineRefresh, MdEmail } from 'react-icons/md';
37
35
  import { VscRefresh, VscDebugDisconnect } from 'react-icons/vsc';
38
- import { FaRegArrowAltCircleDown, FaRegAddressCard, FaExternalLinkAlt, FaTelegramPlane, FaGoogle, FaEnvelope, FaTwitter, FaPhone, FaSpotify, FaApple, FaInstagram, FaTiktok, FaGithub, FaLinkedin, FaTelegram, FaDiscord, FaPlus, FaWallet } from 'react-icons/fa';
36
+ import { FaRegArrowAltCircleDown, FaEdit, FaRegAddressCard, FaExternalLinkAlt, FaTelegramPlane, FaGoogle, FaEnvelope, FaTwitter, FaPhone, FaSpotify, FaApple, FaInstagram, FaTiktok, FaGithub, FaLinkedin, FaTelegram, FaDiscord, FaPlus, FaWallet } from 'react-icons/fa';
39
37
  import { FiSend, FiSlash, FiArrowDown } from 'react-icons/fi';
40
- import { GiHouseKeys, GiPaintBrush, GiConfirmed } from 'react-icons/gi';
38
+ import { picasso } from '@vechain/picasso';
39
+ import { GrUserAdmin } from 'react-icons/gr';
40
+ import { RiLogoutBoxLine, RiTwitterXFill } from 'react-icons/ri';
41
+ import { BiBell, BiArchive } from 'react-icons/bi';
41
42
  import { PiLineVertical } from 'react-icons/pi';
43
+ import { GiHouseKeys, GiConfirmed } from 'react-icons/gi';
42
44
  import { QRCode } from 'react-qrcode-logo';
43
45
  import { GoLinkExternal } from 'react-icons/go';
44
46
  import { FaWhatsapp } from 'react-icons/fa6';
@@ -1778,7 +1780,7 @@ function getOrCreateQueryClient() {
1778
1780
  }
1779
1781
  var EnsureQueryClient = ({ children }) => {
1780
1782
  try {
1781
- const existingQueryClient = React9.useContext(QueryClientContext);
1783
+ const existingQueryClient = React8.useContext(QueryClientContext);
1782
1784
  if (existingQueryClient) {
1783
1785
  return /* @__PURE__ */ jsx(Fragment, { children });
1784
1786
  }
@@ -3587,12 +3589,15 @@ var usePrivyCrossAppSdk = () => {
3587
3589
 
3588
3590
  // src/hooks/api/wallet/useWalletMetadata.ts
3589
3591
  var useWalletMetadata = (address, networkType) => {
3590
- const { data: domain } = useVechainDomain(address ?? "");
3591
- const { data: avatar } = useGetAvatar(domain?.domain);
3592
+ const { data: domain, isLoading: isLoadingVechainDomain } = useVechainDomain(address ?? "");
3593
+ const { data: avatar, isLoading: isLoadingAvatar } = useGetAvatar(
3594
+ domain?.domain
3595
+ );
3592
3596
  const avatarUrl = convertUriToUrl(avatar ?? "", networkType);
3593
3597
  return {
3594
3598
  domain: domain?.domain,
3595
- image: avatarUrl ?? getPicassoImage(address ?? "")
3599
+ image: avatarUrl ?? getPicassoImage(address ?? ""),
3600
+ isLoading: isLoadingVechainDomain || isLoadingAvatar
3596
3601
  };
3597
3602
  };
3598
3603
 
@@ -3661,12 +3666,14 @@ var useWallet = () => {
3661
3666
  const account = activeAddress ? {
3662
3667
  address: activeAddress,
3663
3668
  domain: activeMetadata.domain,
3664
- image: activeMetadata.image
3669
+ image: activeMetadata.image,
3670
+ isLoadingAvatar: activeMetadata.isLoading
3665
3671
  } : null;
3666
3672
  const connectedWallet = connectedWalletAddress ? {
3667
3673
  address: connectedWalletAddress,
3668
3674
  domain: connectedMetadata.domain,
3669
- image: connectedMetadata.image
3675
+ image: connectedMetadata.image,
3676
+ isLoadingAvatar: connectedMetadata.isLoading
3670
3677
  } : null;
3671
3678
  const { data: smartAccountVersion } = useContractVersion(
3672
3679
  smartAccount?.address ?? ""
@@ -3704,7 +3711,8 @@ var useWallet = () => {
3704
3711
  image: smartAccountMetadata.image,
3705
3712
  isDeployed: smartAccount?.isDeployed ?? false,
3706
3713
  isActive: hasActiveSmartAccount,
3707
- version: smartAccountVersion ?? null
3714
+ version: smartAccountVersion ?? null,
3715
+ isLoadingAvatar: smartAccountMetadata.isLoading
3708
3716
  },
3709
3717
  connectedWallet,
3710
3718
  privyUser: user,
@@ -4017,7 +4025,7 @@ var useSendTokenModal = () => {
4017
4025
  var SendTokenModalProvider = ({
4018
4026
  children
4019
4027
  }) => /* @__PURE__ */ jsx(Fragment, { children });
4020
- var useEmbeddedWalletSettingsModal = () => {
4028
+ var useAccessAndSecurityModal = () => {
4021
4029
  const {
4022
4030
  openAccountModal,
4023
4031
  closeAccountModal,
@@ -4025,7 +4033,7 @@ var useEmbeddedWalletSettingsModal = () => {
4025
4033
  setAccountModalContent
4026
4034
  } = useVeChainKitConfig();
4027
4035
  const open = () => {
4028
- setAccountModalContent("embedded-wallet");
4036
+ setAccountModalContent("access-and-security");
4029
4037
  openAccountModal();
4030
4038
  };
4031
4039
  const close = () => {
@@ -4037,7 +4045,7 @@ var useEmbeddedWalletSettingsModal = () => {
4037
4045
  isOpen: isAccountModalOpen
4038
4046
  };
4039
4047
  };
4040
- var EmbeddedWalletSettingsModalProvider = ({
4048
+ var AccessAndSecurityModalProvider = ({
4041
4049
  children
4042
4050
  }) => /* @__PURE__ */ jsx(Fragment, { children });
4043
4051
  var useExploreEcosystemModal = () => {
@@ -4151,6 +4159,52 @@ var useReceiveModal = () => {
4151
4159
  };
4152
4160
  };
4153
4161
  var ReceiveModalProvider = ({ children }) => /* @__PURE__ */ jsx(Fragment, { children });
4162
+ var useLoginModalContent = () => {
4163
+ const { privy, loginMethods } = useVeChainKitConfig();
4164
+ const isVeChainApp = privy?.appId === VECHAIN_PRIVY_APP_ID;
4165
+ const showEcosystemLogin = useMemo(() => {
4166
+ if (!loginMethods) return true;
4167
+ if (loginMethods.length > 0 && !loginMethods?.find((method35) => method35.method === "ecosystem")) {
4168
+ return false;
4169
+ }
4170
+ return true;
4171
+ }, [loginMethods]);
4172
+ if (!privy) {
4173
+ return {
4174
+ showSocialLogin: false,
4175
+ showPasskey: false,
4176
+ showVeChainLogin: true,
4177
+ showDappKit: true,
4178
+ showEcosystem: showEcosystemLogin,
4179
+ showMoreLogin: false,
4180
+ isOfficialVeChainApp: false
4181
+ };
4182
+ }
4183
+ if (isVeChainApp) {
4184
+ return {
4185
+ showSocialLogin: false,
4186
+ showPasskey: false,
4187
+ showVeChainLogin: true,
4188
+ showDappKit: true,
4189
+ showEcosystem: showEcosystemLogin,
4190
+ showMoreLogin: false,
4191
+ isOfficialVeChainApp: true
4192
+ };
4193
+ }
4194
+ const showMoreLogin = useMemo(() => {
4195
+ if (!loginMethods) return true;
4196
+ return loginMethods.some((method35) => method35.method === "more");
4197
+ }, [loginMethods]);
4198
+ return {
4199
+ showSocialLogin: true,
4200
+ showPasskey: true,
4201
+ showVeChainLogin: true,
4202
+ showDappKit: true,
4203
+ showEcosystem: showEcosystemLogin,
4204
+ showMoreLogin,
4205
+ isOfficialVeChainApp: false
4206
+ };
4207
+ };
4154
4208
  var ERC20Interface2 = ERC20__factory.createInterface();
4155
4209
  var useTransferERC20 = ({
4156
4210
  fromAddress,
@@ -5143,7 +5197,12 @@ var ModalBackButton = ({ onClick, ...props }) => {
5143
5197
  }
5144
5198
  );
5145
5199
  };
5146
- var AddressDisplay = ({ wallet, label, size = "lg" }) => {
5200
+ var AddressDisplay = ({
5201
+ wallet,
5202
+ label,
5203
+ size = "lg",
5204
+ style
5205
+ }) => {
5147
5206
  const [copied, setCopied] = useState(false);
5148
5207
  const [copiedDomain, setCopiedDomain] = useState(false);
5149
5208
  const copyToClipboard = async (textToCopy, setCopied2) => {
@@ -5153,7 +5212,7 @@ var AddressDisplay = ({ wallet, label, size = "lg" }) => {
5153
5212
  setCopied2(false);
5154
5213
  }, 2e3);
5155
5214
  };
5156
- return /* @__PURE__ */ jsx(VStack, { w: "full", justifyContent: "center", children: /* @__PURE__ */ jsxs(VStack, { children: [
5215
+ return /* @__PURE__ */ jsx(VStack, { w: "full", justifyContent: "center", ...style, children: /* @__PURE__ */ jsxs(VStack, { children: [
5157
5216
  label && /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.7, children: label }),
5158
5217
  wallet?.domain ? /* @__PURE__ */ jsxs(VStack, { children: [
5159
5218
  /* @__PURE__ */ jsxs(
@@ -5229,7 +5288,7 @@ var AddressDisplay = ({ wallet, label, size = "lg" }) => {
5229
5288
  // package.json
5230
5289
  var package_default = {
5231
5290
  name: "@vechain/vechain-kit",
5232
- version: "1.3.1",
5291
+ version: "1.4.1",
5233
5292
  private: false,
5234
5293
  homepage: "https://github.com/vechain/vechain-kit",
5235
5294
  repository: "github:vechain/vechain-kit",
@@ -5255,8 +5314,8 @@ var package_default = {
5255
5314
  dependencies: {
5256
5315
  "@chakra-ui/react": "^2.8.2",
5257
5316
  "@choc-ui/chakra-autocomplete": "^5.3.0",
5258
- "@privy-io/cross-app-connect": "^0.1.3",
5259
- "@privy-io/react-auth": "2.0.1",
5317
+ "@privy-io/cross-app-connect": "^0.1.6",
5318
+ "@privy-io/react-auth": "2.3.0",
5260
5319
  "@rainbow-me/rainbowkit": "^2.1.5",
5261
5320
  "@tanstack/react-query": "^5.64.2",
5262
5321
  "@tanstack/react-query-devtools": "^5.64.1",
@@ -5591,7 +5650,8 @@ var AddressDisplayCard = ({
5591
5650
  src: imageSrc,
5592
5651
  alt: imageAlt,
5593
5652
  boxSize: "40px",
5594
- borderRadius: "xl"
5653
+ borderRadius: "xl",
5654
+ objectFit: "cover"
5595
5655
  }
5596
5656
  ),
5597
5657
  /* @__PURE__ */ jsx(VStack, { align: "start", spacing: 0, children: domain ? /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -5641,6 +5701,22 @@ var ScrollToTopWrapper = ({ children, ...props }) => {
5641
5701
  useScrollToTop();
5642
5702
  return /* @__PURE__ */ jsx(VStack, { ...props, children });
5643
5703
  };
5704
+ var AccountAvatar = ({ wallet, props }) => {
5705
+ if (wallet?.isLoadingAvatar) {
5706
+ return /* @__PURE__ */ jsx(Spinner, { size: "sm" });
5707
+ }
5708
+ return /* @__PURE__ */ jsx(
5709
+ Image,
5710
+ {
5711
+ src: props?.src ?? wallet?.image,
5712
+ alt: props?.alt ?? wallet?.domain,
5713
+ fallbackSrc: notFoundImage,
5714
+ objectFit: "cover",
5715
+ rounded: "full",
5716
+ ...props
5717
+ }
5718
+ );
5719
+ };
5644
5720
  var VeChainLoginButton = ({ isDark, gridColumn }) => {
5645
5721
  const { t } = useTranslation();
5646
5722
  const { login: loginWithVeChain } = useLoginWithVeChain();
@@ -5686,12 +5762,19 @@ var VeChainLoginButton = ({ isDark, gridColumn }) => {
5686
5762
  )
5687
5763
  ] });
5688
5764
  };
5689
- var SocialLoginButtons = ({ isDark, loginModalUI }) => {
5765
+ var SocialLoginButtons = ({
5766
+ isDark,
5767
+ loginMethods,
5768
+ gridColumn
5769
+ }) => {
5690
5770
  const { t } = useTranslation();
5691
5771
  const { initOAuth } = useLoginWithOAuth2();
5692
- return /* @__PURE__ */ jsx(Fragment, { children: loginModalUI?.preferredLoginMethods?.map((method35, index) => /* @__PURE__ */ jsxs(React9.Fragment, { children: [
5693
- method35 === "email" && /* @__PURE__ */ jsx(GridItem, { colSpan: 4, w: "full", children: /* @__PURE__ */ jsx(EmailLoginButton, {}) }),
5694
- method35 === "google" && /* @__PURE__ */ jsx(GridItem, { colSpan: 4, w: "full", children: /* @__PURE__ */ jsx(
5772
+ const selfHostedPrivyLoginMethods = loginMethods?.filter(
5773
+ (method35) => method35.method === "email" || method35.method === "google"
5774
+ );
5775
+ return /* @__PURE__ */ jsx(GridItem, { colSpan: gridColumn, w: "full", children: selfHostedPrivyLoginMethods?.map((loginMethod, index) => /* @__PURE__ */ jsxs(React8.Fragment, { children: [
5776
+ loginMethod.method === "email" && /* @__PURE__ */ jsx(GridItem, { colSpan: 4, w: "full", children: /* @__PURE__ */ jsx(EmailLoginButton, {}) }),
5777
+ loginMethod.method === "google" && /* @__PURE__ */ jsx(GridItem, { colSpan: 4, w: "full", children: /* @__PURE__ */ jsx(
5695
5778
  ConnectionButton,
5696
5779
  {
5697
5780
  isDark,
@@ -5702,14 +5785,14 @@ var SocialLoginButtons = ({ isDark, loginModalUI }) => {
5702
5785
  text: t("Continue with Google")
5703
5786
  }
5704
5787
  ) }),
5705
- index !== (loginModalUI?.preferredLoginMethods?.length ?? 0) - 1 && /* @__PURE__ */ jsx(GridItem, { colSpan: 4, w: "full", children: /* @__PURE__ */ jsxs(HStack, { children: [
5788
+ index !== (selfHostedPrivyLoginMethods?.length ?? 0) - 1 && /* @__PURE__ */ jsx(GridItem, { colSpan: 4, w: "full", children: /* @__PURE__ */ jsxs(HStack, { children: [
5706
5789
  /* @__PURE__ */ jsx(Divider, {}),
5707
5790
  /* @__PURE__ */ jsx(Text, { fontSize: "xs", children: "or" }),
5708
5791
  /* @__PURE__ */ jsx(Divider, {})
5709
5792
  ] }) })
5710
- ] }, method35)) });
5793
+ ] }, loginMethod.method)) });
5711
5794
  };
5712
- var PasskeyLoginButton = ({ isDark, gridColumn = 1 }) => {
5795
+ var PasskeyLoginButton = ({ isDark, gridColumn }) => {
5713
5796
  const { t } = useTranslation();
5714
5797
  const { loginWithPasskey } = useLoginWithPasskey();
5715
5798
  const [loginError, setLoginError] = useState();
@@ -5733,7 +5816,8 @@ var PasskeyLoginButton = ({ isDark, gridColumn = 1 }) => {
5733
5816
  {
5734
5817
  isDark,
5735
5818
  onClick: handleLoginWithPasskey,
5736
- icon: IoIosFingerPrint
5819
+ icon: IoIosFingerPrint,
5820
+ text: gridColumn && gridColumn >= 2 ? t("Passkey") : void 0
5737
5821
  }
5738
5822
  ) }),
5739
5823
  /* @__PURE__ */ jsx(
@@ -5766,20 +5850,20 @@ var DappKitButton = ({ isDark, gridColumn = 2 }) => {
5766
5850
  };
5767
5851
  var EcosystemButton = ({
5768
5852
  isDark,
5769
- privySocialLoginEnabled,
5770
5853
  appsInfo,
5771
- isLoading
5854
+ isLoading,
5855
+ gridColumn
5772
5856
  }) => {
5773
5857
  const { t } = useTranslation();
5774
5858
  const ecosystemModal = useDisclosure();
5775
5859
  return /* @__PURE__ */ jsxs(Fragment, { children: [
5776
- /* @__PURE__ */ jsx(GridItem, { colSpan: privySocialLoginEnabled ? 1 : 2, w: "full", children: /* @__PURE__ */ jsx(
5860
+ /* @__PURE__ */ jsx(GridItem, { colSpan: gridColumn, w: "full", children: /* @__PURE__ */ jsx(
5777
5861
  ConnectionButton,
5778
5862
  {
5779
5863
  isDark,
5780
5864
  onClick: ecosystemModal.onOpen,
5781
- icon: IoPlanet,
5782
- text: !privySocialLoginEnabled ? t("Ecosystem") : void 0
5865
+ icon: IoMdApps,
5866
+ text: gridColumn && gridColumn >= 2 ? t("Other") : void 0
5783
5867
  }
5784
5868
  ) }),
5785
5869
  /* @__PURE__ */ jsx(
@@ -5793,11 +5877,7 @@ var EcosystemButton = ({
5793
5877
  )
5794
5878
  ] });
5795
5879
  };
5796
- var PrivyButton = ({
5797
- isDark,
5798
- onViewMoreLogin,
5799
- gridColumn = 1
5800
- }) => {
5880
+ var PrivyButton = ({ isDark, onViewMoreLogin, gridColumn }) => {
5801
5881
  const { t } = useTranslation();
5802
5882
  return /* @__PURE__ */ jsx(GridItem, { colSpan: gridColumn, w: "full", children: /* @__PURE__ */ jsx(
5803
5883
  ConnectionButton,
@@ -5805,7 +5885,7 @@ var PrivyButton = ({
5805
5885
  isDark,
5806
5886
  onClick: onViewMoreLogin,
5807
5887
  icon: CiCircleMore,
5808
- text: gridColumn >= 2 ? t("More") : void 0
5888
+ text: gridColumn && gridColumn >= 2 ? t("More") : void 0
5809
5889
  }
5810
5890
  ) });
5811
5891
  };
@@ -6131,51 +6211,99 @@ var VeChainWithPrivyLoginButton = ({ isDark, gridColumn }) => {
6131
6211
  }
6132
6212
  ) });
6133
6213
  };
6134
- var MainContent = ({
6135
- setCurrentContent,
6136
- onClose,
6137
- variant = "vechain-wallet-ecosystem"
6138
- }) => {
6214
+ var MainContent = ({ setCurrentContent, onClose }) => {
6139
6215
  const { t } = useTranslation();
6140
6216
  const { darkMode: isDark } = useVeChainKitConfig();
6141
6217
  const { connection } = useWallet();
6142
- const { loginModalUI, privySocialLoginEnabled, privyEcosystemAppIDS } = useVeChainKitConfig();
6218
+ const { loginModalUI, privyEcosystemAppIDS, loginMethods } = useVeChainKitConfig();
6143
6219
  const { login: viewMoreLogin } = usePrivy();
6220
+ const {
6221
+ showSocialLogin,
6222
+ showPasskey,
6223
+ showVeChainLogin,
6224
+ showDappKit,
6225
+ showEcosystem,
6226
+ showMoreLogin,
6227
+ isOfficialVeChainApp
6228
+ } = useLoginModalContent();
6144
6229
  const { data: appsInfo, isLoading: isEcosystemAppsLoading } = useFetchAppInfo(privyEcosystemAppIDS);
6145
6230
  useEffect(() => {
6146
6231
  if (connection.isConnected) {
6147
6232
  onClose();
6148
6233
  }
6149
6234
  }, [connection.isConnected, onClose]);
6150
- const dappKitGridColumn = useMemo(() => {
6151
- switch (variant) {
6152
- case "full":
6153
- return 1;
6154
- case "vechain-and-wallet":
6155
- return 4;
6156
- case "vechain-wallet-ecosystem":
6157
- if (privyEcosystemAppIDS.length === 0) {
6158
- return 4;
6159
- }
6160
- return 2;
6161
- default:
6162
- if (!privySocialLoginEnabled || privyEcosystemAppIDS.length === 0) {
6163
- return 4;
6235
+ const gridLayout = useMemo(() => {
6236
+ if (loginMethods?.length) {
6237
+ const layout = {};
6238
+ loginMethods.forEach(({ method: method35, gridColumn }) => {
6239
+ switch (method35) {
6240
+ case "email":
6241
+ case "google":
6242
+ layout.socialLoginColumn = gridColumn || 4;
6243
+ break;
6244
+ case "vechain":
6245
+ layout.veChainColumn = gridColumn || 4;
6246
+ break;
6247
+ case "passkey":
6248
+ layout.passkeyColumn = gridColumn || 1;
6249
+ break;
6250
+ case "dappkit":
6251
+ layout.dappKitColumn = gridColumn || 2;
6252
+ break;
6253
+ case "ecosystem":
6254
+ layout.ecosystemColumn = gridColumn || 2;
6255
+ break;
6256
+ case "more":
6257
+ layout.moreLoginColumn = gridColumn || 1;
6258
+ break;
6164
6259
  }
6165
- return 1;
6166
- }
6167
- }, [variant, privySocialLoginEnabled, privyEcosystemAppIDS]);
6168
- const privyGridColumn = useMemo(() => {
6169
- switch (variant) {
6170
- case "full":
6171
- if (privyEcosystemAppIDS.length === 0) {
6172
- return 2;
6173
- }
6174
- return 1;
6175
- default:
6176
- return 0;
6260
+ });
6261
+ return layout;
6262
+ }
6263
+ const visibleButtons = {
6264
+ socialLogin: showSocialLogin,
6265
+ veChainLogin: showVeChainLogin,
6266
+ dappKit: showDappKit,
6267
+ ecosystem: showEcosystem,
6268
+ moreLogin: showMoreLogin,
6269
+ passkey: showPasskey
6270
+ };
6271
+ if (visibleButtons.veChainLogin && visibleButtons.dappKit && visibleButtons.ecosystem && !visibleButtons.socialLogin) {
6272
+ return {
6273
+ veChainColumn: 4,
6274
+ // Full width
6275
+ dappKitColumn: 2,
6276
+ // Half width
6277
+ ecosystemColumn: 2
6278
+ // Half width
6279
+ };
6280
+ }
6281
+ if (visibleButtons.socialLogin) {
6282
+ return {
6283
+ socialLoginColumn: 4,
6284
+ veChainColumn: 4,
6285
+ dappKitColumn: 1,
6286
+ ecosystemColumn: 1,
6287
+ moreLoginColumn: 1,
6288
+ passkeyColumn: 1
6289
+ };
6177
6290
  }
6178
- }, [variant, privyEcosystemAppIDS]);
6291
+ const totalButtons = Object.values(visibleButtons).filter(Boolean).length;
6292
+ const defaultColumn = Math.min(4, totalButtons);
6293
+ return {
6294
+ veChainColumn: 4,
6295
+ dappKitColumn: defaultColumn,
6296
+ ecosystemColumn: defaultColumn
6297
+ };
6298
+ }, [
6299
+ loginMethods,
6300
+ showSocialLogin,
6301
+ showVeChainLogin,
6302
+ showDappKit,
6303
+ showEcosystem,
6304
+ showMoreLogin,
6305
+ showPasskey
6306
+ ]);
6179
6307
  return /* @__PURE__ */ jsxs(Fragment, { children: [
6180
6308
  /* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
6181
6309
  /* @__PURE__ */ jsx(ModalFAQButton, { onClick: () => setCurrentContent("faq") }),
@@ -6222,53 +6350,56 @@ var MainContent = ({
6222
6350
  }
6223
6351
  ),
6224
6352
  /* @__PURE__ */ jsx(Stack, { spacing: 4, w: "full", align: "center", children: /* @__PURE__ */ jsxs(Grid, { templateColumns: "repeat(4, 1fr)", gap: 2, w: "full", children: [
6225
- variant === "full" && privySocialLoginEnabled && /* @__PURE__ */ jsx(
6353
+ showSocialLogin && /* @__PURE__ */ jsx(
6226
6354
  SocialLoginButtons,
6227
6355
  {
6228
6356
  isDark,
6229
- loginModalUI
6357
+ loginMethods,
6358
+ gridColumn: gridLayout.socialLoginColumn
6230
6359
  }
6231
6360
  ),
6232
- variant === "vechain" ? (
6233
- // This exists because we want to use same button but connect
6234
- // with privy-auth instead of cross-app, used only by vechain.
6235
- /* @__PURE__ */ jsx(
6236
- VeChainWithPrivyLoginButton,
6237
- {
6238
- isDark,
6239
- gridColumn: 4
6240
- }
6241
- )
6361
+ showVeChainLogin && (isOfficialVeChainApp ? /* @__PURE__ */ jsx(
6362
+ VeChainWithPrivyLoginButton,
6363
+ {
6364
+ isDark,
6365
+ gridColumn: gridLayout.veChainColumn
6366
+ }
6242
6367
  ) : /* @__PURE__ */ jsx(
6243
6368
  VeChainLoginButton,
6244
6369
  {
6245
6370
  isDark,
6246
- gridColumn: 4
6371
+ gridColumn: gridLayout.veChainColumn
6372
+ }
6373
+ )),
6374
+ gridLayout.passkeyColumn && /* @__PURE__ */ jsx(
6375
+ PasskeyLoginButton,
6376
+ {
6377
+ isDark,
6378
+ gridColumn: gridLayout.passkeyColumn
6247
6379
  }
6248
6380
  ),
6249
- variant === "full" && privySocialLoginEnabled && /* @__PURE__ */ jsx(PasskeyLoginButton, { isDark }),
6250
- /* @__PURE__ */ jsx(
6381
+ showDappKit && /* @__PURE__ */ jsx(
6251
6382
  DappKitButton,
6252
6383
  {
6253
6384
  isDark,
6254
- gridColumn: dappKitGridColumn
6385
+ gridColumn: gridLayout.dappKitColumn
6255
6386
  }
6256
6387
  ),
6257
- (variant === "full" || variant === "vechain-wallet-ecosystem") && privyEcosystemAppIDS.length > 0 && /* @__PURE__ */ jsx(
6388
+ showEcosystem && /* @__PURE__ */ jsx(
6258
6389
  EcosystemButton,
6259
6390
  {
6260
6391
  isDark,
6261
- privySocialLoginEnabled: variant === "full" && privySocialLoginEnabled,
6262
6392
  appsInfo: Object.values(appsInfo || {}),
6263
- isLoading: isEcosystemAppsLoading
6393
+ isLoading: isEcosystemAppsLoading,
6394
+ gridColumn: gridLayout.ecosystemColumn
6264
6395
  }
6265
6396
  ),
6266
- variant === "full" && privySocialLoginEnabled && /* @__PURE__ */ jsx(
6397
+ showMoreLogin && /* @__PURE__ */ jsx(
6267
6398
  PrivyButton,
6268
6399
  {
6269
6400
  isDark,
6270
6401
  onViewMoreLogin: viewMoreLogin,
6271
- gridColumn: privyGridColumn
6402
+ gridColumn: gridLayout.moreLoginColumn
6272
6403
  }
6273
6404
  )
6274
6405
  ] }) })
@@ -6333,21 +6464,35 @@ var FeatureAnnouncementCard = ({
6333
6464
  }
6334
6465
  );
6335
6466
  };
6336
- var AccountMainContent = ({
6337
- setCurrentContent,
6338
- wallet,
6339
- onClose
6340
- }) => {
6467
+ var ExchangeWarningAlert = () => {
6468
+ const { t } = useTranslation();
6469
+ const [showFullText, setShowFullText] = useState(false);
6470
+ return /* @__PURE__ */ jsx(Alert, { status: "warning", fontSize: "xs", borderRadius: "xl", p: 2, children: /* @__PURE__ */ jsx(VStack, { spacing: 1, align: "stretch", w: "full", children: /* @__PURE__ */ jsxs(HStack, { spacing: 2, align: "flex-start", children: [
6471
+ /* @__PURE__ */ jsx(AlertIcon, { boxSize: 4 }),
6472
+ /* @__PURE__ */ jsxs(Text, { w: "full", children: [
6473
+ t(
6474
+ "Sending to OceanX or other exchanges may result in loss of funds."
6475
+ ),
6476
+ showFullText && t("Send the tokens to your VeWorld wallet first."),
6477
+ /* @__PURE__ */ jsx(
6478
+ Button,
6479
+ {
6480
+ variant: "link",
6481
+ size: "xs",
6482
+ onClick: () => setShowFullText(!showFullText),
6483
+ color: "inherit",
6484
+ pl: 6,
6485
+ mt: 0,
6486
+ children: t(showFullText ? "Show Less" : "Read More")
6487
+ }
6488
+ )
6489
+ ] })
6490
+ ] }) }) });
6491
+ };
6492
+ var AccountMainContent = ({ setCurrentContent, wallet }) => {
6341
6493
  const { t } = useTranslation();
6342
6494
  const { darkMode: isDark } = useVeChainKitConfig();
6343
- const { disconnect, connection, account } = useWallet();
6344
- const { getNotifications } = useNotifications();
6345
- const notifications = getNotifications();
6346
- const hasUnreadNotifications = notifications.some((n) => !n.isRead);
6347
- const handleDisconnect = () => {
6348
- disconnect();
6349
- onClose();
6350
- };
6495
+ const { connection, account } = useWallet();
6351
6496
  return /* @__PURE__ */ jsxs(ScrollToTopWrapper, { children: [
6352
6497
  /* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
6353
6498
  /* @__PURE__ */ jsx(
@@ -6370,60 +6515,16 @@ var AccountMainContent = ({
6370
6515
  setCurrentContent
6371
6516
  }
6372
6517
  ),
6373
- /* @__PURE__ */ jsxs(HStack, { justify: "space-between", children: [
6374
- /* @__PURE__ */ jsx(
6375
- IconButton,
6376
- {
6377
- p: 2,
6378
- h: 9,
6379
- icon: /* @__PURE__ */ jsx(Icon, { boxSize: 5, as: RiLogoutBoxLine }),
6380
- "aria-label": "Disconnect",
6381
- variant: "vechainKitSelector",
6382
- onClick: () => setCurrentContent({
6383
- type: "disconnect-confirm",
6384
- props: {
6385
- onDisconnect: handleDisconnect,
6386
- onBack: () => setCurrentContent("main")
6387
- }
6388
- })
6389
- }
6390
- ),
6391
- /* @__PURE__ */ jsx(
6392
- AccountSelector,
6393
- {
6394
- mt: 0,
6395
- onClick: () => {
6396
- setCurrentContent("settings");
6397
- },
6398
- wallet
6399
- }
6400
- ),
6401
- /* @__PURE__ */ jsxs(Box, { position: "relative", children: [
6402
- /* @__PURE__ */ jsx(
6403
- IconButton,
6404
- {
6405
- p: 2,
6406
- h: 9,
6407
- variant: "vechainKitSelector",
6408
- "aria-label": "notifications",
6409
- icon: /* @__PURE__ */ jsx(Icon, { boxSize: 5, as: BiBell }),
6410
- onClick: () => setCurrentContent("notifications")
6411
- }
6412
- ),
6413
- hasUnreadNotifications && /* @__PURE__ */ jsx(
6414
- Box,
6415
- {
6416
- position: "absolute",
6417
- top: 1,
6418
- right: 1,
6419
- width: "8px",
6420
- height: "8px",
6421
- bg: "red.500",
6422
- borderRadius: "full"
6423
- }
6424
- )
6425
- ] })
6426
- ] }),
6518
+ /* @__PURE__ */ jsx(
6519
+ AccountSelector,
6520
+ {
6521
+ mt: 0,
6522
+ onClick: () => {
6523
+ setCurrentContent("settings");
6524
+ },
6525
+ wallet
6526
+ }
6527
+ ),
6427
6528
  /* @__PURE__ */ jsx(BalanceSection, { mt: 14 }),
6428
6529
  /* @__PURE__ */ jsx(
6429
6530
  QuickActionsSection,
@@ -6510,7 +6611,6 @@ var ActionButton = ({
6510
6611
  leftIcon,
6511
6612
  rightIcon,
6512
6613
  title,
6513
- description,
6514
6614
  onClick,
6515
6615
  leftImage,
6516
6616
  hide = false,
@@ -6521,7 +6621,8 @@ var ActionButton = ({
6521
6621
  stacked = false,
6522
6622
  isLoading,
6523
6623
  loadingText,
6524
- style
6624
+ style,
6625
+ extraContent
6525
6626
  }) => {
6526
6627
  const { t } = useTranslation();
6527
6628
  const { colorMode } = useColorMode();
@@ -6550,10 +6651,11 @@ var ActionButton = ({
6550
6651
  h: "35px",
6551
6652
  borderRadius: "full",
6552
6653
  alt: "left-image",
6553
- alignSelf: "end"
6654
+ alignSelf: "end",
6655
+ objectFit: "cover"
6554
6656
  }
6555
6657
  ) : /* @__PURE__ */ jsx(Icon, { as: leftIcon, fontSize: "25px" }) }),
6556
- /* @__PURE__ */ jsxs(
6658
+ /* @__PURE__ */ jsx(
6557
6659
  VStack,
6558
6660
  {
6559
6661
  textAlign: "left",
@@ -6561,26 +6663,11 @@ var ActionButton = ({
6561
6663
  flex: 1,
6562
6664
  justifyContent: "flex-start",
6563
6665
  alignItems: "flex-start",
6564
- children: [
6565
- /* @__PURE__ */ jsxs(HStack, { justify: "flex-start", children: [
6566
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", fontWeight: "400", children: title }),
6567
- showComingSoon && /* @__PURE__ */ jsx(Tag, { size: "sm", colorScheme: "red", children: t("Coming Soon!") })
6568
- ] }),
6569
- /* @__PURE__ */ jsx(
6570
- Text,
6571
- {
6572
- fontSize: "xs",
6573
- fontWeight: "400",
6574
- opacity: 0.5,
6575
- overflowWrap: "break-word",
6576
- wordBreak: "break-word",
6577
- whiteSpace: "normal",
6578
- w: "full",
6579
- pr: rightIcon ? "0px" : "10px",
6580
- children: description
6581
- }
6582
- )
6583
- ]
6666
+ children: /* @__PURE__ */ jsxs(HStack, { justify: "flex-start", children: [
6667
+ /* @__PURE__ */ jsx(Text, { fontSize: "sm", fontWeight: "400", children: title }),
6668
+ showComingSoon && /* @__PURE__ */ jsx(Tag, { size: "sm", colorScheme: "red", children: t("Coming Soon!") }),
6669
+ extraContent
6670
+ ] })
6584
6671
  }
6585
6672
  ),
6586
6673
  rightIcon && /* @__PURE__ */ jsx(VStack, { minW: "40px", justifyContent: "flex-end", children: /* @__PURE__ */ jsx(Icon, { as: rightIcon, fontSize: "20px", opacity: 0.5 }) })
@@ -6594,28 +6681,25 @@ var AccountSelector = ({
6594
6681
  onClick,
6595
6682
  mt
6596
6683
  }) => {
6597
- return /* @__PURE__ */ jsx(HStack, { mt, children: /* @__PURE__ */ jsx(
6684
+ return /* @__PURE__ */ jsx(HStack, { mt, w: "full", justify: "center", children: /* @__PURE__ */ jsx(
6598
6685
  Button,
6599
6686
  {
6600
6687
  w: "fit-content",
6601
6688
  p: 2,
6602
6689
  pl: 4,
6603
- h: 9,
6690
+ h: 14,
6604
6691
  "aria-label": "Wallet",
6605
6692
  onClick,
6606
6693
  variant: "vechainKitSelector",
6607
6694
  children: /* @__PURE__ */ jsxs(HStack, { spacing: 2, align: "center", children: [
6608
6695
  /* @__PURE__ */ jsx(
6609
- Image,
6696
+ AccountAvatar,
6610
6697
  {
6611
- src: wallet?.image,
6612
- alt: wallet?.domain,
6613
- width: 5,
6614
- height: 5,
6615
- rounded: "full"
6698
+ wallet,
6699
+ props: { width: 10, height: 10 }
6616
6700
  }
6617
6701
  ),
6618
- /* @__PURE__ */ jsx(Text, { fontSize: size, fontWeight: "500", children: humanDomain(wallet?.domain ?? "", 6, 4) || humanAddress(wallet?.address ?? "", 6, 4) }),
6702
+ /* @__PURE__ */ jsx(Text, { fontSize: size, fontWeight: "500", children: humanDomain(wallet?.domain ?? "", 20, 0) || humanAddress(wallet?.address ?? "", 6, 4) }),
6619
6703
  /* @__PURE__ */ jsx(
6620
6704
  Icon,
6621
6705
  {
@@ -6815,8 +6899,8 @@ var QuickActionsSection = ({ mt, setCurrentContent }) => {
6815
6899
  py: 3,
6816
6900
  fontSize: "xs",
6817
6901
  verticalAlign: "middle",
6818
- "aria-label": "Ecosystem",
6819
- icon: /* @__PURE__ */ jsx(Icon, { as: IoPlanet, boxSize: 5, opacity: 0.9 }),
6902
+ "aria-label": "Apps",
6903
+ icon: /* @__PURE__ */ jsx(Icon, { as: IoMdApps, boxSize: 5, opacity: 0.9 }),
6820
6904
  onClick: () => setCurrentContent("ecosystem")
6821
6905
  }
6822
6906
  ),
@@ -6869,85 +6953,541 @@ var QuickActionsSection = ({ mt, setCurrentContent }) => {
6869
6953
  )
6870
6954
  ] });
6871
6955
  };
6872
- var NetworkInfo = () => {
6956
+ var Profile = ({ onEditClick }) => {
6957
+ const { darkMode: isDark } = useVeChainKitConfig();
6958
+ const { account } = useWallet();
6959
+ const baseBackgroundColor = isDark ? "whiteAlpha.100" : "#00000005";
6960
+ const headerImageSvg = picasso(account?.address ?? "");
6961
+ return /* @__PURE__ */ jsxs(
6962
+ Card,
6963
+ {
6964
+ bg: baseBackgroundColor,
6965
+ borderRadius: "xl",
6966
+ width: "full",
6967
+ position: "relative",
6968
+ overflow: "visible",
6969
+ children: [
6970
+ /* @__PURE__ */ jsx(
6971
+ Box,
6972
+ {
6973
+ p: 0,
6974
+ backgroundSize: "100% !important",
6975
+ backgroundPosition: "center",
6976
+ position: "relative",
6977
+ h: "80px",
6978
+ background: `no-repeat url('data:image/svg+xml;utf8,${headerImageSvg}')`,
6979
+ w: "100%",
6980
+ borderRadius: "14px 14px 0 0"
6981
+ }
6982
+ ),
6983
+ /* @__PURE__ */ jsx(
6984
+ Box,
6985
+ {
6986
+ position: "absolute",
6987
+ top: "30px",
6988
+ left: "50%",
6989
+ transform: "translateX(-50%)",
6990
+ children: /* @__PURE__ */ jsx(
6991
+ AccountAvatar,
6992
+ {
6993
+ wallet: account,
6994
+ props: {
6995
+ width: "100px",
6996
+ height: "100px",
6997
+ boxShadow: "0px 0px 3px 2px #00000024"
6998
+ }
6999
+ }
7000
+ )
7001
+ }
7002
+ ),
7003
+ /* @__PURE__ */ jsx(CardBody, { pt: "14", pb: "6", backgroundColor: "none", border: "none", children: /* @__PURE__ */ jsx(AddressDisplay, { wallet: account }) }),
7004
+ /* @__PURE__ */ jsx(CardFooter, { pt: 0, justify: "center", children: /* @__PURE__ */ jsx(
7005
+ Button,
7006
+ {
7007
+ size: "sm",
7008
+ variant: "ghost",
7009
+ leftIcon: /* @__PURE__ */ jsx(Icon, { as: FaEdit }),
7010
+ onClick: onEditClick,
7011
+ children: "Edit"
7012
+ }
7013
+ ) })
7014
+ ]
7015
+ }
7016
+ );
7017
+ };
7018
+ var AccessAndSecurityContent = ({ setCurrentContent }) => {
6873
7019
  const { t } = useTranslation();
6874
- const { darkMode: isDark, network } = useVeChainKitConfig();
6875
- const { connection, smartAccount } = useWallet();
6876
- return /* @__PURE__ */ jsxs(Fragment, { children: [
6877
- /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
6878
- /* @__PURE__ */ jsxs(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: [
6879
- t("Connection Type"),
6880
- ":"
6881
- ] }),
6882
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: connection.source.type })
6883
- ] }),
6884
- /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
6885
- /* @__PURE__ */ jsxs(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: [
6886
- t("Network"),
6887
- ":"
6888
- ] }),
6889
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: network.type })
6890
- ] }),
6891
- /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
6892
- /* @__PURE__ */ jsxs(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: [
6893
- t("Node URL"),
6894
- ":"
6895
- ] }),
6896
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: network.nodeUrl || getConfig(network.type).nodeUrl })
6897
- ] }),
6898
- connection.isConnectedWithPrivy ? /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
6899
- /* @__PURE__ */ jsxs(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: [
6900
- t("Smart Account"),
6901
- ":"
6902
- ] }),
6903
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: smartAccount.version ? `v${smartAccount.version}` : "v1" })
6904
- ] }) : smartAccount.isDeployed && /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
6905
- /* @__PURE__ */ jsxs(
6906
- Text,
7020
+ const { linkPasskey } = usePrivy();
7021
+ const { darkMode: isDark, privy } = useVeChainKitConfig();
7022
+ const { connection } = useWallet();
7023
+ return /* @__PURE__ */ jsxs(ScrollToTopWrapper, { children: [
7024
+ /* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
7025
+ /* @__PURE__ */ jsx(
7026
+ ModalHeader,
6907
7027
  {
6908
- fontSize: "sm",
7028
+ fontSize: "md",
7029
+ fontWeight: "500",
7030
+ textAlign: "center",
6909
7031
  color: isDark ? "#dfdfdd" : "#4d4d4d",
6910
- children: [
6911
- t("Smart Account"),
6912
- ":"
6913
- ]
7032
+ children: t("Access and security")
6914
7033
  }
6915
7034
  ),
6916
7035
  /* @__PURE__ */ jsx(
6917
- Text,
7036
+ ModalBackButton,
6918
7037
  {
6919
- fontSize: "sm",
6920
- color: isDark ? "#dfdfdd" : "#4d4d4d",
6921
- children: smartAccount.version ? `v${smartAccount.version}` : "v1"
7038
+ onClick: () => setCurrentContent("settings")
6922
7039
  }
6923
- )
7040
+ ),
7041
+ /* @__PURE__ */ jsx(ModalCloseButton, {})
6924
7042
  ] }),
6925
- /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
6926
- /* @__PURE__ */ jsxs(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: [
6927
- t("VeChain Kit"),
6928
- ":"
6929
- ] }),
6930
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: package_default.version })
6931
- ] })
6932
- ] });
6933
- };
6934
- var CrossAppConnectionCard = ({ connectionCache }) => {
6935
- const { t } = useTranslation();
6936
- const { darkMode: isDark } = useVeChainKitConfig();
6937
- return /* @__PURE__ */ jsx(Fragment, { children: connectionCache.ecosystemApp && /* @__PURE__ */ jsxs(
6938
- VStack,
6939
- {
6940
- p: 4,
6941
- bg: isDark ? "#1a1a1a" : "#f5f5f5",
6942
- borderRadius: "xl",
6943
- spacing: 4,
6944
- w: "full",
6945
- children: [
6946
- /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
6947
- /* @__PURE__ */ jsxs(
6948
- Text,
7043
+ /* @__PURE__ */ jsx(ModalBody, { w: "full", children: /* @__PURE__ */ jsxs(
7044
+ VStack,
7045
+ {
7046
+ justify: "center",
7047
+ spacing: 3,
7048
+ align: "flex-start",
7049
+ w: "full",
7050
+ children: [
7051
+ /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7052
+ "Manage your embedded wallet security settings or back it up to a new device."
7053
+ ) }),
7054
+ /* @__PURE__ */ jsx(
7055
+ ActionButton,
6949
7056
  {
6950
- fontSize: "sm",
7057
+ title: t("Passkey"),
7058
+ description: t(
7059
+ "Enable one click login by adding a passkey to your account."
7060
+ ),
7061
+ onClick: () => {
7062
+ linkPasskey();
7063
+ },
7064
+ leftIcon: IoIosFingerPrint,
7065
+ rightIcon: void 0,
7066
+ isDisabled: !privy?.allowPasskeyLinking
7067
+ }
7068
+ ),
7069
+ /* @__PURE__ */ jsx(
7070
+ ActionButton,
7071
+ {
7072
+ title: t("Login methods"),
7073
+ description: t(
7074
+ connection.isConnectedWithSocialLogin ? "View and manage the login methods linked to your wallet." : "Login methods can be managed only in the app securing your wallet."
7075
+ ),
7076
+ onClick: () => {
7077
+ setCurrentContent("privy-linked-accounts");
7078
+ },
7079
+ isDisabled: !connection.isConnectedWithSocialLogin,
7080
+ leftIcon: GrUserAdmin,
7081
+ rightIcon: MdOutlineNavigateNext
7082
+ }
7083
+ ),
7084
+ /* @__PURE__ */ jsx(
7085
+ ActionButton,
7086
+ {
7087
+ title: t("Embedded wallet"),
7088
+ description: t(
7089
+ connection.isConnectedWithSocialLogin ? "Store your Recovery Phrase or Private Key in a secure location, avoid losing access to your assets." : "Backup can be done only in the app securing your wallet."
7090
+ ),
7091
+ onClick: () => {
7092
+ setCurrentContent("embedded-wallet");
7093
+ },
7094
+ leftIcon: HiOutlineWallet,
7095
+ rightIcon: MdOutlineNavigateNext
7096
+ }
7097
+ )
7098
+ ]
7099
+ }
7100
+ ) }),
7101
+ /* @__PURE__ */ jsx(ModalFooter, { w: "full" })
7102
+ ] });
7103
+ };
7104
+ var SettingsContent = ({
7105
+ setCurrentContent,
7106
+ onLogoutSuccess
7107
+ }) => {
7108
+ const contentRef = useRef(null);
7109
+ const { t } = useTranslation();
7110
+ const { privy, darkMode: isDark } = useVeChainKitConfig();
7111
+ const { connection, disconnect } = useWallet();
7112
+ const { getConnectionCache } = useCrossAppConnectionCache();
7113
+ const connectionCache = getConnectionCache();
7114
+ const { data: appInfo } = useFetchAppInfo(privy?.appId ?? "");
7115
+ const { getNotifications } = useNotifications();
7116
+ const notifications = getNotifications();
7117
+ const hasUnreadNotifications = notifications.some((n) => !n.isRead);
7118
+ useEffect(() => {
7119
+ if (contentRef.current) {
7120
+ contentRef.current.scrollTop = 0;
7121
+ }
7122
+ }, []);
7123
+ return /* @__PURE__ */ jsxs(Box, { children: [
7124
+ /* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
7125
+ /* @__PURE__ */ jsx(
7126
+ ModalHeader,
7127
+ {
7128
+ fontSize: "md",
7129
+ fontWeight: "500",
7130
+ textAlign: "center",
7131
+ color: isDark ? "#dfdfdd" : "#4d4d4d",
7132
+ children: t("Settings")
7133
+ }
7134
+ ),
7135
+ /* @__PURE__ */ jsx(ModalBackButton, { onClick: () => setCurrentContent("main") }),
7136
+ /* @__PURE__ */ jsx(ModalCloseButton, {})
7137
+ ] }),
7138
+ /* @__PURE__ */ jsxs(ModalBody, { w: "full", children: [
7139
+ /* @__PURE__ */ jsx(
7140
+ Profile,
7141
+ {
7142
+ onEditClick: () => setCurrentContent("account-customization")
7143
+ }
7144
+ ),
7145
+ /* @__PURE__ */ jsxs(VStack, { w: "full", spacing: 0, children: [
7146
+ /* @__PURE__ */ jsx(
7147
+ ActionButton,
7148
+ {
7149
+ style: {
7150
+ marginTop: "10px",
7151
+ borderBottomRadius: connection.isConnectedWithPrivy ? "0px" : "12px"
7152
+ },
7153
+ title: t("Connection details"),
7154
+ description: t(
7155
+ "View the details of your connection to this app."
7156
+ ),
7157
+ onClick: () => {
7158
+ setCurrentContent("connection-details");
7159
+ },
7160
+ leftIcon: VscDebugDisconnect,
7161
+ rightIcon: MdOutlineNavigateNext
7162
+ }
7163
+ ),
7164
+ connection.isConnectedWithPrivy && /* @__PURE__ */ jsx(
7165
+ ActionButton,
7166
+ {
7167
+ style: {
7168
+ borderTopRadius: "0px"
7169
+ },
7170
+ title: t("Access and security"),
7171
+ description: t(
7172
+ "Manage your embedded wallet security settings or back it up to a new device."
7173
+ ),
7174
+ onClick: () => {
7175
+ setCurrentContent("access-and-security");
7176
+ },
7177
+ leftIcon: IoShieldOutline,
7178
+ rightIcon: MdOutlineNavigateNext
7179
+ }
7180
+ ),
7181
+ /* @__PURE__ */ jsx(
7182
+ ActionButton,
7183
+ {
7184
+ style: {
7185
+ marginTop: "10px",
7186
+ borderBottomRadius: "0px"
7187
+ },
7188
+ title: t("Notifications"),
7189
+ description: t("View your notifications and updates."),
7190
+ onClick: () => {
7191
+ setCurrentContent("notifications");
7192
+ },
7193
+ leftIcon: BiBell,
7194
+ rightIcon: MdOutlineNavigateNext,
7195
+ extraContent: hasUnreadNotifications && /* @__PURE__ */ jsx(
7196
+ Box,
7197
+ {
7198
+ minWidth: "16px",
7199
+ height: "16px",
7200
+ bg: "red.500",
7201
+ borderRadius: "full",
7202
+ display: "flex",
7203
+ alignItems: "center",
7204
+ justifyContent: "center",
7205
+ ml: 2,
7206
+ children: /* @__PURE__ */ jsx(Text, { fontSize: "xs", color: "white", children: notifications.filter(
7207
+ (n) => !n.isRead
7208
+ ).length })
7209
+ }
7210
+ )
7211
+ }
7212
+ ),
7213
+ /* @__PURE__ */ jsx(
7214
+ ActionButton,
7215
+ {
7216
+ title: t("Help"),
7217
+ description: t(
7218
+ "Still have some doubts? Check out our FAQs and learn more.",
7219
+ {
7220
+ appName: connection.isConnectedWithCrossApp ? connectionCache?.ecosystemApp?.name : Object.values(appInfo ?? {})[0]?.name ?? ""
7221
+ }
7222
+ ),
7223
+ onClick: () => setCurrentContent("faq"),
7224
+ leftIcon: BsQuestionCircle,
7225
+ rightIcon: MdOutlineNavigateNext,
7226
+ style: {
7227
+ borderTopRadius: "0px"
7228
+ }
7229
+ }
7230
+ )
7231
+ ] })
7232
+ ] }),
7233
+ /* @__PURE__ */ jsx(ModalFooter, { w: "full", children: /* @__PURE__ */ jsx(
7234
+ Button,
7235
+ {
7236
+ onClick: () => setCurrentContent({
7237
+ type: "disconnect-confirm",
7238
+ props: {
7239
+ onDisconnect: () => {
7240
+ disconnect();
7241
+ onLogoutSuccess();
7242
+ },
7243
+ onBack: () => setCurrentContent("settings")
7244
+ }
7245
+ }),
7246
+ variant: "vechainKitSecondary",
7247
+ leftIcon: /* @__PURE__ */ jsx(RiLogoutBoxLine, { color: "#888888" }),
7248
+ children: t("Logout")
7249
+ }
7250
+ ) })
7251
+ ] });
7252
+ };
7253
+ var AccountCustomizationContent = ({ setCurrentContent }) => {
7254
+ const { t } = useTranslation();
7255
+ const { network, darkMode: isDark } = useVeChainKitConfig();
7256
+ const { account } = useWallet();
7257
+ const fileInputRef = useRef(null);
7258
+ const [isUploading, setIsUploading] = useState(false);
7259
+ const [isProcessing, setIsProcessing] = useState(false);
7260
+ const [showFullText, setShowFullText] = useState(false);
7261
+ const queryClient = useQueryClient();
7262
+ const { onUpload } = useSingleImageUpload({
7263
+ compressImage: true
7264
+ });
7265
+ const { updateAvatar } = useUpdateAvatarRecord({
7266
+ onSuccess: async () => {
7267
+ await queryClient.invalidateQueries({
7268
+ queryKey: getAvatarQueryKey(account?.domain ?? "")
7269
+ });
7270
+ await queryClient.refetchQueries({
7271
+ queryKey: getAvatarQueryKey(account?.domain ?? "")
7272
+ });
7273
+ setIsProcessing(false);
7274
+ },
7275
+ onError: () => {
7276
+ setIsProcessing(false);
7277
+ }
7278
+ });
7279
+ const handleImageUpload = async (event) => {
7280
+ const file = event.target.files?.[0];
7281
+ if (!file) return;
7282
+ try {
7283
+ setIsUploading(true);
7284
+ setIsProcessing(true);
7285
+ const uploadedImage = await onUpload(file);
7286
+ if (!uploadedImage) throw new Error("Failed to compress image");
7287
+ const ipfsHash = await uploadBlobToIPFS(
7288
+ uploadedImage.file,
7289
+ file.name,
7290
+ network.type
7291
+ );
7292
+ await updateAvatar(account?.domain ?? "", "ipfs://" + ipfsHash);
7293
+ } catch (error) {
7294
+ console.error("Error uploading image:", error);
7295
+ setIsProcessing(false);
7296
+ } finally {
7297
+ setIsUploading(false);
7298
+ }
7299
+ };
7300
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
7301
+ /* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
7302
+ /* @__PURE__ */ jsx(
7303
+ ModalHeader,
7304
+ {
7305
+ fontSize: "md",
7306
+ fontWeight: "500",
7307
+ textAlign: "center",
7308
+ color: isDark ? "#dfdfdd" : "#4d4d4d",
7309
+ children: t("Customize Account")
7310
+ }
7311
+ ),
7312
+ /* @__PURE__ */ jsx(
7313
+ ModalBackButton,
7314
+ {
7315
+ onClick: () => setCurrentContent("settings")
7316
+ }
7317
+ ),
7318
+ /* @__PURE__ */ jsx(ModalCloseButton, {})
7319
+ ] }),
7320
+ /* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsxs(VStack, { spacing: 3, align: "center", children: [
7321
+ /* @__PURE__ */ jsxs(
7322
+ VStack,
7323
+ {
7324
+ spacing: 3,
7325
+ w: "full",
7326
+ justifyContent: "flex-start",
7327
+ alignItems: "flex-start",
7328
+ children: [
7329
+ /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7330
+ "Customize your account with a unique .vet domain name and profile image to enhance your identity across VeChain applications."
7331
+ ) }),
7332
+ showFullText && /* @__PURE__ */ jsxs(Fragment, { children: [
7333
+ /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7334
+ "Your customizations are linked to your .vet domain name, making them portable across different applications."
7335
+ ) }),
7336
+ /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7337
+ "To get started with customization, first secure your .vet domain name. Once you have a domain, you can add a profile image that will be visible wherever you use your account."
7338
+ ) }),
7339
+ /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7340
+ "Changing your domain name will update also your profile image."
7341
+ ) })
7342
+ ] }),
7343
+ /* @__PURE__ */ jsx(
7344
+ Button,
7345
+ {
7346
+ mt: 0,
7347
+ variant: "link",
7348
+ size: "sm",
7349
+ onClick: () => setShowFullText(!showFullText),
7350
+ color: "blue.500",
7351
+ textAlign: "left",
7352
+ children: t(showFullText ? "Show Less" : "Read More")
7353
+ }
7354
+ )
7355
+ ]
7356
+ }
7357
+ ),
7358
+ /* @__PURE__ */ jsx(
7359
+ ActionButton,
7360
+ {
7361
+ style: {
7362
+ mt: 3
7363
+ },
7364
+ title: account?.domain ? account?.domain : t("Choose account name"),
7365
+ description: t(
7366
+ "Choose a unique .vet domain name for your account."
7367
+ ),
7368
+ onClick: () => {
7369
+ if (account?.domain) {
7370
+ setCurrentContent({
7371
+ type: "choose-name-search",
7372
+ props: {
7373
+ name: "",
7374
+ setCurrentContent
7375
+ }
7376
+ });
7377
+ } else {
7378
+ setCurrentContent("choose-name");
7379
+ }
7380
+ },
7381
+ leftIcon: FaRegAddressCard,
7382
+ rightIcon: MdOutlineNavigateNext
7383
+ }
7384
+ ),
7385
+ /* @__PURE__ */ jsx(
7386
+ ActionButton,
7387
+ {
7388
+ title: t("Update profile image"),
7389
+ description: t(
7390
+ !account?.domain ? "You can change your profile image only after you setup your domain name." : "Customize your account by adding a profile image, which will be displayed on the apps you use."
7391
+ ),
7392
+ onClick: () => fileInputRef.current?.click(),
7393
+ leftImage: account?.image,
7394
+ isLoading: isUploading || isProcessing,
7395
+ isDisabled: !account?.domain,
7396
+ loadingText: isUploading ? t("Uploading image") : t("Setting image")
7397
+ }
7398
+ ),
7399
+ /* @__PURE__ */ jsx(
7400
+ "input",
7401
+ {
7402
+ type: "file",
7403
+ ref: fileInputRef,
7404
+ hidden: true,
7405
+ accept: "image/*",
7406
+ onChange: async (event) => await handleImageUpload(event)
7407
+ }
7408
+ )
7409
+ ] }) })
7410
+ ] });
7411
+ };
7412
+ var NetworkInfo = () => {
7413
+ const { t } = useTranslation();
7414
+ const { darkMode: isDark, network } = useVeChainKitConfig();
7415
+ const { connection, smartAccount } = useWallet();
7416
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
7417
+ /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7418
+ /* @__PURE__ */ jsxs(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: [
7419
+ t("Connection Type"),
7420
+ ":"
7421
+ ] }),
7422
+ /* @__PURE__ */ jsx(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: connection.source.type })
7423
+ ] }),
7424
+ /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7425
+ /* @__PURE__ */ jsxs(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: [
7426
+ t("Network"),
7427
+ ":"
7428
+ ] }),
7429
+ /* @__PURE__ */ jsx(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: network.type })
7430
+ ] }),
7431
+ /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7432
+ /* @__PURE__ */ jsxs(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: [
7433
+ t("Node URL"),
7434
+ ":"
7435
+ ] }),
7436
+ /* @__PURE__ */ jsx(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: network.nodeUrl || getConfig(network.type).nodeUrl })
7437
+ ] }),
7438
+ connection.isConnectedWithPrivy ? /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7439
+ /* @__PURE__ */ jsxs(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: [
7440
+ t("Smart Account"),
7441
+ ":"
7442
+ ] }),
7443
+ /* @__PURE__ */ jsx(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: smartAccount.version ? `v${smartAccount.version}` : "v1" })
7444
+ ] }) : smartAccount.isDeployed && /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7445
+ /* @__PURE__ */ jsxs(
7446
+ Text,
7447
+ {
7448
+ fontSize: "sm",
7449
+ color: isDark ? "#dfdfdd" : "#4d4d4d",
7450
+ children: [
7451
+ t("Smart Account"),
7452
+ ":"
7453
+ ]
7454
+ }
7455
+ ),
7456
+ /* @__PURE__ */ jsx(
7457
+ Text,
7458
+ {
7459
+ fontSize: "sm",
7460
+ color: isDark ? "#dfdfdd" : "#4d4d4d",
7461
+ children: smartAccount.version ? `v${smartAccount.version}` : "v1"
7462
+ }
7463
+ )
7464
+ ] }),
7465
+ /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7466
+ /* @__PURE__ */ jsxs(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: [
7467
+ t("VeChain Kit"),
7468
+ ":"
7469
+ ] }),
7470
+ /* @__PURE__ */ jsx(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: package_default.version })
7471
+ ] })
7472
+ ] });
7473
+ };
7474
+ var CrossAppConnectionCard = ({ connectionCache }) => {
7475
+ const { t } = useTranslation();
7476
+ const { darkMode: isDark } = useVeChainKitConfig();
7477
+ return /* @__PURE__ */ jsx(Fragment, { children: connectionCache.ecosystemApp && /* @__PURE__ */ jsxs(
7478
+ VStack,
7479
+ {
7480
+ p: 4,
7481
+ bg: isDark ? "#1a1a1a" : "#f5f5f5",
7482
+ borderRadius: "xl",
7483
+ spacing: 4,
7484
+ w: "full",
7485
+ children: [
7486
+ /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7487
+ /* @__PURE__ */ jsxs(
7488
+ Text,
7489
+ {
7490
+ fontSize: "sm",
6951
7491
  color: isDark ? "#dfdfdd" : "#4d4d4d",
6952
7492
  children: [
6953
7493
  t("Logged in with"),
@@ -7121,14 +7661,13 @@ var WalletSecuredBy = () => {
7121
7661
  };
7122
7662
  var EmbeddedWalletContent = ({ setCurrentContent }) => {
7123
7663
  const { t } = useTranslation();
7664
+ const { connectedWallet, connection } = useWallet();
7124
7665
  const [showFullText, setShowFullText] = useState(false);
7125
- const { connectedWallet } = useWallet();
7126
- const { exportWallet } = usePrivy();
7127
7666
  const walletImage = getPicassoImage(connectedWallet?.address ?? "");
7128
7667
  const { getConnectionCache } = useCrossAppConnectionCache();
7129
- const { darkMode: isDark } = useVeChainKitConfig();
7130
- const { connection } = useWallet();
7131
7668
  const connectionCache = getConnectionCache();
7669
+ const { darkMode: isDark } = useVeChainKitConfig();
7670
+ const { exportWallet } = usePrivy();
7132
7671
  return /* @__PURE__ */ jsxs(ScrollToTopWrapper, { children: [
7133
7672
  /* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
7134
7673
  /* @__PURE__ */ jsx(
@@ -7138,13 +7677,13 @@ var EmbeddedWalletContent = ({ setCurrentContent }) => {
7138
7677
  fontWeight: "500",
7139
7678
  textAlign: "center",
7140
7679
  color: isDark ? "#dfdfdd" : "#4d4d4d",
7141
- children: t("Embedded Wallet")
7680
+ children: t("Embedded wallet")
7142
7681
  }
7143
7682
  ),
7144
7683
  /* @__PURE__ */ jsx(
7145
7684
  ModalBackButton,
7146
7685
  {
7147
- onClick: () => setCurrentContent("settings")
7686
+ onClick: () => setCurrentContent("access-and-security")
7148
7687
  }
7149
7688
  ),
7150
7689
  /* @__PURE__ */ jsx(ModalCloseButton, {})
@@ -7240,280 +7779,10 @@ var EmbeddedWalletContent = ({ setCurrentContent }) => {
7240
7779
  }
7241
7780
  ),
7242
7781
  " ",
7243
- t(
7244
- "to learn more about embedded wallets."
7245
- )
7246
- ] })
7247
- ] }),
7248
- /* @__PURE__ */ jsx(
7249
- Button,
7250
- {
7251
- mt: 0,
7252
- variant: "link",
7253
- size: "sm",
7254
- onClick: () => setShowFullText(!showFullText),
7255
- color: "blue.500",
7256
- textAlign: "left",
7257
- children: t(showFullText ? "Show Less" : "Read More")
7258
- }
7259
- )
7260
- ] }),
7261
- /* @__PURE__ */ jsx(
7262
- ActionButton,
7263
- {
7264
- title: t("Backup your wallet"),
7265
- description: t(
7266
- connection.isConnectedWithSocialLogin ? "Store your Recovery Phrase or Private Key in a secure location, avoid losing access to your assets." : "Backup can be done only in the app securing your wallet."
7267
- ),
7268
- onClick: () => {
7269
- exportWallet();
7270
- },
7271
- isDisabled: !connection.isConnectedWithSocialLogin,
7272
- leftIcon: GiHouseKeys,
7273
- rightIcon: MdOutlineNavigateNext
7274
- }
7275
- ),
7276
- /* @__PURE__ */ jsx(
7277
- ActionButton,
7278
- {
7279
- title: t("Login methods"),
7280
- description: t(
7281
- connection.isConnectedWithSocialLogin ? "View and manage the login methods linked to your wallet." : "Login methods can be managed only in the app securing your wallet."
7282
- ),
7283
- onClick: () => {
7284
- setCurrentContent("privy-linked-accounts");
7285
- },
7286
- isDisabled: !connection.isConnectedWithSocialLogin,
7287
- leftIcon: MdManageAccounts,
7288
- rightIcon: MdOutlineNavigateNext
7289
- }
7290
- )
7291
- ]
7292
- }
7293
- ) }),
7294
- /* @__PURE__ */ jsx(ModalFooter, { w: "full", children: /* @__PURE__ */ jsxs(VStack, { w: "full", children: [
7295
- /* @__PURE__ */ jsx(Divider, {}),
7296
- connection.isConnectedWithPrivy && /* @__PURE__ */ jsx(WalletSecuredBy, {})
7297
- ] }) })
7298
- ] });
7299
- };
7300
- var WalletSettingsContent = ({
7301
- setCurrentContent,
7302
- onLogoutSuccess
7303
- }) => {
7304
- const contentRef = useRef(null);
7305
- const { t } = useTranslation();
7306
- const { privy, darkMode: isDark, network } = useVeChainKitConfig();
7307
- const { connection, disconnect, account } = useWallet();
7308
- const { getConnectionCache } = useCrossAppConnectionCache();
7309
- const connectionCache = getConnectionCache();
7310
- const { data: appInfo } = useFetchAppInfo(privy?.appId ?? "");
7311
- useEffect(() => {
7312
- if (contentRef.current) {
7313
- contentRef.current.scrollTop = 0;
7314
- }
7315
- }, []);
7316
- return /* @__PURE__ */ jsxs(Box, { children: [
7317
- /* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
7318
- /* @__PURE__ */ jsx(
7319
- ModalHeader,
7320
- {
7321
- fontSize: "md",
7322
- fontWeight: "500",
7323
- textAlign: "center",
7324
- color: isDark ? "#dfdfdd" : "#4d4d4d",
7325
- children: t("Settings")
7326
- }
7327
- ),
7328
- /* @__PURE__ */ jsx(ModalBackButton, { onClick: () => setCurrentContent("main") }),
7329
- /* @__PURE__ */ jsx(ModalCloseButton, {})
7330
- ] }),
7331
- /* @__PURE__ */ jsxs(ModalBody, { w: "full", children: [
7332
- /* @__PURE__ */ jsxs(VStack, { justify: "center", children: [
7333
- /* @__PURE__ */ jsx(
7334
- Image,
7335
- {
7336
- src: account?.image,
7337
- maxW: "100px",
7338
- borderRadius: "50%"
7339
- }
7340
- ),
7341
- /* @__PURE__ */ jsx(AddressDisplay, { wallet: account }),
7342
- network.type !== "main" && /* @__PURE__ */ jsx(
7343
- Tag,
7344
- {
7345
- size: "sm",
7346
- colorScheme: "blue",
7347
- width: "fit-content",
7348
- justifyContent: "center",
7349
- padding: "10px",
7350
- children: network.type === "test" ? t("Testnet") : t("Unknown")
7351
- }
7352
- )
7353
- ] }),
7354
- /* @__PURE__ */ jsxs(VStack, { mt: 10, w: "full", spacing: 3, children: [
7355
- /* @__PURE__ */ jsx(
7356
- ActionButton,
7357
- {
7358
- title: t("Connection Details"),
7359
- description: t(
7360
- "View the details of your connection to this app."
7361
- ),
7362
- onClick: () => {
7363
- setCurrentContent("connection-details");
7364
- },
7365
- leftIcon: VscDebugDisconnect,
7366
- rightIcon: MdOutlineNavigateNext
7367
- }
7368
- ),
7369
- /* @__PURE__ */ jsx(
7370
- ActionButton,
7371
- {
7372
- title: t("Customize account"),
7373
- description: t(
7374
- "Customize your account with a nickname and a picture to easily identify it."
7375
- ),
7376
- onClick: () => {
7377
- setCurrentContent("account-customization");
7378
- },
7379
- leftIcon: GiPaintBrush,
7380
- rightIcon: MdOutlineNavigateNext
7381
- }
7382
- ),
7383
- connection.isConnectedWithPrivy && /* @__PURE__ */ jsx(
7384
- ActionButton,
7385
- {
7386
- title: t("Embedded Wallet"),
7387
- description: t(
7388
- "Manage your embedded wallet security settings or back it up to a new device."
7389
- ),
7390
- onClick: () => {
7391
- setCurrentContent("embedded-wallet");
7392
- },
7393
- leftIcon: HiOutlineWallet,
7394
- rightIcon: MdOutlineNavigateNext
7395
- }
7396
- ),
7397
- /* @__PURE__ */ jsx(
7398
- ActionButton,
7399
- {
7400
- title: t("FAQs"),
7401
- description: t(
7402
- "Still have some doubts? Check out our FAQs and learn more.",
7403
- {
7404
- appName: connection.isConnectedWithCrossApp ? connectionCache?.ecosystemApp?.name : Object.values(appInfo ?? {})[0]?.name ?? ""
7405
- }
7406
- ),
7407
- onClick: () => setCurrentContent("faq"),
7408
- leftIcon: BsQuestionCircle,
7409
- rightIcon: MdOutlineNavigateNext
7410
- }
7411
- )
7412
- ] })
7413
- ] }),
7414
- /* @__PURE__ */ jsx(ModalFooter, { w: "full", children: /* @__PURE__ */ jsx(
7415
- Button,
7416
- {
7417
- onClick: () => {
7418
- disconnect();
7419
- onLogoutSuccess();
7420
- },
7421
- variant: "vechainKitSecondary",
7422
- leftIcon: /* @__PURE__ */ jsx(RiLogoutBoxLine, { color: "#888888" }),
7423
- children: t("Logout")
7424
- }
7425
- ) })
7426
- ] });
7427
- };
7428
- var AccountCustomizationContent = ({ setCurrentContent }) => {
7429
- const { t } = useTranslation();
7430
- const { network, darkMode: isDark } = useVeChainKitConfig();
7431
- const { account } = useWallet();
7432
- const fileInputRef = useRef(null);
7433
- const [isUploading, setIsUploading] = useState(false);
7434
- const [isProcessing, setIsProcessing] = useState(false);
7435
- const [showFullText, setShowFullText] = useState(false);
7436
- const queryClient = useQueryClient();
7437
- const { onUpload } = useSingleImageUpload({
7438
- compressImage: true
7439
- });
7440
- const { updateAvatar } = useUpdateAvatarRecord({
7441
- onSuccess: async () => {
7442
- await queryClient.invalidateQueries({
7443
- queryKey: getAvatarQueryKey(account?.domain ?? "")
7444
- });
7445
- await queryClient.refetchQueries({
7446
- queryKey: getAvatarQueryKey(account?.domain ?? "")
7447
- });
7448
- setIsProcessing(false);
7449
- },
7450
- onError: () => {
7451
- setIsProcessing(false);
7452
- }
7453
- });
7454
- const handleImageUpload = async (event) => {
7455
- const file = event.target.files?.[0];
7456
- if (!file) return;
7457
- try {
7458
- setIsUploading(true);
7459
- setIsProcessing(true);
7460
- const uploadedImage = await onUpload(file);
7461
- if (!uploadedImage) throw new Error("Failed to compress image");
7462
- const ipfsHash = await uploadBlobToIPFS(
7463
- uploadedImage.file,
7464
- file.name,
7465
- network.type
7466
- );
7467
- await updateAvatar(account?.domain ?? "", "ipfs://" + ipfsHash);
7468
- } catch (error) {
7469
- console.error("Error uploading image:", error);
7470
- setIsProcessing(false);
7471
- } finally {
7472
- setIsUploading(false);
7473
- }
7474
- };
7475
- return /* @__PURE__ */ jsxs(Fragment, { children: [
7476
- /* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
7477
- /* @__PURE__ */ jsx(
7478
- ModalHeader,
7479
- {
7480
- fontSize: "md",
7481
- fontWeight: "500",
7482
- textAlign: "center",
7483
- color: isDark ? "#dfdfdd" : "#4d4d4d",
7484
- children: t("Customize Account")
7485
- }
7486
- ),
7487
- /* @__PURE__ */ jsx(
7488
- ModalBackButton,
7489
- {
7490
- onClick: () => setCurrentContent("settings")
7491
- }
7492
- ),
7493
- /* @__PURE__ */ jsx(ModalCloseButton, {})
7494
- ] }),
7495
- /* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsxs(VStack, { spacing: 3, align: "center", children: [
7496
- /* @__PURE__ */ jsxs(
7497
- VStack,
7498
- {
7499
- spacing: 3,
7500
- w: "full",
7501
- justifyContent: "flex-start",
7502
- alignItems: "flex-start",
7503
- children: [
7504
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7505
- "Customize your account with a unique .vet domain name and profile image to enhance your identity across VeChain applications."
7506
- ) }),
7507
- showFullText && /* @__PURE__ */ jsxs(Fragment, { children: [
7508
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7509
- "Your customizations are linked to your .vet domain name, making them portable across different applications."
7510
- ) }),
7511
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7512
- "To get started with customization, first secure your .vet domain name. Once you have a domain, you can add a profile image that will be visible wherever you use your account."
7513
- ) }),
7514
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7515
- "Changing your domain name will update also your profile image."
7516
- ) })
7782
+ t(
7783
+ "to learn more about embedded wallets."
7784
+ )
7785
+ ] })
7517
7786
  ] }),
7518
7787
  /* @__PURE__ */ jsx(
7519
7788
  Button,
@@ -7527,60 +7796,27 @@ var AccountCustomizationContent = ({ setCurrentContent }) => {
7527
7796
  children: t(showFullText ? "Show Less" : "Read More")
7528
7797
  }
7529
7798
  )
7530
- ]
7531
- }
7532
- ),
7533
- /* @__PURE__ */ jsx(
7534
- ActionButton,
7535
- {
7536
- style: {
7537
- mt: 3
7538
- },
7539
- title: account?.domain ? account?.domain : t("Choose account name"),
7540
- description: t(
7541
- "Choose a unique .vet domain name for your account."
7542
- ),
7543
- onClick: () => {
7544
- if (account?.domain) {
7545
- setCurrentContent({
7546
- type: "choose-name-search",
7547
- props: {
7548
- name: "",
7549
- setCurrentContent
7550
- }
7551
- });
7552
- } else {
7553
- setCurrentContent("choose-name");
7799
+ ] }),
7800
+ /* @__PURE__ */ jsx(
7801
+ ActionButton,
7802
+ {
7803
+ title: t("Backup your wallet"),
7804
+ description: t(
7805
+ connection.isConnectedWithSocialLogin ? "Store your Recovery Phrase or Private Key in a secure location, avoid losing access to your assets." : "Backup can be done only in the app securing your wallet."
7806
+ ),
7807
+ onClick: () => {
7808
+ exportWallet();
7809
+ },
7810
+ isDisabled: !connection.isConnectedWithSocialLogin,
7811
+ leftIcon: GiHouseKeys
7554
7812
  }
7555
- },
7556
- leftIcon: FaRegAddressCard,
7557
- rightIcon: MdOutlineNavigateNext
7558
- }
7559
- ),
7560
- /* @__PURE__ */ jsx(
7561
- ActionButton,
7562
- {
7563
- title: t("Update profile image"),
7564
- description: t(
7565
- !account?.domain ? "You can change your profile image only after you setup your domain name." : "Customize your account by adding a profile image, which will be displayed on the apps you use."
7566
- ),
7567
- onClick: () => fileInputRef.current?.click(),
7568
- leftImage: account?.image,
7569
- isLoading: isUploading || isProcessing,
7570
- isDisabled: !account?.domain,
7571
- loadingText: isUploading ? t("Uploading image") : t("Setting image")
7572
- }
7573
- ),
7574
- /* @__PURE__ */ jsx(
7575
- "input",
7576
- {
7577
- type: "file",
7578
- ref: fileInputRef,
7579
- hidden: true,
7580
- accept: "image/*",
7581
- onChange: async (event) => await handleImageUpload(event)
7582
- }
7583
- )
7813
+ )
7814
+ ]
7815
+ }
7816
+ ) }),
7817
+ /* @__PURE__ */ jsx(ModalFooter, { w: "full", children: /* @__PURE__ */ jsxs(VStack, { w: "full", children: [
7818
+ /* @__PURE__ */ jsx(Divider, {}),
7819
+ connection.isConnectedWithPrivy && /* @__PURE__ */ jsx(WalletSecuredBy, {})
7584
7820
  ] }) })
7585
7821
  ] });
7586
7822
  };
@@ -8055,6 +8291,14 @@ var SendTokenSummaryContent = ({
8055
8291
  const { darkMode: isDark } = useVeChainKitConfig();
8056
8292
  const { account, connection } = useWallet();
8057
8293
  const transactionModal = useDisclosure();
8294
+ const { data: avatar } = useGetAvatar(resolvedDomain);
8295
+ const { network } = useVeChainKitConfig();
8296
+ const toImageSrc = useMemo(() => {
8297
+ if (avatar) {
8298
+ return convertUriToUrl(avatar, network.type);
8299
+ }
8300
+ return getPicassoImage(resolvedAddress || toAddressOrDomain);
8301
+ }, [avatar, network.type, resolvedAddress, toAddressOrDomain]);
8058
8302
  const transferERC20 = useTransferERC20({
8059
8303
  fromAddress: account?.address ?? "",
8060
8304
  receiverAddress: resolvedAddress || toAddressOrDomain,
@@ -8106,20 +8350,7 @@ var SendTokenSummaryContent = ({
8106
8350
  /* @__PURE__ */ jsx(ModalCloseButton, {})
8107
8351
  ] }),
8108
8352
  /* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsxs(VStack, { spacing: 6, align: "stretch", w: "full", children: [
8109
- connection.isConnectedWithPrivy && /* @__PURE__ */ jsxs(
8110
- Alert,
8111
- {
8112
- status: "warning",
8113
- fontSize: "xs",
8114
- borderRadius: "xl",
8115
- children: [
8116
- /* @__PURE__ */ jsx(AlertIcon, {}),
8117
- t(
8118
- "Sending to OceanX or other exchanges may result in loss of funds. Send the tokens to your VeWorld wallet first."
8119
- )
8120
- ]
8121
- }
8122
- ),
8353
+ connection.isConnectedWithPrivy && /* @__PURE__ */ jsx(ExchangeWarningAlert, {}),
8123
8354
  /* @__PURE__ */ jsxs(VStack, { spacing: 4, w: "full", children: [
8124
8355
  /* @__PURE__ */ jsx(
8125
8356
  AddressDisplayCard,
@@ -8139,9 +8370,7 @@ var SendTokenSummaryContent = ({
8139
8370
  label: t("To"),
8140
8371
  address: resolvedAddress || toAddressOrDomain,
8141
8372
  domain: resolvedDomain,
8142
- imageSrc: getPicassoImage(
8143
- resolvedAddress || toAddressOrDomain
8144
- ),
8373
+ imageSrc: toImageSrc ?? "",
8145
8374
  imageAlt: "To account",
8146
8375
  symbol: selectedToken.symbol
8147
8376
  }
@@ -8385,6 +8614,123 @@ var ChooseNameContent = ({
8385
8614
  ] }) })
8386
8615
  ] });
8387
8616
  };
8617
+ var ExistingDomainsList = ({
8618
+ domains,
8619
+ onDomainSelect,
8620
+ isLoading
8621
+ }) => {
8622
+ const { t } = useTranslation();
8623
+ const { darkMode: isDark } = useVeChainKitConfig();
8624
+ const { account, connection } = useWallet();
8625
+ if (domains.length === 0 || isLoading) {
8626
+ return null;
8627
+ }
8628
+ return /* @__PURE__ */ jsx(Accordion, { allowToggle: true, children: /* @__PURE__ */ jsx(AccordionItem, { border: "none", children: ({ isExpanded }) => /* @__PURE__ */ jsxs(Fragment, { children: [
8629
+ /* @__PURE__ */ jsxs(
8630
+ AccordionButton,
8631
+ {
8632
+ bg: isDark ? "whiteAlpha.50" : "gray.50",
8633
+ borderRadius: "xl",
8634
+ _hover: {
8635
+ bg: isDark ? "whiteAlpha.100" : "gray.100"
8636
+ },
8637
+ opacity: isLoading ? 0.7 : 1,
8638
+ transition: "all 0.2s",
8639
+ disabled: isLoading,
8640
+ children: [
8641
+ /* @__PURE__ */ jsx(Box, { flex: "1", textAlign: "left", py: 2, children: /* @__PURE__ */ jsx(Text, { fontWeight: "500", children: isLoading ? t("Loading your domains...") : `${t("Your existing domains")} (${domains.length})` }) }),
8642
+ /* @__PURE__ */ jsx(
8643
+ Icon,
8644
+ {
8645
+ as: isExpanded ? IoChevronUp : IoChevronDown,
8646
+ fontSize: "20px",
8647
+ opacity: 0.5
8648
+ }
8649
+ )
8650
+ ]
8651
+ }
8652
+ ),
8653
+ /* @__PURE__ */ jsx(AccordionPanel, { pb: 4, pt: 2, children: /* @__PURE__ */ jsx(List, { spacing: 2, children: domains.map((domain) => {
8654
+ const isCurrentDomain = domain.name === account?.domain;
8655
+ const metadata = useWalletMetadata(
8656
+ domain.name,
8657
+ connection.network
8658
+ );
8659
+ return /* @__PURE__ */ jsx(
8660
+ ListItem,
8661
+ {
8662
+ p: 4,
8663
+ bg: isDark ? "#1f1f1e" : "white",
8664
+ borderRadius: "xl",
8665
+ cursor: isCurrentDomain ? "default" : "pointer",
8666
+ opacity: isCurrentDomain ? 0.7 : 1,
8667
+ border: `1px solid ${isDark ? "#2d2d2d" : "#eaeaea"}`,
8668
+ _hover: {
8669
+ bg: isCurrentDomain ? isDark ? "#1f1f1e" : "white" : isDark ? "#252525" : "gray.50",
8670
+ borderColor: isDark ? "#3d3d3d" : "#dedede"
8671
+ },
8672
+ onClick: () => !isCurrentDomain && onDomainSelect(domain.name),
8673
+ transition: "all 0.2s",
8674
+ children: /* @__PURE__ */ jsxs(HStack, { spacing: 3, align: "center", children: [
8675
+ /* @__PURE__ */ jsx(
8676
+ AccountAvatar,
8677
+ {
8678
+ props: {
8679
+ width: "40px",
8680
+ height: "40px",
8681
+ src: metadata.image,
8682
+ alt: domain.name
8683
+ }
8684
+ }
8685
+ ),
8686
+ /* @__PURE__ */ jsxs(
8687
+ VStack,
8688
+ {
8689
+ align: "start",
8690
+ spacing: 0,
8691
+ flex: 1,
8692
+ children: [
8693
+ /* @__PURE__ */ jsx(
8694
+ Text,
8695
+ {
8696
+ color: isDark ? "whiteAlpha.900" : "gray.700",
8697
+ fontSize: "md",
8698
+ fontWeight: "500",
8699
+ children: domain.name
8700
+ }
8701
+ ),
8702
+ isCurrentDomain && /* @__PURE__ */ jsx(
8703
+ Text,
8704
+ {
8705
+ fontSize: "sm",
8706
+ color: isDark ? "whiteAlpha.600" : "gray.500",
8707
+ children: t(
8708
+ "Current domain"
8709
+ )
8710
+ }
8711
+ )
8712
+ ]
8713
+ }
8714
+ ),
8715
+ isCurrentDomain && /* @__PURE__ */ jsx(
8716
+ Tag,
8717
+ {
8718
+ size: "sm",
8719
+ bg: isDark ? "whiteAlpha.200" : "gray.100",
8720
+ color: isDark ? "whiteAlpha.800" : "gray.600",
8721
+ px: 3,
8722
+ py: 1,
8723
+ borderRadius: "full",
8724
+ children: t("Current")
8725
+ }
8726
+ )
8727
+ ] })
8728
+ },
8729
+ domain.name
8730
+ );
8731
+ }) }) })
8732
+ ] }) }) });
8733
+ };
8388
8734
  var ChooseNameSearchContent = ({
8389
8735
  name: initialName,
8390
8736
  setCurrentContent
@@ -8495,104 +8841,69 @@ var ChooseNameSearchContent = ({
8495
8841
  ),
8496
8842
  /* @__PURE__ */ jsx(ModalCloseButton, {})
8497
8843
  ] }),
8498
- /* @__PURE__ */ jsxs(ModalBody, { children: [
8499
- isLoadingOwnedDomains ? /* @__PURE__ */ jsx(Text, { fontSize: "sm", color: "gray.500", children: t("Loading your domains...") }) : allUserDomains.length > 0 ? /* @__PURE__ */ jsxs(VStack, { spacing: 4, align: "stretch", mb: 6, children: [
8844
+ /* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsxs(VStack, { spacing: 4, align: "stretch", children: [
8845
+ /* @__PURE__ */ jsx(
8846
+ ExistingDomainsList,
8847
+ {
8848
+ domains: allUserDomains,
8849
+ onDomainSelect: handleDomainSelect,
8850
+ isLoading: isLoadingOwnedDomains
8851
+ }
8852
+ ),
8853
+ /* @__PURE__ */ jsxs(InputGroup, { size: "lg", children: [
8500
8854
  /* @__PURE__ */ jsx(
8501
- Text,
8855
+ Input,
8502
8856
  {
8503
- fontSize: "sm",
8504
- fontWeight: "500",
8505
- color: isDark ? "whiteAlpha.800" : "gray.600",
8506
- children: t("Your existing domains")
8857
+ placeholder: t("Enter your name"),
8858
+ value: name,
8859
+ onChange: (e) => {
8860
+ setName(e.target.value);
8861
+ if (!hasInteracted) setHasInteracted(true);
8862
+ },
8863
+ paddingRight: "120px",
8864
+ fontSize: "lg",
8865
+ height: "60px",
8866
+ bg: isDark ? "#1a1a1a" : "white",
8867
+ border: `1px solid ${isDark ? "#ffffff29" : "#ebebeb"}`,
8868
+ _hover: {
8869
+ border: `1px solid ${isDark ? "#ffffff40" : "#e0e0e0"}`
8870
+ },
8871
+ _focus: {
8872
+ border: `1px solid ${isDark ? "#ffffff60" : "#d0d0d0"}`,
8873
+ boxShadow: "none"
8874
+ },
8875
+ isInvalid: !!error
8507
8876
  }
8508
8877
  ),
8509
- /* @__PURE__ */ jsx(List, { spacing: 2, children: allUserDomains.map((domain) => {
8510
- const isCurrentDomain = domain.name === account?.domain;
8511
- return /* @__PURE__ */ jsx(
8512
- ListItem,
8513
- {
8514
- p: 3,
8515
- bg: isDark ? "#1a1a1a" : "gray.50",
8516
- borderRadius: "md",
8517
- cursor: isCurrentDomain ? "default" : "pointer",
8518
- opacity: isCurrentDomain ? 0.7 : 1,
8519
- _hover: {
8520
- bg: isCurrentDomain ? isDark ? "#1a1a1a" : "gray.50" : isDark ? "#252525" : "gray.100"
8521
- },
8522
- onClick: () => !isCurrentDomain && handleDomainSelect(domain.name),
8523
- children: /* @__PURE__ */ jsxs(HStack, { justify: "space-between", children: [
8524
- /* @__PURE__ */ jsx(Text, { children: domain.name }),
8525
- isCurrentDomain && /* @__PURE__ */ jsx(
8526
- Tag,
8527
- {
8528
- size: "sm",
8529
- colorScheme: "green",
8530
- variant: "subtle",
8531
- children: t("Current")
8532
- }
8533
- )
8534
- ] })
8535
- },
8536
- domain.name
8537
- );
8538
- }) })
8539
- ] }) : null,
8540
- /* @__PURE__ */ jsxs(VStack, { spacing: 4, align: "stretch", children: [
8541
- /* @__PURE__ */ jsxs(InputGroup, { size: "lg", children: [
8542
- /* @__PURE__ */ jsx(
8543
- Input,
8544
- {
8545
- placeholder: t("Enter your name"),
8546
- value: name,
8547
- onChange: (e) => {
8548
- setName(e.target.value);
8549
- if (!hasInteracted) setHasInteracted(true);
8550
- },
8551
- paddingRight: "120px",
8552
- fontSize: "lg",
8553
- height: "60px",
8554
- bg: isDark ? "#1a1a1a" : "white",
8555
- border: `1px solid ${isDark ? "#ffffff29" : "#ebebeb"}`,
8556
- _hover: {
8557
- border: `1px solid ${isDark ? "#ffffff40" : "#e0e0e0"}`
8558
- },
8559
- _focus: {
8560
- border: `1px solid ${isDark ? "#ffffff60" : "#d0d0d0"}`,
8561
- boxShadow: "none"
8562
- },
8563
- isInvalid: !!error
8564
- }
8565
- ),
8566
- /* @__PURE__ */ jsx(
8567
- InputRightElement,
8568
- {
8569
- width: "auto",
8570
- paddingRight: "12px",
8571
- h: "full",
8572
- children: /* @__PURE__ */ jsx(
8573
- Box,
8574
- {
8575
- mr: 4,
8576
- fontSize: "sm",
8577
- color: isDark ? "whiteAlpha.800" : "gray.500",
8578
- children: ".veworld.vet"
8579
- }
8580
- )
8581
- }
8582
- )
8583
- ] }),
8584
- error && hasInteracted && /* @__PURE__ */ jsx(Text, { color: "red.500", fontSize: "sm", children: error }),
8585
- !error && hasInteracted && name.length >= 3 && /* @__PURE__ */ jsx(
8586
- Text,
8878
+ /* @__PURE__ */ jsx(
8879
+ InputRightElement,
8587
8880
  {
8588
- fontSize: "sm",
8589
- color: isAvailable ? "green.500" : "red.500",
8590
- fontWeight: "500",
8591
- children: isOwnDomain ? t("YOU OWN THIS") : isAvailable ? t("AVAILABLE") : t("UNAVAILABLE")
8881
+ width: "auto",
8882
+ paddingRight: "12px",
8883
+ h: "full",
8884
+ children: /* @__PURE__ */ jsx(
8885
+ Box,
8886
+ {
8887
+ mr: 4,
8888
+ fontSize: "sm",
8889
+ color: isDark ? "whiteAlpha.800" : "gray.500",
8890
+ children: ".veworld.vet"
8891
+ }
8892
+ )
8592
8893
  }
8593
8894
  )
8594
- ] })
8595
- ] }),
8895
+ ] }),
8896
+ error && hasInteracted && /* @__PURE__ */ jsx(Text, { color: "red.500", fontSize: "sm", children: error }),
8897
+ !error && hasInteracted && name.length >= 3 && /* @__PURE__ */ jsx(
8898
+ Text,
8899
+ {
8900
+ fontSize: "sm",
8901
+ color: isAvailable ? "green.500" : "red.500",
8902
+ fontWeight: "500",
8903
+ children: isOwnDomain ? t("YOU OWN THIS") : isAvailable ? t("AVAILABLE") : t("UNAVAILABLE")
8904
+ }
8905
+ )
8906
+ ] }) }),
8596
8907
  /* @__PURE__ */ jsx(ModalFooter, { children: /* @__PURE__ */ jsx(
8597
8908
  Button,
8598
8909
  {
@@ -9434,6 +9745,7 @@ var en_default = {
9434
9745
  "Continue with Google": "Continue with Google",
9435
9746
  "Copy your address or scan this QR code": "Copy your address or scan this QR code",
9436
9747
  Current: "Current",
9748
+ "Current domain": "Current domain",
9437
9749
  "Currently, multiclause transactions are not supported for smart accounts. Your multiclause transaction will be split into multiple transactions.": "Currently, multiclause transactions are not supported for smart accounts. Your multiclause transaction will be split into multiple transactions.",
9438
9750
  "Customize Account": "Customize Account",
9439
9751
  "Customize account": "Customize account",
@@ -9532,6 +9844,7 @@ var en_default = {
9532
9844
  Passkey: "Passkey",
9533
9845
  "Phone Number": "Phone Number",
9534
9846
  "Please approve the request in the connection request window...": "Please approve the request in the connection request window...",
9847
+ "Please be sure to keep this wallet safe and backed up.": "Please be sure to keep this wallet safe and backed up.",
9535
9848
  "Please check {{email}} for an email from privy.io and enter your code below.": "Please check {{email}} for an email from privy.io and enter your code below.",
9536
9849
  "Please click 'Try again' to open the login window.": "Please click 'Try again' to open the login window.",
9537
9850
  "Please complete the passkey authentication...": "Please complete the passkey authentication...",
@@ -9596,6 +9909,7 @@ var en_default = {
9596
9909
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} app or extension to manage your wallet and security settings.": "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} app or extension to manage your wallet and security settings.",
9597
9910
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} website to manage your login methods and security settings.": "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} website to manage your login methods and security settings.",
9598
9911
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} website to manage your wallet and security settings.": "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} website to manage your wallet and security settings.",
9912
+ "This is your main wallet, created by {{element}} and secured by Privy.": "This is your main wallet, created by {{element}} and secured by Privy.",
9599
9913
  "This is your main wallet, created by {{element}} and secured by Privy. This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions. Please be sure to keep it safe and backed up.": "This is your main wallet, created by {{element}} and secured by Privy. This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions. Please be sure to keep it safe and backed up.",
9600
9914
  "This may take a few seconds. You can close this window and check the status later.": "This may take a few seconds. You can close this window and check the status later.",
9601
9915
  "This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions.": "This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions.",
@@ -9684,8 +9998,19 @@ var en_default = {
9684
9998
  "your@email.com": "your@email.com",
9685
9999
  "{{element}} website": "{{element}} website",
9686
10000
  "{{name}}": "{{name}}",
9687
- "This is your main wallet, created by {{element}} and secured by Privy.": "This is your main wallet, created by {{element}} and secured by Privy.",
9688
- "Please be sure to keep this wallet safe and backed up.": "Please be sure to keep this wallet safe and backed up."
10001
+ "Sending to OceanX or other exchanges may result in loss of funds.": "Sending to OceanX or other exchanges may result in loss of funds.",
10002
+ "Send the tokens to your VeWorld wallet first.": "Send the tokens to your VeWorld wallet first.",
10003
+ "Sign in with a wallet from other x2earn apps.": "Sign in with a wallet from other x2earn apps.",
10004
+ "Select an app": "Select an app",
10005
+ Other: "Other",
10006
+ Apps: "Apps",
10007
+ "View your notifications and updates.": "View your notifications and updates.",
10008
+ "Access and security": "Access and security",
10009
+ "Connection details": "Connection details",
10010
+ "Customize profile": "Customize profile",
10011
+ Help: "Help",
10012
+ "Add Passkey": "Add Passkey",
10013
+ "Embedded wallet": "Embedded wallet"
9689
10014
  };
9690
10015
 
9691
10016
  // src/languages/de.json
@@ -9774,6 +10099,7 @@ var de_default = {
9774
10099
  "Continue with Google": "Mit Google fortfahren",
9775
10100
  "Copy your address or scan this QR code": "Kopieren Sie Ihre Adresse oder scannen Sie diesen QR-Code",
9776
10101
  Current: "Aktuell",
10102
+ "Current domain": "Aktuelle Domain",
9777
10103
  "Currently, multiclause transactions are not supported for smart accounts. Your multiclause transaction will be split into multiple transactions.": "Derzeit werden Multiclauses-Transaktionen f\xFCr Smart-Konten nicht unterst\xFCtzt. Ihre Multiclause-Transaktion wird in mehrere Transaktionen aufgeteilt.",
9778
10104
  "Customize Account": "Konto anpassen",
9779
10105
  "Customize account": "Konto anpassen",
@@ -9872,6 +10198,7 @@ var de_default = {
9872
10198
  Passkey: "Passwort",
9873
10199
  "Phone Number": "Telefonnummer",
9874
10200
  "Please approve the request in the connection request window...": "Bitte genehmigen Sie die Anfrage im Verbindungsanfragefenster...",
10201
+ "Please be sure to keep this wallet safe and backed up.": "Bitte stellen Sie sicher, dass diese Brieftasche sicher und gesichert aufbewahrt wird.",
9875
10202
  "Please check {{email}} for an email from privy.io and enter your code below.": "Bitte \xFCberpr\xFCfen Sie {{email}} auf eine E-Mail von privy.io und geben Sie Ihren Code unten ein.",
9876
10203
  "Please click 'Try again' to open the login window.": "Bitte klicken Sie auf 'Erneut versuchen', um das Anmeldefenster zu \xF6ffnen.",
9877
10204
  "Please complete the passkey authentication...": "Bitte schlie\xDFen Sie die Passworthauthentifizierung ab...",
@@ -9936,6 +10263,7 @@ var de_default = {
9936
10263
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} app or extension to manage your wallet and security settings.": "Dies ist Ihr Hauptwallet und Ihre Identit\xE4t. Bitte stellen Sie sicher, dass es sicher und gesichert ist. Gehen Sie zur {{element}} App oder Erweiterung, um Ihr Wallet und Ihre Sicherheitseinstellungen zu verwalten.",
9937
10264
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} website to manage your login methods and security settings.": "Dies ist Ihr Hauptwallet und Ihre Identit\xE4t. Bitte achten Sie darauf, es sicher zu verwahren und ein Backup zu erstellen. Gehen Sie auf die {{element}} Website, um Ihre Anmeldemethoden und Sicherheitseinstellungen zu verwalten.",
9938
10265
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} website to manage your wallet and security settings.": "Dies ist Ihre Hauptgeldb\xF6rse und Identit\xE4t. Bitte achten Sie darauf, sie sicher und abgesichert zu halten. Besuchen Sie die Website von {{element}}, um Ihre Geldb\xF6rse und Sicherheitseinstellungen zu verwalten.",
10266
+ "This is your main wallet, created by {{element}} and secured by Privy.": "Dies ist Ihre Hauptbrieftasche, erstellt von {{element}} und gesichert durch Privy.",
9939
10267
  "This is your main wallet, created by {{element}} and secured by Privy. This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions. Please be sure to keep it safe and backed up.": "Dies ist Ihr Haupt-Wallet, erstellt von {{element}} und gesichert von Privy. Dieses Wallet ist der Besitzer Ihres Smart-Accounts, der als Ihre Identit\xE4t und als Tor f\xFCr Ihre Blockchain-Interaktionen verwendet wird. Bitte stellen Sie sicher, dass es sicher und gesichert ist.",
9940
10268
  "This may take a few seconds. You can close this window and check the status later.": "Dies kann einige Sekunden dauern. Sie k\xF6nnen dieses Fenster schlie\xDFen und den Status sp\xE4ter \xFCberpr\xFCfen.",
9941
10269
  "This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions.": "Dieses Wallet ist der Besitzer Ihres Smart-Accounts, der als Ihre Identit\xE4t und als Tor f\xFCr Ihre Blockchain-Interaktionen verwendet wird.",
@@ -10112,6 +10440,7 @@ var it_default = {
10112
10440
  "Continue with Google": "Continua con Google",
10113
10441
  "Copy your address or scan this QR code": "Copia il tuo indirizzo o scansiona questo codice QR",
10114
10442
  Current: "Attuale",
10443
+ "Current domain": "Dominio attuale",
10115
10444
  "Currently, multiclause transactions are not supported for smart accounts. Your multiclause transaction will be split into multiple transactions.": "Attualmente, le transazioni multiclausole non sono supportate per gli account smart. La tua transazione multiclausola sar\xE0 divisa in pi\xF9 transazioni.",
10116
10445
  "Customize Account": "Personalizza Account",
10117
10446
  "Customize account": "Personalizza account",
@@ -10210,6 +10539,7 @@ var it_default = {
10210
10539
  Passkey: "Chiave di accesso",
10211
10540
  "Phone Number": "Numero di telefono",
10212
10541
  "Please approve the request in the connection request window...": "Si prega di approvare la richiesta nella finestra della richiesta di connessione...",
10542
+ "Please be sure to keep this wallet safe and backed up.": "Si prega di assicurarsi che questo portafoglio sia al sicuro e con un backup.",
10213
10543
  "Please check {{email}} for an email from privy.io and enter your code below.": "Controlla {{email}} per un'email da privy.io e inserisci il tuo codice qui sotto.",
10214
10544
  "Please click 'Try again' to open the login window.": "Fai clic su 'Riprova' per aprire la finestra di accesso.",
10215
10545
  "Please complete the passkey authentication...": "Si prega di completare l'autenticazione con chiave di accesso...",
@@ -10274,6 +10604,7 @@ var it_default = {
10274
10604
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} app or extension to manage your wallet and security settings.": "Questo \xE8 il tuo portafoglio principale e la tua identit\xE0. Assicurati di tenerlo al sicuro e di eseguire il backup. Vai all'app o all'estensione {{element}} per gestire il tuo portafoglio e le impostazioni di sicurezza.",
10275
10605
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} website to manage your login methods and security settings.": "Questo \xE8 il tuo portafoglio principale e la tua identit\xE0. Assicurati di tenerlo al sicuro e di fare un backup. Vai al sito web {{element}} per gestire i metodi di accesso e le impostazioni di sicurezza.",
10276
10606
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} website to manage your wallet and security settings.": "Questo \xE8 il tuo portafoglio e identit\xE0 principale. Assicurati di tenerlo al sicuro e di averne una copia di backup. Vai al sito web di {{element}} per gestire le impostazioni del tuo portafoglio e della sicurezza.",
10607
+ "This is your main wallet, created by {{element}} and secured by Privy.": "Questo \xE8 il tuo portafoglio principale, creato da {{element}} e protetto da Privy.",
10277
10608
  "This is your main wallet, created by {{element}} and secured by Privy. This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions. Please be sure to keep it safe and backed up.": "Questo \xE8 il tuo portafoglio principale, creato da {{element}} e protetto da Privy. Questo portafoglio \xE8 il proprietario del tuo account smart, che \xE8 utilizzato come la tua identit\xE0 e come un gateway per le tue interazioni con la blockchain. Assicurati di tenerlo al sicuro e di eseguirne il backup.",
10278
10609
  "This may take a few seconds. You can close this window and check the status later.": "Potrebbe richiedere alcuni secondi. Puoi chiudere questa finestra e controllare lo stato pi\xF9 tardi.",
10279
10610
  "This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions.": "Questo portafoglio \xE8 il proprietario del tuo account smart, che \xE8 utilizzato come la tua identit\xE0 e come un gateway per le tue interazioni con la blockchain.",
@@ -10450,6 +10781,7 @@ var fr_default = {
10450
10781
  "Continue with Google": "Continuer avec Google",
10451
10782
  "Copy your address or scan this QR code": "Copiez votre adresse ou scannez ce code QR",
10452
10783
  Current: "Actuel",
10784
+ "Current domain": "Domaine actuel",
10453
10785
  "Currently, multiclause transactions are not supported for smart accounts. Your multiclause transaction will be split into multiple transactions.": "Actuellement, les transactions \xE0 clauses multiples ne sont pas prises en charge pour les comptes intelligents. Votre transaction \xE0 clauses multiples sera divis\xE9e en plusieurs transactions.",
10454
10786
  "Customize Account": "Personnaliser le compte",
10455
10787
  "Customize account": "Personnaliser le compte",
@@ -10548,6 +10880,7 @@ var fr_default = {
10548
10880
  Passkey: "Cl\xE9 de passe",
10549
10881
  "Phone Number": "Num\xE9ro de t\xE9l\xE9phone",
10550
10882
  "Please approve the request in the connection request window...": "Veuillez approuver la demande dans la fen\xEAtre de demande de connexion...",
10883
+ "Please be sure to keep this wallet safe and backed up.": "Veuillez vous assurer que ce portefeuille est en s\xE9curit\xE9 et sauvegard\xE9.",
10551
10884
  "Please check {{email}} for an email from privy.io and enter your code below.": "Veuillez v\xE9rifier {{email}} pour un email de privy.io et entrez votre code ci-dessous.",
10552
10885
  "Please click 'Try again' to open the login window.": "Veuillez cliquer sur 'R\xE9essayer' pour ouvrir la fen\xEAtre de connexion.",
10553
10886
  "Please complete the passkey authentication...": "Veuillez compl\xE9ter l'authentification par cl\xE9 de passe...",
@@ -10612,6 +10945,7 @@ var fr_default = {
10612
10945
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} app or extension to manage your wallet and security settings.": "Ceci est votre portefeuille principal et votre identit\xE9. Veuillez vous assurer de le garder en s\xE9curit\xE9 et sauvegard\xE9. Allez dans l'application ou l'extension {{element}} pour g\xE9rer votre portefeuille et vos param\xE8tres de s\xE9curit\xE9.",
10613
10946
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} website to manage your login methods and security settings.": "Ceci est votre portefeuille et identit\xE9 principaux. Veuillez vous assurer de les garder en s\xE9curit\xE9 et sauvegard\xE9s. Allez sur le site {{element}} pour g\xE9rer vos m\xE9thodes de connexion et vos param\xE8tres de s\xE9curit\xE9.",
10614
10947
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} website to manage your wallet and security settings.": "Ceci est votre portefeuille principal et votre identit\xE9. Veuillez vous assurer de le garder en s\xE9curit\xE9 et sauvegard\xE9. Allez sur le site {{element}} pour g\xE9rer votre portefeuille et vos param\xE8tres de s\xE9curit\xE9.",
10948
+ "This is your main wallet, created by {{element}} and secured by Privy.": "Ceci est votre portefeuille principal, cr\xE9\xE9 par {{element}} et s\xE9curis\xE9 par Privy.",
10615
10949
  "This is your main wallet, created by {{element}} and secured by Privy. This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions. Please be sure to keep it safe and backed up.": "Ceci est votre portefeuille principal, cr\xE9\xE9 par {{element}} et s\xE9curis\xE9 par Privy. Ce portefeuille est le propri\xE9taire de votre compte intelligent, qui est utilis\xE9 comme votre identit\xE9 et comme une passerelle pour vos interactions blockchain. Veuillez vous assurer de le garder en s\xE9curit\xE9 et sauvegard\xE9.",
10616
10950
  "This may take a few seconds. You can close this window and check the status later.": "Cela peut prendre quelques secondes. Vous pouvez fermer cette fen\xEAtre et v\xE9rifier le statut plus tard.",
10617
10951
  "This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions.": "Ce portefeuille est le propri\xE9taire de votre compte intelligent, qui est utilis\xE9 comme votre identit\xE9 et comme une passerelle pour vos interactions blockchain.",
@@ -10788,6 +11122,7 @@ var es_default = {
10788
11122
  "Continue with Google": "Continuar con Google",
10789
11123
  "Copy your address or scan this QR code": "Copia tu direcci\xF3n o escanea este c\xF3digo QR",
10790
11124
  Current: "Actual",
11125
+ "Current domain": "Dominio actual",
10791
11126
  "Currently, multiclause transactions are not supported for smart accounts. Your multiclause transaction will be split into multiple transactions.": "Actualmente, las transacciones con m\xFAltiples cl\xE1usulas no son compatibles con las cuentas inteligentes. Su transacci\xF3n con m\xFAltiples cl\xE1usulas se dividir\xE1 en varias transacciones.",
10792
11127
  "Customize Account": "Personalizar Cuenta",
10793
11128
  "Customize account": "Personalizar cuenta",
@@ -10886,6 +11221,7 @@ var es_default = {
10886
11221
  Passkey: "Clave de acceso",
10887
11222
  "Phone Number": "N\xFAmero de tel\xE9fono",
10888
11223
  "Please approve the request in the connection request window...": "Por favor, aprueba la solicitud en la ventana de solicitud de conexi\xF3n...",
11224
+ "Please be sure to keep this wallet safe and backed up.": "Por favor, aseg\xFArese de mantener esta billetera segura y respaldada.",
10889
11225
  "Please check {{email}} for an email from privy.io and enter your code below.": "Por favor, revisa {{email}} para un correo electr\xF3nico de privy.io e ingresa tu c\xF3digo a continuaci\xF3n.",
10890
11226
  "Please click 'Try again' to open the login window.": "Por favor, haz clic en 'Intentar de nuevo' para abrir la ventana de inicio de sesi\xF3n.",
10891
11227
  "Please complete the passkey authentication...": "Por favor, completa la autenticaci\xF3n de clave de acceso...",
@@ -10950,6 +11286,7 @@ var es_default = {
10950
11286
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} app or extension to manage your wallet and security settings.": "Este es tu monedero principal e identidad. Aseg\xFArate de mantenerlo seguro y respaldado. Ve a la aplicaci\xF3n o extensi\xF3n de {{element}} para gestionar tu monedero y la configuraci\xF3n de seguridad.",
10951
11287
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} website to manage your login methods and security settings.": "Esta es tu billetera e identidad principal. Aseg\xFArate de mantenerla segura y respaldada. Ve al sitio web de {{element}} para gestionar tus m\xE9todos de inicio de sesi\xF3n y configuraciones de seguridad.",
10952
11288
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} website to manage your wallet and security settings.": "Esta es su billetera principal e identidad. Aseg\xFArese de mantenerla segura y respaldada. Vaya al sitio web de {{element}} para administrar su billetera y la configuraci\xF3n de seguridad.",
11289
+ "This is your main wallet, created by {{element}} and secured by Privy.": "Esta es su billetera principal, creada por {{element}} y asegurada por Privy.",
10953
11290
  "This is your main wallet, created by {{element}} and secured by Privy. This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions. Please be sure to keep it safe and backed up.": "Esta es tu billetera principal, creada por {{element}} y asegurada por Privy. Esta billetera es la propietaria de tu cuenta inteligente, la cual se utiliza como tu identidad y como puerta de entrada para tus interacciones con la blockchain. Por favor, aseg\xFArate de mantenerla segura y respaldada.",
10954
11291
  "This may take a few seconds. You can close this window and check the status later.": "Esto puede tardar unos segundos. Puede cerrar esta ventana y comprobar el estado m\xE1s tarde.",
10955
11292
  "This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions.": "Esta billetera es la propietaria de tu cuenta inteligente, la cual se utiliza como tu identidad y como puerta de entrada para tus interacciones con la blockchain.",
@@ -11126,6 +11463,7 @@ var zh_default = {
11126
11463
  "Continue with Google": "\u901A\u8FC7Google\u7EE7\u7EED",
11127
11464
  "Copy your address or scan this QR code": "\u590D\u5236\u60A8\u7684\u5730\u5740\u6216\u626B\u63CF\u6B64\u4E8C\u7EF4\u7801",
11128
11465
  Current: "\u5F53\u524D",
11466
+ "Current domain": "\u5F53\u524D\u57DF\u540D",
11129
11467
  "Currently, multiclause transactions are not supported for smart accounts. Your multiclause transaction will be split into multiple transactions.": "\u5F53\u524D\uFF0C\u4E0D\u652F\u6301\u667A\u80FD\u8D26\u6237\u7684\u591A\u6761\u6B3E\u4EA4\u6613\u3002\u60A8\u7684\u591A\u6761\u6B3E\u4EA4\u6613\u5C06\u88AB\u62C6\u5206\u4E3A\u591A\u7B14\u4EA4\u6613\u3002",
11130
11468
  "Customize Account": "\u81EA\u5B9A\u4E49\u5E10\u6237",
11131
11469
  "Customize account": "\u81EA\u5B9A\u4E49\u5E10\u6237",
@@ -11224,6 +11562,7 @@ var zh_default = {
11224
11562
  Passkey: "\u901A\u884C\u5BC6\u94A5",
11225
11563
  "Phone Number": "\u7535\u8BDD\u53F7\u7801",
11226
11564
  "Please approve the request in the connection request window...": "\u8BF7\u5728\u8FDE\u63A5\u8BF7\u6C42\u7A97\u53E3\u4E2D\u6279\u51C6\u8BF7\u6C42...",
11565
+ "Please be sure to keep this wallet safe and backed up.": "\u8BF7\u52A1\u5FC5\u4FDD\u8BC1\u6B64\u94B1\u5305\u7684\u5B89\u5168\u5E76\u8FDB\u884C\u5907\u4EFD\u3002",
11227
11566
  "Please check {{email}} for an email from privy.io and enter your code below.": "\u8BF7\u67E5\u770B {{email}} \u662F\u5426\u6709\u6765\u81EA privy.io \u7684\u7535\u5B50\u90AE\u4EF6\uFF0C\u5E76\u5728\u4E0B\u65B9\u8F93\u5165\u60A8\u7684\u4EE3\u7801\u3002",
11228
11567
  "Please click 'Try again' to open the login window.": "\u8BF7\u70B9\u51FB\u201C\u91CD\u8BD5\u201D\u4EE5\u6253\u5F00\u767B\u5F55\u7A97\u53E3\u3002",
11229
11568
  "Please complete the passkey authentication...": "\u8BF7\u5B8C\u6210\u901A\u884C\u5BC6\u94A5\u8BA4\u8BC1...",
@@ -11288,6 +11627,7 @@ var zh_default = {
11288
11627
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} app or extension to manage your wallet and security settings.": "\u8FD9\u662F\u60A8\u7684\u4E3B\u8981\u94B1\u5305\u548C\u8EAB\u4EFD\u3002\u8BF7\u52A1\u5FC5\u59A5\u5584\u4FDD\u7BA1\u5E76\u5907\u4EFD\u3002\u8BF7\u524D\u5F80{{element}}\u5E94\u7528\u7A0B\u5E8F\u6216\u6269\u5C55\u7BA1\u7406\u60A8\u7684\u94B1\u5305\u548C\u5B89\u5168\u8BBE\u7F6E\u3002",
11289
11628
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} website to manage your login methods and security settings.": "\u8FD9\u662F\u60A8\u7684\u4E3B\u94B1\u5305\u548C\u8EAB\u4EFD\u3002\u8BF7\u52A1\u5FC5\u786E\u4FDD\u5176\u5B89\u5168\u5E76\u5907\u4EFD\u3002\u524D\u5F80 {{element}} \u7F51\u7AD9\u7BA1\u7406\u60A8\u7684\u767B\u5F55\u65B9\u5F0F\u548C\u5B89\u5168\u8BBE\u7F6E\u3002",
11290
11629
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} website to manage your wallet and security settings.": "\u8FD9\u662F\u60A8\u7684\u4E3B\u8981\u94B1\u5305\u548C\u8EAB\u4EFD\u3002\u8BF7\u786E\u4FDD\u5176\u5B89\u5168\u5E76\u8FDB\u884C\u5907\u4EFD\u3002\u8BBF\u95EE{{element}}\u7F51\u7AD9\u4EE5\u7BA1\u7406\u60A8\u7684\u94B1\u5305\u548C\u5B89\u5168\u8BBE\u7F6E\u3002",
11630
+ "This is your main wallet, created by {{element}} and secured by Privy.": "\u8FD9\u662F\u60A8\u7684\u4E3B\u94B1\u5305\uFF0C\u7531{{element}}\u521B\u5EFA\uFF0C\u5E76\u7531Privy\u4FDD\u62A4\u3002",
11291
11631
  "This is your main wallet, created by {{element}} and secured by Privy. This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions. Please be sure to keep it safe and backed up.": "\u8FD9\u662F\u60A8\u7684\u4E3B\u94B1\u5305\uFF0C\u7531{{element}}\u521B\u5EFA\u5E76\u901A\u8FC7Privy\u4FDD\u62A4\u3002\u6B64\u94B1\u5305\u662F\u60A8\u7684\u667A\u80FD\u8D26\u6237\u6240\u6709\u8005\uFF0C\u7528\u4F5C\u60A8\u7684\u8EAB\u4EFD\u6807\u8BC6\u4EE5\u53CA\u533A\u5757\u94FE\u4EA4\u4E92\u7684\u7F51\u5173\u3002\u8BF7\u52A1\u5FC5\u786E\u4FDD\u94B1\u5305\u7684\u5B89\u5168\u6027\u5E76\u8FDB\u884C\u5907\u4EFD\u3002",
11292
11632
  "This may take a few seconds. You can close this window and check the status later.": "\u8FD9\u53EF\u80FD\u9700\u8981\u51E0\u79D2\u949F\u3002\u60A8\u53EF\u4EE5\u5173\u95ED\u6B64\u7A97\u53E3\uFF0C\u7A0D\u540E\u67E5\u770B\u72B6\u6001\u3002",
11293
11633
  "This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions.": "\u6B64\u94B1\u5305\u662F\u60A8\u7684\u667A\u80FD\u8D26\u6237\u6240\u6709\u8005\uFF0C\u7528\u4F5C\u60A8\u7684\u8EAB\u4EFD\u6807\u8BC6\u4EE5\u53CA\u533A\u5757\u94FE\u4EA4\u4E92\u7684\u7F51\u5173\u3002",
@@ -11464,6 +11804,7 @@ var ja_default = {
11464
11804
  "Continue with Google": "Google\u3067\u7D9A\u884C",
11465
11805
  "Copy your address or scan this QR code": "\u30A2\u30C9\u30EC\u30B9\u3092\u30B3\u30D4\u30FC\u3059\u308B\u304B\u3001\u3053\u306EQR\u30B3\u30FC\u30C9\u3092\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u304F\u3060\u3055\u3044",
11466
11806
  Current: "\u73FE\u5728",
11807
+ "Current domain": "\u73FE\u5728\u306E\u30C9\u30E1\u30A4\u30F3",
11467
11808
  "Currently, multiclause transactions are not supported for smart accounts. Your multiclause transaction will be split into multiple transactions.": "\u73FE\u5728\u3001\u30B9\u30DE\u30FC\u30C8\u30A2\u30AB\u30A6\u30F3\u30C8\u3067\u306F\u8907\u6570\u6761\u9805\u306E\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u3042\u306A\u305F\u306E\u8907\u6570\u6761\u9805\u306E\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u306F\u8907\u6570\u306E\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u306B\u5206\u5272\u3055\u308C\u307E\u3059\u3002",
11468
11809
  "Customize Account": "\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA",
11469
11810
  "Customize account": "\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA",
@@ -11562,6 +11903,7 @@ var ja_default = {
11562
11903
  Passkey: "\u30D1\u30B9\u30AD\u30FC",
11563
11904
  "Phone Number": "\u96FB\u8A71\u756A\u53F7",
11564
11905
  "Please approve the request in the connection request window...": "\u63A5\u7D9A\u30EA\u30AF\u30A8\u30B9\u30C8\u30A6\u30A3\u30F3\u30C9\u30A6\u3067\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u627F\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044...",
11906
+ "Please be sure to keep this wallet safe and backed up.": "\u3053\u306E\u30A6\u30A9\u30EC\u30C3\u30C8\u3092\u5B89\u5168\u306B\u4FDD\u7BA1\u3057\u3001\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3092\u53D6\u308B\u3088\u3046\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
11565
11907
  "Please check {{email}} for an email from privy.io and enter your code below.": "{{email}} \u306B privy.io \u304B\u3089\u306E\u30E1\u30FC\u30EB\u304C\u5C4A\u3044\u3066\u3044\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3001\u4EE5\u4E0B\u306B\u30B3\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
11566
11908
  "Please click 'Try again' to open the login window.": "\u300C\u518D\u8A66\u884C\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30ED\u30B0\u30A4\u30F3\u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u958B\u3044\u3066\u304F\u3060\u3055\u3044\u3002",
11567
11909
  "Please complete the passkey authentication...": "\u30D1\u30B9\u30AD\u30FC\u8A8D\u8A3C\u3092\u5B8C\u4E86\u3057\u3066\u304F\u3060\u3055\u3044...",
@@ -11626,6 +11968,7 @@ var ja_default = {
11626
11968
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} app or extension to manage your wallet and security settings.": "\u3053\u308C\u306F\u3042\u306A\u305F\u306E\u30E1\u30A4\u30F3\u30A6\u30A9\u30EC\u30C3\u30C8\u3068\u30A2\u30A4\u30C7\u30F3\u30C6\u30A3\u30C6\u30A3\u3067\u3059\u3002\u5B89\u5168\u306B\u4FDD\u7BA1\u3057\u3001\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3092\u53D6\u3063\u3066\u304F\u3060\u3055\u3044\u3002\u30A6\u30A9\u30EC\u30C3\u30C8\u3068\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u8A2D\u5B9A\u3092\u7BA1\u7406\u3059\u308B\u306B\u306F\u3001{{element}} \u30A2\u30D7\u30EA\u307E\u305F\u306F\u62E1\u5F35\u6A5F\u80FD\u306B\u79FB\u52D5\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
11627
11969
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} website to manage your login methods and security settings.": "\u3053\u308C\u304C\u3042\u306A\u305F\u306E\u4E3B\u8981\u306A\u30A6\u30A9\u30EC\u30C3\u30C8\u3068ID\u3067\u3059\u3002\u5FC5\u305A\u5B89\u5168\u306B\u4FDD\u7BA1\u3057\u3001\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30ED\u30B0\u30A4\u30F3\u65B9\u6CD5\u3068\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u8A2D\u5B9A\u3092\u7BA1\u7406\u3059\u308B\u305F\u3081\u306B{{element}}\u306E\u30A6\u30A7\u30D6\u30B5\u30A4\u30C8\u306B\u79FB\u52D5\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
11628
11970
  "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} website to manage your wallet and security settings.": "\u3053\u308C\u304C\u3042\u306A\u305F\u306E\u30E1\u30A4\u30F3\u30A6\u30A9\u30EC\u30C3\u30C8\u3068\u30A2\u30A4\u30C7\u30F3\u30C6\u30A3\u30C6\u30A3\u3067\u3059\u3002\u5B89\u5168\u306B\u4FDD\u7BA1\u3057\u3001\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3092\u53D6\u3063\u3066\u304F\u3060\u3055\u3044\u3002\u30A6\u30A9\u30EC\u30C3\u30C8\u3068\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u8A2D\u5B9A\u3092\u7BA1\u7406\u3059\u308B\u306B\u306F{{element}}\u30A6\u30A7\u30D6\u30B5\u30A4\u30C8\u306B\u30A2\u30AF\u30BB\u30B9\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
11971
+ "This is your main wallet, created by {{element}} and secured by Privy.": "\u3053\u308C\u306F\u3001{{element}}\u306B\u3088\u3063\u3066\u4F5C\u6210\u3055\u308C\u3001Privy\u306B\u3088\u3063\u3066\u4FDD\u8B77\u3055\u308C\u305F\u3042\u306A\u305F\u306E\u30E1\u30A4\u30F3\u30A6\u30A9\u30EC\u30C3\u30C8\u3067\u3059\u3002",
11629
11972
  "This is your main wallet, created by {{element}} and secured by Privy. This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions. Please be sure to keep it safe and backed up.": "{{element}}\u306B\u3088\u3063\u3066\u4F5C\u6210\u3055\u308C\u3001Privy\u306B\u3088\u3063\u3066\u4FDD\u8B77\u3055\u308C\u305F\u30E1\u30A4\u30F3\u30A6\u30A9\u30EC\u30C3\u30C8\u3067\u3059\u3002\u3053\u306E\u30A6\u30A9\u30EC\u30C3\u30C8\u306F\u3001\u30A2\u30A4\u30C7\u30F3\u30C6\u30A3\u30C6\u30A3\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u308B\u30B9\u30DE\u30FC\u30C8\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u6240\u6709\u8005\u3067\u3042\u308A\u3001\u30D6\u30ED\u30C3\u30AF\u30C1\u30A7\u30FC\u30F3\u3068\u306E\u3084\u308A\u53D6\u308A\u306E\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u3068\u3057\u3066\u6A5F\u80FD\u3057\u307E\u3059\u3002\u5B89\u5168\u306B\u4FDD\u7BA1\u3057\u3001\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3092\u78BA\u5B9F\u306B\u53D6\u3063\u3066\u304F\u3060\u3055\u3044\u3002",
11630
11973
  "This may take a few seconds. You can close this window and check the status later.": "\u6570\u79D2\u304B\u304B\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\u3053\u306E\u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u9589\u3058\u3066\u5F8C\u3067\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u78BA\u8A8D\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002",
11631
11974
  "This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions.": "\u3053\u306E\u30A6\u30A9\u30EC\u30C3\u30C8\u306F\u3001\u30A2\u30A4\u30C7\u30F3\u30C6\u30A3\u30C6\u30A3\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u308B\u30B9\u30DE\u30FC\u30C8\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u6240\u6709\u8005\u3067\u3042\u308A\u3001\u30D6\u30ED\u30C3\u30AF\u30C1\u30A7\u30FC\u30F3\u3068\u306E\u3084\u308A\u53D6\u308A\u306E\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u3068\u3057\u3066\u6A5F\u80FD\u3057\u307E\u3059\u3002",
@@ -11780,7 +12123,7 @@ var FAQContent = ({ onGoBack }) => {
11780
12123
  fontWeight: "500",
11781
12124
  textAlign: "center",
11782
12125
  color: isDark ? "#dfdfdd" : "#4d4d4d",
11783
- children: t("Info")
12126
+ children: t("Help")
11784
12127
  }
11785
12128
  ),
11786
12129
  /* @__PURE__ */ jsx(ModalBackButton, { onClick: onGoBack }),
@@ -11866,7 +12209,6 @@ var ConnectionDetailsContent = ({ onGoBack }) => {
11866
12209
  const { getConnectionCache } = useCrossAppConnectionCache();
11867
12210
  const { privy, darkMode: isDark } = useVeChainKitConfig();
11868
12211
  const { connection } = useWallet();
11869
- const { source } = useWallet$1();
11870
12212
  const { data: appInfo } = useFetchAppInfo(privy?.appId ?? "");
11871
12213
  const connectionCache = getConnectionCache();
11872
12214
  return /* @__PURE__ */ jsxs(ScrollToTopWrapper, { children: [
@@ -11894,23 +12236,7 @@ var ConnectionDetailsContent = ({ onGoBack }) => {
11894
12236
  /* @__PURE__ */ jsxs(ModalBody, { w: "full", children: [
11895
12237
  connection.isConnectedWithCrossApp && connectionCache && /* @__PURE__ */ jsx(CrossAppConnectionCard, { connectionCache }),
11896
12238
  connection.isConnectedWithSocialLogin && /* @__PURE__ */ jsx(PrivyConnectionCard, {}),
11897
- connection.isConnectedWithDappKit && /* @__PURE__ */ jsxs(VStack, { align: "stretch", textAlign: "center", mt: 5, children: [
11898
- /* @__PURE__ */ jsx(DappKitConnectionCard, {}),
11899
- /* @__PURE__ */ jsx(
11900
- Text,
11901
- {
11902
- fontSize: "sm",
11903
- opacity: 0.5,
11904
- textAlign: "center",
11905
- children: t(
11906
- "This is your main wallet and identity. Please be sure to keep it safe and backed up. Go to {{element}} app or extension to manage your security settings.",
11907
- {
11908
- element: source
11909
- }
11910
- )
11911
- }
11912
- )
11913
- ] }),
12239
+ connection.isConnectedWithDappKit && /* @__PURE__ */ jsx(VStack, { align: "stretch", textAlign: "center", mt: 5, children: /* @__PURE__ */ jsx(DappKitConnectionCard, {}) }),
11914
12240
  (connection.isConnectedWithSocialLogin || connection.isConnectedWithCrossApp) && /* @__PURE__ */ jsxs(VStack, { spacing: 4, mt: 5, children: [
11915
12241
  /* @__PURE__ */ jsx(Divider, {}),
11916
12242
  /* @__PURE__ */ jsxs(
@@ -12182,22 +12508,7 @@ var PrivyLinkedAccounts = ({ onBack }) => {
12182
12508
  ),
12183
12509
  /* @__PURE__ */ jsx(ModalCloseButton, {})
12184
12510
  ] }),
12185
- /* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsxs(VStack, { spacing: 3, align: "stretch", children: [
12186
- /* @__PURE__ */ jsx(
12187
- ActionButton,
12188
- {
12189
- title: t("Handle Passkey Login"),
12190
- description: t(
12191
- "Enable one click login by adding a passkey to your account."
12192
- ),
12193
- onClick: () => {
12194
- linkPasskey();
12195
- },
12196
- leftIcon: IoIosFingerPrint,
12197
- rightIcon: void 0,
12198
- isDisabled: !privy?.allowPasskeyLinking
12199
- }
12200
- ),
12511
+ /* @__PURE__ */ jsx(ModalBody, { w: "full", children: /* @__PURE__ */ jsxs(VStack, { spacing: 3, align: "stretch", w: "full", children: [
12201
12512
  canLinkGoogle && /* @__PURE__ */ jsx(
12202
12513
  ActionButton,
12203
12514
  {
@@ -12605,9 +12916,14 @@ var NotificationsContent = ({ setCurrentContent }) => {
12605
12916
  if (b.id === "multiclause") return 1;
12606
12917
  return b.timestamp - a.timestamp;
12607
12918
  });
12608
- return /* @__PURE__ */ jsxs(Box, { children: [
12919
+ return /* @__PURE__ */ jsxs(ScrollToTopWrapper, { children: [
12609
12920
  /* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
12610
- /* @__PURE__ */ jsx(ModalBackButton, { onClick: () => setCurrentContent("main") }),
12921
+ /* @__PURE__ */ jsx(
12922
+ ModalBackButton,
12923
+ {
12924
+ onClick: () => setCurrentContent("settings")
12925
+ }
12926
+ ),
12611
12927
  /* @__PURE__ */ jsx(
12612
12928
  ModalHeader,
12613
12929
  {
@@ -12620,7 +12936,7 @@ var NotificationsContent = ({ setCurrentContent }) => {
12620
12936
  ),
12621
12937
  /* @__PURE__ */ jsx(ModalCloseButton, {})
12622
12938
  ] }),
12623
- /* @__PURE__ */ jsxs(Container, { maxW: "container.lg", h: "350px", children: [
12939
+ /* @__PURE__ */ jsxs(Container, { maxW: "container.lg", h: ["auto", "540px"], children: [
12624
12940
  /* @__PURE__ */ jsx(ModalBody, { w: "full", children: /* @__PURE__ */ jsxs(VStack, { spacing: 4, align: "stretch", w: "full", children: [
12625
12941
  /* @__PURE__ */ jsxs(HStack, { justify: "space-between", children: [
12626
12942
  /* @__PURE__ */ jsx(
@@ -12847,7 +13163,7 @@ var ExploreEcosystemContent = ({ setCurrentContent }) => {
12847
13163
  fontWeight: "500",
12848
13164
  textAlign: "center",
12849
13165
  color: isDark ? "#dfdfdd" : "#4d4d4d",
12850
- children: t("VeChain Ecosystem")
13166
+ children: t("Apps")
12851
13167
  }
12852
13168
  ),
12853
13169
  /* @__PURE__ */ jsx(ModalBackButton, { onClick: () => setCurrentContent("main") }),
@@ -13094,7 +13410,7 @@ var AccountModal = ({
13094
13410
  );
13095
13411
  case "settings":
13096
13412
  return /* @__PURE__ */ jsx(
13097
- WalletSettingsContent,
13413
+ SettingsContent,
13098
13414
  {
13099
13415
  setCurrentContent,
13100
13416
  onLogoutSuccess: onClose
@@ -13107,9 +13423,9 @@ var AccountModal = ({
13107
13423
  setCurrentContent
13108
13424
  }
13109
13425
  );
13110
- case "embedded-wallet":
13426
+ case "access-and-security":
13111
13427
  return /* @__PURE__ */ jsx(
13112
- EmbeddedWalletContent,
13428
+ AccessAndSecurityContent,
13113
13429
  {
13114
13430
  setCurrentContent
13115
13431
  }
@@ -13143,7 +13459,7 @@ var AccountModal = ({
13143
13459
  return /* @__PURE__ */ jsx(
13144
13460
  PrivyLinkedAccounts,
13145
13461
  {
13146
- onBack: () => setCurrentContent("embedded-wallet")
13462
+ onBack: () => setCurrentContent("access-and-security")
13147
13463
  }
13148
13464
  );
13149
13465
  case "ecosystem":
@@ -13160,6 +13476,13 @@ var AccountModal = ({
13160
13476
  setCurrentContent
13161
13477
  }
13162
13478
  );
13479
+ case "embedded-wallet":
13480
+ return /* @__PURE__ */ jsx(
13481
+ EmbeddedWalletContent,
13482
+ {
13483
+ setCurrentContent
13484
+ }
13485
+ );
13163
13486
  }
13164
13487
  };
13165
13488
  return /* @__PURE__ */ jsx(
@@ -13174,7 +13497,6 @@ var AccountModal = ({
13174
13497
  );
13175
13498
  };
13176
13499
  var ConnectModal = ({ isOpen, onClose }) => {
13177
- const { loginModalUI } = useVeChainKitConfig();
13178
13500
  const [currentContent, setCurrentContent] = useState("main");
13179
13501
  useEffect(() => {
13180
13502
  if (isOpen) {
@@ -13188,8 +13510,7 @@ var ConnectModal = ({ isOpen, onClose }) => {
13188
13510
  MainContent,
13189
13511
  {
13190
13512
  setCurrentContent,
13191
- onClose,
13192
- variant: loginModalUI?.variant
13513
+ onClose
13193
13514
  }
13194
13515
  );
13195
13516
  case "faq":
@@ -13347,13 +13668,10 @@ var ConnectedWallet = ({
13347
13668
  const [isDesktop] = useMediaQuery("(min-width: 768px)");
13348
13669
  return /* @__PURE__ */ jsx(Button, { ...buttonStyle, onClick: onOpen, p: "0px 13px", minH: "45px", children: /* @__PURE__ */ jsxs(HStack, { children: [
13349
13670
  /* @__PURE__ */ jsx(
13350
- Image,
13671
+ AccountAvatar,
13351
13672
  {
13352
- src: account?.image ?? notFoundImage,
13353
- alt: "wallet",
13354
- width: 30,
13355
- height: 30,
13356
- borderRadius: "50%"
13673
+ wallet: account,
13674
+ props: { width: 30, height: 30 }
13357
13675
  }
13358
13676
  ),
13359
13677
  !isDesktop && /* @__PURE__ */ jsx(WalletDisplay, { variant: mobileVariant }),
@@ -13599,9 +13917,9 @@ var LoadingContent = ({
13599
13917
  }) => {
13600
13918
  const { t } = useTranslation();
13601
13919
  const { darkMode: isDark } = useVeChainKitConfig();
13602
- const [showTimeout, setShowTimeout] = React9.useState(false);
13603
- const [showSafariMessage, setShowSafariMessage] = React9.useState(false);
13604
- React9.useEffect(() => {
13920
+ const [showTimeout, setShowTimeout] = React8.useState(false);
13921
+ const [showSafariMessage, setShowSafariMessage] = React8.useState(false);
13922
+ React8.useEffect(() => {
13605
13923
  if (isSafari) {
13606
13924
  setShowSafariMessage(true);
13607
13925
  }
@@ -13787,8 +14105,8 @@ var EcosystemContent = ({ onClose, appsInfo, isLoading }) => {
13787
14105
  display: "flex",
13788
14106
  gap: 2,
13789
14107
  children: [
13790
- /* @__PURE__ */ jsx(Icon, { as: IoPlanet, size: "20px" }),
13791
- t("Ecosystem Login")
14108
+ /* @__PURE__ */ jsx(Icon, { as: IoMdApps, size: "20px" }),
14109
+ t("Select an app")
13792
14110
  ]
13793
14111
  }
13794
14112
  ),
@@ -13803,9 +14121,7 @@ var EcosystemContent = ({ onClose, appsInfo, isLoading }) => {
13803
14121
  opacity: 0.5,
13804
14122
  mb: 4,
13805
14123
  textAlign: "center",
13806
- children: t(
13807
- "Use your existing VeChain wallet from other ecosystem apps to sign in seamlessly."
13808
- )
14124
+ children: t("Sign in with a wallet from other x2earn apps.")
13809
14125
  }
13810
14126
  ),
13811
14127
  isLoading && /* @__PURE__ */ jsx(
@@ -13922,8 +14238,6 @@ var initializeI18n = (i18nInstance) => {
13922
14238
  });
13923
14239
  };
13924
14240
  var DEFAULT_PRIVY_ECOSYSTEM_APP_IDS = [
13925
- "cm4wxxujb022fyujl7g0thb21",
13926
- //vechain
13927
14241
  "clz41gcg00e4ay75dmq3uzzgr",
13928
14242
  //cleanify
13929
14243
  "cm153hrup0817axti38avlfyg"
@@ -13943,14 +14257,13 @@ var VeChainKitProvider = ({
13943
14257
  feeDelegation,
13944
14258
  dappKit,
13945
14259
  loginModalUI = {
13946
- variant: "vechain-and-wallet",
13947
14260
  description: "Choose between social login through VeChain or by connecting your wallet."
13948
14261
  },
14262
+ loginMethods,
13949
14263
  darkMode = false,
13950
14264
  i18n: i18nConfig,
13951
14265
  language = "en",
13952
- network,
13953
- privyEcosystemAppIDS = DEFAULT_PRIVY_ECOSYSTEM_APP_IDS
14266
+ network
13954
14267
  }) => {
13955
14268
  const [isConnectModalOpen, setIsConnectModalOpen] = useState(false);
13956
14269
  const openConnectModal = useCallback(() => setIsConnectModalOpen(true), []);
@@ -13983,10 +14296,12 @@ var VeChainKitProvider = ({
13983
14296
  []
13984
14297
  );
13985
14298
  const [accountModalContent, setAccountModalContent] = useState("main");
13986
- const loginMethods = [
13987
- ...privy?.loginMethods ?? [],
13988
- ...(privyEcosystemAppIDS ?? []).map((appID) => `privy:${appID}`)
13989
- ];
14299
+ const allowedEcosystemApps = useMemo(() => {
14300
+ const userEcosystemMethods = loginMethods?.find(
14301
+ (method35) => method35.method === "ecosystem"
14302
+ );
14303
+ return userEcosystemMethods?.allowedApps ?? DEFAULT_PRIVY_ECOSYSTEM_APP_IDS;
14304
+ }, [loginMethods]);
13990
14305
  let privyAppId, privyClientId;
13991
14306
  if (!privy) {
13992
14307
  privyAppId = "clzdb5k0b02b9qvzjm6jpknsc";
@@ -14014,20 +14329,20 @@ var VeChainKitProvider = ({
14014
14329
  }, [language, i18nConfig]);
14015
14330
  return /* @__PURE__ */ jsxs(EnsureQueryClient, { children: [
14016
14331
  /* @__PURE__ */ jsx(ReactQueryDevtools, { initialIsOpen: false }),
14017
- /* @__PURE__ */ jsx(PrivyCrossAppProvider, { privyEcosystemAppIDS, children: /* @__PURE__ */ jsx(
14332
+ /* @__PURE__ */ jsx(PrivyCrossAppProvider, { privyEcosystemAppIDS: allowedEcosystemApps, children: /* @__PURE__ */ jsx(
14018
14333
  VeChainKitContext.Provider,
14019
14334
  {
14020
14335
  value: {
14021
14336
  privy,
14022
- privyEcosystemAppIDS,
14337
+ privyEcosystemAppIDS: allowedEcosystemApps,
14023
14338
  feeDelegation,
14024
14339
  dappKit,
14025
14340
  loginModalUI,
14341
+ loginMethods,
14026
14342
  darkMode,
14027
14343
  i18n: i18nConfig,
14028
14344
  language,
14029
14345
  network,
14030
- privySocialLoginEnabled: privy !== void 0,
14031
14346
  openConnectModal,
14032
14347
  closeConnectModal,
14033
14348
  isConnectModalOpen,
@@ -14050,7 +14365,7 @@ var VeChainKitProvider = ({
14050
14365
  config: {
14051
14366
  loginMethodsAndOrder: {
14052
14367
  // @ts-ignore
14053
- primary: loginMethods
14368
+ primary: privy?.loginMethods
14054
14369
  },
14055
14370
  appearance: {
14056
14371
  theme: darkMode ? "dark" : "light",
@@ -14140,7 +14455,7 @@ var variants = {
14140
14455
  scrollbarWidth: "none",
14141
14456
  overflow: "scroll",
14142
14457
  overflowX: "hidden",
14143
- maxHeight: "520px",
14458
+ maxHeight: "540px",
14144
14459
  borderRadius: "24px",
14145
14460
  backgroundColor: props.colorMode === "dark" ? "#1f1f1e" : "white"
14146
14461
  },
@@ -14355,6 +14670,6 @@ var VechainKitThemeProvider = ({
14355
14670
  ] });
14356
14671
  };
14357
14672
 
14358
- export { APP_SECURITY_LEVELS, AccountCustomizationContent, AccountCustomizationModalProvider, AccountDetailsButton, AccountMainContent, AccountModal, AccountModalProvider, AccountSelector, ActionButton, AddressDisplay, AddressDisplayCard, AssetButton, AssetsSection, BalanceSection, BaseModal, ChooseNameContent, ChooseNameModalProvider, ChooseNameSearchContent, ChooseNameSummaryContent, ConnectModal, ConnectModalProvider, ConnectionButton, DappKitButton, EcosystemButton, EcosystemModal, EmailLoginButton, EmbeddedWalletContent, EmbeddedWalletSettingsModalProvider, ExploreEcosystemModalProvider, FAQContent, FAQModalProvider, FadeInView, FadeInViewFromBottom, FadeInViewFromLeft, FadeInViewFromRight, FeatureAnnouncementCard, LoginLoadingModal, MAX_IMAGE_SIZE, MainContent, ModalBackButton, ModalFAQButton, NFTMediaType, NotificationsModalProvider, PRICE_FEED_IDS, PasskeyLoginButton, PrivyButton, PrivyWalletProvider, QuickActionsSection, ReceiveModalProvider, ReceiveTokenContent, RoundState, ScrollToTopWrapper, SecurityLevel, SelectTokenContent, SendTokenContent, SendTokenModalProvider, SendTokenSummaryContent, SocialLoginButtons, StickyFooterContainer, StickyHeaderContainer, SwapTokenContent, TransactionModal, TransactionModalProvider, TransactionToast, TransactionToastProvider, VeChainKitContext, VeChainKitProvider, VeChainLoginButton, VeChainWithPrivyLoginButton, VePassportUserStatus, VechainKitThemeProvider, VersionFooter, WalletButton, WalletModalProvider, WalletSettingsContent, buildClaimRewardsTx, buildClaimRoundReward, compressImages, currentBlockQueryKey, fetchPrivyAppInfo, fetchVechainDomain, getAccountBalance, getAccountBalanceQueryKey, getAllEvents, getAllocationAmount, getAllocationAmountQueryKey, getAllocationsRoundState, getAllocationsRoundStateQueryKey, getAllocationsRoundsEvents, getAllocationsRoundsEventsQueryKey, getAppAdmin, getAppAdminQueryKey, getAppBalance, getAppBalanceQueryKey, getAppExistsQueryKey, getAppSecurityLevelQueryKey, getAppsEligibleInNextRound, getAppsEligibleInNextRoundQueryKey, getAppsShareClauses, getAvatar, getAvatarQueryKey, getB3trBalance, getB3trBalanceQueryKey, getB3trDonatedQueryKey, getB3trToUpgradeQueryKey, getBalanceOf, getCallKey, getChainId, getChainIdQueryKey, getCurrentAllocationsRoundId, getCurrentAllocationsRoundIdQueryKey, getDelegateeQueryKey, getDelegatorQueryKey, getDomainsOfAddress, getDomainsOfAddressQueryKey, getEnsRecordExistsQueryKey, getEntitiesLinkedToPassportQueryKey, getEvents, getGMBaseUriQueryKey, getGMLevel, getGMbalanceQueryKey, getGetCumulativeScoreWithDecayQueryKey, getHasVotedInRound, getHasVotedInRoundQueryKey, getIpfsImage, getIpfsImageQueryKey, getIpfsMetadata, getIpfsMetadataQueryKey, getIsBlacklistedQueryKey, getIsDomainProtectedQueryKey, getIsEntityQueryKey, getIsNodeHolder, getIsNodeHolderQueryKey, getIsPassportQueryKey, getIsPersonAtTimepointQueryKey, getIsPersonQueryKey, getIsWhitelistedQueryKey, getLevelGradient, getLevelMultiplierQueryKey, getLevelOfTokenQueryKey, getNFTMetadataUri, getNFTMetadataUriQueryKey, getNodeCheckCooldownQueryKey, getNodeManagerQueryKey, getParticipatedInGovernance, getParticipatedInGovernanceQueryKey, getParticipationScoreThresholdQueryKey, getPassportForEntityQueryKey, getPassportToggleQueryKey, getPendingDelegationsQueryKeyDelegateePOV, getPendingDelegationsQueryKeyDelegatorPOV, getPendingLinkingsQueryKey, getPrivyAppInfoQueryKey, getRoundReward, getRoundRewardQueryKey, getRoundXApps, getRoundXAppsQueryKey, getSecurityMultiplierQueryKey, getSmartAccount, getSmartAccountQueryKey, getThresholdParticipationScoreAtTimepointQueryKey, getThresholdParticipationScoreQueryKey, getTokenIdByAccount, getTokenIdByAccountQueryKey, getTokenUsdPrice, getTokenUsdPriceQueryKey, getTokensInfoByOwnerQueryKey, getUserBotSignalsQueryKey, getUserNodesQueryKey, getUserRoundScoreQueryKey, getUserVotesInRound, getUserVotesInRoundQueryKey, getUserXNodes, getUserXNodesQueryKey, getVeDelegateBalance, getVeDelegateBalanceQueryKey, getVechainDomainQueryKey, getVersion, getVersionQueryKey, getVot3Balance, getVot3BalanceQueryKey, getVotesInRoundQueryKey, getXAppMetadata, getXAppMetadataQueryKey, getXAppRoundEarnings, getXAppRoundEarningsQueryKey, getXAppTotalEarningsClauses, getXAppTotalEarningsQueryKey, getXAppVotes, getXAppVotesQf, getXAppVotesQfQueryKey, getXAppVotesQueryKey, getXApps, getXAppsMetadataBaseUri, getXAppsMetadataBaseUriQueryKey, getXAppsQueryKey, getXAppsSharesQueryKey, imageCompressionOptions, pollForReceipt, useAccountBalance, useAccountCustomizationModal, useAccountLinking, useAccountModal, useAllocationAmount, useAllocationsRound, useAllocationsRoundState, useAllocationsRoundsEvents, useAppAdmin, useAppBalance, useAppExists, useAppSecurityLevel, useAppsEligibleInNextRound, useB3trDonated, useB3trToUpgrade, useBalances, useCall, useChooseNameModal, useClaimVeWorldSubdomain, useConnectModal, useContractVersion, useCrossAppConnectionCache, useCurrentAllocationsRound, useCurrentAllocationsRoundId, useCurrentBlock, useEcosystemShortcuts, useEmbeddedWalletSettingsModal, useEnsRecordExists, useExploreEcosystemModal, useFAQModal, useFeatureAnnouncement, useFetchAppInfo, useGMBaseUri, useGMbalance, useGetAvatar, useGetB3trBalance, useGetChainId, useGetCumulativeScoreWithDecay, useGetDelegatee, useGetDelegator, useGetDomainsOfAddress, useGetEntitiesLinkedToPassport, useGetNodeManager, useGetNodeUrl, useGetPassportForEntity, useGetPendingDelegationsDelegateePOV, useGetPendingDelegationsDelegatorPOV, useGetPendingLinkings, useGetTokenUsdPrice, useGetTokensInfoByOwner, useGetUserEntitiesLinkedToPassport, useGetUserNode, useGetUserNodes, useGetUserPassportForEntity, useGetUserPendingLinkings, useGetVeDelegateBalance, useGetVot3Balance, useHasVotedInRound, useIpfsImage, useIpfsImageList, useIpfsMetadata, useIpfsMetadatas, useIsBlacklisted, useIsDomainProtected, useIsEntity, useIsGMclaimable, useIsNodeHolder, useIsPWA, useIsPassport, useIsPassportCheckEnabled, useIsPerson, useIsPersonAtTimepoint, useIsUserEntity, useIsUserPassport, useIsUserPerson, useIsWhitelisted, useLevelMultiplier, useLevelOfToken, useLocalStorage, useLoginWithOAuth2 as useLoginWithOAuth, useLoginWithPasskey, useLoginWithVeChain, useMostVotedAppsInRound, useMultipleXAppRoundEarnings, useNFTImage, useNFTMetadataUri, useNotificationAlerts, useNotifications, useNotificationsModal, useParticipatedInGovernance, useParticipationScoreThreshold, usePassportChecks, usePrivyWalletProvider, useReceiveModal, useRefreshBalances, useRoundEarnings, useRoundReward, useRoundXApps, useScrollToTop, useSecurityMultiplier, useSelectedGmNft, useSendTokenModal, useSendTransaction, useSignMessage2 as useSignMessage, useSignTypedData2 as useSignTypedData, useSingleImageUpload, useSmartAccount, useThresholdParticipationScore, useThresholdParticipationScoreAtTimepoint, useTokenIdByAccount, useTransactionModal, useTransactionToast, useTransferERC20, useTransferVET, useTxReceipt, useUpdateAvatarRecord, useUploadImages, useUserBotSignals, useUserDelegation, useUserRoundScore, useUserStatus, useUserTopVotedApps, useUserVotesInAllRounds, useUserVotesInRound, useVeChainKitConfig, useVechainDomain, useVotesInRound, useVotingRewards, useWallet, useWalletModal, useXApp, useXAppMetadata, useXAppRoundEarnings, useXAppTotalEarnings, useXAppVotes, useXAppVotesQf, useXApps, useXAppsMetadataBaseUri, useXAppsShares, useXNode, useXNodeCheckCooldown, useXNodes };
14673
+ export { APP_SECURITY_LEVELS, AccessAndSecurityContent, AccessAndSecurityModalProvider, AccountAvatar, AccountCustomizationContent, AccountCustomizationModalProvider, AccountDetailsButton, AccountMainContent, AccountModal, AccountModalProvider, AccountSelector, ActionButton, AddressDisplay, AddressDisplayCard, AssetButton, AssetsSection, BalanceSection, BaseModal, ChooseNameContent, ChooseNameModalProvider, ChooseNameSearchContent, ChooseNameSummaryContent, ConnectModal, ConnectModalProvider, ConnectionButton, DappKitButton, EcosystemButton, EcosystemModal, EmailLoginButton, EmbeddedWalletContent, ExchangeWarningAlert, ExploreEcosystemModalProvider, FAQContent, FAQModalProvider, FadeInView, FadeInViewFromBottom, FadeInViewFromLeft, FadeInViewFromRight, FeatureAnnouncementCard, LoginLoadingModal, MAX_IMAGE_SIZE, MainContent, ModalBackButton, ModalFAQButton, NFTMediaType, NotificationsModalProvider, PRICE_FEED_IDS, PasskeyLoginButton, PrivyButton, PrivyWalletProvider, Profile, QuickActionsSection, ReceiveModalProvider, ReceiveTokenContent, RoundState, ScrollToTopWrapper, SecurityLevel, SelectTokenContent, SendTokenContent, SendTokenModalProvider, SendTokenSummaryContent, SettingsContent, SocialLoginButtons, StickyFooterContainer, StickyHeaderContainer, SwapTokenContent, TransactionModal, TransactionModalProvider, TransactionToast, TransactionToastProvider, VeChainKitContext, VeChainKitProvider, VeChainLoginButton, VeChainWithPrivyLoginButton, VePassportUserStatus, VechainKitThemeProvider, VersionFooter, WalletButton, WalletModalProvider, buildClaimRewardsTx, buildClaimRoundReward, compressImages, currentBlockQueryKey, fetchPrivyAppInfo, fetchVechainDomain, getAccountBalance, getAccountBalanceQueryKey, getAllEvents, getAllocationAmount, getAllocationAmountQueryKey, getAllocationsRoundState, getAllocationsRoundStateQueryKey, getAllocationsRoundsEvents, getAllocationsRoundsEventsQueryKey, getAppAdmin, getAppAdminQueryKey, getAppBalance, getAppBalanceQueryKey, getAppExistsQueryKey, getAppSecurityLevelQueryKey, getAppsEligibleInNextRound, getAppsEligibleInNextRoundQueryKey, getAppsShareClauses, getAvatar, getAvatarQueryKey, getB3trBalance, getB3trBalanceQueryKey, getB3trDonatedQueryKey, getB3trToUpgradeQueryKey, getBalanceOf, getCallKey, getChainId, getChainIdQueryKey, getCurrentAllocationsRoundId, getCurrentAllocationsRoundIdQueryKey, getDelegateeQueryKey, getDelegatorQueryKey, getDomainsOfAddress, getDomainsOfAddressQueryKey, getEnsRecordExistsQueryKey, getEntitiesLinkedToPassportQueryKey, getEvents, getGMBaseUriQueryKey, getGMLevel, getGMbalanceQueryKey, getGetCumulativeScoreWithDecayQueryKey, getHasVotedInRound, getHasVotedInRoundQueryKey, getIpfsImage, getIpfsImageQueryKey, getIpfsMetadata, getIpfsMetadataQueryKey, getIsBlacklistedQueryKey, getIsDomainProtectedQueryKey, getIsEntityQueryKey, getIsNodeHolder, getIsNodeHolderQueryKey, getIsPassportQueryKey, getIsPersonAtTimepointQueryKey, getIsPersonQueryKey, getIsWhitelistedQueryKey, getLevelGradient, getLevelMultiplierQueryKey, getLevelOfTokenQueryKey, getNFTMetadataUri, getNFTMetadataUriQueryKey, getNodeCheckCooldownQueryKey, getNodeManagerQueryKey, getParticipatedInGovernance, getParticipatedInGovernanceQueryKey, getParticipationScoreThresholdQueryKey, getPassportForEntityQueryKey, getPassportToggleQueryKey, getPendingDelegationsQueryKeyDelegateePOV, getPendingDelegationsQueryKeyDelegatorPOV, getPendingLinkingsQueryKey, getPrivyAppInfoQueryKey, getRoundReward, getRoundRewardQueryKey, getRoundXApps, getRoundXAppsQueryKey, getSecurityMultiplierQueryKey, getSmartAccount, getSmartAccountQueryKey, getThresholdParticipationScoreAtTimepointQueryKey, getThresholdParticipationScoreQueryKey, getTokenIdByAccount, getTokenIdByAccountQueryKey, getTokenUsdPrice, getTokenUsdPriceQueryKey, getTokensInfoByOwnerQueryKey, getUserBotSignalsQueryKey, getUserNodesQueryKey, getUserRoundScoreQueryKey, getUserVotesInRound, getUserVotesInRoundQueryKey, getUserXNodes, getUserXNodesQueryKey, getVeDelegateBalance, getVeDelegateBalanceQueryKey, getVechainDomainQueryKey, getVersion, getVersionQueryKey, getVot3Balance, getVot3BalanceQueryKey, getVotesInRoundQueryKey, getXAppMetadata, getXAppMetadataQueryKey, getXAppRoundEarnings, getXAppRoundEarningsQueryKey, getXAppTotalEarningsClauses, getXAppTotalEarningsQueryKey, getXAppVotes, getXAppVotesQf, getXAppVotesQfQueryKey, getXAppVotesQueryKey, getXApps, getXAppsMetadataBaseUri, getXAppsMetadataBaseUriQueryKey, getXAppsQueryKey, getXAppsSharesQueryKey, imageCompressionOptions, pollForReceipt, useAccessAndSecurityModal, useAccountBalance, useAccountCustomizationModal, useAccountLinking, useAccountModal, useAllocationAmount, useAllocationsRound, useAllocationsRoundState, useAllocationsRoundsEvents, useAppAdmin, useAppBalance, useAppExists, useAppSecurityLevel, useAppsEligibleInNextRound, useB3trDonated, useB3trToUpgrade, useBalances, useCall, useChooseNameModal, useClaimVeWorldSubdomain, useConnectModal, useContractVersion, useCrossAppConnectionCache, useCurrentAllocationsRound, useCurrentAllocationsRoundId, useCurrentBlock, useEcosystemShortcuts, useEnsRecordExists, useExploreEcosystemModal, useFAQModal, useFeatureAnnouncement, useFetchAppInfo, useGMBaseUri, useGMbalance, useGetAvatar, useGetB3trBalance, useGetChainId, useGetCumulativeScoreWithDecay, useGetDelegatee, useGetDelegator, useGetDomainsOfAddress, useGetEntitiesLinkedToPassport, useGetNodeManager, useGetNodeUrl, useGetPassportForEntity, useGetPendingDelegationsDelegateePOV, useGetPendingDelegationsDelegatorPOV, useGetPendingLinkings, useGetTokenUsdPrice, useGetTokensInfoByOwner, useGetUserEntitiesLinkedToPassport, useGetUserNode, useGetUserNodes, useGetUserPassportForEntity, useGetUserPendingLinkings, useGetVeDelegateBalance, useGetVot3Balance, useHasVotedInRound, useIpfsImage, useIpfsImageList, useIpfsMetadata, useIpfsMetadatas, useIsBlacklisted, useIsDomainProtected, useIsEntity, useIsGMclaimable, useIsNodeHolder, useIsPWA, useIsPassport, useIsPassportCheckEnabled, useIsPerson, useIsPersonAtTimepoint, useIsUserEntity, useIsUserPassport, useIsUserPerson, useIsWhitelisted, useLevelMultiplier, useLevelOfToken, useLocalStorage, useLoginModalContent, useLoginWithOAuth2 as useLoginWithOAuth, useLoginWithPasskey, useLoginWithVeChain, useMostVotedAppsInRound, useMultipleXAppRoundEarnings, useNFTImage, useNFTMetadataUri, useNotificationAlerts, useNotifications, useNotificationsModal, useParticipatedInGovernance, useParticipationScoreThreshold, usePassportChecks, usePrivyWalletProvider, useReceiveModal, useRefreshBalances, useRoundEarnings, useRoundReward, useRoundXApps, useScrollToTop, useSecurityMultiplier, useSelectedGmNft, useSendTokenModal, useSendTransaction, useSignMessage2 as useSignMessage, useSignTypedData2 as useSignTypedData, useSingleImageUpload, useSmartAccount, useThresholdParticipationScore, useThresholdParticipationScoreAtTimepoint, useTokenIdByAccount, useTransactionModal, useTransactionToast, useTransferERC20, useTransferVET, useTxReceipt, useUpdateAvatarRecord, useUploadImages, useUserBotSignals, useUserDelegation, useUserRoundScore, useUserStatus, useUserTopVotedApps, useUserVotesInAllRounds, useUserVotesInRound, useVeChainKitConfig, useVechainDomain, useVotesInRound, useVotingRewards, useWallet, useWalletModal, useXApp, useXAppMetadata, useXAppRoundEarnings, useXAppTotalEarnings, useXAppVotes, useXAppVotesQf, useXApps, useXAppsMetadataBaseUri, useXAppsShares, useXNode, useXNodeCheckCooldown, useXNodes };
14359
14674
  //# sourceMappingURL=index.js.map
14360
14675
  //# sourceMappingURL=index.js.map