Sales Team Contact Rows

The sales team

Three people who know every home by its number.

Call or write to whoever suits the question: the director for the big picture, the consultant for viewings and reservations, and customer care from exchange to the day you collect the keys.

Office hours are Monday to Friday 9:00 to 18:00 and Saturday 10:00 to 17:00. Outside those hours leave a message and we call back the next working morning.

About this block

Sales Team Contact RowsPRO

A sales team list with portraits: heading and lead across the top, then one hairline row per person with a round portrait, name and role on the left and phone, email and spoken languages as a three-column definition list on the right, closing on an office-hours footnote under a final hairline.

Realestate47: Sales Team Contact Rows

A sales team list with portraits: heading and lead across the top, then one hairline row per person with a round portrait, name and role on the left and phone, email and spoken languages as a three-column definition list on the right. An office-hours footnote under a final hairline closes the block.

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/realestate47?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

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

This installs the block to components/beste/block/realestate47.tsx plus the badge24 rule eyebrow; the rows themselves are plain markup with no shadcn/ui primitives.

Quick start

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

tsx
import { Realestate47, realestate47Demo } from "@/components/beste/block/realestate47";

export default function Page() {
  return <Realestate47 {...realestate47Demo} />;
}

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

tsx
import { Realestate47 } from "@/components/beste/block/realestate47";

export default function Page() {
  return (
    <Realestate47
      eyebrow="The sales team"
      heading="Three people who know every home by its number."
      description="Call or write to whoever suits the question."
      people={[
        { name: "Laura Marling", role: "Sales director", phone: "+44 20 7946 0000", email: "[email protected]", languages: ["English", "French"], avatar: { src: "/team/laura.webp", alt: "Portrait of Laura Marling" } },
        { name: "Jon Hopkins", role: "Sales consultant", phone: "+44 20 7946 0000", email: "[email protected]", languages: ["English", "Spanish"], avatar: { src: "/team/jon.webp", alt: "Portrait of Jon Hopkins" } },
      ]}
      labels={{ phone: "Phone", email: "Email", languages: "Speaks" }}
      note="Office hours are Monday to Friday 9:00 to 18:00 and Saturday 10:00 to 17:00."
    />
  );
}

Props

PropTypeDefaultDescription
eyebrowstring–Short line above the heading, drawn with a rule in front of it.
headingstring–Section heading.
descriptionstring–Lead paragraph, right-aligned to the heading on wide screens.
peoplePerson[][]One row per team member, each with a portrait.
labelsLabels{}Captions over the phone, email and languages columns.
notestring–Office-hours footnote under the last row.
classNamestring–Extra classes merged onto the section.
ts
type Person = {
  name: string;
  role: string;
  phone: string;
  email: string;
  languages: string[];
  avatar: { src: string; alt: string };
};

type Labels = { phone?: string; email?: string; languages?: string };

Behavior notes

  • Each portrait is a plain lazy-loaded img cropped to a 56 px circle with object-cover, on a bg-muted ground while it loads; no initials are shown.
  • The phone number is linked as tel: with everything but digits and the plus sign stripped, and the email as mailto:; both links are plain anchors so they work without a router.
  • Languages are joined with commas into one line; on small screens the languages cell spans the full width under phone and email.
  • Rows rise 120 ms apart and each draws its own hairline as it appears; the footnote's hairline and text follow after the last row. With prefers-reduced-motion nothing moves.

More Real Estate blocks

View all Real Estate
PRO

realestate37

Four Buying Steps Row

PRO

realestate49

Buyer Quotes List

PRO

realestate83

Floor Plan Downloads

Get Pro