Service Charge Breakdown

Service charge

What the yearly charge pays for

Worked out for a Type A two bedroom of 78 m², at about $4.10 per square foot a year. Larger homes pay in proportion to their floor area.

  • Concierge

    $034% of the total

    A daytime concierge in the warehouse lobby, parcels and keys

  • Building insurance

    $020% of the total

    Buildings cover for both blocks, arranged by the managing agent

  • Reserve fund

    $019% of the total

    Set aside each year for the roof, the lifts and the facade

  • Grounds

    $015% of the total

    The courtyard, the birches, the river walk frontage and the bin stores

  • Lifts

    $012% of the total

    Servicing and inspection of the two passenger lifts

Estimated total for a Type A home

$0a year

An estimate prepared by the managing agent for the first year. The actual charge is set annually and shared in proportion to floor area.

Download the full estimate
About this block

Service Charge BreakdownPRO

A service charge breakdown for a development: a list of cost lines (concierge, building insurance, reserve fund, grounds, lifts) under one top hairline, in open rows without dividers, each with its yearly figure counting up, its share of the total and a horizontal bar proportional to the largest line that grows from the left in order; beside the list a large total figure counts up with a note on how the charge is set and a download button.

Realestate71: Service Charge Breakdown

A service charge breakdown for a development: a list of cost lines (concierge, building insurance, reserve fund, grounds, lifts) under one top hairline, in open rows without dividers, each with its yearly figure counting up, its share of the total and a horizontal bar proportional to the largest line that grows from the left in order. Beside the list a large total figure counts up, with a note on how the charge is set and a download button.

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.

Upgrade Now

Installation

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

bash
npx shadcn add "https://beste.dev/r/realestate71?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://beste.dev/r-base/realestate71?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/realestate71.tsx plus the Badge24 eyebrow and Button25 pill components and the shadcn/ui button primitive behind the download button.

Quick start

The installed file exports realestate71Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.

tsx
import { Realestate71, realestate71Demo } from "@/components/beste/block/realestate71";

export default function Page() {
  return <Realestate71 {...realestate71Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { Realestate71 } from "@/components/beste/block/realestate71";

export default function Page() {
  return (
    <Realestate71
      eyebrow="Service charge"
      heading="What the yearly charge pays for"
      description="Worked out for a Type A two bedroom of 78 m²."
      items={[
        { title: "Concierge", description: "A daytime concierge in the warehouse lobby", amount: 1180 },
        { title: "Building insurance", description: "Buildings cover for both blocks", amount: 690 },
        { title: "Grounds", description: "The courtyard, the birches and the river walk frontage", amount: 520 },
      ]}
      currency="USD"
      locale="en-US"
      labels={{ total: "Estimated total for a Type A home", perYear: "a year", share: "of the total" }}
      note="An estimate prepared by the managing agent for the first year."
      button={{ label: "Download the full estimate", href: "/documents/service-charge.pdf" }}
    />
  );
}

Props

PropTypeDefaultDescription
eyebrowstring–Short line above the heading, drawn with a rule in front of it.
headingstring–Section heading.
descriptionstring–Intro paragraph beside the heading on desktop.
itemsItem[][]Cost lines with their yearly amount, top to bottom.
currencystring–ISO currency code for the figures, USD when omitted.
localestring–Locale for currency and percent formatting, en-US when omitted.
labelsLabels{}Caption of the total, the unit after it and the words after each share.
notestring–Small print under the total.
button{ label: string; href: string }–Download button under the note.
classNamestring–Extra classes merged onto the section.
ts
type Item = {
  title: string;
  description: string;
  amount: number;
};

type Labels = {
  total?: string;
  perYear?: string;
  share?: string;
};

Behavior notes

  • Each bar's width is the line's amount divided by the largest amount, so the biggest line spans the full column and the others sit in proportion; bars scale from the left over 1.4 seconds, 0.12 seconds apart, 0.2 seconds after their row. The bars themselves separate the rows, so there are no hairlines between items.
  • Every figure counts up from zero with a 1.4 second spring once the list is 10% inside the viewport, starting together with its bar; the total starts after the last line and the figures are formatted with Intl.NumberFormat as currency with no decimals.
  • The total and each line's share are computed from items, not passed in; shares use the locale's percent format with no decimals.
  • The total column sits beside the list on desktop and below it on phones, its hairline drawing last and its note and button rising with the figure.
  • With prefers-reduced-motion bars render at their full width, figures show their final values and nothing rises.

More Real Estate blocks

View all Real Estate
PRO

realestate38

Reservation Fee Explainer

PRO

realestate39

Staged Payment Schedule Bar

PRO

realestate42

Mortgage Partner Rate Table

Get Pro