@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.
Files changed (128) hide show
  1. package/AGENTS.md +6 -3
  2. package/README.md +1 -1
  3. package/dist/components/iab-consent-dialog/atoms/purpose-item.cjs +1 -1
  4. package/dist/components/iab-consent-dialog/atoms/purpose-item.js +1 -1
  5. package/dist/components/iab-consent-dialog/hooks/use-gvl-data.cjs +1 -1
  6. package/dist/components/iab-consent-dialog/hooks/use-gvl-data.js +1 -1
  7. package/dist/components/iab-consent-dialog/iab-consent-dialog.cjs +1 -1
  8. package/dist/components/iab-consent-dialog/iab-consent-dialog.js +1 -1
  9. package/dist/iab/styles.tw3.css +1 -1
  10. package/dist/version.cjs +1 -1
  11. package/dist/version.js +1 -1
  12. package/dist-types/components/consent-banner/components.d.ts +3 -3
  13. package/dist-types/components/consent-banner/consent-banner.d.ts +1 -1
  14. package/dist-types/components/consent-banner/index.d.ts +9 -9
  15. package/dist-types/components/consent-banner/policy-actions.d.ts +2 -2
  16. package/dist-types/components/consent-dialog/atoms/card.d.ts +5 -5
  17. package/dist-types/components/consent-dialog/atoms/overlay.d.ts +1 -1
  18. package/dist-types/components/consent-dialog/consent-dialog.d.ts +2 -2
  19. package/dist-types/components/consent-dialog/index.d.ts +7 -7
  20. package/dist-types/components/consent-dialog-link/index.d.ts +1 -1
  21. package/dist-types/components/consent-dialog-trigger/atoms/button.d.ts +1 -1
  22. package/dist-types/components/consent-dialog-trigger/atoms/icon.d.ts +1 -1
  23. package/dist-types/components/consent-dialog-trigger/atoms/root.d.ts +2 -2
  24. package/dist-types/components/consent-dialog-trigger/atoms/toolbar.d.ts +2 -2
  25. package/dist-types/components/consent-dialog-trigger/consent-dialog-trigger-toolbar.d.ts +1 -1
  26. package/dist-types/components/consent-dialog-trigger/consent-dialog-trigger.d.ts +5 -5
  27. package/dist-types/components/consent-dialog-trigger/index.d.ts +4 -4
  28. package/dist-types/components/consent-dialog-trigger/types.d.ts +1 -1
  29. package/dist-types/components/consent-preferences-link/consent-preferences-link.d.ts +1 -1
  30. package/dist-types/components/consent-preferences-link/index.d.ts +1 -1
  31. package/dist-types/components/consent-widget/atoms/accordion.d.ts +3 -3
  32. package/dist-types/components/consent-widget/atoms/button.d.ts +1 -1
  33. package/dist-types/components/consent-widget/atoms/footer.d.ts +1 -1
  34. package/dist-types/components/consent-widget/atoms/root.d.ts +1 -1
  35. package/dist-types/components/consent-widget/consent-widget.d.ts +1 -1
  36. package/dist-types/components/consent-widget/index.d.ts +11 -11
  37. package/dist-types/components/consent-widget/policy-actions.d.ts +2 -2
  38. package/dist-types/components/consent-widget/types.d.ts +1 -1
  39. package/dist-types/components/frame/atoms.d.ts +2 -2
  40. package/dist-types/components/frame/frame.d.ts +1 -1
  41. package/dist-types/components/frame/index.d.ts +3 -3
  42. package/dist-types/components/frame/types.d.ts +1 -1
  43. package/dist-types/components/iab-consent-banner/iab-consent-banner.d.ts +2 -2
  44. package/dist-types/components/iab-consent-banner/index.d.ts +19 -19
  45. package/dist-types/components/iab-consent-dialog/atoms/purpose-item.d.ts +21 -2
  46. package/dist-types/components/iab-consent-dialog/atoms/stack-item.d.ts +1 -1
  47. package/dist-types/components/iab-consent-dialog/atoms/vendor-list.d.ts +1 -1
  48. package/dist-types/components/iab-consent-dialog/hooks/use-gvl-data.d.ts +7 -1
  49. package/dist-types/components/iab-consent-dialog/iab-consent-dialog.d.ts +5 -4
  50. package/dist-types/components/iab-consent-dialog/index.d.ts +25 -25
  51. package/dist-types/components/iab-consent-dialog/use-iab-translations.d.ts +4 -0
  52. package/dist-types/components/integrations/index.d.ts +2 -2
  53. package/dist-types/components/integrations/shared.d.ts +1 -1
  54. package/dist-types/components/integrations/youtube-embed.d.ts +1 -1
  55. package/dist-types/components/shared/policy-actions.d.ts +2 -2
  56. package/dist-types/components/shared/primitives/box.d.ts +1 -1
  57. package/dist-types/components/shared/primitives/button.d.ts +4 -4
  58. package/dist-types/components/shared/primitives/button.types.d.ts +1 -1
  59. package/dist-types/components/shared/primitives/legal-links/index.d.ts +1 -1
  60. package/dist-types/components/shared/ui/accordion/accordion.d.ts +2 -2
  61. package/dist-types/components/shared/ui/accordion/index.d.ts +2 -2
  62. package/dist-types/components/shared/ui/animated-collapse/index.d.ts +2 -2
  63. package/dist-types/components/shared/ui/branding.d.ts +1 -1
  64. package/dist-types/components/shared/ui/button/button.d.ts +1 -1
  65. package/dist-types/components/shared/ui/button/index.d.ts +2 -2
  66. package/dist-types/components/shared/ui/collapsible/index.d.ts +1 -1
  67. package/dist-types/components/shared/ui/dialog/index.d.ts +1 -1
  68. package/dist-types/components/shared/ui/preference-item/index.d.ts +1 -1
  69. package/dist-types/components/shared/ui/switch/index.d.ts +2 -2
  70. package/dist-types/components/shared/ui/switch/switch.d.ts +1 -1
  71. package/dist-types/components/shared/ui/tabs/index.d.ts +1 -1
  72. package/dist-types/context/theme-context.d.ts +1 -1
  73. package/dist-types/headless.d.ts +9 -9
  74. package/dist-types/hooks/index.d.ts +12 -12
  75. package/dist-types/hooks/use-headless-consent-ui.d.ts +1 -1
  76. package/dist-types/hooks/use-headless-iab-consent-ui.d.ts +1 -1
  77. package/dist-types/hooks/use-styles.d.ts +1 -1
  78. package/dist-types/hooks/use-theme.d.ts +1 -1
  79. package/dist-types/iab.d.ts +4 -4
  80. package/dist-types/index.d.ts +20 -20
  81. package/dist-types/primitives/accordion.d.ts +1 -1
  82. package/dist-types/primitives/button.d.ts +1 -1
  83. package/dist-types/primitives/collapsible.d.ts +1 -1
  84. package/dist-types/primitives/dialog.d.ts +1 -1
  85. package/dist-types/primitives/preference-item.d.ts +1 -1
  86. package/dist-types/primitives/switch.d.ts +1 -1
  87. package/dist-types/primitives/tabs.d.ts +1 -1
  88. package/dist-types/primitives.d.ts +7 -7
  89. package/dist-types/providers/consent-manager-provider.d.ts +1 -1
  90. package/dist-types/server/fetch-ssr-data.d.ts +1 -1
  91. package/dist-types/server/index.d.ts +5 -5
  92. package/dist-types/types/theme/index.d.ts +2 -2
  93. package/dist-types/types/theme/style-types.d.ts +1 -1
  94. package/dist-types/utils/merge-styles.d.ts +1 -1
  95. package/dist-types/utils/test-helpers.d.ts +1 -1
  96. package/dist-types/utils/theme-utils.d.ts +1 -1
  97. package/dist-types/version.d.ts +1 -1
  98. package/docs/README.md +6 -3
  99. package/docs/frameworks/react/concepts/client-modes.md +5 -3
  100. package/docs/frameworks/react/concepts/consent-models.md +2 -2
  101. package/docs/frameworks/react/concepts/cookie-management.md +4 -0
  102. package/docs/frameworks/react/concepts/glossary.md +1 -1
  103. package/docs/frameworks/react/concepts/initialization-flow.md +3 -3
  104. package/docs/frameworks/react/concepts/policy-packs.md +4 -2
  105. package/docs/frameworks/react/hooks/use-consent-manager/overview.md +1 -1
  106. package/docs/frameworks/react/iab/consent-banner.md +2 -2
  107. package/docs/frameworks/react/iab/consent-dialog.md +12 -3
  108. package/docs/frameworks/react/iab/overview.md +18 -6
  109. package/docs/frameworks/react/iframe-blocking.md +2 -0
  110. package/docs/frameworks/react/policy-packs.md +1 -1
  111. package/docs/integrations/front-chat.md +178 -0
  112. package/docs/integrations/one-dollar-stats.md +118 -0
  113. package/docs/integrations/overview.md +3 -0
  114. package/docs/integrations/pinterest-tag.md +236 -0
  115. package/docs/shared/concepts/client-modes.md +5 -3
  116. package/docs/shared/concepts/consent-models.md +2 -2
  117. package/docs/shared/concepts/cookie-management.md +4 -0
  118. package/docs/shared/concepts/glossary.md +1 -1
  119. package/docs/shared/concepts/initialization-flow.md +3 -3
  120. package/docs/shared/concepts/policy-packs.md +4 -2
  121. package/docs/shared/react/guides/iframe-blocking.md +2 -0
  122. package/docs/shared/react/guides/policy-packs.md +1 -1
  123. package/docs/shared/react/hooks/use-consent-manager/overview.md +1 -1
  124. package/docs/shared/react/iab/consent-banner.md +1 -1
  125. package/docs/shared/react/iab/consent-dialog.md +11 -2
  126. package/docs/shared/react/iab/overview.md +16 -4
  127. package/package.json +6 -6
  128. package/readme.json +1 -1
