import { CopyOutlined as CopyIcon, DisconnectOutlined as DisconnectIcon, SwapOutlined as SwitchIcon, } from '@ant-design/icons'; import { useWallet } from '@solana/wallet-adapter-react'; import type { ButtonProps } from 'antd'; import { Button, Dropdown, Menu } from 'antd'; import type { FC } from 'react'; import React, { useMemo } from 'react'; import { useWalletModal } from './useWalletModal.js'; import { WalletConnectButton } from './WalletConnectButton.js'; import { WalletIcon } from './WalletIcon.js'; import { WalletModalButton } from './WalletModalButton.js'; export const WalletMultiButton: FC = ({ type = 'primary', size = 'large', htmlType = 'button', children, ...props }) => { const { publicKey, wallet, disconnect } = useWallet(); const { setVisible } = useWalletModal(); const base58 = useMemo(() => publicKey?.toBase58(), [publicKey]); const content = useMemo(() => { if (children) return children; if (!wallet || !base58) return null; return base58.slice(0, 4) + '..' + base58.slice(-4); }, [children, wallet, base58]); if (!wallet) { return ( {children} ); } if (!base58) { return ( {children} ); } return ( { await navigator.clipboard.writeText(base58); }} icon={} className="wallet-adapter-multi-button-item" > Copy address setTimeout(() => setVisible(true), 100)} icon={} className="wallet-adapter-multi-button-item" > Change wallet { // eslint-disable-next-line @typescript-eslint/no-empty-function disconnect().catch(() => { // Silently catch because any errors are caught by the context `onError` handler }); }} icon={} className="wallet-adapter-multi-button-item" > Disconnect } trigger={['click']} > ); };