Getting Started Mesh React Components

Frontend components for wallet connections, and useful React hooks to getting wallet states - Mesh provides everything you need to bring your Web3 user interface to life.

Mesh provide a collection of useful UI components, so you can easily include web3 functionality and convenient utilities for your application.

Install

To start, install:

Next, add the Mesh CSS to your application, doing so will apply the default styles to the components:

Mesh Provider

React Context allows apps to share data across the app, and MeshProvider allows your app to subscribe to context changes. If you use the CLI to initialize your project, MeshProvider has been added in the root component. Otherwise, you can wrap MeshProvider at the root of your application, for example in Next.js:

Now your application is ready, explore the available UI components and wallet hooks and start using them in your application.

Connect Wallet

In order for dApps to communicate with the user's wallet, we need a way to connect to their wallet.

Add this CardanoWallet to allow the user to select a wallet to connect to your dApp. After the wallet is connected, see Browser Wallet for a list of CIP-30 APIs.

The signature for the CardanoWallet component is as follows:

Customization

For dark mode style, add isDark.

For a custom label, add the label prop.

The customization is limited. For more customization, you can easily build your own wallet connection component. If you are using React, the React hooks will be useful. You may also take reference from this component.

onConnected

If you want to run a function after the wallet is connected, you can add the onConnected prop.

The above code will log "Hello, World!" to the console when the wallet is connected.

MetaMask Snaps

You can define the NuFi network to connect to by adding the network prop.

This will connect to the preprod network. For the mainnet network, use mainnet.

You can also define a custom network by passing a URL string to the network prop.

CIP 95

You can also provide an extensions object to enable specific CIPs. For example, to enable CIP95, you would pass:

Connect Wallet Component

Connect to user's wallet to interact with dApp

No Wallet Found

useWallet Hook

Provide information on the current wallet's state, and functions for connecting and disconnecting user wallet.

wallet is a Browser Wallet instance, which expose all CIP wallets functions from getting assets to signing tranasction.

connected, a boolean, true if user's wallet is connected.

name, a string, the name of the connect wallet.

connecting, a boolean, true if the wallet is connecting and initializing.

connect(walletName: string), a function, provide the wallet name to connect wallet. Retrive a list of available wallets with useWalletList().

disconnect(), a function, to disconnect the connected wallet.

error, returns the error object if any error occurs during wallet connection, such as "account not set".

useWallet Hook

Interact with user's wallet

No Wallet Found

Connected?: Not connected

Connecting wallet?: No

Name of connected wallet: