Alternating Rows

The work, up close

Threekindsofsession,onewayoflistening.

Two wooden boats moored off a white sand beach

In the room

An hour that belongs to you

Sixty or seventy-five minutes in a room chosen for its quiet. No clock on the wall, no next appointment pressing at the door, and a kettle for afterwards.

More about this
Swimmers in clear green water beside a row of parasols

Online

The same hour, wherever you are

A private link, no software, no waiting room. Half our sessions happen on video now, with the same practitioner and the same rhythm as the room.

More about this
A rocky cove with wildflowers above turquoise water

On foot

Fridays along the river

Some things are easier to say side by side than face to face. Walking sessions run every Friday, rain permitting, and end with soup.

More about this
About this block

Alternating RowsPRO

The classic zigzag: under a serif heading that settles in word by word and a pill action, rows alternate a photograph drifting inside its frame with an eyebrow, a serif title, a description and an arrow link, switching sides on every row.

Feature282: Alternating Rows

Alternating rows: each one pairs a photograph that drifts inside its frame with a small-caps eyebrow, a serif title, a paragraph and a read link, swapping sides down the section.

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

Base UI flavor

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

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

Quick start

The installed file exports feature282Demo alongside the block: the exact props behind the preview above. Spread it to get a working alternating feature rows in one line.

tsx
import { Feature282, feature282Demo } from "@/components/beste/block/feature282";

export default function Page() {
  return <Feature282 {...feature282Demo} />;
}

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

tsx
import { Feature282 } from "@/components/beste/block/feature282";

export default function Page() {
  return (
    <Feature282
      eyebrow="The work, up close"
      heading="Three kinds of session, one way of listening."
      button={{ label: "Compare them side by side", href: "/compare", tone: "outline" }}
      rows={[
        {
          eyebrow: "In the room",
          title: "An hour that belongs to you",
          description: "Sixty or seventy-five minutes in a room chosen for its quiet.",
          href: "/in-the-room",
          image: { src: "/rooms/bench.jpg", alt: "A sunlit room with a low timber bench" },
        },
      ]}
      labels={{ more: "More about this" }}
    />
  );
}

Props

PropTypeDefaultDescription
eyebrowstringSmall-caps line above the section heading
headingstringSection heading, rendered as an h2 through Text1
buttonActionButtonPill action beside the heading
rowsRow[][]Feature rows, alternating sides down the section
labels{ more?: string }{}Read link wording; the link is dropped when unset
classNamestringExtra classes for the outer <section>
ts
type Row = {
  eyebrow: string;
  title: string;
  description: string;
  href: string;
  image: { src: string; alt: string };
};

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

Behavior notes

  • The alternation is done with explicit md:col-start values on index % 2 while both cells stay in md:row-start-1, so the visual order flips without the DOM order changing. The image always comes first in the markup, which is what keeps the reading order sane for a screen reader on every row.
  • Below md the column starts drop away entirely and every row stacks image-then-copy, so the alternation never turns into an inconsistent mobile order.
  • Each photograph owns its own scroll listener and drifts -10% to 10% against a 1.2 scale, so rows do not move in lockstep down the page.
  • Each row has its own eyebrow separate from the section's, so the rows can be labelled (In the room, Online, On foot) without repeating the section title.
  • The read link's arrow lifts only under motion-safe:, so the hover affordance is dropped for reduced motion while the link keeps working.
  • Rows are spaced with a gap-20 that grows to gap-28, not with rules, so the section reads as a sequence of scenes rather than a table.
  • Row titles are h3 under the section h2, and only the read link is clickable, which keeps the paragraphs selectable.

More Feature blocks

View all Feature
PRO

feature220

Zigzag Feature Rows

Centered header above three zigzag rows, each pairing a 4:3 image with a title, description, and tag chips on alternating sides.

PRO

feature211

Alternating Features

Alternating image-and-copy feature rows with checklists.

PRO

feature197

Alternating Image & Content

Zig-zag layout where each feature alternates an image with a content block — a colored icon badge, bold title, and description. Configurable icon badge accent color (emerald, primary, foreground, rose, blue, amber, violet, sky, orange, teal). Ideal for product modules, services, or capabilities.

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.

PRO

feature278

Two Doors Tabs

A tabbed comparison under a centred serif heading that settles in word by word: pill tabs switch between approaches, each blurring in a drifting portrait photograph beside a serif title, a description, a ruled fact list and a sliding-marker pill.

PRO

feature187

Two-Column Alternating Cards over Media

Alternating two-column feature cards with large icons over background media, left-right zigzag layout