Replaces the /plan placeholder with a full self-service surface bound to
/api/v1/billing/* on arcadia-core:
- current plan + status + renewal date + manage-billing/cancel actions
- plan picker -> POST /billing/checkout -> redirect to the hosted (mock)
checkout URL -> return reflects the new plan
- invoices table; AUD/GST-aware price formatting
New app/lib/arcadia/billing.ts domain module (mirrors api-keys.ts). The payment
provider is resolved server-side, so this works with the mock today and a real
PSP later with no UI change. Pairs with arcadia-core GET /billing/plans (PR #18).
Completes the arcadia-admin operator surface for the integration registry and
the capability/route-guard framework it depends on.
- Integration registry: route + Data-group nav entry + `platform.integrations`
capability; the in-app client now delegates to the shared
`@crema/integration-registry-client` lib (vite alias + tsconfig); the
operator Integrations page (committed earlier) is now reachable.
- Capability gating: capabilities map + route-guard + jwt helpers + the
apps/plan/entitlements routes and supporting tenants/session changes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>