@c15t/react 3.0.0-alpha.1 → 3.0.0-alpha.11
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 +97 -70
- package/README.md +21 -17
- package/SKILL.md +34 -0
- package/dist/aggregate-components.js +1 -1
- package/dist/chunk-warming.js +1 -1
- package/dist/component-hooks/use-headless-consent-ui.js +1 -1
- package/dist/component-hooks/use-headless-iab-consent-ui.js +1 -1
- package/dist/component-hooks/use-panel-trigger.js +1 -1
- package/dist/components/consent-gate/atoms.js +1 -0
- package/dist/components/consent-gate/consent-gate.js +2 -0
- package/dist/components/consent-gate/frame.js +2 -0
- package/dist/components/consent-gate/index.js +2 -0
- package/dist/components/consent-preferences-link/consent-preferences-link.js +1 -1
- package/dist/components/iab-panel/atoms/card.js +1 -1
- package/dist/components/iab-panel/atoms/feature-item.js +2 -0
- package/dist/components/iab-panel/atoms/header.js +1 -1
- package/dist/components/iab-panel/atoms/purpose-item.js +1 -1
- package/dist/components/iab-panel/atoms/root.js +1 -1
- package/dist/components/iab-panel/atoms/stack-item.js +1 -1
- package/dist/components/iab-panel/atoms/vendor-list.js +1 -1
- package/dist/components/iab-panel/hooks/use-gvl-data.js +1 -1
- package/dist/components/iab-panel/iab-panel.js +1 -1
- package/dist/components/iab-panel/index.js +1 -1
- package/dist/components/iab-prompt/atoms/overlay.js +1 -1
- package/dist/components/iab-prompt/atoms/root.js +1 -1
- package/dist/components/iab-prompt/iab-prompt.js +1 -1
- package/dist/components/panel/atoms/card.js +1 -1
- package/dist/components/panel/atoms/overlay.js +1 -1
- package/dist/components/panel/atoms/root.js +1 -1
- package/dist/components/panel/panel.js +1 -1
- package/dist/components/panel-trigger/atoms/button.js +1 -1
- package/dist/components/panel-trigger/atoms/icon.js +1 -1
- package/dist/components/panel-trigger/atoms/root.js +1 -1
- package/dist/components/panel-trigger/atoms/toolbar.js +1 -1
- package/dist/components/panel-trigger/atoms/trigger-icons.js +1 -0
- package/dist/components/panel-trigger/panel-trigger-toolbar.js +1 -1
- package/dist/components/panel-trigger/panel-trigger.js +1 -1
- package/dist/components/panel-trigger/toolbar-loader.js +2 -0
- package/dist/components/preferences/atoms/accordion.js +1 -1
- package/dist/components/preferences/atoms/root.js +1 -1
- package/dist/components/preferences/atoms/vendor-list.js +1 -0
- package/dist/components/preferences/index.js +1 -1
- package/dist/components/prompt/atoms/early-tap-script.js +2 -0
- package/dist/components/prompt/atoms/overlay.js +1 -1
- package/dist/components/prompt/atoms/root.js +1 -1
- package/dist/components/prompt/components.js +1 -1
- package/dist/components/prompt/policy-actions.js +1 -1
- package/dist/components/prompt/prompt.js +1 -1
- package/dist/components/shared/dialog-sheets.js +1 -0
- package/dist/components/shared/first-paint-sheets.js +1 -0
- package/dist/components/shared/iab-dialog-sheets.js +1 -0
- package/dist/components/shared/iab-first-paint-sheets.js +1 -0
- package/dist/components/shared/libs/compose-refs.js +1 -0
- package/dist/components/shared/libs/slot.js +1 -1
- package/dist/components/shared/primitives/button.js +1 -1
- package/dist/components/shared/primitives/legal-links/index.js +1 -1
- package/dist/components/shared/streamed-surface.js +2 -0
- package/dist/components/shared/surface-styles.js +2 -0
- package/dist/components/shared/ui/dialog/dialog.js +1 -1
- package/dist/components/shared/ui/icon.js +1 -1
- package/dist/components/shared/ui/logo.js +1 -1
- package/dist/components/shared/ui/preference-item/preference-item.js +1 -1
- package/dist/consent-gate.js +2 -0
- package/dist/consent-theme.js +1 -0
- package/dist/context/consent-tracking-context.js +1 -1
- package/dist/context/index.js +1 -1
- package/dist/context.js +1 -1
- package/dist/devtools-launcher.js +2 -0
- package/dist/devtools.js +1 -1
- package/dist/draft-context.js +2 -0
- package/dist/draft.js +1 -1
- package/dist/external-iab-context.js +1 -1
- package/dist/gpp.js +2 -0
- package/dist/headless.js +1 -1
- package/dist/hooks/use-color-scheme.js +1 -1
- package/dist/hooks/use-committed-ref.js +2 -0
- package/dist/hooks/use-focus-trap.js +1 -1
- package/dist/hooks/use-headless-iab-consent-ui.js +1 -1
- package/dist/hooks/use-iab-policy-guard.js +1 -0
- package/dist/hooks/use-late-entry.js +2 -0
- package/dist/hooks.js +1 -1
- package/dist/iab/styles.tw3.css +5 -45
- package/dist/iab-context.js +1 -1
- package/dist/iab-dialog-deferred.js +2 -0
- package/dist/iab.js +1 -1
- package/dist/index-parts/consent-banner.js +1 -0
- package/dist/index-parts/consent-dialog-link.js +1 -0
- package/dist/index-parts/consent-dialog-trigger.js +1 -0
- package/dist/index-parts/consent-dialog.js +1 -0
- package/dist/index-parts/consent-gate.js +1 -0
- package/dist/index-parts/core.js +1 -0
- package/dist/index-parts/draft.js +1 -0
- package/dist/index-parts/frame.js +1 -0
- package/dist/index-parts/hooks.js +1 -0
- package/dist/index-parts/hosted.js +1 -0
- package/dist/index-parts/module-hooks.js +1 -0
- package/dist/index-parts/offline.js +1 -0
- package/dist/index-parts/presets.js +1 -0
- package/dist/index-parts/provider.js +1 -0
- package/dist/index-parts/theme.js +1 -0
- package/dist/index-parts/translations.js +1 -0
- package/dist/index.js +1 -1
- package/dist/kernel-selector.js +1 -0
- package/dist/modes.js +1 -0
- package/dist/module-hooks/iframe-blocker.js +1 -1
- package/dist/module-hooks/network-blocker.js +1 -1
- package/dist/module-hooks/network-hold.js +2 -0
- package/dist/module-hooks/persistence.js +1 -1
- package/dist/panel-link.js +1 -1
- package/dist/panel-trigger.js +1 -1
- package/dist/panel.js +1 -1
- package/dist/postcss-tailwind3.js +1 -0
- package/dist/preferences.js +1 -2
- package/dist/provider.js +1 -1
- package/dist/server/fetch-ssr-data.js +1 -1
- package/dist/server/headers.js +1 -1
- package/dist/server/normalize-url.js +1 -1
- package/dist/styles.tw3.css +33 -51
- package/dist/transports/hosted.js +1 -0
- package/dist/transports/manifest.js +1 -0
- package/dist/transports/offline.js +1 -1
- package/dist/utils/deferred-module.js +2 -0
- package/dist/utils/merge-slot-props.js +1 -1
- package/dist/utils/theme-utils.js +1 -1
- package/dist/version.js +1 -1
- package/dist-types/aggregate-components.d.ts +2 -2
- package/dist-types/chunk-warming.d.ts +42 -8
- package/dist-types/component-hooks/use-headless-consent-ui.d.ts +5 -5
- package/dist-types/component-hooks/use-headless-iab-consent-ui.d.ts +2 -2
- package/dist-types/components/consent-gate/atoms.d.ts +11 -0
- package/dist-types/components/consent-gate/consent-gate.d.ts +2 -0
- package/dist-types/components/consent-gate/frame.d.ts +19 -0
- package/dist-types/components/consent-gate/index.d.ts +25 -0
- package/dist-types/components/{frame → consent-gate}/types.d.ts +7 -7
- package/dist-types/components/consent-preferences-link/consent-preferences-link.d.ts +1 -1
- package/dist-types/components/consent-preferences-link/index.d.ts +1 -1
- package/dist-types/components/iab-panel/atoms/feature-item.d.ts +28 -0
- package/dist-types/components/iab-panel/atoms/purpose-item.d.ts +5 -2
- package/dist-types/components/iab-panel/atoms/stack-item.d.ts +7 -2
- package/dist-types/components/iab-panel/atoms/vendor-list.d.ts +1 -1
- package/dist-types/components/iab-panel/iab-panel.d.ts +3 -3
- package/dist-types/components/iab-panel/index.d.ts +29 -26
- package/dist-types/components/iab-panel/use-iab-translations.d.ts +4 -0
- package/dist-types/components/iab-prompt/iab-prompt.d.ts +3 -3
- package/dist-types/components/iab-prompt/index.d.ts +19 -19
- package/dist-types/components/panel/atoms/card.d.ts +5 -4
- package/dist-types/components/panel/atoms/overlay.d.ts +1 -1
- package/dist-types/components/panel/index.d.ts +8 -8
- package/dist-types/components/panel/panel.d.ts +3 -3
- package/dist-types/components/panel-link/index.d.ts +1 -1
- package/dist-types/components/panel-trigger/atoms/button.d.ts +1 -1
- package/dist-types/components/panel-trigger/atoms/icon.d.ts +1 -1
- package/dist-types/components/panel-trigger/atoms/root.d.ts +2 -2
- package/dist-types/components/panel-trigger/atoms/toolbar.d.ts +2 -2
- package/dist-types/components/panel-trigger/atoms/trigger-icons.d.ts +25 -0
- package/dist-types/components/panel-trigger/index.d.ts +4 -4
- package/dist-types/components/panel-trigger/panel-trigger-toolbar.d.ts +1 -1
- package/dist-types/components/panel-trigger/panel-trigger.d.ts +9 -17
- package/dist-types/components/panel-trigger/toolbar-loader.d.ts +34 -0
- package/dist-types/components/panel-trigger/types.d.ts +1 -1
- package/dist-types/components/preferences/atoms/accordion.d.ts +6 -4
- package/dist-types/components/preferences/atoms/button.d.ts +1 -1
- package/dist-types/components/preferences/atoms/footer.d.ts +1 -1
- package/dist-types/components/preferences/atoms/root.d.ts +1 -1
- package/dist-types/components/preferences/atoms/vendor-list.d.ts +23 -0
- package/dist-types/components/preferences/index.d.ts +14 -12
- package/dist-types/components/preferences/policy-actions.d.ts +2 -2
- package/dist-types/components/preferences/preferences.d.ts +1 -1
- package/dist-types/components/preferences/types.d.ts +1 -1
- package/dist-types/components/prompt/atoms/early-tap-script.d.ts +17 -0
- package/dist-types/components/prompt/atoms/root.d.ts +4 -0
- package/dist-types/components/prompt/components.d.ts +9 -3
- package/dist-types/components/prompt/index.d.ts +12 -12
- package/dist-types/components/prompt/policy-actions.d.ts +2 -2
- package/dist-types/components/prompt/prompt.d.ts +5 -1
- package/dist-types/components/shared/dialog-sheets.d.ts +9 -0
- package/dist-types/components/shared/first-paint-sheets.d.ts +8 -0
- package/dist-types/components/shared/iab-dialog-sheets.d.ts +3 -0
- package/dist-types/components/shared/iab-first-paint-sheets.d.ts +3 -0
- package/dist-types/components/shared/libs/compose-refs.d.ts +20 -0
- package/dist-types/components/shared/policy-actions.d.ts +2 -2
- package/dist-types/components/shared/primitives/box.d.ts +1 -1
- package/dist-types/components/shared/primitives/button.d.ts +2 -2
- package/dist-types/components/shared/primitives/button.types.d.ts +1 -1
- package/dist-types/components/shared/streamed-surface.d.ts +23 -0
- package/dist-types/components/shared/surface-styles.d.ts +60 -0
- package/dist-types/components/shared/ui/accordion/accordion.d.ts +2 -2
- package/dist-types/components/shared/ui/accordion/index.d.ts +2 -2
- package/dist-types/components/shared/ui/animated-collapse/index.d.ts +2 -2
- package/dist-types/components/shared/ui/branding.d.ts +1 -1
- package/dist-types/components/shared/ui/button/button.d.ts +1 -1
- package/dist-types/components/shared/ui/button/index.d.ts +2 -2
- package/dist-types/components/shared/ui/collapsible/index.d.ts +1 -1
- package/dist-types/components/shared/ui/dialog/index.d.ts +1 -1
- package/dist-types/components/shared/ui/icon.d.ts +2 -1
- package/dist-types/components/shared/ui/logo.d.ts +0 -10
- package/dist-types/components/shared/ui/preference-item/index.d.ts +1 -1
- package/dist-types/components/shared/ui/preference-item/preference-item.d.ts +13 -0
- package/dist-types/components/shared/ui/switch/index.d.ts +2 -2
- package/dist-types/components/shared/ui/switch/switch.d.ts +1 -1
- package/dist-types/components/shared/ui/tabs/index.d.ts +1 -1
- package/dist-types/consent-gate.d.ts +1 -0
- package/dist-types/consent-theme.d.ts +38 -0
- package/dist-types/context/consent-tracking-context.d.ts +10 -0
- package/dist-types/context/index.d.ts +3 -3
- package/dist-types/context/theme-context.d.ts +3 -3
- package/dist-types/context.d.ts +25 -1
- package/dist-types/devtools-launcher.d.ts +29 -0
- package/dist-types/devtools.d.ts +13 -2
- package/dist-types/draft-context.d.ts +31 -0
- package/dist-types/draft.d.ts +81 -9
- package/dist-types/gpp.d.ts +27 -0
- package/dist-types/headless.d.ts +6 -7
- package/dist-types/hooks/use-committed-ref.d.ts +24 -0
- package/dist-types/hooks/use-focus-trap.d.ts +3 -1
- package/dist-types/hooks/use-headless-iab-consent-ui.d.ts +1 -1
- package/dist-types/hooks/use-iab-manager.d.ts +5 -5
- package/dist-types/hooks/use-iab-policy-guard.d.ts +35 -0
- package/dist-types/hooks/use-late-entry.d.ts +14 -0
- package/dist-types/hooks/use-theme.d.ts +1 -1
- package/dist-types/hooks.d.ts +106 -11
- package/dist-types/iab-dialog-deferred.d.ts +36 -0
- package/dist-types/iab.d.ts +8 -7
- package/dist-types/index-parts/consent-banner.d.ts +7 -0
- package/dist-types/index-parts/consent-dialog-link.d.ts +7 -0
- package/dist-types/index-parts/consent-dialog-trigger.d.ts +7 -0
- package/dist-types/index-parts/consent-dialog.d.ts +7 -0
- package/dist-types/index-parts/consent-gate.d.ts +7 -0
- package/dist-types/index-parts/core.d.ts +7 -0
- package/dist-types/index-parts/draft.d.ts +7 -0
- package/dist-types/index-parts/frame.d.ts +7 -0
- package/dist-types/index-parts/hooks.d.ts +7 -0
- package/dist-types/index-parts/hosted.d.ts +7 -0
- package/dist-types/index-parts/module-hooks.d.ts +7 -0
- package/dist-types/index-parts/offline.d.ts +7 -0
- package/dist-types/index-parts/presets.d.ts +7 -0
- package/dist-types/index-parts/provider.d.ts +7 -0
- package/dist-types/index-parts/theme.d.ts +8 -0
- package/dist-types/index-parts/translations.d.ts +7 -0
- package/dist-types/index.d.ts +32 -28
- package/dist-types/kernel-selector.d.ts +68 -0
- package/dist-types/modes.d.ts +26 -0
- package/dist-types/module-hooks/iframe-blocker.d.ts +33 -1
- package/dist-types/module-hooks/network-blocker.d.ts +23 -0
- package/dist-types/module-hooks/network-hold.d.ts +47 -0
- package/dist-types/module-hooks.d.ts +4 -4
- package/dist-types/panel-link.d.ts +1 -1
- package/dist-types/panel-trigger.d.ts +1 -1
- package/dist-types/panel.d.ts +13 -1
- package/dist-types/postcss-tailwind3.d.ts +21 -0
- package/dist-types/preferences.d.ts +12 -1
- package/dist-types/primitives/accordion.d.ts +1 -1
- package/dist-types/primitives/button.d.ts +1 -1
- package/dist-types/primitives/collapsible.d.ts +1 -1
- package/dist-types/primitives/dialog.d.ts +1 -1
- package/dist-types/primitives/preference-item.d.ts +1 -1
- package/dist-types/primitives/switch.d.ts +1 -1
- package/dist-types/primitives/tabs.d.ts +1 -1
- package/dist-types/primitives.d.ts +7 -7
- package/dist-types/prompt.d.ts +1 -1
- package/dist-types/provider.d.ts +169 -28
- package/dist-types/server/fetch-ssr-data.d.ts +1 -1
- package/dist-types/server/headers.d.ts +14 -4
- package/dist-types/server/index.d.ts +5 -5
- package/dist-types/server/normalize-url.d.ts +14 -7
- package/dist-types/server/types.d.ts +12 -1
- package/dist-types/theme-provider.d.ts +2 -2
- package/dist-types/transports/hosted.d.ts +36 -0
- package/dist-types/transports/manifest.d.ts +48 -0
- package/dist-types/transports/offline.d.ts +7 -16
- package/dist-types/types/index.d.ts +3 -3
- package/dist-types/types/manager.d.ts +1 -1
- package/dist-types/types/theme/index.d.ts +1 -1
- package/dist-types/ui-config-context.d.ts +14 -2
- package/dist-types/utils/deferred-module.d.ts +13 -0
- package/dist-types/utils/index.d.ts +4 -4
- package/dist-types/utils/merge-slot-props.d.ts +17 -3
- package/dist-types/utils/merge-styles.d.ts +1 -1
- package/dist-types/utils/theme-utils.d.ts +18 -3
- package/dist-types/version.d.ts +1 -1
- package/docs/README.md +97 -70
- package/docs/assets/v3/bottom-bar.png +0 -0
- package/docs/assets/v3/brand-card.png +0 -0
- package/docs/assets/v3/brand-preferences.png +0 -0
- package/docs/assets/v3/choice-wall.png +0 -0
- package/docs/assets/v3/headless-bar-html.png +0 -0
- package/docs/assets/v3/headless-bar-mobile.png +0 -0
- package/docs/assets/v3/headless-bar.png +0 -0
- package/docs/assets/v3/slim-bar.png +0 -0
- package/docs/concepts/choose-your-setup.md +141 -0
- package/docs/concepts/consent-categories.md +84 -0
- package/docs/concepts/consent-state.md +421 -0
- package/docs/concepts/data-fetching.md +284 -0
- package/docs/concepts/how-consent-works.md +123 -0
- package/docs/concepts/modes.md +281 -0
- package/docs/{frameworks/react/concepts/policy-presets.md → concepts/policies.md} +8 -60
- package/docs/customization/class-names.md +202 -0
- package/docs/customization/dark-mode.md +157 -0
- package/docs/customization/motion.md +128 -0
- package/docs/customization/overview.md +68 -33
- package/docs/customization/recipes.md +838 -47
- package/docs/customization/slots.md +217 -35
- package/docs/customization/stylesheets.md +248 -0
- package/docs/customization/tailwind.md +863 -0
- package/docs/customization/tokens.md +167 -36
- package/docs/customization/translations.md +87 -3
- package/docs/frameworks/react/callbacks.md +118 -0
- package/docs/frameworks/react/clear-on-revocation.md +106 -0
- package/docs/frameworks/react/components/consent-banner.md +48 -27
- package/docs/frameworks/react/components/consent-dialog-link.md +13 -11
- package/docs/frameworks/react/components/consent-dialog-trigger.md +86 -76
- package/docs/frameworks/react/components/consent-dialog.md +111 -58
- package/docs/frameworks/react/components/{frame.md → consent-gate.md} +70 -49
- package/docs/frameworks/react/components/consent-provider.md +143 -0
- package/docs/frameworks/react/components/consent-widget.md +69 -24
- package/docs/frameworks/react/components/dev-tools.md +76 -85
- package/docs/frameworks/react/components.md +113 -0
- package/docs/frameworks/react/compose.md +354 -0
- package/docs/frameworks/react/content-security-policy.md +149 -0
- package/docs/frameworks/react/customize.md +258 -0
- package/docs/frameworks/react/embeds.md +89 -0
- package/docs/frameworks/react/gpp.md +163 -0
- package/docs/frameworks/react/headless.md +4 -4
- package/docs/frameworks/react/hooks.md +70 -0
- package/docs/frameworks/react/iab.md +278 -0
- package/docs/frameworks/react/network-blocker.md +140 -0
- package/docs/frameworks/react/quickstart.md +171 -107
- package/docs/frameworks/react/rendering.md +285 -0
- package/docs/frameworks/react/scripts.md +114 -0
- package/docs/frameworks/react/translations.md +155 -0
- package/docs/frameworks/react/troubleshooting.md +189 -61
- package/docs/frameworks/react/upgrade-v3.md +652 -0
- package/docs/frameworks/react/vendor-consent.md +188 -0
- package/docs/guides/banner-experiments.md +688 -0
- package/docs/guides/troubleshooting.md +192 -54
- package/docs/guides/verify-consent.md +96 -49
- package/docs/integrations/adobe-analytics.md +177 -183
- package/docs/integrations/ahrefs-analytics.md +162 -178
- package/docs/integrations/amplitude.md +172 -180
- package/docs/integrations/building-integrations.md +137 -33
- package/docs/integrations/clearbit.md +164 -178
- package/docs/integrations/cloudflare-web-analytics.md +166 -180
- package/docs/integrations/cloudflare-zaraz.md +333 -0
- package/docs/integrations/crisp.md +174 -182
- package/docs/integrations/databuddy.md +167 -197
- package/docs/integrations/fathom-analytics.md +168 -180
- package/docs/integrations/front-chat.md +308 -0
- package/docs/integrations/google-maps.md +142 -108
- package/docs/integrations/google-tag-manager.md +258 -185
- package/docs/integrations/google-tag.md +226 -182
- package/docs/integrations/heap.md +173 -179
- package/docs/integrations/hightouch.md +171 -181
- package/docs/integrations/hotjar.md +169 -179
- package/docs/integrations/intercom.md +193 -177
- package/docs/integrations/klaviyo.md +473 -0
- package/docs/integrations/linkedin-insights.md +184 -174
- package/docs/integrations/logrocket.md +170 -180
- package/docs/integrations/matomo-analytics.md +198 -202
- package/docs/integrations/meta-pixel.md +198 -174
- package/docs/integrations/microsoft-clarity.md +173 -179
- package/docs/integrations/microsoft-uet.md +158 -178
- package/docs/integrations/mixpanel-analytics.md +165 -184
- package/docs/integrations/one-dollar-stats.md +292 -0
- package/docs/integrations/openai-pixel.md +214 -325
- package/docs/integrations/overview.md +153 -83
- package/docs/integrations/pinterest-tag.md +315 -0
- package/docs/integrations/pirsch.md +179 -183
- package/docs/integrations/plausible-analytics.md +182 -182
- package/docs/integrations/posthog.md +323 -264
- package/docs/integrations/promptwatch.md +164 -178
- package/docs/integrations/reddit-pixel.md +195 -181
- package/docs/integrations/rudderstack.md +211 -210
- package/docs/integrations/rybbit-analytics.md +181 -184
- package/docs/integrations/segment.md +192 -178
- package/docs/integrations/sentry.md +402 -0
- package/docs/integrations/snapchat-pixel.md +196 -180
- package/docs/integrations/tiktok-pixel.md +181 -174
- package/docs/integrations/umami-analytics.md +173 -182
- package/docs/integrations/vercel-analytics.md +176 -181
- package/docs/integrations/vercel-speed-insights.md +306 -0
- package/docs/integrations/x-pixel.md +186 -174
- package/docs/integrations/youtube.md +150 -111
- package/package.json +48 -17
- package/dist/component-hooks/use-manager.js +0 -2
- package/dist/components/frame/atoms.js +0 -1
- package/dist/components/frame/frame.js +0 -2
- package/dist/components/frame/index.js +0 -2
- package/dist/frame.js +0 -2
- package/dist/ui-save.js +0 -1
- package/dist-types/component-hooks/use-manager.d.ts +0 -40
- package/dist-types/components/frame/atoms.d.ts +0 -11
- package/dist-types/components/frame/frame.d.ts +0 -2
- package/dist-types/components/frame/index.d.ts +0 -24
- package/dist-types/frame.d.ts +0 -1
- package/dist-types/ui-save.d.ts +0 -5
- package/docs/assets/v3/brand-bar.png +0 -0
- package/docs/assets/v3/mobile-card.png +0 -0
- package/docs/assets/v3/preferences.png +0 -0
- package/docs/frameworks/react/components/consent-manager-provider.md +0 -71
- package/docs/frameworks/react/concepts/consent-categories.md +0 -33
- package/docs/frameworks/react/hooks/use-consent-manager/overview.md +0 -58
- package/docs/frameworks/react/iab/overview.md +0 -53
- package/docs/frameworks/react/script-loader.md +0 -63
- package/docs/frameworks/react/styling/overview.md +0 -217
- package/docs/guides/consent-state.md +0 -60
- package/docs/guides/data-fetching.md +0 -163
- package/docs/guides/deployment-modes.md +0 -63
- package/docs/integrations/clear-on-revocation.md +0 -167
- package/docs/upgrade-v3.md +0 -334
- package/readme.json +0 -48
- package/src/iab/styles.css +0 -11
- package/src/styles.css +0 -10
- /package/dist/components/{frame → consent-gate}/types.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{Fragment as e,jsx as t,jsxs as r}from"react/jsx-runtime";import s from"@c15t/ui/styles/components/iab-consent-dialog";import{useState as o}from"react";import{useTheme as i}from"../../../hooks/use-theme.js";import{useUIConfig as a}from"../../../ui-config-context.js";import{mergeSlotProps as n}from"../../../utils/merge-slot-props.js";import{useIABTranslations as l}from"../use-iab-translations.js";import{PurposeItem as c}from"./purpose-item.js";import*as d from"../../shared/ui/preference-item/index.js";import*as m from"../../shared/ui/switch/index.js";let p={},h={},g=({stack:g,consents:
|
|
2
|
+
import{Fragment as e,jsx as t,jsxs as r}from"react/jsx-runtime";import s from"@c15t/ui/styles/components/iab-consent-dialog";import{useState as o}from"react";import{useTheme as i}from"../../../hooks/use-theme.js";import{useUIConfig as a}from"../../../ui-config-context.js";import{mergeSlotProps as n}from"../../../utils/merge-slot-props.js";import{useIABTranslations as l}from"../use-iab-translations.js";import{PurposeItem as c}from"./purpose-item.js";import*as d from"../../shared/ui/preference-item/index.js";import*as m from"../../shared/ui/switch/index.js";let p={},h={},g=({stack:g,consents:f,onToggle:k,vendorConsents:u,onVendorToggle:v,onVendorClick:C,vendorLegitimateInterests:y=p,onVendorLegitimateInterestToggle:N,purposeLegitimateInterests:b=h,onPurposeLegitimateInterestToggle:S})=>{let{components:I}=a(),{noStyle:j}=i(),L=l(),[T,x]=o(!1),M=g.purposes.filter(e=>!1!==e.hasConsentBasis||void 0===S),w=M.every(e=>f[e.id]??!1),P=M.some(e=>f[e.id]??!1)&&!w,V=n(I?.["iab-stack-item"]?.header,{baseClassName:s.stackHeader,noStyle:j}),B=new Set(g.purposes.flatMap(e=>e.vendors.map(e=>e.id))).size;return r(d.Root,{className:j?void 0:s.stackItem,"data-testid":`stack-item-${g.id}`,noStyle:!0,onOpenChange:x,open:T,slotKey:"iab-stack-item.root",children:[r("div",{...V,children:[r(d.Trigger,{className:j?void 0:s.stackTrigger,noStyle:!0,slotKey:"iab-stack-item.trigger",children:[t(d.Leading,{noStyle:!0,children:t("svg",{className:s.purposeArrow,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:T?t("path",{d:"M19 9l-7 7-7-7"}):t("path",{d:"M9 5l7 7-7 7"})})}),r(d.Header,{className:s.stackInfo,noStyle:!0,children:[t(d.Title,{className:s.stackName,noStyle:!0,children:g.name}),r(d.Meta,{className:s.stackMeta,noStyle:!0,children:[B," ",1===B?L.preferenceCenter.vendorList.partnerSingular:L.preferenceCenter.vendorList.partnerPlural]})]})]}),r(d.Control,{className:s.stackControls,noStyle:!0,children:[P&&r(e,{children:[t("span",{className:s.srOnly,children:"Partially enabled"}),t("div",{className:s.partialIndicator})]}),M.length>0&&t(m.Root,{"aria-label":g.name,checked:w,onCheckedChange:e=>{for(let t of M)for(let r of(k(t.id,e),t.vendors))r.usesLegitimateInterest||v(r.id,e)}})]})]}),r(d.Content,{noStyle:j,children:[t("div",{className:s.stackDescription,children:t("p",{children:g.description})}),t("div",{...n(I?.["iab-stack-item"]?.content,{baseClassName:s.stackContent,noStyle:j}),children:g.purposes.map(e=>t(c,{purpose:e,isEnabled:f[e.id]??!1,onToggle:t=>k(e.id,t),vendorConsents:u,onVendorToggle:v,onVendorClick:C,vendorLegitimateInterests:y,onVendorLegitimateInterestToggle:N,purposeLegitimateInterests:b,onPurposeLegitimateInterestToggle:S},e.id))})]})]})};export{g as StackItem};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e,jsxs as r}from"react/jsx-runtime";import n from"@c15t/ui/styles/components/iab-consent-dialog";import{useEffect as t,useState as s}from"react";import{useTheme as i}from"../../../hooks/use-theme.js";import{useUIConfig as o}from"../../../ui-config-context.js";import{mergeSlotProps as a}from"../../../utils/merge-slot-props.js";import{useIABTranslations as l}from"../use-iab-translations.js";import*as d from"../../shared/ui/preference-item/index.js";import*as c from"../../shared/ui/switch/index.js";let m=[],p={},h=({vendorData:h,purposes:u,vendorConsents:v,onVendorToggle:g,selectedVendorId:f,onClearSelection:N,customVendors:C=m,vendorLegitimateInterests:k=p,onVendorLegitimateInterestToggle:L})=>{let{components:y}=o(),{noStyle:S}=i(),[x,I]=s(""),[P,b]=s(new Set),M=l(),w=[...h?Object.entries(h.vendors).map(([e,r])=>({cookieMaxAgeSeconds:r.cookieMaxAgeSeconds,cookieRefresh:r.cookieRefresh,dataDeclaration:r.dataDeclaration||[],dataRetention:r.dataRetention,deviceStorageDisclosureUrl:r.deviceStorageDisclosureUrl??null,features:r.features||[],id:Number(e),isCustom:!1,legIntPurposes:r.legIntPurposes||[],legitimateInterestUrl:r.urls?.find(e=>e.legIntClaim)?.legIntClaim??null,name:r.name,policyUrl:r.policyUrl??"",purposes:r.purposes||[],specialFeatures:r.specialFeatures||[],specialPurposes:r.specialPurposes||[],usesCookies:r.usesCookies,usesNonCookieAccess:r.usesNonCookieAccess})):[],...C.map(e=>({cookieMaxAgeSeconds:e.cookieMaxAgeSeconds??null,cookieRefresh:void 0,dataDeclaration:e.dataCategories||[],dataRetention:void 0,deviceStorageDisclosureUrl:null,features:e.features||[],id:e.id,isCustom:!0,legIntPurposes:e.legIntPurposes||[],legitimateInterestUrl:null,name:e.name,policyUrl:e.privacyPolicyUrl,purposes:e.purposes||[],specialFeatures:e.specialFeatures||[],specialPurposes:[],usesCookies:e.usesCookies??!1,usesNonCookieAccess:e.usesNonCookieAccess??!1}))].sort((e,r)=>e.name.localeCompare(r.name));t(()=>{if(null!==f){let e=requestAnimationFrame(()=>{b(e=>new Set(e).add(f))}),r=setTimeout(()=>{let e=document.getElementById(`vendor-${String(f)}`);e&&e.scrollIntoView({behavior:"smooth",block:"start"})},100);return()=>{cancelAnimationFrame(e),clearTimeout(r)}}},[f]);let R=null===f?w.filter(e=>e.name.toLowerCase().includes(x.toLowerCase())):w.filter(e=>String(e.id)===String(f)),B=R.filter(e=>!e.isCustom),V=R.filter(e=>e.isCustom),A=a(y?.["iab-vendor-list"]?.root,{noStyle:S}),T=a(y?.["iab-vendor-list"]?.header,{baseClassName:n.vendorListHeader,noStyle:S}),D=a(y?.["iab-vendor-list"]?.search,{baseClassName:n.searchContainer,noStyle:S}),U=a(y?.["iab-vendor-list"]?.selectedVendor,{baseClassName:n.selectedVendorBanner,noStyle:S}),$=function(t){var s,i,o,l;let m,p,f,N,C=String(t.id),x=(s=t.id,(m=w.find(e=>String(e.id)===String(s)))?u.filter(e=>e.vendors.some(e=>String(e.id)===String(s))).map(e=>({...e,usesLegitimateInterest:m.legIntPurposes.includes(e.id)})):[]),I=(i=t.id,(p=w.find(e=>String(e.id)===String(i)))&&h?p.specialPurposes.map(e=>h.specialPurposes[e]).filter(e=>null!=e).map(e=>({description:e.description,id:e.id,name:e.name})):[]),R=(o=t.id,(f=w.find(e=>String(e.id)===String(o)))&&h?f.specialFeatures.map(e=>h.specialFeatures[e]).filter(e=>null!=e).map(e=>({description:e.description,id:e.id,name:e.name})):[]),B=(l=t.id,(N=w.find(e=>String(e.id)===String(l)))&&h?(N.features||[]).map(e=>h.features[e]).filter(e=>null!=e).map(e=>({description:e.description,id:e.id,name:e.name})):[]),V=P.has(t.id),A=x.filter(e=>e.usesLegitimateInterest).length,T=t.legIntPurposes.length>0,D=k[C]??!0,U=t.dataRetention?.stdRetention,$=null;t.cookieMaxAgeSeconds&&($=M.preferenceCenter.vendorList.maxAge.replace("{days}",String(Math.floor(t.cookieMaxAgeSeconds/86400))),t.cookieRefresh&&($=`${$} (refreshes)`));let j=a(y?.["iab-vendor-list"]?.rowHeader,{baseClassName:n.vendorListItemHeader,noStyle:S});return r(d.Root,{id:`vendor-${C}`,className:S?void 0:`${n.vendorListItem} ${t.isCustom?n.customVendorItem:""}`,noStyle:!0,onOpenChange:()=>{var e;return e=t.id,void b(r=>{let n=new Set(r);return n.has(e)?n.delete(e):n.add(e),n})},open:V,slotKey:"iab-vendor-list.row",children:[r("div",{...j,children:[r(d.Trigger,{className:n.vendorListTrigger,noStyle:!0,children:[r("div",{className:n.vendorListInfo,children:[r("h3",{className:n.vendorListName,children:[t.name,t.isCustom&&r("svg",{className:n.customVendorIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-label":M.common.customPartner,children:[e("circle",{cx:"12",cy:"12",r:"10"}),e("line",{x1:"2",y1:"12",x2:"22",y2:"12"}),e("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"})]})]}),r("div",{className:n.vendorListMeta,children:[r("span",{className:n.vendorListMetaText,children:[x.length," purpose",1===x.length?"":"s",I.length>0&&`, ${I.length} special`,R.length>0&&`, ${R.length} feature${1===R.length?"":"s"}`]}),A>0&&r("span",{className:n.vendorListLiBadge,children:[e("svg",{style:{height:"0.625rem",width:"0.625rem"},viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e("path",{d:"M12 3v18M3 12h18M4.93 4.93l14.14 14.14M19.07 4.93L4.93 19.07"})}),A," ",M.preferenceCenter.vendorList.legitimateInterest]})]})]}),e("svg",{className:n.purposeArrow,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:V?e("path",{d:"M19 15l-7-7-7 7"}):e("path",{d:"M19 9l-7 7-7-7"})})]}),e("div",{className:n.vendorConsentControl,children:e(c.Root,{"aria-label":`Consent for ${t.name}`,className:n.vendorConsentSwitch,checked:v[C]??!1,onCheckedChange:e=>g(t.id,e)})})]}),r(d.Content,{innerClassName:S?void 0:n.vendorListContent,innerSlotKey:"iab-vendor-list.rowContent",noStyle:S,children:[r("div",{className:n.vendorLinks,children:[r("a",{href:t.policyUrl,target:"_blank",rel:"noopener noreferrer",className:n.vendorLink,children:[r("svg",{className:n.vendorLinkIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),e("polyline",{points:"15 3 21 3 21 9"}),e("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]}),M.preferenceCenter.vendorList.privacyPolicy]}),t.legitimateInterestUrl&&r("a",{href:t.legitimateInterestUrl,target:"_blank",rel:"noopener noreferrer",className:n.vendorLink,children:[r("svg",{className:n.vendorLinkIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),e("polyline",{points:"15 3 21 3 21 9"}),e("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]}),M.preferenceCenter.purposeItem.legitimateInterest]}),t.deviceStorageDisclosureUrl&&r("a",{href:t.deviceStorageDisclosureUrl,target:"_blank",rel:"noopener noreferrer",className:n.vendorLink,children:[r("svg",{className:n.vendorLinkIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),e("polyline",{points:"15 3 21 3 21 9"}),e("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]}),M.preferenceCenter.vendorList.storageDisclosure]})]}),r("div",{className:n.vendorBadges,children:[t.usesCookies&&e("span",{className:n.vendorBadge,children:M.preferenceCenter.vendorList.usesCookies}),t.usesNonCookieAccess&&e("span",{className:n.vendorBadge,children:M.preferenceCenter.vendorList.nonCookieAccess}),$&&e("span",{className:n.vendorBadge,children:$}),U&&e("span",{className:n.vendorBadge,children:M.preferenceCenter.vendorList.retention.replace("{days}",String(U))})]}),x.length>0&&r("div",{className:n.vendorPurposesList,children:[r("h4",{className:n.vendorPurposesTitle,children:[M.preferenceCenter.vendorList.purposes," (",x.length,")"]}),e("ul",{className:n.vendorPurposesItems,children:x.map(s=>{let i;return t.dataRetention?.purposes?.[s.id]?i=t.dataRetention.purposes[s.id]:t.dataRetention?.stdRetention&&(i=t.dataRetention.stdRetention),r("li",{className:`${n.vendorPurposeItem} ${s.usesLegitimateInterest?n.vendorPurposeItemLi:""}`,children:[r("span",{children:[s.name,i&&r("span",{className:n.vendorRetention,children:[" ","(Retained: ",i,"d)"]})]}),s.usesLegitimateInterest&&r("span",{className:n.vendorListLiBadge,children:[e("svg",{style:{height:"0.625rem",width:"0.625rem"},viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e("path",{d:"M12 3v18M3 12h18M4.93 4.93l14.14 14.14M19.07 4.93L4.93 19.07"})}),M.preferenceCenter.vendorList.legitimateInterest]})]},s.id)})})]}),T&&L&&r("div",{className:n.vendorLiSection,children:[r("div",{className:n.vendorLiSectionHeader,children:[r("h4",{className:n.vendorPurposesTitle,children:[e("svg",{style:{height:"0.75rem",marginRight:"0.25rem",width:"0.75rem"},viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e("path",{d:"M12 3v18M3 12h18M4.93 4.93l14.14 14.14M19.07 4.93L4.93 19.07"})}),M.preferenceCenter.purposeItem.legitimateInterest]}),e("button",{type:"button",onClick:()=>L(t.id,!D),className:`${n.objectButton} ${D?"":n.objectButtonActive}`,"aria-pressed":!D,children:D?M.preferenceCenter.purposeItem.objectButton:M.preferenceCenter.purposeItem.objected})]}),e("p",{className:n.liExplanation,children:M.preferenceCenter.purposeItem.rightToObject})]}),t.dataDeclaration&&t.dataDeclaration.length>0&&r("div",{className:n.vendorPurposesList,children:[r("h4",{className:n.vendorPurposesTitle,children:[M.preferenceCenter.vendorList.dataCategories," (",t.dataDeclaration.length,")"]}),e("ul",{className:n.vendorPurposesItems,children:t.dataDeclaration.map(r=>{let t=h?.dataCategories?.[r];return e("li",{className:n.vendorPurposeItem,title:t?.description,children:t?.name||`Data Category ${r}`},r)})})]}),I.length>0&&r("div",{className:n.vendorPurposesList,children:[r("h4",{className:n.vendorPurposesTitle,children:[r("svg",{"aria-hidden":"true",focusable:"false",style:{height:"0.75rem",marginRight:"0.25rem",width:"0.75rem"},viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("title",{children:M.preferenceCenter.vendorList.specialPurposes}),e("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2",ry:"2"}),e("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})]}),M.preferenceCenter.vendorList.specialPurposes," (",I.length,")"]}),e("ul",{className:n.vendorPurposesItems,children:I.map(s=>{let i;return t.dataRetention?.specialPurposes?.[s.id]?i=t.dataRetention.specialPurposes[s.id]:t.dataRetention?.stdRetention&&(i=t.dataRetention.stdRetention),e("li",{className:n.vendorPurposeItem,children:r("span",{children:[s.name,i&&r("span",{className:n.vendorRetention,children:[" ","(Retained: ",i,"d)"]})]})},s.id)})}),e("p",{className:n.vendorListMetaText,style:{fontStyle:"italic",marginTop:"0.25rem"},children:M.preferenceCenter.vendorList.requiredNotice})]}),R.length>0&&r("div",{className:n.vendorPurposesList,children:[r("h4",{className:n.vendorPurposesTitle,children:[M.preferenceCenter.vendorList.specialFeatures," (",R.length,")"]}),e("ul",{className:n.vendorPurposesItems,children:R.map(r=>e("li",{className:n.vendorPurposeItem,children:r.name},r.id))})]}),B.length>0&&r("div",{className:n.vendorPurposesList,children:[r("h4",{className:n.vendorPurposesTitle,children:[M.preferenceCenter.vendorList.features," (",B.length,")"]}),e("ul",{className:n.vendorPurposesItems,children:B.map(r=>e("li",{className:n.vendorPurposeItem,children:r.name},r.id))})]})]})]},t.id)};return r("div",{...A,children:[null===f?r("div",{...T,children:[r("div",{...D,children:[r("svg",{className:n.searchIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("circle",{cx:"11",cy:"11",r:"8"}),e("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]}),e("input",{type:"text",placeholder:M.preferenceCenter.vendorList.search,value:x,onChange:e=>I(e.target.value),className:n.searchInput})]}),e("p",{className:n.vendorCount,children:M.preferenceCenter.vendorList.showingCount.replace("{filtered}",String(R.length)).replace("{total}",String(w.length))})]}):r("div",{...U,children:[e("p",{className:n.selectedVendorText,children:M.common.showingSelectedVendor}),r("button",{type:"button",onClick:N,className:n.clearSelectionButton,children:[r("svg",{className:n.clearIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]}),M.common.clearSelection]})]}),B.length>0&&r("div",{className:n.vendorSection,children:[r("div",{className:n.iabVendorSectionHeader,children:[r("h3",{className:n.vendorSectionHeading,children:[r("svg",{className:n.vendorSectionIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("path",{d:"M12 2L2 7l10 5 10-5-10-5z"}),e("path",{d:"M2 17l10 5 10-5"}),e("path",{d:"M2 12l10 5 10-5"})]}),M.preferenceCenter.vendorList.iabVendorsHeading," (",B.length,")"]}),e("p",{className:n.iabVendorNotice,children:M.preferenceCenter.vendorList.iabVendorsNotice})]}),e("div",{children:B.map(e=>$(e))})]}),V.length>0&&r("div",{className:n.vendorSection,children:[r("div",{className:n.customVendorSectionHeader,children:[r("h3",{className:n.vendorSectionHeading,children:[r("svg",{className:n.vendorSectionIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("circle",{cx:"12",cy:"12",r:"10"}),e("line",{x1:"2",y1:"12",x2:"22",y2:"12"}),e("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"})]}),M.preferenceCenter.vendorList.customVendorsHeading," (",V.length,")"]}),e("p",{className:n.customVendorNotice,children:M.preferenceCenter.vendorList.customVendorsNotice})]}),e("div",{children:V.map(e=>$(e))})]}),0===R.length&&e("div",{className:n.emptyState,children:r("p",{className:n.emptyStateText,children:['No vendors found matching "',x,'"']})})]})};export{h as VendorList};
|
|
2
|
+
import{jsx as e,jsxs as r}from"react/jsx-runtime";import{resolveIABVendorUrls as n}from"@c15t/iab/headless";import t from"@c15t/ui/styles/components/iab-consent-dialog";import{useEffect as s,useState as i}from"react";import{useTranslations as o}from"../../../hooks.js";import{useTheme as a}from"../../../hooks/use-theme.js";import{useUIConfig as l}from"../../../ui-config-context.js";import{mergeSlotProps as d}from"../../../utils/merge-slot-props.js";import{useIABTranslations as c}from"../use-iab-translations.js";import*as m from"../../shared/ui/preference-item/index.js";import*as p from"../../shared/ui/switch/index.js";let h=[],u={},v=({vendorData:v,purposes:g,vendorConsents:f,onVendorToggle:N,selectedVendorId:C,onClearSelection:k,customVendors:L=h,vendorLegitimateInterests:S=u,onVendorLegitimateInterestToggle:x})=>{let{components:y}=l(),{noStyle:I}=a(),[P,b]=i(""),[M,w]=i(new Set),R=c(),B=o()?.language,V=[...v?Object.entries(v.vendors).map(([e,r])=>({cookieMaxAgeSeconds:r.cookieMaxAgeSeconds,cookieRefresh:r.cookieRefresh,dataDeclaration:r.dataDeclaration||[],dataRetention:r.dataRetention,deviceStorageDisclosureUrl:r.deviceStorageDisclosureUrl??null,features:r.features||[],id:Number(e),isCustom:!1,legIntPurposes:r.legIntPurposes||[],...n(r,B),name:r.name,purposes:r.purposes||[],specialFeatures:r.specialFeatures||[],specialPurposes:r.specialPurposes||[],usesCookies:r.usesCookies,usesNonCookieAccess:r.usesNonCookieAccess})):[],...L.map(e=>({cookieMaxAgeSeconds:e.cookieMaxAgeSeconds??null,cookieRefresh:void 0,dataDeclaration:e.dataCategories||[],dataRetention:void 0,deviceStorageDisclosureUrl:null,features:e.features||[],id:e.id,isCustom:!0,legIntPurposes:e.legIntPurposes||[],legitimateInterestUrl:null,name:e.name,policyUrl:e.privacyPolicyUrl,purposes:e.purposes||[],specialFeatures:e.specialFeatures||[],specialPurposes:[],usesCookies:e.usesCookies??!1,usesNonCookieAccess:e.usesNonCookieAccess??!1}))].sort((e,r)=>e.name.localeCompare(r.name));s(()=>{if(null!==C){let e=requestAnimationFrame(()=>{w(e=>new Set(e).add(C))}),r=setTimeout(()=>{let e=document.getElementById(`vendor-${String(C)}`);e&&e.scrollIntoView({behavior:"smooth",block:"start"})},100);return()=>{cancelAnimationFrame(e),clearTimeout(r)}}},[C]);let A=null===C?V.filter(e=>e.name.toLowerCase().includes(P.toLowerCase())):V.filter(e=>String(e.id)===String(C)),T=A.filter(e=>!e.isCustom),j=A.filter(e=>e.isCustom),D=d(y?.["iab-vendor-list"]?.root,{noStyle:I}),$=d(y?.["iab-vendor-list"]?.header,{baseClassName:t.vendorListHeader,noStyle:I}),H=d(y?.["iab-vendor-list"]?.search,{baseClassName:t.searchContainer,noStyle:I}),W=d(y?.["iab-vendor-list"]?.selectedVendor,{baseClassName:t.selectedVendorBanner,noStyle:I}),U=function(n){var s,i,o,a;let l,c,h,u,C=String(n.id),k=(s=n.id,(l=V.find(e=>String(e.id)===String(s)))?g.filter(e=>e.vendors.some(e=>String(e.id)===String(s))).map(e=>({...e,usesLegitimateInterest:l.legIntPurposes.includes(e.id)})):[]),L=(i=n.id,(c=V.find(e=>String(e.id)===String(i)))&&v?c.specialPurposes.map(e=>v.specialPurposes[e]).filter(e=>null!=e).map(e=>({description:e.description,id:e.id,name:e.name})):[]),P=(o=n.id,(h=V.find(e=>String(e.id)===String(o)))&&v?h.specialFeatures.map(e=>v.specialFeatures[e]).filter(e=>null!=e).map(e=>({description:e.description,id:e.id,name:e.name})):[]),b=(a=n.id,(u=V.find(e=>String(e.id)===String(a)))&&v?(u.features||[]).map(e=>v.features[e]).filter(e=>null!=e).map(e=>({description:e.description,id:e.id,name:e.name})):[]),B=M.has(n.id),A=k.filter(e=>e.usesLegitimateInterest).length,T=n.legIntPurposes.length>0,j=S[C]??!0,D=n.dataRetention?.stdRetention,$=null;n.cookieMaxAgeSeconds&&($=R.preferenceCenter.vendorList.maxAge.replace("{days}",String(Math.floor(n.cookieMaxAgeSeconds/86400))),n.cookieRefresh&&($=`${$} (refreshes)`));let H=d(y?.["iab-vendor-list"]?.rowHeader,{baseClassName:t.vendorListItemHeader,noStyle:I});return r(m.Root,{id:`vendor-${C}`,className:I?void 0:`${t.vendorListItem} ${n.isCustom?t.customVendorItem:""}`,noStyle:!0,onOpenChange:()=>{var e;return e=n.id,void w(r=>{let n=new Set(r);return n.has(e)?n.delete(e):n.add(e),n})},open:B,slotKey:"iab-vendor-list.row",children:[r("div",{...H,children:[r(m.Trigger,{className:t.vendorListTrigger,noStyle:!0,children:[r("div",{className:t.vendorListInfo,children:[r("h3",{className:t.vendorListName,children:[n.name,n.isCustom&&r("svg",{className:t.customVendorIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-label":R.common.customPartner,children:[e("circle",{cx:"12",cy:"12",r:"10"}),e("line",{x1:"2",y1:"12",x2:"22",y2:"12"}),e("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"})]})]}),r("div",{className:t.vendorListMeta,children:[r("span",{className:t.vendorListMetaText,children:[k.length," purpose",1===k.length?"":"s",L.length>0&&`, ${L.length} special`,P.length>0&&`, ${P.length} feature${1===P.length?"":"s"}`]}),A>0&&r("span",{className:t.vendorListLiBadge,children:[e("svg",{style:{height:"0.625rem",width:"0.625rem"},viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e("path",{d:"M12 3v18M3 12h18M4.93 4.93l14.14 14.14M19.07 4.93L4.93 19.07"})}),A," ",R.preferenceCenter.vendorList.legitimateInterest]})]})]}),e("svg",{className:t.purposeArrow,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:B?e("path",{d:"M19 15l-7-7-7 7"}):e("path",{d:"M19 9l-7 7-7-7"})})]}),e("div",{className:t.vendorConsentControl,children:e(p.Root,{"aria-label":`Consent for ${n.name}`,className:t.vendorConsentSwitch,checked:f[C]??!1,onCheckedChange:e=>N(n.id,e)})})]}),r(m.Content,{innerClassName:I?void 0:t.vendorListContent,innerSlotKey:"iab-vendor-list.rowContent",noStyle:I,children:[r("div",{className:t.vendorLinks,children:[r("a",{href:n.policyUrl,target:"_blank",rel:"noopener noreferrer",className:t.vendorLink,children:[r("svg",{className:t.vendorLinkIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),e("polyline",{points:"15 3 21 3 21 9"}),e("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]}),R.preferenceCenter.vendorList.privacyPolicy]}),n.legitimateInterestUrl&&r("a",{href:n.legitimateInterestUrl,target:"_blank",rel:"noopener noreferrer",className:t.vendorLink,children:[r("svg",{className:t.vendorLinkIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),e("polyline",{points:"15 3 21 3 21 9"}),e("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]}),R.preferenceCenter.purposeItem.legitimateInterest]}),n.deviceStorageDisclosureUrl&&r("a",{href:n.deviceStorageDisclosureUrl,target:"_blank",rel:"noopener noreferrer",className:t.vendorLink,children:[r("svg",{className:t.vendorLinkIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),e("polyline",{points:"15 3 21 3 21 9"}),e("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]}),R.preferenceCenter.vendorList.storageDisclosure]})]}),r("div",{className:t.vendorBadges,children:[n.usesCookies&&e("span",{className:t.vendorBadge,children:R.preferenceCenter.vendorList.usesCookies}),n.usesNonCookieAccess&&e("span",{className:t.vendorBadge,children:R.preferenceCenter.vendorList.nonCookieAccess}),$&&e("span",{className:t.vendorBadge,children:$}),D&&e("span",{className:t.vendorBadge,children:R.preferenceCenter.vendorList.retention.replace("{days}",String(D))})]}),k.length>0&&r("div",{className:t.vendorPurposesList,children:[r("h4",{className:t.vendorPurposesTitle,children:[R.preferenceCenter.vendorList.purposes," (",k.length,")"]}),e("ul",{className:t.vendorPurposesItems,children:k.map(s=>{let i;return n.dataRetention?.purposes?.[s.id]?i=n.dataRetention.purposes[s.id]:n.dataRetention?.stdRetention&&(i=n.dataRetention.stdRetention),r("li",{className:`${t.vendorPurposeItem} ${s.usesLegitimateInterest?t.vendorPurposeItemLi:""}`,children:[r("span",{children:[s.name,i&&r("span",{className:t.vendorRetention,children:[" ","(Retained: ",i,"d)"]})]}),s.usesLegitimateInterest&&r("span",{className:t.vendorListLiBadge,children:[e("svg",{style:{height:"0.625rem",width:"0.625rem"},viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e("path",{d:"M12 3v18M3 12h18M4.93 4.93l14.14 14.14M19.07 4.93L4.93 19.07"})}),R.preferenceCenter.vendorList.legitimateInterest]})]},s.id)})})]}),T&&x&&r("div",{className:t.vendorLiSection,children:[r("div",{className:t.vendorLiSectionHeader,children:[r("h4",{className:t.vendorPurposesTitle,children:[e("svg",{style:{height:"0.75rem",marginRight:"0.25rem",width:"0.75rem"},viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e("path",{d:"M12 3v18M3 12h18M4.93 4.93l14.14 14.14M19.07 4.93L4.93 19.07"})}),R.preferenceCenter.purposeItem.legitimateInterest]}),e("button",{type:"button",onClick:()=>x(n.id,!j),className:`${t.objectButton} ${j?"":t.objectButtonActive}`,"aria-pressed":!j,children:j?R.preferenceCenter.purposeItem.objectButton:R.preferenceCenter.purposeItem.objected})]}),e("p",{className:t.liExplanation,children:R.preferenceCenter.purposeItem.rightToObject})]}),n.dataDeclaration&&n.dataDeclaration.length>0&&r("div",{className:t.vendorPurposesList,children:[r("h4",{className:t.vendorPurposesTitle,children:[R.preferenceCenter.vendorList.dataCategories," (",n.dataDeclaration.length,")"]}),e("ul",{className:t.vendorPurposesItems,children:n.dataDeclaration.map(r=>{let n=v?.dataCategories?.[r];return e("li",{className:t.vendorPurposeItem,title:n?.description,children:n?.name||`Data Category ${r}`},r)})})]}),L.length>0&&r("div",{className:t.vendorPurposesList,children:[r("h4",{className:t.vendorPurposesTitle,children:[r("svg",{"aria-hidden":"true",focusable:"false",style:{height:"0.75rem",marginRight:"0.25rem",width:"0.75rem"},viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("title",{children:R.preferenceCenter.vendorList.specialPurposes}),e("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2",ry:"2"}),e("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})]}),R.preferenceCenter.vendorList.specialPurposes," (",L.length,")"]}),e("ul",{className:t.vendorPurposesItems,children:L.map(s=>{let i;return n.dataRetention?.specialPurposes?.[s.id]?i=n.dataRetention.specialPurposes[s.id]:n.dataRetention?.stdRetention&&(i=n.dataRetention.stdRetention),e("li",{className:t.vendorPurposeItem,children:r("span",{children:[s.name,i&&r("span",{className:t.vendorRetention,children:[" ","(Retained: ",i,"d)"]})]})},s.id)})}),e("p",{className:t.vendorListMetaText,style:{fontStyle:"italic",marginTop:"0.25rem"},children:R.preferenceCenter.vendorList.requiredNotice})]}),P.length>0&&r("div",{className:t.vendorPurposesList,children:[r("h4",{className:t.vendorPurposesTitle,children:[R.preferenceCenter.vendorList.specialFeatures," (",P.length,")"]}),e("ul",{className:t.vendorPurposesItems,children:P.map(r=>e("li",{className:t.vendorPurposeItem,children:r.name},r.id))})]}),b.length>0&&r("div",{className:t.vendorPurposesList,children:[r("h4",{className:t.vendorPurposesTitle,children:[R.preferenceCenter.vendorList.features," (",b.length,")"]}),e("ul",{className:t.vendorPurposesItems,children:b.map(r=>e("li",{className:t.vendorPurposeItem,children:r.name},r.id))})]})]})]},n.id)};return r("div",{...D,children:[null===C?r("div",{...$,children:[r("div",{...H,children:[r("svg",{className:t.searchIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("circle",{cx:"11",cy:"11",r:"8"}),e("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]}),e("input",{type:"text",placeholder:R.preferenceCenter.vendorList.search,value:P,onChange:e=>b(e.target.value),className:t.searchInput})]}),e("p",{className:t.vendorCount,children:R.preferenceCenter.vendorList.showingCount.replace("{filtered}",String(A.length)).replace("{total}",String(V.length))})]}):r("div",{...W,children:[e("p",{className:t.selectedVendorText,children:R.common.showingSelectedVendor}),r("button",{type:"button",onClick:k,className:t.clearSelectionButton,children:[r("svg",{className:t.clearIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]}),R.common.clearSelection]})]}),T.length>0&&r("div",{className:t.vendorSection,children:[r("div",{className:t.iabVendorSectionHeader,children:[r("h3",{className:t.vendorSectionHeading,children:[r("svg",{className:t.vendorSectionIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("path",{d:"M12 2L2 7l10 5 10-5-10-5z"}),e("path",{d:"M2 17l10 5 10-5"}),e("path",{d:"M2 12l10 5 10-5"})]}),R.preferenceCenter.vendorList.iabVendorsHeading," (",T.length,")"]}),e("p",{className:t.iabVendorNotice,children:R.preferenceCenter.vendorList.iabVendorsNotice})]}),e("div",{children:T.map(e=>U(e))})]}),j.length>0&&r("div",{className:t.vendorSection,children:[r("div",{className:t.customVendorSectionHeader,children:[r("h3",{className:t.vendorSectionHeading,children:[r("svg",{className:t.vendorSectionIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("circle",{cx:"12",cy:"12",r:"10"}),e("line",{x1:"2",y1:"12",x2:"22",y2:"12"}),e("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"})]}),R.preferenceCenter.vendorList.customVendorsHeading," (",j.length,")"]}),e("p",{className:t.customVendorNotice,children:R.preferenceCenter.vendorList.customVendorsNotice})]}),e("div",{children:j.map(e=>U(e))})]}),0===A.length&&e("div",{className:t.emptyState,children:r("p",{className:t.emptyStateText,children:['No vendors found matching "',P,'"']})})]})};export{v as VendorList};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{processGVLForDialog as t}from"@c15t/iab/headless";import{useMemo as a}from"react";import{useIAB as e}from"../../../iab-context.js";let r=function(){let r=e();return a(()=>t(r),[r])};export{r as useGVLData};
|
|
2
|
+
import{processGVLForDialog as t}from"@c15t/iab/headless";import{useMemo as a}from"react";import{useTranslations as o}from"../../../hooks.js";import{useIAB as e}from"../../../iab-context.js";let r=function(){let r=e(),s=o()?.language;return a(()=>t(r&&{...r,language:s}),[r,s])};export{r as useGVLData};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{Fragment as e,jsx as t,jsxs as o}from"react/jsx-runtime";import{isDialogDismissKey as n}from"@c15t/ui/primitives/dialog";import r from"@c15t/ui/styles/components/consent-actions";import i from"@c15t/ui/styles/components/iab-consent-dialog";import{useCallback as a,useEffect as s,useLayoutEffect as l,useMemo as d,useRef as c,useState as m}from"react";import{createPortal as p}from"react-dom";import{useHeadlessIABConsentUI as u}from"../../component-hooks/use-headless-iab-consent-ui.js";import{useTranslations as g}from"../../component-hooks/use-translations.js";import{ConsentDialogTrigger as h}from"../panel-trigger/index.js";import{Branding as b}from"../panel/atoms/card.js";import{ConsentTrackingContext as y}from"../../context/consent-tracking-context.js";import{LocalThemeContext as v}from"../../context/theme-context.js";import{useComponentConfig as f}from"../../hooks/use-component-config.js";import{useFocusTrap as C}from"../../hooks/use-focus-trap.js";import{useIABConsentManager as S}from"../../hooks/use-iab-manager.js";import{useScrollLock as k}from"../../hooks/use-scroll-lock.js";import{useTextDirection as I}from"../../hooks/use-text-direction.js";import{useUIConfig as N}from"../../ui-config-context.js";import{mergeSlotProps as x}from"../../utils/merge-slot-props.js";import{IABConsentDialogOverlay as L}from"./atoms/overlay.js";import{PurposeItem as j}from"./atoms/purpose-item.js";import{StackItem as T}from"./atoms/stack-item.js";import{VendorList as A}from"./atoms/vendor-list.js";import{useIABDisplayModel as V}from"./hooks/use-display-model.js";import{useIABTranslations as F}from"./use-iab-translations.js";import*as w from"../shared/ui/button/index.js";import*as P from"../shared/ui/tabs/index.js";let B=["iab"],R={tabIndex:-1},$=({open:$,noStyle:M,disableAnimation:q,scrollLock:z,trapFocus:E,hideBranding:H,initialTab:W,showTrigger:D=!1,models:G=B,uiSource:O})=>{let _=F(),{common:J}=g(),{components:K}=N(),{iab:Q,activeUI:U,policyDialog:X,translationConfig:Y,model:Z}=S({preferences:{scrollLock:z,trapFocus:E}}),{banner:ee,closeUI:et,openDialog:eo,performDialogAction:en}=u(),er=X.blocking,ei=I(Y.defaultLanguage),ea=c(null),es=c(null),el=c(null),[ed,ec]=m(W??Q?.preferenceCenterTab??"purposes"),[em,ep]=m(null),[eu,eg]=m(!1),[eh,eb]=m(!1),[ey,ev]=m(!1),ef=null!==Z&&G.includes(Z)&&($??"dialog"===U),eC=f({disableAnimation:q,noStyle:M,scrollLock:er,trapFocus:X.blocking}),{consentRows:eS,essentialRows:ek,essentialPartnerCount:eI,purposeTabCount:eN,vendorTabCount:ex,data:{purposes:eL}}=V(),ej=a((e,t)=>{Q?.setPurposeConsent(e,t)},[Q]),eT=a((e,t)=>{Q?.setSpecialFeatureOptIn(e,t)},[Q]),eA=a((e,t)=>{Q?.setVendorConsent(e,t)},[Q]),eV=a((e,t)=>{Q?.setVendorLegitimateInterest(e,t)},[Q]),eF=a((e,t)=>{Q?.setPurposeLegitimateInterest(e,t)},[Q]),ew=async()=>{try{await en("accept")}catch{}},eP=async()=>{try{await en("reject")}catch{}},eB=async()=>{try{await en("customize")}catch{}},eR=a(()=>{et()},[et]),e$=e=>{ep(e),ec("vendors"),eo({tab:"vendors"})};C(!!(eh&&ef&&eC.trapFocus),ea),k(!!(ef&&eC.scrollLock)),s(()=>{if(!ef)return;let e=e=>{n(e.key)&&(e.preventDefault(),eR())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[eR,ef]),s(()=>{let e=requestAnimationFrame(()=>eb(!0));return()=>cancelAnimationFrame(e)},[]),s(()=>{if(ef){let e=requestAnimationFrame(()=>ev(!0));return()=>cancelAnimationFrame(e)}if(eC.disableAnimation){let e=requestAnimationFrame(()=>ev(!1));return()=>cancelAnimationFrame(e)}let e=setTimeout(()=>{ev(!1)},150);return()=>clearTimeout(e)},[ef,eC.disableAnimation]);let eM=c(!!W);s(()=>{let e=Q?.preferenceCenterTab;if(!(ef&&e))return;if(eM.current){eM.current=!1;return}let t=requestAnimationFrame(()=>{ec(e)});return()=>cancelAnimationFrame(t)},[ef,Q?.preferenceCenterTab]),l(()=>{let e,t;if("purposes"!==ed&&"vendors"!==ed)return;let o=es.current;if(!o||null===el.current)return;let n=el.current;if(el.current=null,!window.matchMedia("(prefers-reduced-motion: reduce)").matches)return o.style.height=`${n}px`,o.style.overflow="hidden",o.style.transition="none",e=requestAnimationFrame(()=>{t=requestAnimationFrame(()=>{if(!o)return;o.style.height="auto";let e=o.getBoundingClientRect().height;if(o.style.height=`${n}px`,1>Math.abs(n-e)){o.style.height="",o.style.overflow="",o.style.transition="";return}o.getBoundingClientRect(),o.style.transition="height 180ms cubic-bezier(0.33, 1, 0.68, 1)",o.style.height=`${e}px`,o.addEventListener("transitionend",e=>{"height"===e.propertyName&&(o.style.height="",o.style.overflow="",o.style.transition="")},{once:!0})})}),()=>{cancelAnimationFrame(e),cancelAnimationFrame(t)}},[ed]);let eq=a(e=>{es.current&&(el.current=es.current.offsetHeight),ec(e),eo({tab:e})},[eo]),ez=d(()=>({uiSource:O??"iab_dialog"}),[O]);if(!eh||!Q?.config.enabled)return null;let eE=Q.isLoadingGVL||!Q.gvl,eH=x(K?.["iab-dialog"]?.root,{baseClassName:`${i.root} ${ey?i.dialogVisible:i.dialogHidden}`,noStyle:eC.noStyle}),eW=x(K?.["iab-dialog"]?.card,{baseClassName:`${i.card} ${ey?i.contentVisible:i.contentHidden}`,noStyle:eC.noStyle}),eD=x(K?.["iab-dialog"]?.header,{baseClassName:i.header,noStyle:eC.noStyle}),eG=x(K?.["iab-dialog"]?.headerContent,{baseClassName:i.headerContent,noStyle:eC.noStyle}),eO=x(K?.["iab-dialog"]?.title,{baseClassName:i.title,noStyle:eC.noStyle}),e_=x(K?.["iab-dialog"]?.description,{baseClassName:i.description,noStyle:eC.noStyle}),eJ=x(K?.["iab-dialog"]?.closeButton,{baseClassName:i.closeButton,noStyle:eC.noStyle}),eK=x(K?.["iab-dialog"]?.body,{baseClassName:i.body,noStyle:eC.noStyle}),eQ=x(K?.["iab-dialog"]?.tabs,{baseClassName:i.tabsContainer,noStyle:eC.noStyle}),eU=x(K?.["iab-dialog"]?.tabsList,{baseClassName:i.tabsList,noStyle:eC.noStyle}),eX=x(K?.["iab-dialog"]?.tabTrigger,{baseClassName:i.tabButton,noStyle:eC.noStyle}),eY=x(K?.["iab-dialog"]?.tabIndicator,{baseClassName:i.tabIndicator,noStyle:eC.noStyle}),eZ=x(K?.["iab-dialog"]?.content,{baseClassName:i.content,noStyle:eC.noStyle}),e1=x(K?.["iab-dialog"]?.loading,{baseClassName:i.loadingContainer,noStyle:eC.noStyle}),e0=x(K?.["iab-dialog"]?.tabPanel,{baseClassName:i.tabPanel,noStyle:eC.noStyle}),e2=x(K?.["iab-dialog"]?.specialPurposes,{baseClassName:i.specialPurposesSection,noStyle:eC.noStyle}),e7=x(K?.["iab-dialog"]?.consentNotice,{baseClassName:i.consentNotice,noStyle:eC.noStyle}),e4=x(K?.["iab-dialog"]?.actions,{baseClassName:r.actionRoot,noStyle:eC.noStyle}),e8=x(K?.["iab-dialog"]?.footer,{baseClassName:i.footer,noStyle:eC.noStyle,...e4}),e5=x(K?.["iab-dialog"]?.actionGroup,{baseClassName:r.actionGroup,"data-direction":"row",noStyle:eC.noStyle}),e6=t(y.Provider,{value:ez,children:o(v.Provider,{value:eC,children:[t(L,{isOpen:ef}),t("div",{...eH,"data-testid":"iab-consent-dialog-root",dir:ei,children:o("div",{...eW,ref:ea,"aria-label":_.preferenceCenter.title,"aria-modal":eC.trapFocus?"true":void 0,role:"dialog",...R,"data-testid":"iab-consent-dialog-card",children:[o("div",{...eD,children:[o("div",{...eG,children:[t("h2",{...eO,children:_.preferenceCenter.title}),t("p",{...e_,children:_.preferenceCenter.description})]}),t("button",{...eJ,type:"button","data-testid":"iab-consent-dialog-close",onClick:eR,"aria-label":J.close,children:o("svg",{"aria-hidden":"true",style:{height:"1rem",width:"1rem"},viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),t("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),o(P.Root,{...eK,noStyle:!0,onValueChange:e=>eq(e),value:ed,children:[t("div",{...eQ,children:o(P.List,{...eU,noStyle:!0,children:[o(P.Trigger,{...eX,noStyle:!0,value:"purposes",children:[_.preferenceCenter.tabs.purposes,!eE&&` (${eN})`]}),o(P.Trigger,{...eX,noStyle:!0,value:"vendors",children:[_.preferenceCenter.tabs.vendors,!eE&&` (${ex})`]}),t("div",{...eY,"aria-hidden":"true","data-active-tab":ed})]})}),t("div",{...eZ,ref:es,children:eE?o("div",{...e1,children:[t("div",{className:i.loadingSpinner}),t("p",{className:i.loadingText,children:_.common.loading})]}):o(e,{children:[o(P.Content,{...e0,forceMount:!0,noStyle:!0,value:"purposes",children:[eS.map(e=>"stack"===e.kind?t(T,{stack:e,consents:Q.purposeConsents,onToggle:ej,vendorConsents:Q.vendorConsents,onVendorToggle:eA,onVendorClick:e$,vendorLegitimateInterests:Q.vendorLegitimateInterests,onVendorLegitimateInterestToggle:eV,purposeLegitimateInterests:Q.purposeLegitimateInterests,onPurposeLegitimateInterestToggle:eF},e.testId):t(j,{purpose:e,testId:e.testId,isEnabled:"special-feature"===e.toggle?Q.specialFeatureOptIns[e.id]??!1:Q.purposeConsents[e.id]??!1,onToggle:t=>{"special-feature"===e.toggle?eT(e.id,t):ej(e.id,t)},vendorConsents:Q.vendorConsents,onVendorToggle:eA,onVendorClick:e$,vendorLegitimateInterests:Q.vendorLegitimateInterests,onVendorLegitimateInterestToggle:eV,purposeLegitimateInterests:"purpose"===e.kind?Q.purposeLegitimateInterests:void 0,onPurposeLegitimateInterestToggle:"purpose"===e.kind?eF:void 0},e.testId)),ek.length>0&&o("div",{...e2,children:[o("div",{className:i.specialPurposesHeader,children:[o("button",{type:"button","aria-expanded":eu,onClick:()=>eg(!eu),className:i.purposeTrigger,children:[t("svg",{"aria-hidden":"true",className:i.purposeArrow,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:eu?t("path",{d:"M19 9l-7 7-7-7"}):t("path",{d:"M9 5l7 7-7 7"})}),o("div",{className:i.purposeInfo,children:[o("h3",{className:i.specialPurposesTitle,children:[_.preferenceCenter.specialPurposes.title,o("svg",{"aria-hidden":"true",className:i.lockIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2",ry:"2"}),t("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})]})]}),o("p",{className:i.purposeMeta,children:[eI," ",1===eI?_.preferenceCenter.vendorList.partnerSingular:_.preferenceCenter.vendorList.partnerPlural]})]})]}),t("div",{style:{position:"relative"},children:o("svg",{className:i.infoIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-label":_.preferenceCenter.specialPurposes.tooltip,children:[t("circle",{cx:"12",cy:"12",r:"10"}),t("line",{x1:"12",y1:"16",x2:"12",y2:"12"}),t("line",{x1:"12",y1:"8",x2:"12.01",y2:"8"})]})})]}),eu&&t("div",{style:{padding:"0.75rem"},children:ek.map(e=>t(j,{purpose:e,testId:e.testId,isEnabled:!0,onToggle:()=>{},vendorConsents:Q.vendorConsents,onVendorToggle:eA,onVendorClick:e$,isLocked:!0},e.testId))})]}),t("div",{...e7,children:t("p",{className:i.consentNoticeText,children:_.preferenceCenter.footer.consentStorage})})]}),t(P.Content,{...e0,forceMount:!0,noStyle:!0,value:"vendors",children:t(A,{vendorData:Q.gvl,purposes:eL,vendorConsents:Q.vendorConsents,onVendorToggle:eA,selectedVendorId:em,onClearSelection:()=>ep(null),customVendors:Q.nonIABVendors,vendorLegitimateInterests:Q.vendorLegitimateInterests,onVendorLegitimateInterestToggle:eV})})]})})]}),o("div",{...e8,children:[o("div",{...e5,children:[t(w.Root,{variant:"neutral",mode:"stroke",size:"small",onClick:eP,disabled:!ee.isReady,"data-action":"reject",children:_.common.rejectAll}),t(w.Root,{variant:"neutral",mode:"stroke",size:"small",onClick:ew,disabled:!ee.isReady,"data-action":"accept",children:_.common.acceptAll})]}),t("div",{...e5,children:t(w.Root,{variant:"primary",mode:"filled",size:"small",onClick:eB,disabled:eE,"data-action":"customize",children:_.common.saveSettings})})]}),t(b,{hideBranding:H??!1,variant:"dialog-tag",slotContext:"iab-dialog","data-testid":"iab-consent-dialog-branding"})]})})]})}),e3=!0===D?{}:!1===D?null:D,e9=e3?t(h,{...e3}):null;return ef||ey?o(e,{children:[e9,p(e6,document.body)]}):e9};export{$ as IABConsentDialog};
|
|
2
|
+
import{Fragment as e,jsx as t,jsxs as o}from"react/jsx-runtime";import{applyPublisherRestrictionsToGVL as n}from"@c15t/iab/headless";import{isDialogDismissKey as i}from"@c15t/ui/primitives/dialog";import r from"@c15t/ui/styles/components/consent-actions";import a from"@c15t/ui/styles/components/iab-consent-dialog";import{useCallback as s,useEffect as l,useLayoutEffect as d,useMemo as c,useRef as m,useState as p}from"react";import{createPortal as u}from"react-dom";import{useHeadlessIABConsentUI as g}from"../../component-hooks/use-headless-iab-consent-ui.js";import{useTranslations as h}from"../../component-hooks/use-translations.js";import{ConsentDialogTrigger as b}from"../panel-trigger/index.js";import{Branding as y}from"../panel/atoms/card.js";import{ConsentTrackingContext as f}from"../../context/consent-tracking-context.js";import{LocalThemeContext as v}from"../../context/theme-context.js";import{useComponentConfig as C}from"../../hooks/use-component-config.js";import{useFocusTrap as S}from"../../hooks/use-focus-trap.js";import{useIABConsentManager as k}from"../../hooks/use-iab-manager.js";import{useScrollLock as N}from"../../hooks/use-scroll-lock.js";import{useTextDirection as I}from"../../hooks/use-text-direction.js";import{useUIConfig as x}from"../../ui-config-context.js";import{mergeSlotProps as L}from"../../utils/merge-slot-props.js";import{IAB_DIALOG_SHEETS as j}from"../shared/iab-dialog-sheets.js";import{SurfaceStyles as T,useSurfaceSheetsReady as A}from"../shared/surface-styles.js";import{FeatureItem as F}from"./atoms/feature-item.js";import{IABConsentDialogOverlay as V}from"./atoms/overlay.js";import{PurposeItem as w}from"./atoms/purpose-item.js";import{StackItem as P}from"./atoms/stack-item.js";import{VendorList as B}from"./atoms/vendor-list.js";import{useIABDisplayModel as R}from"./hooks/use-display-model.js";import{useIABTranslations as $}from"./use-iab-translations.js";import*as M from"../shared/ui/button/index.js";import*as q from"../shared/ui/tabs/index.js";let z=["iab"],E={tabIndex:-1},H=({open:H,noStyle:D,disableAnimation:W,scrollLock:G,trapFocus:O,hideBranding:_,initialTab:J,showTrigger:K=!1,models:Q=z,uiSource:U})=>{let X=$(),{common:Y}=h(),{components:Z}=x(),{iab:ee,activeUI:et,policyDialog:eo,translationConfig:en,model:ei}=k({preferences:{scrollLock:G,trapFocus:O}}),{banner:er,closeUI:ea,openDialog:es,performDialogAction:el}=g(),ed=eo.blocking,ec=I(en.defaultLanguage),em=m(null),ep=m(null),eu=m(null),[eg,eh]=p(J??ee?.preferenceCenterTab??"purposes"),[eb,ey]=p(null),[ef,ev]=p(!1),[eC,eS]=p(!1),[ek,eN]=p(!1),eI=A(j,D)&&null!==ei&&Q.includes(ei)&&(H??"dialog"===et),ex=C({disableAnimation:W,noStyle:D,scrollLock:ed,trapFocus:eo.blocking}),{consentRows:eL,essentialRows:ej,essentialPartnerCount:eT,featureRows:eA,featuresStandardText:eF,purposeTabCount:eV,vendorTabCount:ew,data:{purposes:eP}}=R(),eB=ee?.gvl??null,eR=ee?.publisherRestrictions,e$=c(()=>eB?n(eB,eR):null,[eB,eR]),eM=s((e,t)=>{ee?.setPurposeConsent(e,t)},[ee]),eq=s((e,t)=>{ee?.setSpecialFeatureOptIn(e,t)},[ee]),ez=s((e,t)=>{ee?.setVendorConsent(e,t)},[ee]),eE=s((e,t)=>{ee?.setVendorLegitimateInterest(e,t)},[ee]),eH=s((e,t)=>{ee?.setPurposeLegitimateInterest(e,t)},[ee]),eD=async()=>{try{await el("accept")}catch{}},eW=async()=>{try{await el("reject")}catch{}},eG=async()=>{try{await el("customize")}catch{}},eO=s(()=>{ea()},[ea]),e_=e=>{ey(e),eh("vendors"),es({tab:"vendors"})};S(!!(eC&&eI&&ex.trapFocus),em,{initialFocus:"first-tabbable"}),N(!!(eI&&ex.scrollLock)),l(()=>{if(!eI)return;let e=e=>{i(e.key)&&(e.preventDefault(),eO())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[eO,eI]),l(()=>{let e=requestAnimationFrame(()=>eS(!0));return()=>cancelAnimationFrame(e)},[]),l(()=>{if(eI){let e=requestAnimationFrame(()=>eN(!0));return()=>cancelAnimationFrame(e)}if(ex.disableAnimation){let e=requestAnimationFrame(()=>eN(!1));return()=>cancelAnimationFrame(e)}let e=setTimeout(()=>{eN(!1)},150);return()=>clearTimeout(e)},[eI,ex.disableAnimation]);let eJ=m(!!J);l(()=>{let e=ee?.preferenceCenterTab;if(!(eI&&e))return;if(eJ.current){eJ.current=!1;return}let t=requestAnimationFrame(()=>{eh(e)});return()=>cancelAnimationFrame(t)},[eI,ee?.preferenceCenterTab]),d(()=>{let e,t;if("purposes"!==eg&&"vendors"!==eg)return;let o=ep.current;if(!o||null===eu.current)return;let n=eu.current;if(eu.current=null,!window.matchMedia("(prefers-reduced-motion: reduce)").matches)return o.style.height=`${n}px`,o.style.overflow="hidden",o.style.transition="none",e=requestAnimationFrame(()=>{t=requestAnimationFrame(()=>{if(!o)return;o.style.height="auto";let e=o.getBoundingClientRect().height;if(o.style.height=`${n}px`,1>Math.abs(n-e)){o.style.height="",o.style.overflow="",o.style.transition="";return}o.getBoundingClientRect(),o.style.transition="height 180ms cubic-bezier(0.33, 1, 0.68, 1)",o.style.height=`${e}px`,o.addEventListener("transitionend",e=>{"height"===e.propertyName&&(o.style.height="",o.style.overflow="",o.style.transition="")},{once:!0})})}),()=>{cancelAnimationFrame(e),cancelAnimationFrame(t)}},[eg]);let eK=s(e=>{ep.current&&(eu.current=ep.current.offsetHeight),eh(e),es({tab:e})},[es]),eQ=c(()=>({uiSource:U??"iab_dialog"}),[U]);if(!eC||!ee?.config.enabled)return null;let eU=ee.isLoadingGVL||!ee.gvl,eX=L(Z?.["iab-dialog"]?.root,{baseClassName:`${a.root} ${ek?a.dialogVisible:a.dialogHidden}`,noStyle:ex.noStyle}),eY=L(Z?.["iab-dialog"]?.card,{baseClassName:`${a.card} ${ek?a.contentVisible:a.contentHidden}`,noStyle:ex.noStyle}),eZ=L(Z?.["iab-dialog"]?.header,{baseClassName:a.header,noStyle:ex.noStyle}),e1=L(Z?.["iab-dialog"]?.headerContent,{baseClassName:a.headerContent,noStyle:ex.noStyle}),e0=L(Z?.["iab-dialog"]?.title,{baseClassName:a.title,noStyle:ex.noStyle}),e2=L(Z?.["iab-dialog"]?.description,{baseClassName:a.description,noStyle:ex.noStyle}),e7=L(Z?.["iab-dialog"]?.closeButton,{baseClassName:a.closeButton,noStyle:ex.noStyle}),e4=L(Z?.["iab-dialog"]?.body,{baseClassName:a.body,noStyle:ex.noStyle}),e5=L(Z?.["iab-dialog"]?.tabs,{baseClassName:a.tabsContainer,noStyle:ex.noStyle}),e8=L(Z?.["iab-dialog"]?.tabsList,{baseClassName:a.tabsList,noStyle:ex.noStyle}),e6=L(Z?.["iab-dialog"]?.tabTrigger,{baseClassName:a.tabButton,noStyle:ex.noStyle}),e3=L(Z?.["iab-dialog"]?.tabIndicator,{baseClassName:a.tabIndicator,noStyle:ex.noStyle}),e9=L(Z?.["iab-dialog"]?.content,{baseClassName:a.content,noStyle:ex.noStyle}),te=L(Z?.["iab-dialog"]?.loading,{baseClassName:a.loadingContainer,noStyle:ex.noStyle}),tt=L(Z?.["iab-dialog"]?.tabPanel,{baseClassName:a.tabPanel,noStyle:ex.noStyle}),to=L(Z?.["iab-dialog"]?.specialPurposes,{baseClassName:a.specialPurposesSection,noStyle:ex.noStyle}),tn=L(Z?.["iab-dialog"]?.consentNotice,{baseClassName:a.consentNotice,noStyle:ex.noStyle}),ti=L(Z?.["iab-dialog"]?.actions,{baseClassName:r.actionRoot,noStyle:ex.noStyle}),tr=L(Z?.["iab-dialog"]?.footer,{baseClassName:a.footer,noStyle:ex.noStyle,...ti}),ta=L(Z?.["iab-dialog"]?.actionGroup,{baseClassName:r.actionGroup,"data-direction":"row",noStyle:ex.noStyle}),ts=t(f.Provider,{value:eQ,children:o(v.Provider,{value:ex,children:[t(T,{sheets:j,noStyle:ex.noStyle}),t(V,{isOpen:eI}),t("div",{...eX,"data-testid":"iab-consent-dialog-root",dir:ec,children:o("div",{"aria-describedby":"iab-consent-dialog-description",...eY,ref:em,"aria-label":X.preferenceCenter.title,"aria-modal":ex.trapFocus?"true":void 0,role:"dialog",...E,"data-testid":"iab-consent-dialog-card",children:[o("div",{...eZ,children:[o("div",{...e1,children:[t("h2",{...e0,children:X.preferenceCenter.title}),t("p",{...e2,id:"iab-consent-dialog-description",children:X.preferenceCenter.description})]}),t("button",{...e7,type:"button","data-testid":"iab-consent-dialog-close",onClick:eO,"aria-label":Y.close,children:o("svg",{"aria-hidden":"true",style:{height:"1rem",width:"1rem"},viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),t("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),o(q.Root,{...e4,noStyle:!0,onValueChange:e=>eK(e),value:eg,children:[t("div",{...e5,children:o(q.List,{...e8,noStyle:!0,children:[o(q.Trigger,{...e6,noStyle:!0,value:"purposes",children:[X.preferenceCenter.tabs.purposes,!eU&&` (${eV})`]}),o(q.Trigger,{...e6,noStyle:!0,value:"vendors",children:[X.preferenceCenter.tabs.vendors,!eU&&` (${ew})`]}),t("div",{...e3,"aria-hidden":"true","data-active-tab":eg})]})}),t("div",{...e9,ref:ep,children:eU?o("div",{...te,children:[t("div",{className:a.loadingSpinner}),t("p",{className:a.loadingText,children:X.common.loading})]}):o(e,{children:[o(q.Content,{...tt,forceMount:!0,noStyle:!0,value:"purposes",children:[eL.map(e=>"stack"===e.kind?t(P,{stack:e,consents:ee.purposeConsents,onToggle:eM,vendorConsents:ee.vendorConsents,onVendorToggle:ez,onVendorClick:e_,vendorLegitimateInterests:ee.vendorLegitimateInterests,onVendorLegitimateInterestToggle:eE,purposeLegitimateInterests:ee.purposeLegitimateInterests,onPurposeLegitimateInterestToggle:eH},e.testId):t(w,{purpose:e,testId:e.testId,isEnabled:"special-feature"===e.toggle?ee.specialFeatureOptIns[e.id]??!1:ee.purposeConsents[e.id]??!1,onToggle:t=>{"special-feature"===e.toggle?eq(e.id,t):eM(e.id,t)},vendorConsents:ee.vendorConsents,onVendorToggle:ez,onVendorClick:e_,vendorLegitimateInterests:ee.vendorLegitimateInterests,onVendorLegitimateInterestToggle:eE,purposeLegitimateInterests:"purpose"===e.kind?ee.purposeLegitimateInterests:void 0,onPurposeLegitimateInterestToggle:"purpose"===e.kind?eH:void 0},e.testId)),ej.length>0&&o("div",{...to,children:[o("div",{className:a.specialPurposesHeader,children:[o("button",{type:"button","aria-expanded":ef,onClick:()=>ev(!ef),className:a.purposeTrigger,children:[t("svg",{"aria-hidden":"true",className:a.purposeArrow,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:ef?t("path",{d:"M19 9l-7 7-7-7"}):t("path",{d:"M9 5l7 7-7 7"})}),o("div",{className:a.purposeInfo,children:[o("h3",{className:a.specialPurposesTitle,children:[X.preferenceCenter.specialPurposes.title,o("svg",{"aria-hidden":"true",className:a.lockIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2",ry:"2"}),t("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})]})]}),o("p",{className:a.purposeMeta,children:[eT," ",1===eT?X.preferenceCenter.vendorList.partnerSingular:X.preferenceCenter.vendorList.partnerPlural]})]})]}),t("div",{style:{position:"relative"},children:o("svg",{className:a.infoIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-label":X.preferenceCenter.specialPurposes.tooltip,children:[t("circle",{cx:"12",cy:"12",r:"10"}),t("line",{x1:"12",y1:"16",x2:"12",y2:"12"}),t("line",{x1:"12",y1:"8",x2:"12.01",y2:"8"})]})})]}),ef&&t("div",{style:{padding:"0.75rem"},children:ej.map(e=>t(w,{purpose:e,testId:e.testId,isEnabled:!0,onToggle:()=>{},vendorConsents:ee.vendorConsents,onVendorToggle:ez,onVendorClick:e_,isLocked:!0},e.testId))})]}),eA.length>0&&o("section",{"aria-label":X.preferenceCenter.features.title,className:ex.noStyle?void 0:a.featuresSection,"data-testid":"iab-consent-dialog-features",children:[o("div",{className:ex.noStyle?void 0:a.featuresHeader,children:[t("h3",{className:ex.noStyle?void 0:a.featuresTitle,children:X.preferenceCenter.features.title}),t("p",{className:ex.noStyle?void 0:a.featuresDescription,children:eF??X.preferenceCenter.features.description})]}),t("div",{className:ex.noStyle?void 0:a.featuresList,children:eA.map(e=>t(F,{feature:e,testId:e.testId},e.testId))})]}),t("div",{...tn,children:t("p",{className:a.consentNoticeText,children:X.preferenceCenter.footer.consentStorage})})]}),t(q.Content,{...tt,forceMount:!0,noStyle:!0,value:"vendors",children:t(B,{vendorData:e$,purposes:eP,vendorConsents:ee.vendorConsents,onVendorToggle:ez,selectedVendorId:eb,onClearSelection:()=>ey(null),customVendors:ee.nonIABVendors,vendorLegitimateInterests:ee.vendorLegitimateInterests,onVendorLegitimateInterestToggle:eE})})]})})]}),o("div",{...tr,children:[o("div",{...ta,children:[t(M.Root,{variant:"neutral",mode:"stroke",size:"small",onClick:eW,disabled:!er.isReady,"data-action":"reject",children:X.common.rejectAll}),t(M.Root,{variant:"neutral",mode:"stroke",size:"small",onClick:eD,disabled:!er.isReady,"data-action":"accept",children:X.common.acceptAll})]}),t("div",{...ta,children:t(M.Root,{variant:"primary",mode:"filled",size:"small",onClick:eG,disabled:eU,"data-action":"customize",children:X.common.saveSettings})})]}),t(y,{hideBranding:_??!1,variant:"dialog-tag",slotContext:"iab-dialog","data-testid":"iab-consent-dialog-branding"})]})})]})}),tl=!0===K?{}:!1===K?null:K,td=tl?t(b,{...tl}):null;return eI||ek?o(e,{children:[td,u(ts,document.body)]}):td};export{H as IABConsentDialog};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{IABConsentDialogCard as o}from"./atoms/card.js";import{IABConsentDialogContent as t}from"./atoms/content.js";import{IABConsentDialogFooter as s}from"./atoms/footer.js";import{IABConsentDialogHeader as
|
|
2
|
+
import{IABConsentDialogCard as o}from"./atoms/card.js";import{IABConsentDialogContent as t}from"./atoms/content.js";import{FeatureItem as e}from"./atoms/feature-item.js";import{IABConsentDialogFooter as s}from"./atoms/footer.js";import{IABConsentDialogHeader as a}from"./atoms/header.js";import{IABConsentDialogOverlay as r}from"./atoms/overlay.js";import{PurposeItem as m}from"./atoms/purpose-item.js";import{IABConsentDialogRoot as n}from"./atoms/root.js";import{StackItem as i}from"./atoms/stack-item.js";import{IABConsentDialogTabButton as p,IABConsentDialogTabs as l}from"./atoms/tabs.js";import{VendorList as f}from"./atoms/vendor-list.js";import{IABConsentDialog as I}from"./iab-panel.js";let j=Object.assign(I,{Card:o,Content:t,FeatureItem:e,Footer:s,Header:a,Overlay:r,PurposeItem:m,Root:n,StackItem:i,TabButton:p,Tabs:l,VendorList:f});export{useIABDisplayModel}from"./hooks/use-display-model.js";export{useGVLData}from"./hooks/use-gvl-data.js";export default j;export{e as FeatureItem,o as IABConsentDialogCard,t as IABConsentDialogContent,s as IABConsentDialogFooter,a as IABConsentDialogHeader,r as IABConsentDialogOverlay,n as IABConsentDialogRoot,p as IABConsentDialogTabButton,l as IABConsentDialogTabs,m as PurposeItem,i as StackItem,f as VendorList,j as IABConsentDialog};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e}from"react/jsx-runtime";import
|
|
2
|
+
import{jsx as e}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/iab-consent-banner";import{forwardRef as r}from"react";import{useActiveUI as t}from"../../../hooks.js";import{useLateEntry as s}from"../../../hooks/use-late-entry.js";import{useScrollLock as a}from"../../../hooks/use-scroll-lock.js";import{useTheme as n}from"../../../hooks/use-theme.js";import{useUIConfig as i}from"../../../ui-config-context.js";import{cnExt as l}from"../../../utils/cn.js";import{mergeSlotProps as m}from"../../../utils/merge-slot-props.js";let p=r(({className:r,style:p,noStyle:c,...y},f)=>{let u=t(),{disableAnimation:v,noStyle:b,scrollLock:d}=n(),{components:j}=i(),h="banner"===u,k=m(j?.["iab-banner"]?.overlay,{baseClassName:o.overlay,className:r,noStyle:b||c,style:p,...y}),B=b||c||v?void 0:`${o.overlayVisible} ${o.overlayEntering}`,N=l(k.className,B);a(!!(h&&d));let g=s(!!(h&&d))&&!v;return h&&d?e("div",{ref:f,...k,"aria-hidden":"true",className:N,"data-entry":g?"late":void 0,"data-testid":"iab-consent-banner-overlay"}):null});p.displayName="IABConsentBannerOverlay";export{p as IABConsentBannerOverlay};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{Fragment as e,jsx as t,jsxs as
|
|
2
|
+
import{Fragment as e,jsx as t,jsxs as o}from"react/jsx-runtime";import r from"@c15t/ui/styles/components/iab-consent-banner";import{forwardRef as n,useMemo as s}from"react";import{ConsentTrackingContext as a}from"../../../context/consent-tracking-context.js";import{LocalThemeContext as i}from"../../../context/theme-context.js";import{useActiveUI as m,useModel as l,useTranslations as c}from"../../../hooks.js";import{useIABConsentManager as d}from"../../../hooks/use-iab-manager.js";import{useLateEntry as p}from"../../../hooks/use-late-entry.js";import{useTextDirection as b}from"../../../hooks/use-text-direction.js";import{useUIConfig as f}from"../../../ui-config-context.js";import{mergeSlotProps as u}from"../../../utils/merge-slot-props.js";import{IAB_FIRST_PAINT_SHEETS as h}from"../../shared/iab-first-paint-sheets.js";import{SurfaceStyles as j,useSurfaceSheetsReady as g}from"../../shared/surface-styles.js";import{IABConsentBannerOverlay as x}from"./overlay.js";let y=["iab"],N=n(({children:n,className:s,style:a,className:i,disableAnimation:d,noStyle:N,models:k=y,...v},B)=>{let C=m(),{components:$}=f(),A=l(),I=c(),S=b(I?.language??"en"),P=g(h,N)&&null!==A&&"banner"===C&&k.includes(A),R=p(P)&&!d,E=u($?.["iab-banner"]?.root,{baseClassName:[r.root],className:s||i,noStyle:N,style:a,...v}),F=N?E.className||"":`${E.className||""} ${r.bannerVisible}${d?"":` ${r.bannerEntering}`}`;return P?o(e,{children:[t(j,{sheets:h,noStyle:N}),t(x,{}),o("div",{ref:B,...E,className:F,"data-position":"ltr"===S?"bottom-left":"bottom-right","data-entry":R?"late":void 0,"data-testid":"iab-consent-banner-root","data-c15t-streamed":"",dir:S,tabIndex:-1,children:[n,t("span",{"data-c15t-stream-end":"",hidden:!0})]})]}):null}),k=({children:e,className:o,noStyle:r,disableAnimation:n,scrollLock:m,trapFocus:l,models:c,uiSource:p,...b})=>{let{policyBanner:f}=d({prompt:{scrollLock:m,trapFocus:l}}),u=f.blocking,h=s(()=>({disableAnimation:n,noStyle:r,scrollLock:u,trapFocus:u}),[n,r,u]),j=s(()=>({uiSource:p??"iab_banner"}),[p]);return t(a.Provider,{value:j,children:t(i.Provider,{value:h,children:t(N,{disableAnimation:n,className:o,noStyle:r,models:c,...b,children:e})})})};N.displayName="IABConsentBannerRootChildren";export{k as IABConsentBannerRoot};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e,jsxs as
|
|
2
|
+
import{jsx as e,jsxs as n}from"react/jsx-runtime";import t from"@c15t/ui/styles/components/consent-actions";import a from"@c15t/ui/styles/components/iab-consent-banner";import{warmDialogChunk as o}from"../../chunk-warming.js";import{useHeadlessIABConsentUI as r}from"../../component-hooks/use-headless-iab-consent-ui.js";import{Box as i}from"../shared/primitives/box.js";import{BrandingLink as s}from"../shared/ui/branding.js";import{useComponentConfig as c}from"../../hooks/use-component-config.js";import{useIABConsentManager as l}from"../../hooks/use-iab-manager.js";import{useUIConfig as m}from"../../ui-config-context.js";import{mergeSlotProps as b}from"../../utils/merge-slot-props.js";import{useIABTranslations as d}from"../iab-panel/use-iab-translations.js";import{IABConsentBannerCard as p}from"./atoms/card.js";import{IABConsentBannerRoot as u}from"./atoms/root.js";import*as h from"../shared/ui/button/index.js";let y=({noStyle:y,disableAnimation:S,scrollLock:f,trapFocus:C,primaryButton:g="customize",models:k,uiSource:j})=>{let N=d(),{iab:v,banner:z,openVendorsDialog:L,performBannerAction:x}=r(),{policyBanner:F}=l({prompt:{scrollLock:f,trapFocus:C}}),{components:w}=m(),A=c({disableAnimation:S,noStyle:y,scrollLock:F.blocking,trapFocus:F.blocking}),I=async()=>{try{await x("accept")}catch{}},R=async()=>{try{await x("reject")}catch{}};if(!v?.config.enabled||!z.isReady)return null;let B=N.banner.description.replace("{partnerCount}",String(z.vendorCount)),E=N.banner.partnersLink.replace("{count}",String(z.vendorCount)),K=N.banner.scopeServiceSpecific,M=b(w?.["iab-banner"]?.title,{baseClassName:a.title,noStyle:A.noStyle}),P=b(w?.["iab-banner"]?.description,{baseClassName:a.description,noStyle:A.noStyle}),G=b(w?.["iab-banner"]?.partnersLink,{baseClassName:a.partnersLink,noStyle:A.noStyle}),$=b(w?.["iab-banner"]?.purposeList,{baseClassName:a.purposeList,noStyle:A.noStyle}),q=b(w?.["iab-banner"]?.purposeMore,{baseClassName:a.purposeMore,noStyle:A.noStyle}),D=b(w?.["iab-banner"]?.legitimateInterestNotice,{baseClassName:a.legitimateInterestNotice,noStyle:A.noStyle}),H=b(w?.["iab-banner"]?.actions,{baseClassName:t.actionRoot,"data-direction":"row","data-split":!0,noStyle:A.noStyle}),J=b(w?.["iab-banner"]?.actionGroup,{baseClassName:t.actionGroup,"data-direction":"row",noStyle:A.noStyle});return e(u,{...A,models:k,uiSource:j,children:n(i,{baseClassName:a.cardShell,slotKey:"iab-banner.cardShell",children:[e(s,{hideBranding:!1,variant:"banner-tag",slotContext:"iab-banner","data-testid":"iab-consent-banner-branding"}),n(p,{"aria-label":N.banner.title,children:[n(i,{baseClassName:a.header,slotKey:"iab-banner.header","data-testid":"iab-consent-banner-header",children:[e("h2",{...M,children:N.banner.title}),n("p",{...P,children:[B.split(E)[0],e("button",{...G,type:"button","data-testid":"iab-consent-banner-partners-link",onClick:()=>{L()},onFocus:e=>{G.onFocus?.(e),o()},onPointerEnter:e=>{G.onPointerEnter?.(e),o()},children:E}),B.split(E)[1]]}),n("ul",{...$,children:[z.displayItems.map((n,t)=>e("li",{children:n},t)),z.remainingCount>0&&e("li",{...q,children:N.banner.andMore.replace("{count}",String(z.remainingCount))})]}),e("p",{...D,children:`${N.banner.legitimateInterestNotice} ${K}`})]}),n(i,{baseClassName:a.footer,slotKey:"iab-banner.footer","data-testid":"iab-consent-banner-footer",...H,children:[n("div",{...J,children:[e(h.Root,{variant:"reject"===g?"primary":"neutral",mode:"stroke",size:"small",onClick:R,"data-action":"reject","data-testid":"iab-consent-banner-reject-button",children:N.common.rejectAll}),e(h.Root,{variant:"accept"===g?"primary":"neutral",mode:"accept"===g?"filled":"stroke",size:"small",onClick:I,"data-action":"accept","data-testid":"iab-consent-banner-accept-button",children:N.common.acceptAll})]}),e("div",{...J,children:e(h.Root,{variant:"customize"===g?"primary":"neutral",mode:"customize"===g?"filled":"stroke",size:"small",onClick:()=>{x("customize")},onFocus:o,onPointerEnter:o,"data-action":"customize","data-testid":"iab-consent-banner-customize-button",children:N.common.customize})})]})]})]})})};export{y as IABConsentBanner};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e,jsxs as t}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/branding";import i from"@c15t/ui/styles/components/consent-dialog";import{forwardRef as a}from"react";import{useTranslations as
|
|
2
|
+
import{jsx as e,jsxs as t}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/branding";import i from"@c15t/ui/styles/components/consent-dialog";import{forwardRef as a,isValidElement as n}from"react";import{useTranslations as s}from"../../../component-hooks/use-translations.js";import{ConsentWidget as r}from"../../preferences/preferences.js";import{Slot as d}from"../../shared/libs/slot.js";import{Box as l}from"../../shared/primitives/box.js";import{InlineLegalLinks as g}from"../../shared/primitives/legal-links/index.js";import{BrandingLink as c}from"../../shared/ui/branding.js";import{useTheme as m}from"../../../hooks/use-theme.js";import{useUIConfig as p}from"../../../ui-config-context.js";import{cnExt as C}from"../../../utils/cn.js";import{mergeSlotProps as f}from"../../../utils/merge-slot-props.js";let h=a(({children:t,...o},a)=>e(l,{ref:a,baseClassName:i.card,...o,slotKey:"dialog.card","data-testid":"consent-dialog-card",tabIndex:-1,children:t}));h.displayName="ConsentDialogCard";let D=a(({children:t,...o},a)=>e(l,{ref:a,baseClassName:i.header,...o,slotKey:"dialog.header","data-testid":"consent-dialog-header",children:t}));D.displayName="ConsentDialogHeader";let y=a(({children:t,asChild:o,...a},r)=>{let{consentManagerDialog:d}=s();return e(l,{ref:r,baseClassName:i.title,slotKey:"dialog.title",...a,id:"consent-dialog-title","data-testid":"consent-dialog-title",asChild:!0,children:o&&n(t)?t:e("h2",{children:t??d.title})})});y.displayName="ConsentDialogHeaderTitle";let b=a(({children:o,legalLinks:a,asChild:r,className:l,style:c,noStyle:C,...h},D)=>{let{consentManagerDialog:y}=s(),{components:b}=p(),{noStyle:u}=m(),N="dialog",j=f(b?.description?.[N],{baseClassName:i.description,className:l,"data-context":N,"data-testid":"consent-dialog-description",id:"consent-dialog-description",noStyle:C??u,style:c,...h});return r&&n(o)?e(d,{ref:D,...j,children:o}):t("div",{ref:D,...j,children:[o??y.description,e(g,{links:a,context:"dialog",testIdPrefix:"consent-dialog-legal-link"})]})});b.displayName="ConsentDialogHeaderDescription";let u=a(({children:t,...o},a)=>e(l,{ref:a,baseClassName:i.content,slotKey:"dialog.content","data-testid":"consent-dialog-content",...o,children:t}));u.displayName="ConsentDialogContent";let N=t=>e(c,{...t}),j=a(({children:t,hideBranding:a,"data-testid":n,...s},r)=>e(l,{ref:r,baseClassName:C(i.footer,null==t&&!a&&o.brandingFooter),"data-testid":n??"consent-dialog-footer",...s,slotKey:"manager.footer",children:t??e(N,{hideBranding:a??!1,variant:"dialog-tag",slotContext:"dialog","data-testid":"consent-dialog-branding"})}));j.displayName="ConsentDialogFooter";let x=({noStyle:o,legalLinks:i,hideBranding:a})=>t(h,{children:[t(D,{children:[e(y,{}),e(b,{legalLinks:i})]}),e(u,{children:e(r,{hideBranding:!0,noStyle:o,useProvider:!0})}),e(N,{hideBranding:a??!1,variant:"dialog-tag",slotContext:"dialog","data-testid":"consent-dialog-branding"})]}),H=h,k=D,v=y,K=b,B=u,F=j;export{N as Branding,H as Card,x as ConsentCustomizationCard,h as ConsentDialogCard,u as ConsentDialogContent,j as ConsentDialogFooter,D as ConsentDialogHeader,b as ConsentDialogHeaderDescription,y as ConsentDialogHeaderTitle,B as Content,F as Footer,k as Header,K as HeaderDescription,v as HeaderTitle};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import t from"@c15t/ui/styles/components/consent-dialog";import{useEffect as o,useState as r}from"react";import{
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import t from"@c15t/ui/styles/components/consent-dialog";import{useEffect as o,useState as r}from"react";import{useActiveUI as a}from"../../../hooks.js";import{useTheme as i}from"../../../hooks/use-theme.js";import{useUIConfig as l}from"../../../ui-config-context.js";import{cnExt as n}from"../../../utils/cn.js";import{mergeSlotProps as s}from"../../../utils/merge-slot-props.js";let m=({noStyle:m,style:c,open:u})=>{let d,p=a(),{components:y}=l(),{disableAnimation:f,noStyle:g,scrollLock:v=!0}=i(),j=u??"dialog"===p,[N,b]=r(!1);o(()=>{if(j){let e=requestAnimationFrame(()=>b(!0));return()=>cancelAnimationFrame(e)}if(f){let e=requestAnimationFrame(()=>b(!1));return()=>cancelAnimationFrame(e)}let e=setTimeout(()=>{b(!1)},Number.parseInt(getComputedStyle(document.documentElement).getPropertyValue("--consent-dialog-animation-duration")||"200",10));return()=>clearTimeout(e)},[j,f]);let h="string"==typeof c?c:c?.className,A=s(y?.dialog?.overlay,{baseClassName:t.overlay,className:h,noStyle:g||m,style:"object"==typeof c&&"style"in c?c.style:void 0});d=g||m||f?void 0:N?t.overlayVisible:t.overlayHidden;let F=n(A.className,d);return e("div",{...A,role:"presentation","aria-hidden":"true",className:F,"data-testid":"consent-dialog-overlay"})},c=m;export{m as ConsentDialogOverlay,c as Overlay};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{Fragment as o,jsx as e,jsxs as t}from"react/jsx-runtime";import{isDialogDismissKey as r}from"@c15t/ui/primitives/dialog";import i from"@c15t/ui/styles/components/consent-dialog";import{useEffect as n,useMemo as s,useRef as
|
|
2
|
+
import{Fragment as o,jsx as e,jsxs as t}from"react/jsx-runtime";import{isDialogDismissKey as r}from"@c15t/ui/primitives/dialog";import i from"@c15t/ui/styles/components/consent-dialog";import{useEffect as n,useMemo as s,useRef as l,useState as a}from"react";import{createPortal as m}from"react-dom";import{useHeadlessConsentUI as c}from"../../../component-hooks/use-headless-consent-ui.js";import{ConsentTrackingContext as d}from"../../../context/consent-tracking-context.js";import{LocalThemeContext as u}from"../../../context/theme-context.js";import{useActiveUI as p,useHasConsentUI as f,useModel as h}from"../../../hooks.js";import{useFocusTrap as g}from"../../../hooks/use-focus-trap.js";import{useIABPolicyGuard as b}from"../../../hooks/use-iab-policy-guard.js";import{useIsHydrated as k}from"../../../hooks/use-is-hydrated.js";import{useScrollLock as j}from"../../../hooks/use-scroll-lock.js";import{useTextDirection as y}from"../../../hooks/use-text-direction.js";import{useTheme as v}from"../../../hooks/use-theme.js";import{useTranslationLanguage as x}from"../../../kernel-selector.js";import{useUIConfig as F}from"../../../ui-config-context.js";import{cnExt as A}from"../../../utils/cn.js";import{mergeSlotProps as L}from"../../../utils/merge-slot-props.js";import{DIALOG_SHEETS as N}from"../../shared/dialog-sheets.js";import{SurfaceStyles as S,useSurfaceSheetsReady as C}from"../../shared/surface-styles.js";import{Overlay as q}from"./overlay.js";let w=["opt-in","opt-out","none"],D=({children:D,open:E,models:H=w,noStyle:I,disableAnimation:P,scrollLock:R,trapFocus:T,overlay:V,uiSource:z,className:B,style:G,...J})=>{var K;let M,O,Q;b();let U=v(),{components:W}=F(),X=p(),Y=h(),Z=x(),{closeUI:$,dialog:_}=c({preferences:{scrollLock:R,trapFocus:T}}),{disableAnimation:oo,noStyle:oe,scrollLock:ot,trapFocus:or}=(M=U.disableAnimation,O=U.noStyle,{disableAnimation:P??M??!1,noStyle:I??O??!1,scrollLock:Q=_.blocking,trapFocus:Q}),oi=y(Z),on=f(),os=(K=C(N,oe),!!on&&!!H.includes(Y??"opt-in")&&K&&(E??"dialog"===X)),[ol,oa]=a(!1),om=l(null),oc=l(null),od=k(),ou=U.theme?.motion?.duration?.normal;n(()=>{if(os){let o=requestAnimationFrame(()=>oa(!0));return()=>cancelAnimationFrame(o)}if(oo){let o=requestAnimationFrame(()=>oa(!1));return()=>cancelAnimationFrame(o)}let o=setTimeout(()=>oa(!1),Number.parseInt((ou||"200ms").replace("ms",""),10));return()=>clearTimeout(o)},[os,oo,ou]),g(os&&or,oc,{initialFocus:"first-tabbable"}),n(()=>{if(!os)return;let o=o=>{r(o.key)&&(o.preventDefault(),$())};return document.addEventListener("keydown",o),()=>document.removeEventListener("keydown",o)},[$,os]),j(os&&ot);let op=oo?i.root:A(i.root,ol?i.dialogVisible:i.dialogHidden),of=L(W?.dialog?.root,{baseClassName:op,className:B,noStyle:oe,style:G,...J}),oh=L(W?.dialog?.container,{baseClassName:A(i.container,!oo&&(ol?i.contentVisible:i.contentHidden)),noStyle:oe}),og=s(()=>({disableAnimation:oo,noStyle:oe,scrollLock:ot,theme:U.theme,trapFocus:or}),[oo,U.theme,oe,ot,or]),ob=s(()=>({uiSource:z??"dialog"}),[z]),ok=_.blocking?"true":void 0,oj=e(d.Provider,{value:ob,children:e(u.Provider,{value:og,children:os&&t(o,{children:[e(S,{sheets:N,noStyle:oe}),_.blocking&&!1!==V?V??e(q,{open:os}):null,e("div",{ref:om,"data-slot":"dialog-positioner","data-blocking":ok,...of,className:of.className,children:e("div",{ref:oc,...oh,"aria-describedby":"consent-dialog-description","aria-labelledby":"consent-dialog-title","aria-modal":or?"true":void 0,"data-blocking":ok,"data-testid":"consent-dialog-root",dir:oi,role:"dialog",tabIndex:-1,children:D})})]})})});return od?m(oj,document.body):null},E=D;export{D as ConsentDialogRoot,E as Root};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{Fragment as o,jsx as r,jsxs as
|
|
2
|
+
import{Fragment as o,jsx as r,jsxs as t}from"react/jsx-runtime";import{ConsentDialogTrigger as n}from"../panel-trigger/index.js";import{useActiveUI as e}from"../../hooks.js";import{useComponentConfig as i}from"../../hooks/use-component-config.js";import{ConsentCustomizationCard as l}from"./atoms/card.js";import{Root as s}from"./atoms/root.js";let m=({open:m,noStyle:a,disableAnimation:c,scrollLock:p,trapFocus:d,hideBranding:f,legalLinks:g,showTrigger:j=!1,models:u,uiSource:h})=>{let k=e(),y={open:m??"dialog"===k,...i({disableAnimation:c,noStyle:a}),models:u,scrollLock:p,trapFocus:d,uiSource:h},S=!0===j?{}:!1===j?null:j;return t(o,{children:[S&&r(n,{...S}),r(s,{...y,children:r(l,{noStyle:y.noStyle,legalLinks:g,hideBranding:f})})]})};export{m as ConsentDialog};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as t}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/consent-dialog-trigger";import{forwardRef as r}from"react";import{
|
|
2
|
+
import{jsx as t}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/consent-dialog-trigger";import{forwardRef as r}from"react";import{useIdleDialogWarming as e,warmDialogChunk as i}from"../../../chunk-warming.js";import{usePolicyRule as n}from"../../../hooks.js";import{useTheme as s}from"../../../hooks/use-theme.js";import{useUIConfig as m}from"../../../ui-config-context.js";import{mergeSlotProps as g}from"../../../utils/merge-slot-props.js";import{useTriggerContext as a}from"./root.js";let l={"bottom-left":o.bottomLeft,"bottom-right":o.bottomRight,"top-left":o.topLeft,"top-right":o.topRight},p={lg:o.lg,md:o.md,sm:o.sm},d=r(({children:r,size:d="md",ariaLabel:c="Open privacy settings",className:f,"data-testid":u="consent-dialog-trigger",noStyle:h},b)=>{let j=n(),{components:y}=m(),{disableAnimation:k,noStyle:x}=s(),{corner:C,isDragging:v,isSnapping:B,wasDragged:E,handlers:F,dragStyle:L,openDialog:N}=a();e(!0);let P=g(y?.trigger?.root,{baseClassName:[o.trigger,l[C],p[d],v&&o.dragging,B&&o.snapping],className:f,"data-testid":u,noStyle:h??x,style:L,...F});return t("button",{...P,ref:b,type:"button","data-c15t-trigger":"true","data-c15t-rights":j.rights.join(" "),"data-disable-animation":k?"":void 0,"aria-label":c,onClick:t=>{0!==t.detail&&E()||N()},onFocus:t=>{P.onFocus?.(t),i()},onPointerEnter:t=>{P.onPointerEnter?.(t),i()},children:r})});d.displayName="ConsentDialogTrigger.Button";export{d as TriggerButton};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as r}from"react/jsx-runtime";import e from"@c15t/ui/styles/components/consent-dialog-trigger";import{isValidElement as
|
|
2
|
+
import{jsx as r}from"react/jsx-runtime";import e from"@c15t/ui/styles/components/consent-dialog-trigger";import{isValidElement as i}from"react";import{BrandingCompactLogo as o}from"../../shared/ui/branding.js";import{useTheme as t}from"../../../hooks/use-theme.js";import{useUIConfig as n}from"../../../ui-config-context.js";import{mergeSlotProps as s}from"../../../utils/merge-slot-props.js";import{useTriggerContext as a}from"./root.js";import{FingerprintIcon as m,SettingsIcon as g}from"./trigger-icons.js";let c=({icon:c="branding",className:p,noStyle:l})=>{let d,{components:f}=n(),{noStyle:u}=t(),{branding:h}=a(),j=s(f?.trigger?.icon,{baseClassName:e.icon,className:p,noStyle:l??u});if(i(c))return r("span",{...j,"aria-hidden":"true",children:c});switch(c){case"fingerprint":d=r(m,{});break;case"settings":d=r(g,{});break;default:d=r(o,{branding:h})}return r("span",{...j,"aria-hidden":"true",children:d})};c.displayName="ConsentDialogTrigger.Icon";export{c as TriggerIcon};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as o}from"react/jsx-runtime";import{createContext as
|
|
2
|
+
import{jsx as r,jsxs as o}from"react/jsx-runtime";import{createContext as t,useContext as e,useMemo as s}from"react";import{createPortal as i}from"react-dom";import{useConsentDialogTrigger as n}from"../../../component-hooks/use-panel-trigger.js";import{useBranding as m}from"../../../hooks.js";import{useIsHydrated as g}from"../../../hooks/use-is-hydrated.js";import{FIRST_PAINT_SHEETS as a}from"../../shared/first-paint-sheets.js";import{SurfaceStyles as l,useSurfaceSheetsReady as p}from"../../shared/surface-styles.js";import{useDraggable as u}from"../use-draggable.js";let f=t(null),d=function(){let r=e(f);if(!r)throw Error("ConsentDialogTrigger components must be used within a ConsentDialogTrigger.Root");return r},h=({children:t,defaultPosition:e="bottom-right",persistPosition:d=!0,showWhen:h="always",visible:c,onPositionChange:j,onClick:T})=>{let C=m()??"c15t",{isVisible:b,openDialog:x}=n({onClick:T,showWhen:h}),y=c??b,{corner:k,isDragging:w,isSnapping:D,wasDragged:P,handlers:R,dragStyle:v}=u({defaultPosition:e,onPositionChange:j,persistPosition:d}),E=g(),N=p(a),V=s(()=>({branding:C,corner:k,dragStyle:v,handlers:R,isDragging:w,isSnapping:D,isVisible:y,openDialog:x,wasDragged:P}),[C,k,v,R,w,D,y,x,P]);return E&&y&&N?i(o(f.Provider,{value:V,children:[r(l,{sheets:a}),t]}),document.body):null};h.displayName="ConsentDialogTrigger.Root";export{f as TriggerContext,h as TriggerRoot,d as useTriggerContext};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e}from"react/jsx-runtime";import{createElement as t,useMemo as r,useRef as
|
|
2
|
+
import{jsx as e}from"react/jsx-runtime";import{createElement as t,useLayoutEffect as o,useMemo as r,useRef as i,useState as n}from"react";import s from"@c15t/ui/styles/components/consent-dialog-trigger";import{followDevToolsDock as l}from"@c15t/ui/utils/devtools-launcher";import{useTranslations as a}from"../../../component-hooks/use-translations.js";import{useDevToolsLauncher as d}from"../../../devtools-launcher.js";import{usePolicyRule as c}from"../../../hooks.js";import{useTheme as f}from"../../../hooks/use-theme.js";import{useUIConfig as m}from"../../../ui-config-context.js";import{mergeSlotProps as g}from"../../../utils/merge-slot-props.js";import{TriggerIcon as u}from"./icon.js";import{useTriggerContext as p}from"./root.js";import{DevToolsIcon as b}from"./trigger-icons.js";let h={"bottom-left":s.bottomLeft,"bottom-right":s.bottomRight,"top-left":s.topLeft,"top-right":s.topRight},k={lg:s.lg,md:s.md,sm:s.sm},y={focusId:"devtools",icon:e(b,{}),id:"devtools",kind:"devtools",label:"c15t DevTools"},v=function(){let e=c(),{rights:t}=a();return r(()=>{let o=e.rights.includes("opt-out")?"opt-out":"preferences";return{label:"opt-out"===o&&e.i18n?.messageProfile!=="preferences"?t?.optOut??"Do not sell or share my data":t?.preferences??"Manage preferences",right:o,rights:e.rights.join(" ")}},[e.rights,e.i18n?.messageProfile,t])},I=function(e,t,o,r,i,n){let s=e.map(e=>({...e,focusId:`custom:${e.id}`,kind:"custom"}));return(n&&s.push(y),i)?[...s,{className:t.className,focusId:"preferences",icon:t.icon??"branding",id:"preferences",kind:"preferences",label:t.label??r,onSelect:t.onSelect,right:o,style:t.style}]:s},j=function(e,t,o){let r=e.find(e=>"preferences"===e.kind),i=e.find(e=>"devtools"===e.kind);if(!r&&!i)return e;let n=e.filter(e=>"custom"===e.kind),s="horizontal"===t?o.endsWith("left"):o.startsWith("top"),l=r?[r]:[],a=i?[i]:[];return s?[...l,...n,...a]:[...a,...n,...l]},N=({actions:a,preferences:c,size:b="md",orientation:y="horizontal",ariaLabel:N="Privacy controls",showPreferences:S=!0,className:w,style:x,noStyle:D=!1})=>{let{components:C}=m(),{disableAnimation:T,noStyle:A}=f(),{label:L,right:P,rights:R}=v(),{corner:z,isDragging:E,isSnapping:H,wasDragged:M,handlers:O,dragStyle:W,openDialog:B}=p(),F=d(),K=null!==F,U=F?.dock,V=i(null),$=r(()=>j(I(a,c,P,L,S,K),y,z),[a,z,L,y,c,P,K,S]);o(()=>{let e=V.current;if(U&&e&&!E)return l(e,z,U)},[z,U,E]);let q=$.find(e=>!e.disabled)?.focusId,[G,J]=n(q),Q=i(new Map),X=D||A,Y=g(C?.trigger?.toolbar,{baseClassName:[s.toolbar,"vertical"===y&&s.toolbarVertical,h[z],E&&s.dragging,H&&s.snapping],className:w,noStyle:X,style:x}),Z=g(C?.trigger?.toolbarItem,{baseClassName:[s.toolbarItem,k[b]],noStyle:X}),_=g(C?.trigger?.toolbarIcon,{baseClassName:s.toolbarIcon,noStyle:X}),ee=$.some(e=>e.focusId===G&&!e.disabled)?G:q;return e("div",{...Y,"aria-label":N,"aria-orientation":y,"data-corner":z,"data-c15t-trigger-toolbar":"true","data-c15t-trigger":"true","data-disable-animation":T?"":void 0,"data-dragging":E||void 0,"data-snapping":H||void 0,dir:"ltr",onKeyDown:e=>{let t,o="vertical"===y?"ArrowDown":"ArrowRight",r="vertical"===y?"ArrowUp":"ArrowLeft";if(e.key!==o&&e.key!==r&&"Home"!==e.key&&"End"!==e.key)return;let i=$.filter(e=>!e.disabled);if(0===i.length)return;e.preventDefault();let n=i.findIndex(e=>e.focusId===ee);t="Home"===e.key?0:"End"===e.key?i.length-1:e.key===o?(n+1)%i.length:(n-1+i.length)%i.length;let s=i[t];s&&(J(s.focusId),Q.current.get(s.focusId)?.focus())},ref:V,role:"toolbar",style:{...Y.style,...W},tabIndex:-1,...O,children:$.map(o=>t("button",{...Z,key:o.focusId,ref:e=>{e?Q.current.set(o.focusId,e):Q.current.delete(o.focusId)},"aria-label":o.label,"aria-expanded":"devtools"===o.kind?F?.isOpen:void 0,"aria-pressed":"custom"===o.kind?o.pressed:void 0,className:[Z.className,o.className].filter(Boolean).join(" "),"data-c15t-rights":"preferences"===o.kind?R:void 0,"data-c15t-trigger-action":o.kind,"data-c15t-trigger-item":o.id,"data-right":"preferences"===o.kind?o.right:void 0,disabled:o.disabled,onClick:e=>((e,t)=>{if(!(0!==e.detail&&M())){if("devtools"===t.kind)return void F?.toggle();t.onSelect?.(),"preferences"===t.kind&&B()}})(e,o),onFocus:()=>J(o.focusId),style:{...Z.style,...o.style},tabIndex:o.focusId===ee?0:-1,type:"button"},e("span",{..._,"aria-hidden":"true",children:e(u,{icon:o.icon,noStyle:X})})))})};N.displayName="ConsentDialogTriggerToolbar";export{N as TriggerToolbar};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as a,jsxs as t}from"react/jsx-runtime";let e=({title:e="Privacy",titleId:r="fingerprint-icon",...o})=>t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-labelledby":r,...o,children:[a("title",{id:r,children:e}),a("path",{d:"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4"}),a("path",{d:"M14 13.12c0 2.38 0 6.38-1 8.88"}),a("path",{d:"M17.29 21.02c.12-.6.43-2.3.5-3.02"}),a("path",{d:"M2 12a10 10 0 0 1 18-6"}),a("path",{d:"M2 16h.01"}),a("path",{d:"M21.8 16c.2-2 .131-5.354 0-6"}),a("path",{d:"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2"}),a("path",{d:"M8.65 22c.21-.66.45-1.32.57-2"}),a("path",{d:"M9 6.8a6 6 0 0 1 9 5.2v2"})]}),r=({title:e="Settings",titleId:r="settings-icon",...o})=>t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-labelledby":r,...o,children:[a("title",{id:r,children:e}),a("path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"}),a("circle",{cx:"12",cy:"12",r:"3"})]}),o=e=>t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",focusable:"false",...e,children:[a("path",{d:"m18 16 4-4-4-4"}),a("path",{d:"m6 8-4 4 4 4"}),a("path",{d:"m14.5 4-5 16"})]});export{o as DevToolsIcon,e as FingerprintIcon,r as SettingsIcon};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as o}from"react/jsx-runtime";import{
|
|
2
|
+
import{jsx as o}from"react/jsx-runtime";import{useHasConsentPreferences as r,usePromptRequirement as e}from"../../hooks.js";import{TriggerRoot as t}from"./atoms/root.js";import{TriggerToolbar as i}from"./atoms/toolbar.js";let s=[],n={},a=({actions:a=s,preferences:l=n,orientation:m="horizontal",defaultPosition:p="bottom-right",persistPosition:g=!0,ariaLabel:c="Privacy controls",showWhen:f="always",size:h="md",className:b,style:d,noStyle:y=!1,onPositionChange:P})=>{let j=e(),T=r(),u="after-prompt"!==f||"none"===j.kind,v=T&&"never"!==f&&u;return o(t,{defaultPosition:p,onPositionChange:P,persistPosition:g,visible:a.length>0||v,children:o(i,{actions:a,ariaLabel:c,className:b,noStyle:y,orientation:m,preferences:l,showPreferences:v,size:h,style:d})})};a.displayName="ConsentDialogTriggerToolbar";export{a as ConsentDialogTriggerToolbar};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as
|
|
2
|
+
import{jsx as t}from"react/jsx-runtime";import{createElement as o,useEffect as r,useMemo as e,useState as i}from"react";import{useDevToolsLauncherAvailable as n}from"../../devtools-launcher.js";import{TriggerButton as s}from"./atoms/button.js";import{TriggerIcon as a}from"./atoms/icon.js";import{TriggerRoot as l,useTriggerContext as m}from"./atoms/root.js";import{TriggerText as g}from"./atoms/text.js";import{getTriggerToolbar as c,loadTriggerToolbar as p}from"./toolbar-loader.js";let f=[],u=({fallback:t,...e})=>{let[n,s]=i(void 0),a=n??c();return r(()=>{if(a)return;let t=!0;return(async()=>{try{let o=await p();t&&s(()=>o)}catch{}})(),()=>{t=!1}},[a]),a?o(a,e):t},d=({icon:o="branding",defaultPosition:r="bottom-right",persistPosition:i=!0,ariaLabel:m="Open privacy settings",showWhen:g="always",size:c="md",className:p,noStyle:d,onClick:T,onPositionChange:b})=>{let h=n(),j=e(()=>({className:p,icon:o,label:m}),[m,p,o]),y=t(s,{size:c,ariaLabel:m,className:p,noStyle:d,children:t(a,{icon:o,noStyle:d})});return t(l,{defaultPosition:r,persistPosition:i,showWhen:g,onClick:T,onPositionChange:b,children:h?t(u,{actions:f,fallback:y,noStyle:d,preferences:j,size:c}):y})};d.displayName="ConsentDialogTrigger";let T=Object.assign(d,{Button:s,Icon:a,Root:l,Text:g});export{T as ConsentDialogTrigger,s as TriggerButton,a as TriggerIcon,l as TriggerRoot,g as TriggerText,m as useTriggerContext};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
let r,o;let e=function(o){r=o},a=function(){return r},t=function(){return r?Promise.resolve(r):o??=(async()=>{try{let o=await import("./atoms/toolbar.js");return r??=o.TriggerToolbar}catch(r){throw o=void 0,r}})()};export{a as getTriggerToolbar,t as loadTriggerToolbar,e as registerTriggerToolbar};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as t}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/accordion";import{createContext as n,forwardRef as i,useCallback as r,useContext as
|
|
1
|
+
import{jsx as e,jsxs as t}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/accordion";import{createContext as n,forwardRef as i,useCallback as r,useContext as a,useMemo as c}from"react";import{useTranslations as d}from"../../../component-hooks/use-translations.js";import{Box as s}from"../../shared/primitives/box.js";import{LucideIcon as l}from"../../shared/ui/icon.js";import{useConsentDraftSlice as m,useConsentDraftStore as p}from"../../../draft.js";import{useExplicitChoice as g,useRestrictions as u}from"../../../hooks.js";import{useTheme as y}from"../../../hooks/use-theme.js";import{ConsentWidgetVendorList as h}from"./vendor-list.js";import*as f from"../../shared/ui/preference-item/index.js";import*as w from"../../shared/ui/switch/index.js";let C=[{defaultValue:!0,description:"Required for basic site functionality",disabled:!0,display:!0,gdprType:1,name:"necessary"},{defaultValue:!1,description:"Enables enhanced features",display:!0,gdprType:2,name:"functionality"},{defaultValue:!1,description:"Analytics and performance measurement",display:!0,gdprType:4,name:"measurement"},{defaultValue:!1,description:"Improves your experience",display:!0,gdprType:3,name:"experience"},{defaultValue:!1,description:"Advertising and marketing",display:!0,gdprType:5,name:"marketing"}],v=n(null),A=function(){let e=a(v);if(!e)throw Error("ConsentWidgetAccordion components must be used within ConsentWidgetAccordion");return e},S=i(({children:t,...n},i)=>e(s,{ref:i,baseClassName:o.triggerRow,...n,children:t}));S.displayName="ConsentWidgetAccordionTrigger";let N=f.Trigger,b=f.Content,T=f.Leading,W=w.Root,j=({"data-testid":t,children:n,className:i,noStyle:a,onValueChange:d,style:l,type:m="multiple",value:p,...g})=>{let{noStyle:u}=y(),h=a??u,f=c(()=>Array.isArray(p)?p:p?[p]:[],[p]),w=r((e,t)=>{if("single"===m)return void d?.(t?e:"");let o=t?[...new Set([...f,e])]:f.filter(t=>t!==e);d?.(o)},[d,f,m]),C=c(()=>({noStyle:h,onToggleItem:w,openValues:f}),[h,w,f]);return e(v.Provider,{value:C,children:e(s,{className:i,"data-testid":t??"consent-widget-accordion",noStyle:a,style:l,slotKey:"accordion.root",baseClassName:o.list,...g,children:n})})},I=l({iconPath:e("path",{d:"M5 12h14M12 5v14"})}),K=l({iconPath:e("path",{d:"M5 12h14"})}),V=({consent:n,title:i,description:r,restricted:a,open:c,noStyle:d,onToggleItem:s})=>{let l=p(),g=m(l,e=>e.values[n.name]);return t(f.Root,{className:d?void 0:o.item,"data-testid":`consent-widget-accordion-item-${n.name}`,noStyle:!0,onOpenChange:e=>s(n.name,e),open:c,slotKey:"accordion-item.root",children:[t(S,{slotKey:"accordion.triggerRow",children:[t(N,{className:d?void 0:o.trigger,"data-testid":`consent-widget-accordion-trigger-${n.name}`,noStyle:!0,slotKey:"accordion-item.trigger",children:[e(T,{className:d?void 0:o.arrow,"data-testid":`consent-widget-accordion-arrow-${n.name}`,noStyle:!0,slotKey:"accordion.arrow",children:c?e(K,{"aria-hidden":"true"}):e(I,{"aria-hidden":"true"})}),e(f.Header,{noStyle:!0,slotKey:"accordion.header",children:e(f.Title,{className:d?void 0:o.title,noStyle:!0,slotKey:"accordion.title",children:i})})]}),e(f.Control,{className:d?void 0:o.control,noStyle:!0,slotKey:"accordion.control",children:e(W,{"aria-label":i,checked:g,"aria-describedby":a?`c15t-restriction-${n.name}`:void 0,onCheckedChange:e=>l.set(n.name,e),disabled:n.disabled,size:"small","data-testid":`consent-widget-switch-${n.name}`})})]}),a?e("output",{className:d?void 0:o.restriction,"data-testid":`consent-widget-restriction-${n.name}`,id:`c15t-restriction-${n.name}`,children:"Your saved choice is restricted by the current privacy settings."}):null,t(b,{className:d?void 0:o.content,"data-testid":`consent-widget-accordion-content-${n.name}`,innerClassName:d?void 0:o.contentInner,innerSlotKey:"accordion.contentInner",slotKey:"accordion-item.content",viewportClassName:d?void 0:o.contentViewport,viewportSlotKey:"accordion.contentViewport",children:[r,e(h,{category:n.name,noStyle:d})]})]})},$=()=>{let t=m(p(),e=>e.displayedCategories),o=g(),n=u(),i=function(e){if("necessary"===e)return!1;let t=o?.categories[e];return t?.value===!0&&(n[e]?.length??0)>0},{noStyle:r,onToggleItem:a,openValues:s}=A(),{consentTypes:l}=d();return c(()=>t.flatMap(e=>C.filter(t=>t.name===e)),[t]).map(t=>e(V,{consent:t,description:l[t.name]?.description??t.description,noStyle:r,onToggleItem:a,open:s.includes(t.name),restricted:i(t.name),title:l[t.name]?.title??t.name.replace(/_/gu," ").replace(/\b\w/gu,e=>e.toUpperCase())},t.name))},k=i(({className:t,...n},i)=>e(f.Root,{ref:i,className:[o.item,t].filter(Boolean).join(" "),noStyle:!0,...n}));k.displayName="ConsentWidgetAccordionItem";let x=N,R=S,M=b,L=T,P=j,E=W,q=$,z=k,B=h;export{P as Accordion,L as AccordionArrow,M as AccordionContent,z as AccordionItem,q as AccordionItems,R as AccordionTrigger,x as AccordionTriggerInner,j as ConsentWidgetAccordion,T as ConsentWidgetAccordionArrow,b as ConsentWidgetAccordionContent,k as ConsentWidgetAccordionItem,$ as ConsentWidgetAccordionItems,S as ConsentWidgetAccordionTrigger,N as ConsentWidgetAccordionTriggerInner,W as ConsentWidgetSwitch,h as ConsentWidgetVendorList,E as Switch,B as VendorList};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as
|
|
2
|
+
import{Fragment as e,jsx as r,jsxs as t}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/consent-manager";import{useMemo as i}from"react";import{DIALOG_SHEETS as s}from"../../shared/dialog-sheets.js";import{Box as m}from"../../shared/primitives/box.js";import{SurfaceStyles as n,useSurfaceSheetsReady as c}from"../../shared/surface-styles.js";import{ConsentTrackingContext as a,useConsentTracking as l}from"../../../context/consent-tracking-context.js";import{LocalThemeContext as d}from"../../../context/theme-context.js";import{ConsentDraftProvider as f}from"../../../draft.js";import{useHasConsentUI as h}from"../../../hooks.js";import{useTextDirection as p}from"../../../hooks/use-text-direction.js";import{useTranslationLanguage as u}from"../../../kernel-selector.js";let j=({children:j,noStyle:g=!1,disableAnimation:x=!1,useProvider:v=!0,uiSource:k})=>{let y=p(u()),P=l(),S=i(()=>({disableAnimation:x,noStyle:g}),[x,g]),b=k??P.uiSource??"widget",w=i(()=>({uiSource:b}),[b]),C=h(),R=c(s,g);if(!(C&&R))return null;let K=t(e,{children:[r(n,{sheets:s,noStyle:g}),r(m,{baseClassName:o.manager,"data-testid":"consent-widget-root",slotKey:"manager.root",dir:y,children:j})]});return v?r(a.Provider,{value:w,children:r(d.Provider,{value:S,children:r(f,{children:K})})}):r(a.Provider,{value:w,children:r(f,{children:K})})},g=j;export{j as ConsentWidgetRoot,g as Root};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as t}from"react/jsx-runtime";import{vendorsListedUnder as o}from"@c15t/core";import n from"@c15t/ui/styles/components/vendor-list";import{useId as r,useMemo as i,useState as s}from"react";import{useTranslations as l}from"../../../component-hooks/use-translations.js";import{Box as d}from"../../shared/primitives/box.js";import{useConsentDraftSlice as a,useConsentDraftStore as c}from"../../../draft.js";import{useDeclaredVendors as h}from"../../../hooks.js";import{useTheme as m}from"../../../hooks/use-theme.js";import*as y from"../../shared/ui/preference-item/index.js";import*as p from"../../shared/ui/switch/index.js";let v=({open:o})=>t("svg",{"aria-hidden":"true",fill:"none",focusable:"false",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",viewBox:"0 0 24 24",children:[e("title",{children:o?"Close":"Open"}),o?e("path",{d:"M5 12h14"}):e("path",{d:"M5 12h14M12 5v14"})]}),g={disabledByCategory:"Turn on this category to choose vendors.",privacyPolicy:"Privacy policy",switchLabel:"Allow {vendor}",title:"Vendors ({count})"},u=({category:o,categoryOn:n,checked:r,copy:i,labelId:l,noStyle:a,onCheckedChange:c,styles:h,vendor:m})=>{let[g,u]=s(!1),C=m.name??m.id,b=!0!==m.disabled,f=!!(m.description||m.privacyPolicyUrl);return t(y.Root,{className:h?.item,"data-testid":`consent-widget-vendor-item-${o}-${m.id}`,disabled:!f,noStyle:a,onOpenChange:u,open:g,slotKey:"vendor-list.item",children:[t(d,{noStyle:a,baseClassName:h?.header,slotKey:"vendor-list.header",children:[t(y.Trigger,{className:h?.trigger,"data-testid":`consent-widget-vendor-trigger-${o}-${m.id}`,noStyle:a,slotKey:"vendor-list.trigger",children:[e(y.Leading,{className:h?.arrow,noStyle:a,children:e(v,{open:g})}),e(d,{asChild:!0,noStyle:a,baseClassName:h?.name,slotKey:"vendor-list.name",children:e("span",{"data-testid":`consent-widget-vendor-name-${o}-${m.id}`,id:l,children:C})})]}),b?e(d,{noStyle:a,baseClassName:h?.control,slotKey:"vendor-list.control",children:e(p.Root,{"aria-label":i.switchLabel.replace("{vendor}",C),"aria-describedby":l,checked:r,"data-testid":`consent-widget-vendor-switch-${o}-${m.id}`,disabled:!n,onCheckedChange:c,size:"small"})}):null]}),f?t(y.Content,{className:h?.content,"data-testid":`consent-widget-vendor-content-${o}-${m.id}`,innerClassName:h?.contentInner,noStyle:a,slotKey:"vendor-list.content",children:[m.description?e(d,{asChild:!0,noStyle:a,baseClassName:h?.description,slotKey:"vendor-list.description",children:e("p",{children:m.description})}):null,m.privacyPolicyUrl?e(d,{asChild:!0,noStyle:a,baseClassName:h?.link,slotKey:"vendor-list.link",children:e("a",{href:m.privacyPolicyUrl,rel:"noopener noreferrer",target:"_blank",children:i.privacyPolicy})}):null]}):null]})},C=({category:s,className:y,noStyle:p,...v})=>{let C=h(),b=i(()=>o(C,s),[C,s]),f=c(),$=a(f,e=>!0===e.values[s]),k=a(f,e=>e.vendors),{consentManagerDialog:w}=l(),{noStyle:N}=m(),S=r(),j=p??N??!1;if(0===b.length)return null;let K={...g,...w.vendors},x=j?void 0:n,L=K.title.replace("{count}",String(b.length));return e(d,{asChild:!0,className:y,"data-testid":`consent-widget-vendor-list-${s}`,noStyle:j,baseClassName:x?.root,slotKey:"vendor-list.root",...v,children:t("section",{"aria-label":L,children:[$?null:e("p",{className:x?.hint,"data-testid":`consent-widget-vendor-hint-${s}`,children:K.disabledByCategory}),b.map(t=>e(u,{category:s,categoryOn:$,checked:k[t.id]??!0,copy:K,labelId:`${S}vendor-${s}-${t.id}`,noStyle:j,onCheckedChange:e=>f.setVendor(t.id,e),styles:x,vendor:t},t.id))]})})};export{C as ConsentWidgetVendorList};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{Accordion as o,AccordionArrow as t,AccordionContent as n,AccordionItem as e,AccordionItems as r,AccordionTrigger as
|
|
2
|
+
import{Accordion as o,AccordionArrow as t,AccordionContent as n,AccordionItem as e,AccordionItems as r,AccordionTrigger as i,AccordionTriggerInner as c,ConsentWidgetAccordion as s,ConsentWidgetAccordionArrow as d,ConsentWidgetAccordionContent as A,ConsentWidgetAccordionItem as g,ConsentWidgetAccordionItems as m,ConsentWidgetAccordionTrigger as C,ConsentWidgetAccordionTriggerInner as u,ConsentWidgetSwitch as W,ConsentWidgetVendorList as p,Switch as a,VendorList as l}from"./atoms/accordion.js";import{AcceptAllButton as B,ConsentWidgetAcceptAllButton as f,ConsentWidgetCustomizeButton as j,ConsentWidgetRejectButton as I,ConsentWidgetSaveButton as S,CustomizeButton as w,RejectButton as F,SaveButton as R}from"./atoms/button.js";import{ConsentWidgetFooter as T,ConsentWidgetFooterSubGroup as b,Footer as y,FooterSubGroup as h}from"./atoms/footer.js";import{ConsentWidgetRoot as v,Root as z}from"./atoms/root.js";import{ConsentWidgetPolicyActions as G,PolicyActions as L}from"./policy-actions.js";import{ConsentWidget as P}from"./preferences.js";let V=Object.assign(P,{AcceptAllButton:B,Accordion:o,AccordionArrow:t,AccordionContent:n,AccordionItem:e,AccordionItems:r,AccordionTrigger:i,AccordionTriggerInner:c,CustomizeButton:w,Footer:y,FooterSubGroup:h,PolicyActions:L,RejectButton:F,Root:z,SaveButton:R,Switch:a,VendorList:l});export default V;export{B as AcceptAllButton,o as Accordion,t as AccordionArrow,n as AccordionContent,e as AccordionItem,r as AccordionItems,i as AccordionTrigger,c as AccordionTriggerInner,f as ConsentWidgetAcceptAllButton,s as ConsentWidgetAccordion,d as ConsentWidgetAccordionArrow,A as ConsentWidgetAccordionContent,g as ConsentWidgetAccordionItem,m as ConsentWidgetAccordionItems,C as ConsentWidgetAccordionTrigger,u as ConsentWidgetAccordionTriggerInner,j as ConsentWidgetCustomizeButton,T as ConsentWidgetFooter,b as ConsentWidgetFooterSubGroup,G as ConsentWidgetPolicyActions,I as ConsentWidgetRejectButton,v as ConsentWidgetRoot,S as ConsentWidgetSaveButton,W as ConsentWidgetSwitch,p as ConsentWidgetVendorList,w as CustomizeButton,y as Footer,h as FooterSubGroup,L as PolicyActions,F as RejectButton,z as Root,R as SaveButton,a as Switch,l as VendorList,V as ConsentWidget};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{jsx as r}from"react/jsx-runtime";import{EARLY_CONSENT_TAP_SCRIPT as t,replayEarlyConsentTaps as e}from"@c15t/core/surface-actions";import{useContext as o,useEffect as n,useLayoutEffect as c,useRef as i,useState as m}from"react";import{ProviderServicesContext as s}from"../../../context.js";import{toSaveUISource as u,useConsentTracking as l}from"../../../context/consent-tracking-context.js";import{useCommittedRef as f}from"../../../hooks/use-committed-ref.js";import{useIsHydrated as a}from"../../../hooks/use-is-hydrated.js";import{useKernel as p}from"../../../kernel-selector.js";import{useUIConfig as d}from"../../../ui-config-context.js";let j="u"<typeof document?n:c,g=()=>{let{nonce:c}=d(),[g]=m(!a()),x=p(),h=u(l().uiSource),k=f(o(s)),y=i(null),S=i(null);return(j(()=>{S.current=y.current?.ownerDocument.defaultView??null},[]),n(()=>e(x,{categories:()=>k.current?.getConsentCategories(),started:()=>k.current?.isStarted()??!0,uiSource:h,view:S.current}),[x,k,h]),g)?r("script",{ref:y,nonce:c,dangerouslySetInnerHTML:{__html:t}}):null};export{g as EarlyTapScript};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import r from"@c15t/ui/styles/components/consent-banner";import{forwardRef as o,isValidElement as t}from"react";import{Slot as s}from"../../shared/libs/slot.js";import{useActiveUI as n}from"../../../hooks.js";import{useLateEntry as l}from"../../../hooks/use-late-entry.js";import{useScrollLock as a}from"../../../hooks/use-scroll-lock.js";import{useTheme as i}from"../../../hooks/use-theme.js";import{useUIConfig as m}from"../../../ui-config-context.js";import{cnExt as p}from"../../../utils/cn.js";import{mergeSlotProps as c}from"../../../utils/merge-slot-props.js";let f=o(({className:o,style:f,noStyle:y,asChild:d,children:u,...v},h)=>{let j=n(),{disableAnimation:b,noStyle:k,scrollLock:N}=i(),{components:g}=m(),x="banner"===j,C=c(g?.banner?.overlay,{baseClassName:r.overlay,className:o,noStyle:k||y,style:f,...v}),O=k||y||b?void 0:`${r.overlayVisible} ${r.overlayEntering}`,B=p(C.className,O);a(!!(x&&N));let S=l(!!(x&&N))&&!b;if(!(x&&N))return null;let $={...C,"aria-hidden":!0,className:B,"data-entry":S?"late":void 0,"data-testid":"consent-banner-overlay"};return d&&t(u)?e(s,{ref:h,...$,children:u}):e("div",{ref:h,...$,children:u})});f.displayName="ConsentBannerOverlay";let y=f;export{f as ConsentBannerOverlay,y as Overlay};
|