Files
zeekayandHanzo Dev 7d293212cb refactor: web/ is now console/ — bootnode/bootnode is the backend, bootnode/console the frontend
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]>
2026-07-26 17:47:51 -07:00

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