Without React
@permito/core contains the whole consent logic without any UI.
import { activateBlockedElements, createConsentManager } from "@permito/core";
const manager = createConsentManager({ consentVersion: "2026-10", categories: [{ id: "necessary", required: true }, { id: "statistics" }, { id: "marketing" }],});
// Activate <script type="text/plain" data-consent-…> and <iframe data-consent-src> markup.activateBlockedElements(manager);
if (manager.getSnapshot().needsConsent) { showMyBanner({ onAccept: () => manager.acceptAll("banner"), onReject: () => manager.rejectAll("banner"), });}
manager.on("consent_updated", ({ state }) => console.log("New decision", state));manager.subscribe(listener) and manager.getSnapshot() follow the external store contract, so the manager also plugs into Vue, Svelte or Solid stores.