Office Locations Grid

Four-column grid of office cards with city, country, address, and team size. Ideal for global companies.

PRO

About18: Office Locations Grid

A fixed four-column grid of office cards, each topped with a pin icon, the city as the card title, the country beneath it, and optional address and team-size lines. A centered header and CTA row bracket the grid. Built for distributed or multi-office companies that want a scannable location directory.

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.

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://ui.beste.co/r/about18?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

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

This installs the block to components/beste/block/about18.tsx and the badge and button shadcn/ui primitives it depends on.

Quick start

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

tsx
import { About18, about18Demo } from "@/components/beste/block/about18";

export default function Page() {
  return <About18 {...about18Demo} />;
}

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

tsx
import { About18 } from "@/components/beste/block/about18";

export default function Page() {
  return (
    <About18
      badge={{ label: "Our Offices", variant: "secondary" }}
      heading="Where you can find us"
      description="We are a distributed team with hubs around the world."
      offices={[
        { city: "Austin", country: "United States", address: "500 Congress Ave", teamSize: "10 people" },
        { city: "Lisbon", country: "Portugal", teamSize: "6 people" },
        { city: "Singapore", country: "Singapore", address: "1 Raffles Place" },
      ]}
      buttons={[{ label: "See Open Positions", href: "https://beste.co" }]}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string; variant?: "default" | "secondary" | "outline" }Small label above the heading
headingstringSection heading
descriptionstringSection intro text
officesOfficeItem[][]Office cards, each requiring city and country
buttonsButtonItem[][]CTAs centered under the grid
classNamestringExtra classes for the outer <section>
ts
type OfficeItem = {
  city: string;
  country: string;
  address?: string;
  teamSize?: string;
};

type ButtonItem = {
  label: string;
  href?: string;
  variant?: "default" | "secondary" | "outline" | "ghost" | "link" | "destructive";
};

Behavior notes

More About blocks

View all About
PRO

about64

Principles Card Grid

Principles section with a header and a three-column grid of six bordered cards, each pairing a circular icon with a title and description.

PRO

about7

Team Cards with Bios

Three-column grid of team member cards with avatars, roles, and short bios. Great for leadership and team pages.

PRO

about60

Team Member Grid

Team section with an eyebrow, big heading, description and CTA above a responsive grid of people cards (portrait image, name, role).

PRO

about68

Team Portrait Grid

A team section with an eyebrow over a hairline rule, a two-column heading, and a grid of portrait cards each with a name and role.

PRO

about8

Stats with Descriptions

Four-column stats grid with large numbers, titles, and supporting descriptions. Perfect for impact and results sections.

PRO

about16

Vision Mission Values

Three-column cards for vision, mission, and values with labeled headers. Clean editorial layout for company positioning.