Alder Row, Riverside
Two, three and four bedroom apartments across a restored brick warehouse and a new courtyard wing, planted with birch and ten minutes on foot from the station.

A property development hero on a plain ground: a short eyebrow with a rule, a large sans headline beside the intro and two pill buttons, then a wide photograph that is unveiled top to bottom once it has loaded and drifts slowly as you scroll, and a four-figure fact bar (homes, bedrooms, prices from, completion) under hairlines that draw in.
A property development hero on a plain ground: an eyebrow with a short rule, a large sans headline beside the intro and two pill buttons, then a wide photograph that is unveiled from the top once it has loaded and drifts slowly against the scroll, and a four-figure fact bar (homes, bedrooms, prices from, completion) under hairlines that draw in as they enter the viewport.
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/realestate10?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://beste.dev/r-base/realestate10?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/realestate10.tsx plus the badge24 rule eyebrow above the headline, the button25 quiet pill behind both buttons, and the shadcn/ui button primitive they build on.
The installed file exports realestate10Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.
import { Realestate10, realestate10Demo } from "@/components/beste/block/realestate10";
export default function Page() {
return <Realestate10 {...realestate10Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { ArrowRight } from "lucide-react";
import { Realestate10 } from "@/components/beste/block/realestate10";
export default function Page() {
return (
<Realestate10
eyebrow="Alder Row, Riverside"
heading="Twenty-four homes between the old warehouse and the river."
description="Two, three and four bedroom apartments across a restored brick warehouse and a new courtyard wing."
buttons={[
{ label: "Register your interest", href: "/register", icon: ArrowRight },
{ label: "View the residences", href: "/residences", tone: "outline" },
]}
image={{
src: "https://oud.pics/b/realestate/alder-courtyard-exterior.webp",
alt: "A brick warehouse and a pale concrete wing around a birch courtyard",
}}
facts={[
{ value: "24", label: "Homes" },
{ value: "2 to 4", label: "Bedrooms" },
{ value: "$640,000", label: "Prices from" },
{ value: "Spring 2027", label: "Completion" },
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
eyebrow | string | – | Short line above the headline, rendered through badge24 (a rule that draws in, then the text). |
heading | string | – | The headline, rendered as an h1. |
description | string | – | Intro paragraph beside the headline. |
buttons | ActionButton[] | [] | Pill buttons under the intro, rendered through button25; tone defaults to dark, pass outline for a quiet one. |
image | { src: string; alt: string } | – | The wide photograph under the header. |
facts | Fact[] | [] | Figures for the fact bar under the photograph. |
className | string | – | Extra classes merged onto the section. |
type ActionButton = {
label: string;
href: string;
tone?: "dark" | "outline" | "primary" | "neutral";
icon?: LucideIcon;
};
type Fact = { value: string; label: string };load event: the frame stays clipped to zero height until the image has loaded, then opens from the top over 1.6 seconds while the image settles from a 1.18 to a 1.12 scale. If the image is already cached the complete flag opens it on mount.md breakpoint, so the header and the fact bar stay close together on desktop.badge24 with trigger="mount"), then headline, intro and buttons rise in with staggered delays; the fact bar and its hairlines animate when they enter the viewport, once, each hairline growing from the left.prefers-reduced-motion every entrance, the clip reveal and the parallax are disabled and the section renders in its final state.