KQ-762 · PERMISSION/ASK
Permission Ask
A risky tool call held at the gate. When the host opens the ask a card rises beneath the call row from 16px below on snap while the frame grows to a measured height on glide; Allow is disarmed as it arrives and a hairline fill runs along its foot on a linear tween for armDelay before the control enables. Deny sinks the card on the exit ease and greys the row; Allow lifts it away. It is an alert dialog: focus lands on Deny, Tab cycles the two answers, Escape denies, and focus returns to where it was.
KQ-762 · PERMISSION/ASK
write_fileops/rota-2026-w37.csvHeld
Idle · press ask
Install
One command — the source lands in your repo. Or copy it from the Code tab.
$ pnpm dlx shadcn@latest add @kinetiq/permission-ask
Props
- open
- boolean
- default false
- Raises the card. Close it from onAllow or onDeny.
- tool
- string
- default —
- The tool's name, printed in mono on the row and the card.
- target
- string
- default —
- What the call acts on, printed after the name.
- reason
- string
- default —
- Why the call needs asking, in one sentence.
- risk
- "low" | "medium" | "high"
- default "medium"
- Risk level printed on the card's chip, by word and tone.
- armDelay
- number
- default 700
- Milliseconds before Allow can be pressed. 0 arms it at once.
- decision
- "allowed" | "denied"
- default —
- The outcome, owned by the host; greys the row when denied.
- onAllow
- () => void
- default —
- Fires from the armed Allow control.
- onDeny
- () => void
- default —
- Fires from Deny or Escape.
- onArmed
- () => void
- default —
- Fires once when the Allow control arms.
- label
- string
- default —
- Names the frame for assistive technology.
| Prop | Type | Default | Description |
|---|---|---|---|
| open | boolean | false | Raises the card. Close it from onAllow or onDeny. |
| tool | string | — | The tool's name, printed in mono on the row and the card. |
| target | string | — | What the call acts on, printed after the name. |
| reason | string | — | Why the call needs asking, in one sentence. |
| risk | "low" | "medium" | "high" | "medium" | Risk level printed on the card's chip, by word and tone. |
| armDelay | number | 700 | Milliseconds before Allow can be pressed. 0 arms it at once. |
| decision | "allowed" | "denied" | — | The outcome, owned by the host; greys the row when denied. |
| onAllow | () => void | — | Fires from the armed Allow control. |
| onDeny | () => void | — | Fires from Deny or Escape. |
| onArmed | () => void | — | Fires once when the Allow control arms. |
| label | string | — | Names the frame for assistive technology. |