@@ -3,9 +3,9 @@
3
3
  * Provides the core components for building consent banners.
4
4
  * Implements accessible, customizable components following GDPR requirements.
5
5
  */
6
- import { type BoxProps } from '../shared/primitives/box';
7
- import type { ConsentButtonProps } from '../shared/primitives/button.types';
8
- import type { InlineLegalLinksProps } from '../shared/primitives/legal-links';
6
+ import { type BoxProps } from '../shared/primitives/box.js';
7
+ import type { ConsentButtonProps } from '../shared/primitives/button.types.js';
8
+ import type { InlineLegalLinksProps } from '../shared/primitives/legal-links/index.js';
9
9
  /**
10
10
  * Title component for the consent banner.
11
11
  *
@@ -1,6 +1,6 @@
1
1
  import { type PolicyUiActionDirection } from '@c15t/ui/utils';
2
2
  import { type FC, type ReactNode } from 'react';
3
- import type { InlineLegalLinksProps } from '../shared/primitives/legal-links';
3
+ import type { InlineLegalLinksProps } from '../shared/primitives/legal-links/index.js';
4
4
  /**
5
5
  * Identifiers for the available buttons in the consent banner.
6
6
  * @public
@@ -8,11 +8,11 @@
8
8
  *
9
9
  */
