@c15t/react 2.2.1 → 2.3.0
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 +6 -3
- package/README.md +1 -1
- package/dist/components/iab-consent-dialog/atoms/purpose-item.cjs +1 -1
- package/dist/components/iab-consent-dialog/atoms/purpose-item.js +1 -1
- package/dist/components/iab-consent-dialog/hooks/use-gvl-data.cjs +1 -1
- package/dist/components/iab-consent-dialog/hooks/use-gvl-data.js +1 -1
- package/dist/components/iab-consent-dialog/iab-consent-dialog.cjs +1 -1
- package/dist/components/iab-consent-dialog/iab-consent-dialog.js +1 -1
- package/dist/iab/styles.tw3.css +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.js +1 -1
- package/dist-types/components/consent-banner/components.d.ts +3 -3
- package/dist-types/components/consent-banner/consent-banner.d.ts +1 -1
- package/dist-types/components/consent-banner/index.d.ts +9 -9
- package/dist-types/components/consent-banner/policy-actions.d.ts +2 -2
- package/dist-types/components/consent-dialog/atoms/card.d.ts +5 -5
- package/dist-types/components/consent-dialog/atoms/overlay.d.ts +1 -1
- package/dist-types/components/consent-dialog/consent-dialog.d.ts +2 -2
- package/dist-types/components/consent-dialog/index.d.ts +7 -7
- package/dist-types/components/consent-dialog-link/index.d.ts +1 -1
- package/dist-types/components/consent-dialog-trigger/atoms/button.d.ts +1 -1
- package/dist-types/components/consent-dialog-trigger/atoms/icon.d.ts +1 -1
- package/dist-types/components/consent-dialog-trigger/atoms/root.d.ts +2 -2
- package/dist-types/components/consent-dialog-trigger/atoms/toolbar.d.ts +2 -2
- package/dist-types/components/consent-dialog-trigger/consent-dialog-trigger-toolbar.d.ts +1 -1
- package/dist-types/components/consent-dialog-trigger/consent-dialog-trigger.d.ts +5 -5
- package/dist-types/components/consent-dialog-trigger/index.d.ts +4 -4
- package/dist-types/components/consent-dialog-trigger/types.d.ts +1 -1
- 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/consent-widget/atoms/accordion.d.ts +3 -3
- package/dist-types/components/consent-widget/atoms/button.d.ts +1 -1
- package/dist-types/components/consent-widget/atoms/footer.d.ts +1 -1
- package/dist-types/components/consent-widget/atoms/root.d.ts +1 -1
- package/dist-types/components/consent-widget/consent-widget.d.ts +1 -1
- package/dist-types/components/consent-widget/index.d.ts +11 -11
- package/dist-types/components/consent-widget/policy-actions.d.ts +2 -2
- package/dist-types/components/consent-widget/types.d.ts +1 -1
- package/dist-types/components/frame/atoms.d.ts +2 -2
- package/dist-types/components/frame/frame.d.ts +1 -1
- package/dist-types/components/frame/index.d.ts +3 -3
- package/dist-types/components/frame/types.d.ts +1 -1
- package/dist-types/components/iab-consent-banner/iab-consent-banner.d.ts +2 -2
- package/dist-types/components/iab-consent-banner/index.d.ts +19 -19
- package/dist-types/components/iab-consent-dialog/atoms/purpose-item.d.ts +21 -2
- package/dist-types/components/iab-consent-dialog/atoms/stack-item.d.ts +1 -1
- package/dist-types/components/iab-consent-dialog/atoms/vendor-list.d.ts +1 -1
- package/dist-types/components/iab-consent-dialog/hooks/use-gvl-data.d.ts +7 -1
- package/dist-types/components/iab-consent-dialog/iab-consent-dialog.d.ts +5 -4
- package/dist-types/components/iab-consent-dialog/index.d.ts +25 -25
- package/dist-types/components/iab-consent-dialog/use-iab-translations.d.ts +4 -0
- package/dist-types/components/integrations/index.d.ts +2 -2
- package/dist-types/components/integrations/shared.d.ts +1 -1
- package/dist-types/components/integrations/youtube-embed.d.ts +1 -1
- 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 +4 -4
- package/dist-types/components/shared/primitives/button.types.d.ts +1 -1
- package/dist-types/components/shared/primitives/legal-links/index.d.ts +1 -1
- 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/preference-item/index.d.ts +1 -1
- 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/context/theme-context.d.ts +1 -1
- package/dist-types/headless.d.ts +9 -9
- package/dist-types/hooks/index.d.ts +12 -12
- package/dist-types/hooks/use-headless-consent-ui.d.ts +1 -1
- package/dist-types/hooks/use-headless-iab-consent-ui.d.ts +1 -1
- package/dist-types/hooks/use-styles.d.ts +1 -1
- package/dist-types/hooks/use-theme.d.ts +1 -1
- package/dist-types/iab.d.ts +4 -4
- package/dist-types/index.d.ts +20 -20
- 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/providers/consent-manager-provider.d.ts +1 -1
- package/dist-types/server/fetch-ssr-data.d.ts +1 -1
- package/dist-types/server/index.d.ts +5 -5
- package/dist-types/types/theme/index.d.ts +2 -2
- package/dist-types/types/theme/style-types.d.ts +1 -1
- package/dist-types/utils/merge-styles.d.ts +1 -1
- package/dist-types/utils/test-helpers.d.ts +1 -1
- package/dist-types/utils/theme-utils.d.ts +1 -1
- package/dist-types/version.d.ts +1 -1
- package/docs/README.md +6 -3
- package/docs/frameworks/react/concepts/client-modes.md +5 -3
- package/docs/frameworks/react/concepts/consent-models.md +2 -2
- package/docs/frameworks/react/concepts/cookie-management.md +4 -0
- package/docs/frameworks/react/concepts/glossary.md +1 -1
- package/docs/frameworks/react/concepts/initialization-flow.md +3 -3
- package/docs/frameworks/react/concepts/policy-packs.md +4 -2
- package/docs/frameworks/react/hooks/use-consent-manager/overview.md +1 -1
- package/docs/frameworks/react/iab/consent-banner.md +2 -2
- package/docs/frameworks/react/iab/consent-dialog.md +12 -3
- package/docs/frameworks/react/iab/overview.md +18 -6
- package/docs/frameworks/react/iframe-blocking.md +2 -0
- package/docs/frameworks/react/policy-packs.md +1 -1
- package/docs/integrations/front-chat.md +178 -0
- package/docs/integrations/one-dollar-stats.md +118 -0
- package/docs/integrations/overview.md +3 -0
- package/docs/integrations/pinterest-tag.md +236 -0
- package/docs/shared/concepts/client-modes.md +5 -3
- package/docs/shared/concepts/consent-models.md +2 -2
- package/docs/shared/concepts/cookie-management.md +4 -0
- package/docs/shared/concepts/glossary.md +1 -1
- package/docs/shared/concepts/initialization-flow.md +3 -3
- package/docs/shared/concepts/policy-packs.md +4 -2
- package/docs/shared/react/guides/iframe-blocking.md +2 -0
- package/docs/shared/react/guides/policy-packs.md +1 -1
- package/docs/shared/react/hooks/use-consent-manager/overview.md +1 -1
- package/docs/shared/react/iab/consent-banner.md +1 -1
- package/docs/shared/react/iab/consent-dialog.md +11 -2
- package/docs/shared/react/iab/overview.md +16 -4
- package/package.json +6 -6
- package/readme.json +1 -1
|
@@ -7,17 +7,17 @@
|
|
|
7
7
|
* of the consent dialog's parts.
|
|
8
8
|
*/
|
|
9
9
|
import type { FC } from 'react';
|
|
10
|
-
import { IABConsentDialogCard } from './atoms/card';
|
|
11
|
-
import { IABConsentDialogContent } from './atoms/content';
|
|
12
|
-
import { IABConsentDialogFooter } from './atoms/footer';
|
|
13
|
-
import { IABConsentDialogHeader } from './atoms/header';
|
|
14
|
-
import { IABConsentDialogOverlay } from './atoms/overlay';
|
|
15
|
-
import { PurposeItem } from './atoms/purpose-item';
|
|
16
|
-
import { IABConsentDialogRoot } from './atoms/root';
|
|
17
|
-
import { StackItem } from './atoms/stack-item';
|
|
18
|
-
import { IABConsentDialogTabButton, IABConsentDialogTabs } from './atoms/tabs';
|
|
19
|
-
import { VendorList } from './atoms/vendor-list';
|
|
20
|
-
import { type IABConsentDialogProps } from './iab-consent-dialog';
|
|
10
|
+
import { IABConsentDialogCard } from './atoms/card.js';
|
|
11
|
+
import { IABConsentDialogContent } from './atoms/content.js';
|
|
12
|
+
import { IABConsentDialogFooter } from './atoms/footer.js';
|
|
13
|
+
import { IABConsentDialogHeader } from './atoms/header.js';
|
|
14
|
+
import { IABConsentDialogOverlay } from './atoms/overlay.js';
|
|
15
|
+
import { PurposeItem } from './atoms/purpose-item.js';
|
|
16
|
+
import { IABConsentDialogRoot } from './atoms/root.js';
|
|
17
|
+
import { StackItem } from './atoms/stack-item.js';
|
|
18
|
+
import { IABConsentDialogTabButton, IABConsentDialogTabs } from './atoms/tabs.js';
|
|
19
|
+
import { VendorList } from './atoms/vendor-list.js';
|
|
20
|
+
import { type IABConsentDialogProps } from './iab-consent-dialog.js';
|
|
21
21
|
/**
|
|
22
22
|
* This interface extends the base IABConsentDialog component with additional sub-components
|
|
23
23
|
* that can be used to compose the consent dialog's structure.
|
|
@@ -36,14 +36,14 @@ export interface IABConsentDialogCompoundComponent extends FC<IABConsentDialogPr
|
|
|
36
36
|
VendorList: typeof VendorList;
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
|
-
* IAB TCF 2.
|
|
39
|
+
* IAB TCF 2.4 compliant consent dialog dialog component.
|
|
40
40
|
*
|
|
41
41
|
* @remarks
|
|
42
42
|
* This component serves as the main entry point for rendering an IAB-compliant consent dialog.
|
|
43
43
|
* It provides a structured layout with required IAB TCF elements.
|
|
44
44
|
*
|
|
45
45
|
* Key features:
|
|
46
|
-
* - IAB TCF 2.
|
|
46
|
+
* - IAB TCF 2.4 compliant
|
|
47
47
|
* - Fully accessible by default
|
|
48
48
|
* - Customizable appearance
|
|
49
49
|
* - Compound component pattern support
|
|
@@ -76,16 +76,16 @@ export interface IABConsentDialogCompoundComponent extends FC<IABConsentDialogPr
|
|
|
76
76
|
*/
|
|
77
77
|
declare const IABConsentDialog: IABConsentDialogCompoundComponent;
|
|
78
78
|
export default IABConsentDialog;
|
|
79
|
-
export { IABConsentDialogCard } from './atoms/card';
|
|
80
|
-
export { IABConsentDialogContent } from './atoms/content';
|
|
81
|
-
export { IABConsentDialogFooter } from './atoms/footer';
|
|
82
|
-
export { IABConsentDialogHeader } from './atoms/header';
|
|
83
|
-
export { IABConsentDialogOverlay } from './atoms/overlay';
|
|
84
|
-
export { PurposeItem } from './atoms/purpose-item';
|
|
85
|
-
export { IABConsentDialogRoot } from './atoms/root';
|
|
86
|
-
export { StackItem } from './atoms/stack-item';
|
|
87
|
-
export { IABConsentDialogTabButton, IABConsentDialogTabs, } from './atoms/tabs';
|
|
88
|
-
export { VendorList } from './atoms/vendor-list';
|
|
89
|
-
export { type GVLData, useGVLData } from './hooks/use-gvl-data';
|
|
90
|
-
export type { ProcessedPurpose, ProcessedSpecialFeature, ProcessedStack, ProcessedVendor, } from './types';
|
|
79
|
+
export { IABConsentDialogCard } from './atoms/card.js';
|
|
80
|
+
export { IABConsentDialogContent } from './atoms/content.js';
|
|
81
|
+
export { IABConsentDialogFooter } from './atoms/footer.js';
|
|
82
|
+
export { IABConsentDialogHeader } from './atoms/header.js';
|
|
83
|
+
export { IABConsentDialogOverlay } from './atoms/overlay.js';
|
|
84
|
+
export { PurposeItem } from './atoms/purpose-item.js';
|
|
85
|
+
export { IABConsentDialogRoot } from './atoms/root.js';
|
|
86
|
+
export { StackItem } from './atoms/stack-item.js';
|
|
87
|
+
export { IABConsentDialogTabButton, IABConsentDialogTabs, } from './atoms/tabs.js';
|
|
88
|
+
export { VendorList } from './atoms/vendor-list.js';
|
|
89
|
+
export { type GVLData, useGVLData } from './hooks/use-gvl-data.js';
|
|
90
|
+
export type { ProcessedPurpose, ProcessedSpecialFeature, ProcessedStack, ProcessedVendor, } from './types.js';
|
|
91
91
|
export { IABConsentDialog, type IABConsentDialogProps };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { GoogleMap, type GoogleMapCoordinates, type GoogleMapInstance, type GoogleMapOptions, type GoogleMapProps, type GoogleMapsApi, type GoogleMapsLibrary, } from './google-map';
|
|
2
|
-
export { YouTubeEmbed, type YouTubeEmbedParams, type YouTubeEmbedProps, type YouTubeSrcSource, type YouTubeVideoIdSource, } from './youtube-embed';
|
|
1
|
+
export { GoogleMap, type GoogleMapCoordinates, type GoogleMapInstance, type GoogleMapOptions, type GoogleMapProps, type GoogleMapsApi, type GoogleMapsLibrary, } from './google-map.js';
|
|
2
|
+
export { YouTubeEmbed, type YouTubeEmbedParams, type YouTubeEmbedProps, type YouTubeSrcSource, type YouTubeVideoIdSource, } from './youtube-embed.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AllConsentNames } from 'c15t';
|
|
2
2
|
import type { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
3
|
-
import { FrameRoot } from '../frame';
|
|
3
|
+
import { FrameRoot } from '../frame/index.js';
|
|
4
4
|
export declare function IntegrationPlaceholder({ category, children, showButton, ...props }: {
|
|
5
5
|
category: AllConsentNames;
|
|
6
6
|
children?: ReactNode;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AllConsentNames } from 'c15t';
|
|
2
2
|
import { type ComponentPropsWithRef, type ReactNode } from 'react';
|
|
3
|
-
import { type FrameProps } from '../frame';
|
|
3
|
+
import { type FrameProps } from '../frame/index.js';
|
|
4
4
|
export type YouTubeEmbedParams = Record<string, string | number | boolean | null | undefined>;
|
|
5
5
|
interface YouTubeEmbedBaseProps extends Omit<ComponentPropsWithRef<'iframe'>, 'children' | 'src' | 'title'> {
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ComponentType, type ReactNode } from 'react';
|
|
2
|
-
import type { HeadlessConsentSurfaceState } from '../../hooks/use-headless-consent-ui';
|
|
3
|
-
import type { CSSPropertiesWithVars, CSSVariables } from '../../types/theme';
|
|
2
|
+
import type { HeadlessConsentSurfaceState } from '../../hooks/use-headless-consent-ui.js';
|
|
3
|
+
import type { CSSPropertiesWithVars, CSSVariables } from '../../types/theme/index.js';
|
|
4
4
|
export interface PolicyActionRenderProps<TAction extends string> {
|
|
5
5
|
key: string;
|
|
6
6
|
consentAction: TAction;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type HTMLAttributes } from 'react';
|
|
2
|
-
import type { ExtendThemeKeys } from '../../../types/theme';
|
|
2
|
+
import type { ExtendThemeKeys } from '../../../types/theme/index.js';
|
|
3
3
|
/**
|
|
4
4
|
* Props for the description text component of the CookieBanner.
|
|
5
5
|
* Extends standard HTML div attributes.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { AllConsentNames } from 'c15t';
|
|
2
|
-
import { useTheme } from '../../../hooks/use-theme';
|
|
3
|
-
import * as Button from '../ui/button';
|
|
4
|
-
import type { ButtonVariantsProps } from '../ui/button/button';
|
|
5
|
-
import type { ConsentButtonProps } from './button.types';
|
|
2
|
+
import { useTheme } from '../../../hooks/use-theme.js';
|
|
3
|
+
import * as Button from '../ui/button/index.js';
|
|
4
|
+
import type { ButtonVariantsProps } from '../ui/button/button.js';
|
|
5
|
+
import type { ConsentButtonProps } from './button.types.js';
|
|
6
6
|
type ConsentActionThemeKey = 'accept' | 'reject' | 'customize';
|
|
7
7
|
/**
|
|
8
8
|
* Resolves the final variant and mode for a consent button.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ButtonMode } from '@c15t/ui/styles/primitives';
|
|
2
2
|
import type { ComponentRef, HTMLAttributes, MouseEvent } from 'react';
|
|
3
|
-
import type { CSSVariables, ExtendThemeKeys } from '../../../types/theme';
|
|
3
|
+
import type { CSSVariables, ExtendThemeKeys } from '../../../types/theme/index.js';
|
|
4
4
|
export type ConsentButtonElement = ComponentRef<'button'>;
|
|
5
5
|
/**
|
|
6
6
|
* Props for CookieBanner button components.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LegalLinks as LegalLinksType } from 'c15t';
|
|
2
|
-
import type { AllThemeKeys } from '../../../../types/theme/style-keys';
|
|
2
|
+
import type { AllThemeKeys } from '../../../../types/theme/style-keys.js';
|
|
3
3
|
/**
|
|
4
4
|
* Hook to filter legal links based on the provided links prop.
|
|
5
5
|
*
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type AccordionType } from '@c15t/ui/primitives/accordion';
|
|
2
2
|
import { type AccordionSize, type AccordionVariant, type AccordionVariantsProps, accordionVariants } from '@c15t/ui/styles/primitives/accordion';
|
|
3
3
|
import { type ButtonHTMLAttributes, type ElementType, type HTMLAttributes } from 'react';
|
|
4
|
-
import type { PolymorphicComponentProps } from '../../libs/polymorphic';
|
|
5
|
-
import type { ThemeValue } from '../../../../types/theme';
|
|
4
|
+
import type { PolymorphicComponentProps } from '../../libs/polymorphic.js';
|
|
5
|
+
import type { ThemeValue } from '../../../../types/theme/index.js';
|
|
6
6
|
export type { AccordionSize, AccordionVariant, AccordionVariantsProps };
|
|
7
7
|
export { accordionVariants };
|
|
8
8
|
export type AccordionStylesKeys = {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './accordion';
|
|
2
|
-
export * from './accordion.types';
|
|
1
|
+
export * from './accordion.js';
|
|
2
|
+
export * from './accordion.types.js';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type { AnimatedCollapseProps } from './animated-collapse';
|
|
2
|
-
export { AnimatedCollapse } from './animated-collapse';
|
|
1
|
+
export type { AnimatedCollapseProps } from './animated-collapse.js';
|
|
2
|
+
export { AnimatedCollapse } from './animated-collapse.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Branding } from 'c15t';
|
|
2
2
|
import type { SVGProps } from 'react';
|
|
3
|
-
import type { CSSPropertiesWithVars } from '../../../types/theme';
|
|
3
|
+
import type { CSSPropertiesWithVars } from '../../../types/theme/index.js';
|
|
4
4
|
export type ResolvedBranding = 'c15t' | 'inth' | 'none';
|
|
5
5
|
export type BrandingVariant = 'footer' | 'dialog-tag' | 'banner-tag';
|
|
6
6
|
export type BrandingThemeKey = 'consentBannerTag' | 'consentDialogTag' | 'consentWidgetTag' | 'iabConsentBannerTag' | 'iabConsentDialogTag';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ButtonMode, type ButtonSize, type ButtonVariant, type ButtonVariantsProps, buttonVariants } from '@c15t/ui/styles/primitives/button';
|
|
2
2
|
import { type ButtonHTMLAttributes, type ElementType } from 'react';
|
|
3
|
-
import type { PolymorphicComponentProps } from '../../libs/polymorphic';
|
|
3
|
+
import type { PolymorphicComponentProps } from '../../libs/polymorphic.js';
|
|
4
4
|
export type { ButtonMode, ButtonSize, ButtonVariant, ButtonVariantsProps };
|
|
5
5
|
export { buttonVariants };
|
|
6
6
|
export interface ButtonIconProps extends Record<string, unknown> {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './button';
|
|
2
|
-
export * from './button.types';
|
|
1
|
+
export * from './button.js';
|
|
2
|
+
export * from './button.types.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './collapsible';
|
|
1
|
+
export * from './collapsible.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './dialog';
|
|
1
|
+
export * from './dialog.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './preference-item';
|
|
1
|
+
export * from './preference-item.js';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './switch';
|
|
2
|
-
export type { SwitchCSSVariables, SwitchRootCSSVariables, SwitchThumbCSSVariables, SwitchTrackCSSVariables, } from './switch.types';
|
|
1
|
+
export * from './switch.js';
|
|
2
|
+
export type { SwitchCSSVariables, SwitchRootCSSVariables, SwitchThumbCSSVariables, SwitchTrackCSSVariables, } from './switch.types.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type SwitchSize, type SwitchVariantsProps, switchVariants } from '@c15t/ui/styles/primitives/switch';
|
|
2
2
|
import { type ButtonHTMLAttributes } from 'react';
|
|
3
|
-
import type { AllThemeKeys, ThemeValue } from '../../../../types/theme';
|
|
3
|
+
import type { AllThemeKeys, ThemeValue } from '../../../../types/theme/index.js';
|
|
4
4
|
export type { SwitchSize, SwitchVariantsProps };
|
|
5
5
|
export { switchVariants };
|
|
6
6
|
export type SwitchStylesKeys = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './tabs';
|
|
1
|
+
export * from './tabs.js';
|
package/dist-types/headless.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export { type ConsentManagerInterface, configureConsentManager, defaultTranslationConfig, detectBrowserLanguage, type EuropePolicyMode, mergeTranslationConfigs, type PolicyPackPresets, policyPackPresets, prepareTranslationConfig, } from 'c15t';
|
|
2
|
-
export { useColorScheme } from './hooks/use-color-scheme';
|
|
3
|
-
export { type ConsentDialogTriggerVisibility, type UseConsentDialogTriggerOptions, type UseConsentDialogTriggerResult, useConsentDialogTrigger, } from './hooks/use-consent-dialog-trigger';
|
|
4
|
-
export { useConsentManager } from './hooks/use-consent-manager';
|
|
5
|
-
export { ConsentScriptConflictError, type ConsentScriptReadyControls, type ConsentScriptStatus, type ConsentScriptUnmountBehavior, type UseConsentScriptOptions, type UseConsentScriptResult, useConsentScript, } from './hooks/use-consent-script';
|
|
6
|
-
export { useFocusTrap } from './hooks/use-focus-trap';
|
|
7
|
-
export { type HeadlessConsentBannerAction, type HeadlessConsentBannerState, type HeadlessConsentDialogAction, type HeadlessConsentDialogState, type HeadlessConsentSurface, type HeadlessConsentSurfaceAction, type HeadlessConsentSurfaceState, type HeadlessConsentWriteAction, type UseHeadlessConsentUIResult, useHeadlessConsentUI, } from './hooks/use-headless-consent-ui';
|
|
8
|
-
export { useTranslations } from './hooks/use-translations';
|
|
9
|
-
export { ConsentManagerProvider } from './providers/consent-manager-provider';
|
|
10
|
-
export type { ConsentManagerOptions, ConsentManagerProviderProps, } from './types/consent-manager';
|
|
2
|
+
export { useColorScheme } from './hooks/use-color-scheme.js';
|
|
3
|
+
export { type ConsentDialogTriggerVisibility, type UseConsentDialogTriggerOptions, type UseConsentDialogTriggerResult, useConsentDialogTrigger, } from './hooks/use-consent-dialog-trigger.js';
|
|
4
|
+
export { useConsentManager } from './hooks/use-consent-manager.js';
|
|
5
|
+
export { ConsentScriptConflictError, type ConsentScriptReadyControls, type ConsentScriptStatus, type ConsentScriptUnmountBehavior, type UseConsentScriptOptions, type UseConsentScriptResult, useConsentScript, } from './hooks/use-consent-script.js';
|
|
6
|
+
export { useFocusTrap } from './hooks/use-focus-trap.js';
|
|
7
|
+
export { type HeadlessConsentBannerAction, type HeadlessConsentBannerState, type HeadlessConsentDialogAction, type HeadlessConsentDialogState, type HeadlessConsentSurface, type HeadlessConsentSurfaceAction, type HeadlessConsentSurfaceState, type HeadlessConsentWriteAction, type UseHeadlessConsentUIResult, useHeadlessConsentUI, } from './hooks/use-headless-consent-ui.js';
|
|
8
|
+
export { useTranslations } from './hooks/use-translations.js';
|
|
9
|
+
export { ConsentManagerProvider } from './providers/consent-manager-provider.js';
|
|
10
|
+
export type { ConsentManagerOptions, ConsentManagerProviderProps, } from './types/consent-manager.js';
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export * from './use-component-config';
|
|
2
|
-
export * from './use-consent-dialog-trigger';
|
|
3
|
-
export * from './use-consent-manager';
|
|
4
|
-
export * from './use-consent-script';
|
|
5
|
-
export * from './use-focus-trap';
|
|
6
|
-
export * from './use-headless-consent-ui';
|
|
7
|
-
export * from './use-headless-iab-consent-ui';
|
|
8
|
-
export * from './use-reduced-motion';
|
|
9
|
-
export * from './use-ssr-status';
|
|
10
|
-
export * from './use-text-direction';
|
|
11
|
-
export * from './use-theme';
|
|
12
|
-
export * from './use-translations';
|
|
1
|
+
export * from './use-component-config.js';
|
|
2
|
+
export * from './use-consent-dialog-trigger.js';
|
|
3
|
+
export * from './use-consent-manager.js';
|
|
4
|
+
export * from './use-consent-script.js';
|
|
5
|
+
export * from './use-focus-trap.js';
|
|
6
|
+
export * from './use-headless-consent-ui.js';
|
|
7
|
+
export * from './use-headless-iab-consent-ui.js';
|
|
8
|
+
export * from './use-reduced-motion.js';
|
|
9
|
+
export * from './use-ssr-status.js';
|
|
10
|
+
export * from './use-text-direction.js';
|
|
11
|
+
export * from './use-theme.js';
|
|
12
|
+
export * from './use-translations.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type PolicyUiAction, type PolicyUiActionDirection, type PolicyUiActionGroup, type PolicyUiProfile } from '@c15t/ui/utils';
|
|
2
|
-
import { useConsentManager } from './use-consent-manager';
|
|
2
|
+
import { useConsentManager } from './use-consent-manager.js';
|
|
3
3
|
export type HeadlessConsentSurface = 'banner' | 'dialog';
|
|
4
4
|
export type HeadlessConsentSurfaceAction = PolicyUiAction;
|
|
5
5
|
export type HeadlessConsentWriteAction = 'accept' | 'reject';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useConsentManager } from './use-consent-manager';
|
|
1
|
+
import { useConsentManager } from './use-consent-manager.js';
|
|
2
2
|
export type HeadlessIABPreferenceTab = 'purposes' | 'vendors';
|
|
3
3
|
export type HeadlessIABBannerAction = 'accept' | 'reject' | 'customize';
|
|
4
4
|
export type HeadlessIABDialogAction = 'accept' | 'reject' | 'customize';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const useTheme: () => import("../context/theme-context").ThemeContextValue;
|
|
1
|
+
export declare const useTheme: () => import("../context/theme-context.js").ThemeContextValue;
|
package/dist-types/iab.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* IAB TCF 2.
|
|
2
|
+
* IAB TCF 2.4 React components and hooks.
|
|
3
3
|
*
|
|
4
4
|
* This subpath export contains all IAB-specific React UI. It is only
|
|
5
5
|
* loaded when explicitly imported from '@c15t/react/iab'.
|
|
@@ -19,6 +19,6 @@
|
|
|
19
19
|
*
|
|
20
20
|
* @packageDocumentation
|
|
21
21
|
*/
|
|
22
|
-
export { IABConsentBanner, type IABConsentBannerProps, } from './components/iab-consent-banner';
|
|
23
|
-
export { IABConsentDialog, type IABConsentDialogProps, } from './components/iab-consent-dialog';
|
|
24
|
-
export { type HeadlessIABBannerAction, type HeadlessIABBannerState, type HeadlessIABDialogAction, type HeadlessIABDialogState, type HeadlessIABPreferenceTab, type UseHeadlessIABConsentUIResult, useHeadlessIABConsentUI, } from './hooks/use-headless-iab-consent-ui';
|
|
22
|
+
export { IABConsentBanner, type IABConsentBannerProps, } from './components/iab-consent-banner/index.js';
|
|
23
|
+
export { IABConsentDialog, type IABConsentDialogProps, } from './components/iab-consent-dialog/index.js';
|
|
24
|
+
export { type HeadlessIABBannerAction, type HeadlessIABBannerState, type HeadlessIABDialogAction, type HeadlessIABDialogState, type HeadlessIABPreferenceTab, type UseHeadlessIABConsentUIResult, useHeadlessIABConsentUI, } from './hooks/use-headless-iab-consent-ui.js';
|
package/dist-types/index.d.ts
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
export type { AllConsentNames, ConsentManagerInterface, ConsentStoreState, ConsentType, EuropePolicyMode, Overrides, PolicyPackPresets, Translations, } from 'c15t';
|
|
2
2
|
export { configureConsentManager, defaultTranslationConfig, detectBrowserLanguage, mergeTranslationConfigs, policyPackPresets, prepareTranslationConfig, } from 'c15t';
|
|
3
|
-
export { ConsentBanner, type ConsentBannerProps, } from './components/consent-banner';
|
|
4
|
-
export * from './components/consent-banner/components';
|
|
5
|
-
export { ConsentDialog, type ConsentDialogProps, } from './components/consent-dialog';
|
|
6
|
-
export { ConsentDialogLink, type ConsentDialogLinkProps, } from './components/consent-dialog-link';
|
|
7
|
-
export { ConsentDialogTrigger, type ConsentDialogTriggerCompound, type ConsentDialogTriggerProps, ConsentDialogTriggerToolbar, type ConsentDialogTriggerToolbarAction, type ConsentDialogTriggerToolbarPreferences, type ConsentDialogTriggerToolbarProps, TriggerButton, type TriggerButtonProps, TriggerIcon, type TriggerIconProps, type TriggerIconType, type TriggerOrientation, TriggerRoot, type TriggerRootProps, type TriggerSize, TriggerText, type TriggerTextProps, type TriggerVisibility, type UseDraggableOptions, type UseDraggableReturn, useDraggable, useTriggerContext, } from './components/consent-dialog-trigger';
|
|
8
|
-
export { ConsentWidget, type ConsentWidgetProps, } from './components/consent-widget';
|
|
9
|
-
export { Frame, type FrameProps } from './components/frame';
|
|
10
|
-
export { GoogleMap, type GoogleMapCoordinates, type GoogleMapInstance, type GoogleMapOptions, type GoogleMapProps, type GoogleMapsApi, type GoogleMapsLibrary, YouTubeEmbed, type YouTubeEmbedParams, type YouTubeEmbedProps, type YouTubeSrcSource, type YouTubeVideoIdSource, } from './components/integrations';
|
|
11
|
-
export { ConsentButton } from './components/shared/primitives/button';
|
|
12
|
-
export { useColorScheme } from './hooks/use-color-scheme';
|
|
13
|
-
export { type ConsentDialogTriggerVisibility, type UseConsentDialogTriggerOptions, type UseConsentDialogTriggerResult, useConsentDialogTrigger, } from './hooks/use-consent-dialog-trigger';
|
|
14
|
-
export { useConsentManager } from './hooks/use-consent-manager';
|
|
15
|
-
export { ConsentScriptConflictError, type ConsentScriptReadyControls, type ConsentScriptStatus, type ConsentScriptUnmountBehavior, type UseConsentScriptOptions, type UseConsentScriptResult, useConsentScript, } from './hooks/use-consent-script';
|
|
16
|
-
export { useFocusTrap } from './hooks/use-focus-trap';
|
|
17
|
-
export { type HeadlessConsentBannerAction, type HeadlessConsentBannerState, type HeadlessConsentDialogAction, type HeadlessConsentDialogState, type HeadlessConsentSurface, type HeadlessConsentSurfaceAction, type HeadlessConsentSurfaceState, type HeadlessConsentWriteAction, type UseHeadlessConsentUIResult, useHeadlessConsentUI, } from './hooks/use-headless-consent-ui';
|
|
18
|
-
export { useSSRStatus } from './hooks/use-ssr-status';
|
|
19
|
-
export { useTranslations } from './hooks/use-translations';
|
|
20
|
-
export { ConsentManagerProvider } from './providers/consent-manager-provider';
|
|
21
|
-
export type { ConsentManagerOptions, ConsentManagerProviderProps, } from './types/consent-manager';
|
|
22
|
-
export type { ColorTokens, ComponentSlots, MotionTokens, RadiusTokens, ShadowTokens, SlotStyle, SpacingTokens, Theme, TypographyTokens, } from './types/theme';
|
|
3
|
+
export { ConsentBanner, type ConsentBannerProps, } from './components/consent-banner/index.js';
|
|
4
|
+
export * from './components/consent-banner/components.js';
|
|
5
|
+
export { ConsentDialog, type ConsentDialogProps, } from './components/consent-dialog/index.js';
|
|
6
|
+
export { ConsentDialogLink, type ConsentDialogLinkProps, } from './components/consent-dialog-link/index.js';
|
|
7
|
+
export { ConsentDialogTrigger, type ConsentDialogTriggerCompound, type ConsentDialogTriggerProps, ConsentDialogTriggerToolbar, type ConsentDialogTriggerToolbarAction, type ConsentDialogTriggerToolbarPreferences, type ConsentDialogTriggerToolbarProps, TriggerButton, type TriggerButtonProps, TriggerIcon, type TriggerIconProps, type TriggerIconType, type TriggerOrientation, TriggerRoot, type TriggerRootProps, type TriggerSize, TriggerText, type TriggerTextProps, type TriggerVisibility, type UseDraggableOptions, type UseDraggableReturn, useDraggable, useTriggerContext, } from './components/consent-dialog-trigger/index.js';
|
|
8
|
+
export { ConsentWidget, type ConsentWidgetProps, } from './components/consent-widget/index.js';
|
|
9
|
+
export { Frame, type FrameProps } from './components/frame/index.js';
|
|
10
|
+
export { GoogleMap, type GoogleMapCoordinates, type GoogleMapInstance, type GoogleMapOptions, type GoogleMapProps, type GoogleMapsApi, type GoogleMapsLibrary, YouTubeEmbed, type YouTubeEmbedParams, type YouTubeEmbedProps, type YouTubeSrcSource, type YouTubeVideoIdSource, } from './components/integrations/index.js';
|
|
11
|
+
export { ConsentButton } from './components/shared/primitives/button.js';
|
|
12
|
+
export { useColorScheme } from './hooks/use-color-scheme.js';
|
|
13
|
+
export { type ConsentDialogTriggerVisibility, type UseConsentDialogTriggerOptions, type UseConsentDialogTriggerResult, useConsentDialogTrigger, } from './hooks/use-consent-dialog-trigger.js';
|
|
14
|
+
export { useConsentManager } from './hooks/use-consent-manager.js';
|
|
15
|
+
export { ConsentScriptConflictError, type ConsentScriptReadyControls, type ConsentScriptStatus, type ConsentScriptUnmountBehavior, type UseConsentScriptOptions, type UseConsentScriptResult, useConsentScript, } from './hooks/use-consent-script.js';
|
|
16
|
+
export { useFocusTrap } from './hooks/use-focus-trap.js';
|
|
17
|
+
export { type HeadlessConsentBannerAction, type HeadlessConsentBannerState, type HeadlessConsentDialogAction, type HeadlessConsentDialogState, type HeadlessConsentSurface, type HeadlessConsentSurfaceAction, type HeadlessConsentSurfaceState, type HeadlessConsentWriteAction, type UseHeadlessConsentUIResult, useHeadlessConsentUI, } from './hooks/use-headless-consent-ui.js';
|
|
18
|
+
export { useSSRStatus } from './hooks/use-ssr-status.js';
|
|
19
|
+
export { useTranslations } from './hooks/use-translations.js';
|
|
20
|
+
export { ConsentManagerProvider } from './providers/consent-manager-provider.js';
|
|
21
|
+
export type { ConsentManagerOptions, ConsentManagerProviderProps, } from './types/consent-manager.js';
|
|
22
|
+
export type { ColorTokens, ComponentSlots, MotionTokens, RadiusTokens, ShadowTokens, SlotStyle, SpacingTokens, Theme, TypographyTokens, } from './types/theme/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '../components/shared/ui/accordion';
|
|
1
|
+
export * from '../components/shared/ui/accordion/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '../components/shared/ui/button';
|
|
1
|
+
export * from '../components/shared/ui/button/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '../components/shared/ui/collapsible';
|
|
1
|
+
export * from '../components/shared/ui/collapsible/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '../components/shared/ui/dialog';
|
|
1
|
+
export * from '../components/shared/ui/dialog/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '../components/shared/ui/preference-item';
|
|
1
|
+
export * from '../components/shared/ui/preference-item/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '../components/shared/ui/switch';
|
|
1
|
+
export * from '../components/shared/ui/switch/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '../components/shared/ui/tabs';
|
|
1
|
+
export * from '../components/shared/ui/tabs/index.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * as Accordion from './components/shared/ui/accordion';
|
|
2
|
-
export * as Button from './components/shared/ui/button';
|
|
3
|
-
export * as Collapsible from './components/shared/ui/collapsible';
|
|
4
|
-
export * as Dialog from './components/shared/ui/dialog';
|
|
5
|
-
export * as PreferenceItem from './components/shared/ui/preference-item';
|
|
6
|
-
export * as Switch from './components/shared/ui/switch';
|
|
7
|
-
export * as Tabs from './components/shared/ui/tabs';
|
|
1
|
+
export * as Accordion from './components/shared/ui/accordion/index.js';
|
|
2
|
+
export * as Button from './components/shared/ui/button/index.js';
|
|
3
|
+
export * as Collapsible from './components/shared/ui/collapsible/index.js';
|
|
4
|
+
export * as Dialog from './components/shared/ui/dialog/index.js';
|
|
5
|
+
export * as PreferenceItem from './components/shared/ui/preference-item/index.js';
|
|
6
|
+
export * as Switch from './components/shared/ui/switch/index.js';
|
|
7
|
+
export * as Tabs from './components/shared/ui/tabs/index.js';
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
*
|
|
25
25
|
* @packageDocumentation
|
|
26
26
|
*/
|
|
27
|
-
export { fetchSSRData } from './fetch-ssr-data';
|
|
28
|
-
export { extractRelevantHeaders } from './headers';
|
|
29
|
-
export { createSSRInitCacheKey } from './init-cache-key';
|
|
30
|
-
export { normalizeBackendURL, validateBackendURL } from './normalize-url';
|
|
31
|
-
export type { FetchSSRDataOptions, FetchSSRDataOptionsBase, FetchSSRDataResult, } from './types';
|
|
27
|
+
export { fetchSSRData } from './fetch-ssr-data.js';
|
|
28
|
+
export { extractRelevantHeaders } from './headers.js';
|
|
29
|
+
export { createSSRInitCacheKey } from './init-cache-key.js';
|
|
30
|
+
export { normalizeBackendURL, validateBackendURL } from './normalize-url.js';
|
|
31
|
+
export type { FetchSSRDataOptions, FetchSSRDataOptionsBase, FetchSSRDataResult, } from './types.js';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './style-keys';
|
|
2
|
-
export * from './style-types';
|
|
1
|
+
export * from './style-keys.js';
|
|
2
|
+
export * from './style-types.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ClassNameStyle as BaseClassNameStyle, Theme as BaseTheme } from '@c15t/ui/theme';
|
|
2
2
|
import type { CSSProperties } from 'react';
|
|
3
|
-
import type { AllThemeKeys } from './style-keys';
|
|
3
|
+
import type { AllThemeKeys } from './style-keys.js';
|
|
4
4
|
export type { ColorTokens, ComponentSlots, CSSVariables, MotionTokens, RadiusTokens, ShadowTokens, SlotStyle, SpacingTokens, TypographyTokens, } from '@c15t/ui/theme';
|
|
5
5
|
/**
|
|
6
6
|
* Represents CSS properties with optional CSS variables.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ClassNameStyle, ThemeValue } from '../types/theme';
|
|
1
|
+
import type { ClassNameStyle, ThemeValue } from '../types/theme/index.js';
|
|
2
2
|
/**
|
|
3
3
|
* Merges two styles objects, handling theme values and style properties.
|
|
4
4
|
* This React version uses React-specific types but uses the core logic from @c15t/ui.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Handles token-to-CSS variable conversion and dark mode overrides.
|
|
4
4
|
*/
|
|
5
5
|
import type { ThemeCSSVariables } from '@c15t/ui/theme';
|
|
6
|
-
import type { Theme } from '../types/theme/style-types';
|
|
6
|
+
import type { Theme } from '../types/theme/style-types.js';
|
|
7
7
|
/**
|
|
8
8
|
* Default design tokens for the v2 theme system.
|
|
9
9
|
*/
|
package/dist-types/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "2.
|
|
1
|
+
export declare const version = "2.3.0";
|
package/docs/README.md
CHANGED
|
@@ -37,9 +37,9 @@ Install and configure c15t in JavaScript, React, and Next.js applications.
|
|
|
37
37
|
- [useSSRStatus](./frameworks/react/hooks/use-ssr-status.md): Check whether server-side rendered consent data was used during initialization.
|
|
38
38
|
- [useTextDirection](./frameworks/react/hooks/use-text-direction.md): Manage RTL/LTR text direction based on the active language for consent UI.
|
|
39
39
|
- [useTranslations](./frameworks/react/hooks/use-translations.md): Access the current language's translations for building custom consent UI.
|
|
40
|
-
- [IABConsentBanner](./frameworks/react/iab/consent-banner.md): An IAB TCF 2.
|
|
41
|
-
- [IABConsentDialog](./frameworks/react/iab/consent-dialog.md): An IAB TCF 2.
|
|
42
|
-
- [IAB TCF 2.
|
|
40
|
+
- [IABConsentBanner](./frameworks/react/iab/consent-banner.md): An IAB TCF 2.4 compliant consent banner that displays partner count, purpose summaries, and legitimate interest notices.
|
|
41
|
+
- [IABConsentDialog](./frameworks/react/iab/consent-dialog.md): An IAB TCF 2.4 compliant preference center with tabbed purpose and vendor management.
|
|
42
|
+
- [IAB TCF 2.4](./frameworks/react/iab/overview.md): Implement IAB Transparency & Consent Framework 2.4 compliance for programmatic advertising in EU/EEA jurisdictions.
|
|
43
43
|
- [useGVLData (Internal)](./frameworks/react/iab/use-gvl-data.md): Status note for the internal GVL hook used by the built-in IAB dialog.
|
|
44
44
|
- [Iframe Blocking](./frameworks/react/iframe-blocking.md): Block embedded content (YouTube, social widgets, maps) until users grant consent for the appropriate category.
|
|
45
45
|
- [Internationalization](./frameworks/react/internationalization.md): Translate consent UI into 30+ languages with built-in translations, custom overrides, and automatic browser language detection.
|
|
@@ -71,6 +71,7 @@ Connect analytics, advertising, maps, media, and other third-party tools behind
|
|
|
71
71
|
- [Crisp](./integrations/crisp.md): Load Crisp live chat with website ID, runtime, cookie, and session options.
|
|
72
72
|
- [Databuddy](./integrations/databuddy.md): Databuddy is a privacy-focused analytics platform that helps you understand user behavior and track events. It supports cookieless tracking and manages consent automatically through c15t's consent state synchronization.
|
|
73
73
|
- [Fathom Analytics](./integrations/fathom-analytics.md): Privacy-friendly cookieless analytics with a prebuilt helper that maps Fathom's data attributes into a c15t-managed script.
|
|
74
|
+
- [Front Chat](./integrations/front-chat.md): Load Front Chat after functionality consent and initialize the widget when its SDK is ready.
|
|
74
75
|
- [Google Maps](./integrations/google-maps.md): Render Google Maps only after consent with one shared Maps JavaScript API loader and independently managed map instances.
|
|
75
76
|
- [GA4 + Google Ads (gtag.js)](./integrations/google-tag.md): Send data to Google Analytics 4 and Google Ads with automatic Consent Mode v2 support.
|
|
76
77
|
- [Google Tag Manager](./integrations/google-tag-manager.md): Deploy and manage marketing tags centrally with automatic consent state synchronization.
|
|
@@ -85,7 +86,9 @@ Connect analytics, advertising, maps, media, and other third-party tools behind
|
|
|
85
86
|
- [Microsoft Clarity](./integrations/microsoft-clarity.md): Session replay and behavior analytics with a prebuilt helper that keeps Clarity consent synchronized with c15t measurement state.
|
|
86
87
|
- [Microsoft UET](./integrations/microsoft-uet.md): Track conversions and measure performance for Microsoft Advertising and Bing Ads.
|
|
87
88
|
- [Mixpanel Analytics](./integrations/mixpanel-analytics.md): Load Mixpanel with c15t and let Mixpanel's own opt-in and opt-out APIs follow measurement consent.
|
|
89
|
+
- [OneDollarStats](./integrations/one-dollar-stats.md): Load OneDollarStats after measurement consent with optional tracker data attributes.
|
|
88
90
|
- [Integrations](./integrations/overview.md): Load analytics, pixels, tag managers, and widgets through c15t so consent state controls when they run, update, and appear in your consent UI.
|
|
91
|
+
- [Pinterest Tag](./integrations/pinterest-tag.md): Track conversions and build audiences for Pinterest advertising campaigns.
|
|
89
92
|
- [Pirsch](./integrations/pirsch.md): Privacy-friendly, cookieless analytics loaded with Pirsch's fixed script id and identification-code attributes.
|
|
90
93
|
- [Plausible Analytics](./integrations/plausible-analytics.md): Privacy-friendly cookieless analytics with a prebuilt helper that preserves Plausible's queue bootstrap and loader attributes.
|
|
91
94
|
- [PostHog](./integrations/posthog.md): PostHog is an open-source product analytics platform for tracking user behavior, session replays, feature flags, and A/B testing. It supports cookieless tracking, allowing analytics to continue even without cookie consent.
|
|
@@ -6,7 +6,7 @@ group: frameworks
|
|
|
6
6
|
---
|
|
7
7
|
c15t supports three client modes that determine how consent data is stored and synchronized. Choose the mode that matches your infrastructure:
|
|
8
8
|
|
|
9
|
-
* **Hosted mode** - Recommended for production. Backend-backed consent with geolocation, centralized policy resolution, audit history, and
|
|
9
|
+
* **Hosted mode** - Recommended for production. Backend-backed consent with geolocation, centralized policy resolution, audit history, and a temporary fallback when the backend is unreachable.
|
|
10
10
|
* **Offline mode** - Browser-only storage with no network requests. Best for local development, demos, static deployments, or controlled fallback scenarios.
|
|
11
11
|
* **Custom mode** - Bring your own backend with custom endpoint handlers
|
|
12
12
|
|
|
@@ -26,7 +26,9 @@ The default mode. Connects to a c15t backend for full consent lifecycle manageme
|
|
|
26
26
|
|
|
27
27
|
1. On page load, the client calls `/init` to fetch geolocation, jurisdiction, localized translation strings
|
|
28
28
|
2. When the user grants or changes consent, it is saved locally before being synced to the backend.
|
|
29
|
-
3. If
|
|
29
|
+
3. If `/init` fails after retries, c15t uses a temporary opt-in fallback. Optional categories are denied during fallback, while the saved choice and its hosted policy fingerprint remain in browser storage.
|
|
30
|
+
|
|
31
|
+
A saved rejection survives an outage and recovery, including recovery to an opt-out or no-banner policy. A rejection saved during fallback also survives recovery. Grants saved during fallback are not sent to the backend and need fresh confirmation under the hosted policy. Previously valid grants can resume on a later load if the original hosted policy returns and the user has not changed their choice.
|
|
30
32
|
|
|
31
33
|
**Configuration:**
|
|
32
34
|
|
|
@@ -37,7 +39,7 @@ The default mode. Connects to a c15t backend for full consent lifecycle manageme
|
|
|
37
39
|
* The backend stays the source of truth for policy, translations, and jurisdiction logic
|
|
38
40
|
* Consent decisions can be stored beyond the current browser session for audit and support workflows
|
|
39
41
|
* Server-side systems can preload consent-aware behavior instead of waiting for client-only storage
|
|
40
|
-
* If the backend is temporarily unavailable, c15t
|
|
42
|
+
* If the backend is temporarily unavailable, c15t falls back locally and re-syncs rejections later. Grants made during the outage wait for fresh confirmation.
|
|
41
43
|
|
|
42
44
|
**Best for:** Production apps that need geolocation-based jurisdiction detection, consent record storage, and compliance audit trails.
|
|
43
45
|
|