import React from "react"; import { NavLink } from "react-router-dom"; import TokenLogo from "./TokenLogo"; import { ResolvedAddressRenderer } from "../api/address-resolver/address-resolver"; import { TokenMeta } from "../types"; type TokenNameProps = { chainId: number; address: string; name: string; symbol: string; linkable: boolean; dontOverrideColors?: boolean; }; const TokenName: React.FC<TokenNameProps> = ({ chainId, address, name, symbol, linkable, dontOverrideColors, }) => { if (linkable) { return ( <NavLink className={`flex items-baseline space-x-1 font-sans ${ dontOverrideColors ? "" : "text-link-blue hover:text-link-blue-hover" } truncate`} to={`/address/${address}`} title={`${name} (${symbol}): ${address}`} > <Content chainId={chainId} address={address} linkable={true} name={name} symbol={symbol} /> </NavLink> ); } return ( <div className="flex items-baseline space-x-1 font-sans text-gray-700 truncate" title={`${name} (${symbol}): ${address}`} > <Content chainId={chainId} address={address} linkable={false} name={name} symbol={symbol} /> </div> ); }; type ContentProps = { chainId: number; address: string; name: string; symbol: string; linkable: boolean; }; const Content: React.FC<ContentProps> = ({ chainId, address, name, symbol, linkable, }) => ( <> <div className={`self-center w-5 h-5 ${linkable ? "" : "filter grayscale"}`} > <TokenLogo chainId={chainId} address={address} name={name} /> </div> <span className="truncate"> {name} ({symbol}) </span> </> ); export const tokenRenderer: ResolvedAddressRenderer<TokenMeta> = ( chainId, address, tokenMeta, linkable, dontOverrideColors ) => ( <TokenName chainId={chainId} address={address} name={tokenMeta.name} symbol={tokenMeta.symbol} linkable={linkable} dontOverrideColors={dontOverrideColors} /> ); export default TokenName;