@c15t/react 3.0.0-alpha.6 → 3.0.0-alpha.7
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/SKILL.md +1 -1
- package/dist/components/iab-prompt/atoms/overlay.js +1 -1
- package/dist/components/iab-prompt/atoms/root.js +1 -1
- package/dist/components/prompt/atoms/overlay.js +1 -1
- package/dist/components/prompt/atoms/root.js +1 -1
- package/dist/hooks/use-late-entry.js +2 -0
- package/dist/iab/styles.tw3.css +2 -2
- package/dist/provider.js +1 -1
- package/dist/styles.tw3.css +4 -4
- package/dist/version.js +1 -1
- package/dist-types/hooks/use-late-entry.d.ts +14 -0
- package/dist-types/provider.d.ts +11 -3
- package/dist-types/version.d.ts +1 -1
- package/docs/concepts/choose-your-setup.md +1 -1
- package/docs/concepts/consent-state.md +6 -0
- package/docs/concepts/data-fetching.md +34 -0
- package/docs/customization/motion.md +22 -13
- package/docs/customization/tokens.md +1 -0
- package/docs/frameworks/react/components/consent-provider.md +29 -28
- package/docs/upgrade-v3.md +5 -1
- package/package.json +7 -7
package/SKILL.md
CHANGED
|
@@ -9,7 +9,7 @@ The Markdown under `./docs` matches the installed version. Read it before writin
|
|
|
9
9
|
|
|
10
10
|
## Before writing code
|
|
11
11
|
|
|
12
|
-
1. Find the framework, router, rendering mode (server, static or single-page) and host in the project.
|
|
12
|
+
1. Find the framework, router, rendering mode (server, static, cached or single-page) and host in the project. Check the framework config and route files for settings that prerender or cache pages.
|
|
13
13
|
2. Pick the matching row in [Choose your setup](./docs/concepts/choose-your-setup.md).
|
|
14
14
|
3. Follow that guide from start to finish: [React](./docs/frameworks/react/quickstart.md).
|
|
15
15
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/iab-consent-banner";import{forwardRef as r}from"react";import{useActiveUI as t}from"../../../hooks.js";import{
|
|
2
|
+
import{jsx as e}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/iab-consent-banner";import{forwardRef as r}from"react";import{useActiveUI as t}from"../../../hooks.js";import{useLateEntry as s}from"../../../hooks/use-late-entry.js";import{useScrollLock as a}from"../../../hooks/use-scroll-lock.js";import{useTheme as n}from"../../../hooks/use-theme.js";import{useUIConfig as i}from"../../../ui-config-context.js";import{cnExt as l}from"../../../utils/cn.js";import{mergeSlotProps as m}from"../../../utils/merge-slot-props.js";let p=r(({className:r,style:p,noStyle:c,...y},f)=>{let u=t(),{disableAnimation:v,noStyle:b,scrollLock:d}=n(),{components:j}=i(),h="banner"===u,k=m(j?.["iab-banner"]?.overlay,{baseClassName:o.overlay,className:r,noStyle:b||c,style:p,...y}),B=b||c||v?void 0:`${o.overlayVisible} ${o.overlayEntering}`,N=l(k.className,B);a(!!(h&&d));let g=s(!!(h&&d))&&!v;return h&&d?e("div",{ref:f,...k,"aria-hidden":"true",className:N,"data-entry":g?"late":void 0,"data-testid":"iab-consent-banner-overlay"}):null});p.displayName="IABConsentBannerOverlay";export{p as IABConsentBannerOverlay};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{Fragment as e,jsx as o,jsxs as t}from"react/jsx-runtime";import r from"@c15t/ui/styles/components/iab-consent-banner";import{forwardRef as n,useMemo as a}from"react";import{ConsentTrackingContext as s}from"../../../context/consent-tracking-context.js";import{LocalThemeContext as i}from"../../../context/theme-context.js";import{useActiveUI as m,useModel as l,useTranslations as c}from"../../../hooks.js";import{useIABConsentManager as
|
|
2
|
+
import{Fragment as e,jsx as o,jsxs as t}from"react/jsx-runtime";import r from"@c15t/ui/styles/components/iab-consent-banner";import{forwardRef as n,useMemo as a}from"react";import{ConsentTrackingContext as s}from"../../../context/consent-tracking-context.js";import{LocalThemeContext as i}from"../../../context/theme-context.js";import{useActiveUI as m,useModel as l,useTranslations as c}from"../../../hooks.js";import{useIABConsentManager as d}from"../../../hooks/use-iab-manager.js";import{useLateEntry as p}from"../../../hooks/use-late-entry.js";import{useTextDirection as b}from"../../../hooks/use-text-direction.js";import{useUIConfig as u}from"../../../ui-config-context.js";import{mergeSlotProps as f}from"../../../utils/merge-slot-props.js";import{IABConsentBannerOverlay as h}from"./overlay.js";let j=["iab"],g=n(({children:n,className:a,style:s,className:i,disableAnimation:d,noStyle:g,models:x=j,...N},k)=>{let v=m(),{components:y}=u(),B=l(),C=c(),$=b(C?.language??"en"),A=null!==B&&"banner"===v&&x.includes(B),I=p(A)&&!d,P=f(y?.["iab-banner"]?.root,{baseClassName:[r.root],className:a||i,noStyle:g,style:s,...N}),R=g?P.className||"":`${P.className||""} ${r.bannerVisible}${d?"":` ${r.bannerEntering}`}`;return A?t(e,{children:[o(h,{}),o("div",{ref:k,...P,className:R,"data-position":"ltr"===$?"bottom-left":"bottom-right","data-entry":I?"late":void 0,"data-testid":"iab-consent-banner-root",dir:$,tabIndex:-1,children:n})]}):null}),x=({children:e,className:t,noStyle:r,disableAnimation:n,scrollLock:m,trapFocus:l,models:c,uiSource:p,...b})=>{let{policyBanner:u}=d({prompt:{scrollLock:m,trapFocus:l}}),f=u.blocking,h=a(()=>({disableAnimation:n,noStyle:r,scrollLock:f,trapFocus:f}),[n,r,f]),j=a(()=>({uiSource:p??"iab_banner"}),[p]);return o(s.Provider,{value:j,children:o(i.Provider,{value:h,children:o(g,{disableAnimation:n,className:t,noStyle:r,models:c,...b,children:e})})})};g.displayName="IABConsentBannerRootChildren";export{x as IABConsentBannerRoot};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import r from"@c15t/ui/styles/components/consent-banner";import{forwardRef as o,isValidElement as t}from"react";import{Slot as s}from"../../shared/libs/slot.js";import{useActiveUI as n}from"../../../hooks.js";import{
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import r from"@c15t/ui/styles/components/consent-banner";import{forwardRef as o,isValidElement as t}from"react";import{Slot as s}from"../../shared/libs/slot.js";import{useActiveUI as n}from"../../../hooks.js";import{useLateEntry as l}from"../../../hooks/use-late-entry.js";import{useScrollLock as a}from"../../../hooks/use-scroll-lock.js";import{useTheme as i}from"../../../hooks/use-theme.js";import{useUIConfig as m}from"../../../ui-config-context.js";import{cnExt as p}from"../../../utils/cn.js";import{mergeSlotProps as c}from"../../../utils/merge-slot-props.js";let f=o(({className:o,style:f,noStyle:y,asChild:d,children:u,...v},h)=>{let j=n(),{disableAnimation:b,noStyle:k,scrollLock:N}=i(),{components:g}=m(),x="banner"===j,C=c(g?.banner?.overlay,{baseClassName:r.overlay,className:o,noStyle:k||y,style:f,...v}),O=k||y||b?void 0:`${r.overlayVisible} ${r.overlayEntering}`,B=p(C.className,O);a(!!(x&&N));let S=l(!!(x&&N))&&!b;if(!(x&&N))return null;let $={...C,"aria-hidden":!0,className:B,"data-entry":S?"late":void 0,"data-testid":"consent-banner-overlay"};return d&&t(u)?e(s,{ref:h,...$,children:u}):e("div",{ref:h,...$,children:u})});f.displayName="ConsentBannerOverlay";let y=f;export{f as ConsentBannerOverlay,y as Overlay};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{Fragment as o,jsx as t,jsxs as e}from"react/jsx-runtime";import r from"@c15t/ui/styles/components/consent-banner";import{forwardRef as n,useMemo as i}from"react";import{useHeadlessConsentUI as a}from"../../../component-hooks/use-headless-consent-ui.js";import{ConsentTrackingContext as s}from"../../../context/consent-tracking-context.js";import{LocalThemeContext as l}from"../../../context/theme-context.js";import{useActiveUI as c,useHasConsentUI as m,useModel as p,usePolicyRule as d,useTranslations as u}from"../../../hooks.js";import{
|
|
2
|
+
import{Fragment as o,jsx as t,jsxs as e}from"react/jsx-runtime";import r from"@c15t/ui/styles/components/consent-banner";import{forwardRef as n,useMemo as i}from"react";import{useHeadlessConsentUI as a}from"../../../component-hooks/use-headless-consent-ui.js";import{ConsentTrackingContext as s}from"../../../context/consent-tracking-context.js";import{LocalThemeContext as l}from"../../../context/theme-context.js";import{useActiveUI as c,useHasConsentUI as m,useModel as p,usePolicyRule as d,useTranslations as u}from"../../../hooks.js";import{useLateEntry as f}from"../../../hooks/use-late-entry.js";import{useTextDirection as v}from"../../../hooks/use-text-direction.js";import{useUIConfig as b}from"../../../ui-config-context.js";import{defaultTranslationConfig as g}from"../../../utils/default-translation-config.js";import{mergeSlotProps as h}from"../../../utils/merge-slot-props.js";import{ConsentBannerSurfaceContext as j,mirrorDefaultPosition as k,useConsentBannerSurface as x}from"../surface-context.js";import{Overlay as N}from"./overlay.js";let y=["opt-in","opt-out"],S=n(({asChild:n,children:i,className:a,style:s,className:l,disableAnimation:j,noStyle:S,models:C=y,...$},L)=>{let P=c(),{components:R}=b(),B=m(),F=p()??"opt-in",A=d(),E=x(),V=u(),q=v(V?.language??g.defaultLanguage),w=k(E.position,E.positionSource,E.variant,q),z=B&&"banner"===P&&C.includes(F),D=f(z)&&!j,G=h(R?.banner?.root,{baseClassName:r.root,className:a||l,noStyle:S,style:s,...$}),H=S?G.className||"":`${G.className||""} ${j?"":`${r.bannerVisible} ${r.bannerEntering}`}`;return z?e(o,{children:[t(N,{}),t("div",{ref:L,...G,className:H,"data-variant":E.variant,"data-position":w,"data-blocking":E.blocking?"true":void 0,"data-prompt":A.prompt,"data-model":A.model,"data-entry":D?"late":void 0,"data-testid":"consent-banner-root",dir:q,children:i})]}):null}),C=({children:o,className:e,noStyle:r,disableAnimation:n,scrollLock:c,trapFocus:m,models:p,uiSource:d,variant:u,position:f,blocking:v,...b})=>{let{banner:g}=a({prompt:{blocking:v,position:f,scrollLock:c,trapFocus:m,variant:u}}),h=g.scrollLock,k=g.trapFocus,x=i(()=>({disableAnimation:n,noStyle:r,scrollLock:h,trapFocus:k}),[n,r,h,k]),N=i(()=>({blocking:g.blocking,position:g.position,positionSource:g.positionSource,variant:g.variant}),[g.blocking,g.position,g.positionSource,g.variant]),y=i(()=>({uiSource:d??"banner"}),[d]);return t(s.Provider,{value:y,children:t(l.Provider,{value:x,children:t(j.Provider,{value:N,children:t(S,{disableAnimation:n,className:e,noStyle:r,models:p,...b,children:o})})})})};S.displayName="ConsentBannerRootChildren";let $=C;export{C as ConsentBannerRoot,$ as Root};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{isLateEntry as t}from"@c15t/ui/utils/late-entry";import{useState as e}from"react";import{useIsHydrated as r}from"./use-is-hydrated.js";let a=function(a){let l=r(),n=()=>({late:a&&l&&t(),shown:a}),[o,s]=e(n);if(o.shown!==a){let t=n();return s(t),t.late}return o.late};export{a as useLateEntry};
|
package/dist/iab/styles.tw3.css
CHANGED
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
@keyframes iabConsentBannerEnter{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}
|
|
16
16
|
@keyframes iabConsentBannerExit{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}
|
|
17
17
|
:root, :host{--c15t-iab-consent-banner-enter-animation:iabConsentBannerEnter var(--c15t-duration-fast) var(--c15t-easing);--c15t-iab-consent-banner-exit-animation:iabConsentBannerExit var(--c15t-duration-fast) var(--c15t-easing)}
|
|
18
|
-
:root, :host{--iab-consent-banner-font-family:var(--c15t-font-family);--iab-consent-banner-line-height:var(--c15t-line-height-normal);--iab-consent-banner-text-size-adjust:100%;--iab-consent-banner-tab-size:4;--iab-consent-banner-border-radius-sm:var(--c15t-radius-sm);--iab-consent-banner-border-radius:var(--c15t-radius-lg);--iab-consent-banner-max-width:560px;--iab-consent-banner-animation-duration:var(--c15t-duration-fast);--iab-consent-banner-animation-timing:var(--c15t-easing);--iab-consent-banner-border-width:1px;--iab-consent-banner-border-width-hairline:1px;--iab-consent-banner-shadow:var(--c15t-shadow-lg);--iab-consent-banner-shadow-dark:var(--c15t-shadow-lg);--iab-consent-banner-background-color:var(--c15t-surface);--iab-consent-banner-background-color-dark:var(--c15t-surface);--iab-consent-banner-footer-background-color:var(--c15t-surface-hover);--iab-consent-banner-footer-background-color-dark:var(--c15t-surface-hover);--iab-consent-banner-text-color:var(--c15t-text);--iab-consent-banner-text-color-dark:var(--c15t-text);--iab-consent-banner-border-color:var(--c15t-border);--iab-consent-banner-border-color-dark:var(--c15t-border);--iab-consent-banner-title-color:var(--c15t-text);--iab-consent-banner-title-color-dark:var(--c15t-text);--iab-consent-banner-description-color:var(--c15t-text-muted);--iab-consent-banner-description-color-dark:var(--c15t-text-muted);--iab-consent-banner-overlay-background-color:var(--c15t-overlay);--iab-consent-banner-overlay-background-color-dark:var(--c15t-overlay);--iab-consent-banner-link-color:var(--c15t-primary);--iab-consent-banner-link-color-dark:var(--c15t-primary)}
|
|
18
|
+
:root, :host{--iab-consent-banner-font-family:var(--c15t-font-family);--iab-consent-banner-line-height:var(--c15t-line-height-normal);--iab-consent-banner-text-size-adjust:100%;--iab-consent-banner-tab-size:4;--iab-consent-banner-border-radius-sm:var(--c15t-radius-sm);--iab-consent-banner-border-radius:var(--c15t-radius-lg);--iab-consent-banner-max-width:560px;--iab-consent-banner-entry-duration:var(--c15t-duration-normal);--iab-consent-banner-entry-timing:var(--c15t-easing-out);--iab-consent-banner-animation-duration:var(--c15t-duration-fast);--iab-consent-banner-animation-timing:var(--c15t-easing-in);--iab-consent-banner-border-width:1px;--iab-consent-banner-border-width-hairline:1px;--iab-consent-banner-shadow:var(--c15t-shadow-lg);--iab-consent-banner-shadow-dark:var(--c15t-shadow-lg);--iab-consent-banner-background-color:var(--c15t-surface);--iab-consent-banner-background-color-dark:var(--c15t-surface);--iab-consent-banner-footer-background-color:var(--c15t-surface-hover);--iab-consent-banner-footer-background-color-dark:var(--c15t-surface-hover);--iab-consent-banner-text-color:var(--c15t-text);--iab-consent-banner-text-color-dark:var(--c15t-text);--iab-consent-banner-border-color:var(--c15t-border);--iab-consent-banner-border-color-dark:var(--c15t-border);--iab-consent-banner-title-color:var(--c15t-text);--iab-consent-banner-title-color-dark:var(--c15t-text);--iab-consent-banner-description-color:var(--c15t-text-muted);--iab-consent-banner-description-color-dark:var(--c15t-text-muted);--iab-consent-banner-overlay-background-color:var(--c15t-overlay);--iab-consent-banner-overlay-background-color-dark:var(--c15t-overlay);--iab-consent-banner-link-color:var(--c15t-primary);--iab-consent-banner-link-color-dark:var(--c15t-primary)}
|
|
19
19
|
@media only screen and (resolution>=192dpi){:root, :host{--iab-consent-banner-border-width-hairline:.5px}}
|
|
20
20
|
|
|
21
21
|
/* components/iab-panel */
|
|
22
22
|
.c15t-ui-root-pWvoN{box-sizing:border-box;isolation:isolate;font-family:var(--iab-cd-font-family);line-height:var(--iab-cd-line-height);-webkit-text-size-adjust:100%;tab-size:4;padding:var(--iab-cd-padding);z-index:var(--iab-cd-z-index);background:0 0;border:0;justify-content:center;align-items:center;margin:0;display:flex;position:fixed;inset:0}.c15t-ui-dialogVisible-ZcQux{opacity:1;transition:opacity var(--iab-cd-animation-duration) var(--iab-cd-animation-timing)}.c15t-ui-dialogHidden-QOLab{opacity:0;transition:opacity var(--iab-cd-animation-duration) var(--iab-cd-animation-timing)}.c15t-ui-contentVisible-oIYEE{opacity:1;transition:opacity var(--iab-cd-animation-duration) var(--iab-cd-animation-timing), transform var(--iab-cd-animation-duration) var(--c15t-easing-spring);transform:scale(1)}.c15t-ui-contentHidden-dppgu{opacity:0;transition:opacity var(--iab-cd-animation-duration) var(--iab-cd-animation-timing), transform var(--iab-cd-animation-duration) var(--iab-cd-animation-timing);transform:scale(.95)}.c15t-ui-overlay-LyBwJ{background-color:var(--iab-cd-overlay-background);z-index:var(--iab-cd-overlay-z-index);position:fixed;inset:0}.c15t-ui-overlayVisible-HyYf_{opacity:1;transition:opacity var(--iab-cd-animation-duration) var(--iab-cd-animation-timing)}.c15t-ui-overlayHidden-G8kpl{opacity:0;transition:opacity var(--iab-cd-animation-duration) var(--iab-cd-animation-timing)}@starting-style{.c15t-ui-overlayEntering-hcqOQ{opacity:0}}.c15t-dark .c15t-ui-overlay-LyBwJ{background-color:var(--iab-cd-overlay-background-dark)}.c15t-ui-card-DTFr5{width:min(100%, var(--iab-cd-max-width));max-height:var(--iab-cd-max-height);border-radius:var(--iab-cd-border-radius);border:1px solid var(--iab-cd-border-color);background-color:var(--iab-cd-background-color);min-height:0;box-shadow:var(--iab-cd-shadow);flex-direction:column;display:flex;position:relative;overflow:visible}.c15t-dark .c15t-ui-card-DTFr5{background-color:var(--iab-cd-background-color-dark);border-color:var(--iab-cd-border-color-dark)}.c15t-ui-header-wVNlq{border-bottom:1px solid var(--iab-cd-border-color);flex-shrink:0;justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.c15t-dark .c15t-ui-header-wVNlq{border-color:var(--iab-cd-border-color-dark)}@media (width>=768px){.c15t-ui-header-wVNlq{padding:1rem}}.c15t-ui-headerContent-djclo{flex:1}.c15t-ui-title-PNS3O{font-size:var(--iab-cd-title-font-size);font-weight:var(--iab-cd-title-font-weight);color:var(--iab-cd-text-color);margin:0;line-height:1.25}.c15t-dark .c15t-ui-title-PNS3O{color:var(--iab-cd-text-color-dark)}.c15t-ui-description-kGL5G{font-size:var(--iab-cd-description-font-size);color:var(--iab-cd-text-muted-color);line-height:var(--iab-cd-description-line-height);margin:.25rem 0 0}.c15t-dark .c15t-ui-description-kGL5G{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-closeButton-LDT86{border-radius:var(--c15t-radius-md);cursor:pointer;color:var(--iab-cd-text-muted-color);background:0 0;border:none;justify-content:center;align-items:center;padding:.375rem;transition:background-color .15s;display:flex}.c15t-ui-closeButton-LDT86:hover{background-color:var(--iab-cd-surface-hover)}.c15t-dark .c15t-ui-closeButton-LDT86{color:var(--iab-cd-text-muted-color-dark)}.c15t-dark .c15t-ui-closeButton-LDT86:hover{background-color:var(--iab-cd-surface-hover-dark)}.c15t-ui-body-IFzVC{flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}.c15t-ui-tabsContainer-CGMHA{flex-shrink:0;padding:.75rem .75rem 0}@media (width>=768px){.c15t-ui-tabsContainer-CGMHA{padding:1rem 1rem 0}}.c15t-ui-tabsList-w5OMX{isolation:isolate;border-radius:var(--c15t-radius-lg,.625rem);background-color:var(--iab-cd-surface-hover);grid-auto-columns:1fr;grid-auto-flow:column;gap:.25rem;padding:.25rem;display:grid;position:relative}.c15t-dark .c15t-ui-tabsList-w5OMX{background-color:var(--iab-cd-surface-hover-dark)}.c15t-ui-tabButton-TaxQK{z-index:10;white-space:nowrap;border-radius:var(--c15t-radius-md,.375rem);height:2rem;color:var(--iab-cd-text-muted-color);cursor:pointer;background:0 0;border:none;outline:none;justify-content:center;align-items:center;gap:.375rem;padding:0 .75rem;font-size:.8125rem;font-weight:500;transition:color .15s cubic-bezier(.33,1,.68,1),background-color .15s cubic-bezier(.33,1,.68,1);display:flex;position:relative}.c15t-ui-tabButton-TaxQK:hover{color:var(--iab-cd-text-color)}.c15t-ui-tabButton-TaxQK:focus-visible{outline:2px solid var(--iab-cd-primary-color);outline-offset:2px}.c15t-ui-tabButton-TaxQK[data-state=active]{color:var(--iab-cd-text-color)}.c15t-dark .c15t-ui-tabButton-TaxQK{color:var(--iab-cd-text-muted-color-dark)}.c15t-dark .c15t-ui-tabButton-TaxQK:hover,.c15t-dark .c15t-ui-tabButton-TaxQK[data-state=active]{color:var(--iab-cd-text-color-dark)}.c15t-ui-tabIndicator-ipeu4{z-index:0;border-radius:var(--c15t-radius-md,.375rem);background-color:var(--iab-cd-background-color);transition:transform var(--c15t-duration-slow) cubic-bezier(.33, 1, .68, 1), width var(--c15t-duration-slow) cubic-bezier(.33, 1, .68, 1);position:absolute;inset-block:.25rem;box-shadow:0 1px 2px #0000000f,0 1px 3px #0000001a}.c15t-dark .c15t-ui-tabIndicator-ipeu4{background-color:var(--iab-cd-background-color-dark);box-shadow:0 1px 2px #0003,0 1px 3px #0000004d}.c15t-ui-tabIndicator-ipeu4[data-active-tab=purposes]{width:calc(50% - .125rem);left:.25rem;transform:translate(0)}.c15t-ui-tabIndicator-ipeu4[data-active-tab=vendors]{width:calc(50% - .125rem);left:.125rem;transform:translate(100%)}.c15t-ui-content-tpKyG{flex:auto;min-height:0;padding:.75rem;overflow:hidden auto}@media (width>=768px){.c15t-ui-content-tpKyG{padding:1rem}}.c15t-ui-purposeItem-ycHg8{border-radius:var(--c15t-radius-md);border:1px solid var(--iab-cd-border-color);background-color:var(--iab-cd-background-color);margin-bottom:.5rem}.c15t-dark .c15t-ui-purposeItem-ycHg8{border-color:var(--iab-cd-border-color-dark);background-color:var(--iab-cd-background-color-dark)}.c15t-ui-purposeHeader-dtjf3{justify-content:space-between;align-items:flex-start;gap:.75rem;padding:.75rem;display:flex}.c15t-ui-purposeTrigger-RYEFG{text-align:left;cursor:pointer;background:0 0;border:none;flex:1;align-items:center;gap:.5rem;min-width:0;padding:0;display:flex}.c15t-ui-purposeArrow-O8n8H{width:1rem;height:1rem;color:var(--iab-cd-text-muted-color);flex-shrink:0}.c15t-dark .c15t-ui-purposeArrow-O8n8H{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-purposeInfo-wahTP{flex:1;min-width:0}.c15t-ui-purposeName-QJMF_{color:var(--iab-cd-text-color);align-items:center;gap:.5rem;margin:0;font-size:.875rem;font-weight:500;display:flex}.c15t-dark .c15t-ui-purposeName-QJMF_{color:var(--iab-cd-text-color-dark)}.c15t-ui-lockIcon-i8SD3{width:.75rem;height:.75rem;color:var(--iab-cd-text-muted-color)}.c15t-dark .c15t-ui-lockIcon-i8SD3{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-purposeMeta-OC9IY{color:var(--iab-cd-text-muted-color);margin:.125rem 0 0;font-size:.75rem}.c15t-dark .c15t-ui-purposeMeta-OC9IY{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-legitimateInterestBadge-t0cqx{color:var(--iab-cd-text-muted-color);align-items:center;gap:.25rem;margin-top:.25rem;font-size:.625rem;font-weight:500;display:inline-flex}.c15t-ui-legitimateInterestIcon-Pvt34{width:.75rem;height:.75rem}.c15t-ui-srOnly-n1PBG{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.c15t-ui-purposeContent-teoEc{border-top:1px solid var(--iab-cd-border-color);margin-top:.75rem;padding:.75rem}.c15t-dark .c15t-ui-purposeContent-teoEc{border-color:var(--iab-cd-border-color-dark)}.c15t-ui-purposeDescription-eLaj6{color:var(--iab-cd-text-muted-color);margin:0;font-size:.75rem;line-height:1.5}.c15t-dark .c15t-ui-purposeDescription-eLaj6{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-examplesToggle-UKJ4l{color:var(--iab-cd-text-color);cursor:pointer;background:0 0;border:none;align-items:center;gap:.25rem;margin-top:.75rem;padding:0;font-size:.75rem;font-weight:500;display:flex}.c15t-ui-examplesToggle-UKJ4l:hover{color:var(--iab-cd-primary-color)}.c15t-dark .c15t-ui-examplesToggle-UKJ4l{color:var(--iab-cd-text-color-dark)}.c15t-dark .c15t-ui-examplesToggle-UKJ4l:hover{color:var(--iab-cd-primary-color-dark)}.c15t-ui-examplesList-Jgu0V{margin:.375rem 0 0;padding-left:1rem;list-style-type:disc}.c15t-ui-examplesList-Jgu0V li{color:var(--iab-cd-text-muted-color);font-size:.75rem;line-height:1.5}.c15t-dark .c15t-ui-examplesList-Jgu0V li{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-vendorsToggle-iiROe{color:var(--iab-cd-text-color);cursor:pointer;background:0 0;border:none;align-items:center;gap:.25rem;margin-top:.75rem;padding:0;font-size:.75rem;font-weight:500;display:flex}.c15t-ui-vendorsToggle-iiROe:hover{color:var(--iab-cd-primary-color)}.c15t-dark .c15t-ui-vendorsToggle-iiROe{color:var(--iab-cd-text-color-dark)}.c15t-ui-vendorSection-Xotxt{z-index:1;margin-top:.375rem;position:relative}.c15t-ui-vendorSectionTitle-fDzFC{color:var(--iab-cd-text-muted-color);text-transform:uppercase;letter-spacing:.05em;margin:.5rem 0 .375rem;font-size:.625rem;font-weight:500}.c15t-dark .c15t-ui-vendorSectionTitle-fDzFC{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-vendorSectionTitleLi-_EU2B{color:var(--iab-cd-text-muted-color);align-items:center;gap:.25rem;display:flex}.c15t-ui-vendorRow-MdJwv{border-radius:var(--c15t-radius-sm);background-color:var(--iab-cd-surface-hover);justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.375rem;padding:.5rem;display:flex}.c15t-dark .c15t-ui-vendorRow-MdJwv{background-color:var(--iab-cd-surface-hover-dark)}.c15t-ui-vendorRowLi-TR3to{background-color:var(--iab-cd-surface-hover);border:1px solid var(--iab-cd-border-color)}.c15t-ui-vendorInfo-cLXjo{flex:1;min-width:0}.c15t-ui-vendorName-U5tbA{color:var(--iab-cd-text-color);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:.375rem;padding:0;font-size:.75rem;font-weight:500;display:flex}.c15t-ui-vendorName-U5tbA:hover{color:var(--iab-cd-primary-color)}.c15t-dark .c15t-ui-vendorName-U5tbA{color:var(--iab-cd-text-color-dark)}.c15t-ui-customVendorIcon-xE8uf{width:.75rem;height:.75rem;color:var(--iab-cd-primary-color)}.c15t-dark .c15t-ui-customVendorIcon-xE8uf{color:var(--iab-cd-primary-color-dark)}.c15t-ui-vendorDetails-nJLMH{flex-wrap:wrap;gap:.5rem;margin-top:.125rem;display:flex}.c15t-ui-vendorDetail-qWyPR{color:var(--iab-cd-text-muted-color);font-size:.625rem}.c15t-dark .c15t-ui-vendorDetail-qWyPR{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-vendorDetailLi-HiywZ{color:var(--iab-cd-text-muted-color);font-weight:500}.c15t-ui-stackItem-Z6dCC{border-radius:var(--c15t-radius-md);border:1px solid var(--iab-cd-border-color);background-color:var(--iab-cd-background-color);margin-bottom:.5rem}.c15t-dark .c15t-ui-stackItem-Z6dCC{border-color:var(--iab-cd-border-color-dark);background-color:var(--iab-cd-background-color-dark)}.c15t-ui-stackHeader-TkNdL{justify-content:space-between;align-items:flex-start;gap:.75rem;padding:.75rem;display:flex}.c15t-ui-stackTrigger-Kqeyy{text-align:left;cursor:pointer;background:0 0;border:none;flex:1;align-items:center;gap:.5rem;min-width:0;padding:0;display:flex}.c15t-ui-stackInfo-JH0ue{flex:1;min-width:0}.c15t-ui-stackName-yNHhd{color:var(--iab-cd-text-color);margin:0;font-size:.875rem;font-weight:500;line-height:1.25}.c15t-dark .c15t-ui-stackName-yNHhd{color:var(--iab-cd-text-color-dark)}.c15t-ui-stackMeta-Il_rX{color:var(--iab-cd-text-muted-color);margin:.25rem 0 0;font-size:.75rem}.c15t-dark .c15t-ui-stackMeta-Il_rX{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-stackControls-kBZON{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.c15t-ui-partialIndicator-U9dt6{background-color:var(--iab-cd-primary-color);border-radius:50%;width:.375rem;height:.375rem}.c15t-ui-stackDescription-occgV{color:var(--iab-cd-text-muted-color);margin:0 0 0 1.5rem;padding-bottom:.75rem;font-size:.75rem}.c15t-ui-stackDescription-occgV p{margin:0}.c15t-ui-stackDescription-occgV p+p{margin-top:.25rem}.c15t-dark .c15t-ui-stackDescription-occgV{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-stackContent-wu6FF{border-top:1px solid var(--iab-cd-border-color);background-color:var(--iab-cd-surface-hover);padding:.5rem}.c15t-dark .c15t-ui-stackContent-wu6FF{border-color:var(--iab-cd-border-color-dark);background-color:var(--iab-cd-surface-hover-dark)}.c15t-ui-specialPurposesSection-y9Pqu{border-radius:var(--c15t-radius-md);border:1px solid var(--iab-cd-border-color);background-color:var(--iab-cd-background-color);margin-bottom:.5rem}.c15t-dark .c15t-ui-specialPurposesSection-y9Pqu{border-color:var(--iab-cd-border-color-dark);background-color:var(--iab-cd-background-color-dark)}.c15t-ui-specialPurposesHeader-Rq1Tg{justify-content:space-between;align-items:flex-start;gap:.75rem;padding:.75rem;display:flex}.c15t-ui-specialPurposesTitle-tcftu{color:var(--iab-cd-text-color);align-items:center;gap:.5rem;margin:0;font-size:.875rem;font-weight:500;display:flex}.c15t-dark .c15t-ui-specialPurposesTitle-tcftu{color:var(--iab-cd-text-color-dark)}.c15t-ui-featuresSection-TmXU3{border-radius:var(--c15t-radius-md);border:1px solid var(--iab-cd-border-color);background-color:var(--iab-cd-background-color);margin-bottom:var(--c15t-space-sm)}.c15t-dark .c15t-ui-featuresSection-TmXU3{border-color:var(--iab-cd-border-color-dark);background-color:var(--iab-cd-background-color-dark)}.c15t-ui-featuresHeader-VSBo2{padding:calc(var(--c15t-space-md) * .75)}.c15t-ui-featuresTitle-BpbiP{font-size:var(--c15t-font-size-sm);font-weight:var(--c15t-font-weight-medium);color:var(--iab-cd-text-color);margin:0}.c15t-dark .c15t-ui-featuresTitle-BpbiP{color:var(--iab-cd-text-color-dark)}.c15t-ui-featuresDescription-QfBHO{font-size:calc(var(--c15t-font-size-base) * .75);line-height:var(--c15t-line-height-normal);color:var(--iab-cd-text-muted-color);margin:var(--c15t-space-xs) 0 0}.c15t-dark .c15t-ui-featuresDescription-QfBHO{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-featuresList-Y5lNt{padding:0 calc(var(--c15t-space-md) * .75) calc(var(--c15t-space-md) * .75)}.c15t-ui-infoIcon-Egw87{width:.875rem;height:.875rem;color:var(--iab-cd-text-muted-color);cursor:help}.c15t-dark .c15t-ui-infoIcon-Egw87{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-tooltip-XjaZq{background-color:var(--iab-cd-background-color);border:1px solid var(--iab-cd-border-color);border-radius:var(--c15t-radius-md);width:16rem;box-shadow:var(--c15t-shadow-lg);color:var(--iab-cd-text-color);z-index:10;opacity:0;visibility:hidden;padding:.5rem;font-size:.75rem;transition:opacity .15s,visibility .15s;position:absolute;top:1.5rem;right:0}.c15t-ui-tooltipVisible-saaoQ{opacity:1;visibility:visible}.c15t-dark .c15t-ui-tooltip-XjaZq{background-color:var(--iab-cd-background-color-dark);border-color:var(--iab-cd-border-color-dark);color:var(--iab-cd-text-color-dark)}.c15t-ui-vendorListHeader-Hfxxu{background-color:var(--iab-cd-background-color);z-index:10;margin-top:0;padding-top:0;padding-bottom:.375rem;position:sticky;top:0}@media (width>=768px){.c15t-ui-vendorListHeader-Hfxxu{margin-top:0;padding-top:0;top:0}}.c15t-dark .c15t-ui-vendorListHeader-Hfxxu{background-color:var(--iab-cd-background-color-dark)}.c15t-ui-searchContainer-uyKJB{position:relative}.c15t-ui-searchIcon-NhyW4{width:.875rem;height:.875rem;color:var(--iab-cd-text-muted-color);position:absolute;top:50%;left:.625rem;transform:translateY(-50%)}.c15t-dark .c15t-ui-searchIcon-NhyW4{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-searchInput-cLLuO{border-radius:var(--c15t-radius-md);border:1px solid var(--iab-cd-border-color);background-color:var(--iab-cd-background-color);width:100%;color:var(--iab-cd-text-color);padding:.5rem .75rem .5rem 2rem;font-size:.875rem}.c15t-ui-searchInput-cLLuO:focus{border-color:var(--iab-cd-primary-color);box-shadow:0 0 0 2px color-mix(in srgb, var(--iab-cd-primary-color) 20%, transparent);outline:none}.c15t-dark .c15t-ui-searchInput-cLLuO{background-color:var(--iab-cd-background-color-dark);border-color:var(--iab-cd-border-color-dark);color:var(--iab-cd-text-color-dark)}.c15t-ui-vendorCount-s4d6i{color:var(--iab-cd-text-muted-color);margin-top:.25rem;font-size:.75rem}.c15t-dark .c15t-ui-vendorCount-s4d6i{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-selectedVendorBanner-S6KCv{background-color:color-mix(in srgb, var(--iab-cd-primary-color) 14%, var(--c15t-surface));border:1px solid color-mix(in srgb, var(--iab-cd-primary-color) 30%, transparent);border-radius:var(--c15t-radius-md);z-index:100;isolation:isolate;box-shadow:var(--c15t-shadow-sm);align-items:center;gap:.5rem;margin-bottom:.5rem;padding:.5rem .625rem;display:flex;position:sticky;top:0}.c15t-ui-selectedVendorText-jjIQi{color:var(--iab-cd-primary-color);flex:1;font-size:.75rem}.c15t-ui-clearSelectionButton-yz3Zx{color:var(--iab-cd-primary-color);cursor:pointer;background:0 0;border:none;align-items:center;gap:.25rem;padding:0;font-size:.75rem;display:flex}.c15t-ui-clearSelectionButton-yz3Zx:hover{opacity:.8}.c15t-ui-clearIcon-sTZC2{width:.75rem;height:.75rem}.c15t-ui-vendorListItem-NwBiX{z-index:1;border:1px solid var(--iab-cd-border-color);border-radius:var(--c15t-radius-md);margin-bottom:.375rem;scroll-margin-top:6rem;position:relative;overflow:hidden}.c15t-dark .c15t-ui-vendorListItem-NwBiX{border-color:var(--iab-cd-border-color-dark)}.c15t-ui-vendorListItemHeader-fBe_O{align-items:center;gap:.5rem;padding:.625rem;display:flex}.c15t-ui-vendorConsentControl-VC70A{border-radius:var(--c15t-radius-sm);flex-shrink:0;justify-content:center;align-items:center;min-width:2.25rem;min-height:2.25rem;padding:.375rem;display:inline-flex}.c15t-ui-vendorConsentControl-VC70A:hover{background-color:var(--iab-cd-surface-hover)}.c15t-dark .c15t-ui-vendorConsentControl-VC70A:hover{background-color:var(--iab-cd-surface-hover-dark)}.c15t-ui-vendorConsentSwitch-wEFf8{flex-shrink:0;display:block}.c15t-ui-vendorListTrigger-TG_0F{text-align:left;cursor:pointer;background:0 0;border:none;flex:1;justify-content:space-between;align-items:center;min-width:0;padding:0;display:flex}.c15t-ui-vendorListTrigger-TG_0F:hover{color:var(--iab-cd-primary-color)}.c15t-ui-vendorListInfo-BSgBB{flex:1;min-width:0}.c15t-ui-vendorListName-II_BV{color:var(--iab-cd-text-color);align-items:center;gap:.5rem;margin:0;font-size:.875rem;font-weight:500;display:flex}.c15t-dark .c15t-ui-vendorListName-II_BV{color:var(--iab-cd-text-color-dark)}.c15t-ui-vendorListMeta-wa6UC{flex-wrap:wrap;align-items:center;gap:.375rem;margin-top:.125rem;display:flex}.c15t-ui-vendorListMetaText-MS_cF{color:var(--iab-cd-text-muted-color);font-size:.75rem}.c15t-dark .c15t-ui-vendorListMetaText-MS_cF{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-vendorListLiBadge-_Uq0L{color:var(--iab-cd-text-muted-color);align-items:center;gap:.125rem;font-size:.625rem;font-weight:500;display:inline-flex}.c15t-ui-vendorListContent-CtRTw{border-top:1px solid var(--iab-cd-border-color);background-color:var(--iab-cd-surface-hover);padding:0 .625rem .625rem}.c15t-dark .c15t-ui-vendorListContent-CtRTw{border-color:var(--iab-cd-border-color-dark);background-color:var(--iab-cd-surface-hover-dark)}.c15t-ui-vendorLinks-pxq9Z{padding-top:.5rem}.c15t-ui-tabPanel-PJKhk{min-width:0;overflow-x:hidden}.c15t-ui-vendorLink-htHQn{color:var(--iab-cd-primary-color);align-items:center;gap:.25rem;margin-right:.75rem;font-size:.75rem;text-decoration:none;display:inline-flex}.c15t-ui-vendorLink-htHQn:hover{text-decoration:underline}.c15t-ui-vendorLinkIcon-UjIy5{width:.75rem;height:.75rem}.c15t-ui-vendorBadges-SED5E{flex-wrap:wrap;gap:.5rem;margin-top:.375rem;display:flex}.c15t-ui-vendorBadge-Pu0Hs{border-radius:var(--c15t-radius-sm);background-color:var(--iab-cd-surface-hover);color:var(--iab-cd-text-muted-color);padding:.125rem .375rem;font-size:.625rem}.c15t-dark .c15t-ui-vendorBadge-Pu0Hs{background-color:var(--iab-cd-surface-hover-dark);color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-vendorPurposesList-CtEFC{margin-top:.5rem}.c15t-ui-vendorPurposesTitle-2hGY4{color:var(--iab-cd-text-color);align-items:center;gap:.5rem;margin:0 0 .25rem;font-size:.75rem;font-weight:500;display:flex}.c15t-dark .c15t-ui-vendorPurposesTitle-2hGY4{color:var(--iab-cd-text-color-dark)}.c15t-ui-vendorPurposesItems-VKo31{margin:0;padding:0;list-style:none}.c15t-ui-vendorPurposeItem-TmnWw{color:var(--iab-cd-text-muted-color);border-left:2px solid var(--iab-cd-border-color);justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.125rem;padding-left:.5rem;font-size:.75rem;display:flex}.c15t-dark .c15t-ui-vendorPurposeItem-TmnWw{color:var(--iab-cd-text-muted-color-dark);border-color:var(--iab-cd-border-color-dark)}.c15t-ui-vendorPurposeItemLi-rO_6B{border-color:var(--iab-cd-text-muted-color);color:var(--iab-cd-text-muted-color)}.c15t-ui-vendorRetention-TTJ2U{opacity:.7;font-size:.625rem}.c15t-ui-footer-YF32K{border-top:1px solid var(--iab-cd-border-color);background-color:var(--iab-cd-surface-hover);flex-shrink:0;justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.c15t-dark .c15t-ui-footer-YF32K{border-color:var(--iab-cd-border-color-dark);background-color:var(--iab-cd-surface-hover-dark)}.c15t-ui-consentNotice-PEEG3{text-align:center;padding-top:1.5rem}.c15t-dark .c15t-ui-consentNotice-PEEG3{border-color:var(--iab-cd-border-color-dark)}.c15t-ui-consentNoticeText-MhMCM{color:var(--iab-cd-text-muted-color);margin-block:0;font-size:.625rem}.c15t-dark .c15t-ui-consentNoticeText-MhMCM{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-loadingContainer-iW124{flex-direction:column;justify-content:center;align-items:center;gap:.75rem;height:100%;display:flex}.c15t-ui-loadingSpinner-W8iiY{border:2px solid var(--iab-cd-border-color);border-top-color:var(--iab-cd-primary-color);width:1.75rem;height:1.75rem;animation:var(--c15t-spin-animation);border-radius:50%}.c15t-ui-loadingText-o2XqJ{color:var(--iab-cd-text-muted-color);font-size:.875rem}.c15t-dark .c15t-ui-loadingText-o2XqJ{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-emptyState-nmTzy{text-align:center;padding:var(--c15t-space-xl)}.c15t-ui-emptyStateText-HuJtF{color:var(--iab-cd-text-muted-color);margin:0;font-size:.875rem}.c15t-dark .c15t-ui-emptyStateText-HuJtF{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-vendorSection-Xotxt{z-index:1;margin-top:.25rem;margin-bottom:1rem;position:relative}.c15t-ui-vendorSectionHeading-s4i73{text-transform:uppercase;letter-spacing:.05em;color:var(--iab-cd-text-muted-color);background:var(--iab-cd-surface-hover-color);border-bottom:1px solid var(--iab-cd-border-color);align-items:center;gap:.5rem;margin:0;padding:.375rem 0 .25rem;font-size:.75rem;font-weight:600;display:flex}.c15t-dark .c15t-ui-vendorSectionHeading-s4i73{color:var(--iab-cd-text-muted-color-dark);background:var(--iab-cd-surface-hover-color-dark);border-color:var(--iab-cd-border-color-dark)}.c15t-ui-vendorSectionIcon-Cc99v{flex-shrink:0;width:1rem;height:1rem}.c15t-ui-iabVendorSectionHeader-YsNA5{background-color:var(--iab-cd-background-color);border-bottom:1px solid var(--iab-cd-border-color);z-index:10;padding:.25rem 0;position:relative}.c15t-dark .c15t-ui-iabVendorSectionHeader-YsNA5{border-color:var(--iab-cd-border-color-dark);background-color:var(--iab-cd-background-color-dark)}.c15t-ui-iabVendorSectionHeader-YsNA5 .c15t-ui-vendorSectionHeading-s4i73{border-bottom:none;padding-bottom:.25rem}.c15t-ui-iabVendorNotice-WnMMx{color:var(--iab-cd-text-muted-color);margin:0;font-size:.6875rem}.c15t-dark .c15t-ui-iabVendorNotice-WnMMx{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-customVendorSectionHeader-Sy8yM{background-color:var(--iab-cd-background-color);border-bottom:1px solid var(--iab-cd-border-color);z-index:10;padding:.5rem 0;position:relative}.c15t-dark .c15t-ui-customVendorSectionHeader-Sy8yM{border-color:var(--iab-cd-border-color-dark);background-color:var(--iab-cd-background-color-dark)}.c15t-ui-customVendorSectionHeader-Sy8yM .c15t-ui-vendorSectionHeading-s4i73{background:0 0;border-bottom:none;padding-bottom:.25rem}.c15t-ui-customVendorNotice-NgBsE{color:var(--iab-cd-text-muted-color);margin:0;padding:.25rem 0 1rem;font-size:.6875rem}.c15t-dark .c15t-ui-customVendorNotice-NgBsE{color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-customVendorItem-QF5C7{border-left:3px solid var(--iab-cd-primary-color)}.c15t-dark .c15t-ui-customVendorItem-QF5C7{border-left-color:var(--iab-cd-primary-color-dark)}.c15t-ui-customVendorPurposeSection-zFEUM{border-top:1px solid var(--iab-cd-border-color);margin-top:.75rem;padding-top:.75rem}.c15t-dark .c15t-ui-customVendorPurposeSection-zFEUM{border-color:var(--iab-cd-border-color-dark)}.c15t-ui-vendorSectionTitleCustom-JjHzO{text-transform:uppercase;letter-spacing:.05em;color:var(--iab-cd-primary-color);align-items:center;gap:.375rem;margin:0 0 .5rem;font-size:.625rem;font-weight:600;display:flex}.c15t-dark .c15t-ui-vendorSectionTitleCustom-JjHzO{color:var(--iab-cd-primary-color-dark)}.c15t-ui-objectButton-S0x1H{border-radius:var(--c15t-radius-sm);border:1px solid var(--iab-cd-border-color);color:var(--iab-cd-text-muted-color);cursor:pointer;white-space:nowrap;background-color:#0000;padding:.25rem .5rem;font-size:.6875rem;font-weight:500;transition:background-color .15s,border-color .15s,color .15s}.c15t-ui-objectButton-S0x1H:hover{border-color:var(--iab-cd-text-muted-color);color:var(--iab-cd-text-color)}.c15t-ui-objectButton-S0x1H[data-active],.c15t-ui-objectButtonActive-AlNLv{background-color:var(--iab-cd-text-muted-color);border-color:var(--iab-cd-text-muted-color);color:var(--iab-cd-background-color)}.c15t-ui-objectButton-S0x1H[data-active]:hover,.c15t-ui-objectButtonActive-AlNLv:hover{opacity:.9}.c15t-dark .c15t-ui-objectButton-S0x1H{border-color:var(--iab-cd-border-color-dark);color:var(--iab-cd-text-muted-color-dark)}.c15t-dark .c15t-ui-objectButton-S0x1H:hover{border-color:var(--iab-cd-text-muted-color-dark);color:var(--iab-cd-text-color-dark)}.c15t-dark .c15t-ui-objectButton-S0x1H[data-active],.c15t-dark .c15t-ui-objectButtonActive-AlNLv{background-color:var(--iab-cd-text-muted-color-dark);border-color:var(--iab-cd-text-muted-color-dark);color:var(--iab-cd-background-color-dark)}.c15t-ui-liExplanation-_r6Zx{color:var(--iab-cd-text-muted-color);background-color:var(--iab-cd-surface-hover);font-size:.6875rem;font-style:italic}.c15t-dark .c15t-ui-liExplanation-_r6Zx{color:var(--iab-cd-text-muted-color-dark);background-color:var(--iab-cd-surface-hover-dark);border-color:var(--iab-cd-text-muted-color-dark)}.c15t-ui-vendorLiSection-sqzvi{border-top:1px solid var(--iab-cd-border-color);margin-top:.75rem;padding-top:.75rem}.c15t-dark .c15t-ui-vendorLiSection-sqzvi{border-color:var(--iab-cd-border-color-dark)}.c15t-ui-vendorLiSectionHeader-fsKUh{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.375rem;display:flex}.c15t-ui-vendorLiSectionHeader-fsKUh .c15t-ui-vendorPurposesTitle-2hGY4{align-items:center;margin:0;display:flex}.c15t-ui-purposeLiSection-YbwuC{background-color:var(--iab-cd-surface-hover);border-radius:var(--c15t-radius-sm);border:1px solid var(--iab-cd-border-color);margin:.75rem 0;padding:.75rem}.c15t-dark .c15t-ui-purposeLiSection-YbwuC{background-color:var(--iab-cd-surface-hover-dark);border-color:var(--iab-cd-border-color-dark)}.c15t-ui-purposeLiSectionHeader-cSbP3{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.5rem;display:flex}.c15t-ui-purposeLiInfo-Rpryr{color:var(--iab-cd-text-color);align-items:center;gap:.375rem;font-size:.75rem;font-weight:500;display:flex}.c15t-dark .c15t-ui-purposeLiInfo-Rpryr{color:var(--iab-cd-text-color-dark)}.c15t-ui-purposeLiInfo-Rpryr .c15t-ui-legitimateInterestIcon-Pvt34{flex-shrink:0}@media (prefers-reduced-motion:reduce){.c15t-ui-dialogVisible-ZcQux,.c15t-ui-dialogHidden-QOLab,.c15t-ui-contentVisible-oIYEE,.c15t-ui-contentHidden-dppgu,.c15t-ui-overlayVisible-HyYf_,.c15t-ui-overlayHidden-G8kpl,.c15t-ui-closeButton-LDT86,.c15t-ui-tabButton-TaxQK,.c15t-ui-tooltip-XjaZq,.c15t-ui-objectButton-S0x1H,.c15t-ui-tabIndicator-ipeu4{transition:none}.c15t-ui-loadingSpinner-W8iiY{animation:none}}@media (hover:none){.c15t-ui-closeButton-LDT86:hover{background-color:#0000}.c15t-ui-tabButton-TaxQK:hover{color:var(--iab-cd-text-muted-color)}.c15t-ui-objectButton-S0x1H:hover{border-color:var(--iab-cd-border-color);color:var(--iab-cd-text-muted-color)}}
|
|
23
23
|
|
|
24
24
|
/* components/iab-prompt */
|
|
25
|
-
.c15t-ui-root-wCtZ2{box-sizing:border-box;z-index:999998;font-family:var(--iab-consent-banner-font-family);line-height:var(--iab-consent-banner-line-height);-webkit-text-size-adjust:var(--iab-consent-banner-text-size-adjust);-webkit-font-smoothing:antialiased;tab-size:var(--iab-consent-banner-tab-size);justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.c15t-ui-bannerVisible-uqQdb{opacity:1
|
|
25
|
+
.c15t-ui-root-wCtZ2{box-sizing:border-box;z-index:999998;font-family:var(--iab-consent-banner-font-family);line-height:var(--iab-consent-banner-line-height);-webkit-text-size-adjust:var(--iab-consent-banner-text-size-adjust);-webkit-font-smoothing:antialiased;tab-size:var(--iab-consent-banner-tab-size);justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.c15t-ui-bannerEntering-Rn_SM,.c15t-ui-bannerVisible-uqQdb{opacity:1}.c15t-ui-bannerEntering-Rn_SM[data-entry=late]:not(.c15t-ui-bannerHidden-KVkXf){transition:opacity var(--iab-consent-banner-entry-duration) var(--iab-consent-banner-entry-timing)}@starting-style{.c15t-ui-bannerEntering-Rn_SM[data-entry=late]{opacity:0}}.c15t-ui-bannerHidden-KVkXf{opacity:0;transition:opacity var(--iab-consent-banner-animation-duration) var(--iab-consent-banner-animation-timing)}@media (width>=640px){.c15t-ui-root-wCtZ2{padding:1.5rem}}.c15t-ui-cardShell-pmM71{width:min(100%, var(--iab-consent-banner-max-width));flex-direction:column;display:flex}.c15t-ui-card-lJZdN{border-radius:var(--iab-consent-banner-border-radius);border-width:var(--iab-consent-banner-border-width);border-style:solid;border-color:var(--iab-consent-banner-border-color);background-color:var(--iab-consent-banner-background-color);width:100%;box-shadow:var(--iab-consent-banner-shadow);position:relative;overflow:hidden}.c15t-dark .c15t-ui-card-lJZdN{background-color:var(--iab-consent-banner-background-color-dark);border-color:var(--iab-consent-banner-border-color-dark);box-shadow:var(--iab-consent-banner-shadow-dark)}.c15t-ui-card-lJZdN>:not([hidden])~:not([hidden]){border-top-width:var(--iab-consent-banner-border-width);border-top-style:solid;border-color:var(--iab-consent-banner-border-color)}.c15t-dark .c15t-ui-card-lJZdN>:not([hidden])~:not([hidden]){border-color:var(--iab-consent-banner-border-color-dark)}.c15t-ui-card-lJZdN:not(.headless):focus{outline:none}.c15t-ui-header-WMRYy{color:var(--iab-consent-banner-text-color);flex-direction:column;gap:.5rem;padding:1.25rem;display:flex}.c15t-dark .c15t-ui-header-WMRYy{color:var(--iab-consent-banner-text-color-dark)}@media (width>=640px){.c15t-ui-header-WMRYy{padding:1.5rem}}.c15t-ui-title-iMdl2{font-size:var(--c15t-font-size-lg);letter-spacing:-.011em;color:var(--iab-consent-banner-title-color);margin:0;font-weight:600;line-height:1.5rem}.c15t-dark .c15t-ui-title-iMdl2{color:var(--iab-consent-banner-title-color-dark)}.c15t-ui-description-_ZLiC{letter-spacing:-.006em;color:var(--iab-consent-banner-description-color);margin:0;font-size:.875rem;font-weight:400;line-height:1.5}.c15t-dark .c15t-ui-description-_ZLiC{color:var(--iab-consent-banner-description-color-dark)}.c15t-ui-partnersLink-yKsgB{color:var(--iab-consent-banner-link-color);cursor:pointer;font-weight:500;font-size:inherit;background:0 0;border:none;padding:0;text-decoration:none}.c15t-ui-partnersLink-yKsgB:hover{text-decoration:underline}.c15t-dark .c15t-ui-partnersLink-yKsgB{color:var(--iab-consent-banner-link-color-dark)}.c15t-ui-purposeList-Qz2Eo{color:var(--iab-consent-banner-description-color);margin:.5rem 0 0;padding-left:1.25rem;font-size:.875rem;line-height:1.5;list-style-type:disc}.c15t-ui-purposeList-Qz2Eo li{margin-bottom:.25rem}.c15t-ui-purposeMore-aANSf{opacity:.8;font-style:italic;list-style-type:none}.c15t-dark .c15t-ui-purposeList-Qz2Eo{color:var(--iab-consent-banner-description-color-dark)}.c15t-ui-legitimateInterestNotice-QtcwV{color:var(--iab-consent-banner-description-color);margin-top:.25rem;font-size:.8125rem;line-height:1.5}.c15t-dark .c15t-ui-legitimateInterestNotice-QtcwV{color:var(--iab-consent-banner-description-color-dark)}.c15t-ui-privacyLink-RYh_l{color:var(--iab-consent-banner-link-color);cursor:pointer;font-size:inherit;background:0 0;border:none;padding:0;text-decoration:none}.c15t-ui-privacyLink-RYh_l:hover{text-decoration:underline}.c15t-dark .c15t-ui-privacyLink-RYh_l{color:var(--iab-consent-banner-link-color-dark)}.c15t-ui-footer-danOO{background-color:var(--iab-consent-banner-footer-background-color);flex-direction:column;justify-content:space-between;gap:.5rem;padding:.75rem 1rem;display:flex}.c15t-dark .c15t-ui-footer-danOO{background-color:var(--iab-consent-banner-footer-background-color-dark)}@media (width>=640px){.c15t-ui-footer-danOO{flex-direction:row;padding:1rem}}.c15t-ui-overlay-OPamO{background-color:var(--iab-consent-banner-overlay-background-color);z-index:999997;position:fixed;inset:0}.c15t-ui-overlayEntering-MQWHm,.c15t-ui-overlayVisible-JAO1l{opacity:1}.c15t-ui-overlayEntering-MQWHm[data-entry=late]:not(.c15t-ui-overlayHidden-zfbJA){transition:opacity var(--iab-consent-banner-entry-duration) var(--iab-consent-banner-entry-timing)}@starting-style{.c15t-ui-overlayEntering-MQWHm[data-entry=late]{opacity:0}}.c15t-ui-overlayHidden-zfbJA{opacity:0;transition:opacity var(--iab-consent-banner-animation-duration) var(--iab-consent-banner-animation-timing)}.c15t-dark .c15t-ui-overlay-OPamO{background-color:var(--iab-consent-banner-overlay-background-color-dark)}@media (prefers-reduced-motion:reduce){.c15t-ui-bannerEntering-Rn_SM[data-entry=late]:not(.c15t-ui-bannerHidden-KVkXf),.c15t-ui-overlayEntering-MQWHm[data-entry=late]:not(.c15t-ui-overlayHidden-zfbJA),.c15t-ui-bannerHidden-KVkXf,.c15t-ui-overlayHidden-zfbJA{transition:none}}
|
package/dist/provider.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
let e,t;import{jsx as o,jsxs as r}from"react/jsx-runtime";import{applyExperimentAssignment as n,applyExperimentTheme as i,hostExperiment as
|
|
2
|
+
let e,t;import{jsx as o,jsxs as r}from"react/jsx-runtime";import{applyExperimentAssignment as n,applyExperimentTheme as i,hostExperiment as s,watchRevocationReload as c}from"@c15t/core";import{createPersistence as l,readStoredRecords as a}from"@c15t/core/modules/persistence";import{createWindowDebug as u}from"@c15t/core/modules/window-debug";import{claimEarlyJourney as d,createConsentProviderRuntime as m,hostedModes as p,lazyRuntimeModule as f,lazyStreamPrefetch as h,streamPrefetchWith as g}from"@c15t/core/runtime/provider";import{applyThemeSlots as y}from"@c15t/ui/utils";import{useCallback as v,useEffect as k,useLayoutEffect as S,useMemo as b,useReducer as w,useState as C,useSyncExternalStore as x}from"react";import{KernelContext as j,ProviderServicesContext as L}from"./context.js";import{ExternalIABProvider as N}from"./external-iab-context.js";import{useColorScheme as O}from"./hooks/use-color-scheme.js";import{useIsHydrated as D}from"./hooks/use-is-hydrated.js";import{createIframeBlockerOnDemand as P}from"./module-hooks/iframe-blocker.js";import{UNCOMMITTED_HOLD_MS as R}from"./module-hooks/network-hold.js";import{V3ThemeProvider as _}from"./theme-provider.js";let E=(e,t)=>{let o,r=!1;return(async()=>{try{let{connectConsentSource:n}=await import("@c15t/core/runtime/controls");r||(o=n(e,t))}catch{}})(),()=>{r=!0,o?.()}},T=async()=>(await import("@c15t/core/modules/script-loader")).createScriptLoader,q=function(e){let t=e.__resolveStreamedInit;return{connectConsentSource:E,createClearOnRevocation:f(async()=>(await import("@c15t/core/modules/clear-on-revocation")).createClearOnRevocation),createIframeBlocker:P,createNetworkBlocker:f(async()=>(await import("@c15t/core/modules/network-blocker")).createNetworkBlocker),createPersistence:l,createScriptLoader:f(T),createWindowDebug:u,preloadScriptLoader:e.__preloadScriptLoader?.(T),streamPrefetch:t?g(t):h,watchRevocationReload:c}},B=new WeakMap,J=new Set,K=(e,t)=>e.fetch===t.fetch&&e.initialData===t.initialData&&JSON.stringify(e)===JSON.stringify(t),A=function(o){if("function"!=typeof o)return o;let r=B.get(o);return r||(r=Object.assign(r=>e=(t=()=>o(Object.create(r,{iabEnabled:{value:void 0}})))(),{kind:o.kind}),B.set(o,r)),r},F=function(e){return{...e,mode:A(e.mode),pkg:e.__debugPkg??"@c15t/react"}},I=function(e){let{persistence:t}=e;if(!1===t||e.consentSource)return!1;let o="object"==typeof t?t:{};if(o.skipHydration)return!1;let r=o.now?o.now():Date.now(),{records:n}=a(o.storageConfig??e.storageConfig,r);return!!(n.choice||n.noticeDismissal)},M=function(e){let{journey:t}=e;return JSON.stringify({journey:t?[t.id,t.scope,t.storedChoice]:null,overrides:e.overrides,user:e.user})},V=new Set,W=0,z=function(o,r){let n,i,s,{mode:c,networkBlocker:l}=o,a=m(F(o),q(o)),u=o,f=!1,h=!1,g=0,y=e;W+=1;let v={expire(){J.delete(s),V.delete(v),clearTimeout(n),f=!0,a.dispose()},holdKey:!1!==o.enabled&&l&&!1!==l.enabled?JSON.stringify(l.rules):null,sequence:W};if("u"<typeof window)h=!0;else{V.add(v),n=setTimeout(v.expire,R);let e=a.kernel.getSnapshot(),l=p.get(c),u=l&&{...l,fetch:l.fetch??globalThis.fetch};if(r&&u&&e.policyPending&&!(o.prefetch||o.experiment)){let r=d({option:o.journey,storedChoice:I(o)}),n=r?{journey:r,overrides:e.overrides,user:e.user}:{overrides:e.overrides,user:e.user},c=M(n);for(let e of J)e.key===c&&K(e.options,u)&&(i=e);if(!i){let e=t(),o=e.init,r=o(n);r.catch(()=>void 0);let l=!1;e.init=e=>{let t=!l&&M(e)===c;return l=!0,t?r:o(e)},i=s={key:c,options:u,transport:e},J.add(s)}}}let k=function(){if(f)return!1;if(h)return!0;if(h=!0,J.delete(i)&&Object.assign(y,i?.transport),V.delete(v),clearTimeout(n),null!==v.holdKey)for(let e of V)e.sequence<v.sequence&&e.holdKey===v.holdKey&&e.expire();return!0};return{apply(e){e!==u&&(u=e,a.update(F(e)).catch(()=>void 0))},mount(){if(!k())return null;let e=g+=1;return a.start(),()=>{queueMicrotask(()=>{g===e&&a.dispose()})}},runtime:a}},H=function(){let e=null;return{get:(t,o)=>e??=z(t,o),reset(){e=null}}},G=e=>e+1,Q=()=>()=>void 0,U=function(e){let[t]=C(H),[,o]=w(G,0),r=D(),n=v(()=>{t.reset(),o()},[t]);return e?{entry:t.get(e,r),rebuild:n}:void 0},X="u"<typeof document?k:S,Y=({entry:e,options:t,rebuild:o})=>(X(()=>e.apply(t),[e,t]),k(()=>{let t=e.mount();return t||void o()},[e,o]),null),Z=e=>{let{children:t}=e,c=e.options??{},[l]=C(()=>e.runtime),a=U(l?void 0:c),u=a?.entry.runtime,d=l?e.runtime??l:void 0,m=u??d,p=x(u?u.subscribe:Q,()=>m.kernel,()=>m.kernel),[f]=C(()=>{var e;return l?l.experiment??s(c.experiment,(e=c.prefetch,"function"==typeof e?.then)?void 0:c.prefetch):void 0}),h=u?u.experiment:f,g=d?c.consentCategories:void 0;k(()=>{d&&void 0!==g&&d.setConsentCategories(g)},[d,g]);let{presentation:v}=c,S=b(()=>({clearRecords:()=>m.clearRecords(),getConsentCategories:()=>m.consentCategories,getPresentation:()=>n(v,h,p.getSnapshot().experiment),setLanguage:e=>m.setLanguage(e)}),[h,p,v,m]),w=!!d&&void 0!==c.callbacks;k(()=>{"production"!==process.env.NODE_ENV&&w&&console.warn("c15t ConsentProvider: `options.callbacks` is ignored when you pass `runtime`. Pass them to createConsentRuntime({ callbacks }) instead.")},[w]);let D=x(e=>p.subscribe(e),()=>p.getSnapshot().experiment,()=>p.getServerSnapshot().experiment),P=b(()=>i(c.theme,h,D),[c.theme,h,D]);k(()=>{"production"===process.env.NODE_ENV||!P||!["colors","dark","motion","radius","shadows","spacing","typography"].some(e=>e in P)||document.getElementById("c15t-theme")||console.warn("c15t: `theme` tokens are no longer turned into CSS in the browser. Render <ConsentTheme theme={theme} /> on the server, or put the CSS from generateThemeCSS() in your stylesheet. See https://c15t.com/docs/frameworks/react/customize")},[P]);let R=b(()=>({colorScheme:c.colorScheme,disableAnimation:c.disableAnimation,noStyle:c.noStyle,scrollLock:c.scrollLock,theme:P,trapFocus:c.trapFocus}),[P,c.noStyle,c.disableAnimation,c.scrollLock,c.trapFocus,c.colorScheme]),E=b(()=>({components:y(P?.slots,c.components,"className"),experiment:h,legalLinks:c.legalLinks,preloadDialog:c.preloadDialog,presentation:c.presentation,theme:c.theme}),[P?.slots,c.components,h,c.legalLinks,c.preloadDialog,c.presentation,c.theme]);return O(c.colorScheme),o(j.Provider,{value:p,children:o(L.Provider,{value:S,children:r(_,{themeConfig:R,uiConfig:E,children:[a?o(Y,{entry:a.entry,options:c,rebuild:a.rebuild}):null,d?o(N,{runtime:d,children:t}):t]})})})};export{Z as ConsentProvider};
|
package/dist/styles.tw3.css
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* nested package CSS imports still include the complete stylesheet.
|
|
6
6
|
*/
|
|
7
7
|
/* default theme tokens (generated from defaultTheme) */
|
|
8
|
-
:root,:host,.c15t-theme-root{--c15t-border: hsl(0, 0%, 90%);--c15t-border-hover: hsl(0, 0%, 85%);--c15t-duration-fast: 80ms;--c15t-duration-normal: 150ms;--c15t-duration-slow: 200ms;--c15t-easing: cubic-bezier(0.4, 0, 0.2, 1);--c15t-easing-in-out: cubic-bezier(0.645, 0.045, 0.355, 1);--c15t-easing-out: cubic-bezier(0.215, 0.61, 0.355, 1);--c15t-easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);--c15t-font-family: system-ui, -apple-system, sans-serif;--c15t-font-size-base: 1rem;--c15t-font-size-lg: 1.125rem;--c15t-font-size-sm: 0.875rem;--c15t-font-weight-medium: 500;--c15t-font-weight-normal: 400;--c15t-font-weight-semibold: 600;--c15t-line-height-normal: 1.5;--c15t-line-height-relaxed: 1.75;--c15t-line-height-tight: 1.25;--c15t-overlay: hsla(0, 0%, 0%, 0.5);--c15t-primary: hsl(228, 100%, 60%);--c15t-primary-hover: hsl(228, 100%, 55%);--c15t-radius-full: 9999px;--c15t-radius-lg: 0.75rem;--c15t-radius-md: 0.5rem;--c15t-radius-sm: 0.25rem;--c15t-shadow-lg: 0 8px 24px hsla(0, 0%, 0%, 0.12);--c15t-shadow-md: 0 4px 12px hsla(0, 0%, 0%, 0.08);--c15t-shadow-sm: 0 1px 2px hsla(0, 0%, 0%, 0.05);--c15t-space-lg: 1.5rem;--c15t-space-md: 1rem;--c15t-space-sm: 0.5rem;--c15t-space-xl: 2rem;--c15t-space-xs: 0.25rem;--c15t-surface: hsl(0, 0%, 100%);--c15t-surface-hover: hsl(0, 0%, 98%);--c15t-switch-thumb: hsl(0, 0%, 100%);--c15t-switch-track: hsl(0, 0%, 85%);--c15t-switch-track-active: var(--c15t-primary);--c15t-text: hsl(0, 0%, 10%);--c15t-text-muted: hsl(0, 0%, 40%);--c15t-text-on-primary: hsl(0, 0%, 100%);}
|
|
8
|
+
:root,:host,.c15t-theme-root{--c15t-border: hsl(0, 0%, 90%);--c15t-border-hover: hsl(0, 0%, 85%);--c15t-duration-fast: 80ms;--c15t-duration-normal: 150ms;--c15t-duration-slow: 200ms;--c15t-easing: cubic-bezier(0.4, 0, 0.2, 1);--c15t-easing-in: cubic-bezier(0.55, 0.055, 0.675, 0.19);--c15t-easing-in-out: cubic-bezier(0.645, 0.045, 0.355, 1);--c15t-easing-out: cubic-bezier(0.215, 0.61, 0.355, 1);--c15t-easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);--c15t-font-family: system-ui, -apple-system, sans-serif;--c15t-font-size-base: 1rem;--c15t-font-size-lg: 1.125rem;--c15t-font-size-sm: 0.875rem;--c15t-font-weight-medium: 500;--c15t-font-weight-normal: 400;--c15t-font-weight-semibold: 600;--c15t-line-height-normal: 1.5;--c15t-line-height-relaxed: 1.75;--c15t-line-height-tight: 1.25;--c15t-overlay: hsla(0, 0%, 0%, 0.5);--c15t-primary: hsl(228, 100%, 60%);--c15t-primary-hover: hsl(228, 100%, 55%);--c15t-radius-full: 9999px;--c15t-radius-lg: 0.75rem;--c15t-radius-md: 0.5rem;--c15t-radius-sm: 0.25rem;--c15t-shadow-lg: 0 8px 24px hsla(0, 0%, 0%, 0.12);--c15t-shadow-md: 0 4px 12px hsla(0, 0%, 0%, 0.08);--c15t-shadow-sm: 0 1px 2px hsla(0, 0%, 0%, 0.05);--c15t-space-lg: 1.5rem;--c15t-space-md: 1rem;--c15t-space-sm: 0.5rem;--c15t-space-xl: 2rem;--c15t-space-xs: 0.25rem;--c15t-surface: hsl(0, 0%, 100%);--c15t-surface-hover: hsl(0, 0%, 98%);--c15t-switch-thumb: hsl(0, 0%, 100%);--c15t-switch-track: hsl(0, 0%, 85%);--c15t-switch-track-active: var(--c15t-primary);--c15t-text: hsl(0, 0%, 10%);--c15t-text-muted: hsl(0, 0%, 40%);--c15t-text-on-primary: hsl(0, 0%, 100%);}
|
|
9
9
|
|
|
10
|
-
:root.dark,:host(.dark),.dark .c15t-theme-root,:root.c15t-dark,:host(.c15t-dark),.c15t-dark .c15t-theme-root{--c15t-border: hsl(0, 0%, 20%);--c15t-border-hover: hsl(0, 0%, 25%);--c15t-duration-fast: 80ms;--c15t-duration-normal: 150ms;--c15t-duration-slow: 200ms;--c15t-easing: cubic-bezier(0.4, 0, 0.2, 1);--c15t-easing-in-out: cubic-bezier(0.645, 0.045, 0.355, 1);--c15t-easing-out: cubic-bezier(0.215, 0.61, 0.355, 1);--c15t-easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);--c15t-font-family: system-ui, -apple-system, sans-serif;--c15t-font-size-base: 1rem;--c15t-font-size-lg: 1.125rem;--c15t-font-size-sm: 0.875rem;--c15t-font-weight-medium: 500;--c15t-font-weight-normal: 400;--c15t-font-weight-semibold: 600;--c15t-line-height-normal: 1.5;--c15t-line-height-relaxed: 1.75;--c15t-line-height-tight: 1.25;--c15t-overlay: hsla(0, 0%, 0%, 0.7);--c15t-primary: hsl(228, 100%, 70%);--c15t-primary-hover: hsl(228, 100%, 65%);--c15t-radius-full: 9999px;--c15t-radius-lg: 0.75rem;--c15t-radius-md: 0.5rem;--c15t-radius-sm: 0.25rem;--c15t-shadow-lg: 0 8px 24px hsla(0, 0%, 0%, 0.12);--c15t-shadow-md: 0 4px 12px hsla(0, 0%, 0%, 0.08);--c15t-shadow-sm: 0 1px 2px hsla(0, 0%, 0%, 0.05);--c15t-space-lg: 1.5rem;--c15t-space-md: 1rem;--c15t-space-sm: 0.5rem;--c15t-space-xl: 2rem;--c15t-space-xs: 0.25rem;--c15t-surface: hsl(0, 0%, 7%);--c15t-surface-hover: hsl(0, 0%, 10%);--c15t-switch-thumb: hsl(0, 0%, 93%);--c15t-switch-track: hsl(0, 0%, 25%);--c15t-switch-track-active: var(--c15t-primary);--c15t-text: hsl(0, 0%, 93%);--c15t-text-muted: hsl(0, 0%, 60%);--c15t-text-on-primary: hsl(0, 0%, 100%);}
|
|
10
|
+
:root.dark,:host(.dark),.dark .c15t-theme-root,:root.c15t-dark,:host(.c15t-dark),.c15t-dark .c15t-theme-root{--c15t-border: hsl(0, 0%, 20%);--c15t-border-hover: hsl(0, 0%, 25%);--c15t-duration-fast: 80ms;--c15t-duration-normal: 150ms;--c15t-duration-slow: 200ms;--c15t-easing: cubic-bezier(0.4, 0, 0.2, 1);--c15t-easing-in: cubic-bezier(0.55, 0.055, 0.675, 0.19);--c15t-easing-in-out: cubic-bezier(0.645, 0.045, 0.355, 1);--c15t-easing-out: cubic-bezier(0.215, 0.61, 0.355, 1);--c15t-easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);--c15t-font-family: system-ui, -apple-system, sans-serif;--c15t-font-size-base: 1rem;--c15t-font-size-lg: 1.125rem;--c15t-font-size-sm: 0.875rem;--c15t-font-weight-medium: 500;--c15t-font-weight-normal: 400;--c15t-font-weight-semibold: 600;--c15t-line-height-normal: 1.5;--c15t-line-height-relaxed: 1.75;--c15t-line-height-tight: 1.25;--c15t-overlay: hsla(0, 0%, 0%, 0.7);--c15t-primary: hsl(228, 100%, 70%);--c15t-primary-hover: hsl(228, 100%, 65%);--c15t-radius-full: 9999px;--c15t-radius-lg: 0.75rem;--c15t-radius-md: 0.5rem;--c15t-radius-sm: 0.25rem;--c15t-shadow-lg: 0 8px 24px hsla(0, 0%, 0%, 0.12);--c15t-shadow-md: 0 4px 12px hsla(0, 0%, 0%, 0.08);--c15t-shadow-sm: 0 1px 2px hsla(0, 0%, 0%, 0.05);--c15t-space-lg: 1.5rem;--c15t-space-md: 1rem;--c15t-space-sm: 0.5rem;--c15t-space-xl: 2rem;--c15t-space-xs: 0.25rem;--c15t-surface: hsl(0, 0%, 7%);--c15t-surface-hover: hsl(0, 0%, 10%);--c15t-switch-thumb: hsl(0, 0%, 93%);--c15t-switch-track: hsl(0, 0%, 25%);--c15t-switch-track-active: var(--c15t-primary);--c15t-text: hsl(0, 0%, 93%);--c15t-text-muted: hsl(0, 0%, 60%);--c15t-text-on-primary: hsl(0, 0%, 100%);}
|
|
11
11
|
.c15t-no-transitions,.c15t-no-transitions *,.c15t-no-transitions *::before,.c15t-no-transitions *::after{transition: none !important;animation: none !important;}
|
|
12
12
|
|
|
13
13
|
/* primitives/button vars */
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
@media only screen and (resolution>=192dpi){:root, :host{--consent-dialog-border-width-hairline:.5px}}
|
|
45
45
|
|
|
46
46
|
/* components/prompt vars */
|
|
47
|
-
:root, :host{--consent-banner-font-family:var(--c15t-font-family);--consent-banner-line-height:var(--c15t-line-height-normal);--consent-banner-text-size-adjust:100%;--consent-banner-tab-size:4;--consent-banner-border-radius-sm:var(--c15t-radius-sm);--consent-banner-border-radius:var(--c15t-radius-lg);--consent-banner-max-width:440px;--consent-banner-widget-max-width:20rem;--consent-banner-wall-max-width:30rem;--consent-banner-branding-tag-offset:2rem;--consent-banner-animation-duration:var(--c15t-duration-fast);--consent-banner-animation-timing:var(--c15t-easing);--consent-banner-border-width:1px;--consent-banner-border-width-hairline:1px;--consent-banner-shadow:var(--c15t-shadow-lg);--consent-banner-shadow-dark:var(--c15t-shadow-lg);--consent-banner-background-color:var(--c15t-surface);--consent-banner-background-color-dark:var(--c15t-surface);--consent-banner-footer-background-color:var(--c15t-surface-hover);--consent-banner-footer-background-color-dark:var(--c15t-surface-hover);--consent-banner-text-color:var(--c15t-text);--consent-banner-text-color-dark:var(--c15t-text);--consent-banner-border-color:var(--c15t-border);--consent-banner-border-color-dark:var(--c15t-border);--consent-banner-title-color:var(--c15t-text);--consent-banner-title-color-dark:var(--c15t-text);--consent-banner-description-color:var(--c15t-text-muted);--consent-banner-description-color-dark:var(--c15t-text-muted);--consent-banner-overlay-background-color:var(--c15t-overlay);--consent-banner-overlay-background-color-dark:var(--c15t-overlay)}
|
|
47
|
+
:root, :host{--consent-banner-font-family:var(--c15t-font-family);--consent-banner-line-height:var(--c15t-line-height-normal);--consent-banner-text-size-adjust:100%;--consent-banner-tab-size:4;--consent-banner-border-radius-sm:var(--c15t-radius-sm);--consent-banner-border-radius:var(--c15t-radius-lg);--consent-banner-max-width:440px;--consent-banner-widget-max-width:20rem;--consent-banner-wall-max-width:30rem;--consent-banner-branding-tag-offset:2rem;--consent-banner-entry-duration:var(--c15t-duration-normal);--consent-banner-entry-timing:var(--c15t-easing-out);--consent-banner-animation-duration:var(--c15t-duration-fast);--consent-banner-animation-timing:var(--c15t-easing-in);--consent-banner-border-width:1px;--consent-banner-border-width-hairline:1px;--consent-banner-shadow:var(--c15t-shadow-lg);--consent-banner-shadow-dark:var(--c15t-shadow-lg);--consent-banner-background-color:var(--c15t-surface);--consent-banner-background-color-dark:var(--c15t-surface);--consent-banner-footer-background-color:var(--c15t-surface-hover);--consent-banner-footer-background-color-dark:var(--c15t-surface-hover);--consent-banner-text-color:var(--c15t-text);--consent-banner-text-color-dark:var(--c15t-text);--consent-banner-border-color:var(--c15t-border);--consent-banner-border-color-dark:var(--c15t-border);--consent-banner-title-color:var(--c15t-text);--consent-banner-title-color-dark:var(--c15t-text);--consent-banner-description-color:var(--c15t-text-muted);--consent-banner-description-color-dark:var(--c15t-text-muted);--consent-banner-overlay-background-color:var(--c15t-overlay);--consent-banner-overlay-background-color-dark:var(--c15t-overlay)}
|
|
48
48
|
@media only screen and (resolution>=192dpi){:root, :host{--consent-banner-border-width-hairline:.5px}}
|
|
49
49
|
|
|
50
50
|
/* components/branding */
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
.c15t-ui-trigger-Hjg5y{--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-duration-slow);--cdt-transition-easing:var(--c15t-easing-out);--cdt-snap-duration:var(--c15t-duration-slow);--cdt-snap-easing:var(--c15t-easing-in-out);--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-Hjg5y:hover{background:var(--cdt-bg-hover);box-shadow:var(--cdt-shadow-hover)}}.c15t-ui-trigger-Hjg5y:active,.c15t-ui-trigger-Hjg5y.c15t-ui-dragging-R4Cm2,.c15t-ui-trigger-Hjg5y[data-dragging]{cursor:grabbing;transform:scale(1.02)}.c15t-ui-trigger-Hjg5y:focus{outline:none}.c15t-ui-trigger-Hjg5y:focus-visible{outline:2px solid var(--cdt-focus-ring);outline-offset:2px}.c15t-ui-trigger-Hjg5y[data-size=sm],.c15t-ui-sm-sud0y{width:var(--cdt-size-sm);height:var(--cdt-size-sm)}.c15t-ui-trigger-Hjg5y[data-size=md],.c15t-ui-md-CZrWA{width:var(--cdt-size-md);height:var(--cdt-size-md)}.c15t-ui-trigger-Hjg5y[data-size=lg],.c15t-ui-lg-fGzix{width:var(--cdt-size-lg);height:var(--cdt-size-lg)}.c15t-ui-icon-dD5R6{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-dD5R6 svg{width:100%;height:100%}.c15t-ui-text-Garil{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-Hjg5y:has(.c15t-ui-text-Garil){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-Hjg5y:has(.c15t-ui-text-Garil) .c15t-ui-icon-dD5R6{width:16px;height:16px}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil)[data-size=sm],.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil).c15t-ui-sm-sud0y{padding:var(--c15t-space-xs,6px) var(--c15t-space-sm,10px)}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil)[data-size=sm] .c15t-ui-icon-dD5R6,.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil).c15t-ui-sm-sud0y .c15t-ui-icon-dD5R6{width:14px;height:14px}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil)[data-size=sm] .c15t-ui-text-Garil,.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil).c15t-ui-sm-sud0y .c15t-ui-text-Garil{font-size:var(--c15t-font-size-xs,12px)}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil)[data-size=lg],.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil).c15t-ui-lg-fGzix{padding:var(--c15t-space-md,12px) var(--c15t-space-lg,20px)}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil)[data-size=lg] .c15t-ui-icon-dD5R6,.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil).c15t-ui-lg-fGzix .c15t-ui-icon-dD5R6{width:20px;height:20px}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil)[data-size=lg] .c15t-ui-text-Garil,.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil).c15t-ui-lg-fGzix .c15t-ui-text-Garil{font-size:var(--c15t-font-size-md,16px)}.c15t-ui-bottomRight-RqjMF{right:var(--cdt-offset);bottom:var(--cdt-offset)}.c15t-ui-bottomLeft-J3DsX{bottom:var(--cdt-offset);left:var(--cdt-offset)}.c15t-ui-topRight-Ln04J{top:var(--cdt-offset);right:var(--cdt-offset)}.c15t-ui-topLeft-tpeaf{top:var(--cdt-offset);left:var(--cdt-offset)}.c15t-ui-snapping-YupfG{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-tV2GK{display:none}.c15t-dark .c15t-ui-trigger-Hjg5y{--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-gCKkL{--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-gCKkL.c15t-ui-bottomRight-RqjMF{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-gCKkL.c15t-ui-bottomLeft-J3DsX{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-gCKkL.c15t-ui-topRight-Ln04J{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-gCKkL.c15t-ui-topLeft-tpeaf{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-gCKkL.c15t-ui-dragging-R4Cm2{cursor:grabbing;box-shadow:var(--c15t-shadow-lg,0 10px 20px #00000024, 0 3px 6px #00000014)}.c15t-ui-toolbarVertical-MQ8bT{flex-direction:column}.c15t-ui-toolbarItem-OO8Dy{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-OO8Dy:first-child{border-inline-start:0}.c15t-ui-toolbarVertical-MQ8bT .c15t-ui-toolbarItem-OO8Dy{border-top:1px solid var(--cdtt-border);border-inline-start:0}.c15t-ui-toolbarVertical-MQ8bT .c15t-ui-toolbarItem-OO8Dy:first-child{border-top:0}.c15t-ui-toolbar-gCKkL .c15t-ui-toolbarItem-OO8Dy.c15t-ui-sm-sud0y{width:var(--cdtt-size-sm);height:var(--cdtt-size-sm)}.c15t-ui-toolbar-gCKkL .c15t-ui-toolbarItem-OO8Dy.c15t-ui-md-CZrWA{width:var(--cdtt-size-md);height:var(--cdtt-size-md)}.c15t-ui-toolbar-gCKkL .c15t-ui-toolbarItem-OO8Dy.c15t-ui-lg-fGzix{width:var(--cdtt-size-lg);height:var(--cdtt-size-lg)}.c15t-ui-toolbarItem-OO8Dy[data-c15t-trigger-action=preferences]{color:var(--cdtt-primary-text);background:var(--cdtt-primary)}.c15t-ui-toolbarItem-OO8Dy[data-c15t-trigger-action=devtools][aria-expanded=true]{color:var(--cdtt-primary);background:var(--cdtt-bg-hover)}.c15t-ui-toolbarItem-OO8Dy:focus{outline:none}.c15t-ui-toolbarItem-OO8Dy:focus-visible{z-index:1;outline:2px solid var(--cdtt-focus-ring);outline-offset:-3px}.c15t-ui-toolbarItem-OO8Dy:disabled{cursor:not-allowed;opacity:.45}.c15t-ui-toolbarIcon-FpHKR{pointer-events:none;flex-shrink:0;justify-content:center;align-items:center;width:50%;height:50%;display:flex}.c15t-ui-toolbarIcon-FpHKR>span,.c15t-ui-toolbarIcon-FpHKR svg{width:100%;height:100%;display:flex}@media (hover:hover) and (pointer:fine){.c15t-ui-toolbarItem-OO8Dy:hover:not(:disabled){background:var(--cdtt-bg-hover)}.c15t-ui-toolbarItem-OO8Dy[data-c15t-trigger-action=preferences]:hover:not(:disabled){background:var(--cdtt-primary-hover)}}.c15t-ui-toolbarItem-OO8Dy:active:not(:disabled){box-shadow:inset 0 1px 3px #00000029}:is(.c15t-dark .c15t-ui-toolbar-gCKkL,.dark .c15t-ui-toolbar-gCKkL){--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}.c15t-ui-trigger-Hjg5y[data-disable-animation],.c15t-ui-trigger-Hjg5y[data-disable-animation].c15t-ui-snapping-YupfG,.c15t-ui-toolbar-gCKkL[data-disable-animation],.c15t-ui-toolbar-gCKkL[data-disable-animation].c15t-ui-snapping-YupfG,.c15t-ui-toolbar-gCKkL[data-disable-animation] .c15t-ui-toolbarItem-OO8Dy{transition:none}@media (prefers-reduced-motion:reduce){.c15t-ui-trigger-Hjg5y,.c15t-ui-toolbar-gCKkL,.c15t-ui-toolbarItem-OO8Dy,.c15t-ui-snapping-YupfG{transition:none}}
|
|
67
67
|
|
|
68
68
|
/* components/prompt */
|
|
69
|
-
.c15t-ui-root-p7SV0:not(.headless){box-sizing:border-box;z-index:999998;width:100%;font-family:var(--consent-banner-font-family);line-height:var(--consent-banner-line-height);-webkit-text-size-adjust:var(--consent-banner-text-size-adjust);-webkit-font-smoothing:antialiased;tab-size:var(--consent-banner-tab-size);flex-direction:column;padding:1rem;display:flex;position:fixed}.c15t-ui-bannerEnterActive-IytGL:not(.headless){transition:opacity var(--consent-banner-animation-duration) var(--consent-banner-animation-timing), transform var(--consent-banner-animation-duration) var(--c15t-easing-spring)}.c15t-ui-bannerLeaveActive-C7qrk:not(.headless){transition:opacity var(--consent-banner-animation-duration) var(--consent-banner-animation-timing), transform var(--consent-banner-animation-duration) var(--consent-banner-animation-timing)}:is(.c15t-ui-bannerEnterFrom-BJMc7:not(.headless),.c15t-ui-bannerLeaveTo-dXNcB:not(.headless)){opacity:0;transform:translateY(50px)}:is(.c15t-ui-bannerEnterTo-yatsy:not(.headless),.c15t-ui-bannerLeaveFrom-RVGoD:not(.headless)){opacity:1;transform:translateY(0)}.c15t-ui-bannerVisible-AFth0:not(.headless){opacity:1;transition:opacity var(--consent-banner-animation-duration) var(--consent-banner-animation-timing), transform var(--consent-banner-animation-duration) var(--c15t-easing-spring);transform:translateY(0)}.c15t-ui-bannerHidden-R0_3M:not(.headless){opacity:0;transition:opacity var(--consent-banner-animation-duration) var(--consent-banner-animation-timing), transform var(--consent-banner-animation-duration) var(--consent-banner-animation-timing);transform:translateY(50px)}@starting-style{.c15t-ui-bannerEntering-Cqrwl:not(.headless){opacity:0;transform:translateY(50px)}}@media (width>=640px){.c15t-ui-root-p7SV0:not(.headless){width:auto;padding:1.5rem}}.c15t-ui-root-p7SV0[data-position=bottom-left]:not(.headless){bottom:0;left:0}.c15t-ui-root-p7SV0[data-position=bottom-right]:not(.headless){bottom:0;right:0}.c15t-ui-root-p7SV0[data-position=top-left]:not(.headless){top:0;left:0}.c15t-ui-root-p7SV0[data-position=top-right]:not(.headless){top:0;right:0}.c15t-ui-root-p7SV0[data-variant=floating][data-position=bottom-center]:not(.headless){inset-inline:0;width:fit-content;margin-inline:auto;bottom:0}.c15t-ui-root-p7SV0[data-variant=floating][data-position=top-center]:not(.headless){inset-inline:0;width:fit-content;margin-inline:auto;top:0}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless){width:100%;padding:0;left:0;right:0}.c15t-ui-root-p7SV0[data-variant=bar][data-position=bottom]:not(.headless){top:auto;bottom:0}.c15t-ui-root-p7SV0[data-variant=bar][data-position=top]:not(.headless){top:0;bottom:auto}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-cardShell-djyPy{width:100%;max-width:none}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-card-lgjVq{box-shadow:var(--consent-banner-shadow);border-width:0;border-radius:0}.c15t-ui-root-p7SV0[data-variant=bar][data-position=bottom]:not(.headless) .c15t-ui-card-lgjVq{border-top-width:var(--consent-banner-border-width);padding-bottom:env(safe-area-inset-bottom);border-top-style:solid}.c15t-ui-root-p7SV0[data-variant=bar][data-position=top]:not(.headless) .c15t-ui-card-lgjVq{border-bottom-width:var(--consent-banner-border-width);border-bottom-style:solid}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-cardShell-djyPy>[data-variant=banner-tag]{margin-inline-end:1.5rem}.c15t-ui-root-p7SV0[data-variant=bar][data-position=top]:not(.headless) .c15t-ui-cardShell-djyPy>[data-variant=banner-tag]{border-top-width:0;border-bottom-width:1px;border-radius:0 0 .75rem .75rem;order:1;margin-block:-1px 0}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe{flex-direction:column;align-items:stretch;gap:.75rem}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rights-wZg5K{flex-direction:column;align-items:flex-start}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe button[data-action]:not(.c15t-ui-rightLink-IXsSJ){flex:auto;width:100%;min-width:0}@media (width>=640px){.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe{flex-direction:row;justify-content:space-between;align-items:center}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rights-wZg5K{flex-flow:wrap;align-items:center;margin-inline-end:auto}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe>*{width:auto}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe button[data-action]:not(.c15t-ui-rightLink-IXsSJ){flex:none;width:auto}}@media (width>=1024px){.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-card-lgjVq{flex-direction:row;align-items:center;display:flex}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-header-S6GiJ{flex:auto;min-width:0}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe{background-color:#0000;width:auto;min-width:0}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-card-lgjVq>:not([hidden])~:not([hidden]){border-top-width:0}}:is(.c15t-ui-root-p7SV0[data-variant=floating][data-position$=-right]:not(.headless) .c15t-ui-cardShell-djyPy,.c15t-ui-root-p7SV0[data-variant=widget][data-position$=-right]:not(.headless) .c15t-ui-cardShell-djyPy){margin-left:auto;margin-right:0}:is(.c15t-ui-root-p7SV0[data-variant=floating][data-position$=-left]:not(.headless) .c15t-ui-cardShell-djyPy,.c15t-ui-root-p7SV0[data-variant=widget][data-position$=-left]:not(.headless) .c15t-ui-cardShell-djyPy){margin-left:0;margin-right:auto}.c15t-ui-root-p7SV0[data-variant=floating][data-position$=-center]:not(.headless) .c15t-ui-cardShell-djyPy{margin-left:auto;margin-right:auto}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless){padding:.75rem}@media (width>=640px){.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless){padding:1rem}}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-cardShell-djyPy{width:min(calc(100vw - 1.5rem), var(--consent-banner-widget-max-width))}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-header-S6GiJ{padding:.75rem}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-title-vm8nL{font-size:.875rem;line-height:1.25rem}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-description-s8Qhg{font-size:.8125rem;line-height:1.125rem}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-footer-JhJAe{gap:.5rem;padding:.75rem}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-footer-JhJAe button[data-action]:not(.c15t-ui-rightLink-IXsSJ){padding:.5rem .75rem}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rightLink-IXsSJ{font-size:.8125rem;line-height:1.125rem}.c15t-ui-root-p7SV0[data-variant=wall]:not(.headless){place-items:center;width:auto;padding:1rem;display:grid;inset:0}.c15t-ui-root-p7SV0[data-variant=wall]:not(.headless) .c15t-ui-cardShell-djyPy{width:min(calc(100vw - 2rem), var(--consent-banner-wall-max-width))}.c15t-ui-card-lgjVq:not(.headless){border-radius:var(--consent-banner-border-radius);border-width:var(--consent-banner-border-width);border-style:solid;border-color:var(--consent-banner-border-color);background-color:var(--consent-banner-background-color);width:100%;box-shadow:var(--consent-banner-shadow);position:relative;overflow:hidden}.c15t-ui-cardShell-djyPy:not(.headless){width:min(calc(100vw - 2rem), var(--consent-banner-max-width));flex-direction:column;display:flex;container:c15t-banner/inline-size}@media (width>=640px){.c15t-ui-cardShell-djyPy:not(.headless){width:min(calc(100vw - 3rem), var(--consent-banner-max-width))}}.c15t-dark .c15t-ui-card-lgjVq:not(.headless){background-color:var(--consent-banner-background-color-dark);border-color:var(--consent-banner-border-color-dark);box-shadow:var(--consent-banner-shadow-dark)}.c15t-dark .c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-card-lgjVq{box-shadow:var(--consent-banner-shadow-dark)}.c15t-ui-card-lgjVq:not(.headless)>:not([hidden])~:not([hidden]){border-top-width:var(--consent-banner-border-width);border-top-style:solid;border-color:var(--consent-banner-border-color)}.c15t-dark .c15t-ui-card-lgjVq:not(.headless)>:not([hidden])~:not([hidden]){border-color:var(--consent-banner-border-color-dark)}.c15t-ui-card-lgjVq:not(.headless):focus{outline:none}.c15t-ui-header-S6GiJ:not(.headless){color:var(--consent-banner-text-color);flex-direction:column;padding:1rem;display:flex}.c15t-dark .c15t-ui-header-S6GiJ:not(.headless){color:var(--consent-banner-text-color-dark)}@media (width>=640px){.c15t-ui-header-S6GiJ:not(.headless){padding:1.5rem}}.c15t-ui-header-S6GiJ:not(.headless)>:not([hidden])~:not([hidden]){--consent-banner-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--consent-banner-space-y-reverse)));margin-bottom:calc(.5rem * var(--consent-banner-space-y-reverse))}.c15t-ui-footer-JhJAe:not(.headless){background-color:var(--consent-banner-footer-background-color);flex-direction:column;justify-content:space-between;gap:.75rem;padding:1rem 1.25rem;display:flex}.c15t-dark .c15t-ui-footer-JhJAe:not(.headless){background-color:var(--consent-banner-footer-background-color-dark)}@media (width>=640px){.c15t-ui-footer-JhJAe:not(.headless){flex-direction:row}}.c15t-ui-rights-wZg5K:not(.headless){flex-flow:wrap;align-items:center;gap:.75rem;min-width:0;display:flex}.c15t-ui-rightLink-IXsSJ:not(.headless){width:auto;font:inherit;font-family:var(--consent-banner-font-family);letter-spacing:-.006em;color:var(--consent-banner-description-color);text-underline-offset:.15em;text-align:start;cursor:pointer;border-radius:var(--consent-banner-border-radius-sm);touch-action:manipulation;background:0 0;border:0;flex:none;align-self:center;margin:0;padding:0;font-size:.875rem;font-weight:400;line-height:1.25rem;text-decoration:underline;display:inline-block}.c15t-ui-rightLink-IXsSJ:not(.headless):hover{color:var(--consent-banner-text-color)}.c15t-ui-rightLink-IXsSJ:not(.headless):focus-visible{box-shadow:var(--button-shadow-primary-focus,0 0 0 2px var(--c15t-primary));outline:none}.c15t-dark .c15t-ui-rightLink-IXsSJ:not(.headless){color:var(--consent-banner-description-color-dark)}.c15t-dark .c15t-ui-rightLink-IXsSJ:not(.headless):hover{color:var(--consent-banner-text-color-dark)}.c15t-dark .c15t-ui-rightLink-IXsSJ:not(.headless):focus-visible{box-shadow:var(--button-shadow-primary-focus-dark,0 0 0 2px var(--c15t-primary))}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe{flex-direction:column;align-items:stretch;gap:.75rem}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rights-wZg5K{flex-direction:column;align-items:flex-start;gap:.5rem}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe button[data-action]:not(.c15t-ui-rightLink-IXsSJ){flex:auto;width:100%;min-width:0}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rightLink-IXsSJ{flex:none;align-self:flex-start;width:auto}@media (width>=640px){.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe{flex-direction:row;justify-content:space-between;align-items:center;gap:.75rem}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rights-wZg5K{flex-flow:wrap;flex:auto;align-items:center;gap:.75rem;min-width:0}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe>*{width:auto}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe button[data-action]:not(.c15t-ui-rightLink-IXsSJ){flex:none;width:auto}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rightLink-IXsSJ{align-self:center}}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-header-S6GiJ,.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe{padding:.75rem 1rem}@media (width>=640px){.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-header-S6GiJ{padding:1rem 1.5rem}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe{padding:.75rem 1.5rem}}@media (width>=1024px){.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-header-S6GiJ{padding:.75rem 1.5rem}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-header-S6GiJ>:not([hidden])~:not([hidden]){margin-top:.25rem}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-title-vm8nL{line-height:1.25rem}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe{flex:none;gap:.75rem}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rights-wZg5K{flex-flow:row;flex:none;align-items:center;gap:.75rem;margin-inline-end:0}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rightLink-IXsSJ{white-space:nowrap;font-size:.8125rem;line-height:1.125rem}}.c15t-ui-description-s8Qhg:not(.headless){letter-spacing:-.006em;color:var(--consent-banner-description-color);font-size:.875rem;font-weight:400;line-height:1.25rem}.c15t-dark .c15t-ui-description-s8Qhg:not(.headless){color:var(--consent-banner-description-color-dark)}.c15t-ui-description-s8Qhg[data-context=banner]:not(.headless){letter-spacing:-.006em;color:var(--consent-banner-description-color);font-size:.875rem;font-weight:400;line-height:1.25rem}.c15t-dark .c15t-ui-description-s8Qhg[data-context=banner]:not(.headless){color:var(--consent-banner-description-color-dark)}.c15t-ui-description-s8Qhg[data-context=dialog]:not(.headless){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-s8Qhg[data-context=dialog]:not(.headless){color:var(--consent-dialog-muted-color-dark)}.c15t-ui-description-s8Qhg[data-context=manager]:not(.headless){color:var(--consent-manager-text-muted-color)}.c15t-dark .c15t-ui-description-s8Qhg[data-context=manager]:not(.headless){color:var(--consent-manager-text-muted-color-dark)}.c15t-ui-title-vm8nL:not(.headless){letter-spacing:-.011em;color:var(--consent-banner-title-color);margin:0;font-size:1rem;font-weight:500;line-height:1.5rem}.c15t-dark .c15t-ui-title-vm8nL:not(.headless){color:var(--consent-banner-title-color-dark)}.c15t-ui-overlay-DoHh4:not(.headless){background-color:var(--consent-banner-overlay-background-color);z-index:999997;position:fixed;inset:0}:is(.c15t-ui-overlayEnterActive-YGn_8:not(.headless),.c15t-ui-overlayLeaveActive-FvP5W:not(.headless)){transition:opacity var(--consent-banner-animation-duration) var(--consent-banner-animation-timing)}:is(.c15t-ui-overlayEnterFrom-OtDqj:not(.headless),.c15t-ui-overlayLeaveTo-V7aI7:not(.headless)){opacity:0}:is(.c15t-ui-overlayEnterTo-jcvNq:not(.headless),.c15t-ui-overlayLeaveFrom-EYTMT:not(.headless)){opacity:1}.c15t-ui-overlayVisible-ywHQp:not(.headless){opacity:1;transition:opacity var(--consent-banner-animation-duration) var(--consent-banner-animation-timing)}.c15t-ui-overlayHidden-WgrJC:not(.headless){opacity:0;transition:opacity var(--consent-banner-animation-duration) var(--consent-banner-animation-timing)}@starting-style{.c15t-ui-overlayEntering-p5Z3U:not(.headless){opacity:0}}.c15t-dark .c15t-ui-overlay-DoHh4:not(.headless){background-color:var(--consent-banner-overlay-background-color-dark)}@media (prefers-reduced-motion:reduce){:is(.c15t-ui-bannerEnterActive-IytGL:not(.headless),.c15t-ui-bannerLeaveActive-C7qrk:not(.headless),.c15t-ui-bannerVisible-AFth0:not(.headless),.c15t-ui-bannerHidden-R0_3M:not(.headless),.c15t-ui-overlayEnterActive-YGn_8:not(.headless),.c15t-ui-overlayLeaveActive-FvP5W:not(.headless),.c15t-ui-overlayVisible-ywHQp:not(.headless),.c15t-ui-overlayHidden-WgrJC:not(.headless)){transition:none;animation:none}}
|
|
69
|
+
.c15t-ui-root-p7SV0:not(.headless){box-sizing:border-box;z-index:999998;width:100%;font-family:var(--consent-banner-font-family);line-height:var(--consent-banner-line-height);-webkit-text-size-adjust:var(--consent-banner-text-size-adjust);-webkit-font-smoothing:antialiased;tab-size:var(--consent-banner-tab-size);flex-direction:column;padding:1rem;display:flex;position:fixed}:is(.c15t-ui-bannerEnterActive-IytGL:not(.headless),.c15t-ui-bannerEnterFrom-BJMc7:not(.headless),.c15t-ui-bannerEnterTo-yatsy:not(.headless),.c15t-ui-bannerEntering-Cqrwl:not(.headless),.c15t-ui-bannerLeaveFrom-RVGoD:not(.headless),.c15t-ui-bannerVisible-AFth0:not(.headless)){opacity:1}.c15t-ui-bannerEntering-Cqrwl[data-entry=late]:not(.c15t-ui-bannerHidden-R0_3M):not(.headless){transition:opacity var(--consent-banner-entry-duration) var(--consent-banner-entry-timing)}@starting-style{.c15t-ui-bannerEntering-Cqrwl[data-entry=late]:not(.headless){opacity:0}}.c15t-ui-bannerLeaveActive-C7qrk:not(.headless){transition:opacity var(--consent-banner-animation-duration) var(--consent-banner-animation-timing)}.c15t-ui-bannerLeaveTo-dXNcB:not(.headless){opacity:0}.c15t-ui-bannerHidden-R0_3M:not(.headless){opacity:0;transition:opacity var(--consent-banner-animation-duration) var(--consent-banner-animation-timing)}@media (width>=640px){.c15t-ui-root-p7SV0:not(.headless){width:auto;padding:1.5rem}}.c15t-ui-root-p7SV0[data-position=bottom-left]:not(.headless){bottom:0;left:0}.c15t-ui-root-p7SV0[data-position=bottom-right]:not(.headless){bottom:0;right:0}.c15t-ui-root-p7SV0[data-position=top-left]:not(.headless){top:0;left:0}.c15t-ui-root-p7SV0[data-position=top-right]:not(.headless){top:0;right:0}.c15t-ui-root-p7SV0[data-variant=floating][data-position=bottom-center]:not(.headless){inset-inline:0;width:fit-content;margin-inline:auto;bottom:0}.c15t-ui-root-p7SV0[data-variant=floating][data-position=top-center]:not(.headless){inset-inline:0;width:fit-content;margin-inline:auto;top:0}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless){width:100%;padding:0;left:0;right:0}.c15t-ui-root-p7SV0[data-variant=bar][data-position=bottom]:not(.headless){top:auto;bottom:0}.c15t-ui-root-p7SV0[data-variant=bar][data-position=top]:not(.headless){top:0;bottom:auto}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-cardShell-djyPy{width:100%;max-width:none}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-card-lgjVq{box-shadow:var(--consent-banner-shadow);border-width:0;border-radius:0}.c15t-ui-root-p7SV0[data-variant=bar][data-position=bottom]:not(.headless) .c15t-ui-card-lgjVq{border-top-width:var(--consent-banner-border-width);padding-bottom:env(safe-area-inset-bottom);border-top-style:solid}.c15t-ui-root-p7SV0[data-variant=bar][data-position=top]:not(.headless) .c15t-ui-card-lgjVq{border-bottom-width:var(--consent-banner-border-width);border-bottom-style:solid}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-cardShell-djyPy>[data-variant=banner-tag]{margin-inline-end:1.5rem}.c15t-ui-root-p7SV0[data-variant=bar][data-position=top]:not(.headless) .c15t-ui-cardShell-djyPy>[data-variant=banner-tag]{border-top-width:0;border-bottom-width:1px;border-radius:0 0 .75rem .75rem;order:1;margin-block:-1px 0}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe{flex-direction:column;align-items:stretch;gap:.75rem}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rights-wZg5K{flex-direction:column;align-items:flex-start}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe button[data-action]:not(.c15t-ui-rightLink-IXsSJ){flex:auto;width:100%;min-width:0}@media (width>=640px){.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe{flex-direction:row;justify-content:space-between;align-items:center}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rights-wZg5K{flex-flow:wrap;align-items:center;margin-inline-end:auto}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe>*{width:auto}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe button[data-action]:not(.c15t-ui-rightLink-IXsSJ){flex:none;width:auto}}@media (width>=1024px){.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-card-lgjVq{flex-direction:row;align-items:center;display:flex}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-header-S6GiJ{flex:auto;min-width:0}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe{background-color:#0000;width:auto;min-width:0}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-card-lgjVq>:not([hidden])~:not([hidden]){border-top-width:0}}:is(.c15t-ui-root-p7SV0[data-variant=floating][data-position$=-right]:not(.headless) .c15t-ui-cardShell-djyPy,.c15t-ui-root-p7SV0[data-variant=widget][data-position$=-right]:not(.headless) .c15t-ui-cardShell-djyPy){margin-left:auto;margin-right:0}:is(.c15t-ui-root-p7SV0[data-variant=floating][data-position$=-left]:not(.headless) .c15t-ui-cardShell-djyPy,.c15t-ui-root-p7SV0[data-variant=widget][data-position$=-left]:not(.headless) .c15t-ui-cardShell-djyPy){margin-left:0;margin-right:auto}.c15t-ui-root-p7SV0[data-variant=floating][data-position$=-center]:not(.headless) .c15t-ui-cardShell-djyPy{margin-left:auto;margin-right:auto}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless){padding:.75rem}@media (width>=640px){.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless){padding:1rem}}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-cardShell-djyPy{width:min(calc(100vw - 1.5rem), var(--consent-banner-widget-max-width))}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-header-S6GiJ{padding:.75rem}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-title-vm8nL{font-size:.875rem;line-height:1.25rem}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-description-s8Qhg{font-size:.8125rem;line-height:1.125rem}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-footer-JhJAe{gap:.5rem;padding:.75rem}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-footer-JhJAe button[data-action]:not(.c15t-ui-rightLink-IXsSJ){padding:.5rem .75rem}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rightLink-IXsSJ{font-size:.8125rem;line-height:1.125rem}.c15t-ui-root-p7SV0[data-variant=wall]:not(.headless){place-items:center;width:auto;padding:1rem;display:grid;inset:0}.c15t-ui-root-p7SV0[data-variant=wall]:not(.headless) .c15t-ui-cardShell-djyPy{width:min(calc(100vw - 2rem), var(--consent-banner-wall-max-width))}.c15t-ui-card-lgjVq:not(.headless){border-radius:var(--consent-banner-border-radius);border-width:var(--consent-banner-border-width);border-style:solid;border-color:var(--consent-banner-border-color);background-color:var(--consent-banner-background-color);width:100%;box-shadow:var(--consent-banner-shadow);position:relative;overflow:hidden}.c15t-ui-cardShell-djyPy:not(.headless){width:min(calc(100vw - 2rem), var(--consent-banner-max-width));flex-direction:column;display:flex;container:c15t-banner/inline-size}@media (width>=640px){.c15t-ui-cardShell-djyPy:not(.headless){width:min(calc(100vw - 3rem), var(--consent-banner-max-width))}}.c15t-dark .c15t-ui-card-lgjVq:not(.headless){background-color:var(--consent-banner-background-color-dark);border-color:var(--consent-banner-border-color-dark);box-shadow:var(--consent-banner-shadow-dark)}.c15t-dark .c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-card-lgjVq{box-shadow:var(--consent-banner-shadow-dark)}.c15t-ui-card-lgjVq:not(.headless)>:not([hidden])~:not([hidden]){border-top-width:var(--consent-banner-border-width);border-top-style:solid;border-color:var(--consent-banner-border-color)}.c15t-dark .c15t-ui-card-lgjVq:not(.headless)>:not([hidden])~:not([hidden]){border-color:var(--consent-banner-border-color-dark)}.c15t-ui-card-lgjVq:not(.headless):focus{outline:none}.c15t-ui-header-S6GiJ:not(.headless){color:var(--consent-banner-text-color);flex-direction:column;padding:1rem;display:flex}.c15t-dark .c15t-ui-header-S6GiJ:not(.headless){color:var(--consent-banner-text-color-dark)}@media (width>=640px){.c15t-ui-header-S6GiJ:not(.headless){padding:1.5rem}}.c15t-ui-header-S6GiJ:not(.headless)>:not([hidden])~:not([hidden]){--consent-banner-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--consent-banner-space-y-reverse)));margin-bottom:calc(.5rem * var(--consent-banner-space-y-reverse))}.c15t-ui-footer-JhJAe:not(.headless){background-color:var(--consent-banner-footer-background-color);flex-direction:column;justify-content:space-between;gap:.75rem;padding:1rem 1.25rem;display:flex}.c15t-dark .c15t-ui-footer-JhJAe:not(.headless){background-color:var(--consent-banner-footer-background-color-dark)}@media (width>=640px){.c15t-ui-footer-JhJAe:not(.headless){flex-direction:row}}.c15t-ui-rights-wZg5K:not(.headless){flex-flow:wrap;align-items:center;gap:.75rem;min-width:0;display:flex}.c15t-ui-rightLink-IXsSJ:not(.headless){width:auto;font:inherit;font-family:var(--consent-banner-font-family);letter-spacing:-.006em;color:var(--consent-banner-description-color);text-underline-offset:.15em;text-align:start;cursor:pointer;border-radius:var(--consent-banner-border-radius-sm);touch-action:manipulation;background:0 0;border:0;flex:none;align-self:center;margin:0;padding:0;font-size:.875rem;font-weight:400;line-height:1.25rem;text-decoration:underline;display:inline-block}.c15t-ui-rightLink-IXsSJ:not(.headless):hover{color:var(--consent-banner-text-color)}.c15t-ui-rightLink-IXsSJ:not(.headless):focus-visible{box-shadow:var(--button-shadow-primary-focus,0 0 0 2px var(--c15t-primary));outline:none}.c15t-dark .c15t-ui-rightLink-IXsSJ:not(.headless){color:var(--consent-banner-description-color-dark)}.c15t-dark .c15t-ui-rightLink-IXsSJ:not(.headless):hover{color:var(--consent-banner-text-color-dark)}.c15t-dark .c15t-ui-rightLink-IXsSJ:not(.headless):focus-visible{box-shadow:var(--button-shadow-primary-focus-dark,0 0 0 2px var(--c15t-primary))}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe{flex-direction:column;align-items:stretch;gap:.75rem}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rights-wZg5K{flex-direction:column;align-items:flex-start;gap:.5rem}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe button[data-action]:not(.c15t-ui-rightLink-IXsSJ){flex:auto;width:100%;min-width:0}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rightLink-IXsSJ{flex:none;align-self:flex-start;width:auto}@media (width>=640px){.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe{flex-direction:row;justify-content:space-between;align-items:center;gap:.75rem}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rights-wZg5K{flex-flow:wrap;flex:auto;align-items:center;gap:.75rem;min-width:0}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe>*{width:auto}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe button[data-action]:not(.c15t-ui-rightLink-IXsSJ){flex:none;width:auto}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rightLink-IXsSJ{align-self:center}}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-header-S6GiJ,.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe{padding:.75rem 1rem}@media (width>=640px){.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-header-S6GiJ{padding:1rem 1.5rem}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe{padding:.75rem 1.5rem}}@media (width>=1024px){.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-header-S6GiJ{padding:.75rem 1.5rem}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-header-S6GiJ>:not([hidden])~:not([hidden]){margin-top:.25rem}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-title-vm8nL{line-height:1.25rem}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe{flex:none;gap:.75rem}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rights-wZg5K{flex-flow:row;flex:none;align-items:center;gap:.75rem;margin-inline-end:0}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rightLink-IXsSJ{white-space:nowrap;font-size:.8125rem;line-height:1.125rem}}.c15t-ui-description-s8Qhg:not(.headless){letter-spacing:-.006em;color:var(--consent-banner-description-color);font-size:.875rem;font-weight:400;line-height:1.25rem}.c15t-dark .c15t-ui-description-s8Qhg:not(.headless){color:var(--consent-banner-description-color-dark)}.c15t-ui-description-s8Qhg[data-context=banner]:not(.headless){letter-spacing:-.006em;color:var(--consent-banner-description-color);font-size:.875rem;font-weight:400;line-height:1.25rem}.c15t-dark .c15t-ui-description-s8Qhg[data-context=banner]:not(.headless){color:var(--consent-banner-description-color-dark)}.c15t-ui-description-s8Qhg[data-context=dialog]:not(.headless){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-s8Qhg[data-context=dialog]:not(.headless){color:var(--consent-dialog-muted-color-dark)}.c15t-ui-description-s8Qhg[data-context=manager]:not(.headless){color:var(--consent-manager-text-muted-color)}.c15t-dark .c15t-ui-description-s8Qhg[data-context=manager]:not(.headless){color:var(--consent-manager-text-muted-color-dark)}.c15t-ui-title-vm8nL:not(.headless){letter-spacing:-.011em;color:var(--consent-banner-title-color);margin:0;font-size:1rem;font-weight:500;line-height:1.5rem}.c15t-dark .c15t-ui-title-vm8nL:not(.headless){color:var(--consent-banner-title-color-dark)}.c15t-ui-overlay-DoHh4:not(.headless){background-color:var(--consent-banner-overlay-background-color);z-index:999997;position:fixed;inset:0}:is(.c15t-ui-overlayEnterActive-YGn_8:not(.headless),.c15t-ui-overlayEnterFrom-OtDqj:not(.headless),.c15t-ui-overlayEnterTo-jcvNq:not(.headless),.c15t-ui-overlayEntering-p5Z3U:not(.headless),.c15t-ui-overlayLeaveFrom-EYTMT:not(.headless),.c15t-ui-overlayVisible-ywHQp:not(.headless)){opacity:1}.c15t-ui-overlayEntering-p5Z3U[data-entry=late]:not(.c15t-ui-overlayHidden-WgrJC):not(.headless){transition:opacity var(--consent-banner-entry-duration) var(--consent-banner-entry-timing)}@starting-style{.c15t-ui-overlayEntering-p5Z3U[data-entry=late]:not(.headless){opacity:0}}.c15t-ui-overlayLeaveActive-FvP5W:not(.headless){transition:opacity var(--consent-banner-animation-duration) var(--consent-banner-animation-timing)}.c15t-ui-overlayLeaveTo-V7aI7:not(.headless){opacity:0}.c15t-ui-overlayHidden-WgrJC:not(.headless){opacity:0;transition:opacity var(--consent-banner-animation-duration) var(--consent-banner-animation-timing)}.c15t-dark .c15t-ui-overlay-DoHh4:not(.headless){background-color:var(--consent-banner-overlay-background-color-dark)}@media (prefers-reduced-motion:reduce){.c15t-ui-bannerEntering-Cqrwl[data-entry=late]:not(.c15t-ui-bannerHidden-R0_3M):not(.headless),.c15t-ui-overlayEntering-p5Z3U[data-entry=late]:not(.c15t-ui-overlayHidden-WgrJC):not(.headless),.c15t-ui-bannerLeaveActive-C7qrk:not(.headless),.c15t-ui-bannerHidden-R0_3M:not(.headless),.c15t-ui-overlayLeaveActive-FvP5W:not(.headless),.c15t-ui-overlayHidden-WgrJC:not(.headless){transition:none;animation:none}}
|
|
70
70
|
|
|
71
71
|
/* components/accordion */
|
|
72
72
|
.c15t-ui-list-T3EU0:not(.headless){gap:var(--accordion-stack-gap,.75rem);display:grid}.c15t-ui-item-Jgm_X:not(.headless){border:1px solid var(--accordion-border-color,var(--c15t-border));border-radius:var(--accordion-radius,var(--c15t-radius-md));box-shadow:none;background-color:var(--accordion-background-color,var(--c15t-surface));padding:0;display:grid;overflow:visible}.c15t-dark .c15t-ui-item-Jgm_X:not(.headless){border-color:var(--accordion-border-color-dark,var(--c15t-border));background-color:var(--accordion-background-color-dark,var(--c15t-surface))}.c15t-ui-triggerRow-xXdTH:not(.headless){align-items:center;gap:var(--accordion-gap,var(--c15t-space-xs));box-sizing:border-box;width:100%;padding:var(--accordion-padding,var(--c15t-space-sm));border-radius:var(--accordion-radius,var(--c15t-radius-md));color:var(--accordion-text-color,var(--c15t-text));transition:background-color var(--accordion-duration,var(--c15t-duration-normal)) var(--accordion-ease,var(--c15t-easing));background-color:#0000;border:0;grid-column:1/-1;grid-template-columns:minmax(0,1fr) auto;margin:0;display:grid}.c15t-ui-triggerRow-xXdTH:not(.headless):hover{background-color:var(--accordion-background-hover,var(--c15t-surface-hover))}.c15t-dark .c15t-ui-triggerRow-xXdTH:not(.headless){color:var(--accordion-text-color-dark,var(--c15t-text))}.c15t-dark .c15t-ui-triggerRow-xXdTH:not(.headless):hover{background-color:var(--accordion-background-hover-dark,var(--c15t-surface-hover))}.c15t-ui-item-Jgm_X:not(.headless):has(.c15t-ui-trigger-KT5J_:focus-visible){outline:2px solid var(--accordion-focus-ring,var(--c15t-primary));outline-offset:-2px}.c15t-dark .c15t-ui-item-Jgm_X:not(.headless):has(.c15t-ui-trigger-KT5J_:focus-visible){outline-color:var(--accordion-focus-ring-dark,var(--c15t-primary))}.c15t-ui-trigger-KT5J_:not(.headless):focus-visible{outline:none}.c15t-ui-item-Jgm_X:not(.headless)>.c15t-ui-content-qdPhy{grid-column:1/-1}.c15t-ui-trigger-KT5J_:not(.headless){appearance:none;align-items:center;gap:var(--accordion-gap,var(--c15t-space-xs));min-width:0;min-height:calc(var(--accordion-icon-size,1.25rem) + .25rem);font-family:inherit;font-size:var(--accordion-title-size,var(--c15t-font-size-sm));line-height:var(--c15t-line-height-tight);letter-spacing:inherit;font-weight:var(--c15t-font-weight-normal);border-radius:var(--accordion-radius,var(--c15t-radius-md));width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex:auto;align-self:stretch;padding:0;display:flex;position:relative}.c15t-ui-arrow-JFKgd:not(.headless){color:var(--accordion-arrow-color,color-mix(in srgb, var(--c15t-text-muted) 60%, var(--c15t-surface)));width:var(--accordion-icon-size,1.25rem);height:var(--accordion-icon-size,1.25rem);transition:transform var(--accordion-duration,var(--c15t-duration-normal)) var(--accordion-ease,var(--c15t-easing));flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.c15t-ui-arrow-JFKgd:not(.headless) svg{width:100%;height:100%;display:block}.c15t-dark .c15t-ui-arrow-JFKgd:not(.headless){color:var(--accordion-arrow-color-dark,color-mix(in srgb, var(--c15t-text-muted) 40%, var(--c15t-text)))}.c15t-ui-header-ogZie:not(.headless){flex-direction:column;flex:1;min-width:0;display:flex}.c15t-ui-title-vmC1f:not(.headless){font:inherit;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0}.c15t-ui-control-dy7nh:not(.headless){flex-shrink:0;align-self:center;position:relative;top:-1px}.c15t-ui-restriction-bXiI7:not(.headless){padding:0 var(--accordion-row-padding-x,var(--c15t-space-md)) .75rem;color:var(--accordion-restriction-color,var(--c15t-text-muted));font-size:var(--c15t-font-size-sm);line-height:var(--c15t-line-height-normal);grid-column:1/-1;margin:0;display:block}.c15t-ui-content-qdPhy:not(.headless){color:var(--accordion-content-color,color-mix(in srgb, var(--c15t-text-muted) 87%, var(--c15t-text)));letter-spacing:inherit;transition:grid-template-rows var(--accordion-duration,var(--c15t-duration-normal)) var(--accordion-ease,var(--c15t-easing));grid-template-rows:0fr;padding:0;font-size:.875rem;line-height:1.5;display:grid;overflow:hidden}.c15t-ui-content-qdPhy:not(.headless)[data-state=open]{grid-template-rows:1fr}.c15t-ui-content-qdPhy:not(.headless)[data-state=closed]{pointer-events:none}.c15t-ui-contentViewport-O2Kny:not(.headless){min-height:0;padding-top:0;padding-inline:calc(var(--accordion-icon-size,1.25rem) + var(--accordion-gap,var(--c15t-space-xs)));overflow:hidden}.c15t-ui-contentInner-b3ykf:not(.headless){opacity:1;transition:opacity calc(var(--accordion-duration,var(--c15t-duration-normal)) * .35) var(--c15t-easing-out);padding-top:0}.c15t-ui-content-qdPhy[data-state=open] .c15t-ui-contentViewport-O2Kny:not(.headless){padding-bottom:var(--accordion-padding,var(--c15t-space-sm))}.c15t-ui-content-qdPhy[data-state=closed] .c15t-ui-contentViewport-O2Kny:not(.headless){padding-bottom:0}.c15t-ui-content-qdPhy[data-state=closed] .c15t-ui-contentInner-b3ykf:not(.headless){opacity:0}.c15t-dark .c15t-ui-content-qdPhy:not(.headless){color:var(--accordion-content-color-dark,var(--c15t-text-muted))}:is([data-disable-animation] .c15t-ui-content-qdPhy:not(.headless),.disable-animation .c15t-ui-content-qdPhy:not(.headless)),:is([data-disable-animation] .c15t-ui-contentInner-b3ykf:not(.headless),.disable-animation .c15t-ui-contentInner-b3ykf:not(.headless)),:is([data-disable-animation] .c15t-ui-arrow-JFKgd:not(.headless),.disable-animation .c15t-ui-arrow-JFKgd:not(.headless)){transition:none}@media (prefers-reduced-motion:reduce){.c15t-ui-triggerRow-xXdTH:not(.headless),.c15t-ui-arrow-JFKgd:not(.headless),.c15t-ui-content-qdPhy:not(.headless),.c15t-ui-contentInner-b3ykf:not(.headless){transition:none}}
|
package/dist/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
let e="3.0.0-alpha.
|
|
1
|
+
let e="3.0.0-alpha.7";export{e as version};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a banner that shows now arrives after the page has painted.
|
|
3
|
+
*
|
|
4
|
+
* Decided once each time `shown` turns on, and held while it stays on, so a
|
|
5
|
+
* re-render never restarts the entry. A banner hydrated from server HTML is
|
|
6
|
+
* part of the first paint: the hook answers `false` while hydrating, which
|
|
7
|
+
* also keeps the markup matching the server's.
|
|
8
|
+
*
|
|
9
|
+
* @param shown - Whether the banner is rendered.
|
|
10
|
+
* @returns Whether to mark the mount `data-entry="late"`.
|
|
11
|
+
*
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
export declare const useLateEntry: (shown: boolean) => boolean;
|
package/dist-types/provider.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AllConsentNames, Callbacks, ClearOnRevocationConfig, ConsentExperiment, ConsentPresentation, ExperimentState, I18nConfig, KernelConfig, KernelOverrides, KernelUser, LegalLinks, ProviderTransportFactory, StorageConfig, User, Vendor } from '@c15t/core';
|
|
1
|
+
import type { AllConsentNames, Callbacks, ClearOnRevocationConfig, ConsentExperiment, ConsentJourneyOption, ConsentPresentation, ExperimentState, JourneyState, I18nConfig, KernelConfig, KernelOverrides, KernelUser, LegalLinks, ProviderTransportFactory, StorageConfig, User, Vendor } from '@c15t/core';
|
|
2
2
|
import type { Script } from '@c15t/core/modules/script-loader';
|
|
3
3
|
import type { ConsentControlOptions } from '@c15t/core/runtime';
|
|
4
4
|
import type { ConsentRuntime, ConsentRuntimeModules, ResolveStreamedInit } from '@c15t/core/runtime/provider';
|
|
@@ -13,9 +13,10 @@ export type ConsentProviderCallbacks = Pick<Callbacks, 'onChoiceRecorded' | 'onP
|
|
|
13
13
|
/**
|
|
14
14
|
* Prepared policy and records; legacy consent projections are not provider
|
|
15
15
|
* inputs. An `experiment` a server helper resolved runs instead of
|
|
16
|
-
* `options.experiment
|
|
16
|
+
* `options.experiment`, and a `journey` it started is the one the provider
|
|
17
|
+
* continues.
|
|
17
18
|
*/
|
|
18
|
-
export type ConsentProviderPrefetch = Omit<KernelConfig, 'initialDraft' | 'transport'> & ExperimentState;
|
|
19
|
+
export type ConsentProviderPrefetch = Omit<KernelConfig, 'initialDraft' | 'transport'> & ExperimentState & JourneyState;
|
|
19
20
|
export interface ConsentProviderOptions extends ConsentControlOptions, Pick<ReactUIOptions, 'colorScheme' | 'disableAnimation' | 'noStyle' | 'scrollLock' | 'theme' | 'trapFocus'> {
|
|
20
21
|
enabled?: boolean;
|
|
21
22
|
presentation?: ConsentPresentation;
|
|
@@ -26,6 +27,13 @@ export interface ConsentProviderOptions extends ConsentControlOptions, Pick<Reac
|
|
|
26
27
|
* provider to change the experiment.
|
|
27
28
|
*/
|
|
28
29
|
experiment?: ConsentExperiment;
|
|
30
|
+
/**
|
|
31
|
+
* Random journey id that links each `/init` to the save that follows:
|
|
32
|
+
* `'page'`, `'tab'` or `false`. Initial-only.
|
|
33
|
+
*
|
|
34
|
+
* @default 'page'
|
|
35
|
+
*/
|
|
36
|
+
journey?: ConsentJourneyOption;
|
|
29
37
|
/**
|
|
30
38
|
* Content Security Policy nonce applied to DOM nodes c15t injects.
|
|
31
39
|
*
|
package/dist-types/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "3.0.0-alpha.
|
|
1
|
+
export declare const version = "3.0.0-alpha.7";
|
|
@@ -14,7 +14,7 @@ to the alternatives it rules out.
|
|
|
14
14
|
| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
|
15
15
|
| Next.js App Router with a Next.js server | Server resolves consent from a build-time manifest and streams it to the page | [App Router](https://c15t.com/docs/frameworks/next/quickstart) |
|
|
16
16
|
| Next.js App Router, banner must be in the first HTML | Await consent inside `Suspense` | [Stream or await](https://c15t.com/docs/frameworks/next/rendering#stream-or-await-consent-in-the-app-router) |
|
|
17
|
-
| Next.js with static, ISR
|
|
17
|
+
| Next.js with static, ISR, `'use cache'` or `ensureStatic = 'navigation'` pages | Browser resolves consent on those pages | [Static, ISR and cached pages](https://c15t.com/docs/frameworks/next/rendering#render-static-isr-and-cached-pages) |
|
|
18
18
|
| Next.js Pages Router | Resolve consent in `getServerSideProps` | [Pages Router](https://c15t.com/docs/frameworks/next/rendering#pick-your-rendering-path) |
|
|
19
19
|
| Next.js with `output: 'export'` | Browser resolves consent | [Static export](https://c15t.com/docs/frameworks/next/static-export) |
|
|
20
20
|
| TanStack Start with a server | Root loader resolves consent on the server | [TanStack Start](https://c15t.com/docs/frameworks/tanstack-start/quickstart) |
|
|
@@ -99,6 +99,12 @@ backend that signs policy snapshot tokens rejects a replay made after the
|
|
|
99
99
|
token expires, which is 30 minutes by default for the self-hosted backend. A
|
|
100
100
|
save still queued by then is recorded only in the browser.
|
|
101
101
|
|
|
102
|
+
A replay that fails and stays queued emits `save:replayed` with `ok: false` but
|
|
103
|
+
not `command:error`, since the save already reported its first failure. A save
|
|
104
|
+
that leaves the queue without the backend recording it, because it ran out of
|
|
105
|
+
attempts, waited more than 7 days or was refused, emits `command:error` once.
|
|
106
|
+
Development builds also log a `[c15t]` console warning for each of these.
|
|
107
|
+
|
|
102
108
|
IAB surfaces close in the click task too, but an IAB choice is recorded only
|
|
103
109
|
after its TC string is encoded, which can wait for the TCF library to load.
|
|
104
110
|
If that local step records nothing, for example because the vendor list
|
|
@@ -68,6 +68,40 @@ no identity; the visitor's IP address and user agent are forwarded under the
|
|
|
68
68
|
backend's usual IP handling. Static output resolves in the browser and sends
|
|
69
69
|
no report. Set `reportSessions: false` on an adapter to turn it off.
|
|
70
70
|
|
|
71
|
+
## Link an init to the save that follows
|
|
72
|
+
|
|
73
|
+
Each page load gets a journey id, a random UUID sent on requests c15t already
|
|
74
|
+
makes:
|
|
75
|
+
|
|
76
|
+
| Request | Query parameters |
|
|
77
|
+
| ---------------- | ------------------------------------------------------------------------------------------------ |
|
|
78
|
+
| `GET /init` | `c15tJourney`, `c15tJourneyScope`, `c15tStored` (`1` if a choice or notice dismissal was stored) |
|
|
79
|
+
| `POST /subjects` | `c15tJourney`, `c15tJourneyScope` |
|
|
80
|
+
|
|
81
|
+
Session reports carry it as `journey: { id, scope, storedChoice, prompt, domain }`.
|
|
82
|
+
A report and a save with the same `id` belong to one page load. `prompt` is
|
|
83
|
+
`due`, `stored` or `not-required`; a page that falls back to the default opt-in
|
|
84
|
+
banner counts as `due` or `stored`. A stored answer counts as `stored` even if a
|
|
85
|
+
policy change makes c15t ask again.
|
|
86
|
+
|
|
87
|
+
The id is random, is never the subject id and is never written to a cookie.
|
|
88
|
+
Every save that carries one follows an `/init` or report with the same id.
|
|
89
|
+
Saves replayed after going offline carry none.
|
|
90
|
+
|
|
91
|
+
| `journey` | Behavior |
|
|
92
|
+
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
93
|
+
| `'page'` (default) | One id per page load, in memory. |
|
|
94
|
+
| `'tab'` | Kept in `sessionStorage` while a prompt is due, and removed once the visitor chooses or no prompt is due. Only when the browser resolves init; server-rendered pages use `'page'`. |
|
|
95
|
+
| `false` | No journey. |
|
|
96
|
+
|
|
97
|
+
Set it on the runtime or provider. In Next.js use `defineConsentConfig({ journey })`;
|
|
98
|
+
in TanStack Start pass the same value to `resolveConsent` and `ConsentRoot`; with
|
|
99
|
+
the inline prefetch script, pass it to `buildPrefetchScript`. Vue, Svelte, Astro
|
|
100
|
+
and the script tag use `'page'`. A manifest that resolves locally in the
|
|
101
|
+
browser reports no init, so it sends no journey.
|
|
102
|
+
|
|
103
|
+
If you pass `hosted()` a `fetch`, match on the path: URLs now carry a query string.
|
|
104
|
+
|
|
71
105
|
## What does regular `/init` do?
|
|
72
106
|
|
|
73
107
|
`hosted({ url })` uses `${url}/init` for initialization and `${url}/subjects` for
|
|
@@ -8,20 +8,21 @@ group: customization
|
|
|
8
8
|
|
|
9
9
|
## Change the speed with motion tokens
|
|
10
10
|
|
|
11
|
-
c15t animates its surfaces with three durations and
|
|
11
|
+
c15t animates its surfaces with three durations and five easing curves. Set
|
|
12
12
|
them in the theme's `motion` object, or as CSS variables:
|
|
13
13
|
|
|
14
|
-
| CSS variable | Theme key | Default
|
|
15
|
-
| ------------------------ | ------------------------ |
|
|
16
|
-
| `--c15t-duration-fast` | `motion.duration.fast` | `80ms`
|
|
17
|
-
| `--c15t-duration-normal` | `motion.duration.normal` | `150ms`
|
|
18
|
-
| `--c15t-duration-slow` | `motion.duration.slow` | `200ms`
|
|
19
|
-
| `--c15t-easing` | `motion.easing` | `cubic-bezier(0.4, 0, 0.2, 1)`
|
|
20
|
-
| `--c15t-easing-out` | `motion.easingOut` | `cubic-bezier(0.215, 0.61, 0.355, 1)`
|
|
21
|
-
| `--c15t-easing-in
|
|
22
|
-
| `--c15t-easing-
|
|
14
|
+
| CSS variable | Theme key | Default | Used by |
|
|
15
|
+
| ------------------------ | ------------------------ | ---------------------------------------- | -------------------------------------------------------------- |
|
|
16
|
+
| `--c15t-duration-fast` | `motion.duration.fast` | `80ms` | Banner fade out, buttons, tabs |
|
|
17
|
+
| `--c15t-duration-normal` | `motion.duration.normal` | `150ms` | Preference dialog, late banner fade in, switches, accordions |
|
|
18
|
+
| `--c15t-duration-slow` | `motion.duration.slow` | `200ms` | Legal links, floating trigger |
|
|
19
|
+
| `--c15t-easing` | `motion.easing` | `cubic-bezier(0.4, 0, 0.2, 1)` | Switches, accordions |
|
|
20
|
+
| `--c15t-easing-out` | `motion.easingOut` | `cubic-bezier(0.215, 0.61, 0.355, 1)` | Preference dialog, late banner fade in, floating trigger hover |
|
|
21
|
+
| `--c15t-easing-in` | `motion.easingIn` | `cubic-bezier(0.55, 0.055, 0.675, 0.19)` | Banner fade out |
|
|
22
|
+
| `--c15t-easing-in-out` | `motion.easingInOut` | `cubic-bezier(0.645, 0.045, 0.355, 1)` | Floating trigger snapping to a corner |
|
|
23
|
+
| `--c15t-easing-spring` | `motion.easingSpring` | `cubic-bezier(0.34, 1.56, 0.64, 1)` | The dialog's scale in |
|
|
23
24
|
|
|
24
|
-
This theme slows the dialog down and removes
|
|
25
|
+
This theme slows the dialog down and removes its overshoot:
|
|
25
26
|
|
|
26
27
|
```ts title="consent-theme.ts"
|
|
27
28
|
export const theme = {
|
|
@@ -32,6 +33,14 @@ export const theme = {
|
|
|
32
33
|
};
|
|
33
34
|
```
|
|
34
35
|
|
|
36
|
+
The banner never slides in. When it shows with the page, it is part of the
|
|
37
|
+
first paint and appears on its first frame. When it arrives more than 100ms
|
|
38
|
+
after the page first painted, such as after a slow script or a client-side
|
|
39
|
+
init, it fades in over `--c15t-duration-normal` instead, and its root and
|
|
40
|
+
backdrop carry `data-entry="late"`. A banner rendered on the server always
|
|
41
|
+
shows at once. When it hides, Vue, Svelte and the script tag fade it out over
|
|
42
|
+
`--c15t-duration-fast`.
|
|
43
|
+
|
|
35
44
|
The theme goes where your framework's other tokens go. See
|
|
36
45
|
[theme tokens](./tokens.md) and your framework's customize page.
|
|
37
46
|
In Vue and Nuxt, set `tokens` with the variable name without the leading
|
|
@@ -39,8 +48,8 @@ In Vue and Nuxt, set `tokens` with the variable name without the leading
|
|
|
39
48
|
|
|
40
49
|
## Turn animations off
|
|
41
50
|
|
|
42
|
-
`disableAnimation` removes the
|
|
43
|
-
dialogs, and the hover and snap transitions of the floating
|
|
51
|
+
`disableAnimation` removes the banner's fades, the enter and exit
|
|
52
|
+
transitions of the dialogs, and the hover and snap transitions of the floating
|
|
44
53
|
`ConsentDialogTrigger`. Set it once for every surface, then override it for one
|
|
45
54
|
surface where your framework allows:
|
|
46
55
|
|
|
@@ -130,6 +130,7 @@ easing tokens.
|
|
|
130
130
|
| `--c15t-duration-slow` | `motion.duration.slow` | `200ms` |
|
|
131
131
|
| `--c15t-easing` | `motion.easing` | `cubic-bezier(0.4, 0, 0.2, 1)` |
|
|
132
132
|
| `--c15t-easing-out` | `motion.easingOut` | `cubic-bezier(0.215, 0.61, 0.355, 1)` |
|
|
133
|
+
| `--c15t-easing-in` | `motion.easingIn` | `cubic-bezier(0.55, 0.055, 0.675, 0.19)` |
|
|
133
134
|
| `--c15t-easing-in-out` | `motion.easingInOut` | `cubic-bezier(0.645, 0.045, 0.355, 1)` |
|
|
134
135
|
| `--c15t-easing-spring` | `motion.easingSpring` | `cubic-bezier(0.34, 1.56, 0.64, 1)` |
|
|
135
136
|
|
|
@@ -56,34 +56,35 @@ the provider to change them. `scripts`, `vendors`, `networkBlocker`,
|
|
|
56
56
|
`iframeBlocker`, `consentCategories`, `overrides`, `user`, `callbacks` and
|
|
57
57
|
`enabled` apply when they change.
|
|
58
58
|
|
|
59
|
-
| Option | Purpose
|
|
60
|
-
| ----------------------------- |
|
|
61
|
-
| `mode` | Required. `hosted({ url })` for a backend, `offline()` for local policies, or `custom()` for your own transport
|
|
62
|
-
| `prefetch` | Server-resolved state, or a promise of it, from a framework adapter's server helper
|
|
63
|
-
| `scripts` | Consent-gated vendor scripts. See [scripts and embeds](../scripts.md)
|
|
64
|
-
| `vendors` | Vendors listed under their category with their own switch. See [vendor consent](../vendor-consent.md)
|
|
65
|
-
| `scriptLoader` | Options for the script loader module
|
|
66
|
-
| `networkBlocker` | Rules that hold `fetch` and `XMLHttpRequest` calls until their category is allowed, or `false`
|
|
67
|
-
| `iframeBlocker` | Gates DOM iframes that carry `data-category`. On by default; `false` turns it off
|
|
68
|
-
| `persistence` | Stores the visitor's choice in a cookie and localStorage. On by default
|
|
69
|
-
| `storageConfig` | Storage key and cookie settings for the stored choice
|
|
70
|
-
| `clearOnRevocation` | Cookies and storage keys to delete when a category is denied
|
|
71
|
-
| `reloadOnConsentRevoked` | Reload the page after the visitor turns off a granted category or vendor. Defaults to `true`
|
|
72
|
-
| `consentCategories` | Categories the preference dialog offers alongside those your scripts use, within the policy's scope
|
|
73
|
-
| `overrides` | Force the country, region or language the policy is resolved for, for testing
|
|
74
|
-
| `user` | Link consent records to a signed-in user
|
|
75
|
-
| `callbacks` | Choice, permission and error events
|
|
76
|
-
| `i18n` | Languages and message overrides
|
|
77
|
-
| `legalLinks` | Privacy policy and other links shown in the banner and dialog
|
|
78
|
-
| `theme` | `consentActions` and slot styles. Tokens go through `ConsentTheme`; see [customize](../customize.md)
|
|
79
|
-
| `components` | Slot attributes per component part
|
|
80
|
-
| `presentation` | Banner and dialog shape, position and blocking
|
|
81
|
-
| `experiment` | A/B test of `presentation`, read once at mount. See [banner experiments](../../../guides/banner-experiments.md)
|
|
82
|
-
| `
|
|
83
|
-
| `
|
|
84
|
-
| `
|
|
85
|
-
| `
|
|
86
|
-
| `
|
|
59
|
+
| Option | Purpose |
|
|
60
|
+
| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
61
|
+
| `mode` | Required. `hosted({ url })` for a backend, `offline()` for local policies, or `custom()` for your own transport |
|
|
62
|
+
| `prefetch` | Server-resolved state, or a promise of it, from a framework adapter's server helper |
|
|
63
|
+
| `scripts` | Consent-gated vendor scripts. See [scripts and embeds](../scripts.md) |
|
|
64
|
+
| `vendors` | Vendors listed under their category with their own switch. See [vendor consent](../vendor-consent.md) |
|
|
65
|
+
| `scriptLoader` | Options for the script loader module |
|
|
66
|
+
| `networkBlocker` | Rules that hold `fetch` and `XMLHttpRequest` calls until their category is allowed, or `false` |
|
|
67
|
+
| `iframeBlocker` | Gates DOM iframes that carry `data-category`. On by default; `false` turns it off |
|
|
68
|
+
| `persistence` | Stores the visitor's choice in a cookie and localStorage. On by default |
|
|
69
|
+
| `storageConfig` | Storage key and cookie settings for the stored choice |
|
|
70
|
+
| `clearOnRevocation` | Cookies and storage keys to delete when a category is denied |
|
|
71
|
+
| `reloadOnConsentRevoked` | Reload the page after the visitor turns off a granted category or vendor. Defaults to `true` |
|
|
72
|
+
| `consentCategories` | Categories the preference dialog offers alongside those your scripts use, within the policy's scope |
|
|
73
|
+
| `overrides` | Force the country, region or language the policy is resolved for, for testing |
|
|
74
|
+
| `user` | Link consent records to a signed-in user |
|
|
75
|
+
| `callbacks` | Choice, permission and error events |
|
|
76
|
+
| `i18n` | Languages and message overrides |
|
|
77
|
+
| `legalLinks` | Privacy policy and other links shown in the banner and dialog |
|
|
78
|
+
| `theme` | `consentActions` and slot styles. Tokens go through `ConsentTheme`; see [customize](../customize.md) |
|
|
79
|
+
| `components` | Slot attributes per component part |
|
|
80
|
+
| `presentation` | Banner and dialog shape, position and blocking |
|
|
81
|
+
| `experiment` | A/B test of `presentation`, read once at mount. See [banner experiments](../../../guides/banner-experiments.md) |
|
|
82
|
+
| `journey` | Random id that links each `/init` to the save that follows. See [session reports](../../../concepts/data-fetching.md#link-an-init-to-the-save-that-follows) |
|
|
83
|
+
| `colorScheme` | `'light'`, `'dark'`, `'system'`, or `null` to leave the `c15t-dark` class alone |
|
|
84
|
+
| `noStyle`, `disableAnimation` | Drop the built-in styles, or turn off animations |
|
|
85
|
+
| `preloadDialog` | When the deferred `ConsentDialog` starts loading: `'idle'` (default) or `'intent'`; see [ConsentDialog](./consent-dialog.md#behavior) |
|
|
86
|
+
| `nonce` | Content Security Policy nonce for script elements c15t inserts |
|
|
87
|
+
| `enabled` | Set `false` only when you deliberately bypass consent enforcement |
|
|
87
88
|
|
|
88
89
|
`enabled: false` grants categories and allows gated loading while suppressing
|
|
89
90
|
consent UI. It is not a way to fix failed initialization or hide a banner in
|
package/docs/upgrade-v3.md
CHANGED
|
@@ -381,7 +381,7 @@ if (result.ok) {
|
|
|
381
381
|
| `createSubject(input)` | `subjects.create(input)`. `givenAt` also takes a `Date`. |
|
|
382
382
|
| `patchSubject(id, input)`, `subjects.patch(id, input)` | `subjects.identify(id, { externalId, identityProvider })` |
|
|
383
383
|
| `listSubjects({ externalId })`, `subjects.list({ externalId })` | `subjects.list({ externalId })`, on a client with `apiKey` |
|
|
384
|
-
| `checkConsent(query)`, `consent.check({ externalId, type: 'a,b' })` | `consents.check({ externalId, types: ['a', 'b'] })`
|
|
384
|
+
| `checkConsent(query)`, `consent.check({ externalId, type: 'a,b' })` | `consents.check({ externalId, types: ['a', 'b'] })`, on a client with `apiKey` |
|
|
385
385
|
| `ResponseContext` with `data: T \|null` | `{ ok: true, data } \|{ ok: false, error }`. Check `ok` first. |
|
|
386
386
|
| `unwrap()`, `expect()` on the response | `unwrap(result)`, imported from `@c15t/node-sdk` |
|
|
387
387
|
| `unwrapOr()`, `map()` on the response | Check `result.ok` |
|
|
@@ -399,6 +399,10 @@ if (result.ok) {
|
|
|
399
399
|
responses, such as `givenAt` and `createdAt`, are now `Date` objects rather
|
|
400
400
|
than strings.
|
|
401
401
|
|
|
402
|
+
`consents.check` and `subjects.list` count only verified links. Links made by
|
|
403
|
+
v2 don't count until you relink them with `subjects.identify` on a keyed
|
|
404
|
+
client, or [with an identity token](https://c15t.com/docs/self-host/api/node-sdk#verify-a-link-made-in-the-browser) on the user's next sign-in.
|
|
405
|
+
|
|
402
406
|
The `node-sdk-to-v3` codemod renames the factory, client options, methods,
|
|
403
407
|
types and errors in files that create a client. It turns `type` strings into
|
|
404
408
|
`types` arrays, and leaves a `TODO(c15t v3)` comment at each call, because
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@c15t/react",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.7",
|
|
4
4
|
"description": "React cookie banner, consent manager, preference center, and headless CMP components with IAB TCF and Consent Mode support.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ccpa",
|
|
@@ -254,16 +254,16 @@
|
|
|
254
254
|
"test:watch": "bun prebuild && vitest"
|
|
255
255
|
},
|
|
256
256
|
"dependencies": {
|
|
257
|
-
"@c15t/core": "3.0.0-alpha.
|
|
258
|
-
"@c15t/dev-tools": "3.0.0-alpha.
|
|
259
|
-
"@c15t/iab": "3.0.0-alpha.
|
|
260
|
-
"@c15t/schema": "3.0.0-alpha.
|
|
257
|
+
"@c15t/core": "3.0.0-alpha.7",
|
|
258
|
+
"@c15t/dev-tools": "3.0.0-alpha.7",
|
|
259
|
+
"@c15t/iab": "3.0.0-alpha.7",
|
|
260
|
+
"@c15t/schema": "3.0.0-alpha.6",
|
|
261
261
|
"@c15t/translations": "3.0.0-alpha.6",
|
|
262
|
-
"@c15t/ui": "3.0.0-alpha.
|
|
262
|
+
"@c15t/ui": "3.0.0-alpha.7",
|
|
263
263
|
"@types/google.maps": "3.65.3"
|
|
264
264
|
},
|
|
265
265
|
"devDependencies": {
|
|
266
|
-
"@c15t/backend": "3.0.0-alpha.
|
|
266
|
+
"@c15t/backend": "3.0.0-alpha.7",
|
|
267
267
|
"@c15t/conformance": "0.0.1",
|
|
268
268
|
"@c15t/typescript-config": "0.0.1",
|
|
269
269
|
"@c15t/vitest-config": "1.0.0",
|