KQ-650 · HARDWARE/NUDGE
Hardware Nudge
A prompt that waits on a physical signer. While the request is out the device outline pulses on a repeating tween — a breath repeats, and a spring is a single arrival — and a deadline bar drains linearly from a motion value that stops while the tab is hidden and resumes from what is left, with the seconds read straight into the text so the clock counts without re-rendering a frame of it. When the confirmation lands the button lights and the tick draws on flick while the device settles on recoil; a timeout does not celebrate, it dims and greys on a colour tween, and one button — send, cancel or send again — keeps the card the same height in every state.
Device Fieldline Signer · State idle
Install
One command — the source lands in your repo. Or copy it from the Code tab.
$ pnpm dlx shadcn@latest add @kinetiq/hardware-nudge
Props
- status / defaultStatus
- "idle" | "waiting" | "confirmed" | "expired"
- default "idle"
- Controlled or initial state of the request.
- onStatusChange
- (status: NudgeStatus) => void
- default —
- Fires from the press or the drain that changed the state.
- deviceName
- string
- default "Fieldline Signer"
- The device being waited on; named in every state sentence.
- amount
- number
- default —
- Amount awaiting confirmation, in major units of the reporting currency.
- format
- (value: number) => string
- default Intl.NumberFormat("en-US", { style: "currency", currency: "USD" })
- Prints the amount. The default pins an explicit locale so server and client agree.
- units / symbol
- number / string
- default —
- Native amount and its ticker, printed above the reporting figure.
- to
- string
- default —
- Destination address; shown head and tail in mono with a full title.
- timeoutMs
- number
- default 30000
- Milliseconds before the request expires; 0 waits forever and hides the deadline.
- onExpire
- () => void
- default —
- Fires from the drain's completion when the request times out.
- onRetry
- () => void
- default —
- Fires from the press that sent or re-sent the request.
| Prop | Type | Default | Description |
|---|---|---|---|
| status / defaultStatus | "idle" | "waiting" | "confirmed" | "expired" | "idle" | Controlled or initial state of the request. |
| onStatusChange | (status: NudgeStatus) => void | — | Fires from the press or the drain that changed the state. |
| deviceName | string | "Fieldline Signer" | The device being waited on; named in every state sentence. |
| amount | number | — | Amount awaiting confirmation, in major units of the reporting currency. |
| format | (value: number) => string | Intl.NumberFormat("en-US", { style: "currency", currency: "USD" }) | Prints the amount. The default pins an explicit locale so server and client agree. |
| units / symbol | number / string | — | Native amount and its ticker, printed above the reporting figure. |
| to | string | — | Destination address; shown head and tail in mono with a full title. |
| timeoutMs | number | 30000 | Milliseconds before the request expires; 0 waits forever and hides the deadline. |
| onExpire | () => void | — | Fires from the drain's completion when the request times out. |
| onRetry | () => void | — | Fires from the press that sent or re-sent the request. |