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.