Embedded UI 0.1.0-beta

Embedded UI overview

Paprel Embedded UI is the production-ready, framework-neutral component layer for putting Paprel accounting inside your product. It uses the same ledger, App Connect permissions, OpenAPI contracts, and audit controls as a headless integration.

Use the complete Web Components when you want Paprel-owned accounting workflows inside your shell. Use the typed resources in @paprel/embed-accounting when your product needs a completely custom UX. Both are supported integration paths and can be mixed screen by screen.

UI scope: Embedded UI stops at accounting and financial reports. Expenses, invoices, bills, and credit notes remain API-first surfaces. Future embedded domains will follow the same package pattern when released.

When to use which surface

ApproachBest for
Typed resources / RESTCustom UX, your design system, automation, and batch jobs
Embed Web ComponentsProduction operator workflows inside your application shell
MCPAI agents (ChatGPT, Claude, Cursor) calling tools against the same books

Packages

PackageRole
@paprel/embed-coreShared HTTP client, App Connect token lifecycle, errors, and host-event types
@paprel/embed-uiShared semantic theme contract; included by domain packages
@paprel/embed-accountingTyped accounting resources and Web Components for accounts, journals, banking, transactions, and reconciliation
@paprel/embed-reportsTrial balance, balance sheet, P&L, cash flow, and general-ledger components

Install @paprel/embed-core with the domain packages you need. Domain packages own their typed resources and UI; @paprel/embed-ui is installed transitively unless you want to import its theme contract directly.

Web Components — any framework

@paprel/embed-accounting registers standard custom elements in the browser. Any stack that renders HTML can mount them — no framework-specific adapter package:

StackIntegration
ReactRender tags in JSX; pass attributes as props; wire events with ref + addEventListener
VueUse kebab-case tags and add shared host-event listeners on a shell ref; no Pinia or plugin required
AngularAdd CUSTOM_ELEMENTS_SCHEMA and use tags in templates
Server-rendered HTMLDrop tags in your markup after one client-side configureAccounting boot

Call configureAccounting once at app startup, import the domain packages to register their elements, then use declarative tags anywhere in your DOM. The former configureEmbedAccounting name remains only as a deprecated beta compatibility alias. See Get started for install and mount steps.

Styling

The main domain imports include component styles. No separate CSS or @paprel/embed-ui import is required.

The defaults follow the Paprel workspace look. Override inherited semantic tokens to match your product without reaching through component shadow roots.

Components read CSS custom properties on a wrapper (.paprel-shell). No shadow-DOM piercing required:

CSS
/* Paprel / Newledger default (Warm White) */
.paprel-shell {
  --paprel-color-primary: #1c1c18;
  --paprel-color-primary-text: #ffffff;
  --paprel-color-primary-hover: #2c2c27;
  --paprel-color-text: #1c1c18;
  --paprel-color-muted: #78786f;
  --paprel-color-border: #e8e8e2;
  --paprel-color-border-subtle: #f0f0eb;
  --paprel-color-surface: #ffffff;
  --paprel-color-surface-muted: #f7f7f4;
  --paprel-color-success: #059669;
  --paprel-color-danger: #dc2626;
  --paprel-font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
  --paprel-font-size: 14px;
  --paprel-radius: 14px;
  --paprel-radius-sm: 10px;
}
HTML
<div class="paprel-shell">
  <paprel-journal-list page="1"></paprel-journal-list>
</div>

Full token list, master–detail wiring, and permissions: Embedding patterns.

Architecture: secrets stay on your server

The browser never holds App Connect client_secret. Your backend-for-frontend (BFF) — a thin route on your own API — exchanges credentials for a short-lived access token and returns only the token (and optional permissions[]) to the embed SDK:

App Connect embed token sequenceThe browser requests a token from the partner backend. The backend exchanges its secret with Paprel, returns the short-lived token, and the browser calls Paprel directly.BrowserYour applicationPartner BFFSecrets stay herePaprel APIAccounting platform1Request an embed tokenGET /api/embed-token2Exchange App Connect credentialsPOST /v1/app-connect/oauth/token3Issue short-lived access tokenaccess_token · expires_in4Return token to the browser{ accessToken, expiresAt }5Call Paprel directlyGET /v1/accounting/… · Authorization: Bearer …
Trust boundary: the browser receives only a short-lived access token. App Connect credentials never leave the partner backend.

For token exchange details, see Build the embed token backend (BFF). For scope design, see OAuth scopes and permissions.

Component scope

Accounting only — complete for Web Components. Integrate expense and documents via API unless Paprel ships a partner-specific UI package on request.

COA + journals

ElementPurpose
paprel-chart-of-accountsFlat/tree COA, balances, archived toggle
paprel-account-selectSearchable grouped account picker
paprel-account-formCreate/edit account
paprel-journal-listPaginated journal table + filters
paprel-journal-detailView, void, copy, reverse
paprel-journal-editorCreate / edit / post manual journal

Reports, banking, transactions, reconciliation

ElementPurpose
paprel-trial-balance, paprel-balance-sheet, paprel-income-statement, paprel-cash-flow, paprel-general-ledgerFinancial reports from @paprel/embed-reports
paprel-banking-list, paprel-bank-account-detailBanking accounts
paprel-transaction-inbox, paprel-transaction-detail, paprel-transaction-match-sheetBank transactions + match
paprel-reconciliation-list, paprel-reconciliation-form, paprel-reconciliation-detailReconciliation workspace

Where to go next

Evaluate Paprel

Build in sandbox, launch with a production trial

Use sandbox for developer testing with no billing. When you are ready for real workflows, start production on a monthly plan with a 14-day free trial.

API-First Delivery
Audit-Ready Controls
Sandbox And Guided Rollout
We use cookies to improve your experience.