Snabbstart

Kom igång med PrivacyKit på några minuter med lättviktiga webbkomponenter som fungerar i både ramverk och statiska webbplatser.

Innehåll


Compliance Icon

Lägg till PrivacyKit på din webbplats

Placera skriptet i <head> och lägg till samtyckesdialogen på sidan för att komma igång. PrivacyKit distribueras som statiska resurser via ett CDN — ingen npm-installation och inga beroendekonflikter.

HTML
<html>
  <head>
    <!-- Lägg till PrivacyKit-webbkomponenterna: consent-dialog, consent-guard, consent-missing, compliance-monitor -->
    <script type="module" src="https://cdn.privacykit.eu/v1/privacykit.esm.js"></script>
    <script nomodule src="https://cdn.privacykit.eu/v1/privacykit.js"></script>
    <!-- Lägg till PrivacyKit JavaScript-API för programmatisk åtkomst till samtycke (valfritt) -->
    <script type="module" src="https://cdn.privacykit.eu/v1/index.esm.js"></script>
  </head>
  <body>
    <!-- Lägg till consent-dialog -->
    <consent-dialog theme="standard" variant="standard"></consent-dialog>
  </body>
<html>

PrivacyKit inkluderar som standard en 10-dagars provperiod, så att du kan integrera och testa innan du aktiverar en prenumeration. Aktiveringsstatus är tillgänglig via JavaScript-API:t, loggas i webbläsarkonsolen och kan även kontrolleras via sökning av aktiveringsstatus.


Consent Guard Icon

Anpassa styling

Börja med ett inbyggt tema och finjustera enskilda design tokens, eller anpassa dialogens styling helt för att matcha ditt varumärke.

HTML
<consent-dialog variant="standard" theme="standard" style="
  --pk-bg-color: #faf7f2;
  --pk-paper-color: #f7eede;
  --pk-text-color: #3a3530;
  --pk-primary-color: #b08968;
  --pk-secondary-color: #d6c2b2;
  --pk-text-color-on-primary: #212121;
  --pk-focus-ring-color: #866346;
  --pk-border-color: #d6dbe4;
  --pk-border-width: 3px;
  --pk-font-family: 'Segoe UI', Tahoma, sans-serif;
  --pk-spacing-unit: 0.6rem;
  --pk-control-radius: 10px;
  --pk-dialog-radius: 20px;
  --pk-dialog-shadow: 0 10px 20px rgba(0, 0, 0, 50%);
  --pk-dialog-max-height: min(70dvh, 500px);
">
</consent-dialog>

Consent Guard Icon

Lägg till samtyckesblockering

Consent Guards förhindrar att tredjepartsskript och inbäddat innehåll körs tills samtycke har getts. Använd <consent-missing> för att informera användare om otillgängligt innehåll vid behov.

HTML
<body>
  <!-- Lägg till consent-guard för att skydda mot tredjepartsskript -->
  <consent-guard consent="analytics">
  <script type="text/plain" data-src="https://www.googletagmanager.com/gtm.js?id=GTM-XXXXXXX"></script>
  </consent-guard>
  <!-- Lägg till consent-guard för att skydda mot inbäddat innehåll -->
  <consent-guard id="123" consent="analytics+marketing">
    <iframe data-src="https://www.youtube.com/embed/abc123"></iframe>
  <consent-guard>
  <consent-missing for="123">
    <p>Acceptera analys- och marknadsföringscookies för att se detta innehåll.</p>
  </consent-missing>
</body>

Viktigt: Observera att hanterade resurser i exemplet använder data-src i stället för src, och type="text/plain" används för script. PrivacyKit aktiverar hanterat innehåll först efter att samtycke har getts — annars kan resurser laddas direkt och framstå som hårdkodade i Compliance Monitor.


Compliance Monitor Icon

Lägg till efterlevnadsövervakning

Lägg till PrivacyKit Compliance Monitor för att upptäcka trackers, validera samtyckesskydd och upptäcka ohanterad aktivitet över hela din webbplats.

HTML
<body>
  <!-- Lägg till compliance-monitor för att kontinuerligt validera att samtycke efterlevs -->
  <compliance-monitor></compliance-monitor>
</body>

Styr PrivacyKit från JavaScript

Använd window.PrivacyKit för att läsa samtycke, kontrollera samtyckesuttryck, öppna dialoger och lyssna efter samtyckesändringar. Detta är användbart när din applikation behöver programmatisk kontroll, till exempel i React, Vue eller vanlig JavaScript.

JavaScript
const api = window.PrivacyKit;

api.onReady(() => {
  const consent = window.PrivacyKit.readConsent();
  const initialState = consent ? JSON.stringify(consent, null, 2) : "";
  console.log(initialState);
});

api.onConsentChanged((consent) => {
  const updatedState = consent ? JSON.stringify(consent, null, 2) : "";
  console.log(updatedState);
});

function handleOpenConsentDialogBtnClick() {
  api.openConsentDialog();
}

function handleOpenPrivacyPolicyDialogBtnClick() {
  api.openPrivacyPolicyDialog();
}

function handleToggleComplianceMonitorBtnClick() {
  api.toggleComplianceMonitor();
}

TypeScript-stöd

Förbättra utvecklarupplevelsen med autokomplettering, typsäkerhet och inbyggt stöd för PrivacyKit web components.

tsconfig.json

I moderna verktyg (Next.js / Vite / TypeScript 5+) måste .d.ts-filer utanför src uttryckligen inkluderas för att kompilatorn ska plocka upp dem.

{ 
  "include": ["src", "types/**/*.d.ts"] 
}

Anmärkningar per ramverk

Riktlinjer för hur PrivacyKit integreras i olika ramverk.

  • React: Inkludera TypeScript-definitionsfilen för att använda PrivacyKit web components som native-element i JSX.
  • Vue 3: konfigurera compilerOptions.isCustomElement för PrivacyKit-taggar.
  • Angular: lägg till CUSTOM_ELEMENTS_SCHEMA där custom elements används.
  • Svelte: ingen extra runtime-konfiguration behövs.
Notering för Next.js
  • <consent-dialog> fungerar i Server Components — lägg den direkt i din layout.
  • För att använda JS-API:t (onConsentChanged, onReady osv.), anropa det inuti useEffect i en 'use client'-komponent.

Stiltips

Undvik flimmer innan webkomponenterna är färdigladdade. Utan detta snipp kan HTML i slots eller guards blinka kort när:

  1. consent-dialog kan blinka till kort om du använder slottade element och de renderas innan komponentdefinitionen har laddats.
  2. consent-guard kan blinka till kort om den används för villkorlig HTML och innehållet renderas innan komponenten aktiveras.
  3. consent-missing kan blinka till kort om den används som fallback och den renderas innan komponenten aktiveras.

Lägg till styling i ditt eget light DOM för att undvika flimmer.

CSS
consent-dialog:not(:defined) [slot] {
  display: none;
}

consent-guard:not([active]) {
  display: none;
}

consent-missing:not([active]) {
  display: none;
}