MultiChainTokenInput
A token selection component that supports tokens across multiple chains.
MultiChainTokenInput
The MultiChainTokenInput component provides a token selection interface that allows users to select tokens from different chains.
Usage
import { MultiChainTokenInput } from '@avalabs/builderkit';
// Basic usage
<MultiChainTokenInput
selected={{
address: "0x1234...",
chain_id: 43114,
symbol: "AVAX"
}}
list={multiChainTokenList}
onSelectionChanged={(token) => console.log('Selected token:', token)}
showBalances={true}
/>
Props
Prop | Type | Default | Description |
---|---|---|---|
selected | { address: string, chain_id: number } & Partial<TokenItem> | - | Currently selected token with chain |
list | TokenItem[] | - | Array of tokens across all chains |
onSelectionChanged | (token: TokenItem) => void | - | Called when token selection changes |
showBalances | boolean | - | Whether to show token balances |
className | string | - | Additional CSS classes |
Features
- Token selection across multiple chains
- Chain selection interface
- Displays token with chain icon
- Shows token balances (optional)
- Searchable token list per chain
- Responsive dialog design
Examples
Basic Multi-Chain Selection
<MultiChainTokenInput
selected={currentToken}
list={allChainTokens}
onSelectionChanged={handleTokenChange}
showBalances={false}
/>
With Balances
<MultiChainTokenInput
selected={currentToken}
list={allChainTokens}
onSelectionChanged={handleTokenChange}
showBalances={true}
className="w-full max-w-sm"
/>
In a Cross-Chain Form
<form onSubmit={handleBridge}>
<div className="space-y-4">
<MultiChainTokenInput
selected={sourceToken}
list={allTokens}
onSelectionChanged={setSourceToken}
showBalances={true}
/>
<MultiChainTokenInput
selected={destinationToken}
list={allTokens.filter(t => t.chain_id !== sourceToken.chain_id)}
onSelectionChanged={setDestinationToken}
showBalances={true}
/>
<button type="submit">
Bridge
</button>
</div>
</form>
Custom Styling
<MultiChainTokenInput
selected={token}
list={tokens}
onSelectionChanged={handleTokenChange}
showBalances={true}
className="bg-gray-100 rounded-lg p-2"
/>
Component Structure
-
Trigger
- TokenChip with chain icon
- Chevron down indicator
- Click to open dialog
-
Dialog
- Header with back button
- Chain selection row
- Search input
- Chain-specific token list
- Token balances (if enabled)
Chain Selection
The component automatically extracts unique chain IDs from the token list and displays them as selectable options:
let chains = Array.from(new Set(list.map(t => t.chain_id)));
Is this guide helpful?