- document
- SignOffDocument
- default defaultSignOffDocument
- The document: { title, version, owner, updated, sections: { heading, body }[] }.
- reviewers / defaultReviewers
- SignOffReviewer[]
- default — / defaultSignOffReviewers
- Reviewers in tab order as { id, name, role, verdict: "pending" | "approved" | "changes", comment?, at? }, controlled or initial; a verdict that arrives after the first paint lands as a stamp.
- onReviewersChange
- (reviewers) => void
- default —
- Fires with every reviewer after a verdict is recorded here.
- viewer
- string | null
- default "noor"
- The reviewer the visitor is: only their row offers Approve and Request changes, the rest offer Remind. null records verdicts for anyone (a facilitator).
- onApprove
- (reviewerId) => void
- default —
- A reviewer approved.
- onRequestChanges
- (reviewerId, comment) => void
- default —
- A reviewer requested changes, with the required comment.
- onRemind
- (reviewerId) => void
- default —
- Remind was pressed for a reviewer who has not answered.
- onComplete
- (outcome: "approved" | "changes") => void
- default —
- The last verdict landed — from the press that made it, or once after the host's update that did.
- stampStyle
- "round" | "rect" | "initial"
- default "round"
- A round seal with the verdict on an arc, a rectangular rubber stamp with the date, or a circled monogram with a verdict badge.
- density
- "compact" | "regular" | "roomy"
- default "regular"
- Stamp size (52/60/68px, smaller below a 30rem container), row padding and type.
- accent
- string
- default "var(--success)"
- Approval ink, the rail and Approve — any CSS colour, taken at a fixed lightness so the ink reads in both themes. Changes requested stays muted red.
- remindCooldownMs
- number
- default 4000
- How long Remind rests (aria-disabled, reading Reminded) after a press, in ms.
- now
- number | Date
- default defaultSignOffNow
- The moment relative times count from; new verdicts are dated with it.
- status
- "ready" | "loading" | "error"
- default "ready"
- Loading shows skeleton stamps, reviewers and text; error shows Try again.
- onRetry
- () => void
- default —
- Try again was pressed after the round failed to load.
- height
- number
- default 540
- The surface's height in px; the document and reviewers scroll inside it.
- sound
- boolean
- default false
- Play the thock of a stamp the visitor pressed, at touch-down (lower for changes requested).
- disabled
- boolean
- default false
- Read only: verdicts show; nothing can be stamped or reminded.
- className
- string
- default —
- Classes for the surface.