PolicyAttestation
Who has acknowledged which policy version, and who has not.
npx shadcn add @lopifi/policy-attestationExamples
The same component, case by case. Each stage is the shipped code with the props it shows; switch to Code for the usage.
How it behaves
What it renders, what it refuses to render, and why. The same paragraphs as the family spec, so the two can’t disagree.
A policy's name, version and effective date, who must attest, who has, who hasn't, and the overdue count.
Acknowledgments bind to a version, as approvals do (controls & audit §3). Someone who acknowledged v3.0 hasn't acknowledged v3.1. They're counted as outstanding, and the row says "Acknowledged 3.0, not this version" so an old signature never stands in for a new policy.
Overdue is every outstanding attestor once asOf passes dueBy. Before the deadline the overdue count is zero, and the outstanding list says why each person is on it. onRemind adds a single "Remind N" action for the outstanding attestors.
Refuses to animate the progress bar. It's a count, and a bar that grows is a number being animated.
Edge cases: nobody assigned to attest says so, rather than showing 0 of 0 as complete.
Accessibility: the bar is a progressbar with its value and an accessible label ("3 of 5 attested"). The counts are a description list.
The accounting it encodes
The concepts this component renders, each defined once in the lexicon.
More in Tax & compliance
See also
Where this component is specified, defined and running.
Elsewhere in the system
The live section PolicyAttestation renders in, the calculators behind its figures, and the ledger payloads that feed it.
- PolicyAttestation, runningThe compliance showcase — live, with theme, density, grayscale and reduced-motion switches.
- Tax & complianceControlTestResult sits beside them and speaks their idiom. Every component in this family takes an explicit asOf. "Today" is never the client clock, so a server render, a printed copy and a screenshot agree on what is late. Shared types live in src/ledger/lib/compliance.types.ts; the tax-ID checks l
Components are copied into your repository and meant to be edited. Rounding policy, fiscal calendar and compliance copy differ per company.
Release notes
Get an email when Tax & compliance changes
Your copy doesn’t update itself when we fix something here.
- One email when a Tax & compliance component needs a migration
- Nothing when nothing changes
Or install it now
npx shadcn add @lopifi/policy-attestation