@sei-js/react v3.2.0
@sei-js/react
A React helper library for @sei-js/core written in Typescript.
Tutorial
For an in depth tutorial, please see our documentation.
Installation
yarn add @sei-js/react
WalletProvider
The first step is to wrap your entire application in a Sei wallet provider and pass in a chainId, rest url, and rpc url.
<SeiWalletProvider
chainConfiguration={{
chainId: 'atlantic-2',
restUrl: 'https://rest.atlantic-2.seinetwork.io/',
rpcUrl: 'https://rpc.atlantic-2.seinetwork.io'
}}>
<YourApp />
</SeiWalletProvider>
Unofficial wallet providers
To connect to an unofficial wallet provider such as Keplr, simply define an object of type SeiWallet
and use it anywhere in this package.
const CUSTOM_WALLET: SeiWallet = {
getAccounts: async (chainId) => {
const offlineSigner = await window?.['keplr']?.getOfflineSignerAuto(chainId);
return offlineSigner?.getAccounts() || [];
},
connect: async (chainId) => await window?.['keplr']?.enable(chainId),
disconnect: async (chainId) => await window?.['keplr']?.disable(chainId),
getOfflineSigner: async (chainId) => window?.['keplr']?.getOfflineSignerAuto(chainId),
getOfflineSignerAmino: async (chainId) => window?.['keplr']?.getOfflineSignerAmino(chainId),
signArbitrary: async (chainId, signer, message) => window?.['keplr']?.signArbitrary(chainId, signer, message),
verifyArbitrary: async (chainId, signingAddress, data, signature) => window?.['keplr']?.verifyArbitrary(chainId, signingAddress, data, signature),
walletInfo: {
windowKey: 'keplr',
name: 'Keplr',
website: 'https://www.keplr.app/download',
icon: 'https://assets.website-files.com/63eb7ddf41cf5b1c8fdfbc74/63edd5d1a40b9a48841ac1d2_Keplr%20Logo.svg'
},
isMobileSupported: false
};
// Then pass this into <SeiWalletProvider /> if using React, or use it's functions if using node or another js library
<SeiWalletProvider wallets={['fin', 'compass', CUSTOM_WALLET]} autoconnect={CUSTOM_WALLET} />
Hooks
Hook | Params |
---|---|
useWallet | --- |
useQueryClient | (rpcAddress?: string) |
useSigningClient | (rpcAddress?: string) |
useSeiCosmWasmClient | --- |
useWallet
A hook to connect one of our supported wallets to your application.
import { useWallet } from '@sei-js/react';
const { offlineSigner, accounts, connectedWallet } = useWallet();
Return Values
Property | Type | Description |
---|---|---|
connectedWallet | string? | The currently connected wallet |
chainId | string | Sei chain id |
restUrl | string | The rest url associated with the connected wallet |
rpcUrl | string | The rpc url associated with the connected wallet |
offlineSigner | object? | The offline signer associated with the connected wallet |
accounts | object[]? | The accounts associated with the connected wallet |
useQueryClient
import { useQueryClient } from '@sei-js/react';
const { queryClient, isLoading } = useQueryClient();
Property | Type | Description |
---|---|---|
queryClient | StargateSigningClient? | A stargate signing client. |
isLoading | boolean | Boolean value for when the initial loading is happening |
useSigningClient
import { useSigningClient } from '@sei-js/react';
const { signingClient, isLoading } = useSigningClient();
Property | Type | Description |
---|---|---|
signingClient | StargateSigningClient? | A stargate signing client. |
isLoading | boolean | Boolean value for when the initial loading is happening |
useSeiCosmWasmClient
import { useSeiCosmWasmClient } from '@sei-js/react';
const { cosmWasmClient } = useSeiCosmWasmClient();
Property | Type | Description |
---|---|---|
cosmWasmClient | CosmWasmClient? | A cosm wasm client for smart contracts. |
UI Components
This package contains two helpful UI components for connecting to a wallet provider.
\
This component renders a button that will open a modal to connect to a wallet provider.
import React from "react";
import {useWallet, WalletConnectButton} from "../lib";
const Component = () => {
const { connectedWallet } = useWallet();
return (
<div>
<WalletConnectButton />
<p>Connected wallet: {connectedWallet?.walletInfo?.name || "---"}</p>
</div>
);
};
export default Component;
Property | Type | Description |
---|---|---|
wallets | SeiWallet[]? | A stargate signing client. |
buttonClassName | string | A css class name for styling the button |
primaryColor | string | A hex value of the color you want to tint the text and icons with |
secondaryColor | string | A secondary hex value of the color you want to tint the text and icons with |
backgroundColor | string | A hex value of the color you want to use as a background |
If your page has a on the page it can be opened programmatically by calling the hook "useSelectWallet"
useSelectWallet()
This hook allows you to programmatically open and close the wallet modal.
import React from "react";
import { useWallet, useSelectWallet } from "../lib";
const Component = () => {
const { connectedWallet } = useWallet();
const { openModal, closeModal } = useSelectWallet();
return (
<div>
<button onClick={openModal}>Open Modal</button>
<p>Connected wallet: {connectedWallet?.walletInfo?.name || "---"}</p>
</div>
);
};
export default Component;
Styling
This package uses Styled Components and allows you to override the theme with a primaryColor, secondaryColor, and backgroundColor to tint the text and icons.
import { ThemeProvider } from "styled-components";
// Define theme
export const theme = {
primaryColor: '#121212',
secondaryColor: '#8C8C8C',
backgroundColor: '#F1F1F1'
};
// Wrap your app in the theme provider
<ThemeProvider theme={theme}>
<YOUR_APP/>
</ThemeProvider>
Other helpful packages
- @sei-js/core - TypeScript library containing helper functions for wallet connection, transaction sig ning, and RPC querying.
- @sei-js/proto - TypeScript library for Sei protobufs generated using Telescope
5 months ago
5 months ago
8 months ago
6 months ago
7 months ago
10 months ago
10 months ago
10 months ago
10 months ago
7 months ago
8 months ago
7 months ago
5 months ago
7 months ago
6 months ago
7 months ago
9 months ago
10 months ago
8 months ago
6 months ago
6 months ago
6 months ago
5 months ago
6 months ago
8 months ago
7 months ago
8 months ago
8 months ago
8 months ago
8 months ago
7 months ago
7 months ago
6 months ago
8 months ago
7 months ago
7 months ago
7 months ago
8 months ago
8 months ago
6 months ago
6 months ago
7 months ago
5 months ago
7 months ago
6 months ago
7 months ago
8 months ago
10 months ago
8 months ago
8 months ago
8 months ago
8 months ago
9 months ago
7 months ago
7 months ago
9 months ago
5 months ago
10 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
6 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
7 months ago
6 months ago
8 months ago
6 months ago
6 months ago
9 months ago
7 months ago
7 months ago
11 months ago
11 months ago
11 months ago
11 months ago
12 months ago
11 months ago
12 months ago
12 months ago
12 months ago
11 months ago
11 months ago
11 months ago
11 months ago
12 months ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago