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
)}
)}
);
}