@vechain/vechain-kit 1.4.0 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/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, 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, Center, Container, InputRightElement, Select, Progress, PinInput, PinInputField, Accordion, AccordionItem, AccordionButton, AccordionPanel, List, ListItem, 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
  }
@@ -4023,7 +4025,7 @@ var useSendTokenModal = () => {
4023
4025
  var SendTokenModalProvider = ({
4024
4026
  children
4025
4027
  }) => /* @__PURE__ */ jsx(Fragment, { children });
4026
- var useEmbeddedWalletSettingsModal = () => {
4028
+ var useAccessAndSecurityModal = () => {
4027
4029
  const {
4028
4030
  openAccountModal,
4029
4031
  closeAccountModal,
@@ -4031,7 +4033,7 @@ var useEmbeddedWalletSettingsModal = () => {
4031
4033
  setAccountModalContent
4032
4034
  } = useVeChainKitConfig();
4033
4035
  const open = () => {
4034
- setAccountModalContent("embedded-wallet");
4036
+ setAccountModalContent("access-and-security");
4035
4037
  openAccountModal();
4036
4038
  };
4037
4039
  const close = () => {
@@ -4043,7 +4045,7 @@ var useEmbeddedWalletSettingsModal = () => {
4043
4045
  isOpen: isAccountModalOpen
4044
4046
  };
4045
4047
  };
4046
- var EmbeddedWalletSettingsModalProvider = ({
4048
+ var AccessAndSecurityModalProvider = ({
4047
4049
  children
4048
4050
  }) => /* @__PURE__ */ jsx(Fragment, { children });
4049
4051
  var useExploreEcosystemModal = () => {
@@ -5195,7 +5197,12 @@ var ModalBackButton = ({ onClick, ...props }) => {
5195
5197
  }
5196
5198
  );
5197
5199
  };
5198
- var AddressDisplay = ({ wallet, label, size = "lg" }) => {
5200
+ var AddressDisplay = ({
5201
+ wallet,
5202
+ label,
5203
+ size = "lg",
5204
+ style
5205
+ }) => {
5199
5206
  const [copied, setCopied] = useState(false);
5200
5207
  const [copiedDomain, setCopiedDomain] = useState(false);
5201
5208
  const copyToClipboard = async (textToCopy, setCopied2) => {
@@ -5205,7 +5212,7 @@ var AddressDisplay = ({ wallet, label, size = "lg" }) => {
5205
5212
  setCopied2(false);
5206
5213
  }, 2e3);
5207
5214
  };
5208
- 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: [
5209
5216
  label && /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.7, children: label }),
5210
5217
  wallet?.domain ? /* @__PURE__ */ jsxs(VStack, { children: [
5211
5218
  /* @__PURE__ */ jsxs(
@@ -5281,7 +5288,7 @@ var AddressDisplay = ({ wallet, label, size = "lg" }) => {
5281
5288
  // package.json
5282
5289
  var package_default = {
5283
5290
  name: "@vechain/vechain-kit",
5284
- version: "1.4.0",
5291
+ version: "1.4.2",
5285
5292
  private: false,
5286
5293
  homepage: "https://github.com/vechain/vechain-kit",
5287
5294
  repository: "github:vechain/vechain-kit",
@@ -5765,7 +5772,7 @@ var SocialLoginButtons = ({
5765
5772
  const selfHostedPrivyLoginMethods = loginMethods?.filter(
5766
5773
  (method35) => method35.method === "email" || method35.method === "google"
5767
5774
  );
5768
- return /* @__PURE__ */ jsx(GridItem, { colSpan: gridColumn, w: "full", children: selfHostedPrivyLoginMethods?.map((loginMethod, index) => /* @__PURE__ */ jsxs(React9.Fragment, { children: [
5775
+ return /* @__PURE__ */ jsx(GridItem, { colSpan: gridColumn, w: "full", children: selfHostedPrivyLoginMethods?.map((loginMethod, index) => /* @__PURE__ */ jsxs(React8.Fragment, { children: [
5769
5776
  loginMethod.method === "email" && /* @__PURE__ */ jsx(GridItem, { colSpan: 4, w: "full", children: /* @__PURE__ */ jsx(EmailLoginButton, {}) }),
5770
5777
  loginMethod.method === "google" && /* @__PURE__ */ jsx(GridItem, { colSpan: 4, w: "full", children: /* @__PURE__ */ jsx(
5771
5778
  ConnectionButton,
@@ -5855,8 +5862,8 @@ var EcosystemButton = ({
5855
5862
  {
5856
5863
  isDark,
5857
5864
  onClick: ecosystemModal.onOpen,
5858
- icon: IoPlanet,
5859
- text: gridColumn && gridColumn >= 2 ? t("Ecosystem") : void 0
5865
+ icon: IoMdApps,
5866
+ text: gridColumn && gridColumn >= 2 ? t("Other") : void 0
5860
5867
  }
5861
5868
  ) }),
5862
5869
  /* @__PURE__ */ jsx(
@@ -6364,7 +6371,7 @@ var MainContent = ({ setCurrentContent, onClose }) => {
6364
6371
  gridColumn: gridLayout.veChainColumn
6365
6372
  }
6366
6373
  )),
6367
- showPasskey && /* @__PURE__ */ jsx(
6374
+ gridLayout.passkeyColumn && /* @__PURE__ */ jsx(
6368
6375
  PasskeyLoginButton,
6369
6376
  {
6370
6377
  isDark,
@@ -6482,21 +6489,10 @@ var ExchangeWarningAlert = () => {
6482
6489
  ] })
6483
6490
  ] }) }) });
6484
6491
  };
6485
- var AccountMainContent = ({
6486
- setCurrentContent,
6487
- wallet,
6488
- onClose
6489
- }) => {
6492
+ var AccountMainContent = ({ setCurrentContent, wallet }) => {
6490
6493
  const { t } = useTranslation();
6491
6494
  const { darkMode: isDark } = useVeChainKitConfig();
6492
- const { disconnect, connection, account } = useWallet();
6493
- const { getNotifications } = useNotifications();
6494
- const notifications = getNotifications();
6495
- const hasUnreadNotifications = notifications.some((n) => !n.isRead);
6496
- const handleDisconnect = () => {
6497
- disconnect();
6498
- onClose();
6499
- };
6495
+ const { connection, account } = useWallet();
6500
6496
  return /* @__PURE__ */ jsxs(ScrollToTopWrapper, { children: [
6501
6497
  /* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
6502
6498
  /* @__PURE__ */ jsx(
@@ -6519,60 +6515,16 @@ var AccountMainContent = ({
6519
6515
  setCurrentContent
6520
6516
  }
6521
6517
  ),
6522
- /* @__PURE__ */ jsxs(HStack, { justify: "space-between", children: [
6523
- /* @__PURE__ */ jsx(
6524
- IconButton,
6525
- {
6526
- p: 2,
6527
- h: 9,
6528
- icon: /* @__PURE__ */ jsx(Icon, { boxSize: 5, as: RiLogoutBoxLine }),
6529
- "aria-label": "Disconnect",
6530
- variant: "vechainKitSelector",
6531
- onClick: () => setCurrentContent({
6532
- type: "disconnect-confirm",
6533
- props: {
6534
- onDisconnect: handleDisconnect,
6535
- onBack: () => setCurrentContent("main")
6536
- }
6537
- })
6538
- }
6539
- ),
6540
- /* @__PURE__ */ jsx(
6541
- AccountSelector,
6542
- {
6543
- mt: 0,
6544
- onClick: () => {
6545
- setCurrentContent("settings");
6546
- },
6547
- wallet
6548
- }
6549
- ),
6550
- /* @__PURE__ */ jsxs(Box, { position: "relative", children: [
6551
- /* @__PURE__ */ jsx(
6552
- IconButton,
6553
- {
6554
- p: 2,
6555
- h: 9,
6556
- variant: "vechainKitSelector",
6557
- "aria-label": "notifications",
6558
- icon: /* @__PURE__ */ jsx(Icon, { boxSize: 5, as: BiBell }),
6559
- onClick: () => setCurrentContent("notifications")
6560
- }
6561
- ),
6562
- hasUnreadNotifications && /* @__PURE__ */ jsx(
6563
- Box,
6564
- {
6565
- position: "absolute",
6566
- top: 1,
6567
- right: 1,
6568
- width: "8px",
6569
- height: "8px",
6570
- bg: "red.500",
6571
- borderRadius: "full"
6572
- }
6573
- )
6574
- ] })
6575
- ] }),
6518
+ /* @__PURE__ */ jsx(
6519
+ AccountSelector,
6520
+ {
6521
+ mt: 0,
6522
+ onClick: () => {
6523
+ setCurrentContent("settings");
6524
+ },
6525
+ wallet
6526
+ }
6527
+ ),
6576
6528
  /* @__PURE__ */ jsx(BalanceSection, { mt: 14 }),
6577
6529
  /* @__PURE__ */ jsx(
6578
6530
  QuickActionsSection,
@@ -6659,7 +6611,6 @@ var ActionButton = ({
6659
6611
  leftIcon,
6660
6612
  rightIcon,
6661
6613
  title,
6662
- description,
6663
6614
  onClick,
6664
6615
  leftImage,
6665
6616
  hide = false,
@@ -6670,7 +6621,8 @@ var ActionButton = ({
6670
6621
  stacked = false,
6671
6622
  isLoading,
6672
6623
  loadingText,
6673
- style
6624
+ style,
6625
+ extraContent
6674
6626
  }) => {
6675
6627
  const { t } = useTranslation();
6676
6628
  const { colorMode } = useColorMode();
@@ -6703,7 +6655,7 @@ var ActionButton = ({
6703
6655
  objectFit: "cover"
6704
6656
  }
6705
6657
  ) : /* @__PURE__ */ jsx(Icon, { as: leftIcon, fontSize: "25px" }) }),
6706
- /* @__PURE__ */ jsxs(
6658
+ /* @__PURE__ */ jsx(
6707
6659
  VStack,
6708
6660
  {
6709
6661
  textAlign: "left",
@@ -6711,26 +6663,11 @@ var ActionButton = ({
6711
6663
  flex: 1,
6712
6664
  justifyContent: "flex-start",
6713
6665
  alignItems: "flex-start",
6714
- children: [
6715
- /* @__PURE__ */ jsxs(HStack, { justify: "flex-start", children: [
6716
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", fontWeight: "400", children: title }),
6717
- showComingSoon && /* @__PURE__ */ jsx(Tag, { size: "sm", colorScheme: "red", children: t("Coming Soon!") })
6718
- ] }),
6719
- /* @__PURE__ */ jsx(
6720
- Text,
6721
- {
6722
- fontSize: "xs",
6723
- fontWeight: "400",
6724
- opacity: 0.5,
6725
- overflowWrap: "break-word",
6726
- wordBreak: "break-word",
6727
- whiteSpace: "normal",
6728
- w: "full",
6729
- pr: rightIcon ? "0px" : "10px",
6730
- children: description
6731
- }
6732
- )
6733
- ]
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
+ ] })
6734
6671
  }
6735
6672
  ),
6736
6673
  rightIcon && /* @__PURE__ */ jsx(VStack, { minW: "40px", justifyContent: "flex-end", children: /* @__PURE__ */ jsx(Icon, { as: rightIcon, fontSize: "20px", opacity: 0.5 }) })
@@ -6744,13 +6681,13 @@ var AccountSelector = ({
6744
6681
  onClick,
6745
6682
  mt
6746
6683
  }) => {
6747
- return /* @__PURE__ */ jsx(HStack, { mt, children: /* @__PURE__ */ jsx(
6684
+ return /* @__PURE__ */ jsx(HStack, { mt, w: "full", justify: "center", children: /* @__PURE__ */ jsx(
6748
6685
  Button,
6749
6686
  {
6750
6687
  w: "fit-content",
6751
6688
  p: 2,
6752
6689
  pl: 4,
6753
- h: 9,
6690
+ h: 14,
6754
6691
  "aria-label": "Wallet",
6755
6692
  onClick,
6756
6693
  variant: "vechainKitSelector",
@@ -6759,10 +6696,10 @@ var AccountSelector = ({
6759
6696
  AccountAvatar,
6760
6697
  {
6761
6698
  wallet,
6762
- props: { width: 5, height: 5 }
6699
+ props: { width: 10, height: 10 }
6763
6700
  }
6764
6701
  ),
6765
- /* @__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) }),
6766
6703
  /* @__PURE__ */ jsx(
6767
6704
  Icon,
6768
6705
  {
@@ -6962,8 +6899,8 @@ var QuickActionsSection = ({ mt, setCurrentContent }) => {
6962
6899
  py: 3,
6963
6900
  fontSize: "xs",
6964
6901
  verticalAlign: "middle",
6965
- "aria-label": "Ecosystem",
6966
- 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 }),
6967
6904
  onClick: () => setCurrentContent("ecosystem")
6968
6905
  }
6969
6906
  ),
@@ -7016,267 +6953,174 @@ var QuickActionsSection = ({ mt, setCurrentContent }) => {
7016
6953
  )
7017
6954
  ] });
7018
6955
  };
7019
- 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 }) => {
7020
7019
  const { t } = useTranslation();
7021
- const { darkMode: isDark, network } = useVeChainKitConfig();
7022
- const { connection, smartAccount } = useWallet();
7023
- return /* @__PURE__ */ jsxs(Fragment, { children: [
7024
- /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7025
- /* @__PURE__ */ jsxs(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: [
7026
- t("Connection Type"),
7027
- ":"
7028
- ] }),
7029
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: connection.source.type })
7030
- ] }),
7031
- /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7032
- /* @__PURE__ */ jsxs(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: [
7033
- t("Network"),
7034
- ":"
7035
- ] }),
7036
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: network.type })
7037
- ] }),
7038
- /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7039
- /* @__PURE__ */ jsxs(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: [
7040
- t("Node URL"),
7041
- ":"
7042
- ] }),
7043
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: network.nodeUrl || getConfig(network.type).nodeUrl })
7044
- ] }),
7045
- connection.isConnectedWithPrivy ? /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7046
- /* @__PURE__ */ jsxs(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: [
7047
- t("Smart Account"),
7048
- ":"
7049
- ] }),
7050
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: smartAccount.version ? `v${smartAccount.version}` : "v1" })
7051
- ] }) : smartAccount.isDeployed && /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7052
- /* @__PURE__ */ jsxs(
7053
- 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,
7054
7027
  {
7055
- fontSize: "sm",
7028
+ fontSize: "md",
7029
+ fontWeight: "500",
7030
+ textAlign: "center",
7056
7031
  color: isDark ? "#dfdfdd" : "#4d4d4d",
7057
- children: [
7058
- t("Smart Account"),
7059
- ":"
7060
- ]
7032
+ children: t("Access and security")
7061
7033
  }
7062
7034
  ),
7063
7035
  /* @__PURE__ */ jsx(
7064
- Text,
7036
+ ModalBackButton,
7065
7037
  {
7066
- fontSize: "sm",
7067
- color: isDark ? "#dfdfdd" : "#4d4d4d",
7068
- children: smartAccount.version ? `v${smartAccount.version}` : "v1"
7038
+ onClick: () => setCurrentContent("settings")
7069
7039
  }
7070
- )
7040
+ ),
7041
+ /* @__PURE__ */ jsx(ModalCloseButton, {})
7071
7042
  ] }),
7072
- /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7073
- /* @__PURE__ */ jsxs(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: [
7074
- t("VeChain Kit"),
7075
- ":"
7076
- ] }),
7077
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", color: isDark ? "#dfdfdd" : "#4d4d4d", children: package_default.version })
7078
- ] })
7079
- ] });
7080
- };
7081
- var CrossAppConnectionCard = ({ connectionCache }) => {
7082
- const { t } = useTranslation();
7083
- const { darkMode: isDark } = useVeChainKitConfig();
7084
- return /* @__PURE__ */ jsx(Fragment, { children: connectionCache.ecosystemApp && /* @__PURE__ */ jsxs(
7085
- VStack,
7086
- {
7087
- p: 4,
7088
- bg: isDark ? "#1a1a1a" : "#f5f5f5",
7089
- borderRadius: "xl",
7090
- spacing: 4,
7091
- w: "full",
7092
- children: [
7093
- /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7094
- /* @__PURE__ */ jsxs(
7095
- 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,
7096
7056
  {
7097
- fontSize: "sm",
7098
- color: isDark ? "#dfdfdd" : "#4d4d4d",
7099
- children: [
7100
- t("Logged in with"),
7101
- ":"
7102
- ]
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
7103
7067
  }
7104
7068
  ),
7105
7069
  /* @__PURE__ */ jsx(
7106
- Text,
7107
- {
7108
- fontSize: "sm",
7109
- color: isDark ? "#dfdfdd" : "#4d4d4d",
7110
- children: connectionCache.ecosystemApp.name
7111
- }
7112
- )
7113
- ] }),
7114
- /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7115
- /* @__PURE__ */ jsxs(
7116
- Text,
7070
+ ActionButton,
7117
7071
  {
7118
- fontSize: "sm",
7119
- color: isDark ? "#dfdfdd" : "#4d4d4d",
7120
- children: [
7121
- t("Connected at"),
7122
- ":"
7123
- ]
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
7124
7082
  }
7125
7083
  ),
7126
7084
  /* @__PURE__ */ jsx(
7127
- Text,
7085
+ ActionButton,
7128
7086
  {
7129
- fontSize: "sm",
7130
- color: isDark ? "#dfdfdd" : "#4d4d4d",
7131
- children: new Date(
7132
- connectionCache.timestamp
7133
- ).toLocaleString()
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
7134
7096
  }
7135
7097
  )
7136
- ] }),
7137
- /* @__PURE__ */ jsx(NetworkInfo, {})
7138
- ]
7139
- }
7140
- ) });
7098
+ ]
7099
+ }
7100
+ ) }),
7101
+ /* @__PURE__ */ jsx(ModalFooter, { w: "full" })
7102
+ ] });
7141
7103
  };
