feat(frontend): add circular wallet logos to Connect Wallet modal #490
Labels
No labels
agent:fix_bugfix
agent:fix_conflicts
agent:fix_security
agent:gap_analysis
agent:implement
agent:implement
agent:implement
agent:open_issues
agent:ready
agent:research
agent:security_audit
agent:verify
architecture
backend
blocker:hybrid
blocker:launch
blocker:limit-orders
blocker:v2
block:log_only
block:security
bug
ci
contracts
correctness
deploy
dev
devops
docs
documentation
duplicate
e2e
enhancement
epic
feature
frontend
functional-completion
gas
good first issue
governance
help wanted
high-risk
hooks
hybrid
indexer
infra
infrastructure
integrators
invalid
launch-blocker
limit-orders
localnet
localterra
low priority
missing-implementation
needs-design
ops
performance
priority
high
priority
medium
product
qa
QA
question
ready
ready
research
scripts
security
security-hardening
smartcontracts
tech-debt
testing
ux
UX
v2
verification
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
code/cl8y-dex-terraclassic#490
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
QoL request: show a circular logo to the left of each wallet name in the Connect Wallet modal (Station, Keplr, Cosmostation, LuncDash, Galaxy Station), so users can recognize wallets by brand mark instead of text alone.
Screenshot of current text-only modal (no logos): rows show uppercase names + Extension/WalletConnect badges + optional Install.
Current codebase
The Connect Wallet UI is a custom modal (not cosmos-kit / wallet-kit). Wallet rows are text-only.
frontend-dapp/src/components/wallet/WalletModal.tsxWALLET_OPTIONSmapped to rows; name + connection-type badge; no<img>/ icon slotwalletExtensionInstall.tsfrontend-dapp/src/index.css(.wallet-option-*)@goblinhunt/cosmesviaservices/terraclassic/wallet.tsWalletButton.tsx+networkDisplay.tscomponents/wallet/__tests__/WalletModal.test.tsxBridge sibling (reference only):
cl8y-bridge-monorepo/packages/frontendusesWalletIcons.tsx+TerraWalletOption.tsx, but those are generic colored placeholder SVGs (globe/star/dollar), not official wallet trademarks. There are no copyable brand PNG/SVG assets under bridgepublic/.Assets already in DEX:
frontend-dapp/public/chains/*are chain icons only.Why this is needed
docs/design-system.md, #488 / #489).Constraints / guardrails
station-icon.png/station-favicon.svgvia https://github.com/terra-money/docs (docs/learn/assets.mdx→/brand-assets/...). Prefer Station product icon, not generic Terra/Luna chain marks.WalletIcons.tsxfor those two only, with a short code comment noting “placeholder pending official asset”.theme-dark.css/theme-light.css). Prefer full-color icons on a neutral circular mask, or outline variants per theme when brand kits provide them (Keplr does).frontend-dapp/public/(e.g.public/wallets/) or as bundled SVG modules — no remoteimgURLs that expand CSP or enable supply-chain swap of marks.alt=""/aria-hiddenon the image, and keep existingaria-labelon the row button. Do not replace the accessible name with the logo alone.titlefor long names (#160). Icons must not squeeze badges off-screen on narrow viewports.Relevant files
frontend-dapp/src/components/wallet/WalletModal.tsx— add icon slot next to namefrontend-dapp/src/index.css—.wallet-option-card/ new.wallet-option-iconcircle stylesfrontend-dapp/src/components/wallet/__tests__/WalletModal.test.tsx— assert icons presentfrontend-dapp/public/wallets/(new) — static circle-ready assetsfrontend-dapp/src/components/wallet/WalletIcons.tsx(new) — mapWalletName→ asset/component (mirror bridge structure)../cl8y-bridge-monorepo/packages/frontend/src/components/wallet/WalletIcons.tsx,TerraWalletOption.tsxdocs/frontend.md(Connect Wallet section)Recommended direction
public/wallets/{station,keplr,cosmostation,luncdash,galaxy-station}.svg(or.png) — prefer SVG; normalize to square canvas.WALLET_OPTIONS(or a parallelWALLET_ICONmap keyed byWalletName) with a localiconSrc/ React node..wallet-option-card, render a fixed-size circle (e.g. 28–32px) withobject-fit: cover/border-radius: 50%before the uppercase name.--control-surface,--chrome-border-soft) so the circle sits cleanly on dark/light without purple/glow clutter.Acceptance criteria
docs/frontend.mdbriefly notes logos if that section describes the modal.Test plan (all paths)
Unit / component
WalletModal.test.tsx: each listed wallet row renders an icon element (bydata-testidoralt/aria-hidden+ src/role).DEV_MODE.Manual / visual
/(or Swap) — dark theme: five logos + badges.Regression
make test-frontend(or scoped WalletModal tests) green.Test plan — attack, hack & abuse vectors
public/wallets/or bundled; CSP blocks unexpected hosts<script>, no event handlers) or PNG; review assets in code reviewWALLET_EXTENSION_INSTALL_URLonly; no logo-driven navigationonError; tests check src paths existVerification criteria
Done when:
Out of scope (unless trivial)
Dont use placeholder instead use a unique svg icon for missing icons
mentioned in commit
5c045bee6bmentioned in merge request !1028
mentioned in merge request !1029
Verification screenshots (#490)
MR: !1029 ()
Desktop — dark theme
{'error': 'file is invalid'}
Desktop — light theme
{'error': 'file is invalid'}
Mobile (~375px) — dark
{'error': 'file is invalid'}
Mobile (~375px) — light
{'error': 'file is invalid'}
Notes
Verification screenshots (#490)
MR: !1029 (branch
fix/490-wallet-modal-circular-logos)Desktop — dark theme
Desktop — light theme
Mobile (~375px) — dark
Mobile (~375px) — light
Notes
mentioned in commit
37345ae46bmentioned in issue #554
mentioned in issue PlasticDigits2/ustr-cmm#17
mentioned in issue #566
marked as related to #566
mentioned in issue #672