The area in numbers
Four figures that describe the neighbourhood around Alder Row: what homes sell for, how prices have moved, who lives here and how much of it is green.
Riverside has changed from a working riverfront into one of the city's calmest neighbourhoods without losing its grain. The warehouses that remain have become homes and studios, Riverside Market trades six days a week, and Granary Square park joins the river walk so that most of the ward is a few minutes from open water or open grass. Mill Lane station puts the centre eleven minutes away.
Land Registry sold prices and the 2025 ward profile, compiled by Hartwell & Lowe in October 2026.
An area guide for a development's location page: an eyebrow, heading and lead, then four figures (average price, five-year growth, residents, green space share) in a four-column row under hairlines, each counting up from zero over 1.4 s once in view and formatted as currency, number or percent; a paragraph about the neighbourhood and a source footnote sit on a hairline row below.
An area guide for a development's location page: an eyebrow, heading and lead, then four figures (average price, five-year growth, residents, green space share) in a four-column row under hairlines, each counting up from zero over 1.4 s once in view and formatted as currency, number or percent. A paragraph about the neighbourhood and a source footnote sit on a hairline row below.
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/realestate84?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://beste.dev/r-base/realestate84?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/realestate84.tsx plus the badge24 rule eyebrow; the block uses no shadcn/ui primitives of its own.
The installed file exports realestate84Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.
import { Realestate84, realestate84Demo } from "@/components/beste/block/realestate84";
export default function Page() {
return <Realestate84 {...realestate84Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Realestate84 } from "@/components/beste/block/realestate84";
export default function Page() {
return (
<Realestate84
eyebrow="The area in numbers"
heading="Riverside, measured"
description="Four figures that describe the neighbourhood around Alder Row."
figures={[
{ value: 712000, kind: "currency", label: "Average sold price, last twelve months" },
{ value: 24, kind: "percent", label: "Price growth over five years" },
{ value: 18400, kind: "number", label: "Residents within a mile" },
]}
paragraph="Riverside has changed from a working riverfront into one of the city's calmest neighbourhoods without losing its grain."
source={{ label: "Land Registry sold prices and the 2025 ward profile.", href: "/sources" }}
currency="USD"
locale="en-US"
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
eyebrow | string | – | Short line above the heading, rendered through badge24. |
heading | string | – | Section heading in the left seven columns of the header grid. |
description | string | – | Lead paragraph in the right four columns of the header grid. |
figures | Figure[] | [] | The counting figures; four fill the row on desktop, two per row on small screens. |
paragraph | string | – | Short paragraph about the area, in the left seven columns under the figures. |
source | { label: string; href?: string } | – | Source footnote in the right four columns; with href it renders as an underlined link. |
currency | string | – | ISO currency code for currency figures, USD when omitted. |
locale | string | – | Locale for all number formatting, en-US when omitted. |
className | string | – | Extra classes merged onto the section. |
type Figure = {
value: number;
kind: "currency" | "number" | "percent";
label: string;
};animate call is stopped on unmount.Intl.NumberFormat: currency as whole units in the given currency, number with grouping separators and no decimals, and percent as a whole percentage from a value given in percent (24 renders as 24%).href, and as an underlined link with a hairline-coloured underline when href is set.prefers-reduced-motion the figures render at their final values without counting and every initial state is skipped.