7142
- var DappKitConnectionCard = () => {
7143
- const { t } = useTranslation();
7144
- const { source } = useWallet$1();
7145
- const { darkMode: isDark } = useVeChainKitConfig();
7146
- return /* @__PURE__ */ jsx(Fragment, { children: source && /* @__PURE__ */ jsxs(
7147
- VStack,
7148
- {
7149
- p: 4,
7150
- bg: isDark ? "#1a1a1a" : "#f5f5f5",
7151
- borderRadius: "xl",
7152
- spacing: 4,
7153
- w: "full",
7154
- justifyContent: "space-between",
7155
- children: [
7156
- /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7157
- /* @__PURE__ */ jsxs(
7158
- Text,
7159
- {
7160
- fontSize: "sm",
7161
- color: isDark ? "#dfdfdd" : "#4d4d4d",
7162
- children: [
7163
- t("Logged in with"),
7164
- ":"
7165
- ]
7166
- }
7167
- ),
7168
- /* @__PURE__ */ jsx(
7169
- Text,
7170
- {
7171
- fontSize: "sm",
7172
- color: isDark ? "#dfdfdd" : "#4d4d4d",
7173
- children: source
7174
- }
7175
- )
7176
- ] }),
7177
- /* @__PURE__ */ jsx(NetworkInfo, {})
7178
- ]
7179
- }
7180
- ) });
7181
- };
7182
- var PrivyConnectionCard = () => {
7104
+ var SettingsContent = ({
7105
+ setCurrentContent,
7106
+ onLogoutSuccess
7107
+ }) => {
7108
+ const contentRef = useRef(null);
7183
7109
  const { t } = useTranslation();
7184
7110
  const { privy, darkMode: isDark } = useVeChainKitConfig();
7185
- const { data: appInfo, isLoading } = useFetchAppInfo(privy?.appId ?? "");
7186
- if (isLoading)
7187
- return /* @__PURE__ */ jsx(VStack, { w: "full", h: "full", justify: "center", align: "center", children: /* @__PURE__ */ jsx(Spinner, {}) });
7188
- return /* @__PURE__ */ jsx(Fragment, { children: appInfo && /* @__PURE__ */ jsxs(
7189
- VStack,
7190
- {
7191
- p: 4,
7192
- bg: isDark ? "#1a1a1a" : "#f5f5f5",
7193
- borderRadius: "xl",
7194
- spacing: 4,
7195
- w: "full",
7196
- justifyContent: "space-between",
7197
- children: [
7198
- /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7199
- /* @__PURE__ */ jsxs(
7200
- Text,
7201
- {
7202
- fontSize: "sm",
7203
- color: isDark ? "#dfdfdd" : "#4d4d4d",
7204
- children: [
7205
- t("Logged in with"),
7206
- ":"
7207
- ]
7208
- }
7209
- ),
7210
- /* @__PURE__ */ jsx(
7211
- Text,
7212
- {
7213
- fontSize: "sm",
7214
- color: isDark ? "#dfdfdd" : "#4d4d4d",
7215
- children: Object.values(appInfo)[0].name
7216
- }
7217
- )
7218
- ] }),
7219
- /* @__PURE__ */ jsx(NetworkInfo, {})
7220
- ]
7221
- }
7222
- ) });
7223
- };
7224
- var WalletSecuredBy = () => {
7225
- const { connection } = useWallet();
7226
- const { t } = useTranslation();
7227
- const { darkMode: isDark, privy } = useVeChainKitConfig();
7111
+ const { connection, disconnect } = useWallet();
7228
7112
  const { getConnectionCache } = useCrossAppConnectionCache();
7229
7113
  const connectionCache = getConnectionCache();
7230
- return /* @__PURE__ */ jsxs(
7231
- VStack,
7232
- {
7233
- w: "full",
7234
- align: "stretch",
7235
- textAlign: "center",
7236
- mt: 5,
7237
- p: 3,
7238
- borderRadius: "lg",
7239
- bg: isDark ? "whiteAlpha.100" : "blackAlpha.50",
7240
- shadow: "sm",
7241
- children: [
7242
- /* @__PURE__ */ jsx(Text, { fontSize: "xs", fontWeight: "800", children: t("Wallet secured by") }),
7243
- /* @__PURE__ */ jsxs(HStack, { justify: "center", children: [
7244
- /* @__PURE__ */ jsx(PrivyLogo, { isDark, w: "50px" }),
7245
- /* @__PURE__ */ jsx(Icon, { as: PiLineVertical, ml: 2 }),
7246
- connection.isConnectedWithVeChain ? /* @__PURE__ */ jsx(VechainLogoHorizontal, { isDark, w: "69px" }) : connection.isConnectedWithCrossApp && connectionCache && /* @__PURE__ */ jsx(
7247
- Image,
7248
- {
7249
- src: connectionCache.ecosystemApp.logoUrl,
7250
- alt: connectionCache.ecosystemApp.name,
7251
- maxW: "40px",
7252
- borderRadius: "md"
7253
- }
7254
- ),
7255
- connection.isConnectedWithSocialLogin && !connection.isConnectedWithVeChain && /* @__PURE__ */ jsx(
7256
- Image,
7257
- {
7258
- src: privy?.appearance.logo,
7259
- alt: privy?.appearance.logo,
7260
- maxW: "40px",
7261
- borderRadius: "md"
7262
- }
7263
- )
7264
- ] })
7265
- ]
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;
7266
7121
  }
7267
- );
7268
- };
7269
- var EmbeddedWalletContent = ({ setCurrentContent }) => {
7270
- const { t } = useTranslation();
7271
- const [showFullText, setShowFullText] = useState(false);
7272
- const { connectedWallet } = useWallet();
7273
- const { exportWallet } = usePrivy();
7274
- const walletImage = getPicassoImage(connectedWallet?.address ?? "");
7275
- const { getConnectionCache } = useCrossAppConnectionCache();
7276
- const { darkMode: isDark } = useVeChainKitConfig();
7277
- const { connection } = useWallet();
7278
- const connectionCache = getConnectionCache();
7279
- return /* @__PURE__ */ jsxs(ScrollToTopWrapper, { children: [
7122
+ }, []);
7123
+ return /* @__PURE__ */ jsxs(Box, { children: [
7280
7124
  /* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
7281
7125
  /* @__PURE__ */ jsx(
7282
7126
  ModalHeader,
@@ -7285,268 +7129,103 @@ var EmbeddedWalletContent = ({ setCurrentContent }) => {
7285
7129
  fontWeight: "500",
7286
7130
  textAlign: "center",
7287
7131
  color: isDark ? "#dfdfdd" : "#4d4d4d",
7288
- children: t("Embedded Wallet")
7132
+ children: t("Settings")
7289
7133
  }
7290
7134
  ),
7135
+ /* @__PURE__ */ jsx(ModalBackButton, { onClick: () => setCurrentContent("main") }),
7136
+ /* @__PURE__ */ jsx(ModalCloseButton, {})
7137
+ ] }),
7138
+ /* @__PURE__ */ jsxs(ModalBody, { w: "full", children: [
7291
7139
  /* @__PURE__ */ jsx(
7292
- ModalBackButton,
7140
+ Profile,
7293
7141
  {
7294
- onClick: () => setCurrentContent("settings")
7142
+ onEditClick: () => setCurrentContent("account-customization")
7295
7143
  }
7296
7144
  ),
7297
- /* @__PURE__ */ jsx(ModalCloseButton, {})
7298
- ] }),
7299
- /* @__PURE__ */ jsx(ModalBody, { w: "full", children: /* @__PURE__ */ jsxs(
7300
- VStack,
7301
- {
7302
- justify: "center",
7303
- spacing: 3,
7304
- align: "flex-start",
7305
- w: "full",
7306
- children: [
7307
- /* @__PURE__ */ jsxs(VStack, { justify: "center", align: "center", w: "full", children: [
7308
- /* @__PURE__ */ jsx(
7309
- Image,
7310
- {
7311
- src: walletImage,
7312
- maxW: "100px",
7313
- borderRadius: "50%"
7314
- }
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."
7315
7156
  ),
7316
- /* @__PURE__ */ jsx(AddressDisplay, { wallet: connectedWallet })
7317
- ] }),
7318
- connection.isConnectedWithCrossApp && /* @__PURE__ */ jsxs(Fragment, { children: [
7319
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7320
- "This is your main wallet, created by {{element}} and secured by Privy.",
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,
7321
7197
  {
7322
- element: connectionCache?.ecosystemApp?.name
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 })
7323
7209
  }
7324
- ) }),
7325
- showFullText && /* @__PURE__ */ jsxs(Fragment, { children: [
7326
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7327
- "This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions."
7328
- ) }),
7329
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7330
- "Please be sure to keep this wallet safe and backed up."
7331
- ) })
7332
- ] }),
7333
- /* @__PURE__ */ jsx(
7334
- Button,
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.",
7335
7219
  {
7336
- mt: 0,
7337
- variant: "link",
7338
- size: "sm",
7339
- onClick: () => setShowFullText(!showFullText),
7340
- color: "blue.500",
7341
- textAlign: "left",
7342
- children: t(showFullText ? "Show Less" : "Read More")
7343
- }
7344
- )
7345
- ] }),
7346
- connection.isConnectedWithSocialLogin && /* @__PURE__ */ jsxs(Fragment, { children: [
7347
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7348
- "You are using an Embedded Wallet secured by your social login method, ensuring a seamless VeChain experience."
7349
- ) }),
7350
- showFullText && /* @__PURE__ */ jsxs(Fragment, { children: [
7351
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7352
- "This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions."
7353
- ) }),
7354
- /* @__PURE__ */ jsxs(Text, { fontSize: "sm", opacity: 0.5, children: [
7355
- t(
7356
- "We highly recommend exporting your private key to back up your wallet. This ensures you can restore it if needed or transfer it to self-custody using"
7357
- ),
7358
- /* @__PURE__ */ jsxs(
7359
- Link,
7360
- {
7361
- href: "https://www.veworld.net/",
7362
- isExternal: true,
7363
- color: "gray.500",
7364
- fontSize: "14px",
7365
- textDecoration: "underline",
7366
- children: [
7367
- " ",
7368
- t("VeWorld Wallet"),
7369
- /* @__PURE__ */ jsx(Icon, { ml: 1, as: IoOpenOutline })
7370
- ]
7371
- }
7372
- ),
7373
- "."
7374
- ] }),
7375
- /* @__PURE__ */ jsxs(Text, { fontSize: "sm", opacity: 0.5, children: [
7376
- t("Click"),
7377
- " ",
7378
- /* @__PURE__ */ jsx(
7379
- Link,
7380
- {
7381
- href: "https://docs.vechain-kit.vechain.org/vechain-kit/embedded-wallets",
7382
- isExternal: true,
7383
- color: "gray.500",
7384
- fontSize: "14px",
7385
- textDecoration: "underline",
7386
- children: t("here")
7387
- }
7388
- ),
7389
- " ",
7390
- t(
7391
- "to learn more about embedded wallets."
7392
- )
7393
- ] })
7394
- ] }),
7395
- /* @__PURE__ */ jsx(
7396
- Button,
7397
- {
7398
- mt: 0,
7399
- variant: "link",
7400
- size: "sm",
7401
- onClick: () => setShowFullText(!showFullText),
7402
- color: "blue.500",
7403
- textAlign: "left",
7404
- children: t(showFullText ? "Show Less" : "Read More")
7405
- }
7406
- )
7407
- ] }),
7408
- /* @__PURE__ */ jsx(
7409
- ActionButton,
7410
- {
7411
- title: t("Backup your wallet"),
7412
- description: t(
7413
- 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."
7414
- ),
7415
- onClick: () => {
7416
- exportWallet();
7417
- },
7418
- isDisabled: !connection.isConnectedWithSocialLogin,
7419
- leftIcon: GiHouseKeys,
7420
- rightIcon: MdOutlineNavigateNext
7421
- }
7422
- ),
7423
- /* @__PURE__ */ jsx(
7424
- ActionButton,
7425
- {
7426
- title: t("Login methods"),
7427
- description: t(
7428
- connection.isConnectedWithSocialLogin ? "View and manage the login methods linked to your wallet." : "Login methods can be managed only in the app securing your wallet."
7429
- ),
7430
- onClick: () => {
7431
- setCurrentContent("privy-linked-accounts");
7432
- },
7433
- isDisabled: !connection.isConnectedWithSocialLogin,
7434
- leftIcon: MdManageAccounts,
7435
- rightIcon: MdOutlineNavigateNext
7436
- }
7437
- )
7438
- ]
7439
- }
7440
- ) }),
7441
- /* @__PURE__ */ jsx(ModalFooter, { w: "full", children: /* @__PURE__ */ jsxs(VStack, { w: "full", children: [
7442
- /* @__PURE__ */ jsx(Divider, {}),
7443
- connection.isConnectedWithPrivy && /* @__PURE__ */ jsx(WalletSecuredBy, {})
7444
- ] }) })
7445
- ] });
7446
- };
7447
- var WalletSettingsContent = ({
7448
- setCurrentContent,
7449
- onLogoutSuccess
7450
- }) => {
7451
- const contentRef = useRef(null);
7452
- const { t } = useTranslation();
7453
- const { privy, darkMode: isDark, network } = useVeChainKitConfig();
7454
- const { connection, disconnect, account } = useWallet();
7455
- const { getConnectionCache } = useCrossAppConnectionCache();
7456
- const connectionCache = getConnectionCache();
7457
- const { data: appInfo } = useFetchAppInfo(privy?.appId ?? "");
7458
- useEffect(() => {
7459
- if (contentRef.current) {
7460
- contentRef.current.scrollTop = 0;
7461
- }
7462
- }, []);
7463
- return /* @__PURE__ */ jsxs(Box, { children: [
7464
- /* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
7465
- /* @__PURE__ */ jsx(
7466
- ModalHeader,
7467
- {
7468
- fontSize: "md",
7469
- fontWeight: "500",
7470
- textAlign: "center",
7471
- color: isDark ? "#dfdfdd" : "#4d4d4d",
7472
- children: t("Settings")
7473
- }
7474
- ),
7475
- /* @__PURE__ */ jsx(ModalBackButton, { onClick: () => setCurrentContent("main") }),
7476
- /* @__PURE__ */ jsx(ModalCloseButton, {})
7477
- ] }),
7478
- /* @__PURE__ */ jsxs(ModalBody, { w: "full", children: [
7479
- /* @__PURE__ */ jsxs(VStack, { justify: "center", children: [
7480
- /* @__PURE__ */ jsx(AccountAvatar, { wallet: account, props: { maxW: "100px" } }),
7481
- /* @__PURE__ */ jsx(AddressDisplay, { wallet: account }),
7482
- network.type !== "main" && /* @__PURE__ */ jsx(
7483
- Tag,
7484
- {
7485
- size: "sm",
7486
- colorScheme: "blue",
7487
- width: "fit-content",
7488
- justifyContent: "center",
7489
- padding: "10px",
7490
- children: network.type === "test" ? t("Testnet") : t("Unknown")
7491
- }
7492
- )
7493
- ] }),
7494
- /* @__PURE__ */ jsxs(VStack, { mt: 10, w: "full", spacing: 3, children: [
7495
- /* @__PURE__ */ jsx(
7496
- ActionButton,
7497
- {
7498
- title: t("Connection Details"),
7499
- description: t(
7500
- "View the details of your connection to this app."
7501
- ),
7502
- onClick: () => {
7503
- setCurrentContent("connection-details");
7504
- },
7505
- leftIcon: VscDebugDisconnect,
7506
- rightIcon: MdOutlineNavigateNext
7507
- }
7508
- ),
7509
- /* @__PURE__ */ jsx(
7510
- ActionButton,
7511
- {
7512
- title: t("Customize account"),
7513
- description: t(
7514
- "Customize your account with a nickname and a picture to easily identify it."
7515
- ),
7516
- onClick: () => {
7517
- setCurrentContent("account-customization");
7518
- },
7519
- leftIcon: GiPaintBrush,
7520
- rightIcon: MdOutlineNavigateNext
7521
- }
7522
- ),
7523
- connection.isConnectedWithPrivy && /* @__PURE__ */ jsx(
7524
- ActionButton,
7525
- {
7526
- title: t("Embedded Wallet"),
7527
- description: t(
7528
- "Manage your embedded wallet security settings or back it up to a new device."
7529
- ),
7530
- onClick: () => {
7531
- setCurrentContent("embedded-wallet");
7532
- },
7533
- leftIcon: HiOutlineWallet,
7534
- rightIcon: MdOutlineNavigateNext
7535
- }
7536
- ),
7537
- /* @__PURE__ */ jsx(
7538
- ActionButton,
7539
- {
7540
- title: t("FAQs"),
7541
- description: t(
7542
- "Still have some doubts? Check out our FAQs and learn more.",
7543
- {
7544
- appName: connection.isConnectedWithCrossApp ? connectionCache?.ecosystemApp?.name : Object.values(appInfo ?? {})[0]?.name ?? ""
7220
+ appName: connection.isConnectedWithCrossApp ? connectionCache?.ecosystemApp?.name : Object.values(appInfo ?? {})[0]?.name ?? ""
7545
7221
  }
7546
7222
  ),
7547
7223
  onClick: () => setCurrentContent("faq"),
7548
7224
  leftIcon: BsQuestionCircle,
7549
- rightIcon: MdOutlineNavigateNext
7225
+ rightIcon: MdOutlineNavigateNext,
7226
+ style: {
7227
+ borderTopRadius: "0px"
7228
+ }
7550
7229
  }
7551
7230
  )
7552
7231
  ] })
@@ -7554,10 +7233,16 @@ var WalletSettingsContent = ({
7554
7233
  /* @__PURE__ */ jsx(ModalFooter, { w: "full", children: /* @__PURE__ */ jsx(
7555
7234
  Button,
7556
7235
  {
7557
- onClick: () => {
7558
- disconnect();
7559
- onLogoutSuccess();
7560
- },
7236
+ onClick: () => setCurrentContent({
7237
+ type: "disconnect-confirm",
7238
+ props: {
7239
+ onDisconnect: () => {
7240
+ disconnect();
7241
+ onLogoutSuccess();
7242
+ },
7243
+ onBack: () => setCurrentContent("settings")
7244
+ }
7245
+ }),
7561
7246
  variant: "vechainKitSecondary",
7562
7247
  leftIcon: /* @__PURE__ */ jsx(RiLogoutBoxLine, { color: "#888888" }),
7563
7248
  children: t("Logout")
@@ -7611,8 +7296,379 @@ var AccountCustomizationContent = ({ setCurrentContent }) => {
7611
7296
  } finally {
7612
7297
  setIsUploading(false);
7613
7298
  }
7614
- };
7615
- return /* @__PURE__ */ jsxs(Fragment, { children: [
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",
7491
+ color: isDark ? "#dfdfdd" : "#4d4d4d",
7492
+ children: [
7493
+ t("Logged in with"),
7494
+ ":"
7495
+ ]
7496
+ }
7497
+ ),
7498
+ /* @__PURE__ */ jsx(
7499
+ Text,
7500
+ {
7501
+ fontSize: "sm",
7502
+ color: isDark ? "#dfdfdd" : "#4d4d4d",
7503
+ children: connectionCache.ecosystemApp.name
7504
+ }
7505
+ )
7506
+ ] }),
7507
+ /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7508
+ /* @__PURE__ */ jsxs(
7509
+ Text,
7510
+ {
7511
+ fontSize: "sm",
7512
+ color: isDark ? "#dfdfdd" : "#4d4d4d",
7513
+ children: [
7514
+ t("Connected at"),
7515
+ ":"
7516
+ ]
7517
+ }
7518
+ ),
7519
+ /* @__PURE__ */ jsx(
7520
+ Text,
7521
+ {
7522
+ fontSize: "sm",
7523
+ color: isDark ? "#dfdfdd" : "#4d4d4d",
7524
+ children: new Date(
7525
+ connectionCache.timestamp
7526
+ ).toLocaleString()
7527
+ }
7528
+ )
7529
+ ] }),
7530
+ /* @__PURE__ */ jsx(NetworkInfo, {})
7531
+ ]
7532
+ }
7533
+ ) });
7534
+ };
7535
+ var DappKitConnectionCard = () => {
7536
+ const { t } = useTranslation();
7537
+ const { source } = useWallet$1();
7538
+ const { darkMode: isDark } = useVeChainKitConfig();
7539
+ return /* @__PURE__ */ jsx(Fragment, { children: source && /* @__PURE__ */ jsxs(
7540
+ VStack,
7541
+ {
7542
+ p: 4,
7543
+ bg: isDark ? "#1a1a1a" : "#f5f5f5",
7544
+ borderRadius: "xl",
7545
+ spacing: 4,
7546
+ w: "full",
7547
+ justifyContent: "space-between",
7548
+ children: [
7549
+ /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7550
+ /* @__PURE__ */ jsxs(
7551
+ Text,
7552
+ {
7553
+ fontSize: "sm",
7554
+ color: isDark ? "#dfdfdd" : "#4d4d4d",
7555
+ children: [
7556
+ t("Logged in with"),
7557
+ ":"
7558
+ ]
7559
+ }
7560
+ ),
7561
+ /* @__PURE__ */ jsx(
7562
+ Text,
7563
+ {
7564
+ fontSize: "sm",
7565
+ color: isDark ? "#dfdfdd" : "#4d4d4d",
7566
+ children: source
7567
+ }
7568
+ )
7569
+ ] }),
7570
+ /* @__PURE__ */ jsx(NetworkInfo, {})
7571
+ ]
7572
+ }
7573
+ ) });
7574
+ };
7575
+ var PrivyConnectionCard = () => {
7576
+ const { t } = useTranslation();
7577
+ const { privy, darkMode: isDark } = useVeChainKitConfig();
7578
+ const { data: appInfo, isLoading } = useFetchAppInfo(privy?.appId ?? "");
7579
+ if (isLoading)
7580
+ return /* @__PURE__ */ jsx(VStack, { w: "full", h: "full", justify: "center", align: "center", children: /* @__PURE__ */ jsx(Spinner, {}) });
7581
+ return /* @__PURE__ */ jsx(Fragment, { children: appInfo && /* @__PURE__ */ jsxs(
7582
+ VStack,
7583
+ {
7584
+ p: 4,
7585
+ bg: isDark ? "#1a1a1a" : "#f5f5f5",
7586
+ borderRadius: "xl",
7587
+ spacing: 4,
7588
+ w: "full",
7589
+ justifyContent: "space-between",
7590
+ children: [
7591
+ /* @__PURE__ */ jsxs(HStack, { w: "full", justifyContent: "space-between", children: [
7592
+ /* @__PURE__ */ jsxs(
7593
+ Text,
7594
+ {
7595
+ fontSize: "sm",
7596
+ color: isDark ? "#dfdfdd" : "#4d4d4d",
7597
+ children: [
7598
+ t("Logged in with"),
7599
+ ":"
7600
+ ]
7601
+ }
7602
+ ),
7603
+ /* @__PURE__ */ jsx(
7604
+ Text,
7605
+ {
7606
+ fontSize: "sm",
7607
+ color: isDark ? "#dfdfdd" : "#4d4d4d",
7608
+ children: Object.values(appInfo)[0].name
7609
+ }
7610
+ )
7611
+ ] }),
7612
+ /* @__PURE__ */ jsx(NetworkInfo, {})
7613
+ ]
7614
+ }
7615
+ ) });
7616
+ };
7617
+ var WalletSecuredBy = () => {
7618
+ const { connection } = useWallet();
7619
+ const { t } = useTranslation();
7620
+ const { darkMode: isDark, privy } = useVeChainKitConfig();
7621
+ const { getConnectionCache } = useCrossAppConnectionCache();
7622
+ const connectionCache = getConnectionCache();
7623
+ return /* @__PURE__ */ jsxs(
7624
+ VStack,
7625
+ {
7626
+ w: "full",
7627
+ align: "stretch",
7628
+ textAlign: "center",
7629
+ mt: 5,
7630
+ p: 3,
7631
+ borderRadius: "lg",
7632
+ bg: isDark ? "whiteAlpha.100" : "blackAlpha.50",
7633
+ shadow: "sm",
7634
+ children: [
7635
+ /* @__PURE__ */ jsx(Text, { fontSize: "xs", fontWeight: "800", children: t("Wallet secured by") }),
7636
+ /* @__PURE__ */ jsxs(HStack, { justify: "center", children: [
7637
+ /* @__PURE__ */ jsx(PrivyLogo, { isDark, w: "50px" }),
7638
+ /* @__PURE__ */ jsx(Icon, { as: PiLineVertical, ml: 2 }),
7639
+ connection.isConnectedWithVeChain ? /* @__PURE__ */ jsx(VechainLogoHorizontal, { isDark, w: "69px" }) : connection.isConnectedWithCrossApp && connectionCache && /* @__PURE__ */ jsx(
7640
+ Image,
7641
+ {
7642
+ src: connectionCache.ecosystemApp.logoUrl,
7643
+ alt: connectionCache.ecosystemApp.name,
7644
+ maxW: "40px",
7645
+ borderRadius: "md"
7646
+ }
7647
+ ),
7648
+ connection.isConnectedWithSocialLogin && !connection.isConnectedWithVeChain && /* @__PURE__ */ jsx(
7649
+ Image,
7650
+ {
7651
+ src: privy?.appearance.logo,
7652
+ alt: privy?.appearance.logo,
7653
+ maxW: "40px",
7654
+ borderRadius: "md"
7655
+ }
7656
+ )
7657
+ ] })
7658
+ ]
7659
+ }
7660
+ );
7661
+ };
7662
+ var EmbeddedWalletContent = ({ setCurrentContent }) => {
7663
+ const { t } = useTranslation();
7664
+ const { connectedWallet, connection } = useWallet();
7665
+ const [showFullText, setShowFullText] = useState(false);
7666
+ const walletImage = getPicassoImage(connectedWallet?.address ?? "");
7667
+ const { getConnectionCache } = useCrossAppConnectionCache();
7668
+ const connectionCache = getConnectionCache();
7669
+ const { darkMode: isDark } = useVeChainKitConfig();
7670
+ const { exportWallet } = usePrivy();
7671
+ return /* @__PURE__ */ jsxs(ScrollToTopWrapper, { children: [
7616
7672
  /* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
7617
7673
  /* @__PURE__ */ jsx(
7618
7674
  ModalHeader,
@@ -7621,38 +7677,49 @@ var AccountCustomizationContent = ({ setCurrentContent }) => {
7621
7677
  fontWeight: "500",
7622
7678
  textAlign: "center",
7623
7679
  color: isDark ? "#dfdfdd" : "#4d4d4d",
7624
- children: t("Customize Account")
7680
+ children: t("Embedded wallet")
7625
7681
  }
7626
7682
  ),
7627
7683
  /* @__PURE__ */ jsx(
7628
7684
  ModalBackButton,
7629
7685
  {
7630
- onClick: () => setCurrentContent("settings")
7686
+ onClick: () => setCurrentContent("access-and-security")
7631
7687
  }
7632
7688
  ),
7633
7689
  /* @__PURE__ */ jsx(ModalCloseButton, {})
7634
7690
  ] }),
7635
- /* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsxs(VStack, { spacing: 3, align: "center", children: [
7636
- /* @__PURE__ */ jsxs(
7637
- VStack,
7638
- {
7639
- spacing: 3,
7640
- w: "full",
7641
- justifyContent: "flex-start",
7642
- alignItems: "flex-start",
7643
- children: [
7691
+ /* @__PURE__ */ jsx(ModalBody, { w: "full", children: /* @__PURE__ */ jsxs(
7692
+ VStack,
7693
+ {
7694
+ justify: "center",
7695
+ spacing: 3,
7696
+ align: "flex-start",
7697
+ w: "full",
7698
+ children: [
7699
+ /* @__PURE__ */ jsxs(VStack, { justify: "center", align: "center", w: "full", children: [
7700
+ /* @__PURE__ */ jsx(
7701
+ Image,
7702
+ {
7703
+ src: walletImage,
7704
+ maxW: "100px",
7705
+ borderRadius: "50%"
7706
+ }
7707
+ ),
7708
+ /* @__PURE__ */ jsx(AddressDisplay, { wallet: connectedWallet })
7709
+ ] }),
7710
+ connection.isConnectedWithCrossApp && /* @__PURE__ */ jsxs(Fragment, { children: [
7644
7711
  /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7645
- "Customize your account with a unique .vet domain name and profile image to enhance your identity across VeChain applications."
7712
+ "This is your main wallet, created by {{element}} and secured by Privy.",
7713
+ {
7714
+ element: connectionCache?.ecosystemApp?.name
7715
+ }
7646
7716
  ) }),
7647
7717
  showFullText && /* @__PURE__ */ jsxs(Fragment, { children: [
7648
7718
  /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7649
- "Your customizations are linked to your .vet domain name, making them portable across different applications."
7650
- ) }),
7651
- /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7652
- "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."
7719
+ "This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions."
7653
7720
  ) }),
7654
7721
  /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7655
- "Changing your domain name will update also your profile image."
7722
+ "Please be sure to keep this wallet safe and backed up."
7656
7723
  ) })
7657
7724
  ] }),
