@c15t/react 2.0.0-rc.0 → 2.0.0-rc.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.
Files changed (715) hide show
  1. package/README.md +12 -3
  2. package/client/components/consent-banner.js +4 -0
  3. package/client/components/consent-dialog-link.js +3 -0
  4. package/client/components/consent-dialog-trigger.js +3 -0
  5. package/client/components/consent-dialog.js +4 -0
  6. package/client/components/consent-widget.js +4 -0
  7. package/client/components/frame.js +3 -0
  8. package/dist/components/consent-banner/atoms/overlay.cjs +1 -1
  9. package/dist/components/consent-banner/atoms/overlay.js +1 -1
  10. package/dist/components/consent-banner/atoms/root.cjs +1 -1
  11. package/dist/components/consent-banner/atoms/root.js +1 -1
  12. package/dist/components/consent-banner/components.cjs +1 -1
  13. package/dist/components/consent-banner/components.js +1 -1
  14. package/dist/components/consent-banner/consent-banner.cjs +1 -1
  15. package/dist/components/consent-banner/consent-banner.js +1 -1
  16. package/dist/components/consent-banner/error-boundary.cjs +1 -1
  17. package/dist/components/consent-banner/index.cjs +1 -1
  18. package/dist/components/consent-banner/index.js +1 -1
  19. package/dist/components/consent-banner/policy-actions.cjs +1 -0
  20. package/dist/components/consent-banner/policy-actions.js +1 -0
  21. package/dist/components/consent-dialog/atoms/card.cjs +1 -1
  22. package/dist/components/consent-dialog/atoms/card.js +1 -1
  23. package/dist/components/consent-dialog/atoms/overlay.cjs +1 -1
  24. package/dist/components/consent-dialog/atoms/overlay.js +1 -1
  25. package/dist/components/consent-dialog/atoms/root.cjs +1 -1
  26. package/dist/components/consent-dialog/atoms/root.js +1 -1
  27. package/dist/components/consent-dialog/consent-dialog.cjs +1 -1
  28. package/dist/components/consent-dialog/consent-dialog.js +1 -1
  29. package/dist/components/consent-dialog/index.cjs +1 -1
  30. package/dist/components/consent-dialog/index.js +1 -1
  31. package/dist/components/consent-dialog-link/index.cjs +1 -0
  32. package/dist/components/consent-dialog-link/index.js +1 -0
  33. package/dist/components/consent-dialog-trigger/atoms/button.cjs +1 -1
  34. package/dist/components/consent-dialog-trigger/atoms/button.js +1 -1
  35. package/dist/components/consent-dialog-trigger/atoms/icon.cjs +1 -1
  36. package/dist/components/consent-dialog-trigger/atoms/icon.js +1 -1
  37. package/dist/components/consent-dialog-trigger/atoms/root.cjs +1 -1
  38. package/dist/components/consent-dialog-trigger/atoms/root.js +1 -1
  39. package/dist/components/consent-dialog-trigger/atoms/text.cjs +1 -1
  40. package/dist/components/consent-dialog-trigger/atoms/text.js +1 -1
  41. package/dist/components/consent-dialog-trigger/consent-dialog-trigger.cjs +1 -1
  42. package/dist/components/consent-dialog-trigger/consent-dialog-trigger.js +1 -1
  43. package/dist/components/consent-dialog-trigger/index.cjs +1 -1
  44. package/dist/components/consent-dialog-trigger/index.js +1 -1
  45. package/dist/components/consent-dialog-trigger/types.cjs +1 -1
  46. package/dist/components/consent-dialog-trigger/use-draggable.cjs +1 -1
  47. package/dist/components/consent-dialog-trigger/use-draggable.js +1 -1
  48. package/dist/components/consent-preferences-link/consent-preferences-link.cjs +1 -0
  49. package/dist/components/consent-preferences-link/consent-preferences-link.js +1 -0
  50. package/dist/components/consent-preferences-link/index.cjs +1 -0
  51. package/dist/components/consent-preferences-link/index.js +1 -0
  52. package/dist/components/consent-widget/atoms/accordion.cjs +1 -1
  53. package/dist/components/consent-widget/atoms/accordion.js +1 -1
  54. package/dist/components/consent-widget/atoms/button.cjs +1 -1
  55. package/dist/components/consent-widget/atoms/button.js +1 -1
  56. package/dist/components/consent-widget/atoms/footer.cjs +1 -1
  57. package/dist/components/consent-widget/atoms/footer.js +1 -1
  58. package/dist/components/consent-widget/atoms/root.cjs +1 -1
  59. package/dist/components/consent-widget/atoms/root.js +1 -1
  60. package/dist/components/consent-widget/consent-widget.cjs +1 -1
  61. package/dist/components/consent-widget/consent-widget.js +1 -1
  62. package/dist/components/consent-widget/index.cjs +1 -1
  63. package/dist/components/consent-widget/index.js +1 -1
  64. package/dist/components/consent-widget/policy-actions.cjs +1 -0
  65. package/dist/components/consent-widget/policy-actions.js +1 -0
  66. package/dist/components/consent-widget/types.cjs +1 -1
  67. package/dist/components/frame/atoms.cjs +1 -1
  68. package/dist/components/frame/atoms.js +1 -1
  69. package/dist/components/frame/frame.cjs +1 -1
  70. package/dist/components/frame/frame.js +1 -1
  71. package/dist/components/frame/index.cjs +1 -1
  72. package/dist/components/frame/index.js +1 -1
  73. package/dist/components/frame/types.cjs +1 -1
  74. package/dist/components/iab-consent-banner/atoms/button-group.cjs +1 -1
  75. package/dist/components/iab-consent-banner/atoms/button-group.js +1 -1
  76. package/dist/components/iab-consent-banner/atoms/card.cjs +1 -1
  77. package/dist/components/iab-consent-banner/atoms/card.js +1 -1
  78. package/dist/components/iab-consent-banner/atoms/description.cjs +1 -1
  79. package/dist/components/iab-consent-banner/atoms/description.js +1 -1
  80. package/dist/components/iab-consent-banner/atoms/footer.cjs +1 -1
  81. package/dist/components/iab-consent-banner/atoms/footer.js +1 -1
  82. package/dist/components/iab-consent-banner/atoms/header.cjs +1 -1
  83. package/dist/components/iab-consent-banner/atoms/header.js +1 -1
  84. package/dist/components/iab-consent-banner/atoms/overlay.cjs +1 -1
  85. package/dist/components/iab-consent-banner/atoms/overlay.js +1 -1
  86. package/dist/components/iab-consent-banner/atoms/root.cjs +1 -1
  87. package/dist/components/iab-consent-banner/atoms/root.js +1 -1
  88. package/dist/components/iab-consent-banner/atoms/title.cjs +1 -1
  89. package/dist/components/iab-consent-banner/atoms/title.js +1 -1
  90. package/dist/components/iab-consent-banner/iab-consent-banner.cjs +1 -1
  91. package/dist/components/iab-consent-banner/iab-consent-banner.js +1 -1
  92. package/dist/components/iab-consent-banner/index.cjs +1 -1
  93. package/dist/components/iab-consent-banner/index.js +1 -1
  94. package/dist/components/iab-consent-dialog/atoms/card.cjs +1 -1
  95. package/dist/components/iab-consent-dialog/atoms/card.js +1 -1
  96. package/dist/components/iab-consent-dialog/atoms/content.cjs +1 -1
  97. package/dist/components/iab-consent-dialog/atoms/content.js +1 -1
  98. package/dist/components/iab-consent-dialog/atoms/footer.cjs +1 -1
  99. package/dist/components/iab-consent-dialog/atoms/footer.js +1 -1
  100. package/dist/components/iab-consent-dialog/atoms/header.cjs +1 -1
  101. package/dist/components/iab-consent-dialog/atoms/header.js +1 -1
  102. package/dist/components/iab-consent-dialog/atoms/overlay.cjs +1 -1
  103. package/dist/components/iab-consent-dialog/atoms/overlay.js +1 -1
  104. package/dist/components/iab-consent-dialog/atoms/purpose-item.cjs +1 -1
  105. package/dist/components/iab-consent-dialog/atoms/purpose-item.js +1 -1
  106. package/dist/components/iab-consent-dialog/atoms/root.cjs +1 -1
  107. package/dist/components/iab-consent-dialog/atoms/root.js +1 -1
  108. package/dist/components/iab-consent-dialog/atoms/stack-item.cjs +1 -1
  109. package/dist/components/iab-consent-dialog/atoms/stack-item.js +1 -1
  110. package/dist/components/iab-consent-dialog/atoms/tabs.cjs +1 -1
  111. package/dist/components/iab-consent-dialog/atoms/tabs.js +1 -1
  112. package/dist/components/iab-consent-dialog/atoms/vendor-list.cjs +1 -1
  113. package/dist/components/iab-consent-dialog/atoms/vendor-list.js +1 -1
  114. package/dist/components/iab-consent-dialog/hooks/use-gvl-data.cjs +1 -1
  115. package/dist/components/iab-consent-dialog/iab-consent-dialog.cjs +1 -1
  116. package/dist/components/iab-consent-dialog/iab-consent-dialog.js +1 -1
  117. package/dist/components/iab-consent-dialog/index.cjs +1 -1
  118. package/dist/components/iab-consent-dialog/index.js +1 -1
  119. package/dist/components/iab-consent-dialog/types.cjs +1 -1
  120. package/dist/components/iab-consent-dialog/use-iab-translations.cjs +1 -1
  121. package/dist/components/shared/libs/polymorphic.cjs +1 -1
  122. package/dist/components/shared/libs/recursive-clone-children.cjs +1 -1
  123. package/dist/components/shared/libs/slot.cjs +1 -0
  124. package/dist/components/shared/libs/slot.js +1 -0
  125. package/dist/components/shared/libs/use-controllable-state.cjs +1 -0
  126. package/dist/components/shared/libs/use-controllable-state.js +1 -0
  127. package/dist/components/shared/policy-actions.cjs +1 -0
  128. package/dist/components/shared/policy-actions.js +1 -0
  129. package/dist/components/shared/primitives/box.cjs +1 -1
  130. package/dist/components/shared/primitives/box.js +1 -1
  131. package/dist/components/shared/primitives/button.cjs +1 -1
  132. package/dist/components/shared/primitives/button.js +1 -1
  133. package/dist/components/shared/primitives/button.types.cjs +1 -1
  134. package/dist/components/shared/primitives/legal-links/index.cjs +1 -1
  135. package/dist/components/shared/primitives/legal-links/index.js +1 -1
  136. package/dist/components/shared/ui/accordion/accordion.cjs +1 -1
  137. package/dist/components/shared/ui/accordion/accordion.js +1 -1
  138. package/dist/components/shared/ui/accordion/accordion.types.cjs +1 -1
  139. package/dist/components/shared/ui/accordion/index.cjs +1 -1
  140. package/dist/components/shared/ui/animated-collapse/animated-collapse.cjs +1 -1
  141. package/dist/components/shared/ui/animated-collapse/index.cjs +1 -1
  142. package/dist/components/shared/ui/animated-collapse/index.js +1 -1
  143. package/dist/components/shared/ui/branding.cjs +1 -0
  144. package/dist/components/shared/ui/branding.js +1 -0
  145. package/dist/components/shared/ui/button/button.cjs +1 -1
  146. package/dist/components/shared/ui/button/button.js +1 -1
  147. package/dist/components/shared/ui/button/button.types.cjs +1 -1
  148. package/dist/components/shared/ui/button/index.cjs +1 -1
  149. package/dist/components/shared/ui/collapsible/collapsible.cjs +1 -0
  150. package/dist/components/shared/ui/collapsible/collapsible.js +1 -0
  151. package/dist/components/shared/ui/collapsible/index.cjs +1 -0
  152. package/dist/components/shared/ui/collapsible/index.js +1 -0
  153. package/dist/components/shared/ui/dialog/dialog.cjs +1 -0
  154. package/dist/components/shared/ui/dialog/dialog.js +1 -0
  155. package/dist/components/shared/ui/dialog/index.cjs +1 -0
  156. package/dist/components/shared/ui/dialog/index.js +1 -0
  157. package/dist/components/shared/ui/icon.cjs +1 -1
  158. package/dist/components/shared/ui/logo.cjs +1 -1
  159. package/dist/components/shared/ui/logo.js +1 -1
  160. package/dist/components/shared/ui/preference-item/index.cjs +1 -0
  161. package/dist/components/shared/ui/preference-item/index.js +1 -0
  162. package/dist/components/shared/ui/preference-item/preference-item.cjs +1 -0
  163. package/dist/components/shared/ui/preference-item/preference-item.js +1 -0
  164. package/dist/components/shared/ui/switch/index.cjs +1 -1
  165. package/dist/components/shared/ui/switch/index.js +1 -1
  166. package/dist/components/shared/ui/switch/switch.cjs +1 -1
  167. package/dist/components/shared/ui/switch/switch.js +1 -1
  168. package/dist/components/shared/ui/switch/switch.types.cjs +1 -1
  169. package/dist/components/shared/ui/tabs/index.cjs +1 -0
  170. package/dist/components/shared/ui/tabs/index.js +1 -0
  171. package/dist/components/shared/ui/tabs/tabs.cjs +1 -0
  172. package/dist/components/shared/ui/tabs/tabs.js +1 -0
  173. package/dist/context/consent-manager-context.cjs +1 -1
  174. package/dist/context/consent-tracking-context.cjs +1 -1
  175. package/dist/context/theme-context.cjs +1 -1
  176. package/dist/headless.cjs +1 -1
  177. package/dist/headless.js +1 -1
  178. package/dist/hooks/index.cjs +1 -1
  179. package/dist/hooks/index.js +1 -1
  180. package/dist/hooks/use-color-scheme.cjs +1 -1
  181. package/dist/hooks/use-component-config.cjs +1 -1
  182. package/dist/hooks/use-consent-dialog-trigger.cjs +1 -0
  183. package/dist/hooks/use-consent-dialog-trigger.js +1 -0
  184. package/dist/hooks/use-consent-manager.cjs +1 -1
  185. package/dist/hooks/use-consent-manager.js +1 -1
  186. package/dist/hooks/use-focus-trap.cjs +1 -1
  187. package/dist/hooks/use-focus-trap.js +1 -1
  188. package/dist/hooks/use-headless-consent-ui.cjs +1 -0
  189. package/dist/hooks/use-headless-consent-ui.js +1 -0
  190. package/dist/hooks/use-headless-iab-consent-ui.cjs +1 -0
  191. package/dist/hooks/use-headless-iab-consent-ui.js +1 -0
  192. package/dist/hooks/use-reduced-motion.cjs +1 -1
  193. package/dist/hooks/use-reduced-motion.js +1 -1
  194. package/dist/hooks/use-scroll-lock.cjs +1 -1
  195. package/dist/hooks/use-scroll-lock.js +1 -1
  196. package/dist/hooks/use-ssr-status.cjs +1 -1
  197. package/dist/hooks/use-styles.cjs +1 -1
  198. package/dist/hooks/use-text-direction.cjs +1 -1
  199. package/dist/hooks/use-theme.cjs +1 -1
  200. package/dist/hooks/use-theme.js +1 -1
  201. package/dist/hooks/use-translations.cjs +1 -1
  202. package/dist/iab/styles.css +11 -0
  203. package/dist/iab/styles.tw3.css +14 -0
  204. package/dist/iab.cjs +1 -0
  205. package/dist/iab.js +1 -0
  206. package/dist/index.cjs +1 -1
  207. package/dist/index.js +1 -1
  208. package/dist/primitives/accordion.cjs +1 -0
  209. package/dist/primitives/accordion.js +1 -0
  210. package/dist/primitives/button.cjs +1 -0
  211. package/dist/primitives/button.js +1 -0
  212. package/dist/primitives/collapsible.cjs +1 -0
  213. package/dist/primitives/collapsible.js +1 -0
  214. package/dist/primitives/dialog.cjs +1 -0
  215. package/dist/primitives/dialog.js +1 -0
  216. package/dist/primitives/preference-item.cjs +1 -0
  217. package/dist/primitives/preference-item.js +1 -0
  218. package/dist/primitives/switch.cjs +1 -0
  219. package/dist/primitives/switch.js +1 -0
  220. package/dist/primitives/tabs.cjs +1 -0
  221. package/dist/primitives/tabs.js +1 -0
  222. package/dist/primitives.cjs +1 -0
  223. package/dist/primitives.js +1 -0
  224. package/dist/providers/consent-manager-provider.cjs +1 -1
  225. package/dist/providers/consent-manager-provider.js +1 -1
  226. package/dist/server/fetch-ssr-data.cjs +1 -1
  227. package/dist/server/fetch-ssr-data.js +1 -1
  228. package/dist/server/headers.cjs +1 -1
  229. package/dist/server/headers.js +1 -1
  230. package/dist/server/index.cjs +1 -1
  231. package/dist/server/index.js +1 -1
  232. package/dist/server/init-cache-key.cjs +1 -0
  233. package/dist/server/init-cache-key.js +1 -0
  234. package/dist/server/normalize-url.cjs +1 -1
  235. package/dist/server/types.cjs +1 -1
  236. package/dist/styles.css +10 -0
  237. package/dist/styles.tw3.css +13 -0
  238. package/dist/types/consent-manager.cjs +1 -1
  239. package/dist/types/theme/index.cjs +1 -1
  240. package/dist/types/theme/style-keys.cjs +1 -1
  241. package/dist/types/theme/style-types.cjs +1 -1
  242. package/dist/utils/cn.cjs +1 -1
  243. package/dist/utils/merge-styles.cjs +1 -1
  244. package/dist/utils/test-helpers.cjs +1 -1
  245. package/dist/utils/test-helpers.js +1 -1
  246. package/dist/utils/theme-utils.cjs +1 -1
  247. package/dist/version.cjs +1 -1
  248. package/dist/version.js +1 -1
  249. package/{dist → dist-types}/components/consent-banner/atoms/overlay.d.ts +1 -2
  250. package/{dist → dist-types}/components/consent-banner/atoms/root.d.ts +44 -14
  251. package/{dist → dist-types}/components/consent-banner/components.d.ts +4 -5
  252. package/{dist → dist-types}/components/consent-banner/consent-banner.d.ts +14 -8
  253. package/{dist → dist-types}/components/consent-banner/error-boundary.d.ts +0 -1
  254. package/{dist → dist-types}/components/consent-banner/index.d.ts +48 -26
  255. package/dist-types/components/consent-banner/policy-actions.d.ts +11 -0
  256. package/{dist → dist-types}/components/consent-dialog/atoms/card.d.ts +14 -8
  257. package/{dist → dist-types}/components/consent-dialog/atoms/overlay.d.ts +1 -2
  258. package/{dist → dist-types}/components/consent-dialog/atoms/root.d.ts +1 -2
  259. package/{dist → dist-types}/components/consent-dialog/consent-dialog.d.ts +2 -3
  260. package/{dist → dist-types}/components/consent-dialog/index.d.ts +31 -10
  261. package/dist-types/components/consent-dialog-link/index.d.ts +1 -0
  262. package/{dist → dist-types}/components/consent-dialog-trigger/atoms/button.d.ts +0 -1
  263. package/{dist → dist-types}/components/consent-dialog-trigger/atoms/icon.d.ts +1 -2
  264. package/{dist → dist-types}/components/consent-dialog-trigger/atoms/root.d.ts +0 -1
  265. package/{dist → dist-types}/components/consent-dialog-trigger/atoms/text.d.ts +0 -1
  266. package/{dist → dist-types}/components/consent-dialog-trigger/consent-dialog-trigger.d.ts +2 -3
  267. package/{dist → dist-types}/components/consent-dialog-trigger/index.d.ts +0 -1
  268. package/{dist → dist-types}/components/consent-dialog-trigger/types.d.ts +2 -3
  269. package/{dist → dist-types}/components/consent-dialog-trigger/use-draggable.d.ts +1 -2
  270. package/dist-types/components/consent-preferences-link/consent-preferences-link.d.ts +15 -0
  271. package/dist-types/components/consent-preferences-link/index.d.ts +1 -0
  272. package/dist-types/components/consent-widget/atoms/accordion.d.ts +28 -0
  273. package/{dist → dist-types}/components/consent-widget/atoms/button.d.ts +1 -2
  274. package/{dist → dist-types}/components/consent-widget/atoms/footer.d.ts +0 -1
  275. package/{dist → dist-types}/components/consent-widget/atoms/root.d.ts +1 -7
  276. package/{dist → dist-types}/components/consent-widget/consent-widget.d.ts +0 -1
  277. package/{dist → dist-types}/components/consent-widget/index.d.ts +27 -8
  278. package/dist-types/components/consent-widget/policy-actions.d.ts +11 -0
  279. package/{dist → dist-types}/components/consent-widget/types.d.ts +2 -3
  280. package/{dist → dist-types}/components/frame/atoms.d.ts +1 -2
  281. package/{dist → dist-types}/components/frame/frame.d.ts +0 -1
  282. package/{dist → dist-types}/components/frame/index.d.ts +1 -2
  283. package/{dist → dist-types}/components/frame/types.d.ts +0 -1
  284. package/{dist → dist-types}/components/iab-consent-banner/atoms/button-group.d.ts +0 -1
  285. package/{dist → dist-types}/components/iab-consent-banner/atoms/card.d.ts +0 -1
  286. package/{dist → dist-types}/components/iab-consent-banner/atoms/description.d.ts +0 -1
  287. package/{dist → dist-types}/components/iab-consent-banner/atoms/footer.d.ts +0 -1
  288. package/{dist → dist-types}/components/iab-consent-banner/atoms/header.d.ts +0 -1
  289. package/{dist → dist-types}/components/iab-consent-banner/atoms/overlay.d.ts +0 -1
  290. package/{dist → dist-types}/components/iab-consent-banner/atoms/root.d.ts +0 -1
  291. package/{dist → dist-types}/components/iab-consent-banner/atoms/title.d.ts +0 -1
  292. package/{dist → dist-types}/components/iab-consent-banner/iab-consent-banner.d.ts +0 -1
  293. package/{dist → dist-types}/components/iab-consent-banner/index.d.ts +1 -2
  294. package/{dist → dist-types}/components/iab-consent-dialog/atoms/card.d.ts +0 -1
  295. package/{dist → dist-types}/components/iab-consent-dialog/atoms/content.d.ts +0 -1
  296. package/{dist → dist-types}/components/iab-consent-dialog/atoms/footer.d.ts +0 -1
  297. package/{dist → dist-types}/components/iab-consent-dialog/atoms/header.d.ts +0 -1
  298. package/{dist → dist-types}/components/iab-consent-dialog/atoms/overlay.d.ts +0 -1
  299. package/{dist → dist-types}/components/iab-consent-dialog/atoms/purpose-item.d.ts +0 -1
  300. package/{dist → dist-types}/components/iab-consent-dialog/atoms/root.d.ts +0 -1
  301. package/{dist → dist-types}/components/iab-consent-dialog/atoms/stack-item.d.ts +0 -1
  302. package/dist-types/components/iab-consent-dialog/atoms/tabs.d.ts +12 -0
  303. package/{dist → dist-types}/components/iab-consent-dialog/atoms/vendor-list.d.ts +0 -1
  304. package/{dist → dist-types}/components/iab-consent-dialog/hooks/use-gvl-data.d.ts +0 -1
  305. package/{dist → dist-types}/components/iab-consent-dialog/iab-consent-dialog.d.ts +0 -1
  306. package/{dist → dist-types}/components/iab-consent-dialog/index.d.ts +1 -2
  307. package/{dist → dist-types}/components/iab-consent-dialog/types.d.ts +0 -1
  308. package/{dist → dist-types}/components/iab-consent-dialog/use-iab-translations.d.ts +0 -1
  309. package/{dist → dist-types}/components/shared/libs/polymorphic.d.ts +0 -1
  310. package/{dist → dist-types}/components/shared/libs/recursive-clone-children.d.ts +0 -1
  311. package/dist-types/components/shared/libs/slot.d.ts +6 -0
  312. package/dist-types/components/shared/libs/use-controllable-state.d.ts +7 -0
  313. package/dist-types/components/shared/policy-actions.d.ts +29 -0
  314. package/{dist → dist-types}/components/shared/primitives/box.d.ts +0 -1
  315. package/{dist → dist-types}/components/shared/primitives/button.d.ts +4 -1
  316. package/{dist → dist-types}/components/shared/primitives/button.types.d.ts +17 -1
  317. package/{dist → dist-types}/components/shared/primitives/legal-links/index.d.ts +0 -45
  318. package/{dist → dist-types}/components/shared/ui/accordion/accordion.d.ts +32 -68
  319. package/{dist → dist-types}/components/shared/ui/accordion/accordion.types.d.ts +0 -1
  320. package/{dist → dist-types}/components/shared/ui/accordion/index.d.ts +0 -1
  321. package/{dist → dist-types}/components/shared/ui/animated-collapse/animated-collapse.d.ts +0 -1
  322. package/{dist → dist-types}/components/shared/ui/animated-collapse/index.d.ts +0 -1
  323. package/dist-types/components/shared/ui/branding.d.ts +27 -0
  324. package/{dist → dist-types}/components/shared/ui/button/button.d.ts +2 -3
  325. package/{dist → dist-types}/components/shared/ui/button/button.types.d.ts +0 -1
  326. package/{dist → dist-types}/components/shared/ui/button/index.d.ts +0 -1
  327. package/dist-types/components/shared/ui/collapsible/collapsible.d.ts +20 -0
  328. package/dist-types/components/shared/ui/collapsible/index.d.ts +1 -0
  329. package/dist-types/components/shared/ui/dialog/dialog.d.ts +29 -0
  330. package/dist-types/components/shared/ui/dialog/index.d.ts +1 -0
  331. package/{dist → dist-types}/components/shared/ui/icon.d.ts +0 -1
  332. package/{dist → dist-types}/components/shared/ui/logo.d.ts +8 -1
  333. package/dist-types/components/shared/ui/preference-item/index.d.ts +1 -0
  334. package/dist-types/components/shared/ui/preference-item/preference-item.d.ts +33 -0
  335. package/dist-types/components/shared/ui/switch/index.d.ts +2 -0
  336. package/dist-types/components/shared/ui/switch/switch.d.ts +20 -0
  337. package/{dist → dist-types}/components/shared/ui/switch/switch.types.d.ts +0 -1
  338. package/dist-types/components/shared/ui/tabs/index.d.ts +1 -0
  339. package/dist-types/components/shared/ui/tabs/tabs.d.ts +28 -0
  340. package/{dist → dist-types}/context/consent-manager-context.d.ts +0 -1
  341. package/{dist → dist-types}/context/consent-tracking-context.d.ts +0 -1
  342. package/{dist → dist-types}/context/theme-context.d.ts +0 -1
  343. package/dist-types/headless.d.ts +9 -0
  344. package/{dist → dist-types}/hooks/index.d.ts +3 -1
  345. package/{dist → dist-types}/hooks/use-color-scheme.d.ts +0 -1
  346. package/{dist → dist-types}/hooks/use-component-config.d.ts +0 -1
  347. package/dist-types/hooks/use-consent-dialog-trigger.d.ts +10 -0
  348. package/{dist → dist-types}/hooks/use-consent-manager.d.ts +0 -1
  349. package/{dist → dist-types}/hooks/use-focus-trap.d.ts +0 -1
  350. package/dist-types/hooks/use-headless-consent-ui.d.ts +46 -0
  351. package/dist-types/hooks/use-headless-iab-consent-ui.d.ts +41 -0
  352. package/{dist → dist-types}/hooks/use-reduced-motion.d.ts +0 -1
  353. package/{dist → dist-types}/hooks/use-scroll-lock.d.ts +0 -1
  354. package/{dist → dist-types}/hooks/use-ssr-status.d.ts +2 -2
  355. package/{dist → dist-types}/hooks/use-styles.d.ts +0 -1
  356. package/{dist → dist-types}/hooks/use-text-direction.d.ts +0 -1
  357. package/{dist → dist-types}/hooks/use-theme.d.ts +0 -1
  358. package/{dist → dist-types}/hooks/use-translations.d.ts +0 -1
  359. package/dist-types/iab.d.ts +24 -0
  360. package/{dist → dist-types}/index.d.ts +5 -6
  361. package/dist-types/primitives/accordion.d.ts +1 -0
  362. package/dist-types/primitives/button.d.ts +1 -0
  363. package/dist-types/primitives/collapsible.d.ts +1 -0
  364. package/dist-types/primitives/dialog.d.ts +1 -0
  365. package/dist-types/primitives/preference-item.d.ts +1 -0
  366. package/dist-types/primitives/switch.d.ts +1 -0
  367. package/dist-types/primitives/tabs.d.ts +1 -0
  368. package/dist-types/primitives.d.ts +7 -0
  369. package/{dist → dist-types}/providers/consent-manager-provider.d.ts +0 -1
  370. package/{dist → dist-types}/server/fetch-ssr-data.d.ts +0 -1
  371. package/{dist → dist-types}/server/headers.d.ts +2 -2
  372. package/{dist → dist-types}/server/index.d.ts +1 -1
  373. package/dist-types/server/init-cache-key.d.ts +21 -0
  374. package/{dist → dist-types}/server/normalize-url.d.ts +0 -1
  375. package/{dist → dist-types}/server/types.d.ts +0 -1
  376. package/{dist → dist-types}/types/consent-manager.d.ts +7 -1
  377. package/{dist → dist-types}/types/theme/index.d.ts +0 -1
  378. package/{dist → dist-types}/types/theme/style-keys.d.ts +0 -1
  379. package/{dist → dist-types}/types/theme/style-types.d.ts +2 -1
  380. package/{dist → dist-types}/utils/cn.d.ts +0 -1
  381. package/{dist → dist-types}/utils/merge-styles.d.ts +0 -1
  382. package/{dist → dist-types}/utils/test-helpers.d.ts +0 -1
  383. package/{dist → dist-types}/utils/theme-utils.d.ts +1 -2
  384. package/dist-types/version.d.ts +1 -0
  385. package/docs/README.md +76 -0
  386. package/docs/building-headless-components.md +266 -0
  387. package/docs/callbacks.md +184 -0
  388. package/docs/components/consent-banner.md +298 -0
  389. package/docs/components/consent-dialog-link.md +59 -0
  390. package/docs/components/consent-dialog-trigger.md +103 -0
  391. package/docs/components/consent-dialog.md +177 -0
  392. package/docs/components/consent-manager-provider.md +425 -0
  393. package/docs/components/consent-widget.md +160 -0
  394. package/docs/components/dev-tools.md +63 -0
  395. package/docs/components/frame.md +73 -0
  396. package/docs/concepts/client-modes.md +175 -0
  397. package/docs/concepts/consent-categories.md +97 -0
  398. package/docs/concepts/consent-models.md +112 -0
  399. package/docs/concepts/cookie-management.md +122 -0
  400. package/docs/concepts/glossary.md +23 -0
  401. package/docs/concepts/initialization-flow.md +148 -0
  402. package/docs/concepts/policy-packs.md +227 -0
  403. package/docs/headless.md +190 -0
  404. package/docs/hooks/use-color-scheme.md +40 -0
  405. package/docs/hooks/use-consent-manager/checking-consent.md +94 -0
  406. package/docs/hooks/use-consent-manager/location-info.md +95 -0
  407. package/docs/hooks/use-consent-manager/overview.md +420 -0
  408. package/docs/hooks/use-consent-manager/setting-consent.md +92 -0
  409. package/docs/hooks/use-draggable.md +57 -0
  410. package/docs/hooks/use-focus-trap.md +41 -0
  411. package/docs/hooks/use-reduced-motion.md +35 -0
  412. package/docs/hooks/use-ssr-status.md +31 -0
  413. package/docs/hooks/use-text-direction.md +49 -0
  414. package/docs/hooks/use-translations.md +118 -0
  415. package/docs/iab/consent-banner.md +92 -0
  416. package/docs/iab/consent-dialog.md +132 -0
  417. package/docs/iab/overview.md +125 -0
  418. package/docs/iab/use-gvl-data.md +208 -0
  419. package/docs/iframe-blocking.md +107 -0
  420. package/docs/integrations/building-integrations.md +405 -0
  421. package/docs/integrations/databuddy.md +203 -0
  422. package/docs/integrations/google-tag-manager.md +153 -0
  423. package/docs/integrations/google-tag.md +122 -0
  424. package/docs/integrations/linkedin-insights.md +109 -0
  425. package/docs/integrations/meta-pixel.md +342 -0
  426. package/docs/integrations/microsoft-uet.md +112 -0
  427. package/docs/integrations/overview.md +105 -0
  428. package/docs/integrations/posthog.md +199 -0
  429. package/docs/integrations/tiktok-pixel.md +113 -0
  430. package/docs/integrations/x-pixel.md +143 -0
  431. package/docs/internationalization.md +197 -0
  432. package/docs/network-blocker.md +178 -0
  433. package/docs/optimization.md +113 -0
  434. package/docs/policy-packs.md +240 -0
  435. package/docs/quickstart.md +152 -0
  436. package/docs/script-loader.md +321 -0
  437. package/docs/server-side.md +153 -0
  438. package/docs/styling/classnames.md +92 -0
  439. package/docs/styling/color-scheme.md +82 -0
  440. package/docs/styling/css-variables.md +92 -0
  441. package/docs/styling/overview.md +459 -0
  442. package/docs/styling/slots.md +127 -0
  443. package/docs/styling/tailwind.md +113 -0
  444. package/docs/styling/tokens.md +216 -0
  445. package/docs/troubleshooting.md +137 -0
  446. package/iab/styles.css +1 -0
  447. package/package.json +87 -27
  448. package/readme.json +6 -0
  449. package/src/iab/styles.css +11 -0
  450. package/src/iab/styles.tw3.css +14 -0
  451. package/src/styles.css +10 -0
  452. package/src/styles.tw3.css +13 -0
  453. package/styles.css +1 -0
  454. package/dist/components/__tests__/active-ui-transitions.e2e.test.cjs +0 -1
  455. package/dist/components/__tests__/active-ui-transitions.e2e.test.js +0 -1
  456. package/dist/components/__tests__/consent-flow.e2e.test.cjs +0 -1
  457. package/dist/components/__tests__/consent-flow.e2e.test.js +0 -1
  458. package/dist/components/__tests__/models-prop.e2e.test.cjs +0 -1
  459. package/dist/components/__tests__/models-prop.e2e.test.js +0 -1
  460. package/dist/components/__tests__/ui-source-tracking.e2e.test.cjs +0 -1
  461. package/dist/components/__tests__/ui-source-tracking.e2e.test.js +0 -1
  462. package/dist/components/consent-banner/atoms/overlay.d.ts.map +0 -1
  463. package/dist/components/consent-banner/atoms/root.d.ts.map +0 -1
  464. package/dist/components/consent-banner/components.d.ts.map +0 -1
  465. package/dist/components/consent-banner/consent-banner.d.ts.map +0 -1
  466. package/dist/components/consent-banner/error-boundary.d.ts.map +0 -1
  467. package/dist/components/consent-banner/index.d.ts.map +0 -1
  468. package/dist/components/consent-dialog/atoms/card.d.ts.map +0 -1
  469. package/dist/components/consent-dialog/atoms/overlay.d.ts.map +0 -1
  470. package/dist/components/consent-dialog/atoms/root.d.ts.map +0 -1
  471. package/dist/components/consent-dialog/consent-dialog.d.ts.map +0 -1
  472. package/dist/components/consent-dialog/index.d.ts.map +0 -1
  473. package/dist/components/consent-dialog-trigger/atoms/button.d.ts.map +0 -1
  474. package/dist/components/consent-dialog-trigger/atoms/icon.d.ts.map +0 -1
  475. package/dist/components/consent-dialog-trigger/atoms/root.d.ts.map +0 -1
  476. package/dist/components/consent-dialog-trigger/atoms/text.d.ts.map +0 -1
  477. package/dist/components/consent-dialog-trigger/consent-dialog-trigger.d.ts.map +0 -1
  478. package/dist/components/consent-dialog-trigger/index.d.ts.map +0 -1
  479. package/dist/components/consent-dialog-trigger/types.d.ts.map +0 -1
  480. package/dist/components/consent-dialog-trigger/use-draggable.d.ts.map +0 -1
  481. package/dist/components/consent-widget/atoms/accordion.d.ts +0 -46
  482. package/dist/components/consent-widget/atoms/accordion.d.ts.map +0 -1
  483. package/dist/components/consent-widget/atoms/button.d.ts.map +0 -1
  484. package/dist/components/consent-widget/atoms/footer.d.ts.map +0 -1
  485. package/dist/components/consent-widget/atoms/root.d.ts.map +0 -1
  486. package/dist/components/consent-widget/consent-widget.d.ts.map +0 -1
  487. package/dist/components/consent-widget/index.d.ts.map +0 -1
  488. package/dist/components/consent-widget/types.d.ts.map +0 -1
  489. package/dist/components/frame/atoms.d.ts.map +0 -1
  490. package/dist/components/frame/frame.d.ts.map +0 -1
  491. package/dist/components/frame/index.d.ts.map +0 -1
  492. package/dist/components/frame/types.d.ts.map +0 -1
  493. package/dist/components/iab/__tests__/e2e-setup.cjs +0 -1
  494. package/dist/components/iab/__tests__/e2e-setup.js +0 -1
  495. package/dist/components/iab/__tests__/fixtures/mock-consent-state.cjs +0 -1
  496. package/dist/components/iab/__tests__/fixtures/mock-consent-state.d.ts +0 -212
  497. package/dist/components/iab/__tests__/fixtures/mock-consent-state.d.ts.map +0 -1
  498. package/dist/components/iab/__tests__/fixtures/mock-consent-state.js +0 -1
  499. package/dist/components/iab/__tests__/iab-banner.e2e.test.cjs +0 -1
  500. package/dist/components/iab/__tests__/iab-banner.e2e.test.js +0 -1
  501. package/dist/components/iab/__tests__/iab-consent-flow.e2e.test.cjs +0 -1
  502. package/dist/components/iab/__tests__/iab-consent-flow.e2e.test.js +0 -1
  503. package/dist/components/iab/__tests__/iab-events.e2e.test.cjs +0 -1
  504. package/dist/components/iab/__tests__/iab-events.e2e.test.js +0 -1
  505. package/dist/components/iab/__tests__/iab-gvl.e2e.test.cjs +0 -1
  506. package/dist/components/iab/__tests__/iab-gvl.e2e.test.js +0 -1
  507. package/dist/components/iab/__tests__/iab-preference-center.e2e.test.cjs +0 -1
  508. package/dist/components/iab/__tests__/iab-preference-center.e2e.test.js +0 -1
  509. package/dist/components/iab/__tests__/iab-storage.e2e.test.cjs +0 -1
  510. package/dist/components/iab/__tests__/iab-storage.e2e.test.js +0 -1
  511. package/dist/components/iab/__tests__/iab-stub.e2e.test.cjs +0 -1
  512. package/dist/components/iab/__tests__/iab-stub.e2e.test.js +0 -1
  513. package/dist/components/iab/__tests__/iab-tcfapi.e2e.test.cjs +0 -1
  514. package/dist/components/iab/__tests__/iab-tcfapi.e2e.test.js +0 -1
  515. package/dist/components/iab/__tests__/msw-handlers.cjs +0 -1
  516. package/dist/components/iab/__tests__/msw-handlers.js +0 -1
  517. package/dist/components/iab-consent-banner/__tests__/iab-consent-banner.test.cjs +0 -1
  518. package/dist/components/iab-consent-banner/__tests__/iab-consent-banner.test.js +0 -1
  519. package/dist/components/iab-consent-banner/atoms/button-group.d.ts.map +0 -1
  520. package/dist/components/iab-consent-banner/atoms/card.d.ts.map +0 -1
  521. package/dist/components/iab-consent-banner/atoms/description.d.ts.map +0 -1
  522. package/dist/components/iab-consent-banner/atoms/footer.d.ts.map +0 -1
  523. package/dist/components/iab-consent-banner/atoms/header.d.ts.map +0 -1
  524. package/dist/components/iab-consent-banner/atoms/overlay.d.ts.map +0 -1
  525. package/dist/components/iab-consent-banner/atoms/root.d.ts.map +0 -1
  526. package/dist/components/iab-consent-banner/atoms/title.d.ts.map +0 -1
  527. package/dist/components/iab-consent-banner/iab-consent-banner.d.ts.map +0 -1
  528. package/dist/components/iab-consent-banner/index.d.ts.map +0 -1
  529. package/dist/components/iab-consent-dialog/__tests__/legitimate-interest-ui.test.cjs +0 -1
  530. package/dist/components/iab-consent-dialog/__tests__/legitimate-interest-ui.test.js +0 -1
  531. package/dist/components/iab-consent-dialog/__tests__/preference-center.test.cjs +0 -1
  532. package/dist/components/iab-consent-dialog/__tests__/preference-center.test.js +0 -1
  533. package/dist/components/iab-consent-dialog/__tests__/purposes-tab.test.cjs +0 -1
  534. package/dist/components/iab-consent-dialog/__tests__/purposes-tab.test.js +0 -1
  535. package/dist/components/iab-consent-dialog/__tests__/vendors-tab.test.cjs +0 -1
  536. package/dist/components/iab-consent-dialog/__tests__/vendors-tab.test.js +0 -1
  537. package/dist/components/iab-consent-dialog/atoms/card.d.ts.map +0 -1
  538. package/dist/components/iab-consent-dialog/atoms/content.d.ts.map +0 -1
  539. package/dist/components/iab-consent-dialog/atoms/footer.d.ts.map +0 -1
  540. package/dist/components/iab-consent-dialog/atoms/header.d.ts.map +0 -1
  541. package/dist/components/iab-consent-dialog/atoms/overlay.d.ts.map +0 -1
  542. package/dist/components/iab-consent-dialog/atoms/purpose-item.d.ts.map +0 -1
  543. package/dist/components/iab-consent-dialog/atoms/root.d.ts.map +0 -1
  544. package/dist/components/iab-consent-dialog/atoms/stack-item.d.ts.map +0 -1
  545. package/dist/components/iab-consent-dialog/atoms/tabs.d.ts +0 -40
  546. package/dist/components/iab-consent-dialog/atoms/tabs.d.ts.map +0 -1
  547. package/dist/components/iab-consent-dialog/atoms/vendor-list.d.ts.map +0 -1
  548. package/dist/components/iab-consent-dialog/hooks/use-gvl-data.d.ts.map +0 -1
  549. package/dist/components/iab-consent-dialog/iab-consent-dialog.d.ts.map +0 -1
  550. package/dist/components/iab-consent-dialog/index.d.ts.map +0 -1
  551. package/dist/components/iab-consent-dialog/types.d.ts.map +0 -1
  552. package/dist/components/iab-consent-dialog/use-iab-translations.d.ts.map +0 -1
  553. package/dist/components/shared/libs/polymorphic.d.ts.map +0 -1
  554. package/dist/components/shared/libs/recursive-clone-children.d.ts.map +0 -1
  555. package/dist/components/shared/primitives/box.d.ts.map +0 -1
  556. package/dist/components/shared/primitives/button.d.ts.map +0 -1
  557. package/dist/components/shared/primitives/button.types.d.ts.map +0 -1
  558. package/dist/components/shared/primitives/legal-links/index.d.ts.map +0 -1
  559. package/dist/components/shared/ui/__tests__/primitives.test.cjs +0 -1
  560. package/dist/components/shared/ui/__tests__/primitives.test.js +0 -1
  561. package/dist/components/shared/ui/accordion/accordion.d.ts.map +0 -1
  562. package/dist/components/shared/ui/accordion/accordion.types.d.ts.map +0 -1
  563. package/dist/components/shared/ui/accordion/index.d.ts.map +0 -1
  564. package/dist/components/shared/ui/animated-collapse/animated-collapse.d.ts.map +0 -1
  565. package/dist/components/shared/ui/animated-collapse/index.d.ts.map +0 -1
  566. package/dist/components/shared/ui/button/button.d.ts.map +0 -1
  567. package/dist/components/shared/ui/button/button.types.d.ts.map +0 -1
  568. package/dist/components/shared/ui/button/index.d.ts.map +0 -1
  569. package/dist/components/shared/ui/icon.d.ts.map +0 -1
  570. package/dist/components/shared/ui/logo.d.ts.map +0 -1
  571. package/dist/components/shared/ui/switch/index.d.ts +0 -3
  572. package/dist/components/shared/ui/switch/index.d.ts.map +0 -1
  573. package/dist/components/shared/ui/switch/switch.d.ts +0 -45
  574. package/dist/components/shared/ui/switch/switch.d.ts.map +0 -1
  575. package/dist/components/shared/ui/switch/switch.types.d.ts.map +0 -1
  576. package/dist/context/consent-manager-context.d.ts.map +0 -1
  577. package/dist/context/consent-tracking-context.d.ts.map +0 -1
  578. package/dist/context/theme-context.d.ts.map +0 -1
  579. package/dist/headless.d.ts +0 -8
  580. package/dist/headless.d.ts.map +0 -1
  581. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-cleans-up-system-preference-listener-on-unmount-1.cjs +0 -1
  582. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-cleans-up-system-preference-listener-on-unmount-1.js +0 -1
  583. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-handles-default-theme-based-on-document-class-1.cjs +0 -1
  584. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-handles-default-theme-based-on-document-class-1.js +0 -1
  585. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-responds-to-system-preference-1.cjs +0 -1
  586. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-responds-to-system-preference-1.js +0 -1
  587. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-sets-dark-theme-correctly-1.cjs +0 -1
  588. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-sets-dark-theme-correctly-1.js +0 -1
  589. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-updates-theme-when-default-theme-changes-1.cjs +0 -1
  590. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-updates-theme-when-default-theme-changes-1.js +0 -1
  591. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-updates-theme-when-system-preference-changes-1.cjs +0 -1
  592. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-updates-theme-when-system-preference-changes-1.js +0 -1
  593. package/dist/hooks/__tests__/__screenshots__/use-consent-manager.test.tsx/useConsentManager-provides-manager-object-when-configured-1.cjs +0 -1
  594. package/dist/hooks/__tests__/__screenshots__/use-consent-manager.test.tsx/useConsentManager-provides-manager-object-when-configured-1.js +0 -1
  595. package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-handles-string-className-correctly-1.cjs +0 -1
  596. package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-handles-string-className-correctly-1.js +0 -1
  597. package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-merges-theme-and-component-styles-correctly-1.cjs +0 -1
  598. package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-merges-theme-and-component-styles-correctly-1.js +0 -1
  599. package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-should-remove-base-default-styles-but-keep-theme-and-component-classNames-when-noStyle--true-1.cjs +0 -1
  600. package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-should-remove-base-default-styles-but-keep-theme-and-component-classNames-when-noStyle--true-1.js +0 -1
  601. package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-should-remove-default-styles-but-keep-custom-classNames-when-theme-object-provides-noStyle--true-1.cjs +0 -1
  602. package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-should-remove-default-styles-but-keep-custom-classNames-when-theme-object-provides-noStyle--true-1.js +0 -1
  603. package/dist/hooks/__tests__/__screenshots__/use-theme.test.tsx/useTheme-local-theme-takes-precedence-over-global-theme-1.cjs +0 -1
  604. package/dist/hooks/__tests__/__screenshots__/use-theme.test.tsx/useTheme-local-theme-takes-precedence-over-global-theme-1.js +0 -1
  605. package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-Custom-English-instead-of-English-when-German-is-selected-1.cjs +0 -1
  606. package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-Custom-English-instead-of-English-when-German-is-selected-1.js +0 -1
  607. package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-falls-back-to-English-when-selected-language-is-not-available-1.cjs +0 -1
  608. package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-falls-back-to-English-when-selected-language-is-not-available-1.js +0 -1
  609. package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-merges-custom-translations-with-defaults-1.cjs +0 -1
  610. package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-merges-custom-translations-with-defaults-1.js +0 -1
  611. package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-returns-English-translations-by-default-1.cjs +0 -1
  612. package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-returns-English-translations-by-default-1.js +0 -1
  613. package/dist/hooks/__tests__/use-color-scheme.test.cjs +0 -1
  614. package/dist/hooks/__tests__/use-color-scheme.test.js +0 -1
  615. package/dist/hooks/__tests__/use-consent-manager.test.cjs +0 -1
  616. package/dist/hooks/__tests__/use-consent-manager.test.js +0 -1
  617. package/dist/hooks/__tests__/use-focus-trap.test.cjs +0 -1
  618. package/dist/hooks/__tests__/use-focus-trap.test.js +0 -1
  619. package/dist/hooks/__tests__/use-scroll-lock.test.cjs +0 -1
  620. package/dist/hooks/__tests__/use-scroll-lock.test.js +0 -1
  621. package/dist/hooks/__tests__/use-styles.test.cjs +0 -1
  622. package/dist/hooks/__tests__/use-styles.test.js +0 -1
  623. package/dist/hooks/__tests__/use-theme.test.cjs +0 -1
  624. package/dist/hooks/__tests__/use-theme.test.js +0 -1
  625. package/dist/hooks/__tests__/use-translations.test.cjs +0 -1
  626. package/dist/hooks/__tests__/use-translations.test.js +0 -1
  627. package/dist/hooks/index.d.ts.map +0 -1
  628. package/dist/hooks/use-color-scheme.d.ts.map +0 -1
  629. package/dist/hooks/use-component-config.d.ts.map +0 -1
  630. package/dist/hooks/use-consent-manager.d.ts.map +0 -1
  631. package/dist/hooks/use-focus-trap.d.ts.map +0 -1
  632. package/dist/hooks/use-reduced-motion.d.ts.map +0 -1
  633. package/dist/hooks/use-scroll-lock.d.ts.map +0 -1
  634. package/dist/hooks/use-ssr-status.d.ts.map +0 -1
  635. package/dist/hooks/use-styles.d.ts.map +0 -1
  636. package/dist/hooks/use-text-direction.d.ts.map +0 -1
  637. package/dist/hooks/use-theme.d.ts.map +0 -1
  638. package/dist/hooks/use-translations.d.ts.map +0 -1
  639. package/dist/index.d.ts.map +0 -1
  640. package/dist/mockServiceWorker.js +0 -349
  641. package/dist/providers/__tests__/__screenshots__/provider-basic.test.tsx/ConsentManagerProvider-Basic-Request-Behavior-should-make-a-new-request-when-core-options-change-1.cjs +0 -1
  642. package/dist/providers/__tests__/__screenshots__/provider-basic.test.tsx/ConsentManagerProvider-Basic-Request-Behavior-should-make-a-new-request-when-core-options-change-1.js +0 -1
  643. package/dist/providers/__tests__/__screenshots__/provider-basic.test.tsx/ConsentManagerProvider-Basic-Request-Behavior-should-not-make-additional-requests-when-props-change-but-core-options-remain-same-1.cjs +0 -1
  644. package/dist/providers/__tests__/__screenshots__/provider-basic.test.tsx/ConsentManagerProvider-Basic-Request-Behavior-should-not-make-additional-requests-when-props-change-but-core-options-remain-same-1.js +0 -1
  645. package/dist/providers/__tests__/__screenshots__/provider-basic.test.tsx/ConsentManagerProvider-Basic-Request-Behavior-should-only-make-one-initial-request-for-consent-banner-status-1.cjs +0 -1
  646. package/dist/providers/__tests__/__screenshots__/provider-basic.test.tsx/ConsentManagerProvider-Basic-Request-Behavior-should-only-make-one-initial-request-for-consent-banner-status-1.js +0 -1
  647. package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-handle-rapid-re-renders-without-blocking-children-1.cjs +0 -1
  648. package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-handle-rapid-re-renders-without-blocking-children-1.js +0 -1
  649. package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-not-block-SSR-provider-content-when-SSR-provider-wraps-ConsentManager-1.cjs +0 -1
  650. package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-not-block-SSR-provider-content-when-SSR-provider-wraps-ConsentManager-1.js +0 -1
  651. package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-render-children-immediately-without-blocking-during-hydration-1.cjs +0 -1
  652. package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-render-children-immediately-without-blocking-during-hydration-1.js +0 -1
  653. package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-use-startTransition-for-non-blocking-state-updates-during-hydration-1.cjs +0 -1
  654. package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-use-startTransition-for-non-blocking-state-updates-during-hydration-1.js +0 -1
  655. package/dist/providers/__tests__/provider-basic.test.cjs +0 -1
  656. package/dist/providers/__tests__/provider-basic.test.js +0 -1
  657. package/dist/providers/__tests__/provider-context.test.cjs +0 -1
  658. package/dist/providers/__tests__/provider-context.test.js +0 -1
  659. package/dist/providers/__tests__/provider-errors.test.cjs +0 -1
  660. package/dist/providers/__tests__/provider-errors.test.js +0 -1
  661. package/dist/providers/__tests__/provider-hydration.test.cjs +0 -1
  662. package/dist/providers/__tests__/provider-hydration.test.js +0 -1
  663. package/dist/providers/__tests__/test-helpers.cjs +0 -1
  664. package/dist/providers/__tests__/test-helpers.js +0 -1
  665. package/dist/providers/consent-manager-provider.d.ts.map +0 -1
  666. package/dist/server/fetch-ssr-data.d.ts.map +0 -1
  667. package/dist/server/headers.d.ts.map +0 -1
  668. package/dist/server/headers.test.cjs +0 -1
  669. package/dist/server/headers.test.d.ts +0 -2
  670. package/dist/server/headers.test.d.ts.map +0 -1
  671. package/dist/server/headers.test.js +0 -1
  672. package/dist/server/index.d.ts.map +0 -1
  673. package/dist/server/normalize-url.d.ts.map +0 -1
  674. package/dist/server/normalize-url.test.cjs +0 -1
  675. package/dist/server/normalize-url.test.d.ts +0 -2
  676. package/dist/server/normalize-url.test.d.ts.map +0 -1
  677. package/dist/server/normalize-url.test.js +0 -1
  678. package/dist/server/types.d.ts.map +0 -1
  679. package/dist/static/image/ConsentManagerProvider-Basic-Request-Behavior-should-make-a-new-request-when-core-options-change-1.png +0 -0
  680. package/dist/static/image/ConsentManagerProvider-Basic-Request-Behavior-should-not-make-additional-requests-when-props-change-but-core-options-remain-same-1.png +0 -0
  681. package/dist/static/image/ConsentManagerProvider-Basic-Request-Behavior-should-only-make-one-initial-request-for-consent-banner-status-1.png +0 -0
  682. package/dist/static/image/ConsentManagerProvider-Hydration-Behavior-should-handle-rapid-re-renders-without-blocking-children-1.png +0 -0
  683. package/dist/static/image/ConsentManagerProvider-Hydration-Behavior-should-not-block-SSR-provider-content-when-SSR-provider-wraps-ConsentManager-1.png +0 -0
  684. package/dist/static/image/ConsentManagerProvider-Hydration-Behavior-should-render-children-immediately-without-blocking-during-hydration-1.png +0 -0
  685. package/dist/static/image/ConsentManagerProvider-Hydration-Behavior-should-use-startTransition-for-non-blocking-state-updates-during-hydration-1.png +0 -0
  686. package/dist/static/image/useColorScheme-cleans-up-system-preference-listener-on-unmount-1.png +0 -0
  687. package/dist/static/image/useColorScheme-handles-default-theme-based-on-document-class-1.png +0 -0
  688. package/dist/static/image/useColorScheme-responds-to-system-preference-1.png +0 -0
  689. package/dist/static/image/useColorScheme-sets-dark-theme-correctly-1.png +0 -0
  690. package/dist/static/image/useColorScheme-updates-theme-when-default-theme-changes-1.png +0 -0
  691. package/dist/static/image/useColorScheme-updates-theme-when-system-preference-changes-1.png +0 -0
  692. package/dist/static/image/useConsentManager-provides-manager-object-when-configured-1.png +0 -0
  693. package/dist/static/image/useStyles-handles-string-className-correctly-1.png +0 -0
  694. package/dist/static/image/useStyles-merges-theme-and-component-styles-correctly-1.png +0 -0
  695. package/dist/static/image/useStyles-should-remove-base-default-styles-but-keep-theme-and-component-classNames-when-noStyle--true-1.png +0 -0
  696. package/dist/static/image/useStyles-should-remove-default-styles-but-keep-custom-classNames-when-theme-object-provides-noStyle--true-1.png +0 -0
  697. package/dist/static/image/useTheme-local-theme-takes-precedence-over-global-theme-1.png +0 -0
  698. package/dist/static/image/useTranslations-Custom-English-instead-of-English-when-German-is-selected-1.png +0 -0
  699. package/dist/static/image/useTranslations-falls-back-to-English-when-selected-language-is-not-available-1.png +0 -0
  700. package/dist/static/image/useTranslations-merges-custom-translations-with-defaults-1.png +0 -0
  701. package/dist/static/image/useTranslations-returns-English-translations-by-default-1.png +0 -0
  702. package/dist/test-setup.browser.cjs +0 -1
  703. package/dist/test-setup.browser.d.ts +0 -8
  704. package/dist/test-setup.browser.d.ts.map +0 -1
  705. package/dist/test-setup.browser.js +0 -1
  706. package/dist/types/consent-manager.d.ts.map +0 -1
  707. package/dist/types/theme/index.d.ts.map +0 -1
  708. package/dist/types/theme/style-keys.d.ts.map +0 -1
  709. package/dist/types/theme/style-types.d.ts.map +0 -1
  710. package/dist/utils/cn.d.ts.map +0 -1
  711. package/dist/utils/merge-styles.d.ts.map +0 -1
  712. package/dist/utils/test-helpers.d.ts.map +0 -1
  713. package/dist/utils/theme-utils.d.ts.map +0 -1
  714. package/dist/version.d.ts +0 -2
  715. package/dist/version.d.ts.map +0 -1
