import { useParams, Link } from 'react-router-dom'; import { Box, Clock, ArrowUpRight, Layers, Activity, Zap } from 'lucide-react'; import { useBlock } from '../hooks/useApi'; import TransactionList from '../components/TransactionList'; import CopyButton from '../components/CopyButton'; import BlockRelationshipDiagram from '../components/BlockRelationshipDiagram'; import { formatDateTime, truncateHash } from '../lib/utils'; export default function Block() { const { hash } = useParams<{ hash: string }>(); const { data: block, isLoading, error } = useBlock(hash || ''); if (!hash) { return
Block hash is required
; } if (isLoading) { return ; } if (error) { return (
Error loading block: {error.message}
); } if (!block) { return
Block not found
; } return (
{/* Modern Header */}
{/* Background glow */}

Block Details

Blue Score: {block.blueScore.toLocaleString()} {block.isChainBlock && ( Chain Block )}
{/* Quick stats */}
Transactions
{block.transactionCount}
{/* Block Relationship Diagram */} {/* Block Info Card */}

Block Information

{block.hash}
{formatDateTime(block.timestamp)}
{block.blueScore.toLocaleString()} {block.daaScore.toLocaleString()} {block.difficulty.toLocaleString()} {block.transactionCount} {block.version} {block.nonce.toLocaleString()} {block.blueWork}
{/* Parent Blocks */} {block.parentHashes.length > 0 && (

Parent Blocks ({block.parentHashes.length})

{block.parentHashes.map((parentHash, i) => (
{i === 0 && ( Selected )} {truncateHash(parentHash, 16, 16)}
))}
)} {/* Child Blocks */} {block.childrenHashes.length > 0 && (

Child Blocks ({block.childrenHashes.length})

{block.childrenHashes.map((childHash) => (
{truncateHash(childHash, 16, 16)}
))}
)} {/* Transactions */} {block.transactions && block.transactions.length > 0 && ( )}
); } function InfoRow({ label, children }: { label: string; children: React.ReactNode }) { return (
{label} {children}
); } function BlockSkeleton() { return (
{Array.from({ length: 8 }).map((_, i) => (
))}
); }