Policy Document With Table Of ContentsPRO

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.

Legal52: Policy Document With Table Of Contents

Readable policy page: an eyebrow, a two-column heading, and a last-updated line above a sticky hairline table of contents that jumps to each anchored section, beside prose sections with accent-bulleted lists and a soft contact panel at the end.

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

Base UI flavor

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

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

Quick start

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

tsx
import { Legal52, legal52Demo } from "@/components/beste/block/legal52";

export default function PrivacyPage() {
  return <Legal52 {...legal52Demo} />;
}

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

tsx
import { Legal52 } from "@/components/beste/block/legal52";

export default function PrivacyPage() {
  return (
    <Legal52
      badge={{ label: "Legal" }}
      heading="Privacy policy"
      description="What we hold, why we hold it, and how you get it back."
      updated="Last updated April 2, 2026"
      tocLabel="On this page"
      sections={[
        {
          slug: "what-we-collect",
          title: "What we collect",
          paragraphs: ["We collect the account details your team enters and technical logs."],
          bullets: ["Account data: names, work emails, roles", "Technical data: device and IP"],
        },
        {
          slug: "your-rights",
          title: "Your rights",
          paragraphs: ["You can export or delete a workspace at any time, in an open format."],
        },
      ]}
      contact={{
        title: "Questions about any of this?",
        description: "Our data protection contact answers policy questions directly.",
        button: { label: "Contact the privacy team", href: "/contact" },
      }}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Monospace eyebrow above the hairline rule, rendered via Badge23
headingstringDocument title, rendered as the h1
descriptionstringPlain-language summary, right-aligned from md up
updatedstringLast-updated line under the heading row
tocLabelstringLabel above the table of contents
sectionsSection[][]Document sections, each anchored by its slug
contactContactSoft panel at the end of the document
classNamestringExtra classes for the outer <section>
ts
type ActionLink = { label: string; href: string };

type Section = {
  slug: string;
  title: string;
  paragraphs: string[];
  bullets?: string[];
};

type Contact = {
  title: string;
  description: string;
  button: ActionLink;
};

Behavior notes

More Legal blocks

View all Legal
PRO

legal43

Privacy Policy Page

Full privacy policy content card with sections covering data collection, usage, sharing, retention, rights, and security. Ideal for dedicated privacy pages.

PRO

legal2

Privacy Policy Accordion

Shows privacy policy content with expandable accordion sections for each topic. Perfect for organizing lengthy privacy policies into scannable segments.

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.

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

legal15

Data Retention Policy

Lists data categories with types, retention periods, and deletion methods. Perfect for transparency pages explaining how long user data is stored.

PRO

legal17

Document Version Timeline

Shows document revision history in a vertical timeline with version numbers and summaries. Perfect for tracking changes to terms, policies, or legal agreements.