@c15t/react 3.1.0 → 3.2.0
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 +35 -5
- package/README.md +2 -2
- package/dist/component-hooks/use-consent-gate.js +2 -0
- package/dist/component-hooks/use-consent-labels.js +2 -0
- package/dist/component-hooks/use-consent-text-direction.js +2 -0
- package/dist/component-hooks/use-vendors-listed-under.js +2 -0
- package/dist/components/consent-gate/atoms.js +1 -1
- package/dist/components/consent-gate/consent-gate.js +1 -1
- package/dist/components/iab-prompt/atoms/root.js +1 -1
- package/dist/components/panel-trigger/atoms/toolbar.js +1 -1
- package/dist/components/preferences/atoms/button.js +1 -1
- package/dist/components/preferences/atoms/vendor-list.js +1 -1
- package/dist/components/prompt/atoms/root.js +1 -1
- package/dist/components/prompt/components.js +1 -1
- package/dist/components/prompt/policy-actions.js +1 -1
- package/dist/components/prompt/prompt.js +1 -1
- package/dist/components/prompt/surface-context.js +1 -1
- package/dist/components/prompt/use-banner-copy.js +1 -1
- package/dist/components/shared/streamed-surface.js +1 -1
- package/dist/headless.js +1 -1
- package/dist/index-parts/offline.js +1 -1
- package/dist/modes.js +1 -1
- package/dist/styles.tw3.css +2 -2
- package/dist/transports/offline.js +1 -1
- package/dist/version.js +1 -1
- package/dist-types/component-hooks/use-consent-gate.d.ts +102 -0
- package/dist-types/component-hooks/use-consent-labels.d.ts +32 -0
- package/dist-types/component-hooks/use-consent-text-direction.d.ts +22 -0
- package/dist-types/component-hooks/use-vendors-listed-under.d.ts +30 -0
- package/dist-types/components/prompt/atoms/root.d.ts +3 -3
- package/dist-types/components/prompt/prompt.d.ts +4 -3
- package/dist-types/components/prompt/surface-context.d.ts +1 -14
- package/dist-types/components/prompt/use-banner-copy.d.ts +8 -3
- package/dist-types/components/shared/streamed-surface.d.ts +47 -10
- package/dist-types/headless.d.ts +10 -1
- package/dist-types/hooks/use-iab-policy-guard.d.ts +17 -1
- package/dist-types/hooks/use-scroll-lock.d.ts +16 -2
- package/dist-types/index-parts/offline.d.ts +1 -1
- package/dist-types/modes.d.ts +1 -1
- package/dist-types/module-hooks/script-loader.d.ts +9 -0
- package/dist-types/provider.d.ts +3 -3
- package/dist-types/transports/offline.d.ts +2 -2
- package/dist-types/version.d.ts +1 -1
- package/docs/README.md +35 -5
- package/docs/concepts/choose-your-setup.md +9 -9
- package/docs/concepts/consent-state.md +81 -9
- package/docs/concepts/data-fetching.md +30 -23
- package/docs/concepts/modes.md +87 -35
- package/docs/customization/recipes.md +4 -4
- package/docs/customization/stylesheets.md +42 -3
- package/docs/customization/tailwind.md +17 -34
- package/docs/customization/translations.md +18 -12
- package/docs/frameworks/react/clear-on-revocation.md +3 -2
- package/docs/frameworks/react/components/consent-banner.md +3 -3
- package/docs/frameworks/react/components/consent-provider.md +29 -29
- package/docs/frameworks/react/gpp.md +1 -1
- package/docs/frameworks/react/headless.md +146 -19
- package/docs/frameworks/react/hooks.md +2 -1
- package/docs/frameworks/react/iab.md +8 -1
- package/docs/frameworks/react/quickstart.md +2 -2
- package/docs/frameworks/react/rendering.md +1 -1
- package/docs/frameworks/react/translations.md +9 -9
- package/docs/frameworks/react/troubleshooting.md +1 -1
- package/docs/frameworks/react/upgrade-v3.md +39 -32
- package/docs/frameworks/react/vendor-consent.md +5 -0
- package/docs/guides/banner-experiments.md +3 -3
- package/docs/guides/troubleshooting.md +3 -2
- package/docs/integrations/activecampaign.md +297 -0
- package/docs/integrations/ada.md +396 -0
- package/docs/integrations/adobe-analytics.md +2 -2
- package/docs/integrations/adobe-target.md +460 -0
- package/docs/integrations/adroll.md +336 -0
- package/docs/integrations/ahrefs-analytics.md +2 -2
- package/docs/integrations/amazon-ads.md +424 -0
- package/docs/integrations/amplitude.md +2 -2
- package/docs/integrations/appcues.md +368 -0
- package/docs/integrations/attentive.md +313 -0
- package/docs/integrations/building-integrations.md +29 -16
- package/docs/integrations/clay.md +305 -0
- package/docs/integrations/clearbit.md +3 -3
- package/docs/integrations/cloudflare-web-analytics.md +2 -2
- package/docs/integrations/cloudflare-zaraz.md +2 -2
- package/docs/integrations/crisp.md +2 -2
- package/docs/integrations/customer-io.md +369 -0
- package/docs/integrations/databuddy.md +127 -52
- package/docs/integrations/default-com.md +497 -0
- package/docs/integrations/dynamic-yield.md +373 -0
- package/docs/integrations/fathom-analytics.md +2 -2
- package/docs/integrations/front-chat.md +2 -2
- package/docs/integrations/fullstory.md +298 -0
- package/docs/integrations/gainsight-px.md +418 -0
- package/docs/integrations/google-maps.md +2 -2
- package/docs/integrations/google-tag-manager.md +59 -2
- package/docs/integrations/google-tag.md +2 -2
- package/docs/integrations/gorgias.md +365 -0
- package/docs/integrations/heap.md +2 -2
- package/docs/integrations/hightouch.md +2 -2
- package/docs/integrations/hotjar.md +40 -26
- package/docs/integrations/hubspot.md +529 -0
- package/docs/integrations/insider.md +550 -0
- package/docs/integrations/intercom.md +2 -2
- package/docs/integrations/klaviyo.md +2 -2
- package/docs/integrations/linkedin-insights.md +2 -2
- package/docs/integrations/liveintent.md +327 -0
- package/docs/integrations/logrocket.md +2 -2
- package/docs/integrations/lucky-orange.md +336 -0
- package/docs/integrations/marketo.md +309 -0
- package/docs/integrations/matomo-analytics.md +2 -2
- package/docs/integrations/meta-pixel.md +2 -2
- package/docs/integrations/microsoft-clarity.md +2 -2
- package/docs/integrations/microsoft-uet.md +2 -2
- package/docs/integrations/mixpanel-analytics.md +2 -2
- package/docs/integrations/one-dollar-stats.md +2 -2
- package/docs/integrations/openai-pixel.md +2 -2
- package/docs/integrations/optimizely.md +411 -0
- package/docs/integrations/oracle-eloqua.md +301 -0
- package/docs/integrations/overview.md +128 -81
- package/docs/integrations/pendo.md +339 -0
- package/docs/integrations/pinterest-tag.md +2 -2
- package/docs/integrations/pirsch.md +2 -2
- package/docs/integrations/plausible-analytics.md +2 -2
- package/docs/integrations/posthog.md +2 -2
- package/docs/integrations/promptwatch.md +2 -2
- package/docs/integrations/rb2b.md +363 -0
- package/docs/integrations/reddit-pixel.md +2 -2
- package/docs/integrations/rudderstack.md +2 -2
- package/docs/integrations/rybbit-analytics.md +2 -2
- package/docs/integrations/salesforce-pardot.md +342 -0
- package/docs/integrations/segment.md +2 -2
- package/docs/integrations/sentry.md +2 -2
- package/docs/integrations/shopify.md +323 -0
- package/docs/integrations/snapchat-pixel.md +2 -2
- package/docs/integrations/statable-analytics.md +345 -0
- package/docs/integrations/the-trade-desk.md +328 -0
- package/docs/integrations/tiktok-pixel.md +2 -2
- package/docs/integrations/umami-analytics.md +2 -2
- package/docs/integrations/vector.md +333 -0
- package/docs/integrations/vercel-analytics.md +2 -2
- package/docs/integrations/vercel-speed-insights.md +7 -2
- package/docs/integrations/wisepops.md +416 -0
- package/docs/integrations/x-pixel.md +2 -2
- package/docs/integrations/youtube.md +2 -2
- package/docs/integrations/zendesk.md +359 -0
- package/package.json +10 -32
- package/dist/components/prompt/resolve-banner-primary-actions.js +0 -1
- package/dist-types/components/prompt/resolve-banner-primary-actions.d.ts +0 -14
package/dist/styles.tw3.css
CHANGED
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
.c15t-ui-legalLinks-h6W20:not(.headless){gap:var(--legal-links-gap);flex-wrap:wrap;align-items:center;display:flex}.c15t-ui-legalLink-bBp6b:not(.headless){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-bBp6b:not(.headless){color:var(--legal-links-focus-color-dark)}.c15t-ui-legalLink-bBp6b:not(.headless):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-bBp6b:not(.headless):focus{outline:none;text-decoration:underline}@media (prefers-reduced-motion:reduce){.c15t-ui-legalLink-bBp6b:not(.headless){transition:none}}
|
|
64
64
|
|
|
65
65
|
/* components/panel-trigger */
|
|
66
|
-
.c15t-ui-trigger-Hjg5y{--cdt-size-sm:32px;--cdt-size-md:40px;--cdt-size-lg:48px;--cdt-bg:var(--c15t-surface,#fff);--cdt-bg-hover:var(--c15t-surface-hover,var(--cdt-bg));--cdt-border:var(--c15t-border,#e5e5e5);--cdt-shadow:var(--c15t-shadow-lg,0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a);--cdt-shadow-hover:var(--c15t-shadow-xl,0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a);--cdt-radius:var(--c15t-radius-full,9999px);--cdt-offset:var(--c15t-space-md,20px);--cdt-transition-duration:var(--c15t-duration-slow);--cdt-transition-easing:var(--c15t-easing-out);--cdt-snap-duration:var(--c15t-duration-slow);--cdt-snap-easing:var(--c15t-easing-in-out);--cdt-icon-color:var(--c15t-text,#171717);--cdt-focus-ring:var(--c15t-primary,#3b82f6);z-index:9999;width:var(--cdt-size-md);height:var(--cdt-size-md);border:1px solid var(--cdt-border);border-radius:var(--cdt-radius);background:var(--cdt-bg);box-shadow:var(--cdt-shadow);cursor:grab;transition:transform var(--cdt-transition-duration) var(--cdt-transition-easing), box-shadow var(--cdt-transition-duration) var(--cdt-transition-easing), background var(--cdt-transition-duration) var(--cdt-transition-easing);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;will-change:transform;justify-content:center;align-items:center;margin:0;padding:0;display:flex;position:fixed}@media (hover:hover) and (pointer:fine){.c15t-ui-trigger-Hjg5y:hover{background:var(--cdt-bg-hover);box-shadow:var(--cdt-shadow-hover)}}.c15t-ui-trigger-Hjg5y:active,.c15t-ui-trigger-Hjg5y.c15t-ui-dragging-R4Cm2,.c15t-ui-trigger-Hjg5y[data-dragging]{cursor:grabbing;transform:scale(1.02)}.c15t-ui-trigger-Hjg5y:focus{outline:none}.c15t-ui-trigger-Hjg5y:focus-visible{outline:2px solid var(--cdt-focus-ring);outline-offset:2px}.c15t-ui-trigger-Hjg5y[data-size=sm],.c15t-ui-sm-sud0y{width:var(--cdt-size-sm);height:var(--cdt-size-sm)}.c15t-ui-trigger-Hjg5y[data-size=md],.c15t-ui-md-CZrWA{width:var(--cdt-size-md);height:var(--cdt-size-md)}.c15t-ui-trigger-Hjg5y[data-size=lg],.c15t-ui-lg-fGzix{width:var(--cdt-size-lg);height:var(--cdt-size-lg)}.c15t-ui-icon-dD5R6{width:50%;height:50%;color:var(--cdt-icon-color);pointer-events:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.c15t-ui-icon-dD5R6 svg{width:100%;height:100%}.c15t-ui-text-Garil{margin-left:var(--c15t-space-xs,6px);font-family:var(--c15t-font-family,system-ui, sans-serif);font-size:var(--c15t-font-size-sm,14px);font-weight:var(--c15t-font-weight-medium,500);color:var(--cdt-icon-color);white-space:nowrap;pointer-events:none;line-height:1}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil){width:auto;height:auto;padding:var(--c15t-space-sm,8px) var(--c15t-space-md,16px);border-radius:var(--c15t-radius-lg,12px);gap:var(--c15t-space-xs,6px)}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil) .c15t-ui-icon-dD5R6{width:16px;height:16px}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil)[data-size=sm],.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil).c15t-ui-sm-sud0y{padding:var(--c15t-space-xs,6px) var(--c15t-space-sm,10px)}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil)[data-size=sm] .c15t-ui-icon-dD5R6,.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil).c15t-ui-sm-sud0y .c15t-ui-icon-dD5R6{width:14px;height:14px}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil)[data-size=sm] .c15t-ui-text-Garil,.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil).c15t-ui-sm-sud0y .c15t-ui-text-Garil{font-size:var(--c15t-font-size-xs,12px)}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil)[data-size=lg],.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil).c15t-ui-lg-fGzix{padding:var(--c15t-space-md,12px) var(--c15t-space-lg,20px)}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil)[data-size=lg] .c15t-ui-icon-dD5R6,.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil).c15t-ui-lg-fGzix .c15t-ui-icon-dD5R6{width:20px;height:20px}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil)[data-size=lg] .c15t-ui-text-Garil,.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil).c15t-ui-lg-fGzix .c15t-ui-text-Garil{font-size:var(--c15t-font-size-md,16px)}.c15t-ui-bottomRight-RqjMF{right:var(--cdt-offset);bottom:var(--cdt-offset)}.c15t-ui-bottomLeft-J3DsX{bottom:var(--cdt-offset);left:var(--cdt-offset)}.c15t-ui-topRight-Ln04J{top:var(--cdt-offset);right:var(--cdt-offset)}.c15t-ui-topLeft-tpeaf{top:var(--cdt-offset);left:var(--cdt-offset)}.c15t-ui-snapping-YupfG{transition:top var(--cdt-snap-duration) var(--cdt-snap-easing), right var(--cdt-snap-duration) var(--cdt-snap-easing), bottom var(--cdt-snap-duration) var(--cdt-snap-easing), left var(--cdt-snap-duration) var(--cdt-snap-easing), transform var(--cdt-snap-duration) var(--cdt-snap-easing)}.c15t-ui-hidden-tV2GK{display:none}.c15t-dark .c15t-ui-trigger-Hjg5y{--cdt-bg:var(--c15t-surface,#262626);--cdt-bg-hover:var(--c15t-surface-hover,#404040);--cdt-border:var(--c15t-border,#404040);--cdt-icon-color:var(--c15t-text,#fafafa);--cdt-shadow:0 10px 15px -3px #0000004d, 0 4px 6px -4px #0000004d;--cdt-shadow-hover:0 20px 25px -5px #0006, 0 8px 10px -6px #0006}.c15t-ui-toolbar-gCKkL{--cdtt-size-sm:32px;--cdtt-size-md:40px;--cdtt-size-lg:48px;--cdtt-bg:var(--c15t-surface,#fff);--cdtt-bg-hover:var(--c15t-surface-hover,#f5f5f5);--cdtt-border:var(--c15t-border,#d4d4d4);--cdtt-primary:var(--c15t-primary,#16a779);--cdtt-primary-hover:var(--c15t-primary-hover,#128866);--cdtt-primary-text:var(--c15t-text-on-primary,#fff);--cdtt-icon-color:var(--c15t-text,#262626);--cdtt-focus-ring:var(--c15t-primary,#16a779);--cdtt-offset:var(--c15t-space-md,20px);--cdtt-transition-duration:var(--c15t-duration-fast,.16s);--cdtt-transition-easing:var(--c15t-easing-out,ease-out);--cdtt-shadow:var(--c15t-shadow-md,0 4px 10px #00000014, 0 1px 2px #0000000f);z-index:9999;width:max-content;color:var(--cdtt-icon-color);background:var(--cdtt-bg);border:1px solid var(--cdtt-border);border-radius:var(--c15t-radius-md,6px);box-shadow:var(--cdtt-shadow);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;will-change:transform;transition:transform var(--cdtt-transition-duration) var(--cdtt-transition-easing), box-shadow var(--cdtt-transition-duration) var(--cdtt-transition-easing), background var(--cdtt-transition-duration) var(--cdtt-transition-easing);align-items:stretch;margin:0;padding:0;display:inline-flex;position:fixed;overflow:hidden}.c15t-ui-toolbar-gCKkL.c15t-ui-bottomRight-RqjMF{right:max(var(--cdtt-offset), env(safe-area-inset-right,0px));bottom:max(var(--cdtt-offset), env(safe-area-inset-bottom,0px))}.c15t-ui-toolbar-gCKkL.c15t-ui-bottomLeft-J3DsX{bottom:max(var(--cdtt-offset), env(safe-area-inset-bottom,0px));left:max(var(--cdtt-offset), env(safe-area-inset-left,0px))}.c15t-ui-toolbar-gCKkL.c15t-ui-topRight-Ln04J{top:max(var(--cdtt-offset), env(safe-area-inset-top,0px));right:max(var(--cdtt-offset), env(safe-area-inset-right,0px))}.c15t-ui-toolbar-gCKkL.c15t-ui-topLeft-tpeaf{top:max(var(--cdtt-offset), env(safe-area-inset-top,0px));left:max(var(--cdtt-offset), env(safe-area-inset-left,0px))}.c15t-ui-toolbar-gCKkL.c15t-ui-dragging-R4Cm2{cursor:grabbing;box-shadow:var(--c15t-shadow-lg,0 10px 20px #00000024, 0 3px 6px #00000014)}.c15t-ui-toolbarVertical-MQ8bT{flex-direction:column}.c15t-ui-toolbarItem-OO8Dy{width:var(--cdtt-size-md);height:var(--cdtt-size-md);color:var(--cdtt-icon-color);border:0;border-inline-start:1px solid var(--cdtt-border);cursor:inherit;transition:color var(--cdtt-transition-duration) var(--cdtt-transition-easing), background var(--cdtt-transition-duration) var(--cdtt-transition-easing);background:0 0;border-radius:0;flex:none;justify-content:center;align-items:center;margin:0;padding:0;display:flex;position:relative}.c15t-ui-toolbarItem-OO8Dy:first-child{border-inline-start:0}.c15t-ui-toolbarVertical-MQ8bT .c15t-ui-toolbarItem-OO8Dy{border-top:1px solid var(--cdtt-border);border-inline-start:0}.c15t-ui-toolbarVertical-MQ8bT .c15t-ui-toolbarItem-OO8Dy:first-child{border-top:0}.c15t-ui-toolbar-gCKkL .c15t-ui-toolbarItem-OO8Dy.c15t-ui-sm-sud0y{width:var(--cdtt-size-sm);height:var(--cdtt-size-sm)}.c15t-ui-toolbar-gCKkL .c15t-ui-toolbarItem-OO8Dy.c15t-ui-md-CZrWA{width:var(--cdtt-size-md);height:var(--cdtt-size-md)}.c15t-ui-toolbar-gCKkL .c15t-ui-toolbarItem-OO8Dy.c15t-ui-lg-fGzix{width:var(--cdtt-size-lg);height:var(--cdtt-size-lg)}.c15t-ui-toolbarItem-OO8Dy[data-c15t-trigger-action=preferences]{color:var(--cdtt-primary-text);background:var(--cdtt-primary)}.c15t-ui-toolbarItem-OO8Dy[data-c15t-trigger-action=devtools][aria-expanded=true]{color:var(--cdtt-primary);background:var(--cdtt-bg-hover)}.c15t-ui-toolbarItem-OO8Dy:focus{outline:none}.c15t-ui-toolbarItem-OO8Dy:focus-visible{z-index:1;outline:2px solid var(--cdtt-focus-ring);outline-offset:-3px}.c15t-ui-toolbarItem-OO8Dy:disabled{cursor:not-allowed;opacity:.45}.c15t-ui-toolbarIcon-FpHKR{pointer-events:none;flex-shrink:0;justify-content:center;align-items:center;width:50%;height:50%;display:flex}.c15t-ui-toolbarIcon-FpHKR>span,.c15t-ui-toolbarIcon-FpHKR svg{width:100%;height:100%;display:flex}@media (hover:hover) and (pointer:fine){.c15t-ui-toolbarItem-OO8Dy:hover:not(:disabled){background:var(--cdtt-bg-hover)}.c15t-ui-toolbarItem-OO8Dy[data-c15t-trigger-action=preferences]:hover:not(:disabled){background:var(--cdtt-primary-hover)}}.c15t-ui-toolbarItem-OO8Dy:active:not(:disabled){box-shadow:inset 0 1px 3px #00000029}:is(.c15t-dark .c15t-ui-toolbar-gCKkL,.dark .c15t-ui-toolbar-gCKkL){--cdtt-bg:var(--c15t-surface,#262626);--cdtt-bg-hover:var(--c15t-surface-hover,#343434);--cdtt-border:var(--c15t-border,#525252);--cdtt-icon-color:var(--c15t-text,#fafafa);--cdtt-shadow:0 8px 18px #00000052, 0 2px 5px #00000038}.c15t-ui-trigger-Hjg5y[data-disable-animation],.c15t-ui-trigger-Hjg5y[data-disable-animation].c15t-ui-snapping-YupfG,.c15t-ui-toolbar-gCKkL[data-disable-animation],.c15t-ui-toolbar-gCKkL[data-disable-animation].c15t-ui-snapping-YupfG,.c15t-ui-toolbar-gCKkL[data-disable-animation] .c15t-ui-toolbarItem-OO8Dy{transition:none}@media (prefers-reduced-motion:reduce){.c15t-ui-trigger-Hjg5y,.c15t-ui-toolbar-gCKkL,.c15t-ui-toolbarItem-OO8Dy,.c15t-ui-snapping-YupfG{transition:none}}
|
|
66
|
+
.c15t-ui-trigger-Hjg5y{--cdt-size-sm:32px;--cdt-size-md:40px;--cdt-size-lg:48px;--cdt-bg:var(--c15t-surface,#fff);--cdt-bg-hover:var(--c15t-surface-hover,var(--cdt-bg));--cdt-border:var(--c15t-border,#e5e5e5);--cdt-shadow:var(--c15t-shadow-lg,0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a);--cdt-shadow-hover:var(--c15t-shadow-xl,0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a);--cdt-radius:var(--c15t-radius-full,9999px);--cdt-offset:var(--c15t-space-md,20px);--cdt-transition-duration:var(--c15t-duration-slow);--cdt-transition-easing:var(--c15t-easing-out);--cdt-snap-duration:var(--c15t-duration-slow);--cdt-snap-easing:var(--c15t-easing-in-out);--cdt-icon-color:var(--c15t-text,#171717);--cdt-focus-ring:var(--c15t-primary,#3b82f6);z-index:9999;width:var(--cdt-size-md);height:var(--cdt-size-md);border:1px solid var(--cdt-border);border-radius:var(--cdt-radius);background:var(--cdt-bg);box-shadow:var(--cdt-shadow);cursor:grab;transition:transform var(--cdt-transition-duration) var(--cdt-transition-easing), box-shadow var(--cdt-transition-duration) var(--cdt-transition-easing), background var(--cdt-transition-duration) var(--cdt-transition-easing);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;will-change:transform;justify-content:center;align-items:center;margin:0;padding:0;display:flex;position:fixed}@media (hover:hover) and (pointer:fine){.c15t-ui-trigger-Hjg5y:hover{background:var(--cdt-bg-hover);box-shadow:var(--cdt-shadow-hover)}}.c15t-ui-trigger-Hjg5y:active,.c15t-ui-trigger-Hjg5y.c15t-ui-dragging-R4Cm2,.c15t-ui-trigger-Hjg5y[data-dragging]{cursor:grabbing;transform:scale(1.02)}.c15t-ui-trigger-Hjg5y:focus{outline:none}.c15t-ui-trigger-Hjg5y:focus-visible{outline:2px solid var(--cdt-focus-ring);outline-offset:2px}.c15t-ui-trigger-Hjg5y[data-size=sm],.c15t-ui-sm-sud0y{width:var(--cdt-size-sm);height:var(--cdt-size-sm)}.c15t-ui-trigger-Hjg5y[data-size=md],.c15t-ui-md-CZrWA{width:var(--cdt-size-md);height:var(--cdt-size-md)}.c15t-ui-trigger-Hjg5y[data-size=lg],.c15t-ui-lg-fGzix{width:var(--cdt-size-lg);height:var(--cdt-size-lg)}.c15t-ui-icon-dD5R6{width:50%;height:50%;color:var(--cdt-icon-color);pointer-events:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.c15t-ui-icon-dD5R6 svg{width:100%;height:100%}.c15t-ui-text-Garil{margin-left:var(--c15t-space-xs,6px);font-family:var(--c15t-font-family,system-ui, sans-serif);font-size:var(--c15t-font-size-sm,.875rem);font-weight:var(--c15t-font-weight-medium,500);color:var(--cdt-icon-color);white-space:nowrap;pointer-events:none;line-height:1}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil){width:auto;height:auto;padding:var(--c15t-space-sm,8px) var(--c15t-space-md,16px);border-radius:var(--c15t-radius-lg,12px);gap:var(--c15t-space-xs,6px)}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil) .c15t-ui-icon-dD5R6{width:16px;height:16px}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil)[data-size=sm],.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil).c15t-ui-sm-sud0y{padding:var(--c15t-space-xs,6px) var(--c15t-space-sm,10px)}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil)[data-size=sm] .c15t-ui-icon-dD5R6,.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil).c15t-ui-sm-sud0y .c15t-ui-icon-dD5R6{width:14px;height:14px}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil)[data-size=sm] .c15t-ui-text-Garil,.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil).c15t-ui-sm-sud0y .c15t-ui-text-Garil{font-size:var(--c15t-font-size-xs,.75rem)}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil)[data-size=lg],.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil).c15t-ui-lg-fGzix{padding:var(--c15t-space-md,12px) var(--c15t-space-lg,20px)}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil)[data-size=lg] .c15t-ui-icon-dD5R6,.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil).c15t-ui-lg-fGzix .c15t-ui-icon-dD5R6{width:20px;height:20px}.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil)[data-size=lg] .c15t-ui-text-Garil,.c15t-ui-trigger-Hjg5y:has(.c15t-ui-text-Garil).c15t-ui-lg-fGzix .c15t-ui-text-Garil{font-size:var(--c15t-font-size-md,1rem)}.c15t-ui-bottomRight-RqjMF{right:var(--cdt-offset);bottom:var(--cdt-offset)}.c15t-ui-bottomLeft-J3DsX{bottom:var(--cdt-offset);left:var(--cdt-offset)}.c15t-ui-topRight-Ln04J{top:var(--cdt-offset);right:var(--cdt-offset)}.c15t-ui-topLeft-tpeaf{top:var(--cdt-offset);left:var(--cdt-offset)}.c15t-ui-snapping-YupfG{transition:top var(--cdt-snap-duration) var(--cdt-snap-easing), right var(--cdt-snap-duration) var(--cdt-snap-easing), bottom var(--cdt-snap-duration) var(--cdt-snap-easing), left var(--cdt-snap-duration) var(--cdt-snap-easing), transform var(--cdt-snap-duration) var(--cdt-snap-easing)}.c15t-ui-hidden-tV2GK{display:none}.c15t-dark .c15t-ui-trigger-Hjg5y{--cdt-bg:var(--c15t-surface,#262626);--cdt-bg-hover:var(--c15t-surface-hover,#404040);--cdt-border:var(--c15t-border,#404040);--cdt-icon-color:var(--c15t-text,#fafafa);--cdt-shadow:0 10px 15px -3px #0000004d, 0 4px 6px -4px #0000004d;--cdt-shadow-hover:0 20px 25px -5px #0006, 0 8px 10px -6px #0006}.c15t-ui-toolbar-gCKkL{--cdtt-size-sm:32px;--cdtt-size-md:40px;--cdtt-size-lg:48px;--cdtt-bg:var(--c15t-surface,#fff);--cdtt-bg-hover:var(--c15t-surface-hover,#f5f5f5);--cdtt-border:var(--c15t-border,#d4d4d4);--cdtt-primary:var(--c15t-primary,#16a779);--cdtt-primary-hover:var(--c15t-primary-hover,#128866);--cdtt-primary-text:var(--c15t-text-on-primary,#fff);--cdtt-icon-color:var(--c15t-text,#262626);--cdtt-focus-ring:var(--c15t-primary,#16a779);--cdtt-offset:var(--c15t-space-md,20px);--cdtt-transition-duration:var(--c15t-duration-fast,.16s);--cdtt-transition-easing:var(--c15t-easing-out,ease-out);--cdtt-shadow:var(--c15t-shadow-md,0 4px 10px #00000014, 0 1px 2px #0000000f);z-index:9999;width:max-content;color:var(--cdtt-icon-color);background:var(--cdtt-bg);border:1px solid var(--cdtt-border);border-radius:var(--c15t-radius-md,6px);box-shadow:var(--cdtt-shadow);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;will-change:transform;transition:transform var(--cdtt-transition-duration) var(--cdtt-transition-easing), box-shadow var(--cdtt-transition-duration) var(--cdtt-transition-easing), background var(--cdtt-transition-duration) var(--cdtt-transition-easing);align-items:stretch;margin:0;padding:0;display:inline-flex;position:fixed;overflow:hidden}.c15t-ui-toolbar-gCKkL.c15t-ui-bottomRight-RqjMF{right:max(var(--cdtt-offset), env(safe-area-inset-right,0px));bottom:max(var(--cdtt-offset), env(safe-area-inset-bottom,0px))}.c15t-ui-toolbar-gCKkL.c15t-ui-bottomLeft-J3DsX{bottom:max(var(--cdtt-offset), env(safe-area-inset-bottom,0px));left:max(var(--cdtt-offset), env(safe-area-inset-left,0px))}.c15t-ui-toolbar-gCKkL.c15t-ui-topRight-Ln04J{top:max(var(--cdtt-offset), env(safe-area-inset-top,0px));right:max(var(--cdtt-offset), env(safe-area-inset-right,0px))}.c15t-ui-toolbar-gCKkL.c15t-ui-topLeft-tpeaf{top:max(var(--cdtt-offset), env(safe-area-inset-top,0px));left:max(var(--cdtt-offset), env(safe-area-inset-left,0px))}.c15t-ui-toolbar-gCKkL.c15t-ui-dragging-R4Cm2{cursor:grabbing;box-shadow:var(--c15t-shadow-lg,0 10px 20px #00000024, 0 3px 6px #00000014)}.c15t-ui-toolbarVertical-MQ8bT{flex-direction:column}.c15t-ui-toolbarItem-OO8Dy{width:var(--cdtt-size-md);height:var(--cdtt-size-md);color:var(--cdtt-icon-color);border:0;border-inline-start:1px solid var(--cdtt-border);cursor:inherit;transition:color var(--cdtt-transition-duration) var(--cdtt-transition-easing), background var(--cdtt-transition-duration) var(--cdtt-transition-easing);background:0 0;border-radius:0;flex:none;justify-content:center;align-items:center;margin:0;padding:0;display:flex;position:relative}.c15t-ui-toolbarItem-OO8Dy:first-child{border-inline-start:0}.c15t-ui-toolbarVertical-MQ8bT .c15t-ui-toolbarItem-OO8Dy{border-top:1px solid var(--cdtt-border);border-inline-start:0}.c15t-ui-toolbarVertical-MQ8bT .c15t-ui-toolbarItem-OO8Dy:first-child{border-top:0}.c15t-ui-toolbar-gCKkL .c15t-ui-toolbarItem-OO8Dy.c15t-ui-sm-sud0y{width:var(--cdtt-size-sm);height:var(--cdtt-size-sm)}.c15t-ui-toolbar-gCKkL .c15t-ui-toolbarItem-OO8Dy.c15t-ui-md-CZrWA{width:var(--cdtt-size-md);height:var(--cdtt-size-md)}.c15t-ui-toolbar-gCKkL .c15t-ui-toolbarItem-OO8Dy.c15t-ui-lg-fGzix{width:var(--cdtt-size-lg);height:var(--cdtt-size-lg)}.c15t-ui-toolbarItem-OO8Dy[data-c15t-trigger-action=preferences]{color:var(--cdtt-primary-text);background:var(--cdtt-primary)}.c15t-ui-toolbarItem-OO8Dy[data-c15t-trigger-action=devtools][aria-expanded=true]{color:var(--cdtt-primary);background:var(--cdtt-bg-hover)}.c15t-ui-toolbarItem-OO8Dy:focus{outline:none}.c15t-ui-toolbarItem-OO8Dy:focus-visible{z-index:1;outline:2px solid var(--cdtt-focus-ring);outline-offset:-3px}.c15t-ui-toolbarItem-OO8Dy:disabled{cursor:not-allowed;opacity:.45}.c15t-ui-toolbarIcon-FpHKR{pointer-events:none;flex-shrink:0;justify-content:center;align-items:center;width:50%;height:50%;display:flex}.c15t-ui-toolbarIcon-FpHKR>span,.c15t-ui-toolbarIcon-FpHKR svg{width:100%;height:100%;display:flex}@media (hover:hover) and (pointer:fine){.c15t-ui-toolbarItem-OO8Dy:hover:not(:disabled){background:var(--cdtt-bg-hover)}.c15t-ui-toolbarItem-OO8Dy[data-c15t-trigger-action=preferences]:hover:not(:disabled){background:var(--cdtt-primary-hover)}}.c15t-ui-toolbarItem-OO8Dy:active:not(:disabled){box-shadow:inset 0 1px 3px #00000029}:is(.c15t-dark .c15t-ui-toolbar-gCKkL,.dark .c15t-ui-toolbar-gCKkL){--cdtt-bg:var(--c15t-surface,#262626);--cdtt-bg-hover:var(--c15t-surface-hover,#343434);--cdtt-border:var(--c15t-border,#525252);--cdtt-icon-color:var(--c15t-text,#fafafa);--cdtt-shadow:0 8px 18px #00000052, 0 2px 5px #00000038}.c15t-ui-trigger-Hjg5y[data-disable-animation],.c15t-ui-trigger-Hjg5y[data-disable-animation].c15t-ui-snapping-YupfG,.c15t-ui-toolbar-gCKkL[data-disable-animation],.c15t-ui-toolbar-gCKkL[data-disable-animation].c15t-ui-snapping-YupfG,.c15t-ui-toolbar-gCKkL[data-disable-animation] .c15t-ui-toolbarItem-OO8Dy{transition:none}@media (prefers-reduced-motion:reduce){.c15t-ui-trigger-Hjg5y,.c15t-ui-toolbar-gCKkL,.c15t-ui-toolbarItem-OO8Dy,.c15t-ui-snapping-YupfG{transition:none}}
|
|
67
67
|
|
|
68
68
|
/* components/prompt */
|
|
69
69
|
.c15t-ui-root-p7SV0:not(.headless){box-sizing:border-box;width:100%;z-index:var(--consent-banner-z-index);pointer-events:none;font-family:var(--consent-banner-font-family);line-height:var(--consent-banner-line-height);-webkit-text-size-adjust:var(--consent-banner-text-size-adjust);-webkit-font-smoothing:antialiased;tab-size:var(--consent-banner-tab-size);flex-direction:column;padding:1rem;display:flex;position:fixed}.c15t-ui-root-p7SV0:not(.headless)>*{pointer-events:auto}.c15t-ui-root-p7SV0:not(.headless)>.c15t-ui-cardShell-djyPy:not(.headless){pointer-events:none}.c15t-ui-cardShell-djyPy:not(.headless)>*,.c15t-ui-root-p7SV0[data-blocking=true]:not(.headless){pointer-events:auto}:is(.c15t-ui-bannerEnterActive-IytGL:not(.headless),.c15t-ui-bannerEnterFrom-BJMc7:not(.headless),.c15t-ui-bannerEnterTo-yatsy:not(.headless),.c15t-ui-bannerEntering-Cqrwl:not(.headless),.c15t-ui-bannerLeaveFrom-RVGoD:not(.headless),.c15t-ui-bannerVisible-AFth0:not(.headless)){opacity:1}.c15t-ui-bannerEntering-Cqrwl[data-entry=late]:not(.c15t-ui-bannerHidden-R0_3M):not(.headless){transition:opacity var(--consent-banner-entry-duration) var(--consent-banner-entry-timing)}@starting-style{.c15t-ui-bannerEntering-Cqrwl[data-entry=late]:not(.headless){opacity:0}}.c15t-ui-bannerLeaveActive-C7qrk:not(.headless){transition:opacity var(--consent-banner-animation-duration) var(--consent-banner-animation-timing)}.c15t-ui-bannerLeaveTo-dXNcB:not(.headless){opacity:0}.c15t-ui-bannerHidden-R0_3M:not(.headless){opacity:0;transition:opacity var(--consent-banner-animation-duration) var(--consent-banner-animation-timing)}@media (width>=640px){.c15t-ui-root-p7SV0:not(.headless){width:auto;padding:1.5rem}}.c15t-ui-root-p7SV0[data-position=bottom-left]:not(.headless){bottom:0;left:0}.c15t-ui-root-p7SV0[data-position=bottom-right]:not(.headless){bottom:0;right:0}.c15t-ui-root-p7SV0[data-position=top-left]:not(.headless){top:0;left:0}.c15t-ui-root-p7SV0[data-position=top-right]:not(.headless){top:0;right:0}.c15t-ui-root-p7SV0[data-variant=floating][data-position=bottom-center]:not(.headless){inset-inline:0;width:fit-content;margin-inline:auto;bottom:0}.c15t-ui-root-p7SV0[data-variant=floating][data-position=top-center]:not(.headless){inset-inline:0;width:fit-content;margin-inline:auto;top:0}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless){width:100%;padding:0;left:0;right:0}.c15t-ui-root-p7SV0[data-variant=bar][data-position=bottom]:not(.headless){top:auto;bottom:0}.c15t-ui-root-p7SV0[data-variant=bar][data-position=top]:not(.headless){top:0;bottom:auto}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-cardShell-djyPy{width:100%;max-width:none}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-card-lgjVq{box-shadow:var(--consent-banner-shadow);border-width:0;border-radius:0}.c15t-ui-root-p7SV0[data-variant=bar][data-position=bottom]:not(.headless) .c15t-ui-card-lgjVq{border-top-width:var(--consent-banner-border-width);padding-bottom:env(safe-area-inset-bottom);border-top-style:solid}.c15t-ui-root-p7SV0[data-variant=bar][data-position=top]:not(.headless) .c15t-ui-card-lgjVq{border-bottom-width:var(--consent-banner-border-width);padding-top:env(safe-area-inset-top);border-bottom-style:solid}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-cardShell-djyPy>[data-variant=banner-tag]{margin-inline-end:1.5rem}.c15t-ui-root-p7SV0[data-variant=bar][data-position=top]:not(.headless) .c15t-ui-cardShell-djyPy>[data-variant=banner-tag]{border-top-width:0;border-bottom-width:1px;border-radius:0 0 .75rem .75rem;order:1;margin-block:-1px 0}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe{flex-direction:column;align-items:stretch;gap:.75rem}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rights-wZg5K{flex-direction:column;align-items:flex-start}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe button[data-action]:not(.c15t-ui-rightLink-IXsSJ){flex:auto;width:100%;min-width:0}@media (width>=640px){.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe{flex-direction:row;justify-content:space-between;align-items:center}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rights-wZg5K{flex-flow:wrap;align-items:center;margin-inline-end:auto}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe>*{width:auto}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe button[data-action]:not(.c15t-ui-rightLink-IXsSJ){flex:none;width:auto}}@media (width>=1024px){.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-card-lgjVq{flex-direction:row;align-items:center;display:flex}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-header-S6GiJ{flex:auto;min-width:0}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe{background-color:#0000;width:auto;min-width:0}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-card-lgjVq>:not([hidden])~:not([hidden]){border-top-width:0}}:is(.c15t-ui-root-p7SV0[data-variant=floating][data-position$=-right]:not(.headless) .c15t-ui-cardShell-djyPy,.c15t-ui-root-p7SV0[data-variant=widget][data-position$=-right]:not(.headless) .c15t-ui-cardShell-djyPy){margin-left:auto;margin-right:0}:is(.c15t-ui-root-p7SV0[data-variant=floating][data-position$=-left]:not(.headless) .c15t-ui-cardShell-djyPy,.c15t-ui-root-p7SV0[data-variant=widget][data-position$=-left]:not(.headless) .c15t-ui-cardShell-djyPy){margin-left:0;margin-right:auto}.c15t-ui-root-p7SV0[data-variant=floating][data-position$=-center]:not(.headless) .c15t-ui-cardShell-djyPy{margin-left:auto;margin-right:auto}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless){padding:.75rem}@media (width>=640px){.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless){padding:1rem}}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-cardShell-djyPy{width:min(calc(100vw - 1.5rem), var(--consent-banner-widget-max-width))}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-header-S6GiJ{padding:.75rem}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-title-vm8nL{font-size:.875rem;line-height:1.25rem}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-description-s8Qhg{font-size:.8125rem;line-height:1.125rem}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-footer-JhJAe{gap:.5rem;padding:.75rem}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-footer-JhJAe button[data-action]:not(.c15t-ui-rightLink-IXsSJ){padding:.5rem .75rem}.c15t-ui-root-p7SV0[data-variant=widget]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rightLink-IXsSJ{font-size:.8125rem;line-height:1.125rem}.c15t-ui-root-p7SV0[data-variant=wall]:not(.headless){place-items:center;width:auto;padding:1rem;display:grid;inset:0}.c15t-ui-root-p7SV0[data-variant=wall]:not(.headless) .c15t-ui-cardShell-djyPy{width:min(calc(100vw - 2rem), var(--consent-banner-wall-max-width))}.c15t-ui-card-lgjVq:not(.headless){border-radius:var(--consent-banner-border-radius);border-width:var(--consent-banner-border-width);border-style:solid;border-color:var(--consent-banner-border-color);background-color:var(--consent-banner-background-color);width:100%;box-shadow:var(--consent-banner-shadow);position:relative;overflow:hidden}.c15t-ui-cardShell-djyPy:not(.headless){width:min(calc(100vw - 2rem), var(--consent-banner-max-width));flex-direction:column;display:flex;container:c15t-banner/inline-size}@media (width>=640px){.c15t-ui-cardShell-djyPy:not(.headless){width:min(calc(100vw - 3rem), var(--consent-banner-max-width))}}.c15t-dark .c15t-ui-card-lgjVq:not(.headless){background-color:var(--consent-banner-background-color-dark);border-color:var(--consent-banner-border-color-dark);box-shadow:var(--consent-banner-shadow-dark)}.c15t-dark .c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-card-lgjVq{box-shadow:var(--consent-banner-shadow-dark)}.c15t-ui-card-lgjVq:not(.headless)>:not([hidden])~:not([hidden]){border-top-width:var(--consent-banner-border-width);border-top-style:solid;border-color:var(--consent-banner-border-color)}.c15t-dark .c15t-ui-card-lgjVq:not(.headless)>:not([hidden])~:not([hidden]){border-color:var(--consent-banner-border-color-dark)}.c15t-ui-card-lgjVq:not(.headless):focus{outline:none}.c15t-ui-header-S6GiJ:not(.headless){color:var(--consent-banner-text-color);flex-direction:column;padding:1rem;display:flex}.c15t-dark .c15t-ui-header-S6GiJ:not(.headless){color:var(--consent-banner-text-color-dark)}@media (width>=640px){.c15t-ui-header-S6GiJ:not(.headless){padding:1.5rem}}.c15t-ui-header-S6GiJ:not(.headless)>:not([hidden])~:not([hidden]){--consent-banner-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--consent-banner-space-y-reverse)));margin-bottom:calc(.5rem * var(--consent-banner-space-y-reverse))}.c15t-ui-footer-JhJAe:not(.headless){background-color:var(--consent-banner-footer-background-color);flex-direction:column;justify-content:space-between;gap:.75rem;padding:1rem 1.25rem;display:flex}.c15t-dark .c15t-ui-footer-JhJAe:not(.headless){background-color:var(--consent-banner-footer-background-color-dark)}@media (width>=640px){.c15t-ui-footer-JhJAe:not(.headless){flex-direction:row}}.c15t-ui-rights-wZg5K:not(.headless){flex-flow:wrap;align-items:center;gap:.75rem;min-width:0;display:flex}.c15t-ui-rightLink-IXsSJ:not(.headless){width:auto;font:inherit;font-family:var(--consent-banner-font-family);letter-spacing:-.006em;color:var(--consent-banner-description-color);text-underline-offset:.15em;text-align:start;cursor:pointer;border-radius:var(--consent-banner-border-radius-sm);touch-action:manipulation;background:0 0;border:0;flex:none;align-self:center;margin:0;padding:0;font-size:.875rem;font-weight:400;line-height:1.25rem;text-decoration:underline;display:inline-block}.c15t-ui-rightLink-IXsSJ:not(.headless):hover{color:var(--consent-banner-text-color)}.c15t-ui-rightLink-IXsSJ:not(.headless):focus-visible{box-shadow:var(--button-shadow-primary-focus,0 0 0 2px var(--c15t-primary));outline:none}.c15t-dark .c15t-ui-rightLink-IXsSJ:not(.headless){color:var(--consent-banner-description-color-dark)}.c15t-dark .c15t-ui-rightLink-IXsSJ:not(.headless):hover{color:var(--consent-banner-text-color-dark)}.c15t-dark .c15t-ui-rightLink-IXsSJ:not(.headless):focus-visible{box-shadow:var(--button-shadow-primary-focus-dark,0 0 0 2px var(--c15t-primary))}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe{flex-direction:column;align-items:stretch;gap:.75rem}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rights-wZg5K{flex-direction:column;align-items:flex-start;gap:.5rem}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe button[data-action]:not(.c15t-ui-rightLink-IXsSJ){flex:auto;width:100%;min-width:0}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rightLink-IXsSJ{flex:none;align-self:flex-start;width:auto}@media (width>=640px){.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe{flex-direction:row;justify-content:space-between;align-items:center;gap:.75rem}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rights-wZg5K{flex-flow:wrap;flex:auto;align-items:center;gap:.75rem;min-width:0}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe>*{width:auto}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe button[data-action]:not(.c15t-ui-rightLink-IXsSJ){flex:none;width:auto}.c15t-ui-root-p7SV0[data-prompt=notice]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rightLink-IXsSJ{align-self:center}}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-header-S6GiJ,.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe{padding:.75rem 1rem}@media (width>=640px){.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-header-S6GiJ{padding:1rem 1.5rem}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe{padding:.75rem 1.5rem}}@media (width>=1024px){.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-header-S6GiJ{padding:.75rem 1.5rem}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-header-S6GiJ>:not([hidden])~:not([hidden]){margin-top:.25rem}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-title-vm8nL{line-height:1.25rem}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe{flex:none;gap:.75rem}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rights-wZg5K{flex-flow:row;flex:none;align-items:center;gap:.75rem;margin-inline-end:0}.c15t-ui-root-p7SV0[data-variant=bar]:not(.headless) .c15t-ui-footer-JhJAe .c15t-ui-rightLink-IXsSJ{white-space:nowrap;font-size:.8125rem;line-height:1.125rem}}.c15t-ui-description-s8Qhg:not(.headless){letter-spacing:-.006em;color:var(--consent-banner-description-color);font-size:.875rem;font-weight:400;line-height:1.25rem}.c15t-dark .c15t-ui-description-s8Qhg:not(.headless){color:var(--consent-banner-description-color-dark)}.c15t-ui-description-s8Qhg[data-context=banner]:not(.headless){letter-spacing:-.006em;color:var(--consent-banner-description-color);font-size:.875rem;font-weight:400;line-height:1.25rem}.c15t-dark .c15t-ui-description-s8Qhg[data-context=banner]:not(.headless){color:var(--consent-banner-description-color-dark)}.c15t-ui-description-s8Qhg[data-context=dialog]:not(.headless){color:var(--consent-dialog-muted-color);font-size:var(--consent-dialog-description-font-size);font-weight:var(--consent-dialog-description-font-weight);line-height:var(--consent-dialog-description-line-height)}.c15t-dark .c15t-ui-description-s8Qhg[data-context=dialog]:not(.headless){color:var(--consent-dialog-muted-color-dark)}.c15t-ui-description-s8Qhg[data-context=manager]:not(.headless){color:var(--consent-manager-text-muted-color)}.c15t-dark .c15t-ui-description-s8Qhg[data-context=manager]:not(.headless){color:var(--consent-manager-text-muted-color-dark)}.c15t-ui-title-vm8nL:not(.headless){letter-spacing:-.011em;color:var(--consent-banner-title-color);margin:0;font-size:1rem;font-weight:500;line-height:1.5rem}.c15t-dark .c15t-ui-title-vm8nL:not(.headless){color:var(--consent-banner-title-color-dark)}.c15t-ui-overlay-DoHh4:not(.headless){background-color:var(--consent-banner-overlay-background-color);z-index:var(--consent-banner-overlay-z-index);position:fixed;inset:0}:is(.c15t-ui-overlayEnterActive-YGn_8:not(.headless),.c15t-ui-overlayEnterFrom-OtDqj:not(.headless),.c15t-ui-overlayEnterTo-jcvNq:not(.headless),.c15t-ui-overlayEntering-p5Z3U:not(.headless),.c15t-ui-overlayLeaveFrom-EYTMT:not(.headless),.c15t-ui-overlayVisible-ywHQp:not(.headless)){opacity:1}.c15t-ui-overlayEntering-p5Z3U[data-entry=late]:not(.c15t-ui-overlayHidden-WgrJC):not(.headless){transition:opacity var(--consent-banner-entry-duration) var(--consent-banner-entry-timing)}@starting-style{.c15t-ui-overlayEntering-p5Z3U[data-entry=late]:not(.headless){opacity:0}}.c15t-ui-overlayLeaveActive-FvP5W:not(.headless){transition:opacity var(--consent-banner-animation-duration) var(--consent-banner-animation-timing)}.c15t-ui-overlayLeaveTo-V7aI7:not(.headless){opacity:0}.c15t-ui-overlayHidden-WgrJC:not(.headless){opacity:0;transition:opacity var(--consent-banner-animation-duration) var(--consent-banner-animation-timing)}.c15t-dark .c15t-ui-overlay-DoHh4:not(.headless){background-color:var(--consent-banner-overlay-background-color-dark)}@media (prefers-reduced-motion:reduce){.c15t-ui-bannerEntering-Cqrwl[data-entry=late]:not(.c15t-ui-bannerHidden-R0_3M):not(.headless),.c15t-ui-overlayEntering-p5Z3U[data-entry=late]:not(.c15t-ui-overlayHidden-WgrJC):not(.headless),.c15t-ui-bannerLeaveActive-C7qrk:not(.headless),.c15t-ui-bannerHidden-R0_3M:not(.headless),.c15t-ui-overlayLeaveActive-FvP5W:not(.headless),.c15t-ui-overlayHidden-WgrJC:not(.headless){transition:none;animation:none}}
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
.c15t-ui-manager-VznZW:not(.headless){width:100%;font-family:var(--consent-manager-font-family);line-height:var(--consent-manager-line-height);-webkit-font-smoothing:antialiased;position:relative}.c15t-ui-manager-VznZW:not(.headless)>:not([hidden])~:not([hidden]){--space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--space-y-reverse)));margin-bottom:calc(1.5rem * var(--space-y-reverse))}.c15t-ui-footer-fl3dz:not(.headless){padding:var(--consent-manager-footer-padding);background-color:var(--consent-manager-footer-background-color);justify-content:space-between;gap:1rem;display:flex}.c15t-dark .c15t-ui-footer-fl3dz:not(.headless){background-color:var(--consent-manager-footer-background-color-dark)}@media (width<=640px){.c15t-ui-footer-fl3dz:not(.headless){flex-direction:column}}@media (width>=640px){.c15t-ui-footer-fl3dz:not(.headless){flex-direction:row}}
|
|
79
79
|
|
|
80
80
|
/* components/panel */
|
|
81
|
-
.c15t-ui-root-I07nx:not(.headless){pointer-events:none;box-sizing:border-box;isolation:isolate;font-family:var(--consent-dialog-font-family);color:var(--c15t-text);line-height:var(--consent-dialog-line-height);-webkit-text-size-adjust:100%;tab-size:4;padding:var(--consent-dialog-card-padding-mobile);z-index:var(--consent-dialog-z-index);border-radius:var(--consent-dialog-card-radius);width:100%;height:var(--consent-dialog-height);background:0 0;border:0;justify-content:center;align-items:center;margin:0;display:flex;position:fixed;inset:0}.c15t-ui-root-I07nx:not(.headless)[data-blocking=true]{pointer-events:auto}.c15t-ui-root-I07nx:not(.headless)[dir=rtl]{direction:rtl}.c15t-ui-root-I07nx:not(.headless):focus{outline:none}@keyframes c15t-ui-consent-dialog-fade-in-I04Yp{0%{opacity:0}to{opacity:1}}@keyframes c15t-ui-consent-dialog-fade-out-t5_x2{0%{opacity:1}to{opacity:0}}.c15t-ui-overlay-c1WEk:not(.headless)[data-state=open]{animation:c15t-ui-consent-dialog-fade-in-I04Yp var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-ui-overlay-c1WEk:not(.headless)[data-state=closed]{animation:c15t-ui-consent-dialog-fade-out-t5_x2 var(--consent-dialog-animation-duration) ease-in}.c15t-ui-root-I07nx:not(.headless)[data-state=open]{animation:c15t-ui-consent-dialog-fade-in-I04Yp var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-ui-root-I07nx:not(.headless)[data-state=closed]{animation:c15t-ui-consent-dialog-fade-out-t5_x2 var(--consent-dialog-animation-duration) ease-in}.c15t-ui-root-I07nx[data-state=open] .c15t-ui-container-KTZOT:not(.headless){animation:c15t-ui-enter-vWVet var(--consent-dialog-animation-duration) var(--c15t-easing-spring)}.c15t-ui-root-I07nx[data-state=closed] .c15t-ui-container-KTZOT:not(.headless){animation:c15t-ui-exit-ioDiW var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-ui-root-I07nx:not(.headless)[data-mode=dialog]{justify-content:center;align-items:center}:is(.c15t-ui-root-I07nx:not(.headless)[data-mode=sidebar-left],.c15t-ui-root-I07nx:not(.headless)[data-mode=sidebar-right]){justify-content:flex-start;align-items:stretch;padding:0}.c15t-ui-root-I07nx:not(.headless)[data-mode=sidebar-right]{justify-content:flex-end}:is(.c15t-ui-root-I07nx:not(.headless)[data-mode=sidebar-left] .c15t-ui-container-KTZOT:not(.headless),.c15t-ui-root-I07nx:not(.headless)[data-mode=sidebar-right] .c15t-ui-container-KTZOT:not(.headless)){z-index:var(--consent-dialog-z-index);width:min(100%, var(--consent-dialog-max-width));height:100%;max-height:100%;position:relative}:is(.c15t-ui-root-I07nx:not(.headless)[data-mode=sidebar-left] .c15t-ui-card-ve6qQ:not(.headless),.c15t-ui-root-I07nx:not(.headless)[data-mode=sidebar-right] .c15t-ui-card-ve6qQ:not(.headless)){border-radius:0;width:100%;height:100%;max-height:100%;margin:0}@keyframes c15t-ui-consent-dialog-slide-in-left-N9bgJ{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes c15t-ui-consent-dialog-slide-out-left-hkcUP{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes c15t-ui-consent-dialog-slide-in-right-L40wh{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes c15t-ui-consent-dialog-slide-out-right-GjtEq{0%{transform:translate(0)}to{transform:translate(100%)}}.c15t-ui-root-I07nx[data-mode=sidebar-left][data-state=open] .c15t-ui-container-KTZOT:not(.headless){animation:c15t-ui-consent-dialog-slide-in-left-N9bgJ var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-ui-root-I07nx[data-mode=sidebar-left][data-state=closed] .c15t-ui-container-KTZOT:not(.headless){animation:c15t-ui-consent-dialog-slide-out-left-hkcUP var(--consent-dialog-animation-duration) ease-in}.c15t-ui-root-I07nx[data-mode=sidebar-right][data-state=open] .c15t-ui-container-KTZOT:not(.headless){animation:c15t-ui-consent-dialog-slide-in-right-L40wh var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-ui-root-I07nx[data-mode=sidebar-right][data-state=closed] .c15t-ui-container-KTZOT:not(.headless){animation:c15t-ui-consent-dialog-slide-out-right-GjtEq var(--consent-dialog-animation-duration) ease-in}.c15t-ui-dialogVisible-dkX4M:not(.headless){opacity:1;transition:opacity var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-ui-dialogHidden-uBU9W:not(.headless){opacity:0;transition:opacity var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-ui-contentVisible-KxAWb:not(.headless){opacity:1;transition:opacity var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing), transform var(--consent-dialog-animation-duration) var(--c15t-easing-spring);transform:scale(1)}.c15t-ui-contentHidden-LflgF:not(.headless){opacity:0;transition:opacity var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing), transform var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing);transform:scale(.95)}@starting-style{.c15t-ui-dialogEntering-aakBt:not(.headless){opacity:0}.c15t-ui-contentEntering-N3wrp:not(.headless){opacity:0;transform:scale(.95)}}@media (width>=640px){.c15t-ui-root-I07nx:not(.headless){padding:var(--consent-dialog-card-padding);width:auto}}.c15t-ui-container-KTZOT:not(.headless){pointer-events:auto;flex-direction:column;width:100%;max-height:100%;display:flex}.c15t-ui-container-KTZOT:not(.headless):focus-visible{outline:none}.c15t-ui-container-KTZOT:not(.headless):focus-visible>.c15t-ui-card-ve6qQ:not(.headless){outline:2px solid var(--c15t-primary);outline-offset:2px}.c15t-ui-headerWrapper-DQg3z:not(.headless){position:relative}.c15t-ui-closeButton-uPYIe:not(.headless){position:absolute;top:22px;right:22px}.c15t-ui-footer-PeM4f:not(.headless){border-top:solid 1px var(--consent-dialog-stroke-color);justify-content:center;padding-top:1rem;padding-bottom:1rem;font-size:14px}.c15t-ui-overlay-c1WEk:not(.headless){color:var(--consent-dialog-link-text-color);background-color:var(--consent-dialog-overlay-background-color);z-index:var(--consent-dialog-overlay-z-index);position:fixed;inset:0}.c15t-ui-overlayVisible-gG3jJ:not(.headless){opacity:1;transition:opacity var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-ui-overlayHidden-eY362:not(.headless){opacity:0;transition:opacity var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}@starting-style{.c15t-ui-overlayEntering-x3YKh:not(.headless){opacity:0}}.c15t-dark .c15t-ui-overlay-c1WEk:not(.headless){background-color:var(--consent-dialog-overlay-background-color-dark);color:var(--consent-dialog-link-text-color-dark)}.c15t-ui-card-ve6qQ:not(.headless){box-sizing:border-box;width:min(100%, var(--consent-dialog-max-width));max-height:var(--consent-dialog-max-height);border-radius:var(--consent-dialog-card-radius);border:var(--consent-dialog-border-width) var(--consent-dialog-border-style) var(--consent-dialog-border-color);background-color:var(--consent-dialog-background-color);color:var(--consent-dialog-foreground-color);box-shadow:var(--consent-dialog-card-shadow);flex-direction:column;margin:0 auto;display:flex;position:relative;overflow:visible}.c15t-dark .c15t-ui-card-ve6qQ:not(.headless){background-color:var(--consent-dialog-background-color-dark);color:var(--consent-dialog-foreground-color-dark);border-color:var(--consent-dialog-border-color-dark)}.c15t-ui-header-VbAnL:not(.headless){padding:var(--consent-dialog-card-padding);gap:var(--consent-dialog-header-gap);flex-direction:column;flex-shrink:0;display:flex}.c15t-ui-header-VbAnL:not(.headless)>*+*{margin-top:var(--consent-dialog-card-gap)}.c15t-ui-title-ErzRZ:not(.headless){font-weight:var(--consent-dialog-title-font-weight);font-size:var(--consent-dialog-title-font-size);letter-spacing:var(--consent-dialog-title-letter-spacing);margin:0;line-height:1}.c15t-ui-description-OQyBx:not(.headless){color:var(--consent-dialog-muted-color);font-size:var(--consent-dialog-description-font-size);font-weight:var(--consent-dialog-description-font-weight);line-height:var(--consent-dialog-description-line-height)}.c15t-dark .c15t-ui-description-OQyBx:not(.headless){color:var(--consent-dialog-muted-color-dark)}.c15t-ui-description-OQyBx[data-context=dialog]:not(.headless){color:var(--consent-dialog-muted-color);font-size:var(--consent-dialog-description-font-size);font-weight:var(--consent-dialog-description-font-weight);line-height:var(--consent-dialog-description-line-height)}.c15t-dark .c15t-ui-description-OQyBx[data-context=dialog]:not(.headless){color:var(--consent-dialog-muted-color-dark)}.c15t-ui-content-Y_5Ie:not(.headless){padding:var(--consent-dialog-card-padding);gap:var(--consent-dialog-content-gap);flex-direction:column;flex:auto;min-height:0;padding-top:0;display:flex;overflow-y:auto}.c15t-ui-content-Y_5Ie:not(.headless):has(>[data-testid=consent-widget-root]>[data-testid=consent-widget-accordion]){overflow-y:visible}.c15t-ui-content-Y_5Ie:not(.headless)>*{flex-shrink:0}.c15t-ui-content-Y_5Ie:not(.headless)>[data-testid=consent-widget-root]:not(.headless){flex-direction:column;flex:auto;min-height:0;display:flex}.c15t-ui-content-Y_5Ie:not(.headless)>[data-testid=consent-widget-root]:not(.headless)>[data-testid=consent-widget-accordion]{flex:auto;min-height:0;margin:-2px;padding:2px;overflow-y:auto!important}.c15t-ui-content-Y_5Ie:not(.headless)>[data-testid=consent-widget-root]:not(.headless)>[data-testid=consent-widget-footer]{flex-shrink:0}.c15t-ui-footer-PeM4f:not(.headless){justify-content:center;align-items:center;gap:var(--consent-dialog-footer-gap);font-size:var(--consent-dialog-footer-font-size);padding-top:var(--consent-dialog-footer-padding-y);padding-bottom:var(--consent-dialog-footer-padding-y);border-top:var(--consent-dialog-border-width) var(--consent-dialog-border-style) var(--consent-dialog-stroke-color);flex-direction:column;flex-shrink:0;display:flex}.c15t-ui-footer-PeM4f:not(.headless):empty{border-top:none;display:none}.c15t-dark .c15t-ui-footer-PeM4f:not(.headless){border-color:var(--consent-dialog-stroke-color-dark)}@media (prefers-reduced-motion:reduce){.c15t-ui-dialogVisible-dkX4M:not(.headless),.c15t-ui-dialogHidden-uBU9W:not(.headless),.c15t-ui-contentVisible-KxAWb:not(.headless),.c15t-ui-contentHidden-LflgF:not(.headless),.c15t-ui-overlayVisible-gG3jJ:not(.headless),.c15t-ui-overlayHidden-eY362:not(.headless),.c15t-ui-overlay-c1WEk:not(.headless)[data-state=open],.c15t-ui-overlay-c1WEk:not(.headless)[data-state=closed],.c15t-ui-root-I07nx:not(.headless)[data-state=open],.c15t-ui-root-I07nx:not(.headless)[data-state=closed],.c15t-ui-root-I07nx[data-state=open] .c15t-ui-container-KTZOT:not(.headless),.c15t-ui-root-I07nx[data-state=closed] .c15t-ui-container-KTZOT:not(.headless),.c15t-ui-root-I07nx[data-mode=sidebar-left][data-state=open] .c15t-ui-container-KTZOT:not(.headless),.c15t-ui-root-I07nx[data-mode=sidebar-left][data-state=closed] .c15t-ui-container-KTZOT:not(.headless),.c15t-ui-root-I07nx[data-mode=sidebar-right][data-state=open] .c15t-ui-container-KTZOT:not(.headless),.c15t-ui-root-I07nx[data-mode=sidebar-right][data-state=closed] .c15t-ui-container-KTZOT:not(.headless){transition:none;animation:none}}.c15t-ui-overlay-c1WEk[data-disable-animation]:not(.headless)[data-state=open],.c15t-ui-overlay-c1WEk[data-disable-animation]:not(.headless)[data-state=closed],.c15t-ui-root-I07nx[data-disable-animation]:not(.headless)[data-state=open],.c15t-ui-root-I07nx[data-disable-animation]:not(.headless)[data-state=closed],.c15t-ui-root-I07nx[data-disable-animation][data-state=open] .c15t-ui-container-KTZOT:not(.headless),.c15t-ui-root-I07nx[data-disable-animation][data-state=closed] .c15t-ui-container-KTZOT:not(.headless),.disable-animation .c15t-ui-overlay-c1WEk:not(.headless)[data-state=open],.disable-animation .c15t-ui-overlay-c1WEk:not(.headless)[data-state=closed],.disable-animation .c15t-ui-root-I07nx:not(.headless)[data-state=open],.disable-animation .c15t-ui-root-I07nx:not(.headless)[data-state=closed],.disable-animation .c15t-ui-root-I07nx[data-state=open] .c15t-ui-container-KTZOT:not(.headless),.disable-animation .c15t-ui-root-I07nx[data-state=closed] .c15t-ui-container-KTZOT:not(.headless),[data-disable-animation] .c15t-ui-overlay-c1WEk:not(.headless)[data-state=open],[data-disable-animation] .c15t-ui-overlay-c1WEk:not(.headless)[data-state=closed],[data-disable-animation] .c15t-ui-root-I07nx:not(.headless)[data-state=open],[data-disable-animation] .c15t-ui-root-I07nx:not(.headless)[data-state=closed],[data-disable-animation] .c15t-ui-root-I07nx[data-state=open] .c15t-ui-container-KTZOT:not(.headless),[data-disable-animation] .c15t-ui-root-I07nx[data-state=closed] .c15t-ui-container-KTZOT:not(.headless){animation:none}
|
|
81
|
+
.c15t-ui-root-I07nx:not(.headless){pointer-events:none;box-sizing:border-box;isolation:isolate;font-family:var(--consent-dialog-font-family);color:var(--c15t-text);line-height:var(--consent-dialog-line-height);-webkit-text-size-adjust:100%;tab-size:4;padding:var(--consent-dialog-card-padding-mobile);z-index:var(--consent-dialog-z-index);border-radius:var(--consent-dialog-card-radius);width:100%;height:var(--consent-dialog-height);background:0 0;border:0;justify-content:center;align-items:center;margin:0;display:flex;position:fixed;inset:0}.c15t-ui-root-I07nx:not(.headless)[data-blocking=true]{pointer-events:auto}.c15t-ui-root-I07nx:not(.headless)[dir=rtl]{direction:rtl}.c15t-ui-root-I07nx:not(.headless):focus{outline:none}@keyframes c15t-ui-consent-dialog-fade-in-I04Yp{0%{opacity:0}to{opacity:1}}@keyframes c15t-ui-consent-dialog-fade-out-t5_x2{0%{opacity:1}to{opacity:0}}.c15t-ui-overlay-c1WEk:not(.headless)[data-state=open]{animation:c15t-ui-consent-dialog-fade-in-I04Yp var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-ui-overlay-c1WEk:not(.headless)[data-state=closed]{animation:c15t-ui-consent-dialog-fade-out-t5_x2 var(--consent-dialog-animation-duration) ease-in}.c15t-ui-root-I07nx:not(.headless)[data-state=open]{animation:c15t-ui-consent-dialog-fade-in-I04Yp var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-ui-root-I07nx:not(.headless)[data-state=closed]{animation:c15t-ui-consent-dialog-fade-out-t5_x2 var(--consent-dialog-animation-duration) ease-in}.c15t-ui-root-I07nx[data-state=open] .c15t-ui-container-KTZOT:not(.headless){animation:c15t-ui-enter-vWVet var(--consent-dialog-animation-duration) var(--c15t-easing-spring)}.c15t-ui-root-I07nx[data-state=closed] .c15t-ui-container-KTZOT:not(.headless){animation:c15t-ui-exit-ioDiW var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-ui-root-I07nx:not(.headless)[data-mode=dialog]{justify-content:center;align-items:center}:is(.c15t-ui-root-I07nx:not(.headless)[data-mode=sidebar-left],.c15t-ui-root-I07nx:not(.headless)[data-mode=sidebar-right]){justify-content:flex-start;align-items:stretch;padding:0}.c15t-ui-root-I07nx:not(.headless)[data-mode=sidebar-right]{justify-content:flex-end}:is(.c15t-ui-root-I07nx:not(.headless)[data-mode=sidebar-left] .c15t-ui-container-KTZOT:not(.headless),.c15t-ui-root-I07nx:not(.headless)[data-mode=sidebar-right] .c15t-ui-container-KTZOT:not(.headless)){z-index:var(--consent-dialog-z-index);width:min(100%, var(--consent-dialog-max-width));height:100%;max-height:100%;position:relative}:is(.c15t-ui-root-I07nx:not(.headless)[data-mode=sidebar-left] .c15t-ui-card-ve6qQ:not(.headless),.c15t-ui-root-I07nx:not(.headless)[data-mode=sidebar-right] .c15t-ui-card-ve6qQ:not(.headless)){border-radius:0;width:100%;height:100%;max-height:100%;margin:0}@keyframes c15t-ui-consent-dialog-slide-in-left-N9bgJ{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes c15t-ui-consent-dialog-slide-out-left-hkcUP{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes c15t-ui-consent-dialog-slide-in-right-L40wh{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes c15t-ui-consent-dialog-slide-out-right-GjtEq{0%{transform:translate(0)}to{transform:translate(100%)}}.c15t-ui-root-I07nx[data-mode=sidebar-left][data-state=open] .c15t-ui-container-KTZOT:not(.headless){animation:c15t-ui-consent-dialog-slide-in-left-N9bgJ var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-ui-root-I07nx[data-mode=sidebar-left][data-state=closed] .c15t-ui-container-KTZOT:not(.headless){animation:c15t-ui-consent-dialog-slide-out-left-hkcUP var(--consent-dialog-animation-duration) ease-in}.c15t-ui-root-I07nx[data-mode=sidebar-right][data-state=open] .c15t-ui-container-KTZOT:not(.headless){animation:c15t-ui-consent-dialog-slide-in-right-L40wh var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-ui-root-I07nx[data-mode=sidebar-right][data-state=closed] .c15t-ui-container-KTZOT:not(.headless){animation:c15t-ui-consent-dialog-slide-out-right-GjtEq var(--consent-dialog-animation-duration) ease-in}.c15t-ui-dialogVisible-dkX4M:not(.headless){opacity:1;transition:opacity var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-ui-dialogHidden-uBU9W:not(.headless){opacity:0;transition:opacity var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-ui-contentVisible-KxAWb:not(.headless){opacity:1;transition:opacity var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing), transform var(--consent-dialog-animation-duration) var(--c15t-easing-spring);transform:scale(1)}.c15t-ui-contentHidden-LflgF:not(.headless){opacity:0;transition:opacity var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing), transform var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing);transform:scale(.95)}@starting-style{.c15t-ui-dialogEntering-aakBt:not(.headless){opacity:0}.c15t-ui-contentEntering-N3wrp:not(.headless){opacity:0;transform:scale(.95)}}@media (width>=640px){.c15t-ui-root-I07nx:not(.headless){padding:var(--consent-dialog-card-padding);width:auto}}.c15t-ui-container-KTZOT:not(.headless){pointer-events:auto;flex-direction:column;width:100%;max-height:100%;display:flex}.c15t-ui-container-KTZOT:not(.headless):focus-visible{outline:none}.c15t-ui-container-KTZOT:not(.headless):focus-visible>.c15t-ui-card-ve6qQ:not(.headless){outline:2px solid var(--c15t-primary);outline-offset:2px}.c15t-ui-headerWrapper-DQg3z:not(.headless){position:relative}.c15t-ui-closeButton-uPYIe:not(.headless){position:absolute;top:1.375rem;right:1.375rem}.c15t-ui-overlay-c1WEk:not(.headless){color:var(--consent-dialog-link-text-color);background-color:var(--consent-dialog-overlay-background-color);z-index:var(--consent-dialog-overlay-z-index);position:fixed;inset:0}.c15t-ui-overlayVisible-gG3jJ:not(.headless){opacity:1;transition:opacity var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}.c15t-ui-overlayHidden-eY362:not(.headless){opacity:0;transition:opacity var(--consent-dialog-animation-duration) var(--consent-dialog-animation-timing)}@starting-style{.c15t-ui-overlayEntering-x3YKh:not(.headless){opacity:0}}.c15t-dark .c15t-ui-overlay-c1WEk:not(.headless){background-color:var(--consent-dialog-overlay-background-color-dark);color:var(--consent-dialog-link-text-color-dark)}.c15t-ui-card-ve6qQ:not(.headless){box-sizing:border-box;width:min(100%, var(--consent-dialog-max-width));max-height:var(--consent-dialog-max-height);border-radius:var(--consent-dialog-card-radius);border:var(--consent-dialog-border-width) var(--consent-dialog-border-style) var(--consent-dialog-border-color);background-color:var(--consent-dialog-background-color);color:var(--consent-dialog-foreground-color);box-shadow:var(--consent-dialog-card-shadow);flex-direction:column;margin:0 auto;display:flex;position:relative;overflow:visible}.c15t-dark .c15t-ui-card-ve6qQ:not(.headless){background-color:var(--consent-dialog-background-color-dark);color:var(--consent-dialog-foreground-color-dark);border-color:var(--consent-dialog-border-color-dark)}.c15t-ui-header-VbAnL:not(.headless){padding:var(--consent-dialog-card-padding);gap:var(--consent-dialog-header-gap);flex-direction:column;flex-shrink:0;display:flex}.c15t-ui-header-VbAnL:not(.headless)>*+*{margin-top:var(--consent-dialog-card-gap)}.c15t-ui-title-ErzRZ:not(.headless){font-weight:var(--consent-dialog-title-font-weight);font-size:var(--consent-dialog-title-font-size);letter-spacing:var(--consent-dialog-title-letter-spacing);margin:0;line-height:1}.c15t-ui-description-OQyBx:not(.headless){color:var(--consent-dialog-muted-color);font-size:var(--consent-dialog-description-font-size);font-weight:var(--consent-dialog-description-font-weight);line-height:var(--consent-dialog-description-line-height)}.c15t-dark .c15t-ui-description-OQyBx:not(.headless){color:var(--consent-dialog-muted-color-dark)}.c15t-ui-description-OQyBx[data-context=dialog]:not(.headless){color:var(--consent-dialog-muted-color);font-size:var(--consent-dialog-description-font-size);font-weight:var(--consent-dialog-description-font-weight);line-height:var(--consent-dialog-description-line-height)}.c15t-dark .c15t-ui-description-OQyBx[data-context=dialog]:not(.headless){color:var(--consent-dialog-muted-color-dark)}.c15t-ui-content-Y_5Ie:not(.headless){padding:var(--consent-dialog-card-padding);gap:var(--consent-dialog-content-gap);flex-direction:column;flex:auto;min-height:0;padding-top:0;display:flex;overflow-y:auto}.c15t-ui-content-Y_5Ie:not(.headless):has(>[data-testid=consent-widget-root]>[data-testid=consent-widget-accordion]){overflow-y:visible}.c15t-ui-content-Y_5Ie:not(.headless)>*{flex-shrink:0}.c15t-ui-content-Y_5Ie:not(.headless)>[data-testid=consent-widget-root]:not(.headless){flex-direction:column;flex:auto;min-height:0;display:flex}.c15t-ui-content-Y_5Ie:not(.headless)>[data-testid=consent-widget-root]:not(.headless)>[data-testid=consent-widget-accordion]{flex:auto;min-height:0;margin:-2px;padding:2px;overflow-y:auto!important}.c15t-ui-content-Y_5Ie:not(.headless)>[data-testid=consent-widget-root]:not(.headless)>[data-testid=consent-widget-footer]{flex-shrink:0}.c15t-ui-footer-PeM4f:not(.headless){justify-content:center;align-items:center;gap:var(--consent-dialog-footer-gap);font-size:var(--consent-dialog-footer-font-size);padding-top:var(--consent-dialog-footer-padding-y);padding-bottom:var(--consent-dialog-footer-padding-y);border-top:var(--consent-dialog-border-width) var(--consent-dialog-border-style) var(--consent-dialog-stroke-color);flex-direction:column;flex-shrink:0;display:flex}.c15t-ui-footer-PeM4f:not(.headless):empty{border-top:none;display:none}.c15t-dark .c15t-ui-footer-PeM4f:not(.headless){border-color:var(--consent-dialog-stroke-color-dark)}@media (prefers-reduced-motion:reduce){.c15t-ui-dialogVisible-dkX4M:not(.headless),.c15t-ui-dialogHidden-uBU9W:not(.headless),.c15t-ui-contentVisible-KxAWb:not(.headless),.c15t-ui-contentHidden-LflgF:not(.headless),.c15t-ui-overlayVisible-gG3jJ:not(.headless),.c15t-ui-overlayHidden-eY362:not(.headless),.c15t-ui-overlay-c1WEk:not(.headless)[data-state=open],.c15t-ui-overlay-c1WEk:not(.headless)[data-state=closed],.c15t-ui-root-I07nx:not(.headless)[data-state=open],.c15t-ui-root-I07nx:not(.headless)[data-state=closed],.c15t-ui-root-I07nx[data-state=open] .c15t-ui-container-KTZOT:not(.headless),.c15t-ui-root-I07nx[data-state=closed] .c15t-ui-container-KTZOT:not(.headless),.c15t-ui-root-I07nx[data-mode=sidebar-left][data-state=open] .c15t-ui-container-KTZOT:not(.headless),.c15t-ui-root-I07nx[data-mode=sidebar-left][data-state=closed] .c15t-ui-container-KTZOT:not(.headless),.c15t-ui-root-I07nx[data-mode=sidebar-right][data-state=open] .c15t-ui-container-KTZOT:not(.headless),.c15t-ui-root-I07nx[data-mode=sidebar-right][data-state=closed] .c15t-ui-container-KTZOT:not(.headless){transition:none;animation:none}}.c15t-ui-overlay-c1WEk[data-disable-animation]:not(.headless)[data-state=open],.c15t-ui-overlay-c1WEk[data-disable-animation]:not(.headless)[data-state=closed],.c15t-ui-root-I07nx[data-disable-animation]:not(.headless)[data-state=open],.c15t-ui-root-I07nx[data-disable-animation]:not(.headless)[data-state=closed],.c15t-ui-root-I07nx[data-disable-animation][data-state=open] .c15t-ui-container-KTZOT:not(.headless),.c15t-ui-root-I07nx[data-disable-animation][data-state=closed] .c15t-ui-container-KTZOT:not(.headless),.disable-animation .c15t-ui-overlay-c1WEk:not(.headless)[data-state=open],.disable-animation .c15t-ui-overlay-c1WEk:not(.headless)[data-state=closed],.disable-animation .c15t-ui-root-I07nx:not(.headless)[data-state=open],.disable-animation .c15t-ui-root-I07nx:not(.headless)[data-state=closed],.disable-animation .c15t-ui-root-I07nx[data-state=open] .c15t-ui-container-KTZOT:not(.headless),.disable-animation .c15t-ui-root-I07nx[data-state=closed] .c15t-ui-container-KTZOT:not(.headless),[data-disable-animation] .c15t-ui-overlay-c1WEk:not(.headless)[data-state=open],[data-disable-animation] .c15t-ui-overlay-c1WEk:not(.headless)[data-state=closed],[data-disable-animation] .c15t-ui-root-I07nx:not(.headless)[data-state=open],[data-disable-animation] .c15t-ui-root-I07nx:not(.headless)[data-state=closed],[data-disable-animation] .c15t-ui-root-I07nx[data-state=open] .c15t-ui-container-KTZOT:not(.headless),[data-disable-animation] .c15t-ui-root-I07nx[data-state=closed] .c15t-ui-container-KTZOT:not(.headless){animation:none}
|
|
82
82
|
|
|
83
83
|
/* components/preference-item */
|
|
84
84
|
.c15t-ui-root-O9Wgf{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-jd_B0{align-items:flex-start;gap:var(--preference-item-leading-gap);text-align:left;width:100%;min-width:0;color:var(--c15t-text);cursor:pointer;background:0 0;border:0;padding:0;display:flex}.c15t-ui-trigger-jd_B0:focus-visible{outline:2px solid var(--preference-item-focus-ring);outline-offset:2px}.c15t-ui-leading-exw6I{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.c15t-ui-header-HJIda{flex-direction:column;flex:1;min-width:0;display:flex}.c15t-ui-title-CCKRH{color:var(--c15t-text);font:inherit;min-width:0;margin:0}.c15t-ui-meta-tK1eS{color:var(--c15t-text-muted);font:inherit;margin:0}.c15t-ui-auxiliary-b8p9d{flex-wrap:wrap;align-items:center;gap:.375rem;min-width:0;display:flex}.c15t-ui-control-ppUQm{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.c15t-ui-content-npfsa{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-npfsa[data-state=open]{grid-template-rows:1fr}.c15t-ui-content-npfsa[data-state=closed]{pointer-events:none}.c15t-ui-contentViewport-TH10a{min-height:0;overflow:hidden}.c15t-ui-contentInner-yZmkz{color:var(--preference-item-content-color)}@media (prefers-reduced-motion:reduce){.c15t-ui-content-npfsa{transition:none}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{offline}from"@c15t/core";
|
|
1
|
+
export{local,offline}from"@c15t/core";
|
package/dist/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
let e="3.
|
|
1
|
+
let e="3.2.0";export{e as version};
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import type { AllConsentNames, Translations } from '@c15t/core';
|
|
2
|
+
/**
|
|
3
|
+
* What a consent gate should render for its category.
|
|
4
|
+
*
|
|
5
|
+
* - `'granted'`: consent is given and the page has hydrated. Render the
|
|
6
|
+
* children.
|
|
7
|
+
* - `'pending'`: consent is given but the page hasn't hydrated yet. Render
|
|
8
|
+
* nothing.
|
|
9
|
+
* - `'denied'`: consent isn't given. Render a placeholder with a grant
|
|
10
|
+
* action.
|
|
11
|
+
* - `'policy-blocked'`: strict policy scope excludes this category. Render
|
|
12
|
+
* the policy message and no grant action.
|
|
13
|
+
*/
|
|
14
|
+
export type ConsentGateState = 'granted' | 'pending' | 'denied' | 'policy-blocked';
|
|
15
|
+
/**
|
|
16
|
+
* The state, copy and grant action for one consent-gated category.
|
|
17
|
+
*/
|
|
18
|
+
export interface UseConsentGateResult {
|
|
19
|
+
/** What to render. See {@link ConsentGateState}. */
|
|
20
|
+
state: ConsentGateState;
|
|
21
|
+
/** Translated category title, falling back to the category name. */
|
|
22
|
+
categoryTitle: string;
|
|
23
|
+
/** Translated placeholder title with `{category}` filled in. */
|
|
24
|
+
title: string | undefined;
|
|
25
|
+
/** Translated grant-button label with `{category}` filled in. */
|
|
26
|
+
actionLabel: string | undefined;
|
|
27
|
+
/** Translated policy-blocked message, with the English fallback. */
|
|
28
|
+
policyBlockedMessage: string;
|
|
29
|
+
/**
|
|
30
|
+
* Opens the consent dialog on its usual view. Unlike the stock gate
|
|
31
|
+
* button, it doesn't start loading a deferred `ConsentDialog` on hover,
|
|
32
|
+
* focus or idle time.
|
|
33
|
+
*/
|
|
34
|
+
requestConsent: () => void;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Shown when the translations have no `consentGate.policyBlocked` message.
|
|
38
|
+
*
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
export declare const DEFAULT_POLICY_BLOCKED_MESSAGE = "This content is unavailable under your region's consent policy.";
|
|
42
|
+
/**
|
|
43
|
+
* The translated copy for a gate on one category. The stock `ConsentGate`
|
|
44
|
+
* parts read their default text from here, so the hook and the parts
|
|
45
|
+
* always agree.
|
|
46
|
+
*
|
|
47
|
+
* @param translations - The active translation bundle.
|
|
48
|
+
* @param category - The gated category.
|
|
49
|
+
* @returns The category title, placeholder title, button label and
|
|
50
|
+
* policy-blocked message.
|
|
51
|
+
* @internal
|
|
52
|
+
*/
|
|
53
|
+
export declare const resolveConsentGateCopy: (translations: Translations, category: AllConsentNames) => Omit<UseConsentGateResult, 'state' | 'requestConsent'>;
|
|
54
|
+
/**
|
|
55
|
+
* Reads what a consent gate on one category should render, with its
|
|
56
|
+
* translated copy and an action that opens the consent dialog.
|
|
57
|
+
*
|
|
58
|
+
* Use it to build a custom gate around an iframe or widget. The stock
|
|
59
|
+
* `ConsentGate` uses the same hook, so a custom gate follows the same
|
|
60
|
+
* rules:
|
|
61
|
+
*
|
|
62
|
+
* - The state follows the category's effective permission, the value
|
|
63
|
+
* `useConsent(category)` returns.
|
|
64
|
+
* - Granted content waits for hydration. The server HTML never contains
|
|
65
|
+
* it, so an iframe inside a streamed `Suspense` boundary loads once.
|
|
66
|
+
* - Under a policy with `scopeMode: 'strict'`, a category outside the
|
|
67
|
+
* policy scope is `'policy-blocked'`. `necessary` is always in scope.
|
|
68
|
+
* - Server rendering and hydration evaluate the snapshot at its own
|
|
69
|
+
* evaluation time and never read the clock, so the gate can sit in a
|
|
70
|
+
* statically prerendered page.
|
|
71
|
+
*
|
|
72
|
+
* On mount the hook registers the category with the provider, so the
|
|
73
|
+
* consent dialog lists it.
|
|
74
|
+
*
|
|
75
|
+
* @param category - The consent category the content needs, such as
|
|
76
|
+
* `'marketing'`.
|
|
77
|
+
* @returns The gate state, the translated copy and `requestConsent`.
|
|
78
|
+
* @throws {Error} When called outside a `ConsentProvider`.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```tsx
|
|
82
|
+
* import { useConsentGate } from 'c15t/react/headless';
|
|
83
|
+
* import type { ReactNode } from 'react';
|
|
84
|
+
*
|
|
85
|
+
* function VideoGate({ children }: { children: ReactNode }) {
|
|
86
|
+
* const { state, title, actionLabel, policyBlockedMessage, requestConsent } =
|
|
87
|
+
* useConsentGate('marketing');
|
|
88
|
+
* if (state === 'granted') return children;
|
|
89
|
+
* if (state === 'pending') return null;
|
|
90
|
+
* if (state === 'policy-blocked') return <p>{policyBlockedMessage}</p>;
|
|
91
|
+
* return (
|
|
92
|
+
* <div>
|
|
93
|
+
* <p>{title}</p>
|
|
94
|
+
* <button type="button" onClick={requestConsent}>
|
|
95
|
+
* {actionLabel}
|
|
96
|
+
* </button>
|
|
97
|
+
* </div>
|
|
98
|
+
* );
|
|
99
|
+
* }
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export declare const useConsentGate: (category: AllConsentNames) => UseConsentGateResult;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { PreferenceControl, PresentationAction } from '@c15t/core';
|
|
2
|
+
/** Labels for the controls a consent surface renders. */
|
|
3
|
+
export interface ConsentLabels {
|
|
4
|
+
/** Button label for each action in `actionGroups`. */
|
|
5
|
+
actions: Record<PresentationAction, string>;
|
|
6
|
+
/** Label for each entry in `preferenceControls`. */
|
|
7
|
+
preferenceControls: Record<PreferenceControl, string>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Translated labels for every consent action and preference control.
|
|
11
|
+
*
|
|
12
|
+
* @remarks
|
|
13
|
+
* Pairs with the `banner` and `dialog` state from `useHeadlessConsentUI`, so
|
|
14
|
+
* a custom UI can label any resolved action without its own map. Keys the
|
|
15
|
+
* active language leaves out use English.
|
|
16
|
+
*
|
|
17
|
+
* @returns Labels keyed by action and by preference control.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```tsx
|
|
21
|
+
* const { banner, performBannerAction } = useHeadlessConsentUI();
|
|
22
|
+
* const labels = useConsentLabels();
|
|
23
|
+
*
|
|
24
|
+
* banner.orderedActions.map((action) => (
|
|
25
|
+
* <button key={action} onClick={() => performBannerAction(action)}>
|
|
26
|
+
* {labels.actions[action]}
|
|
27
|
+
* </button>
|
|
28
|
+
* ));
|
|
29
|
+
* ```
|
|
30
|
+
* @public
|
|
31
|
+
*/
|
|
32
|
+
export declare const useConsentLabels: () => ConsentLabels;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The text direction of the language c15t shows consent copy in, for a
|
|
3
|
+
* custom banner or preference center.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* c15t can pick the copy's language from the visitor's browser, so an
|
|
7
|
+
* Arabic or Hebrew visitor can read right-to-left copy on a left-to-right
|
|
8
|
+
* page. The stock banner and dialog set `dir` on their root from this
|
|
9
|
+
* language. Set it on yours the same way.
|
|
10
|
+
*
|
|
11
|
+
* @returns `'rtl'` for a right-to-left language, otherwise `'ltr'`.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```tsx
|
|
15
|
+
* function Banner({ children }: { children: React.ReactNode }) {
|
|
16
|
+
* const dir = useConsentTextDirection();
|
|
17
|
+
* return <section dir={dir}>{children}</section>;
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
* @public
|
|
21
|
+
*/
|
|
22
|
+
export declare const useConsentTextDirection: () => "ltr" | "rtl";
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AllConsentNames, ResolvedVendor } from '@c15t/core';
|
|
2
|
+
/**
|
|
3
|
+
* The vendors the stock preference center lists under one category, for a
|
|
4
|
+
* custom preference center that shows the same rows.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* A vendor known only from a script's `vendor` slug gets no row until the
|
|
8
|
+
* site declares a vendor in `vendors` or on the backend, unless the visitor
|
|
9
|
+
* turned it off. Then it stays listed so the visitor can turn it on again.
|
|
10
|
+
* Under an `iab` policy the list is empty.
|
|
11
|
+
*
|
|
12
|
+
* @param category - The category row being rendered.
|
|
13
|
+
* @returns The vendors to list, in declared order.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```tsx
|
|
17
|
+
* function CategoryVendors({ category }: { category: AllConsentNames }) {
|
|
18
|
+
* const vendors = useVendorsListedUnder(category);
|
|
19
|
+
* return (
|
|
20
|
+
* <ul>
|
|
21
|
+
* {vendors.map((vendor) => (
|
|
22
|
+
* <li key={vendor.id}>{vendor.name ?? vendor.id}</li>
|
|
23
|
+
* ))}
|
|
24
|
+
* </ul>
|
|
25
|
+
* );
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
export declare const useVendorsListedUnder: (category: AllConsentNames) => ResolvedVendor[];
|
|
@@ -62,8 +62,8 @@ interface ConsentBannerRootProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
62
62
|
/**
|
|
63
63
|
* Placement of the prompt. Overrides `presentation.prompt.position`.
|
|
64
64
|
* @remarks Must be valid for the resolved variant; otherwise the variant
|
|
65
|
-
* default is used and a development diagnostic is logged.
|
|
66
|
-
*
|
|
65
|
+
* default is used and a development diagnostic is logged. Right-to-left
|
|
66
|
+
* text does not move the prompt.
|
|
67
67
|
*/
|
|
68
68
|
position?: PromptPosition;
|
|
69
69
|
/**
|
|
@@ -75,7 +75,7 @@ interface ConsentBannerRootProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
75
75
|
}
|
|
76
76
|
/**
|
|
77
77
|
* The banner, rendered where the server can stream it: see
|
|
78
|
-
* `
|
|
78
|
+
* `StreamedConsentSurface`.
|
|
79
79
|
*/
|
|
80
80
|
declare const ConsentBannerRoot: FC<ConsentBannerRootProps>;
|
|
81
81
|
declare const Root: FC<ConsentBannerRootProps>;
|
|
@@ -151,8 +151,8 @@ export interface ConsentBannerProps {
|
|
|
151
151
|
/**
|
|
152
152
|
* Placement of the prompt. Overrides `presentation.prompt.position`.
|
|
153
153
|
* @remarks Must be valid for the resolved variant; otherwise the variant
|
|
154
|
-
* default is used and a development diagnostic is logged.
|
|
155
|
-
*
|
|
154
|
+
* default is used and a development diagnostic is logged. Right-to-left
|
|
155
|
+
* text does not move the prompt.
|
|
156
156
|
*/
|
|
157
157
|
position?: PromptPosition;
|
|
158
158
|
/**
|
|
@@ -164,7 +164,8 @@ export interface ConsentBannerProps {
|
|
|
164
164
|
}
|
|
165
165
|
/**
|
|
166
166
|
* The stock banner. It reads the policy to choose its buttons, so all of
|
|
167
|
-
* it renders where the server can stream it: see
|
|
167
|
+
* it renders where the server can stream it: see
|
|
168
|
+
* `StreamedConsentSurface`.
|
|
168
169
|
*/
|
|
169
170
|
export declare const ConsentBanner: FC<ConsentBannerProps>;
|
|
170
171
|
/**
|
|
@@ -9,7 +9,7 @@ import type { PromptPosition, PromptVariant } from '@c15t/core';
|
|
|
9
9
|
export interface ConsentBannerSurface {
|
|
10
10
|
/** Shape of the first-layer prompt. */
|
|
11
11
|
variant: PromptVariant;
|
|
12
|
-
/** Placement
|
|
12
|
+
/** Placement. It stays the same for right-to-left text. */
|
|
13
13
|
position: PromptPosition;
|
|
14
14
|
/** Whether the host chose the position or the resolver defaulted it. */
|
|
15
15
|
positionSource: 'host' | 'default';
|
|
@@ -30,16 +30,3 @@ export declare const ConsentBannerSurfaceContext: import("react").Context<Consen
|
|
|
30
30
|
* @public
|
|
31
31
|
*/
|
|
32
32
|
export declare const useConsentBannerSurface: () => ConsentBannerSurface;
|
|
33
|
-
/**
|
|
34
|
-
* Mirror a defaulted corner for right-to-left text so the banner keeps
|
|
35
|
-
* hugging the reading start. Host-chosen positions and edge or center
|
|
36
|
-
* placements are returned unchanged.
|
|
37
|
-
*
|
|
38
|
-
* @param position - The resolved position.
|
|
39
|
-
* @param positionSource - Whether the host chose it.
|
|
40
|
-
* @param variant - The resolved variant; only corners of floating and widget mirror.
|
|
41
|
-
* @param textDirection - Document text direction.
|
|
42
|
-
* @returns The position to render.
|
|
43
|
-
* @internal
|
|
44
|
-
*/
|
|
45
|
-
export declare const mirrorDefaultPosition: (position: PromptPosition, positionSource: 'host' | 'default', variant: PromptVariant, textDirection: 'ltr' | 'rtl') => PromptPosition;
|
|
@@ -4,13 +4,18 @@
|
|
|
4
4
|
* @remarks
|
|
5
5
|
* A notice prompt reads the `noticeTitle` and `noticeDescription` copy so
|
|
6
6
|
* it informs rather than asks. Languages that have not translated the notice
|
|
7
|
-
* copy fall back to
|
|
7
|
+
* copy fall back to their own choice copy, then to English.
|
|
8
8
|
*
|
|
9
9
|
* @returns The copy the banner should render when no props override it.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* const { title, description } = useBannerCopy();
|
|
14
|
+
* ```
|
|
10
15
|
* @public
|
|
11
16
|
*/
|
|
12
17
|
export declare const useBannerCopy: () => {
|
|
13
|
-
title: string
|
|
14
|
-
description: string
|
|
18
|
+
title: string;
|
|
19
|
+
description: string;
|
|
15
20
|
prompt: 'choice' | 'notice' | 'none';
|
|
16
21
|
};
|
|
@@ -8,16 +8,53 @@ import type { ReactNode } from 'react';
|
|
|
8
8
|
* @internal
|
|
9
9
|
*/
|
|
10
10
|
export declare const readRecorded: <Value>(thenable: PromiseLike<Value>) => Value;
|
|
11
|
+
/** Props for {@link StreamedConsentSurface}. */
|
|
12
|
+
export interface StreamedConsentSurfaceProps {
|
|
13
|
+
/** The surface. Its consent hooks must run inside this component. */
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
}
|
|
11
16
|
/**
|
|
12
|
-
* Renders a consent surface the server can stream
|
|
13
|
-
*
|
|
14
|
-
* boundary: the rest of the page streams at once, and the surface follows
|
|
15
|
-
* in a later chunk of the same response, rendered from the resolved
|
|
16
|
-
* config. It shows only when that config carries a policy that shows it.
|
|
17
|
-
* Hydration reads the same config, so the surface hydrates in place.
|
|
17
|
+
* Renders a consent surface the server can stream, such as a banner built
|
|
18
|
+
* with the headless hooks. The stock `ConsentBanner` uses it too.
|
|
18
19
|
*
|
|
19
|
-
*
|
|
20
|
+
* While the provider's `prefetch` is a promise, as with Next.js
|
|
21
|
+
* `<ConsentRoot state={resolveConsent()}>`, the surface waits for it in its
|
|
22
|
+
* own Suspense boundary: the rest of the page streams at once, and the
|
|
23
|
+
* surface follows in a later chunk of the same response, rendered from the
|
|
24
|
+
* resolved config. It shows only when that config carries a policy that
|
|
25
|
+
* shows it. Hydration reads the same config, so the surface hydrates in
|
|
26
|
+
* place. Without a pending `prefetch`, it renders its children as they are.
|
|
27
|
+
*
|
|
28
|
+
* Call the hooks in a component inside it. Hooks called above it read the
|
|
29
|
+
* snapshot from before consent resolved, which has no banner.
|
|
30
|
+
*
|
|
31
|
+
* @param props - The surface to stream.
|
|
32
|
+
* @returns The children, in a Suspense boundary while consent streams.
|
|
33
|
+
* @example
|
|
34
|
+
* ```tsx
|
|
35
|
+
* 'use client';
|
|
36
|
+
* import {
|
|
37
|
+
* StreamedConsentSurface,
|
|
38
|
+
* useHeadlessConsentUI,
|
|
39
|
+
* } from 'c15t/next/headless';
|
|
40
|
+
*
|
|
41
|
+
* function BannerContent() {
|
|
42
|
+
* const { banner, performAction } = useHeadlessConsentUI();
|
|
43
|
+
* if (!banner.isVisible) return null;
|
|
44
|
+
* return (
|
|
45
|
+
* <section aria-label="Cookie consent">
|
|
46
|
+
* <button onClick={() => performAction('accept')}>Accept</button>
|
|
47
|
+
* </section>
|
|
48
|
+
* );
|
|
49
|
+
* }
|
|
50
|
+
*
|
|
51
|
+
* export function ConsentBanner() {
|
|
52
|
+
* return (
|
|
53
|
+
* <StreamedConsentSurface>
|
|
54
|
+
* <BannerContent />
|
|
55
|
+
* </StreamedConsentSurface>
|
|
56
|
+
* );
|
|
57
|
+
* }
|
|
58
|
+
* ```
|
|
20
59
|
*/
|
|
21
|
-
export declare const
|
|
22
|
-
children: ReactNode;
|
|
23
|
-
}) => string | number | bigint | boolean | React.JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | Iterable<ReactNode> | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | React.ReactPortal | null | undefined> | null | undefined;
|
|
60
|
+
export declare const StreamedConsentSurface: ({ children, }: StreamedConsentSurfaceProps) => string | number | bigint | boolean | React.JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | Iterable<ReactNode> | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | React.ReactPortal | null | undefined> | null | undefined;
|
package/dist-types/headless.d.ts
CHANGED
|
@@ -4,10 +4,19 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Pair with `ConsentProvider` from `@c15t/react` (or `@c15t/react/provider`).
|
|
6
6
|
*/
|
|
7
|
-
export { defaultTranslationConfig, detectBrowserLanguage, mergeTranslationConfigs, prepareTranslationConfig, } from '@c15t/core';
|
|
7
|
+
export { defaultTranslationConfig, detectBrowserLanguage, mergeTranslationConfigs, prepareTranslationConfig, resolveActionLabels, resolvePreferenceControlLabels, resolvePromptCopy, } from '@c15t/core';
|
|
8
|
+
export type { PreferenceControl, PresentationAction, PromptCopy, ResolvedVendor, } from '@c15t/core';
|
|
9
|
+
export { type ConsentLabels, useConsentLabels, } from './component-hooks/use-consent-labels.js';
|
|
10
|
+
export { useConsentTextDirection } from './component-hooks/use-consent-text-direction.js';
|
|
11
|
+
export { type ConsentGateState, type UseConsentGateResult, useConsentGate, } from './component-hooks/use-consent-gate.js';
|
|
8
12
|
export { type ConsentDialogTriggerVisibility, type UseConsentDialogTriggerOptions, type UseConsentDialogTriggerResult, useConsentDialogTrigger, } from './component-hooks/use-panel-trigger.js';
|
|
9
13
|
export { type HeadlessConsentBannerAction, type HeadlessConsentBannerState, type HeadlessConsentDialogAction, type HeadlessConsentDialogState, type HeadlessConsentSurface, type HeadlessConsentSurfaceAction, type HeadlessConsentSurfaceState, type HeadlessConsentWriteAction, useHeadlessConsentUI, } from './component-hooks/use-headless-consent-ui.js';
|
|
10
14
|
export { useTranslations } from './component-hooks/use-translations.js';
|
|
15
|
+
export { useVendorsListedUnder } from './component-hooks/use-vendors-listed-under.js';
|
|
16
|
+
export { useBannerCopy } from './components/prompt/use-banner-copy.js';
|
|
17
|
+
export { StreamedConsentSurface, type StreamedConsentSurfaceProps, } from './components/shared/streamed-surface.js';
|
|
11
18
|
export { useColorScheme } from './hooks/use-color-scheme.js';
|
|
12
19
|
export { useFocusTrap } from './hooks/use-focus-trap.js';
|
|
20
|
+
export { useIABPolicyGuard } from './hooks/use-iab-policy-guard.js';
|
|
21
|
+
export { useScrollLock } from './hooks/use-scroll-lock.js';
|
|
13
22
|
export type { ReactUIOptions } from './types/manager.js';
|
|
@@ -28,8 +28,24 @@ export declare const missingIABProviderError: () => IABUnavailableError;
|
|
|
28
28
|
* around them, so a missing IAB context alone does not prove the app has
|
|
29
29
|
* none. The check also passes once `@c15t/react/iab` has loaded.
|
|
30
30
|
*
|
|
31
|
+
* A custom banner or preference center that only handles opt-in and
|
|
32
|
+
* opt-out should call this too, and render nothing when `useModel()` is
|
|
33
|
+
* `'iab'`, as the standard surfaces do.
|
|
34
|
+
*
|
|
31
35
|
* @throws {IABUnavailableError} When the policy needs IAB and neither an
|
|
32
36
|
* IAB context nor `@c15t/react/iab` is present.
|
|
33
|
-
*
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```tsx
|
|
40
|
+
* function Banner() {
|
|
41
|
+
* useIABPolicyGuard();
|
|
42
|
+
* const model = useModel();
|
|
43
|
+
* const { banner } = useHeadlessConsentUI();
|
|
44
|
+
* const copy = useBannerCopy();
|
|
45
|
+
* if (model === 'iab' || !banner.isVisible) return null;
|
|
46
|
+
* return <section>{copy.title}</section>;
|
|
47
|
+
* }
|
|
48
|
+
* ```
|
|
49
|
+
* @public
|
|
34
50
|
*/
|
|
35
51
|
export declare const useIABPolicyGuard: () => void;
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Locks page scroll while `shouldLock` is true, as the stock banner does
|
|
3
|
+
* when its policy is blocking.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Locks are counted, so a banner and a dialog can both hold one and the page
|
|
7
|
+
* scrolls again only when both release. Unmounting releases the lock.
|
|
8
|
+
*
|
|
9
|
+
* @param shouldLock - Whether the page should stop scrolling
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* const { banner } = useHeadlessConsentUI();
|
|
14
|
+
* useScrollLock(banner.isVisible && banner.blocking);
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @public
|
|
4
18
|
*/
|
|
5
19
|
export declare const useScrollLock: (shouldLock: boolean) => void;
|
package/dist-types/modes.d.ts
CHANGED
|
@@ -22,5 +22,5 @@ export { hosted } from './transports/hosted.js';
|
|
|
22
22
|
export type { HostedOptions } from './transports/hosted.js';
|
|
23
23
|
export { manifest } from './transports/manifest.js';
|
|
24
24
|
export type { BrowserManifestModeFactory, ManifestModeOptions, } from './transports/manifest.js';
|
|
25
|
-
export { offline } from './transports/offline.js';
|
|
25
|
+
export { local, offline } from './transports/offline.js';
|
|
26
26
|
export type { OfflineModeOptions } from './transports/offline.js';
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import type { Script, ScriptLoaderDebugEvent, ScriptLoaderHandle } from '@c15t/core/modules/script-loader';
|
|
2
2
|
export interface UseScriptLoaderOptions {
|
|
3
3
|
onDebug?: (event: ScriptLoaderDebugEvent) => void;
|
|
4
|
+
/**
|
|
5
|
+
* Set `false` to start every `scripts` entry after hydration. By default
|
|
6
|
+
* `ConsentRoot` in `c15t/next` and `c15t/tanstack-start` starts the
|
|
7
|
+
* entries the visitor's consent already allows from the server HTML,
|
|
8
|
+
* before the page hydrates.
|
|
9
|
+
*
|
|
10
|
+
* @default true
|
|
11
|
+
*/
|
|
12
|
+
serverStart?: boolean;
|
|
4
13
|
}
|
|
5
14
|
export declare const useScriptLoader: (scripts: Script[], options?: UseScriptLoaderOptions) => ScriptLoaderHandle;
|
|
6
15
|
export type { Script, ScriptLoaderDebugEvent, ScriptLoaderHandle };
|