You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
RailDropdown renders /networks/${network.toLowerCase()}.svg for every entry with no error handling, and three of the eight networks in crypto.ts have no asset: ethereum, plasma, tron. Those rows show a broken image next to the network name.
Three lines: an onError that hides the image.
networks referenced: base ethereum lightning plasma polygon solana spark tron
icons present: base bitcoin lightning polygon solana spark
missing: ethereum plasma tron
USDT has carried three broken rows for a while. #792 added Ethereum to USDC, which put the first one on a dropdown that had been clean — that's what surfaced it.
Why hide rather than supply the artwork. An Ethereum or Tron mark is brand material, and inventing one that doesn't match the existing set is worse than a gap. The three assets are still worth adding; this just stops the UI looking broken until they are.
Why visibility rather than display..networkMenuIcon is a fixed 20×20 flex item, so hiding it preserves the slot and the network names stay left-aligned down the list. display: none would make rows ragged depending on which icons happen to exist.
What I did not include, and why
This branch was going to carry the duplicate code: 'USD' fix as well — currencies.ts has two entries with that code (United States Dollar, and US Dollar (El Salvador)), so currencies.find(c => c.code === 'USD') never reaches the El Salvador entry and the picker builds two items with the same id, making it effectively unselectable.
Mapping it out, that is not a small fix. It needs selections re-keyed from code to accountType across roughly ten lookup sites in five files — CurrencyPicker.lookupSelection, getRailsText, three lookups in InputCard, three in useFlowBuilder including getDefaultRail's signature, code-generator, flow-path — plus POPULAR_CODES, which matches item ids. isSameCurrency also needs a decision, since two USD entries are the same currency on different rails.
All of that lands in .tsx files I cannot typecheck in this environment — npm ci fails in components/grid-visualizer because @central-icons-react requires CENTRAL_LICENSE_KEY, so React types are unavailable. Shipping a ten-site refactor unverified seemed like the wrong trade, so it wants its own PR from someone with a working build.
Verification
Missing-icon list derived mechanically by diffing public/networks/ against the network values in crypto.ts
.networkMenuIcon confirmed to have fixed dimensions, so visibility: hidden is layout-stable
Not verified: no build or render check, for the reason above. The Vercel preview is the real check — worth opening the USDC and USDT rail dropdowns to confirm the rows align with the icons absent.
The rail dropdown renders /networks/<network>.svg for every entry with
no error handling, and three of the eight networks in crypto.ts have no
file: ethereum, plasma and tron. Those rows currently show a broken
image beside the network name. USDT has had three of them for a while;
adding Ethereum to USDC in #792 put the first one on a dropdown that
had been clean.
Hiding on error rather than adding artwork, because an Ethereum or Tron
mark is brand material and an invented one that doesn't match the
existing set is worse than a gap. The assets are still worth adding.
visibility rather than display, so the 20x20 slot is preserved and the
network names stay aligned down the list.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMnjJ8yWJsui7jLqqrDrL4
The PR prevents missing network SVG assets from rendering broken-image glyphs while preserving consistent dropdown alignment.
Adds an image error handler that hides unavailable network icons.
Retains each icon’s fixed layout slot so network labels remain aligned.
Confidence Score: 5/5
The PR appears safe to merge with no actionable defects identified.
The handler only hides failed decorative network images, and the intentionally retained icon slot preserves alignment without affecting dropdown interaction or application state.
## Summary
- Adds the three network icons missing from
`components/grid-visualizer/public/networks/`: `ethereum.svg`,
`plasma.svg`, `tron.svg`
- Follows up #796, which hid the broken `<img>` rows in the rail
dropdown — with these assets in place, the `onError` fallback stops
firing and the icons render. No code changes needed.
- Ethereum was already in the house format (128×128 brand tile,
`rx="4"`). Plasma and Tron came in as 20×20 square tiles, so their
headers were normalized to render at 128 with an equivalent scaled
corner radius; the logo paths are untouched.
## Test plan
- [x] On the Vercel preview, open the USDC rail dropdown — Ethereum row
should show its icon, aligned with the others
- [x] Open the USDT rail dropdown — Ethereum, Plasma, and Tron rows
should all show icons
- [x] Check the Ethereum tile legibility: it's the classic gray diamond
on a white tile, and the CSS crops icons into 20px circles, so confirm
it doesn't wash out against the menu background
Made with [Cursor](https://cursor.com)
Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
RailDropdownrenders/networks/${network.toLowerCase()}.svgfor every entry with no error handling, and three of the eight networks incrypto.tshave no asset:ethereum,plasma,tron. Those rows show a broken image next to the network name.Three lines: an
onErrorthat hides the image.USDT has carried three broken rows for a while. #792 added Ethereum to USDC, which put the first one on a dropdown that had been clean — that's what surfaced it.
Why hide rather than supply the artwork. An Ethereum or Tron mark is brand material, and inventing one that doesn't match the existing set is worse than a gap. The three assets are still worth adding; this just stops the UI looking broken until they are.
Why
visibilityrather thandisplay..networkMenuIconis a fixed 20×20 flex item, so hiding it preserves the slot and the network names stay left-aligned down the list.display: nonewould make rows ragged depending on which icons happen to exist.What I did not include, and why
This branch was going to carry the duplicate
code: 'USD'fix as well —currencies.tshas two entries with that code (United States Dollar, and US Dollar (El Salvador)), socurrencies.find(c => c.code === 'USD')never reaches the El Salvador entry and the picker builds two items with the sameid, making it effectively unselectable.Mapping it out, that is not a small fix. It needs selections re-keyed from
codetoaccountTypeacross roughly ten lookup sites in five files —CurrencyPicker.lookupSelection,getRailsText, three lookups inInputCard, three inuseFlowBuilderincludinggetDefaultRail's signature,code-generator,flow-path— plusPOPULAR_CODES, which matches item ids.isSameCurrencyalso needs a decision, since two USD entries are the same currency on different rails.All of that lands in
.tsxfiles I cannot typecheck in this environment —npm cifails incomponents/grid-visualizerbecause@central-icons-reactrequiresCENTRAL_LICENSE_KEY, so React types are unavailable. Shipping a ten-site refactor unverified seemed like the wrong trade, so it wants its own PR from someone with a working build.Verification
public/networks/against thenetworkvalues incrypto.ts.networkMenuIconconfirmed to have fixed dimensions, sovisibility: hiddenis layout-stableGenerated by Claude Code