@offerberries/ace-reusable-component
v0.1.2
Published
Reusable Action & Console Engine (ACE) frontend package — ActionMenu, DashboardRenderer, and the client/hooks that drive them. Drop into any host app; theming is done via the --ace-* CSS custom-property contract (see src/theme).
Readme
@ace/console-kit
The reusable frontend half of ACE (Action & Console Engine) — <ActionMenu>,
<DashboardRenderer>, the typed client, and the hooks that drive them. See
docs/architecture/2026-07-25_ace_srs/OfferBerries_ActionConsoleEngine_SRS_v1.md
in the ERP repo for the full design; this package implements SRS §2's frontend
half only. The backend gateway (D:\ace\service) implements the other half —
see that folder's own README once it exists.
Install (both hosts, once ACE has a real distribution point)
npm install github:<org>/ace#console-kit-v0.1.0Until then: npm install file:../../ace/console-kit from either
Backend-offerB/frontend or offersberries/frontend for local dev.
Mount once per host app
// ERP: frontend/src/main.jsx (after ERP's own token stylesheet import)
import "@ace/console-kit/theme/erp.css";
// Marketplace: frontend/src/main.tsx (after tokens.css import)
import "@ace/console-kit/theme/marketplace.css";Both hosts already run @tanstack/react-query and sonner at the app root —
<AceProvider> deliberately does not bring its own QueryClient, so it shares
the host's existing cache and toast surface instead of opening a second one.
<AceProvider
baseUrl={import.meta.env.VITE_ACE_BASE_URL}
getAuthHeaders={() => ({ Authorization: `Bearer ${getSessionToken()}` })}
>
<YourApp />
</AceProvider>Drop a per-row action menu into an existing table
<ActionMenu resourceType="Auction" resourceId={auction.id} />Render a whole dashboard from a config row
<DashboardRenderer dashboardKey="auction-deposit-settlement" />Dev without the real backend
import { startAceMockWorker } from "@ace/console-kit/mock";
if (import.meta.env.DEV) await startAceMockWorker();Fixture data models the Auction Deposit & Settlement pilot dashboard (SRS §8 #3).
Known gap vs. the SRS text
GET /dashboards/:key/data (the endpoint useDashboardData/DashboardRenderer
call) is not spelled out verbatim in SRS v1 — only GET /dashboards/:key
(the definition row) is. This package assumes ACE proxies to the
DashboardDefinition.listSource webhook server-side and returns rows/KPI
values at a /data sub-route, keeping the browser origin-agnostic (no
CORS/signing in client code). The backend session building D:\ace\service
needs to implement exactly this route — see src/client.ts and src/types.ts
for the exact request/response shapes this package expects.