7658
7725
  /* @__PURE__ */ jsx(
@@ -7667,60 +7734,89 @@ var AccountCustomizationContent = ({ setCurrentContent }) => {
7667
7734
  children: t(showFullText ? "Show Less" : "Read More")
7668
7735
  }
7669
7736
  )
7670
- ]
7671
- }
7672
- ),
7673
- /* @__PURE__ */ jsx(
7674
- ActionButton,
7675
- {
7676
- style: {
7677
- mt: 3
7678
- },
7679
- title: account?.domain ? account?.domain : t("Choose account name"),
7680
- description: t(
7681
- "Choose a unique .vet domain name for your account."
7682
- ),
7683
- onClick: () => {
7684
- if (account?.domain) {
7685
- setCurrentContent({
7686
- type: "choose-name-search",
7687
- props: {
7688
- name: "",
7689
- setCurrentContent
7690
- }
7691
- });
7692
- } else {
7693
- setCurrentContent("choose-name");
7737
+ ] }),
7738
+ connection.isConnectedWithSocialLogin && /* @__PURE__ */ jsxs(Fragment, { children: [
7739
+ /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7740
+ "You are using an Embedded Wallet secured by your social login method, ensuring a seamless VeChain experience."
7741
+ ) }),
7742
+ showFullText && /* @__PURE__ */ jsxs(Fragment, { children: [
7743
+ /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.5, children: t(
7744
+ "This wallet is the owner of your smart account, which is used as your identity and as a gateway for your blockchain interactions."
7745
+ ) }),
7746
+ /* @__PURE__ */ jsxs(Text, { fontSize: "sm", opacity: 0.5, children: [
7747
+ t(
7748
+ "We highly recommend exporting your private key to back up your wallet. This ensures you can restore it if needed or transfer it to self-custody using"
7749
+ ),
7750
+ /* @__PURE__ */ jsxs(
7751
+ Link,
7752
+ {
7753
+ href: "https://www.veworld.net/",
7754
+ isExternal: true,
7755
+ color: "gray.500",
7756
+ fontSize: "14px",
7757
+ textDecoration: "underline",
7758
+ children: [
7759
+ " ",
7760
+ t("VeWorld Wallet"),
7761
+ /* @__PURE__ */ jsx(Icon, { ml: 1, as: IoOpenOutline })
7762
+ ]
7763
+ }
7764
+ ),
7765
+ "."
7766
+ ] }),
7767
+ /* @__PURE__ */ jsxs(Text, { fontSize: "sm", opacity: 0.5, children: [
7768
+ t("Click"),
7769
+ " ",
7770
+ /* @__PURE__ */ jsx(
7771
+ Link,
7772
+ {
7773
+ href: "https://docs.vechain-kit.vechain.org/vechain-kit/embedded-wallets",
7774
+ isExternal: true,
7775
+ color: "gray.500",
7776
+ fontSize: "14px",
7777
+ textDecoration: "underline",
7778
+ children: t("here")
7779
+ }
7780
+ ),
7781
+ " ",
7782
+ t(
7783
+ "to learn more about embedded wallets."
7784
+ )
7785
+ ] })
7786
+ ] }),
7787
+ /* @__PURE__ */ jsx(
7788
+ Button,
7789
+ {
7790
+ mt: 0,
7791
+ variant: "link",
7792
+ size: "sm",
7793
+ onClick: () => setShowFullText(!showFullText),
7794
+ color: "blue.500",
7795
+ textAlign: "left",
7796
+ children: t(showFullText ? "Show Less" : "Read More")
7797
+ }
7798
+ )
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
7694
7812
  }
