@c15t/react 3.0.0-alpha.3 → 3.0.0-alpha.5
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 +92 -72
- package/README.md +21 -17
- package/SKILL.md +34 -0
- package/dist/component-hooks/use-headless-consent-ui.js +1 -1
- package/dist/component-hooks/use-headless-iab-consent-ui.js +1 -1
- package/dist/components/consent-gate/atoms.js +1 -1
- package/dist/components/consent-gate/consent-gate.js +1 -1
- package/dist/components/iab-panel/atoms/card.js +1 -1
- package/dist/components/iab-panel/atoms/feature-item.js +2 -0
- package/dist/components/iab-panel/atoms/header.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/iab-prompt/atoms/overlay.js +1 -1
- package/dist/components/iab-prompt/atoms/root.js +1 -1
- package/dist/components/panel/atoms/card.js +1 -1
- package/dist/components/panel/atoms/root.js +1 -1
- package/dist/components/panel-trigger/atoms/button.js +1 -1
- package/dist/components/panel-trigger/atoms/toolbar.js +1 -1
- package/dist/components/preferences/atoms/accordion.js +1 -1
- package/dist/components/prompt/atoms/overlay.js +1 -1
- package/dist/components/prompt/atoms/root.js +1 -1
- package/dist/components/prompt/components.js +1 -1
- package/dist/components/shared/libs/compose-refs.js +1 -0
- package/dist/components/shared/libs/slot.js +1 -1
- package/dist/components/shared/primitives/button.js +1 -1
- package/dist/components/shared/ui/dialog/dialog.js +1 -1
- package/dist/components/shared/ui/icon.js +1 -1
- package/dist/context/consent-tracking-context.js +1 -1
- package/dist/devtools.js +1 -1
- package/dist/draft-context.js +2 -0
- package/dist/draft.js +1 -1
- package/dist/external-iab-context.js +1 -1
- package/dist/gpp.js +2 -0
- package/dist/hooks/use-color-scheme.js +1 -1
- package/dist/hooks/use-focus-trap.js +1 -1
- package/dist/hooks.js +1 -1
- package/dist/iab/styles.tw3.css +4 -4
- package/dist/index-parts/consent-banner.js +1 -0
- package/dist/index-parts/consent-dialog-link.js +1 -0
- package/dist/index-parts/consent-dialog-trigger.js +1 -0
- package/dist/index-parts/consent-dialog.js +1 -0
- package/dist/index-parts/consent-gate.js +1 -0
- package/dist/index-parts/core.js +1 -0
- package/dist/index-parts/draft.js +1 -0
- package/dist/index-parts/hooks.js +1 -0
- package/dist/index-parts/module-hooks.js +1 -0
- package/dist/index-parts/provider.js +1 -0
- package/dist/index-parts/theme.js +1 -0
- package/dist/index-parts/translations.js +1 -0
- package/dist/index.js +1 -1
- package/dist/kernel-selector.js +1 -1
- package/dist/module-hooks/iframe-blocker.js +1 -1
- package/dist/postcss-tailwind3.js +1 -0
- package/dist/provider.js +1 -1
- package/dist/server/fetch-ssr-data.js +1 -1
- package/dist/server/headers.js +1 -1
- package/dist/server/normalize-url.js +1 -1
- package/dist/styles.tw3.css +16 -16
- package/dist/transports/offline.js +1 -1
- package/dist/utils/merge-slot-props.js +1 -1
- package/dist/utils/theme-utils.js +1 -1
- package/dist/version.js +1 -1
- package/dist-types/component-hooks/use-headless-consent-ui.d.ts +1 -1
- package/dist-types/components/iab-panel/atoms/feature-item.d.ts +28 -0
- package/dist-types/components/iab-panel/iab-panel.d.ts +2 -2
- package/dist-types/components/iab-panel/index.d.ts +5 -2
- package/dist-types/components/iab-panel/use-iab-translations.d.ts +4 -0
- package/dist-types/components/iab-prompt/iab-prompt.d.ts +2 -2
- package/dist-types/components/iab-prompt/index.d.ts +2 -2
- package/dist-types/components/panel/atoms/card.d.ts +1 -0
- package/dist-types/components/prompt/components.d.ts +6 -0
- package/dist-types/components/shared/libs/compose-refs.d.ts +20 -0
- package/dist-types/components/shared/ui/icon.d.ts +2 -1
- package/dist-types/context/consent-tracking-context.d.ts +10 -0
- package/dist-types/context/theme-context.d.ts +2 -2
- package/dist-types/context.d.ts +6 -0
- package/dist-types/devtools.d.ts +13 -2
- package/dist-types/draft-context.d.ts +31 -0
- package/dist-types/draft.d.ts +13 -30
- package/dist-types/gpp.d.ts +27 -0
- package/dist-types/hooks/use-focus-trap.d.ts +3 -1
- package/dist-types/hooks.d.ts +57 -13
- package/dist-types/iab.d.ts +1 -1
- package/dist-types/index-parts/consent-banner.d.ts +7 -0
- package/dist-types/index-parts/consent-dialog-link.d.ts +7 -0
- package/dist-types/index-parts/consent-dialog-trigger.d.ts +7 -0
- package/dist-types/index-parts/consent-dialog.d.ts +7 -0
- package/dist-types/index-parts/consent-gate.d.ts +7 -0
- package/dist-types/index-parts/core.d.ts +8 -0
- package/dist-types/index-parts/draft.d.ts +7 -0
- package/dist-types/index-parts/hooks.d.ts +7 -0
- package/dist-types/index-parts/module-hooks.d.ts +7 -0
- package/dist-types/index-parts/provider.d.ts +7 -0
- package/dist-types/index-parts/theme.d.ts +8 -0
- package/dist-types/index-parts/translations.d.ts +7 -0
- package/dist-types/index.d.ts +14 -15
- package/dist-types/kernel-selector.d.ts +0 -8
- package/dist-types/module-hooks/iframe-blocker.d.ts +12 -7
- package/dist-types/postcss-tailwind3.d.ts +21 -0
- package/dist-types/provider.d.ts +57 -17
- package/dist-types/server/headers.d.ts +14 -4
- package/dist-types/server/normalize-url.d.ts +14 -7
- package/dist-types/server/types.d.ts +12 -1
- package/dist-types/transports/offline.d.ts +7 -16
- package/dist-types/ui-config-context.d.ts +7 -1
- package/dist-types/utils/merge-slot-props.d.ts +15 -1
- package/dist-types/utils/theme-utils.d.ts +17 -2
- package/dist-types/version.d.ts +1 -1
- package/docs/README.md +92 -72
- package/docs/assets/v3/bottom-bar.png +0 -0
- package/docs/assets/v3/brand-card.png +0 -0
- package/docs/assets/v3/brand-preferences.png +0 -0
- package/docs/assets/v3/choice-wall.png +0 -0
- package/docs/assets/v3/headless-bar-html.png +0 -0
- package/docs/assets/v3/headless-bar-mobile.png +0 -0
- package/docs/assets/v3/headless-bar.png +0 -0
- package/docs/assets/v3/slim-bar.png +0 -0
- package/docs/concepts/choose-your-setup.md +87 -0
- package/docs/{frameworks/react/concepts → concepts}/consent-categories.md +22 -7
- package/docs/{guides → concepts}/consent-state.md +89 -105
- package/docs/{guides → concepts}/data-fetching.md +31 -27
- package/docs/concepts/how-consent-works.md +123 -0
- package/docs/{frameworks/react/concepts/policy-presets.md → concepts/policies.md} +7 -59
- package/docs/customization/class-names.md +202 -0
- package/docs/customization/dark-mode.md +157 -0
- package/docs/customization/motion.md +119 -0
- package/docs/customization/overview.md +67 -34
- package/docs/customization/recipes.md +839 -49
- package/docs/customization/slots.md +216 -35
- package/docs/customization/stylesheets.md +147 -0
- package/docs/customization/tailwind.md +842 -0
- package/docs/customization/tokens.md +163 -96
- package/docs/customization/translations.md +60 -3
- package/docs/frameworks/react/callbacks.md +118 -0
- package/docs/frameworks/react/clear-on-revocation.md +106 -0
- package/docs/frameworks/react/components/consent-banner.md +42 -28
- package/docs/frameworks/react/components/consent-dialog-link.md +13 -11
- package/docs/frameworks/react/components/consent-dialog-trigger.md +81 -76
- package/docs/frameworks/react/components/consent-dialog.md +56 -50
- package/docs/frameworks/react/components/consent-gate.md +37 -20
- package/docs/frameworks/react/components/consent-provider.md +130 -0
- package/docs/frameworks/react/components/consent-widget.md +23 -20
- package/docs/frameworks/react/components/dev-tools.md +53 -85
- package/docs/frameworks/react/components.md +105 -0
- package/docs/frameworks/react/compose.md +354 -0
- package/docs/frameworks/react/content-security-policy.md +126 -0
- package/docs/frameworks/react/customize.md +250 -0
- package/docs/frameworks/react/embeds.md +89 -0
- package/docs/frameworks/react/gpp.md +163 -0
- package/docs/frameworks/react/{hooks/overview.md → hooks.md} +21 -16
- package/docs/frameworks/react/{iab/overview.md → iab.md} +80 -31
- package/docs/frameworks/react/network-blocker.md +35 -41
- package/docs/frameworks/react/quickstart.md +139 -101
- package/docs/frameworks/react/rendering.md +128 -0
- package/docs/frameworks/react/scripts.md +115 -0
- package/docs/frameworks/react/translations.md +155 -0
- package/docs/frameworks/react/troubleshooting.md +92 -47
- package/docs/frameworks/react/vendor-consent.md +170 -0
- package/docs/guides/banner-experiments.md +654 -0
- package/docs/guides/troubleshooting.md +120 -47
- package/docs/guides/verify-consent.md +81 -49
- package/docs/integrations/adobe-analytics.md +167 -159
- package/docs/integrations/ahrefs-analytics.md +152 -154
- package/docs/integrations/amplitude.md +162 -156
- package/docs/integrations/building-integrations.md +136 -37
- package/docs/integrations/clearbit.md +154 -154
- package/docs/integrations/cloudflare-web-analytics.md +156 -156
- package/docs/integrations/cloudflare-zaraz.md +209 -261
- package/docs/integrations/crisp.md +164 -158
- package/docs/integrations/databuddy.md +157 -173
- package/docs/integrations/fathom-analytics.md +158 -156
- package/docs/integrations/front-chat.md +167 -167
- package/docs/integrations/google-maps.md +118 -83
- package/docs/integrations/google-tag-manager.md +178 -163
- package/docs/integrations/google-tag.md +163 -160
- package/docs/integrations/heap.md +163 -155
- package/docs/integrations/hightouch.md +161 -157
- package/docs/integrations/hotjar.md +159 -155
- package/docs/integrations/intercom.md +183 -153
- package/docs/integrations/klaviyo.md +486 -0
- package/docs/integrations/linkedin-insights.md +174 -150
- package/docs/integrations/logrocket.md +160 -156
- package/docs/integrations/matomo-analytics.md +188 -178
- package/docs/integrations/meta-pixel.md +188 -150
- package/docs/integrations/microsoft-clarity.md +163 -155
- package/docs/integrations/microsoft-uet.md +148 -154
- package/docs/integrations/mixpanel-analytics.md +155 -160
- package/docs/integrations/one-dollar-stats.md +166 -165
- package/docs/integrations/openai-pixel.md +204 -301
- package/docs/integrations/overview.md +137 -80
- package/docs/integrations/pinterest-tag.md +191 -183
- package/docs/integrations/pirsch.md +169 -159
- package/docs/integrations/plausible-analytics.md +172 -158
- package/docs/integrations/posthog.md +313 -240
- package/docs/integrations/promptwatch.md +154 -154
- package/docs/integrations/reddit-pixel.md +185 -157
- package/docs/integrations/rudderstack.md +201 -186
- package/docs/integrations/rybbit-analytics.md +171 -160
- package/docs/integrations/segment.md +182 -154
- package/docs/integrations/snapchat-pixel.md +186 -156
- package/docs/integrations/tiktok-pixel.md +171 -150
- package/docs/integrations/umami-analytics.md +163 -158
- package/docs/integrations/vercel-analytics.md +166 -157
- package/docs/integrations/x-pixel.md +176 -150
- package/docs/integrations/youtube.md +121 -86
- package/docs/upgrade-v3.md +496 -467
- package/package.json +20 -9
- package/dist/ui-save.js +0 -1
- package/dist-types/ui-save.d.ts +0 -25
- package/docs/assets/v3/brand-bar.png +0 -0
- package/docs/assets/v3/mobile-card.png +0 -0
- package/docs/assets/v3/preferences.png +0 -0
- package/docs/frameworks/react/components/consent-manager-provider.md +0 -95
- package/docs/frameworks/react/script-loader.md +0 -69
- package/docs/frameworks/react/styling/overview.md +0 -266
- package/docs/guides/deployment-modes.md +0 -75
- package/docs/guides/shared-consent-controls.md +0 -158
- package/docs/integrations/clear-on-revocation.md +0 -167
- package/docs/integrations/granular-consent.md +0 -210
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e,jsxs as t}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/branding";import i from"@c15t/ui/styles/components/consent-dialog";import{forwardRef as a}from"react";import{useTranslations as
|
|
2
|
+
import{jsx as e,jsxs as t}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/branding";import i from"@c15t/ui/styles/components/consent-dialog";import{forwardRef as a,isValidElement as n}from"react";import{useTranslations as s}from"../../../component-hooks/use-translations.js";import{ConsentWidget as r}from"../../preferences/preferences.js";import{Slot as d}from"../../shared/libs/slot.js";import{Box as l}from"../../shared/primitives/box.js";import{InlineLegalLinks as g}from"../../shared/primitives/legal-links/index.js";import{BrandingLink as c}from"../../shared/ui/branding.js";import{useTheme as m}from"../../../hooks/use-theme.js";import{useUIConfig as p}from"../../../ui-config-context.js";import{cnExt as C}from"../../../utils/cn.js";import{mergeSlotProps as f}from"../../../utils/merge-slot-props.js";let h=a(({children:t,...o},a)=>e(l,{ref:a,baseClassName:i.card,...o,slotKey:"dialog.card","data-testid":"consent-dialog-card",tabIndex:-1,children:t}));h.displayName="ConsentDialogCard";let D=a(({children:t,...o},a)=>e(l,{ref:a,baseClassName:i.header,...o,slotKey:"dialog.header","data-testid":"consent-dialog-header",children:t}));D.displayName="ConsentDialogHeader";let y=a(({children:t,asChild:o,...a},r)=>{let{consentManagerDialog:d}=s();return e(l,{ref:r,baseClassName:i.title,slotKey:"dialog.title",...a,id:"consent-dialog-title","data-testid":"consent-dialog-title",asChild:!0,children:o&&n(t)?t:e("h2",{children:t??d.title})})});y.displayName="ConsentDialogHeaderTitle";let b=a(({children:o,legalLinks:a,asChild:r,className:l,style:c,noStyle:C,...h},D)=>{let{consentManagerDialog:y}=s(),{components:b}=p(),{noStyle:u}=m(),N="dialog",j=f(b?.description?.[N],{baseClassName:i.description,className:l,"data-context":N,"data-testid":"consent-dialog-description",id:"consent-dialog-description",noStyle:C??u,style:c,...h});return r&&n(o)?e(d,{ref:D,...j,children:o}):t("div",{ref:D,...j,children:[o??y.description,e(g,{links:a,context:"dialog",testIdPrefix:"consent-dialog-legal-link"})]})});b.displayName="ConsentDialogHeaderDescription";let u=a(({children:t,...o},a)=>e(l,{ref:a,baseClassName:i.content,slotKey:"dialog.content","data-testid":"consent-dialog-content",...o,children:t}));u.displayName="ConsentDialogContent";let N=t=>e(c,{...t}),j=a(({children:t,hideBranding:a,"data-testid":n,...s},r)=>e(l,{ref:r,baseClassName:C(i.footer,null==t&&!a&&o.brandingFooter),"data-testid":n??"consent-dialog-footer",...s,slotKey:"manager.footer",children:t??e(N,{hideBranding:a??!1,variant:"dialog-tag",slotContext:"dialog","data-testid":"consent-dialog-branding"})}));j.displayName="ConsentDialogFooter";let x=({noStyle:o,legalLinks:i,hideBranding:a})=>t(h,{children:[t(D,{children:[e(y,{}),e(b,{legalLinks:i})]}),e(u,{children:e(r,{hideBranding:!0,noStyle:o,useProvider:!0})}),e(N,{hideBranding:a??!1,variant:"dialog-tag",slotContext:"dialog","data-testid":"consent-dialog-branding"})]}),H=h,k=D,v=y,K=b,B=u,F=j;export{N as Branding,H as Card,x as ConsentCustomizationCard,h as ConsentDialogCard,u as ConsentDialogContent,j as ConsentDialogFooter,D as ConsentDialogHeader,b as ConsentDialogHeaderDescription,y as ConsentDialogHeaderTitle,B as Content,F as Footer,k as Header,K as HeaderDescription,v as HeaderTitle};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{Fragment as o,jsx as e,jsxs as t}from"react/jsx-runtime";import{isDialogDismissKey as r}from"@c15t/ui/primitives/dialog";import i from"@c15t/ui/styles/components/consent-dialog";import{useEffect as n,useMemo as s,useRef as l,useState as a}from"react";import{createPortal as m}from"react-dom";import{useHeadlessConsentUI as c}from"../../../component-hooks/use-headless-consent-ui.js";import{ConsentTrackingContext as d}from"../../../context/consent-tracking-context.js";import{LocalThemeContext as u}from"../../../context/theme-context.js";import{useActiveUI as p,useHasConsentUI as f,useModel as
|
|
2
|
+
import{Fragment as o,jsx as e,jsxs as t}from"react/jsx-runtime";import{isDialogDismissKey as r}from"@c15t/ui/primitives/dialog";import i from"@c15t/ui/styles/components/consent-dialog";import{useEffect as n,useMemo as s,useRef as l,useState as a}from"react";import{createPortal as m}from"react-dom";import{useHeadlessConsentUI as c}from"../../../component-hooks/use-headless-consent-ui.js";import{ConsentTrackingContext as d}from"../../../context/consent-tracking-context.js";import{LocalThemeContext as u}from"../../../context/theme-context.js";import{useActiveUI as p,useHasConsentUI as f,useModel as b}from"../../../hooks.js";import{useFocusTrap as g}from"../../../hooks/use-focus-trap.js";import{useIsHydrated as k}from"../../../hooks/use-is-hydrated.js";import{useScrollLock as h}from"../../../hooks/use-scroll-lock.js";import{useTextDirection as j}from"../../../hooks/use-text-direction.js";import{useTheme as v}from"../../../hooks/use-theme.js";import{useTranslationLanguage as y}from"../../../kernel-selector.js";import{useUIConfig as x}from"../../../ui-config-context.js";import{cnExt as F}from"../../../utils/cn.js";import{mergeSlotProps as A}from"../../../utils/merge-slot-props.js";import{Overlay as L}from"./overlay.js";let N=["opt-in","opt-out","none"],S=({children:S,open:C,models:q=N,noStyle:w,disableAnimation:D,scrollLock:E,trapFocus:H,overlay:I,uiSource:P,className:R,style:T,...V})=>{var z;let B,G,J,K=v(),{components:M}=x(),O=p(),Q=b(),U=y(),{closeUI:W,dialog:X}=c({preferences:{scrollLock:E,trapFocus:H}}),{disableAnimation:Y,noStyle:Z,scrollLock:$,trapFocus:_}=(B=K.disableAnimation,G=K.noStyle,{disableAnimation:D??B??!1,noStyle:w??G??!1,scrollLock:J=X.blocking,trapFocus:J}),oo=j(U),oe=(z=f(),!!z&&!!q.includes(Q??"opt-in")&&(C??"dialog"===O)),[ot,or]=a(!1),oi=l(null),on=l(null),os=k(),ol=K.theme?.motion?.duration?.normal;n(()=>{if(oe){let o=requestAnimationFrame(()=>or(!0));return()=>cancelAnimationFrame(o)}if(Y){let o=requestAnimationFrame(()=>or(!1));return()=>cancelAnimationFrame(o)}let o=setTimeout(()=>or(!1),Number.parseInt((ol||"200ms").replace("ms",""),10));return()=>clearTimeout(o)},[oe,Y,ol]),g(oe&&_,on,{initialFocus:"first-tabbable"}),n(()=>{if(!oe)return;let o=o=>{r(o.key)&&(o.preventDefault(),W())};return document.addEventListener("keydown",o),()=>document.removeEventListener("keydown",o)},[W,oe]),h(oe&&$);let oa=Y?i.root:F(i.root,ot?i.dialogVisible:i.dialogHidden),om=A(M?.dialog?.root,{baseClassName:oa,className:R,noStyle:Z,style:T,...V}),oc=A(M?.dialog?.container,{baseClassName:F(i.container,!Y&&(ot?i.contentVisible:i.contentHidden)),noStyle:Z}),od=s(()=>({disableAnimation:Y,noStyle:Z,scrollLock:$,theme:K.theme,trapFocus:_}),[Y,K.theme,Z,$,_]),ou=s(()=>({uiSource:P??"dialog"}),[P]),op=X.blocking?"true":void 0,of=e(d.Provider,{value:ou,children:e(u.Provider,{value:od,children:oe&&t(o,{children:[X.blocking&&!1!==I?I??e(L,{open:oe}):null,e("div",{ref:oi,"data-slot":"dialog-positioner","data-blocking":op,...om,className:om.className,children:e("div",{ref:on,...oc,"aria-describedby":"consent-dialog-description","aria-labelledby":"consent-dialog-title","aria-modal":_?"true":void 0,"data-blocking":op,"data-testid":"consent-dialog-root",dir:oo,role:"dialog",tabIndex:-1,children:S})})]})})});return os?m(of,document.body):null},C=S;export{S as ConsentDialogRoot,C as Root};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as t}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/consent-dialog-trigger";import{forwardRef as r}from"react";import{useIdleDialogWarming as e,warmDialogChunk as i}from"../../../chunk-warming.js";import{usePolicyRule as n}from"../../../hooks.js";import{useTheme as s}from"../../../hooks/use-theme.js";import{useUIConfig as m}from"../../../ui-config-context.js";import{mergeSlotProps as g}from"../../../utils/merge-slot-props.js";import{useTriggerContext as a}from"./root.js";let l={"bottom-left":o.bottomLeft,"bottom-right":o.bottomRight,"top-left":o.topLeft,"top-right":o.topRight},p={lg:o.lg,md:o.md,sm:o.sm},
|
|
2
|
+
import{jsx as t}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/consent-dialog-trigger";import{forwardRef as r}from"react";import{useIdleDialogWarming as e,warmDialogChunk as i}from"../../../chunk-warming.js";import{usePolicyRule as n}from"../../../hooks.js";import{useTheme as s}from"../../../hooks/use-theme.js";import{useUIConfig as m}from"../../../ui-config-context.js";import{mergeSlotProps as g}from"../../../utils/merge-slot-props.js";import{useTriggerContext as a}from"./root.js";let l={"bottom-left":o.bottomLeft,"bottom-right":o.bottomRight,"top-left":o.topLeft,"top-right":o.topRight},p={lg:o.lg,md:o.md,sm:o.sm},d=r(({children:r,size:d="md",ariaLabel:c="Open privacy settings",className:f,"data-testid":u="consent-dialog-trigger",noStyle:h},b)=>{let j=n(),{components:y}=m(),{disableAnimation:k,noStyle:x}=s(),{corner:C,isDragging:v,isSnapping:B,wasDragged:E,handlers:F,dragStyle:L,openDialog:N}=a();e(!0);let P=g(y?.trigger?.root,{baseClassName:[o.trigger,l[C],p[d],v&&o.dragging,B&&o.snapping],className:f,"data-testid":u,noStyle:h??x,style:L,...F});return t("button",{...P,ref:b,type:"button","data-c15t-trigger":"true","data-c15t-rights":j.rights.join(" "),"data-disable-animation":k?"":void 0,"aria-label":c,onClick:t=>{0!==t.detail&&E()||N()},onFocus:t=>{P.onFocus?.(t),i()},onPointerEnter:t=>{P.onPointerEnter?.(t),i()},children:r})});d.displayName="ConsentDialogTrigger.Button";export{d as TriggerButton};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e}from"react/jsx-runtime";import{createElement as t,useMemo as r,useRef as o,useState as i}from"react";import n from"@c15t/ui/styles/components/consent-dialog-trigger";import{useTranslations as
|
|
2
|
+
import{jsx as e}from"react/jsx-runtime";import{createElement as t,useMemo as r,useRef as o,useState as i}from"react";import n from"@c15t/ui/styles/components/consent-dialog-trigger";import{useTranslations as a}from"../../../component-hooks/use-translations.js";import{usePolicyRule as s}from"../../../hooks.js";import{useTheme as l}from"../../../hooks/use-theme.js";import{useUIConfig as d}from"../../../ui-config-context.js";import{mergeSlotProps as c}from"../../../utils/merge-slot-props.js";import{TriggerIcon as g}from"./icon.js";import{useTriggerContext as m}from"./root.js";let f={"bottom-left":n.bottomLeft,"bottom-right":n.bottomRight,"top-left":n.topLeft,"top-right":n.topRight},p={lg:n.lg,md:n.md,sm:n.sm},u=function(){let e=s(),{rights:t}=a();return r(()=>{let r=e.rights.includes("opt-out")?"opt-out":"preferences";return{label:"opt-out"===r&&e.i18n?.messageProfile!=="preferences"?t?.optOut??"Do not sell or share my data":t?.preferences??"Manage preferences",right:r,rights:e.rights.join(" ")}},[e.rights,e.i18n?.messageProfile,t])},b=function(e,t,r,o,i){let n=e.map(e=>({...e,focusId:`custom:${e.id}`,kind:"custom"}));return i?[...n,{className:t.className,focusId:"preferences",icon:t.icon??"branding",id:"preferences",kind:"preferences",label:t.label??o,onSelect:t.onSelect,right:r,style:t.style}]:n},h=function(e,t,r){let o=e.find(e=>"preferences"===e.kind);if(!o)return e;let i=e.filter(e=>"custom"===e.kind);return("horizontal"===t?r.endsWith("left"):r.startsWith("top"))?[o,...i]:[...i,o]},y=({actions:a,preferences:s,size:y="md",orientation:k="horizontal",ariaLabel:I="Privacy controls",showPreferences:v=!0,className:j,style:N,noStyle:S=!1})=>{let{components:w}=d(),{disableAnimation:x,noStyle:C}=l(),{label:D,right:A,rights:T}=u(),{corner:L,isDragging:P,isSnapping:R,wasDragged:z,handlers:E,dragStyle:H,openDialog:M}=m(),W=r(()=>h(b(a,s,A,D,v),k,L),[a,L,D,k,s,A,v]),B=W.find(e=>!e.disabled)?.focusId,[F,K]=i(B),O=o(new Map),U=S||C,V=c(w?.trigger?.toolbar,{baseClassName:[n.toolbar,"vertical"===k&&n.toolbarVertical,f[L],P&&n.dragging,R&&n.snapping],className:j,noStyle:U,style:N}),$=c(w?.trigger?.toolbarItem,{baseClassName:[n.toolbarItem,p[y]],noStyle:U}),q=c(w?.trigger?.toolbarIcon,{baseClassName:n.toolbarIcon,noStyle:U}),G=W.some(e=>e.focusId===F&&!e.disabled)?F:B;return e("div",{...V,"aria-label":I,"aria-orientation":k,"data-corner":L,"data-c15t-trigger-toolbar":"true","data-c15t-trigger":"true","data-disable-animation":x?"":void 0,"data-dragging":P||void 0,"data-snapping":R||void 0,dir:"ltr",onKeyDown:e=>{let t,r="vertical"===k?"ArrowDown":"ArrowRight",o="vertical"===k?"ArrowUp":"ArrowLeft";if(e.key!==r&&e.key!==o&&"Home"!==e.key&&"End"!==e.key)return;let i=W.filter(e=>!e.disabled);if(0===i.length)return;e.preventDefault();let n=i.findIndex(e=>e.focusId===G);t="Home"===e.key?0:"End"===e.key?i.length-1:e.key===r?(n+1)%i.length:(n-1+i.length)%i.length;let a=i[t];a&&(K(a.focusId),O.current.get(a.focusId)?.focus())},role:"toolbar",style:{...V.style,...H},tabIndex:-1,...E,children:W.map(r=>t("button",{...$,key:r.focusId,ref:e=>{e?O.current.set(r.focusId,e):O.current.delete(r.focusId)},"aria-label":r.label,"aria-pressed":"custom"===r.kind?r.pressed:void 0,className:[$.className,r.className].filter(Boolean).join(" "),"data-c15t-rights":"preferences"===r.kind?T:void 0,"data-c15t-trigger-action":r.kind,"data-c15t-trigger-item":r.id,"data-right":"preferences"===r.kind?r.right:void 0,disabled:r.disabled,onClick:e=>{!(0!==e.detail&&z())&&(r.onSelect?.(),"preferences"===r.kind&&M())},onFocus:()=>K(r.focusId),style:{...$.style,...r.style},tabIndex:r.focusId===G?0:-1,type:"button"},e("span",{...q,"aria-hidden":"true",children:e(g,{icon:r.icon,noStyle:U})})))})};y.displayName="ConsentDialogTriggerToolbar";export{y as TriggerToolbar};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as t}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/accordion";import{createContext as n,forwardRef as i,useCallback as r,useContext as a,useMemo as c}from"react";import{useTranslations as
|
|
1
|
+
import{jsx as e,jsxs as t}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/accordion";import{createContext as n,forwardRef as i,useCallback as r,useContext as a,useMemo as c}from"react";import{useTranslations as d}from"../../../component-hooks/use-translations.js";import{Box as s}from"../../shared/primitives/box.js";import{LucideIcon as l}from"../../shared/ui/icon.js";import{useConsentDraftSlice as m,useConsentDraftStore as p}from"../../../draft.js";import{useExplicitChoice as g,useRestrictions as u}from"../../../hooks.js";import{useTheme as y}from"../../../hooks/use-theme.js";import{ConsentWidgetVendorList as h}from"./vendor-list.js";import*as f from"../../shared/ui/preference-item/index.js";import*as w from"../../shared/ui/switch/index.js";let C=[{defaultValue:!0,description:"Required for basic site functionality",disabled:!0,display:!0,gdprType:1,name:"necessary"},{defaultValue:!1,description:"Enables enhanced features",display:!0,gdprType:2,name:"functionality"},{defaultValue:!1,description:"Analytics and performance measurement",display:!0,gdprType:4,name:"measurement"},{defaultValue:!1,description:"Improves your experience",display:!0,gdprType:3,name:"experience"},{defaultValue:!1,description:"Advertising and marketing",display:!0,gdprType:5,name:"marketing"}],v=n(null),A=function(){let e=a(v);if(!e)throw Error("ConsentWidgetAccordion components must be used within ConsentWidgetAccordion");return e},S=i(({children:t,...n},i)=>e(s,{ref:i,baseClassName:o.triggerRow,...n,children:t}));S.displayName="ConsentWidgetAccordionTrigger";let N=f.Trigger,b=f.Content,T=f.Leading,W=w.Root,j=({"data-testid":t,children:n,className:i,noStyle:a,onValueChange:d,style:l,type:m="multiple",value:p,...g})=>{let{noStyle:u}=y(),h=a??u,f=c(()=>Array.isArray(p)?p:p?[p]:[],[p]),w=r((e,t)=>{if("single"===m)return void d?.(t?e:"");let o=t?[...new Set([...f,e])]:f.filter(t=>t!==e);d?.(o)},[d,f,m]),C=c(()=>({noStyle:h,onToggleItem:w,openValues:f}),[h,w,f]);return e(v.Provider,{value:C,children:e(s,{className:i,"data-testid":t??"consent-widget-accordion",noStyle:a,style:l,slotKey:"accordion.root",baseClassName:o.list,...g,children:n})})},I=l({iconPath:e("path",{d:"M5 12h14M12 5v14"})}),K=l({iconPath:e("path",{d:"M5 12h14"})}),V=({consent:n,title:i,description:r,restricted:a,open:c,noStyle:d,onToggleItem:s})=>{let l=p(),g=m(l,e=>e.values[n.name]);return t(f.Root,{className:d?void 0:o.item,"data-testid":`consent-widget-accordion-item-${n.name}`,noStyle:!0,onOpenChange:e=>s(n.name,e),open:c,slotKey:"accordion-item.root",children:[t(S,{slotKey:"accordion.triggerRow",children:[t(N,{className:d?void 0:o.trigger,"data-testid":`consent-widget-accordion-trigger-${n.name}`,noStyle:!0,slotKey:"accordion-item.trigger",children:[e(T,{className:d?void 0:o.arrow,"data-testid":`consent-widget-accordion-arrow-${n.name}`,noStyle:!0,slotKey:"accordion.arrow",children:c?e(K,{"aria-hidden":"true"}):e(I,{"aria-hidden":"true"})}),e(f.Header,{noStyle:!0,slotKey:"accordion.header",children:e(f.Title,{className:d?void 0:o.title,noStyle:!0,slotKey:"accordion.title",children:i})})]}),e(f.Control,{className:d?void 0:o.control,noStyle:!0,slotKey:"accordion.control",children:e(W,{"aria-label":i,checked:g,"aria-describedby":a?`c15t-restriction-${n.name}`:void 0,onCheckedChange:e=>l.set(n.name,e),disabled:n.disabled,size:"small","data-testid":`consent-widget-switch-${n.name}`})})]}),a?e("output",{className:d?void 0:o.restriction,"data-testid":`consent-widget-restriction-${n.name}`,id:`c15t-restriction-${n.name}`,children:"Your saved choice is restricted by the current privacy settings."}):null,t(b,{className:d?void 0:o.content,"data-testid":`consent-widget-accordion-content-${n.name}`,innerClassName:d?void 0:o.contentInner,innerSlotKey:"accordion.contentInner",slotKey:"accordion-item.content",viewportClassName:d?void 0:o.contentViewport,viewportSlotKey:"accordion.contentViewport",children:[r,e(h,{category:n.name,noStyle:d})]})]})},$=()=>{let t=m(p(),e=>e.displayedCategories),o=g(),n=u(),i=function(e){if("necessary"===e)return!1;let t=o?.categories[e];return t?.value===!0&&(n[e]?.length??0)>0},{noStyle:r,onToggleItem:a,openValues:s}=A(),{consentTypes:l}=d();return c(()=>t.flatMap(e=>C.filter(t=>t.name===e)),[t]).map(t=>e(V,{consent:t,description:l[t.name]?.description??t.description,noStyle:r,onToggleItem:a,open:s.includes(t.name),restricted:i(t.name),title:l[t.name]?.title??t.name.replace(/_/gu," ").replace(/\b\w/gu,e=>e.toUpperCase())},t.name))},k=i(({className:t,...n},i)=>e(f.Root,{ref:i,className:[o.item,t].filter(Boolean).join(" "),noStyle:!0,...n}));k.displayName="ConsentWidgetAccordionItem";let x=N,R=S,M=b,L=T,P=j,E=W,q=$,z=k,B=h;export{P as Accordion,L as AccordionArrow,M as AccordionContent,z as AccordionItem,q as AccordionItems,R as AccordionTrigger,x as AccordionTriggerInner,j as ConsentWidgetAccordion,T as ConsentWidgetAccordionArrow,b as ConsentWidgetAccordionContent,k as ConsentWidgetAccordionItem,$ as ConsentWidgetAccordionItems,S as ConsentWidgetAccordionTrigger,N as ConsentWidgetAccordionTriggerInner,W as ConsentWidgetSwitch,h as ConsentWidgetVendorList,E as Switch,B as VendorList};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import r from"@c15t/ui/styles/components/consent-banner";import{forwardRef as o,isValidElement as t}from"react";import{Slot as s}from"../../shared/libs/slot.js";import{useActiveUI as n}from"../../../hooks.js";import{useScrollLock as l}from"../../../hooks/use-scroll-lock.js";import{useTheme as a}from"../../../hooks/use-theme.js";import{useUIConfig as i}from"../../../ui-config-context.js";import{cnExt as m}from"../../../utils/cn.js";import{mergeSlotProps as c}from"../../../utils/merge-slot-props.js";let p=o(({className:o,style:p,noStyle:f,asChild:y,children:d,...u},v)=>{let h=n(),{disableAnimation:j,noStyle:b,scrollLock:k}=a(),{components:N}=i(),g="banner"===h,x=c(N?.banner?.overlay,{baseClassName:r.overlay,className:o,noStyle:b||f,style:p,...u}),C=b||f||j?void 0:`${r.overlayVisible} ${r.overlayEntering}`,O=m(x.className,C);if(l(!!(g&&k)),!(g&&k))return null;let B={...x,"aria-hidden":!0,className:O,"data-testid":"consent-banner-overlay"};return y&&t(d)?e(s,{ref:v,...B,children:d}):e("div",{ref:v,...B,children:d})});p.displayName="ConsentBannerOverlay";let f=p;export{p as ConsentBannerOverlay,f as Overlay};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{Fragment as
|
|
2
|
+
import{Fragment as o,jsx as t,jsxs as e}from"react/jsx-runtime";import r from"@c15t/ui/styles/components/consent-banner";import{forwardRef as n,useMemo as i}from"react";import{useHeadlessConsentUI as a}from"../../../component-hooks/use-headless-consent-ui.js";import{ConsentTrackingContext as s}from"../../../context/consent-tracking-context.js";import{LocalThemeContext as l}from"../../../context/theme-context.js";import{useActiveUI as c,useHasConsentUI as m,useModel as p,usePolicyRule as d,useTranslations as u}from"../../../hooks.js";import{useTextDirection as f}from"../../../hooks/use-text-direction.js";import{useUIConfig as b}from"../../../ui-config-context.js";import{defaultTranslationConfig as v}from"../../../utils/default-translation-config.js";import{mergeSlotProps as g}from"../../../utils/merge-slot-props.js";import{ConsentBannerSurfaceContext as h,mirrorDefaultPosition as j,useConsentBannerSurface as k}from"../surface-context.js";import{Overlay as x}from"./overlay.js";let N=["opt-in","opt-out"],S=n(({asChild:n,children:i,className:a,style:s,className:l,disableAnimation:h,noStyle:S,models:y=N,...C},$)=>{let L=c(),{components:P}=b(),R=m(),B=p()??"opt-in",F=d(),A=k(),E=u(),V=f(E?.language??v.defaultLanguage),q=j(A.position,A.positionSource,A.variant,V),w=R&&"banner"===L&&y.includes(B),z=g(P?.banner?.root,{baseClassName:r.root,className:a||l,noStyle:S,style:s,...C}),D=S?z.className||"":`${z.className||""} ${h?"":`${r.bannerVisible} ${r.bannerEntering}`}`;return w?e(o,{children:[t(x,{}),t("div",{ref:$,...z,className:D,"data-variant":A.variant,"data-position":q,"data-blocking":A.blocking?"true":void 0,"data-prompt":F.prompt,"data-model":F.model,"data-testid":"consent-banner-root",dir:V,children:i})]}):null}),y=({children:o,className:e,noStyle:r,disableAnimation:n,scrollLock:c,trapFocus:m,models:p,uiSource:d,variant:u,position:f,blocking:b,...v})=>{let{banner:g}=a({prompt:{blocking:b,position:f,scrollLock:c,trapFocus:m,variant:u}}),j=g.scrollLock,k=g.trapFocus,x=i(()=>({disableAnimation:n,noStyle:r,scrollLock:j,trapFocus:k}),[n,r,j,k]),N=i(()=>({blocking:g.blocking,position:g.position,positionSource:g.positionSource,variant:g.variant}),[g.blocking,g.position,g.positionSource,g.variant]),y=i(()=>({uiSource:d??"banner"}),[d]);return t(s.Provider,{value:y,children:t(l.Provider,{value:x,children:t(h.Provider,{value:N,children:t(S,{disableAnimation:n,className:e,noStyle:r,models:p,...v,children:o})})})})};S.displayName="ConsentBannerRootChildren";let C=y;export{y as ConsentBannerRoot,C as Root};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as t}from"react/jsx-runtime";import n from"@c15t/ui/styles/components/consent-actions";import o from"@c15t/ui/styles/components/consent-banner";import{forwardRef as r,useRef as
|
|
1
|
+
import{jsx as e,jsxs as t}from"react/jsx-runtime";import n from"@c15t/ui/styles/components/consent-actions";import o from"@c15t/ui/styles/components/consent-banner";import{forwardRef as r,isValidElement as s,useRef as a}from"react";import{useHeadlessConsentUI as i}from"../../component-hooks/use-headless-consent-ui.js";import{useTranslations as l}from"../../component-hooks/use-translations.js";import{useComposedRefs as c}from"../shared/libs/compose-refs.js";import{Slot as d}from"../shared/libs/slot.js";import{usePolicyRule as m,useSetActiveUI as p}from"../../hooks.js";import{useFocusTrap as u}from"../../hooks/use-focus-trap.js";import{useTheme as b}from"../../hooks/use-theme.js";import{useUIConfig as h}from"../../ui-config-context.js";import{getSlotProps as f,mergeSlotProps as C}from"../../utils/merge-slot-props.js";import{Box as B}from"../shared/primitives/box.js";import{ConsentButton as g}from"../shared/primitives/button.js";import{InlineLegalLinks as y}from"../shared/primitives/legal-links/index.js";import{useConsentBannerSurface as j}from"./surface-context.js";import{useBannerCopy as N}from"./use-banner-copy.js";let k={"opt-out":"Do not sell or share my data",preferences:"Manage preferences"},x=r(({children:t,asChild:n,...r},a)=>{let{title:i}=N();return e(B,{ref:a,baseClassName:o.title,"data-testid":"consent-banner-title",slotKey:"banner.title",...r,asChild:!0,children:n&&s(t)?t:e("h2",{children:t??i})})});x.displayName="ConsentBannerTitle";let A=r(({children:n,legalLinks:r,asChild:a,className:i,style:l,noStyle:c,...m},p)=>{let{description:u}=N(),{components:f}=h(),{noStyle:B}=b(),g="banner",j=C(f?.description?.[g],{baseClassName:o.description,className:i,"data-context":g,"data-testid":"consent-banner-description",noStyle:c??B,style:l,...m});return a&&s(n)?e(d,{ref:p,...j,children:n}):t("div",{ref:p,...j,children:[n??u,e(y,{links:r,context:"banner",testIdPrefix:"consent-banner-legal-link"})]})});A.displayName="ConsentBannerDescription";let R=r(({children:t,className:n,style:r,...s},a)=>{let{components:i}=h(),{noStyle:l}=b(),c=C(i?.banner?.actions,{baseClassName:n,noStyle:l,style:r,...s});return e(B,{ref:a,baseClassName:o.footer,"data-testid":"consent-banner-footer",slotKey:"banner.footer",...c,children:t})});R.displayName="ConsentBannerFooter";let S=r(({children:t,...n},r)=>{let{blocking:s}=j(),{title:i}=N(),l=a(null),d=c(l,r);return u(s,l),e(B,{ref:d,tabIndex:-1,baseClassName:o.card,"data-testid":"consent-banner-card",slotKey:"banner.card","aria-label":n["aria-label"]||i,"aria-modal":s?"true":void 0,role:s?"dialog":"region",...n,children:t})});S.displayName="ConsentBannerCard";let v=r(({children:t,...n},r)=>e(B,{ref:r,baseClassName:o.header,"data-testid":"consent-banner-header",slotKey:"banner.header",...n,children:t}));v.displayName="ConsentBannerHeader";let D=r(({children:t,...o},r)=>e(B,{ref:r,baseClassName:n.actionGroup,"data-testid":"consent-banner-footer-sub-group",slotKey:"banner.actionGroup",...o,children:t}));D.displayName="ConsentBannerFooterSubGroup";let z=r(({children:t,...n},o)=>{let{common:r}=l();return e(g,{ref:o,action:"reject-consent",consentAction:"reject","data-testid":"consent-banner-reject-button",closeConsentBanner:!0,...n,children:t??r.rejectAll})});z.displayName="ConsentBannerRejectButton";let F=r(({children:t,...n},o)=>{let{common:r}=l();return e(g,{ref:o,action:"open-consent-dialog",consentAction:"customize","data-testid":"consent-banner-customize-button",...n,children:t??r.customize})});F.displayName="ConsentBannerCustomizeButton";let K=r(({children:t,...n},o)=>{let{common:r}=l(),{noStyle:s}=b();return e(g,{ref:o,action:"accept-consent",consentAction:"accept","data-testid":"consent-banner-accept-button",closeConsentBanner:!0,noStyle:s,...n,children:t??r.acceptAll})});K.displayName="ConsentBannerAcceptButton";let G=r(({children:t,...n},o)=>{let{common:r}=l(),{noStyle:s}=b();return e(g,{ref:o,action:"dismiss-notice",consentAction:"dismiss","data-action":"dismiss","data-testid":"consent-banner-dismiss-button",noStyle:s,...n,children:t??r.acknowledge??r.dismiss})});G.displayName="ConsentBannerDismissButton";let L=r(({right:t,children:n,asChild:r,className:s,style:a,noStyle:i,onClick:c,...u},B)=>{let{rights:g}=l(),y=m(),{components:j}=h(),{noStyle:N}=b(),x=p(),A=("opt-out"===t?g?.optOut:g?.preferences)??k[t];return e(r?d:"button",{ref:B,type:r?void 0:"button",...C(f(j,"banner.rightLink"),{baseClassName:o.rightLink,className:s,noStyle:i??N,style:a}),"data-action":"right","data-right":t,"data-c15t-rights":y.rights.join(" "),"data-testid":`consent-banner-right-link-${t}`,onClick:e=>{c?.(e),e.defaultPrevented||x("dialog")},...u,children:n??A})});L.displayName="ConsentBannerRightLink";let H=r(({rights:t,children:n,...r},s)=>{let{banner:a}=i(),l=(t??a.preferenceControls).filter(e=>"disclosure"!==e);return void 0===n&&0===l.length?null:e(B,{ref:s,baseClassName:o.rights,"data-testid":"consent-banner-rights",slotKey:"banner.rights",...r,children:n??l.map(t=>e(L,{right:t},t))})});H.displayName="ConsentBannerRights";let T=x,I=A,P=R,w=D,M=S,O=v,$=z,q=F,E=K,J=G,Q=H,U=L;export{E as AcceptButton,M as Card,K as ConsentBannerAcceptButton,S as ConsentBannerCard,F as ConsentBannerCustomizeButton,A as ConsentBannerDescription,G as ConsentBannerDismissButton,R as ConsentBannerFooter,D as ConsentBannerFooterSubGroup,v as ConsentBannerHeader,z as ConsentBannerRejectButton,L as ConsentBannerRightLink,H as ConsentBannerRights,x as ConsentBannerTitle,q as CustomizeButton,I as Description,J as DismissButton,P as Footer,w as FooterSubGroup,O as Header,$ as RejectButton,U as RightLink,Q as Rights,T as Title};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useMemo as e}from"react";let o=function(...e){return o=>{for(let s of e){if("function"==typeof s){s(o);continue}s&&"current"in s&&(s.current=o)}}},s=function(s,r){return e(()=>o(s,r),[s,r])};export{o as composeRefs,s as useComposedRefs};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createElement as e,forwardRef as t,isValidElement as r}from"react";let
|
|
1
|
+
import{createElement as e,forwardRef as t,isValidElement as r}from"react";import{composeRefs as o}from"./compose-refs.js";let f=function(e,t){return"function"!=typeof e?t:"function"!=typeof t?e:r=>{t(r),e(r)}},n=function(e,t){let r=Object.getOwnPropertyDescriptor(e,t)?.get;return"function"==typeof r&&!0===r.isReactWarning},s=t(({children:t,...s},p)=>{if(!r(t))return null;let l=t.props,i=n(t.props,"ref")?t.ref:n(t,"ref")?t.props.ref:t.props.ref??t.ref,c={...s,...l,className:[s.className,l.className].filter(Boolean).join(" "),ref:o(p,i),style:{...s.style,...l.style}};for(let[e,t]of Object.entries(s))/^on[A-Z]/u.test(e)&&(c[e]=f(t,l[e]));return e(t.type,{key:t.key??void 0,...c})});s.displayName="Slot";export{s as Slot};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as t}from"react/jsx-runtime";import{forwardRef as o,useCallback as e}from"react";import{useIdleDialogWarming as n,warmDialogChunk as r}from"../../../chunk-warming.js";import{
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{forwardRef as o,useCallback as e}from"react";import{useIdleDialogWarming as n,warmDialogChunk as r}from"../../../chunk-warming.js";import{toSaveUISource as i,useConsentTracking as a}from"../../../context/consent-tracking-context.js";import{useConsentSaveAction as s}from"../../../draft-context.js";import{useDismissNotice as c,useSetActiveUI as m}from"../../../hooks.js";import{useTheme as d}from"../../../hooks/use-theme.js";import{useUIConfig as l}from"../../../ui-config-context.js";import{getSlotProps as u,mergeSlotProps as f}from"../../../utils/merge-slot-props.js";import{Slot as p}from"../libs/slot.js";import*as v from"../ui/button/index.js";let y=["primary","secondary","neutral","consentAction","isPrimary","performDefaultAction"],b=function(t){if(t.variant||t.mode)return{mode:t.mode??"stroke",variant:t.variant??"neutral"};let o=t.theme?.consentActions,e=[t.consentAction&&"save"!==t.consentAction?o?.[t.consentAction]:void 0,t.isPrimary?o?.primary:void 0,o?.default,{mode:"stroke",variant:t.isPrimary?"primary":"neutral"}];return{mode:e.find(t=>t?.mode)?.mode??"stroke",variant:e.find(t=>t?.variant)?.variant??"neutral"}},j=o(({asChild:o,className:j,style:k,noStyle:g,action:h,slotKey:x,baseClassName:C,variant:P,mode:A,size:E="small",consentAction:w,isPrimary:N,onClick:F,onFocus:S,onPointerEnter:q,closeConsentBanner:B=!1,closeConsentDialog:O=!1,performDefaultAction:z=!0,category:D,...V},G)=>{let H=s(),{uiSource:I}=a(),J=e(t=>H(t,i(I)),[H,I]),K=m(),L=c(),{noStyle:M,theme:Q}=d(),{components:R}=l(),T=b({consentAction:w,isPrimary:N,mode:A,theme:Q,variant:P}),U="primary"===T.variant?"button.primary":"button.secondary",W=f(u(R,x??U),{baseClassName:[v.buttonVariants({mode:T.mode,size:E,variant:T.variant}).root(),C],className:j,noStyle:M||g,style:{...k}});if(!D&&"set-consent"===h)throw Error("Category is required for set-consent action");let X=e(t=>{if(F?.(t),t.defaultPrevented)return;let o="accept-consent"===h||"reject-consent"===h||"custom-consent"===h;if((B||O)&&!o&&K("none"),"open-consent-dialog"===h&&K("dialog"),z&&"open-consent-dialog"!==h)switch(h){case"accept-consent":J("all");break;case"reject-consent":J("none");break;case"custom-consent":J();break;case"dismiss-notice":L();break;case"set-consent":if(!D)throw Error("Category is required for set-consent action");J({[D]:!0})}},[B,O,F,J,K,h,D,L,z]),Y="open-consent-dialog"===h;n(Y);let Z=S??W.onFocus,$=q??W.onPointerEnter,_=e(t=>{Z?.(t),Y&&r()},[Z,Y]),tt=e(t=>{$?.(t),Y&&r()},[$,Y]),to=Object.fromEntries(Object.entries(V).filter(([t])=>!y.includes(t))),te=!(M||g);return t(o?p:"button",{ref:G,type:o?void 0:"button","data-variant":te?T.variant:void 0,"data-mode":te?T.mode:void 0,"data-size":te?E:void 0,"data-action":w,...W,onClick:X,onFocus:_,onPointerEnter:tt,...to})});j.displayName="ConsentButton";export{j as ConsentButton};
|
|
@@ -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{getDialogState as o,isDialogDismissKey as a}from"@c15t/ui/primitives/dialog";import{createContext as
|
|
2
|
+
import{jsx as t}from"react/jsx-runtime";import{getDataDisabled as e}from"@c15t/ui/primitives/data-state";import{getDialogState as o,isDialogDismissKey as a}from"@c15t/ui/primitives/dialog";import{firstTabbable as l}from"@c15t/ui/utils/dom";import{createContext as i,forwardRef as r,useContext as n,useEffect as s,useId as d,useMemo as u,useRef as c}from"react";import{createPortal as g}from"react-dom";import{Slot as m}from"../../libs/slot.js";import{useControllableState as p}from"../../libs/use-controllable-state.js";import{useFocusTrap as f}from"../../../../hooks/use-focus-trap.js";import{useScrollLock as b}from"../../../../hooks/use-scroll-lock.js";let D=i(null),y=function(){let t=n(D);if(!t)throw Error("Dialog components must be used within DialogRoot");return t},h=({children:e,defaultOpen:o=!1,onOpenChange:a,open:l})=>{let i=d().replace(/:/gu,""),r=c(null),[n,g]=p({defaultValue:o,onChange:a,value:l});s(()=>{if("u">typeof document){if(n){r.current=document.activeElement;return}r.current?.focus()}},[n]);let m=u(()=>({contentId:`c15t-dialog-content-${i}`,descriptionId:`c15t-dialog-description-${i}`,open:n,restoreFocusRef:r,setOpen:g,titleId:`c15t-dialog-title-${i}`}),[n,i,r,g]);return t(D.Provider,{value:m,children:e})},v=r(({asChild:e,children:a,onClick:l,...i},r)=>{let{open:n,setOpen:s}=y();return t(e?m:"button",{"aria-expanded":n,"data-slot":"dialog-trigger","data-state":o(n),onClick:t=>{s(!0),l?.(t)},ref:r,...e?i:{type:"button",...i},children:a})});v.displayName="DialogTrigger";let C=({children:t})=>"u"<typeof document?null:g(t,document.body),k=r(({children:e,onClick:a,...l},i)=>{let{open:r,setOpen:n}=y();return r?t("button",{"aria-label":"Dismiss dialog","data-slot":"dialog-overlay","data-state":o(r),onClick:t=>{n(!1),a?.(t)},ref:i,tabIndex:-1,type:"button",...l,children:e}):null});k.displayName="DialogOverlay";let T=r(({children:e,closeOnOutsideClick:i=!0,initialFocusRef:r,onKeyDown:n,onMouseDown:d,...u},g)=>{let{contentId:m,descriptionId:p,open:D,setOpen:h,titleId:v}=y(),C=c(null);return(f(D,C,{initialFocus:"first-tabbable"}),b(D),s(()=>{if(D){let t=C.current,e=r?.current??(t?l(t):void 0)??t;e?.focus()}},[r,D]),D)?t("dialog",{"aria-describedby":p,"aria-labelledby":v,"aria-modal":"true","data-slot":"dialog-content","data-state":o(D),id:m,...{onKeyDown:t=>{a(t.key)&&(t.preventDefault(),h(!1)),n?.(t)},onMouseDown:t=>{i&&t.target===t.currentTarget&&h(!1),d?.(t)}},ref:t=>{C.current=t,"function"==typeof g?g(t):g&&(g.current=t)},open:D,tabIndex:-1,...u,children:e}):null});T.displayName="DialogContent";let N=r(({children:e,...o},a)=>{let{titleId:l}=y();return t("h2",{ref:a,id:l,"data-slot":"dialog-title",...o,children:e})});N.displayName="DialogTitle";let j=r((e,o)=>{let{descriptionId:a}=y();return t("p",{ref:o,id:a,"data-slot":"dialog-description",...e})});j.displayName="DialogDescription";let x=r(({asChild:a,children:l,disabled:i,onClick:r,...n},s)=>{let{open:d,setOpen:u}=y();return t(a?m:"button",{"data-disabled":e(i),"data-slot":"dialog-close","data-state":o(d),disabled:i,onClick:t=>{i||u(!1),r?.(t)},ref:s,...a?n:{type:"button",...n},children:l})});x.displayName="DialogClose";export{x as Close,T as Content,j as Description,k as Overlay,C as Portal,h as Root,N as Title,v as Trigger};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as e,jsxs as r}from"react/jsx-runtime";import{forwardRef as o}from"react";let t=({title:t,iconPath:n})=>{let i=o((o,i)=>r("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,ref:i,...o,children:[t?e("title",{children:t}):null,n]}));return i.displayName=`${t??"Decorative"}Icon`,i};export{t as LucideIcon};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{createContext as
|
|
2
|
+
import{createContext as n,useContext as e}from"react";let t=n({}),o=()=>e(t),r=function(n){return"banner"===n||"dialog"===n||"widget"===n||"none"===n?n:void 0};export{t as ConsentTrackingContext,r as toSaveUISource,o as useConsentTracking};
|
package/dist/devtools.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e}from"react/jsx-runtime";import{createDevTools as t}from"@c15t/dev-tools";import{createElement as r,forwardRef as o,useCallback as n,useContext as s,useEffect as
|
|
2
|
+
import{jsx as e}from"react/jsx-runtime";import{createDevTools as t}from"@c15t/dev-tools";import{createElement as r,forwardRef as o,useCallback as n,useContext as s,useEffect as i,useLayoutEffect as l,useMemo as c,useRef as u}from"react";import{KernelContext as d,ProviderServicesContext as a}from"./context.js";import{useIsHydrated as f}from"./hooks/use-is-hydrated.js";let v=e=>{if(!e)throw Error("c15t: DevTools must be rendered inside <ConsentProvider> from @c15t/react.");return e},m=(e,t)=>{let r=f(),o=u(e);l(()=>{o.current=e},[e]);let n=r&&!t&&e?JSON.stringify([...new Set(e())].sort()):void 0;return c(()=>{if(void 0===n)return;let e=JSON.parse(n);return()=>o.current?.()??e},[n])},g=(e,t)=>{let r=u({clearRecords:e,getPresentation:t});l(()=>{r.current={clearRecords:e,getPresentation:t}},[e,t]);let o=void 0!==e,n=void 0!==t;return c(()=>({clearRecords:o?()=>r.current.clearRecords?.():void 0,getPresentation:n?()=>r.current.getPresentation?.():void 0}),[o,n])},C=({disabled:e=!1,clearRecords:r,getPresentation:o,defaultOpen:n,defaultTab:l,getConsentCategories:c,maxEvents:u,position:f,shadow:C})=>{let h=s(a),p=g(r??h?.clearRecords,o??h?.getPresentation),y=s(d),D=e?null:v(y),P=m(c??h?.getConsentCategories,e);return i(()=>{if(!D)return;let e=t({...p,defaultOpen:n,defaultTab:l,getConsentCategories:P,kernel:D,maxEvents:u,position:f,shadow:C});return()=>e.destroy()},[n,l,P,p,D,u,f,C]),null},h=C,p=C,y={height:"100%",minHeight:0,width:"100%"},D=o(function({disabled:r=!1,clearRecords:o,getPresentation:i,defaultTab:c,getConsentCategories:f,maxEvents:C,style:h,theme:p,...D},P){let T=s(a),S=g(o??T?.clearRecords,i??T?.getPresentation),R=s(d),j=r?null:v(R),k=m(f??T?.getConsentCategories,r),w=u(null),x=n(e=>{w.current=e;let t=((e,t)=>{if("function"==typeof e)return e(t);e&&(e.current=t)})(P,e);if("function"==typeof t)return()=>{w.current=null,t()}},[P]);return l(()=>{let e=w.current;if(!j||!e)return;let r=t({...S,container:e,defaultTab:c,embedded:!0,getConsentCategories:k,kernel:j,maxEvents:C});return()=>r.destroy()},[c,k,S,j,C]),e("div",{...D,ref:x,style:{...y,...p?{"--c15t-dev-tools-color-scheme":p}:void 0,...h}})}),P=(e={})=>{let{id:t="c15t",name:o="c15t",defaultOpen:n=!1,...s}=e;return{defaultOpen:n,id:t,name:o,render:(e,t)=>r(D,{...s,theme:("string"==typeof t?t:t?.theme)??s.theme})}},T=P;export{p as C15TDevTools,C as ConsentDevTools,h as DevTools,P as c15tDevtools,T as c15tDevtoolsPlugin,D as C15tTanStackDevtoolsPanel};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{saveConsentSurface as e}from"@c15t/core/surface-actions";import{createContext as t,useCallback as r,useContext as o}from"react";import{KernelContext as n,ProviderServicesContext as s}from"./context.js";import{useResolvedPresentation as a}from"./hooks.js";import{useCommittedRef as i}from"./hooks/use-committed-ref.js";let u=t(null),f={ok:!1},c=function(){let e=o(n);if(!e)throw Error("Consent drafts require a ConsentProvider.");return e},l=function(e){let t=i(c());return r(()=>t.current===e,[t,e])},d=async function(e,t,r,o){let{createPreferenceDraft:n}=await import("@c15t/core/preference-draft");return n(e,{defaults:t}).save({categories:r,uiSource:o})},m=function(){let t=c(),n=o(s),i=o(u),m=i?.kernel===t?i:null,v=a()?.preferences?.defaults,p=l(t);return r((r,o)=>{if(!p())return Promise.resolve(f);let s=n?.getConsentCategories(),a="all"===r||"none"===r;return e(t,()=>m&&(a||void 0===r)?m.save({categories:s,input:r,uiSource:o}):void 0===r?d(t,v,s,o):t.commands.save(r,{...void 0!==s&&{categories:s},...void 0!==o&&{uiSource:o}}),()=>void 0!==r||!m?.getState().isDirty)},[v,m,p,t,n])};export{u as DraftContext,f as REFUSED,m as useConsentSaveAction,c as useDraftKernel,l as useKernelGuard};
|
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{createPreferenceDraft as t}from"@c15t/core/preference-draft";import{useContext as r,useEffect as n,useMemo as s,useState as a,useSyncExternalStore as f}from"react";import{DraftContext as o,REFUSED as u,useDraftKernel as l,useKernelGuard as c}from"./draft-context.js";import{useResolvedPresentation as d}from"./hooks.js";let i=function(e,r){let[s,f]=a(()=>({draft:t(e,{defaults:r}),kernel:e}));if(n(()=>{s.draft.setDefaults(r)},[s.draft,r]),s.kernel===e)return s.draft;let o={draft:t(e,{defaults:r}),kernel:e};return f(o),o.draft},p=({children:t,initial:n})=>{let s=l(),a=r(o),f=d(),u=i(s,n??f?.preferences?.defaults),c=a&&!n&&a.kernel===s?a:u;return e(o.Provider,{value:c,children:t})},m=function(){let e=l(),t=r(o),n=i(e,d()?.preferences?.defaults);return t?.kernel===e?t:n},D=function(e){let t=f(e.subscribe,e.getState,e.getState),r=c(e.kernel);return s(()=>{let n=e=>(...t)=>{r()&&e(...t)};return{...t,acceptAll:n(e.acceptAll),rejectAll:n(e.rejectAll),reset:n(e.reset),save:()=>r()?e.save():Promise.resolve(u),set:n(e.set),setVendor:n(e.setVendor),update:n(e.update)}},[e,r,t])},C=function(){return m()},S=function(e,t){let r=()=>t(e.getState());return f(e.subscribe,r,r)},v=function(){return D(m())},j=function(){let{isDirty:e,isStale:t,reset:r,save:n,setVendor:a,vendors:f}=D(m());return s(()=>({isDirty:e,isStale:t,reset:r,save:n,setVendor:a,vendors:f}),[e,t,r,n,a,f])};export{p as ConsentDraftProvider,v as useConsentDraft,S as useConsentDraftSlice,C as useConsentDraftStore,j as useVendorDraft};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e}from"react/jsx-runtime";import{useCallback as
|
|
2
|
+
import{jsx as e}from"react/jsx-runtime";import{useCallback as r,useEffect as t,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},s=({runtime:s,children:l})=>{let[m,d]=o("purposes"),f=n(e=>s.subscribe(e),()=>s.iab,u),p=i(()=>{let e,r,t;return e=!1,r=!1,{actions:t=[],activate:()=>{e=!0,r=!1},deactivate:()=>{e=!1,queueMicrotask(()=>{if(!e)for(let e of(r=!0,t.splice(0)))e.cancel()})},isClosed:()=>r,runtime:s}},[s]),v=c(p);t(()=>{p.activate();let e=()=>{let e=p.runtime.iab;if(e)for(let r of p.actions.splice(0))r.run(e)},r=p.runtime.subscribe(e);return e(),()=>{r(),p.deactivate()}},[p]);let b=r(e=>{let r=new Promise((r,t)=>{let i=()=>t(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),r()}catch(e){t(e)}},n=p.runtime.iab;n?o(n):p.actions.push({cancel:i,run:o})});return r.catch(()=>void 0),r},[v,p]),x=i(()=>({handle:f,run:b,setTab:d,tab:m}),[f,b,m]);return e(a.Provider,{value:x,children:l})};export{s as ExternalIABProvider};
|
package/dist/gpp.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{createGPP as t}from"@c15t/iab/gpp";import{useContext as r,useEffect as e}from"react";import{KernelContext as o}from"./context.js";let n=({cmpId:n,mspaMode:i,optOutCategories:s,tcf:l,usApproach:c,usFallback:p})=>{let m=r(o);if(!m)throw Error("c15t: ConsentGPP must be rendered inside <ConsentProvider> from @c15t/react.");let a=s?.join(",");return e(()=>{let r=null;try{r=t({cmpId:n,kernel:m,mspaMode:i,optOutCategories:a?.split(","),tcf:l,usApproach:c,usFallback:p})}catch(t){console.error("c15t: GPP was not installed.",t)}return()=>r?.dispose()},[a,n,m,i,l,c,p]),null};export{n as ConsentGPP};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{setupColorScheme as e}from"@c15t/ui/utils";import{useEffect as o}from"react";let r=function(r){o(()=>{if(null!==r)return e(r)},[r])};export{r as useColorScheme};
|
|
2
|
+
import{setupColorScheme as e}from"@c15t/ui/utils/color-scheme";import{useEffect as o}from"react";let r=function(r){o(()=>{if(null!==r)return e(r)},[r])};export{r as useColorScheme};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{setupFocusTrap as r}from"@c15t/ui/utils/dom";import{useEffect as t}from"react";let u=function(u,o){t(()=>{if(u&&o&&o.current)return r(o.current)},[u,o])};export{u as useFocusTrap};
|
|
2
|
+
import{setupFocusTrap as r}from"@c15t/ui/utils/dom";import{useEffect as t}from"react";let u=function(u,o,e){let c=e?.initialFocus;t(()=>{if(u&&o&&o.current)return r(o.current,{initialFocus:c})},[u,o,c])};export{u as useFocusTrap};
|
package/dist/hooks.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{applyExperimentAssignment as e,applyExperimentTheme as s,isVendorAllowed as o}from"@c15t/core";import{hasConsentPreferences as n,hasConsentUI as t,showConsentSurface as u}from"@c15t/core/surface-actions";import{useCallback as r,useContext as i,useMemo as a,useSyncExternalStore as c}from"react";import{ProviderServicesContext as f}from"./context.js";import{useGateSelector as l,useKernel as h,useKernelSelector as d}from"./kernel-selector.js";import{useUIConfig as m}from"./ui-config-context.js";let p=function(){let e=h();return c(s=>e.subscribe(s),()=>e.getSnapshot(),()=>e.getServerSnapshot())},k=function(e){return d(s=>s.effectivePermissions[e])},_=function(){return d(e=>e.effectivePermissions)},C=function(){return d(e=>e.overrides)},g=function(){return d(e=>e.user)},P=function(){return d(e=>e.location)},v=function(){return d(e=>e.translations)},S=function(){return d(e=>e.branding)},y=function(){return d(e=>"matched"===e.resolution.status)},I=function(){return d(t)},R=function(){return d(n)},b=function(){return d(e=>"matched"===e.resolution.status?e.model:null)},A=function(){return d(e=>e.activeUI)},x=function(){return d(e=>e.policyRule.scope)},U=function(){return d(e=>e.policyRule.scopeMode)},E=function(){return d(e=>e.iab)},T=function(){return d(e=>e.iab?.enabled??!1)},V=function(e){let s=String(e);return d(e=>e.iab?.vendorConsents[s]??!1)},D=function(e){return d(s=>s.iab?.purposeConsents[e]??!1)},O=function(e){return d(s=>s.iab?.specialFeatureOptIns[e]??!1)},B=function(){return d(e=>e.iab?.tcString??null)},H=[],L=function(){return d(e=>"iab"===e.model?H:e.vendors?.declared??H)},M=function(){return d(e=>e.vendorChoice)},N=function(e){return l((s,n)=>o(s,e,n))},j=function(){return h().set.registerConsentCategories},q=function(){return h().set.overrides},F=function(){let e=h(),s=i(f);return r(o=>{s?s.setLanguage(o):o!==e.getSnapshot().overrides.language&&(e.set.language(o),e.commands.init())},[e,s])},w=function(){let e=h();return r(s=>u(e,s),[e])},z=function(){return h().commands.save},G=function(){let e=h();return r(s=>e.events.on("permissions:changed",({snapshot:e})=>s(e.effectivePermissions)),[e])},J=function(){return h().commands.identify},K=function(){return h().commands.init},Q=function(){return d(e=>e.explicitChoice)},W=function(){return d(e=>e.effectivePermissions)},X=function(){return d(e=>e.promptRequirement)},Y=function(){return d(e=>e.noticeDismissal)},Z=function(){return d(e=>e.privacySignals)},$=function(){return d(e=>e.resolution)},ee=function(){return d(e=>e.policyRule)},es=function(){return d(e=>e.restrictions)},eo=function(){return h().commands.dismissNotice},en=function(){return d(e=>e.experiment)},et=function(){let{experiment:s,presentation:o}=m(),n=en();return a(()=>e(o,s,n),[o,s,n])},eu=function(){let{experiment:e,theme:o}=m(),n=en();return a(()=>s(o,e,n),[o,e,n])},er={},ei={},ea=function(){return et()?.prompt??er},ec=function(){return et()?.preferences??ei};export{A as useActiveUI,S as useBranding,k as useConsent,_ as useConsents,L as useDeclaredVendors,eo as useDismissNotice,W as useEffectivePermissions,en as useExperiment,Q as useExplicitChoice,y as useHasConsentPolicy,R as useHasConsentPreferences,I as useHasConsentUI,T as useIABEnabled,E as useIABSnapshot,J as useIdentify,K as useInit,P as useLocation,b as useModel,Y as useNoticeDismissal,C as useOverrides,x as usePolicyCategories,$ as usePolicyResolution,ee as usePolicyRule,U as usePolicyScopeMode,ec as usePreferencesPresentation,Z as usePrivacySignals,ea as usePromptPresentation,X as usePromptRequirement,D as usePurposeConsent,j as useRegisterConsentCategories,et as useResolvedPresentation,eu as useResolvedTheme,es as useRestrictions,z as useSaveConsents,w as useSetActiveUI,F as useSetLanguage,q as useSetOverrides,p as useSnapshot,O as useSpecialFeatureOptIn,G as useSubscribeToConsentChanges,B as useTCString,v as useTranslations,g as useUser,N as useVendorAllowed,M as useVendorChoice,V as useVendorConsent};
|