import { useQuery } from "@tanstack/react-query"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { ExternalLink } from "lucide-react"; import { SmartContract } from "@/types/blockchain"; interface SmartContractStatusProps { expanded?: boolean; } export function SmartContractStatus({ expanded = false }: SmartContractStatusProps) { const { data: contracts = [], isLoading } = useQuery({ queryKey: ['/api/contracts'], refetchInterval: 10000, // Refresh every 10 seconds }); const getStatusBadge = (status: string) => { switch (status) { case 'active': return Active; case 'deploying': return Deploying; case 'error': return Error; default: return Unknown; } }; if (isLoading) { return ( Smart Contracts
{[...Array(4)].map((_, i) => (
))}
); } return ( Smart Contracts {contracts.length === 0 ? (

No smart contracts deployed

) : ( contracts.map((contract: SmartContract) => (

{contract.name}

{contract.address.substring(0, 20)}...

{expanded && (

Deployed by: {contract.deployedBy}

Gas used: {contract.gasUsed?.toLocaleString() || 'N/A'}

Block: #{contract.blockNumber || 'N/A'}

Deployed: {new Date(contract.deployedAt).toLocaleDateString()}

)}
{getStatusBadge(contract.status)}
)) )}
); }