import React from 'react'
import { useTranslation } from 'react-i18next'
import { StyleSheet, Text, View, ViewStyle } from 'react-native'
import TokenDisplay from 'src/components/TokenDisplay'
import TokenIcon from 'src/components/TokenIcon'
import Touchable from 'src/components/Touchable'
import Warning from 'src/icons/Warning'
import { NETWORK_NAMES } from 'src/shared/conts'
import colors from 'src/styles/colors'
import { typeScale } from 'src/styles/fonts'
import { Spacing } from 'src/styles/styles'
import { TokenBalance } from 'src/tokens/slice'
interface Props {
token: TokenBalance
balanceUsdErrorFallback?: string
onPress?: () => void
containerStyle?: ViewStyle
showPriceUsdUnavailableWarning?: boolean
hideBalances?: boolean
}
export const TokenBalanceItem = ({
token,
onPress,
containerStyle,
balanceUsdErrorFallback,
showPriceUsdUnavailableWarning,
hideBalances = false,
}: Props) => {
const { t } = useTranslation()
const Content = (
{token.name}
{showPriceUsdUnavailableWarning && !token.priceUsd && }
{!hideBalances && (
)}
{token.networkId in NETWORK_NAMES ? (
{t('assets.networkName', { networkName: NETWORK_NAMES[token.networkId] })}
) : (
)}
{!hideBalances && (
)}
{!!token.bridge && (
{t('assets.bridge', { bridge: token.bridge })}
)}
)
return onPress ? (
{Content}
) : (
Content
)
}
const styles = StyleSheet.create({
container: {
marginHorizontal: Spacing.Thick24,
marginVertical: Spacing.Regular16,
flexDirection: 'row',
alignItems: 'center',
flex: 1,
gap: Spacing.Small12,
},
line: {
flexDirection: 'row',
alignSelf: 'flex-end',
justifyContent: 'space-between',
width: '100%',
gap: Spacing.Smallest8,
},
amount: {
...typeScale.labelMedium,
},
subAmount: {
...typeScale.bodySmall,
color: colors.contentSecondary,
},
label: {
...typeScale.labelMedium,
overflow: 'hidden',
flexShrink: 1,
marginRight: Spacing.Smallest8,
},
subLabel: {
...typeScale.bodySmall,
overflow: 'hidden',
flexShrink: 1,
color: colors.contentSecondary,
},
bridgeLabel: {
...typeScale.labelSmall,
color: colors.contentSecondary,
overflow: 'hidden',
flexShrink: 1,
},
textContainer: {
flex: 1,
gap: 2,
},
row: {
flexDirection: 'row',
alignItems: 'center',
flex: 1,
},
})