Skip to content

Component catalog

179 components across 13 families. The complete accounting and finance stack.

Families 1–8 are the design layer — primitives, surfaces, tables, charts. Families 9–13 are the domain layer — the general ledger, receivables, payables, the close, controls, consolidation, and metrics. The domain layer is where this stops being a component kit and starts being accounting software.


1. Primitives — 15 →

The layer everything else composes. Build these first; nothing above them is right until they are.

# Component One line
1 Money The core primitive. A monetary value, formatted correctly.
2 Delta A signed change, with polarity and a redundant non-color cue.
3 Figure A large display numeral with automatic size step-down.
4 Percent Percent vs. percentage points, explicitly discriminated.
5 Rule Single / double / section accounting rule lines.
6 StatusPill Payment and reconciliation states.
7 Sparkline Inline trend, one-shot draw.
8 Trend Arrow + delta + optional sparkline, composed.
9 AsOf Timestamp with live relative formatting and a stated timezone.
10 Redacted Masked value with reveal.
11 Reference Copyable transaction/account ID with disambiguated glyphs.
12 CurrencyBadge ISO code + optional flag.
13 EntityMark Bank/merchant logo with the full fallback ladder.
169 Tooltip Hover/focus restatement. Never the only home of a fact.
170 InfoTip The ⓘ. Extra context that survives touch, because it opens on press.

2. Cards — 10 →

# Component One line
14 BalanceCard The hero: one trusted number.
15 KpiCard Metric + delta + optional sparkline.
16 AccountCard Bank account with available vs. current.
17 PaymentMethodCard The physical card object. 3D flip, pointer tilt.
18 RunwayCard Months of runway with a burn line.
19 InvoiceCard Invoice summary with aging state.
20 SubscriptionCard Recurring charge with next-billing.
21 AnomalyCard A flagged deviation with its explanation.
22 GoalCard Target vs. actual with a progress rule.
23 StatCard The minimal label+value card.

3. Payments — 14 →

# Component One line
24 AmountInput The hardest input in fintech.
25 CurrencySelect Searchable, with recents.
26 PayeeSelect Recipient picker with fuzzy search and last-paid.
27 PaymentForm Amount → payee → method → date → memo.
28 PaymentMethodList Selectable method cards.
29 CheckoutSummary Itemized total with fees and tax.
30 ConfirmPaymentDialog Amount, destination, timing. Hold-to-confirm.
31 PaymentStatusTimeline Submitted → sent → settled, with real timestamps.
32 PaymentSuccess The sanctioned delight moment.
33 ReceiptSheet Printable/shareable receipt.
34 PayoutSchedule Upcoming payouts calendar.
35 CardInput PAN / expiry / CVC with correct autocomplete.
36 BankAccountInput Routing + account with checksum validation.
37 RecurringSchedule Frequency, end condition, preview of next 3.

4. Swaps & FX — 9 →

# Component One line
38 SwapWidget From/to with the flip. The signature component.
39 RateLine A rate with its timestamp. Never one without the other.
40 RateLock Locked rate with a countdown and expiry behavior.
41 ConversionBreakdown Amount → fee → rate → recipient gets. Every line.
42 CurrencyPairChart Rate history with a period selector.
43 RateTicker Live multi-pair ticker with value flash.
44 SlippageControl Tolerance setting with an explicit worst case.
45 SwapRoute Multi-hop path visualization.
46 FxExposure Position by currency with unrealized gain/loss.

5. Ledger & tables — 16 →

# Component One line
47 TransactionTable The workhorse. Virtualized, sticky, priority-collapsing.
48 TransactionRow Desktop row.
49 TransactionCard The mobile re-rank.
50 TransactionDetail Full detail sheet with attachments and audit trail.
51 LedgerTable Double-entry with debit/credit columns and a balance check.
52 AgingTable AR/AP buckets, 0-30-60-90+.
53 ReconciliationView Two-pane matcher. The match animation.
54 CategoryPicker Hierarchical with rule creation.
55 FilterBar URL-param-backed filters with resolved-value chips.
56 BulkActionBar Selection count + actions, safe-area aware.
57 ColumnManager Show/hide/reorder with drag.
179 GroupPicker One cut through a table, with subtotals per group.
58 ExportMenu CSV/XLSX/PDF with a stated scope.
171 TableColumns Sort and resize for a table that renders on the server.
172 ColumnHeader The sortable, draggable header cell.
173 PeriodGrid The ruled grid. Frozen panes, hidden columns, hover change, ⌘C.

