Terms consent
ProThe AI disclosure and terms, asked once per terms version. Says plainly what's AI and what a person still decides (the points come from the service), links the documents, and asks for an explicit agreement. If the terms change, the new version asks again and says what changed.
Preview
Install
With the Candor CLI
First time? Get started sets up the registry and theme. Or with shadcn directly: npx shadcn@latest add @candor/terms-consent
Brings in: button, locale, locked, utils · npm: lucide-react@^1.67.0
Usage
"use client"
import { TermsConsent } from "@/components/terms-consent"
export default function Example() {
return (
<TermsConsent
version="2026-11"
points={[
"Keel’s agents use AI models to read your code and propose changes; their answers can be wrong.",
"Nothing reaches Production until someone with the right role approves it.",
"Model providers don’t keep or train on your data.",
]}
documents={[
{ label: "Terms of service", href: "#terms" },
{ label: "Privacy", href: "#privacy" },
{ label: "AI use", href: "#ai-use" },
]}
onAgree={() => {}}
/>
)
}<TermsConsent>
| Prop | Type | Default | Description |
|---|---|---|---|
| versionrequired | string | — | e.g. "2026-11". |
| pointsrequired | string[] | — | What's AI and what people decide, one sentence each. |
| documentsrequired | { label: string; href: string }[] | — | The terms documents, linked and opened in a new tab. |
| changed | string | undefined | — | Set when this replaces a version the person agreed to. |
| onAgreerequired | (version: string) => void | — | Called with the terms version when the person agrees. |
| busy | boolean | undefined | false | Disables Agree while the agreement is being recorded. |
| className | string | undefined | — | Extra classes for the outer element. |
Strings
The fixed words, in English by default. Change any of them under termsConsent in <LocaleProvider strings={{ … }}>; the table is exported as termsConsentStrings.
| Key | English |
|---|---|
| beforeYouStart | Before you start |
| changed | Our terms changed |
| version | Terms version {version} |
| newTab | (opens in a new tab) |
| agreeLabel | I’ve read these and agree to them. |
| tickFirst | Tick the box to agree first. |
| agree | Agree and continue |