"use client"; import { ShuffleIcon } from "@radix-ui/react-icons"; import type { ThirdwebClient } from "../../../../../client/client.js"; import { isInAppWallet } from "../../../../../wallets/in-app/core/wallet/index.js"; import { injectedProvider } from "../../../../../wallets/injected/mipdStore.js"; import { fontSize, iconSize } from "../../../../core/design-system/index.js"; import type { ConnectButton_detailsModalOptions } from "../../../../core/hooks/connection/ConnectButtonProps.js"; import { useActiveWallet } from "../../../../core/hooks/wallets/useActiveWallet.js"; import { useAdminWallet } from "../../../../core/hooks/wallets/useAdminWallet.js"; import { Container, Line, ModalHeader } from "../../components/basic.js"; import { Spacer } from "../../components/Spacer.js"; import { Text } from "../../components/text.js"; import { KeyIcon } from "../icons/KeyIcon.js"; import { MultiUserIcon } from "../icons/MultiUserIcon.js"; import { WalletConnectIcon } from "../icons/WalletConnectIcon.js"; import type { ConnectLocale } from "../locale/types.js"; import { MenuButton } from "../MenuButton.js"; import type { WalletDetailsModalScreen } from "./types.js"; /** * @internal */ export function ManageWalletScreen(props: { onBack: () => void; setScreen: (screen: WalletDetailsModalScreen) => void; closeModal: () => void; locale: ConnectLocale; client: ThirdwebClient; manageWallet?: ConnectButton_detailsModalOptions["manageWallet"]; }) { const adminWallet = useAdminWallet(); const activeWallet = useActiveWallet(); const wallet = adminWallet || activeWallet; return ( {/* Switch Metamask Account (only shows if the active wallet is MetaMask) */} {/* Unified Identity */} {typeof wallet !== "undefined" && props.manageWallet?.allowLinkingProfiles !== false && ( { props.setScreen("linked-profiles"); }} style={{ fontSize: fontSize.sm, }} > {props.locale.manageWallet.linkedProfiles} )} {/* Wallet Connect Receiver */} { props.setScreen("wallet-connect-receiver"); }} style={{ fontSize: fontSize.sm, }} > {props.locale.manageWallet.connectAnApp} {/* Private Key Export (if enabled) */} {wallet && isInAppWallet(wallet) && !wallet.getConfig()?.hidePrivateKeyExport && ( { props.setScreen("private-key"); }} style={{ fontSize: fontSize.sm, }} > {props.locale.manageWallet.exportPrivateKey} )} ); } function SwitchMetamaskAccount(props: { closeModal: () => void; connectLocale: ConnectLocale; }) { const wallet = useActiveWallet(); const connectLocale = props.connectLocale; if (wallet?.id !== "io.metamask") { return null; } const injectedMetamaskProvider = injectedProvider("io.metamask"); if (!injectedMetamaskProvider) { return null; } return ( { await injectedMetamaskProvider.request({ method: "wallet_requestPermissions", params: [{ eth_accounts: {} }], }); props.closeModal(); }} type="button" > {connectLocale.switchAccount} ); }