@privion-consent/dom
v1.0.1
Published
DOM adapter for Privion Consent - handles scripts, iframes, and element visibility
Readme
@privion-consent/dom
DOM adapter for Privion Consent. Wires the consent engine to the page via attribute hooks — gates scripts, swaps iframe sources, toggles element visibility, and binds banner/preferences buttons. Watches the DOM via MutationObserver so late-injected elements activate without re-init.
Install
npm install @privion-consent/core @privion-consent/domQuick example
<!-- Block tracking scripts until consent -->
<script
type="privion"
privion-category="analytics"
src="https://www.googletagmanager.com/gtag/js?id=G-XXX"
></script>
<!-- Block iframes until consent -->
<iframe
privion-category="marketing"
privion-src="https://www.youtube.com/embed/..."
src="about:blank"
></iframe>
<!-- Conditional visibility -->
<div privion="analytics">Visible only when analytics granted</div>
<div privion="!marketing">Visible only when marketing NOT granted</div>
<!-- Banner / preferences UI hooks -->
<div privion-banner hidden>
<p>We use cookies…</p>
<button privion-reject-all>Reject all</button>
<button privion-accept-all>Accept all</button>
<button privion-open-preferences>Customize</button>
</div>import { createPrivionConsent } from '@privion-consent/core';
import { initPrivionDom } from '@privion-consent/dom';
const consent = createPrivionConsent({
version: 1,
categories: [
{ id: 'necessary', label: 'Necessary', required: true, defaultStatus: 'granted' },
{ id: 'analytics', label: 'Analytics' },
{ id: 'marketing', label: 'Marketing' },
],
});
const dom = initPrivionDom(consent);
// On SPA route teardown, dom.destroy() to disconnect MutationObservers
// and unsubscribe consent listeners.Default styles (optional)
import '@privion-consent/dom/styles.css';Themable via CSS custom properties (--privion-bg, --privion-fg, --privion-accent, …). Honors prefers-color-scheme; manual override via <html data-privion-theme="dark">. Components stay headless if you skip the import.
Documentation
- SPECIFICATION.md §3 — full attribute schema reference.
- SPECIFICATION.md §12 — theme tokens.
- examples/vanilla.html — runnable demo.
License
MIT © Tobias Laufersweiler
