
Details
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.

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.
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.
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
npx shadcn add "https://beste.dev/r/realestate65?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
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.
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.
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:
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" }}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
eyebrow | string | – | Short line above the heading, rendered through badge24. |
heading | string | – | Compact statement heading between the photographs. |
description | string | – | Short paragraph under the heading. |
images | Photo[] | [] | The two 3:4 photographs, left then right; only the first two are shown. |
button | { label: string; href: string } | – | Outline pill under the paragraph. |
className | string | – | Extra classes merged onto the section. |
type Photo = { src: string; alt: string; caption: string };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.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.figcaption elements that fade up 0.6 s after their own frame opens, so a caption never sits under an empty panel.badge24.prefers-reduced-motion both frames render open at their final scale, the drift is zero and the text appears without the rise.