Skip to content

feat(giveback): warm-up funnel + reworked hero#6256

Merged
idoshamun merged 2 commits into
mainfrom
feat/giveback-funnel-hero
Jun 28, 2026
Merged

feat(giveback): warm-up funnel + reworked hero#6256
idoshamun merged 2 commits into
mainfrom
feat/giveback-funnel-hero

Conversation

@idoshamun

@idoshamun idoshamun commented Jun 28, 2026

Copy link
Copy Markdown
Member

Changes

Fifth step of the giveback design pass from #6247 (PR 5/6). The big one: the warm-up funnel and reworked hero, replacing the old inline-picker onboarding.

Warm-up funnel (new)

  • GivebackFunnel: full-screen 4-step intro (why → how it works → pick causes → impact finale), shown once for everyone via a persisted giveback:funnel_seen flag, and replayable on demand from the hero's "How it works".
  • A single mounted explainer video docks from inline (step 1) to a floating bottom-right corner player across the later steps, so playback never restarts; hidden on mobile after step 1.
  • Choreographed funnel-step-in reveals + a glow stage, all motion-safe / prefers-reduced-motion aware.
  • Finishing the funnel persists the seen flag and saves the visitor's causes (logged with origin: 'funnel'); a forced first run drops them into the campaign, a replay just closes.

Hero (reworked, lands here per the earlier re-sequencing)

  • Brand row + "How it works" entry, new GivebackHeadline, charm mascot, live funding summary, mobile scaling.
  • "How it works" is the hero's only onboarding entry — the funnel auto-shows for first-timers — which is exactly why the hero was held back to land with the funnel.

Removed

  • GivebackStartPanel (+ spec) and the old isResolving/join-CTA flow
  • the inline GivebackCauseSelection picker wiring + GivebackOnboardingBar (+ spec)
  • the sticky GivebackFundingBar

Supporting

  • Funnel log events (StartGivebackFunnel / ViewGivebackFunnelStep / CompleteGivebackFunnel / ClickGivebackHowItWorks)
  • funnel-step-in + coin-drop tailwind keyframes
  • Page gutter finalized (px-4 tablet:px-8 laptop:px-12) and filterable-tab min-h to stop the scroll jump
  • Background corner-bleed fix, GivebackMascot image override, GivebackActionCatalog gains onFilter (scrolls the tab strip like the causes tab)

Scope notes / decisions

⚠️ Needs a real-app smoke test

The docked explainer video uses position: fixed + scroll/resize listeners measuring getBoundingClientRect. Tests + Storybook pass, but this should be eyeballed in the running webapp (docking, z-index, mobile) before merge.

Verification

  • ✅ Strict typecheck on changed files
  • ✅ ESLint clean across the giveback feature
  • ✅ Shared + webapp tsc: no new errors (27 pre-existing, unrelated)
  • ✅ No dangling references to any deleted component
  • ✅ Giveback tests: 10 suites / 50 pass (incl. new GivebackFunnel.spec)

Preview domain

https://feat-giveback-funnel-hero.preview.app.daily.dev

Replaces the inline cause-picker onboarding with a full-screen 4-step
warm-up funnel (why -> how it works -> pick causes -> impact), shown once
for everyone via a persisted giveback:funnel_seen flag and replayable from
the hero's 'How it works'. A single mounted explainer video docks from
inline to a floating corner player across steps; hidden on mobile after
step 1.

The hero is reworked around the new GivebackHeadline + charm mascot + live
funding summary, with 'How it works' as its only onboarding entry (the
funnel auto-shows for first-timers). Removes the old StartPanel join CTA,
the inline picker, GivebackOnboardingBar and the sticky GivebackFundingBar.

Adds the funnel lifecycle log events and the funnel-step-in / coin-drop
keyframes. Sponsors stay unrendered (no flag), per the prior PR.

Note: the docked video uses fixed positioning + scroll/resize listeners;
worth a real-app smoke test (not just Storybook).
@vercel

vercel Bot commented Jun 28, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
daily-webapp Ready Ready Preview Jun 28, 2026 2:23pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
storybook Ignored Ignored Jun 28, 2026 2:23pm

Request Review

…ft, split funnel

Onboarding:
- The funnel now shows automatically for any eligible visitor who hasn't
  saved causes (gated on selection.hasSavedCauses), not a local
  giveback:funnel_seen flag, so it keeps appearing until they pick.
- Hold the whole page body until the campaign status and saved picks
  resolve. The funnel is a full-screen overlay on the same background, so
  revealing the hero/tabs first flashed them before it covered them and
  popped the tabs in once the picks landed. Now only the shared background
  shows while resolving: no flash, no shift.

Hero layout shift:
- The mascot <img> had a fixed height but auto width and lazy loading, so
  it reflowed the hero row (and the tab bar/content below) when it loaded.
  Pinned the charm's 2812x2024 aspect ratio so the width is reserved up
  front.

Funnel split (was ~630 lines):
- givebackFunnelTypes.ts: STEP_KEYS / StepKey / CauseSelection
- GivebackFunnelVideo.tsx: the docked explainer video
- GivebackFunnelSteps.tsx: the per-step content
- GivebackFunnel.tsx: the orchestrator shell (state, nav, footer, portal)
@idoshamun idoshamun merged commit e888291 into main Jun 28, 2026
12 checks passed
@idoshamun idoshamun deleted the feat/giveback-funnel-hero branch June 28, 2026 14:27
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