import * as Select from '@radix-ui/react-select'
import './TokenSelect.css'
import { Loader } from '@/components/Loader'
import { useFetchTokens } from '@/features/Web3/hooks/useFetchTokens'
import { $selectedToken } from '@/features/Web3/stores'
import { Icon as ChevronDown } from '@/images/components/react/ChevronDown'
import { Icon as ChevronsDown } from '@/images/components/react/ChevronsDown'
import { Icon as ChevronsUp } from '@/images/components/react/ChevronsUp'
import { useStore } from '@nanostores/react'
import { useEffect } from 'react'
import { useAccount } from 'wagmi'
import { Token } from './Token'
export function TokenSelect() {
const { address } = useAccount()
const { data: tokens, isLoading } = useFetchTokens()
const selectedToken = useStore($selectedToken)
const items = tokens?.map((token) => (
))
function handleValueChange(value: `0x${string}`) {
const token = tokens?.find((token) => token.address === value)
if (!token) return
$selectedToken.set(token)
}
// Auto-select native token
// when no selection was made yet
// biome-ignore lint/correctness/useExhaustiveDependencies:
useEffect(() => {
if (selectedToken?.address || !tokens || !tokens?.length) return
// select ETH mainnet token
handleValueChange('0x0-1')
}, [tokens, selectedToken])
return tokens && address ? (
handleValueChange(value)}
disabled={isLoading}
name="selectedToken"
>
In Your Wallet
{items}
) : isLoading ? (
) : null
}