@c15t/nextjs 2.1.0 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +155 -0
- package/README.md +31 -15
- package/client/components/integrations.js +3 -0
- package/dist/components/integrations/index.cjs +1 -0
- package/dist/components/integrations/index.js +1 -0
- package/dist/headless.cjs +1 -1
- package/dist/index.cjs +1 -1
- package/dist/libs/browser-initial-data.cjs +1 -1
- package/dist/libs/initial-data.cjs +1 -1
- package/dist/styles.tw3.css +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.js +1 -1
- package/dist-types/components/integrations/index.d.ts +1 -0
- package/dist-types/libs/browser-initial-data.d.ts +1 -1
- package/dist-types/version.d.ts +1 -1
- package/docs/README.md +155 -73
- package/docs/{building-headless-components.md → frameworks/next/building-headless-components.md} +3 -1
- package/docs/{callbacks.md → frameworks/next/callbacks.md} +3 -1
- package/docs/{components → frameworks/next/components}/consent-banner.md +10 -21
- package/docs/{components → frameworks/next/components}/consent-dialog-link.md +8 -5
- package/docs/frameworks/next/components/consent-dialog-trigger.md +202 -0
- package/docs/{components → frameworks/next/components}/consent-dialog.md +7 -15
- package/docs/frameworks/next/components/consent-manager-provider.md +327 -0
- package/docs/{components → frameworks/next/components}/consent-widget.md +8 -6
- package/docs/{components → frameworks/next/components}/dev-tools.md +9 -6
- package/docs/{components → frameworks/next/components}/frame.md +8 -9
- package/docs/{concepts → frameworks/next/concepts}/client-modes.md +4 -2
- package/docs/{concepts → frameworks/next/concepts}/consent-categories.md +1 -0
- package/docs/{concepts → frameworks/next/concepts}/consent-models.md +1 -0
- package/docs/{concepts → frameworks/next/concepts}/cookie-management.md +3 -3
- package/docs/{concepts → frameworks/next/concepts}/glossary.md +1 -0
- package/docs/{concepts → frameworks/next/concepts}/initialization-flow.md +1 -0
- package/docs/{concepts → frameworks/next/concepts}/policy-packs.md +1 -0
- package/docs/{headless.md → frameworks/next/headless.md} +3 -1
- package/docs/{hooks → frameworks/next/hooks}/use-color-scheme.md +1 -0
- package/docs/{hooks → frameworks/next/hooks}/use-consent-manager/checking-consent.md +3 -1
- package/docs/{hooks → frameworks/next/hooks}/use-consent-manager/location-info.md +3 -1
- package/docs/frameworks/next/hooks/use-consent-manager/overview.md +185 -0
- package/docs/{hooks → frameworks/next/hooks}/use-consent-manager/setting-consent.md +3 -1
- package/docs/{hooks → frameworks/next/hooks}/use-draggable.md +3 -1
- package/docs/{hooks → frameworks/next/hooks}/use-focus-trap.md +1 -0
- package/docs/{hooks → frameworks/next/hooks}/use-reduced-motion.md +3 -1
- package/docs/{hooks → frameworks/next/hooks}/use-ssr-status.md +6 -5
- package/docs/{hooks → frameworks/next/hooks}/use-text-direction.md +1 -0
- package/docs/frameworks/next/hooks/use-translations.md +55 -0
- package/docs/{iab → frameworks/next/iab}/consent-banner.md +9 -12
- package/docs/{iab → frameworks/next/iab}/consent-dialog.md +9 -14
- package/docs/{iab → frameworks/next/iab}/overview.md +4 -2
- package/docs/{iab → frameworks/next/iab}/use-gvl-data.md +3 -2
- package/docs/{iframe-blocking.md → frameworks/next/iframe-blocking.md} +8 -9
- package/docs/{internationalization.md → frameworks/next/internationalization.md} +13 -3
- package/docs/{network-blocker.md → frameworks/next/network-blocker.md} +13 -51
- package/docs/{optimization.md → frameworks/next/optimization.md} +5 -4
- package/docs/{policy-packs.md → frameworks/next/policy-packs.md} +3 -1
- package/docs/{quickstart.md → frameworks/next/quickstart.md} +26 -42
- package/docs/{script-loader.md → frameworks/next/script-loader.md} +72 -90
- package/docs/{server-side.md → frameworks/next/server-side.md} +12 -15
- package/docs/{styling → frameworks/next/styling}/classnames.md +3 -1
- package/docs/{styling → frameworks/next/styling}/color-scheme.md +3 -1
- package/docs/frameworks/next/styling/css-variables.md +53 -0
- package/docs/frameworks/next/styling/overview.md +299 -0
- package/docs/frameworks/next/styling/slots.md +94 -0
- package/docs/{styling → frameworks/next/styling}/tailwind.md +3 -1
- package/docs/frameworks/next/styling/tokens.md +156 -0
- package/docs/{troubleshooting.md → frameworks/next/troubleshooting.md} +3 -1
- package/docs/integrations/adobe-analytics.md +160 -0
- package/docs/integrations/ahrefs-analytics.md +15 -82
- package/docs/integrations/amplitude.md +230 -0
- package/docs/integrations/building-integrations.md +15 -181
- package/docs/integrations/clearbit.md +130 -0
- package/docs/integrations/cloudflare-web-analytics.md +15 -83
- package/docs/integrations/crisp.md +13 -87
- package/docs/integrations/databuddy.md +16 -85
- package/docs/integrations/fathom-analytics.md +15 -86
- package/docs/integrations/google-maps.md +263 -0
- package/docs/integrations/google-tag-manager.md +18 -86
- package/docs/integrations/google-tag.md +15 -84
- package/docs/integrations/heap.md +219 -0
- package/docs/integrations/hightouch.md +199 -0
- package/docs/integrations/hotjar.md +15 -83
- package/docs/integrations/intercom.md +13 -83
- package/docs/integrations/linkedin-insights.md +15 -82
- package/docs/integrations/logrocket.md +175 -0
- package/docs/integrations/matomo-analytics.md +13 -88
- package/docs/integrations/meta-pixel.md +33 -316
- package/docs/integrations/microsoft-clarity.md +15 -83
- package/docs/integrations/microsoft-uet.md +16 -83
- package/docs/integrations/mixpanel-analytics.md +15 -83
- package/docs/integrations/overview.md +55 -6
- package/docs/integrations/pirsch.md +142 -0
- package/docs/integrations/plausible-analytics.md +14 -97
- package/docs/integrations/posthog.md +26 -98
- package/docs/integrations/promptwatch.md +16 -82
- package/docs/integrations/reddit-pixel.md +27 -122
- package/docs/integrations/rudderstack.md +271 -0
- package/docs/integrations/rybbit-analytics.md +15 -94
- package/docs/integrations/segment.md +15 -82
- package/docs/integrations/snapchat-pixel.md +21 -102
- package/docs/integrations/tiktok-pixel.md +13 -81
- package/docs/integrations/umami-analytics.md +16 -88
- package/docs/integrations/vercel-analytics.md +13 -85
- package/docs/integrations/x-pixel.md +27 -102
- package/docs/integrations/youtube.md +193 -0
- package/docs/shared/concepts/client-modes.md +103 -0
- package/docs/shared/concepts/consent-categories.md +41 -0
- package/docs/shared/concepts/consent-models.md +72 -0
- package/docs/shared/concepts/cookie-management.md +88 -0
- package/docs/shared/concepts/glossary.md +24 -0
- package/docs/shared/concepts/initialization-flow.md +105 -0
- package/docs/shared/concepts/policy-packs.md +225 -0
- package/docs/shared/react/components/consent-banner.md +242 -0
- package/docs/shared/react/components/consent-dialog-link.md +45 -0
- package/docs/shared/react/components/consent-dialog-trigger.md +185 -0
- package/docs/shared/react/components/consent-dialog.md +119 -0
- package/docs/shared/react/components/consent-manager-provider.md +225 -0
- package/docs/shared/react/components/consent-widget.md +121 -0
- package/docs/shared/react/components/dev-tools.md +81 -0
- package/docs/shared/react/components/frame.md +52 -0
- package/docs/shared/react/guides/building-headless-components.md +110 -0
- package/docs/shared/react/guides/callbacks.md +89 -0
- package/docs/shared/react/guides/headless.md +31 -0
- package/docs/shared/react/guides/iframe-blocking.md +65 -0
- package/docs/shared/react/guides/internationalization.md +123 -0
- package/docs/shared/react/guides/network-blocker.md +72 -0
- package/docs/shared/react/guides/optimization.md +44 -0
- package/docs/shared/react/guides/policy-packs.md +173 -0
- package/docs/shared/react/guides/script-loader.md +311 -0
- package/docs/shared/react/hooks/use-color-scheme.md +31 -0
- package/docs/shared/react/hooks/use-consent-manager/checking-consent.md +95 -0
- package/docs/shared/react/hooks/use-consent-manager/location-info.md +96 -0
- package/docs/shared/react/hooks/use-consent-manager/overview.md +74 -0
- package/docs/shared/react/hooks/use-consent-manager/setting-consent.md +93 -0
- package/docs/shared/react/hooks/use-draggable.md +30 -0
- package/docs/shared/react/hooks/use-focus-trap.md +20 -0
- package/docs/shared/react/hooks/use-reduced-motion.md +33 -0
- package/docs/shared/react/hooks/use-ssr-status.md +16 -0
- package/docs/shared/react/hooks/use-text-direction.md +38 -0
- package/docs/shared/react/hooks/use-translations.md +15 -0
- package/docs/shared/react/iab/consent-banner.md +60 -0
- package/docs/shared/react/iab/consent-dialog.md +76 -0
- package/docs/shared/react/iab/overview.md +80 -0
- package/docs/shared/react/iab/use-gvl-data.md +21 -0
- package/docs/shared/react/styling/classnames.md +93 -0
- package/docs/shared/react/styling/color-scheme.md +35 -0
- package/docs/shared/react/styling/css-variables.md +53 -0
- package/docs/shared/react/styling/overview.md +261 -0
- package/docs/shared/react/styling/slots.md +93 -0
- package/docs/shared/react/styling/stylesheet-entrypoint.md +8 -0
- package/docs/shared/react/styling/tailwind.md +88 -0
- package/docs/shared/react/styling/tokens.md +155 -0
- package/docs/shared/troubleshooting.md +82 -0
- package/package.json +19 -10
- package/readme.json +14 -8
- package/docs/ai-agents.md +0 -111
- package/docs/components/consent-dialog-trigger.md +0 -103
- package/docs/components/consent-manager-provider.md +0 -425
- package/docs/hooks/use-consent-manager/overview.md +0 -420
- package/docs/hooks/use-translations.md +0 -118
- package/docs/styling/css-variables.md +0 -92
- package/docs/styling/overview.md +0 -457
- package/docs/styling/slots.md +0 -128
- package/docs/styling/tokens.md +0 -216
package/AGENTS.md
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# @c15t/nextjs
|
|
2
|
+
|
|
3
|
+
> Next.js consent management docs for c15t, including App Router setup, consent UI, SSR behavior, script loading, and integrations.
|
|
4
|
+
|
|
5
|
+
These docs ship inside the package so coding agents can read them offline. Open the topic file you need from the list below — paths are relative to this file.
|
|
6
|
+
|
|
7
|
+
## Frameworks
|
|
8
|
+
|
|
9
|
+
Install and configure c15t in JavaScript, React, and Next.js applications.
|
|
10
|
+
|
|
11
|
+
- [Building Headless Components](./docs/frameworks/next/building-headless-components.md): Build policy-aware custom consent components in Next.js using the headless hooks and policy-pack tooling.
|
|
12
|
+
- [Callbacks](./docs/frameworks/next/callbacks.md): React to consent lifecycle events - initialization, consent changes, errors, and revocation reloads.
|
|
13
|
+
- [ConsentBanner](./docs/frameworks/next/components/consent-banner.md): A pre-built consent banner that appears when user consent is needed. Supports policy-aware layout, theming, and advanced composition when markup must change.
|
|
14
|
+
- [ConsentDialog](./docs/frameworks/next/components/consent-dialog.md): A modal dialog where users can toggle individual consent categories.
|
|
15
|
+
- [ConsentDialogLink](./docs/frameworks/next/components/consent-dialog-link.md): An inline trigger for opening the consent dialog from footers, legal pages, and account settings.
|
|
16
|
+
- [ConsentDialogTrigger](./docs/frameworks/next/components/consent-dialog-trigger.md): A floating, draggable button that lets users re-open the consent dialog at any time.
|
|
17
|
+
- [ConsentManagerProvider](./docs/frameworks/next/components/consent-manager-provider.md): The root provider component that initializes the consent system and makes consent state available to all child components.
|
|
18
|
+
- [ConsentWidget](./docs/frameworks/next/components/consent-widget.md): An inline consent management widget for embedding in settings or privacy pages. Shows category toggles with accordion layout.
|
|
19
|
+
- [DevTools](./docs/frameworks/next/components/dev-tools.md): A development tool for inspecting consent state, geolocation, loaded scripts, and consent events in real time.
|
|
20
|
+
- [Frame](./docs/frameworks/next/components/frame.md): A consent-gated content wrapper - children only mount when the required consent category is granted.
|
|
21
|
+
- [Client Modes](./docs/frameworks/next/concepts/client-modes.md): Choose how c15t connects to its backend - full hosted integration, offline-only, or bring your own backend.
|
|
22
|
+
- [Consent Categories](./docs/frameworks/next/concepts/consent-categories.md): How c15t organizes tracking technologies into five consent categories.
|
|
23
|
+
- [Consent Models](./docs/frameworks/next/concepts/consent-models.md): How c15t determines consent behavior based on legal jurisdiction.
|
|
24
|
+
- [Cookie Management](./docs/frameworks/next/concepts/cookie-management.md): How c15t manages cookies through script, iframe, and network gating
|
|
25
|
+
- [Glossary](./docs/frameworks/next/concepts/glossary.md): Key terms used throughout the c15t documentation.
|
|
26
|
+
- [Initialization Flow](./docs/frameworks/next/concepts/initialization-flow.md): What happens from provider mount to first render — the full consent lifecycle.
|
|
27
|
+
- [Policy Packs](./docs/frameworks/next/concepts/policy-packs.md): How c15t resolves regional consent policies and what a policy pack controls.
|
|
28
|
+
- [Headless Mode](./docs/frameworks/next/headless.md): Build fully custom consent UI using only hooks - no pre-built components required.
|
|
29
|
+
- [useColorScheme](./docs/frameworks/next/hooks/use-color-scheme.md): Manage light/dark mode preferences for consent components.
|
|
30
|
+
- [Checking Consent](./docs/frameworks/next/hooks/use-consent-manager/checking-consent.md): Use has() for flexible consent checks with AND, OR, and NOT logic. Check if any consent exists with hasConsented().
|
|
31
|
+
- [Location Info](./docs/frameworks/next/hooks/use-consent-manager/location-info.md): Access detected jurisdiction, country, and region. Override geolocation for testing.
|
|
32
|
+
- [useConsentManager](./docs/frameworks/next/hooks/use-consent-manager/overview.md): The primary hook for accessing consent state and actions. Returns the full consent store including all state properties and action methods.
|
|
33
|
+
- [Setting Consent](./docs/frameworks/next/hooks/use-consent-manager/setting-consent.md): Save, update, and reset consent preferences with setConsent(), setSelectedConsent(), and saveConsents().
|
|
34
|
+
- [useDraggable](./docs/frameworks/next/hooks/use-draggable.md): Make an element draggable between viewport corners with snapping, persistence, and animation support.
|
|
35
|
+
- [useFocusTrap](./docs/frameworks/next/hooks/use-focus-trap.md): Trap keyboard focus within a container for accessible modal dialogs.
|
|
36
|
+
- [useReducedMotion](./docs/frameworks/next/hooks/use-reduced-motion.md): Detect the user's prefers-reduced-motion OS setting and reactively disable animations.
|
|
37
|
+
- [useSSRStatus](./docs/frameworks/next/hooks/use-ssr-status.md): Check whether server-side rendered consent data was used during initialization.
|
|
38
|
+
- [useTextDirection](./docs/frameworks/next/hooks/use-text-direction.md): Manage RTL/LTR text direction based on the active language for consent UI.
|
|
39
|
+
- [useTranslations](./docs/frameworks/next/hooks/use-translations.md): Access the current language's translations for building custom consent UI.
|
|
40
|
+
- [IABConsentBanner](./docs/frameworks/next/iab/consent-banner.md): An IAB TCF 2.3 compliant consent banner that displays partner count, purpose summaries, and legitimate interest notices.
|
|
41
|
+
- [IABConsentDialog](./docs/frameworks/next/iab/consent-dialog.md): An IAB TCF 2.3 compliant preference center with tabbed purpose and vendor management.
|
|
42
|
+
- [IAB TCF 2.3](./docs/frameworks/next/iab/overview.md): Implement IAB Transparency & Consent Framework 2.3 compliance for programmatic advertising in EU/EEA jurisdictions.
|
|
43
|
+
- [useGVLData (Internal)](./docs/frameworks/next/iab/use-gvl-data.md): Status note for the internal GVL hook used by the built-in IAB dialog.
|
|
44
|
+
- [Iframe Blocking](./docs/frameworks/next/iframe-blocking.md): Block embedded content (YouTube, social widgets, maps) until users grant consent for the appropriate category.
|
|
45
|
+
- [Internationalization](./docs/frameworks/next/internationalization.md): Translate consent UI into 30+ languages with built-in translations, custom overrides, and automatic browser language detection.
|
|
46
|
+
- [Network Blocker](./docs/frameworks/next/network-blocker.md): Block outgoing network requests to third-party domains until the user grants consent for the appropriate category.
|
|
47
|
+
- [Optimization](./docs/frameworks/next/optimization.md): Improve c15t startup performance in Next.js with same-origin rewrites, static prefetching, and dynamic-route SSR.
|
|
48
|
+
- [Policy Packs](./docs/frameworks/next/policy-packs.md): Configure regional consent policies in Next.js — hosted mode, presets, and offline fallback.
|
|
49
|
+
- [Quickstart](./docs/frameworks/next/quickstart.md): Add consent management to your Next.js app in under 5 minutes.
|
|
50
|
+
- [Script Loader](./docs/frameworks/next/script-loader.md): Gate third-party scripts behind consent in Next.js — load Google Analytics, Meta Pixel, and other tracking scripts only when users grant permission.
|
|
51
|
+
- [Server-Side Data Fetching](./docs/frameworks/next/server-side.md): Pre-fetch consent data in Server Components with fetchInitialData for dynamic Next.js routes.
|
|
52
|
+
- [Class Names](./docs/frameworks/next/styling/classnames.md): Style consent components using className props and per-slot className targeting via the theme.
|
|
53
|
+
- [Color Scheme](./docs/frameworks/next/styling/color-scheme.md): Support light mode, dark mode, and system preference detection in consent components.
|
|
54
|
+
- [CSS Variables](./docs/frameworks/next/styling/css-variables.md): Reference for all --c15t-* CSS custom properties generated by the theme system.
|
|
55
|
+
- [Styling Overview](./docs/frameworks/next/styling/overview.md): Five approaches for theming consent components — design tokens, component slots, CSS variables, className, and noStyle mode.
|
|
56
|
+
- [Component Slots](./docs/frameworks/next/styling/slots.md): Target individual component parts with styles using the slot system - className strings or inline style objects.
|
|
57
|
+
- [Tailwind CSS](./docs/frameworks/next/styling/tailwind.md): Use Tailwind CSS utility classes to style consent components via the slot system.
|
|
58
|
+
- [Design Tokens](./docs/frameworks/next/styling/tokens.md): The six base token categories that control colors, typography, spacing, radius, shadows, and motion, plus optional dark-mode overrides.
|
|
59
|
+
- [Troubleshooting](./docs/frameworks/next/troubleshooting.md): Solutions for common issues with @c15t/nextjs — provider errors, missing banners, consent persistence, and more.
|
|
60
|
+
|
|
61
|
+
## Integrations
|
|
62
|
+
|
|
63
|
+
Connect analytics, advertising, maps, media, and other third-party tools behind consent.
|
|
64
|
+
|
|
65
|
+
- [Adobe Analytics](./docs/integrations/adobe-analytics.md): Adobe Analytics loaded through an Adobe Experience Platform Data Collection Tags embed URL.
|
|
66
|
+
- [Ahrefs Analytics](./docs/integrations/ahrefs-analytics.md): Cookieless web analytics from Ahrefs with a prebuilt helper that wires the project key into a c15t-managed script.
|
|
67
|
+
- [Amplitude](./docs/integrations/amplitude.md): Load Amplitude Browser SDK 2 with c15t and gate product analytics behind measurement consent.
|
|
68
|
+
- [Build a Custom Script Integration](./docs/integrations/building-integrations.md): Learn when to use a raw Script, when to build a reusable manifest-backed integration, and how to debug and test custom consent-aware scripts in c15t.
|
|
69
|
+
- [Clearbit](./docs/integrations/clearbit.md): Visitor and company enrichment loaded with Clearbit's account-keyed tags.js snippet.
|
|
70
|
+
- [Cloudflare Web Analytics](./docs/integrations/cloudflare-web-analytics.md): Cookieless analytics from Cloudflare with a prebuilt helper that serializes the beacon config into the `data-cf-beacon` attribute.
|
|
71
|
+
- [Crisp](./docs/integrations/crisp.md): Load Crisp live chat with website ID, runtime, cookie, and session options.
|
|
72
|
+
- [Databuddy](./docs/integrations/databuddy.md): Databuddy is a privacy-focused analytics platform that helps you understand user behavior and track events. It supports cookieless tracking and manages consent automatically through c15t's consent state synchronization.
|
|
73
|
+
- [Fathom Analytics](./docs/integrations/fathom-analytics.md): Privacy-friendly cookieless analytics with a prebuilt helper that maps Fathom's data attributes into a c15t-managed script.
|
|
74
|
+
- [Google Maps](./docs/integrations/google-maps.md): Render Google Maps only after consent with one shared Maps JavaScript API loader and independently managed map instances.
|
|
75
|
+
- [GA4 + Google Ads (gtag.js)](./docs/integrations/google-tag.md): Send data to Google Analytics 4 and Google Ads with automatic Consent Mode v2 support.
|
|
76
|
+
- [Google Tag Manager](./docs/integrations/google-tag-manager.md): Deploy and manage marketing tags centrally with automatic consent state synchronization.
|
|
77
|
+
- [Heap](./docs/integrations/heap.md): Load Heap with c15t and gate autocapture product analytics behind measurement consent.
|
|
78
|
+
- [Hightouch](./docs/integrations/hightouch.md): Load Hightouch Events with c15t and gate the browser SDK behind measurement consent.
|
|
79
|
+
- [Hotjar](./docs/integrations/hotjar.md): Product analytics and behavior insights with a prebuilt helper that seeds Hotjar globals before loading the vendor bundle.
|
|
80
|
+
- [Intercom](./docs/integrations/intercom.md): Bootstrap Intercom settings and load the messenger widget bundle.
|
|
81
|
+
- [LinkedIn Insights](./docs/integrations/linkedin-insights.md): Track conversions and build matched audiences for LinkedIn advertising campaigns.
|
|
82
|
+
- [LogRocket](./docs/integrations/logrocket.md): Session replay and monitoring loaded after measurement consent with LogRocket's browser SDK.
|
|
83
|
+
- [Matomo Analytics](./docs/integrations/matomo-analytics.md): Load Matomo with c15t and keep Matomo's queue aligned with measurement consent.
|
|
84
|
+
- [Meta Pixel](./docs/integrations/meta-pixel.md): Track conversions and build audiences for Facebook and Instagram advertising campaigns.
|
|
85
|
+
- [Microsoft Clarity](./docs/integrations/microsoft-clarity.md): Session replay and behavior analytics with a prebuilt helper that keeps Clarity consent synchronized with c15t measurement state.
|
|
86
|
+
- [Microsoft UET](./docs/integrations/microsoft-uet.md): Track conversions and measure performance for Microsoft Advertising and Bing Ads.
|
|
87
|
+
- [Mixpanel Analytics](./docs/integrations/mixpanel-analytics.md): Load Mixpanel with c15t and let Mixpanel's own opt-in and opt-out APIs follow measurement consent.
|
|
88
|
+
- [Integrations](./docs/integrations/overview.md): Load analytics, pixels, tag managers, and widgets through c15t so consent state controls when they run, update, and appear in your consent UI.
|
|
89
|
+
- [Pirsch](./docs/integrations/pirsch.md): Privacy-friendly, cookieless analytics loaded with Pirsch's fixed script id and identification-code attributes.
|
|
90
|
+
- [Plausible Analytics](./docs/integrations/plausible-analytics.md): Privacy-friendly cookieless analytics with a prebuilt helper that preserves Plausible's queue bootstrap and loader attributes.
|
|
91
|
+
- [PostHog](./docs/integrations/posthog.md): PostHog is an open-source product analytics platform for tracking user behavior, session replays, feature flags, and A/B testing. It supports cookieless tracking, allowing analytics to continue even without cookie consent.
|
|
92
|
+
- [Promptwatch](./docs/integrations/promptwatch.md): Promptwatch analyzes traffic on your site for Artificial Intelligence (AI) traffic and usage insights. Data is stored in the EU without user-identifiable information.
|
|
93
|
+
- [Reddit Pixel](./docs/integrations/reddit-pixel.md): Track conversions and build retargeting audiences for Reddit advertising campaigns.
|
|
94
|
+
- [RudderStack](./docs/integrations/rudderstack.md): Load RudderStack's JavaScript SDK with c15t and gate the browser SDK behind measurement consent.
|
|
95
|
+
- [Rybbit Analytics](./docs/integrations/rybbit-analytics.md): Privacy-friendly analytics with script-tag configuration via Rybbit's data attributes.
|
|
96
|
+
- [Segment](./docs/integrations/segment.md): Load Segment Analytics.js with c15t and gate it behind measurement consent.
|
|
97
|
+
- [Snapchat Pixel](./docs/integrations/snapchat-pixel.md): Measure Snapchat ad performance and build remarketing audiences with a prebuilt pixel helper.
|
|
98
|
+
- [TikTok Pixel](./docs/integrations/tiktok-pixel.md): Measure ad performance and build audiences for TikTok advertising campaigns.
|
|
99
|
+
- [Umami Analytics](./docs/integrations/umami-analytics.md): Open-source, cookieless analytics with a prebuilt helper that maps Umami's data attributes into a c15t-managed script.
|
|
100
|
+
- [Vercel Analytics](./docs/integrations/vercel-analytics.md): Bootstrap Vercel Analytics with a declarative queue and script attributes.
|
|
101
|
+
- [X Pixel (Twitter Pixel)](./docs/integrations/x-pixel.md): Track conversions and build audiences for advertising campaigns on X (formerly Twitter).
|
|
102
|
+
- [YouTube](./docs/integrations/youtube.md): Keep YouTube iframes unmounted until consent with a privacy-enhanced, lazy-loaded React or Next.js embed.
|
|
103
|
+
|
|
104
|
+
## Reference
|
|
105
|
+
|
|
106
|
+
Concepts, legal templates, open-source policies, and contributor documentation.
|
|
107
|
+
|
|
108
|
+
- [Client Modes](./docs/shared/concepts/client-modes.md): Reference page for client modes.
|
|
109
|
+
- [Consent Categories](./docs/shared/concepts/consent-categories.md): Reference page for consent categories.
|
|
110
|
+
- [Consent Models](./docs/shared/concepts/consent-models.md): Reference page for consent models.
|
|
111
|
+
- [Cookie Management](./docs/shared/concepts/cookie-management.md): Reference page for cookie management.
|
|
112
|
+
- [Glossary](./docs/shared/concepts/glossary.md): Reference page for glossary.
|
|
113
|
+
- [Initialization Flow](./docs/shared/concepts/initialization-flow.md): Reference page for initialization flow.
|
|
114
|
+
- [Policy Packs](./docs/shared/concepts/policy-packs.md): Reference page for policy packs.
|
|
115
|
+
- [Consent Banner](./docs/shared/react/components/consent-banner.md): Reference page for consent banner.
|
|
116
|
+
- [Consent Dialog](./docs/shared/react/components/consent-dialog.md): Reference page for consent dialog.
|
|
117
|
+
- [Consent Dialog Link](./docs/shared/react/components/consent-dialog-link.md): Reference page for consent dialog link.
|
|
118
|
+
- [Consent Dialog Trigger](./docs/shared/react/components/consent-dialog-trigger.md): Reference page for consent dialog trigger.
|
|
119
|
+
- [Consent Manager Provider](./docs/shared/react/components/consent-manager-provider.md): Reference page for consent manager provider.
|
|
120
|
+
- [Consent Widget](./docs/shared/react/components/consent-widget.md): Reference page for consent widget.
|
|
121
|
+
- [Dev Tools](./docs/shared/react/components/dev-tools.md): Reference page for dev tools.
|
|
122
|
+
- [Frame](./docs/shared/react/components/frame.md): Reference page for frame.
|
|
123
|
+
- [Building Headless Components](./docs/shared/react/guides/building-headless-components.md): Reference page for building headless components.
|
|
124
|
+
- [Callbacks](./docs/shared/react/guides/callbacks.md): Reference page for callbacks.
|
|
125
|
+
- [Headless](./docs/shared/react/guides/headless.md): Reference page for headless.
|
|
126
|
+
- [Iframe Blocking](./docs/shared/react/guides/iframe-blocking.md): Reference page for iframe blocking.
|
|
127
|
+
- [Internationalization](./docs/shared/react/guides/internationalization.md): Reference page for internationalization.
|
|
128
|
+
- [Network Blocker](./docs/shared/react/guides/network-blocker.md): Reference page for network blocker.
|
|
129
|
+
- [Optimization](./docs/shared/react/guides/optimization.md): Reference page for optimization.
|
|
130
|
+
- [Policy Packs](./docs/shared/react/guides/policy-packs.md): Reference page for policy packs.
|
|
131
|
+
- [Script Loader](./docs/shared/react/guides/script-loader.md): Reference page for script loader.
|
|
132
|
+
- [Use Color Scheme](./docs/shared/react/hooks/use-color-scheme.md): Reference page for use color scheme.
|
|
133
|
+
- [Checking Consent](./docs/shared/react/hooks/use-consent-manager/checking-consent.md): Reference page for checking consent.
|
|
134
|
+
- [Location Info](./docs/shared/react/hooks/use-consent-manager/location-info.md): Reference page for location info.
|
|
135
|
+
- [Overview](./docs/shared/react/hooks/use-consent-manager/overview.md): Reference page for overview.
|
|
136
|
+
- [Setting Consent](./docs/shared/react/hooks/use-consent-manager/setting-consent.md): Reference page for setting consent.
|
|
137
|
+
- [Use Draggable](./docs/shared/react/hooks/use-draggable.md): Reference page for use draggable.
|
|
138
|
+
- [Use Focus Trap](./docs/shared/react/hooks/use-focus-trap.md): Reference page for use focus trap.
|
|
139
|
+
- [Use Reduced Motion](./docs/shared/react/hooks/use-reduced-motion.md): Reference page for use reduced motion.
|
|
140
|
+
- [Use SSR Status](./docs/shared/react/hooks/use-ssr-status.md): Reference page for use ssr status.
|
|
141
|
+
- [Use Text Direction](./docs/shared/react/hooks/use-text-direction.md): Reference page for use text direction.
|
|
142
|
+
- [Use Translations](./docs/shared/react/hooks/use-translations.md): Reference page for use translations.
|
|
143
|
+
- [Consent Banner](./docs/shared/react/iab/consent-banner.md): Reference page for consent banner.
|
|
144
|
+
- [Consent Dialog](./docs/shared/react/iab/consent-dialog.md): Reference page for consent dialog.
|
|
145
|
+
- [Overview](./docs/shared/react/iab/overview.md): Reference page for overview.
|
|
146
|
+
- [Use GVL Data](./docs/shared/react/iab/use-gvl-data.md): Reference page for use gvl data.
|
|
147
|
+
- [Classnames](./docs/shared/react/styling/classnames.md): Reference page for classnames.
|
|
148
|
+
- [Color Scheme](./docs/shared/react/styling/color-scheme.md): Reference page for color scheme.
|
|
149
|
+
- [CSS Variables](./docs/shared/react/styling/css-variables.md): Reference page for css variables.
|
|
150
|
+
- [Overview](./docs/shared/react/styling/overview.md): Reference page for overview.
|
|
151
|
+
- [Slots](./docs/shared/react/styling/slots.md): Reference page for slots.
|
|
152
|
+
- [Stylesheet Entrypoint](./docs/shared/react/styling/stylesheet-entrypoint.md): Reference page for stylesheet entrypoint.
|
|
153
|
+
- [Tailwind](./docs/shared/react/styling/tailwind.md): Reference page for tailwind.
|
|
154
|
+
- [Tokens](./docs/shared/react/styling/tokens.md): Reference page for tokens.
|
|
155
|
+
- [Troubleshooting](./docs/shared/troubleshooting.md): Reference page for troubleshooting.
|
package/README.md
CHANGED
|
@@ -9,26 +9,28 @@
|
|
|
9
9
|
|
|
10
10
|
# @c15t/nextjs: Next.js Integration
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
<p>
|
|
13
|
+
<a href="https://www.npmjs.com/package/@c15t/nextjs"><picture><source media="(prefers-color-scheme: dark)" srcset="https://shieldcn.dev/npm/%40c15t%2Fnextjs.svg?variant=outline&mode=dark"><img src="https://shieldcn.dev/npm/%40c15t%2Fnextjs.svg?variant=outline&mode=light" alt="Latest NPM Version"></picture></a>
|
|
14
|
+
<a href="https://github.com/c15t/c15t"><picture><source media="(prefers-color-scheme: dark)" srcset="https://shieldcn.dev/github/c15t/c15t/stars.svg?variant=outline&mode=dark"><img src="https://shieldcn.dev/github/c15t/c15t/stars.svg?variant=outline&mode=light" alt="Stars"></picture></a>
|
|
15
|
+
<a href="https://github.com/c15t/c15t/blob/main/LICENSE.md"><picture><source media="(prefers-color-scheme: dark)" srcset="https://shieldcn.dev/github/c15t/c15t/license.svg?variant=outline&mode=dark"><img src="https://shieldcn.dev/github/c15t/c15t/license.svg?variant=outline&mode=light" alt="License"></picture></a>
|
|
16
|
+
<a href="https://c15t.link/discord"><picture><source media="(prefers-color-scheme: dark)" srcset="https://shieldcn.dev/discord/1312171102268690493.svg?variant=outline&mode=dark"><img src="https://shieldcn.dev/discord/1312171102268690493.svg?variant=outline&mode=light" alt="Discord"></picture></a>
|
|
17
|
+
<a href="https://skills.sh/c15t/skills/c15t"><picture><source media="(prefers-color-scheme: dark)" srcset="https://shieldcn.dev/skills/c15t/skills/c15t.svg?variant=outline&mode=dark"><img src="https://shieldcn.dev/skills/c15t/skills/c15t.svg?variant=outline&mode=light" alt="Skills"></picture></a>
|
|
18
|
+
<a href="https://inth.com?utm_source=npm&utm_medium=readme&utm_campaign=oss_readme&utm_content=%40c15t%2Fnextjs"><picture><source media="(prefers-color-scheme: dark)" srcset="https://shieldcn.dev/badge/Made%20By-Inth-ffc803.svg?logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAzOTMgNDAwIj48cGF0aCBmaWxsPSIjMDAwIiBkPSJNMTgyLjY2MiAwdjM2Ljg5NWgtNTkuMDMxdjgyLjczM2g1OS4wMzF2MzYuODkzSDI3LjQ4MnYtMzYuODkzaDU5LjAzVjM2Ljg5NWgtNTkuMDNWMHpNMzIxLjk0MSA4OS44NVYwaDM1LjM1NXYxNTYuNTIxaC0yNS43MTNsLTg2LjEzNy05MC4zNjR2OTAuMzY0aC0zNS4zNTVWMGgyNi4zNTV6Ii8%2BPHBhdGggZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzE4LjU3MSAxODUuNzE0aDc0LjI4NlY0MDBIMFYxODUuNzE0aDI3Mi44NTd2LTQ3LjE0M3ptLTI5MS4wOSAyOC45Njl2MzcuMTE4aDU4LjEzN3YxMTkuNjI4aDM2Ljg5NVYyNTEuODAxaDU4LjU4NHYtMzcuMTE4em0xODIuNjEuMjI0djE1Ni41MjJoMzYuODk0VjMxMy41OWg3My4zNDF2NTcuODM5aDM3LjExOFYyMTQuOTA3aC0zNy4xMTh2NjEuNzg4aC03My4zNDF2LTYxLjc4OHoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg%3D%3D&color=ffc803&labelTextColor=000000&valueColor=000000&mode=dark"><img src="https://shieldcn.dev/badge/Made%20By-Inth-ffc803.svg?logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAzOTMgNDAwIj48cGF0aCBmaWxsPSIjMDAwIiBkPSJNMTgyLjY2MiAwdjM2Ljg5NWgtNTkuMDMxdjgyLjczM2g1OS4wMzF2MzYuODkzSDI3LjQ4MnYtMzYuODkzaDU5LjAzVjM2Ljg5NWgtNTkuMDNWMHpNMzIxLjk0MSA4OS44NVYwaDM1LjM1NXYxNTYuNTIxaC0yNS43MTNsLTg2LjEzNy05MC4zNjR2OTAuMzY0aC0zNS4zNTVWMGgyNi4zNTV6Ii8%2BPHBhdGggZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzE4LjU3MSAxODUuNzE0aDc0LjI4NlY0MDBIMFYxODUuNzE0aDI3Mi44NTd2LTQ3LjE0M3ptLTI5MS4wOSAyOC45Njl2MzcuMTE4aDU4LjEzN3YxMTkuNjI4aDM2Ljg5NVYyNTEuODAxaDU4LjU4NHYtMzcuMTE4em0xODIuNjEuMjI0djE1Ni41MjJoMzYuODk0VjMxMy41OWg3My4zNDF2NTcuODM5aDM3LjExOFYyMTQuOTA3aC0zNy4xMTh2NjEuNzg4aC03My4zNDF2LTYxLjc4OHoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg%3D%3D&color=ffc803&labelTextColor=000000&valueColor=000000&mode=light" alt="Made by Inth"></picture></a>
|
|
19
|
+
</p>
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
Next.js cookie banner and consent management platform for App Router, Pages Router, SSR, and headless consent flows.
|
|
22
22
|
|
|
23
23
|
## Key Features
|
|
24
24
|
|
|
25
|
-
- Works with Next.js 15, 14, and 13
|
|
25
|
+
- Works with Next.js 16, 15, 14, and 13
|
|
26
26
|
- Full 'use client' support for React Server Components
|
|
27
27
|
- Server-side rendering support for both app and pages routers
|
|
28
|
-
-
|
|
28
|
+
- Prebuilt and customizable cookie banner, consent dialog, and preference center UI
|
|
29
|
+
- Headless hooks for custom consent flows
|
|
29
30
|
- Minimal configuration with TypeScript-first design
|
|
30
|
-
-
|
|
31
|
-
-
|
|
31
|
+
- IAB TCF 2.3 UI and hooks through the @c15t/react/iab subpath
|
|
32
|
+
- Google Tag Manager, Google Consent Mode v2, Meta Pixel, and analytics integrations through @c15t/scripts
|
|
33
|
+
- Built-in internationalization support
|
|
32
34
|
- Seamless consent storage and tracking
|
|
33
35
|
|
|
34
36
|
## Prerequisites
|
|
@@ -36,7 +38,7 @@ Headless cookie banner, consent manager & preference center for Next.js. App Rou
|
|
|
36
38
|
- Next.js 13.5.4 or later
|
|
37
39
|
- React 18 or later
|
|
38
40
|
- Node.js 18.17.0 or later
|
|
39
|
-
- A hosted [c15t instance](https://inth.com) (free sign-up)
|
|
41
|
+
- A hosted [c15t instance](https://inth.com) (free sign-up), [self-hosted deployment](https://c15t.com/docs/self-host/quickstart), or offline mode for local-only storage
|
|
40
42
|
|
|
41
43
|
## Quick Start
|
|
42
44
|
|
|
@@ -76,7 +78,7 @@ To manually install, follow the guide in our [docs – manual setup](https://c15
|
|
|
76
78
|
|
|
77
79
|
1. Import `ConsentManagerProvider` in your app's root layout
|
|
78
80
|
2. Add `ConsentBanner` and `ConsentDialog` components
|
|
79
|
-
3.
|
|
81
|
+
3. Customize styling and behavior to fit your app
|
|
80
82
|
4. For full implementation details, see the [Next.js quickstart docs](https://c15t.com/docs/frameworks/next/quickstart)
|
|
81
83
|
|
|
82
84
|
```tsx
|
|
@@ -106,6 +108,20 @@ export default function RootLayout({ children }: { children: React.ReactNode })
|
|
|
106
108
|
|
|
107
109
|
For further information, guides, and examples visit the [reference documentation](https://c15t.com/docs/frameworks/next/quickstart).
|
|
108
110
|
|
|
111
|
+
## Deployment Modes
|
|
112
|
+
|
|
113
|
+
- **Hosted on inth.com**: Hosted c15t backend for policy storage, audit history, and hosted infrastructure
|
|
114
|
+
- **Self-hosted backend**: Use @c15t/backend with your own database and infrastructure
|
|
115
|
+
- **Offline mode**: Browser-only consent storage for local development, demos, previews, static sites, or fallback scenarios
|
|
116
|
+
|
|
117
|
+
## Popular Integrations
|
|
118
|
+
|
|
119
|
+
- Google Tag Manager with Google Consent Mode v2
|
|
120
|
+
- Google Analytics 4 and Google Ads through gtag.js
|
|
121
|
+
- Meta Pixel, TikTok Pixel, LinkedIn Insights, Microsoft UET, X Pixel, Reddit Pixel, and Snapchat Pixel
|
|
122
|
+
- PostHog, Segment, Mixpanel, Microsoft Clarity, Hotjar, Plausible, Fathom, Matomo, Umami, and Vercel Analytics
|
|
123
|
+
- Intercom and Crisp chat widgets
|
|
124
|
+
|
|
109
125
|
## Support
|
|
110
126
|
|
|
111
127
|
- Join our [Discord community](https://c15t.link/discord)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_modules__={144(_){_.exports=require("@c15t/react/components/integrations")}},__webpack_module_cache__={};function __webpack_require__(_){var e=__webpack_module_cache__[_];if(void 0!==e)return e.exports;var r=__webpack_module_cache__[_]={exports:{}};return __webpack_modules__[_](r,r.exports,__webpack_require__),r.exports}__webpack_require__.n=_=>{var e=_&&_.__esModule?()=>_.default:()=>_;return __webpack_require__.d(e,{a:e}),e},__webpack_require__.d=(_,e,r)=>{var a=(e,r)=>{for(var a in e)__webpack_require__.o(e,a)&&!__webpack_require__.o(_,a)&&Object.defineProperty(_,a,{enumerable:!0,[r]:e[a]})};a(e,"get"),a(r,"value")},__webpack_require__.o=(_,e)=>Object.prototype.hasOwnProperty.call(_,e),__webpack_require__.r=_=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(_,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(_,"__esModule",{value:!0})};var __webpack_exports__={};for(var __rspack_i in(()=>{__webpack_require__.r(__webpack_exports__);var _=__webpack_require__(144),e={};for(let r in _)"default"!==r&&(e[r]=()=>_[r]);__webpack_require__.d(__webpack_exports__,e)})(),__webpack_exports__)exports[__rspack_i]=__webpack_exports__[__rspack_i];Object.defineProperty(exports,"__esModule",{value:!0});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export*from"@c15t/react/components/integrations";
|
package/dist/headless.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_modules__={
|
|
1
|
+
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_modules__={773(_){_.exports=require("@c15t/react/headless")}},__webpack_module_cache__={};function __webpack_require__(_){var e=__webpack_module_cache__[_];if(void 0!==e)return e.exports;var r=__webpack_module_cache__[_]={exports:{}};return __webpack_modules__[_](r,r.exports,__webpack_require__),r.exports}__webpack_require__.n=_=>{var e=_&&_.__esModule?()=>_.default:()=>_;return __webpack_require__.d(e,{a:e}),e},__webpack_require__.d=(_,e,r)=>{var a=(e,r)=>{for(var a in e)__webpack_require__.o(e,a)&&!__webpack_require__.o(_,a)&&Object.defineProperty(_,a,{enumerable:!0,[r]:e[a]})};a(e,"get"),a(r,"value")},__webpack_require__.o=(_,e)=>Object.prototype.hasOwnProperty.call(_,e),__webpack_require__.r=_=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(_,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(_,"__esModule",{value:!0})};var __webpack_exports__={};for(var __rspack_i in(()=>{__webpack_require__.r(__webpack_exports__);var _=__webpack_require__(773),e={};for(let r in _)"default"!==r&&(e[r]=()=>_[r]);__webpack_require__.d(__webpack_exports__,e)})(),__webpack_exports__)exports[__rspack_i]=__webpack_exports__[__rspack_i];Object.defineProperty(exports,"__esModule",{value:!0});
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_modules__={
|
|
1
|
+
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_modules__={76(e){e.exports=require("./libs/browser-initial-data.cjs")},91(e){e.exports=require("./libs/initial-data.cjs")},289(e){e.exports=require("@c15t/react")},285(e){e.exports=require("c15t")}},__webpack_module_cache__={};function __webpack_require__(e){var _=__webpack_module_cache__[e];if(void 0!==_)return _.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.n=e=>{var _=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(_,{a:_}),_},__webpack_require__.d=(e,_,r)=>{var t=(_,r)=>{for(var t in _)__webpack_require__.o(_,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,[r]:_[t]})};t(_,"get"),t(r,"value")},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};for(var __rspack_i in(()=>{__webpack_require__.r(__webpack_exports__);var e=__webpack_require__(289),_={};for(let r in e)0>["fetchInitialData","default","buildPrefetchScript","C15tPrefetch"].indexOf(r)&&(_[r]=()=>e[r]);__webpack_require__.d(__webpack_exports__,_);var r=__webpack_require__(285),t=__webpack_require__(76),a=__webpack_require__(91);__webpack_require__.d(__webpack_exports__,{C15tPrefetch:()=>t.C15tPrefetch,buildPrefetchScript:()=>r.buildPrefetchScript,fetchInitialData:()=>a.fetchInitialData})})(),exports.C15tPrefetch=__webpack_exports__.C15tPrefetch,exports.buildPrefetchScript=__webpack_exports__.buildPrefetchScript,exports.fetchInitialData=__webpack_exports__.fetchInitialData,__webpack_exports__)-1===["C15tPrefetch","buildPrefetchScript","fetchInitialData"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.n=e=>{var _=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(_,{a:_}),_},__webpack_require__.d=(e,_)=>{for(var
|
|
1
|
+
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.n=e=>{var _=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(_,{a:_}),_},__webpack_require__.d=(e,_,r)=>{var t=(_,r)=>{for(var t in _)__webpack_require__.o(_,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,[r]:_[t]})};t(_,"get"),t(r,"value")},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{C15tPrefetch:()=>C15tPrefetch});const jsx_runtime_namespaceObject=require("react/jsx-runtime"),external_c15t_namespaceObject=require("c15t"),script_namespaceObject=require("next/script");var script_default=__webpack_require__.n(script_namespaceObject);const DEFAULT_SCRIPT_ID="c15t-initial-data-prefetch";function C15tPrefetch({id:e="c15t-initial-data-prefetch",..._}){return(0,jsx_runtime_namespaceObject.jsx)(script_default(),{id:e,strategy:"beforeInteractive",children:(0,external_c15t_namespaceObject.buildPrefetchScript)(_)})}for(var __rspack_i in exports.C15tPrefetch=__webpack_exports__.C15tPrefetch,__webpack_exports__)-1===["C15tPrefetch"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_)=>{for(var
|
|
1
|
+
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_,r)=>{var a=(_,r)=>{for(var a in _)__webpack_require__.o(_,a)&&!__webpack_require__.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,[r]:_[a]})};a(_,"get"),a(r,"value")},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{fetchInitialData:()=>fetchInitialData});const server_namespaceObject=require("@c15t/react/server"),cache_namespaceObject=require("next/cache"),headers_namespaceObject=require("next/headers"),DEFAULT_REVALIDATE_SECONDS=1;async function fetchInitialData(e){let _=await (0,headers_namespaceObject.headers)(),r=(0,server_namespaceObject.normalizeBackendURL)(e.backendURL,_);if(!r)return;let a=e.nextCache?.revalidateSeconds;if(!1===a)return(0,server_namespaceObject.fetchSSRData)({...e,backendURL:r,headers:_});let t=(0,server_namespaceObject.createSSRInitCacheKey)({normalizedURL:r,headers:_,overrides:e.overrides});return(0,cache_namespaceObject.unstable_cache)(()=>(0,server_namespaceObject.fetchSSRData)({...e,backendURL:r,headers:_}),["c15t:nextjs:fetchInitialData",t],{revalidate:a??1})()}for(var __rspack_i in exports.fetchInitialData=__webpack_exports__.fetchInitialData,__webpack_exports__)-1===["fetchInitialData"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
|
package/dist/styles.tw3.css
CHANGED
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
.c15t-ui-root-SIREQ{box-sizing:border-box;isolation:isolate;font-family:var(--consent-dialog-font-family);line-height:var(--consent-dialog-line-height);-webkit-text-size-adjust:100%;tab-size:4;padding:var(--consent-dialog-card-padding-mobile);z-index:var(--consent-dialog-z-index);border-radius:var(--consent-dialog-card-radius);width:100%;height:var(--consent-dialog-height);background:0 0;border:0;justify-content:center;align-items:center;margin:0;display:flex;position:fixed;inset:0}.c15t-ui-root-SIREQ[dir=rtl]{direction:rtl}.c15t-ui-dialogVisible-kshSO{opacity:1;transition:opacity var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-ui-dialogHidden-Nkf8B{opacity:0;transition:opacity var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-ui-contentVisible-JdLax{opacity:1;transition:opacity var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing), transform var(--consent-dialog-animation-duration) cubic-bezier(.34, 1.56, .64, 1);transform:scale(1)}.c15t-ui-contentHidden-b7Eem{opacity:0;transition:opacity var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing), transform var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing);transform:scale(.95)}@media (width>=640px){.c15t-ui-root-SIREQ{padding:var(--consent-dialog-card-padding);width:auto}}.c15t-ui-container-kzMoS{flex-direction:column;width:100%;max-height:100%;display:flex}.c15t-ui-branding-cFvDg{justify-content:center;align-items:center;gap:var(--consent-dialog-branding-gap);font-size:var(--consent-dialog-branding-font-size);font-weight:var(--consent-dialog-branding-font-weight);line-height:var(--consent-dialog-branding-line-height);letter-spacing:var(--consent-dialog-branding-letter-spacing);color:var(--consent-dialog-foreground-color);border-radius:.25rem;margin:auto 0;padding:0 .5rem;text-decoration:none;display:flex}.c15t-ui-brandingCopy-VUhih{white-space:nowrap;align-items:baseline;gap:.25rem;min-width:0;display:inline-flex}.c15t-ui-brandingText-UTU4l{font-weight:var(--c15t-font-weight-medium)}.c15t-ui-brandingBy-wyO_G{font-weight:var(--c15t-font-weight-normal)}.c15t-ui-brandingWordmarkLabel-HiffM{white-space:nowrap;letter-spacing:-.03em}.c15t-ui-branding-cFvDg:focus-visible{box-shadow:0 0 0 2px var(--consent-dialog-branding-focus-color);outline:none}.c15t-dark .c15t-ui-branding-cFvDg:focus-visible{box-shadow:0 0 0 2px var(--consent-dialog-branding-focus-color-dark)}.c15t-dark .c15t-ui-branding-cFvDg{color:var(--consent-dialog-foreground-color-dark)}.c15t-ui-brandingC15T-zxnCt{flex:none;align-items:center;width:auto;max-width:100%;height:auto;display:inline-flex}.c15t-ui-brandingWordmark-Oke49{white-space:nowrap;flex:none;align-items:center;gap:.25rem;min-width:0;max-width:100%;display:inline-flex}.c15t-ui-brandingC15TMark-gG3qF{width:auto;max-width:100%;height:var(--consent-dialog-branding-icon-height);flex:none;align-items:center;display:inline-flex}.c15t-ui-brandingC15TMark-gG3qF>svg{aspect-ratio:446/445;flex:none;width:auto;max-width:100%;height:100%;display:block}.c15t-ui-brandingInth-HH4jL{max-width:100%;width:var(--consent-dialog-branding-icon-width);height:var(--consent-dialog-branding-icon-height);flex:none;align-items:center;display:inline-flex}.c15t-ui-brandingInth-HH4jL>svg{aspect-ratio:88/90;flex:none;width:auto;max-width:100%;height:100%;display:block}.c15t-ui-brandingTag-xHTlt{border:1px solid color-mix(in srgb, var(--c15t-primary), black 14%);max-width:calc(100% - 1.5rem);min-height:1.75rem;color:var(--c15t-text-on-primary,#fff);background-color:var(--c15t-primary);z-index:2;border-radius:.75rem .75rem .1875rem .1875rem;align-items:center;gap:.375rem;padding:.28125rem .625rem;display:inline-flex;position:absolute;box-shadow:inset 0 1px #ffffff29,0 1px 2px #0f172a1f}.c15t-ui-brandingTag-xHTlt .c15t-ui-brandingCopy-VUhih{font-size:var(--consent-dialog-branding-label-size);letter-spacing:.01em;color:var(--c15t-text-on-primary,#fff)}.c15t-ui-brandingTag-xHTlt .c15t-ui-brandingText-UTU4l,.c15t-ui-brandingTag-xHTlt .c15t-ui-brandingBy-wyO_G{line-height:1}.c15t-ui-brandingTag-xHTlt .c15t-ui-brandingWordmarkLabel-HiffM{font-size:var(--consent-dialog-branding-label-size);line-height:1}.c15t-ui-brandingTag-xHTlt .c15t-ui-brandingWordmark-Oke49{color:var(--c15t-text-on-primary,#fff);gap:.3125rem}.c15t-ui-brandingTag-xHTlt .c15t-ui-brandingC15TMark-gG3qF,.c15t-ui-brandingTag-xHTlt .c15t-ui-brandingInth-HH4jL{height:.9375rem;color:var(--c15t-text-on-primary,#fff)}.c15t-ui-brandingTagBanner-ruu5B{border-bottom-width:0;border-radius:.75rem .75rem 0 0;align-self:flex-end;margin-block-end:-1px;margin-inline-end:.75rem;position:relative;top:auto;right:auto;transform:none}.c15t-ui-brandingTagDialog-VHYim{right:var(--consent-dialog-card-padding-mobile);border-top-width:0;border-radius:0 0 .75rem .75rem;bottom:0;transform:translateY(calc(100% + 1px))}@media (width>=640px){.c15t-ui-brandingTagDialog-VHYim{right:var(--consent-dialog-card-padding)}}@media (width<=480px){.c15t-ui-brandingTag-xHTlt{gap:.375rem;max-width:calc(100% - 1rem);padding:.3125rem .625rem}.c15t-ui-brandingTag-xHTlt .c15t-ui-brandingCopy-VUhih,.c15t-ui-brandingTag-xHTlt .c15t-ui-brandingWordmarkLabel-HiffM{font-size:.625rem}.c15t-ui-brandingTag-xHTlt .c15t-ui-brandingC15TMark-gG3qF,.c15t-ui-brandingTag-xHTlt .c15t-ui-brandingInth-HH4jL{height:.8125rem}}.c15t-ui-headerWrapper-unPKA{position:relative}.c15t-ui-closeButton-xUsO9{position:absolute;top:22px;right:22px}.c15t-ui-footer-wtxGp{border-top:solid 1px var(--consent-dialog-stroke-color);justify-content:center;padding-top:1rem;padding-bottom:1rem;font-size:14px}.c15t-ui-overlay-zmCXe{color:var(--consent-dialog-link-text-color);background-color:var(--consent-dialog-overlay-background-color);z-index:var(--consent-dialog-overlay-z-index);position:fixed;inset:0}.c15t-ui-overlayVisible-csRAE{opacity:1;transition:opacity var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-ui-overlayHidden-zcSPn{opacity:0;transition:opacity var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-dark .c15t-ui-overlay-zmCXe{background-color:var(--consent-dialog-overlay-background-color-dark);color:var(--consent-dialog-link-text-color-dark)}.c15t-ui-card-OCFER{box-sizing:border-box;width:min(100%, var(--consent-dialog-max-width));border-radius:var(--consent-dialog-card-radius);border:var(--consent-dialog-border-width) var(--consent-dialog-border-style) var(--consent-dialog-border-color);background-color:var(--consent-dialog-background-color);max-height:100%;color:var(--consent-dialog-foreground-color);box-shadow:var(--consent-dialog-card-shadow);flex-direction:column;margin:0 auto;display:flex;position:relative;overflow:visible}.c15t-dark .c15t-ui-card-OCFER{background-color:var(--consent-dialog-background-color-dark);color:var(--consent-dialog-foreground-color-dark);border-color:var(--consent-dialog-border-color-dark)}.c15t-ui-header-BhjKW{padding:var(--consent-dialog-card-padding);gap:var(--consent-dialog-header-gap);flex-direction:column;flex-shrink:0;display:flex}.c15t-ui-header-BhjKW>*+*{margin-top:var(--consent-dialog-card-gap)}.c15t-ui-title-nqdol{font-weight:var(--consent-dialog-title-font-weight);font-size:var(--consent-dialog-title-font-size);letter-spacing:var(--consent-dialog-title-letter-spacing);line-height:1}.c15t-ui-description-qNkW1{color:var(--consent-dialog-muted-color);font-size:var(--consent-dialog-description-font-size);font-weight:var(--consent-dialog-description-font-weight);line-height:var(--consent-dialog-description-line-height)}.c15t-dark .c15t-ui-description-qNkW1{color:var(--consent-dialog-muted-color-dark)}.c15t-ui-content-lXTS6{padding:var(--consent-dialog-card-padding);gap:var(--consent-dialog-content-gap);flex:auto;min-height:0;padding-top:0;overflow-y:auto}.c15t-ui-footer-wtxGp{justify-content:center;align-items:center;gap:var(--consent-dialog-footer-gap);font-size:var(--consent-dialog-footer-font-size);padding-top:var(--consent-dialog-footer-padding-y);padding-bottom:var(--consent-dialog-footer-padding-y);border-top:var(--consent-dialog-border-width) var(--consent-dialog-border-style) var(--consent-dialog-stroke-color);flex-direction:column;flex-shrink:0;display:flex}.c15t-ui-footer-wtxGp:empty{border-top:none;display:none}.c15t-dark .c15t-ui-footer-wtxGp{border-color:var(--consent-dialog-stroke-color-dark)}.c15t-ui-footer-wtxGp.c15t-ui-brandingFooter-HAeuI{border-top:0;height:0;min-height:0;padding:0;position:relative;overflow:visible}.c15t-ui-footer-wtxGp.c15t-ui-brandingFooter-HAeuI:empty{display:none}@media (prefers-reduced-motion:reduce){.c15t-ui-dialogVisible-kshSO,.c15t-ui-dialogHidden-Nkf8B,.c15t-ui-contentVisible-JdLax,.c15t-ui-contentHidden-b7Eem,.c15t-ui-overlayVisible-csRAE,.c15t-ui-overlayHidden-zcSPn{transition:none}}
|
|
65
65
|
|
|
66
66
|
/* components/consent-dialog-trigger */
|
|
67
|
-
.c15t-ui-trigger-BryZ5{--cdt-size-sm:32px;--cdt-size-md:40px;--cdt-size-lg:48px;--cdt-bg:var(--c15t-surface,#fff);--cdt-bg-hover:var(--c15t-surface-hover,var(--cdt-bg));--cdt-border:var(--c15t-border,#e5e5e5);--cdt-shadow:var(--c15t-shadow-lg,0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a);--cdt-shadow-hover:var(--c15t-shadow-xl,0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a);--cdt-radius:var(--c15t-radius-full,9999px);--cdt-offset:var(--c15t-space-md,20px);--cdt-transition-duration:var(--c15t-motion-duration,.2s);--cdt-transition-easing:var(--c15t-motion-easing,ease-out);--cdt-snap-duration:var(--c15t-motion-duration-slow,.2s);--cdt-snap-easing:var(--c15t-motion-easing-smooth,cubic-bezier(.77, 0, .175, 1));--cdt-icon-color:var(--c15t-text,#171717);--cdt-focus-ring:var(--c15t-primary,#3b82f6);z-index:9999;width:var(--cdt-size-md);height:var(--cdt-size-md);border:1px solid var(--cdt-border);border-radius:var(--cdt-radius);background:var(--cdt-bg);box-shadow:var(--cdt-shadow);cursor:grab;transition:transform var(--cdt-transition-duration) var(--cdt-transition-easing), box-shadow var(--cdt-transition-duration) var(--cdt-transition-easing), background var(--cdt-transition-duration) var(--cdt-transition-easing);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;will-change:transform;justify-content:center;align-items:center;margin:0;padding:0;display:flex;position:fixed}@media (hover:hover) and (pointer:fine){.c15t-ui-trigger-BryZ5:hover{background:var(--cdt-bg-hover);box-shadow:var(--cdt-shadow-hover)}}.c15t-ui-trigger-BryZ5:active,.c15t-ui-trigger-BryZ5.c15t-ui-dragging-HLEr2{cursor:grabbing;transform:scale(1.02)}.c15t-ui-trigger-BryZ5:focus{outline:none}.c15t-ui-trigger-BryZ5:focus-visible{outline:2px solid var(--cdt-focus-ring);outline-offset:2px}.c15t-ui-sm-meEur{width:var(--cdt-size-sm);height:var(--cdt-size-sm)}.c15t-ui-md-lnKl5{width:var(--cdt-size-md);height:var(--cdt-size-md)}.c15t-ui-lg-vVljq{width:var(--cdt-size-lg);height:var(--cdt-size-lg)}.c15t-ui-icon-QeBf0{width:50%;height:50%;color:var(--cdt-icon-color);pointer-events:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.c15t-ui-icon-QeBf0 svg{width:100%;height:100%}.c15t-ui-text-Q2Rdp{margin-left:var(--c15t-space-xs,6px);font-family:var(--c15t-font-family,system-ui, sans-serif);font-size:var(--c15t-font-size-sm,14px);font-weight:var(--c15t-font-weight-medium,500);color:var(--cdt-icon-color);white-space:nowrap;pointer-events:none;line-height:1}.c15t-ui-trigger-BryZ5:has(.c15t-ui-text-Q2Rdp){width:auto;height:auto;padding:var(--c15t-space-sm,8px) var(--c15t-space-md,16px);border-radius:var(--c15t-radius-lg,12px);gap:var(--c15t-space-xs,6px)}.c15t-ui-trigger-BryZ5:has(.c15t-ui-text-Q2Rdp) .c15t-ui-icon-QeBf0{width:16px;height:16px}.c15t-ui-trigger-BryZ5:has(.c15t-ui-text-Q2Rdp).c15t-ui-sm-meEur{padding:var(--c15t-space-xs,6px) var(--c15t-space-sm,10px)}.c15t-ui-trigger-BryZ5:has(.c15t-ui-text-Q2Rdp).c15t-ui-sm-meEur .c15t-ui-icon-QeBf0{width:14px;height:14px}.c15t-ui-trigger-BryZ5:has(.c15t-ui-text-Q2Rdp).c15t-ui-sm-meEur .c15t-ui-text-Q2Rdp{font-size:var(--c15t-font-size-xs,12px)}.c15t-ui-trigger-BryZ5:has(.c15t-ui-text-Q2Rdp).c15t-ui-lg-vVljq{padding:var(--c15t-space-md,12px) var(--c15t-space-lg,20px)}.c15t-ui-trigger-BryZ5:has(.c15t-ui-text-Q2Rdp).c15t-ui-lg-vVljq .c15t-ui-icon-QeBf0{width:20px;height:20px}.c15t-ui-trigger-BryZ5:has(.c15t-ui-text-Q2Rdp).c15t-ui-lg-vVljq .c15t-ui-text-Q2Rdp{font-size:var(--c15t-font-size-md,16px)}.c15t-ui-bottomRight-uY0Me{right:var(--cdt-offset);bottom:var(--cdt-offset)}.c15t-ui-bottomLeft-w0x9m{bottom:var(--cdt-offset);left:var(--cdt-offset)}.c15t-ui-topRight-yHVfA{top:var(--cdt-offset);right:var(--cdt-offset)}.c15t-ui-topLeft-wGrIZ{top:var(--cdt-offset);left:var(--cdt-offset)}.c15t-ui-snapping-dPWx_{transition:top var(--cdt-snap-duration) var(--cdt-snap-easing), right var(--cdt-snap-duration) var(--cdt-snap-easing), bottom var(--cdt-snap-duration) var(--cdt-snap-easing), left var(--cdt-snap-duration) var(--cdt-snap-easing), transform var(--cdt-snap-duration) var(--cdt-snap-easing)}.c15t-ui-hidden-QnkHi{display:none}.c15t-dark .c15t-ui-trigger-BryZ5{--cdt-bg:var(--c15t-surface,#262626);--cdt-bg-hover:var(--c15t-surface-hover,#404040);--cdt-border:var(--c15t-border,#404040);--cdt-icon-color:var(--c15t-text,#fafafa);--cdt-shadow:0 10px 15px -3px #0000004d, 0 4px 6px -4px #0000004d;--cdt-shadow-hover:0 20px 25px -5px #0006, 0 8px 10px -6px #0006}@media (prefers-reduced-motion:reduce){.c15t-ui-trigger-BryZ5,.c15t-ui-snapping-dPWx_{transition:none}}
|
|
67
|
+
.c15t-ui-trigger-BryZ5{--cdt-size-sm:32px;--cdt-size-md:40px;--cdt-size-lg:48px;--cdt-bg:var(--c15t-surface,#fff);--cdt-bg-hover:var(--c15t-surface-hover,var(--cdt-bg));--cdt-border:var(--c15t-border,#e5e5e5);--cdt-shadow:var(--c15t-shadow-lg,0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a);--cdt-shadow-hover:var(--c15t-shadow-xl,0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a);--cdt-radius:var(--c15t-radius-full,9999px);--cdt-offset:var(--c15t-space-md,20px);--cdt-transition-duration:var(--c15t-motion-duration,.2s);--cdt-transition-easing:var(--c15t-motion-easing,ease-out);--cdt-snap-duration:var(--c15t-motion-duration-slow,.2s);--cdt-snap-easing:var(--c15t-motion-easing-smooth,cubic-bezier(.77, 0, .175, 1));--cdt-icon-color:var(--c15t-text,#171717);--cdt-focus-ring:var(--c15t-primary,#3b82f6);z-index:9999;width:var(--cdt-size-md);height:var(--cdt-size-md);border:1px solid var(--cdt-border);border-radius:var(--cdt-radius);background:var(--cdt-bg);box-shadow:var(--cdt-shadow);cursor:grab;transition:transform var(--cdt-transition-duration) var(--cdt-transition-easing), box-shadow var(--cdt-transition-duration) var(--cdt-transition-easing), background var(--cdt-transition-duration) var(--cdt-transition-easing);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;will-change:transform;justify-content:center;align-items:center;margin:0;padding:0;display:flex;position:fixed}@media (hover:hover) and (pointer:fine){.c15t-ui-trigger-BryZ5:hover{background:var(--cdt-bg-hover);box-shadow:var(--cdt-shadow-hover)}}.c15t-ui-trigger-BryZ5:active,.c15t-ui-trigger-BryZ5.c15t-ui-dragging-HLEr2{cursor:grabbing;transform:scale(1.02)}.c15t-ui-trigger-BryZ5:focus{outline:none}.c15t-ui-trigger-BryZ5:focus-visible{outline:2px solid var(--cdt-focus-ring);outline-offset:2px}.c15t-ui-sm-meEur{width:var(--cdt-size-sm);height:var(--cdt-size-sm)}.c15t-ui-md-lnKl5{width:var(--cdt-size-md);height:var(--cdt-size-md)}.c15t-ui-lg-vVljq{width:var(--cdt-size-lg);height:var(--cdt-size-lg)}.c15t-ui-icon-QeBf0{width:50%;height:50%;color:var(--cdt-icon-color);pointer-events:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.c15t-ui-icon-QeBf0 svg{width:100%;height:100%}.c15t-ui-text-Q2Rdp{margin-left:var(--c15t-space-xs,6px);font-family:var(--c15t-font-family,system-ui, sans-serif);font-size:var(--c15t-font-size-sm,14px);font-weight:var(--c15t-font-weight-medium,500);color:var(--cdt-icon-color);white-space:nowrap;pointer-events:none;line-height:1}.c15t-ui-trigger-BryZ5:has(.c15t-ui-text-Q2Rdp){width:auto;height:auto;padding:var(--c15t-space-sm,8px) var(--c15t-space-md,16px);border-radius:var(--c15t-radius-lg,12px);gap:var(--c15t-space-xs,6px)}.c15t-ui-trigger-BryZ5:has(.c15t-ui-text-Q2Rdp) .c15t-ui-icon-QeBf0{width:16px;height:16px}.c15t-ui-trigger-BryZ5:has(.c15t-ui-text-Q2Rdp).c15t-ui-sm-meEur{padding:var(--c15t-space-xs,6px) var(--c15t-space-sm,10px)}.c15t-ui-trigger-BryZ5:has(.c15t-ui-text-Q2Rdp).c15t-ui-sm-meEur .c15t-ui-icon-QeBf0{width:14px;height:14px}.c15t-ui-trigger-BryZ5:has(.c15t-ui-text-Q2Rdp).c15t-ui-sm-meEur .c15t-ui-text-Q2Rdp{font-size:var(--c15t-font-size-xs,12px)}.c15t-ui-trigger-BryZ5:has(.c15t-ui-text-Q2Rdp).c15t-ui-lg-vVljq{padding:var(--c15t-space-md,12px) var(--c15t-space-lg,20px)}.c15t-ui-trigger-BryZ5:has(.c15t-ui-text-Q2Rdp).c15t-ui-lg-vVljq .c15t-ui-icon-QeBf0{width:20px;height:20px}.c15t-ui-trigger-BryZ5:has(.c15t-ui-text-Q2Rdp).c15t-ui-lg-vVljq .c15t-ui-text-Q2Rdp{font-size:var(--c15t-font-size-md,16px)}.c15t-ui-bottomRight-uY0Me{right:var(--cdt-offset);bottom:var(--cdt-offset)}.c15t-ui-bottomLeft-w0x9m{bottom:var(--cdt-offset);left:var(--cdt-offset)}.c15t-ui-topRight-yHVfA{top:var(--cdt-offset);right:var(--cdt-offset)}.c15t-ui-topLeft-wGrIZ{top:var(--cdt-offset);left:var(--cdt-offset)}.c15t-ui-snapping-dPWx_{transition:top var(--cdt-snap-duration) var(--cdt-snap-easing), right var(--cdt-snap-duration) var(--cdt-snap-easing), bottom var(--cdt-snap-duration) var(--cdt-snap-easing), left var(--cdt-snap-duration) var(--cdt-snap-easing), transform var(--cdt-snap-duration) var(--cdt-snap-easing)}.c15t-ui-hidden-QnkHi{display:none}.c15t-dark .c15t-ui-trigger-BryZ5{--cdt-bg:var(--c15t-surface,#262626);--cdt-bg-hover:var(--c15t-surface-hover,#404040);--cdt-border:var(--c15t-border,#404040);--cdt-icon-color:var(--c15t-text,#fafafa);--cdt-shadow:0 10px 15px -3px #0000004d, 0 4px 6px -4px #0000004d;--cdt-shadow-hover:0 20px 25px -5px #0006, 0 8px 10px -6px #0006}.c15t-ui-toolbar-tkhyV{--cdtt-size-sm:32px;--cdtt-size-md:40px;--cdtt-size-lg:48px;--cdtt-bg:var(--c15t-surface,#fff);--cdtt-bg-hover:var(--c15t-surface-hover,#f5f5f5);--cdtt-border:var(--c15t-border,#d4d4d4);--cdtt-primary:var(--c15t-primary,#16a779);--cdtt-primary-hover:var(--c15t-primary-hover,#128866);--cdtt-primary-text:var(--c15t-text-on-primary,#fff);--cdtt-icon-color:var(--c15t-text,#262626);--cdtt-focus-ring:var(--c15t-primary,#16a779);--cdtt-offset:var(--c15t-space-md,20px);--cdtt-transition-duration:var(--c15t-duration-fast,.16s);--cdtt-transition-easing:var(--c15t-easing-out,ease-out);--cdtt-shadow:var(--c15t-shadow-md,0 4px 10px #00000014, 0 1px 2px #0000000f);z-index:9999;width:max-content;color:var(--cdtt-icon-color);background:var(--cdtt-bg);border:1px solid var(--cdtt-border);border-radius:var(--c15t-radius-md,6px);box-shadow:var(--cdtt-shadow);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;will-change:transform;transition:transform var(--cdtt-transition-duration) var(--cdtt-transition-easing), box-shadow var(--cdtt-transition-duration) var(--cdtt-transition-easing), background var(--cdtt-transition-duration) var(--cdtt-transition-easing);align-items:stretch;margin:0;padding:0;display:inline-flex;position:fixed;overflow:hidden}.c15t-ui-toolbar-tkhyV.c15t-ui-bottomRight-uY0Me{right:max(var(--cdtt-offset), env(safe-area-inset-right,0px));bottom:max(var(--cdtt-offset), env(safe-area-inset-bottom,0px))}.c15t-ui-toolbar-tkhyV.c15t-ui-bottomLeft-w0x9m{bottom:max(var(--cdtt-offset), env(safe-area-inset-bottom,0px));left:max(var(--cdtt-offset), env(safe-area-inset-left,0px))}.c15t-ui-toolbar-tkhyV.c15t-ui-topRight-yHVfA{top:max(var(--cdtt-offset), env(safe-area-inset-top,0px));right:max(var(--cdtt-offset), env(safe-area-inset-right,0px))}.c15t-ui-toolbar-tkhyV.c15t-ui-topLeft-wGrIZ{top:max(var(--cdtt-offset), env(safe-area-inset-top,0px));left:max(var(--cdtt-offset), env(safe-area-inset-left,0px))}.c15t-ui-toolbar-tkhyV.c15t-ui-dragging-HLEr2{cursor:grabbing;box-shadow:var(--c15t-shadow-lg,0 10px 20px #00000024, 0 3px 6px #00000014)}.c15t-ui-toolbarVertical-azGG_{flex-direction:column}.c15t-ui-toolbarItem-MTJ7c{width:var(--cdtt-size-md);height:var(--cdtt-size-md);color:var(--cdtt-icon-color);border:0;border-inline-start:1px solid var(--cdtt-border);cursor:inherit;transition:color var(--cdtt-transition-duration) var(--cdtt-transition-easing), background var(--cdtt-transition-duration) var(--cdtt-transition-easing);background:0 0;border-radius:0;flex:none;justify-content:center;align-items:center;margin:0;padding:0;display:flex;position:relative}.c15t-ui-toolbarItem-MTJ7c:first-child{border-inline-start:0}.c15t-ui-toolbarVertical-azGG_ .c15t-ui-toolbarItem-MTJ7c{border-top:1px solid var(--cdtt-border);border-inline-start:0}.c15t-ui-toolbarVertical-azGG_ .c15t-ui-toolbarItem-MTJ7c:first-child{border-top:0}.c15t-ui-toolbar-tkhyV .c15t-ui-toolbarItem-MTJ7c.c15t-ui-sm-meEur{width:var(--cdtt-size-sm);height:var(--cdtt-size-sm)}.c15t-ui-toolbar-tkhyV .c15t-ui-toolbarItem-MTJ7c.c15t-ui-md-lnKl5{width:var(--cdtt-size-md);height:var(--cdtt-size-md)}.c15t-ui-toolbar-tkhyV .c15t-ui-toolbarItem-MTJ7c.c15t-ui-lg-vVljq{width:var(--cdtt-size-lg);height:var(--cdtt-size-lg)}.c15t-ui-toolbarItem-MTJ7c[data-c15t-trigger-action=preferences]{color:var(--cdtt-primary-text);background:var(--cdtt-primary)}.c15t-ui-toolbarItem-MTJ7c:focus{outline:none}.c15t-ui-toolbarItem-MTJ7c:focus-visible{z-index:1;outline:2px solid var(--cdtt-focus-ring);outline-offset:-3px}.c15t-ui-toolbarItem-MTJ7c:disabled{cursor:not-allowed;opacity:.45}.c15t-ui-toolbarIcon-g2j9z{pointer-events:none;flex-shrink:0;justify-content:center;align-items:center;width:50%;height:50%;display:flex}.c15t-ui-toolbarIcon-g2j9z>span,.c15t-ui-toolbarIcon-g2j9z svg{width:100%;height:100%;display:flex}@media (hover:hover) and (pointer:fine){.c15t-ui-toolbarItem-MTJ7c:hover:not(:disabled){background:var(--cdtt-bg-hover)}.c15t-ui-toolbarItem-MTJ7c[data-c15t-trigger-action=preferences]:hover:not(:disabled){background:var(--cdtt-primary-hover)}}.c15t-ui-toolbarItem-MTJ7c:active:not(:disabled){box-shadow:inset 0 1px 3px #00000029}:is(.c15t-dark .c15t-ui-toolbar-tkhyV,.dark .c15t-ui-toolbar-tkhyV){--cdtt-bg:var(--c15t-surface,#262626);--cdtt-bg-hover:var(--c15t-surface-hover,#343434);--cdtt-border:var(--c15t-border,#525252);--cdtt-icon-color:var(--c15t-text,#fafafa);--cdtt-shadow:0 8px 18px #00000052, 0 2px 5px #00000038}@media (prefers-reduced-motion:reduce){.c15t-ui-trigger-BryZ5,.c15t-ui-toolbar-tkhyV,.c15t-ui-toolbarItem-MTJ7c,.c15t-ui-snapping-dPWx_{transition:none}}
|
|
68
68
|
|
|
69
69
|
/* components/consent-widget */
|
|
70
70
|
.c15t-ui-widget-tTKyY{width:100%;font-family:var(--consent-widget-font-family);line-height:var(--consent-widget-line-height);-webkit-font-smoothing:antialiased;position:relative}.c15t-ui-widget-tTKyY>:not([hidden])~:not([hidden]){--space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--space-y-reverse)));margin-bottom:calc(1.5rem * var(--space-y-reverse))}.c15t-ui-card-UpkfF{width:min(100%, var(--consent-widget-max-width));border-radius:var(--consent-widget-radius);border:var(--consent-widget-border-width) solid var(--consent-widget-border-color);background-color:var(--consent-widget-background-color);position:relative}.c15t-dark .c15t-ui-card-UpkfF{background-color:var(--consent-widget-background-color-dark);border-color:var(--consent-widget-border-color-dark)}.c15t-ui-card-UpkfF[data-state=open]{animation:var(--consent-widget-entry-animation)}.c15t-ui-card-UpkfF[data-state=closed]{animation:var(--consent-widget-exit-animation)}.c15t-ui-header-UNVT2{gap:var(--consent-widget-gap);padding:var(--consent-widget-padding);flex-direction:column;display:flex}.c15t-ui-title-VZSLD{font-size:var(--consent-widget-title-size);line-height:var(--consent-widget-title-line-height);letter-spacing:var(--consent-widget-title-tracking);font-weight:var(--consent-widget-title-weight);color:var(--consent-widget-text-color)}.c15t-dark .c15t-ui-title-VZSLD{color:var(--consent-widget-text-color-dark)}.c15t-ui-description-wIwCB{color:var(--consent-widget-text-muted-color)}.c15t-dark .c15t-ui-description-wIwCB{color:var(--consent-widget-text-muted-color-dark)}.c15t-ui-content-vvxqv{padding:0 var(--consent-widget-padding);padding-bottom:var(--consent-widget-padding)}.c15t-ui-footer-vPM5F{border-top:1px solid var(--consent-widget-border-color);padding:var(--consent-widget-footer-padding);background-color:var(--consent-widget-footer-background-color);justify-content:space-between;gap:1rem;display:flex}.c15t-dark .c15t-ui-footer-vPM5F{border-color:var(--consent-widget-border-color-dark);background-color:var(--consent-widget-footer-background-color-dark)}@media (width<=640px){.c15t-ui-footer-vPM5F{flex-direction:column}}@media (width>=640px){.c15t-ui-footer-vPM5F{flex-direction:row}}.c15t-ui-footerSubGroup-DllFT{flex-direction:row;justify-content:space-between;gap:1rem;display:flex}.c15t-ui-footerFill-P_kQs,.c15t-ui-footerColumn-ezdXA{flex-direction:column}.c15t-ui-footerSubGroupFill-vHGHl,.c15t-ui-footerSubGroupColumn-HCrX0{width:100%}.c15t-ui-actionButtonFill-Ane9w{flex:1;width:100%}@media (width<=640px){.c15t-ui-footerSubGroup-DllFT,.c15t-ui-footerSubGroup-DllFT button{width:100%}}.c15t-ui-branding-OBSbe{border-top:var(--consent-widget-border-width) solid var(--consent-widget-border-color);justify-content:center;width:100%;padding-top:1rem;display:flex}.c15t-dark .c15t-ui-branding-OBSbe{border-color:var(--consent-widget-border-color-dark)}.c15t-ui-brandingLink-RAOti{color:var(--consent-widget-link-text-color);text-align:center;flex-direction:row;flex:1;justify-content:center;align-items:center;gap:.5rem;text-decoration:none;display:flex}.c15t-dark .c15t-ui-brandingLink-RAOti{color:var(--consent-widget-link-text-color-dark)}.c15t-ui-brandingLink-RAOti svg{height:1.2rem}@keyframes c15t-ui-enter-oqaf_{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes c15t-ui-exit-Yh5ig{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}.c15t-ui-bottomLeft-MFOD6{bottom:0;left:0}.c15t-ui-bottomRight-PBeso{bottom:0;right:0}.c15t-ui-topLeft-uEV5R{top:0;left:0}.c15t-ui-topRight-jj0Fj{top:0;right:0}.c15t-ui-accordionItem-phxAm{border-radius:var(--consent-widget-accordion-radius);border:1px solid var(--consent-widget-accordion-border-color);background-color:var(--consent-widget-accordion-background-color);padding:0;position:relative;overflow:visible}.c15t-ui-accordionTriggerInner-OxxsR:focus-visible{outline:none}.c15t-ui-accordionItem-phxAm:has(.c15t-ui-accordionTriggerInner-OxxsR:focus-visible){outline:2px solid var(--consent-widget-accordion-focus-ring);outline-offset:-1px}.c15t-dark .c15t-ui-accordionItem-phxAm:has(.c15t-ui-accordionTriggerInner-OxxsR:focus-visible){outline-color:var(--consent-widget-accordion-focus-ring-dark)}.c15t-dark .c15t-ui-accordionItem-phxAm{border-color:var(--consent-widget-accordion-border-color-dark);background-color:var(--consent-widget-accordion-background-color-dark)}.c15t-ui-accordionList-Ojp24{gap:var(--consent-widget-accordion-stack-gap);display:grid}.c15t-ui-accordionTrigger-hVnri{align-items:center;gap:var(--consent-widget-gap);box-sizing:border-box;width:100%;padding:var(--consent-widget-accordion-padding);border-radius:var(--consent-widget-accordion-radius);color:var(--consent-widget-accordion-text-color);transition:background-color var(--consent-widget-accordion-duration) var(--consent-widget-accordion-ease);background-color:#0000;grid-template-columns:minmax(0,1fr) auto;display:grid}.c15t-ui-accordionTrigger-hVnri:hover{background-color:var(--consent-widget-accordion-background-hover)}.c15t-dark .c15t-ui-accordionTrigger-hVnri{color:var(--consent-widget-accordion-text-color-dark)}.c15t-dark .c15t-ui-accordionTrigger-hVnri:hover{background-color:var(--consent-widget-accordion-background-hover-dark)}.c15t-ui-accordionTriggerInner-OxxsR{appearance:none;align-items:center;gap:var(--consent-widget-gap);min-width:0;min-height:calc(var(--consent-widget-accordion-icon-size) + .25rem);font-size:var(--consent-widget-title-size);line-height:var(--c15t-line-height-tight);font-weight:var(--c15t-font-weight-regular);border-radius:var(--consent-widget-accordion-radius);text-align:left;width:100%;color:inherit;cursor:pointer;background:0 0;border:0;flex:auto;align-self:stretch;padding:0;display:flex;position:relative}.c15t-ui-accordionTriggerInner-OxxsR [data-slot=preference-item-leading]{margin-inline:0}.c15t-ui-accordionTitle-oVDJ5{font:inherit;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0}.c15t-ui-accordionContent-S6PcX{color:var(--consent-widget-accordion-content-color);padding:0;font-size:.875rem;line-height:1.5}.c15t-ui-accordionContent-S6PcX>[data-slot=preference-item-content-viewport]{padding-top:0;padding-inline-start:calc(var(--consent-widget-accordion-icon-size) + var(--consent-widget-gap));padding-inline-end:var(--consent-widget-accordion-padding)}.c15t-ui-accordionContent-S6PcX[data-state=open]>[data-slot=preference-item-content-viewport]{padding-top:0;padding-bottom:var(--consent-widget-accordion-padding)}.c15t-ui-accordionContent-S6PcX[data-state=closed]>[data-slot=preference-item-content-viewport]{padding-bottom:0}.c15t-ui-accordionContent-S6PcX>[data-slot=preference-item-content-viewport]>div{padding-top:0}.c15t-dark .c15t-ui-accordionContent-S6PcX{color:var(--consent-widget-accordion-content-color-dark)}.c15t-ui-accordionArrow-yFH7h{color:var(--consent-widget-accordion-arrow-color);width:var(--consent-widget-accordion-icon-size);height:var(--consent-widget-accordion-icon-size);transition:transform var(--consent-widget-accordion-duration) var(--consent-widget-accordion-ease)}.c15t-dark .c15t-ui-accordionArrow-yFH7h{color:var(--consent-widget-accordion-arrow-color-dark)}.c15t-ui-accordionItem-phxAm[data-state=open] .c15t-ui-accordionArrow-yFH7h{transform:rotate(180deg)}.c15t-ui-switch-YnFJT{cursor:pointer;flex-shrink:0;align-self:center;position:relative;top:-1px}@media (prefers-reduced-motion:reduce){.c15t-ui-card-UpkfF[data-state=open],.c15t-ui-card-UpkfF[data-state=closed]{animation:none}.c15t-ui-accordionTrigger-hVnri,.c15t-ui-accordionArrow-yFH7h{transition:none}}
|
package/dist/version.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_)=>{for(var
|
|
1
|
+
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_,r)=>{var o=(_,r)=>{for(var o in _)__webpack_require__.o(_,o)&&!__webpack_require__.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,[r]:_[o]})};o(_,"get"),o(r,"value")},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__);const version="2.2.1";for(var __rspack_i in __webpack_require__.d(__webpack_exports__,{},{version:"2.2.1"}),exports.version=__webpack_exports__.version,__webpack_exports__)-1===["version"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
|
package/dist/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
let e="2.1
|
|
1
|
+
let e="2.2.1";export{e as version};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@c15t/react/components/integrations';
|
|
@@ -6,4 +6,4 @@ import type { C15tPrefetchProps } from '../types';
|
|
|
6
6
|
* Use in `app/layout.tsx` for static routes. Matching prefetched data is
|
|
7
7
|
* consumed automatically by the runtime during first store initialization.
|
|
8
8
|
*/
|
|
9
|
-
export declare function C15tPrefetch({ id, ...options }: C15tPrefetchProps): import("react
|
|
9
|
+
export declare function C15tPrefetch({ id, ...options }: C15tPrefetchProps): import("react").JSX.Element;
|
package/dist-types/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "2.1
|
|
1
|
+
export declare const version = "2.2.1";
|