20% offProwith

Buy now

App screenPro

Evals

shadcn add @detent-pro/evals
Detent Evals

Wire it up

All optional. With none, it plays exactly as it does here and hands over to whoever touches it.

Usage
<Evals
  cases={cases}
  baseline={baseline}
  candidate={candidate}
  onReview={(caseId, verdict) => {}}
  onShip={(candidate) => {}}
/>

Your data

cases

The suite: each case’s input, what’s expected, and both versions’ results.

EvalCase[]
Default—
baseline

The version in production.

string
Default'v12'
candidate

The version being tested.

string
Default'v13'
name

What’s being evaluated, in the header.

string
Default'Refund agent'
threshold

The score a case needs to pass, drawn across the chart.

number
Default0.7

What it tells you

onReview

Called when a person accepts or blocks a regression.

(caseId: string, verdict: 'accept' | 'block') => void
Default—
onShip

Called when a person ships the candidate.

(candidate: string) => void
Default—

Every block also takes accent, the one colour everything in it derives from; autoplay, which plays the demo until someone touches it; and className.