Offset Photo Pair with Statement

The entrance hall with a cast iron column, an oak stair and a tall arched window
The entrance hall in the warehouse

Details

The small things were drawn first.

The original cast iron columns stayed where they stood, and the oak stair was built around them. In the warehouse, every arched window was taken out, repaired and refitted with slim oak frames.

An arched warehouse window lit at dusk with brick around it and a birch branch in front
A restored warehouse window at dusk
About this block

Offset Photo Pair with StatementPRO

Two tall 3:4 photographs set a column apart and offset vertically, with a rule eyebrow, a compact heading, a short paragraph and an outline pill button standing between them; each frame opens from the top once its file has loaded, drifts against the scroll and carries a small caption underneath.

Realestate65: Offset Photo Pair with Statement

A quiet detail section for a development's sales page: two tall 3:4 photographs a column apart, the right one dropped lower than the left, and between them a rule eyebrow, a compact heading, a short paragraph and an outline pill button. Each photograph opens from the top once its file has loaded, drifts slowly against the scroll and has a one-line caption under it.

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://beste.dev/r/realestate65?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

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

This installs the block to components/beste/block/realestate65.tsx plus the badge24 rule eyebrow, the button25 quiet pill used for the button, and the shadcn/ui button primitive behind it.

Quick start

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

tsx
import { Realestate65, realestate65Demo } from "@/components/beste/block/realestate65";

export default function Page() {
  return <Realestate65 {...realestate65Demo} />;
}

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

tsx
import { Realestate65 } from "@/components/beste/block/realestate65";

export default function Page() {
  return (
    <Realestate65
      eyebrow="Details"
      heading="The small things were drawn first."
      description="The original cast iron columns stayed, and the oak stair was built around them."
      images={[
        {
          src: "https://oud.pics/b/realestate/alder-lobby-stair.webp",
          alt: "The entrance hall with a cast iron column and an oak stair",
          caption: "The entrance hall in the warehouse",
        },
        {
          src: "https://oud.pics/b/realestate/alder-arched-window.webp",
          alt: "An arched warehouse window lit at dusk with brick around it",
          caption: "A restored warehouse window at dusk",
        },
      ]}
      button={{ label: "Read the specification", href: "/specification" }}
    />
  );
}

Props

PropTypeDefaultDescription
eyebrowstring–Short line above the heading, rendered through badge24.
headingstring–Compact statement heading between the photographs.
descriptionstring–Short paragraph under the heading.
imagesPhoto[][]The two 3:4 photographs, left then right; only the first two are shown.
button{ label: string; href: string }–Outline pill under the paragraph.
classNamestring–Extra classes merged onto the section.
ts
type Photo = { src: string; alt: string; caption: string };

Behavior notes

  • The section is a twelve-column grid from md: the first photograph takes columns one to four, the statement five to eight with a little inner padding and vertical centring, and the second photograph nine to twelve pushed down by mt-24, which produces the offset. On small screens the statement comes first and the two photographs sit side by side under it, the second one lower by mt-12.
  • Each frame is gated on its own load event (or complete for cached files) and on scrolling into view, then opens with a top-to-bottom clip over 1.6 s while the image settles from 1.18 to 1.12 scale; the right frame starts 0.2 s after the left one and both drift from -6% to 6% against the page scroll.
  • Captions are figcaption elements that fade up 0.6 s after their own frame opens, so a caption never sits under an empty panel.
  • The statement rises heading first, then the paragraph, then the button, while the eyebrow draws its own rule through badge24.
  • With prefers-reduced-motion both frames render open at their final scale, the drift is zero and the text appears without the rise.

More Real Estate blocks

View all Real Estate
PRO

realestate62

Scroll-Snap Photo Filmstrip

PRO

realestate53

Developer Record Photo Pair

PRO

realestate80

Partner Agents Side by Side

Get Pro