核心包
pnpm add @lifi/widget-light
yarn add @lifi/widget-light
npm install @lifi/widget-light
bun add @lifi/widget-light
生态系统依赖
为你想要支持的每个区块链生态系统安装对等依赖。你只需要安装应用实际用到的生态系统。EVM(Ethereum)
pnpm add @lifi/widget-light wagmi viem @wagmi/core @tanstack/react-query
yarn add @lifi/widget-light wagmi viem @wagmi/core @tanstack/react-query
npm install @lifi/widget-light wagmi viem @wagmi/core @tanstack/react-query
bun add @lifi/widget-light wagmi viem @wagmi/core @tanstack/react-query
Solana
pnpm add @lifi/widget-light @wallet-standard/base
yarn add @lifi/widget-light @wallet-standard/base
npm install @lifi/widget-light @wallet-standard/base
bun add @lifi/widget-light @wallet-standard/base
Bitcoin
pnpm add @lifi/widget-light @bigmi/client @bigmi/react
yarn add @lifi/widget-light @bigmi/client @bigmi/react
npm install @lifi/widget-light @bigmi/client @bigmi/react
bun add @lifi/widget-light @bigmi/client @bigmi/react
Sui
pnpm add @lifi/widget-light @mysten/dapp-kit-react
yarn add @lifi/widget-light @mysten/dapp-kit-react
npm install @lifi/widget-light @mysten/dapp-kit-react
bun add @lifi/widget-light @mysten/dapp-kit-react
Tron
Tron 处理器与具体库无关 — 你需要显式传入钱包状态。使用该 API 只需要@lifi/widget-light。如果你按照文档记录的方式使用 @tronweb3/tronwallet-adapter-react-hooks 进行集成,请将其与核心包一起安装:
pnpm add @lifi/widget-light @tronweb3/tronwallet-adapter-react-hooks
yarn add @lifi/widget-light @tronweb3/tronwallet-adapter-react-hooks
npm install @lifi/widget-light @tronweb3/tronwallet-adapter-react-hooks
bun add @lifi/widget-light @tronweb3/tronwallet-adapter-react-hooks
所有生态系统
一次性安装所有内容:pnpm add @lifi/widget-light wagmi viem @wagmi/core @tanstack/react-query @wallet-standard/base @bigmi/client @bigmi/react @mysten/dapp-kit-react @tronweb3/tronwallet-adapter-react-hooks
yarn add @lifi/widget-light wagmi viem @wagmi/core @tanstack/react-query @wallet-standard/base @bigmi/client @bigmi/react @mysten/dapp-kit-react @tronweb3/tronwallet-adapter-react-hooks
npm install @lifi/widget-light wagmi viem @wagmi/core @tanstack/react-query @wallet-standard/base @bigmi/client @bigmi/react @mysten/dapp-kit-react @tronweb3/tronwallet-adapter-react-hooks
bun add @lifi/widget-light wagmi viem @wagmi/core @tanstack/react-query @wallet-standard/base @bigmi/client @bigmi/react @mysten/dapp-kit-react @tronweb3/tronwallet-adapter-react-hooks
快速入门 — 仅 EVM(wagmi)
这是使用 wagmi 面向 EVM 链的最小设置。它假设你的应用中已经配置了 wagmi provider。1. 配置你的钱包 provider
像平常一样设置 wagmi。Widget Light 会从你现有的 wagmi 上下文中读取钱包状态。// providers/WalletProvider.tsx
import type { FC, PropsWithChildren } from 'react'
import { createClient, http } from 'viem'
import { arbitrum, base, mainnet, optimism, polygon } from 'viem/chains'
import { createConfig, WagmiProvider } from 'wagmi'
import { injected } from 'wagmi/connectors'
const config = createConfig({
chains: [mainnet, arbitrum, optimism, base, polygon],
connectors: [injected()],
client({ chain }) {
return createClient({ chain, transport: http() })
},
multiInjectedProviderDiscovery: true,
ssr: false,
})
export const WalletProvider: FC<PropsWithChildren> = ({ children }) => (
<WagmiProvider config={config}>{children}</WagmiProvider>
)
2. 设置 provider 树
// main.tsx
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import React from 'react'
import ReactDOM from 'react-dom/client'
import { App } from './App'
import { WalletProvider } from './providers/WalletProvider'
const queryClient = new QueryClient()
ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
<QueryClientProvider client={queryClient}>
<WalletProvider>
<App />
</WalletProvider>
</QueryClientProvider>
</React.StrictMode>
)
3. 渲染 widget
// App.tsx
import { LiFiWidgetLight } from '@lifi/widget-light'
import type { WidgetLightConfig } from '@lifi/widget-light'
import { useEthereumIframeHandler } from '@lifi/widget-light/ethereum'
import { useMemo } from 'react'
const widgetConfig: WidgetLightConfig = {
integrator: 'your-project-name',
variant: 'wide',
theme: {
container: {
border: '1px solid rgb(234, 234, 234)',
borderRadius: '16px',
},
},
}
export function App() {
const ethHandler = useEthereumIframeHandler()
const handlers = useMemo(() => [ethHandler], [ethHandler])
return (
<LiFiWidgetLight
config={widgetConfig}
handlers={handlers}
autoResize
/>
)
}
完整的多生态系统设置
要在支持 EVM 的同时支持 Solana、Bitcoin、Sui 和 Tron,请安装额外的处理器对等依赖,并将所有处理器传递给 widget。import { LiFiWidgetLight } from '@lifi/widget-light'
import type { WidgetLightConfig } from '@lifi/widget-light'
import { useEthereumIframeHandler } from '@lifi/widget-light/ethereum'
import { useSolanaIframeHandler } from '@lifi/widget-light/solana'
import { useBitcoinIframeHandler } from '@lifi/widget-light/bitcoin'
import { useSuiIframeHandler } from '@lifi/widget-light/sui'
import { useTronIframeHandler } from '@lifi/widget-light/tron'
import { useMemo } from 'react'
const widgetConfig: WidgetLightConfig = {
integrator: 'your-project-name',
variant: 'wide',
}
export function App() {
// EVM -- reads wallet state from wagmi context automatically
const ethHandler = useEthereumIframeHandler()
// Solana -- pass wallet state explicitly (library-agnostic)
const solHandler = useSolanaIframeHandler({
address: solanaAddress, // string | null
connected: solanaConnected, // boolean
wallet: solanaWallet, // Wallet from @wallet-standard/base | null
})
// Bitcoin -- reads from @bigmi/react context automatically
const btcHandler = useBitcoinIframeHandler()
// Sui -- reads from @mysten/dapp-kit-react context automatically
const suiHandler = useSuiIframeHandler()
// Tron -- pass wallet state explicitly (library-agnostic)
const tronHandler = useTronIframeHandler({
address: tronAddress, // string | null
connected: tronConnected, // boolean
adapter: tronAdapter, // TronAdapter | null
})
const handlers = useMemo(
() => [ethHandler, solHandler, btcHandler, suiHandler, tronHandler],
[ethHandler, solHandler, btcHandler, suiHandler, tronHandler]
)
return (
<LiFiWidgetLight
config={widgetConfig}
handlers={handlers}
autoResize
/>
)
}
只包含你需要的处理器。如果你只支持 EVM 和 Solana,则传入
[ethHandler, solHandler]。未使用的生态系统包会被完全从你的 bundle 中 tree-shake 掉。TypeScript 支持
Widget Light 使用 TypeScript 编写,并提供完整的类型定义。所有配置选项、事件 payload 和处理器接口都是完全类型化的:import type { WidgetLightConfig } from '@lifi/widget-light'
const config: WidgetLightConfig = {
// TypeScript will provide autocomplete and type checking
integrator: 'my-dapp',
appearance: 'dark',
variant: 'wide',
}