6. Statements — 12 →

The largest gap in the market. Nothing else has these.

# Component One line
59 StatementTable The shared shell: hierarchy, periods, rules.
60 StatementRow Indent level, subtotal, total, expand.
61 ProfitAndLoss P&L with period comparison and variance.
62 BalanceSheet Assets / liabilities / equity, with the balance check.
63 CashFlowStatement Operating / investing / financing.
64 StatementToolbar Basis, period, comparison, currency, consolidation.
65 PeriodPicker Fiscal-aware. Never assumes January.
66 VarianceCell Absolute + percent + significance flag.
67 FluxAnalysis Period-over-period explanations.
68 DrilldownSheet Statement line → the GL entries behind it.
69 TrialBalance All accounts with the debit=credit proof.
70 CloseChecklist Tasks, owners, blockers, sign-off.

7. Dashboard & charts — 11 →

# Component One line
71 DashboardShell Responsive grid with optional rearrange.
72 KpiRow 2–4 KPI cards with aligned baselines.
73 MoneyChart Line/area with a money axis and negative-aware baseline.
74 MoneyBarChart Grouped/stacked, zero-baseline origin, hatched negatives.
75 WaterfallChart The P&L bridge. Essential and rare.
76 CategoryBreakdown Ranked bars, not a pie.
77 CashCalendar Daily heatmap of cash movement.
78 CandlestickChart For FX/crypto pairs.
79 ChartLegend Interactive, keyboard-navigable.
80 ChartTooltip Touch-persistent readout.
81 DataTableToggle Every chart's accessible table equivalent.

8. System & states — 9 →

# Component One line
82 EmptyState Three variants. Always one next action.
83 ErrorState With the financial reassurance sentence.
84 Skeleton Structural, per-component.
85 StaleIndicator Last-synced + retry.
86 Toast Sonner, configured to our tokens.
87 CommandPalette Motionless. Money-aware search.
88 Sheet Vaul, configured. The mobile primary overlay.
89 HoldToConfirm Irreversible actions, with accessible fallbacks.
90 DensityToggle Persisted, synced, phone-clamped.

The domain layer

Model documented in docs/domain/. These are the families no other component library ships.

9. Accounting core (GL) — 18 →

# Component One line
91 JournalEntry Debit and credit as two columns. No signed-column variant.
92 JournalEntryForm Line grid with live balance check and dimension capture.
93 JournalEntryTable All entries, with the gapless-numbering check.
94 AccountPicker Shows the normal balance. Blocks non-postable accounts.
95 ChartOfAccounts Hierarchy, statement mapping, unsupported-account flags.
96 AccountRegister GL detail with a running balance.
97 DimensionPicker Entity always required; renders what the account demands.
98 AdjustingEntryForm Templated by type. Auto-reverse defaults on for accruals.
99 RecurringEntryTemplate Template editable; instances read-only.
100 EntryReversalDialog Hold-to-confirm. Never a delete.
101 ScheduleTable One shell, seven presets. Prepaids through debt.
102 RollForward Opening → movements → closing → tie. The universal shape.
103 AccountTieOut Every BS account, proven against its evidence.
104 SchedulePreview What the schedules will post, before they post.
105 RevenueWaterfall Deferred balance recognizing by future period.
106 DepreciationSchedule Book and tax in parallel. In-service date, not purchase date.
107 LeaseSchedule ROU asset and liability on diverging curves.
108 AllowanceRollForward With the methodology shown, not just the number.

10. Receivables (AR) — 13 →

# Component One line
109 InvoiceForm With the revenue-recognition preview per line.
110 InvoiceDetail Balance due as the hero, not total.
111 InvoiceRegister Gapless-numbering check surfaced.
112 CashApplication The highest-value screen in AR. Every case, not just the happy one.
113 PaymentSuggestion Invoice combinations summing exactly to a lump sum.
114 UnappliedCashPanel Never revenue; net credit balances flagged as liabilities.
115 CreditNoteForm Distinct from a refund and from a write-off.
116 CollectionsWorklist Promise-to-pay as a first-class object.
117 DunningTimeline Per customer, not per invoice.
118 CustomerStatement Printable. Print styles are first-class.
119 CustomerCreditPanel Limit and exposure together, with hierarchy roll-up.
120 SalesOrderTable Backlog, visually separated from ledger-derived numbers.
121 ArMetricsPanel DSO with its method stated.

11. Payables (AP) — 16 →

