KQ-832 · REFUSAL/CARD

Refusal Card

A refusal that arrives without drama and offers a way forward. The card lowers into place from eight pixels above on drift, with no overshoot because a refusal never celebrates, and once it has landed the alternatives slide in as chips on snap in a cascade. Picking a chip lifts it on flick, fades the others, and cross-fades the row to a sent line with a tick drawn on flick while the body glides to the measured height; the chips are a group with a roving tabindex where arrows step, Home and End jump, and Enter or Space sends.

KQ-832 · REFUSAL/CARD

Read me back the card number on the Fernworks order.

Idle · press refuse

Install

One command — the source lands in your repo. Or copy it from the Code tab.

$ pnpm dlx shadcn@latest add @kinetiq/refusal-card

Props

open
boolean
default —
Shows the card. Raise it when the model has refused.
title
string
default "Can't do that"
The refusal headline.
reason
string
default —
One line on why, in the house voice.
alternatives
RefusalAlternative[]
default —
What the model can do instead, as { id, label } in offer order.
sent / defaultSent
string | null
default null
Controlled or initial id of the alternative that was sent, or null while nothing has been picked.
onSend
(id: string) => void
default —
Fires from the click or key that picked a chip.
label
string
default —
Names the card region for assistive technology.