ControlTestResult
Design and operating effectiveness, the sample, and every exception.
npx shadcn add @lopifi/control-test-resultExamples
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.
One control, one test, one conclusion: control id and description, owner, frequency, test type (design or operating-effectiveness), sample size against population, every exception (the sample item, what was found, the amount, the remediation), and the conclusion.
The grade uses the auditor's vocabulary from controls & audit: effective, control deficiency, significant deficiency, material weakness. Never a generic "issue". The wording is data. CONCLUSION_COPY is the default, and a firm with its own methodology passes conclusionCopy rather than forking the component.
A material weakness owns its surface, with a 2px negative border and an alert, as a failing IntegrityCheckPanel does.
The component asserts:
- A sample larger than the population is an error. One of the two figures is wrong.
- "Effective" with exceptions and no rationale is flagged. That conclusion can be right, but only with a reason.
- A
nullpopulation prints "population not stated", never "of 0". An exception with anullamount prints "Not quantified", never $0.00.
Accessibility: the conclusion is an icon plus a label, and its consequence is spelled out in a sentence.
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 ControlTestResult renders in, the calculators behind its figures, and the ledger payloads that feed it.
- ControlTestResult, 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/control-test-result