@c15t/react 3.0.0-alpha.0 → 3.0.0-alpha.10
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 +96 -69
- 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/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/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 -151
- package/dist/iab-context.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 +35 -159
- 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 +45 -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/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 +36 -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.d.ts +7 -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 +174 -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 +96 -69
- 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 +138 -0
- package/docs/concepts/consent-categories.md +84 -0
- package/docs/concepts/consent-state.md +421 -0
- package/docs/concepts/data-fetching.md +270 -0
- package/docs/concepts/how-consent-works.md +123 -0
- package/docs/concepts/modes.md +278 -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 +140 -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 +143 -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 +259 -0
- package/docs/frameworks/react/network-blocker.md +140 -0
- package/docs/frameworks/react/quickstart.md +220 -102
- package/docs/frameworks/react/rendering.md +263 -0
- package/docs/frameworks/react/scripts.md +114 -0
- package/docs/frameworks/react/translations.md +155 -0
- package/docs/frameworks/react/troubleshooting.md +188 -61
- package/docs/frameworks/react/upgrade-v3.md +651 -0
- package/docs/frameworks/react/vendor-consent.md +188 -0
- package/docs/guides/banner-experiments.md +672 -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 +152 -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/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 -62
- 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 -55
- package/docs/frameworks/react/styling/overview.md +0 -207
- 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/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
package/dist/provider.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
2
|
+
let e,t;import{jsx as o,jsxs as r}from"react/jsx-runtime";import{applyExperimentAssignment as n,applyExperimentTheme as i,hostExperiment as s,watchRevocationReload as c}from"@c15t/core";import{createPersistence as l,readStoredRecords as a}from"@c15t/core/modules/persistence";import{createWindowDebug as d}from"@c15t/core/modules/window-debug";import{claimEarlyJourney as u,createConsentProviderRuntime as m,earlyInitModes as p,lazyRuntimeModule as h,lazyStreamPrefetch as f,readHostedMode as g,streamPrefetchWith as v}from"@c15t/core/runtime/provider";import{applyThemeSlots as y}from"@c15t/ui/utils";import{useCallback as k,useEffect as S,useLayoutEffect as b,useMemo as w,useReducer as C,useState as x,useSyncExternalStore as j}from"react";import{KernelContext as L,ProviderServicesContext as N,StreamedPrefetchContext as O}from"./context.js";import{ExternalIABProvider as P}from"./external-iab-context.js";import{useColorScheme as D}from"./hooks/use-color-scheme.js";import{useIsHydrated as R}from"./hooks/use-is-hydrated.js";import{createIframeBlockerOnDemand as _}from"./module-hooks/iframe-blocker.js";import{UNCOMMITTED_HOLD_MS as T}from"./module-hooks/network-hold.js";import{V3ThemeProvider as E}from"./theme-provider.js";let q=(e,t)=>{let o,r=!1;return(async()=>{try{let{connectConsentSource:n}=await import("@c15t/core/runtime/controls");r||(o=n(e,t))}catch{}})(),()=>{r=!0,o?.()}},B=async()=>(await import("@c15t/core/modules/script-loader")).createScriptLoader,A=function(e){let t=e.__resolveStreamedInit;return{connectConsentSource:q,createClearOnRevocation:h(async()=>(await import("@c15t/core/modules/clear-on-revocation")).createClearOnRevocation),createIframeBlocker:_,createNetworkBlocker:h(async()=>(await import("@c15t/core/modules/network-blocker")).createNetworkBlocker),createPersistence:l,createScriptLoader:h(B),createWindowDebug:d,preloadScriptLoader:e.__preloadScriptLoader?.(B),streamPrefetch:t?v(t):f,watchRevocationReload:c}},I=new WeakMap,J=new Set,K=(e,t)=>{if("hosted"in e){let o,r;return"hosted"in t&&(o=e.hosted,r=t.hosted,o.fetch===r.fetch&&o.initialData===r.initialData&&JSON.stringify(o)===JSON.stringify(r))}return"mode"in t&&e.fetch===t.fetch&&(e.mode===t.mode||e.mode.sameAs(t.mode))},F=function(o){if("function"!=typeof o)return o;let r=I.get(o);return r||(r=Object.assign(r=>e=(t=()=>o(Object.create(r,{iabEnabled:{value:void 0}})))(),{kind:o.kind}),I.set(o,r)),r},M=function(e){return{...e,mode:F(e.mode),pkg:e.__debugPkg??"@c15t/react"}},V=function(e){let{persistence:t}=e;if(!1===t||e.consentSource)return!1;let o="object"==typeof t?t:{};if(o.skipHydration)return!1;let r=o.now?o.now():Date.now(),{records:n}=a(o.storageConfig??e.storageConfig,r);return!!(n.choice||n.noticeDismissal)},W=function(e){let{journey:t}=e;return JSON.stringify({journey:t?[t.id,t.scope,t.storedChoice]:null,overrides:e.overrides,user:e.user})},z=function(e,t,o){if(!(o&&t.policyPending)||e.prefetch||e.experiment)return;let r=g(e.mode);if(r)return{source:{hosted:{...r,fetch:r.fetch??globalThis.fetch}},storedChoice:V(e)};let n=p.get(e.mode);if(!(!n||V(e))&&n.requestsInit(t.overrides))return{source:{fetch:globalThis.fetch,mode:n},storedChoice:!1}},H=new Set,G=0,Q=function(o,r){let n,i,s,{networkBlocker:c}=o,l=m(M(o),A(o)),a=o,d=!1,p=!1,h=0,f=e;G+=1;let g={expire(){J.delete(s),H.delete(g),clearTimeout(n),d=!0,l.dispose()},holdKey:!1!==o.enabled&&c&&!1!==c.enabled?JSON.stringify(c.rules):null,sequence:G};if("u"<typeof window)p=!0;else{H.add(g),n=setTimeout(g.expire,T);let e=l.kernel.getSnapshot(),c=z(o,e,r);if(c){let{source:r,storedChoice:n}=c,l=u({option:o.journey,storedChoice:n}),a=l?{journey:l,overrides:e.overrides,user:e.user}:{overrides:e.overrides,user:e.user},d=W(a);for(let e of J)e.key===d&&K(e.source,r)&&(i=e);if(!i){let e=t(),o=e.init,n=o(a);n.catch(()=>void 0);let c=!1;e.init=e=>{let t=!c&&W(e)===d;return c=!0,t?n:o(e)},i=s={key:d,source:r,transport:e},J.add(s)}}}let v=function(){if(d)return!1;if(p)return!0;if(p=!0,J.delete(i)&&Object.assign(f,i?.transport),H.delete(g),clearTimeout(n),null!==g.holdKey)for(let e of H)e.sequence<g.sequence&&e.holdKey===g.holdKey&&e.expire();return!0};return{apply(e){e!==a&&(a=e,l.update(M(e)).catch(()=>void 0))},mount(){if(!v())return null;let e=h+=1;return l.start(),()=>{queueMicrotask(()=>{h===e&&l.dispose()})}},runtime:l}},U=function(){let e=null;return{get:(t,o)=>e??=Q(t,o),reset(){e=null}}},X=e=>e+1,Y=()=>()=>void 0,Z=function(e){let[t]=x(U),[,o]=C(X,0),r=R(),n=k(()=>{t.reset(),o()},[t]);return e?{entry:t.get(e,r),rebuild:n}:void 0},$="u"<typeof document?S:b,ee=({entry:e,options:t,rebuild:o})=>($(()=>e.apply(t),[e,t]),S(()=>{let t=e.mount();return t||void o()},[e,o]),null),et=e=>{let{children:t}=e,c=e.options??{},[l]=x(()=>e.runtime),a=Z(l?void 0:c),d=a?.entry.runtime,u=l?e.runtime??l:void 0,m=d??u,p=j(d?d.subscribe:Y,()=>m.kernel,()=>m.kernel),[h]=x(()=>{var e;return l?l.experiment??s(c.experiment,(e=c.prefetch,"function"==typeof e?.then)?void 0:c.prefetch):void 0}),f=d?d.experiment:h,g=u?c.consentCategories:void 0;S(()=>{u&&void 0!==g&&u.setConsentCategories(g)},[u,g]);let{presentation:v}=c,k=w(()=>({clearRecords:()=>m.clearRecords(),getConsentCategories:()=>m.consentCategories,getPresentation:()=>n(v,f,p.getSnapshot().experiment),isStarted:()=>m.started,setLanguage:e=>m.setLanguage(e)}),[f,p,v,m]),b=!!u&&void 0!==c.callbacks;S(()=>{"production"!==process.env.NODE_ENV&&b&&console.warn("c15t ConsentProvider: `options.callbacks` is ignored when you pass `runtime`. Pass them to createConsentRuntime({ callbacks }) instead.")},[b]);let C=j(e=>p.subscribe(e),()=>p.getSnapshot().experiment,()=>p.getServerSnapshot().experiment),R=w(()=>i(c.theme,f,C),[c.theme,f,C]);S(()=>{"production"===process.env.NODE_ENV||!R||!["colors","dark","motion","radius","shadows","spacing","typography"].some(e=>e in R)||document.getElementById("c15t-theme")||console.warn("c15t: `theme` tokens are no longer turned into CSS in the browser. Render <ConsentTheme theme={theme} /> on the server, or put the CSS from generateThemeCSS() in your stylesheet. See https://c15t.com/docs/frameworks/react/customize")},[R]);let _=w(()=>({colorScheme:c.colorScheme,disableAnimation:c.disableAnimation,noStyle:c.noStyle,scrollLock:c.scrollLock,theme:R,trapFocus:c.trapFocus}),[R,c.noStyle,c.disableAnimation,c.scrollLock,c.trapFocus,c.colorScheme]),T=w(()=>({components:y(R?.slots,c.components,"className"),experiment:f,legalLinks:c.legalLinks,nonce:c.nonce,preloadDialog:c.preloadDialog,presentation:c.presentation,styles:c.styles,theme:c.theme}),[R?.slots,c.components,f,c.legalLinks,c.nonce,c.preloadDialog,c.presentation,c.styles,c.theme]);return D(c.colorScheme),o(L.Provider,{value:p,children:o(N.Provider,{value:k,children:r(E,{themeConfig:_,uiConfig:T,children:[a?o(ee,{entry:a.entry,options:c,rebuild:a.rebuild}):null,u?o(P,{runtime:u,children:t}):o(O.Provider,{value:!1===c.streamBanner?void 0:d?.streamed,children:t})]})})})};export{et as ConsentProvider};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C15T_VERSION_HEADER as e}from"@c15t/core";import{version as
|
|
1
|
+
import{C15T_VERSION_HEADER as e}from"@c15t/core";import{version as r}from"../version.js";import{CLIENT_FORWARDING_HEADERS as t,extractRelevantHeaders as o}from"./headers.js";import{normalizeBackendURL as a}from"./normalize-url.js";let c=function(){return"u">typeof performance&&"function"==typeof performance.now?performance.now():Date.now()},n=function(e){let r=null,t=!1;for(let o of["x-vercel-cache","cf-cache-status","x-cache","cache-status"]){let a=e.get(o);if(a){r=`${o}=${a}`,t=/\b(?:hit|stale|revalidated|updating)\b/iu.test(a);break}}let o=e.get("age"),a=o?Number.parseInt(o,10):NaN,c=Number.isFinite(a)&&a>0,n=c?`age=${a}`:null;return{detail:r&&n?`${r}, ${n}`:r??n,isHit:t||c}},s=function(e,r){if(!r)return;let t=Object.keys(e);console.log(`[c15t/server] Detected headers: [${t.join(", ")}]`);let o=e["cf-ipcountry"],a=e["x-vercel-ip-country"];o?console.log(`[c15t/server] Country from cf-ipcountry: ${o}`):a&&console.log(`[c15t/server] Country from x-vercel-ip-country: ${a}`)},l=async function(e,r,t,o){let a=c();try{let s=await fetch(`${e}/init`,{cache:"no-store",headers:r,method:"GET"}),l=Math.max(0,Math.round(c()-a)),i=n(s.headers),u={cache:i,requestContext:t,requestDurationMs:l};if(s.ok){let e={init:await s.json(),metadata:u};return o&&(console.log(`[c15t/server] SSR fetch succeeded in ${e.metadata?.requestDurationMs??0}ms`),e.metadata?.cache?.detail&&console.log(`[c15t/server] SSR cache status: ${e.metadata.cache.detail}`)),e}return o&&(console.log(`[c15t/server] SSR fetch failed with status: ${s.status}`),i.detail&&console.log(`[c15t/server] SSR cache status: ${i.detail}`)),{metadata:u}}catch(e){if(o){let r=e instanceof Error?e.message:"Unknown error";console.log(`[c15t/server] SSR fetch error: ${r}`)}return{}}},i=async function(c){var n;let{backendURL:i,headers:u,overrides:d,debug:g}=c;g&&console.log("[c15t/server] SSR fetch starting...");let f=o(u,{trustForwardedHeaders:c.trustForwardedHeaders});if(s(f,g),!(Object.keys(f).length>0||t.some(e=>u.has(e)))){g&&console.log("[c15t/server] No relevant headers found, skipping SSR fetch");return}let h=a(i,u,{trustForwardedHeaders:c.trustForwardedHeaders});if(!h){g&&console.log("[c15t/server] Failed to normalize URL, skipping SSR fetch");return}g&&console.log(`[c15t/server] Fetching from: ${h}/init`);let v={[e]:r,...f};d?.country&&(v["x-c15t-country"]=d.country,g&&console.log(`[c15t/server] Country override: ${d.country}`)),d?.region&&(v["x-c15t-region"]=d.region,g&&console.log(`[c15t/server] Region override: ${d.region}`)),d?.language&&(v["accept-language"]=d.language,g&&console.log(`[c15t/server] Language override: ${d.language}`));let m=await l(h,v,{backendURL:(n={backendURL:h,headers:v,overrides:d}).backendURL,country:n.overrides?.country??n.headers["x-c15t-country"]??null,gpc:"1"===n.headers["sec-gpc"],language:n.overrides?.language??n.headers["accept-language"]??null,region:n.overrides?.region??n.headers["x-c15t-region"]??null},g),{init:p}=m;if(!p){g&&console.log("[c15t/server] SSR fetch returned no data");return}return{gvl:p.gvl,init:p,metadata:m.metadata}};export{i as fetchSSRData};
|
package/dist/server/headers.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{CONSENT_REQUEST_HEADER_NAMES as e,extractConsentRequestInputs as r}from"@c15t/schema/types";let t=[...e,"x-c15t-version","user-agent","x-forwarded-
|
|
1
|
+
import{CONSENT_REQUEST_HEADER_NAMES as e,extractConsentRequestInputs as r}from"@c15t/schema/types";let t=[...e,"x-c15t-version","user-agent","x-forwarded-for","purpose","sec-purpose","next-router-prefetch","x-middleware-prefetch"],o=["forwarded","x-forwarded-host","x-forwarded-proto"],a=function(e,a={}){let d={};for(let r of a.trustForwardedHeaders?[...t,...o]:t){let t=e.get(r);t&&(d[r]=t)}let c=r(e);return c.country&&(d["x-c15t-country"]=c.country),c.region&&(d["x-c15t-region"]=c.region),d};export{o as CLIENT_FORWARDING_HEADERS,a as extractRelevantHeaders};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{resolveRequestBackendURL as r}from"@c15t/core/server";let e=/^https?:\/\//u,t=function(r){return"/"===r?r:r.endsWith("/")?r.slice(0,-1):r},a=function(r){if(e.test(r))return String(new URL(r)),{isAbsolute:!0,normalizedURL:t(r)};if(r.startsWith("/"))return{isAbsolute:!1,normalizedURL:t(r)};throw Error(`Invalid URL format: ${r}. URL must be absolute (https://...) or relative starting with (/)`)},n=function(e,t,a={}){return r(e,{headers:t,trustForwardedHeaders:a.trustForwardedHeaders})};export{n as normalizeBackendURL,a as validateBackendURL};
|