KQ-835 · POLICY/NOTE
Policy Note
An answer with a small tag beneath it that unfolds into a note explaining the constraint. The note is a sheet hinged at its top edge: pressing the tag rotates it from -90° to flat on glide while its wrapper glides to the measured height, and a hairline along its bottom edge drains across the read time, holding while the pointer or focus is on the note. When it runs out the note folds itself on the exit ease and the tag reads "Read" with a tick drawn on flick; Enter or Space toggles the tag and Escape folds the note and returns focus to it.
I can draft the overtime request for Friday and send it to your manager, but I can't approve it myself.
Folded · press why this answer
Install
One command — the source lands in your repo. Or copy it from the Code tab.
$ pnpm dlx shadcn@latest add @kinetiq/policy-note
Props
- answer
- string
- default —
- The answer the note explains.
- model
- string
- default —
- Whose answer it is; the header caption.
- code
- string
- default —
- The policy's short code, printed in mono: "Coldbrook house policy 4.2".
- title
- string
- default —
- The policy's name; labels the note region.
- note
- string
- default —
- One or two sentences on the constraint.
- open / defaultOpen
- boolean
- default false
- Controlled or initial unfolded state.
- onOpenChange
- (open: boolean, by: PolicyNoteReason) => void
- default —
- Fires from the press, Escape or the read-out timer that changed the state, with by as "press", "escape" or "read".
- readTime
- number
- default from the word count
- Milliseconds the note stays open once unfolded, by default the note's word count at a reading pace floored at three seconds; 0 or less keeps it open.
- tagLabel
- string
- default "Why this answer"
- The tag's copy before the note has been read.
- label
- string
- default —
- Names the answer region for assistive technology.
| Prop | Type | Default | Description |
|---|---|---|---|
| answer | string | — | The answer the note explains. |
| model | string | — | Whose answer it is; the header caption. |
| code | string | — | The policy's short code, printed in mono: "Coldbrook house policy 4.2". |
| title | string | — | The policy's name; labels the note region. |
| note | string | — | One or two sentences on the constraint. |
| open / defaultOpen | boolean | false | Controlled or initial unfolded state. |
| onOpenChange | (open: boolean, by: PolicyNoteReason) => void | — | Fires from the press, Escape or the read-out timer that changed the state, with by as "press", "escape" or "read". |
| readTime | number | from the word count | Milliseconds the note stays open once unfolded, by default the note's word count at a reading pace floored at three seconds; 0 or less keeps it open. |
| tagLabel | string | "Why this answer" | The tag's copy before the note has been read. |
| label | string | — | Names the answer region for assistive technology. |