7695
- },
7696
- leftIcon: FaRegAddressCard,
7697
- rightIcon: MdOutlineNavigateNext
7698
- }
7699
- ),
7700
- /* @__PURE__ */ jsx(
7701
- ActionButton,
7702
- {
7703
- title: t("Update profile image"),
7704
- description: t(
7705
- !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."
7706
- ),
7707
- onClick: () => fileInputRef.current?.click(),
7708
- leftImage: account?.image,
7709
- isLoading: isUploading || isProcessing,
7710
- isDisabled: !account?.domain,
7711
- loadingText: isUploading ? t("Uploading image") : t("Setting image")
7712
- }
7713
- ),
7714
- /* @__PURE__ */ jsx(
7715
- "input",
7716
- {
7717
- type: "file",
7718
- ref: fileInputRef,
7719
- hidden: true,
7720
- accept: "image/*",
7721
- onChange: async (event) => await handleImageUpload(event)
7722
- }
7723
- )
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, {})
7724
7820
  ] }) })
7725
7821
  ] });
7726
7822
  };
@@ -9903,7 +9999,18 @@ var en_default = {
9903
9999
  "{{element}} website": "{{element}} website",
9904
10000
  "{{name}}": "{{name}}",
9905
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.",
9906
- "Send the tokens to your VeWorld wallet first.": "Send the tokens to your VeWorld wallet first."
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"
9907
10014
  };
