caliper uidocs

Triage deck

Pro

A queue worked one card at a time: drag right to accept or left to decline as the card names the choice, or use the buttons and arrow keys, with undo.

Installs components/ui/triage-deck.tsxDepends on @radix-ui/react-slot, lucide-reactMotion honours reduced motion
pnpm dlx shadcn@latest add @caliper/triage-deck
ApproveDecline
Tomás Ferreira

Hotel Avenida, 2 nights

€412.00

For: Ostra workshop

4 left

When to use #

Use it for

  • Approvals, candidate screening and content moderation.
  • Any queue of yes-or-no decisions.

Skip it when

  • Decisions that need comparing items; use a table.

Installation #

terminal
pnpm dlx shadcn@latest add @caliper/triage-deck

Adds its 3 files to components/ui/, each with its own stylesheet, and installs their packages. Pro installs with your access token, set up once per project. See Pro access. The first part also adds Caliper UI’s tokens; import them once as in Installation.

Usage #

Import it from your copy of the source. The example behind the preview comes with the source.

example.tsx
import { TriageDeck } from "@/components/ui/triage-deck"

The worked example comes with Pro

The 47-line example behind the preview opens here with a Pro or Team licence.

Checking your licence…

API reference #

TriageDeck

component
PropTypeDefaultDescription
items *readonly TriageItem[]—The queue, top card first.
onDecide *(id: string, choice: "accept" | "decline") => void—
onUndo(() => void)—Puts the last decided card back on top.
acceptLabelstring"Approve"
declineLabelstring"Decline"
classNamestring—

Accessibility #

It exposes status semantics, with aria-label and aria-hidden kept in step with state. Changes that matter are announced through a live region.

KeyBehaviour
→Moves to the next item or value.
←Moves to the previous item or value.

Motion #

It checks prefers-reduced-motion itself and settles immediately instead of travelling. Every state is still reachable.