import { createTheme, StyledEngineProvider, ThemeProvider } from '@mui/material'; import { deepPurple, pink } from '@mui/material/colors'; import { WalletModalProvider as AntDesignWalletModalProvider } from '@solana/wallet-adapter-ant-design'; import type { WalletError } from '@solana/wallet-adapter-base'; import { WalletAdapterNetwork } from '@solana/wallet-adapter-base'; import { WalletDialogProvider as MaterialUIWalletDialogProvider } from '@solana/wallet-adapter-material-ui'; import { ConnectionProvider, WalletProvider } from '@solana/wallet-adapter-react'; import { WalletModalProvider as ReactUIWalletModalProvider } from '@solana/wallet-adapter-react-ui'; import { WalletConnectWalletAdapter } from '@solana/wallet-adapter-walletconnect'; import { GlowWalletAdapter, PhantomWalletAdapter, SlopeWalletAdapter, SolflareWalletAdapter, TorusWalletAdapter, } from '@solana/wallet-adapter-wallets'; import { clusterApiUrl } from '@solana/web3.js'; import { SnackbarProvider, useSnackbar } from 'notistack'; import type { FC, ReactNode } from 'react'; import { useCallback, useMemo } from 'react'; import { AutoConnectProvider, useAutoConnect } from './AutoConnectProvider'; const theme = createTheme({ palette: { mode: 'dark', primary: { main: deepPurple[700], }, secondary: { main: pink[700], }, }, components: { MuiButtonBase: { styleOverrides: { root: { justifyContent: 'flex-start', }, }, }, MuiButton: { styleOverrides: { root: { textTransform: 'none', padding: '12px 16px', }, startIcon: { marginRight: 8, }, endIcon: { marginLeft: 8, }, }, }, }, }); const WalletContextProvider: FC<{ children: ReactNode }> = ({ children }) => { const { autoConnect } = useAutoConnect(); // Can be set to 'devnet', 'testnet', or 'mainnet-beta' const network = WalletAdapterNetwork.Devnet; // You can also provide a custom RPC endpoint const endpoint = useMemo(() => clusterApiUrl(network), [network]); const wallets = useMemo( () => [ new SolanaMobileWalletAdapter({ appIdentity: { name: 'Solana Wallet Adapter Example App' }, authorizationResultCache: createDefaultAuthorizationResultCache(), }), new PhantomWalletAdapter(), new GlowWalletAdapter(), new SlopeWalletAdapter(), new SolflareWalletAdapter({ network }), new TorusWalletAdapter(), new WalletConnectWalletAdapter({ network, options: { relayUrl: 'wss://relay.walletconnect.com', // example WC dapp project ID projectId: 'e899c82be21d4acca2c8aec45e893598', metadata: { name: 'Example Dapp', description: 'Example Dapp', url: 'https://github.com/solana-labs/wallet-adapter', icons: ['https://avatars.githubusercontent.com/u/35608259?s=200'], }, }, }), ], [] ); const { enqueueSnackbar } = useSnackbar(); const onError = useCallback( (error: WalletError) => { enqueueSnackbar(error.message ? `${error.name}: ${error.message}` : error.name, { variant: 'error' }); console.error(error); }, [enqueueSnackbar] ); return ( {children} ); }; export const ContextProvider: FC<{ children: ReactNode }> = ({ children }) => { return ( {children} ); };