Szybki start

Uruchom PrivacyKit w kilka minut dzięki lekkim komponentom webowym, które działają zarówno w frameworkach, jak i na statycznych stronach.

Spis treści


Compliance Icon

Dodaj PrivacyKit do swojej witryny

Umieść skrypt w sekcji <head> i dodaj dialog zgody na stronę, aby rozpocząć. PrivacyKit jest dystrybuowany jako statyczne zasoby przez CDN — bez instalacji npm i bez konfliktów zależności.

HTML
<html>
  <head>
    <!-- Dodaj web komponenty PrivacyKit: 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>
    <!-- Dodaj API JavaScript PrivacyKit do programowego dostępu do zgody (opcjonalnie) -->
    <script type="module" src="https://cdn.privacykit.eu/v1/index.esm.js"></script>
  </head>
  <body>
    <!-- Dodaj consent-dialog -->
    <consent-dialog theme="standard" variant="standard"></consent-dialog>
  </body>
<html>

PrivacyKit domyślnie zawiera 10-dniowy okres próbny, dzięki czemu możesz zintegrować i przetestować rozwiązanie przed aktywacją subskrypcji. Status aktywacji jest dostępny przez API JavaScript, jest logowany w konsoli przeglądarki i można go również sprawdzić w narzędziu do sprawdzania statusu aktywacji.


Consent Guard Icon

Dostosuj styl

Zacznij od wbudowanego motywu i dopracuj pojedyncze tokeny designu albo w pełni dostosuj styl okna dialogowego do swojej marki.

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

Dodaj blokowanie na podstawie zgody

Consent Guards zapobiegają wykonywaniu skryptów stron trzecich i osadzonej treści do czasu wyrażenia zgody. Użyj <consent-missing>, aby w razie potrzeby poinformować użytkowników o niedostępnej treści.

HTML
<body>
  <!-- Dodaj element(y) consent-guard, aby chronić przed skryptami stron trzecich -->
  <consent-guard consent="analytics">
  <script type="text/plain" data-src="https://www.googletagmanager.com/gtm.js?id=GTM-XXXXXXX"></script>
  </consent-guard>
  <!-- Dodaj element(y) consent-guard, aby chronić przed osadzoną treścią -->
  <consent-guard id="123" consent="analytics+marketing">
    <iframe data-src="https://www.youtube.com/embed/abc123"></iframe>
  <consent-guard>
  <consent-missing for="123">
    <p>Aby zobaczyć tę treść, zaakceptuj cookies analityczne i marketingowe.</p>
  </consent-missing>
</body>

Ważne: Zwróć uwagę, że zarządzane zasoby w przykładzie używają data-src zamiast src oraz type="text/plain" jest używane dla skryptów. PrivacyKit aktywuje zarządzaną zawartość dopiero po udzieleniu zgody — w przeciwnym razie zasoby mogą ładować się od razu i wyglądać jak zahardkodowane w Compliance Monitor.


Compliance Monitor Icon

Dodaj monitorowanie compliance

Dodaj PrivacyKit Compliance Monitor, aby wykrywać trackery, weryfikować ochronę zgód i wykrywać niezarządzaną aktywność w całej witrynie.

HTML
<body>
  <!-- Dodaj compliance-monitor, aby stale weryfikować egzekwowanie zgody -->
  <compliance-monitor></compliance-monitor>
</body>

Steruj PrivacyKit z poziomu JavaScript

Użyj window.PrivacyKit, aby odczytywać zgodę, sprawdzać wyrażenia zgody, otwierać okna dialogowe i nasłuchiwać zmian zgody. Jest to przydatne, gdy aplikacja potrzebuje programistycznej kontroli, np. w React, Vue lub czystym 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();
}

Obsługa TypeScript

Popraw doświadczenie deweloperskie dzięki autouzupełnianiu, bezpieczeństwu typów i natywnej obsłudze web komponentów PrivacyKit.

tsconfig.json

W nowoczesnych narzędziach (Next.js / Vite / TypeScript 5+) pliki .d.ts poza katalogiem src muszą być jawnie uwzględnione, aby kompilator je wykrył.

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

Uwagi dla frameworków

Wytyczne dotyczące integracji komponentów PrivacyKit w konkretnych frameworkach.

  • React: Dołącz plik definicji TypeScript, aby używać web komponentów PrivacyKit jako natywnych elementów w JSX.
  • Vue 3: skonfiguruj compilerOptions.isCustomElement dla tagów PrivacyKit.
  • Angular: dodaj CUSTOM_ELEMENTS_SCHEMA tam, gdzie używasz custom elements.
  • Svelte: brak dodatkowej konfiguracji w czasie wykonywania.
Uwaga dla Next.js
  • <consent-dialog> działa w Server Components — dodaj go bezpośrednio do layoutu.
  • Aby używać JS API (onConsentChanged, onReady itp.), wywołuj je wewnątrz useEffect w komponencie 'use client'.

Wskazówki stylistyczne

Unikaj migotania zanim web komponenty się załadują. Bez tego fragmentu HTML w slotach lub za guardami może na chwilę mignąć, gdy:

  1. consent-dialog może mignąć, jeśli slottowane elementy wyrenderują się zanim komponent zostanie zdefiniowany.
  2. consent-guard może mignąć na chwilę, jeśli jest używany do warunkowego HTML i treść wyrenderuje się zanim komponent się aktywuje.
  3. consent-missing może mignąć na chwilę, jeśli jest używany jako fallback i wyrenderuje się zanim komponent się aktywuje.

Dodaj style w swoim light DOM, aby zapobiec migotaniu.

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

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

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