Reserving a home
A reservation takes the home off the market the same day and fixes the price. From there you have 28 days to exchange, and the fee comes straight off your deposit.
Reservation fee
$0
What it does
What happens next
Day 0
You pay the fee at the sales suite or online, we issue the reservation agreement and the contract pack goes to your solicitor.
Within 28 days
Your solicitor finishes their enquiries and you exchange with a 10% deposit, less the reservation fee already paid.
Spring 2027
The balance is paid, the keys are handed over at the sales suite and Arooj Aftab becomes your customer care contact.
Reservations are taken in person with Jon Hopkins or online once you have viewed.
A reservation explainer for a development's sales page: on the left the reservation fee as a large figure that counts up in view, with a checklist of what the fee does under drawn hairlines; on the right a short vertical timeline (reservation, exchange within 28 days, completion) whose spine draws down and whose dots fill in order, followed by a reserve button and a short note.
A reservation explainer for a development's sales page: on the left the reservation fee as a large figure that counts up in view, with a checklist of what the fee does under drawn hairlines. On the right a short vertical timeline (reservation, exchange within 28 days, completion) whose spine draws down and whose dots fill in order, followed by a reserve button and a short note.
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/realestate38?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://beste.dev/r-base/realestate38?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/realestate38.tsx plus the badge24 rule eyebrow, the button25 quiet pill used for the reserve button, and the shadcn/ui button primitive behind it.
The installed file exports realestate38Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.
import { Realestate38, realestate38Demo } from "@/components/beste/block/realestate38";
export default function Page() {
return <Realestate38 {...realestate38Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Realestate38 } from "@/components/beste/block/realestate38";
export default function Page() {
return (
<Realestate38
eyebrow="Reserving a home"
heading="One fee holds your home while the paperwork catches up"
description="A reservation takes the home off the market the same day and fixes the price."
fee={5000}
currency="USD"
locale="en-US"
covers={["Takes the home off the market the same day", "Fixes the price for the whole build", "Credited against your deposit on exchange"]}
milestones={[
{ when: "Day 0", title: "Reservation", description: "You pay the fee and the contract pack goes to your solicitor." },
{ when: "Within 28 days", title: "Exchange of contracts", description: "You exchange with a 10% deposit, less the reservation fee." },
{ when: "Spring 2027", title: "Completion", description: "The balance is paid and the keys are handed over." },
]}
labels={{ fee: "Reservation fee", covers: "What it does", timeline: "What happens next" }}
button={{ label: "Reserve a home", href: "/reserve" }}
note="Reservations are taken in person or online once you have viewed."
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
eyebrow | string | – | Short line above the heading, rendered through badge24. |
heading | string | – | Section heading. |
description | string | – | Intro paragraph beside the heading on wide screens. |
fee | number | – | The reservation fee, shown as the large figure. |
currency | string | – | ISO currency code for the fee, USD when omitted. |
locale | string | – | Locale for number formatting, en-US when omitted. |
covers | string[] | [] | What the fee does, one line per row with a check mark. |
milestones | Milestone[] | [] | The timeline on the right, in order. |
labels | Labels | {} | Captions above the fee, the checklist and the timeline. |
button | { label: string; href: string } | – | Reserve button under the timeline. |
note | string | – | Short note beside the button. |
className | string | – | Extra classes merged onto the section. |
type Milestone = {
when: string;
title: string;
description: string;
};
type Labels = {
fee?: string;
covers?: string;
timeline?: string;
};Intl.NumberFormat as a whole currency amount; with prefers-reduced-motion the final figure shows at once.