mirror of
https://github.com/hanzoai/bootnode.git
synced 2026-09-30 20:46:32 +00:00
Names the two halves for what they are. The repo already holds both (12407e9 merged bootnode/bootnode into this history); this makes the frontend directory say so, so the layout reads the way the owner describes the system: backend and frontend separate, one repo. git mv throughout — 187 renames, history preserved. Every path reference follows: hanzo.yml build context and dockerfile, compose.yml, compose.prod.yml, start.sh, LLM.md, infra/k8s/web-deployments.yaml, infra/cloud/deploy.sh, and the Dockerfile's own COPY paths. Image and container names (bootnode-web, the -web tag suffix) are deliberately NOT renamed here: those are a deploy contract the App CR and ingress bind to on port 3001, and breaking them is a separate, staged change. Console builds green after the move; the Go tree builds. Co-authored-by: Hanzo Dev <[email protected]>
60 lines
1.4 KiB
TypeScript
60 lines
1.4 KiB
TypeScript
"use client"
|
|
|
|
import { Badge } from "@/components/ui/badge"
|
|
import { CHAINS, type Chain } from "@/lib/chains"
|
|
|
|
const FEATURED_CHAINS = [
|
|
"ethereum",
|
|
"solana",
|
|
"base",
|
|
"arbitrum",
|
|
"polygon",
|
|
"optimism",
|
|
"avalanche",
|
|
"bnb",
|
|
"zksync",
|
|
"starknet",
|
|
"scroll",
|
|
"linea",
|
|
"blast",
|
|
"berachain",
|
|
"monad",
|
|
"lux",
|
|
]
|
|
|
|
export function ChainGrid() {
|
|
const featuredChains = FEATURED_CHAINS.map((id) =>
|
|
CHAINS.find((c) => c.id === id)
|
|
).filter(Boolean) as Chain[]
|
|
|
|
return (
|
|
<div className="mt-12 grid grid-cols-4 gap-4 sm:grid-cols-6 md:grid-cols-8">
|
|
{featuredChains.map((chain) => (
|
|
<ChainTile key={chain.id} chain={chain} />
|
|
))}
|
|
</div>
|
|
)
|
|
}
|
|
|
|
function ChainTile({ chain }: { chain: Chain }) {
|
|
return (
|
|
<div
|
|
className="group flex flex-col items-center gap-2 rounded-lg border bg-card p-4 transition-colors hover:border-foreground/20"
|
|
title={chain.description}
|
|
>
|
|
<div
|
|
className="flex h-10 w-10 items-center justify-center rounded-full text-2xl font-bold text-white"
|
|
style={{ backgroundColor: chain.color || "#6366f1" }}
|
|
>
|
|
{chain.name.charAt(0)}
|
|
</div>
|
|
<span className="text-center text-xs font-medium">{chain.name}</span>
|
|
{chain.networks.some((n) => n.isTestnet) && (
|
|
<Badge variant="secondary" className="text-[10px]">
|
|
+testnet
|
|
</Badge>
|
|
)}
|
|
</div>
|
|
)
|
|
}
|