WDK logoWDK documentation

Components List

Complete API reference for all WDK React Native UI Kit components

Component List

ComponentDescription
AmountInputNumeric input with token/fiat toggle, balance helper and Max action
AssetSelectorToken search & pick list with recent items and empty states
NetworkSelectorNetwork picker with gas level indicators and colors
BalanceDisplays a balance value with optional masking and custom loader
CryptoAddressInputAddress input with QR scan and paste helpers, validation state
QRCodeQR renderer for addresses/payment requests with labeling and styling
TransactionItemSingle transaction row (sent/received) with token, amounts, network
TransactionListVirtualized list of transactions using TransactionItem
SeedPhraseGrid of seed words with optional editing and loading states

AmountInput

Numeric input component with token/fiat toggle, balance display, and Max functionality.

AmountInput - dark theme
AmountInput (dark theme)

Props

PropTypeRequiredDefaultDescription
labelstringNo'Enter Amount'Field label
valuestringYesAmount text value
onChangeText(text: string) => voidYesCalled when text changes
tokenSymbolstringYesToken code, e.g. 'ETH', 'BTC'
tokenBalancestringYesToken balance (e.g. '1.23')
tokenBalanceUSDstringYesBalance in fiat (e.g. '$4200.00')
inputMode'token' | 'fiat'YesCurrent input mode
onToggleInputMode() => voidYesSwitch between token/fiat modes
onUseMax() => voidYesFill with maximum available amount
errorstringNoError message to display
editablebooleanNotrueWhether input is editable

Example

AmountInput Usage
import { AmountInput } from '@tetherto/wdk-uikit-react-native'

function SendAmount({ amount, balance, onAmountChange }) {
  return (
    <AmountInput
      label="Enter Amount"
      tokenSymbol="ETH"
      value={amount}
      onChangeText={onAmountChange}
      tokenBalance={balance.toString()}
      tokenBalanceUSD="$2,500.00"
      inputMode="token"
      onToggleInputMode={() => {/* Switch mode */}}
      onUseMax={() => onAmountChange(balance.toString())}
    />
  )
}

AssetSelector

Token selection component with search functionality and recent tokens.

Asset Selector - dark theme
AssetSelector (dark theme)

Props

PropTypeRequiredDefaultDescription
tokensToken[]YesFull list of tokens to display/filter
recentTokensstring[]YesArray of recent token names for Recent row
onSelectToken(token: Token) => voidYesCalled when user selects a token

Token Type

Token Interface
type Token = {
  id: string
  symbol: string
  name: string
  balance: string
  balanceUSD: string
  icon: ImageSourcePropType
  color: string
  network?: string
  hasBalance: boolean
}

Example

AssetSelector Usage
import { AssetSelector } from '@tetherto/wdk-uikit-react-native'

function TokenPicker({ tokens, recentTokens, onTokenSelect }) {
  return (
    <AssetSelector
      tokens={tokens}
      recentTokens={recentTokens}
      onSelectToken={onTokenSelect}
    />
  )
}

Balance

Display component for showing balance values with optional masking and loading states.

Balance - dark theme
Balance (dark theme)
Balance amount hide - dark theme
Balance amount hide (dark theme)

Props

PropTypeRequiredDefaultDescription
valuenumberNo0Balance number value
isLoadingbooleanNofalseShow loading state
LoaderReact.ComponentTypeNoCustom loader component
showHidebooleanNotrueToggle hide/show balance functionality
currencystringNo'USD'Currency label
EyeOpenIconReact.ComponentTypeNodefaultIcon shown when balance is hidden
EyeClosedIconReact.ComponentTypeNodefaultIcon shown when balance is visible

Example

Balance Usage
import { Balance } from '@tetherto/wdk-uikit-react-native'

function WalletBalance({ balance, currency, isLoading }) {
  return (
    <Balance 
      value={balance} 
      currency={currency}
      isLoading={isLoading}
      showHide={true}
    />
  )
}

CryptoAddressInput

Address input component with QR scanning and paste functionality.

Crypto Address Input - dark theme
CryptoAddressInput (dark theme)

Props

