@c15t/react 3.0.0-alpha.0 → 3.0.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +96 -69
- package/README.md +21 -17
- package/SKILL.md +34 -0
- package/dist/aggregate-components.js +1 -1
- package/dist/chunk-warming.js +1 -1
- package/dist/component-hooks/use-headless-consent-ui.js +1 -1
- package/dist/component-hooks/use-headless-iab-consent-ui.js +1 -1
- package/dist/component-hooks/use-panel-trigger.js +1 -1
- package/dist/components/consent-gate/atoms.js +1 -0
- package/dist/components/consent-gate/consent-gate.js +2 -0
- package/dist/components/consent-gate/frame.js +2 -0
- package/dist/components/consent-gate/index.js +2 -0
- package/dist/components/consent-preferences-link/consent-preferences-link.js +1 -1
- package/dist/components/iab-panel/atoms/card.js +1 -1
- package/dist/components/iab-panel/atoms/feature-item.js +2 -0
- package/dist/components/iab-panel/atoms/header.js +1 -1
- package/dist/components/iab-panel/atoms/purpose-item.js +1 -1
- package/dist/components/iab-panel/atoms/root.js +1 -1
- package/dist/components/iab-panel/atoms/stack-item.js +1 -1
- package/dist/components/iab-panel/atoms/vendor-list.js +1 -1
- package/dist/components/iab-panel/hooks/use-gvl-data.js +1 -1
- package/dist/components/iab-panel/iab-panel.js +1 -1
- package/dist/components/iab-panel/index.js +1 -1
- package/dist/components/iab-prompt/atoms/overlay.js +1 -1
- package/dist/components/iab-prompt/atoms/root.js +1 -1
- package/dist/components/panel/atoms/card.js +1 -1
- package/dist/components/panel/atoms/overlay.js +1 -1
- package/dist/components/panel/atoms/root.js +1 -1
- package/dist/components/panel/panel.js +1 -1
- package/dist/components/panel-trigger/atoms/button.js +1 -1
- package/dist/components/panel-trigger/atoms/icon.js +1 -1
- package/dist/components/panel-trigger/atoms/root.js +1 -1
- package/dist/components/panel-trigger/atoms/toolbar.js +1 -1
- package/dist/components/panel-trigger/atoms/trigger-icons.js +1 -0
- package/dist/components/panel-trigger/panel-trigger-toolbar.js +1 -1
- package/dist/components/panel-trigger/panel-trigger.js +1 -1
- package/dist/components/preferences/atoms/accordion.js +1 -1
- package/dist/components/preferences/atoms/root.js +1 -1
- package/dist/components/preferences/atoms/vendor-list.js +1 -0
- package/dist/components/preferences/index.js +1 -1
- package/dist/components/prompt/atoms/early-tap-script.js +2 -0
- package/dist/components/prompt/atoms/overlay.js +1 -1
- package/dist/components/prompt/atoms/root.js +1 -1
- package/dist/components/prompt/components.js +1 -1
- package/dist/components/prompt/policy-actions.js +1 -1
- package/dist/components/prompt/prompt.js +1 -1
- package/dist/components/shared/dialog-sheets.js +1 -0
- package/dist/components/shared/first-paint-sheets.js +1 -0
- package/dist/components/shared/iab-dialog-sheets.js +1 -0
- package/dist/components/shared/iab-first-paint-sheets.js +1 -0
- package/dist/components/shared/libs/compose-refs.js +1 -0
- package/dist/components/shared/libs/slot.js +1 -1
- package/dist/components/shared/primitives/button.js +1 -1
- package/dist/components/shared/primitives/legal-links/index.js +1 -1
- package/dist/components/shared/streamed-surface.js +2 -0
- package/dist/components/shared/surface-styles.js +2 -0
- package/dist/components/shared/ui/dialog/dialog.js +1 -1
- package/dist/components/shared/ui/icon.js +1 -1
- package/dist/components/shared/ui/logo.js +1 -1
- package/dist/components/shared/ui/preference-item/preference-item.js +1 -1
- package/dist/consent-gate.js +2 -0
- package/dist/consent-theme.js +1 -0
- package/dist/context/consent-tracking-context.js +1 -1
- package/dist/context/index.js +1 -1
- package/dist/context.js +1 -1
- package/dist/devtools-launcher.js +2 -0
- package/dist/devtools.js +1 -1
- package/dist/draft-context.js +2 -0
- package/dist/draft.js +1 -1
- package/dist/external-iab-context.js +1 -1
- package/dist/gpp.js +2 -0
- package/dist/headless.js +1 -1
- package/dist/hooks/use-color-scheme.js +1 -1
- package/dist/hooks/use-committed-ref.js +2 -0
- package/dist/hooks/use-focus-trap.js +1 -1
- package/dist/hooks/use-headless-iab-consent-ui.js +1 -1
- package/dist/hooks/use-iab-policy-guard.js +1 -0
- package/dist/hooks/use-late-entry.js +2 -0
- package/dist/hooks.js +1 -1
- package/dist/iab/styles.tw3.css +5 -151
- package/dist/iab-context.js +1 -1
- package/dist/index-parts/consent-banner.js +1 -0
- package/dist/index-parts/consent-dialog-link.js +1 -0
- package/dist/index-parts/consent-dialog-trigger.js +1 -0
- package/dist/index-parts/consent-dialog.js +1 -0
- package/dist/index-parts/consent-gate.js +1 -0
- package/dist/index-parts/core.js +1 -0
- package/dist/index-parts/draft.js +1 -0
- package/dist/index-parts/frame.js +1 -0
- package/dist/index-parts/hooks.js +1 -0
- package/dist/index-parts/hosted.js +1 -0
- package/dist/index-parts/module-hooks.js +1 -0
- package/dist/index-parts/offline.js +1 -0
- package/dist/index-parts/presets.js +1 -0
- package/dist/index-parts/provider.js +1 -0
- package/dist/index-parts/theme.js +1 -0
- package/dist/index-parts/translations.js +1 -0
- package/dist/index.js +1 -1
- package/dist/kernel-selector.js +1 -0
- package/dist/modes.js +1 -0
- package/dist/module-hooks/iframe-blocker.js +1 -1
- package/dist/module-hooks/network-blocker.js +1 -1
- package/dist/module-hooks/network-hold.js +2 -0
- package/dist/module-hooks/persistence.js +1 -1
- package/dist/panel-link.js +1 -1
- package/dist/panel-trigger.js +1 -1
- package/dist/panel.js +1 -1
- package/dist/postcss-tailwind3.js +1 -0
- package/dist/preferences.js +1 -2
- package/dist/provider.js +1 -1
- package/dist/server/fetch-ssr-data.js +1 -1
- package/dist/server/headers.js +1 -1
- package/dist/server/normalize-url.js +1 -1
- package/dist/styles.tw3.css +35 -159
- package/dist/transports/hosted.js +1 -0
- package/dist/transports/manifest.js +1 -0
- package/dist/transports/offline.js +1 -1
- package/dist/utils/deferred-module.js +2 -0
- package/dist/utils/merge-slot-props.js +1 -1
- package/dist/utils/theme-utils.js +1 -1
- package/dist/version.js +1 -1
- package/dist-types/aggregate-components.d.ts +2 -2
- package/dist-types/chunk-warming.d.ts +45 -8
- package/dist-types/component-hooks/use-headless-consent-ui.d.ts +5 -5
- package/dist-types/component-hooks/use-headless-iab-consent-ui.d.ts +2 -2
- package/dist-types/components/consent-gate/atoms.d.ts +11 -0
- package/dist-types/components/consent-gate/consent-gate.d.ts +2 -0
- package/dist-types/components/consent-gate/frame.d.ts +19 -0
- package/dist-types/components/consent-gate/index.d.ts +25 -0
- package/dist-types/components/{frame → consent-gate}/types.d.ts +7 -7
- package/dist-types/components/consent-preferences-link/consent-preferences-link.d.ts +1 -1
- package/dist-types/components/consent-preferences-link/index.d.ts +1 -1
- package/dist-types/components/iab-panel/atoms/feature-item.d.ts +28 -0
- package/dist-types/components/iab-panel/atoms/purpose-item.d.ts +5 -2
- package/dist-types/components/iab-panel/atoms/stack-item.d.ts +7 -2
- package/dist-types/components/iab-panel/atoms/vendor-list.d.ts +1 -1
- package/dist-types/components/iab-panel/iab-panel.d.ts +3 -3
- package/dist-types/components/iab-panel/index.d.ts +29 -26
- package/dist-types/components/iab-panel/use-iab-translations.d.ts +4 -0
- package/dist-types/components/iab-prompt/iab-prompt.d.ts +3 -3
- package/dist-types/components/iab-prompt/index.d.ts +19 -19
- package/dist-types/components/panel/atoms/card.d.ts +5 -4
- package/dist-types/components/panel/atoms/overlay.d.ts +1 -1
- package/dist-types/components/panel/index.d.ts +8 -8
- package/dist-types/components/panel/panel.d.ts +3 -3
- package/dist-types/components/panel-link/index.d.ts +1 -1
- package/dist-types/components/panel-trigger/atoms/button.d.ts +1 -1
- package/dist-types/components/panel-trigger/atoms/icon.d.ts +1 -1
- package/dist-types/components/panel-trigger/atoms/root.d.ts +2 -2
- package/dist-types/components/panel-trigger/atoms/toolbar.d.ts +2 -2
- package/dist-types/components/panel-trigger/atoms/trigger-icons.d.ts +25 -0
- package/dist-types/components/panel-trigger/index.d.ts +4 -4
- package/dist-types/components/panel-trigger/panel-trigger-toolbar.d.ts +1 -1
- package/dist-types/components/panel-trigger/panel-trigger.d.ts +9 -17
- package/dist-types/components/panel-trigger/types.d.ts +1 -1
- package/dist-types/components/preferences/atoms/accordion.d.ts +6 -4
- package/dist-types/components/preferences/atoms/button.d.ts +1 -1
- package/dist-types/components/preferences/atoms/footer.d.ts +1 -1
- package/dist-types/components/preferences/atoms/root.d.ts +1 -1
- package/dist-types/components/preferences/atoms/vendor-list.d.ts +23 -0
- package/dist-types/components/preferences/index.d.ts +14 -12
- package/dist-types/components/preferences/policy-actions.d.ts +2 -2
- package/dist-types/components/preferences/preferences.d.ts +1 -1
- package/dist-types/components/preferences/types.d.ts +1 -1
- package/dist-types/components/prompt/atoms/early-tap-script.d.ts +17 -0
- package/dist-types/components/prompt/atoms/root.d.ts +4 -0
- package/dist-types/components/prompt/components.d.ts +9 -3
- package/dist-types/components/prompt/index.d.ts +12 -12
- package/dist-types/components/prompt/policy-actions.d.ts +2 -2
- package/dist-types/components/prompt/prompt.d.ts +5 -1
- package/dist-types/components/shared/dialog-sheets.d.ts +9 -0
- package/dist-types/components/shared/first-paint-sheets.d.ts +8 -0
- package/dist-types/components/shared/iab-dialog-sheets.d.ts +3 -0
- package/dist-types/components/shared/iab-first-paint-sheets.d.ts +3 -0
- package/dist-types/components/shared/libs/compose-refs.d.ts +20 -0
- package/dist-types/components/shared/policy-actions.d.ts +2 -2
- package/dist-types/components/shared/primitives/box.d.ts +1 -1
- package/dist-types/components/shared/primitives/button.d.ts +2 -2
- package/dist-types/components/shared/primitives/button.types.d.ts +1 -1
- package/dist-types/components/shared/streamed-surface.d.ts +23 -0
- package/dist-types/components/shared/surface-styles.d.ts +36 -0
- package/dist-types/components/shared/ui/accordion/accordion.d.ts +2 -2
- package/dist-types/components/shared/ui/accordion/index.d.ts +2 -2
- package/dist-types/components/shared/ui/animated-collapse/index.d.ts +2 -2
- package/dist-types/components/shared/ui/branding.d.ts +1 -1
- package/dist-types/components/shared/ui/button/button.d.ts +1 -1
- package/dist-types/components/shared/ui/button/index.d.ts +2 -2
- package/dist-types/components/shared/ui/collapsible/index.d.ts +1 -1
- package/dist-types/components/shared/ui/dialog/index.d.ts +1 -1
- package/dist-types/components/shared/ui/icon.d.ts +2 -1
- package/dist-types/components/shared/ui/logo.d.ts +0 -10
- package/dist-types/components/shared/ui/preference-item/index.d.ts +1 -1
- package/dist-types/components/shared/ui/preference-item/preference-item.d.ts +13 -0
- package/dist-types/components/shared/ui/switch/index.d.ts +2 -2
- package/dist-types/components/shared/ui/switch/switch.d.ts +1 -1
- package/dist-types/components/shared/ui/tabs/index.d.ts +1 -1
- package/dist-types/consent-gate.d.ts +1 -0
- package/dist-types/consent-theme.d.ts +38 -0
- package/dist-types/context/consent-tracking-context.d.ts +10 -0
- package/dist-types/context/index.d.ts +3 -3
- package/dist-types/context/theme-context.d.ts +3 -3
- package/dist-types/context.d.ts +25 -1
- package/dist-types/devtools-launcher.d.ts +29 -0
- package/dist-types/devtools.d.ts +13 -2
- package/dist-types/draft-context.d.ts +31 -0
- package/dist-types/draft.d.ts +81 -9
- package/dist-types/gpp.d.ts +27 -0
- package/dist-types/headless.d.ts +6 -7
- package/dist-types/hooks/use-committed-ref.d.ts +24 -0
- package/dist-types/hooks/use-focus-trap.d.ts +3 -1
- package/dist-types/hooks/use-headless-iab-consent-ui.d.ts +1 -1
- package/dist-types/hooks/use-iab-manager.d.ts +5 -5
- package/dist-types/hooks/use-iab-policy-guard.d.ts +35 -0
- package/dist-types/hooks/use-late-entry.d.ts +14 -0
- package/dist-types/hooks/use-theme.d.ts +1 -1
- package/dist-types/hooks.d.ts +106 -11
- package/dist-types/iab.d.ts +7 -7
- package/dist-types/index-parts/consent-banner.d.ts +7 -0
- package/dist-types/index-parts/consent-dialog-link.d.ts +7 -0
- package/dist-types/index-parts/consent-dialog-trigger.d.ts +7 -0
- package/dist-types/index-parts/consent-dialog.d.ts +7 -0
- package/dist-types/index-parts/consent-gate.d.ts +7 -0
- package/dist-types/index-parts/core.d.ts +7 -0
- package/dist-types/index-parts/draft.d.ts +7 -0
- package/dist-types/index-parts/frame.d.ts +7 -0
- package/dist-types/index-parts/hooks.d.ts +7 -0
- package/dist-types/index-parts/hosted.d.ts +7 -0
- package/dist-types/index-parts/module-hooks.d.ts +7 -0
- package/dist-types/index-parts/offline.d.ts +7 -0
- package/dist-types/index-parts/presets.d.ts +7 -0
- package/dist-types/index-parts/provider.d.ts +7 -0
- package/dist-types/index-parts/theme.d.ts +8 -0
- package/dist-types/index-parts/translations.d.ts +7 -0
- package/dist-types/index.d.ts +32 -28
- package/dist-types/kernel-selector.d.ts +68 -0
- package/dist-types/modes.d.ts +26 -0
- package/dist-types/module-hooks/iframe-blocker.d.ts +33 -1
- package/dist-types/module-hooks/network-blocker.d.ts +23 -0
- package/dist-types/module-hooks/network-hold.d.ts +47 -0
- package/dist-types/module-hooks.d.ts +4 -4
- package/dist-types/panel-link.d.ts +1 -1
- package/dist-types/panel-trigger.d.ts +1 -1
- package/dist-types/panel.d.ts +13 -1
- package/dist-types/postcss-tailwind3.d.ts +21 -0
- package/dist-types/preferences.d.ts +12 -1
- package/dist-types/primitives/accordion.d.ts +1 -1
- package/dist-types/primitives/button.d.ts +1 -1
- package/dist-types/primitives/collapsible.d.ts +1 -1
- package/dist-types/primitives/dialog.d.ts +1 -1
- package/dist-types/primitives/preference-item.d.ts +1 -1
- package/dist-types/primitives/switch.d.ts +1 -1
- package/dist-types/primitives/tabs.d.ts +1 -1
- package/dist-types/primitives.d.ts +7 -7
- package/dist-types/prompt.d.ts +1 -1
- package/dist-types/provider.d.ts +174 -28
- package/dist-types/server/fetch-ssr-data.d.ts +1 -1
- package/dist-types/server/headers.d.ts +14 -4
- package/dist-types/server/index.d.ts +5 -5
- package/dist-types/server/normalize-url.d.ts +14 -7
- package/dist-types/server/types.d.ts +12 -1
- package/dist-types/theme-provider.d.ts +2 -2
- package/dist-types/transports/hosted.d.ts +36 -0
- package/dist-types/transports/manifest.d.ts +48 -0
- package/dist-types/transports/offline.d.ts +7 -16
- package/dist-types/types/index.d.ts +3 -3
- package/dist-types/types/manager.d.ts +1 -1
- package/dist-types/types/theme/index.d.ts +1 -1
- package/dist-types/ui-config-context.d.ts +14 -2
- package/dist-types/utils/deferred-module.d.ts +13 -0
- package/dist-types/utils/index.d.ts +4 -4
- package/dist-types/utils/merge-slot-props.d.ts +17 -3
- package/dist-types/utils/merge-styles.d.ts +1 -1
- package/dist-types/utils/theme-utils.d.ts +18 -3
- package/dist-types/version.d.ts +1 -1
- package/docs/README.md +96 -69
- package/docs/assets/v3/bottom-bar.png +0 -0
- package/docs/assets/v3/brand-card.png +0 -0
- package/docs/assets/v3/brand-preferences.png +0 -0
- package/docs/assets/v3/choice-wall.png +0 -0
- package/docs/assets/v3/headless-bar-html.png +0 -0
- package/docs/assets/v3/headless-bar-mobile.png +0 -0
- package/docs/assets/v3/headless-bar.png +0 -0
- package/docs/assets/v3/slim-bar.png +0 -0
- package/docs/concepts/choose-your-setup.md +138 -0
- package/docs/concepts/consent-categories.md +84 -0
- package/docs/concepts/consent-state.md +421 -0
- package/docs/concepts/data-fetching.md +270 -0
- package/docs/concepts/how-consent-works.md +123 -0
- package/docs/concepts/modes.md +278 -0
- package/docs/{frameworks/react/concepts/policy-presets.md → concepts/policies.md} +8 -60
- package/docs/customization/class-names.md +202 -0
- package/docs/customization/dark-mode.md +157 -0
- package/docs/customization/motion.md +128 -0
- package/docs/customization/overview.md +68 -33
- package/docs/customization/recipes.md +838 -47
- package/docs/customization/slots.md +217 -35
- package/docs/customization/stylesheets.md +248 -0
- package/docs/customization/tailwind.md +863 -0
- package/docs/customization/tokens.md +167 -36
- package/docs/customization/translations.md +87 -3
- package/docs/frameworks/react/callbacks.md +118 -0
- package/docs/frameworks/react/clear-on-revocation.md +106 -0
- package/docs/frameworks/react/components/consent-banner.md +48 -27
- package/docs/frameworks/react/components/consent-dialog-link.md +13 -11
- package/docs/frameworks/react/components/consent-dialog-trigger.md +86 -76
- package/docs/frameworks/react/components/consent-dialog.md +111 -58
- package/docs/frameworks/react/components/{frame.md → consent-gate.md} +70 -49
- package/docs/frameworks/react/components/consent-provider.md +140 -0
- package/docs/frameworks/react/components/consent-widget.md +69 -24
- package/docs/frameworks/react/components/dev-tools.md +76 -85
- package/docs/frameworks/react/components.md +113 -0
- package/docs/frameworks/react/compose.md +354 -0
- package/docs/frameworks/react/content-security-policy.md +143 -0
- package/docs/frameworks/react/customize.md +258 -0
- package/docs/frameworks/react/embeds.md +89 -0
- package/docs/frameworks/react/gpp.md +163 -0
- package/docs/frameworks/react/headless.md +4 -4
- package/docs/frameworks/react/hooks.md +70 -0
- package/docs/frameworks/react/iab.md +259 -0
- package/docs/frameworks/react/network-blocker.md +140 -0
- package/docs/frameworks/react/quickstart.md +220 -102
- package/docs/frameworks/react/rendering.md +263 -0
- package/docs/frameworks/react/scripts.md +114 -0
- package/docs/frameworks/react/translations.md +155 -0
- package/docs/frameworks/react/troubleshooting.md +188 -61
- package/docs/frameworks/react/upgrade-v3.md +651 -0
- package/docs/frameworks/react/vendor-consent.md +188 -0
- package/docs/guides/banner-experiments.md +672 -0
- package/docs/guides/troubleshooting.md +192 -54
- package/docs/guides/verify-consent.md +96 -49
- package/docs/integrations/adobe-analytics.md +177 -183
- package/docs/integrations/ahrefs-analytics.md +162 -178
- package/docs/integrations/amplitude.md +172 -180
- package/docs/integrations/building-integrations.md +137 -33
- package/docs/integrations/clearbit.md +164 -178
- package/docs/integrations/cloudflare-web-analytics.md +166 -180
- package/docs/integrations/cloudflare-zaraz.md +333 -0
- package/docs/integrations/crisp.md +174 -182
- package/docs/integrations/databuddy.md +167 -197
- package/docs/integrations/fathom-analytics.md +168 -180
- package/docs/integrations/front-chat.md +308 -0
- package/docs/integrations/google-maps.md +142 -108
- package/docs/integrations/google-tag-manager.md +258 -185
- package/docs/integrations/google-tag.md +226 -182
- package/docs/integrations/heap.md +173 -179
- package/docs/integrations/hightouch.md +171 -181
- package/docs/integrations/hotjar.md +169 -179
- package/docs/integrations/intercom.md +193 -177
- package/docs/integrations/klaviyo.md +473 -0
- package/docs/integrations/linkedin-insights.md +184 -174
- package/docs/integrations/logrocket.md +170 -180
- package/docs/integrations/matomo-analytics.md +198 -202
- package/docs/integrations/meta-pixel.md +198 -174
- package/docs/integrations/microsoft-clarity.md +173 -179
- package/docs/integrations/microsoft-uet.md +158 -178
- package/docs/integrations/mixpanel-analytics.md +165 -184
- package/docs/integrations/one-dollar-stats.md +292 -0
- package/docs/integrations/openai-pixel.md +214 -325
- package/docs/integrations/overview.md +152 -83
- package/docs/integrations/pinterest-tag.md +315 -0
- package/docs/integrations/pirsch.md +179 -183
- package/docs/integrations/plausible-analytics.md +182 -182
- package/docs/integrations/posthog.md +323 -264
- package/docs/integrations/promptwatch.md +164 -178
- package/docs/integrations/reddit-pixel.md +195 -181
- package/docs/integrations/rudderstack.md +211 -210
- package/docs/integrations/rybbit-analytics.md +181 -184
- package/docs/integrations/segment.md +192 -178
- package/docs/integrations/sentry.md +402 -0
- package/docs/integrations/snapchat-pixel.md +196 -180
- package/docs/integrations/tiktok-pixel.md +181 -174
- package/docs/integrations/umami-analytics.md +173 -182
- package/docs/integrations/vercel-analytics.md +176 -181
- package/docs/integrations/x-pixel.md +186 -174
- package/docs/integrations/youtube.md +150 -111
- package/package.json +48 -17
- package/dist/component-hooks/use-manager.js +0 -2
- package/dist/components/frame/atoms.js +0 -1
- package/dist/components/frame/frame.js +0 -2
- package/dist/components/frame/index.js +0 -2
- package/dist/frame.js +0 -2
- package/dist/ui-save.js +0 -1
- package/dist-types/component-hooks/use-manager.d.ts +0 -40
- package/dist-types/components/frame/atoms.d.ts +0 -11
- package/dist-types/components/frame/frame.d.ts +0 -2
- package/dist-types/components/frame/index.d.ts +0 -24
- package/dist-types/frame.d.ts +0 -1
- package/dist-types/ui-save.d.ts +0 -5
- package/docs/assets/v3/brand-bar.png +0 -0
- package/docs/assets/v3/mobile-card.png +0 -0
- package/docs/assets/v3/preferences.png +0 -0
- package/docs/frameworks/react/components/consent-manager-provider.md +0 -62
- package/docs/frameworks/react/concepts/consent-categories.md +0 -33
- package/docs/frameworks/react/hooks/use-consent-manager/overview.md +0 -58
- package/docs/frameworks/react/iab/overview.md +0 -53
- package/docs/frameworks/react/script-loader.md +0 -55
- package/docs/frameworks/react/styling/overview.md +0 -207
- package/docs/guides/consent-state.md +0 -60
- package/docs/guides/data-fetching.md +0 -163
- package/docs/guides/deployment-modes.md +0 -63
- package/docs/upgrade-v3.md +0 -334
- package/readme.json +0 -48
- package/src/iab/styles.css +0 -11
- package/src/styles.css +0 -10
- /package/dist/components/{frame → consent-gate}/types.js +0 -0
|
@@ -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,version as r}from"react";import{GlobalThemeContext as n}from"../../context/theme-context.js";import{useUIConfig as o}from"../../ui-config-context.js";let c=Number.parseInt(r,10)>=19,s=({sheets:r,noStyle:s})=>{let{nonce:m,styles:i}=o(),l=t(n);return!1===i||s||l.noStyle?null:r.map(t=>c&&!m?e("style",{href:t.id,precedence:"c15t",children:t.css},t.id):e("style",{"data-c15t-styles":t.id,nonce:m,dangerouslySetInnerHTML:{__html:t.css}},t.id))};export{s as SurfaceStyles};
|
|
@@ -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{KernelContext as d,ProviderServicesContext as a}from"./context.js";import{publishDevToolsLauncher as f}from"./devtools-launcher.js";import{useIsHydrated as m}from"./hooks/use-is-hydrated.js";let v=e=>{if(!e)throw Error("c15t: DevTools must be rendered inside <ConsentProvider> from @c15t/react.");return e},g=(e,t)=>{let r=m(),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])},C=(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])},h=({disabled:e=!1,clearRecords:r,getPresentation:o,defaultOpen:n,defaultTab:i,getConsentCategories:c,maxEvents:u,position:m,shadow:h})=>{let p=s(a),y=C(r??p?.clearRecords,o??p?.getPresentation),D=s(d),P=e?null:v(D),T=g(c??p?.getConsentCategories,e);return l(()=>{if(!P)return;let e=t({...y,defaultOpen:n,defaultTab:i,getConsentCategories:T,kernel:P,maxEvents:u,position:m,shadow:h}),r=f(P,e);return()=>{r(),e.destroy()}},[n,i,T,y,P,u,m,h]),null},p=h,y=h,D={height:"100%",minHeight:0,width:"100%"},P=o(function({disabled:r=!1,clearRecords:o,getPresentation:l,defaultTab:c,getConsentCategories:f,maxEvents:m,style:h,theme:p,...y},P){let T=s(a),S=C(o??T?.clearRecords,l??T?.getPresentation),j=s(d),R=r?null:v(j),k=g(f??T?.getConsentCategories,r),w=u(null),x=n(e=>{w.current=e;let t=((e,t)=>{if("function"==typeof e)return e(t);e&&(e.current=t)})(P,e);if("function"==typeof t)return()=>{w.current=null,t()}},[P]);return i(()=>{let e=w.current;if(!R||!e)return;let r=t({...S,container:e,defaultTab:c,embedded:!0,getConsentCategories:k,kernel:R,maxEvents:m});return()=>r.destroy()},[c,k,S,R,m]),e("div",{...y,ref:x,style:{...D,...p?{"--c15t-dev-tools-color-scheme":p}:void 0,...h}})}),T=(e={})=>{let{id:t="c15t",name:o="c15t",defaultOpen:n=!1,...s}=e;return{defaultOpen:n,id:t,name:o,render:(e,t)=>r(P,{...s,theme:("string"==typeof t?t:t?.theme)??s.theme})}},S=T;export{y as C15TDevTools,h as ConsentDevTools,p as DevTools,T as c15tDevtools,S as c15tDevtoolsPlugin,P 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};
|