@@ -0,0 +1,177 @@
1
+ ---
2
+ title: ConsentDialog
3
+ description: A modal dialog where users can toggle individual consent categories.
4
+ ---
5
+ `ConsentDialog` is a modal that shows toggles for each consent category. In **opt-in jurisdictions**, it typically opens when users click "Customize" on `ConsentBanner`. It can also be controlled programmatically for use on settings pages regardless of jurisdiction.
6
+
7
+ ## Basic Usage
8
+
9
+ ```tsx
10
+ import { ConsentManagerProvider, ConsentBanner, ConsentDialog } from '@c15t/react';
11
+
12
+ export function ConsentManager() {
13
+ return (
14
+ <ConsentManagerProvider options={{ mode: 'hosted', backendURL: 'https://your-instance.c15t.dev' }}>
15
+ <ConsentBanner />
16
+ <ConsentDialog />
17
+ </ConsentManagerProvider>
18
+ );
19
+ }
20
+ ```
21
+
22
+ ## Controlled State
23
+
24
+ By default, the dialog follows `activeUI === 'dialog'` from the consent store. Use the `open` prop for manual control:
25
+
26
+ ```tsx
27
+ import { useState } from 'react';
28
+
29
+ function SettingsPage() {
30
+ const [open, setOpen] = useState(false);
31
+
32
+ return (
33
+ <>
34
+ <button onClick={() => setOpen(true)}>Privacy Settings</button>
35
+ <ConsentDialog open={open} />
36
+ </>
37
+ );
38
+ }
39
+ ```
40
+
41
+ Or use the hook to open it programmatically:
42
+
43
+ ```tsx
44
+ import { useConsentManager } from '@c15t/react';
45
+
46
+ function PrivacyLink() {
47
+ const { setActiveUI } = useConsentManager();
48
+
49
+ return (
50
+ <button onClick={() => setActiveUI('dialog')}>
51
+ Manage cookies
52
+ </button>
53
+ );
54
+ }
55
+ ```
56
+
57
+ ## Floating Trigger
58
+
59
+ Add a floating button that lets users re-open the dialog after dismissing the banner:
60
+
61
+ ```tsx
62
+ {/* Default trigger */}
63
+ <ConsentDialog showTrigger />
64
+
65
+ {/* Custom trigger */}
66
+ <ConsentDialog
67
+ showTrigger={{
68
+ icon: 'settings',
69
+ defaultPosition: 'bottom-left',
70
+ showWhen: 'after-consent',
71
+ size: 'sm',
72
+ }}
73
+ />
74
+ ```
75
+
76
+ ## Branding
77
+
78
+ Hide the c15t branding tag:
79
+
80
+ ```tsx
81
+ <ConsentDialog hideBranding />
82
+ ```
83
+
84
+ ## Styling First
85
+
86
+ > ℹ️ **Info:**
87
+ > If you are only changing visuals, stay with the stock dialog and use the theme system first. Start with tokens and slots such as consentDialogCard, consentWidgetFooter, and consentDialogTag. See Styling Overview.
88
+
89
+ ```tsx
90
+ <ConsentManagerProvider
91
+ options={{
92
+ theme: {
93
+ colors: {
94
+ surface: '#fffdf8',
95
+ surfaceHover: '#f6f3ee',
96
+ },
97
+ slots: {
98
+ consentDialogCard: 'rounded-[32px] shadow-xl',
99
+ consentDialogHeader: 'gap-3',
100
+ consentWidgetFooter: 'gap-3 pt-6',
101
+ consentDialogTag: 'shadow-none',
102
+ },
103
+ },
104
+ }}
105
+ >
106
+ <ConsentDialog />
107
+ </ConsentManagerProvider>
108
+ ```
109
+
110
+ Dialog copy should be changed through `ConsentManagerProvider.options.i18n`, not by rebuilding the dialog structure.
111
+
112
+ ## Advanced: Compound Components
113
+
114
+ Use compound components only when you need custom dialog markup while still keeping c15t primitives and policy-aware footer actions:
115
+
116
+ ```tsx
117
+ <ConsentDialog.Root>
118
+ <ConsentDialog.Overlay />
119
+ <ConsentDialog.Card>
120
+ <ConsentDialog.Header>
121
+ <ConsentDialog.HeaderTitle />
122
+ <ConsentDialog.HeaderDescription />
123
+ </ConsentDialog.Header>
124
+ <ConsentDialog.Content>
125
+ <ConsentWidget.Root>
126
+ <ConsentWidget.Accordion type="single">
127
+ <ConsentWidget.AccordionItems />
128
+ </ConsentWidget.Accordion>
129
+ <ConsentWidget.PolicyActions />
130
+ </ConsentWidget.Root>
131
+ </ConsentDialog.Content>
132
+ <ConsentDialog.Footer />
133
+ </ConsentDialog.Card>
134
+ </ConsentDialog.Root>
135
+ ```
136
+
137
+ * `ConsentDialog.Root` — Portal container with focus trap, scroll lock, and animation
138
+ * `ConsentDialog.Card` — Main dialog card
139
+ * `ConsentDialog.Header` — Contains title and description
140
+ * `ConsentDialog.HeaderTitle` — Dialog title
141
+ * `ConsentDialog.HeaderDescription` — Description with optional `legalLinks`
142
+ * `ConsentDialog.Content` — Main content area (typically contains `ConsentWidget`)
143
+ * `ConsentDialog.Footer` — Footer with optional branding (`hideBranding` prop)
144
+ * `ConsentDialog.Overlay` — Backdrop overlay
145
+ * `ConsentWidget.PolicyActions` — Renders policy-aware grouped dialog actions
146
+
147
+ For a quick pre-composed layout, use the shorthand card:
148
+
149
+ ```tsx
150
+ <ConsentDialog.Root>
151
+ <ConsentDialog.ConsentCustomizationCard />
152
+ </ConsentDialog.Root>
153
+ ```
154
+
155
+ `ConsentWidget.PolicyActions` uses stock c15t widget buttons and translations by default. Pass `renderAction` only when you need to customize the action mapping, and return stock widget button compounds if you want to preserve built-in behavior and copy.
156
+
157
+ For fully manual control over dialog action rendering, use `useHeadlessConsentUI()` and map `dialog.actionGroups` yourself.
158
+
159
+ If the stock dialog structure still works, prefer tokens, slots, and provider configuration instead.
160
+
161
+ ## Props
162
+
163
+ ### ConsentDialogProps
164
+
165
+ |Property|Type|Description|Default|Required|
166
+ |:--|:--|:--|:--|:--:|
167
+ |theme|undefined|Theme configuration override (deprecated)|-|Optional|
168
+ |disableAnimation|boolean \|undefined|Disables all animations when true|-|Optional|
169
+ |noStyle|boolean \|undefined|Removes default styles when true|-|Optional|
170
+ |scrollLock|boolean \|undefined|Locks the scroll when true|-|Optional|
171
+ |trapFocus|boolean \|undefined|Traps keyboard focus within a dialog when true|-|Optional|
172
+ |open|boolean \|undefined|Control the open state. If omitted the dialog follows \`useConsentManager().activeUI === 'dialog'\`.|-|Optional|
173
+ |legalLinks|(keyof LegalLinksTranslations)\[] \|null \|undefined|Controls which legal links to display. Options: \`undefined\` (default): Shows all available legal links; \`null\`: Explicitly hides all legal links; Array of keys: Shows only the specified legal links|-|Optional|
174
+ |hideBranding|boolean \|undefined|Controls whether to hide the branding in the dialog footer.|-|Optional|
175
+ |showTrigger|ConsentDialogTriggerProps \|undefined|Show a floating trigger button to resurface the consent dialog. Useful for allowing users to re-open the dialog after dismissing. Options: \`true\` - Show trigger with default settings; \`false\` - Hide trigger (default); \`ConsentDialogTriggerProps\` - Show trigger with custom props|false|Optional|
176
+ |models|Model \|undefined|Which consent models this dialog responds to.|\['opt-in', 'opt-out']|Optional|
177
+ |uiSource|string \|undefined|Override the UI source identifier sent with consent API calls.|'dialog'|Optional|
@@ -0,0 +1,425 @@
1
+ ---
2
+ title: ConsentManagerProvider
3
+ description: The root provider component that initializes the consent system and makes consent state available to all child components.
4
+ ---
5
+ `ConsentManagerProvider` is the root component for the c15t consent system. It initializes the consent store, detects the user's jurisdiction, resolves translations, and provides consent state to all child components via React context.
6
+
7
+ Every other c15t component and hook must be rendered inside this provider.
8
+
9
+ ## Basic Usage
10
+
11
+ ```tsx
12
+ import { type ReactNode } from 'react';
13
+ import { ConsentManagerProvider, ConsentBanner, ConsentDialog } from '@c15t/react';
14
+
15
+ export default function ConsentManager({ children }: { children: ReactNode }) {
16
+ return (
17
+ <ConsentManagerProvider
18
+ options={{
19
+ mode: 'hosted',
20
+ backendURL: 'https://your-instance.c15t.dev',
21
+ consentCategories: ['necessary', 'measurement', 'marketing'],
22
+ }}
23
+ >
24
+ <ConsentBanner />
25
+ <ConsentDialog />
26
+ {children}
27
+ </ConsentManagerProvider>
28
+ );
29
+ }
30
+ ```
31
+
32
+ ## Options Reference
33
+
34
+ ### CommonInlineStoreOptions
35
+
36
+ |Property|Type|Description|Default|Required|
37
+ |:--|:--|:--|:--|:--:|
38
+ |enabled|boolean \|undefined|Whether c15t should be active.|true|Optional|
39
+ |callbacks|[Callbacks \|undefined](https://v2.c15t.com/docs/frameworks/react/callbacks)|Event callbacks for consent actions.|-|Optional|
40
+ |scripts|[Script \|undefined](https://v2.c15t.com/docs/frameworks/react/script-loader)|Dynamically load scripts based on consent state.|-|Optional|
41
+ |legalLinks|Object \|undefined|Configuration for the legal links.|-|Optional|
42
+ |storageConfig|StorageConfig \|undefined|Storage configuration for consent persistence.|-|Optional|
43
+ |user|User \|undefined|The user's information. Usually your own internal ID for the user from your auth provider.|-|Optional|
44
+ |overrides|Overrides \|undefined|Forcefully set values like country, region, language for the consent manager. These values will override the values detected from the browser.|-|Optional|
45
+ |networkBlocker|[NetworkBlockerConfig \|undefined](https://v2.c15t.com/docs/frameworks/react/network-blocker)|Configuration for the network request blocker.|-|Optional|
46
+ |iab|[IABConfig \|undefined](https://v2.c15t.com/docs/frameworks/react/iab/overview)|IAB TCF 2.3 configuration.|-|Optional|
47
+ |ssrData|[Object \|undefined](https://v2.c15t.com/docs/frameworks/react/server-side)|SSR-prefetched data for hydration.|-|Optional|
48
+
49
+ #### `callbacks` Callbacks
50
+
51
+ Event callbacks for consent actions.
52
+
53
+ |Property|Type|Description|Default|Required|
54
+ |:--|:--|:--|:--|:--:|
55
+ |onBannerFetched|Callback\<OnBannerFetchedPayload> \|undefined|Called when the consent banner is fetched.|-|Optional|
56
+ |onConsentSet|Callback\<OnConsentSetPayload> \|undefined|Called when the consent is set.|-|Optional|
57
+ |onConsentChanged|Callback\<OnConsentChangedPayload> \|undefined|Called only when an explicit consent save changes the previously saved consent state.|-|Optional|
58
+ |onError|Callback\<OnErrorPayload> \|undefined|Called when an error occurs.|-|Optional|
59
+ |onBeforeConsentRevocationReload|Callback\<OnConsentSetPayload> \|undefined|Called before the page reloads when consent is revoked.|-|Optional|
60
+
61
+ #### `scripts` Script
62
+
63
+ Dynamically load scripts based on consent state.
64
+
65
+ |Property|Type|Description|Default|Required|
66
+ |:--|:--|:--|:--|:--:|
67
+ |id|string|Unique identifier for the script|-|✅ Required|
68
+ |src|string \|undefined|URL of the script to load|-|Optional|
69
+ |textContent|string \|undefined|Inline JavaScript code to execute|-|Optional|
70
+ |category|HasCondition\<AllConsentNames>|Consent category or condition required to load this script|-|✅ Required|
71
+ |callbackOnly|boolean \|undefined|Whether this is a callback-only script that doesn't need to load an external resource. When true, no script tag will be added to the DOM, only callbacks will be executed.|-|Optional|
72
+ |persistAfterConsentRevoked|boolean \|undefined|Whether the script should persist after consent is revoked.|-|Optional|
73
+ |alwaysLoad|boolean \|undefined|Whether the script should always load regardless of consent state. This is useful for scripts like Google Tag Manager or PostHog that manage their own consent state internally. The script will load immediately and never be unloaded based on consent changes. Note: When using this option, you are responsible for ensuring the script itself respects user consent preferences through its own consent management.|-|Optional|
74
+ |fetchPriority|"high" \|"low" \|"auto" \|undefined|Priority hint for browser resource loading|-|Optional|
75
+ |attributes|Record\<string, string> \|undefined|Additional attributes to add to the script element|-|Optional|
76
+ |async|boolean \|undefined|Whether to use async loading|-|Optional|
77
+ |defer|boolean \|undefined|Whether to defer script loading|-|Optional|
78
+ |nonce|string \|undefined|Content Security Policy nonce|-|Optional|
79
+ |anonymizeId|boolean \|undefined|Whether to use an anonymized ID for the script element, this helps ensure the script is not blocked by ad blockers|-|Optional|
80
+ |target|"head" \|"body" \|undefined|Where to inject the script element in the DOM. Options: \`'head'\`: Scripts are appended to \`\<head>\` (default); \`'body'\`: Scripts are appended to \`\<body>\`|-|Optional|
81
+ |onBeforeLoad|((info: ScriptCallbackInfo) => void) \|undefined|Callback executed before the script is loaded|-|Optional|
82
+ |onLoad|((info: ScriptCallbackInfo) => void) \|undefined|Callback executed when the script loads successfully|-|Optional|
83
+ |onError|((info: ScriptCallbackInfo) => void) \|undefined|Callback executed if the script fails to load|-|Optional|
84
+ |onConsentChange|((info: ScriptCallbackInfo) => void) \|undefined|Callback executed whenever the consent store is changed. This callback only applies to scripts already loaded.|-|Optional|
85
+ |vendorId|string \|number \|undefined|IAB TCF vendor ID - links script to a registered vendor. When in IAB mode, the script will only load if this vendor has consent. Takes precedence over \`category\` when in IAB mode. Use custom vendor IDs (string or number) to gate non-IAB vendors too.|-|Optional|
86
+ |iabPurposes|number\[] \|undefined|IAB TCF purpose IDs this script requires consent for. When in IAB mode and no vendorId is set, the script will only load if ALL specified purposes have consent.|-|Optional|
87
+ |iabLegIntPurposes|number\[] \|undefined|IAB TCF legitimate interest purpose IDs. These purposes can operate under legitimate interest instead of consent. The script loads if all iabPurposes have consent OR all iabLegIntPurposes have legitimate interest established.|-|Optional|
88
+ |iabSpecialFeatures|number\[] \|undefined|IAB TCF special feature IDs this script requires. Options: 1: Use precise geolocation data; 2: Actively scan device characteristics for identification|-|Optional|
89
+
90
+ #### `legalLinks`
91
+
92
+ Configuration for the legal links.
93
+
94
+ |Property|Type|Description|Default|Required|
95
+ |:--|:--|:--|:--|:--:|
96
+ |privacyPolicy|LegalLink \|undefined|-|-|✅ Required|
97
+ |cookiePolicy|LegalLink \|undefined|-|-|✅ Required|
98
+ |termsOfService|LegalLink \|undefined|-|-|✅ Required|
99
+
100
+ #### `storageConfig` StorageConfig
101
+
102
+ Storage configuration for consent persistence.
103
+
104
+ |Property|Type|Description|Default|Required|
105
+ |:--|:--|:--|:--|:--:|
106
+ |storageKey|string \|undefined|Custom storage key for localStorage and cookies|-|Optional|
107
+ |crossSubdomain|boolean \|undefined|Enable cross-subdomain cookies by default|-|Optional|
108
+ |defaultDomain|string \|undefined|Custom default domain for cookies|-|Optional|
109
+ |defaultExpiryDays|number \|undefined|Default cookie expiration in days|-|Optional|
110
+
111
+ #### `user` User
112
+
113
+ The user's information. Usually your own internal ID for the user from your auth provider.
114
+
115
+ |Property|Type|Description|Default|Required|
116
+ |:--|:--|:--|:--|:--:|
117
+ |id|string|Usually your own internal ID for the user from your auth provider|-|✅ Required|
118
+ |identityProvider|string \|undefined|The identity provider of the user. Usually the name of the identity provider e.g. 'clerk', 'auth0', 'custom', etc.|-|Optional|
119
+
120
+ #### `overrides` Overrides
121
+
122
+ Forcefully set values like country, region, language for the consent manager. These values will override the values detected from the browser.
123
+
124
+ |Property|Type|Description|Default|Required|
125
+ |:--|:--|:--|:--|:--:|
126
+ |country|string \|undefined|Country code to forcefully set|-|Optional|
127
+ |region|string \|undefined|Region code to forcefully set|-|Optional|
128
+ |language|string \|undefined|Language code to forcefully set|-|Optional|
129
+ |gpc|boolean \|undefined|Override the Global Privacy Control (GPC) signal. When \`true\`, simulates GPC being active (opt-out of marketing/measurement). When \`false\`, suppresses the real browser GPC signal. When \`undefined\`, falls back to the browser's \`navigator.globalPrivacyControl\`.|-|Optional|
130
+
131
+ #### `networkBlocker` NetworkBlockerConfig
132
+
133
+ Configuration for the network request blocker.
134
+
135
+ |Property|Type|Description|Default|Required|
136
+ |:--|:--|:--|:--|:--:|
137
+ |enabled|boolean \|undefined|Whether the network blocker is enabled.|-|Optional|
138
+ |initialConsents|ConsentState \|undefined|The consent state snapshot that is currently used for blocking logic.|-|Optional|
139
+ |logBlockedRequests|boolean \|undefined|Whether to automatically log blocked requests to the console.|-|Optional|
140
+ |onRequestBlocked|((info: BlockedRequestInfo) => void) \|undefined|Callback invoked whenever a request is blocked.|-|Optional|
141
+ |rules|NetworkBlockerRule|Domain rules that determine which requests should be blocked.|-|✅ Required|
142
+
143
+ #### `iab` IABConfig
144
+
145
+ IAB TCF 2.3 configuration.
146
+
147
+ |Property|Type|Description|Default|Required|
148
+ |:--|:--|:--|:--|:--:|
149
+ |enabled|boolean|Enable IAB TCF 2.3 mode. Note: Only works in 'hosted' client mode (legacy alias: 'c15t') because it requires a backend. Options: Fetch GVL from gvl.consent.io; Initialize \_\_tcfapi CMP API; Generate TC Strings for IAB compliance|-|✅ Required|
150
+ |\_module|IABModule \|undefined|IAB runtime module injected by \`@c15t/iab\`.|-|Optional|
151
+ |cmpId|number \|undefined|CMP ID registered with IAB Europe. When using consent.io as the backend, this is automatically provided via the \`/init\` endpoint — no client-side configuration needed. Only set this if you self-host and have your own CMP registration. A valid (non-zero) CMP ID is required for IAB TCF compliance.|-|Optional|
152
+ |cmpVersion|string \|number \|undefined|CMP version. When omitted, defaults to package version from \`\~/cmp-defaults\` (which uses \~/version).|-|Optional|
153
+ |vendors|number\[] \|undefined|IAB-registered vendor IDs to include (optional). Used to scope the vendor list when fetching GVL or when hosted fallback paths are used (e.g. if GVL fetch fails).|-|Optional|
154
+ |customVendors|NonIABVendor \|undefined|Custom vendors not registered with IAB. These are displayed separately in the consent UI with a note that they have different privacy practices than IAB vendors.|-|Optional|
155
+ |publisherCountryCode|string \|undefined|Publisher country code (2-letter ISO).|-|Optional|
156
+ |isServiceSpecific|boolean \|undefined|Whether consent is service-specific (not global).|-|Optional|
157
+ |gvl|Object \|undefined \|null|Pre-loaded Global Vendor List for testing or SSR. Options: Testing (avoids network calls and mocking complexity); SSR (use server-fetched GVL); Offline/air-gapped deployments|-|Optional|
158
+
159
+ #### `ssrData`
160
+
161
+ SSR-prefetched data for hydration.
162
+
163
+ |Property|Type|Description|Default|Required|
164
+ |:--|:--|:--|:--|:--:|
165
+ |init|Object \|undefined \|null|Init endpoint response with jurisdiction, location, translations, and optional GVL.|-|✅ Required|
166
+ |gvl|Object \|undefined \|null|Global Vendor List data for IAB TCF mode. Note: When init returns 200 without gvl, client IAB settings are overridden to disabled.|-|Optional|
167
+ |metadata|SSRInitRequestMetadata \|undefined|Optional metadata for debugging SSR transport behavior.|-|Optional|
168
+
169
+ ### ConsentManagerContentOptions
170
+
171
+ |Property|Type|Description|Default|Required|
172
+ |:--|:--|:--|:--|:--:|
173
+ |i18n|I18nConfig \|undefined|Preferred i18n configuration in c15t v2.|-|Optional|
174
+ |translations|[TranslationConfig \|undefined](https://v2.c15t.com/docs/frameworks/react/internationalization)|Translation configuration to seed the store with.|-|Optional|
175
+ |consentCategories|[AllConsentNames \|undefined](https://v2.c15t.com/docs/frameworks/react/concepts/consent-categories)|Consent categories to show in the consent banner.|-|Optional|
176
+
177
+ #### `i18n` I18nConfig
178
+
179
+ Preferred i18n configuration in c15t v2.
180
+
181
+ |Property|Type|Description|Default|Required|
182
+ |:--|:--|:--|:--|:--:|
183
+ |messages|Record\<string, Partial\<Translations>> \|undefined|Translation message map keyed by language code (\`en\`, \`de\`, \`fr\`, ...).|-|✅ Required|
184
+ |locale|string \|undefined|Preferred language code used as the initial fallback locale.|-|Optional|
185
+ |detectBrowserLanguage|boolean \|undefined|Whether to auto-detect from browser language settings.|-|Optional|
186
+
187
+ #### `translations` TranslationConfig
188
+
189
+ Translation configuration to seed the store with.
190
+
191
+ |Property|Type|Description|Default|Required|
192
+ |:--|:--|:--|:--|:--:|
193
+ |translations|Record\<string, Partial\<Translations>> \|undefined|-|-|✅ Required|
194
+ |defaultLanguage|string \|undefined|-|-|Optional|
195
+ |disableAutoLanguageSwitch|boolean \|undefined|-|-|Optional|
196
+
197
+ ### UIOptions
198
+
199
+ |Property|Type|Description|Default|Required|
200
+ |:--|:--|:--|:--|:--:|
201
+ |theme|[Theme \|undefined](https://v2.c15t.com/docs/frameworks/react/styling/tokens)|Visual theme to apply.|-|Optional|
202
+ |disableAnimation|boolean \|undefined|Whether to disable animations.|false|Optional|
203
+ |scrollLock|boolean \|undefined|Whether to lock scroll when dialogs are open.|false|Optional|
204
+ |trapFocus|boolean \|undefined|Whether to trap focus within dialogs.|true|Optional|
205
+ |colorScheme|["light" \|"dark" \|"system" \|undefined](https://v2.c15t.com/docs/frameworks/react/styling/color-scheme)|Color scheme preference. With this option, you can force the theme to be light, dark or system. Otherwise, the theme will be detected if you have '.dark' classname in your document.|-|Optional|
206
+ |noStyle|[boolean \|undefined](https://v2.c15t.com/docs/frameworks/react/headless)|Whether to disable default styles.|false|Optional|
207
+
208
+ #### `theme` Theme
209
+
210
+ Visual theme to apply.
211
+
212
+ |Property|Type|Description|Default|Required|
213
+ |:--|:--|:--|:--|:--:|
214
+ |colors|ColorTokens \|undefined|Color palette for light mode.|-|Optional|
215
+ |dark|ColorTokens \|undefined|Dark mode color overrides.|-|Optional|
216
+ |typography|TypographyTokens \|undefined|Typography settings for text elements.|-|Optional|
217
+ |spacing|SpacingTokens \|undefined|Spacing scale for internal padding and margins.|-|Optional|
218
+ |radius|RadiusTokens \|undefined|Border radius scale for rounded corners.|-|Optional|
219
+ |shadows|ShadowTokens \|undefined|Box shadow scale for depth and elevation.|-|Optional|
220
+ |motion|MotionTokens \|undefined|Animation and transition timing.|-|Optional|
221
+ |consentActions|Object \|undefined|Semantic button styling for consent actions.|-|Optional|
222
+ |slots|ComponentSlots \|undefined|Component-specific style overrides.|-|Optional|
223
+
224
+ ## Mode: hosted vs offline
225
+
226
+ ```tsx
227
+ // Hosted mode — persists to hosted backend
228
+ <ConsentManagerProvider
229
+ options={{
230
+ mode: 'hosted',
231
+ backendURL: 'https://your-instance.c15t.dev',
232
+ }}
233
+ >
234
+
235
+ // Offline mode — local cookie storage only
236
+ <ConsentManagerProvider
237
+ options={{
238
+ mode: 'offline',
239
+ }}
240
+ >
241
+ ```
242
+
243
+ See [Client Modes](/docs/frameworks/react/concepts/client-modes) for a detailed comparison.
244
+
245
+ ## Legal Links
246
+
247
+ `legalLinks` defines the URLs shown in consent UI text (banner, dialog, and widget where applicable).
248
+ Configure only the links you want to expose.
249
+
250
+ ```tsx
251
+ <ConsentManagerProvider
252
+ options={{
253
+ backendURL: 'https://your-instance.c15t.dev',
254
+ legalLinks: {
255
+ privacyPolicy: {
256
+ href: '/privacy',
257
+ target: '_self',
258
+ },
259
+ cookiePolicy: {
260
+ href: '/cookies',
261
+ target: '_self',
262
+ },
263
+ termsOfService: {
264
+ href: 'https://example.com/terms',
265
+ target: '_blank',
266
+ rel: 'noopener noreferrer',
267
+ label: 'Terms of Service',
268
+ },
269
+ },
270
+ }}
271
+ >
272
+ ```
273
+
274
+ Notes:
275
+
276
+ * Omitting a key (for example `termsOfService`) hides that link.
277
+ * `label` overrides the translated text for that single link.
278
+ * Use `_self` for internal pages and `_blank` + `rel="noopener noreferrer"` for external pages.
279
+ * Control which of the configured links render in each component via the component's `legalLinks` prop.
280
+
281
+ ## Overrides
282
+
283
+ `overrides` lets you force location/language signals instead of browser or network detection.
284
+ This is useful for QA, local development, and preview environments.
285
+
286
+ ```tsx
287
+ <ConsentManagerProvider
288
+ options={{
289
+ backendURL: 'https://your-instance.c15t.dev',
290
+ overrides: {
291
+ country: 'DE',
292
+ region: 'BY',
293
+ language: 'de-DE',
294
+ },
295
+ }}
296
+ >
297
+ ```
298
+
299
+ You can also override Global Privacy Control (GPC) behavior during testing:
300
+
301
+ ```tsx
302
+ <ConsentManagerProvider
303
+ options={{
304
+ backendURL: 'https://your-instance.c15t.dev',
305
+ overrides: {
306
+ gpc: true,
307
+ },
308
+ }}
309
+ >
310
+ ```
311
+
312
+ > ⚠️ **Warning:**
313
+ > Treat overrides as an environment/testing tool. Avoid hard-coding production overrides unless that behavior is intentional for your deployment.
314
+
315
+ ## Policy Packs
316
+
317
+ In hosted mode (recommended), the backend resolves the correct policy automatically — no frontend policy config needed:
318
+
319
+ ```tsx
320
+ <ConsentManagerProvider
321
+ options={{
322
+ backendURL: 'https://your-instance.c15t.dev',
323
+ }}
324
+ >
325
+ ```
326
+
327
+ ### Fallback: Offline Policies
328
+
329
+ When no backend is available, `ConsentManagerProvider` accepts `offlinePolicy.policyPacks` for local policy resolution during development, testing, previews, or temporary backend outages:
330
+
331
+ ```tsx
332
+ <ConsentManagerProvider
333
+ options={{
334
+ mode: 'offline',
335
+ offlinePolicy: {
336
+ i18n: {
337
+ defaultProfile: 'default',
338
+ messages: {
339
+ default: {
340
+ translations: {
341
+ en: { cookieBanner: { title: 'Privacy choices' } },
342
+ },
343
+ },
344
+ qc: {
345
+ fallbackLanguage: 'fr',
346
+ translations: {
347
+ en: { cookieBanner: { title: 'Quebec Privacy Settings' } },
348
+ fr: { cookieBanner: { title: 'Paramètres de confidentialité du Québec' } },
349
+ },
350
+ },
351
+ },
352
+ },
353
+ policyPacks: [
354
+ {
355
+ id: 'qc_opt_in',
356
+ match: { regions: [{ country: 'CA', region: 'QC' }] },
357
+ i18n: { messageProfile: 'qc' },
358
+ consent: { model: 'opt-in', expiryDays: 365 },
359
+ ui: { mode: 'banner' },
360
+ },
361
+ {
362
+ id: 'default_world',
363
+ match: { isDefault: true },
364
+ consent: { model: 'none' },
365
+ ui: { mode: 'none' },
366
+ },
367
+ ],
368
+ },
369
+ overrides: {
370
+ country: 'CA',
371
+ region: 'QC',
372
+ },
373
+ }}
374
+ >
375
+ ```
376
+
377
+ Notes:
378
+
379
+ * `offlinePolicy` is only used in `offline` mode.
380
+ * Treat offline policies as a development/testing tool or resilience fallback, not the primary production source of truth.
381
+ * `offlinePolicy.i18n` lets offline mode mirror hosted `messageProfile` and profile-local `fallbackLanguage` behavior.
382
+ * Omitting `offlinePolicy.policyPacks` uses the built-in synthetic opt-in fallback banner. Hosted network fallback uses the same opt-in banner.
383
+ * `offlinePolicy: { policyPacks: [] }` is explicit no-banner mode.
384
+ * In hosted mode, backend `policyPacks` remain the source of truth — frontend offline policies never override a live backend decision.
385
+
386
+ Read the full guide at [Policy Packs](/docs/frameworks/react/policy-packs) and the conceptual model at [Policy Packs Concept](/docs/frameworks/react/concepts/policy-packs).
387
+
388
+ ## Props
389
+
390
+ ### ConsentManagerProviderProps
391
+
392
+ |Property|Type|Description|Default|Required|
393
+ |:--|:--|:--|:--|:--:|
394
+ |children|ReactNode|React children to render within the provider.|-|✅ Required|
395
+ |options|[ConsentManagerOptions](https://v2.c15t.com/docs/frameworks/react/components/consent-manager-provider)|Configuration options for the consent manager. This includes core, React, store, and translation settings.|-|✅ Required|
396
+
397
+ #### `options` ConsentManagerOptions
398
+
399
+ Configuration options for the consent manager. This includes core, React, store, and translation settings.
400
+
401
+ |Property|Type|Description|Default|Required|
402
+ |:--|:--|:--|:--|:--:|
403
+ |store|StoreOptions \|undefined|-|-|Optional|
404
+ |offlinePolicy|OfflinePolicyConfig \|undefined|Top-level offline policy configuration.|-|Optional|
405
+ |storageConfig|StorageConfig \|undefined|Storage configuration for consent persistence|-|Optional|
406
+ |mode|"custom" \|"hosted" \|"c15t" \|"offline" \|undefined|Operating mode - custom endpoint implementation|-|Optional|
407
+ |backendURL|string \|undefined|Backend URL is not used in custom mode|-|Optional|
408
+ |enabled|boolean \|undefined|Whether c15t should be active.|-|Optional|
409
+ |callbacks|Callbacks \|undefined|Event callbacks for consent actions.|-|Optional|
410
+ |scripts|Script \|undefined|Dynamically load scripts based on consent state.|-|Optional|
411
+ |legalLinks|Partial\<Record\<keyof LegalLinksTranslations, LegalLink>> \|undefined|Configuration for the legal links.|-|Optional|
412
+ |user|User \|undefined|The user's information. Usually your own internal ID for the user from your auth provider.|-|Optional|
413
+ |overrides|Overrides \|undefined|Forcefully set values like country, region, language for the consent manager. These values will override the values detected from the browser.|-|Optional|
414
+ |networkBlocker|NetworkBlockerConfig \|undefined|Configuration for the network request blocker.|-|Optional|
415
+ |iab|IABConfig \|undefined|IAB TCF 2.3 configuration.|-|Optional|
416
+ |ssrData|Promise\<SSRInitialData \|undefined> \|undefined|SSR-prefetched data for hydration.|-|Optional|
417
+ |theme|Theme \|undefined|Visual theme to apply.|-|Optional|
418
+ |disableAnimation|boolean \|undefined|Whether to disable animations.|-|Optional|
419
+ |scrollLock|boolean \|undefined|Whether to lock scroll when dialogs are open.|-|Optional|
420
+ |trapFocus|boolean \|undefined|Whether to trap focus within dialogs.|-|Optional|
421
+ |colorScheme|"light" \|"dark" \|"system" \|undefined|Color scheme preference. With this option, you can force the theme to be light, dark or system. Otherwise, the theme will be detected if you have '.dark' classname in your document.|-|Optional|
422
+ |noStyle|boolean \|undefined|Whether to disable default styles.|-|Optional|
423
+ |i18n|I18nConfig \|undefined|Preferred i18n configuration in c15t v2.|-|Optional|
424
+ |translations|TranslationConfig \|undefined|Translation configuration to seed the store with.|-|Optional|
425
+ |consentCategories|AllConsentNames \|undefined|Consent categories to show in the consent banner.|-|Optional|