ReportingPackage
A board or lender pack as one object: contents, basis, review state.
npx shadcn add @lopifi/reporting-packageExamples
The same component, case by case. Each stage is the shipped code with the props it shows; switch to Code for the usage.
Approval on an earlier version
The pack changed after it was approved, so the approval is void and the cover returns to Draft.
Preparer cannot approve
Segregation of duties is enforced: an approval by the preparer is recorded and does not count.
A section on another basis
A covenant schedule on the cash basis is flagged in the contents, never mixed in silently.
With its sections
Sections that carry their content are linked from the contents and open a new printed page each.
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 board or lender pack as one object: a cover (ReportHeader), a contents list of sections (statements, key figures, commentary, schedules, notes) with page numbers and anchors, prepared / reviewed / approved sign-offs with names, timestamps and versions, and one basis and period for the whole pack.
- The cover states the pack's basis, period and currency once. A section that departs from it (a cash-basis covenant schedule, a trailing-twelve-month KPI page) declares
basis,currencyorperiodLabel, and the contents flag the departure in words. A pack never mixes bases silently. - "Draft" is added to the cover until all three sign-offs stand on the version being read. No caller can print an unapproved pack without it.
- Approvals bind to a version. A sign-off recorded against an earlier version is shown as void, with both versions named.
- Segregation of duties is enforced, not configurable. A review or approval by the preparer is recorded, struck through, and doesn't count.
- No signatures are drawn. A sign-off is the recorded approval: name, title, timestamp with zone, version.
- Sections that carry
contentare linked from the contents and render below, each opening a printed page; sections without it list their page and link nowhere. - Server-safe. The contents are fragment links; nothing holds state.
The accounting it encodes
The concepts this component renders, each defined once in the lexicon.
More in Statements
See also
Where this component is specified, defined and running.
Elsewhere in the system
The live section ReportingPackage renders in, the calculators behind its figures, and the ledger payloads that feed it.
- ReportingPackage, runningThe statements showcase — live, with theme, density, grayscale and reduced-motion switches.
- StatementsNo component library ships a <BalanceSheet />. That's the biggest gap in the market, and the reason Lopifi exists. Specs for 16 React components: StatementTable, StatementRow, ProfitAndLoss, BalanceSheet and 12 more.
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 Statements changes
Your copy doesn’t update itself when we fix something here.
- One email when a Statements component needs a migration
- Nothing when nothing changes
Or install it now
npx shadcn add @lopifi/reporting-package