@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,7 +1,7 @@
|
|
|
1
1
|
import type { ActiveUI, ConsentPresentation, TranslationConfig } from '@c15t/core';
|
|
2
2
|
export declare const useIABConsentManager: (overrides?: ConsentPresentation) => {
|
|
3
3
|
activeUI: ActiveUI;
|
|
4
|
-
iab: import("../iab-context").ReactIABState | null;
|
|
4
|
+
iab: import("../iab-context.js").ReactIABState | null;
|
|
5
5
|
model: import("@c15t/core").KernelModel | null;
|
|
6
6
|
policyBanner: {
|
|
7
7
|
allowedActions: import("@c15t/core").PresentationAction[];
|
|
@@ -11,8 +11,8 @@ export declare const useIABConsentManager: (overrides?: ConsentPresentation) =>
|
|
|
11
11
|
actionGroups: import("@c15t/core").PresentationAction[][];
|
|
12
12
|
primaryActions: import("@c15t/core").PresentationAction[];
|
|
13
13
|
diagnostics: import("@c15t/core").PresentationDiagnostic[];
|
|
14
|
-
rights: readonly import("@c15t/schema
|
|
15
|
-
preferenceControls: Exclude<import("@c15t/schema
|
|
14
|
+
rights: readonly import("@c15t/schema").PolicyRight[];
|
|
15
|
+
preferenceControls: Exclude<import("@c15t/schema").PolicyRight, 'disclosure'>[];
|
|
16
16
|
direction: 'row' | 'column';
|
|
17
17
|
uiProfile: 'balanced' | 'compact' | 'strict';
|
|
18
18
|
scrollLock: boolean;
|
|
@@ -32,8 +32,8 @@ export declare const useIABConsentManager: (overrides?: ConsentPresentation) =>
|
|
|
32
32
|
actionGroups: import("@c15t/core").PresentationAction[][];
|
|
33
33
|
primaryActions: import("@c15t/core").PresentationAction[];
|
|
34
34
|
diagnostics: import("@c15t/core").PresentationDiagnostic[];
|
|
35
|
-
rights: readonly import("@c15t/schema
|
|
36
|
-
preferenceControls: Exclude<import("@c15t/schema
|
|
35
|
+
rights: readonly import("@c15t/schema").PolicyRight[];
|
|
36
|
+
preferenceControls: Exclude<import("@c15t/schema").PolicyRight, 'disclosure'>[];
|
|
37
37
|
direction: 'row' | 'column';
|
|
38
38
|
uiProfile: 'balanced' | 'compact' | 'strict';
|
|
39
39
|
scrollLock: boolean;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { IABUnavailableError } from '@c15t/core';
|
|
2
|
+
/**
|
|
3
|
+
* Record that `IABProvider` is part of the app. `@c15t/react/iab` calls
|
|
4
|
+
* this when it loads.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export declare const markIABProviderLoaded: () => void;
|
|
9
|
+
/**
|
|
10
|
+
* The error the standard surfaces throw for an `iab` policy without
|
|
11
|
+
* `<IABProvider>`.
|
|
12
|
+
*
|
|
13
|
+
* @returns A fresh {@link IABUnavailableError}.
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
export declare const missingIABProviderError: () => IABUnavailableError;
|
|
17
|
+
/**
|
|
18
|
+
* Throw while rendering when the visitor's policy needs a CMP and the app
|
|
19
|
+
* has none.
|
|
20
|
+
*
|
|
21
|
+
* The standard banner and dialog do not answer for the IAB model, so
|
|
22
|
+
* without `<IABProvider>` a visitor under an `iab` policy would see no
|
|
23
|
+
* consent UI at all. Throwing during render reaches error boundaries and
|
|
24
|
+
* framework error overlays, on the server render and in the browser alike,
|
|
25
|
+
* since both read the same snapshot.
|
|
26
|
+
*
|
|
27
|
+
* `<IABProvider>` usually sits beside the standard surfaces rather than
|
|
28
|
+
* around them, so a missing IAB context alone does not prove the app has
|
|
29
|
+
* none. The check also passes once `@c15t/react/iab` has loaded.
|
|
30
|
+
*
|
|
31
|
+
* @throws {IABUnavailableError} When the policy needs IAB and neither an
|
|
32
|
+
* IAB context nor `@c15t/react/iab` is present.
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
export declare const useIABPolicyGuard: () => void;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a banner that shows now arrives after the page has painted.
|
|
3
|
+
*
|
|
4
|
+
* Decided once each time `shown` turns on, and held while it stays on, so a
|
|
5
|
+
* re-render never restarts the entry. A banner hydrated from server HTML is
|
|
6
|
+
* part of the first paint: the hook answers `false` while hydrating, which
|
|
7
|
+
* also keeps the markup matching the server's.
|
|
8
|
+
*
|
|
9
|
+
* @param shown - Whether the banner is rendered.
|
|
10
|
+
* @returns Whether to mark the mount `data-entry="late"`.
|
|
11
|
+
*
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
export declare const useLateEntry: (shown: boolean) => boolean;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { ThemeContextValue } from '../context/theme-context';
|
|
1
|
+
import type { ThemeContextValue } from '../context/theme-context.js';
|
|
2
2
|
export declare const useTheme: () => ThemeContextValue;
|
package/dist-types/hooks.d.ts
CHANGED
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
* observed through the selector hooks, whose subscription model handles
|
|
18
18
|
* invalidation correctly.
|
|
19
19
|
*/
|
|
20
|
-
import type { AllConsentNames, ConsentKernel, PromptPresentation, PreferencesPresentation, ConsentSnapshot, ConsentState, KernelActiveUI, KernelBranding, KernelIABState, KernelModel, KernelOverrides, KernelTranslations, KernelUser, LocationResponse, PolicyScopeMode } from '@c15t/core';
|
|
20
|
+
import type { AllConsentNames, ConsentKernel, ConsentPresentation, ExperimentAssignment, PromptPresentation, PreferencesPresentation, ConsentSnapshot, ConsentState, KernelActiveUI, KernelBranding, KernelIABState, KernelModel, KernelOverrides, KernelTranslations, KernelUser, LocationResponse, PolicyScopeMode, ResolvedVendor, VendorChoice } from '@c15t/core';
|
|
21
|
+
import type { Theme } from './types/theme/index.js';
|
|
21
22
|
/**
|
|
22
23
|
* Full snapshot accessor. Escape hatch for consumers that genuinely need
|
|
23
24
|
* multiple slices. Prefer narrow hooks for re-render isolation.
|
|
@@ -65,6 +66,8 @@ export declare const useHasConsentPolicy: () => boolean;
|
|
|
65
66
|
* {@link useHasConsentPolicy}.
|
|
66
67
|
*/
|
|
67
68
|
export declare const useHasConsentUI: () => boolean;
|
|
69
|
+
/** Whether c15t or an external CMP offers a preferences control. */
|
|
70
|
+
export declare const useHasConsentPreferences: () => boolean;
|
|
68
71
|
/**
|
|
69
72
|
* Derived consent model (opt-in / opt-out / iab), or `null` while no policy
|
|
70
73
|
* rule is resolved. The kernel keeps a safe fallback rule internally; this
|
|
@@ -81,26 +84,91 @@ export declare const usePolicyScopeMode: () => PolicyScopeMode;
|
|
|
81
84
|
export declare const useIABSnapshot: () => Readonly<KernelIABState> | null;
|
|
82
85
|
/** Is IAB active? */
|
|
83
86
|
export declare const useIABEnabled: () => boolean;
|
|
84
|
-
/**
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
+
/**
|
|
88
|
+
* The preference centre's consent selection for one IAB vendor, including
|
|
89
|
+
* changes the visitor has not saved yet. Use it to render a control, not to
|
|
90
|
+
* gate a vendor: the saved choice is the TC string that `__tcfapi` serves,
|
|
91
|
+
* and `useIABSnapshot()?.authority` holds its decoded signals.
|
|
92
|
+
*
|
|
93
|
+
* @param vendorId - Numeric or string ID. IAB vendors are numeric; the
|
|
94
|
+
* kernel stores IDs as strings so custom vendors fit the same map.
|
|
95
|
+
* @returns Whether the vendor is selected.
|
|
96
|
+
*/
|
|
87
97
|
export declare const useVendorConsent: (vendorId: string | number) => boolean;
|
|
88
|
-
/**
|
|
98
|
+
/**
|
|
99
|
+
* The preference centre's consent selection for one IAB purpose (1-11),
|
|
100
|
+
* including changes the visitor has not saved yet. Use it to render a
|
|
101
|
+
* control, not to gate a vendor: see {@link useVendorConsent}.
|
|
102
|
+
*
|
|
103
|
+
* @param purposeId - IAB purpose ID.
|
|
104
|
+
* @returns Whether the purpose is selected.
|
|
105
|
+
*/
|
|
89
106
|
export declare const usePurposeConsent: (purposeId: number) => boolean;
|
|
90
|
-
/**
|
|
107
|
+
/**
|
|
108
|
+
* The preference centre's opt-in selection for one special feature
|
|
109
|
+
* (1 = geolocation, 2 = device ID), including changes the visitor has not
|
|
110
|
+
* saved yet. Use it to render a control, not to gate a vendor: see
|
|
111
|
+
* {@link useVendorConsent}.
|
|
112
|
+
*
|
|
113
|
+
* @param featureId - IAB special feature ID.
|
|
114
|
+
* @returns Whether the special feature is selected.
|
|
115
|
+
*/
|
|
91
116
|
export declare const useSpecialFeatureOptIn: (featureId: number) => boolean;
|
|
92
117
|
/** Latest TCF string. `null` until the IAB module encodes one. */
|
|
93
118
|
export declare const useTCString: () => string | null;
|
|
119
|
+
/**
|
|
120
|
+
* Vendors declared for vendor-level consent outside IAB, merged from the
|
|
121
|
+
* provider's `vendors` option, the backend and script slugs. Empty under an
|
|
122
|
+
* `iab` policy, where the TC string decides and vendor rows are not shown.
|
|
123
|
+
*/
|
|
124
|
+
export declare const useDeclaredVendors: () => readonly ResolvedVendor[];
|
|
125
|
+
/**
|
|
126
|
+
* The visitor's recorded vendor decision.
|
|
127
|
+
*
|
|
128
|
+
* @returns The decision, whose `denied` list may be empty after a bulk
|
|
129
|
+
* action lifted every denial, or `null` when no vendor decision was ever
|
|
130
|
+
* recorded.
|
|
131
|
+
*/
|
|
132
|
+
export declare const useVendorChoice: () => Readonly<VendorChoice> | null;
|
|
133
|
+
/**
|
|
134
|
+
* Whether one vendor may load: it is declared, its category condition
|
|
135
|
+
* passes, and outside IAB the visitor has not turned it off.
|
|
136
|
+
*
|
|
137
|
+
* @param vendorId - Vendor id as declared in `vendors`, on a script or by
|
|
138
|
+
* the backend.
|
|
139
|
+
* @returns `true` while the vendor may load. An id nothing declares, such
|
|
140
|
+
* as a typo, returns `false` and logs a development warning.
|
|
141
|
+
*/
|
|
142
|
+
export declare const useVendorAllowed: (vendorId: string) => boolean;
|
|
143
|
+
/** Register categories used by scripts, frames, or other integrations. */
|
|
144
|
+
export declare const useRegisterConsentCategories: () => (categories: readonly AllConsentNames[]) => void;
|
|
94
145
|
/**
|
|
95
146
|
* Sync mutation: apply overrides (country, region, language, GPC).
|
|
96
147
|
*/
|
|
97
148
|
export declare const useSetOverrides: () => (input: KernelOverrides) => void;
|
|
98
149
|
/**
|
|
99
|
-
*
|
|
150
|
+
* Switch the consent language and load its copy.
|
|
151
|
+
*
|
|
152
|
+
* Stores the language override and runs init again, so the banner and
|
|
153
|
+
* dialog show copy in that language: a hosted backend returns it, and
|
|
154
|
+
* offline mode takes it from the bundled translations and `i18n.messages`.
|
|
155
|
+
* Setting the current language does nothing. A disabled provider stores
|
|
156
|
+
* the language without running init.
|
|
157
|
+
*
|
|
158
|
+
* @returns A setter that takes a language code such as `'de'`.
|
|
159
|
+
*
|
|
160
|
+
* @example
|
|
161
|
+
* ```tsx
|
|
162
|
+
* const setLanguage = useSetLanguage();
|
|
163
|
+
* <button onClick={() => setLanguage('de')}>Deutsch</button>
|
|
164
|
+
* ```
|
|
100
165
|
*/
|
|
101
166
|
export declare const useSetLanguage: () => (code: string) => void;
|
|
102
167
|
/**
|
|
103
168
|
* Sync mutation: set the active UI surface (banner/dialog/none).
|
|
169
|
+
*
|
|
170
|
+
* Explicit navigation: a pending save on this kernel can no longer close or
|
|
171
|
+
* restore a surface once the visitor navigated.
|
|
104
172
|
*/
|
|
105
173
|
export declare const useSetActiveUI: () => (ui: KernelActiveUI) => void;
|
|
106
174
|
/**
|
|
@@ -132,8 +200,6 @@ export declare const usePromptRequirement: () => ConsentSnapshot['promptRequirem
|
|
|
132
200
|
export declare const useNoticeDismissal: () => ConsentSnapshot['noticeDismissal'];
|
|
133
201
|
/** Read privacySignals from the kernel without a competing projection. */
|
|
134
202
|
export declare const usePrivacySignals: () => ConsentSnapshot['privacySignals'];
|
|
135
|
-
/** Read optOutDirectives from the kernel without a competing projection. */
|
|
136
|
-
export declare const useOptOutDirectives: () => ConsentSnapshot['optOutDirectives'];
|
|
137
203
|
/** Read resolution from the kernel without a competing projection. */
|
|
138
204
|
export declare const usePolicyResolution: () => ConsentSnapshot['resolution'];
|
|
139
205
|
/** Read policyRule from the kernel without a competing projection. */
|
|
@@ -142,7 +208,36 @@ export declare const usePolicyRule: () => ConsentSnapshot['policyRule'];
|
|
|
142
208
|
export declare const useRestrictions: () => ConsentSnapshot['restrictions'];
|
|
143
209
|
/** Dismiss the current local notice without recording a category choice. */
|
|
144
210
|
export declare const useDismissNotice: () => ConsentKernel['commands']['dismissNotice'];
|
|
145
|
-
/**
|
|
211
|
+
/**
|
|
212
|
+
* The presentation experiment arm this visitor runs. Built-in assignment
|
|
213
|
+
* lands after mount; a host-resolved `variant` is known at once.
|
|
214
|
+
*
|
|
215
|
+
* @returns The assignment, or `null` while no experiment is configured, the
|
|
216
|
+
* arm is not assigned yet, or the visitor's policy rejects it.
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```tsx
|
|
220
|
+
* const arm = useExperiment();
|
|
221
|
+
* return arm ? <p>{arm.id}: {arm.variant}</p> : null;
|
|
222
|
+
* ```
|
|
223
|
+
*/
|
|
224
|
+
export declare const useExperiment: () => Readonly<ExperimentAssignment> | null;
|
|
225
|
+
/**
|
|
226
|
+
* The host presentation with the assigned experiment arm merged over it.
|
|
227
|
+
*
|
|
228
|
+
* @returns The presentation to render: `options.presentation` itself while
|
|
229
|
+
* no arm is assigned.
|
|
230
|
+
*/
|
|
231
|
+
export declare const useResolvedPresentation: () => ConsentPresentation | undefined;
|
|
232
|
+
/**
|
|
233
|
+
* The host theme with the assigned experiment arm's `theme` merged over it.
|
|
234
|
+
* Render its tokens with `<ConsentTheme theme={useResolvedTheme()} />`.
|
|
235
|
+
*
|
|
236
|
+
* @returns The theme to render: `options.theme` itself while no arm is
|
|
237
|
+
* assigned or the arm has no theme.
|
|
238
|
+
*/
|
|
239
|
+
export declare const useResolvedTheme: () => Theme | undefined;
|
|
240
|
+
/** Host first-layer presentation, with the experiment arm applied. */
|
|
146
241
|
export declare const usePromptPresentation: () => PromptPresentation;
|
|
147
|
-
/** Host persistent preferences presentation. */
|
|
242
|
+
/** Host persistent preferences presentation, with the experiment arm applied. */
|
|
148
243
|
export declare const usePreferencesPresentation: () => PreferencesPresentation;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { IABConsentDialogCompoundComponent } from './components/iab-panel/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* The IAB TCF preference centre: purposes, stacks, special features and
|
|
4
|
+
* per-vendor consent and legitimate-interest controls.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* The component code loads on demand. It downloads in the browser's first
|
|
8
|
+
* idle period after the page's `load` event while the IAB banner is shown,
|
|
9
|
+
* on hover or focus of the banner's Customize button or partners link, or
|
|
10
|
+
* when the dialog opens, whichever comes first. `preloadDialog: 'intent'` in
|
|
11
|
+
* the provider options skips the idle load. `open={true}` or `showTrigger`
|
|
12
|
+
* loads it on mount under a model `models` lists; under another model,
|
|
13
|
+
* `showTrigger` loads only the trigger.
|
|
14
|
+
*
|
|
15
|
+
* The compound parts (`IABConsentDialog.Root`, `.Card`, `.Header`, `.Tabs`,
|
|
16
|
+
* `.TabButton`, `.Content`, `.Footer`, `.Overlay`, `.FeatureItem`,
|
|
17
|
+
* `.PurposeItem`, `.StackItem`, `.VendorList`) load the same module when
|
|
18
|
+
* they render.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```tsx
|
|
22
|
+
* <IABProvider cmpId={28}>
|
|
23
|
+
* <IABConsentBanner />
|
|
24
|
+
* <IABConsentDialog />
|
|
25
|
+
* </IABProvider>
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
export declare const IABConsentDialog: IABConsentDialogCompoundComponent;
|
|
31
|
+
/**
|
|
32
|
+
* Reset the warming state shared by mounted dialogs between tests.
|
|
33
|
+
*
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
export declare const resetIABDialogWarmingForTests: () => void;
|
package/dist-types/iab.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* IAB TCF 2.
|
|
2
|
+
* IAB TCF 2.4 React components and hooks.
|
|
3
3
|
*
|
|
4
4
|
* This subpath export contains all IAB-specific React UI. It is only
|
|
5
5
|
* loaded when explicitly imported from '@c15t/react/iab'.
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* import { IABProvider, IABConsentBanner, IABConsentDialog } from '@c15t/react/iab';
|
|
13
13
|
*
|
|
14
14
|
* <ConsentProvider
|
|
15
|
-
* options={{ mode: hosted({
|
|
15
|
+
* options={{ mode: hosted({ backendURL: '/api/c15t' }) }}
|
|
16
16
|
* >
|
|
17
17
|
* <IABProvider cmpId={28}>
|
|
18
18
|
* <IABConsentBanner />
|
|
@@ -23,8 +23,9 @@
|
|
|
23
23
|
*
|
|
24
24
|
* @packageDocumentation
|
|
25
25
|
*/
|
|
26
|
-
export { IABConsentBanner, type IABConsentBannerProps, } from './components/iab-prompt';
|
|
27
|
-
export {
|
|
28
|
-
export {
|
|
29
|
-
export {
|
|
30
|
-
export
|
|
26
|
+
export { IABConsentBanner, type IABConsentBannerProps, } from './components/iab-prompt/index.js';
|
|
27
|
+
export type { IABConsentDialogProps } from './components/iab-panel/index.js';
|
|
28
|
+
export { IABConsentDialog } from './iab-dialog-deferred.js';
|
|
29
|
+
export { type HeadlessIABBannerAction, type HeadlessIABBannerState, type HeadlessIABDialogAction, type HeadlessIABDialogState, type HeadlessIABPreferenceTab, type UseHeadlessIABConsentUIResult, useHeadlessIABConsentUI, } from './hooks/use-headless-iab-consent-ui.js';
|
|
30
|
+
export { IABProvider } from './iab-context.js';
|
|
31
|
+
export type { IABProviderProps } from './iab-context.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One group of `@c15t/react`'s public exports. The package index re-exports
|
|
3
|
+
* each group with `export *`, so a bundler that splits code by reachability
|
|
4
|
+
* (esbuild) does not treat every module the index names as part of an app
|
|
5
|
+
* that imports one hook: only the groups it uses are live.
|
|
6
|
+
*/
|
|
7
|
+
export { ConsentBanner, useConsentBannerSurface } from '../components/prompt/index.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One group of `@c15t/react`'s public exports. The package index re-exports
|
|
3
|
+
* each group with `export *`, so a bundler that splits code by reachability
|
|
4
|
+
* (esbuild) does not treat every module the index names as part of an app
|
|
5
|
+
* that imports one hook: only the groups it uses are live.
|
|
6
|
+
*/
|
|
7
|
+
export { ConsentDialogLink } from '../components/panel-link/index.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One group of `@c15t/react`'s public exports. The package index re-exports
|
|
3
|
+
* each group with `export *`, so a bundler that splits code by reachability
|
|
4
|
+
* (esbuild) does not treat every module the index names as part of an app
|
|
5
|
+
* that imports one hook: only the groups it uses are live.
|
|
6
|
+
*/
|
|
7
|
+
export { ConsentDialogTrigger, ConsentDialogTriggerToolbar, } from '../components/panel-trigger/index.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One group of `@c15t/react`'s public exports. The package index re-exports
|
|
3
|
+
* each group with `export *`, so a bundler that splits code by reachability
|
|
4
|
+
* (esbuild) does not treat every module the index names as part of an app
|
|
5
|
+
* that imports one hook: only the groups it uses are live.
|
|
6
|
+
*/
|
|
7
|
+
export { ConsentDialog, ConsentWidget } from '../aggregate-components.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One group of `@c15t/react`'s public exports. The package index re-exports
|
|
3
|
+
* each group with `export *`, so a bundler that splits code by reachability
|
|
4
|
+
* (esbuild) does not treat every module the index names as part of an app
|
|
5
|
+
* that imports one hook: only the groups it uses are live.
|
|
6
|
+
*/
|
|
7
|
+
export { ConsentGate } from '../components/consent-gate/index.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One group of `@c15t/react`'s public exports. The package index re-exports
|
|
3
|
+
* each group with `export *`, so a bundler that splits code by reachability
|
|
4
|
+
* (esbuild) does not treat every module the index names as part of an app
|
|
5
|
+
* that imports one hook: only the groups it uses are live.
|
|
6
|
+
*/
|
|
7
|
+
export { createConsentKernel, custom } from '@c15t/core';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One group of `@c15t/react`'s public exports. The package index re-exports
|
|
3
|
+
* each group with `export *`, so a bundler that splits code by reachability
|
|
4
|
+
* (esbuild) does not treat every module the index names as part of an app
|
|
5
|
+
* that imports one hook: only the groups it uses are live.
|
|
6
|
+
*/
|
|
7
|
+
export { ConsentDraftProvider, useConsentDraft, useVendorDraft, } from '../draft.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One group of `@c15t/react`'s public exports. The package index re-exports
|
|
3
|
+
* each group with `export *`, so a bundler that splits code by reachability
|
|
4
|
+
* (esbuild) does not treat every module the index names as part of an app
|
|
5
|
+
* that imports one hook: only the groups it uses are live.
|
|
6
|
+
*/
|
|
7
|
+
export { Frame } from '../components/consent-gate/frame.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One group of `@c15t/react`'s public exports. The package index re-exports
|
|
3
|
+
* each group with `export *`, so a bundler that splits code by reachability
|
|
4
|
+
* (esbuild) does not treat every module the index names as part of an app
|
|
5
|
+
* that imports one hook: only the groups it uses are live.
|
|
6
|
+
*/
|
|
7
|
+
export { useActiveUI, useBranding, useConsent, useConsents, useDeclaredVendors, useDismissNotice, useEffectivePermissions, useExperiment, useExplicitChoice, useHasConsentPolicy, useHasConsentPreferences, useHasConsentUI, useIABEnabled, useIABSnapshot, useIdentify, useInit, useLocation, useModel, useNoticeDismissal, useOverrides, usePolicyCategories, usePolicyResolution, usePolicyRule, usePolicyScopeMode, usePreferencesPresentation, usePrivacySignals, usePromptPresentation, usePromptRequirement, usePurposeConsent, useRegisterConsentCategories, useResolvedPresentation, useResolvedTheme, useRestrictions, useSaveConsents, useSetActiveUI, useSetLanguage, useSetOverrides, useSnapshot, useSpecialFeatureOptIn, useSubscribeToConsentChanges, useTCString, useUser, useVendorAllowed, useVendorChoice, useVendorConsent, } from '../hooks.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One group of `@c15t/react`'s public exports. The package index re-exports
|
|
3
|
+
* each group with `export *`, so a bundler that splits code by reachability
|
|
4
|
+
* (esbuild) does not treat every module the index names as part of an app
|
|
5
|
+
* that imports one hook: only the groups it uses are live.
|
|
6
|
+
*/
|
|
7
|
+
export { hosted } from '@c15t/core';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One group of `@c15t/react`'s public exports. The package index re-exports
|
|
3
|
+
* each group with `export *`, so a bundler that splits code by reachability
|
|
4
|
+
* (esbuild) does not treat every module the index names as part of an app
|
|
5
|
+
* that imports one hook: only the groups it uses are live.
|
|
6
|
+
*/
|
|
7
|
+
export { useIframeBlocker, useNetworkBlocker, usePersistence, useScriptLoader, } from '../module-hooks.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One group of `@c15t/react`'s public exports. The package index re-exports
|
|
3
|
+
* each group with `export *`, so a bundler that splits code by reachability
|
|
4
|
+
* (esbuild) does not treat every module the index names as part of an app
|
|
5
|
+
* that imports one hook: only the groups it uses are live.
|
|
6
|
+
*/
|
|
7
|
+
export { offline } from '../transports/offline.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One group of `@c15t/react`'s public exports. The package index re-exports
|
|
3
|
+
* each group with `export *`, so a bundler that splits code by reachability
|
|
4
|
+
* (esbuild) does not treat every module the index names as part of an app
|
|
5
|
+
* that imports one hook: only the groups it uses are live.
|
|
6
|
+
*/
|
|
7
|
+
export { policyRulePresets } from '@c15t/core';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One group of `@c15t/react`'s public exports. The package index re-exports
|
|
3
|
+
* each group with `export *`, so a bundler that splits code by reachability
|
|
4
|
+
* (esbuild) does not treat every module the index names as part of an app
|
|
5
|
+
* that imports one hook: only the groups it uses are live.
|
|
6
|
+
*/
|
|
7
|
+
export { ConsentProvider } from '../provider.js';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One group of `@c15t/react`'s public exports. The package index re-exports
|
|
3
|
+
* each group with `export *`, so a bundler that splits code by reachability
|
|
4
|
+
* (esbuild) does not treat every module the index names as part of an app
|
|
5
|
+
* that imports one hook: only the groups it uses are live.
|
|
6
|
+
*/
|
|
7
|
+
export { ConsentTheme } from '../consent-theme.js';
|
|
8
|
+
export { defineTheme } from '../types/theme/index.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One group of `@c15t/react`'s public exports. The package index re-exports
|
|
3
|
+
* each group with `export *`, so a bundler that splits code by reachability
|
|
4
|
+
* (esbuild) does not treat every module the index names as part of an app
|
|
5
|
+
* that imports one hook: only the groups it uses are live.
|
|
6
|
+
*/
|
|
7
|
+
export { useTranslations } from '../component-hooks/use-translations.js';
|
package/dist-types/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*
|
|
12
12
|
* function App({ children }) {
|
|
13
13
|
* return (
|
|
14
|
-
* <ConsentProvider options={{ mode: hosted({
|
|
14
|
+
* <ConsentProvider options={{ mode: hosted({ backendURL: '/api/c15t' }) }}>
|
|
15
15
|
* {children}
|
|
16
16
|
* </ConsentProvider>
|
|
17
17
|
* );
|
|
@@ -31,31 +31,35 @@
|
|
|
31
31
|
* cache patching. No method rewriting. Provider boot work is explicit
|
|
32
32
|
* module wiring around a single per-mount kernel.
|
|
33
33
|
*/
|
|
34
|
-
export type { ConsentKernel, ConsentSnapshot, ConsentState, HostedTransportOptions, InitContext, InitResponse, InitResult, KernelConfig, KernelEvent, KernelOverrides, KernelTransport, KernelUser, Listener, HostedModeOptions, ProviderTransportContext, ProviderTransportFactory, ProviderTransportKind, SavePayload, SaveResult, Unsubscribe, } from '@c15t/core';
|
|
35
|
-
export {
|
|
36
|
-
export type {
|
|
37
|
-
export {
|
|
38
|
-
export {
|
|
39
|
-
export type {
|
|
40
|
-
export {
|
|
41
|
-
export type {
|
|
42
|
-
export type {
|
|
43
|
-
export {
|
|
44
|
-
export type {
|
|
45
|
-
export {
|
|
46
|
-
export type {
|
|
47
|
-
export type {
|
|
48
|
-
export {
|
|
49
|
-
export type { ConsentDraftHandle, ConsentDraftProviderProps } from './draft';
|
|
50
|
-
export { ConsentDraftProvider, useConsentDraft } from './draft';
|
|
51
|
-
export { useConsentManager } from './component-hooks/use-manager';
|
|
52
|
-
export { useTranslations } from './component-hooks/use-translations';
|
|
53
|
-
export { useActiveUI, useBranding, useConsent, useConsents, useHasConsentPolicy, useHasConsentUI, useIABEnabled, useIABSnapshot, useIdentify, useInit, useLocation, useModel, useOverrides, usePromptPresentation, usePolicyCategories, usePreferencesPresentation, usePolicyScopeMode, usePurposeConsent, useSaveConsents, useSetActiveUI, useSetLanguage, useSetOverrides, useSnapshot, useSpecialFeatureOptIn, useTCString, useUser, useVendorConsent, } from './hooks';
|
|
54
|
-
export type { UseIframeBlockerOptions, UseNetworkBlockerOptions, UsePersistenceOptions, UseScriptLoaderOptions, } from './module-hooks';
|
|
55
|
-
export { useIframeBlocker, useNetworkBlocker, usePersistence, useScriptLoader, } from './module-hooks';
|
|
56
|
-
export type { ConsentProviderOptions, ConsentProviderCallbacks, ConsentProviderPrefetch, ConsentProviderProps, ExternalRuntimeProviderOptions, ExternalRuntimeProviderProps, OwnedRuntimeProviderProps, } from './provider';
|
|
57
|
-
export { ConsentProvider } from './provider';
|
|
58
|
-
export type { ReactUIOptions } from './types/manager';
|
|
59
|
-
export { defineTheme, type Theme } from './types/theme';
|
|
60
|
-
export { useExplicitChoice, useEffectivePermissions, usePromptRequirement, useNoticeDismissal, usePrivacySignals, useOptOutDirectives, usePolicyResolution, usePolicyRule, useRestrictions, useDismissNotice, } from './hooks';
|
|
34
|
+
export type { AllConsentNames, ClearOnRevocationConfig, ConsentKernel, ConsentSnapshot, ConsentState, HostedTransportOptions, InitContext, InitResponse, InitResult, KernelConfig, KernelEvent, KernelOverrides, KernelTransport, KernelUser, Listener, HostedModeOptions, PolicyRule, ProviderTransportContext, ProviderTransportFactory, ProviderTransportKind, SavePayload, SaveResult, Unsubscribe, } from '@c15t/core';
|
|
35
|
+
export type { OfflineModeOptions } from './transports/offline.js';
|
|
36
|
+
export type { ConsentBannerButton, ConsentBannerLayout, ConsentBannerProps, ConsentBannerRight, ConsentBannerRightLinkProps, ConsentBannerRightsProps, ConsentBannerSurface, } from './components/prompt/index.js';
|
|
37
|
+
export type { ConsentDialogCompoundComponent, ConsentDialogProps, } from './components/panel/index.js';
|
|
38
|
+
export type { ConsentDialogLinkProps } from './components/panel-link/index.js';
|
|
39
|
+
export type { ConsentDialogTriggerProps, ConsentDialogTriggerToolbarAction, ConsentDialogTriggerToolbarPreferences, ConsentDialogTriggerToolbarProps, TriggerOrientation, } from './components/panel-trigger/index.js';
|
|
40
|
+
export type { ConsentWidgetCompoundComponent, ConsentWidgetProps, } from './components/preferences/index.js';
|
|
41
|
+
export type { ConsentGateProps, FrameProps } from './components/consent-gate/index.js';
|
|
42
|
+
export type { ConsentDraftHandle, ConsentDraftProviderProps, VendorDraftHandle, } from './draft.js';
|
|
43
|
+
export type { UseIframeBlockerOptions, UseNetworkBlockerOptions, UsePersistenceOptions, UseScriptLoaderOptions, } from './module-hooks.js';
|
|
44
|
+
export type { ConsentProviderOptions, ConsentProviderCallbacks, ConsentProviderPrefetch, ConsentProviderProps, ExternalRuntimeProviderOptions, ExternalRuntimeProviderProps, OwnedRuntimeProviderProps, } from './provider.js';
|
|
45
|
+
export type { ConsentThemeProps } from './consent-theme.js';
|
|
46
|
+
export type { Theme } from './types/theme/index.js';
|
|
47
|
+
export type { ConsentBannerCompoundComponent } from './components/prompt/index.js';
|
|
48
|
+
export type { ReactUIOptions } from './types/manager.js';
|
|
61
49
|
export type { ConsentPresentation, PromptPresentation, PreferencesPresentation, PresentationAction, PromptPosition, PromptVariant, ResolvedConsentPresentation, } from '@c15t/core';
|
|
50
|
+
export * from './index-parts/core.js';
|
|
51
|
+
export * from './index-parts/hosted.js';
|
|
52
|
+
export * from './index-parts/offline.js';
|
|
53
|
+
export * from './index-parts/presets.js';
|
|
54
|
+
export * from './index-parts/consent-dialog.js';
|
|
55
|
+
export * from './index-parts/consent-banner.js';
|
|
56
|
+
export * from './index-parts/consent-dialog-link.js';
|
|
57
|
+
export * from './index-parts/consent-dialog-trigger.js';
|
|
58
|
+
export * from './index-parts/consent-gate.js';
|
|
59
|
+
export * from './index-parts/frame.js';
|
|
60
|
+
export * from './index-parts/draft.js';
|
|
61
|
+
export * from './index-parts/translations.js';
|
|
62
|
+
export * from './index-parts/module-hooks.js';
|
|
63
|
+
export * from './index-parts/provider.js';
|
|
64
|
+
export * from './index-parts/theme.js';
|
|
65
|
+
export * from './index-parts/hooks.js';
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kernel access for the hooks and the stock components. The component
|
|
3
|
+
* selectors below each read a single derived value, so a component
|
|
4
|
+
* re-renders only when that value changes. Not exported from any package
|
|
5
|
+
* entry.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
import type { AllConsentNames, ConsentKernel, ConsentSnapshot } from '@c15t/core';
|
|
11
|
+
/**
|
|
12
|
+
* Reads the kernel from the nearest provider.
|
|
13
|
+
*
|
|
14
|
+
* @returns The provider's kernel.
|
|
15
|
+
* @throws {Error} When called outside a `ConsentProvider`.
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
export declare const useKernel: () => ConsentKernel;
|
|
19
|
+
/**
|
|
20
|
+
* Reads the snapshot hydration renders: the kernel's server snapshot, or,
|
|
21
|
+
* inside a streamed consent surface, the snapshot the server rendered that
|
|
22
|
+
* surface from.
|
|
23
|
+
*
|
|
24
|
+
* @param kernel - The provider's kernel.
|
|
25
|
+
* @returns A `getServerSnapshot` for `useSyncExternalStore`.
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export declare const useServerSnapshot: (kernel: ConsentKernel | null) => () => ConsentSnapshot | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Subscribes to one slice of the kernel snapshot. React re-renders the
|
|
31
|
+
* caller only when the selected value `Object.is`-differs, so a selector
|
|
32
|
+
* must return a primitive or a reference the snapshot already holds.
|
|
33
|
+
*
|
|
34
|
+
* @param selector - Picks the slice from a snapshot.
|
|
35
|
+
* @returns The selected slice.
|
|
36
|
+
* @internal
|
|
37
|
+
*/
|
|
38
|
+
export declare const useKernelSelector: <SliceType>(selector: (snap: ConsentSnapshot) => SliceType) => SliceType;
|
|
39
|
+
/**
|
|
40
|
+
* Like `useKernelSelector`, for selectors that evaluate a gate at a point in
|
|
41
|
+
* time. The server render and hydration evaluate at the snapshot's own
|
|
42
|
+
* `evaluatedAt`, so they never read the clock: a Next.js `cacheComponents`
|
|
43
|
+
* prerender rejects `Date.now()` in a Client Component. In the browser the
|
|
44
|
+
* gate is evaluated at `Date.now()`, so an expiry the kernel's deadline
|
|
45
|
+
* timer has not processed yet still denies.
|
|
46
|
+
*
|
|
47
|
+
* @param selector - Picks the slice from a snapshot at the given time.
|
|
48
|
+
* @returns The selected slice.
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
export declare const useGateSelector: <SliceType>(selector: (snap: ConsentSnapshot, now: number) => SliceType) => SliceType;
|
|
52
|
+
/**
|
|
53
|
+
* Whether content gated on one category may render, with the kernel's gate
|
|
54
|
+
* semantics. Server rendering and hydration read no clock; see
|
|
55
|
+
* `useGateSelector`.
|
|
56
|
+
*
|
|
57
|
+
* @param category - Category the content needs.
|
|
58
|
+
* @returns `true` while the category is permitted.
|
|
59
|
+
* @internal
|
|
60
|
+
*/
|
|
61
|
+
export declare const useCategoryAllowed: (category: AllConsentNames) => boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Language of the active translation bundle.
|
|
64
|
+
*
|
|
65
|
+
* @returns The bundle's language, or the default language before one loads.
|
|
66
|
+
* @internal
|
|
67
|
+
*/
|
|
68
|
+
export declare const useTranslationLanguage: () => string;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@c15t/react/modes` — the single-page app modes, defaulting to what the
|
|
3
|
+
* build integration downloaded.
|
|
4
|
+
*
|
|
5
|
+
* `manifest()` and `hosted()` here read `@c15t/core/generated`, which
|
|
6
|
+
* `consentManifest()` from `c15t/build` fills with the policy snapshot and
|
|
7
|
+
* the backend URL. `c15t/react` exports these in place of the plain
|
|
8
|
+
* `hosted()` from `@c15t/react`.
|
|
9
|
+
*
|
|
10
|
+
* The package index does not import this module. Server-framework packages
|
|
11
|
+
* re-export the index, and their browser bundles must not import
|
|
12
|
+
* `@c15t/core/generated`: Next.js fails the build when they do.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* import { ConsentProvider, manifest } from 'c15t/react';
|
|
17
|
+
*
|
|
18
|
+
* <ConsentProvider options={{ mode: manifest() }}>{children}</ConsentProvider>;
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export { hosted } from './transports/hosted.js';
|
|
22
|
+
export type { HostedOptions } from './transports/hosted.js';
|
|
23
|
+
export { manifest } from './transports/manifest.js';
|
|
24
|
+
export type { BrowserManifestModeFactory, ManifestModeOptions, } from './transports/manifest.js';
|
|
25
|
+
export { offline } from './transports/offline.js';
|
|
26
|
+
export type { OfflineModeOptions } from './transports/offline.js';
|