PropTypeRequiredDefaultDescription
labelstringNo'Recipient Address'Field label
valuestringYesAddress text value
onChangeText(text: string) => voidYesCalled when text changes
placeholderstringNo'T08p3BGPIuh1l934IIflu....Kc2GXhKc'Placeholder text
onPaste() => voidNoPaste action handler
onQRScan() => voidNoOpen QR scanner handler
editablebooleanNotrueWhether input is editable
errorstringNoError message to display

Example

CryptoAddressInput Usage
import { CryptoAddressInput } from '@tetherto/wdk-uikit-react-native'

function AddressInput({ address, onAddressChange, onQRScan }) {
  return (
    <CryptoAddressInput
      label="Recipient Address"
      value={address}
      onChangeText={onAddressChange}
      onQRScan={onQRScan}
      placeholder="Enter wallet address..."
      error={addressError}
    />
  )
}

QRCode

QR code renderer for addresses and payment requests.

QR Code - dark theme
QRCode (dark theme)

Props

PropTypeRequiredDefaultDescription
valuestringYesData to encode in QR code
sizenumberNo200QR code side length in pixels
colorstringNotheme.primaryDot color
backgroundColorstringNo'transparent'Background color behind QR code
labelstringNoOptional title above QR code
containerStyleViewStyleNoWrapper style
labelStyleanyNoStyle for label text

Example

QRCode Usage
import { QRCode } from '@tetherto/wdk-uikit-react-native'

function AddressQR({ address }) {
  return (
    <QRCode
      value={address}
      size={250}
      label="Scan to receive"
      color="#000000"
      backgroundColor="#FFFFFF"
    />
  )
}

TransactionItem

Single transaction row component for displaying transaction details.

Transaction Item - dark theme
TransactionItem (dark theme)

Props

PropTypeRequiredDefaultDescription
transactionTransactionYesTransaction data object
onPress() => voidNoRow press handler

Transaction Type

Transaction Interface
type Transaction = {
  id: string
  token: string
  amount: string
  fiatAmount: string
  fiatCurrency: string
  network: string
  type: 'sent' | 'received'
}

Example

TransactionItem Usage
import { TransactionItem } from '@tetherto/wdk-uikit-react-native'

function TransactionRow({ transaction, onPress }) {
  return (
    <TransactionItem
      transaction={transaction}
      onPress={onPress}
    />
  )
}

TransactionList

Virtualized list component for displaying multiple transactions.

Transaction List - dark theme
TransactionList (dark theme)

Props

PropTypeRequiredDefaultDescription
transactionsTransaction[]YesArray of transaction objects

Example

TransactionList Usage
import { TransactionList } from '@tetherto/wdk-uikit-react-native'

function TransactionHistory({ transactions }) {
  return (
    <TransactionList 
      transactions={transactions}
    />
  )
}

NetworkSelector

Network selection component with gas level indicators.

Props

PropTypeRequiredDefaultDescription
networksNetwork[]YesArray of available networks
onSelectNetwork(network: Network) => voidYesCalled when network is selected

Network Type

Network Interface
type Network = {
  id: string
  name: string
  gasLevel: 'High' | 'Normal' | 'Low'
  gasColor: string
  icon: string | any
  color: string
}

Example

NetworkSelector Usage
import { NetworkSelector } from '@tetherto/wdk-uikit-react-native'

function NetworkPicker({ networks, onNetworkSelect }) {
  return (
    <NetworkSelector
      networks={networks}
      onSelectNetwork={onNetworkSelect}
    />
  )
}

SeedPhrase

Grid component for displaying and editing seed phrase words.

Props

PropTypeRequiredDefaultDescription
wordsstring[]YesArray of seed words (12/24, etc.)
editablebooleanNofalseAllow editing of word inputs
onWordChange(index: number, word: string) => voidNoCalled when word is edited
onKeyPress(index: number, key: string) => voidNoHandle key press events
isLoadingbooleanNofalseShow loading/generating state

Example

SeedPhrase Usage
import { SeedPhrase } from '@tetherto/wdk-uikit-react-native'

function WalletBackup({ seedWords, editable, onWordChange }) {
  return (
    <SeedPhrase
      words={seedWords}
      editable={editable}
      onWordChange={onWordChange}
      isLoading={false}
    />
  )
}

Next Steps


Need Help?

On this page