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
PropDescriptionDefault
casesThe suite: each case’s input, what’s expected, and both versions’ results.
EvalCase[]Default—
baselineThe version in production.
stringDefault
'v12'candidateThe version being tested.
stringDefault
'v13'nameWhat’s being evaluated, in the header.
stringDefault
'Refund agent'thresholdThe score a case needs to pass, drawn across the chart.
numberDefault
0.7What it tells you
PropDescriptionDefault
onReviewCalled when a person accepts or blocks a regression.
(caseId: string, verdict: 'accept' | 'block') => voidDefault—
onShipCalled when a person ships the candidate.
(candidate: string) => voidDefault—
Every block also takes accent, the one colour everything in it derives from; autoplay, which plays the demo until someone touches it; and className.