import React from 'react'; import { View, Text, Pressable } from 'react-native'; import type { AlgorandAccount, ComponentSize } from '../types/algorand'; import { formatAddress, formatCurrency, formatRelativeTime } from '../utils/format'; import { CopyButton } from '../ui/CopyButton'; import { SizeContainer } from '../ui/SizeContainer'; import Svg, { Circle as SvgCircle, Path } from 'react-native-svg'; function OnlineIndicator({ isOnline, size = 8 }: { isOnline: boolean; size?: number }) { return ( ); } function ExternalLinkIcon({ size = 16, color = '#a1a1aa' }: { size?: number; color?: string }) { return ( ); } interface AccountProps { data: AlgorandAccount; showAssets?: boolean; showApps?: boolean; compact?: boolean; size?: ComponentSize; className?: string; onExternalLink?: (address: string) => void; } export function Account({ data: account, showAssets = false, showApps = false, compact = false, size = 'full', className, onExternalLink, }: AccountProps) { if (compact) { return ( {formatAddress(account.address)} ); } const isFullscreen = size === 'fullscreen'; return ( {/* Header */} {account.isOnline ? 'Online' : 'Offline'} {formatAddress(account.address)} {onExternalLink && ( onExternalLink(account.address)} className="p-1.5 rounded-lg" hitSlop={8}> )} {/* Balance */} {formatCurrency(account.balance / 1_000_000)} Balance - Round #{account.round.toLocaleString()} {/* Stats */} {account.assets.length} Assets {account.apps.length} Apps {/* Created Date */} Created {formatRelativeTime(account.createdAt)} {/* Assets List */} {showAssets && account.assets.length > 0 && ( Assets ({account.assets.length}) {account.assets.slice(0, 3).map((asset) => ( {asset.name} {asset.unitName} ))} {account.assets.length > 3 && ( +{account.assets.length - 3} more )} )} ); }