@c15t/react 3.0.0-alpha.1 → 3.0.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +97 -70
- package/README.md +21 -17
- package/SKILL.md +34 -0
- package/dist/aggregate-components.js +1 -1
- package/dist/chunk-warming.js +1 -1
- package/dist/component-hooks/use-headless-consent-ui.js +1 -1
- package/dist/component-hooks/use-headless-iab-consent-ui.js +1 -1
- package/dist/component-hooks/use-panel-trigger.js +1 -1
- package/dist/components/consent-gate/atoms.js +1 -0
- package/dist/components/consent-gate/consent-gate.js +2 -0
- package/dist/components/consent-gate/frame.js +2 -0
- package/dist/components/consent-gate/index.js +2 -0
- package/dist/components/consent-preferences-link/consent-preferences-link.js +1 -1
- package/dist/components/iab-panel/atoms/card.js +1 -1
- package/dist/components/iab-panel/atoms/feature-item.js +2 -0
- package/dist/components/iab-panel/atoms/header.js +1 -1
- package/dist/components/iab-panel/atoms/purpose-item.js +1 -1
- package/dist/components/iab-panel/atoms/root.js +1 -1
- package/dist/components/iab-panel/atoms/stack-item.js +1 -1
- package/dist/components/iab-panel/atoms/vendor-list.js +1 -1
- package/dist/components/iab-panel/hooks/use-gvl-data.js +1 -1
- package/dist/components/iab-panel/iab-panel.js +1 -1
- package/dist/components/iab-panel/index.js +1 -1
- package/dist/components/iab-prompt/atoms/overlay.js +1 -1
- package/dist/components/iab-prompt/atoms/root.js +1 -1
- package/dist/components/iab-prompt/iab-prompt.js +1 -1
- package/dist/components/panel/atoms/card.js +1 -1
- package/dist/components/panel/atoms/overlay.js +1 -1
- package/dist/components/panel/atoms/root.js +1 -1
- package/dist/components/panel/panel.js +1 -1
- package/dist/components/panel-trigger/atoms/button.js +1 -1
- package/dist/components/panel-trigger/atoms/icon.js +1 -1
- package/dist/components/panel-trigger/atoms/root.js +1 -1
- package/dist/components/panel-trigger/atoms/toolbar.js +1 -1
- package/dist/components/panel-trigger/atoms/trigger-icons.js +1 -0
- package/dist/components/panel-trigger/panel-trigger-toolbar.js +1 -1
- package/dist/components/panel-trigger/panel-trigger.js +1 -1
- package/dist/components/panel-trigger/toolbar-loader.js +2 -0
- package/dist/components/preferences/atoms/accordion.js +1 -1
- package/dist/components/preferences/atoms/root.js +1 -1
- package/dist/components/preferences/atoms/vendor-list.js +1 -0
- package/dist/components/preferences/index.js +1 -1
- package/dist/components/prompt/atoms/early-tap-script.js +2 -0
- package/dist/components/prompt/atoms/overlay.js +1 -1
- package/dist/components/prompt/atoms/root.js +1 -1
- package/dist/components/prompt/components.js +1 -1
- package/dist/components/prompt/policy-actions.js +1 -1
- package/dist/components/prompt/prompt.js +1 -1
- package/dist/components/shared/dialog-sheets.js +1 -0
- package/dist/components/shared/first-paint-sheets.js +1 -0
- package/dist/components/shared/iab-dialog-sheets.js +1 -0
- package/dist/components/shared/iab-first-paint-sheets.js +1 -0
- package/dist/components/shared/libs/compose-refs.js +1 -0
- package/dist/components/shared/libs/slot.js +1 -1
- package/dist/components/shared/primitives/button.js +1 -1
- package/dist/components/shared/primitives/legal-links/index.js +1 -1
- package/dist/components/shared/streamed-surface.js +2 -0
- package/dist/components/shared/surface-styles.js +2 -0
- package/dist/components/shared/ui/dialog/dialog.js +1 -1
- package/dist/components/shared/ui/icon.js +1 -1
- package/dist/components/shared/ui/logo.js +1 -1
- package/dist/components/shared/ui/preference-item/preference-item.js +1 -1
- package/dist/consent-gate.js +2 -0
- package/dist/consent-theme.js +1 -0
- package/dist/context/consent-tracking-context.js +1 -1
- package/dist/context/index.js +1 -1
- package/dist/context.js +1 -1
- package/dist/devtools-launcher.js +2 -0
- package/dist/devtools.js +1 -1
- package/dist/draft-context.js +2 -0
- package/dist/draft.js +1 -1
- package/dist/external-iab-context.js +1 -1
- package/dist/gpp.js +2 -0
- package/dist/headless.js +1 -1
- package/dist/hooks/use-color-scheme.js +1 -1
- package/dist/hooks/use-committed-ref.js +2 -0
- package/dist/hooks/use-focus-trap.js +1 -1
- package/dist/hooks/use-headless-iab-consent-ui.js +1 -1
- package/dist/hooks/use-iab-policy-guard.js +1 -0
- package/dist/hooks/use-late-entry.js +2 -0
- package/dist/hooks.js +1 -1
- package/dist/iab/styles.tw3.css +5 -45
- package/dist/iab-context.js +1 -1
- package/dist/iab-dialog-deferred.js +2 -0
- package/dist/iab.js +1 -1
- package/dist/index-parts/consent-banner.js +1 -0
- package/dist/index-parts/consent-dialog-link.js +1 -0
- package/dist/index-parts/consent-dialog-trigger.js +1 -0
- package/dist/index-parts/consent-dialog.js +1 -0
- package/dist/index-parts/consent-gate.js +1 -0
- package/dist/index-parts/core.js +1 -0
- package/dist/index-parts/draft.js +1 -0
- package/dist/index-parts/frame.js +1 -0
- package/dist/index-parts/hooks.js +1 -0
- package/dist/index-parts/hosted.js +1 -0
- package/dist/index-parts/module-hooks.js +1 -0
- package/dist/index-parts/offline.js +1 -0
- package/dist/index-parts/presets.js +1 -0
- package/dist/index-parts/provider.js +1 -0
- package/dist/index-parts/theme.js +1 -0
- package/dist/index-parts/translations.js +1 -0
- package/dist/index.js +1 -1
- package/dist/kernel-selector.js +1 -0
- package/dist/modes.js +1 -0
- package/dist/module-hooks/iframe-blocker.js +1 -1
- package/dist/module-hooks/network-blocker.js +1 -1
- package/dist/module-hooks/network-hold.js +2 -0
- package/dist/module-hooks/persistence.js +1 -1
- package/dist/panel-link.js +1 -1
- package/dist/panel-trigger.js +1 -1
- package/dist/panel.js +1 -1
- package/dist/postcss-tailwind3.js +1 -0
- package/dist/preferences.js +1 -2
- package/dist/provider.js +1 -1
- package/dist/server/fetch-ssr-data.js +1 -1
- package/dist/server/headers.js +1 -1
- package/dist/server/normalize-url.js +1 -1
- package/dist/styles.tw3.css +33 -51
- package/dist/transports/hosted.js +1 -0
- package/dist/transports/manifest.js +1 -0
- package/dist/transports/offline.js +1 -1
- package/dist/utils/deferred-module.js +2 -0
- package/dist/utils/merge-slot-props.js +1 -1
- package/dist/utils/theme-utils.js +1 -1
- package/dist/version.js +1 -1
- package/dist-types/aggregate-components.d.ts +2 -2
- package/dist-types/chunk-warming.d.ts +42 -8
- package/dist-types/component-hooks/use-headless-consent-ui.d.ts +5 -5
- package/dist-types/component-hooks/use-headless-iab-consent-ui.d.ts +2 -2
- package/dist-types/components/consent-gate/atoms.d.ts +11 -0
- package/dist-types/components/consent-gate/consent-gate.d.ts +2 -0
- package/dist-types/components/consent-gate/frame.d.ts +19 -0
- package/dist-types/components/consent-gate/index.d.ts +25 -0
- package/dist-types/components/{frame → consent-gate}/types.d.ts +7 -7
- package/dist-types/components/consent-preferences-link/consent-preferences-link.d.ts +1 -1
- package/dist-types/components/consent-preferences-link/index.d.ts +1 -1
- package/dist-types/components/iab-panel/atoms/feature-item.d.ts +28 -0
- package/dist-types/components/iab-panel/atoms/purpose-item.d.ts +5 -2
- package/dist-types/components/iab-panel/atoms/stack-item.d.ts +7 -2
- package/dist-types/components/iab-panel/atoms/vendor-list.d.ts +1 -1
- package/dist-types/components/iab-panel/iab-panel.d.ts +3 -3
- package/dist-types/components/iab-panel/index.d.ts +29 -26
- package/dist-types/components/iab-panel/use-iab-translations.d.ts +4 -0
- package/dist-types/components/iab-prompt/iab-prompt.d.ts +3 -3
- package/dist-types/components/iab-prompt/index.d.ts +19 -19
- package/dist-types/components/panel/atoms/card.d.ts +5 -4
- package/dist-types/components/panel/atoms/overlay.d.ts +1 -1
- package/dist-types/components/panel/index.d.ts +8 -8
- package/dist-types/components/panel/panel.d.ts +3 -3
- package/dist-types/components/panel-link/index.d.ts +1 -1
- package/dist-types/components/panel-trigger/atoms/button.d.ts +1 -1
- package/dist-types/components/panel-trigger/atoms/icon.d.ts +1 -1
- package/dist-types/components/panel-trigger/atoms/root.d.ts +2 -2
- package/dist-types/components/panel-trigger/atoms/toolbar.d.ts +2 -2
- package/dist-types/components/panel-trigger/atoms/trigger-icons.d.ts +25 -0
- package/dist-types/components/panel-trigger/index.d.ts +4 -4
- package/dist-types/components/panel-trigger/panel-trigger-toolbar.d.ts +1 -1
- package/dist-types/components/panel-trigger/panel-trigger.d.ts +9 -17
- package/dist-types/components/panel-trigger/toolbar-loader.d.ts +34 -0
- package/dist-types/components/panel-trigger/types.d.ts +1 -1
- package/dist-types/components/preferences/atoms/accordion.d.ts +6 -4
- package/dist-types/components/preferences/atoms/button.d.ts +1 -1
- package/dist-types/components/preferences/atoms/footer.d.ts +1 -1
- package/dist-types/components/preferences/atoms/root.d.ts +1 -1
- package/dist-types/components/preferences/atoms/vendor-list.d.ts +23 -0
- package/dist-types/components/preferences/index.d.ts +14 -12
- package/dist-types/components/preferences/policy-actions.d.ts +2 -2
- package/dist-types/components/preferences/preferences.d.ts +1 -1
- package/dist-types/components/preferences/types.d.ts +1 -1
- package/dist-types/components/prompt/atoms/early-tap-script.d.ts +17 -0
- package/dist-types/components/prompt/atoms/root.d.ts +4 -0
- package/dist-types/components/prompt/components.d.ts +9 -3
- package/dist-types/components/prompt/index.d.ts +12 -12
- package/dist-types/components/prompt/policy-actions.d.ts +2 -2
- package/dist-types/components/prompt/prompt.d.ts +5 -1
- package/dist-types/components/shared/dialog-sheets.d.ts +9 -0
- package/dist-types/components/shared/first-paint-sheets.d.ts +8 -0
- package/dist-types/components/shared/iab-dialog-sheets.d.ts +3 -0
- package/dist-types/components/shared/iab-first-paint-sheets.d.ts +3 -0
- package/dist-types/components/shared/libs/compose-refs.d.ts +20 -0
- package/dist-types/components/shared/policy-actions.d.ts +2 -2
- package/dist-types/components/shared/primitives/box.d.ts +1 -1
- package/dist-types/components/shared/primitives/button.d.ts +2 -2
- package/dist-types/components/shared/primitives/button.types.d.ts +1 -1
- package/dist-types/components/shared/streamed-surface.d.ts +23 -0
- package/dist-types/components/shared/surface-styles.d.ts +60 -0
- package/dist-types/components/shared/ui/accordion/accordion.d.ts +2 -2
- package/dist-types/components/shared/ui/accordion/index.d.ts +2 -2
- package/dist-types/components/shared/ui/animated-collapse/index.d.ts +2 -2
- package/dist-types/components/shared/ui/branding.d.ts +1 -1
- package/dist-types/components/shared/ui/button/button.d.ts +1 -1
- package/dist-types/components/shared/ui/button/index.d.ts +2 -2
- package/dist-types/components/shared/ui/collapsible/index.d.ts +1 -1
- package/dist-types/components/shared/ui/dialog/index.d.ts +1 -1
- package/dist-types/components/shared/ui/icon.d.ts +2 -1
- package/dist-types/components/shared/ui/logo.d.ts +0 -10
- package/dist-types/components/shared/ui/preference-item/index.d.ts +1 -1
- package/dist-types/components/shared/ui/preference-item/preference-item.d.ts +13 -0
- package/dist-types/components/shared/ui/switch/index.d.ts +2 -2
- package/dist-types/components/shared/ui/switch/switch.d.ts +1 -1
- package/dist-types/components/shared/ui/tabs/index.d.ts +1 -1
- package/dist-types/consent-gate.d.ts +1 -0
- package/dist-types/consent-theme.d.ts +38 -0
- package/dist-types/context/consent-tracking-context.d.ts +10 -0
- package/dist-types/context/index.d.ts +3 -3
- package/dist-types/context/theme-context.d.ts +3 -3
- package/dist-types/context.d.ts +25 -1
- package/dist-types/devtools-launcher.d.ts +29 -0
- package/dist-types/devtools.d.ts +13 -2
- package/dist-types/draft-context.d.ts +31 -0
- package/dist-types/draft.d.ts +81 -9
- package/dist-types/gpp.d.ts +27 -0
- package/dist-types/headless.d.ts +6 -7
- package/dist-types/hooks/use-committed-ref.d.ts +24 -0
- package/dist-types/hooks/use-focus-trap.d.ts +3 -1
- package/dist-types/hooks/use-headless-iab-consent-ui.d.ts +1 -1
- package/dist-types/hooks/use-iab-manager.d.ts +5 -5
- package/dist-types/hooks/use-iab-policy-guard.d.ts +35 -0
- package/dist-types/hooks/use-late-entry.d.ts +14 -0
- package/dist-types/hooks/use-theme.d.ts +1 -1
- package/dist-types/hooks.d.ts +106 -11
- package/dist-types/iab-dialog-deferred.d.ts +36 -0
- package/dist-types/iab.d.ts +8 -7
- package/dist-types/index-parts/consent-banner.d.ts +7 -0
- package/dist-types/index-parts/consent-dialog-link.d.ts +7 -0
- package/dist-types/index-parts/consent-dialog-trigger.d.ts +7 -0
- package/dist-types/index-parts/consent-dialog.d.ts +7 -0
- package/dist-types/index-parts/consent-gate.d.ts +7 -0
- package/dist-types/index-parts/core.d.ts +7 -0
- package/dist-types/index-parts/draft.d.ts +7 -0
- package/dist-types/index-parts/frame.d.ts +7 -0
- package/dist-types/index-parts/hooks.d.ts +7 -0
- package/dist-types/index-parts/hosted.d.ts +7 -0
- package/dist-types/index-parts/module-hooks.d.ts +7 -0
- package/dist-types/index-parts/offline.d.ts +7 -0
- package/dist-types/index-parts/presets.d.ts +7 -0
- package/dist-types/index-parts/provider.d.ts +7 -0
- package/dist-types/index-parts/theme.d.ts +8 -0
- package/dist-types/index-parts/translations.d.ts +7 -0
- package/dist-types/index.d.ts +32 -28
- package/dist-types/kernel-selector.d.ts +68 -0
- package/dist-types/modes.d.ts +26 -0
- package/dist-types/module-hooks/iframe-blocker.d.ts +33 -1
- package/dist-types/module-hooks/network-blocker.d.ts +23 -0
- package/dist-types/module-hooks/network-hold.d.ts +47 -0
- package/dist-types/module-hooks.d.ts +4 -4
- package/dist-types/panel-link.d.ts +1 -1
- package/dist-types/panel-trigger.d.ts +1 -1
- package/dist-types/panel.d.ts +13 -1
- package/dist-types/postcss-tailwind3.d.ts +21 -0
- package/dist-types/preferences.d.ts +12 -1
- package/dist-types/primitives/accordion.d.ts +1 -1
- package/dist-types/primitives/button.d.ts +1 -1
- package/dist-types/primitives/collapsible.d.ts +1 -1
- package/dist-types/primitives/dialog.d.ts +1 -1
- package/dist-types/primitives/preference-item.d.ts +1 -1
- package/dist-types/primitives/switch.d.ts +1 -1
- package/dist-types/primitives/tabs.d.ts +1 -1
- package/dist-types/primitives.d.ts +7 -7
- package/dist-types/prompt.d.ts +1 -1
- package/dist-types/provider.d.ts +169 -28
- package/dist-types/server/fetch-ssr-data.d.ts +1 -1
- package/dist-types/server/headers.d.ts +14 -4
- package/dist-types/server/index.d.ts +5 -5
- package/dist-types/server/normalize-url.d.ts +14 -7
- package/dist-types/server/types.d.ts +12 -1
- package/dist-types/theme-provider.d.ts +2 -2
- package/dist-types/transports/hosted.d.ts +36 -0
- package/dist-types/transports/manifest.d.ts +48 -0
- package/dist-types/transports/offline.d.ts +7 -16
- package/dist-types/types/index.d.ts +3 -3
- package/dist-types/types/manager.d.ts +1 -1
- package/dist-types/types/theme/index.d.ts +1 -1
- package/dist-types/ui-config-context.d.ts +14 -2
- package/dist-types/utils/deferred-module.d.ts +13 -0
- package/dist-types/utils/index.d.ts +4 -4
- package/dist-types/utils/merge-slot-props.d.ts +17 -3
- package/dist-types/utils/merge-styles.d.ts +1 -1
- package/dist-types/utils/theme-utils.d.ts +18 -3
- package/dist-types/version.d.ts +1 -1
- package/docs/README.md +97 -70
- package/docs/assets/v3/bottom-bar.png +0 -0
- package/docs/assets/v3/brand-card.png +0 -0
- package/docs/assets/v3/brand-preferences.png +0 -0
- package/docs/assets/v3/choice-wall.png +0 -0
- package/docs/assets/v3/headless-bar-html.png +0 -0
- package/docs/assets/v3/headless-bar-mobile.png +0 -0
- package/docs/assets/v3/headless-bar.png +0 -0
- package/docs/assets/v3/slim-bar.png +0 -0
- package/docs/concepts/choose-your-setup.md +141 -0
- package/docs/concepts/consent-categories.md +84 -0
- package/docs/concepts/consent-state.md +421 -0
- package/docs/concepts/data-fetching.md +284 -0
- package/docs/concepts/how-consent-works.md +123 -0
- package/docs/concepts/modes.md +281 -0
- package/docs/{frameworks/react/concepts/policy-presets.md → concepts/policies.md} +8 -60
- package/docs/customization/class-names.md +202 -0
- package/docs/customization/dark-mode.md +157 -0
- package/docs/customization/motion.md +128 -0
- package/docs/customization/overview.md +68 -33
- package/docs/customization/recipes.md +838 -47
- package/docs/customization/slots.md +217 -35
- package/docs/customization/stylesheets.md +248 -0
- package/docs/customization/tailwind.md +863 -0
- package/docs/customization/tokens.md +167 -36
- package/docs/customization/translations.md +87 -3
- package/docs/frameworks/react/callbacks.md +118 -0
- package/docs/frameworks/react/clear-on-revocation.md +106 -0
- package/docs/frameworks/react/components/consent-banner.md +48 -27
- package/docs/frameworks/react/components/consent-dialog-link.md +13 -11
- package/docs/frameworks/react/components/consent-dialog-trigger.md +86 -76
- package/docs/frameworks/react/components/consent-dialog.md +111 -58
- package/docs/frameworks/react/components/{frame.md → consent-gate.md} +70 -49
- package/docs/frameworks/react/components/consent-provider.md +143 -0
- package/docs/frameworks/react/components/consent-widget.md +69 -24
- package/docs/frameworks/react/components/dev-tools.md +76 -85
- package/docs/frameworks/react/components.md +113 -0
- package/docs/frameworks/react/compose.md +354 -0
- package/docs/frameworks/react/content-security-policy.md +149 -0
- package/docs/frameworks/react/customize.md +258 -0
- package/docs/frameworks/react/embeds.md +89 -0
- package/docs/frameworks/react/gpp.md +163 -0
- package/docs/frameworks/react/headless.md +4 -4
- package/docs/frameworks/react/hooks.md +70 -0
- package/docs/frameworks/react/iab.md +278 -0
- package/docs/frameworks/react/network-blocker.md +140 -0
- package/docs/frameworks/react/quickstart.md +171 -107
- package/docs/frameworks/react/rendering.md +285 -0
- package/docs/frameworks/react/scripts.md +114 -0
- package/docs/frameworks/react/translations.md +155 -0
- package/docs/frameworks/react/troubleshooting.md +189 -61
- package/docs/frameworks/react/upgrade-v3.md +652 -0
- package/docs/frameworks/react/vendor-consent.md +188 -0
- package/docs/guides/banner-experiments.md +688 -0
- package/docs/guides/troubleshooting.md +192 -54
- package/docs/guides/verify-consent.md +96 -49
- package/docs/integrations/adobe-analytics.md +177 -183
- package/docs/integrations/ahrefs-analytics.md +162 -178
- package/docs/integrations/amplitude.md +172 -180
- package/docs/integrations/building-integrations.md +137 -33
- package/docs/integrations/clearbit.md +164 -178
- package/docs/integrations/cloudflare-web-analytics.md +166 -180
- package/docs/integrations/cloudflare-zaraz.md +333 -0
- package/docs/integrations/crisp.md +174 -182
- package/docs/integrations/databuddy.md +167 -197
- package/docs/integrations/fathom-analytics.md +168 -180
- package/docs/integrations/front-chat.md +308 -0
- package/docs/integrations/google-maps.md +142 -108
- package/docs/integrations/google-tag-manager.md +258 -185
- package/docs/integrations/google-tag.md +226 -182
- package/docs/integrations/heap.md +173 -179
- package/docs/integrations/hightouch.md +171 -181
- package/docs/integrations/hotjar.md +169 -179
- package/docs/integrations/intercom.md +193 -177
- package/docs/integrations/klaviyo.md +473 -0
- package/docs/integrations/linkedin-insights.md +184 -174
- package/docs/integrations/logrocket.md +170 -180
- package/docs/integrations/matomo-analytics.md +198 -202
- package/docs/integrations/meta-pixel.md +198 -174
- package/docs/integrations/microsoft-clarity.md +173 -179
- package/docs/integrations/microsoft-uet.md +158 -178
- package/docs/integrations/mixpanel-analytics.md +165 -184
- package/docs/integrations/one-dollar-stats.md +292 -0
- package/docs/integrations/openai-pixel.md +214 -325
- package/docs/integrations/overview.md +153 -83
- package/docs/integrations/pinterest-tag.md +315 -0
- package/docs/integrations/pirsch.md +179 -183
- package/docs/integrations/plausible-analytics.md +182 -182
- package/docs/integrations/posthog.md +323 -264
- package/docs/integrations/promptwatch.md +164 -178
- package/docs/integrations/reddit-pixel.md +195 -181
- package/docs/integrations/rudderstack.md +211 -210
- package/docs/integrations/rybbit-analytics.md +181 -184
- package/docs/integrations/segment.md +192 -178
- package/docs/integrations/sentry.md +402 -0
- package/docs/integrations/snapchat-pixel.md +196 -180
- package/docs/integrations/tiktok-pixel.md +181 -174
- package/docs/integrations/umami-analytics.md +173 -182
- package/docs/integrations/vercel-analytics.md +176 -181
- package/docs/integrations/vercel-speed-insights.md +306 -0
- package/docs/integrations/x-pixel.md +186 -174
- package/docs/integrations/youtube.md +150 -111
- package/package.json +48 -17
- package/dist/component-hooks/use-manager.js +0 -2
- package/dist/components/frame/atoms.js +0 -1
- package/dist/components/frame/frame.js +0 -2
- package/dist/components/frame/index.js +0 -2
- package/dist/frame.js +0 -2
- package/dist/ui-save.js +0 -1
- package/dist-types/component-hooks/use-manager.d.ts +0 -40
- package/dist-types/components/frame/atoms.d.ts +0 -11
- package/dist-types/components/frame/frame.d.ts +0 -2
- package/dist-types/components/frame/index.d.ts +0 -24
- package/dist-types/frame.d.ts +0 -1
- package/dist-types/ui-save.d.ts +0 -5
- package/docs/assets/v3/brand-bar.png +0 -0
- package/docs/assets/v3/mobile-card.png +0 -0
- package/docs/assets/v3/preferences.png +0 -0
- package/docs/frameworks/react/components/consent-manager-provider.md +0 -71
- package/docs/frameworks/react/concepts/consent-categories.md +0 -33
- package/docs/frameworks/react/hooks/use-consent-manager/overview.md +0 -58
- package/docs/frameworks/react/iab/overview.md +0 -53
- package/docs/frameworks/react/script-loader.md +0 -63
- package/docs/frameworks/react/styling/overview.md +0 -217
- package/docs/guides/consent-state.md +0 -60
- package/docs/guides/data-fetching.md +0 -163
- package/docs/guides/deployment-modes.md +0 -63
- package/docs/integrations/clear-on-revocation.md +0 -167
- package/docs/upgrade-v3.md +0 -334
- package/readme.json +0 -48
- package/src/iab/styles.css +0 -11
- package/src/styles.css +0 -10
- /package/dist/components/{frame → consent-gate}/types.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{Fragment as
|
|
2
|
+
import{Fragment as o,jsx as t,jsxs as r}from"react/jsx-runtime";import e from"@c15t/ui/styles/components/consent-banner";import{forwardRef as i,useMemo as s}from"react";import{useHeadlessConsentUI as n}from"../../../component-hooks/use-headless-consent-ui.js";import{ConsentTrackingContext as a}from"../../../context/consent-tracking-context.js";import{LocalThemeContext as l}from"../../../context/theme-context.js";import{useActiveUI as m,useHasConsentUI as c,useModel as p,usePolicyRule as d,useTranslations as u}from"../../../hooks.js";import{useIABPolicyGuard as f}from"../../../hooks/use-iab-policy-guard.js";import{useLateEntry as h}from"../../../hooks/use-late-entry.js";import{useTextDirection as j}from"../../../hooks/use-text-direction.js";import{useUIConfig as b}from"../../../ui-config-context.js";import{defaultTranslationConfig as v}from"../../../utils/default-translation-config.js";import{mergeSlotProps as g}from"../../../utils/merge-slot-props.js";import{FIRST_PAINT_SHEETS as k}from"../../shared/first-paint-sheets.js";import{StreamedSurface as y}from"../../shared/streamed-surface.js";import{SurfaceStyles as x,useSurfaceSheetsReady as N}from"../../shared/surface-styles.js";import{ConsentBannerSurfaceContext as S,mirrorDefaultPosition as C,useConsentBannerSurface as $}from"../surface-context.js";import{EarlyTapScript as L}from"./early-tap-script.js";import{Overlay as P}from"./overlay.js";let R=["opt-in","opt-out"],B=i(({asChild:i,children:s,className:n,style:a,className:l,disableAnimation:y,noStyle:S,models:B=R,...F},A)=>{f();let E=m(),{components:V}=b(),q=c(),w=p()??"opt-in",z=d(),D=$(),G=u(),H=j(G?.language??v.defaultLanguage),I=C(D.position,D.positionSource,D.variant,H),J=N(k,S)&&q&&"banner"===E&&B.includes(w),K=h(J)&&!y,M=g(V?.banner?.root,{baseClassName:e.root,className:n||l,noStyle:S,style:a,...F}),O=S?M.className||"":`${M.className||""} ${y?"":`${e.bannerVisible} ${e.bannerEntering}`}`;return J?r(o,{children:[t(L,{}),t(x,{sheets:k,noStyle:S}),t(P,{}),t("div",{ref:A,...M,className:O,"data-variant":D.variant,"data-position":I,"data-blocking":D.blocking?"true":void 0,"data-prompt":z.prompt,"data-model":z.model,"data-entry":K?"late":void 0,"data-testid":"consent-banner-root",dir:H,children:s})]}):null}),F=({children:o,className:r,noStyle:e,disableAnimation:i,scrollLock:m,trapFocus:c,models:p,uiSource:d,variant:u,position:f,blocking:h,...j})=>{let{banner:b}=n({prompt:{blocking:h,position:f,scrollLock:m,trapFocus:c,variant:u}}),v=b.scrollLock,g=b.trapFocus,k=s(()=>({disableAnimation:i,noStyle:e,scrollLock:v,trapFocus:g}),[i,e,v,g]),y=s(()=>({blocking:b.blocking,position:b.position,positionSource:b.positionSource,variant:b.variant}),[b.blocking,b.position,b.positionSource,b.variant]),x=s(()=>({uiSource:d??"banner"}),[d]);return t(a.Provider,{value:x,children:t(l.Provider,{value:k,children:t(S.Provider,{value:y,children:t(B,{disableAnimation:i,className:r,noStyle:e,models:p,...j,children:o})})})})};B.displayName="ConsentBannerRootChildren";let A=o=>t(y,{children:t(F,{...o})}),E=A;export{A as ConsentBannerRoot,E as Root};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as t}from"react/jsx-runtime";import n from"@c15t/ui/styles/components/consent-actions";import o from"@c15t/ui/styles/components/consent-banner";import{forwardRef as r,useRef as
|
|
1
|
+
import{jsx as e,jsxs as t}from"react/jsx-runtime";import n from"@c15t/ui/styles/components/consent-actions";import o from"@c15t/ui/styles/components/consent-banner";import{forwardRef as r,isValidElement as s,useRef as a}from"react";import{useHeadlessConsentUI as i}from"../../component-hooks/use-headless-consent-ui.js";import{useTranslations as l}from"../../component-hooks/use-translations.js";import{useComposedRefs as c}from"../shared/libs/compose-refs.js";import{Slot as d}from"../shared/libs/slot.js";import{usePolicyRule as m,useSetActiveUI as p}from"../../hooks.js";import{useFocusTrap as u}from"../../hooks/use-focus-trap.js";import{useTheme as b}from"../../hooks/use-theme.js";import{useUIConfig as h}from"../../ui-config-context.js";import{getSlotProps as f,mergeSlotProps as C}from"../../utils/merge-slot-props.js";import{Box as B}from"../shared/primitives/box.js";import{ConsentButton as g}from"../shared/primitives/button.js";import{InlineLegalLinks as y}from"../shared/primitives/legal-links/index.js";import{useConsentBannerSurface as j}from"./surface-context.js";import{useBannerCopy as N}from"./use-banner-copy.js";let k={"opt-out":"Do not sell or share my data",preferences:"Manage preferences"},x=r(({children:t,asChild:n,...r},a)=>{let{title:i}=N();return e(B,{ref:a,baseClassName:o.title,"data-testid":"consent-banner-title",slotKey:"banner.title",...r,asChild:!0,children:n&&s(t)?t:e("h2",{children:t??i})})});x.displayName="ConsentBannerTitle";let A=r(({children:n,legalLinks:r,asChild:a,className:i,style:l,noStyle:c,...m},p)=>{let{description:u}=N(),{components:f}=h(),{noStyle:B}=b(),g="banner",j=C(f?.description?.[g],{baseClassName:o.description,className:i,"data-context":g,"data-testid":"consent-banner-description",noStyle:c??B,style:l,...m});return a&&s(n)?e(d,{ref:p,...j,children:n}):t("div",{ref:p,...j,children:[n??u,e(y,{links:r,context:"banner",testIdPrefix:"consent-banner-legal-link"})]})});A.displayName="ConsentBannerDescription";let R=r(({children:t,className:n,style:r,...s},a)=>{let{components:i}=h(),{noStyle:l}=b(),c=C(i?.banner?.actions,{baseClassName:n,noStyle:l,style:r,...s});return e(B,{ref:a,baseClassName:o.footer,"data-testid":"consent-banner-footer",slotKey:"banner.footer",...c,children:t})});R.displayName="ConsentBannerFooter";let S=r(({children:t,...n},r)=>{let{blocking:s}=j(),{title:i}=N(),l=a(null),d=c(l,r);return u(s,l),e(B,{ref:d,tabIndex:-1,baseClassName:o.card,"data-testid":"consent-banner-card",slotKey:"banner.card","aria-label":n["aria-label"]||i,"aria-modal":s?"true":void 0,role:s?"dialog":"region",...n,children:t})});S.displayName="ConsentBannerCard";let v=r(({children:t,...n},r)=>e(B,{ref:r,baseClassName:o.header,"data-testid":"consent-banner-header",slotKey:"banner.header",...n,children:t}));v.displayName="ConsentBannerHeader";let D=r(({children:t,...o},r)=>e(B,{ref:r,baseClassName:n.actionGroup,"data-testid":"consent-banner-footer-sub-group",slotKey:"banner.actionGroup",...o,children:t}));D.displayName="ConsentBannerFooterSubGroup";let z=r(({children:t,...n},o)=>{let{common:r}=l();return e(g,{ref:o,action:"reject-consent",consentAction:"reject","data-testid":"consent-banner-reject-button",closeConsentBanner:!0,...n,children:t??r.rejectAll})});z.displayName="ConsentBannerRejectButton";let F=r(({children:t,...n},o)=>{let{common:r}=l();return e(g,{ref:o,action:"open-consent-dialog",consentAction:"customize","data-testid":"consent-banner-customize-button",...n,children:t??r.customize})});F.displayName="ConsentBannerCustomizeButton";let K=r(({children:t,...n},o)=>{let{common:r}=l(),{noStyle:s}=b();return e(g,{ref:o,action:"accept-consent",consentAction:"accept","data-testid":"consent-banner-accept-button",closeConsentBanner:!0,noStyle:s,...n,children:t??r.acceptAll})});K.displayName="ConsentBannerAcceptButton";let G=r(({children:t,...n},o)=>{let{common:r}=l(),{noStyle:s}=b();return e(g,{ref:o,action:"dismiss-notice",consentAction:"dismiss","data-action":"dismiss","data-testid":"consent-banner-dismiss-button",noStyle:s,...n,children:t??r.acknowledge??r.dismiss})});G.displayName="ConsentBannerDismissButton";let L=r(({right:t,children:n,asChild:r,className:s,style:a,noStyle:i,onClick:c,...u},B)=>{let{rights:g}=l(),y=m(),{components:j}=h(),{noStyle:N}=b(),x=p(),A=("opt-out"===t?g?.optOut:g?.preferences)??k[t];return e(r?d:"button",{ref:B,type:r?void 0:"button",...C(f(j,"banner.rightLink"),{baseClassName:o.rightLink,className:s,noStyle:i??N,style:a}),"data-action":"right","data-right":t,"data-c15t-rights":y.rights.join(" "),"data-testid":`consent-banner-right-link-${t}`,onClick:e=>{c?.(e),e.defaultPrevented||x("dialog")},...u,children:n??A})});L.displayName="ConsentBannerRightLink";let H=r(({rights:t,children:n,...r},s)=>{let{banner:a}=i(),l=(t??a.preferenceControls).filter(e=>"disclosure"!==e);return void 0===n&&0===l.length?null:e(B,{ref:s,baseClassName:o.rights,"data-testid":"consent-banner-rights",slotKey:"banner.rights",...r,children:n??l.map(t=>e(L,{right:t},t))})});H.displayName="ConsentBannerRights";let T=x,I=A,P=R,w=D,M=S,O=v,$=z,q=F,E=K,J=G,Q=H,U=L;export{E as AcceptButton,M as Card,K as ConsentBannerAcceptButton,S as ConsentBannerCard,F as ConsentBannerCustomizeButton,A as ConsentBannerDescription,G as ConsentBannerDismissButton,R as ConsentBannerFooter,D as ConsentBannerFooterSubGroup,v as ConsentBannerHeader,z as ConsentBannerRejectButton,L as ConsentBannerRightLink,H as ConsentBannerRights,x as ConsentBannerTitle,q as CustomizeButton,I as Description,J as DismissButton,P as Footer,w as FooterSubGroup,O as Header,$ as RejectButton,U as RightLink,Q as Rights,T as Title};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as t}from"react/jsx-runtime";import{useHeadlessConsentUI as n}from"../../component-hooks/use-headless-consent-ui.js";import{
|
|
2
|
+
import{jsx as t}from"react/jsx-runtime";import{useHeadlessConsentUI as n}from"../../component-hooks/use-headless-consent-ui.js";import{PolicyActionsRenderer as e}from"../shared/policy-actions.js";import{ConsentBannerAcceptButton as o,ConsentBannerCustomizeButton as r,ConsentBannerDismissButton as s,ConsentBannerFooter as c,ConsentBannerFooterSubGroup as i,ConsentBannerRejectButton as a,ConsentBannerRights as d}from"./components.js";import{resolveBannerPrimaryActions as m}from"./resolve-banner-primary-actions.js";let u=function(n,e){let{key:c,consentAction:i,...d}=e;switch(n){case"accept":return t(o,{consentAction:i,"data-testid":"consent-banner-accept-button",...d},c);case"reject":return t(a,{consentAction:i,"data-testid":"consent-banner-reject-button",...d},c);case"customize":return t(r,{consentAction:i,"data-testid":"consent-banner-customize-button",...d},c);case"dismiss":return t(s,{consentAction:i,"data-testid":"consent-banner-dismiss-button",...d},c);case"save":return null;default:throw Error(`Unhandled consent banner action: ${n}`)}},l=({children:o,renderAction:r})=>{let{banner:s}=n();return t(e,{state:{...s,primaryActions:[...m(s.primaryActions,s.orderedActions)]},leading:void 0===o?t(d,{rights:s.preferenceControls}):o,Footer:c,FooterSubGroup:i,classNames:{},renderAction:r,renderDefaultAction:u})},p=l;export{l as ConsentBannerPolicyActions,p as PolicyActions};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as t,jsxs as n}from"react/jsx-runtime";import e from"@c15t/ui/styles/components/consent-actions";import r from"@c15t/ui/styles/components/consent-banner";import{Fragment as o}from"react";import{useHeadlessConsentUI as i}from"../../component-hooks/use-headless-consent-ui.js";import{Box as
|
|
2
|
+
import{jsx as t,jsxs as n}from"react/jsx-runtime";import e from"@c15t/ui/styles/components/consent-actions";import r from"@c15t/ui/styles/components/consent-banner";import{Fragment as o}from"react";import{useHeadlessConsentUI as i}from"../../component-hooks/use-headless-consent-ui.js";import{Box as s}from"../shared/primitives/box.js";import{BrandingLink as a}from"../shared/ui/branding.js";import{useComponentConfig as c}from"../../hooks/use-component-config.js";import{useIABPolicyGuard as l}from"../../hooks/use-iab-policy-guard.js";import{StreamedSurface as d}from"../shared/streamed-surface.js";import{ConsentBannerRoot as m}from"./atoms/root.js";import{ConsentBannerAcceptButton as p,ConsentBannerCard as u,ConsentBannerCustomizeButton as h,ConsentBannerDescription as b,ConsentBannerDismissButton as f,ConsentBannerFooter as y,ConsentBannerFooterSubGroup as g,ConsentBannerHeader as j,ConsentBannerRejectButton as k,ConsentBannerRights as A,ConsentBannerTitle as v}from"./components.js";import{ErrorBoundary as N}from"./error-boundary.js";import{resolveBannerPrimaryActions as S}from"./resolve-banner-primary-actions.js";let w=({noStyle:d,disableAnimation:w,scrollLock:C,trapFocus:L,title:x,description:z,rejectButtonText:F,customizeButtonText:P,acceptButtonText:B,dismissButtonText:$,legalLinks:G,hideBranding:E=!1,layout:K,direction:R,primaryButton:U,models:q,uiSource:D,variant:H,position:I,blocking:J})=>{l();let{banner:M}=i({prompt:{blocking:J,direction:R,layout:K,position:I,primaryActions:"string"==typeof U?[U]:U,scrollLock:C,trapFocus:L,variant:H}}),O=c({disableAnimation:w,noStyle:d,scrollLock:M.scrollLock,trapFocus:M.trapFocus}),{orderedActions:Q}=M,T=new Set(Q),V=S(M.primaryActions,Q),W=M.actionGroups,X=M.direction,{shouldFillActions:Y}=M,Z=(n,e)=>{if(!T.has(n))return null;let r=V.includes(n);switch(n){case"reject":return t(k,{consentAction:"reject",isPrimary:r,className:e,"data-action":"reject","data-testid":"consent-banner-reject-button",children:F});case"accept":return t(p,{consentAction:"accept",isPrimary:r,className:e,"data-action":"accept","data-testid":"consent-banner-accept-button",children:B});case"customize":return t(h,{consentAction:"customize",isPrimary:r,className:e,"data-action":"customize","data-testid":"consent-banner-customize-button",children:P});case"dismiss":return t(f,{consentAction:"dismiss",isPrimary:r,className:e,"data-action":"dismiss","data-testid":"consent-banner-dismiss-button",children:$});case"save":return null;default:throw Error(`Unhandled consent banner button type: ${n}`)}};return t(N,{fallback:t("div",{children:"Something went wrong with the Consent Banner."}),children:t(m,{...O,models:q,uiSource:D,variant:H,position:I,blocking:J,children:n(s,{baseClassName:r.cardShell,slotKey:"banner.cardShell",children:[t(a,{hideBranding:E,variant:"banner-tag",slotContext:"banner","data-testid":"consent-banner-branding"}),n(u,{children:[n(j,{children:[t(v,{children:x}),t(b,{legalLinks:G,children:z})]}),n(y,{className:e.actionRoot,"data-direction":X,"data-fill":!!Y||void 0,"data-split":W.length>1&&!Y||void 0,children:[t(A,{rights:M.preferenceControls}),W.map((n,r)=>{if(Array.isArray(n)){let i=n.filter(t=>T.has(t));if(0===i.length)return null;let s=n.join("-");return t(g,{className:e.actionGroup,"data-direction":X,"data-fill":!!Y||void 0,children:i.map(n=>t(o,{children:Z(n)},n))},s?`group-${s}`:`group-${r}`)}return T.has(n)?t(o,{children:Z(n)},n):null})]})]})]})})})},C=n=>t(d,{children:t(w,{...n})});export{C as ConsentBanner};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as t from"@c15t/ui/styles/sheets/dialog";import*as s from"@c15t/ui/styles/sheets/first-paint";let e=[s,t];export{e as DIALOG_SHEETS};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as t from"@c15t/ui/styles/sheets/first-paint";let s=[t];export{s as FIRST_PAINT_SHEETS};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as s from"@c15t/ui/styles/sheets/dialog";import*as t from"@c15t/ui/styles/sheets/iab-dialog";import{IAB_FIRST_PAINT_SHEETS as i}from"./iab-first-paint-sheets.js";let e=[...i,s,t];export{e as IAB_DIALOG_SHEETS};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as t from"@c15t/ui/styles/sheets/iab-first-paint";import{FIRST_PAINT_SHEETS as s}from"./first-paint-sheets.js";let i=[...s,t];export{i as IAB_FIRST_PAINT_SHEETS};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useMemo as e}from"react";let o=function(...e){return o=>{for(let s of e){if("function"==typeof s){s(o);continue}s&&"current"in s&&(s.current=o)}}},s=function(s,r){return e(()=>o(s,r),[s,r])};export{o as composeRefs,s as useComposedRefs};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createElement as e,forwardRef as t,isValidElement as r}from"react";let
|
|
1
|
+
import{createElement as e,forwardRef as t,isValidElement as r}from"react";import{composeRefs as o}from"./compose-refs.js";let f=function(e,t){return"function"!=typeof e?t:"function"!=typeof t?e:r=>{t(r),e(r)}},n=function(e,t){let r=Object.getOwnPropertyDescriptor(e,t)?.get;return"function"==typeof r&&!0===r.isReactWarning},s=t(({children:t,...s},p)=>{if(!r(t))return null;let l=t.props,i=n(t.props,"ref")?t.ref:n(t,"ref")?t.props.ref:t.props.ref??t.ref,c={...s,...l,className:[s.className,l.className].filter(Boolean).join(" "),ref:o(p,i),style:{...s.style,...l.style}};for(let[e,t]of Object.entries(s))/^on[A-Z]/u.test(e)&&(c[e]=f(t,l[e]));return e(t.type,{key:t.key??void 0,...c})});s.displayName="Slot";export{s as Slot};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as t}from"react/jsx-runtime";import{forwardRef as e,useCallback as
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{EARLY_TAP_OPT_OUT as o}from"@c15t/core/surface-actions";import{forwardRef as e,useCallback as n}from"react";import{useIdleDialogWarming as r,warmDialogChunk as i}from"../../../chunk-warming.js";import{toSaveUISource as s,useConsentTracking as a}from"../../../context/consent-tracking-context.js";import{useConsentSaveAction as c}from"../../../draft-context.js";import{useDismissNotice as m,useSetActiveUI as d}from"../../../hooks.js";import{useTheme as l}from"../../../hooks/use-theme.js";import{useUIConfig as u}from"../../../ui-config-context.js";import{getSlotProps as f,mergeSlotProps as p}from"../../../utils/merge-slot-props.js";import{Slot as v}from"../libs/slot.js";import*as y from"../ui/button/index.js";let j=["primary","secondary","neutral","consentAction","isPrimary","performDefaultAction"],b={"accept-consent":"accept","dismiss-notice":"dismiss","open-consent-dialog":"customize","reject-consent":"reject"},k=function(t){let{action:o,dataAction:e,ownsClick:n,performDefaultAction:r}=t;return!(!n&&(r||"open-consent-dialog"===o)&&b[o]===e)&&(!0===t.asChild||Object.values(b).includes(String(e)))},g=function(t,o){let e;for(let n of o)t in n&&(e=n[t]);return e},C=function(t){if(t.variant||t.mode)return{mode:t.mode??"stroke",variant:t.variant??"neutral"};let o=t.theme?.consentActions,e=[t.consentAction&&"save"!==t.consentAction?o?.[t.consentAction]:void 0,t.isPrimary?o?.primary:void 0,o?.default,{mode:"stroke",variant:t.isPrimary?"primary":"neutral"}];return{mode:e.find(t=>t?.mode)?.mode??"stroke",variant:e.find(t=>t?.variant)?.variant??"neutral"}},h=e(({asChild:e,className:b,style:h,noStyle:x,action:A,slotKey:P,baseClassName:E,variant:w,mode:N,size:S="small",consentAction:F,isPrimary:O,onClick:q,onFocus:z,onPointerEnter:B,closeConsentBanner:D=!1,closeConsentDialog:V=!1,performDefaultAction:G=!0,category:H,...I},J)=>{var K;let L=c(),{uiSource:M}=a(),Q=n(t=>L(t,s(M)),[L,M]),R=d(),T=m(),{noStyle:U,theme:W}=l(),{components:X}=u(),Y=C({consentAction:F,isPrimary:O,mode:N,theme:W,variant:w}),Z="primary"===Y.variant?"button.primary":"button.secondary",$=p(f(X,P??Z),{baseClassName:[y.buttonVariants({mode:Y.mode,size:S,variant:Y.variant}).root(),E],className:b,noStyle:U||x,style:{...h}});if(!H&&"set-consent"===A)throw Error("Category is required for set-consent action");let _=n(t=>{if(q?.(t),t.defaultPrevented)return;let o="accept-consent"===A||"reject-consent"===A||"custom-consent"===A;if((D||V)&&!o&&R("none"),"open-consent-dialog"===A&&R("dialog"),G&&"open-consent-dialog"!==A)switch(A){case"accept-consent":Q("all");break;case"reject-consent":Q("none");break;case"custom-consent":Q();break;case"dismiss-notice":T();break;case"set-consent":if(!H)throw Error("Category is required for set-consent action");Q({[H]:!0})}},[D,V,q,Q,R,A,H,T,G]),tt="open-consent-dialog"===A;r(tt);let to=z??$.onFocus,te=B??$.onPointerEnter,tn=n(t=>{to?.(t),tt&&i()},[to,tt]),tr=n(t=>{te?.(t),tt&&i()},[te,tt]),ti=e?v:"button",ts=Object.fromEntries(Object.entries(I).filter(([t])=>!j.includes(t))),ta=!(U||x),tc={"data-action":F,type:e?void 0:"button"},tm=[tc,$,ts],td=k({action:A,asChild:e,dataAction:g("data-action",tm),ownsClick:void 0!==(K={asChild:e,onClick:q,type:g("type",tm)}).onClick||!0===K.asChild||"submit"===K.type||"reset"===K.type,performDefaultAction:G})?{[o]:"off"}:void 0;return t(ti,{ref:J,"data-variant":ta?Y.variant:void 0,"data-mode":ta?Y.mode:void 0,"data-size":ta?S:void 0,...tc,...$,onClick:_,onFocus:tn,onPointerEnter:tr,...ts,...td})});h.displayName="ConsentButton";export{h as ConsentButton};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as e}from"react/jsx-runtime";import t from"@c15t/ui/styles/components/legal-links";import{resolveTranslations as l}from"@c15t/ui/utils";import{useContext as n,useMemo as r,useSyncExternalStore as i}from"react";import{KernelContext as s}from"../../../../context.js";import{V3UIConfigContext as
|
|
1
|
+
import{jsxs as e}from"react/jsx-runtime";import t from"@c15t/ui/styles/components/legal-links";import{resolveTranslations as l}from"@c15t/ui/utils";import{useContext as n,useMemo as r,useSyncExternalStore as i}from"react";import{KernelContext as s}from"../../../../context.js";import{useServerSnapshot as o}from"../../../../kernel-selector.js";import{V3UIConfigContext as a,useUIConfig as m}from"../../../../ui-config-context.js";import{defaultTranslationConfig as u}from"../../../../utils/default-translation-config.js";import{mergeSlotProps as c}from"../../../../utils/merge-slot-props.js";let g=()=>()=>void 0,f=function(){let e=n(s),t=o(e),a=i(e?t=>e.subscribe(t):g,()=>e?.getSnapshot().translations??null,()=>t()?.translations??null);return r(()=>a?.translations?a.translations.legalLinks:l({},u).legalLinks,[a])},p=function(e){let t=n(a).legalLinks;return null==e?null:Object.fromEntries(Object.entries(t??{}).filter(([t])=>e.includes(t)))},k=({links:l,context:n,testIdPrefix:r})=>{let i=p(l),s=f(),{components:o}=m(),a=c(o?.["legal-links"]?.root,{}),u=c(o?.link?.[n],{baseClassName:t.legalLink});return i&&0!==Object.keys(i).length?e("span",{...a,children:[" ",Object.entries(i).map(([t,l],n,i)=>l?e("span",{children:[e("a",{href:l.href,target:l.target||"_blank",rel:l.rel||("_blank"===l.target?"noopener noreferrer":void 0),...u,"data-testid":r?`${r}-${t}`:void 0,children:[l.label??s?.[t],n<i.length-1&&","]}),n<i.length-1&&" "]},String(t)):null)]}):null};export{k as InlineLegalLinks,p as useFilteredLegalLinks};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{jsx as e}from"react/jsx-runtime";import{HydrationSnapshotContext as r,StreamedPrefetchContext as t}from"../../context.js";import{useKernel as o}from"../../kernel-selector.js";import*as l from"react";let u="u"<typeof document?l.useEffect:l.useLayoutEffect,n=function(e){if("fulfilled"===e.status)return e.value;throw e},a=function(e){let{use:r}=l;return r?r(e):n(e)},d=({children:l,streamed:n})=>{let d=o(),s=a(n.settled),c=n.snapshotFor(s);return u(()=>{n.adopt(s)},[n,s]),e(r.Provider,{value:c===d.getServerSnapshot()?null:c,children:e(t.Provider,{value:void 0,children:l})})},s=({children:r})=>{let o=(0,l.useContext)(t);return o?e(l.Suspense,{fallback:null,children:e(d,{streamed:o,children:r})}):r};export{s as StreamedSurface,n as readRecorded};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{jsx as e}from"react/jsx-runtime";import{useContext as t,useEffect as r,useSyncExternalStore as n,version as a}from"react";import{GlobalThemeContext as o}from"../../context/theme-context.js";import{useUIConfig as l}from"../../ui-config-context.js";let u=new Map,c=new Set,s=new Map,i=new Set,f=new Set,d=0,y=()=>d,m=()=>0,S=function(){for(let e of(d+=1,f))e()},h=function(e){return f.add(e),()=>{f.delete(e)}},p=function(e){if(c.has(e)||u.has(e))return!0;if("u"<typeof document)return!1;if(document.querySelector(`style[data-href~="${e}"]`))return c.add(e),!0;let t=document.querySelector(`style[data-c15t-styles="${e}"]`);return!!t?.textContent&&(u.set(e,t.textContent),!0)},w=e=>!e.load||i.has(e.id)||p(e.id),x=async function(e,t){try{u.set(e,await t()),i.delete(e)}catch(t){throw s.delete(e),i.add(e),t}finally{S()}},_=async function(e){let t=[];for(let r of e){let{id:e,load:n}=r;if(!n||p(e))continue;let a=s.get(e);a||(a=x(e,n),s.set(e,a)),t.push(a)}try{await Promise.all(t)}catch{}},g=Number.parseInt(a,10)>=19,j=function(e){let{styles:r}=l(),n=t(o);return!1===r||!!e||!!n.noStyle},M=function(e,t){let a=j(t),o=n(h,()=>a||e.every(w),()=>!0);return r(()=>{a||_(e)},[a,e]),o},q=({sheets:t,noStyle:r})=>{let{nonce:a}=l();if(n(h,y,m),j(r))return null;let o=g&&!a;return t.map(t=>{let{css:r}=t;if(t.load){if(!p(t.id))return null;r=u.get(t.id)??""}return o?e("style",{href:t.id,precedence:"c15t",children:r},t.id):e("style",{"data-c15t-styles":t.id,nonce:a,dangerouslySetInnerHTML:{__html:r}},t.id)})};export{q as SurfaceStyles,_ as preloadSurfaceSheets,M as useSurfaceSheetsReady};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as t}from"react/jsx-runtime";import{getDataDisabled as e}from"@c15t/ui/primitives/data-state";import{getDialogState as o,isDialogDismissKey as a}from"@c15t/ui/primitives/dialog";import{createContext as
|
|
2
|
+
import{jsx as t}from"react/jsx-runtime";import{getDataDisabled as e}from"@c15t/ui/primitives/data-state";import{getDialogState as o,isDialogDismissKey as a}from"@c15t/ui/primitives/dialog";import{firstTabbable as l}from"@c15t/ui/utils/dom";import{createContext as i,forwardRef as r,useContext as n,useEffect as s,useId as d,useMemo as u,useRef as c}from"react";import{createPortal as g}from"react-dom";import{Slot as m}from"../../libs/slot.js";import{useControllableState as p}from"../../libs/use-controllable-state.js";import{useFocusTrap as f}from"../../../../hooks/use-focus-trap.js";import{useScrollLock as b}from"../../../../hooks/use-scroll-lock.js";let D=i(null),y=function(){let t=n(D);if(!t)throw Error("Dialog components must be used within DialogRoot");return t},h=({children:e,defaultOpen:o=!1,onOpenChange:a,open:l})=>{let i=d().replace(/:/gu,""),r=c(null),[n,g]=p({defaultValue:o,onChange:a,value:l});s(()=>{if("u">typeof document){if(n){r.current=document.activeElement;return}r.current?.focus()}},[n]);let m=u(()=>({contentId:`c15t-dialog-content-${i}`,descriptionId:`c15t-dialog-description-${i}`,open:n,restoreFocusRef:r,setOpen:g,titleId:`c15t-dialog-title-${i}`}),[n,i,r,g]);return t(D.Provider,{value:m,children:e})},v=r(({asChild:e,children:a,onClick:l,...i},r)=>{let{open:n,setOpen:s}=y();return t(e?m:"button",{"aria-expanded":n,"data-slot":"dialog-trigger","data-state":o(n),onClick:t=>{s(!0),l?.(t)},ref:r,...e?i:{type:"button",...i},children:a})});v.displayName="DialogTrigger";let C=({children:t})=>"u"<typeof document?null:g(t,document.body),k=r(({children:e,onClick:a,...l},i)=>{let{open:r,setOpen:n}=y();return r?t("button",{"aria-label":"Dismiss dialog","data-slot":"dialog-overlay","data-state":o(r),onClick:t=>{n(!1),a?.(t)},ref:i,tabIndex:-1,type:"button",...l,children:e}):null});k.displayName="DialogOverlay";let T=r(({children:e,closeOnOutsideClick:i=!0,initialFocusRef:r,onKeyDown:n,onMouseDown:d,...u},g)=>{let{contentId:m,descriptionId:p,open:D,setOpen:h,titleId:v}=y(),C=c(null);return(f(D,C,{initialFocus:"first-tabbable"}),b(D),s(()=>{if(D){let t=C.current,e=r?.current??(t?l(t):void 0)??t;e?.focus()}},[r,D]),D)?t("dialog",{"aria-describedby":p,"aria-labelledby":v,"aria-modal":"true","data-slot":"dialog-content","data-state":o(D),id:m,...{onKeyDown:t=>{a(t.key)&&(t.preventDefault(),h(!1)),n?.(t)},onMouseDown:t=>{i&&t.target===t.currentTarget&&h(!1),d?.(t)}},ref:t=>{C.current=t,"function"==typeof g?g(t):g&&(g.current=t)},open:D,tabIndex:-1,...u,children:e}):null});T.displayName="DialogContent";let N=r(({children:e,...o},a)=>{let{titleId:l}=y();return t("h2",{ref:a,id:l,"data-slot":"dialog-title",...o,children:e})});N.displayName="DialogTitle";let j=r((e,o)=>{let{descriptionId:a}=y();return t("p",{ref:o,id:a,"data-slot":"dialog-description",...e})});j.displayName="DialogDescription";let x=r(({asChild:a,children:l,disabled:i,onClick:r,...n},s)=>{let{open:d,setOpen:u}=y();return t(a?m:"button",{"data-disabled":e(i),"data-slot":"dialog-close","data-state":o(d),disabled:i,onClick:t=>{i||u(!1),r?.(t)},ref:s,...a?n:{type:"button",...n},children:l})});x.displayName="DialogClose";export{x as Close,T as Content,j as Description,k as Overlay,C as Portal,h as Root,N as Title,v as Trigger};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as e,jsxs as r}from"react/jsx-runtime";import{forwardRef as o}from"react";let t=({title:t,iconPath:n})=>{let i=o((o,i)=>r("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,ref:i,...o,children:[t?e("title",{children:t}):null,n]}));return i.displayName=`${t??"Decorative"}Icon`,i};export{t as LucideIcon};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as l,jsxs as t}from"react/jsx-runtime";let
|
|
1
|
+
import{jsx as l,jsxs as t}from"react/jsx-runtime";let c=({title:c="c15t",titleId:e="c15t-icon",...i})=>t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 446 445","aria-labelledby":e,...i,children:[l("title",{id:e,children:c}),l("path",{fill:"currentColor",d:"M223.178.313c39.064 0 70.732 31.668 70.732 70.732-.001 39.064-31.668 70.731-70.732 70.731-12.181 0-23.642-3.079-33.649-8.502l-55.689 55.689a70.267 70.267 0 0 1 5.574 13.441h167.531c8.695-29.217 35.762-50.523 67.804-50.523 39.064 0 70.731 31.668 70.731 70.732s-31.668 70.732-70.731 70.732c-32.042 0-59.108-21.306-67.803-50.523H139.413a70.417 70.417 0 0 1-7.888 17.396l54.046 54.046c10.893-6.851 23.786-10.815 37.605-10.815 39.064 0 70.732 31.669 70.732 70.733 0 39.064-31.668 70.731-70.732 70.731s-70.732-31.667-70.732-70.731c0-10.518 2.296-20.499 6.414-29.471l-57.78-57.78c-8.972 4.117-18.952 6.414-29.47 6.414-39.063 0-70.731-31.668-70.732-70.732 0-39.064 31.669-70.732 70.733-70.732 12.18 0 23.642 3.079 33.649 8.502l55.688-55.688c-5.423-10.007-8.502-21.469-8.502-33.65 0-39.064 31.668-70.733 70.732-70.733Zm0 343.555c-16.742 0-30.314 13.572-30.314 30.314 0 16.741 13.572 30.313 30.314 30.313s30.314-13.572 30.314-30.313c0-16.742-13.572-30.314-30.314-30.314ZM71.611 192.299c-16.742 0-30.315 13.572-30.315 30.314s13.573 30.314 30.315 30.314c16.741 0 30.313-13.572 30.313-30.314 0-16.741-13.572-30.314-30.313-30.314Zm303.138 0c-16.729 0-30.294 13.551-30.315 30.275l.001.039-.001.038c.021 16.725 13.586 30.276 30.315 30.276 16.741 0 30.313-13.572 30.313-30.314 0-16.741-13.572-30.314-30.313-30.314ZM223.178 40.73c-16.742 0-30.314 13.573-30.314 30.315s13.573 30.313 30.314 30.313c16.742 0 30.313-13.572 30.314-30.313 0-16.742-13.572-30.314-30.314-30.315Z"})]}),e=({title:c="INTH",titleId:e="inth-logo",...i})=>t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 88 90",fill:"none","aria-labelledby":e,...i,children:[l("title",{id:e,children:c}),l("path",{fill:"currentColor",d:"M40.9164 0V8.26444H27.6933V26.7966H40.9164V35.0608H6.15594V26.7966H19.3788V8.26444H6.15594V0H40.9164Z"}),l("path",{fill:"currentColor",d:"M72.1149 20.1264V0H80.0343V35.0608H74.2747L54.9798 14.8193V35.0608H47.0604V0H52.964L72.1149 20.1264Z"}),l("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M71.36 41.6H88V89.6H0V41.6H61.12V31.04L71.36 41.6ZM6.15594 48.0891V56.4034H19.1784V83.2H27.4428V56.4034H40.5656V48.0891H6.15594ZM47.0603 48.1391V83.2H55.3247V70.2441H71.7531V83.2H80.0675V48.1391H71.7531V61.9797H55.3247V48.1391H47.0603Z"})]}),i=t=>l(e,{titleId:"inth-full-logo",...t}),o=t=>l(e,{titleId:"inth-icon",...t});export{c as C15TIconOnly,o as InthIconOnly,i as InthLogo};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e}from"react/jsx-runtime";import{getDataDisabled as t}from"@c15t/ui/primitives/data-state";import{PREFERENCE_ITEM_INTERNAL_SLOTS as r,PREFERENCE_ITEM_SLOTS as n,getPreferenceItemState as a,togglePreferenceItemValue as o}from"@c15t/ui/primitives/preference-item";import l from"@c15t/ui/styles/components/preference-item";import{createContext as i,forwardRef as s,useContext as c,useId as m,useMemo as d}from"react";import{useControllableState as
|
|
2
|
+
import{jsx as e}from"react/jsx-runtime";import{getDataDisabled as t}from"@c15t/ui/primitives/data-state";import{PREFERENCE_ITEM_INTERNAL_SLOTS as r,PREFERENCE_ITEM_SLOTS as n,getPreferenceItemState as a,togglePreferenceItemValue as o}from"@c15t/ui/primitives/preference-item";import l from"@c15t/ui/styles/components/preference-item";import{createContext as i,forwardRef as s,useContext as c,useId as m,useMemo as d,useState as f}from"react";import{useControllableState as p}from"../../libs/use-controllable-state.js";import{useTheme as u}from"../../../../hooks/use-theme.js";import{useUIConfig as y}from"../../../../ui-config-context.js";import{getSlotProps as g,mergeSlotProps as I}from"../../../../utils/merge-slot-props.js";let P=()=>({auxiliary:e=>[l.auxiliary,e?.class].filter(Boolean).join(" "),content:e=>[l.content,e?.class].filter(Boolean).join(" "),contentInner:e=>[l.contentInner,e?.class].filter(Boolean).join(" "),contentViewport:e=>[l.contentViewport,e?.class].filter(Boolean).join(" "),control:e=>[l.control,e?.class].filter(Boolean).join(" "),header:e=>[l.header,e?.class].filter(Boolean).join(" "),leading:e=>[l.leading,e?.class].filter(Boolean).join(" "),meta:e=>[l.meta,e?.class].filter(Boolean).join(" "),root:e=>[l.root,e?.class].filter(Boolean).join(" "),title:e=>[l.title,e?.class].filter(Boolean).join(" "),trigger:e=>[l.trigger,e?.class].filter(Boolean).join(" ")}),b=i(null),h=function(){let e=c(b);if(!e)throw Error("PreferenceItem components must be used within PreferenceItemRoot");return e},S=s(({children:r,className:o,defaultOpen:l=!1,disabled:i,noStyle:s,onOpenChange:c,open:f,slotKey:h,...S},j)=>{let{components:C}=y(),{noStyle:N}=u(),v=P(),[x,B]=p({defaultValue:l,onChange:c,value:f}),w=m().replace(/:/gu,""),T=s??N,V=I(g(C,h),{baseClassName:v.root(),className:o,noStyle:T,...S}),R=d(()=>({contentId:`c15t-preference-item-content-${w}`,disabled:i,noStyle:T,open:x,setOpen:B,triggerId:`c15t-preference-item-trigger-${w}`}),[i,T,x,w,B]);return e(b.Provider,{value:R,children:e("div",{...V,ref:j,"data-disabled":t(i),"data-slot":n.root,"data-state":a(x),children:r})})});S.displayName="PreferenceItemRoot";let j=s(({children:r,className:l,noStyle:i,onClick:s,slotKey:c,...m},d)=>{let{components:f}=y(),{noStyle:p}=u(),b=P(),{contentId:S,disabled:j,noStyle:C,open:N,setOpen:v,triggerId:x}=h();return e("button",{...I(g(f,c),{baseClassName:b.trigger(),className:l,noStyle:i??C??p,...m}),ref:d,"aria-controls":S,"aria-disabled":j||void 0,"aria-expanded":N,"data-disabled":t(j),"data-slot":n.trigger,"data-state":a(N),disabled:j,id:x,onClick:e=>{j||v(o(N)),s?.(e)},type:"button",children:r})});j.displayName="PreferenceItemTrigger";let C=function(t,r,n){let a=s(({className:t,noStyle:a,slotKey:o,...l},i)=>{let{components:s}=y(),{noStyle:c}=u(),{noStyle:m}=h(),d=P();return e("div",{...I(g(s,o),{baseClassName:d[n](),className:t,noStyle:a??m??c,...l}),ref:i,"data-slot":r})});return a.displayName=t,a},N=C("PreferenceItemLeading",n.leading,"leading"),v=C("PreferenceItemHeader",n.header,"header"),x=C("PreferenceItemMeta",n.meta,"meta"),B=C("PreferenceItemAuxiliary",n.auxiliary,"auxiliary"),w=C("PreferenceItemControl",n.control,"control"),T=s(({children:t,className:r,noStyle:a,...o},l)=>{let{components:i}=y(),{noStyle:s}=u(),{noStyle:c}=h(),m=P(),{slotKey:d,...f}=o;return e("h3",{...I(g(i,d),{baseClassName:m.title(),className:r,noStyle:a??c??s,...f}),ref:l,"data-slot":n.title,children:t})});T.displayName="PreferenceItemTitle";let V=s(({children:t,className:o,forceMount:l=!1,innerClassName:i,innerSlotKey:s,noStyle:c,slotKey:m,viewportClassName:d,viewportSlotKey:p,...b},S)=>{let{components:j}=y(),{noStyle:C}=u(),N=P(),{contentId:v,noStyle:x,open:B,triggerId:w}=h(),[T,V]=f(B);B&&!T&&V(!0);let R=l||B||T,A=c??x??C,H=I(g(j,m),{baseClassName:N.content(),className:o,noStyle:A,...b}),L=I(g(j,p),{baseClassName:N.contentViewport(),className:d,noStyle:A}),M=I(g(j,s),{baseClassName:N.contentInner(),className:i,noStyle:A});return e("div",{...H,ref:S,"aria-hidden":!B,"aria-labelledby":w,"data-slot":n.content,"data-state":a(B),id:v,inert:!B,children:e("div",{...L,"data-slot":r.contentViewport,children:e("div",{...M,"data-slot":r.contentInner,children:R?t:null})})})});V.displayName="PreferenceItemContent";export{B as Auxiliary,V as Content,w as Control,v as Header,N as Leading,x as Meta,S as Root,T as Title,j as Trigger,P as preferenceItemVariants};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{defaultTheme as t,generateThemeCSS as m}from"@c15t/ui/theme";let r=({theme:r,colorScheme:n,nonce:o})=>e("style",{id:"c15t-theme",nonce:o,dangerouslySetInnerHTML:{__html:m(r??t,n)}});export{r as ConsentTheme};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{createContext as
|
|
2
|
+
import{createContext as n,useContext as e}from"react";let t=n({}),o=()=>e(t),r=function(n){return"banner"===n||"dialog"===n||"widget"===n||"none"===n?n:void 0};export{t as ConsentTrackingContext,r as toSaveUISource,o as useConsentTracking};
|
package/dist/context/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export{HydrationSnapshotContext,KernelContext,ProviderServicesContext,StreamedPrefetchContext}from"../context.js";export{ConsentTrackingContext,toSaveUISource,useConsentTracking}from"./consent-tracking-context.js";export{GlobalThemeContext,LocalThemeContext}from"./theme-context.js";
|
package/dist/context.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createContext as e}from"react";let t=e(null);t.displayName="C15tKernelContext";let
|
|
1
|
+
import{createContext as e}from"react";let t=e(null);t.displayName="C15tKernelContext";let n=e(null),o=e(void 0),r=e(null);export{r as HydrationSnapshotContext,t as KernelContext,n as ProviderServicesContext,o as StreamedPrefetchContext};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{EMPTY_DEVTOOLS_LAUNCHER_SNAPSHOT as e,claimDevToolsLauncher as o,getDevToolsLauncherSnapshot as l,publishDevToolsLauncher as t,subscribeDevToolsLauncher as r}from"@c15t/ui/utils/devtools-launcher";import{useCallback as n,useContext as u,useId as i,useLayoutEffect as s,useMemo as c,useSyncExternalStore as a}from"react";import{KernelContext as m}from"./context.js";let v=()=>e,h=o=>a(n(e=>o?r(o,e):()=>void 0,[o]),n(()=>o?l(o):e,[o]),v),p=()=>null!==h(u(m)).instance,f=()=>{let e=u(m),l=i(),t=h(e);s(()=>{if(e)return o(e,l)},[e,l]);let r=t.owner===l?t.instance:null,{isOpen:a}=t,v=n(e=>r?.dock(e),[r]),p=n(()=>r?.toggle(),[r]);return c(()=>r?{dock:v,isOpen:a,toggle:p}:null,[r,v,a,p])};export{t as publishDevToolsLauncher,f as useDevToolsLauncher,p as useDevToolsLauncherAvailable};
|
package/dist/devtools.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e}from"react/jsx-runtime";import{createDevTools as t}from"@c15t/dev-tools";import{createElement as r,forwardRef as o,useCallback as n,useContext as s,useEffect as l,useLayoutEffect as i,useMemo as
|
|
2
|
+
import{jsx as e}from"react/jsx-runtime";import{createDevTools as t}from"@c15t/dev-tools";import{createElement as r,forwardRef as o,useCallback as n,useContext as s,useEffect as l,useLayoutEffect as i,useMemo as c,useRef as u}from"react";import{TriggerToolbar as a}from"./components/panel-trigger/atoms/toolbar.js";import{registerTriggerToolbar as d}from"./components/panel-trigger/toolbar-loader.js";import{KernelContext as m,ProviderServicesContext as f}from"./context.js";import{publishDevToolsLauncher as g}from"./devtools-launcher.js";import{useIsHydrated as v}from"./hooks/use-is-hydrated.js";let p=e=>{if(!e)throw Error("c15t: DevTools must be rendered inside <ConsentProvider> from @c15t/react.");return e},C=(e,t)=>{let r=v(),o=u(e);i(()=>{o.current=e},[e]);let n=r&&!t&&e?JSON.stringify([...new Set(e())].sort()):void 0;return c(()=>{if(void 0===n)return;let e=JSON.parse(n);return()=>o.current?.()??e},[n])},h=(e,t)=>{let r=u({clearRecords:e,getPresentation:t});i(()=>{r.current={clearRecords:e,getPresentation:t}},[e,t]);let o=void 0!==e,n=void 0!==t;return c(()=>({clearRecords:o?()=>r.current.clearRecords?.():void 0,getPresentation:n?()=>r.current.getPresentation?.():void 0}),[o,n])},y=({disabled:e=!1,clearRecords:r,getPresentation:o,defaultOpen:n,defaultTab:i,getConsentCategories:c,maxEvents:u,position:v,shadow:y})=>{let D=s(f),P=h(r??D?.clearRecords,o??D?.getPresentation),T=s(m),j=e?null:p(T),S=C(c??D?.getConsentCategories,e);return l(()=>{d(a)},[]),l(()=>{if(!j)return;let e=t({...P,defaultOpen:n,defaultTab:i,getConsentCategories:S,kernel:j,maxEvents:u,position:v,shadow:y}),r=g(j,e);return()=>{r(),e.destroy()}},[n,i,S,P,j,u,v,y]),null},D=y,P=y,T={height:"100%",minHeight:0,width:"100%"},j=o(function({disabled:r=!1,clearRecords:o,getPresentation:l,defaultTab:c,getConsentCategories:a,maxEvents:d,style:g,theme:v,...y},D){let P=s(f),j=h(o??P?.clearRecords,l??P?.getPresentation),S=s(m),b=r?null:p(S),R=C(a??P?.getConsentCategories,r),k=u(null),w=n(e=>{k.current=e;let t=((e,t)=>{if("function"==typeof e)return e(t);e&&(e.current=t)})(D,e);if("function"==typeof t)return()=>{k.current=null,t()}},[D]);return i(()=>{let e=k.current;if(!b||!e)return;let r=t({...j,container:e,defaultTab:c,embedded:!0,getConsentCategories:R,kernel:b,maxEvents:d});return()=>r.destroy()},[c,R,j,b,d]),e("div",{...y,ref:w,style:{...T,...v?{"--c15t-dev-tools-color-scheme":v}:void 0,...g}})}),S=(e={})=>{let{id:t="c15t",name:o="c15t",defaultOpen:n=!1,...s}=e;return{defaultOpen:n,id:t,name:o,render:(e,t)=>r(j,{...s,theme:("string"==typeof t?t:t?.theme)??s.theme})}},b=S;export{P as C15TDevTools,y as ConsentDevTools,D as DevTools,S as c15tDevtools,b as c15tDevtoolsPlugin,j as C15tTanStackDevtoolsPanel};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{saveConsentSurface as e}from"@c15t/core/surface-actions";import{createContext as t,useCallback as r,useContext as o}from"react";import{KernelContext as n,ProviderServicesContext as s}from"./context.js";import{useResolvedPresentation as a}from"./hooks.js";import{useCommittedRef as i}from"./hooks/use-committed-ref.js";let u=t(null),f={ok:!1},c=function(){let e=o(n);if(!e)throw Error("Consent drafts require a ConsentProvider.");return e},l=function(e){let t=i(c());return r(()=>t.current===e,[t,e])},d=async function(e,t,r,o){let{createPreferenceDraft:n}=await import("@c15t/core/preference-draft");return n(e,{defaults:t}).save({categories:r,uiSource:o})},m=function(){let t=c(),n=o(s),i=o(u),m=i?.kernel===t?i:null,v=a()?.preferences?.defaults,p=l(t);return r((r,o)=>{if(!p())return Promise.resolve(f);let s=n?.getConsentCategories(),a="all"===r||"none"===r;return e(t,()=>m&&(a||void 0===r)?m.save({categories:s,input:r,uiSource:o}):void 0===r?d(t,v,s,o):t.commands.save(r,{...void 0!==s&&{categories:s},...void 0!==o&&{uiSource:o}}),()=>void 0!==r||!m?.getState().isDirty)},[v,m,p,t,n])};export{u as DraftContext,f as REFUSED,m as useConsentSaveAction,c as useDraftKernel,l as useKernelGuard};
|
package/dist/draft.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e}from"react/jsx-runtime";import{
|
|
2
|
+
import{jsx as e}from"react/jsx-runtime";import{createPreferenceDraft as t}from"@c15t/core/preference-draft";import{useContext as r,useEffect as n,useMemo as s,useState as a,useSyncExternalStore as f}from"react";import{DraftContext as o,REFUSED as u,useDraftKernel as l,useKernelGuard as c}from"./draft-context.js";import{useResolvedPresentation as d}from"./hooks.js";let i=function(e,r){let[s,f]=a(()=>({draft:t(e,{defaults:r}),kernel:e}));if(n(()=>{s.draft.setDefaults(r)},[s.draft,r]),s.kernel===e)return s.draft;let o={draft:t(e,{defaults:r}),kernel:e};return f(o),o.draft},p=({children:t,initial:n})=>{let s=l(),a=r(o),f=d(),u=i(s,n??f?.preferences?.defaults),c=a&&!n&&a.kernel===s?a:u;return e(o.Provider,{value:c,children:t})},m=function(){let e=l(),t=r(o),n=i(e,d()?.preferences?.defaults);return t?.kernel===e?t:n},D=function(e){let t=f(e.subscribe,e.getState,e.getState),r=c(e.kernel);return s(()=>{let n=e=>(...t)=>{r()&&e(...t)};return{...t,acceptAll:n(e.acceptAll),rejectAll:n(e.rejectAll),reset:n(e.reset),save:()=>r()?e.save():Promise.resolve(u),set:n(e.set),setVendor:n(e.setVendor),update:n(e.update)}},[e,r,t])},C=function(){return m()},S=function(e,t){let r=()=>t(e.getState());return f(e.subscribe,r,r)},v=function(){return D(m())},j=function(){let{isDirty:e,isStale:t,reset:r,save:n,setVendor:a,vendors:f}=D(m());return s(()=>({isDirty:e,isStale:t,reset:r,save:n,setVendor:a,vendors:f}),[e,t,r,n,a,f])};export{p as ConsentDraftProvider,v as useConsentDraft,S as useConsentDraftSlice,C as useConsentDraftStore,j as useVendorDraft};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as
|
|
2
|
+
import{jsx as e}from"react/jsx-runtime";import{useCallback as r,useEffect as t,useMemo as i,useState as o,useSyncExternalStore as n}from"react";import{IABContext as a}from"./context/iab-context-value.js";import{useCommittedRef as c}from"./hooks/use-committed-ref.js";let u=function(){return null},s=({runtime:s,children:l})=>{let[m,d]=o("purposes"),f=n(e=>s.subscribe(e),()=>s.iab,u),p=i(()=>{let e,r,t;return e=!1,r=!1,{actions:t=[],activate:()=>{e=!0,r=!1},deactivate:()=>{e=!1,queueMicrotask(()=>{if(!e)for(let e of(r=!0,t.splice(0)))e.cancel()})},isClosed:()=>r,runtime:s}},[s]),v=c(p);t(()=>{p.activate();let e=()=>{let e=p.runtime.iab;if(e)for(let r of p.actions.splice(0))r.run(e)},r=p.runtime.subscribe(e);return e(),()=>{r(),p.deactivate()}},[p]);let b=r(e=>{let r=new Promise((r,t)=>{let i=()=>t(new DOMException("External IAB provider unmounted or changed runtimes.","AbortError"));if(p.isClosed()||v.current!==p)return void i();let o=async i=>{try{await e(i),r()}catch(e){t(e)}},n=p.runtime.iab;n?o(n):p.actions.push({cancel:i,run:o})});return r.catch(()=>void 0),r},[v,p]),x=i(()=>({handle:f,run:b,setTab:d,tab:m}),[f,b,m]);return e(a.Provider,{value:x,children:l})};export{s as ExternalIABProvider};
|
package/dist/gpp.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{createGPP as t}from"@c15t/iab/gpp";import{useContext as r,useEffect as e}from"react";import{KernelContext as o}from"./context.js";let n=({cmpId:n,mspaMode:i,optOutCategories:s,tcf:l,usApproach:c,usFallback:p})=>{let m=r(o);if(!m)throw Error("c15t: ConsentGPP must be rendered inside <ConsentProvider> from @c15t/react.");let a=s?.join(",");return e(()=>{let r=null;try{r=t({cmpId:n,kernel:m,mspaMode:i,optOutCategories:a?.split(","),tcf:l,usApproach:c,usFallback:p})}catch(t){console.error("c15t: GPP was not installed.",t)}return()=>r?.dispose()},[a,n,m,i,l,c,p]),null};export{n as ConsentGPP};
|
package/dist/headless.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{defaultTranslationConfig,detectBrowserLanguage,mergeTranslationConfigs,prepareTranslationConfig}from"@c15t/core";export{useConsentDialogTrigger}from"./component-hooks/use-panel-trigger.js";export{
|
|
1
|
+
export{defaultTranslationConfig,detectBrowserLanguage,mergeTranslationConfigs,prepareTranslationConfig}from"@c15t/core";export{useConsentDialogTrigger}from"./component-hooks/use-panel-trigger.js";export{useHeadlessConsentUI}from"./component-hooks/use-headless-consent-ui.js";export{useTranslations}from"./component-hooks/use-translations.js";export{useColorScheme}from"./hooks/use-color-scheme.js";export{useFocusTrap}from"./hooks/use-focus-trap.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{setupColorScheme as e}from"@c15t/ui/utils";import{useEffect as o}from"react";let r=function(r){o(()=>{if(null!==r)return e(r)},[r])};export{r as useColorScheme};
|
|
2
|
+
import{setupColorScheme as e}from"@c15t/ui/utils/color-scheme";import{useEffect as o}from"react";let r=function(r){o(()=>{if(null!==r)return e(r)},[r])};export{r as useColorScheme};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{setupFocusTrap as r}from"@c15t/ui/utils/dom";import{useEffect as t}from"react";let u=function(u,o){t(()=>{if(u&&o&&o.current)return r(o.current)},[u,o])};export{u as useFocusTrap};
|
|
2
|
+
import{setupFocusTrap as r}from"@c15t/ui/utils/dom";import{useEffect as t}from"react";let u=function(u,o,e){let c=e?.initialFocus;t(()=>{if(u&&o&&o.current)return r(o.current,{initialFocus:c})},[u,o,c])};export{u as useFocusTrap};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{
|
|
2
|
+
import{saveIABConsentSurface as e}from"@c15t/core/surface-actions";import{resolveIABBannerSummary as r}from"@c15t/iab/headless";import{useCallback as a,useMemo as t}from"react";import{useKernel as c}from"../kernel-selector.js";import{useIABConsentManager as s}from"./use-iab-manager.js";let o=function(){let{activeUI:o,model:n,iab:i,policyBanner:{scrollLock:l},policyDialog:{scrollLock:u},setActiveUI:b}=s(),p=!!i?.config.enabled,d=c(),m=t(()=>r(i),[i]),f=a(e=>{b("banner",e)},[b]),g=a(e=>{e?.tab&&i?.setPreferenceCenterTab(e.tab),b("dialog")},[i,b]),j=a(()=>{g({tab:"purposes"})},[g]),L=a(()=>{g({tab:"vendors"})},[g]),k=a(()=>{b("none")},[b]),_=a(async r=>{i&&("accept"===r?i.acceptAll():"reject"===r&&i.rejectAll(),await e(d,i.save))},[i,d]),h=a(()=>_("accept"),[_]),v=a(()=>_("reject"),[_]),A=a(()=>_(),[_]),C=a(e=>{switch(e){case"accept":return h();case"reject":return v();case"customize":return j();default:return}},[h,j,v]),I=a(e=>{switch(e){case"accept":return h();case"reject":return v();case"customize":return A();default:return}},[h,v,A]);return{acceptAll:h,activeUI:o,banner:{...m,isVisible:"banner"===o&&"iab"===n&&p,scrollLock:l},closeUI:k,dialog:{activeTab:i?.preferenceCenterTab??"purposes",isLoading:!!(i?.isLoadingGVL||!i?.gvl),isVisible:"dialog"===o&&"iab"===n&&p,scrollLock:u},iab:i,isIABEnabled:p,model:n,openBanner:f,openDialog:g,openPurposesDialog:j,openVendorsDialog:L,performBannerAction:C,performDialogAction:I,rejectAll:v,savePreferences:A}};export{o as useHeadlessIABConsentUI};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{IABUnavailableError as r,policyNeedsIAB as o}from"@c15t/core";import{useContext as i}from"react";import{IABContext as e}from"../context/iab-context-value.js";import{useKernelSelector as a}from"../kernel-selector.js";let t=Symbol.for("c15t.react.iab-provider"),c=function(){globalThis[t]=!0},n=function(){return new r("no <IABProvider> is mounted","Wrap your IAB consent UI in <IABProvider> from '@c15t/react/iab' (or 'c15t/react/iab')")},s=function(){let r=i(e);if(a(o)&&null===r&&!0!==globalThis[t])throw n()};export{c as markIABProviderLoaded,n as missingIABProviderError,s as useIABPolicyGuard};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{isLateEntry as t}from"@c15t/ui/utils/late-entry";import{useState as e}from"react";import{useIsHydrated as r}from"./use-is-hydrated.js";let a=function(a){let l=r(),n=()=>({late:a&&l&&t(),shown:a}),[o,s]=e(n);if(o.shown!==a){let t=n();return s(t),t.late}return o.late};export{a as useLateEntry};
|
package/dist/hooks.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{applyExperimentAssignment as e,applyExperimentTheme as s,isVendorAllowed as o}from"@c15t/core";import{hasConsentPreferences as n,hasConsentUI as t,showConsentSurface as u}from"@c15t/core/surface-actions";import{useCallback as r,useContext as i,useMemo as a,useSyncExternalStore as c}from"react";import{ProviderServicesContext as f}from"./context.js";import{useGateSelector as l,useKernel as h,useKernelSelector as d,useServerSnapshot as m}from"./kernel-selector.js";import{useUIConfig as k}from"./ui-config-context.js";let p=function(){let e=h();return c(s=>e.subscribe(s),()=>e.getSnapshot(),m(e))},_=function(e){return d(s=>s.effectivePermissions[e])},C=function(){return d(e=>e.effectivePermissions)},g=function(){return d(e=>e.overrides)},P=function(){return d(e=>e.user)},v=function(){return d(e=>e.location)},S=function(){return d(e=>e.translations)},y=function(){return d(e=>e.branding)},I=function(){return d(e=>"matched"===e.resolution.status)},R=function(){return d(t)},b=function(){return d(n)},A=function(){return d(e=>"matched"===e.resolution.status?e.model:null)},x=function(){return d(e=>e.activeUI)},U=function(){return d(e=>e.policyRule.scope)},E=function(){return d(e=>e.policyRule.scopeMode)},T=function(){return d(e=>e.iab)},V=function(){return d(e=>e.iab?.enabled??!1)},D=function(e){let s=String(e);return d(e=>e.iab?.vendorConsents[s]??!1)},O=function(e){return d(s=>s.iab?.purposeConsents[e]??!1)},B=function(e){return d(s=>s.iab?.specialFeatureOptIns[e]??!1)},H=function(){return d(e=>e.iab?.tcString??null)},L=[],M=function(){return d(e=>"iab"===e.model?L:e.vendors?.declared??L)},N=function(){return d(e=>e.vendorChoice)},j=function(e){return l((s,n)=>o(s,e,n))},q=function(){return h().set.registerConsentCategories},F=function(){return h().set.overrides},w=function(){let e=h(),s=i(f);return r(o=>{s?s.setLanguage(o):o!==e.getSnapshot().overrides.language&&(e.set.language(o),e.commands.init())},[e,s])},z=function(){let e=h();return r(s=>u(e,s),[e])},G=function(){return h().commands.save},J=function(){let e=h();return r(s=>e.events.on("permissions:changed",({snapshot:e})=>s(e.effectivePermissions)),[e])},K=function(){return h().commands.identify},Q=function(){return h().commands.init},W=function(){return d(e=>e.explicitChoice)},X=function(){return d(e=>e.effectivePermissions)},Y=function(){return d(e=>e.promptRequirement)},Z=function(){return d(e=>e.noticeDismissal)},$=function(){return d(e=>e.privacySignals)},ee=function(){return d(e=>e.resolution)},es=function(){return d(e=>e.policyRule)},eo=function(){return d(e=>e.restrictions)},en=function(){return h().commands.dismissNotice},et=function(){return d(e=>e.experiment)},eu=function(){let{experiment:s,presentation:o}=k(),n=et();return a(()=>e(o,s,n),[o,s,n])},er=function(){let{experiment:e,theme:o}=k(),n=et();return a(()=>s(o,e,n),[o,e,n])},ei={},ea={},ec=function(){return eu()?.prompt??ei},ef=function(){return eu()?.preferences??ea};export{x as useActiveUI,y as useBranding,_ as useConsent,C as useConsents,M as useDeclaredVendors,en as useDismissNotice,X as useEffectivePermissions,et as useExperiment,W as useExplicitChoice,I as useHasConsentPolicy,b as useHasConsentPreferences,R as useHasConsentUI,V as useIABEnabled,T as useIABSnapshot,K as useIdentify,Q as useInit,v as useLocation,A as useModel,Z as useNoticeDismissal,g as useOverrides,U as usePolicyCategories,ee as usePolicyResolution,es as usePolicyRule,E as usePolicyScopeMode,ef as usePreferencesPresentation,$ as usePrivacySignals,ec as usePromptPresentation,Y as usePromptRequirement,O as usePurposeConsent,q as useRegisterConsentCategories,eu as useResolvedPresentation,er as useResolvedTheme,eo as useRestrictions,G as useSaveConsents,z as useSetActiveUI,w as useSetLanguage,F as useSetOverrides,p as useSnapshot,B as useSpecialFeatureOptIn,J as useSubscribeToConsentChanges,H as useTCString,S as useTranslations,P as useUser,j as useVendorAllowed,N as useVendorChoice,D as useVendorConsent};
|