Skip to content

feat(chains): add logos for all enabled lava-specs chains - #53

Merged
nimrod-teich merged 2 commits into
mainfrom
feat/chain-logos-lava-specs
Jun 2, 2026
Merged

nimrod-teich merged 2 commits into
mainfrom
feat/chain-logos-lava-specs

Conversation

@nimrod-teich

Copy link
Copy Markdown
Contributor

Summary

  • Closes the chain-logo gap against the lava-specs chain list: every enabled, non-infra spec index now resolves to a real icon (121 chains, up from 34 logos).
  • 29 new official brand SVGs added under apps/web/public/chains/: celestia, osmosis, injective, scroll, zksync, ton, tezos, ripple, litecoin, dogecoin, casper, iota, juno, secret, stride, mantle, manta-pacific, polkadot, worldchain, canto, agoric, koii, elys, namada, fuel, kakarot, berachain, eth-beacon, side.
  • 27 aliases added to getChainIconFilename so testnet/variant indexes reuse their mainnet logo (e.g. celestiata/celestiatm→celestia, suit→sui, lav1→lava, monadt→monad, cardanot→cardano, zksyncsp→zksync).

Why no consumer changes

The icon resolver (packages/shared/src/utils/chain-icons.ts) is convention + alias driven — its own doc comment notes "new chains work automatically if a {specId}.svg is added." Every consumer (/chains, /chain/[specid], provider pages, SearchBar, ChainLink, ChainSelect, and the API's /specs//lava/APR routes) flows through getChainIcon/getChainIconUrl, and the web <img> tags fall back to a lettered chip via onError. So this PR only upgrades placeholders to real logos.

Sources

Official/widely-used SVGs from cosmos chain-registry, web3icons, spothq/cryptocurrency-icons, and project brand kits. Fuel's wide wordmark was swapped for a square logomark to match the icon grid.

Test plan

  • pnpm typecheck — clean across all 3 packages
  • pnpm --filter @info/web test chain-icons — 5/5 pass (added new-chain + alias cases)
  • Verified 0 unresolved enabled chains and 0 dangling alias targets by parsing the real alias map against the on-disk files.

Notes

  • eth-beacon uses the standard ETH mark (no distinct beacon SVG existed); polkadotassethub uses the Polkadot brand mark.
  • Coverage is against the current lava-specs snapshot; chains Lava adds later will show the letter-chip fallback until their logo is added (self-healing, no breakage).

Fill the chain-logo gap against the lava-specs chain list. Every enabled,
non-infra spec index now resolves to an icon (121 chains, was 34 logos).

- Add 29 real/official brand SVGs (celestia, osmosis, injective, scroll,
  zksync, ton, tezos, ripple, litecoin, dogecoin, casper, iota, juno,
  secret, stride, mantle, manta-pacific, polkadot, worldchain, canto,
  agoric, koii, elys, namada, fuel, kakarot, berachain, eth-beacon, side).
- Add 27 aliases so testnet/variant indexes reuse their mainnet logo
  (e.g. celestiata/celestiatm -> celestia, suit -> sui, lav1 -> lava,
  monadt -> monad, cardanot -> cardano, zksyncsp -> zksync).
- Extend chain-icons tests with new-chain and alias cases.

No consumer changes: the resolver is convention + alias driven, so adding
files and aliases is the intended extension point. Icons still fall back
to a lettered chip via onError for any chain not yet covered.
The initial mantle.svg was a spiky-asterisk mark (wrong); casper.svg was a
'CSPR name' wordmark with an odd orbit glyph (wrong).

- mantle.svg -> official segmented-aperture mark (SmolDapp tokenAssets, chainId 5000)
- casper.svg -> official dotted-C mark (web3icons CSPR)

Both visually verified rendered on a dark background.
@nimrod-teich
nimrod-teich merged commit 7cf04c0 into main Jun 2, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant