@c15t/react 2.2.1 → 3.0.0-alpha.1
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 +89 -141
- package/README.md +2 -2
- package/dist/aggregate-components.js +2 -0
- package/dist/chunk-warming.js +1 -0
- package/dist/component-hooks/use-headless-consent-ui.js +2 -0
- package/dist/component-hooks/use-headless-iab-consent-ui.js +2 -0
- package/dist/component-hooks/use-manager.js +2 -0
- package/dist/component-hooks/use-panel-trigger.js +2 -0
- package/dist/component-hooks/use-translations.js +2 -0
- package/dist/components/consent-preferences-link/consent-preferences-link.js +2 -1
- package/dist/components/consent-preferences-link/index.js +1 -0
- package/dist/components/frame/atoms.js +1 -1
- package/dist/components/frame/frame.js +2 -1
- package/dist/components/frame/index.js +2 -1
- package/dist/components/iab-panel/atoms/card.js +2 -0
- package/dist/components/iab-panel/atoms/content.js +2 -0
- package/dist/components/iab-panel/atoms/footer.js +2 -0
- package/dist/components/iab-panel/atoms/header.js +2 -0
- package/dist/components/iab-panel/atoms/overlay.js +2 -0
- package/dist/components/iab-panel/atoms/purpose-item.js +2 -0
- package/dist/components/iab-panel/atoms/root.js +2 -0
- package/dist/components/iab-panel/atoms/stack-item.js +2 -0
- package/dist/components/iab-panel/atoms/tabs.js +2 -0
- package/dist/components/iab-panel/atoms/vendor-list.js +2 -0
- package/dist/components/iab-panel/hooks/use-display-model.js +2 -0
- package/dist/components/iab-panel/hooks/use-gvl-data.js +2 -0
- package/dist/components/iab-panel/iab-panel.js +2 -0
- package/dist/components/iab-panel/index.js +2 -0
- package/dist/components/iab-panel/use-iab-translations.js +1 -0
- package/dist/components/iab-prompt/atoms/button-group.js +2 -0
- package/dist/components/iab-prompt/atoms/card.js +2 -0
- package/dist/components/iab-prompt/atoms/description.js +2 -0
- package/dist/components/iab-prompt/atoms/footer.js +2 -0
- package/dist/components/iab-prompt/atoms/header.js +2 -0
- package/dist/components/iab-prompt/atoms/overlay.js +2 -0
- package/dist/components/iab-prompt/atoms/root.js +2 -0
- package/dist/components/iab-prompt/atoms/title.js +2 -0
- package/dist/components/iab-prompt/iab-prompt.js +2 -0
- package/dist/components/iab-prompt/index.js +2 -0
- package/dist/components/panel/atoms/card.js +2 -0
- package/dist/components/panel/atoms/overlay.js +1 -0
- package/dist/components/panel/atoms/root.js +2 -0
- package/dist/components/panel/index.js +2 -0
- package/dist/components/panel/panel.js +2 -0
- package/dist/components/{consent-dialog-link → panel-link}/index.js +1 -0
- package/dist/components/panel-trigger/atoms/button.js +2 -0
- package/dist/components/panel-trigger/atoms/icon.js +2 -0
- package/dist/components/panel-trigger/atoms/root.js +2 -0
- package/dist/components/panel-trigger/atoms/text.js +2 -0
- package/dist/components/panel-trigger/atoms/toolbar.js +2 -0
- package/dist/components/panel-trigger/index.js +2 -0
- package/dist/components/panel-trigger/panel-trigger-toolbar.js +2 -0
- package/dist/components/panel-trigger/panel-trigger.js +2 -0
- package/dist/components/panel-trigger/use-draggable.js +2 -0
- package/dist/components/preferences/atoms/accordion.js +1 -0
- package/dist/components/preferences/atoms/button.js +1 -0
- package/dist/components/preferences/atoms/footer.js +1 -0
- package/dist/components/preferences/atoms/root.js +2 -0
- package/dist/components/preferences/index.js +2 -0
- package/dist/components/preferences/policy-actions.js +2 -0
- package/dist/components/preferences/preferences.js +2 -0
- package/dist/components/prompt/atoms/overlay.js +1 -0
- package/dist/components/prompt/atoms/root.js +2 -0
- package/dist/components/prompt/components.js +1 -0
- package/dist/components/prompt/error-boundary.js +2 -0
- package/dist/components/prompt/index.js +2 -0
- package/dist/components/prompt/policy-actions.js +2 -0
- package/dist/components/prompt/prompt.js +2 -0
- package/dist/components/prompt/resolve-banner-primary-actions.js +1 -0
- package/dist/components/prompt/surface-context.js +2 -0
- package/dist/components/prompt/use-banner-copy.js +2 -0
- package/dist/components/shared/libs/recursive-clone-children.js +1 -1
- package/dist/components/shared/libs/slot.js +1 -1
- package/dist/components/shared/libs/use-controllable-state.js +1 -1
- package/dist/components/shared/policy-actions.js +2 -1
- package/dist/components/shared/primitives/box.js +2 -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/ui/accordion/accordion.js +2 -1
- package/dist/components/shared/ui/animated-collapse/animated-collapse.js +2 -1
- package/dist/components/shared/ui/branding.js +1 -1
- package/dist/components/shared/ui/button/button.js +1 -1
- package/dist/components/shared/ui/collapsible/collapsible.js +2 -1
- package/dist/components/shared/ui/dialog/dialog.js +2 -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 +2 -1
- package/dist/components/shared/ui/switch/switch.js +1 -1
- package/dist/components/shared/ui/tabs/tabs.js +2 -1
- package/dist/context/consent-tracking-context.js +1 -0
- package/dist/context/iab-context-value.js +1 -0
- package/dist/context/index.js +1 -0
- package/dist/context/theme-context.js +2 -1
- package/dist/context.js +1 -0
- package/dist/devtools.js +2 -0
- package/dist/draft.js +2 -0
- package/dist/external-iab-context.js +2 -0
- package/dist/frame.js +2 -0
- package/dist/headless.js +1 -1
- package/dist/hooks/use-color-scheme.js +2 -1
- package/dist/hooks/use-component-config.js +2 -1
- package/dist/hooks/use-focus-trap.js +2 -1
- package/dist/hooks/use-headless-iab-consent-ui.js +2 -1
- package/dist/hooks/use-iab-manager.js +2 -0
- package/dist/hooks/use-is-hydrated.js +2 -0
- package/dist/hooks/use-reduced-motion.js +2 -1
- package/dist/hooks/use-scroll-lock.js +2 -1
- package/dist/hooks/use-text-direction.js +2 -1
- package/dist/hooks/use-theme.js +2 -1
- package/dist/hooks.js +1 -0
- package/dist/iab/styles.css +1 -1
- package/dist/iab/styles.tw3.css +27 -19
- package/dist/iab-context.js +2 -0
- package/dist/iab.js +1 -1
- package/dist/index.js +1 -1
- package/dist/module-hooks/iframe-blocker.js +2 -0
- package/dist/module-hooks/network-blocker.js +2 -0
- package/dist/module-hooks/persistence.js +2 -0
- package/dist/module-hooks/script-loader.js +2 -0
- package/dist/module-hooks/shared.js +2 -0
- package/dist/module-hooks.js +2 -0
- package/dist/panel-link.js +2 -0
- package/dist/panel-trigger.js +2 -0
- package/dist/panel.js +2 -0
- package/dist/preferences.js +2 -0
- package/dist/primitives.js +1 -1
- package/dist/prompt.js +2 -0
- package/dist/provider.js +2 -0
- package/dist/server/fetch-ssr-data.js +1 -1
- package/dist/server/headers.js +1 -1
- package/dist/server/init-cache-key.js +1 -1
- package/dist/server/normalize-url.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.tw3.css +67 -29
- package/dist/theme-provider.js +2 -0
- package/dist/transports/offline.js +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/theme/index.js +1 -1
- package/dist/types/theme/style-types.js +1 -1
- package/dist/ui-config-context.js +2 -0
- package/dist/ui-save.js +1 -0
- package/dist/utils/cn.js +1 -1
- package/dist/utils/default-translation-config.js +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/merge-slot-props.js +1 -0
- package/dist/utils/merge-styles.js +1 -1
- package/dist/utils/theme-utils.js +1 -1
- package/dist/version.js +1 -1
- package/dist-types/aggregate-components.d.ts +4 -0
- package/dist-types/chunk-warming.d.ts +19 -0
- package/dist-types/component-hooks/use-headless-consent-ui.d.ts +68 -0
- package/dist-types/component-hooks/use-headless-iab-consent-ui.d.ts +22 -0
- package/dist-types/component-hooks/use-manager.d.ts +40 -0
- package/dist-types/component-hooks/use-panel-trigger.d.ts +20 -0
- package/dist-types/component-hooks/use-translations.d.ts +2 -0
- package/dist-types/components/consent-preferences-link/consent-preferences-link.d.ts +1 -1
- package/dist-types/components/frame/atoms.d.ts +5 -5
- package/dist-types/components/frame/types.d.ts +3 -2
- package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/card.d.ts +2 -1
- package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/content.d.ts +1 -1
- package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/footer.d.ts +1 -1
- package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/header.d.ts +1 -1
- package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/overlay.d.ts +1 -1
- package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/purpose-item.d.ts +7 -1
- package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/root.d.ts +3 -2
- package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/stack-item.d.ts +1 -1
- package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/tabs.d.ts +1 -1
- package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/vendor-list.d.ts +2 -3
- package/dist-types/components/iab-panel/hooks/use-display-model.d.ts +18 -0
- package/dist-types/components/iab-panel/hooks/use-gvl-data.d.ts +17 -0
- package/dist-types/components/{iab-consent-dialog/iab-consent-dialog.d.ts → iab-panel/iab-panel.d.ts} +10 -3
- package/dist-types/components/{iab-consent-dialog → iab-panel}/index.d.ts +3 -2
- package/dist-types/components/iab-panel/types.d.ts +1 -0
- package/dist-types/components/{iab-consent-dialog → iab-panel}/use-iab-translations.d.ts +3 -1
- package/dist-types/components/{iab-consent-banner → iab-prompt}/atoms/button-group.d.ts +1 -1
- package/dist-types/components/{iab-consent-banner → iab-prompt}/atoms/card.d.ts +2 -1
- package/dist-types/components/{iab-consent-banner → iab-prompt}/atoms/description.d.ts +1 -1
- package/dist-types/components/{iab-consent-banner → iab-prompt}/atoms/footer.d.ts +2 -1
- package/dist-types/components/{iab-consent-banner → iab-prompt}/atoms/header.d.ts +2 -1
- package/dist-types/components/{iab-consent-banner → iab-prompt}/atoms/overlay.d.ts +1 -1
- package/dist-types/components/{iab-consent-banner → iab-prompt}/atoms/root.d.ts +3 -2
- package/dist-types/components/{iab-consent-banner → iab-prompt}/atoms/title.d.ts +1 -1
- package/dist-types/components/{iab-consent-banner/iab-consent-banner.d.ts → iab-prompt/iab-prompt.d.ts} +10 -4
- package/dist-types/components/{iab-consent-banner → iab-prompt}/index.d.ts +1 -1
- package/dist-types/components/{consent-dialog → panel}/atoms/card.d.ts +15 -15
- package/dist-types/components/{consent-dialog → panel}/atoms/overlay.d.ts +24 -8
- package/dist-types/components/{consent-dialog → panel}/atoms/root.d.ts +4 -3
- package/dist-types/components/{consent-dialog → panel}/index.d.ts +13 -8
- package/dist-types/components/{consent-dialog/consent-dialog.d.ts → panel/panel.d.ts} +6 -5
- package/dist-types/components/{consent-dialog-trigger → panel-trigger}/atoms/button.d.ts +2 -1
- package/dist-types/components/{consent-dialog-trigger → panel-trigger}/atoms/icon.d.ts +1 -16
- package/dist-types/components/{consent-dialog-trigger → panel-trigger}/atoms/root.d.ts +11 -23
- package/dist-types/components/{consent-dialog-trigger → panel-trigger}/atoms/text.d.ts +0 -11
- package/dist-types/components/{consent-dialog-trigger → panel-trigger}/atoms/toolbar.d.ts +15 -4
- package/dist-types/components/{consent-dialog-trigger → panel-trigger}/index.d.ts +2 -2
- package/dist-types/components/{consent-dialog-trigger/consent-dialog-trigger-toolbar.d.ts → panel-trigger/panel-trigger-toolbar.d.ts} +0 -23
- package/dist-types/components/{consent-dialog-trigger/consent-dialog-trigger.d.ts → panel-trigger/panel-trigger.d.ts} +8 -4
- package/dist-types/components/{consent-dialog-trigger → panel-trigger}/types.d.ts +16 -7
- package/dist-types/components/{consent-dialog-trigger → panel-trigger}/use-draggable.d.ts +2 -9
- package/dist-types/components/{consent-widget → preferences}/atoms/accordion.d.ts +5 -5
- package/dist-types/components/{consent-widget → preferences}/atoms/footer.d.ts +3 -3
- package/dist-types/components/{consent-widget → preferences}/atoms/root.d.ts +1 -1
- package/dist-types/components/{consent-widget → preferences}/index.d.ts +11 -9
- package/dist-types/components/preferences/policy-actions.d.ts +10 -0
- package/dist-types/components/{consent-banner → prompt}/atoms/overlay.d.ts +1 -1
- package/dist-types/components/prompt/atoms/root.d.ts +78 -0
- package/dist-types/components/{consent-banner → prompt}/components.d.ts +99 -14
- package/dist-types/components/{consent-banner → prompt}/error-boundary.d.ts +3 -1
- package/dist-types/components/{consent-banner → prompt}/index.d.ts +18 -10
- package/dist-types/components/prompt/policy-actions.d.ts +12 -0
- package/dist-types/components/{consent-banner/consent-banner.d.ts → prompt/prompt.d.ts} +36 -10
- package/dist-types/components/prompt/resolve-banner-primary-actions.d.ts +14 -0
- package/dist-types/components/prompt/surface-context.d.ts +45 -0
- package/dist-types/components/prompt/use-banner-copy.d.ts +16 -0
- package/dist-types/components/shared/libs/polymorphic.d.ts +2 -2
- package/dist-types/components/shared/libs/recursive-clone-children.d.ts +2 -2
- package/dist-types/components/shared/libs/slot.d.ts +1 -1
- package/dist-types/components/shared/libs/use-controllable-state.d.ts +1 -1
- package/dist-types/components/shared/policy-actions.d.ts +8 -3
- package/dist-types/components/shared/primitives/box.d.ts +3 -1
- package/dist-types/components/shared/primitives/button.d.ts +4 -37
- package/dist-types/components/shared/primitives/button.types.d.ts +3 -1
- package/dist-types/components/shared/primitives/legal-links/index.d.ts +7 -11
- package/dist-types/components/shared/ui/accordion/accordion.d.ts +45 -12
- package/dist-types/components/shared/ui/accordion/accordion.types.d.ts +1 -1
- package/dist-types/components/shared/ui/animated-collapse/animated-collapse.d.ts +1 -1
- package/dist-types/components/shared/ui/branding.d.ts +12 -12
- package/dist-types/components/shared/ui/button/button.d.ts +19 -25
- package/dist-types/components/shared/ui/button/button.types.d.ts +2 -2
- package/dist-types/components/shared/ui/collapsible/collapsible.d.ts +18 -1
- package/dist-types/components/shared/ui/dialog/dialog.d.ts +6 -6
- package/dist-types/components/shared/ui/icon.d.ts +1 -1
- package/dist-types/components/shared/ui/logo.d.ts +0 -21
- package/dist-types/components/shared/ui/preference-item/preference-item.d.ts +46 -2
- package/dist-types/components/shared/ui/switch/switch.d.ts +19 -8
- package/dist-types/components/shared/ui/tabs/tabs.d.ts +19 -2
- package/dist-types/context/iab-context-value.d.ts +37 -0
- package/dist-types/context/index.d.ts +3 -0
- package/dist-types/context/theme-context.d.ts +2 -2
- package/dist-types/context.d.ts +17 -0
- package/dist-types/devtools.d.ts +54 -0
- package/dist-types/draft.d.ts +31 -0
- package/dist-types/external-iab-context.d.ts +29 -0
- package/dist-types/frame.d.ts +1 -0
- package/dist-types/headless.d.ts +12 -8
- package/dist-types/hooks/use-color-scheme.d.ts +1 -1
- package/dist-types/hooks/use-component-config.d.ts +2 -2
- package/dist-types/hooks/use-focus-trap.d.ts +2 -2
- package/dist-types/hooks/use-headless-iab-consent-ui.d.ts +7 -8
- package/dist-types/hooks/use-iab-manager.d.ts +52 -0
- package/dist-types/hooks/use-is-hydrated.d.ts +8 -0
- package/dist-types/hooks/use-reduced-motion.d.ts +1 -1
- package/dist-types/hooks/use-scroll-lock.d.ts +1 -1
- package/dist-types/hooks/use-text-direction.d.ts +1 -1
- package/dist-types/hooks/use-theme.d.ts +2 -1
- package/dist-types/hooks.d.ts +148 -0
- package/dist-types/iab-context.d.ts +28 -0
- package/dist-types/iab.d.ts +14 -8
- package/dist-types/index.d.ts +61 -22
- package/dist-types/module-hooks/iframe-blocker.d.ts +6 -0
- package/dist-types/module-hooks/network-blocker.d.ts +9 -0
- package/dist-types/module-hooks/persistence.d.ts +4 -0
- package/dist-types/module-hooks/script-loader.d.ts +6 -0
- package/dist-types/module-hooks/shared.d.ts +2 -0
- package/dist-types/module-hooks.d.ts +4 -0
- package/dist-types/panel-link.d.ts +1 -0
- package/dist-types/panel-trigger.d.ts +1 -0
- package/dist-types/panel.d.ts +1 -0
- package/dist-types/preferences.d.ts +1 -0
- package/dist-types/prompt.d.ts +1 -0
- package/dist-types/provider.d.ts +149 -0
- package/dist-types/server/fetch-ssr-data.d.ts +2 -2
- package/dist-types/server/headers.d.ts +3 -3
- package/dist-types/server/init-cache-key.d.ts +3 -3
- package/dist-types/server/normalize-url.d.ts +2 -2
- package/dist-types/server/types.d.ts +1 -1
- package/dist-types/theme-provider.d.ts +10 -0
- package/dist-types/transports/offline.d.ts +18 -0
- package/dist-types/types/index.d.ts +3 -0
- package/dist-types/types/manager.d.ts +15 -0
- package/dist-types/types/slots.d.ts +5 -0
- package/dist-types/types/theme/index.d.ts +0 -1
- package/dist-types/types/theme/style-types.d.ts +3 -9
- package/dist-types/ui-config-context.d.ts +9 -0
- package/dist-types/ui-save.d.ts +5 -0
- package/dist-types/utils/cn.d.ts +1 -1
- package/dist-types/utils/default-translation-config.d.ts +6 -0
- package/dist-types/utils/index.d.ts +4 -0
- package/dist-types/utils/merge-slot-props.d.ts +14 -0
- package/dist-types/utils/merge-styles.d.ts +1 -1
- package/dist-types/utils/theme-utils.d.ts +2 -2
- package/dist-types/version.d.ts +1 -1
- package/docs/README.md +89 -141
- package/docs/assets/v3/brand-bar.png +0 -0
- package/docs/assets/v3/brand-card.png +0 -0
- package/docs/assets/v3/choice-wall.png +0 -0
- package/docs/assets/v3/mobile-card.png +0 -0
- package/docs/assets/v3/preferences.png +0 -0
- package/docs/customization/overview.md +45 -0
- package/docs/customization/recipes.md +79 -0
- package/docs/customization/slots.md +55 -0
- package/docs/customization/tokens.md +76 -0
- package/docs/customization/translations.md +49 -0
- package/docs/frameworks/react/components/consent-banner.md +219 -202
- package/docs/frameworks/react/components/consent-dialog-link.md +88 -35
- package/docs/frameworks/react/components/consent-dialog-trigger.md +74 -134
- package/docs/frameworks/react/components/consent-dialog.md +170 -135
- package/docs/frameworks/react/components/consent-manager-provider.md +57 -256
- package/docs/frameworks/react/components/consent-widget.md +154 -118
- package/docs/frameworks/react/components/dev-tools.md +198 -33
- package/docs/frameworks/react/components/frame.md +120 -42
- package/docs/frameworks/react/concepts/consent-categories.md +24 -89
- package/docs/frameworks/react/concepts/policy-presets.md +123 -0
- package/docs/frameworks/react/headless.md +91 -185
- package/docs/frameworks/react/hooks/use-consent-manager/overview.md +39 -153
- package/docs/frameworks/react/iab/overview.md +33 -108
- package/docs/frameworks/react/quickstart.md +116 -112
- package/docs/frameworks/react/script-loader.md +41 -533
- package/docs/frameworks/react/styling/overview.md +168 -253
- package/docs/frameworks/react/troubleshooting.md +47 -119
- package/docs/guides/consent-state.md +60 -0
- package/docs/guides/data-fetching.md +163 -0
- package/docs/guides/deployment-modes.md +63 -0
- package/docs/guides/troubleshooting.md +68 -0
- package/docs/guides/verify-consent.md +62 -0
- package/docs/integrations/adobe-analytics.md +239 -105
- package/docs/integrations/ahrefs-analytics.md +238 -104
- package/docs/integrations/amplitude.md +219 -157
- package/docs/integrations/building-integrations.md +32 -224
- package/docs/integrations/clear-on-revocation.md +167 -0
- package/docs/integrations/clearbit.md +247 -86
- package/docs/integrations/cloudflare-web-analytics.md +250 -84
- package/docs/integrations/crisp.md +251 -97
- package/docs/integrations/databuddy.md +259 -153
- package/docs/integrations/fathom-analytics.md +239 -96
- package/docs/integrations/google-maps.md +328 -207
- package/docs/integrations/google-tag-manager.md +248 -96
- package/docs/integrations/google-tag.md +261 -90
- package/docs/integrations/heap.md +222 -149
- package/docs/integrations/hightouch.md +225 -131
- package/docs/integrations/hotjar.md +239 -90
- package/docs/integrations/intercom.md +239 -98
- package/docs/integrations/linkedin-insights.md +243 -113
- package/docs/integrations/logrocket.md +241 -123
- package/docs/integrations/matomo-analytics.md +256 -111
- package/docs/integrations/meta-pixel.md +197 -324
- package/docs/integrations/microsoft-clarity.md +233 -114
- package/docs/integrations/microsoft-uet.md +245 -110
- package/docs/integrations/mixpanel-analytics.md +252 -87
- package/docs/integrations/openai-pixel.md +441 -0
- package/docs/integrations/overview.md +95 -133
- package/docs/integrations/pirsch.md +249 -96
- package/docs/integrations/plausible-analytics.md +241 -100
- package/docs/integrations/posthog.md +353 -214
- package/docs/integrations/promptwatch.md +251 -81
- package/docs/integrations/reddit-pixel.md +226 -173
- package/docs/integrations/rudderstack.md +244 -187
- package/docs/integrations/rybbit-analytics.md +244 -91
- package/docs/integrations/segment.md +238 -92
- package/docs/integrations/snapchat-pixel.md +240 -110
- package/docs/integrations/tiktok-pixel.md +249 -81
- package/docs/integrations/umami-analytics.md +242 -95
- package/docs/integrations/vercel-analytics.md +242 -90
- package/docs/integrations/x-pixel.md +238 -104
- package/docs/integrations/youtube.md +354 -142
- package/docs/upgrade-v3.md +334 -0
- package/iab/styles.css +1 -1
- package/iab/styles.tw3.css +1 -1
- package/package.json +187 -102
- package/readme.json +1 -1
- package/src/iab/styles.css +1 -1
- package/src/iab/styles.tw3.css +1 -1
- package/src/styles.css +1 -1
- package/src/styles.tw3.css +1 -1
- package/styles.css +1 -1
- package/styles.tw3.css +1 -1
- package/client/components/consent-banner.js +0 -4
- package/client/components/consent-dialog-link.js +0 -3
- package/client/components/consent-dialog-trigger.js +0 -3
- package/client/components/consent-dialog.js +0 -4
- package/client/components/consent-widget.js +0 -4
- package/client/components/frame.js +0 -3
- package/client/components/integrations.js +0 -3
- package/dist/components/consent-banner/atoms/overlay.cjs +0 -1
- package/dist/components/consent-banner/atoms/overlay.js +0 -1
- package/dist/components/consent-banner/atoms/root.cjs +0 -1
- package/dist/components/consent-banner/atoms/root.js +0 -1
- package/dist/components/consent-banner/components.cjs +0 -1
- package/dist/components/consent-banner/components.js +0 -1
- package/dist/components/consent-banner/consent-banner.cjs +0 -1
- package/dist/components/consent-banner/consent-banner.js +0 -1
- package/dist/components/consent-banner/error-boundary.cjs +0 -1
- package/dist/components/consent-banner/error-boundary.js +0 -1
- package/dist/components/consent-banner/index.cjs +0 -1
- package/dist/components/consent-banner/index.js +0 -1
- package/dist/components/consent-banner/policy-actions.cjs +0 -1
- package/dist/components/consent-banner/policy-actions.js +0 -1
- package/dist/components/consent-dialog/atoms/card.cjs +0 -1
- package/dist/components/consent-dialog/atoms/card.js +0 -1
- package/dist/components/consent-dialog/atoms/overlay.cjs +0 -1
- package/dist/components/consent-dialog/atoms/overlay.js +0 -1
- package/dist/components/consent-dialog/atoms/root.cjs +0 -1
- package/dist/components/consent-dialog/atoms/root.js +0 -1
- package/dist/components/consent-dialog/consent-dialog.cjs +0 -1
- package/dist/components/consent-dialog/consent-dialog.js +0 -1
- package/dist/components/consent-dialog/index.cjs +0 -1
- package/dist/components/consent-dialog/index.js +0 -1
- package/dist/components/consent-dialog-link/index.cjs +0 -1
- package/dist/components/consent-dialog-trigger/atoms/button.cjs +0 -1
- package/dist/components/consent-dialog-trigger/atoms/button.js +0 -1
- package/dist/components/consent-dialog-trigger/atoms/icon.cjs +0 -1
- package/dist/components/consent-dialog-trigger/atoms/icon.js +0 -1
- package/dist/components/consent-dialog-trigger/atoms/root.cjs +0 -1
- package/dist/components/consent-dialog-trigger/atoms/root.js +0 -1
- package/dist/components/consent-dialog-trigger/atoms/text.cjs +0 -1
- package/dist/components/consent-dialog-trigger/atoms/text.js +0 -1
- package/dist/components/consent-dialog-trigger/atoms/toolbar.cjs +0 -1
- package/dist/components/consent-dialog-trigger/atoms/toolbar.js +0 -1
- package/dist/components/consent-dialog-trigger/consent-dialog-trigger-toolbar.cjs +0 -1
- package/dist/components/consent-dialog-trigger/consent-dialog-trigger-toolbar.js +0 -1
- package/dist/components/consent-dialog-trigger/consent-dialog-trigger.cjs +0 -1
- package/dist/components/consent-dialog-trigger/consent-dialog-trigger.js +0 -1
- package/dist/components/consent-dialog-trigger/index.cjs +0 -1
- package/dist/components/consent-dialog-trigger/index.js +0 -1
- package/dist/components/consent-dialog-trigger/types.cjs +0 -1
- package/dist/components/consent-dialog-trigger/use-draggable.cjs +0 -1
- package/dist/components/consent-dialog-trigger/use-draggable.js +0 -1
- package/dist/components/consent-preferences-link/consent-preferences-link.cjs +0 -1
- package/dist/components/consent-preferences-link/index.cjs +0 -1
- package/dist/components/consent-widget/atoms/accordion.cjs +0 -1
- package/dist/components/consent-widget/atoms/accordion.js +0 -1
- package/dist/components/consent-widget/atoms/button.cjs +0 -1
- package/dist/components/consent-widget/atoms/button.js +0 -1
- package/dist/components/consent-widget/atoms/footer.cjs +0 -1
- package/dist/components/consent-widget/atoms/footer.js +0 -1
- package/dist/components/consent-widget/atoms/root.cjs +0 -1
- package/dist/components/consent-widget/atoms/root.js +0 -1
- package/dist/components/consent-widget/consent-widget.cjs +0 -1
- package/dist/components/consent-widget/consent-widget.js +0 -1
- package/dist/components/consent-widget/index.cjs +0 -1
- package/dist/components/consent-widget/index.js +0 -1
- package/dist/components/consent-widget/policy-actions.cjs +0 -1
- package/dist/components/consent-widget/policy-actions.js +0 -1
- package/dist/components/consent-widget/types.cjs +0 -1
- package/dist/components/frame/atoms.cjs +0 -1
- package/dist/components/frame/frame.cjs +0 -1
- package/dist/components/frame/index.cjs +0 -1
- package/dist/components/frame/types.cjs +0 -1
- package/dist/components/iab-consent-banner/atoms/button-group.cjs +0 -1
- package/dist/components/iab-consent-banner/atoms/button-group.js +0 -1
- package/dist/components/iab-consent-banner/atoms/card.cjs +0 -1
- package/dist/components/iab-consent-banner/atoms/card.js +0 -1
- package/dist/components/iab-consent-banner/atoms/description.cjs +0 -1
- package/dist/components/iab-consent-banner/atoms/description.js +0 -1
- package/dist/components/iab-consent-banner/atoms/footer.cjs +0 -1
- package/dist/components/iab-consent-banner/atoms/footer.js +0 -1
- package/dist/components/iab-consent-banner/atoms/header.cjs +0 -1
- package/dist/components/iab-consent-banner/atoms/header.js +0 -1
- package/dist/components/iab-consent-banner/atoms/overlay.cjs +0 -1
- package/dist/components/iab-consent-banner/atoms/overlay.js +0 -1
- package/dist/components/iab-consent-banner/atoms/root.cjs +0 -1
- package/dist/components/iab-consent-banner/atoms/root.js +0 -1
- package/dist/components/iab-consent-banner/atoms/title.cjs +0 -1
- package/dist/components/iab-consent-banner/atoms/title.js +0 -1
- package/dist/components/iab-consent-banner/iab-consent-banner.cjs +0 -1
- package/dist/components/iab-consent-banner/iab-consent-banner.js +0 -1
- package/dist/components/iab-consent-banner/index.cjs +0 -1
- package/dist/components/iab-consent-banner/index.js +0 -1
- package/dist/components/iab-consent-dialog/atoms/card.cjs +0 -1
- package/dist/components/iab-consent-dialog/atoms/card.js +0 -1
- package/dist/components/iab-consent-dialog/atoms/content.cjs +0 -1
- package/dist/components/iab-consent-dialog/atoms/content.js +0 -1
- package/dist/components/iab-consent-dialog/atoms/footer.cjs +0 -1
- package/dist/components/iab-consent-dialog/atoms/footer.js +0 -1
- package/dist/components/iab-consent-dialog/atoms/header.cjs +0 -1
- package/dist/components/iab-consent-dialog/atoms/header.js +0 -1
- package/dist/components/iab-consent-dialog/atoms/overlay.cjs +0 -1
- package/dist/components/iab-consent-dialog/atoms/overlay.js +0 -1
- package/dist/components/iab-consent-dialog/atoms/purpose-item.cjs +0 -1
- package/dist/components/iab-consent-dialog/atoms/purpose-item.js +0 -1
- package/dist/components/iab-consent-dialog/atoms/root.cjs +0 -1
- package/dist/components/iab-consent-dialog/atoms/root.js +0 -1
- package/dist/components/iab-consent-dialog/atoms/stack-item.cjs +0 -1
- package/dist/components/iab-consent-dialog/atoms/stack-item.js +0 -1
- package/dist/components/iab-consent-dialog/atoms/tabs.cjs +0 -1
- package/dist/components/iab-consent-dialog/atoms/tabs.js +0 -1
- package/dist/components/iab-consent-dialog/atoms/vendor-list.cjs +0 -1
- package/dist/components/iab-consent-dialog/atoms/vendor-list.js +0 -1
- package/dist/components/iab-consent-dialog/hooks/use-gvl-data.cjs +0 -1
- package/dist/components/iab-consent-dialog/hooks/use-gvl-data.js +0 -1
- package/dist/components/iab-consent-dialog/iab-consent-dialog.cjs +0 -1
- package/dist/components/iab-consent-dialog/iab-consent-dialog.js +0 -1
- package/dist/components/iab-consent-dialog/index.cjs +0 -1
- package/dist/components/iab-consent-dialog/index.js +0 -1
- package/dist/components/iab-consent-dialog/types.cjs +0 -1
- package/dist/components/iab-consent-dialog/use-iab-translations.cjs +0 -1
- package/dist/components/iab-consent-dialog/use-iab-translations.js +0 -1
- package/dist/components/integrations/google-map.cjs +0 -1
- package/dist/components/integrations/google-map.js +0 -1
- package/dist/components/integrations/index.cjs +0 -1
- package/dist/components/integrations/index.js +0 -1
- package/dist/components/integrations/shared.cjs +0 -1
- package/dist/components/integrations/shared.js +0 -1
- package/dist/components/integrations/youtube-embed.cjs +0 -1
- package/dist/components/integrations/youtube-embed.js +0 -1
- package/dist/components/shared/libs/polymorphic.cjs +0 -1
- package/dist/components/shared/libs/recursive-clone-children.cjs +0 -1
- package/dist/components/shared/libs/slot.cjs +0 -1
- package/dist/components/shared/libs/use-controllable-state.cjs +0 -1
- package/dist/components/shared/policy-actions.cjs +0 -1
- package/dist/components/shared/primitives/box.cjs +0 -1
- package/dist/components/shared/primitives/button.cjs +0 -1
- package/dist/components/shared/primitives/button.types.cjs +0 -1
- package/dist/components/shared/primitives/legal-links/index.cjs +0 -1
- package/dist/components/shared/ui/accordion/accordion.cjs +0 -1
- package/dist/components/shared/ui/accordion/accordion.types.cjs +0 -1
- package/dist/components/shared/ui/accordion/index.cjs +0 -1
- package/dist/components/shared/ui/animated-collapse/animated-collapse.cjs +0 -1
- package/dist/components/shared/ui/animated-collapse/index.cjs +0 -1
- package/dist/components/shared/ui/branding.cjs +0 -1
- package/dist/components/shared/ui/button/button.cjs +0 -1
- package/dist/components/shared/ui/button/button.types.cjs +0 -1
- package/dist/components/shared/ui/button/index.cjs +0 -1
- package/dist/components/shared/ui/collapsible/collapsible.cjs +0 -1
- package/dist/components/shared/ui/collapsible/index.cjs +0 -1
- package/dist/components/shared/ui/dialog/dialog.cjs +0 -1
- package/dist/components/shared/ui/dialog/index.cjs +0 -1
- package/dist/components/shared/ui/icon.cjs +0 -1
- package/dist/components/shared/ui/logo.cjs +0 -1
- package/dist/components/shared/ui/preference-item/index.cjs +0 -1
- package/dist/components/shared/ui/preference-item/preference-item.cjs +0 -1
- package/dist/components/shared/ui/switch/index.cjs +0 -1
- package/dist/components/shared/ui/switch/switch.cjs +0 -1
- package/dist/components/shared/ui/switch/switch.types.cjs +0 -1
- package/dist/components/shared/ui/tabs/index.cjs +0 -1
- package/dist/components/shared/ui/tabs/tabs.cjs +0 -1
- package/dist/context/consent-manager-context.cjs +0 -1
- package/dist/context/consent-manager-context.js +0 -1
- package/dist/context/consent-tracking-context.cjs +0 -1
- package/dist/context/theme-context.cjs +0 -1
- package/dist/headless.cjs +0 -1
- package/dist/hooks/index.cjs +0 -1
- package/dist/hooks/index.js +0 -1
- package/dist/hooks/use-color-scheme.cjs +0 -1
- package/dist/hooks/use-component-config.cjs +0 -1
- package/dist/hooks/use-consent-dialog-trigger.cjs +0 -1
- package/dist/hooks/use-consent-dialog-trigger.js +0 -1
- package/dist/hooks/use-consent-manager.cjs +0 -1
- package/dist/hooks/use-consent-manager.js +0 -1
- package/dist/hooks/use-consent-script.cjs +0 -1
- package/dist/hooks/use-consent-script.js +0 -1
- package/dist/hooks/use-focus-trap.cjs +0 -1
- package/dist/hooks/use-headless-consent-ui.cjs +0 -1
- package/dist/hooks/use-headless-consent-ui.js +0 -1
- package/dist/hooks/use-headless-iab-consent-ui.cjs +0 -1
- package/dist/hooks/use-reduced-motion.cjs +0 -1
- package/dist/hooks/use-scroll-lock.cjs +0 -1
- package/dist/hooks/use-ssr-status.cjs +0 -1
- package/dist/hooks/use-ssr-status.js +0 -1
- package/dist/hooks/use-styles.cjs +0 -1
- package/dist/hooks/use-styles.js +0 -1
- package/dist/hooks/use-text-direction.cjs +0 -1
- package/dist/hooks/use-theme.cjs +0 -1
- package/dist/hooks/use-translations.cjs +0 -1
- package/dist/hooks/use-translations.js +0 -1
- package/dist/iab.cjs +0 -1
- package/dist/index.cjs +0 -1
- package/dist/primitives/accordion.cjs +0 -1
- package/dist/primitives/button.cjs +0 -1
- package/dist/primitives/collapsible.cjs +0 -1
- package/dist/primitives/dialog.cjs +0 -1
- package/dist/primitives/preference-item.cjs +0 -1
- package/dist/primitives/switch.cjs +0 -1
- package/dist/primitives/tabs.cjs +0 -1
- package/dist/primitives.cjs +0 -1
- package/dist/providers/consent-manager-provider.cjs +0 -1
- package/dist/providers/consent-manager-provider.js +0 -1
- package/dist/server/fetch-ssr-data.cjs +0 -1
- package/dist/server/headers.cjs +0 -1
- package/dist/server/index.cjs +0 -1
- package/dist/server/init-cache-key.cjs +0 -1
- package/dist/server/normalize-url.cjs +0 -1
- package/dist/server/types.cjs +0 -1
- package/dist/types/consent-manager.cjs +0 -1
- package/dist/types/theme/index.cjs +0 -1
- package/dist/types/theme/style-keys.cjs +0 -1
- package/dist/types/theme/style-types.cjs +0 -1
- package/dist/utils/cn.cjs +0 -1
- package/dist/utils/merge-styles.cjs +0 -1
- package/dist/utils/test-helpers.cjs +0 -1
- package/dist/utils/test-helpers.js +0 -1
- package/dist/utils/theme-utils.cjs +0 -1
- package/dist/version.cjs +0 -1
- package/dist-types/components/consent-banner/atoms/root.d.ts +0 -126
- package/dist-types/components/consent-banner/policy-actions.d.ts +0 -11
- package/dist-types/components/consent-widget/policy-actions.d.ts +0 -11
- package/dist-types/components/iab-consent-dialog/hooks/use-gvl-data.d.ts +0 -27
- package/dist-types/components/iab-consent-dialog/types.d.ts +0 -72
- package/dist-types/components/integrations/google-map.d.ts +0 -82
- package/dist-types/components/integrations/index.d.ts +0 -2
- package/dist-types/components/integrations/shared.d.ts +0 -12
- package/dist-types/components/integrations/youtube-embed.d.ts +0 -95
- package/dist-types/context/consent-manager-context.d.ts +0 -31
- package/dist-types/hooks/index.d.ts +0 -12
- package/dist-types/hooks/use-consent-dialog-trigger.d.ts +0 -10
- package/dist-types/hooks/use-consent-manager.d.ts +0 -27
- package/dist-types/hooks/use-consent-script.d.ts +0 -80
- package/dist-types/hooks/use-headless-consent-ui.d.ts +0 -46
- package/dist-types/hooks/use-ssr-status.d.ts +0 -57
- package/dist-types/hooks/use-styles.d.ts +0 -21
- package/dist-types/hooks/use-translations.d.ts +0 -28
- package/dist-types/providers/consent-manager-provider.d.ts +0 -40
- package/dist-types/types/consent-manager.d.ts +0 -39
- package/dist-types/types/theme/style-keys.d.ts +0 -1
- package/dist-types/utils/test-helpers.d.ts +0 -31
- package/docs/frameworks/react/building-headless-components.md +0 -370
- package/docs/frameworks/react/callbacks.md +0 -186
- package/docs/frameworks/react/concepts/client-modes.md +0 -177
- package/docs/frameworks/react/concepts/consent-models.md +0 -113
- package/docs/frameworks/react/concepts/cookie-management.md +0 -122
- package/docs/frameworks/react/concepts/glossary.md +0 -24
- package/docs/frameworks/react/concepts/initialization-flow.md +0 -149
- package/docs/frameworks/react/concepts/policy-packs.md +0 -228
- package/docs/frameworks/react/hooks/use-color-scheme.md +0 -41
- package/docs/frameworks/react/hooks/use-consent-manager/checking-consent.md +0 -96
- package/docs/frameworks/react/hooks/use-consent-manager/location-info.md +0 -97
- package/docs/frameworks/react/hooks/use-consent-manager/setting-consent.md +0 -94
- package/docs/frameworks/react/hooks/use-draggable.md +0 -59
- package/docs/frameworks/react/hooks/use-focus-trap.md +0 -42
- package/docs/frameworks/react/hooks/use-reduced-motion.md +0 -37
- package/docs/frameworks/react/hooks/use-ssr-status.md +0 -32
- package/docs/frameworks/react/hooks/use-text-direction.md +0 -50
- package/docs/frameworks/react/hooks/use-translations.md +0 -55
- package/docs/frameworks/react/iab/consent-banner.md +0 -91
- package/docs/frameworks/react/iab/consent-dialog.md +0 -129
- package/docs/frameworks/react/iab/use-gvl-data.md +0 -21
- package/docs/frameworks/react/iframe-blocking.md +0 -106
- package/docs/frameworks/react/internationalization.md +0 -207
- package/docs/frameworks/react/network-blocker.md +0 -140
- package/docs/frameworks/react/optimization.md +0 -148
- package/docs/frameworks/react/policy-packs.md +0 -242
- package/docs/frameworks/react/server-side.md +0 -158
- package/docs/frameworks/react/styling/classnames.md +0 -94
- package/docs/frameworks/react/styling/color-scheme.md +0 -84
- package/docs/frameworks/react/styling/css-variables.md +0 -53
- package/docs/frameworks/react/styling/slots.md +0 -94
- package/docs/frameworks/react/styling/tailwind.md +0 -119
- package/docs/frameworks/react/styling/tokens.md +0 -156
- package/docs/shared/concepts/client-modes.md +0 -103
- package/docs/shared/concepts/consent-categories.md +0 -41
- package/docs/shared/concepts/consent-models.md +0 -72
- package/docs/shared/concepts/cookie-management.md +0 -88
- package/docs/shared/concepts/glossary.md +0 -24
- package/docs/shared/concepts/initialization-flow.md +0 -105
- package/docs/shared/concepts/policy-packs.md +0 -225
- package/docs/shared/react/components/consent-banner.md +0 -242
- package/docs/shared/react/components/consent-dialog-link.md +0 -45
- package/docs/shared/react/components/consent-dialog-trigger.md +0 -185
- package/docs/shared/react/components/consent-dialog.md +0 -119
- package/docs/shared/react/components/consent-manager-provider.md +0 -225
- package/docs/shared/react/components/consent-widget.md +0 -121
- package/docs/shared/react/components/dev-tools.md +0 -81
- package/docs/shared/react/components/frame.md +0 -52
- package/docs/shared/react/guides/building-headless-components.md +0 -110
- package/docs/shared/react/guides/callbacks.md +0 -89
- package/docs/shared/react/guides/headless.md +0 -31
- package/docs/shared/react/guides/iframe-blocking.md +0 -65
- package/docs/shared/react/guides/internationalization.md +0 -123
- package/docs/shared/react/guides/network-blocker.md +0 -72
- package/docs/shared/react/guides/optimization.md +0 -44
- package/docs/shared/react/guides/policy-packs.md +0 -173
- package/docs/shared/react/guides/script-loader.md +0 -311
- package/docs/shared/react/hooks/use-color-scheme.md +0 -31
- package/docs/shared/react/hooks/use-consent-manager/checking-consent.md +0 -95
- package/docs/shared/react/hooks/use-consent-manager/location-info.md +0 -96
- package/docs/shared/react/hooks/use-consent-manager/overview.md +0 -74
- package/docs/shared/react/hooks/use-consent-manager/setting-consent.md +0 -93
- package/docs/shared/react/hooks/use-draggable.md +0 -30
- package/docs/shared/react/hooks/use-focus-trap.md +0 -20
- package/docs/shared/react/hooks/use-reduced-motion.md +0 -33
- package/docs/shared/react/hooks/use-ssr-status.md +0 -16
- package/docs/shared/react/hooks/use-text-direction.md +0 -38
- package/docs/shared/react/hooks/use-translations.md +0 -15
- package/docs/shared/react/iab/consent-banner.md +0 -60
- package/docs/shared/react/iab/consent-dialog.md +0 -76
- package/docs/shared/react/iab/overview.md +0 -80
- package/docs/shared/react/iab/use-gvl-data.md +0 -21
- package/docs/shared/react/styling/classnames.md +0 -93
- package/docs/shared/react/styling/color-scheme.md +0 -35
- package/docs/shared/react/styling/css-variables.md +0 -53
- package/docs/shared/react/styling/overview.md +0 -261
- package/docs/shared/react/styling/slots.md +0 -93
- package/docs/shared/react/styling/stylesheet-entrypoint.md +0 -8
- package/docs/shared/react/styling/tailwind.md +0 -88
- package/docs/shared/react/styling/tokens.md +0 -155
- package/docs/shared/troubleshooting.md +0 -82
- /package/dist/components/{consent-dialog-trigger → iab-panel}/types.js +0 -0
- /package/dist/components/{consent-widget → panel-trigger}/types.js +0 -0
- /package/dist/components/{iab-consent-dialog → preferences}/types.js +0 -0
- /package/dist/types/{consent-manager.js → manager.js} +0 -0
- /package/dist/types/{theme/style-keys.js → slots.js} +0 -0
- /package/dist-types/components/{consent-dialog-link → panel-link}/index.d.ts +0 -0
- /package/dist-types/components/{consent-widget → preferences}/atoms/button.d.ts +0 -0
- /package/dist-types/components/{consent-widget/consent-widget.d.ts → preferences/preferences.d.ts} +0 -0
- /package/dist-types/components/{consent-widget → preferences}/types.d.ts +0 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AllConsentNames, ConsentKernel, ConsentPresentation } from '@c15t/core';
|
|
2
|
+
/**
|
|
3
|
+
* React context carrying the kernel instance.
|
|
4
|
+
*
|
|
5
|
+
* v3 Provider puts a kernel here; hooks pull it out and subscribe via
|
|
6
|
+
* useSyncExternalStore. No state snapshot lives in context — only the
|
|
7
|
+
* kernel reference. Consumers subscribe to the kernel directly at their
|
|
8
|
+
* render site, so each hook isolates re-renders to exactly its slice.
|
|
9
|
+
*/
|
|
10
|
+
export declare const KernelContext: import("react").Context<ConsentKernel | null>;
|
|
11
|
+
/** Provider-owned services used by optional integrations. */
|
|
12
|
+
export interface ProviderServices {
|
|
13
|
+
clearRecords: () => void;
|
|
14
|
+
getPresentation: () => ConsentPresentation | undefined;
|
|
15
|
+
getConsentCategories: () => readonly AllConsentNames[];
|
|
16
|
+
}
|
|
17
|
+
export declare const ProviderServicesContext: import("react").Context<ProviderServices | null>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { DevToolsInstance, DevToolsOptions, DevToolsPosition, DevToolsTab } from '@c15t/dev-tools';
|
|
2
|
+
import type { HTMLAttributes, ReactElement } from 'react';
|
|
3
|
+
/** Props for the kernel-bound React DevTools adapter. */
|
|
4
|
+
export interface ConsentDevToolsProps extends Omit<DevToolsOptions, 'container' | 'kernel'> {
|
|
5
|
+
/** Prevents the DevTools engine from mounting. @default false */
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** Backward-compatible props name for {@link ConsentDevTools}. */
|
|
9
|
+
export type C15TDevToolsProps = ConsentDevToolsProps;
|
|
10
|
+
/** Compatible props name for the {@link DevTools} alias. */
|
|
11
|
+
export type DevToolsProps = ConsentDevToolsProps;
|
|
12
|
+
/**
|
|
13
|
+
* Mounts the c15t DevTools engine for the nearest v3 consent provider.
|
|
14
|
+
*
|
|
15
|
+
* @param props - Presentation options passed to the DevTools engine.
|
|
16
|
+
* @returns `null`; the engine mounts its interface into `document.body`.
|
|
17
|
+
*/
|
|
18
|
+
export declare const ConsentDevTools: ({ disabled, clearRecords, getPresentation, defaultOpen, defaultTab, getConsentCategories, maxEvents, position, }: ConsentDevToolsProps) => null;
|
|
19
|
+
/** Compatible short name for {@link ConsentDevTools}. */
|
|
20
|
+
export declare const DevTools: typeof ConsentDevTools;
|
|
21
|
+
/** Backward-compatible name for {@link ConsentDevTools}. */
|
|
22
|
+
export declare const C15TDevTools: typeof ConsentDevTools;
|
|
23
|
+
/** Props for the embedded c15t panel used by TanStack Devtools. */
|
|
24
|
+
export interface C15tTanStackDevtoolsPanelProps extends HTMLAttributes<HTMLDivElement>, Pick<DevToolsOptions, 'defaultTab' | 'maxEvents' | 'getConsentCategories' | 'getPresentation' | 'clearRecords'> {
|
|
25
|
+
/** Prevents the embedded DevTools engine from mounting. @default false */
|
|
26
|
+
disabled?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/** Plugin configuration accepted by React TanStack Devtools. */
|
|
29
|
+
export interface TanStackDevtoolsPlugin {
|
|
30
|
+
id?: string;
|
|
31
|
+
name: string;
|
|
32
|
+
defaultOpen?: boolean;
|
|
33
|
+
render: ReactElement;
|
|
34
|
+
}
|
|
35
|
+
/** Options for {@link c15tDevtools}. */
|
|
36
|
+
export interface C15tDevtoolsPluginOptions extends C15tTanStackDevtoolsPanelProps {
|
|
37
|
+
/** Stable plugin identifier. @default 'c15t' */
|
|
38
|
+
id?: string;
|
|
39
|
+
/** Display name shown by TanStack Devtools. @default 'c15t' */
|
|
40
|
+
name?: string;
|
|
41
|
+
/** Whether TanStack Devtools opens this plugin initially. @default false */
|
|
42
|
+
defaultOpen?: boolean;
|
|
43
|
+
}
|
|
44
|
+
/** Embeds c15t DevTools inside a TanStack Devtools plugin panel. */
|
|
45
|
+
export declare const C15tTanStackDevtoolsPanel: import("react").ForwardRefExoticComponent<C15tTanStackDevtoolsPanelProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
46
|
+
/**
|
|
47
|
+
* Create a c15t plugin configuration for React TanStack Devtools.
|
|
48
|
+
* @param options - Plugin identity, initial state, and embedded panel options.
|
|
49
|
+
* @returns Plugin configuration whose panel binds to the nearest provider.
|
|
50
|
+
*/
|
|
51
|
+
export declare const c15tDevtools: (options?: C15tDevtoolsPluginOptions) => TanStackDevtoolsPlugin;
|
|
52
|
+
/** Backward-compatible alias for {@link c15tDevtools}. */
|
|
53
|
+
export declare const c15tDevtoolsPlugin: typeof c15tDevtools;
|
|
54
|
+
export type { DevToolsInstance, DevToolsOptions, DevToolsPosition, DevToolsTab, };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { AllConsentNames, ConsentState, SaveResult, SaveInput } from '@c15t/core';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
/** A local, unmasked selection, committed only by an explicit save. */
|
|
4
|
+
export interface ConsentDraftHandle {
|
|
5
|
+
values: Readonly<ConsentState>;
|
|
6
|
+
displayedCategories: readonly AllConsentNames[];
|
|
7
|
+
isDirty: boolean;
|
|
8
|
+
/** A material policy change requires reset and review before saving. */
|
|
9
|
+
isStale: boolean;
|
|
10
|
+
set: (category: AllConsentNames, value: boolean) => void;
|
|
11
|
+
update: (patch: Partial<ConsentState>) => void;
|
|
12
|
+
acceptAll: () => void;
|
|
13
|
+
rejectAll: () => void;
|
|
14
|
+
save: () => Promise<SaveResult>;
|
|
15
|
+
reset: () => void;
|
|
16
|
+
}
|
|
17
|
+
export interface ConsentDraftProviderProps {
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
/** Defaults apply only to categories without an explicit receipt. */
|
|
20
|
+
initial?: Partial<ConsentState>;
|
|
21
|
+
}
|
|
22
|
+
export declare const ConsentDraftProvider: ({ children, initial, }: ConsentDraftProviderProps) => import("react").JSX.Element;
|
|
23
|
+
/** Internal UI save path shared by stock controls and headless actions. */
|
|
24
|
+
export declare const useConsentSaveAction: () => (input?: SaveInput) => Promise<SaveResult>;
|
|
25
|
+
/** Keep the compatibility manager selection and its save on the same draft. */
|
|
26
|
+
export declare const useConsentManagerDraft: () => {
|
|
27
|
+
draft: ConsentDraftHandle;
|
|
28
|
+
save: (input?: SaveInput) => Promise<SaveResult>;
|
|
29
|
+
};
|
|
30
|
+
/** Read and edit displayed choices without replacing masked effective permissions. */
|
|
31
|
+
export declare const useConsentDraft: () => ConsentDraftHandle;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The IAB bridge for an externally owned runtime.
|
|
3
|
+
*
|
|
4
|
+
* When a host creates the runtime itself — an Astro page, a SvelteKit
|
|
5
|
+
* layout — that runtime already mounted the CMP and owns its lifecycle.
|
|
6
|
+
* This provider republishes `runtime.iab` into React context instead of
|
|
7
|
+
* calling `createIAB()` a second time, which would install a second
|
|
8
|
+
* `__tcfapi` on the page.
|
|
9
|
+
*
|
|
10
|
+
* It deliberately imports nothing from `@c15t/iab`: the module is a peer of
|
|
11
|
+
* the runtime, not of the component tree, and a preference-centre chunk
|
|
12
|
+
* that pulled in the TCF encoder would cost every visitor bytes only an IAB
|
|
13
|
+
* site needs.
|
|
14
|
+
*/
|
|
15
|
+
import type { ConsentRuntime } from '@c15t/core/runtime';
|
|
16
|
+
import type { ReactNode } from 'react';
|
|
17
|
+
/** Props for {@link ExternalIABProvider}. */
|
|
18
|
+
export interface ExternalIABProviderProps {
|
|
19
|
+
/** The runtime that owns the CMP. */
|
|
20
|
+
runtime: ConsentRuntime;
|
|
21
|
+
children: ReactNode;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Publish an externally owned runtime's CMP into React context.
|
|
25
|
+
*
|
|
26
|
+
* @param props - The owning runtime and the tree to render.
|
|
27
|
+
* @returns The children, wrapped in the IAB context.
|
|
28
|
+
*/
|
|
29
|
+
export declare const ExternalIABProvider: ({ runtime, children, }: ExternalIABProviderProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './components/frame';
|
package/dist-types/headless.d.ts
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* `@c15t/react/headless` — hooks for building your own consent UI on the
|
|
3
|
+
* kernel, without the prebuilt components or their CSS.
|
|
4
|
+
*
|
|
5
|
+
* Pair with `ConsentProvider` from `@c15t/react` (or `@c15t/react/provider`).
|
|
6
|
+
*/
|
|
7
|
+
export { defaultTranslationConfig, detectBrowserLanguage, mergeTranslationConfigs, prepareTranslationConfig, } from '@c15t/core';
|
|
8
|
+
export { type ConsentDialogTriggerVisibility, type UseConsentDialogTriggerOptions, type UseConsentDialogTriggerResult, useConsentDialogTrigger, } from './component-hooks/use-panel-trigger';
|
|
9
|
+
export { useConsentManager } from './component-hooks/use-manager';
|
|
10
|
+
export { type HeadlessConsentBannerAction, type HeadlessConsentBannerState, type HeadlessConsentDialogAction, type HeadlessConsentDialogState, type HeadlessConsentSurface, type HeadlessConsentSurfaceAction, type HeadlessConsentSurfaceState, type HeadlessConsentWriteAction, useHeadlessConsentUI, } from './component-hooks/use-headless-consent-ui';
|
|
11
|
+
export { useTranslations } from './component-hooks/use-translations';
|
|
2
12
|
export { useColorScheme } from './hooks/use-color-scheme';
|
|
3
|
-
export { type ConsentDialogTriggerVisibility, type UseConsentDialogTriggerOptions, type UseConsentDialogTriggerResult, useConsentDialogTrigger, } from './hooks/use-consent-dialog-trigger';
|
|
4
|
-
export { useConsentManager } from './hooks/use-consent-manager';
|
|
5
|
-
export { ConsentScriptConflictError, type ConsentScriptReadyControls, type ConsentScriptStatus, type ConsentScriptUnmountBehavior, type UseConsentScriptOptions, type UseConsentScriptResult, useConsentScript, } from './hooks/use-consent-script';
|
|
6
13
|
export { useFocusTrap } from './hooks/use-focus-trap';
|
|
7
|
-
export
|
|
8
|
-
export { useTranslations } from './hooks/use-translations';
|
|
9
|
-
export { ConsentManagerProvider } from './providers/consent-manager-provider';
|
|
10
|
-
export type { ConsentManagerOptions, ConsentManagerProviderProps, } from './types/consent-manager';
|
|
14
|
+
export type { ReactUIOptions } from './types/manager';
|
|
@@ -3,4 +3,4 @@ export type ColorScheme = 'light' | 'dark' | 'system' | null;
|
|
|
3
3
|
* Manage color scheme preferences for components.
|
|
4
4
|
* React wrapper for `@c15t/ui` setupColorScheme.
|
|
5
5
|
*/
|
|
6
|
-
export declare
|
|
6
|
+
export declare const useColorScheme: (colorScheme?: ColorScheme) => void;
|
|
@@ -20,7 +20,7 @@ export type ResolvedComponentConfig = Required<ComponentConfig>;
|
|
|
20
20
|
*
|
|
21
21
|
* @remarks
|
|
22
22
|
* Provides a consistent way to handle configuration props that can be set
|
|
23
|
-
* globally via the
|
|
23
|
+
* globally via the ConsentProvider or overridden locally on individual
|
|
24
24
|
* components. Local values take precedence over global values.
|
|
25
25
|
*
|
|
26
26
|
* The configuration props are defined in UIOptions from @c15t/ui/theme,
|
|
@@ -51,4 +51,4 @@ export type ResolvedComponentConfig = Required<ComponentConfig>;
|
|
|
51
51
|
*
|
|
52
52
|
* @public
|
|
53
53
|
*/
|
|
54
|
-
export declare
|
|
54
|
+
export declare const useComponentConfig: (localOverrides?: ComponentConfig) => ResolvedComponentConfig;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { RefObject } from 'react';
|
|
2
2
|
/**
|
|
3
3
|
* Hook that manages focus trapping within a container.
|
|
4
4
|
*
|
|
@@ -11,4 +11,4 @@ import { type RefObject } from 'react';
|
|
|
11
11
|
*
|
|
12
12
|
* @public
|
|
13
13
|
*/
|
|
14
|
-
export declare
|
|
14
|
+
export declare const useFocusTrap: (shouldTrap: boolean, containerRef: RefObject<HTMLElement | null> | null) => void;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export type HeadlessIABBannerAction
|
|
4
|
-
export type HeadlessIABDialogAction = 'accept' | 'reject' | 'customize';
|
|
1
|
+
import type { HeadlessIABBannerAction, HeadlessIABDialogAction, HeadlessIABPreferenceTab } from '@c15t/iab/headless';
|
|
2
|
+
import { useIABConsentManager } from './use-iab-manager';
|
|
3
|
+
export type { HeadlessIABBannerAction, HeadlessIABDialogAction, HeadlessIABPreferenceTab, };
|
|
5
4
|
export interface HeadlessIABBannerState {
|
|
6
5
|
isVisible: boolean;
|
|
7
6
|
isReady: boolean;
|
|
@@ -17,9 +16,9 @@ export interface HeadlessIABDialogState {
|
|
|
17
16
|
scrollLock?: boolean;
|
|
18
17
|
}
|
|
19
18
|
export interface UseHeadlessIABConsentUIResult {
|
|
20
|
-
activeUI: ReturnType<typeof
|
|
21
|
-
model: ReturnType<typeof
|
|
22
|
-
iab: ReturnType<typeof
|
|
19
|
+
activeUI: ReturnType<typeof useIABConsentManager>['activeUI'];
|
|
20
|
+
model: ReturnType<typeof useIABConsentManager>['model'];
|
|
21
|
+
iab: ReturnType<typeof useIABConsentManager>['iab'];
|
|
23
22
|
isIABEnabled: boolean;
|
|
24
23
|
banner: HeadlessIABBannerState;
|
|
25
24
|
dialog: HeadlessIABDialogState;
|
|
@@ -38,4 +37,4 @@ export interface UseHeadlessIABConsentUIResult {
|
|
|
38
37
|
performBannerAction: (action: HeadlessIABBannerAction) => Promise<void> | void;
|
|
39
38
|
performDialogAction: (action: HeadlessIABDialogAction) => Promise<void> | void;
|
|
40
39
|
}
|
|
41
|
-
export declare
|
|
40
|
+
export declare const useHeadlessIABConsentUI: () => UseHeadlessIABConsentUIResult;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { ActiveUI, ConsentPresentation, TranslationConfig } from '@c15t/core';
|
|
2
|
+
export declare const useIABConsentManager: (overrides?: ConsentPresentation) => {
|
|
3
|
+
activeUI: ActiveUI;
|
|
4
|
+
iab: import("../iab-context").ReactIABState | null;
|
|
5
|
+
model: import("@c15t/core").KernelModel | null;
|
|
6
|
+
policyBanner: {
|
|
7
|
+
allowedActions: import("@c15t/core").PresentationAction[];
|
|
8
|
+
requiredActions: import("@c15t/core").PresentationAction[];
|
|
9
|
+
equivalentActions: import("@c15t/core").PresentationAction[][];
|
|
10
|
+
orderedActions: import("@c15t/core").PresentationAction[];
|
|
11
|
+
actionGroups: import("@c15t/core").PresentationAction[][];
|
|
12
|
+
primaryActions: import("@c15t/core").PresentationAction[];
|
|
13
|
+
diagnostics: import("@c15t/core").PresentationDiagnostic[];
|
|
14
|
+
rights: readonly import("@c15t/schema/types").PolicyRight[];
|
|
15
|
+
preferenceControls: Exclude<import("@c15t/schema/types").PolicyRight, 'disclosure'>[];
|
|
16
|
+
direction: 'row' | 'column';
|
|
17
|
+
uiProfile: 'balanced' | 'compact' | 'strict';
|
|
18
|
+
scrollLock: boolean;
|
|
19
|
+
trapFocus: boolean;
|
|
20
|
+
shouldFillActions: boolean;
|
|
21
|
+
variant: import("@c15t/core").PromptVariant;
|
|
22
|
+
position: import("@c15t/core").PromptPosition;
|
|
23
|
+
positionSource: 'host' | 'default';
|
|
24
|
+
blocking: boolean;
|
|
25
|
+
isVisible: boolean;
|
|
26
|
+
};
|
|
27
|
+
policyDialog: {
|
|
28
|
+
allowedActions: import("@c15t/core").PresentationAction[];
|
|
29
|
+
requiredActions: import("@c15t/core").PresentationAction[];
|
|
30
|
+
equivalentActions: import("@c15t/core").PresentationAction[][];
|
|
31
|
+
orderedActions: import("@c15t/core").PresentationAction[];
|
|
32
|
+
actionGroups: import("@c15t/core").PresentationAction[][];
|
|
33
|
+
primaryActions: import("@c15t/core").PresentationAction[];
|
|
34
|
+
diagnostics: import("@c15t/core").PresentationDiagnostic[];
|
|
35
|
+
rights: readonly import("@c15t/schema/types").PolicyRight[];
|
|
36
|
+
preferenceControls: Exclude<import("@c15t/schema/types").PolicyRight, 'disclosure'>[];
|
|
37
|
+
direction: 'row' | 'column';
|
|
38
|
+
uiProfile: 'balanced' | 'compact' | 'strict';
|
|
39
|
+
scrollLock: boolean;
|
|
40
|
+
trapFocus: boolean;
|
|
41
|
+
shouldFillActions: boolean;
|
|
42
|
+
variant: import("@c15t/core").PromptVariant;
|
|
43
|
+
position: import("@c15t/core").PromptPosition;
|
|
44
|
+
positionSource: 'host' | 'default';
|
|
45
|
+
blocking: boolean;
|
|
46
|
+
isVisible: boolean;
|
|
47
|
+
};
|
|
48
|
+
setActiveUI: (ui: ActiveUI, _options?: {
|
|
49
|
+
force?: boolean;
|
|
50
|
+
}) => void;
|
|
51
|
+
translationConfig: TranslationConfig;
|
|
52
|
+
};
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import type { ThemeContextValue } from '../context/theme-context';
|
|
2
|
+
export declare const useTheme: () => ThemeContextValue;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v3 React hooks.
|
|
3
|
+
*
|
|
4
|
+
* Every selector hook uses `useSyncExternalStore` to subscribe to the
|
|
5
|
+
* kernel. Hydration reads the immutable server snapshot. After hydration,
|
|
6
|
+
* consumers read live state, including browser-only privacy signals.
|
|
7
|
+
*
|
|
8
|
+
* The selectors follow the "useSyncExternalStore with selector" pattern:
|
|
9
|
+
* subscribe to all kernel changes, but narrow the returned value to the
|
|
10
|
+
* slice we care about. React only schedules a re-render if the slice
|
|
11
|
+
* `Object.is`-differs. A child reading `useConsent('marketing')` does
|
|
12
|
+
* not re-render when `useConsent('measurement')` flips elsewhere.
|
|
13
|
+
*
|
|
14
|
+
* Action hooks return stable references (the kernel's own methods).
|
|
15
|
+
* Consumers do not need `useCallback`. Under React Compiler this is
|
|
16
|
+
* safe because actions don't produce values — they cause state changes
|
|
17
|
+
* observed through the selector hooks, whose subscription model handles
|
|
18
|
+
* invalidation correctly.
|
|
19
|
+
*/
|
|
20
|
+
import type { AllConsentNames, ConsentKernel, PromptPresentation, PreferencesPresentation, ConsentSnapshot, ConsentState, KernelActiveUI, KernelBranding, KernelIABState, KernelModel, KernelOverrides, KernelTranslations, KernelUser, LocationResponse, PolicyScopeMode } from '@c15t/core';
|
|
21
|
+
/**
|
|
22
|
+
* Full snapshot accessor. Escape hatch for consumers that genuinely need
|
|
23
|
+
* multiple slices. Prefer narrow hooks for re-render isolation.
|
|
24
|
+
*/
|
|
25
|
+
export declare const useSnapshot: () => ConsentSnapshot;
|
|
26
|
+
/**
|
|
27
|
+
* Effective permission for one category. This can be true under an opt-out
|
|
28
|
+
* policy without an explicit grant. Re-renders only when that permission changes.
|
|
29
|
+
*/
|
|
30
|
+
export declare const useConsent: (category: AllConsentNames) => boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Effective permissions for all categories. Use `useExplicitChoice` for recorded
|
|
33
|
+
* choices. Re-renders when permissions change.
|
|
34
|
+
*/
|
|
35
|
+
export declare const useConsents: () => Readonly<ConsentState>;
|
|
36
|
+
/**
|
|
37
|
+
* Current overrides (country, region, language, GPC).
|
|
38
|
+
*/
|
|
39
|
+
export declare const useOverrides: () => Readonly<KernelOverrides>;
|
|
40
|
+
/**
|
|
41
|
+
* Identified user or null.
|
|
42
|
+
*/
|
|
43
|
+
export declare const useUser: () => Readonly<KernelUser> | null;
|
|
44
|
+
/** Geographic context reported by the backend. */
|
|
45
|
+
export declare const useLocation: () => Readonly<LocationResponse> | null;
|
|
46
|
+
/** Active translation bundle. */
|
|
47
|
+
export declare const useTranslations: () => Readonly<KernelTranslations> | null;
|
|
48
|
+
/** Active branding identifier. */
|
|
49
|
+
export declare const useBranding: () => KernelBranding | null;
|
|
50
|
+
/**
|
|
51
|
+
* Whether the kernel holds a resolved policy rule.
|
|
52
|
+
*
|
|
53
|
+
* `false` while resolution is unconfigured, failed, or matched nothing, and
|
|
54
|
+
* while a pending init has not answered yet. Without a policy there is
|
|
55
|
+
* nothing to consent to, so every prebuilt consent surface renders nothing;
|
|
56
|
+
* headless hosts should do the same.
|
|
57
|
+
*/
|
|
58
|
+
export declare const useHasConsentPolicy: () => boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Whether any prebuilt consent surface has something to show: a policy rule
|
|
61
|
+
* is resolved and it either owes a first-layer prompt or keeps a right
|
|
62
|
+
* reachable. A `none` rule without rights owes nothing, so every surface
|
|
63
|
+
* renders nothing; give it `rights: ['preferences']` to keep a settings
|
|
64
|
+
* route. Every other model always carries rights, so for them this equals
|
|
65
|
+
* {@link useHasConsentPolicy}.
|
|
66
|
+
*/
|
|
67
|
+
export declare const useHasConsentUI: () => boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Derived consent model (opt-in / opt-out / iab), or `null` while no policy
|
|
70
|
+
* rule is resolved. The kernel keeps a safe fallback rule internally; this
|
|
71
|
+
* hook hides it so hosts can key "no consent UI" on `null`.
|
|
72
|
+
*/
|
|
73
|
+
export declare const useModel: () => KernelModel | null;
|
|
74
|
+
/** Which UI surface to render (none / banner / dialog). */
|
|
75
|
+
export declare const useActiveUI: () => KernelActiveUI;
|
|
76
|
+
/** Category allowlist from `policy.consent.categories`. */
|
|
77
|
+
export declare const usePolicyCategories: () => readonly AllConsentNames[];
|
|
78
|
+
/** `strict` or `permissive` — from `policy.consent.scopeMode`. */
|
|
79
|
+
export declare const usePolicyScopeMode: () => PolicyScopeMode;
|
|
80
|
+
/** Full IAB state slice (null when IAB is not enabled). */
|
|
81
|
+
export declare const useIABSnapshot: () => Readonly<KernelIABState> | null;
|
|
82
|
+
/** Is IAB active? */
|
|
83
|
+
export declare const useIABEnabled: () => boolean;
|
|
84
|
+
/** Consent for a specific IAB vendor. Accepts numeric or string IDs; IAB
|
|
85
|
+
* vendors are numeric but the kernel stores them as strings for
|
|
86
|
+
* uniformity with custom vendors. */
|
|
87
|
+
export declare const useVendorConsent: (vendorId: string | number) => boolean;
|
|
88
|
+
/** Consent for a specific IAB purpose (1–11). */
|
|
89
|
+
export declare const usePurposeConsent: (purposeId: number) => boolean;
|
|
90
|
+
/** Opt-in for a special feature (1 = geolocation, 2 = device ID). */
|
|
91
|
+
export declare const useSpecialFeatureOptIn: (featureId: number) => boolean;
|
|
92
|
+
/** Latest TCF string. `null` until the IAB module encodes one. */
|
|
93
|
+
export declare const useTCString: () => string | null;
|
|
94
|
+
/**
|
|
95
|
+
* Sync mutation: apply overrides (country, region, language, GPC).
|
|
96
|
+
*/
|
|
97
|
+
export declare const useSetOverrides: () => (input: KernelOverrides) => void;
|
|
98
|
+
/**
|
|
99
|
+
* Sync mutation: switch active language.
|
|
100
|
+
*/
|
|
101
|
+
export declare const useSetLanguage: () => (code: string) => void;
|
|
102
|
+
/**
|
|
103
|
+
* Sync mutation: set the active UI surface (banner/dialog/none).
|
|
104
|
+
*/
|
|
105
|
+
export declare const useSetActiveUI: () => (ui: KernelActiveUI) => void;
|
|
106
|
+
/**
|
|
107
|
+
* Async command: persist current or given consents. Returns the kernel's
|
|
108
|
+
* own save() method so identity is stable across renders.
|
|
109
|
+
*/
|
|
110
|
+
export declare const useSaveConsents: () => ConsentKernel['commands']['save'];
|
|
111
|
+
/**
|
|
112
|
+
* Subscribe to consent changes. The callback receives the full consent record
|
|
113
|
+
* whenever the kernel emits a snapshot.
|
|
114
|
+
*/
|
|
115
|
+
export declare const useSubscribeToConsentChanges: () => (listener: (state: ConsentState) => void) => () => void;
|
|
116
|
+
/**
|
|
117
|
+
* Async command: identify a user.
|
|
118
|
+
*/
|
|
119
|
+
export declare const useIdentify: () => ConsentKernel['commands']['identify'];
|
|
120
|
+
/**
|
|
121
|
+
* Async command: run the init transport (currently a no-op in the kernel;
|
|
122
|
+
* boot modules wire in SSR hydration, prefetch, banner fetch).
|
|
123
|
+
*/
|
|
124
|
+
export declare const useInit: () => ConsentKernel['commands']['init'];
|
|
125
|
+
/** Read explicitChoice from the kernel without a competing projection. */
|
|
126
|
+
export declare const useExplicitChoice: () => ConsentSnapshot['explicitChoice'];
|
|
127
|
+
/** Read effectivePermissions from the kernel without a competing projection. */
|
|
128
|
+
export declare const useEffectivePermissions: () => ConsentSnapshot['effectivePermissions'];
|
|
129
|
+
/** Read promptRequirement from the kernel without a competing projection. */
|
|
130
|
+
export declare const usePromptRequirement: () => ConsentSnapshot['promptRequirement'];
|
|
131
|
+
/** Read noticeDismissal from the kernel without a competing projection. */
|
|
132
|
+
export declare const useNoticeDismissal: () => ConsentSnapshot['noticeDismissal'];
|
|
133
|
+
/** Read privacySignals from the kernel without a competing projection. */
|
|
134
|
+
export declare const usePrivacySignals: () => ConsentSnapshot['privacySignals'];
|
|
135
|
+
/** Read optOutDirectives from the kernel without a competing projection. */
|
|
136
|
+
export declare const useOptOutDirectives: () => ConsentSnapshot['optOutDirectives'];
|
|
137
|
+
/** Read resolution from the kernel without a competing projection. */
|
|
138
|
+
export declare const usePolicyResolution: () => ConsentSnapshot['resolution'];
|
|
139
|
+
/** Read policyRule from the kernel without a competing projection. */
|
|
140
|
+
export declare const usePolicyRule: () => ConsentSnapshot['policyRule'];
|
|
141
|
+
/** Read restrictions from the kernel without a competing projection. */
|
|
142
|
+
export declare const useRestrictions: () => ConsentSnapshot['restrictions'];
|
|
143
|
+
/** Dismiss the current local notice without recording a category choice. */
|
|
144
|
+
export declare const useDismissNotice: () => ConsentKernel['commands']['dismissNotice'];
|
|
145
|
+
/** Host first-layer presentation. */
|
|
146
|
+
export declare const usePromptPresentation: () => PromptPresentation;
|
|
147
|
+
/** Host persistent preferences presentation. */
|
|
148
|
+
export declare const usePreferencesPresentation: () => PreferencesPresentation;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { GlobalVendorList, KernelIABState, NonIABVendor } from '@c15t/core';
|
|
2
|
+
import type { CreateIABOptions, IABHandle } from '@c15t/iab';
|
|
3
|
+
import type { ReactNode } from 'react';
|
|
4
|
+
export interface ReactIABState extends KernelIABState {
|
|
5
|
+
config: {
|
|
6
|
+
enabled: boolean;
|
|
7
|
+
cmpId: number | null;
|
|
8
|
+
};
|
|
9
|
+
isLoadingGVL: boolean;
|
|
10
|
+
nonIABVendors: NonIABVendor[];
|
|
11
|
+
preferenceCenterTab: 'purposes' | 'vendors';
|
|
12
|
+
setPreferenceCenterTab: (tab: 'purposes' | 'vendors') => void;
|
|
13
|
+
setVendorConsent: (vendorId: string | number, value: boolean) => void;
|
|
14
|
+
setVendorLegitimateInterest: (vendorId: string | number, value: boolean) => void;
|
|
15
|
+
setPurposeConsent: (purposeId: number, value: boolean) => void;
|
|
16
|
+
setPurposeLegitimateInterest: (purposeId: number, value: boolean) => void;
|
|
17
|
+
setSpecialFeatureOptIn: (featureId: number, value: boolean) => void;
|
|
18
|
+
acceptAll: () => void;
|
|
19
|
+
rejectAll: () => void;
|
|
20
|
+
save: () => Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
export interface IABProviderProps extends Omit<CreateIABOptions, 'kernel' | 'gvl'> {
|
|
23
|
+
children: ReactNode;
|
|
24
|
+
gvl?: GlobalVendorList | null;
|
|
25
|
+
}
|
|
26
|
+
export declare const IABProvider: ({ children, ...options }: IABProviderProps) => import("react").JSX.Element;
|
|
27
|
+
export declare const useIAB: () => ReactIABState | null;
|
|
28
|
+
export type { CreateIABOptions, IABHandle };
|
package/dist-types/iab.d.ts
CHANGED
|
@@ -8,17 +8,23 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
10
10
|
* ```tsx
|
|
11
|
-
* import {
|
|
12
|
-
* import { IABConsentBanner, IABConsentDialog } from '@c15t/react/iab';
|
|
11
|
+
* import { ConsentProvider, hosted } from '@c15t/react';
|
|
12
|
+
* import { IABProvider, IABConsentBanner, IABConsentDialog } from '@c15t/react/iab';
|
|
13
13
|
*
|
|
14
|
-
* <
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
14
|
+
* <ConsentProvider
|
|
15
|
+
* options={{ mode: hosted({ url: '/api/c15t' }) }}
|
|
16
|
+
* >
|
|
17
|
+
* <IABProvider cmpId={28}>
|
|
18
|
+
* <IABConsentBanner />
|
|
19
|
+
* <IABConsentDialog />
|
|
20
|
+
* </IABProvider>
|
|
21
|
+
* </ConsentProvider>
|
|
18
22
|
* ```
|
|
19
23
|
*
|
|
20
24
|
* @packageDocumentation
|
|
21
25
|
*/
|
|
22
|
-
export { IABConsentBanner, type IABConsentBannerProps, } from './components/iab-
|
|
23
|
-
export { IABConsentDialog, type IABConsentDialogProps, } from './components/iab-
|
|
26
|
+
export { IABConsentBanner, type IABConsentBannerProps, } from './components/iab-prompt';
|
|
27
|
+
export { IABConsentDialog, type IABConsentDialogProps, } from './components/iab-panel';
|
|
24
28
|
export { type HeadlessIABBannerAction, type HeadlessIABBannerState, type HeadlessIABDialogAction, type HeadlessIABDialogState, type HeadlessIABPreferenceTab, type UseHeadlessIABConsentUIResult, useHeadlessIABConsentUI, } from './hooks/use-headless-iab-consent-ui';
|
|
29
|
+
export { IABProvider } from './iab-context';
|
|
30
|
+
export type { IABProviderProps } from './iab-context';
|
package/dist-types/index.d.ts
CHANGED
|
@@ -1,22 +1,61 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
1
|
+
/**
|
|
2
|
+
* `@c15t/react` — React adapter for the c15t consent kernel.
|
|
3
|
+
*
|
|
4
|
+
* Pattern:
|
|
5
|
+
* import {
|
|
6
|
+
* ConsentProvider,
|
|
7
|
+
* hosted,
|
|
8
|
+
* useConsent,
|
|
9
|
+
* useSaveConsents,
|
|
10
|
+
* } from '@c15t/react';
|
|
11
|
+
*
|
|
12
|
+
* function App({ children }) {
|
|
13
|
+
* return (
|
|
14
|
+
* <ConsentProvider options={{ mode: hosted({ url: '/api/c15t' }) }}>
|
|
15
|
+
* {children}
|
|
16
|
+
* </ConsentProvider>
|
|
17
|
+
* );
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* function MarketingScripts() {
|
|
21
|
+
* const allowed = useConsent('marketing');
|
|
22
|
+
* return allowed ? <GoogleTagManager /> : null;
|
|
23
|
+
* }
|
|
24
|
+
*
|
|
25
|
+
* Design notes:
|
|
26
|
+
* - Selector hooks subscribe via `useSyncExternalStore` so re-renders
|
|
27
|
+
* stay scoped to the exact slice each hook reads.
|
|
28
|
+
* - Action hooks return stable kernel methods — no `useCallback` dance
|
|
29
|
+
* required at the consumer site.
|
|
30
|
+
* - No provider-level useEffect syncing state into React state. No
|
|
31
|
+
* cache patching. No method rewriting. Provider boot work is explicit
|
|
32
|
+
* module wiring around a single per-mount kernel.
|
|
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 { createConsentKernel, custom, hosted } from '@c15t/core';
|
|
36
|
+
export type { OfflineModeOptions } from './transports/offline';
|
|
37
|
+
export { offline } from './transports/offline';
|
|
38
|
+
export { ConsentDialog, ConsentWidget } from './aggregate-components';
|
|
39
|
+
export type { ConsentBannerButton, ConsentBannerLayout, ConsentBannerProps, ConsentBannerRight, ConsentBannerRightLinkProps, ConsentBannerRightsProps, ConsentBannerSurface, } from './components/prompt';
|
|
40
|
+
export { ConsentBanner, type ConsentBannerCompoundComponent, useConsentBannerSurface, } from './components/prompt';
|
|
41
|
+
export type { ConsentDialogCompoundComponent, ConsentDialogProps, } from './components/panel';
|
|
42
|
+
export type { ConsentDialogLinkProps } from './components/panel-link';
|
|
43
|
+
export { ConsentDialogLink } from './components/panel-link';
|
|
44
|
+
export type { ConsentDialogTriggerProps, ConsentDialogTriggerToolbarAction, ConsentDialogTriggerToolbarPreferences, ConsentDialogTriggerToolbarProps, TriggerOrientation, } from './components/panel-trigger';
|
|
45
|
+
export { ConsentDialogTrigger, ConsentDialogTriggerToolbar, } from './components/panel-trigger';
|
|
46
|
+
export type { ConsentWidgetCompoundComponent, ConsentWidgetProps, } from './components/preferences';
|
|
47
|
+
export type { FrameProps } from './components/frame';
|
|
48
|
+
export { Frame } from './components/frame';
|
|
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';
|
|
61
|
+
export type { ConsentPresentation, PromptPresentation, PreferencesPresentation, PresentationAction, PromptPosition, PromptVariant, ResolvedConsentPresentation, } from '@c15t/core';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { IframeBlockerHandle } from '@c15t/core/modules/iframe-blocker';
|
|
2
|
+
export interface UseIframeBlockerOptions {
|
|
3
|
+
disableAutomaticBlocking?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare const useIframeBlocker: (options?: UseIframeBlockerOptions) => IframeBlockerHandle;
|
|
6
|
+
export type { IframeBlockerHandle };
|