@c15t/react 3.0.0-alpha.1 → 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 -70
- package/README.md +21 -17
- package/SKILL.md +34 -0
- package/dist/aggregate-components.js +1 -1
- package/dist/chunk-warming.js +1 -1
- package/dist/component-hooks/use-headless-consent-ui.js +1 -1
- package/dist/component-hooks/use-headless-iab-consent-ui.js +1 -1
- package/dist/component-hooks/use-panel-trigger.js +1 -1
- package/dist/components/consent-gate/atoms.js +1 -0
- package/dist/components/consent-gate/consent-gate.js +2 -0
- package/dist/components/consent-gate/frame.js +2 -0
- package/dist/components/consent-gate/index.js +2 -0
- package/dist/components/consent-preferences-link/consent-preferences-link.js +1 -1
- package/dist/components/iab-panel/atoms/card.js +1 -1
- package/dist/components/iab-panel/atoms/feature-item.js +2 -0
- package/dist/components/iab-panel/atoms/header.js +1 -1
- package/dist/components/iab-panel/atoms/purpose-item.js +1 -1
- package/dist/components/iab-panel/atoms/root.js +1 -1
- package/dist/components/iab-panel/atoms/stack-item.js +1 -1
- package/dist/components/iab-panel/atoms/vendor-list.js +1 -1
- package/dist/components/iab-panel/hooks/use-gvl-data.js +1 -1
- package/dist/components/iab-panel/iab-panel.js +1 -1
- package/dist/components/iab-panel/index.js +1 -1
- package/dist/components/iab-prompt/atoms/overlay.js +1 -1
- package/dist/components/iab-prompt/atoms/root.js +1 -1
- package/dist/components/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 -45
- 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 +33 -51
- package/dist/transports/hosted.js +1 -0
- package/dist/transports/manifest.js +1 -0
- package/dist/transports/offline.js +1 -1
- package/dist/utils/deferred-module.js +2 -0
- package/dist/utils/merge-slot-props.js +1 -1
- package/dist/utils/theme-utils.js +1 -1
- package/dist/version.js +1 -1
- package/dist-types/aggregate-components.d.ts +2 -2
- package/dist-types/chunk-warming.d.ts +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 +169 -28
- package/dist-types/server/fetch-ssr-data.d.ts +1 -1
- package/dist-types/server/headers.d.ts +14 -4
- package/dist-types/server/index.d.ts +5 -5
- package/dist-types/server/normalize-url.d.ts +14 -7
- package/dist-types/server/types.d.ts +12 -1
- package/dist-types/theme-provider.d.ts +2 -2
- package/dist-types/transports/hosted.d.ts +36 -0
- package/dist-types/transports/manifest.d.ts +48 -0
- package/dist-types/transports/offline.d.ts +7 -16
- package/dist-types/types/index.d.ts +3 -3
- package/dist-types/types/manager.d.ts +1 -1
- package/dist-types/types/theme/index.d.ts +1 -1
- package/dist-types/ui-config-context.d.ts +14 -2
- package/dist-types/utils/deferred-module.d.ts +13 -0
- package/dist-types/utils/index.d.ts +4 -4
- package/dist-types/utils/merge-slot-props.d.ts +17 -3
- package/dist-types/utils/merge-styles.d.ts +1 -1
- package/dist-types/utils/theme-utils.d.ts +18 -3
- package/dist-types/version.d.ts +1 -1
- package/docs/README.md +96 -70
- package/docs/assets/v3/bottom-bar.png +0 -0
- package/docs/assets/v3/brand-card.png +0 -0
- package/docs/assets/v3/brand-preferences.png +0 -0
- package/docs/assets/v3/choice-wall.png +0 -0
- package/docs/assets/v3/headless-bar-html.png +0 -0
- package/docs/assets/v3/headless-bar-mobile.png +0 -0
- package/docs/assets/v3/headless-bar.png +0 -0
- package/docs/assets/v3/slim-bar.png +0 -0
- package/docs/concepts/choose-your-setup.md +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 -71
- package/docs/frameworks/react/concepts/consent-categories.md +0 -33
- package/docs/frameworks/react/hooks/use-consent-manager/overview.md +0 -58
- package/docs/frameworks/react/iab/overview.md +0 -53
- package/docs/frameworks/react/script-loader.md +0 -63
- package/docs/frameworks/react/styling/overview.md +0 -217
- package/docs/guides/consent-state.md +0 -60
- package/docs/guides/data-fetching.md +0 -163
- package/docs/guides/deployment-modes.md +0 -63
- package/docs/integrations/clear-on-revocation.md +0 -167
- package/docs/upgrade-v3.md +0 -334
- package/readme.json +0 -48
- package/src/iab/styles.css +0 -11
- package/src/styles.css +0 -10
- /package/dist/components/{frame → consent-gate}/types.js +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
|
-
import type { CornerPosition, TriggerVisibility } from '../types';
|
|
3
|
-
import type { UseDraggableReturn } from '../use-draggable';
|
|
2
|
+
import type { CornerPosition, TriggerVisibility } from '../types.js';
|
|
3
|
+
import type { UseDraggableReturn } from '../use-draggable.js';
|
|
4
4
|
/**
|
|
5
5
|
* Context value for the ConsentDialogTrigger compound component.
|
|
6
6
|
*/
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { PolicyRight } from '@c15t/schema/types';
|
|
7
7
|
import type { ReactNode } from 'react';
|
|
8
|
-
import type { ClassNameStyle } from '../../../types/theme';
|
|
9
|
-
import type { ConsentDialogTriggerToolbarAction, ConsentDialogTriggerToolbarPreferences, TriggerOrientation, TriggerSize } from '../types';
|
|
8
|
+
import type { ClassNameStyle } from '../../../types/theme/index.js';
|
|
9
|
+
import type { ConsentDialogTriggerToolbarAction, ConsentDialogTriggerToolbarPreferences, TriggerOrientation, TriggerSize } from '../types.js';
|
|
10
10
|
/** Right the built-in action stands for; opt-out wins when the rule carries it. */
|
|
11
11
|
export type ToolbarPreferencesRight = Extract<PolicyRight, 'opt-out' | 'preferences'>;
|
|
12
12
|
export interface TriggerToolbarProps extends Omit<ClassNameStyle, 'baseClassName'> {
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { SVGProps } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Dialog-trigger icons, kept apart from the branding logos: the banner renders
|
|
4
|
+
* the logos on every page, while these only ship with the dialog trigger.
|
|
5
|
+
*/
|
|
6
|
+
interface IconProps {
|
|
7
|
+
title?: string;
|
|
8
|
+
titleId?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Fingerprint icon for privacy/consent contexts.
|
|
12
|
+
* A generic icon representing user identity and privacy.
|
|
13
|
+
*/
|
|
14
|
+
export declare const FingerprintIcon: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & IconProps) => import("react").JSX.Element;
|
|
15
|
+
/**
|
|
16
|
+
* Settings/gear icon for preference contexts.
|
|
17
|
+
* A generic icon representing configuration and settings.
|
|
18
|
+
*/
|
|
19
|
+
export declare const SettingsIcon: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & IconProps) => import("react").JSX.Element;
|
|
20
|
+
/**
|
|
21
|
+
* Code icon for the DevTools item a trigger shows while `<ConsentDevTools>`
|
|
22
|
+
* is mounted. Decorative; the item carries the accessible name.
|
|
23
|
+
*/
|
|
24
|
+
export declare const DevToolsIcon: (props: SVGProps<SVGSVGElement>) => import("react").JSX.Element;
|
|
25
|
+
export {};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @packageDocumentation
|
|
5
5
|
*/
|
|
6
|
-
export { ConsentDialogTrigger, type ConsentDialogTriggerCompound, TriggerButton, type TriggerButtonProps, TriggerIcon, type TriggerIconProps, TriggerRoot, type TriggerRootProps, TriggerText, type TriggerTextProps, useTriggerContext, } from './panel-trigger';
|
|
7
|
-
export { ConsentDialogTriggerToolbar } from './panel-trigger-toolbar';
|
|
8
|
-
export type { ConsentDialogTriggerProps, ConsentDialogTriggerToolbarAction, ConsentDialogTriggerToolbarPreferences, ConsentDialogTriggerToolbarProps, CornerPosition, TriggerIcon as TriggerIconType, TriggerOrientation, TriggerSize, TriggerVisibility, } from './types';
|
|
9
|
-
export { type UseDraggableOptions, type UseDraggableReturn, useDraggable, } from './use-draggable';
|
|
6
|
+
export { ConsentDialogTrigger, type ConsentDialogTriggerCompound, TriggerButton, type TriggerButtonProps, TriggerIcon, type TriggerIconProps, TriggerRoot, type TriggerRootProps, TriggerText, type TriggerTextProps, useTriggerContext, } from './panel-trigger.js';
|
|
7
|
+
export { ConsentDialogTriggerToolbar } from './panel-trigger-toolbar.js';
|
|
8
|
+
export type { ConsentDialogTriggerProps, ConsentDialogTriggerToolbarAction, ConsentDialogTriggerToolbarPreferences, ConsentDialogTriggerToolbarProps, CornerPosition, TriggerIcon as TriggerIconType, TriggerOrientation, TriggerSize, TriggerVisibility, } from './types.js';
|
|
9
|
+
export { type UseDraggableOptions, type UseDraggableReturn, useDraggable, } from './use-draggable.js';
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @packageDocumentation
|
|
6
6
|
*/
|
|
7
7
|
import type { ReactNode } from 'react';
|
|
8
|
-
import type { ConsentDialogTriggerToolbarProps } from './types';
|
|
8
|
+
import type { ConsentDialogTriggerToolbarProps } from './types.js';
|
|
9
9
|
export declare function ConsentDialogTriggerToolbar({ actions, preferences, orientation, defaultPosition, persistPosition, ariaLabel, showWhen, size, className, style, noStyle, onPositionChange, }: ConsentDialogTriggerToolbarProps): ReactNode;
|
|
10
10
|
export declare namespace ConsentDialogTriggerToolbar {
|
|
11
11
|
var displayName: string;
|
|
@@ -1,21 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ConsentDialogTrigger compound component.
|
|
3
|
-
*
|
|
4
|
-
* A draggable floating button that opens the consent dialog.
|
|
5
|
-
* Supports drag-to-corner positioning and configurable icons.
|
|
6
|
-
*
|
|
7
|
-
* @packageDocumentation
|
|
8
|
-
*/
|
|
9
1
|
import type { FC } from 'react';
|
|
10
|
-
import { TriggerButton } from './atoms/button';
|
|
11
|
-
import type { TriggerButtonProps } from './atoms/button';
|
|
12
|
-
import { TriggerIcon } from './atoms/icon';
|
|
13
|
-
import type { TriggerIconProps } from './atoms/icon';
|
|
14
|
-
import { TriggerRoot, useTriggerContext } from './atoms/root';
|
|
15
|
-
import type { TriggerRootProps } from './atoms/root';
|
|
16
|
-
import { TriggerText } from './atoms/text';
|
|
17
|
-
import type { TriggerTextProps } from './atoms/text';
|
|
18
|
-
import type { ConsentDialogTriggerProps } from './types';
|
|
2
|
+
import { TriggerButton } from './atoms/button.js';
|
|
3
|
+
import type { TriggerButtonProps } from './atoms/button.js';
|
|
4
|
+
import { TriggerIcon } from './atoms/icon.js';
|
|
5
|
+
import type { TriggerIconProps } from './atoms/icon.js';
|
|
6
|
+
import { TriggerRoot, useTriggerContext } from './atoms/root.js';
|
|
7
|
+
import type { TriggerRootProps } from './atoms/root.js';
|
|
8
|
+
import { TriggerText } from './atoms/text.js';
|
|
9
|
+
import type { TriggerTextProps } from './atoms/text.js';
|
|
10
|
+
import type { ConsentDialogTriggerProps } from './types.js';
|
|
19
11
|
/**
|
|
20
12
|
* Compound component interface for ConsentDialogTrigger.
|
|
21
13
|
*/
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { CornerPosition } from '@c15t/ui/utils/trigger-utils';
|
|
7
7
|
import type { ReactNode } from 'react';
|
|
8
|
-
import type { ClassNameStyle } from '../../types/theme';
|
|
8
|
+
import type { ClassNameStyle } from '../../types/theme/index.js';
|
|
9
9
|
/**
|
|
10
10
|
* Icon rendered by a consent dialog trigger control.
|
|
11
11
|
*
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
|
-
import type { BoxProps } from '../../shared/primitives/box';
|
|
3
|
-
import * as PreferenceItem from '../../shared/ui/preference-item';
|
|
4
|
-
import * as RadixSwitch from '../../shared/ui/switch';
|
|
2
|
+
import type { BoxProps } from '../../shared/primitives/box.js';
|
|
3
|
+
import * as PreferenceItem from '../../shared/ui/preference-item/index.js';
|
|
4
|
+
import * as RadixSwitch from '../../shared/ui/switch/index.js';
|
|
5
|
+
import { ConsentWidgetVendorList } from './vendor-list.js';
|
|
5
6
|
declare const ConsentWidgetAccordionTrigger: import("react").ForwardRefExoticComponent<BoxProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
6
7
|
declare const ConsentWidgetAccordionTriggerInner: import("react").ForwardRefExoticComponent<PreferenceItem.PreferenceItemTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
7
8
|
declare const ConsentWidgetAccordionContent: import("react").ForwardRefExoticComponent<PreferenceItem.PreferenceItemContentProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -25,4 +26,5 @@ declare const Accordion: typeof ConsentWidgetAccordion;
|
|
|
25
26
|
declare const Switch: import("react").ForwardRefExoticComponent<RadixSwitch.SwitchProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
26
27
|
declare const AccordionItems: typeof ConsentWidgetAccordionItems;
|
|
27
28
|
declare const AccordionItem: import("react").ForwardRefExoticComponent<Omit<PreferenceItem.PreferenceItemRootProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
28
|
-
|
|
29
|
+
declare const VendorList: typeof ConsentWidgetVendorList;
|
|
30
|
+
export { ConsentWidgetVendorList, VendorList, Accordion, AccordionArrow, AccordionContent, AccordionItem, AccordionItems, AccordionTrigger, AccordionTriggerInner, ConsentWidgetAccordion, ConsentWidgetAccordionArrow, ConsentWidgetAccordionContent, ConsentWidgetAccordionItem, ConsentWidgetAccordionItems, ConsentWidgetAccordionTrigger, ConsentWidgetAccordionTriggerInner, ConsentWidgetSwitch, Switch, };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { AllConsentNames } from '@c15t/core';
|
|
2
|
+
import type { BoxProps } from '../../shared/primitives/box.js';
|
|
3
|
+
export interface ConsentWidgetVendorListProps extends Omit<BoxProps, 'children' | 'slotKey'> {
|
|
4
|
+
/** Category whose vendors to list. */
|
|
5
|
+
category: AllConsentNames;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Vendor rows nested inside one category's accordion content, each a
|
|
9
|
+
* collapsed card of its own that opens for its description and privacy
|
|
10
|
+
* policy link. A long list stays one line per vendor.
|
|
11
|
+
*
|
|
12
|
+
* Renders nothing when the category has no presentable vendor or the model
|
|
13
|
+
* is `iab`. Each row's switch stages a per-vendor grant on the same draft
|
|
14
|
+
* the category switches use; nothing is recorded until Save. While the
|
|
15
|
+
* parent category is off in the draft, the vendor switches are disabled: a
|
|
16
|
+
* vendor toggle never grants a category on its own. A `disabled` vendor is
|
|
17
|
+
* listed without a switch.
|
|
18
|
+
*
|
|
19
|
+
* @param props - The category whose vendors to list, plus `Box` attributes.
|
|
20
|
+
* @returns The vendor list, or `null` when there is nothing to list.
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
export declare const ConsentWidgetVendorList: ({ category, className, noStyle, ...props }: ConsentWidgetVendorListProps) => import("react").JSX.Element | null;
|
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
*
|
|
9
9
|
*/
|
|
10
10
|
import type { FC } from 'react';
|
|
11
|
-
import { Accordion, AccordionArrow, AccordionContent, AccordionItem, AccordionItems, AccordionTrigger, AccordionTriggerInner, Switch } from './atoms/accordion';
|
|
12
|
-
import { AcceptAllButton, CustomizeButton, RejectButton, SaveButton } from './atoms/button';
|
|
13
|
-
import { Footer, FooterSubGroup } from './atoms/footer';
|
|
14
|
-
import { Root } from './atoms/root';
|
|
15
|
-
import { PolicyActions } from './policy-actions';
|
|
16
|
-
import type { ConsentWidgetProps } from './types';
|
|
11
|
+
import { Accordion, AccordionArrow, AccordionContent, AccordionItem, AccordionItems, AccordionTrigger, AccordionTriggerInner, Switch, VendorList } from './atoms/accordion.js';
|
|
12
|
+
import { AcceptAllButton, CustomizeButton, RejectButton, SaveButton } from './atoms/button.js';
|
|
13
|
+
import { Footer, FooterSubGroup } from './atoms/footer.js';
|
|
14
|
+
import { Root } from './atoms/root.js';
|
|
15
|
+
import { PolicyActions } from './policy-actions.js';
|
|
16
|
+
import type { ConsentWidgetProps } from './types.js';
|
|
17
17
|
export type { ConsentWidgetProps };
|
|
18
18
|
/**
|
|
19
19
|
* This interface extends the base ConsentWidget component with additional sub-components
|
|
@@ -31,6 +31,8 @@ export interface ConsentWidgetCompoundComponent extends FC<ConsentWidgetProps> {
|
|
|
31
31
|
Switch: typeof Switch;
|
|
32
32
|
AccordionItems: typeof AccordionItems;
|
|
33
33
|
AccordionItem: typeof AccordionItem;
|
|
34
|
+
/** Vendor rows for one category, nested by `AccordionItems`. */
|
|
35
|
+
VendorList: typeof VendorList;
|
|
34
36
|
Root: typeof Root;
|
|
35
37
|
AcceptAllButton: typeof AcceptAllButton;
|
|
36
38
|
CustomizeButton: typeof CustomizeButton;
|
|
@@ -65,7 +67,7 @@ export interface ConsentWidgetCompoundComponent extends FC<ConsentWidgetProps> {
|
|
|
65
67
|
* ```tsx
|
|
66
68
|
* <ConsentProvider
|
|
67
69
|
* options={{
|
|
68
|
-
* mode: hosted({
|
|
70
|
+
* mode: hosted({ backendURL: '/api/c15t' }),
|
|
69
71
|
* components: {
|
|
70
72
|
* accordion: {
|
|
71
73
|
* root: { className: 'rounded-3xl border border-black/10' },
|
|
@@ -94,9 +96,9 @@ export interface ConsentWidgetCompoundComponent extends FC<ConsentWidgetProps> {
|
|
|
94
96
|
*/
|
|
95
97
|
declare const ConsentWidget: ConsentWidgetCompoundComponent;
|
|
96
98
|
export default ConsentWidget;
|
|
97
|
-
export { Accordion, AccordionArrow, AccordionContent, AccordionItem, AccordionItems, AccordionTrigger, AccordionTriggerInner, ConsentWidgetAccordion, ConsentWidgetAccordionArrow, ConsentWidgetAccordionContent, ConsentWidgetAccordionItem, ConsentWidgetAccordionItems, ConsentWidgetAccordionTrigger, ConsentWidgetAccordionTriggerInner, ConsentWidgetSwitch, Switch, } from './atoms/accordion';
|
|
98
|
-
export { AcceptAllButton, ConsentWidgetAcceptAllButton, ConsentWidgetCustomizeButton, ConsentWidgetRejectButton, ConsentWidgetSaveButton, CustomizeButton, RejectButton, SaveButton, } from './atoms/button';
|
|
99
|
-
export { ConsentWidgetFooter, ConsentWidgetFooterSubGroup, Footer, FooterSubGroup, } from './atoms/footer';
|
|
100
|
-
export { ConsentWidgetRoot, Root } from './atoms/root';
|
|
101
|
-
export { type ConsentWidgetPolicyActionRenderProps, ConsentWidgetPolicyActions, type ConsentWidgetPolicyActionsProps, PolicyActions, } from './policy-actions';
|
|
99
|
+
export { Accordion, AccordionArrow, AccordionContent, AccordionItem, AccordionItems, AccordionTrigger, AccordionTriggerInner, ConsentWidgetAccordion, ConsentWidgetAccordionArrow, ConsentWidgetAccordionContent, ConsentWidgetAccordionItem, ConsentWidgetAccordionItems, ConsentWidgetAccordionTrigger, ConsentWidgetAccordionTriggerInner, ConsentWidgetSwitch, ConsentWidgetVendorList, Switch, VendorList, } from './atoms/accordion.js';
|
|
100
|
+
export { AcceptAllButton, ConsentWidgetAcceptAllButton, ConsentWidgetCustomizeButton, ConsentWidgetRejectButton, ConsentWidgetSaveButton, CustomizeButton, RejectButton, SaveButton, } from './atoms/button.js';
|
|
101
|
+
export { ConsentWidgetFooter, ConsentWidgetFooterSubGroup, Footer, FooterSubGroup, } from './atoms/footer.js';
|
|
102
|
+
export { ConsentWidgetRoot, Root } from './atoms/root.js';
|
|
103
|
+
export { type ConsentWidgetPolicyActionRenderProps, ConsentWidgetPolicyActions, type ConsentWidgetPolicyActionsProps, PolicyActions, } from './policy-actions.js';
|
|
102
104
|
export { ConsentWidget };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
|
-
import type { HeadlessConsentDialogAction } from '../../component-hooks/use-headless-consent-ui';
|
|
3
|
-
import type { PolicyActionRenderProps } from '../shared/policy-actions';
|
|
2
|
+
import type { HeadlessConsentDialogAction } from '../../component-hooks/use-headless-consent-ui.js';
|
|
3
|
+
import type { PolicyActionRenderProps } from '../shared/policy-actions.js';
|
|
4
4
|
export type ConsentWidgetPolicyActionRenderProps = PolicyActionRenderProps<HeadlessConsentDialogAction>;
|
|
5
5
|
export interface ConsentWidgetPolicyActionsProps {
|
|
6
6
|
renderAction?: (action: HeadlessConsentDialogAction, props: ConsentWidgetPolicyActionRenderProps) => ReactNode;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { ConsentWidgetProps } from './types';
|
|
1
|
+
import type { ConsentWidgetProps } from './types.js';
|
|
2
2
|
export declare const ConsentWidget: ({ hideBranding, noStyle: localNoStyle, disableAnimation: localDisableAnimation, scrollLock: localScrollLock, trapFocus: localTrapFocus, ...props }: ConsentWidgetProps) => import("react").JSX.Element;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
|
-
import type { InlineLegalLinksProps } from '../shared/primitives/legal-links';
|
|
2
|
+
import type { InlineLegalLinksProps } from '../shared/primitives/legal-links/index.js';
|
|
3
3
|
export interface ConsentWidgetRootProps {
|
|
4
4
|
children: ReactNode;
|
|
5
5
|
useProvider?: boolean;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keeps a banner tap made before hydration.
|
|
3
|
+
*
|
|
4
|
+
* A server-rendered banner shows long before React attaches its handlers.
|
|
5
|
+
* The inline script records an accept, reject, dismiss or customize tap in
|
|
6
|
+
* that gap and hides the banner. Once this component mounts, the banner's
|
|
7
|
+
* own handlers work: it stops the script and records the tap when the
|
|
8
|
+
* runtime has started. See `@c15t/core/surface-actions`.
|
|
9
|
+
*
|
|
10
|
+
* The script is in the server HTML. A banner that hydrates keeps it, inert
|
|
11
|
+
* once claimed, so hydration changes nothing in the markup. A banner React
|
|
12
|
+
* renders in the browser has its handlers at once, and a script it inserts
|
|
13
|
+
* would never run, so there it renders nothing.
|
|
14
|
+
*
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export declare const EarlyTapScript: () => import("react").JSX.Element | null;
|
|
@@ -73,6 +73,10 @@ interface ConsentBannerRootProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
73
73
|
*/
|
|
74
74
|
blocking?: boolean;
|
|
75
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* The banner, rendered where the server can stream it: see
|
|
78
|
+
* `StreamedSurface`.
|
|
79
|
+
*/
|
|
76
80
|
declare const ConsentBannerRoot: FC<ConsentBannerRootProps>;
|
|
77
81
|
declare const Root: FC<ConsentBannerRootProps>;
|
|
78
82
|
export { ConsentBannerRoot, Root };
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { PolicyRight } from '@c15t/schema/types';
|
|
7
7
|
import type { ButtonHTMLAttributes, ReactNode } from 'react';
|
|
8
|
-
import type { BoxProps } from '../shared/primitives/box';
|
|
9
|
-
import type { ConsentButtonProps } from '../shared/primitives/button.types';
|
|
10
|
-
import type { InlineLegalLinksProps } from '../shared/primitives/legal-links';
|
|
8
|
+
import type { BoxProps } from '../shared/primitives/box.js';
|
|
9
|
+
import type { ConsentButtonProps } from '../shared/primitives/button.types.js';
|
|
10
|
+
import type { InlineLegalLinksProps } from '../shared/primitives/legal-links/index.js';
|
|
11
11
|
/** Rights the banner can expose as links. `disclosure` is carried by legal links. */
|
|
12
12
|
export type ConsentBannerRight = Exclude<PolicyRight, 'disclosure'>;
|
|
13
13
|
/**
|
|
@@ -16,12 +16,18 @@ export type ConsentBannerRight = Exclude<PolicyRight, 'disclosure'>;
|
|
|
16
16
|
* @remarks
|
|
17
17
|
* Provides the main heading for the consent notice.
|
|
18
18
|
* Implements proper heading semantics and supports theming.
|
|
19
|
+
* Renders an `h2`. With `asChild`, the child element, such as an `h1`,
|
|
20
|
+
* takes its place and receives the title's class and attributes.
|
|
19
21
|
*
|
|
20
22
|
* @example
|
|
21
23
|
* ```tsx
|
|
22
24
|
* <ConsentBannerTitle>
|
|
23
25
|
* Cookie Preferences
|
|
24
26
|
* </ConsentBannerTitle>
|
|
27
|
+
*
|
|
28
|
+
* <ConsentBannerTitle asChild>
|
|
29
|
+
* <h1>Cookie Preferences</h1>
|
|
30
|
+
* </ConsentBannerTitle>
|
|
25
31
|
* ```
|
|
26
32
|
*/
|
|
27
33
|
declare const ConsentBannerTitle: import("react").ForwardRefExoticComponent<Omit<BoxProps, "slotKey"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
*
|
|
9
9
|
*/
|
|
10
10
|
import type { FC } from 'react';
|
|
11
|
-
import { Overlay } from './atoms/overlay';
|
|
12
|
-
import { Root } from './atoms/root';
|
|
13
|
-
import { AcceptButton, Card, CustomizeButton, Description, DismissButton, Footer, FooterSubGroup, Header, RejectButton, RightLink, Rights, Title } from './components';
|
|
14
|
-
import { PolicyActions } from './policy-actions';
|
|
15
|
-
import type { ConsentBannerButton, ConsentBannerLayout, ConsentBannerProps } from './prompt';
|
|
11
|
+
import { Overlay } from './atoms/overlay.js';
|
|
12
|
+
import { Root } from './atoms/root.js';
|
|
13
|
+
import { AcceptButton, Card, CustomizeButton, Description, DismissButton, Footer, FooterSubGroup, Header, RejectButton, RightLink, Rights, Title } from './components.js';
|
|
14
|
+
import { PolicyActions } from './policy-actions.js';
|
|
15
|
+
import type { ConsentBannerButton, ConsentBannerLayout, ConsentBannerProps } from './prompt.js';
|
|
16
16
|
/**
|
|
17
17
|
* This interface extends the base ConsentBanner component with additional sub-components
|
|
18
18
|
* that can be used to compose the banner's structure.
|
|
@@ -62,7 +62,7 @@ export interface ConsentBannerCompoundComponent extends FC<ConsentBannerProps> {
|
|
|
62
62
|
* ```tsx
|
|
63
63
|
* <ConsentProvider
|
|
64
64
|
* options={{
|
|
65
|
-
* mode: hosted({
|
|
65
|
+
* mode: hosted({ backendURL: '/api/c15t' }),
|
|
66
66
|
* i18n: {
|
|
67
67
|
* locale: 'en',
|
|
68
68
|
* messages: {
|
|
@@ -114,10 +114,10 @@ export interface ConsentBannerCompoundComponent extends FC<ConsentBannerProps> {
|
|
|
114
114
|
*/
|
|
115
115
|
declare const ConsentBanner: ConsentBannerCompoundComponent;
|
|
116
116
|
export default ConsentBanner;
|
|
117
|
-
export { ConsentBannerOverlay, Overlay } from './atoms/overlay';
|
|
118
|
-
export { ConsentBannerRoot, Root } from './atoms/root';
|
|
119
|
-
export { AcceptButton, Card, ConsentBannerAcceptButton, ConsentBannerCard, ConsentBannerCustomizeButton, ConsentBannerDescription, ConsentBannerDismissButton, ConsentBannerFooter, ConsentBannerFooterSubGroup, ConsentBannerHeader, ConsentBannerRejectButton, type ConsentBannerRight, ConsentBannerRightLink, type ConsentBannerRightLinkProps, ConsentBannerRights, type ConsentBannerRightsProps, ConsentBannerTitle, CustomizeButton, Description, DismissButton, Footer, FooterSubGroup, Header, RejectButton, RightLink, Rights, Title, } from './components';
|
|
120
|
-
export { type ConsentBannerSurface, useConsentBannerSurface, } from './surface-context';
|
|
121
|
-
export { useBannerCopy } from './use-banner-copy';
|
|
122
|
-
export { type ConsentBannerPolicyActionRenderProps, ConsentBannerPolicyActions, type ConsentBannerPolicyActionsProps, PolicyActions, } from './policy-actions';
|
|
117
|
+
export { ConsentBannerOverlay, Overlay } from './atoms/overlay.js';
|
|
118
|
+
export { ConsentBannerRoot, Root } from './atoms/root.js';
|
|
119
|
+
export { AcceptButton, Card, ConsentBannerAcceptButton, ConsentBannerCard, ConsentBannerCustomizeButton, ConsentBannerDescription, ConsentBannerDismissButton, ConsentBannerFooter, ConsentBannerFooterSubGroup, ConsentBannerHeader, ConsentBannerRejectButton, type ConsentBannerRight, ConsentBannerRightLink, type ConsentBannerRightLinkProps, ConsentBannerRights, type ConsentBannerRightsProps, ConsentBannerTitle, CustomizeButton, Description, DismissButton, Footer, FooterSubGroup, Header, RejectButton, RightLink, Rights, Title, } from './components.js';
|
|
120
|
+
export { type ConsentBannerSurface, useConsentBannerSurface, } from './surface-context.js';
|
|
121
|
+
export { useBannerCopy } from './use-banner-copy.js';
|
|
122
|
+
export { type ConsentBannerPolicyActionRenderProps, ConsentBannerPolicyActions, type ConsentBannerPolicyActionsProps, PolicyActions, } from './policy-actions.js';
|
|
123
123
|
export { ConsentBanner, type ConsentBannerButton, type ConsentBannerLayout, type ConsentBannerProps, };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
|
-
import type { HeadlessConsentBannerAction } from '../../component-hooks/use-headless-consent-ui';
|
|
3
|
-
import type { PolicyActionRenderProps } from '../shared/policy-actions';
|
|
2
|
+
import type { HeadlessConsentBannerAction } from '../../component-hooks/use-headless-consent-ui.js';
|
|
3
|
+
import type { PolicyActionRenderProps } from '../shared/policy-actions.js';
|
|
4
4
|
export type ConsentBannerPolicyActionRenderProps = PolicyActionRenderProps<HeadlessConsentBannerAction>;
|
|
5
5
|
export interface ConsentBannerPolicyActionsProps {
|
|
6
6
|
/** Replaces the default preferences buttons before the policy actions. */
|
|
@@ -2,7 +2,7 @@ import type * as C15tCoreTypes from '@c15t/core';
|
|
|
2
2
|
import type { PromptPosition, PromptVariant } from '@c15t/core';
|
|
3
3
|
import type { SurfacePresentation } from '@c15t/ui/utils';
|
|
4
4
|
import type { FC, ReactNode } from 'react';
|
|
5
|
-
import type { InlineLegalLinksProps } from '../shared/primitives/legal-links';
|
|
5
|
+
import type { InlineLegalLinksProps } from '../shared/primitives/legal-links/index.js';
|
|
6
6
|
/**
|
|
7
7
|
* Identifiers for the available buttons in the consent banner.
|
|
8
8
|
* @public
|
|
@@ -162,6 +162,10 @@ export interface ConsentBannerProps {
|
|
|
162
162
|
*/
|
|
163
163
|
blocking?: boolean;
|
|
164
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* The stock banner. It reads the policy to choose its buttons, so all of
|
|
167
|
+
* it renders where the server can stream it: see `StreamedSurface`.
|
|
168
|
+
*/
|
|
165
169
|
export declare const ConsentBanner: FC<ConsentBannerProps>;
|
|
166
170
|
/**
|
|
167
171
|
* Component type definition for the ConsentBanner with its compound components.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SurfaceStyleSheet } from './surface-styles.js';
|
|
2
|
+
/**
|
|
3
|
+
* What the dialog and the preference widget render: the first-paint sheet,
|
|
4
|
+
* then the dialog and widget rules. Only their lazy chunks import this, so
|
|
5
|
+
* the dialog rules load with the dialog's code.
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export declare const DIALOG_SHEETS: readonly SurfaceStyleSheet[];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SurfaceStyleSheet } from './surface-styles.js';
|
|
2
|
+
/**
|
|
3
|
+
* What the banner, trigger and ConsentGate render: tokens, every c15t
|
|
4
|
+
* variable and the first-paint rules of `styles.css`.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export declare const FIRST_PAINT_SHEETS: readonly SurfaceStyleSheet[];
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Ref, RefCallback } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Combine refs so one element fills all of them.
|
|
4
|
+
*
|
|
5
|
+
* @param refs - Callback refs, object refs, or `undefined`.
|
|
6
|
+
* @returns A callback ref that calls or assigns each ref in order.
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export declare const composeRefs: <ElementType>(...refs: (Ref<ElementType> | undefined)[]) => RefCallback<ElementType>;
|
|
10
|
+
/**
|
|
11
|
+
* {@link composeRefs} for two refs, with a stable identity while they stay
|
|
12
|
+
* the same, so React does not detach and reattach the element on every
|
|
13
|
+
* render.
|
|
14
|
+
*
|
|
15
|
+
* @param first - A callback ref, object ref, or `undefined`.
|
|
16
|
+
* @param second - A callback ref, object ref, or `undefined`.
|
|
17
|
+
* @returns A memoized callback ref.
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
export declare const useComposedRefs: <ElementType>(first: Ref<ElementType> | undefined, second: Ref<ElementType> | undefined) => RefCallback<ElementType>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ComponentType, ReactNode } from 'react';
|
|
2
|
-
import type { HeadlessConsentSurfaceState } from '../../component-hooks/use-headless-consent-ui';
|
|
3
|
-
import type { CSSPropertiesWithVars, CSSVariables } from '../../types/theme';
|
|
2
|
+
import type { HeadlessConsentSurfaceState } from '../../component-hooks/use-headless-consent-ui.js';
|
|
3
|
+
import type { CSSPropertiesWithVars, CSSVariables } from '../../types/theme/index.js';
|
|
4
4
|
export interface PolicyActionRenderProps<TAction extends string> {
|
|
5
5
|
key: string;
|
|
6
6
|
consentAction: TAction;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ConsentComponentSlotKey } from '@c15t/schema/config';
|
|
2
2
|
import type { HTMLAttributes } from 'react';
|
|
3
|
-
import type { ExtendThemeKeys } from '../../../types/theme';
|
|
3
|
+
import type { ExtendThemeKeys } from '../../../types/theme/index.js';
|
|
4
4
|
/**
|
|
5
5
|
* Props for the description text component of the CookieBanner.
|
|
6
6
|
* Extends standard HTML div attributes.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AllConsentNames } from '@c15t/core';
|
|
2
|
-
import type { ButtonVariantsProps } from '../ui/button/button';
|
|
3
|
-
import type { ConsentButtonProps } from './button.types';
|
|
2
|
+
import type { ButtonVariantsProps } from '../ui/button/button.js';
|
|
3
|
+
import type { ConsentButtonProps } from './button.types.js';
|
|
4
4
|
type ConsentActionThemeKey = 'accept' | 'reject' | 'customize' | 'dismiss' | 'save';
|
|
5
5
|
/**
|
|
6
6
|
* Button component that allows users to reject non-essential cookies.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ConsentComponentSlotKey } from '@c15t/schema/config';
|
|
2
2
|
import type { ButtonMode } from '@c15t/ui/styles/primitives';
|
|
3
3
|
import type { ComponentRef, HTMLAttributes, MouseEvent } from 'react';
|
|
4
|
-
import type { CSSVariables, ExtendThemeKeys } from '../../../types/theme';
|
|
4
|
+
import type { CSSVariables, ExtendThemeKeys } from '../../../types/theme/index.js';
|
|
5
5
|
export type ConsentButtonElement = ComponentRef<'button'>;
|
|
6
6
|
/**
|
|
7
7
|
* Props for CookieBanner button components.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* React 18's way to suspend: throw the promise, and read its recorded
|
|
5
|
+
* result on the retry. The runtime's `settled` records its own result.
|
|
6
|
+
* Exported for tests.
|
|
7
|
+
*
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export declare const readRecorded: <Value>(thenable: PromiseLike<Value>) => Value;
|
|
11
|
+
/**
|
|
12
|
+
* Renders a consent surface the server can stream. While the provider's
|
|
13
|
+
* `prefetch` is a promise, the surface waits for it in its own Suspense
|
|
14
|
+
* boundary: the rest of the page streams at once, and the surface follows
|
|
15
|
+
* in a later chunk of the same response, rendered from the resolved
|
|
16
|
+
* config. It shows only when that config carries a policy that shows it.
|
|
17
|
+
* Hydration reads the same config, so the surface hydrates in place.
|
|
18
|
+
*
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
export declare const StreamedSurface: ({ children }: {
|
|
22
|
+
children: ReactNode;
|
|
23
|
+
}) => string | number | bigint | boolean | React.JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | Iterable<ReactNode> | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | React.ReactPortal | null | undefined> | null | undefined;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/** A stylesheet from `@c15t/ui/styles/sheets/*`. */
|
|
2
|
+
export interface SurfaceStyleSheet {
|
|
3
|
+
/** Dedupes the stylesheet: a page renders each `id` once. */
|
|
4
|
+
id: string;
|
|
5
|
+
/** The stylesheet text. */
|
|
6
|
+
css: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Renders the stylesheets a stock surface needs as `<style>` elements.
|
|
10
|
+
*
|
|
11
|
+
* The banner, trigger, ConsentGate, dialog and widget each render the
|
|
12
|
+
* sheets they use, so an app that imports no c15t stylesheet still gets
|
|
13
|
+
* styled surfaces, and no stylesheet `<link>` holds back the first paint.
|
|
14
|
+
* A server-rendered surface puts its rules in the HTML. A surface that
|
|
15
|
+
* renders in the browser, like the dialog, inserts them with its own code.
|
|
16
|
+
*
|
|
17
|
+
* In React 19 the elements move to `<head>` and each `id` renders once per
|
|
18
|
+
* page; later sheets follow earlier ones, which keeps the cascade order of
|
|
19
|
+
* `styles.css`. React 18 renders them in place, next to the surface, and
|
|
20
|
+
* so does React 19 when the provider sets a `nonce`: React drops the nonce
|
|
21
|
+
* from a style it moves to `<head>` unless the app passed the same nonce to
|
|
22
|
+
* React's server renderer, and a style without it would break a
|
|
23
|
+
* nonce-based policy.
|
|
24
|
+
*
|
|
25
|
+
* Renders nothing when the provider sets `styles: false` (the app imports
|
|
26
|
+
* `styles.css` itself) or `noStyle`.
|
|
27
|
+
*
|
|
28
|
+
* @param props.sheets - The stylesheets, in cascade order.
|
|
29
|
+
* @param props.noStyle - The surface's own `noStyle` prop.
|
|
30
|
+
* @returns The `<style>` elements, or `null`.
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
export declare const SurfaceStyles: ({ sheets, noStyle, }: {
|
|
34
|
+
sheets: readonly SurfaceStyleSheet[];
|
|
35
|
+
noStyle?: boolean;
|
|
36
|
+
}) => import("react").JSX.Element[] | null;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AccordionType } from '@c15t/ui/primitives/accordion';
|
|
2
2
|
import type { ButtonHTMLAttributes, ElementType, HTMLAttributes } from 'react';
|
|
3
|
-
import type { PolymorphicComponentProps } from '../../libs/polymorphic';
|
|
4
|
-
import type { ThemeValue } from '../../../../types/theme';
|
|
3
|
+
import type { PolymorphicComponentProps } from '../../libs/polymorphic.js';
|
|
4
|
+
import type { ThemeValue } from '../../../../types/theme/index.js';
|
|
5
5
|
export type AccordionVariant = 'default' | 'bordered';
|
|
6
6
|
export type AccordionSize = 'medium' | 'small';
|
|
7
7
|
export interface AccordionVariantsProps {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './accordion';
|
|
2
|
-
export * from './accordion.types';
|
|
1
|
+
export * from './accordion.js';
|
|
2
|
+
export * from './accordion.types.js';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type { AnimatedCollapseProps } from './animated-collapse';
|
|
2
|
-
export { AnimatedCollapse } from './animated-collapse';
|
|
1
|
+
export type { AnimatedCollapseProps } from './animated-collapse.js';
|
|
2
|
+
export { AnimatedCollapse } from './animated-collapse.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Branding } from '@c15t/core';
|
|
2
2
|
import type { SVGProps } from 'react';
|
|
3
|
-
import type { CSSPropertiesWithVars } from '../../../types/theme';
|
|
3
|
+
import type { CSSPropertiesWithVars } from '../../../types/theme/index.js';
|
|
4
4
|
export type ResolvedBranding = 'c15t' | 'inth' | 'none';
|
|
5
5
|
export type BrandingVariant = 'footer' | 'dialog-tag' | 'banner-tag';
|
|
6
6
|
export type BrandingSlotContext = 'banner' | 'dialog' | 'manager' | 'iab-banner' | 'iab-dialog';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ButtonHTMLAttributes, ElementType } from 'react';
|
|
2
|
-
import type { PolymorphicComponentProps } from '../../libs/polymorphic';
|
|
2
|
+
import type { PolymorphicComponentProps } from '../../libs/polymorphic.js';
|
|
3
3
|
export type ButtonVariant = 'primary' | 'neutral' | 'secondary';
|
|
4
4
|
export type ButtonMode = 'filled' | 'stroke' | 'lighter' | 'ghost';
|
|
5
5
|
export type ButtonSize = 'medium' | 'small' | 'xsmall' | 'xxsmall';
|