9908
10015
 
9909
10016
  // src/languages/de.json
@@ -12016,7 +12123,7 @@ var FAQContent = ({ onGoBack }) => {
12016
12123
  fontWeight: "500",
12017
12124
  textAlign: "center",
12018
12125
  color: isDark ? "#dfdfdd" : "#4d4d4d",
12019
- children: t("Info")
12126
+ children: t("Help")
12020
12127
  }
12021
12128
  ),
12022
12129
  /* @__PURE__ */ jsx(ModalBackButton, { onClick: onGoBack }),
@@ -12102,7 +12209,6 @@ var ConnectionDetailsContent = ({ onGoBack }) => {
12102
12209
  const { getConnectionCache } = useCrossAppConnectionCache();
12103
12210
  const { privy, darkMode: isDark } = useVeChainKitConfig();
12104
12211
  const { connection } = useWallet();
12105
- const { source } = useWallet$1();
12106
12212
  const { data: appInfo } = useFetchAppInfo(privy?.appId ?? "");
12107
12213
  const connectionCache = getConnectionCache();
12108
12214
  return /* @__PURE__ */ jsxs(ScrollToTopWrapper, { children: [
@@ -12130,23 +12236,7 @@ var ConnectionDetailsContent = ({ onGoBack }) => {
12130
12236
  /* @__PURE__ */ jsxs(ModalBody, { w: "full", children: [
12131
12237
  connection.isConnectedWithCrossApp && connectionCache && /* @__PURE__ */ jsx(CrossAppConnectionCard, { connectionCache }),
12132
12238
  connection.isConnectedWithSocialLogin && /* @__PURE__ */ jsx(PrivyConnectionCard, {}),
12133
- connection.isConnectedWithDappKit && /* @__PURE__ */ jsxs(VStack, { align: "stretch", textAlign: "center", mt: 5, children: [
12134
- /* @__PURE__ */ jsx(DappKitConnectionCard, {}),
12135
- /* @__PURE__ */ jsx(
12136
- Text,
12137
- {
12138
- fontSize: "sm",
12139
- opacity: 0.5,
12140
- textAlign: "center",
12141
- children: t(
12142
- "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.",
12143
- {
12144
- element: source
12145
- }
12146
- )
12147
- }
12148
- )
12149
- ] }),
12239
+ connection.isConnectedWithDappKit && /* @__PURE__ */ jsx(VStack, { align: "stretch", textAlign: "center", mt: 5, children: /* @__PURE__ */ jsx(DappKitConnectionCard, {}) }),
12150
12240
  (connection.isConnectedWithSocialLogin || connection.isConnectedWithCrossApp) && /* @__PURE__ */ jsxs(VStack, { spacing: 4, mt: 5, children: [
12151
12241
  /* @__PURE__ */ jsx(Divider, {}),
12152
12242
  /* @__PURE__ */ jsxs(
@@ -12418,22 +12508,7 @@ var PrivyLinkedAccounts = ({ onBack }) => {
12418
12508
  ),
12419
12509
  /* @__PURE__ */ jsx(ModalCloseButton, {})
12420
12510
  ] }),
12421
- /* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsxs(VStack, { spacing: 3, align: "stretch", children: [
12422
- /* @__PURE__ */ jsx(
12423
- ActionButton,
12424
- {
12425
- title: t("Handle Passkey Login"),
12426
- description: t(
12427
- "Enable one click login by adding a passkey to your account."
12428
- ),
12429
- onClick: () => {
12430
- linkPasskey();
12431
- },
12432
- leftIcon: IoIosFingerPrint,
12433
- rightIcon: void 0,
12434
- isDisabled: !privy?.allowPasskeyLinking
12435
- }
12436
- ),
12511
+ /* @__PURE__ */ jsx(ModalBody, { w: "full", children: /* @__PURE__ */ jsxs(VStack, { spacing: 3, align: "stretch", w: "full", children: [
12437
12512
  canLinkGoogle && /* @__PURE__ */ jsx(
12438
12513
  ActionButton,
12439
12514
  {
@@ -12841,9 +12916,14 @@ var NotificationsContent = ({ setCurrentContent }) => {
12841
12916
  if (b.id === "multiclause") return 1;
12842
12917
  return b.timestamp - a.timestamp;
12843
12918
  });
12844
- return /* @__PURE__ */ jsxs(Box, { children: [
12919
+ return /* @__PURE__ */ jsxs(ScrollToTopWrapper, { children: [
12845
12920
  /* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
12846
- /* @__PURE__ */ jsx(ModalBackButton, { onClick: () => setCurrentContent("main") }),
12921
+ /* @__PURE__ */ jsx(
12922
+ ModalBackButton,
12923
+ {
12924
+ onClick: () => setCurrentContent("settings")
12925
+ }
12926
+ ),
12847
12927
  /* @__PURE__ */ jsx(
12848
12928
  ModalHeader,
12849
12929
  {
@@ -12856,7 +12936,7 @@ var NotificationsContent = ({ setCurrentContent }) => {
12856
12936
  ),
12857
12937
  /* @__PURE__ */ jsx(ModalCloseButton, {})
12858
12938
  ] }),
12859
- /* @__PURE__ */ jsxs(Container, { maxW: "container.lg", h: "350px", children: [
12939
+ /* @__PURE__ */ jsxs(Container, { maxW: "container.lg", h: ["auto", "540px"], children: [
12860
12940
  /* @__PURE__ */ jsx(ModalBody, { w: "full", children: /* @__PURE__ */ jsxs(VStack, { spacing: 4, align: "stretch", w: "full", children: [
12861
12941
  /* @__PURE__ */ jsxs(HStack, { justify: "space-between", children: [
12862
12942
  /* @__PURE__ */ jsx(
@@ -13083,7 +13163,7 @@ var ExploreEcosystemContent = ({ setCurrentContent }) => {
13083
13163
  fontWeight: "500",
13084
13164
  textAlign: "center",
13085
13165
  color: isDark ? "#dfdfdd" : "#4d4d4d",
13086
- children: t("VeChain Ecosystem")
13166
+ children: t("Apps")
13087
13167
  }
13088
13168
  ),
13089
13169
  /* @__PURE__ */ jsx(ModalBackButton, { onClick: () => setCurrentContent("main") }),
@@ -13330,7 +13410,7 @@ var AccountModal = ({
13330
13410
  );
13331
13411
  case "settings":
13332
13412
  return /* @__PURE__ */ jsx(
13333
- WalletSettingsContent,
13413
+ SettingsContent,
13334
13414
  {
13335
13415
  setCurrentContent,
13336
13416
  onLogoutSuccess: onClose
@@ -13343,9 +13423,9 @@ var AccountModal = ({
13343
13423
  setCurrentContent
13344
13424
  }
13345
13425
  );
13346
- case "embedded-wallet":
13426
+ case "access-and-security":
13347
13427
  return /* @__PURE__ */ jsx(
13348
- EmbeddedWalletContent,
13428
+ AccessAndSecurityContent,
13349
13429
  {
13350
13430
  setCurrentContent
13351
13431
  }
@@ -13379,7 +13459,7 @@ var AccountModal = ({
13379
13459
  return /* @__PURE__ */ jsx(
13380
13460
  PrivyLinkedAccounts,
13381
13461
  {
13382
- onBack: () => setCurrentContent("embedded-wallet")
13462
+ onBack: () => setCurrentContent("access-and-security")
13383
13463
  }
13384
13464
  );
13385
13465
  case "ecosystem":
@@ -13396,6 +13476,13 @@ var AccountModal = ({
13396
13476
  setCurrentContent
13397
13477
  }
13398
13478
  );
13479
+ case "embedded-wallet":
13480
+ return /* @__PURE__ */ jsx(
13481
+ EmbeddedWalletContent,
13482
+ {
13483
+ setCurrentContent
13484
+ }
13485
+ );
13399
13486
  }
13400
13487
  };
13401
13488
  return /* @__PURE__ */ jsx(
@@ -13830,9 +13917,9 @@ var LoadingContent = ({
13830
13917
  }) => {
13831
13918
  const { t } = useTranslation();
13832
13919
  const { darkMode: isDark } = useVeChainKitConfig();
13833
- const [showTimeout, setShowTimeout] = React9.useState(false);
13834
- const [showSafariMessage, setShowSafariMessage] = React9.useState(false);
13835
- React9.useEffect(() => {
13920
+ const [showTimeout, setShowTimeout] = React8.useState(false);
13921
+ const [showSafariMessage, setShowSafariMessage] = React8.useState(false);
13922
+ React8.useEffect(() => {
13836
13923
  if (isSafari) {
13837
13924
  setShowSafariMessage(true);
13838
13925
  }
@@ -14018,8 +14105,8 @@ var EcosystemContent = ({ onClose, appsInfo, isLoading }) => {
14018
14105
  display: "flex",
14019
14106
  gap: 2,
14020
14107
  children: [
14021
- /* @__PURE__ */ jsx(Icon, { as: IoPlanet, size: "20px" }),
14022
- t("Ecosystem Login")
14108
+ /* @__PURE__ */ jsx(Icon, { as: IoMdApps, size: "20px" }),
14109
+ t("Select an app")
14023
14110
  ]
14024
14111
  }
14025
14112
  ),
@@ -14034,9 +14121,7 @@ var EcosystemContent = ({ onClose, appsInfo, isLoading }) => {
14034
14121
  opacity: 0.5,
14035
14122
  mb: 4,
14036
14123
  textAlign: "center",
14037
- children: t(
14038
- "Use your existing VeChain wallet from other ecosystem apps to sign in seamlessly."
14039
- )
14124
+ children: t("Sign in with a wallet from other x2earn apps.")
14040
14125
  }
14041
14126
  ),
14042
14127
  isLoading && /* @__PURE__ */ jsx(
@@ -14153,8 +14238,6 @@ var initializeI18n = (i18nInstance) => {
14153
14238
  });
14154
14239
  };
14155
14240
  var DEFAULT_PRIVY_ECOSYSTEM_APP_IDS = [
14156
- "cm4wxxujb022fyujl7g0thb21",
14157
- //vechain
14158
14241
  "clz41gcg00e4ay75dmq3uzzgr",
14159
14242
  //cleanify
14160
14243
  "cm153hrup0817axti38avlfyg"
@@ -14219,10 +14302,6 @@ var VeChainKitProvider = ({
14219
14302
  );
14220
14303
  return userEcosystemMethods?.allowedApps ?? DEFAULT_PRIVY_ECOSYSTEM_APP_IDS;
14221
14304
  }, [loginMethods]);
14222
- const privyLoginMethods = [
14223
- ...privy?.loginMethods ?? [],
14224
- ...allowedEcosystemApps.map((appID) => `privy:${appID}`)
14225
- ];
14226
14305
  let privyAppId, privyClientId;
14227
14306
  if (!privy) {
14228
14307
  privyAppId = "clzdb5k0b02b9qvzjm6jpknsc";
@@ -14286,7 +14365,7 @@ var VeChainKitProvider = ({
14286
14365
  config: {
14287
14366
  loginMethodsAndOrder: {
14288
14367
  // @ts-ignore
14289
- primary: privyLoginMethods
14368
+ primary: privy?.loginMethods ?? []
14290
14369
  },
14291
14370
  appearance: {
14292
14371
  theme: darkMode ? "dark" : "light",
@@ -14591,6 +14670,6 @@ var VechainKitThemeProvider = ({
14591
14670
  ] });
14592
14671
  };
14593
14672
 
14594
- export { APP_SECURITY_LEVELS, 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, EmbeddedWalletSettingsModalProvider, ExchangeWarningAlert, 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, 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 };
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 };
14595
14674
  //# sourceMappingURL=index.js.map
14596
14675
  //# sourceMappingURL=index.js.map