10
10
  import type { FC } from 'react';
11
- import { Overlay } from './atoms/overlay';
12
- import { Root } from './atoms/root';
13
- import { AcceptButton, Card, CustomizeButton, Description, Footer, FooterSubGroup, Header, RejectButton, Title } from './components';
14
- import { type ConsentBannerButton, type ConsentBannerLayout, type ConsentBannerProps } from './consent-banner';
15
- import { PolicyActions } from './policy-actions';
11
+ import { Overlay } from './atoms/overlay.js';
12
+ import { Root } from './atoms/root.js';
13
+ import { AcceptButton, Card, CustomizeButton, Description, Footer, FooterSubGroup, Header, RejectButton, Title } from './components.js';
14
+ import { type ConsentBannerButton, type ConsentBannerLayout, type ConsentBannerProps } from './consent-banner.js';
15
+ import { PolicyActions } from './policy-actions.js';
16
16
  /**
17
17
  * This interface extends the base ConsentBanner component with additional sub-components
18
18
  * that can be used to compose the banner's structure.
@@ -108,8 +108,8 @@ export interface ConsentBannerCompoundComponent extends FC<ConsentBannerProps> {
108
108
  */
109
109
  declare const ConsentBanner: ConsentBannerCompoundComponent;
110
110
  export default ConsentBanner;
111
- export { ConsentBannerOverlay, Overlay } from './atoms/overlay';
112
- export { ConsentBannerRoot, Root } from './atoms/root';
113
- export { AcceptButton, Card, ConsentBannerAcceptButton, ConsentBannerCard, ConsentBannerCustomizeButton, ConsentBannerDescription, ConsentBannerFooter, ConsentBannerFooterSubGroup, ConsentBannerHeader, ConsentBannerRejectButton, ConsentBannerTitle, CustomizeButton, Description, Footer, FooterSubGroup, Header, RejectButton, Title, } from './components';
114
- export { type ConsentBannerPolicyActionRenderProps, ConsentBannerPolicyActions, type ConsentBannerPolicyActionsProps, PolicyActions, } from './policy-actions';
111
+ export { ConsentBannerOverlay, Overlay } from './atoms/overlay.js';
112
+ export { ConsentBannerRoot, Root } from './atoms/root.js';
113
+ export { AcceptButton, Card, ConsentBannerAcceptButton, ConsentBannerCard, ConsentBannerCustomizeButton, ConsentBannerDescription, ConsentBannerFooter, ConsentBannerFooterSubGroup, ConsentBannerHeader, ConsentBannerRejectButton, ConsentBannerTitle, CustomizeButton, Description, Footer, FooterSubGroup, Header, RejectButton, Title, } from './components.js';
114
+ export { type ConsentBannerPolicyActionRenderProps, ConsentBannerPolicyActions, type ConsentBannerPolicyActionsProps, PolicyActions, } from './policy-actions.js';
115
115
  export { ConsentBanner, type ConsentBannerButton, type ConsentBannerLayout, type ConsentBannerProps, };
@@ -1,6 +1,6 @@
1
1
  import type { ReactNode } from 'react';
2
- import { type HeadlessConsentBannerAction } from '../../hooks/use-headless-consent-ui';
3
- import { type PolicyActionRenderProps } from '../shared/policy-actions';
2
+ import { type HeadlessConsentBannerAction } from '../../hooks/use-headless-consent-ui.js';
3
+ import { type PolicyActionRenderProps } from '../shared/policy-actions.js';
4
4
  export interface ConsentBannerPolicyActionRenderProps extends PolicyActionRenderProps<HeadlessConsentBannerAction> {
5
5
  }
