Plain Words Terms Table

Terms, translated

The contract on the left, what we actually mean on the right

The wording on the left is the binding text. The wording on the right is not, but it is what we would say if you asked us on a call.

The clauseIn plain words
4.1

Customer retains all right, title and interest in Customer Data. Provider is granted a limited licence to process Customer Data solely to deliver the Services.

Your records stay yours. We only touch them to run the product, never to train anything or sell anything.

6.3

Either party may terminate this Agreement for convenience on thirty (30) days' written notice, without penalty or early termination charge.

You can leave with a month's notice, and it costs nothing to go.

6.5

Upon termination, Provider shall make Customer Data available for export in a machine-readable format for a period of ninety (90) days.

For three months after you leave you can still pull everything out, in a format another system can read.

9.2

Provider shall notify Customer without undue delay, and in any event within seventy-two (72) hours, of becoming aware of a Personal Data Breach.

If something goes wrong with your data you hear it from us within three days, even when it is embarrassing.

11.4

Provider shall give not less than thirty (30) days' notice of any change to the list of Subprocessors, during which Customer may object.

We tell you a month before anyone new gets involved, and you get to say no.

Where the two columns disagree, the clause wins. The plain wording is a reading aid, not a contract.

Read the full agreement
About this block

Plain Words Terms TableFREE

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.

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.

Free block

This block is free. No license or account is required: install it with the CLI and use it in unlimited projects.

Installation

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/legal55"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/legal55"

This installs the block to components/beste/block/legal55.tsx plus the badge23 and button21 components it uses for the eyebrow and the action.

Quick start

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

tsx
import { Legal55, legal55Demo } from "@/components/beste/block/legal55";

export default function TermsPage() {
  return <Legal55 {...legal55Demo} />;
}

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

tsx
import { Legal55 } from "@/components/beste/block/legal55";

export default function TermsPage() {
  return (
    <Legal55
      badge={{ label: "Terms, translated" }}
      heading="The contract on the left, what we actually mean on the right"
      description="The wording on the left is the binding text."
      columnLabels={{ clause: "The clause", plain: "In plain words" }}
      pairs={[
        {
          reference: "4.1",
          clause:
            "Customer retains all right, title and interest in Customer Data. Provider is granted a limited licence to process Customer Data solely to deliver the Services.",
          plain: "Your records stay yours. We only touch them to run the product.",
        },
        {
          reference: "6.3",
          clause:
            "Either party may terminate this Agreement for convenience on thirty (30) days' written notice.",
          plain: "You can leave with a month's notice, and it costs nothing to go.",
        },
      ]}
      disclaimer="Where the two columns disagree, the clause wins."
      button={{ label: "Read the full agreement", href: "/legal/terms" }}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Eyebrow above the hairline rule, rendered through Badge23
headingstringSection heading in the left column of the header
descriptionstringSupporting paragraph, right-aligned from md up
columnLabels{ clause: string; plain: string }The two column headings
pairsClausePair[][]Clause and translation pairs, keyed by reference
disclaimerstringPrecedence note under the last row
button{ label: string; href: string }Outline link to the full agreement
classNamestringExtra classes for the outer section
ts
type ActionLink = {
  label: string;
  href: string;
};

type ClausePair = {
  reference: string;
  clause: string;
  plain: string;
};

Behavior notes

  • The plain wording is the emphasised column: clause renders in text-muted-foreground and plain in text-foreground. That inversion is intentional, since the translation is what people are here to read, while the clause is the reference.
  • disclaimer exists because of that inversion. Stating which column is binding is what makes the whole layout safe to publish, so treat it as required in practice even though the type marks it optional.
  • The column header row is hidden md:grid and opens with an empty aria-hidden span, which keeps the two labels aligned over their columns rather than over the reference track.
  • Because the header row is hidden below md, its margin would collapse there. The rows container carries mt-12 md:mt-0 to compensate.
  • Rows use border-b matching the header's border-b, so the rules read as one continuous table.
  • The reference is a fixed 4rem grid track from md up. Below md the grid collapses to one column and reference, clause and translation stack in that order.
  • reference is copy, so any numbering scheme works and the block never renumbers or sorts.

More Legal blocks

View all Legal
PRO

legal47

Data Retention Table

Table-based data retention schedule showing category, retention period, and legal basis per row. Ideal for GDPR compliance and privacy documentation.

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

legal51

Rights Comparison Table

Two-column comparison table showing data rights and privacy features by plan tier. Badge-styled values for Free vs Pro plans.

PRO

legal59

Readable Policy

A legal page meant to be read: a serif heading that settles in word by word, a revision date and a plain intro, then a sticky numbered contents list with anchor links beside ruled sections of serif titles and paragraphs, with a pill action for questions.

PRO

legal42

Terms of Service

Text-focused terms of service card with numbered sections. Each section has a heading and paragraph content for full legal text.

PRO

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.