Slow Timeline

How we got here

Sevenyears,toldslowly.

Nothing about the practice was planned. It grew the way the work does: one conversation leading, eventually, to the next.

Where we are going
  1. 2019

    Two rooms above a bakery

    One practitioner, a borrowed chair and a waiting list that was mostly friends of friends.

  2. 2020

    The year online

    Every session moved to video in a week. We learned that the quiet travels better than we feared.

  3. 2022

    A second and third chair

    Two colleagues joined, and the evening practice opened for people who only had the hour after work.

  4. 2024

    Fridays on foot

    Walking sessions along the river, on foot. Some things are easier to say side by side than face to face.

  5. 2026

    Still small on purpose

    Three practitioners, one address, and a decision not to grow faster than the listening can.

About this block

Slow TimelinePRO

A history told down a single rule: a sticky column with a serif heading that settles in word by word, an intro and a pill action, beside a timeline whose ink line draws itself down as the page scrolls past serif years, titles and short descriptions.

About76: Slow Timeline

A practice history told down a single rule: a sticky column holds the heading, intro and pill action while an ink line draws itself down the timeline beside it, past serif years, titles and short descriptions.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Upgrade Now

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/about76?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/about76?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/about76.tsx plus the button22 sliding-marker pill and the text1 word stagger it uses.

Quick start

The installed file exports about76Demo alongside the block: the exact props behind the preview above. Spread it to get a working timeline in one line.

tsx
import { About76, about76Demo } from "@/components/beste/block/about76";

export default function Page() {
  return <About76 {...about76Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { About76 } from "@/components/beste/block/about76";

export default function Page() {
  return (
    <About76
      eyebrow="How we got here"
      heading="Seven years, told slowly."
      description="Nothing about the practice was planned. It grew the way the work does."
      button={{ label: "Where we are going", href: "/next", tone: "outline" }}
      milestones={[
        { year: "2019", title: "Two rooms above a bakery", description: "One practitioner, a borrowed chair and a waiting list of friends of friends." },
        { year: "2022", title: "A second and third chair", description: "Two colleagues joined, and the evening practice opened." },
        { year: "2026", title: "Still small on purpose", description: "Three practitioners, one address, and a decision not to grow faster than the listening can." },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
eyebrowstringSmall-caps line above the heading
headingstringSection heading, rendered as an h2 through Text1
descriptionstringIntro paragraph in the sticky column
buttonActionButtonPill action under the intro
milestonesMilestone[][]Timeline entries, rendered in the order given
classNamestringExtra classes for the outer <section>
ts
type Milestone = {
  year: string;
  title: string;
  description: string;
};

type ActionButton = {
  label: string;
  href: string;
  tone?: "primary" | "light" | "dark" | "outline";
};

Behavior notes

  • The drawn line is a second rule stacked on the static one and scaled on scaleY from a top origin, so it grows downward as a mask rather than being redrawn; the pale rule underneath stays visible as the track it fills.
  • Its progress is measured with the offset ["start 75%", "end 55%"], which finishes the line while the last milestone is still on screen instead of only when the list has left the viewport.
  • Milestones use a tighter -20% viewport margin than the header, so an entry settles in once it is properly inside the reading area rather than the moment it clips the bottom edge.
  • Years are set in tabular-nums at text-foreground/40, so a column of four-digit years stays optically aligned and reads as a scale rather than as content competing with the titles.
  • The list is an ol and the milestone titles are h3, so the chronology is a real ordered list for a screen reader; the dots and both rules are aria-hidden.
  • The left column is md:sticky md:top-28, so the heading and action stay in view for the length of the timeline and collapse to normal flow below md, where a sticky column would cover the content.
  • With reduce, the line is drawn at full height from the start rather than animating, so the timeline never reads as unfinished.

More About blocks

View all About
PRO

about62

Milestone Timeline

About section with a header and a vertical timeline of milestones on a left rail, each marked by a year, title, and description.

PRO

about3

Timeline & Milestones

Two-column layout with company stats on the left and a vertical timeline of milestones on the right. Ideal for company history and growth stories.

PRO

about80

Story Split

The classic about split: a serif heading that settles in word by word, two paragraphs, a sliding-marker pill and three ruled figures that count up on the left, and a portrait photograph drifting inside its frame on the right.

PRO

about77

The Rooms Grid

A studio tour: a serif heading that settles in word by word beside the intro and a pill action, four photographs of the rooms in an uneven, offset grid that each drift at their own pace as the page scrolls, and a ruled row of visiting details.

PRO

about41

Story Rail About

Sticky eyebrow rail beside a story column and an offset captioned image.

FREE

about70

Company History Rows

A company story told as hairline rows keyed by a light year figure, set against a media column that sticks while they scroll and stacks an image tile floating a live growth metric over a captioned photograph.