@c15t/react 3.0.0-alpha.1 → 3.0.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +9 -2
- package/dist/aggregate-components.js +1 -1
- package/dist/chunk-warming.js +1 -1
- package/dist/component-hooks/use-headless-iab-consent-ui.js +1 -1
- package/dist/component-hooks/use-panel-trigger.js +1 -1
- package/dist/components/consent-gate/atoms.js +1 -0
- package/dist/components/consent-gate/consent-gate.js +2 -0
- package/dist/components/consent-gate/index.js +2 -0
- package/dist/components/consent-preferences-link/consent-preferences-link.js +1 -1
- package/dist/components/iab-panel/atoms/purpose-item.js +1 -1
- package/dist/components/iab-panel/atoms/stack-item.js +1 -1
- package/dist/components/iab-panel/iab-panel.js +1 -1
- package/dist/components/iab-panel/index.js +1 -1
- package/dist/components/panel/atoms/overlay.js +1 -1
- package/dist/components/panel/atoms/root.js +1 -1
- package/dist/components/panel/index.js +1 -1
- package/dist/components/panel/panel.js +1 -1
- package/dist/components/panel-trigger/atoms/button.js +1 -1
- package/dist/components/panel-trigger/atoms/icon.js +1 -1
- package/dist/components/panel-trigger/atoms/root.js +1 -1
- package/dist/components/panel-trigger/atoms/trigger-icons.js +1 -0
- package/dist/components/panel-trigger/panel-trigger-toolbar.js +1 -1
- package/dist/components/preferences/atoms/accordion.js +1 -1
- package/dist/components/preferences/atoms/root.js +1 -1
- package/dist/components/preferences/atoms/vendor-list.js +1 -0
- package/dist/components/preferences/index.js +1 -1
- package/dist/components/prompt/policy-actions.js +1 -1
- package/dist/components/shared/primitives/button.js +1 -1
- package/dist/components/shared/ui/accordion/accordion.js +1 -1
- package/dist/components/shared/ui/collapsible/collapsible.js +1 -1
- package/dist/components/shared/ui/logo.js +1 -1
- package/dist/components/shared/ui/preference-item/preference-item.js +1 -1
- package/dist/components/shared/ui/switch/switch.js +1 -1
- package/dist/components/shared/ui/tabs/tabs.js +1 -1
- package/dist/consent-gate.js +2 -0
- package/dist/consent-theme.js +1 -0
- package/dist/draft.js +1 -1
- package/dist/external-iab-context.js +1 -1
- package/dist/headless.js +1 -1
- package/dist/hooks/use-committed-ref.js +2 -0
- package/dist/hooks.js +1 -1
- package/dist/iab/styles.tw3.css +1 -41
- package/dist/iab-context.js +1 -1
- package/dist/index.js +1 -1
- package/dist/kernel-selector.js +1 -0
- package/dist/module-hooks/iframe-blocker.js +1 -1
- package/dist/module-hooks/network-blocker.js +1 -1
- package/dist/module-hooks/network-hold.js +2 -0
- package/dist/module-hooks/persistence.js +1 -1
- package/dist/panel.js +1 -1
- package/dist/preferences.js +1 -2
- package/dist/provider.js +1 -1
- package/dist/styles.tw3.css +1 -43
- package/dist/ui-save.js +1 -1
- package/dist/utils/deferred-module.js +2 -0
- package/dist/version.js +1 -1
- package/dist-types/aggregate-components.d.ts +2 -2
- package/dist-types/chunk-warming.d.ts +41 -8
- package/dist-types/component-hooks/use-headless-iab-consent-ui.d.ts +2 -2
- package/dist-types/components/consent-gate/atoms.d.ts +11 -0
- package/dist-types/components/consent-gate/consent-gate.d.ts +2 -0
- package/dist-types/components/consent-gate/index.d.ts +41 -0
- package/dist-types/components/{frame → consent-gate}/types.d.ts +7 -7
- package/dist-types/components/consent-preferences-link/consent-preferences-link.d.ts +1 -1
- package/dist-types/components/consent-preferences-link/index.d.ts +1 -1
- package/dist-types/components/iab-panel/atoms/purpose-item.d.ts +5 -2
- package/dist-types/components/iab-panel/atoms/stack-item.d.ts +7 -2
- package/dist-types/components/iab-panel/atoms/vendor-list.d.ts +1 -1
- package/dist-types/components/iab-panel/iab-panel.d.ts +1 -1
- package/dist-types/components/iab-panel/index.d.ts +25 -24
- package/dist-types/components/iab-prompt/index.d.ts +17 -17
- package/dist-types/components/panel/atoms/card.d.ts +4 -4
- package/dist-types/components/panel/atoms/overlay.d.ts +1 -1
- package/dist-types/components/panel/index.d.ts +8 -7
- package/dist-types/components/panel/panel.d.ts +3 -3
- package/dist-types/components/panel-link/index.d.ts +1 -1
- package/dist-types/components/panel-trigger/atoms/button.d.ts +1 -1
- package/dist-types/components/panel-trigger/atoms/icon.d.ts +1 -1
- package/dist-types/components/panel-trigger/atoms/root.d.ts +2 -2
- package/dist-types/components/panel-trigger/atoms/toolbar.d.ts +2 -2
- package/dist-types/components/panel-trigger/atoms/trigger-icons.d.ts +20 -0
- package/dist-types/components/panel-trigger/index.d.ts +4 -4
- package/dist-types/components/panel-trigger/panel-trigger-toolbar.d.ts +1 -1
- package/dist-types/components/panel-trigger/panel-trigger.d.ts +9 -9
- package/dist-types/components/panel-trigger/types.d.ts +1 -1
- package/dist-types/components/preferences/atoms/accordion.d.ts +6 -4
- package/dist-types/components/preferences/atoms/button.d.ts +1 -1
- package/dist-types/components/preferences/atoms/footer.d.ts +1 -1
- package/dist-types/components/preferences/atoms/root.d.ts +1 -1
- package/dist-types/components/preferences/atoms/vendor-list.d.ts +23 -0
- package/dist-types/components/preferences/index.d.ts +14 -11
- package/dist-types/components/preferences/policy-actions.d.ts +2 -2
- package/dist-types/components/preferences/preferences.d.ts +1 -1
- package/dist-types/components/preferences/types.d.ts +1 -1
- package/dist-types/components/prompt/components.d.ts +3 -3
- package/dist-types/components/prompt/index.d.ts +11 -11
- package/dist-types/components/prompt/policy-actions.d.ts +2 -2
- package/dist-types/components/prompt/prompt.d.ts +1 -1
- package/dist-types/components/shared/policy-actions.d.ts +2 -2
- package/dist-types/components/shared/primitives/box.d.ts +1 -1
- package/dist-types/components/shared/primitives/button.d.ts +2 -2
- package/dist-types/components/shared/primitives/button.types.d.ts +1 -1
- package/dist-types/components/shared/ui/accordion/accordion.d.ts +3 -2
- package/dist-types/components/shared/ui/accordion/index.d.ts +2 -2
- package/dist-types/components/shared/ui/animated-collapse/index.d.ts +2 -2
- package/dist-types/components/shared/ui/branding.d.ts +1 -1
- package/dist-types/components/shared/ui/button/button.d.ts +1 -1
- package/dist-types/components/shared/ui/button/index.d.ts +2 -2
- package/dist-types/components/shared/ui/collapsible/collapsible.d.ts +1 -0
- package/dist-types/components/shared/ui/collapsible/index.d.ts +1 -1
- package/dist-types/components/shared/ui/dialog/index.d.ts +1 -1
- package/dist-types/components/shared/ui/logo.d.ts +0 -10
- package/dist-types/components/shared/ui/preference-item/index.d.ts +1 -1
- package/dist-types/components/shared/ui/preference-item/preference-item.d.ts +14 -0
- package/dist-types/components/shared/ui/switch/index.d.ts +2 -2
- package/dist-types/components/shared/ui/switch/switch.d.ts +2 -1
- package/dist-types/components/shared/ui/tabs/index.d.ts +1 -1
- package/dist-types/components/shared/ui/tabs/tabs.d.ts +1 -0
- package/dist-types/consent-gate.d.ts +1 -0
- package/dist-types/consent-theme.d.ts +38 -0
- package/dist-types/context/index.d.ts +3 -3
- package/dist-types/context/theme-context.d.ts +1 -1
- package/dist-types/draft.d.ts +96 -7
- package/dist-types/headless.d.ts +6 -7
- package/dist-types/hooks/use-committed-ref.d.ts +24 -0
- package/dist-types/hooks/use-headless-iab-consent-ui.d.ts +1 -1
- package/dist-types/hooks/use-iab-manager.d.ts +1 -1
- package/dist-types/hooks/use-theme.d.ts +1 -1
- package/dist-types/hooks.d.ts +30 -1
- package/dist-types/iab.d.ts +5 -5
- package/dist-types/index.d.ts +26 -25
- package/dist-types/kernel-selector.d.ts +66 -0
- package/dist-types/module-hooks/iframe-blocker.d.ts +27 -0
- package/dist-types/module-hooks/network-blocker.d.ts +23 -0
- package/dist-types/module-hooks/network-hold.d.ts +47 -0
- package/dist-types/module-hooks.d.ts +4 -4
- package/dist-types/panel-link.d.ts +1 -1
- package/dist-types/panel-trigger.d.ts +1 -1
- package/dist-types/panel.d.ts +13 -1
- package/dist-types/preferences.d.ts +12 -1
- package/dist-types/primitives/accordion.d.ts +1 -1
- package/dist-types/primitives/button.d.ts +1 -1
- package/dist-types/primitives/collapsible.d.ts +1 -1
- package/dist-types/primitives/dialog.d.ts +1 -1
- package/dist-types/primitives/preference-item.d.ts +1 -1
- package/dist-types/primitives/switch.d.ts +1 -1
- package/dist-types/primitives/tabs.d.ts +1 -1
- package/dist-types/primitives.d.ts +7 -7
- package/dist-types/prompt.d.ts +1 -1
- package/dist-types/provider.d.ts +62 -12
- package/dist-types/server/fetch-ssr-data.d.ts +1 -1
- package/dist-types/server/index.d.ts +5 -5
- package/dist-types/theme-provider.d.ts +2 -2
- package/dist-types/types/index.d.ts +3 -3
- package/dist-types/types/manager.d.ts +1 -1
- package/dist-types/types/theme/index.d.ts +1 -1
- package/dist-types/ui-config-context.d.ts +3 -1
- package/dist-types/ui-save.d.ts +21 -1
- package/dist-types/utils/deferred-module.d.ts +13 -0
- package/dist-types/utils/index.d.ts +4 -4
- package/dist-types/utils/merge-slot-props.d.ts +2 -2
- package/dist-types/utils/merge-styles.d.ts +1 -1
- package/dist-types/utils/theme-utils.d.ts +1 -1
- package/dist-types/version.d.ts +1 -1
- package/docs/README.md +9 -2
- package/docs/customization/overview.md +4 -3
- package/docs/customization/recipes.md +4 -2
- package/docs/customization/tokens.md +66 -3
- package/docs/frameworks/react/components/consent-dialog.md +46 -7
- package/docs/frameworks/react/components/{frame.md → consent-gate.md} +35 -31
- package/docs/frameworks/react/components/consent-manager-provider.md +35 -11
- package/docs/frameworks/react/components/consent-widget.md +48 -6
- package/docs/frameworks/react/concepts/consent-categories.md +38 -2
- package/docs/frameworks/react/hooks/{use-consent-manager/overview.md → overview.md} +7 -5
- package/docs/frameworks/react/iab/overview.md +121 -1
- package/docs/frameworks/react/network-blocker.md +146 -0
- package/docs/frameworks/react/script-loader.md +6 -0
- package/docs/frameworks/react/styling/overview.md +71 -22
- package/docs/guides/consent-state.md +327 -0
- package/docs/guides/deployment-modes.md +12 -0
- package/docs/guides/shared-consent-controls.md +158 -0
- package/docs/integrations/adobe-analytics.md +1 -1
- package/docs/integrations/ahrefs-analytics.md +1 -1
- package/docs/integrations/amplitude.md +1 -1
- package/docs/integrations/building-integrations.md +5 -0
- package/docs/integrations/clearbit.md +1 -1
- package/docs/integrations/cloudflare-web-analytics.md +1 -1
- package/docs/integrations/cloudflare-zaraz.md +399 -0
- package/docs/integrations/crisp.md +1 -1
- package/docs/integrations/databuddy.md +1 -1
- package/docs/integrations/fathom-analytics.md +1 -1
- package/docs/integrations/front-chat.md +322 -0
- package/docs/integrations/google-maps.md +21 -21
- package/docs/integrations/google-tag-manager.md +1 -1
- package/docs/integrations/google-tag.md +1 -1
- package/docs/integrations/granular-consent.md +210 -0
- package/docs/integrations/heap.md +1 -1
- package/docs/integrations/hightouch.md +1 -1
- package/docs/integrations/hotjar.md +1 -1
- package/docs/integrations/intercom.md +1 -1
- package/docs/integrations/linkedin-insights.md +1 -1
- package/docs/integrations/logrocket.md +1 -1
- package/docs/integrations/matomo-analytics.md +1 -1
- package/docs/integrations/meta-pixel.md +1 -1
- package/docs/integrations/microsoft-clarity.md +1 -1
- package/docs/integrations/microsoft-uet.md +1 -1
- package/docs/integrations/mixpanel-analytics.md +1 -1
- package/docs/integrations/one-dollar-stats.md +305 -0
- package/docs/integrations/openai-pixel.md +1 -1
- package/docs/integrations/overview.md +22 -18
- package/docs/integrations/pinterest-tag.md +321 -0
- package/docs/integrations/pirsch.md +1 -1
- package/docs/integrations/plausible-analytics.md +1 -1
- package/docs/integrations/posthog.md +1 -1
- package/docs/integrations/promptwatch.md +1 -1
- package/docs/integrations/reddit-pixel.md +1 -1
- package/docs/integrations/rudderstack.md +1 -1
- package/docs/integrations/rybbit-analytics.md +1 -1
- package/docs/integrations/segment.md +1 -1
- package/docs/integrations/snapchat-pixel.md +1 -1
- package/docs/integrations/tiktok-pixel.md +1 -1
- package/docs/integrations/umami-analytics.md +1 -1
- package/docs/integrations/vercel-analytics.md +1 -1
- package/docs/integrations/x-pixel.md +1 -1
- package/docs/integrations/youtube.md +27 -22
- package/docs/upgrade-v3.md +176 -1
- package/package.json +26 -16
- package/dist/component-hooks/use-manager.js +0 -2
- package/dist/components/frame/atoms.js +0 -1
- package/dist/components/frame/frame.js +0 -2
- package/dist/components/frame/index.js +0 -2
- package/dist/frame.js +0 -2
- package/dist-types/component-hooks/use-manager.d.ts +0 -40
- package/dist-types/components/frame/atoms.d.ts +0 -11
- package/dist-types/components/frame/frame.d.ts +0 -2
- package/dist-types/components/frame/index.d.ts +0 -24
- package/dist-types/frame.d.ts +0 -1
- package/readme.json +0 -48
- package/src/iab/styles.css +0 -11
- package/src/styles.css +0 -10
- /package/dist/components/{frame → consent-gate}/types.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as l,jsxs as t}from"react/jsx-runtime";let
|
|
1
|
+
import{jsx as l,jsxs as t}from"react/jsx-runtime";let c=({title:c="c15t",titleId:e="c15t-icon",...i})=>t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 446 445","aria-labelledby":e,...i,children:[l("title",{id:e,children:c}),l("path",{fill:"currentColor",d:"M223.178.313c39.064 0 70.732 31.668 70.732 70.732-.001 39.064-31.668 70.731-70.732 70.731-12.181 0-23.642-3.079-33.649-8.502l-55.689 55.689a70.267 70.267 0 0 1 5.574 13.441h167.531c8.695-29.217 35.762-50.523 67.804-50.523 39.064 0 70.731 31.668 70.731 70.732s-31.668 70.732-70.731 70.732c-32.042 0-59.108-21.306-67.803-50.523H139.413a70.417 70.417 0 0 1-7.888 17.396l54.046 54.046c10.893-6.851 23.786-10.815 37.605-10.815 39.064 0 70.732 31.669 70.732 70.733 0 39.064-31.668 70.731-70.732 70.731s-70.732-31.667-70.732-70.731c0-10.518 2.296-20.499 6.414-29.471l-57.78-57.78c-8.972 4.117-18.952 6.414-29.47 6.414-39.063 0-70.731-31.668-70.732-70.732 0-39.064 31.669-70.732 70.733-70.732 12.18 0 23.642 3.079 33.649 8.502l55.688-55.688c-5.423-10.007-8.502-21.469-8.502-33.65 0-39.064 31.668-70.733 70.732-70.733Zm0 343.555c-16.742 0-30.314 13.572-30.314 30.314 0 16.741 13.572 30.313 30.314 30.313s30.314-13.572 30.314-30.313c0-16.742-13.572-30.314-30.314-30.314ZM71.611 192.299c-16.742 0-30.315 13.572-30.315 30.314s13.573 30.314 30.315 30.314c16.741 0 30.313-13.572 30.313-30.314 0-16.741-13.572-30.314-30.313-30.314Zm303.138 0c-16.729 0-30.294 13.551-30.315 30.275l.001.039-.001.038c.021 16.725 13.586 30.276 30.315 30.276 16.741 0 30.313-13.572 30.313-30.314 0-16.741-13.572-30.314-30.313-30.314ZM223.178 40.73c-16.742 0-30.314 13.573-30.314 30.315s13.573 30.313 30.314 30.313c16.742 0 30.313-13.572 30.314-30.313 0-16.742-13.572-30.314-30.314-30.315Z"})]}),e=({title:c="INTH",titleId:e="inth-logo",...i})=>t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 88 90",fill:"none","aria-labelledby":e,...i,children:[l("title",{id:e,children:c}),l("path",{fill:"currentColor",d:"M40.9164 0V8.26444H27.6933V26.7966H40.9164V35.0608H6.15594V26.7966H19.3788V8.26444H6.15594V0H40.9164Z"}),l("path",{fill:"currentColor",d:"M72.1149 20.1264V0H80.0343V35.0608H74.2747L54.9798 14.8193V35.0608H47.0604V0H52.964L72.1149 20.1264Z"}),l("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M71.36 41.6H88V89.6H0V41.6H61.12V31.04L71.36 41.6ZM6.15594 48.0891V56.4034H19.1784V83.2H27.4428V56.4034H40.5656V48.0891H6.15594ZM47.0603 48.1391V83.2H55.3247V70.2441H71.7531V83.2H80.0675V48.1391H71.7531V61.9797H55.3247V48.1391H47.0603Z"})]}),i=t=>l(e,{titleId:"inth-full-logo",...t}),o=t=>l(e,{titleId:"inth-icon",...t});export{c as C15TIconOnly,o as InthIconOnly,i as InthLogo};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e}from"react/jsx-runtime";import{getDataDisabled as t}from"@c15t/ui/primitives/data-state";import{PREFERENCE_ITEM_INTERNAL_SLOTS as r,PREFERENCE_ITEM_SLOTS as n,getPreferenceItemState as a,togglePreferenceItemValue as o}from"@c15t/ui/primitives/preference-item";import l from"@c15t/ui/styles/components/preference-item";import{createContext as i,forwardRef as s,useContext as c,useId as m,useMemo as d}from"react";import{useControllableState as
|
|
2
|
+
import{jsx as e}from"react/jsx-runtime";import{getDataDisabled as t}from"@c15t/ui/primitives/data-state";import{PREFERENCE_ITEM_INTERNAL_SLOTS as r,PREFERENCE_ITEM_SLOTS as n,getPreferenceItemState as a,togglePreferenceItemValue as o}from"@c15t/ui/primitives/preference-item";import l from"@c15t/ui/styles/components/preference-item";import"@c15t/ui/styles/dialog";import{createContext as i,forwardRef as s,useContext as c,useId as m,useMemo as d,useState as f}from"react";import{useControllableState as p}from"../../libs/use-controllable-state.js";import{useTheme as u}from"../../../../hooks/use-theme.js";import{useUIConfig as y}from"../../../../ui-config-context.js";import{getSlotProps as g,mergeSlotProps as I}from"../../../../utils/merge-slot-props.js";let P=()=>({auxiliary:e=>[l.auxiliary,e?.class].filter(Boolean).join(" "),content:e=>[l.content,e?.class].filter(Boolean).join(" "),contentInner:e=>[l.contentInner,e?.class].filter(Boolean).join(" "),contentViewport:e=>[l.contentViewport,e?.class].filter(Boolean).join(" "),control:e=>[l.control,e?.class].filter(Boolean).join(" "),header:e=>[l.header,e?.class].filter(Boolean).join(" "),leading:e=>[l.leading,e?.class].filter(Boolean).join(" "),meta:e=>[l.meta,e?.class].filter(Boolean).join(" "),root:e=>[l.root,e?.class].filter(Boolean).join(" "),title:e=>[l.title,e?.class].filter(Boolean).join(" "),trigger:e=>[l.trigger,e?.class].filter(Boolean).join(" ")}),b=i(null),h=function(){let e=c(b);if(!e)throw Error("PreferenceItem components must be used within PreferenceItemRoot");return e},S=s(({children:r,className:o,defaultOpen:l=!1,disabled:i,noStyle:s,onOpenChange:c,open:f,slotKey:h,...S},j)=>{let{components:C}=y(),{noStyle:N}=u(),v=P(),[x,B]=p({defaultValue:l,onChange:c,value:f}),w=m().replace(/:/gu,""),T=s??N,V=I(g(C,h),{baseClassName:v.root(),className:o,noStyle:T,...S}),R=d(()=>({contentId:`c15t-preference-item-content-${w}`,disabled:i,noStyle:T,open:x,setOpen:B,triggerId:`c15t-preference-item-trigger-${w}`}),[i,T,x,w,B]);return e(b.Provider,{value:R,children:e("div",{...V,ref:j,"data-disabled":t(i),"data-slot":n.root,"data-state":a(x),children:r})})});S.displayName="PreferenceItemRoot";let j=s(({children:r,className:l,noStyle:i,onClick:s,slotKey:c,...m},d)=>{let{components:f}=y(),{noStyle:p}=u(),b=P(),{contentId:S,disabled:j,noStyle:C,open:N,setOpen:v,triggerId:x}=h();return e("button",{...I(g(f,c),{baseClassName:b.trigger(),className:l,noStyle:i??C??p,...m}),ref:d,"aria-controls":S,"aria-disabled":j||void 0,"aria-expanded":N,"data-disabled":t(j),"data-slot":n.trigger,"data-state":a(N),disabled:j,id:x,onClick:e=>{j||v(o(N)),s?.(e)},type:"button",children:r})});j.displayName="PreferenceItemTrigger";let C=function(t,r,n){let a=s(({className:t,noStyle:a,slotKey:o,...l},i)=>{let{components:s}=y(),{noStyle:c}=u(),{noStyle:m}=h(),d=P();return e("div",{...I(g(s,o),{baseClassName:d[n](),className:t,noStyle:a??m??c,...l}),ref:i,"data-slot":r})});return a.displayName=t,a},N=C("PreferenceItemLeading",n.leading,"leading"),v=C("PreferenceItemHeader",n.header,"header"),x=C("PreferenceItemMeta",n.meta,"meta"),B=C("PreferenceItemAuxiliary",n.auxiliary,"auxiliary"),w=C("PreferenceItemControl",n.control,"control"),T=s(({children:t,className:r,noStyle:a,...o},l)=>{let{components:i}=y(),{noStyle:s}=u(),{noStyle:c}=h(),m=P(),{slotKey:d,...f}=o;return e("h3",{...I(g(i,d),{baseClassName:m.title(),className:r,noStyle:a??c??s,...f}),ref:l,"data-slot":n.title,children:t})});T.displayName="PreferenceItemTitle";let V=s(({children:t,className:o,forceMount:l=!1,innerClassName:i,innerSlotKey:s,noStyle:c,slotKey:m,viewportClassName:d,viewportSlotKey:p,...b},S)=>{let{components:j}=y(),{noStyle:C}=u(),N=P(),{contentId:v,noStyle:x,open:B,triggerId:w}=h(),[T,V]=f(B);B&&!T&&V(!0);let R=l||B||T,A=c??x??C,H=I(g(j,m),{baseClassName:N.content(),className:o,noStyle:A,...b}),L=I(g(j,p),{baseClassName:N.contentViewport(),className:d,noStyle:A}),M=I(g(j,s),{baseClassName:N.contentInner(),className:i,noStyle:A});return e("div",{...H,ref:S,"aria-hidden":!B,"aria-labelledby":w,"data-slot":n.content,"data-state":a(B),id:v,inert:!B,children:e("div",{...L,"data-slot":r.contentViewport,children:e("div",{...M,"data-slot":r.contentInner,children:R?t:null})})})});V.displayName="PreferenceItemContent";export{B as Auxiliary,V as Content,w as Control,v as Header,N as Leading,x as Meta,S as Root,T as Title,j as Trigger,P as preferenceItemVariants};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as t}from"react/jsx-runtime";import{getDataDisabled as o}from"@c15t/ui/primitives/data-state";import{getSwitchState as e,toggleSwitchValue as
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{getDataDisabled as o}from"@c15t/ui/primitives/data-state";import{getSwitchState as e,toggleSwitchValue as s}from"@c15t/ui/primitives/switch";import a from"@c15t/ui/styles/components/switch";import"@c15t/ui/styles/dialog";import{forwardRef as i}from"react";import{useControllableState as r}from"../../libs/use-controllable-state.js";import{useTheme as l}from"../../../../hooks/use-theme.js";import{useUIConfig as m}from"../../../../ui-config-context.js";import{mergeSlotProps as c}from"../../../../utils/merge-slot-props.js";let n=()=>({root:t=>[a.root,t?.class].filter(Boolean).join(" "),thumb:t=>[a.thumb,t?.class].filter(Boolean).join(" "),track:t=>[a.track,t?.class].filter(Boolean).join(" ")}),h=i(({checked:a,className:i,defaultChecked:h=!1,disabled:u,noStyle:p,onCheckedChange:d,onClick:f,onKeyDown:b,size:w="medium",type:y="button",...k},j)=>{let{components:S}=m(),{noStyle:v}=l(),C=n(),[g,N]=r({defaultValue:h,onChange:d,value:a}),x=p??v,B=c(S?.switch?.root,{baseClassName:C.root(),className:i,noStyle:x,...k}),D=c(S?.switch?.track,{baseClassName:C.track(),noStyle:x}),R=c(S?.switch?.thumb,{baseClassName:C.thumb(),noStyle:x}),V=e(g),z=o(u),E=()=>{u||N(s(g))};return t("button",{...B,ref:j,"aria-checked":g,"data-disabled":z,"data-size":x?void 0:w,"data-slot":"switch","data-state":V,disabled:u,onClick:t=>{E(),f?.(t)},onKeyDown:t=>{"Enter"===t.key&&(t.preventDefault(),E()),b?.(t)},role:"switch",type:"button",children:t("span",{...D,"data-slot":"switch-track",children:t("span",{...R,"data-slot":"switch-thumb"})})})});h.displayName="SwitchRoot";export{h as Root,n as switchVariants};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as t}from"react/jsx-runtime";import{getDataDisabled as e}from"@c15t/ui/primitives/data-state";import{getNextTabValue as a,getTabPanelState as r,getTabState as o}from"@c15t/ui/primitives/tabs";import l from"@c15t/ui/styles/components/tabs";import{createContext as
|
|
2
|
+
import{jsx as t}from"react/jsx-runtime";import{getDataDisabled as e}from"@c15t/ui/primitives/data-state";import{getNextTabValue as a,getTabPanelState as r,getTabState as o}from"@c15t/ui/primitives/tabs";import l from"@c15t/ui/styles/components/tabs";import"@c15t/ui/styles/dialog";import{createContext as s,forwardRef as i,useContext as n,useId as d,useMemo as c,useRef as u}from"react";import{useControllableState as m}from"../../libs/use-controllable-state.js";import{useTheme as b}from"../../../../hooks/use-theme.js";let g=()=>({content:t=>[l.content,t?.class].filter(Boolean).join(" "),list:t=>[l.list,t?.class].filter(Boolean).join(" "),root:t=>[l.root,t?.class].filter(Boolean).join(" "),trigger:t=>[l.trigger,t?.class].filter(Boolean).join(" ")}),f=s(null),p=function(){let t=n(f);if(!t)throw Error("Tabs components must be used within TabsRoot");return t},y=i(({children:a,className:r,defaultValue:o,disabled:l,loop:s=!0,noStyle:i,onValueChange:n,orientation:p="horizontal",value:y,...T},$)=>{let h=d().replace(/:/gu,""),{noStyle:v}=b(),S=g(),[N,j]=m({defaultValue:o??"",onChange:n,value:y}),k=u(new Map),B=v||i,C=c(()=>({baseId:`c15t-tabs-${h}`,disabled:l,loop:s,noStyle:B,onValueChange:j,orientation:p,registerTrigger:(t,e)=>{k.current.set(t,e)},value:N}),[N,l,B,s,p,h,j]);return t(f.Provider,{value:C,children:t("div",{ref:$,className:B?r:S.root({class:r}),"data-disabled":e(l),"data-orientation":p,"data-slot":"tabs-root",...T,children:a})})});y.displayName="TabsRoot";let T=i(({className:a,noStyle:r,orientation:o,...l},s)=>{let{noStyle:i}=b(),{disabled:n,noStyle:d,orientation:c}=p(),u=o??c,m=g();return t("div",{ref:s,"aria-orientation":u,className:d||i||r?a:m.list({class:a}),"data-disabled":e(n),"data-orientation":u,"data-slot":"tabs-list",role:"tablist",...l})});T.displayName="TabsList";let $=i(({children:r,className:l,noStyle:s,onClick:i,onKeyDown:n,value:d,...c},m)=>{let{noStyle:f}=b(),y=g(),{baseId:T,disabled:$,loop:h,noStyle:v,onValueChange:S,orientation:N,registerTrigger:j,value:k}=p(),B=k===d,C=u(null);return t("button",{ref:t=>{C.current=t,j(d,t),"function"==typeof m?m(t):m&&(m.current=t)},"aria-controls":`${T}-content-${d}`,"aria-selected":B,className:v||f||s?l:y.trigger({class:l}),"data-disabled":e($),"data-slot":"tabs-trigger","data-state":o(B),disabled:$,id:`${T}-trigger-${d}`,onClick:t=>{S(d),i?.(t)},onKeyDown:t=>{let e=a({currentValue:d,key:t.key,loop:h,orientation:N,triggerValues:Array.from(document.querySelectorAll(`[data-slot="tabs-trigger"][id^="${T}-trigger-"]`)).map(t=>t.id.replace(`${T}-trigger-`,""))});if(e!==d||"Home"===t.key||"End"===t.key){let a;t.preventDefault(),S(e),(a=document.getElementById(`${T}-trigger-${e}`)??null)instanceof HTMLButtonElement&&a.focus()}n?.(t)},role:"tab",tabIndex:B?0:-1,type:"button",...c,children:r})});$.displayName="TabsTrigger";let h=i(({children:e,className:a,forceMount:o=!1,noStyle:l,value:s,...i},n)=>{let{noStyle:d}=b(),c=g(),{baseId:u,noStyle:m,value:f}=p(),y=f===s;return o||y?t("div",{ref:n,"aria-labelledby":`${u}-trigger-${s}`,className:m||d||l?a:c.content({class:a}),"data-slot":"tabs-content","data-state":r(y),hidden:!y,id:`${u}-content-${s}`,role:"tabpanel",tabIndex:0,...i,children:e}):null});h.displayName="TabsContent";export{h as Content,T as List,y as Root,$ as Trigger,g as tabsVariants};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{defaultTheme as t,generateThemeCSS as m}from"@c15t/ui/theme";let r=({theme:r,colorScheme:n,nonce:o})=>e("style",{id:"c15t-theme",nonce:o,dangerouslySetInnerHTML:{__html:m(r??t,n)}});export{r as ConsentTheme};
|
package/dist/draft.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e}from"react/jsx-runtime";import{
|
|
2
|
+
import{jsx as e}from"react/jsx-runtime";import{deniedVendorIds as t,vendorRenders as r}from"@c15t/core";import{createContext as o,useCallback as n,useContext as i,useEffect as s,useMemo as l,useState as a,useSyncExternalStore as c}from"react";import{KernelContext as u,ProviderServicesContext as f}from"./context.js";import{useCommittedRef as d}from"./hooks/use-committed-ref.js";import{useUIConfig as p}from"./ui-config-context.js";import{saveConsentUI as y}from"./ui-save.js";let v=function(e,t,r){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0})},m=function(e){let r={};if("iab"===e.model)return r;let o=t(e)??new Set;for(let t of e.vendors?.declared??[])v(r,t.id,!o.has(t.id));return r},g=function(e){return"iab"===e.model?"":JSON.stringify((e.vendors?.declared??[]).filter(r).map(e=>[e.id,!0===e.disabled,e.category]).sort(([e],[t])=>String(e).localeCompare(String(t))))},h=function(e){let t=new Set;if("iab"===e.model)return t;for(let r of e.vendors?.declared??[])!0!==r.disabled&&t.add(r.id);return t},S=function(e,t){let r=Object.keys(e);return r.length===Object.keys(t).length&&r.every(r=>e[r]===t[r])},C=function(e,t){let r={experience:!1,functionality:!1,marketing:!1,measurement:!1,necessary:!0};for(let o of e.evaluationPolicy.choiceScope??e.policyRule.scope)r[o]=e.explicitChoice?.categories[o]?.value??t?.[o]??("opt-out"===e.policyRule.model||e.policyRule.preselectedCategories.includes(o));return r},b=function(e,t){let r=0,o=0,n=e.getSnapshot(),i=C(n,t),s=m(n),l=h(n),a=g(n),{fingerprint:c}=n.evaluationPolicy.choice,u={displayedCategories:["necessary",...n.evaluationPolicy.choiceScope??n.policyRule.scope],isDirty:!1,isStale:!1,values:i,vendors:s},f=new Set,d=e=>{for(let t of(u=e,f))t()},p=(e,t)=>u.displayedCategories.some(t=>e[t]!==i[t])||!S(t,s),y=()=>{r+=1,i=C(n=e.getSnapshot(),t),s=m(n),l=h(n),a=g(n),({fingerprint:c}=n.evaluationPolicy.choice),d({displayedCategories:["necessary",...n.evaluationPolicy.choiceScope??n.policyRule.scope],isDirty:!1,isStale:!1,values:i,vendors:s})},b=e=>{let t={...u.values},o=!1;for(let r of u.displayedCategories)"necessary"!==r&&"boolean"==typeof e[r]&&t[r]!==e[r]&&(t[r]=e[r],o=!0);o&&(r+=1,d({...u,isDirty:p(t,u.vendors),values:t}))},j=e=>{let t={...u.vendors},o=!1;for(let[r,n]of Object.entries(e))l.has(r)&&"boolean"==typeof n&&t[r]!==n&&(v(t,r,n),o=!0);o&&(r+=1,d({...u,isDirty:p(u.values,t),vendors:t}))},P=()=>{let e={};for(let t of Object.keys(s))v(e,t,!0);return e},D=()=>{let t=e.getSnapshot();if(n.explicitChoice===t.explicitChoice&&n.policyRule===t.policyRule&&n.evaluationPolicy===t.evaluationPolicy&&n.vendors===t.vendors&&n.vendorChoice===t.vendorChoice&&n.model===t.model)return;let r=t.evaluationPolicy.choiceScope??t.policyRule.scope,o=u.displayedCategories.length!==r.length+1||r.some(e=>!u.displayedCategories.includes(e)),i=g(t)!==a,s=c!==t.evaluationPolicy.choice.fingerprint||o||i;n=t,u.isDirty?s&&!u.isStale&&d({...u,isStale:!0}):y()};return{acceptAll(){b(Object.fromEntries(u.displayedCategories.map(e=>[e,!0]))),j(P())},connect:()=>(D(),e.subscribe(D)),getSnapshot:()=>u,kernel:e,rejectAll(){b(Object.fromEntries(u.displayedCategories.map(e=>[e,!1]))),j(P())},reset:y,async save(t,n,i){if(c!==e.getSnapshot().evaluationPolicy.choice.fingerprint||u.isStale)return d({...u,isStale:!0}),{ok:!1};let l={},a=new Set(n??u.displayedCategories);for(let e of u.displayedCategories)"necessary"!==e&&a.has(e)&&(l[e]=u.values[e]);let f=o+=1,p={};if("all"!==t&&"none"!==t)for(let[e,t]of Object.entries(u.vendors))s[e]!==t&&v(p,e,t);let m=e.commands.save(t??l,{categories:n,...Object.keys(p).length>0&&{vendors:p}}),g=r,h=await m;return h.ok&&f===o&&r===g&&!u.isStale&&c===e.getSnapshot().evaluationPolicy.choice.fingerprint&&(y(),i?.()),h},set(e,t){b({[e]:t})},setVendor(e,t){j({[e]:t})},subscribe:e=>(f.add(e),()=>{f.delete(e)}),update:b}},j=o(null),P=function(){let e=i(u);if(!e)throw Error("Consent drafts require a ConsentProvider.");return e},D=function(e,t){let[r,o]=a(()=>({kernel:e,store:b(e,t)}));if(r.kernel===e)return r.store;let n={kernel:e,store:b(e,t)};return o(n),n.store},k=({children:t,initial:r})=>{let o=P(),n=i(j),{presentation:l}=p(),a=D(o,r??l?.preferences?.defaults),c=n&&!r&&n.kernel===o?n:a;return s(()=>c.connect(),[c]),e(j.Provider,{value:c,children:t})},O=function(){let e=P(),t=i(j),{presentation:r}=p(),o=D(e,r?.preferences?.defaults),n=t?.kernel===e?t:o;return s(()=>n===t?void 0:n.connect(),[t,n]),n},x=function(e){let t=d(P());return n(()=>t.current===e.kernel,[t,e])},A={ok:!1},R=function(e){let t=P(),r=i(f),o=x(e);return n(n=>{if(!o())return Promise.resolve(A);let i=!1;return y(t,()=>e.save(n,r?.getConsentCategories(),()=>{i=!0}),()=>i)},[o,t,e,r])},w=function(e){let t=c(e.subscribe,e.getSnapshot,e.getSnapshot),r=x(e);return l(()=>{let o=e=>(...t)=>{r()&&e(...t)};return{...t,acceptAll:o(e.acceptAll),rejectAll:o(e.rejectAll),reset:o(e.reset),save:(...t)=>r()?e.save(...t):Promise.resolve(A),set:o(e.set),setVendor:o(e.setVendor),update:o(e.update)}},[r,t,e])},V=function(){return R(O())},_=function(){return O()},E=function(e,t){let r=()=>t(e.getSnapshot());return c(e.subscribe,r,r)},q=function(){return w(O())},J=function(){let{isDirty:e,isStale:t,reset:r,save:o,setVendor:n,vendors:i}=w(O());return l(()=>({isDirty:e,isStale:t,reset:r,save:o,setVendor:n,vendors:i}),[e,t,r,o,n,i])};export{k as ConsentDraftProvider,q as useConsentDraft,E as useConsentDraftSlice,_ as useConsentDraftStore,V as useConsentSaveAction,J as useVendorDraft};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as
|
|
2
|
+
import{jsx as e}from"react/jsx-runtime";import{useCallback as t,useEffect as r,useMemo as i,useState as o,useSyncExternalStore as n}from"react";import{IABContext as a}from"./context/iab-context-value.js";import{useCommittedRef as c}from"./hooks/use-committed-ref.js";let u=function(){return null},l=({runtime:l,children:s})=>{let[m,d]=o("purposes"),f=n(e=>l.onIABChange(e),()=>l.iab,u),p=i(()=>{let e,t,r;return e=!1,t=!1,{actions:r=[],activate:()=>{e=!0,t=!1},deactivate:()=>{e=!1,queueMicrotask(()=>{if(!e)for(let e of(t=!0,r.splice(0)))e.cancel()})},isClosed:()=>t,runtime:l}},[l]),v=c(p);r(()=>{p.activate();let e=()=>{let e=p.runtime.iab;if(e)for(let t of p.actions.splice(0))t.run(e)},t=p.runtime.onIABChange(e);return e(),()=>{t(),p.deactivate()}},[p]);let h=t(e=>{let t=new Promise((t,r)=>{let i=()=>r(new DOMException("External IAB provider unmounted or changed runtimes.","AbortError"));if(p.isClosed()||v.current!==p)return void i();let o=async i=>{try{await e(i),t()}catch(e){r(e)}},n=p.runtime.iab;n?o(n):p.actions.push({cancel:i,run:o})});return t.catch(()=>void 0),t},[v,p]),x=i(()=>({handle:f,run:h,setTab:d,tab:m}),[f,h,m]);return e(a.Provider,{value:x,children:s})};export{l as ExternalIABProvider};
|
package/dist/headless.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{defaultTranslationConfig,detectBrowserLanguage,mergeTranslationConfigs,prepareTranslationConfig}from"@c15t/core";export{useConsentDialogTrigger}from"./component-hooks/use-panel-trigger.js";export{
|
|
1
|
+
export{defaultTranslationConfig,detectBrowserLanguage,mergeTranslationConfigs,prepareTranslationConfig}from"@c15t/core";export{useConsentDialogTrigger}from"./component-hooks/use-panel-trigger.js";export{useHeadlessConsentUI}from"./component-hooks/use-headless-consent-ui.js";export{useTranslations}from"./component-hooks/use-translations.js";export{useColorScheme}from"./hooks/use-color-scheme.js";export{useFocusTrap}from"./hooks/use-focus-trap.js";
|
package/dist/hooks.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{evaluateConsent as e,isVendorDenied as s}from"@c15t/core";import{useCallback as o,useSyncExternalStore as n}from"react";import{useGateSelector as t,useKernel as r,useKernelSelector as u}from"./kernel-selector.js";import{useUIConfig as i}from"./ui-config-context.js";import{invalidateConsentUIAction as a}from"./ui-save.js";let c=function(){let e=r();return n(s=>e.subscribe(s),()=>e.getSnapshot(),()=>e.getServerSnapshot())},l=function(e){return u(s=>s.effectivePermissions[e])},f=function(){return u(e=>e.effectivePermissions)},h=function(){return u(e=>e.overrides)},p=function(){return u(e=>e.user)},d=function(){return u(e=>e.location)},m=function(){return u(e=>e.translations)},k=function(){return u(e=>e.branding)},_=function(){return u(e=>"matched"===e.resolution.status)},C=function(){return u(e=>!e.externalPermissions&&"matched"===e.resolution.status&&("none"!==e.policyRule.prompt||e.policyRule.rights.length>0))},g=function(){return u(e=>!!e.externalPermissions||"matched"===e.resolution.status&&("none"!==e.policyRule.prompt||e.policyRule.rights.length>0))},v=function(){return u(e=>"matched"===e.resolution.status?e.model:null)},P=function(){return u(e=>e.activeUI)},S=function(){return u(e=>e.policyRule.scope)},y=function(){return u(e=>e.policyRule.scopeMode)},I=function(){return u(e=>e.iab)},b=function(){return u(e=>e.iab?.enabled??!1)},R=function(e){let s=String(e);return u(e=>e.iab?.vendorConsents[s]??!1)},O=function(e){return u(s=>s.iab?.purposeConsents[e]??!1)},A=function(e){return u(s=>s.iab?.specialFeatureOptIns[e]??!1)},D=function(){return u(e=>e.iab?.tcString??null)},U=[],V=function(){return u(e=>"iab"===e.model?U:e.vendors?.declared??U)},x=function(){return u(e=>e.vendorChoice)},B=function(o){return t((n,t)=>{let r=n.vendors?.declared.find(e=>e.id===o);if(!r)return!0;if("iab"!==n.model&&s(n,o))return!1;try{return e({category:r.category},n,t)}catch{return!1}})},E=function(){return r().set.registerConsentCategories},H=function(){return r().set.overrides},T=function(){return r().set.language},M=function(){let e=r();return o(s=>{a(e),e.set.activeUI(s)},[e])},N=function(){return r().commands.save},L=function(){let e=r();return o(s=>e.events.on("permissions:changed",({snapshot:e})=>s(e.effectivePermissions)),[e])},j=function(){return r().commands.identify},q=function(){return r().commands.init},F=function(){return u(e=>e.explicitChoice)},w=function(){return u(e=>e.effectivePermissions)},z=function(){return u(e=>e.promptRequirement)},G=function(){return u(e=>e.noticeDismissal)},J=function(){return u(e=>e.privacySignals)},K=function(){return u(e=>e.optOutDirectives)},Q=function(){return u(e=>e.resolution)},W=function(){return u(e=>e.policyRule)},X=function(){return u(e=>e.restrictions)},Y=function(){return r().commands.dismissNotice},Z={},$={},ee=function(){return i().presentation?.prompt??Z},es=function(){return i().presentation?.preferences??$};export{P as useActiveUI,k as useBranding,l as useConsent,f as useConsents,V as useDeclaredVendors,Y as useDismissNotice,w as useEffectivePermissions,F as useExplicitChoice,_ as useHasConsentPolicy,g as useHasConsentPreferences,C as useHasConsentUI,b as useIABEnabled,I as useIABSnapshot,j as useIdentify,q as useInit,d as useLocation,v as useModel,G as useNoticeDismissal,K as useOptOutDirectives,h as useOverrides,S as usePolicyCategories,Q as usePolicyResolution,W as usePolicyRule,y as usePolicyScopeMode,es as usePreferencesPresentation,J as usePrivacySignals,ee as usePromptPresentation,z as usePromptRequirement,O as usePurposeConsent,E as useRegisterConsentCategories,X as useRestrictions,N as useSaveConsents,M as useSetActiveUI,T as useSetLanguage,H as useSetOverrides,c as useSnapshot,A as useSpecialFeatureOptIn,L as useSubscribeToConsentChanges,D as useTCString,m as useTranslations,p as useUser,B as useVendorAllowed,x as useVendorChoice,R as useVendorConsent};
|
package/dist/iab/styles.tw3.css
CHANGED
|
@@ -4,26 +4,7 @@
|
|
|
4
4
|
* This file inlines @c15t/ui CSS so bundlers that do not follow
|
|
5
5
|
* nested package CSS imports still include the complete stylesheet.
|
|
6
6
|
*/
|
|
7
|
-
/*
|
|
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: hsl(228, 100%, 60%);--c15t-text: hsl(0, 0%, 10%);--c15t-text-muted: hsl(0, 0%, 40%);--c15t-text-on-primary: hsl(0, 0%, 100%);}
|
|
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: hsl(228, 100%, 70%);--c15t-text: hsl(0, 0%, 93%);--c15t-text-muted: hsl(0, 0%, 60%);--c15t-text-on-primary: hsl(0, 0%, 100%);}
|
|
11
|
-
.c15t-no-transitions,.c15t-no-transitions *,.c15t-no-transitions *::before,.c15t-no-transitions *::after{transition: none !important;animation: none !important;}
|
|
12
|
-
|
|
13
|
-
/* primitives/button vars */
|
|
14
|
-
:root, :host{--button-primary:var(--c15t-primary);--button-primary-dark:var(--c15t-primary);--button-primary-hover:var(--c15t-primary-hover);--button-primary-hover-dark:var(--c15t-primary-hover);--button-neutral:var(--c15t-text-muted);--button-neutral-dark:var(--c15t-text-muted);--button-neutral-hover:var(--c15t-text);--button-neutral-hover-dark:var(--c15t-text);--button-neutral-soft:var(--c15t-surface-hover);--button-neutral-soft-dark:var(--c15t-surface-hover);--button-focus-ring:var(--c15t-primary);--button-focus-ring-dark:var(--c15t-primary);--button-text:var(--c15t-text);--button-text-dark:var(--c15t-text);--button-text-hover:var(--c15t-text);--button-text-hover-dark:var(--c15t-text);--button-background-color:var(--c15t-surface);--button-background-color-dark:var(--c15t-surface);--button-border:var(--c15t-border);--button-border-dark:var(--c15t-border);--button-hover-overlay:var(--c15t-surface-hover);--button-hover-overlay-dark:var(--c15t-surface-hover);--button-primary-hover-tint:color-mix(in srgb, var(--c15t-primary) 10%, transparent);--button-neutral-hover-tint:color-mix(in srgb, var(--c15t-text) 10%, transparent);--button-font:var(--c15t-font-family);--button-border-width:1px;--button-border-style:solid;--button-border-color:var(--c15t-border);--button-border-radius:var(--c15t-radius-md);--button-font-weight:var(--c15t-font-weight-medium);--button-font-size:var(--c15t-font-size-sm);--button-line-height:var(--c15t-line-height-tight);--button-transition:opacity var(--c15t-duration-fast) var(--c15t-easing), transform var(--c15t-duration-fast) var(--c15t-easing);--button-hover-transition-color:background-color var(--c15t-duration-fast) var(--c15t-easing);--button-hover-transition-full:background-color var(--c15t-duration-fast) var(--c15t-easing), box-shadow var(--c15t-duration-fast) var(--c15t-easing), color var(--c15t-duration-fast) var(--c15t-easing);--button-cursor:pointer;--button-shadow:var(--c15t-shadow-sm);--button-shadow-dark:var(--c15t-shadow-sm);--button-shadow-primary-focus:0 0 0 2px var(--button-focus-ring);--button-shadow-neutral-focus:0 0 0 2px var(--button-focus-ring);--button-shadow-primary-focus-dark:0 0 0 2px var(--button-focus-ring-dark);--button-shadow-neutral-focus-dark:0 0 0 2px var(--button-focus-ring-dark);--button-shadow-primary:var(--button-shadow), inset 0 0 0 1px var(--button-primary);--button-shadow-primary-dark:var(--button-shadow-dark), inset 0 0 0 1px var(--button-primary-dark);--button-shadow-primary-hover:none;--button-shadow-primary-hover-dark:none;--button-shadow-neutral:var(--button-shadow), inset 0 0 0 1px var(--button-neutral-soft);--button-shadow-neutral-dark:var(--button-shadow-dark), inset 0 0 0 1px var(--button-neutral-soft-dark);--button-shadow-neutral-hover:none;--button-shadow-neutral-hover-dark:none}
|
|
15
|
-
|
|
16
|
-
/* primitives/collapsible vars */
|
|
17
|
-
:root, :host{--collapsible-duration:var(--c15t-duration-normal);--collapsible-ease:var(--c15t-easing);--collapsible-content-color:var(--c15t-text-muted);--collapsible-gap:0}
|
|
18
|
-
|
|
19
|
-
/* primitives/legal-links vars */
|
|
20
|
-
:root, :host{--legal-links-gap:.75rem;--legal-links-font-size:.875rem;--legal-links-transition:text-decoration .2s ease;--legal-links-text-decoration:none;--legal-links-text-decoration-hover:underline;--legal-links-outline:2px solid currentColor;--legal-links-outline-offset:2px;--legal-links-color:#476cff;--legal-links-focus-color:#476cff;--legal-links-focus-color-dark:#2547d0}
|
|
21
|
-
|
|
22
|
-
/* primitives/preference-item vars */
|
|
23
|
-
:root, :host{--preference-item-gap:.75rem;--preference-item-leading-gap:.5rem;--preference-item-content-color:var(--c15t-text-muted);--preference-item-duration:var(--c15t-duration-normal);--preference-item-ease:var(--c15t-easing);--preference-item-focus-ring:var(--c15t-primary)}
|
|
24
|
-
|
|
25
|
-
/* primitives/tabs vars */
|
|
26
|
-
:root, :host{--tabs-list-background:var(--c15t-surface);--tabs-list-border:var(--c15t-border);--tabs-trigger-color:var(--c15t-text-muted);--tabs-trigger-active-color:var(--c15t-text);--tabs-trigger-active-background:var(--c15t-surface-hover);--tabs-focus-ring:var(--c15t-primary)}
|
|
7
|
+
/* @c15t/ui IAB TCF styles. Load after @c15t/ui/styles.css, which holds the tokens. */
|
|
27
8
|
|
|
28
9
|
/* components/iab-panel vars */
|
|
29
10
|
@keyframes spin{to{transform:rotate(360deg)}}
|
|
@@ -37,27 +18,6 @@
|
|
|
37
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-entry-animation:var(--c15t-iab-consent-banner-enter-animation);--iab-consent-banner-exit-animation:var(--c15t-iab-consent-banner-exit-animation);--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)}
|
|
38
19
|
@media only screen and (resolution>=192dpi){:root, :host{--iab-consent-banner-border-width-hairline:.5px}}
|
|
39
20
|
|
|
40
|
-
/* primitives/accordion */
|
|
41
|
-
.c15t-ui-root-RhSvQ{&>:not([hidden])~:not([hidden]){--space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--space-y-reverse)));margin-bottom:calc(1rem * var(--space-y-reverse))}}.c15t-ui-item-v83OH{padding:var(--accordion-padding,var(--c15t-space-md));background-color:var(--accordion-background-color,var(--c15t-surface));box-shadow:inset 0 0 0 1px var(--accordion-border-color,var(--c15t-border));transition:background-color var(--accordion-duration,var(--c15t-duration-normal)) var(--accordion-ease,var(--c15t-easing)), box-shadow var(--accordion-duration,var(--c15t-duration-normal)) var(--accordion-ease,var(--c15t-easing));border-radius:var(--accordion-radius,var(--c15t-radius-md));position:relative;overflow:visible}.c15t-dark .c15t-ui-item-v83OH{background-color:var(--accordion-background-color-dark,var(--c15t-surface));box-shadow:inset 0 0 0 1px var(--accordion-border-color-dark,var(--c15t-border))}.c15t-ui-item-v83OH:is(:hover,[data-state=open]){background-color:var(--accordion-background-hover,var(--c15t-surface-hover));box-shadow:inset 0 0 0 1px var(--accordion-border-color,var(--c15t-border))}.c15t-dark .c15t-ui-item-v83OH:is(:hover,[data-state=open]){background-color:var(--accordion-background-hover-dark,var(--c15t-surface-hover));box-shadow:inset 0 0 0 1px var(--accordion-border-color-dark,var(--c15t-border))}.c15t-ui-item-v83OH:focus-within:not(:has(.c15t-ui-triggerInner-lwGP6:focus-visible)){background-color:var(--accordion-background-hover,var(--c15t-surface-hover));box-shadow:inset 0 0 0 1px var(--accordion-border-color,var(--c15t-border))}.c15t-dark .c15t-ui-item-v83OH:focus-within:not(:has(.c15t-ui-triggerInner-lwGP6:focus-visible)){background-color:var(--accordion-background-hover-dark,var(--c15t-surface-hover));box-shadow:inset 0 0 0 1px var(--accordion-border-color-dark,var(--c15t-border))}.c15t-ui-item-v83OH:has(.c15t-ui-triggerInner-lwGP6:focus-visible){box-shadow:var(--accordion-focus-shadow,0 0 0 2px var(--accordion-focus-ring,var(--c15t-primary)))}.c15t-dark .c15t-ui-item-v83OH:has(.c15t-ui-triggerInner-lwGP6:focus-visible){box-shadow:var(--accordion-focus-shadow-dark,0 0 0 2px var(--accordion-focus-ring-dark,var(--c15t-primary)))}.c15t-ui-trigger-uhpMT{justify-content:space-between;align-items:center;width:100%;display:flex;position:relative;overflow:visible}.c15t-ui-triggerInner-lwGP6{letter-spacing:-.006em;text-align:left;width:100%;color:var(--accordion-text-color,var(--c15t-text));cursor:pointer;border-radius:var(--accordion-radius,var(--c15t-radius-md));z-index:1;touch-action:manipulation;background:0 0;border:0;justify-content:flex-start;align-items:center;gap:.625rem;margin:0;padding:0;font-size:.875rem;font-weight:500;line-height:1.25rem;display:flex;position:relative}.c15t-ui-triggerInner-lwGP6 [data-slot=accordion-arrow]{margin-inline-start:auto}.c15t-dark .c15t-ui-triggerInner-lwGP6{color:var(--accordion-text-color-dark,var(--c15t-text))}.c15t-ui-triggerInner-lwGP6:focus-visible{outline:none}.c15t-ui-icon-X1brh{width:var(--accordion-icon-size,1.25rem);height:var(--accordion-icon-size,1.25rem);color:var(--accordion-icon-color,var(--c15t-text-muted));flex-shrink:0}.c15t-dark .c15t-ui-icon-X1brh{color:var(--accordion-icon-color-dark,var(--c15t-text-muted))}.c15t-ui-arrowOpen-yE84x,.c15t-ui-arrowClose-QjqQt{width:var(--accordion-icon-size,1.25rem);height:var(--accordion-icon-size,1.25rem);transition:color var(--accordion-duration,var(--c15t-duration-normal)) var(--accordion-ease,var(--c15t-easing));flex-shrink:0;display:block}.c15t-ui-arrowOpen-yE84x{color:var(--accordion-arrow-color,var(--c15t-text-muted))}.c15t-dark .c15t-ui-arrowOpen-yE84x{color:var(--accordion-arrow-color-dark,var(--c15t-text-muted))}.c15t-ui-item-v83OH:hover .c15t-ui-arrowOpen-yE84x{color:var(--accordion-icon-color,var(--c15t-text-muted))}.c15t-dark .c15t-ui-item-v83OH:hover .c15t-ui-arrowOpen-yE84x{color:var(--accordion-icon-color-dark,var(--c15t-text-muted))}.c15t-ui-arrowClose-QjqQt{color:var(--accordion-icon-color,var(--c15t-text-muted));display:none}.c15t-dark .c15t-ui-arrowClose-QjqQt{color:var(--accordion-icon-color-dark,var(--c15t-text-muted))}.c15t-ui-item-v83OH[data-state=open] .c15t-ui-arrowOpen-yE84x{display:none}.c15t-ui-item-v83OH[data-state=open] .c15t-ui-arrowClose-QjqQt{display:block}.c15t-ui-content-YJGot{transition:grid-template-rows var(--accordion-duration,var(--c15t-duration-normal)) var(--accordion-ease,var(--c15t-easing));grid-template-rows:0fr;display:grid;overflow:hidden}.c15t-ui-content-YJGot[data-state=open]{grid-template-rows:1fr}.c15t-ui-content-YJGot[data-state=closed]{pointer-events:none}.c15t-ui-content-YJGot>[data-slot=accordion-content-viewport]{min-height:0;overflow:hidden}.c15t-ui-contentInner-lPIUe{letter-spacing:-.006em;color:var(--accordion-content-color,var(--c15t-text-muted));opacity:1;transition:opacity calc(var(--accordion-duration,var(--c15t-duration-normal)) * .35) ease-out, transform calc(var(--accordion-duration,var(--c15t-duration-normal)) * .35) ease-out;will-change:opacity, transform;padding-top:.75rem;font-size:.875rem;line-height:1.25rem;transform:translateY(0)}.c15t-ui-content-YJGot[data-state=closed] .c15t-ui-contentInner-lPIUe{opacity:0;transform:translateY(-.125rem)}.c15t-dark .c15t-ui-contentInner-lPIUe{color:var(--accordion-content-color-dark,var(--c15t-text-muted))}@media (prefers-reduced-motion:reduce){.c15t-ui-item-v83OH,.c15t-ui-content-YJGot,.c15t-ui-arrowOpen-yE84x,.c15t-ui-arrowClose-QjqQt{transition:none}}@media (hover:none){.c15t-ui-item-v83OH:hover{background-color:var(--accordion-background-color,var(--c15t-surface))}.c15t-ui-item-v83OH:hover .c15t-ui-arrowOpen-yE84x{color:var(--accordion-arrow-color,var(--c15t-text-muted))}}
|
|
42
|
-
|
|
43
|
-
/* primitives/button */
|
|
44
|
-
.c15t-ui-button-Lo5cc{text-wrap:nowrap;border-radius:var(--button-border-radius);font-weight:var(--button-font-weight);transition:var(--button-transition);cursor:var(--button-cursor);border:var(--button-border-width) var(--button-border-style) var(--button-border-color);font-size:var(--button-font-size);line-height:var(--button-line-height);color:var(--button-text);font-family:var(--button-font);touch-action:manipulation;justify-content:center;align-items:center;gap:.5rem;display:inline-flex}.c15t-ui-button-Lo5cc:focus-visible{box-shadow:var(--button-shadow-primary-focus);outline:none}.c15t-dark .c15t-ui-button-Lo5cc:focus-visible{box-shadow:var(--button-shadow-primary-focus-dark)}.c15t-dark .c15t-ui-button-Lo5cc{color:var(--button-text-dark)}.c15t-ui-button-Lo5cc:disabled{opacity:.5;cursor:not-allowed}.c15t-ui-button-Lo5cc:active:not(:disabled){transform:scale(.97)}.c15t-ui-button-medium-zdZk5{font-size:var(--button-font-size);line-height:var(--button-line-height);padding:.625rem 1rem}.c15t-ui-button-small-nclev{font-size:var(--button-font-size);line-height:var(--button-line-height);padding:.5rem .75rem}.c15t-ui-button-xsmall-xj0Fq{font-size:var(--button-font-size);line-height:var(--button-line-height);padding:.375rem .625rem}.c15t-ui-button-xxsmall-qDcpO{font-size:var(--button-font-size);line-height:var(--button-line-height);padding:.25rem .5rem}.c15t-ui-button-primary-filled-u895k{background-color:var(--button-primary);color:var(--button-background-color)}.c15t-ui-button-primary-filled-u895k:focus-visible{box-shadow:var(--button-shadow-primary-focus)}.c15t-dark .c15t-ui-button-primary-filled-u895k{background-color:var(--button-primary-dark);color:var(--button-background-color-dark)}.c15t-ui-button-primary-filled-u895k:hover:not(:disabled){background-color:var(--button-primary-hover);transition:var(--button-hover-transition-color)}.c15t-dark .c15t-ui-button-primary-filled-u895k:hover:not(:disabled){background-color:var(--button-primary-hover-dark);transition:var(--button-hover-transition-color)}.c15t-ui-button-primary-stroke-rMkBn{background-color:var(--button-background-color);color:var(--button-primary);box-shadow:var(--button-shadow-primary)}.c15t-dark .c15t-ui-button-primary-stroke-rMkBn{background-color:var(--button-background-color-dark);color:var(--button-primary-dark);box-shadow:var(--button-shadow-primary-dark)}.c15t-ui-button-primary-stroke-rMkBn:hover:not(:disabled){background-color:var(--button-primary-hover-tint);box-shadow:var(--button-shadow-primary-hover);transition:var(--button-hover-transition-full)}.c15t-dark .c15t-ui-button-primary-stroke-rMkBn:hover:not(:disabled){background-color:var(--button-primary-hover-tint);box-shadow:var(--button-shadow-primary-hover-dark);transition:var(--button-hover-transition-full)}.c15t-ui-button-primary-lighter-pa1_G{background-color:color-mix(in srgb, var(--button-primary) 10%, transparent);color:color-mix(in srgb, var(--button-primary) 85%, black)}.c15t-dark .c15t-ui-button-primary-lighter-pa1_G{background-color:color-mix(in srgb, var(--button-primary-dark) 10%, transparent);color:var(--button-primary-dark)}.c15t-ui-button-primary-lighter-pa1_G:hover:not(:disabled){background-color:color-mix(in srgb, var(--button-primary) 20%, transparent);transition:var(--button-hover-transition-color)}.c15t-dark .c15t-ui-button-primary-lighter-pa1_G:hover:not(:disabled){background-color:color-mix(in srgb, var(--button-primary-dark) 20%, transparent);transition:var(--button-hover-transition-color)}.c15t-ui-button-primary-ghost-gUXbr{color:var(--button-primary)}.c15t-dark .c15t-ui-button-primary-ghost-gUXbr{color:var(--button-primary-dark)}.c15t-ui-button-primary-ghost-gUXbr:hover:not(:disabled),.c15t-dark .c15t-ui-button-primary-ghost-gUXbr:hover:not(:disabled){background-color:var(--button-primary-hover-tint);transition:var(--button-hover-transition-color)}.c15t-ui-button-neutral-filled-iBUdt{background-color:var(--button-neutral);color:var(--button-background-color)}.c15t-ui-button-neutral-filled-iBUdt:focus-visible{box-shadow:var(--button-shadow-neutral-focus)}.c15t-dark .c15t-ui-button-neutral-filled-iBUdt{background-color:var(--button-neutral-dark);color:var(--button-background-color-dark)}.c15t-ui-button-neutral-filled-iBUdt:hover:not(:disabled){background-color:var(--button-neutral-hover);box-shadow:none;transition:var(--button-hover-transition-color)}.c15t-dark .c15t-ui-button-neutral-filled-iBUdt:hover:not(:disabled){background-color:var(--button-neutral-hover-dark);box-shadow:none;transition:var(--button-hover-transition-color)}.c15t-ui-button-neutral-stroke-FNAAx{background-color:var(--button-background-color);box-shadow:var(--button-shadow-neutral)}.c15t-dark .c15t-ui-button-neutral-stroke-FNAAx{background-color:var(--button-background-color-dark);box-shadow:var(--button-shadow-neutral-dark)}.c15t-ui-button-neutral-stroke-FNAAx:hover:not(:disabled){background-color:var(--button-neutral-hover-tint);box-shadow:none;color:var(--button-text-hover);transition:var(--button-hover-transition-full)}.c15t-dark .c15t-ui-button-neutral-stroke-FNAAx:hover:not(:disabled){background-color:var(--button-neutral-hover-tint);box-shadow:none;color:var(--button-text-hover-dark);transition:var(--button-hover-transition-full)}.c15t-ui-button-neutral-lighter-CHsDA{background-color:color-mix(in srgb, var(--button-neutral) 10%, transparent);color:var(--button-neutral)}.c15t-dark .c15t-ui-button-neutral-lighter-CHsDA{background-color:color-mix(in srgb, var(--button-neutral-dark) 10%, transparent);color:var(--button-neutral-dark)}.c15t-ui-button-neutral-lighter-CHsDA:hover:not(:disabled){background-color:color-mix(in srgb, var(--button-neutral) 20%, transparent);transition:var(--button-hover-transition-color)}.c15t-dark .c15t-ui-button-neutral-lighter-CHsDA:hover:not(:disabled){background-color:color-mix(in srgb, var(--button-neutral-dark) 20%, transparent);transition:var(--button-hover-transition-color)}.c15t-ui-button-neutral-ghost-a6Cdw{color:var(--button-neutral)}.c15t-dark .c15t-ui-button-neutral-ghost-a6Cdw{color:var(--button-neutral-dark)}.c15t-ui-button-neutral-ghost-a6Cdw:hover:not(:disabled),.c15t-dark .c15t-ui-button-neutral-ghost-a6Cdw:hover:not(:disabled){background-color:var(--button-neutral-hover-tint);box-shadow:none;transition:var(--button-hover-transition-color)}.c15t-ui-button-icon-JD5sB{justify-content:center;align-items:center;display:inline-flex}@media (prefers-reduced-motion:reduce){.c15t-ui-button-Lo5cc,.c15t-ui-button-primary-filled-u895k:hover:not(:disabled),.c15t-ui-button-primary-stroke-rMkBn:hover:not(:disabled),.c15t-ui-button-primary-lighter-pa1_G:hover:not(:disabled),.c15t-ui-button-primary-ghost-gUXbr:hover:not(:disabled),.c15t-ui-button-neutral-filled-iBUdt:hover:not(:disabled),.c15t-ui-button-neutral-stroke-FNAAx:hover:not(:disabled),.c15t-ui-button-neutral-lighter-CHsDA:hover:not(:disabled),.c15t-ui-button-neutral-ghost-a6Cdw:hover:not(:disabled){transition:none}}@media (hover:none){.c15t-ui-button-primary-filled-u895k:hover:not(:disabled){background-color:var(--button-primary)}.c15t-ui-button-primary-stroke-rMkBn:hover:not(:disabled){background-color:var(--button-background-color);box-shadow:var(--button-shadow-primary)}.c15t-ui-button-primary-lighter-pa1_G:hover:not(:disabled){background-color:color-mix(in srgb, var(--button-primary) 10%, transparent)}.c15t-ui-button-primary-ghost-gUXbr:hover:not(:disabled){background-color:#0000}.c15t-ui-button-neutral-filled-iBUdt:hover:not(:disabled){background-color:var(--button-neutral)}.c15t-ui-button-neutral-stroke-FNAAx:hover:not(:disabled){background-color:var(--button-background-color);box-shadow:var(--button-shadow-neutral)}.c15t-ui-button-neutral-lighter-CHsDA:hover:not(:disabled){background-color:color-mix(in srgb, var(--button-neutral) 10%, transparent)}.c15t-ui-button-neutral-ghost-a6Cdw:hover:not(:disabled){background-color:#0000}}
|
|
45
|
-
|
|
46
|
-
/* primitives/collapsible */
|
|
47
|
-
.c15t-ui-root-l7ccU{row-gap:var(--collapsible-gap);transition:row-gap var(--collapsible-duration) var(--collapsible-ease);width:100%;display:grid}.c15t-ui-root-l7ccU[data-state=closed]{row-gap:0}.c15t-ui-trigger-YLS2g{color:var(--c15t-text);cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:.5rem;padding:0;display:inline-flex}.c15t-ui-trigger-YLS2g:focus-visible{outline:2px solid var(--c15t-primary);outline-offset:2px}.c15t-ui-content-Yjdia{transition:grid-template-rows var(--collapsible-duration) var(--collapsible-ease);grid-template-rows:0fr;display:grid;overflow:hidden}.c15t-ui-content-Yjdia[data-state=open]{grid-template-rows:1fr}.c15t-ui-content-Yjdia[data-state=closed]{pointer-events:none}.c15t-ui-contentViewport-L7bt7{min-height:0;overflow:hidden}.c15t-ui-contentInner-zoLX2{color:var(--collapsible-content-color);opacity:1;transition:opacity calc(var(--collapsible-duration) * .35) ease-out, transform calc(var(--collapsible-duration) * .35) ease-out;will-change:opacity, transform;transform:translateY(0)}.c15t-ui-content-Yjdia[data-state=closed] .c15t-ui-contentInner-zoLX2{opacity:0;transform:translateY(-.125rem)}@media (prefers-reduced-motion:reduce){.c15t-ui-root-l7ccU,.c15t-ui-content-Yjdia,.c15t-ui-contentInner-zoLX2{transition:none}}
|
|
48
|
-
|
|
49
|
-
/* primitives/legal-links */
|
|
50
|
-
.c15t-ui-legalLinks-xVTMr{gap:var(--legal-links-gap);flex-wrap:wrap;align-items:center;display:flex}.c15t-ui-legalLink-YVZqO{color:var(--legal-links-color);-webkit-text-decoration:var(--legal-links-text-decoration);-webkit-text-decoration:var(--legal-links-text-decoration);text-decoration:var(--legal-links-text-decoration);font-size:var(--legal-links-font-size);transition:var(--legal-links-transition)}.c15t-dark .c15t-ui-legalLink-YVZqO{color:var(--legal-links-focus-color-dark)}.c15t-ui-legalLink-YVZqO:hover{-webkit-text-decoration:var(--legal-links-text-decoration-hover);-webkit-text-decoration:var(--legal-links-text-decoration-hover);text-decoration:var(--legal-links-text-decoration-hover)}.c15t-ui-legalLink-YVZqO:focus{outline:none;text-decoration:underline}@media (prefers-reduced-motion:reduce){.c15t-ui-legalLink-YVZqO{transition:none}}
|
|
51
|
-
|
|
52
|
-
/* primitives/preference-item */
|
|
53
|
-
.c15t-ui-root-uVKV9{align-items:start;column-gap:var(--preference-item-gap);grid-template-columns:minmax(0,1fr) auto;row-gap:0;width:100%;display:grid}.c15t-ui-trigger-KE13P{align-items:flex-start;gap:var(--preference-item-leading-gap);width:100%;min-width:0;font:inherit;text-align:left;color:var(--c15t-text);cursor:pointer;background:0 0;border:0;padding:0;display:flex}.c15t-ui-trigger-KE13P:focus-visible{outline:2px solid var(--preference-item-focus-ring);outline-offset:2px}.c15t-ui-leading-R7F08{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.c15t-ui-header-OUsAl{flex-direction:column;flex:1;min-width:0;display:flex}.c15t-ui-title-D6JTo{color:var(--c15t-text);font:inherit;min-width:0;margin:0}.c15t-ui-meta-G2S5Z{color:var(--c15t-text-muted);font:inherit;margin:0}.c15t-ui-auxiliary-jJSI7{flex-wrap:wrap;align-items:center;gap:.375rem;min-width:0;display:flex}.c15t-ui-control-Dg8Bo{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.c15t-ui-content-VkWDD{transition:grid-template-rows var(--preference-item-duration) var(--preference-item-ease);grid-column:1/-1;grid-template-rows:0fr;display:grid;overflow:hidden}.c15t-ui-content-VkWDD[data-state=open]{grid-template-rows:1fr}.c15t-ui-content-VkWDD[data-state=closed]{pointer-events:none}.c15t-ui-contentViewport-BOKhf{min-height:0;overflow:hidden}.c15t-ui-contentInner-m2ifM{color:var(--preference-item-content-color)}@media (prefers-reduced-motion:reduce){.c15t-ui-content-VkWDD{transition:none}}
|
|
54
|
-
|
|
55
|
-
/* primitives/switch */
|
|
56
|
-
.c15t-ui-root-Pd0rf{--switch-height:1.25rem;--switch-width:2rem;--switch-padding:.125rem;--switch-duration:var(--c15t-duration-normal);--switch-ease:var(--c15t-easing);--switch-thumb-size:.75rem;--switch-thumb-size-disabled:.625rem;--switch-thumb-translate:calc(var(--switch-width) - var(--switch-thumb-size) - 2 * var(--switch-padding));--switch-background-color:var(--c15t-switch-track);--switch-background-color-dark:var(--c15t-switch-track);--switch-background-color-hover:var(--c15t-surface-hover);--switch-background-color-hover-dark:var(--c15t-surface-hover);--switch-background-color-checked:var(--c15t-switch-track-active);--switch-background-color-checked-dark:var(--c15t-switch-track-active);--switch-background-color-disabled:var(--c15t-border);--switch-background-color-disabled-dark:var(--c15t-border);--switch-thumb-background-color:var(--c15t-switch-thumb);--switch-thumb-background-color-dark:var(--c15t-switch-thumb);--switch-thumb-background-color-disabled:var(--c15t-surface-hover);--switch-thumb-background-color-disabled-dark:var(--c15t-surface-hover);--switch-shadow-thumb:0 0 0 1px var(--c15t-border);--switch-shadow-thumb-dark:0 0 0 1px var(--c15t-border);--switch-focus-ring:var(--c15t-primary);--switch-focus-ring-dark:var(--c15t-primary);--switch-focus-shadow:0 0 0 2px var(--switch-focus-ring);--switch-focus-shadow-dark:0 0 0 2px var(--switch-focus-ring-dark);height:var(--switch-height);width:var(--switch-width);box-sizing:border-box;white-space:nowrap;touch-action:manipulation;background:0 0;border:0;border-radius:9999px;outline:none;flex-shrink:0;margin:0;padding:0;font-family:inherit;font-size:100%;line-height:1.15;display:block}.c15t-ui-track-kWz9_{box-sizing:border-box;width:100%;height:100%;padding:var(--switch-padding);background-color:var(--switch-background-color);transition:background-color var(--switch-duration) var(--switch-ease);border-radius:9999px;outline:none;align-items:center;display:flex;position:relative;overflow:hidden}.c15t-dark .c15t-ui-track-kWz9_{background-color:var(--switch-background-color-dark)}.c15t-ui-track-kWz9_:hover{background-color:var(--switch-background-color-hover)}.c15t-dark .c15t-ui-track-kWz9_:hover{background-color:var(--switch-background-color-hover-dark)}.c15t-ui-track-kWz9_:focus-visible{background-color:var(--switch-background-color-hover)}.c15t-dark .c15t-ui-track-kWz9_:focus-visible{background-color:var(--switch-background-color-hover-dark)}.c15t-ui-track-kWz9_:active{background-color:var(--switch-background-color)}.c15t-dark .c15t-ui-track-kWz9_:active{background-color:var(--switch-background-color-dark)}.c15t-ui-root-Pd0rf[data-state=checked] .c15t-ui-track-kWz9_{background-color:var(--switch-background-color-checked)}.c15t-dark .c15t-ui-root-Pd0rf[data-state=checked] .c15t-ui-track-kWz9_{background-color:var(--switch-background-color-checked-dark)}.c15t-ui-root-Pd0rf[data-state=checked]:hover .c15t-ui-track-kWz9_{background-color:var(--switch-background-color-checked)}.c15t-dark .c15t-ui-root-Pd0rf[data-state=checked]:hover .c15t-ui-track-kWz9_{background-color:var(--switch-background-color-checked-dark)}.c15t-ui-root-Pd0rf[data-disabled]{cursor:not-allowed}.c15t-ui-root-Pd0rf:focus,.c15t-dark .c15t-ui-root-Pd0rf:focus{outline:none}.c15t-ui-track-disabled-VxwND{background-color:var(--switch-background-color-disabled);opacity:.4;box-shadow:inset 0 0 0 1px #ebebeb}.c15t-dark .c15t-ui-track-disabled-VxwND{background-color:var(--switch-background-color-disabled-dark)}.c15t-ui-root-Pd0rf[data-state=checked] .c15t-ui-track-disabled-VxwND{background-color:var(--switch-background-color-checked);opacity:.4;box-shadow:none}.c15t-dark .c15t-ui-root-Pd0rf[data-state=checked] .c15t-ui-track-disabled-VxwND{background-color:var(--switch-background-color-checked-dark)}.c15t-ui-thumb-mP7_o{box-sizing:border-box;pointer-events:none;width:var(--switch-thumb-size);height:var(--switch-thumb-size);transition:transform var(--switch-duration) var(--switch-ease);display:block;position:relative;transform:translate(0)}.c15t-ui-thumb-mP7_o:before{content:"";box-sizing:border-box;background-color:var(--switch-thumb-background-color);inset-block:0;border-radius:9999px;width:100%;position:absolute;left:0;mask:radial-gradient(circle farthest-side,#0000 1.95px,#000 2.05px 100%) 50%/100% 100% no-repeat}.c15t-dark .c15t-ui-thumb-mP7_o:before{background-color:var(--switch-thumb-background-color-dark)}.c15t-ui-thumb-mP7_o:after{content:"";box-sizing:border-box;width:100%;box-shadow:var(--switch-shadow-thumb);inset-block:0;border-radius:9999px;position:absolute;left:0}.c15t-dark .c15t-ui-thumb-mP7_o:after{box-shadow:var(--switch-shadow-thumb-dark)}.c15t-ui-root-Pd0rf[data-state=checked] .c15t-ui-thumb-mP7_o{transform:translateX(var(--switch-thumb-translate))}.c15t-ui-root-Pd0rf[dir=rtl][data-state=checked] .c15t-ui-thumb-mP7_o{transform:translateX(calc(-1 * var(--switch-thumb-translate)))}.c15t-ui-track-kWz9_:active .c15t-ui-thumb-mP7_o{transform:scale(.833)}.c15t-ui-thumb-disabled-fwQIy{box-shadow:none}.c15t-ui-root-Pd0rf[data-state=checked] .c15t-ui-thumb-disabled-fwQIy{transform:translateX(var(--switch-thumb-translate))}.c15t-ui-root-small-n0CMO{--switch-height:1rem;--switch-width:1.75rem;--switch-padding:.125rem;--switch-thumb-size:.625rem;--switch-thumb-size-disabled:.5rem;--switch-thumb-translate:calc(var(--switch-width) - var(--switch-thumb-size) - 2 * var(--switch-padding))}.c15t-ui-track-small-Ie8K6{width:100%;height:100%}.c15t-ui-thumb-small-uBOCk{width:var(--switch-thumb-size);height:var(--switch-thumb-size)}.c15t-ui-root-Pd0rf:focus-visible{outline:none}.c15t-ui-root-Pd0rf:focus-visible .c15t-ui-track-kWz9_{outline:2px solid var(--switch-focus-ring);outline-offset:2px}.c15t-dark .c15t-ui-root-Pd0rf:focus-visible .c15t-ui-track-kWz9_{outline-color:var(--switch-focus-ring-dark)}@media (prefers-reduced-motion:reduce){.c15t-ui-track-kWz9_,.c15t-ui-thumb-mP7_o{transition:none}}@media (hover:none){.c15t-ui-track-kWz9_:hover{background-color:var(--switch-background-color)}.c15t-ui-root-Pd0rf[data-state=checked] .c15t-ui-track-kWz9_:hover{background-color:var(--switch-background-color-checked)}}
|
|
57
|
-
|
|
58
|
-
/* primitives/tabs */
|
|
59
|
-
.c15t-ui-root-S5pMJ{gap:1rem;width:100%;display:grid}.c15t-ui-list-BZaPj{background:var(--tabs-list-background);border:1px solid var(--tabs-list-border);border-radius:var(--c15t-radius-md);grid-auto-flow:column;align-items:center;gap:.25rem;width:fit-content;padding:.25rem;display:inline-grid}.c15t-ui-list-vertical-cP2o0{grid-auto-flow:row}.c15t-ui-trigger-U8k4E{border-radius:calc(var(--c15t-radius-md) - .25rem);color:var(--tabs-trigger-color);cursor:pointer;font:inherit;transition:background-color var(--c15t-duration-fast) ease, color var(--c15t-duration-fast) ease;background:0 0;border:0;padding:.625rem .875rem;font-weight:500}.c15t-ui-trigger-U8k4E[data-state=active]{background:var(--tabs-trigger-active-background);color:var(--tabs-trigger-active-color)}.c15t-ui-trigger-U8k4E:focus-visible{outline:2px solid var(--tabs-focus-ring);outline-offset:2px}.c15t-ui-content-Iyncb{color:var(--c15t-text)}
|
|
60
|
-
|
|
61
21
|
/* components/iab-panel */
|
|
62
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) cubic-bezier(.34, 1.56, .64, 1);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)}.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-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);outline:none;box-shadow:0 0 0 2px #3b82f633}.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{border-radius:var(--c15t-radius-md);z-index:100;isolation:isolate;background-color:#dbeafe;border:1px solid #3b82f64d;align-items:center;gap:.5rem;margin-bottom:.5rem;padding:.5rem .625rem;display:flex;position:sticky;top:0;box-shadow:0 2px 4px #0000000d}.c15t-dark .c15t-ui-selectedVendorBanner-S6KCv{background-color:#1e3a8a;border-color:#3b82f666}.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:2rem}.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{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)}}
|
|
63
23
|
|
package/dist/iab-context.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e}from"react/jsx-runtime";import{createIAB as r}from"@c15t/iab";import{useCallback as t,useContext as n,useEffect as o,useMemo as s,useRef as
|
|
2
|
+
import{jsx as e}from"react/jsx-runtime";import{createIAB as r}from"@c15t/iab";import{useCallback as t,useContext as n,useEffect as o,useMemo as s,useRef as l,useState as c,useSyncExternalStore as i}from"react";import{KernelContext as u}from"./context.js";import{IABContext as a}from"./context/iab-context-value.js";import{useCommittedRef as d}from"./hooks/use-committed-ref.js";let m=function(e){let[r,t]=c(()=>({kernel:e}));if(r.kernel===e)return r;let n={kernel:e};return t(n),n},p=({children:i,...p})=>{let f=n(u);if(!f)throw Error("IABProvider: no kernel in context. Wrap with <ConsentProvider options={...}> first.");let[h,v]=c("purposes"),g=m(f),b=d(g),[P,I]=c(null),V=P?.selection===g?P.handle:null,A=l(p),x=l(null),k=l(new WeakSet),C=l([]),w=l(!1),S=l(!1);o(()=>{A.current=p},[p]),o(()=>(w.current=!0,S.current=!1,()=>{w.current=!1,queueMicrotask(()=>{if(!w.current)for(let e of(S.current=!0,C.current.splice(0)))e.cancel()})}),[]),o(()=>{let e=k.current;if(e.delete(g),g.kernel.getSnapshot().externalPermissions)return;let t=r({...A.current,kernel:g.kernel});x.current={handle:t,selection:g},I({handle:t,selection:g});let n=C.current;for(let e of(C.current=[],n))e.selection===g?e.run(t):e.cancel();return()=>{x.current=null,e.add(g),t.dispose()}},[g]);let B=t(e=>{let r=b.current!==g,{current:t}=x;if(!r&&t?.selection===g)return Promise.resolve(e(t.handle));let n=new Promise((t,n)=>{if(g.kernel.getSnapshot().externalPermissions)return void n(Error("Consent is managed by an external CMP. Open its preferences instead."));let o=()=>n(new DOMException("IAB provider unmounted or switched to another consent kernel.","AbortError"));r||S.current||k.current.has(g)?o():C.current.push({cancel:o,run:async r=>{try{await e(r),t()}catch(e){n(e)}},selection:g})});return n.catch(()=>{}),n},[b,g]),j=s(()=>({customVendors:p.customVendors,filtered:!!p.vendors?.length,handle:V,run:B,setTab:v,tab:h}),[V,B,h,p.vendors?.length,p.customVendors]);return e(a.Provider,{value:j,children:i})},f=function(){let e=n(u),r=n(a);if(!e)throw Error("useIAB must be used within <ConsentProvider options={...}> from @c15t/react");let t=i(r=>e.subscribe(r),()=>e.getSnapshot().iab,()=>e.getServerSnapshot().iab);return s(()=>{if(!t)return null;let e=r?.handle,n=r?.run??(r=>e?Promise.resolve(r(e)):Promise.resolve()),o=e=>(...r)=>{n(t=>e(t)(...r))};return{...t,acceptAll:o(e=>e.acceptAll),config:{cmpId:t.cmpId,enabled:t.enabled},customVendors:r?.customVendors??t.customVendors,gvlReference:t.gvlReference&&r?.filtered?{...t.gvlReference,summary:void 0}:t.gvlReference,isLoadingGVL:t.enabled&&!t.gvl,nonIABVendors:r?.customVendors??t.customVendors,preferenceCenterTab:r?.tab??"purposes",rejectAll:o(e=>e.rejectAll),save:()=>n(e=>e.save()),setPreferenceCenterTab:r?.setTab??(()=>{}),setPurposeConsent:o(e=>e.setPurposeConsent),setPurposeLegitimateInterest:o(e=>e.setPurposeLegitimateInterest),setSpecialFeatureOptIn:o(e=>e.setSpecialFeatureOptIn),setVendorConsent:o(e=>e.setVendorConsent),setVendorLegitimateInterest:o(e=>e.setVendorLegitimateInterest)}},[t,r])};export{p as IABProvider,f as useIAB};
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{createConsentKernel,custom,hosted}from"@c15t/core";export{offline}from"./transports/offline.js";export{ConsentDialog,ConsentWidget}from"./aggregate-components.js";export{ConsentBanner,useConsentBannerSurface}from"./components/prompt/index.js";export{ConsentDialogLink}from"./components/panel-link/index.js";export{ConsentDialogTrigger,ConsentDialogTriggerToolbar}from"./components/panel-trigger/index.js";export{Frame}from"./components/
|
|
1
|
+
export{createConsentKernel,custom,hosted}from"@c15t/core";export{offline}from"./transports/offline.js";export{ConsentDialog,ConsentWidget}from"./aggregate-components.js";export{ConsentBanner,useConsentBannerSurface}from"./components/prompt/index.js";export{ConsentDialogLink}from"./components/panel-link/index.js";export{ConsentDialogTrigger,ConsentDialogTriggerToolbar}from"./components/panel-trigger/index.js";export{ConsentGate,Frame}from"./components/consent-gate/index.js";export{ConsentDraftProvider,useConsentDraft,useVendorDraft}from"./draft.js";export{useTranslations}from"./component-hooks/use-translations.js";export{useActiveUI,useBranding,useConsent,useConsents,useDeclaredVendors,useDismissNotice,useEffectivePermissions,useExplicitChoice,useHasConsentPolicy,useHasConsentPreferences,useHasConsentUI,useIABEnabled,useIABSnapshot,useIdentify,useInit,useLocation,useModel,useNoticeDismissal,useOptOutDirectives,useOverrides,usePolicyCategories,usePolicyResolution,usePolicyRule,usePolicyScopeMode,usePreferencesPresentation,usePrivacySignals,usePromptPresentation,usePromptRequirement,usePurposeConsent,useRegisterConsentCategories,useRestrictions,useSaveConsents,useSetActiveUI,useSetLanguage,useSetOverrides,useSnapshot,useSpecialFeatureOptIn,useSubscribeToConsentChanges,useTCString,useUser,useVendorAllowed,useVendorChoice,useVendorConsent}from"./hooks.js";export{useIframeBlocker,useNetworkBlocker,usePersistence,useScriptLoader}from"./module-hooks.js";export{ConsentProvider}from"./provider.js";export{ConsentTheme}from"./consent-theme.js";export{defineTheme}from"./types/theme/index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{evaluateConsent as e}from"@c15t/core";import{useContext as t,useMemo as r,useSyncExternalStore as o}from"react";import{KernelContext as n}from"./context.js";import{defaultTranslationConfig as s}from"./utils/default-translation-config.js";let a=function(){let e=t(n);if(!e)throw Error("c15t: no kernel in context. Wrap your app with <ConsentProvider options={...}> from @c15t/react.");return e},l=function(e){let t=a();return o(e=>t.subscribe(e),()=>e(t.getSnapshot()),()=>e(t.getServerSnapshot()))},u=function(e){let t=a();return o(e=>t.subscribe(e),()=>e(t.getSnapshot(),Date.now()),()=>{let r=t.getServerSnapshot();return e(r,r.evaluatedAt)})},c=function(t){return u((r,o)=>e({category:t},r,o))},i=function(){return l(e=>e.translations?.language??s.defaultLanguage)},p=function(){let e=l(e=>e.evaluationPolicy.choiceScope??e.policyRule.scope);return r(()=>["necessary",...e],[e])};export{c as useCategoryAllowed,p as useDisplayedCategories,u as useGateSelector,a as useKernel,l as useKernelSelector,i as useTranslationLanguage};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{
|
|
2
|
+
import{allConsentNames as e,getEffectiveGateState as t,has as r,isVendorDenied as a}from"@c15t/core";import{useEffect as o,useRef as c,useState as n}from"react";import{useRequiredKernel as i}from"./shared.js";let u=()=>import("@c15t/core/modules/iframe-blocker"),l=function(e={}){let t=i(),r=c(null),[a,l]=n(()=>({dispose(){r.current?.dispose(),r.current=null},processAllIframes(){r.current?.processAllIframes()}}));return o(()=>{let a=!1;return(async()=>{let{createIframeBlocker:o}=await u();a||(r.current=o({disableAutomaticBlocking:e.disableAutomaticBlocking,kernel:t}))})(),()=>{a=!0,r.current?.dispose(),r.current=null}},[t,e.disableAutomaticBlocking]),a},d="iframe[data-category], iframe[data-vendor]",s=function(e){try{return 1===e.nodeType&&"IFRAME"===e.tagName.toUpperCase()}catch{return!1}},f=function(o,c){let n=c.getSnapshot(),i=o.getAttribute("data-category");if(i){if(!e.includes(i))return!1;let{effectivePermissions:a}=t(n);if(!r(i,a))return!1}let u=o.getAttribute("data-vendor");return!u||"iab"===n.model||!(n.vendorChoice?.denied.includes(u)&&(!n.vendors?.declared.some(e=>e.id===u)||a(n,u)))},m=function(e,t){let r=e.getAttribute("src");!(r&&e.matches(d))||f(e,t)||(e.hasAttribute("data-src")||e.setAttribute("data-src",r),e.removeAttribute("src"),e.setAttribute("data-c15t-paused",""))},b=function(e){let t=new Set;for(let r of e)for(let e of("attributes"===r.type&&s(r.target)&&t.add(r.target),Array.from(r.addedNodes))){if(s(e)){t.add(e);continue}try{if(1===e.nodeType)for(let r of Array.from(e.querySelectorAll("iframe")))t.add(r)}catch{}}return[...t].filter(e=>e.matches(d))},p=function(e,t){if("u"<typeof document||!document.body)return t(),()=>{};document.querySelector(d)&&t();let r=new MutationObserver(r=>{let a=b(r);if(0!==a.length){for(let t of a)m(t,e);t()}});return r.observe(document.body,{attributeFilter:["data-category","data-vendor","src"],attributes:!0,childList:!0,subtree:!0}),()=>r.disconnect()},y=function(e={}){let t=i(),{disableAutomaticBlocking:r}=e;o(()=>{let e=!1,a=null,o=!1,c=()=>{},n=()=>{o||(o=!0,(async()=>{let n;try{n=await u()}catch{o=!1;return}e||(c(),a=n.createIframeBlocker({disableAutomaticBlocking:r,kernel:t}))})())};return r?n():c=p(t,n),()=>{e=!0,c(),a?.dispose(),a=null}},[t,r])};export{l as useIframeBlocker,y as useIframeBlockerOnDemand,p as watchGatedIframes};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{useEffect as e,useRef as r,useState as t}from"react";import{
|
|
2
|
+
import{useEffect as e,useRef as r,useState as t}from"react";import{useEarlyNetworkHold as l}from"./network-hold.js";import{useRequiredKernel as u}from"./shared.js";let n=function(n){let o=u(),s=l(n.rules,n.enabled),c=r(null),d=r(n.rules),a=r(n.enabled),[k,b]=t(()=>({dispose(){c.current?.dispose(),c.current=null},setEnabled(e){a.current=e,c.current?.setEnabled(e)},updateRules(e){d.current=e,c.current?.updateRules(e)}}));e(()=>{d.current=n.rules,a.current=n.enabled},[n.enabled,n.rules]);let i=r(!0);return e(()=>{if(i.current){i.current=!1;return}k.updateRules(n.rules)},[k,n.rules]),e(()=>{void 0!==n.enabled&&k.setEnabled(n.enabled)},[k,n.enabled]),e(()=>{let e=!1,r=s.claim(d.current,a.current);return(async()=>{let{createNetworkBlocker:t}=await import("@c15t/core/modules/network-blocker");e||(c.current=t({enabled:a.current,hold:r,kernel:o,logBlockedRequests:n.logBlockedRequests,onRequestBlocked:n.onRequestBlocked,rules:d.current}))})(),()=>{e=!0,c.current?.dispose(),c.current=null,s.unmount()}},[s,o,n.logBlockedRequests,n.onRequestBlocked]),k};export{n as useNetworkBlocker};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{NOT_HELD as e,holdNetworkRequests as t}from"@c15t/core/modules/network-hold";import{useState as o}from"react";let r=1e4,l=new Set,u=function(o,u){let i,n,c=0,d={claim(o,r){for(let e of(l.delete(d),clearTimeout(n),c+=1,!1===r||i?.held||(i=t(o)),l))e.key===d.key&&e.expire();return i??e},expire(){l.delete(d),clearTimeout(n),i?.block()},key:"",unmount(){let e=c,t=i;queueMicrotask(()=>{c===e&&t?.block()})}};return"u">typeof window&&!1!==u&&(i=t(o),d.key=JSON.stringify(o),l.add(d),n=setTimeout(()=>d.expire(),r)),d},i=function(e,t){let[r]=o(()=>u(e,t));return r};export{r as UNCOMMITTED_HOLD_MS,i as useEarlyNetworkHold};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{createPersistence as e}from"@c15t/core/modules/persistence";import{useEffect as r,useRef as
|
|
2
|
+
import{createPersistence as e}from"@c15t/core/modules/persistence";import{useEffect as r,useRef as n,useState as t}from"react";import{useRequiredKernel as s}from"./shared.js";let o=function(o={}){let c=s(),i=n(null),[u,l]=t(()=>({clear:()=>i.current?.clear(),dispose:()=>{i.current?.dispose(),i.current=null},hydrate:()=>i.current?.hydrate()??!1,reconcile:()=>i.current?.reconcile()??!1}));return r(()=>{let r=e({kernel:c,now:o.now,skipHydration:o.skipHydration,storageConfig:o.storageConfig,sync:o.sync});return i.current=r,()=>{r.dispose(),i.current=null}},[c,o.now,o.skipHydration,o.storageConfig,o.sync]),u};export{o as usePersistence};
|
package/dist/panel.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export
|
|
2
|
+
export{ConsentDialog}from"./aggregate-components.js";
|
package/dist/preferences.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"
|
|
2
|
-
export*from"./components/preferences/index.js";
|
|
1
|
+
export{ConsentWidget}from"./aggregate-components.js";
|
package/dist/provider.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{Fragment as e,jsx as r,jsxs as n}from"react/jsx-runtime";import{createConsentKernel as t,kernelConfigToInitResponse as i}from"@c15t/core";import{createWindowDebug as o,resolveWindowDebugMode as l}from"@c15t/core/modules/window-debug";import{resolvePolicyRules as c}from"@c15t/schema/types";import{deepMergeTranslations as s}from"@c15t/translations";import{defaultTheme as u,generateThemeCSS as a}from"@c15t/ui/theme";import{Suspense as d,lazy as f,useContext as m,useEffect as p,useMemo as g,useRef as v,useState as h}from"react";import{KernelContext as y,ProviderServicesContext as k}from"./context.js";import{useColorScheme as b}from"./hooks/use-color-scheme.js";import{usePersistence as R}from"./module-hooks/persistence.js";import{V3ThemeProvider as C}from"./theme-provider.js";import{defaultTranslationConfig as S}from"./utils/default-translation-config.js";let P=f(async()=>({default:(await import("./external-iab-context.js")).ExternalIABProvider})),w=c({countryCode:null,regionCode:null,rules:[{id:"disabled",match:{fallback:!0},model:"opt-out",prompt:"none"}]}),O={language:"en",translations:S.translations.en},x=function(e){if(e)return"externalId"in e?e:{externalId:e.id,identityProvider:e.identityProvider}},j=function(e){if(!e?.messages)return;let r=e.locale??S.defaultLanguage??"en",n=S.translations.en,t=e.messages[r]??e.messages.en??n,i=S.translations[r]??n;return{language:r,translations:s(i,t)}},K=function(e){return e.enabled??!0},E=function(e,r){let n=!1;return{...e,async init(t){if(n)return e.init?.(t)??{};n=!0;let i=await r(t);return i.response?i.response:e.init?.(i.context??t)??{}}}},L=function(e){return"function"==typeof e?.then},N=function(e){let{prefetch:r}=e;return!r||L(r)?{}:r},D=function(e){return void 0!==e&&Object.keys(e).length>0},_=function(e){"production"!==globalThis.process?.env?.NODE_ENV&&console.warn("c15t ConsentProvider: prefetch rejected; using transport init.",e)},q=function(e,r,n,t){let i={...r.initialOverrides??{},...n??{}};D(i)&&e.set.overrides(i),r.initialRecords&&e.getRecordsGeneration()===t&&e.hydrate(r.initialRecords)},A=function(e,r,n){var t,o;let{prefetch:l}=r;return L(l)?E(e,(t=Promise.resolve(l),o=r.overrides,async e=>{let r,l=n()?.getRecordsGeneration();try{r=await t??{}}catch(e){return _(e),{}}let c=i(r);if(c){let e={...c.resolvedOverrides??{},...o??{}};return D(e)&&(c.resolvedOverrides=e),{response:c}}let s=n();return s&&q(s,r,o,l),{context:{overrides:{...e.overrides,...r.initialOverrides??{},...o??{}},user:e.user}}})):e},B=function(e){if("function"!=typeof e.mode)throw Error("c15t ConsentProvider: set mode to hosted(), offline(), or custom().");return e.mode},I=function(e){let r=K(e),n=N(e),i=j(e.i18n)??O,o={consentCategories:e.consentCategories,prefetch:n,translations:i},l=B(e)(o),c={current:null},s=A(l,e,()=>c.current),u=t({...n,initialRecords:r?n.initialRecords:void 0,initialPrivacySignals:r?n.initialPrivacySignals:void 0,now:n.now??n.initialRecords?.now??(n.initialRecords?void 0:0),transport:s,initialPolicyResolution:r?n.initialPolicyResolution:w,initialOverrides:{...n.initialOverrides??{},...e.overrides??{}},initialUser:x(e.user)??n.initialUser,initialTranslations:n.initialTranslations??i,initialPolicyPending:n.initialPolicyPending??(r&&!n.initialPolicyResolution)});return c.current=u,u},T=function(e){if(e instanceof Error)return e.message;if("string"==typeof e)return e;try{return JSON.stringify(e)}catch{return String(e)}},H=function(e,r){let n=v(r);p(()=>{n.current=r},[r]),p(()=>{let r=[e.events.on("choice:recorded",({snapshot:e,confirmed:r,actionAt:t})=>{n.current?.onChoiceRecorded?.({actionAt:t,confirmed:r,snapshot:e})}),e.events.on("permissions:changed",({snapshot:e,previous:r})=>{n.current?.onPermissionsChanged?.({previous:r,snapshot:e})}),e.events.on("command:error",e=>{n.current?.onError?.({error:T(e.error)})})];return()=>{for(let e of r)e()}},[e])},J=function(e,r,n,t){let i=v(n),o=v(null),l=v(null),c=v(null);p(()=>{if(!t)return;let n=x(r.user),i=JSON.stringify(n??null);if(null===o.current){o.current=i;return}o.current!==i&&(o.current=i,n&&(async()=>{try{await e.commands.identify(n)}catch{}})())},[e,r.user,t]),p(()=>{if(!t)return;let i=JSON.stringify(r.overrides??{});if(null===l.current){l.current=i;return}l.current!==i&&(l.current=i,e.set.overrides(r.overrides??{}),n&&e.commands.init())},[n,e,r.overrides,t]),p(()=>{!t||i.current===n||(i.current=n,n||e.set.activeUI("none"))},[n,e,t]),p(()=>{if("production"===globalThis.process?.env?.NODE_ENV)return;let e=JSON.stringify({i18n:r.i18n,mode:r.mode?.kind});if(null===c.current){c.current=e;return}c.current!==e&&(c.current=e,console.warn("c15t ConsentProvider: remount to change mode or i18n."))},[r])},F=({kernel:e,callbacks:r})=>(H(e,r),null),U=({enabled:e,kernel:r,prepared:n})=>{let t=v(!1),i=v(!1);return p(()=>{if(!e){t.current=!1;return}if(!t.current)if(t.current=!0,n){r.hydrate({now:i.current?Date.now():r.getServerSnapshot().evaluatedAt}),i.current=!0;let{gpc:e}=r.getSnapshot().privacySignals;e.detected&&e.active&&r.set.privacySignals({gpc:!0})}else r.commands.init()},[e,r,n]),null},G=[],M=({clearOnRevocation:e,storageConfig:r,nonce:n,options:t,scripts:i=G})=>{let o=m(y),l=v(null),c=v(null),s=v(null),u=v({config:e,storageConfig:r}),[a,d]=h(i.length>0),f=v(i),g=v(t),k=v(n);i.length>0&&!a&&d(!0),p(()=>{u.current={config:e,storageConfig:r},f.current=i,g.current=t,k.current=n},[e,r,n,t,i]),p(()=>{if(!o)return;let e=!1;return(async()=>{if(a){let{createScriptLoader:r}=await import("@c15t/core/modules/script-loader");if(e)return;l.current=r({kernel:o,nonce:k.current,onDebug:g.current?.onDebug,scripts:f.current})}let{config:r}=u.current;if(r){let{createClearOnRevocation:n}=await import("@c15t/core/modules/clear-on-revocation");if(e)return;s.current={config:r,create:n},c.current=n({config:r,kernel:o,storageConfig:u.current.storageConfig})}})(),()=>{e=!0,c.current?.dispose(),c.current=null,s.current=null,l.current?.dispose(),l.current=null}},[o,a]);let b=r?.storageKey;return p(()=>{let e=s.current;o&&e&&(c.current?.dispose(),c.current=e.create({config:e.config,kernel:o,storageConfig:{storageKey:b}}))},[o,b]),p(()=>{l.current?.updateScripts(i)},[i]),null},V=({options:e})=>{let r=m(y),n=v(null),t=v(e);return p(()=>{t.current=e},[e]),p(()=>{if(!r)return;let e=!1;return(async()=>{let{createNetworkBlocker:i}=await import("@c15t/core/modules/network-blocker");if(e)return;let o=t.current;n.current=i({enabled:o.enabled,kernel:r,logBlockedRequests:o.logBlockedRequests,onRequestBlocked:o.onRequestBlocked,rules:o.rules})})(),()=>{e=!0,n.current?.dispose(),n.current=null}},[r]),p(()=>{n.current?.updateRules(e.rules)},[e.rules]),p(()=>{void 0!==e.enabled&&n.current?.setEnabled(e.enabled)},[e.enabled]),null},z=({options:e,clearRef:r})=>{let n=R(e);return p(()=>(r.current=n.clear,()=>{r.current=null}),[n,r]),null},Q=({pkg:e,mode:r})=>(p(()=>{let n=o({mode:r,pkg:e});return()=>n.dispose()},[r,e]),null),W=({kernel:e})=>(p(()=>{let r=window,n=r.c15tKernel;return r.c15tKernel=e,()=>{if(r.c15tKernel===e){if(n){r.c15tKernel=n;return}delete r.c15tKernel}}},[e]),null),X=function(e){if(!1===e.persistence)return!1;let{storageConfig:r}=e,n=!!N(e).initialRecords;return!0===e.persistence||void 0===e.persistence?{skipHydration:n,storageConfig:r}:{...e.persistence,skipHydration:e.persistence.skipHydration??n,storageConfig:e.persistence.storageConfig??r}},Y=t=>{let{children:i}=t,o=t.options??{},c=K(o),[s,f]=h(()=>({clearOnRevocation:o.clearOnRevocation,disabledKernel:t.runtime?void 0:I({...o,enabled:!1}),external:t.runtime,kernel:t.runtime?.kernel??I({...o,enabled:!0})})),{clearOnRevocation:m,external:R}=s,S=c?s.kernel:s.disabledKernel??s.kernel,w=void 0===R,O=v(null),x=g(()=>({clearRecords:()=>{R?R.clearRecords():O.current?O.current():(S.hydrate({choice:null,noticeDismissal:null,optOutDirectives:[],subject:null}),S.events.emit({type:"records:cleared"}))},getConsentCategories:()=>{let{scope:e}=S.getSnapshot().policyRule,r=o.consentCategories;return["necessary",...e.filter(e=>!r?.length||r.includes(e))]},getPresentation:()=>o.presentation}),[S,o.consentCategories,o.presentation,R]),j=X(o),{scripts:E,networkBlocker:L}=o,D=o.__debugPkg??"@c15t/react",_=w?l(o.mode):"hosted";J(s.kernel,o,c,w);let q=v(0);p(()=>{if(!w)return;q.current+=1;let e=q.current;return()=>{queueMicrotask(()=>{q.current===e&&(s.kernel.dispose(),s.disabledKernel?.dispose())})}},[s,w]);let A=o.theme,B=g(()=>a(A??u,o.colorScheme).replace(/</gu,"\\3c "),[A,o.colorScheme]),T=g(()=>({colorScheme:o.colorScheme,disableAnimation:o.disableAnimation,noStyle:o.noStyle,scrollLock:o.scrollLock,theme:A,trapFocus:o.trapFocus}),[A,o.noStyle,o.disableAnimation,o.scrollLock,o.trapFocus,o.colorScheme]),H=g(()=>({components:o.components,legalLinks:o.legalLinks,presentation:o.presentation}),[o.components,o.legalLinks,o.presentation]);b(o.colorScheme);let G=n(e,{children:[w?n(e,{children:[r(F,{kernel:S,callbacks:o.callbacks}),r(Q,{pkg:D,mode:_}),r(W,{kernel:S}),c&&j?r(z,{options:j,clearRef:O}):null,r(U,{enabled:c,prepared:!!N(o).initialPolicyResolution,kernel:S}),E&&E.length>0||c&&m?r(M,{clearOnRevocation:c?m:void 0,storageConfig:j?j.storageConfig:o.storageConfig,nonce:o.nonce,options:o.scriptLoader,scripts:E}):null,c&&L?r(V,{options:L}):null]}):null,R?r(d,{fallback:i,children:r(P,{runtime:R,children:i})}):i]});return r(y.Provider,{value:S,children:r(k.Provider,{value:x,children:n(C,{themeConfig:T,uiConfig:H,children:[r("style",{id:"c15t-theme",nonce:o.nonce,dangerouslySetInnerHTML:{__html:B}}),G]})})})};export{Y as ConsentProvider};
|
|
2
|
+
import{Fragment as e,jsx as r,jsxs as n}from"react/jsx-runtime";import{createConsentKernel as t,declareOwnedVendors as o,disabledPolicyResolution as i,extractConsentNamesFromCondition as l,forgetOwnedVendors as s,kernelConfigToInitResponse as c,resolveVendors as a,watchRevocationReload as u}from"@c15t/core";import{createWindowDebug as d,resolveWindowDebugMode as f}from"@c15t/core/modules/window-debug";import{connectConsentSource as g}from"@c15t/core/runtime/controls";import{deepMergeTranslations as p}from"@c15t/translations";import{useContext as m,useEffect as v,useMemo as h,useRef as y,useState as k}from"react";import{KernelContext as S,ProviderServicesContext as C}from"./context.js";import{ExternalIABProvider as b}from"./external-iab-context.js";import{useColorScheme as R}from"./hooks/use-color-scheme.js";import{useIframeBlockerOnDemand as w}from"./module-hooks/iframe-blocker.js";import{useEarlyNetworkHold as O}from"./module-hooks/network-hold.js";import{usePersistence as P}from"./module-hooks/persistence.js";import{V3ThemeProvider as x}from"./theme-provider.js";import{defaultTranslationConfig as E}from"./utils/default-translation-config.js";let B={language:"en",translations:E.translations.en},N=function(e){if(e)return"externalId"in e?e:{externalId:e.id,identityProvider:e.identityProvider}},j=function(e){if(!e?.messages)return;let r=e.locale??E.defaultLanguage??"en",n=E.translations.en,t=e.messages[r]??e.messages.en??n,o=E.translations[r]??n;return{language:r,translations:p(o,t)}},D=function(e){return e.enabled??!0},L=function(e,r){let n=!1;return{...e,async init(t){if(n)return e.init?.(t)??{};n=!0;let o=await r(t);return o.response?o.response:e.init?.(o.context??t)??{}}}},M=function(e){return"function"==typeof e?.then},T=function(e){let{prefetch:r}=e;return!r||M(r)?{}:r},V=function(e){return void 0!==e&&Object.keys(e).length>0},_=function(e){"production"!==globalThis.process?.env?.NODE_ENV&&console.warn("c15t ConsentProvider: prefetch rejected; using transport init.",e)},q=function(e,r,n,t){let o={...r.initialOverrides??{},...n??{}};V(o)&&e.set.overrides(o),r.initialRecords&&e.getRecordsGeneration()===t&&e.hydrate(r.initialRecords)},J=function(e,r,n){var t,o;let{prefetch:i}=r;return M(i)?L(e,(t=Promise.resolve(i),o=r.overrides,async e=>{let r,i=n()?.getRecordsGeneration();try{r=await t??{}}catch(e){return _(e),{}}let l=c(r);if(l){let e={...l.resolvedOverrides??{},...o??{}};return V(e)&&(l.resolvedOverrides=e),{response:l}}let s=n();return s&&q(s,r,o,i),{context:{overrides:{...e.overrides,...r.initialOverrides??{},...o??{}},user:e.user}}})):e},K=function(e){if("function"!=typeof e.mode)throw Error("c15t ConsentProvider: set mode to hosted(), offline(), or custom().");return e.mode},A=function(e){"production"!==globalThis.process?.env?.NODE_ENV&&console.warn(e)},I=function(e,r,n){let t=a({config:e.vendors,existing:n.initialVendors?.declared,onWarn:A,owners:r}),o=n.initialVendors?.listVersion??null;return t.length>0||null!==o?{declared:t,listVersion:o}:void 0},F=function(e){let r=D(e),n=T(e),o=j(e.i18n)??B,s={consentCategories:e.consentCategories,prefetch:n,translations:o},c=K(e)(s),a={current:null},u=J(c,e,()=>a.current),d=[...e.scripts??[],...e.networkBlocker?e.networkBlocker.rules??[]:[]],f=I(e,d,n),g=t({...n,consentCategories:e.consentCategories,inferredConsentCategories:[...d.flatMap(e=>l(e.category)),...(f?.declared??[]).flatMap(e=>l(e.category))],initialVendors:f,initialExternalPermissions:r&&e.consentSource?{}:void 0,initialRecords:r&&!e.consentSource?n.initialRecords:void 0,initialPrivacySignals:r?n.initialPrivacySignals:void 0,now:n.now??n.initialRecords?.now??(n.initialRecords?void 0:0),transport:u,initialPolicyResolution:r?n.initialPolicyResolution:i(),initialOverrides:{...n.initialOverrides??{},...e.overrides??{}},initialUser:N(e.user)??n.initialUser,initialTranslations:n.initialTranslations??o,initialPolicyPending:!e.consentSource&&(n.initialPolicyPending??(r&&!n.initialPolicyResolution))});return a.current=g,g},H=function(e){if(e instanceof Error)return e.message;if("string"==typeof e)return e;try{return JSON.stringify(e)}catch{return String(e)}},U=function(e,r,n){let t=y(r),o=y(n);v(()=>{t.current=r,o.current=n},[r,n]),v(()=>u({getOnBeforeReload:()=>t.current?.onBeforeConsentRevocationReload,isEnabled:()=>!1!==o.current,kernel:e}),[e]),v(()=>{let r=[e.events.on("init:applied",({snapshot:r})=>{let n=r.vendors?.declared??[];n.length>0&&e.set.registerConsentCategories(n.flatMap(e=>l(e.category)))}),e.events.on("choice:recorded",({snapshot:e,confirmed:r,actionAt:n})=>{t.current?.onChoiceRecorded?.({actionAt:n,confirmed:r,snapshot:e})}),e.events.on("permissions:changed",({snapshot:e,previous:r})=>{t.current?.onPermissionsChanged?.({previous:r,snapshot:e})}),e.events.on("command:error",e=>{t.current?.onError?.({error:H(e.error)})})];return()=>{for(let e of r)e()}},[e])},G=function(e,r,n,t){let i=y(n),c=y(null),u=y(null),d=y(null);v(()=>{if(!t)return;let n=N(r.user),o=JSON.stringify(n??null);if(null===c.current){c.current=o;return}c.current!==o&&(c.current=o,n&&(async()=>{try{await e.commands.identify(n)}catch{}})())},[e,r.user,t]),v(()=>{if(!t)return;let o=JSON.stringify(r.overrides??{});if(null===u.current){u.current=o;return}u.current!==o&&(u.current=o,e.set.overrides(r.overrides??{}),n&&e.commands.init())},[n,e,r.overrides,t]),v(()=>{!t||i.current===n||(i.current=n,n||e.set.activeUI("none"))},[n,e,t]);let f=y(null),g=y(Symbol("consent-provider"));v(()=>{if(!t)return;let n=[...r.scripts??[],...r.networkBlocker?r.networkBlocker.rules??[]:[]],i=JSON.stringify([r.vendors??[],n.map(e=>[e.vendor??null,e.category])]);if(null===f.current){f.current=i,o(e,n,g.current);return}if(f.current===i)return;f.current=i;let s=e.getSnapshot().vendors?.declared??[],c=a({config:r.vendors,existing:s.flatMap(e=>{let r="manifest"===e.source?e:e.shadowed;if(r?.source!=="manifest")return[];let{ownerCategory:n,...t}=r;return[t]}),onWarn:A});e.set.vendors({declared:c},{replaceSource:"config"}),o(e,n,g.current);let u=[...c.flatMap(e=>l(e.category)),...n.flatMap(e=>l(e.category))];u.length>0&&e.set.registerConsentCategories(u)},[e,r.networkBlocker,r.scripts,r.vendors,t]),v(()=>()=>{s(e,g.current),f.current=null},[e]),v(()=>{if("production"===globalThis.process?.env?.NODE_ENV)return;let e=JSON.stringify({i18n:r.i18n,mode:r.mode?.kind});if(null===d.current){d.current=e;return}d.current!==e&&(d.current=e,console.warn("c15t ConsentProvider: remount to change mode or i18n."))},[r])},W=({kernel:e,callbacks:r,reloadOnConsentRevoked:n})=>(U(e,r,n),null),z=({enabled:e,kernel:r,prepared:n})=>{let t=y(!1),o=y(!1);return v(()=>{if(!e){t.current=!1;return}if(!t.current)if(t.current=!0,n){r.hydrate({now:o.current?Date.now():r.getServerSnapshot().evaluatedAt}),o.current=!0;let{gpc:e}=r.getSnapshot().privacySignals;e.detected&&e.active&&r.set.privacySignals({gpc:!0})}else r.commands.init()},[e,r,n]),null},Q=[],X=({clearOnRevocation:e,storageConfig:r,nonce:n,options:t,scripts:o=Q})=>{let i=m(S),l=y(null),s=y(null),c=y(null),a=y({config:e,storageConfig:r}),[u,d]=k(o.length>0),f=y(o),g=y(t),p=y(n);o.length>0&&!u&&d(!0),v(()=>{a.current={config:e,storageConfig:r},f.current=o,g.current=t,p.current=n},[e,r,n,t,o]),v(()=>{if(!i)return;let e=!1;return(async()=>{if(u){let{createScriptLoader:r}=await import("@c15t/core/modules/script-loader");if(e)return;l.current=r({kernel:i,nonce:p.current,onDebug:g.current?.onDebug,scripts:f.current})}let{config:r}=a.current;if(r){let{createClearOnRevocation:n}=await import("@c15t/core/modules/clear-on-revocation");if(e)return;c.current={config:r,create:n},s.current=n({config:r,kernel:i,storageConfig:a.current.storageConfig})}})(),()=>{e=!0,s.current?.dispose(),s.current=null,c.current=null,l.current?.dispose(),l.current=null}},[i,u]);let h=r?.storageKey;return v(()=>{let e=c.current;i&&e&&(s.current?.dispose(),s.current=e.create({config:e.config,kernel:i,storageConfig:{storageKey:h}}))},[i,h]),v(()=>{l.current?.updateScripts(o)},[o]),null},Y=({options:e})=>(w(e),null),Z=({options:e})=>{let r=m(S),n=y(null),t=y(e),o=O(e.rules,e.enabled);return v(()=>{t.current=e},[e]),v(()=>{if(!r)return;let e=!1,i=o.claim(t.current.rules,t.current.enabled);return(async()=>{let{createNetworkBlocker:o}=await import("@c15t/core/modules/network-blocker");if(e)return;let l=t.current;n.current=o({enabled:l.enabled,hold:i,kernel:r,logBlockedRequests:l.logBlockedRequests,onRequestBlocked:l.onRequestBlocked,rules:l.rules})})(),()=>{e=!0,n.current?.dispose(),n.current=null,o.unmount()}},[o,r]),v(()=>{n.current?.updateRules(e.rules)},[e.rules]),v(()=>{void 0!==e.enabled&&n.current?.setEnabled(e.enabled)},[e.enabled]),null},$=({options:e,clearRef:r})=>{let n=P(e);return v(()=>(r.current=n.clear,()=>{r.current=null}),[n,r]),null},ee=({pkg:e,mode:r})=>(v(()=>{let n=d({mode:r,pkg:e});return()=>n.dispose()},[r,e]),null),er=function(e){if(!1===e.persistence)return!1;let{storageConfig:r}=e,n=!!T(e).initialRecords;return!0===e.persistence||void 0===e.persistence?{skipHydration:n,storageConfig:r}:{...e.persistence,skipHydration:e.persistence.skipHydration??n,storageConfig:e.persistence.storageConfig??r}},en=function(e,r,n){let t=e.external?r??e.external:void 0,o=t?.kernel??e.kernel;return{active:o,external:t,rendered:n?o:e.disabledKernel??o}},et=t=>{let{children:o}=t,i=t.options??{},l=D(i),[s,c]=k(()=>({clearOnRevocation:i.clearOnRevocation,consentSource:i.consentSource,disabledKernel:t.runtime?void 0:F({...i,enabled:!1}),external:t.runtime,kernel:t.runtime?.kernel??F({...i,enabled:!0})})),{clearOnRevocation:a}=s,{active:u,external:d,rendered:p}=en(s,t.runtime,l),m=void 0===d;v(()=>{(m||void 0!==i.consentCategories)&&p.set.consentCategories(i.consentCategories)},[p,m,i.consentCategories]);let w=y(null),O=h(()=>({clearRecords:()=>{d?d.clearRecords():w.current?w.current():(p.hydrate({choice:null,noticeDismissal:null,optOutDirectives:[],subject:null,vendorChoice:null}),p.events.emit({type:"records:cleared"}))},getConsentCategories:()=>{let e=p.getSnapshot();return["necessary",...e.evaluationPolicy.choiceScope??e.policyRule.scope]},getPresentation:()=>i.presentation}),[p,i.presentation,d]),P=s.consentSource?void 0:er(i),{scripts:E,networkBlocker:B}=i;v(()=>{if(m&&s.consentSource&&l)return g(p,s.consentSource)},[l,p,s,m]);let N=i.__debugPkg??"@c15t/react",j=m?f(i.mode):"hosted";G(u,i,l,m);let L=y(0);v(()=>{if(!m)return;L.current+=1;let e=L.current;return()=>{queueMicrotask(()=>{L.current===e&&(s.kernel.dispose(),s.disabledKernel?.dispose())})}},[s,m]);let M=i.theme;v(()=>{"production"===process.env.NODE_ENV||!M||!["colors","dark","motion","radius","shadows","spacing","typography"].some(e=>e in M)||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/styling/overview")},[M]);let V=h(()=>({colorScheme:i.colorScheme,disableAnimation:i.disableAnimation,noStyle:i.noStyle,scrollLock:i.scrollLock,theme:M,trapFocus:i.trapFocus}),[M,i.noStyle,i.disableAnimation,i.scrollLock,i.trapFocus,i.colorScheme]),_=h(()=>({components:i.components,legalLinks:i.legalLinks,preloadDialog:i.preloadDialog,presentation:i.presentation}),[i.components,i.legalLinks,i.preloadDialog,i.presentation]);R(i.colorScheme);let q=n(e,{children:[m?n(e,{children:[r(W,{kernel:p,callbacks:i.callbacks,reloadOnConsentRevoked:i.reloadOnConsentRevoked}),r(ee,{pkg:N,mode:j}),l&&P?r($,{options:P,clearRef:w}):null,r(z,{enabled:l&&!s.consentSource,prepared:!!T(i).initialPolicyResolution,kernel:p}),E&&E.length>0||l&&a?r(X,{clearOnRevocation:l?a:void 0,storageConfig:P?P.storageConfig:i.storageConfig,nonce:i.nonce,options:i.scriptLoader,scripts:E}):null,l&&!1!==i.iframeBlocker?r(Y,{options:i.iframeBlocker}):null,l&&B?r(Z,{options:B}):null]}):null,d?r(b,{runtime:d,children:o}):o]});return r(S.Provider,{value:p,children:r(C.Provider,{value:O,children:r(x,{themeConfig:V,uiConfig:_,children:q})})})};export{et as ConsentProvider};
|