import type { ConditionalValue } from '@chakra-ui/react'; import { Flex, Grid, chakra, useBreakpointValue } from '@chakra-ui/react'; import React from 'react'; import type { EntityProps } from 'ui/shared/entities/address/AddressEntity'; import AddressEntity from 'ui/shared/entities/address/AddressEntity'; import AddressEntityWithTokenFilter from 'ui/shared/entities/address/AddressEntityWithTokenFilter'; import AddressEntityZetaChain from '../entities/address/AddressEntityZetaChain'; import AddressFromToIcon from './AddressFromToIcon'; import { getTxCourseType } from './utils'; type Mode = 'compact' | 'long'; interface Props { from: { hash: string } | { hash: string; chainId: string; chainType: 'zeta' }; to: { hash: string } | { hash: string; chainId: string; chainType: 'zeta' } | null; current?: string; mode?: Mode | ConditionalValue; className?: string; isLoading?: boolean; tokenHash?: string; tokenSymbol?: string; truncation?: EntityProps['truncation']; noIcon?: boolean; } const AddressFromTo = ({ from, to, current, mode: modeProp, className, isLoading, tokenHash = '', tokenSymbol = '', noIcon }: Props) => { const mode = useBreakpointValue( { base: (typeof modeProp === 'object' && 'base' in modeProp ? modeProp.base : modeProp), lg: (typeof modeProp === 'object' && 'lg' in modeProp ? modeProp.lg : modeProp), xl: (typeof modeProp === 'object' && 'xl' in modeProp ? modeProp.xl : modeProp), }, ) ?? 'long'; const EntityFrom = (() => { if ('chainType' in from && from.chainType === 'zeta') { return AddressEntityZetaChain; } if (tokenHash && tokenSymbol) { return AddressEntityWithTokenFilter; } return AddressEntity; })(); const EntityTo = (() => { if (to && 'chainType' in to && to.chainType === 'zeta') { return AddressEntityZetaChain; } if (tokenHash && tokenSymbol) { return AddressEntityWithTokenFilter; } return AddressEntity; })(); const isOutgoing = current ? current.toLowerCase() === from.hash.toLowerCase() : false; const isIncoming = current ? current.toLowerCase() === to?.hash?.toLowerCase() : false; const fromChainId = 'chainType' in from && from.chainType === 'zeta' ? from.chainId : undefined; const toChainId = to && 'chainType' in to && to.chainType === 'zeta' ? to.chainId : undefined; if (mode === 'compact') { return ( { to && ( ) } ); } const iconSize = 20; return ( { to && ( ) } ); }; export default chakra(AddressFromTo);