A day at Alder Row
The buildings sit between the water and the courtyard, so most of a day here happens within a few hundred steps of the front door.
7:00
The promenade runs from the front door to Granary Square park. Twenty minutes out and back under the birches before the city wakes up.

9:00
The concrete benches catch the first sun between the two buildings. Residents bring a cup down and the gravel does the rest.

13:00
The market is four minutes along the water. Bread, cheese and whatever is in season, carried back to the stone island in the kitchen.

18:00
West light along the river wall, the station crowd thinning on the far bank, and a long evening on the oak chairs.

A day-in-the-life timeline for a development: a header, then a vertical list of moments (a river walk at 7:00, courtyard coffee at 9:00, lunch from the market at 13:00, the terrace at 18:00) along a hairline spine that draws downwards, each with the time as a light figure, a title, a line and a small square crop of a photograph that opens once it has loaded and drifts slightly against the scroll.
A day-in-the-life timeline for a development: a header, then a vertical list of moments (a river walk at 7:00, courtyard coffee at 9:00, lunch from the market at 13:00, the terrace at 18:00) along a hairline spine that draws downwards. Each moment has the time as a light figure, a title, a line and a small square crop of a photograph that opens once it has loaded and drifts slightly against the scroll.
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/realestate68?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://beste.dev/r-base/realestate68?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/realestate68.tsx plus the Badge24 eyebrow component it imports; no shadcn/ui primitives are needed.
The installed file exports realestate68Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.
import { Realestate68, realestate68Demo } from "@/components/beste/block/realestate68";
export default function Page() {
return <Realestate68 {...realestate68Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Realestate68 } from "@/components/beste/block/realestate68";
export default function Page() {
return (
<Realestate68
eyebrow="A day at Alder Row"
heading="From the river walk at seven to the terrace at six"
description="Most of a day here happens within a few hundred steps of the front door."
moments={[
{
time: "7:00",
title: "Along the river walk",
description: "Twenty minutes out and back under the birches before the city wakes up.",
image: { src: "https://oud.pics/b/realestate/alder-river-walk.webp", alt: "The stone promenade beside the buildings" },
},
{
time: "18:00",
title: "The terrace at dusk",
description: "West light along the river wall and a long evening on the oak chairs.",
image: { src: "https://oud.pics/b/realestate/alder-roof-terrace.webp", alt: "The penthouse terrace with oak chairs" },
},
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
eyebrow | string | – | Short line above the heading, drawn with a rule in front of it. |
heading | string | – | Section heading. |
description | string | – | Intro paragraph beside the heading on desktop. |
moments | Moment[] | [] | The timeline entries, top to bottom. |
className | string | – | Extra classes merged onto the section. |
type Moment = {
time: string;
title: string;
description: string;
image?: { src: string; alt: string };
};object-cover; each frame waits for its own load event (or an already complete image) and for the frame to be in view before it opens from the top, while the image settles from a 1.18 to a 1.12 scale.useScroll on its own frame; with prefers-reduced-motion the drift is off and every frame renders open.image simply omits the crop and keeps the rest of the row.