6
6
  export interface ConsentBannerPolicyActionsProps {
@@ -1,8 +1,8 @@
1
1
  import { type ReactNode } from 'react';
2
- import { type BoxProps } from '../../shared/primitives/box';
3
- import type { InlineLegalLinksProps } from '../../shared/primitives/legal-links';
4
- import { type BrandingVariant } from '../../shared/ui/branding';
5
- import type { ClassNameStyle } from '../../../types/theme';
2
+ import { type BoxProps } from '../../shared/primitives/box.js';
3
+ import type { InlineLegalLinksProps } from '../../shared/primitives/legal-links/index.js';
4
+ import { type BrandingVariant } from '../../shared/ui/branding.js';
5
+ import type { ClassNameStyle } from '../../../types/theme/index.js';
6
6
  declare const ConsentDialogCard: import("react").ForwardRefExoticComponent<{
7
7
  /** The content to be rendered inside the consent dialog card */
8
8
  children?: ReactNode;
@@ -61,7 +61,7 @@ declare const ConsentDialogFooter: import("react").ForwardRefExoticComponent<Box
61
61
  type BrandingProps = {
62
62
  hideBranding: boolean;
63
63
  variant?: BrandingVariant;
64
- themeKey?: import('../../shared/ui/branding').BrandingThemeKey;
64
+ themeKey?: import('../../shared/ui/branding.js').BrandingThemeKey;
65
65
  className?: string;
66
66
  'data-testid'?: string;
67
67
  };
@@ -4,7 +4,7 @@
4
4
  * Implements accessible modal behavior with animation support.
5
5
  */
6
6
  import { type CSSProperties, type HTMLAttributes } from 'react';
7
- import type { ThemeValue } from '../../../types/theme';
7
+ import type { ThemeValue } from '../../../types/theme/index.js';
8
8
  /**
9
9
  * Props for the Overlay component.
10
10
  *
@@ -7,8 +7,8 @@
7
7
  * prefer a one-line `<ConsentDialog />` usage still have it.
8
8
  */
9
9
  import type { FC } from 'react';
10
- import { type ConsentDialogTriggerProps } from '../consent-dialog-trigger';
11
- import type { InlineLegalLinksProps } from '../shared/primitives/legal-links';
10
+ import { type ConsentDialogTriggerProps } from '../consent-dialog-trigger/index.js';
11
+ import type { InlineLegalLinksProps } from '../shared/primitives/legal-links/index.js';
12
12
  /**
13
13
  * Props for the `<ConsentDialog />` convenience component.
14
14
  */
@@ -7,10 +7,10 @@
7
7
  * of the dialog's parts.
8
8
  */
9
9
  import type { FC } from 'react';
10
- import { Card, ConsentCustomizationCard, ConsentDialogContent, ConsentDialogFooter, ConsentDialogHeader, ConsentDialogHeaderDescription, ConsentDialogHeaderTitle, Content, Footer, Header, HeaderDescription, HeaderTitle } from './atoms/card';
11
- import { Overlay } from './atoms/overlay';
12
- import { Root } from './atoms/root';
13
- import { type ConsentDialogProps } from './consent-dialog';
10
+ import { Card, ConsentCustomizationCard, ConsentDialogContent, ConsentDialogFooter, ConsentDialogHeader, ConsentDialogHeaderDescription, ConsentDialogHeaderTitle, Content, Footer, Header, HeaderDescription, HeaderTitle } from './atoms/card.js';
11
+ import { Overlay } from './atoms/overlay.js';
12
+ import { Root } from './atoms/root.js';
13
+ import { type ConsentDialogProps } from './consent-dialog.js';
14
14
  export type { ConsentDialogProps };
15
15
  /**
16
16
  * This interface extends the base ConsentDialog component with additional sub-components
@@ -93,7 +93,7 @@ export interface ConsentDialogCompoundComponent extends FC<ConsentDialogProps> {
93
93
  */
94
94
  declare const ConsentDialog: ConsentDialogCompoundComponent;
95
95
  export default ConsentDialog;
96
- export { Card, ConsentCustomizationCard, ConsentDialogContent, ConsentDialogFooter, ConsentDialogHeader, ConsentDialogHeaderDescription, ConsentDialogHeaderTitle, Content, Footer, Header, HeaderDescription, HeaderTitle, } from './atoms/card';
97
- export { ConsentDialogOverlay, Overlay } from './atoms/overlay';
98
- export { ConsentDialogRoot, Root } from './atoms/root';
96
+ export { Card, ConsentCustomizationCard, ConsentDialogContent, ConsentDialogFooter, ConsentDialogHeader, ConsentDialogHeaderDescription, ConsentDialogHeaderTitle, Content, Footer, Header, HeaderDescription, HeaderTitle, } from './atoms/card.js';
97
+ export { ConsentDialogOverlay, Overlay } from './atoms/overlay.js';
98
+ export { ConsentDialogRoot, Root } from './atoms/root.js';
99
99
  export { ConsentDialog };
@@ -1 +1 @@
1
- export { ConsentDialogLink, type ConsentDialogLinkProps, } from '../consent-preferences-link/consent-preferences-link';
1
+ export { ConsentDialogLink, type ConsentDialogLinkProps, } from '../consent-preferences-link/consent-preferences-link.js';
@@ -1,5 +1,5 @@
1
1
  import { type ReactNode } from 'react';
2
- import type { TriggerSize } from '../types';
2
+ import type { TriggerSize } from '../types.js';
3
3
  /**
4
4
  * Props for the Button component.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  import { type ReactNode } from 'react';
2
- import type { TriggerIcon as TriggerIconType } from '../types';
2
+ import type { TriggerIcon as TriggerIconType } from '../types.js';
3
3
  /**
4
4
  * Props for the Icon component.
5
5
  */
@@ -5,8 +5,8 @@
5
5
  * @packageDocumentation
6
6
  */
7
7
  import { type ReactNode } from 'react';
8
- import type { CornerPosition, TriggerVisibility } from '../types';
9
- import { type UseDraggableReturn } from '../use-draggable';
8
+ import type { CornerPosition, TriggerVisibility } from '../types.js';
9
+ import { type UseDraggableReturn } from '../use-draggable.js';
10
10
  /**
11
11
  * Context value for the ConsentDialogTrigger compound component.
12
12
  */
@@ -1,6 +1,6 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { ClassNameStyle } from '../../../types/theme';
3
- import type { ConsentDialogTriggerToolbarAction, ConsentDialogTriggerToolbarPreferences, TriggerOrientation, TriggerSize } from '../types';
2
+ import type { ClassNameStyle } from '../../../types/theme/index.js';
3
+ import type { ConsentDialogTriggerToolbarAction, ConsentDialogTriggerToolbarPreferences, TriggerOrientation, TriggerSize } from '../types.js';
4
4
  export interface TriggerToolbarProps extends Omit<ClassNameStyle, 'baseClassName'> {
5
5
  /** App-owned actions rendered alongside the preferences action. */
6
6
  actions: readonly ConsentDialogTriggerToolbarAction[];
@@ -5,7 +5,7 @@
5
5
  * @packageDocumentation
6
6
  */
7
7
  import type { ReactNode } from 'react';
8
- import type { ConsentDialogTriggerToolbarProps } from './types';
8
+ import type { ConsentDialogTriggerToolbarProps } from './types.js';
9
9
  /**
10
10
  * A draggable toolbar that always includes one action for opening consent
11
11
  * preferences and can include app-owned actions such as theme or support
@@ -7,11 +7,11 @@
7
7
  * @packageDocumentation
8
8
  */
9
9
  import type { FC } from 'react';
10
- import { TriggerButton, type TriggerButtonProps } from './atoms/button';
11
- import { TriggerIcon, type TriggerIconProps } from './atoms/icon';
12
- import { TriggerRoot, type TriggerRootProps, useTriggerContext } from './atoms/root';
13
- import { TriggerText, type TriggerTextProps } from './atoms/text';
14
- import type { ConsentDialogTriggerProps } from './types';
10
+ import { TriggerButton, type TriggerButtonProps } from './atoms/button.js';
11
+ import { TriggerIcon, type TriggerIconProps } from './atoms/icon.js';
12
+ import { TriggerRoot, type TriggerRootProps, useTriggerContext } from './atoms/root.js';
13
+ import { TriggerText, type TriggerTextProps } from './atoms/text.js';
14
+ import type { ConsentDialogTriggerProps } from './types.js';
15
15
  /**
16
16
  * Compound component interface for ConsentDialogTrigger.
17
17
  */
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @packageDocumentation
5
5
  */
6
- export { ConsentDialogTrigger, type ConsentDialogTriggerCompound, TriggerButton, type TriggerButtonProps, TriggerIcon, type TriggerIconProps, TriggerRoot, type TriggerRootProps, TriggerText, type TriggerTextProps, useTriggerContext, } from './consent-dialog-trigger';
7
- export { ConsentDialogTriggerToolbar } from './consent-dialog-trigger-toolbar';
8
- export type { ConsentDialogTriggerProps, ConsentDialogTriggerToolbarAction, ConsentDialogTriggerToolbarPreferences, ConsentDialogTriggerToolbarProps, CornerPosition, TriggerIcon as TriggerIconType, TriggerOrientation, TriggerSize, TriggerVisibility, } from './types';
9
- export { type UseDraggableOptions, type UseDraggableReturn, useDraggable, } from './use-draggable';
6
+ export { ConsentDialogTrigger, type ConsentDialogTriggerCompound, TriggerButton, type TriggerButtonProps, TriggerIcon, type TriggerIconProps, TriggerRoot, type TriggerRootProps, TriggerText, type TriggerTextProps, useTriggerContext, } from './consent-dialog-trigger.js';
7
+ export { ConsentDialogTriggerToolbar } from './consent-dialog-trigger-toolbar.js';
8
+ export type { ConsentDialogTriggerProps, ConsentDialogTriggerToolbarAction, ConsentDialogTriggerToolbarPreferences, ConsentDialogTriggerToolbarProps, CornerPosition, TriggerIcon as TriggerIconType, TriggerOrientation, TriggerSize, TriggerVisibility, } from './types.js';
9
+ export { type UseDraggableOptions, type UseDraggableReturn, useDraggable, } from './use-draggable.js';
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import type { CornerPosition } from '@c15t/ui/utils/trigger-utils';
7
7
  import type { ReactNode } from 'react';
8
- import type { ClassNameStyle } from '../../types/theme';
8
+ import type { ClassNameStyle } from '../../types/theme/index.js';
9
9
  /**
10
10
  * Icon rendered by a consent dialog trigger control.
11
11
  *
@@ -1,5 +1,5 @@
1
1
  import { type ReactNode } from 'react';
2
- import type { ConsentButtonProps } from '../shared/primitives/button.types';
2
+ import type { ConsentButtonProps } from '../shared/primitives/button.types.js';
3
3
  /**
4
4
  * Inline trigger for opening the consent dialog from places like site footers.
5
5
  *
@@ -1 +1 @@
1
- export { ConsentDialogLink, type ConsentDialogLinkProps, } from './consent-preferences-link';
1
+ export { ConsentDialogLink, type ConsentDialogLinkProps, } from './consent-preferences-link.js';
@@ -1,7 +1,7 @@
1
1
  import { type ReactNode } from 'react';
2
- import { type BoxProps } from '../../shared/primitives/box';
3
- import * as PreferenceItem from '../../shared/ui/preference-item';
4
- import * as RadixSwitch from '../../shared/ui/switch';
2
+ import { type BoxProps } from '../../shared/primitives/box.js';
3
+ import * as PreferenceItem from '../../shared/ui/preference-item/index.js';
4
+ import * as RadixSwitch from '../../shared/ui/switch/index.js';
5
5
  declare const ConsentWidgetAccordionTrigger: import("react").ForwardRefExoticComponent<BoxProps & import("react").RefAttributes<HTMLDivElement>>;
6
6
  declare const ConsentWidgetAccordionTriggerInner: import("react").ForwardRefExoticComponent<PreferenceItem.PreferenceItemTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
7
7
  declare const ConsentWidgetAccordionContent: import("react").ForwardRefExoticComponent<PreferenceItem.PreferenceItemContentProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,4 +1,4 @@
1
- import type { ConsentButtonProps } from '../../shared/primitives/button.types';
1
+ import type { ConsentButtonProps } from '../../shared/primitives/button.types.js';
2
2
  /**
3
3
  * Button to accept all available cookies.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { type BoxProps } from '../../shared/primitives/box';
1
+ import { type BoxProps } from '../../shared/primitives/box.js';
2
2
  /**
3
3
  * Footer component for consent management actions.
4
4
  *
@@ -1,5 +1,5 @@
1
1
  import type { FC, ReactNode } from 'react';
2
- import { type ThemeContextValue } from '../../../context/theme-context';
2
+ import { type ThemeContextValue } from '../../../context/theme-context.js';
3
3
  /**
4
4
  * Props for the ConsentWidgetRoot component.
5
5
  *
@@ -1,2 +1,2 @@
1
- import type { ConsentWidgetProps } from './types';
1
+ import type { ConsentWidgetProps } from './types.js';
2
2
  export declare const ConsentWidget: ({ hideBranding, noStyle: localNoStyle, disableAnimation: localDisableAnimation, scrollLock: localScrollLock, trapFocus: localTrapFocus, ...props }: ConsentWidgetProps) => import("react").JSX.Element;
@@ -8,12 +8,12 @@
8
8
  *
9
9
  */
10
10
  import type { FC } from 'react';
11
- import { Accordion, AccordionArrow, AccordionContent, AccordionItem, AccordionItems, AccordionTrigger, AccordionTriggerInner, Switch } from './atoms/accordion';
12
- import { AcceptAllButton, CustomizeButton, RejectButton, SaveButton } from './atoms/button';
13
- import { Footer, FooterSubGroup } from './atoms/footer';
14
- import { Root } from './atoms/root';
15
- import { PolicyActions } from './policy-actions';
16
- import type { ConsentWidgetProps } from './types';
11
+ import { Accordion, AccordionArrow, AccordionContent, AccordionItem, AccordionItems, AccordionTrigger, AccordionTriggerInner, Switch } from './atoms/accordion.js';
12
+ import { AcceptAllButton, CustomizeButton, RejectButton, SaveButton } from './atoms/button.js';
13
+ import { Footer, FooterSubGroup } from './atoms/footer.js';
14
+ import { Root } from './atoms/root.js';
15
+ import { PolicyActions } from './policy-actions.js';
16
+ import type { ConsentWidgetProps } from './types.js';
17
17
  export type { ConsentWidgetProps };
18
18
  /**
19
19
  * This interface extends the base ConsentWidget component with additional sub-components
@@ -92,9 +92,9 @@ export interface ConsentWidgetCompoundComponent extends FC<ConsentWidgetProps> {
92
92
  */
93
93
  declare const ConsentWidget: ConsentWidgetCompoundComponent;
94
94
  export default ConsentWidget;
95
- export { Accordion, AccordionArrow, AccordionContent, AccordionItem, AccordionItems, AccordionTrigger, AccordionTriggerInner, ConsentWidgetAccordion, ConsentWidgetAccordionArrow, ConsentWidgetAccordionContent, ConsentWidgetAccordionItem, ConsentWidgetAccordionItems, ConsentWidgetAccordionTrigger, ConsentWidgetAccordionTriggerInner, ConsentWidgetSwitch, Switch, } from './atoms/accordion';
96
- export { AcceptAllButton, ConsentWidgetAcceptAllButton, ConsentWidgetCustomizeButton, ConsentWidgetRejectButton, ConsentWidgetSaveButton, CustomizeButton, RejectButton, SaveButton, } from './atoms/button';
97
- export { ConsentWidgetFooter, ConsentWidgetFooterSubGroup, Footer, FooterSubGroup, } from './atoms/footer';
98
- export { ConsentWidgetRoot, Root, } from './atoms/root';
99
- export { type ConsentWidgetPolicyActionRenderProps, ConsentWidgetPolicyActions, type ConsentWidgetPolicyActionsProps, PolicyActions, } from './policy-actions';
95
+ export { Accordion, AccordionArrow, AccordionContent, AccordionItem, AccordionItems, AccordionTrigger, AccordionTriggerInner, ConsentWidgetAccordion, ConsentWidgetAccordionArrow, ConsentWidgetAccordionContent, ConsentWidgetAccordionItem, ConsentWidgetAccordionItems, ConsentWidgetAccordionTrigger, ConsentWidgetAccordionTriggerInner, ConsentWidgetSwitch, Switch, } from './atoms/accordion.js';
96
+ export { AcceptAllButton, ConsentWidgetAcceptAllButton, ConsentWidgetCustomizeButton, ConsentWidgetRejectButton, ConsentWidgetSaveButton, CustomizeButton, RejectButton, SaveButton, } from './atoms/button.js';
97
+ export { ConsentWidgetFooter, ConsentWidgetFooterSubGroup, Footer, FooterSubGroup, } from './atoms/footer.js';
98
+ export { ConsentWidgetRoot, Root, } from './atoms/root.js';
99
+ export { type ConsentWidgetPolicyActionRenderProps, ConsentWidgetPolicyActions, type ConsentWidgetPolicyActionsProps, PolicyActions, } from './policy-actions.js';
100
100
  export { ConsentWidget };
@@ -1,6 +1,6 @@
1
1
  import type { ReactNode } from 'react';
2
- import { type HeadlessConsentDialogAction } from '../../hooks/use-headless-consent-ui';
3
- import { type PolicyActionRenderProps } from '../shared/policy-actions';
2
+ import { type HeadlessConsentDialogAction } from '../../hooks/use-headless-consent-ui.js';
3
+ import { type PolicyActionRenderProps } from '../shared/policy-actions.js';
4
4
  export interface ConsentWidgetPolicyActionRenderProps extends PolicyActionRenderProps<HeadlessConsentDialogAction> {
5
5
  }
6
6
  export interface ConsentWidgetPolicyActionsProps {
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { InlineLegalLinksProps } from '../shared/primitives/legal-links';
2
+ import type { InlineLegalLinksProps } from '../shared/primitives/legal-links/index.js';
3
3
  export interface ConsentWidgetRootProps {
4
4
  children: ReactNode;
5
5
  useProvider?: boolean;
@@ -1,6 +1,6 @@
1
1
  import type { AllConsentNames } from 'c15t';
2
- import { type BoxProps } from '../shared/primitives/box';
3
- import type { ConsentButtonProps } from '../shared/primitives/button.types';
2
+ import { type BoxProps } from '../shared/primitives/box.js';
3
+ import type { ConsentButtonProps } from '../shared/primitives/button.types.js';
4
4
  declare const FrameRoot: import("react").ForwardRefExoticComponent<Omit<BoxProps, "themeKey"> & import("react").RefAttributes<HTMLDivElement>>;
5
5
  declare const FrameTitle: import("react").ForwardRefExoticComponent<Omit<BoxProps, "themeKey"> & {
6
6
  category?: AllConsentNames;
@@ -1,2 +1,2 @@
1
- import type { FrameProps } from './types';
1
+ import type { FrameProps } from './types.js';
2
2
  export declare const Frame: import("react").ForwardRefExoticComponent<Omit<FrameProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,4 +1,4 @@
1
- import type { FrameCompoundComponent } from './types';
1
+ import type { FrameCompoundComponent } from './types.js';
2
2
  /**
3
3
  * The Frame component that provides consent-gated content rendering
4
4
  *
@@ -19,6 +19,6 @@ import type { FrameCompoundComponent } from './types';
19
19
  * @see {@link AllConsentNames} for consent categories
20
20
  */
21
21
  declare const Frame: FrameCompoundComponent;
22
- export { FrameButton, FrameRoot, FrameTitle } from './atoms';
23
- export type { FrameCompoundComponent, FrameProps } from './types';
22
+ export { FrameButton, FrameRoot, FrameTitle } from './atoms.js';
23
+ export type { FrameCompoundComponent, FrameProps } from './types.js';
24
24
  export { Frame };
@@ -1,6 +1,6 @@
1
1
  import type { AllConsentNames } from 'c15t';
2
2
  import type { ComponentPropsWithRef, FC, ReactNode } from 'react';
3
- import type * as Atom from './atoms';
3
+ import type * as Atom from './atoms.js';
4
4
  export interface FrameProps extends ComponentPropsWithRef<'div'> {
5
5
  /**
6
6
  * Content rendered when consent is granted. Children are not mounted until
@@ -41,10 +41,10 @@ export interface IABConsentBannerProps {
41
41
  uiSource?: string;
42
42
  }
43
43
  /**
44
- * IAB TCF 2.3 compliant cookie consent banner.
44
+ * IAB TCF 2.4 compliant cookie consent banner.
45
45
  *
46
46
  * @remarks
47
- * This component implements the required IAB TCF 2.3 UI elements:
47
+ * This component implements the required IAB TCF 2.4 UI elements:
48
48
  * - Partner count disclosure
49
49
  * - Purpose summary
50
50
  * - Legitimate interest notice
@@ -7,15 +7,15 @@
7
7
  * of the banner's parts.
8
8
  */
9
9
  import type { FC } from 'react';
10
- import { IABConsentBannerButtonGroup, IABConsentBannerFooterSpacer } from './atoms/button-group';
11
- import { IABConsentBannerCard } from './atoms/card';
12
- import { IABConsentBannerDescription } from './atoms/description';
13
- import { IABConsentBannerFooter } from './atoms/footer';
14
- import { IABConsentBannerHeader } from './atoms/header';
15
- import { IABConsentBannerOverlay } from './atoms/overlay';
16
- import { IABConsentBannerRoot } from './atoms/root';
17
- import { IABConsentBannerTitle } from './atoms/title';
18
- import { type IABConsentBannerProps } from './iab-consent-banner';
10
+ import { IABConsentBannerButtonGroup, IABConsentBannerFooterSpacer } from './atoms/button-group.js';
11
+ import { IABConsentBannerCard } from './atoms/card.js';
12
+ import { IABConsentBannerDescription } from './atoms/description.js';
13
+ import { IABConsentBannerFooter } from './atoms/footer.js';
14
+ import { IABConsentBannerHeader } from './atoms/header.js';
15
+ import { IABConsentBannerOverlay } from './atoms/overlay.js';
16
+ import { IABConsentBannerRoot } from './atoms/root.js';
17
+ import { IABConsentBannerTitle } from './atoms/title.js';
18
+ import { type IABConsentBannerProps } from './iab-consent-banner.js';
19
19
  /**
20
20
  * This interface extends the base IABConsentBanner component with additional sub-components
21
21
  * that can be used to compose the banner's structure.
@@ -32,14 +32,14 @@ export interface IABConsentBannerCompoundComponent extends FC<IABConsentBannerPr
32
32
  Overlay: typeof IABConsentBannerOverlay;
33
33
  }
34
34
  /**
35
- * IAB TCF 2.3 compliant cookie consent banner component.
35
+ * IAB TCF 2.4 compliant cookie consent banner component.
36
36
  *
37
37
  * @remarks
38
38
  * This component serves as the main entry point for rendering an IAB-compliant consent banner.
39
39
  * It provides a structured layout with required IAB TCF elements.
40
40
  *
41
41
  * Key features:
42
- * - IAB TCF 2.3 compliant
42
+ * - IAB TCF 2.4 compliant
43
43
  * - Fully accessible by default
44
44
  * - Customizable appearance
45
45
  * - Compound component pattern support
@@ -76,12 +76,12 @@ export interface IABConsentBannerCompoundComponent extends FC<IABConsentBannerPr
76
76
  */
77
77
  declare const IABConsentBanner: IABConsentBannerCompoundComponent;
78
78
  export default IABConsentBanner;
79
- export { IABConsentBannerButtonGroup, IABConsentBannerFooterSpacer, } from './atoms/button-group';
80
- export { IABConsentBannerCard } from './atoms/card';
81
- export { IABConsentBannerDescription } from './atoms/description';
82
- export { IABConsentBannerFooter } from './atoms/footer';
83
- export { IABConsentBannerHeader } from './atoms/header';
84
- export { IABConsentBannerOverlay } from './atoms/overlay';
85
- export { IABConsentBannerRoot } from './atoms/root';
86
- export { IABConsentBannerTitle } from './atoms/title';
79
+ export { IABConsentBannerButtonGroup, IABConsentBannerFooterSpacer, } from './atoms/button-group.js';
80
+ export { IABConsentBannerCard } from './atoms/card.js';
81
+ export { IABConsentBannerDescription } from './atoms/description.js';
82
+ export { IABConsentBannerFooter } from './atoms/footer.js';
83
+ export { IABConsentBannerHeader } from './atoms/header.js';
84
+ export { IABConsentBannerOverlay } from './atoms/overlay.js';
85
+ export { IABConsentBannerRoot } from './atoms/root.js';
86
+ export { IABConsentBannerTitle } from './atoms/title.js';
87
87
  export { IABConsentBanner, type IABConsentBannerProps };
@@ -1,7 +1,9 @@
1
1
  import { type FC } from 'react';
2
- import type { ProcessedPurpose, VendorId } from '../types';
3
- interface PurposeItemProps {
2
+ import type { ProcessedPurpose, VendorId } from '../types.js';
3
+ interface InteractivePurposeItemProps {
4
4
  purpose: ProcessedPurpose;
5
+ /** Omit or set to `false` to render a row with a consent switch. */
6
+ informational?: false;
5
7
  isEnabled: boolean;
6
8
  onToggle: (value: boolean) => void;
7
9
  vendorConsents: Record<string, boolean>;
@@ -17,5 +19,22 @@ interface PurposeItemProps {
17
19
  /** Handler for purpose-level legitimate interest objection toggle */
18
20
  onPurposeLegitimateInterestToggle?: (purposeId: number, value: boolean) => void;
19
21
  }
22
+ interface InformationalPurposeItemProps {
23
+ purpose: ProcessedPurpose;
24
+ /**
25
+ * Renders the row without any control: name, description, examples, and
26
+ * a read-only list of vendor names. Used for TCF Features, which users
27
+ * cannot turn on or off.
28
+ */
29
+ informational: true;
30
+ }
31
+ type PurposeItemProps = InteractivePurposeItemProps | InformationalPurposeItemProps;
32
+ /**
33
+ * A purpose row in the IAB consent dialog.
34
+ *
35
+ * @remarks
36
+ * By default the row has a consent switch and per-vendor controls. Pass
37
+ * `informational` to render a read-only row without any control.
38
+ */
20
39
  export declare const PurposeItem: FC<PurposeItemProps>;
21
40
  export {};
@@ -1,5 +1,5 @@
1
1
  import { type FC } from 'react';
2
- import type { ProcessedStack, VendorId } from '../types';
2
+ import type { ProcessedStack, VendorId } from '../types.js';
3
3
  interface StackItemProps {
4
4
  stack: ProcessedStack;
5
5
  consents: Record<number, boolean>;
@@ -1,6 +1,6 @@
1
1
  import type { GlobalVendorList } from 'c15t';
2
2
  import { type FC } from 'react';
3
- import type { ProcessedPurpose, VendorId } from '../types';
3
+ import type { ProcessedPurpose, VendorId } from '../types.js';
4
4
  /** Custom vendor not registered with IAB */
5
5
  interface CustomVendor {
6
6
  id: string | number;
@@ -1,4 +1,4 @@
1
- import type { ProcessedFeature, ProcessedPurpose, ProcessedSpecialFeature, ProcessedStack } from '../types';
1
+ import type { ProcessedFeature, ProcessedPurpose, ProcessedSpecialFeature, ProcessedStack } from '../types.js';
2
2
  /**
3
3
  * Processed GVL data for the IAB Consent Dialog.
4
4
  * @public
@@ -8,6 +8,12 @@ export interface GVLData {
8
8
  specialPurposes: ProcessedPurpose[];
9
9
  specialFeatures: ProcessedSpecialFeature[];
10
10
  features: ProcessedFeature[];
11
+ /**
12
+ * Standard text for the Features section, from the GVL's
13
+ * `standardTexts.features`. `null` when the GVL does not include it; fall
14
+ * back to the `features.description` translation in that case.
15
+ */
16
+ featuresStandardText: string | null;
11
17
  stacks: ProcessedStack[];
12
18
  standalonePurposes: ProcessedPurpose[];
13
19
  totalVendors: number;
@@ -1,5 +1,5 @@
1
1
  import { type FC } from 'react';
2
- import { type ConsentDialogTriggerProps } from '../consent-dialog-trigger';
2
+ import { type ConsentDialogTriggerProps } from '../consent-dialog-trigger/index.js';
3
3
  /**
4
4
  * Props for the IABConsentDialog component.
5
5
  * @public
@@ -57,14 +57,15 @@ export interface IABConsentDialogProps {
57
57
  uiSource?: string;
58
58
  }
59
59
  /**
60
- * IAB TCF 2.3 compliant consent dialog dialog.
60
+ * IAB TCF 2.4 compliant consent dialog dialog.
61
61
  *
62
62
  * @remarks
63
- * This component implements the required IAB TCF 2.3 UI elements:
63
+ * This component implements the required IAB TCF 2.4 UI elements:
64
64
  * - Tabbed interface for Purposes and Vendors
65
65
  * - Purpose grouping with stacks
66
66
  * - Individual purpose and vendor consent toggles
67
- * - Special purposes and features
67
+ * - Special purposes (locked) and special features (opt-in)
68
+ * - An informational Features section with the IAB standard text
68
69
  * - Legitimate interest handling
69
70
  *
70
71
  * @public