KQ-644 · SIGN/REQUEST
Sign Request
A signing sheet that rises inside the wallet's own frame from a shift on glide and lays the request out one row at a time, each arriving from a nudge behind a cascade delay. A scroll listener writes reading progress into a motion value that scales the hairline beneath the list, and reaching the end arms the sign control, whose fill sweeps in from the left on snap. Focus moves to the list on open and back to the opener on close, Tab is trapped, Escape rejects, and a press on the closed gate takes the reader to the end instead.
KQ-644 · SIGN/REQUEST
Waylight Walletbsn1q9f4…cwyd
128.40BSN on Basin
- Received · Coldbrook Bank+40.00
- Sent · Fernworks Supply−12.25
- Received · Gaugeworks+6.10
- Sent · Basinworks Exchange−3.00
Sign request idle
Install
One command — the source lands in your repo. Or copy it from the Code tab.
$ pnpm dlx shadcn@latest add @kinetiq/sign-request
Props
- open
- boolean
- default —
- Raises the sheet. Render it inside a relative frame.
- fields
- SignField[]
- default —
- The request in reading order: id, label, value or amount, and an optional warn tone.
- origin
- string
- default —
- Who is asking. Shown under the title and read out with it.
- title
- string
- default "Signature request"
- Sheet heading and the dialog's accessible name.
- format
- (value: number) => string
- default Intl.NumberFormat("en-US")
- Every amount goes through this — the sheet never invents a currency.
- signLabel
- string
- default "Sign"
- Copy on the arming control.
- onSign
- () => void
- default —
- Fires from the sign press, only ever while armed.
- onReject
- () => void
- default —
- Fires from the reject press, the scrim, or Escape.
- onArmedChange
- (armed: boolean) => void
- default —
- Fires from the scroll or resize callback that armed or disarmed the control.
| Prop | Type | Default | Description |
|---|---|---|---|
| open | boolean | — | Raises the sheet. Render it inside a relative frame. |
| fields | SignField[] | — | The request in reading order: id, label, value or amount, and an optional warn tone. |
| origin | string | — | Who is asking. Shown under the title and read out with it. |
| title | string | "Signature request" | Sheet heading and the dialog's accessible name. |
| format | (value: number) => string | Intl.NumberFormat("en-US") | Every amount goes through this — the sheet never invents a currency. |
| signLabel | string | "Sign" | Copy on the arming control. |
| onSign | () => void | — | Fires from the sign press, only ever while armed. |
| onReject | () => void | — | Fires from the reject press, the scrim, or Escape. |
| onArmedChange | (armed: boolean) => void | — | Fires from the scroll or resize callback that armed or disarmed the control. |