Review ladder
ProHow much a person reviews before agents act: the ladder from Advise to Full delegation. Each rung says what happens at it. A rung the account or the person's role doesn't allow stays visible, locked, with its reason, so the whole range is legible.
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/review-ladder
Usage
"use client"
import * as React from "react"
import type { ReviewLevel } from "@/lib/work"
import { ReviewLadder } from "@/components/review-ladder"
export default function Example() {
const [level, setLevel] = React.useState<ReviewLevel>("R3")
return <ReviewLadder className="max-w-2xl" value={level} onChange={setLevel} locked={{ R5: "Acme's policy keeps Production changes at R4 or below." }} />
}<ReviewLadder>
| Prop | Type | Default | Description |
|---|---|---|---|
| valuerequired | ReviewLevel | — | The current review level, R1 (Advise) to R5 (Full delegation). |
| onChange | ((level: ReviewLevel) => void) | undefined | — | Makes the rungs choosable; called with the level picked. |
| locked | Partial<Record<ReviewLevel, string | undefined>> | undefined | {} | Reasons a level can't be chosen. |
| className | string | undefined | — | Extra classes for the outer element. |
Strings
The fixed words, in English by default. Change any of them under reviewLadder in <LocaleProvider strings={{ … }}>; the table is exported as reviewLadderStrings.
| Key | English |
|---|---|
| label | Review level |
| R1 | Advise |
| R1Detail | Agents explain what to do. You make the change. |
| R2 | Draft |
| R2Detail | Agents prepare the change as a diff. You apply it. |
| R3 | Build & hold |
| R3Detail | Agents build and test in a test environment. Nothing ships until you sign off. |
| R4 | Ship with a window |
| R4Detail | Agents ship after tests pass, inside a window you set, with rollback ready. |
| R5 | Full delegation |
| R5Detail | Agents ship on their own. You see everything after. |