Input
TokenInput
A token selection component with a searchable token list and balance display.
TokenInput
The TokenInput component provides a token selection interface with a modal dialog containing a searchable list of tokens.
Usage
import { TokenInput } from '@avalabs/builderkit';
// Basic usage
<TokenInput 
  selected={{ address: "0x1234...", symbol: "AVAX" }}
  chain_id={43114}
  list={tokenList}
  onSelectionChanged={(token) => console.log('Selected token:', token)}
  showBalances={true}
/>Props
| Prop | Type | Default | Description | 
|---|---|---|---|
| selected | { address: string } & Partial<TokenItem> | - | Currently selected token | 
| chain_id | number | - | Chain ID for the token list | 
| list | TokenItem[] | - | Array of available tokens | 
| onSelectionChanged | (token: TokenItem) => void | - | Called when token selection changes | 
| showBalances | boolean | - | Whether to show token balances | 
| className | string | - | Additional CSS classes | 
Features
- Token selection through modal dialog
- Displays token icon and symbol
- Shows token balances (optional)
- Searchable token list
- Uses TokenChip for selected token display
- Responsive dialog design
Examples
Basic Token Selection
<TokenInput 
  selected={currentToken}
  chain_id={43114}
  list={availableTokens}
  onSelectionChanged={handleTokenChange}
  showBalances={false}
/>With Balances
<TokenInput 
  selected={currentToken}
  chain_id={43114}
  list={availableTokens}
  onSelectionChanged={handleTokenChange}
  showBalances={true}
  className="w-full max-w-sm"
/>In a Form
<form onSubmit={handleSwap}>
  <div className="space-y-4">
    <TokenInput 
      selected={fromToken}
      chain_id={43114}
      list={tokens}
      onSelectionChanged={setFromToken}
      showBalances={true}
    />
    <TokenInput 
      selected={toToken}
      chain_id={43114}
      list={tokens.filter(t => t.address !== fromToken.address)}
      onSelectionChanged={setToToken}
      showBalances={true}
    />
    <button type="submit">
      Swap
    </button>
  </div>
</form>Custom Styling
<TokenInput 
  selected={token}
  chain_id={43114}
  list={tokens}
  onSelectionChanged={handleTokenChange}
  showBalances={true}
  className="bg-gray-100 rounded-lg p-2"
/>Component Structure
- 
Trigger - TokenChip showing selected token
- Chevron down indicator
- Click to open dialog
 
- 
Dialog - Header with back button
- Search input
- Scrollable token list
- Token balances (if enabled)
 
Token Item Structure
type TokenItem = {
  chain_id: number;
  address: string;
  name: string;
  symbol: string;
  balance?: BigNumber;
}Is this guide helpful?