Skip to content

feat(ui): align explorer with assetmantle.one + Game of Life background#102

Merged
deepanshutr merged 1 commit into
explorer/masterfrom
explorer/website-design-alignment
Apr 29, 2026
Merged

feat(ui): align explorer with assetmantle.one + Game of Life background#102
deepanshutr merged 1 commit into
explorer/masterfrom
explorer/website-design-alignment

Conversation

@deepanshutr
Copy link
Copy Markdown
Contributor

Summary

Brings the canonical explorer in visual sync with the assetmantle.one website so users don't feel a brand jump moving between the two surfaces.

  • Logo: public/images/logo.svg replaced with the website's wordmark (1099/180, three-tone).
  • Fonts: BPdotsSquare (display, 3 weights), DMSans + Italic (body) shipped as woff2 under public/stylesheets/fonts/assetMantle/. Declared at the top of fonts.css with font-display: swap.
  • Palette: theme.css token swap for light-mode surfaces — --bg-light-primary: #fcfbf9, --bg-light-card: #fffdfa, --button-text: #0d0a03, --gray: #9c9a9a. --font-type-1BPdotsSquare, --font-type-2DMSans. :root font-family stack falls back to Montserrat → sans-serif.
  • Default light mode: common.scala.html body class flipped from darkMode to lightMode; darkMode.js cookie default also flipped. <html> background pre-set to --bg-light-primary so the page doesn't flash dark before JS runs.
  • Game of Life: ported AssetMantle/website GlobalGameCanvas.js to vanilla JS as gameOfLife.js. Single API:
    AssetMantleGameOfLife.mountBackground(opts)  // page-wide canvas, fixed inset:0, behind everything
    AssetMantleGameOfLife.runOnButton(btn, opts) // overlay a Gosper-gun on a busy button; .stop() to clear
    Page-wide canvas auto-mounts on DOMContentLoaded (z-index:0, opacity:0.07, P26 reflector pattern); bodyContainer gets z-index:1 so cards float above. Pauses on visibilitychange to save cycles.

Test plan

  • sbt dist passes; built ghcr.io/assetmantle/client:design-alignment (sha256:267d47e90428e30770d17c28e44832cff44fbbe02c3c9e2f039d350b6c830405)
  • Live deploy on Akash DSEQ 26587209 (tx 6D2297A1…)
  • Homepage <body class="lightMode"> by default with no cookie
  • gameOfLife.js served as fingerprinted asset; theme.css + fonts.css fingerprinted
  • Headless Chrome render shows <canvas id="am-game-bg"> mounted in <body class="lightMode">
  • BPdotsSquare.woff2 returns 200; theme tokens carry website colours
  • https://explorer.assetmantle.one/ returns 200 and renders correctly

🤖 Generated with Claude Code

Mirror the website's design system into the explorer so users moving
between the two surfaces don't feel a brand jump:

- Logo: replace public/images/logo.svg with the wordmark from
  AssetMantle/website (1099/180 aspect, three-tone fill).
- Fonts: ship BPdotsSquare (display), BPdotsSquareBold/Light, DMSans
  (body) and DMSansItalic as woff2 under public/stylesheets/fonts/
  assetMantle/, declared at the top of fonts.css with font-display:swap.
- Palette: theme.css now uses the website's surface tokens
  (--bg-light-primary #fcfbf9, --bg-light-card #fffdfa,
  --button-text #0d0a03, --gray #9c9a9a) and points --font-type-1 / -2
  at the AM brand fonts. The :root font-family stack falls back to
  Montserrat then sans-serif if a face fails to load.
- Default mode flipped to lightMode: common.scala.html body class +
  darkMode.js cookie default. Pre-JS html background also set to
  --bg-light-primary so we don't flash dark.
- Game of Life: ported AssetMantle/website's GlobalGameCanvas.js to
  vanilla JS as gameOfLife.js. Single API surface:
    AssetMantleGameOfLife.mountBackground(opts)  // page-wide
    AssetMantleGameOfLife.runOnButton(btn, opts) // per-button overlay
  Page-wide canvas is auto-mounted on DOMContentLoaded behind the
  bodyContainer (z-index:0, opacity:0.07, P26 reflector pattern, paused
  when the tab is hidden). Buttons can opt in via runOnButton during
  loading/confirm flows, then call .stop() to remove the canvas.
@deepanshutr deepanshutr merged commit 237dfc6 into explorer/master Apr 29, 2026
@deepanshutr deepanshutr deleted the explorer/website-design-alignment branch April 29, 2026 07:19
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