Subprocessor RegisterPRO

A legal section publishing every subprocessor as a scrollable hairline table with purpose, region, and start date, closing on an image tile that floats a live data residency card beside a subscribe-to-changes panel.

Legal54: Subprocessor Register

A legal section publishing every subprocessor as a scrollable hairline table with purpose, region and start date, closing on an image tile that floats a live data residency card beside a subscribe-to-changes panel.

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

Base UI flavor

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

This installs the block to components/beste/block/legal54.tsx, the location8 residency piece it floats on the tile (installed to components/beste/piece/location8.tsx), and the badge23 and button21 components it uses for the eyebrow and the action.

Quick start

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

tsx
import { Legal54, legal54Demo } from "@/components/beste/block/legal54";

export default function SubprocessorsPage() {
  return <Legal54 {...legal54Demo} />;
}

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

tsx
import { Legal54 } from "@/components/beste/block/legal54";
import { Location8 } from "@/components/beste/piece/location8";

export default function SubprocessorsPage() {
  return (
    <Legal54
      badge={{ label: "Subprocessors" }}
      heading="Everyone who touches your data, and why"
      description="We publish changes here thirty days before they take effect."
      updatedLabel="Last updated 12 May 2026"
      columns={["Provider", "Purpose", "Region", "In use since"]}
      rows={[
        {
          name: "Aurora Cloud",
          purpose: "Application hosting and database storage",
          region: "London, United Kingdom",
          since: "March 2023",
        },
        {
          name: "Northline Payments",
          purpose: "Card processing and settlement",
          region: "Frankfurt, Germany",
          since: "August 2023",
        },
      ]}
      media={
        <Location8
          title="Where your records live"
          region="Primary region"
          sites={[{ name: "Application data", meta: "London, UK", value: "Primary" }]}
          total="0"
          totalLabel="records replicated outside the region you choose"
        />
      }
      image={{ src: "/backdrops/green.jpg", alt: "Deep green gradient backdrop" }}
      noticeTitle="Be told before anything changes"
      noticeBody="Subscribe and we will email you thirty days ahead of any addition."
      button={{ label: "Subscribe to changes", href: "/subprocessors/subscribe" }}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Eyebrow at the top left, rendered through Badge23
headingstringSection heading in the left column of the header
descriptionstringSupporting paragraph, right-aligned from md up
updatedLabelstringLast-updated line, opposite the eyebrow
columnsstring[][]Table column headings
rowsSubprocessor[][]The register itself
mediaReactNodeLive asset on the tile, location8 in the demo
image{ src: string; alt: string }Backdrop behind the media tile
noticeTitlestringHeading in the subscribe panel
noticeBodystringParagraph in the subscribe panel
button{ label: string; href: string }Subscribe action
classNamestringExtra classes for the outer section
ts
type ActionLink = {
  label: string;
  href: string;
};

type Subprocessor = {
  name: string;
  purpose: string;
  region: string;
  since: string;
};

Behavior notes

More Legal blocks

View all Legal
PRO

legal35

Intellectual Property Notice

Displays trademark, patent, and copyright ownership information with registration details and usage restrictions. Suitable for product pages and legal sections.

PRO

legal57

Cookie Preference Centre

An interactive cookie notice with four hairline categories on live switches, a locked required group, save and reject-all actions, and a scrollable table naming every cookie, its purpose, and its retention.

PRO

legal52

Policy Document With Table Of Contents

A readable policy page with a last-updated line, a sticky hairline table of contents that scrolls smoothly to each anchored section, prose sections with accent-bulleted lists, and a soft contact panel at the end.

PRO

legal5

Data Processing Agreement Card

Shows DPA details with controller/processor parties, dates, and processing purposes. Perfect for displaying B2B data processing contracts with status badges.

FREE

legal55

Plain Words Terms Table

A legal section that sets each binding clause against a plain-language reading of it on hairline rows, keyed by clause references, with a precedence disclaimer under the last row.

PRO

legal50

Tabbed Platform Policies

Multi-section policy card using tabs to switch between data use, security, cookies, and user rights content. Compact way to present multiple policies.