Skip to content

Footer logo easter egg: morph the logo apart & back on hover/tap (#1397)#1399

Merged
jonfroehlich merged 3 commits into
masterfrom
1397-footer-logo-easter-egg
Jun 25, 2026
Merged

Footer logo easter egg: morph the logo apart & back on hover/tap (#1397)#1399
jonfroehlich merged 3 commits into
masterfrom
1397-footer-logo-easter-egg

Conversation

@jonfroehlich

Copy link
Copy Markdown
Member

Closes #1397. Split out from #1395.

What

Progressively enhances the static footer logo <img> into an interactive <canvas> driven by makeabilitylab/js (pinned @0.6.0), using MakeabilityLabLogoMorpher + linearPath().

  • Desktop (hover): the cursor's X position anywhere across the blue footer row maps to the morph amount — left = fully exploded, right = fully assembled (linear "reverse explosion"); eases back to assembled on mouse-leave.
  • Touch (tap): a single tap plays a one-shot explode → reassemble (finger-dragging would fight page scroll). The tap is consumed by the egg, so on touch the footer logo doesn't also navigate home (the navbar logo + footer links still do).
  • Assembled look: the canonical mark — black M outline + black facet lines in the M, a clean white L, white "MAKEABILITY LAB" wordmark.

Accessibility

  • Fully honors prefers-reduced-motion: when set (or if canvas is unsupported), the static <img> is left in place — no canvas, no animation.
  • The injected canvas carries role="img" + aria-label="Makeability Lab" so its accessible name matches the logo.
  • The wordmark label is kept white (not black) for AA contrast on the blue (#1565A7) footer.

Notes

  • Library pinned to a released tag (@0.6.0), not the moving @main.
  • Key fix during testing: MakeabilityLabLogoMorpher.reset() snapshots the logo's current positions as the scatter origin, so it must be called once (in layout), never from the assembled resting state — otherwise the explosion is a no-op.

Before / after

Testing

  • Desktop: sweep the cursor across the footer row — logo explodes (left) and reassembles (right).
  • Touch device: tap the logo — one-shot explode → reassemble.
  • OS reduced-motion on: footer shows the static logo, no canvas/animation.
  • Run Pa11y before merge.

🤖 Generated with Claude Code

jonfroehlich and others added 3 commits June 24, 2026 15:19
Progressively enhances the static footer logo <img> into an interactive
<canvas> driven by makeabilitylab/js (pinned @0.6.0). Desktop: cursor X
across the logo maps to a linear "reverse explosion" — left = exploded,
right = assembled — easing back to assembled on mouse-leave. Touch: a tap
plays a one-shot explode -> reassemble (avoids fighting page scroll).

The logo renders all-white (triangles, M/L outlines, and the MAKEABILITY
LAB wordmark) to match the white PNG it replaces on the blue footer.

Honors prefers-reduced-motion and missing-canvas: in those cases the
static <img> is left untouched. The injected canvas carries role="img" +
aria-label so its accessible name matches the logo.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… lines (#1397)

Three fixes after live testing:

- Explosion never fired. reset() snapshots the logo's *current* positions as
  the scatter origin, so calling it from the assembled resting state (which
  onPointerEnter/onTap both did) collapsed the morph to nothing. The single
  reset() in layout() is sufficient; update() interpolates against it. Removed
  the hover/tap resets (and the now-empty pointerenter handler).

- Drive the morph from the cursor's X anywhere across the footer's first row
  (.makelab-footer-row), not just over the small logo, so the whole blue band
  is interactive. Falls back to the logo if the row isn't found.

- Restore the canonical look at the assembled end state: white triangle fills
  with black facet/outline lines (was a flat white silhouette). The wordmark
  label stays white to keep AA contrast on the blue (#1565A7) background.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…1397)

Explicitly disable areLTriangleStrokesVisible on both internal logos so the
triangles inside the L never get facet strokes — the L stays a clean white
shape while the M keeps its black facet lines. Set after setColors(), which
would otherwise re-enable every triangle's stroke.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jonfroehlich jonfroehlich merged commit f459a5c into master Jun 25, 2026
3 checks passed
@jonfroehlich jonfroehlich deleted the 1397-footer-logo-easter-egg branch June 25, 2026 03:58
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.

Easter egg: footer logo morphs/explodes on hover & tap (makeabilitylab/js)

1 participant