Scroll Path

A timeline whose line swings down the page as you scroll, lighting each step as it arrives.

  1. Picked

    Ripe cherries only, picked by hand in Huila.

  2. Washed and dried

    Fermented overnight, then dried on raised beds for three weeks.

  3. Shipped green

    Sealed in grain bags and shipped to London by sea.

  4. Roasted on Monday

    Small batches, each profile tasted before it ships.

  5. At your door by Friday

    Four days from roaster to cup.

import { ScrollPath } from '@brand-studio/ui';

export default function ScrollPathDemo() {
  return (
    <div style={{ width: '100%', maxWidth: 560, padding: '48px 24px' }}>
      <ScrollPath label="From farm to your door" steps={[
        { title: 'Picked', body: <p>Ripe cherries only, picked by hand in Huila.</p> },
        { title: 'Washed and dried', body: <p>Fermented overnight, then dried on raised beds for three weeks.</p> },
        { title: 'Shipped green', body: <p>Sealed in grain bags and shipped to London by sea.</p> },
        { title: 'Roasted on Monday', body: <p>Small batches, each profile tasted before it ships.</p> },
        { title: 'At your door by Friday', body: <p>Four days from roaster to cup.</p> },
      ]} />
    </div>
  );
}

Installation

pnpm add @brand-studio/ui

Usage

import { ScrollPath } from '@brand-studio/ui';
<ScrollPath label="From farm to your door" steps={[
  { title: 'Picked', body: <p>Ripe cherries only.</p> },
  { title: 'Roasted on Monday', body: <p>Small batches.</p> },
]} />

Accessibility

  • It is a labelled ordered list of steps, each with a heading.
  • Without scripts, and under reduced motion, a straight line is already drawn and every step is at full strength.

API Reference

PropTypeDefault
stepsPathStep[]–
label?string'Steps'
className?string''

Still, Deskhand and Hollis are fictional brands. The coffee photographs are original generated artwork. @brand-studio/ui is MIT licensed.