# Beste UI

> Beautiful, accessible blocks, pieces and components for shadcn/ui and Tailwind CSS, built for React and Next.js. Install one with the shadcn CLI and the code is yours to edit: no runtime dependency, nothing to upgrade.

Markdown rendition of https://ui.beste.co/block/legal58. Every page on the site has one: add `.md` to any address, or send `Accept: text/markdown`.

Last updated: 2026-08-12

Whole catalog for LLMs: https://ui.beste.co/llms.txt. Registry index: https://ui.beste.co/r/registry.json

---
1. /
2. [Blocks](/blocks)
3. /
4. [Legal](/blocks/legal)
5. /
6. Reprint Permissions In Three Columns

# Reprint Permissions In Three Columns[PRO](/pricing)

A licence written as three plain columns, what is allowed outright, what needs an email first and what is refused, each item marked by the icon for its column.

ViewCodeDocs

Base UI

![](https://oud.pics/sm/l/npm.svg)`npx shadcn add https://ui.beste.co/r-base/legal58`

## Legal58: Reprint Permissions In Three Columns

A licence written as three plain columns, what is allowed outright, what needs an email first and what is refused, each item marked by the icon for its column.

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 NowUpgrade Now](/pricing)

### Installation

Swap `YOUR_EMAIL` and `YOUR_KEY` for the email and license key on your account. Find your license key on your [account page](/account).

**Radix flavor**

bashCopy

```
npx shadcn add "https://ui.beste.co/r/legal58?email=YOUR_EMAIL&license_key=YOUR_KEY"
```

**Base UI flavor**

bashCopy

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

This installs the block to `components/beste/block/legal58.tsx` and the `badge6` component it uses for the eyebrow (installed to `components/beste/component/badge6.tsx`).

### Quick start

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

tsxCopy

```
import { Legal58, legal58Demo } from "@/components/beste/block/legal58";

export default function ReprintsPage() {
  return <Legal58 {...legal58Demo} />;
}
```

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

tsxCopy

```
import { Legal58 } from "@/components/beste/block/legal58";

export default function ReprintsPage() {
  return (
    <Legal58
      eyebrow="Reprints"
      heading="What you may do with anything published here"
      description="Written in plain words instead of a licence."
      groups={[
        {
          tone: "allowed",
          title: "Yes, go ahead",
          items: ["Quote a few paragraphs with a link back.", "Translate anything, if the translation is free to read."],
        },
        {
          tone: "ask",
          title: "Ask us first",
          items: ["Republishing a full piece on another site."],
        },
        {
          tone: "refused",
          title: "No",
          items: ["Training a model on the archive."],
        },
      ]}
      contactText="Anything that is not on this page?"
      contactLink={{ label: "Ask and we will answer in a day", href: "/contact" }}
    />
  );
}
```

### Props

| Prop        | Type                | Default | Description                          |
| ----------- | ------------------- | ------- | ------------------------------------ |
| eyebrow     | string              | –       | Badge6 label above the hairline rule |
| heading     | string              | –       | Section heading under the rule       |
| description | string              | –       | Supporting paragraph                 |
| groups      | PermissionGroup\[\] | \[\]    | One column per permission tone       |
| contactText | string              | –       | Line in the panel under the columns  |
| contactLink | ContactLink         | –       | Link beside that line                |
| className   | string              | –       | Extra classes for the outer section  |

tsCopy

```
type PermissionGroup = {
  tone: "allowed" | "ask" | "refused";
  title: string;
  items: string[];
};

type ContactLink = {
  label: string;
  href: string;
};
```

### Behavior notes

* `tone` picks the marker: a check for allowed, an envelope for ask first and a cross for refused. The column title is separate, so the wording is yours while the icon stays consistent.
* Only the refused column mutes its marker. The other two take the accent, which keeps the page from reading as mostly prohibition.
* Items are plain strings, so a permission is one line rather than a nested object with a title and a description.
* The three columns are equal width and stack in order, so "no" is always read last.

## More Legal blocks

[View all Legal](/blocks/legal)

[](/block/legal45)

PRO

legal45

### End User License Agreement

EULA card with numbered clauses covering license grant, restrictions, IP, warranties, and liability. Each clause has a title and full legal text.

[](/block/legal56)

PRO

legal56

### Data Rights Request

A legal section listing four data rights as hairline cards, each with an icon tile and a response window, beside a soft panel holding a working request form with a request type, email, and free-text detail.

[](/block/legal31)

PRO

legal31

### Open Source Attribution

Displays open source package attributions with license types, authors, and links to repositories. Includes a search filter for large dependency lists. Required for OSS license compliance.

[](/block/legal13)

PRO

legal13

### Software License Card

Displays license type with allowed permissions and limitations in checkmark format. Perfect for open-source projects or software documentation pages.

[](/block/legal4)

PRO

legal4

### GDPR Data Rights Panel

Lists user data rights (access, rectify, erase, restrict, export) with request buttons. Perfect for GDPR compliance portals allowing users to exercise their rights.

[](/block/legal54)

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.

## Ship the interface, keep the code.

New blocks, pieces and components every week. Install one with a command and it is yours to edit. No runtime dependency, no upgrade path to fight.

[Browse the libraryBrowse the library](/blocks)[See pricingSee pricing](/pricing)

### Library

* [Blocks](/blocks)
* [Pages](/pages)
* [Pieces](/pieces)
* [Components](/components)
* [Search](/search)

### Learn

* [Docs](/docs)
* [AI & MCP](/docs/mcp)
* [Blog](/blog)
* [Free tools](/tools)
* [What's new?](/changelog)
* [Website Builder](https://beste.co)

### More

* [Pricing](/pricing)
* [Referrals](/referrals)
* [License](/license)
* [GitHub](https://github.com/beste-co/beste-ui)

### Shadcn Blocks

* [Shadcn Hero Blocks](/blocks/hero)
* [Shadcn Feature Blocks](/blocks/feature)
* [Shadcn Pricing Blocks](/blocks/pricing)
* [Shadcn CTA Blocks](/blocks/cta)
* [Shadcn FAQ Blocks](/blocks/faq)
* [Shadcn About Blocks](/blocks/about)
* [Shadcn Stats Blocks](/blocks/stats)
* [Shadcn Footer Blocks](/blocks/footer)
* [Shadcn Navigation Blocks](/blocks/navigation)
* [Shadcn Auth Blocks](/blocks/auth)
* [Shadcn Ecommerce Blocks](/blocks/ecommerce)
* [Shadcn Portfolio Blocks](/blocks/portfolio)
* [Shadcn Showcase Blocks](/blocks/showcase)
* [Shadcn Careers Blocks](/blocks/careers)
* [Shadcn Onboarding Blocks](/blocks/onboarding)
* [Shadcn Coming Soon Blocks](/blocks/coming-soon)
* [Shadcn Post Blocks](/blocks/post)
* [Shadcn Legal Blocks](/blocks/legal)
* [Shadcn Workflow Blocks](/blocks/workflow)
* [Shadcn News Blocks](/blocks/news)

© 2026, [Beste](https://beste.co). All rights reserved.