Design System

Journey scroll

The “how it works” section as a vertical scroll story — the second treatment of the same JourneyStep[] that JourneySteps renders as four cards in a row. The lead (heading, intro, CTA) is sticky; the steps scroll past it as a timeline with a rail whose fill grows as you read. A step is reached once its dot crosses the focus line (~45% down the viewport): the dot fills, the step brightens from its dimmed waiting state, and the most recent one pulses.

Progress is written imperatively — one custom property and one attribute per step, no React state per scroll event. The lead's grid cell must stretch to the row height (not align-items: start) or the sticky child has no room to travel and never sticks. Scroll this page to run it.

import from @halwel/ui/components/marketing/JourneyScroll

Variants

Default — four steps, sticky lead

How weight-loss care works here

Four steps, none of them a waiting room. A licensed provider reviews every intake; if treatment is prescribed, the medicine ships to your door; and your care team stays with you from there.

Check your eligibility
  1. Tell us about you

    5-minute online intake. No appointment, no waiting room.

    Hands holding a phone showing the Halwel intake questionnaire
  2. Meet your clinician

    A licensed provider reviews your intake within 24 hours.

    Patient at a kitchen table on a video visit with a clinician
  3. Medication shipped

    Cold-chain shipping in 3–5 days. Always free.

    Halwel package on a sunlit doorstep
  4. Ongoing support

    Check-ins, dose management, and messaging in your portal.

    A man checks in with his care team from his front step