Photographic Year LedgerPRO

Timeline where every ruled row lines up a year, a photograph from that moment and the explanation of what forced the change, headed by a pill CTA on the heading line and stacking to a readable block on mobile.

Feature254: Photographic Year Ledger

A timeline set as a ruled ledger: year, photograph and story on one row, repeated down the page. The CTA sits in the header beside the heading, so the sequence ends on the last entry.

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/feature254?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

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

This installs the block to components/beste/block/feature254.tsx plus the badge7 eyebrow and button12 pill button it uses.

Quick start

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

tsx
import { Feature254, feature254Demo } from "@/components/beste/block/feature254";

export default function Page() {
  return <Feature254 {...feature254Demo} />;
}

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

tsx
import { Feature254 } from "@/components/beste/block/feature254";

export default function Page() {
  return (
    <Feature254
      badge={{ label: "How it grew" }}
      heading="The same system, photographed every two years."
      description="A brand is not finished when it launches."
      entries={[
        {
          year: "2018",
          title: "One shop, one sign",
          description: "The first identity fitted on a single fascia and a paper bag.",
          src: "/history/2018.jpg",
          alt: "Coffee bag against a plain wall",
        },
        {
          year: "2020",
          title: "Packaging that had to travel",
          description: "Wholesale meant the bag had to work on someone else's shelf.",
          src: "/history/2020.jpg",
          alt: "Coffee packaging on concrete",
        },
      ]}
      button={{ label: "See where it goes next", href: "/studio" }}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Eyebrow label rendered as a Badge7
headingstringSection heading in the header row
descriptionstringSupporting paragraph under the header
entriesTimelineEntry[][]Ledger rows, rendered top to bottom
buttonActionButtonPill Button12 in the header, opposite the heading
classNamestringExtra classes for the outer <section>
ts
type TimelineEntry = {
  year: string;
  title: string;
  description: string;
  src: string;
  alt: string;
};

type ActionButton = {
  label: string;
  href: string;
};

Behavior notes

More Feature blocks

View all Feature
PRO

feature246

Switchable Capability Ledger

Capability section with a row of pill filters that swap the list below: each entry becomes a ruled three-column row holding the title, an explanation and the typical duration pinned right.

PRO

feature263

Day Timeline Rows

A feature that walks through one working day as hairline rows stamped with the time of day, with a live approval asset dropped inline on the entry that needs showing rather than telling.

PRO

feature267

Center-Line Journey Timeline

A feature that runs a hairline down the middle of the section and alternates its stages either side of it, dropping an image tile with a live phone frame onto the step worth showing.

PRO

feature219

Indexed Services List

Eyebrow and heading with a CTA on one row, above stacked service cards that each line up an index and growth stat, a thumbnail image, and a title with description and tag chips.

PRO

feature262

Expanding Proof Rows

A feature of full-width hairline rows that expand in place, revealing a paragraph beside an image tile that floats a different live asset for each way of evaluating the product.

PRO

feature248

Alternating Proof Rows

Feature rows that alternate the image side on every second entry, each pairing an eyebrow, display title and explanation with one oversized outcome figure on its own rule, headed by an outline pill CTA pinned to the top right.