# Component One line
122 BillForm Per-line coding, required evidence, discount ROI surfaced.
123 BillDetail Source document inline beside the coding.
124 BillRegister Aging and approval state.
125 DuplicateBillAlert Blocking. Duplicate payment is the most common AP loss.
126 ThreeWayMatch Line-level variances, not header totals.
127 MatchExceptionQueue The clerk's worklist.
128 ApprovalChain Segregation of duties enforced. Approvals bind to a version.
129 ApprovalInbox Mobile-first, document inline.
130 PaymentRunBuilder Shows the cash balance remaining after the run.
131 PaymentRunPreview Hold-to-confirm. Partial failure is a first-class state.
132 CashRequirements Due in 7/14/30 vs. available, payroll broken out.
133 VendorMaster Bank details versioned, never overwritten.
134 BankDetailChangeAlert The fraud-prevention surface.
135 ExpenseCapture Camera-first, policy violations shown at entry.
136 CardTransactionMatch Matched to receipts, never re-entered.
137 UninvoicedReceiptsReport GR/IR aging. The evidence for the period-end accrual.

12. Close, controls & consolidation — 24 →

# Component One line
138 PeriodStatus State, provenance, and the next action.
139 CutoffWarning Inline, with both legitimate remedies named.
140 CloseStatus The seven-section gated pipeline.
141 AuditTrail Field-level diffs on every financial object.
142 EvidencePanel Inline rendering, content hash, never deleted.
143 IntegrityCheckPanel Eleven continuous assertions. A failure owns the screen.
144 MaterialityPolicy Both thresholds must be exceeded. Threshold displayed.
145 ApprovalPolicyEditor Separate-approver shown as fixed, not a toggle.
146 RoleMatrix Controller ≠ Treasurer. Admin cannot transact.
147 SubsequentEventLog Adjusting vs. non-adjusting, decision recorded.
148 RestatementBanner Marks a restated comparative everywhere.
149 AuditorMode Read-only server-side, scope immutable, itself audited.
150 SamplingTool Method and seed recorded — reproducible selection.
151 EvidenceBundle Entries + documents + approvals + trail, with a manifest.
152 EntitySelector Explicit scope. Standalone vs. consolidated visually distinct.
153 ConsolidationView Entity columns, eliminations, NCI, group total.
154 IntercompanyMatrix Must net to zero. Break types named.
155 EliminationEntry Consolidation-level only, boundary visible.
156 NciPanel On both statements.
157 TranslationSummary Rates by type, with sources and methodology.
158 CtaRollForward Its own equity line, never buried.
159 FxRevaluation Monetary items only, derived from classification.
160 FxGainLossPanel Realized and unrealized never combined.
161 RateTable Rate type is not optional. A missing rate blocks.

See also: #69 TrialBalance and #70 CloseChecklist in statements — same family conceptually.

13. Metrics & analysis — 12 →

# Component One line
162 MetricDefinition Every metric requires one. Formula with values substituted.
163 NonGaapReconciliation EBITDA below net income, every adjustment named.
164 MrrBridge The movement, not a single number with a percentage.
165 BudgetVsActual Polarity-aware, materiality-filtered, versions tracked.
166 ForecastTable Projections dashed and labeled everywhere.
167 CovenantMonitor The contractual definition, not the generic one.
168 KpiHealthStrip Provisional marking for pre-close numbers.
174 RevenueTracker Revenue by stream, with mix, growth and concentration.
175 ExpenseTracker Spend by category on three bases. Polarity derived per row from the sign convention.
176 DriverModel The inputs a forecast is built from, and what they produce.
177 ScenarioCompare Scenarios side by side, all measured against the base.
178 PlByDimension The P&L cut by department, entity or product.

Build order

See roadmap. Summary: primitives → the money proof → the ledger core → the table → statements → the close → AR → AP → payments → swaps → dashboard → consolidation → polish.

The ledger core (family 9) comes before the statements, because a statement is a view over journal entries and building it the other way round produces a statement that can't drill down. The close (family 12) comes immediately after the statements, because the close is what the statements are for.

Told when this spec changes

The docs are the contract the components are built against. When one changes, the component changes with it — and the copy in your repo does not. One email when that happens.

One address, no list rental, unsubscribe in one click.

Works in your QuickBooks Online or Xero file

Get your books closed every month

Lopifi is building AI bookkeeping that keeps your books closed on US GAAP as transactions happen, with a CPA review every quarter, for $200 a month. We’re not open yet.

$200/month when we open. No card now.