import React from 'react'; import { View, Text, Pressable } from 'react-native'; import { Image } from 'expo-image'; import Svg, { Path } from 'react-native-svg'; import type { ASA as ASAType, ComponentSize } from '../types/algorand'; import { formatNumber, formatAssetAmount, formatRelativeTime } from '../utils/format'; import { CopyButton } from '../ui/CopyButton'; import { SizeContainer } from '../ui/SizeContainer'; function ShieldIcon({ size = 16, color = '#60a5fa' }: { size?: number; color?: string }) { return ( ); } function LockIcon({ size = 16, color = '#fb923c' }: { size?: number; color?: string }) { return ( ); } function UnlockIcon({ size = 16, color = '#a1a1aa' }: { size?: number; color?: string }) { return ( ); } function CalendarIcon({ size = 12, color = '#71717a' }: { size?: number; color?: string }) { return ( ); } interface ASAProps { data: ASAType; showDetails?: boolean; compact?: boolean; size?: ComponentSize; className?: string; imageUrl?: string; } export function ASAComponent({ data: asset, showDetails = false, compact = false, size = 'full', className, imageUrl, }: ASAProps) { const isNFT = asset.total === 1 && asset.decimals === 0; if (compact) { return ( {imageUrl && ( )} {asset.verified && } {asset.unitName} {asset.price !== undefined && ( ${asset.price} )} ); } const isFullscreen = size === 'fullscreen'; return ( {/* NFT Image */} {isNFT && imageUrl && ( NFT {asset.verified && ( )} )} {/* Regular Asset Header */} {!isNFT && ( {imageUrl && ( )} {asset.name} {asset.verified && } {asset.defaultFrozen && } {asset.unitName} - #{asset.id} )} {/* NFT Title */} {isNFT && ( {asset.name} {asset.unitName} - #{asset.id} )} {/* Stats */} {asset.price !== undefined && ( ${formatNumber(asset.price)} Price (USD) )} {formatAssetAmount(asset.total, asset.decimals)} Supply {asset.decimals} Decimals {/* Details */} {showDetails && ( Asset Details Default Frozen {asset.defaultFrozen ? ( <> Yes ) : ( <> No )} Creator {asset.creator.slice(0, 8)}... {asset.url && ( URL {asset.url} )} )} {/* Created Date */} Created {formatRelativeTime(asset.createdAt)} ); }