@c15t/react 2.0.0-rc.4 → 2.0.0-rc.5

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 (343) hide show
  1. package/dist/components/consent-banner/atoms/root.cjs +1 -1
  2. package/dist/components/consent-banner/atoms/root.js +1 -1
  3. package/dist/components/consent-banner/consent-banner.cjs +1 -1
  4. package/dist/components/consent-banner/consent-banner.js +1 -1
  5. package/dist/components/consent-dialog/atoms/root.cjs +1 -1
  6. package/dist/components/consent-dialog/atoms/root.js +1 -1
  7. package/dist/components/consent-dialog/consent-dialog.cjs +1 -1
  8. package/dist/components/consent-dialog/consent-dialog.js +1 -1
  9. package/dist/components/consent-dialog-trigger/atoms/root.cjs +1 -1
  10. package/dist/components/consent-dialog-trigger/atoms/root.js +1 -1
  11. package/dist/components/consent-widget/atoms/button.cjs +1 -1
  12. package/dist/components/consent-widget/atoms/button.js +1 -1
  13. package/dist/components/consent-widget/consent-widget.cjs +1 -1
  14. package/dist/components/consent-widget/consent-widget.js +1 -1
  15. package/dist/components/frame/frame.cjs +1 -1
  16. package/dist/components/frame/frame.js +1 -1
  17. package/dist/components/iab-consent-banner/atoms/root.cjs +1 -1
  18. package/dist/components/iab-consent-banner/atoms/root.js +1 -1
  19. package/dist/components/iab-consent-banner/iab-consent-banner.cjs +1 -1
  20. package/dist/components/iab-consent-banner/iab-consent-banner.js +1 -1
  21. package/dist/components/iab-consent-dialog/atoms/footer.cjs +1 -1
  22. package/dist/components/iab-consent-dialog/atoms/footer.js +1 -1
  23. package/dist/components/iab-consent-dialog/atoms/root.cjs +1 -1
  24. package/dist/components/iab-consent-dialog/atoms/root.js +1 -1
  25. package/dist/components/iab-consent-dialog/iab-consent-dialog.cjs +1 -1
  26. package/dist/components/iab-consent-dialog/iab-consent-dialog.js +1 -1
  27. package/dist/components/shared/libs/policy-actions.cjs +1 -0
  28. package/dist/components/shared/libs/policy-actions.js +1 -0
  29. package/dist/components/shared/primitives/button.cjs +1 -1
  30. package/dist/components/shared/primitives/button.js +1 -1
  31. package/dist/headless.cjs +1 -1
  32. package/dist/headless.js +1 -1
  33. package/dist/hooks/index.cjs +1 -1
  34. package/dist/hooks/index.js +1 -1
  35. package/dist/hooks/use-consent-dialog-trigger.cjs +1 -0
  36. package/dist/hooks/use-consent-dialog-trigger.js +1 -0
  37. package/dist/hooks/use-consent-manager.cjs +1 -1
  38. package/dist/hooks/use-consent-manager.js +1 -1
  39. package/dist/hooks/use-headless-consent-ui.cjs +1 -0
  40. package/dist/hooks/use-headless-consent-ui.js +1 -0
  41. package/dist/hooks/use-headless-iab-consent-ui.cjs +1 -0
  42. package/dist/hooks/use-headless-iab-consent-ui.js +1 -0
  43. package/dist/index.cjs +1 -1
  44. package/dist/index.js +1 -1
  45. package/dist/providers/consent-manager-provider.cjs +1 -1
  46. package/dist/providers/consent-manager-provider.js +1 -1
  47. package/dist/server/fetch-ssr-data.cjs +1 -1
  48. package/dist/server/fetch-ssr-data.js +1 -1
  49. package/dist/server/headers.cjs +1 -1
  50. package/dist/server/headers.js +1 -1
  51. package/dist/server/index.cjs +1 -1
  52. package/dist/server/index.js +1 -1
  53. package/dist/server/init-cache-key.cjs +1 -0
  54. package/dist/server/init-cache-key.js +1 -0
  55. package/dist/version.cjs +1 -1
  56. package/dist/version.js +1 -1
  57. package/{dist → dist-types}/components/consent-banner/atoms/overlay.d.ts +0 -1
  58. package/{dist → dist-types}/components/consent-banner/atoms/root.d.ts +1 -2
  59. package/{dist → dist-types}/components/consent-banner/components.d.ts +0 -1
  60. package/{dist → dist-types}/components/consent-banner/consent-banner.d.ts +8 -7
  61. package/{dist → dist-types}/components/consent-banner/error-boundary.d.ts +0 -1
  62. package/{dist → dist-types}/components/consent-banner/index.d.ts +0 -1
  63. package/{dist → dist-types}/components/consent-dialog/atoms/card.d.ts +0 -1
  64. package/{dist → dist-types}/components/consent-dialog/atoms/overlay.d.ts +0 -1
  65. package/{dist → dist-types}/components/consent-dialog/atoms/root.d.ts +1 -2
  66. package/{dist → dist-types}/components/consent-dialog/consent-dialog.d.ts +1 -2
  67. package/{dist → dist-types}/components/consent-dialog/index.d.ts +0 -1
  68. package/{dist → dist-types}/components/consent-dialog-link/index.d.ts +0 -1
  69. package/{dist → dist-types}/components/consent-dialog-trigger/atoms/button.d.ts +0 -1
  70. package/{dist → dist-types}/components/consent-dialog-trigger/atoms/icon.d.ts +0 -1
  71. package/{dist → dist-types}/components/consent-dialog-trigger/atoms/root.d.ts +0 -1
  72. package/{dist → dist-types}/components/consent-dialog-trigger/atoms/text.d.ts +0 -1
  73. package/{dist → dist-types}/components/consent-dialog-trigger/consent-dialog-trigger.d.ts +0 -1
  74. package/{dist → dist-types}/components/consent-dialog-trigger/index.d.ts +0 -1
  75. package/{dist → dist-types}/components/consent-dialog-trigger/types.d.ts +1 -2
  76. package/{dist → dist-types}/components/consent-dialog-trigger/use-draggable.d.ts +1 -2
  77. package/{dist → dist-types}/components/consent-preferences-link/consent-preferences-link.d.ts +0 -1
  78. package/{dist → dist-types}/components/consent-preferences-link/index.d.ts +0 -1
  79. package/{dist → dist-types}/components/consent-widget/atoms/accordion.d.ts +0 -1
  80. package/{dist → dist-types}/components/consent-widget/atoms/button.d.ts +0 -1
  81. package/{dist → dist-types}/components/consent-widget/atoms/footer.d.ts +0 -1
  82. package/{dist → dist-types}/components/consent-widget/atoms/root.d.ts +0 -1
  83. package/{dist → dist-types}/components/consent-widget/consent-widget.d.ts +0 -1
  84. package/{dist → dist-types}/components/consent-widget/index.d.ts +0 -1
  85. package/{dist → dist-types}/components/consent-widget/types.d.ts +0 -1
  86. package/{dist → dist-types}/components/frame/atoms.d.ts +1 -2
  87. package/{dist → dist-types}/components/frame/frame.d.ts +0 -1
  88. package/{dist → dist-types}/components/frame/index.d.ts +0 -1
  89. package/{dist → dist-types}/components/frame/types.d.ts +1 -2
  90. package/{dist → dist-types}/components/iab-consent-banner/atoms/button-group.d.ts +0 -1
  91. package/{dist → dist-types}/components/iab-consent-banner/atoms/card.d.ts +0 -1
  92. package/{dist → dist-types}/components/iab-consent-banner/atoms/description.d.ts +0 -1
  93. package/{dist → dist-types}/components/iab-consent-banner/atoms/footer.d.ts +0 -1
  94. package/{dist → dist-types}/components/iab-consent-banner/atoms/header.d.ts +0 -1
  95. package/{dist → dist-types}/components/iab-consent-banner/atoms/overlay.d.ts +0 -1
  96. package/{dist → dist-types}/components/iab-consent-banner/atoms/root.d.ts +1 -2
  97. package/{dist → dist-types}/components/iab-consent-banner/atoms/title.d.ts +0 -1
  98. package/{dist → dist-types}/components/iab-consent-banner/iab-consent-banner.d.ts +1 -2
  99. package/{dist → dist-types}/components/iab-consent-banner/index.d.ts +0 -1
  100. package/{dist → dist-types}/components/iab-consent-dialog/atoms/card.d.ts +0 -1
  101. package/{dist → dist-types}/components/iab-consent-dialog/atoms/content.d.ts +0 -1
  102. package/{dist → dist-types}/components/iab-consent-dialog/atoms/footer.d.ts +0 -1
  103. package/{dist → dist-types}/components/iab-consent-dialog/atoms/header.d.ts +0 -1
  104. package/{dist → dist-types}/components/iab-consent-dialog/atoms/overlay.d.ts +0 -1
  105. package/{dist → dist-types}/components/iab-consent-dialog/atoms/purpose-item.d.ts +0 -1
  106. package/{dist → dist-types}/components/iab-consent-dialog/atoms/root.d.ts +1 -2
  107. package/{dist → dist-types}/components/iab-consent-dialog/atoms/stack-item.d.ts +0 -1
  108. package/{dist → dist-types}/components/iab-consent-dialog/atoms/tabs.d.ts +0 -1
  109. package/{dist → dist-types}/components/iab-consent-dialog/atoms/vendor-list.d.ts +1 -2
  110. package/{dist → dist-types}/components/iab-consent-dialog/hooks/use-gvl-data.d.ts +0 -1
  111. package/{dist → dist-types}/components/iab-consent-dialog/iab-consent-dialog.d.ts +1 -2
  112. package/{dist → dist-types}/components/iab-consent-dialog/index.d.ts +0 -1
  113. package/{dist → dist-types}/components/iab-consent-dialog/types.d.ts +0 -1
  114. package/{dist → dist-types}/components/iab-consent-dialog/use-iab-translations.d.ts +0 -1
  115. package/dist-types/components/shared/libs/policy-actions.d.ts +26 -0
  116. package/{dist → dist-types}/components/shared/libs/polymorphic.d.ts +0 -1
  117. package/{dist → dist-types}/components/shared/libs/recursive-clone-children.d.ts +0 -1
  118. package/{dist → dist-types}/components/shared/primitives/box.d.ts +0 -1
  119. package/{dist → dist-types}/components/shared/primitives/button.d.ts +5 -2
  120. package/{dist → dist-types}/components/shared/primitives/button.types.d.ts +17 -1
  121. package/{dist → dist-types}/components/shared/primitives/legal-links/index.d.ts +1 -2
  122. package/{dist → dist-types}/components/shared/ui/accordion/accordion.d.ts +1 -2
  123. package/{dist → dist-types}/components/shared/ui/accordion/accordion.types.d.ts +1 -2
  124. package/{dist → dist-types}/components/shared/ui/accordion/index.d.ts +0 -1
  125. package/{dist → dist-types}/components/shared/ui/animated-collapse/animated-collapse.d.ts +0 -1
  126. package/{dist → dist-types}/components/shared/ui/animated-collapse/index.d.ts +0 -1
  127. package/{dist → dist-types}/components/shared/ui/button/button.d.ts +1 -2
  128. package/{dist → dist-types}/components/shared/ui/button/button.types.d.ts +0 -1
  129. package/{dist → dist-types}/components/shared/ui/button/index.d.ts +0 -1
  130. package/{dist → dist-types}/components/shared/ui/icon.d.ts +0 -1
  131. package/{dist → dist-types}/components/shared/ui/logo.d.ts +0 -1
  132. package/{dist → dist-types}/components/shared/ui/switch/index.d.ts +0 -1
  133. package/{dist → dist-types}/components/shared/ui/switch/switch.d.ts +1 -2
  134. package/{dist → dist-types}/components/shared/ui/switch/switch.types.d.ts +1 -2
  135. package/{dist → dist-types}/context/consent-manager-context.d.ts +1 -2
  136. package/{dist → dist-types}/context/consent-tracking-context.d.ts +0 -1
  137. package/{dist → dist-types}/context/theme-context.d.ts +0 -1
  138. package/dist-types/headless.d.ts +10 -0
  139. package/{dist → dist-types}/hooks/index.d.ts +3 -1
  140. package/{dist → dist-types}/hooks/use-color-scheme.d.ts +0 -1
  141. package/{dist → dist-types}/hooks/use-component-config.d.ts +1 -2
  142. package/dist-types/hooks/use-consent-dialog-trigger.d.ts +10 -0
  143. package/{dist → dist-types}/hooks/use-consent-manager.d.ts +1 -2
  144. package/{dist → dist-types}/hooks/use-focus-trap.d.ts +0 -1
  145. package/dist-types/hooks/use-headless-consent-ui.d.ts +46 -0
  146. package/dist-types/hooks/use-headless-iab-consent-ui.d.ts +41 -0
  147. package/{dist → dist-types}/hooks/use-reduced-motion.d.ts +0 -1
  148. package/{dist → dist-types}/hooks/use-scroll-lock.d.ts +0 -1
  149. package/{dist → dist-types}/hooks/use-ssr-status.d.ts +0 -1
  150. package/{dist → dist-types}/hooks/use-styles.d.ts +0 -1
  151. package/{dist → dist-types}/hooks/use-text-direction.d.ts +0 -1
  152. package/{dist → dist-types}/hooks/use-theme.d.ts +0 -1
  153. package/{dist → dist-types}/hooks/use-translations.d.ts +1 -2
  154. package/{dist → dist-types}/index.d.ts +5 -3
  155. package/{dist → dist-types}/providers/consent-manager-provider.d.ts +0 -1
  156. package/{dist → dist-types}/server/fetch-ssr-data.d.ts +1 -2
  157. package/{dist → dist-types}/server/headers.d.ts +2 -2
  158. package/{dist → dist-types}/server/index.d.ts +1 -1
  159. package/dist-types/server/init-cache-key.d.ts +21 -0
  160. package/{dist → dist-types}/server/normalize-url.d.ts +0 -1
  161. package/{dist → dist-types}/server/types.d.ts +1 -2
  162. package/{dist → dist-types}/types/consent-manager.d.ts +8 -2
  163. package/{dist → dist-types}/types/theme/index.d.ts +0 -1
  164. package/dist-types/types/theme/style-keys.d.ts +1 -0
  165. package/{dist → dist-types}/types/theme/style-types.d.ts +4 -3
  166. package/{dist → dist-types}/utils/cn.d.ts +1 -2
  167. package/{dist → dist-types}/utils/merge-styles.d.ts +0 -1
  168. package/{dist → dist-types}/utils/test-helpers.d.ts +0 -1
  169. package/{dist → dist-types}/utils/theme-utils.d.ts +1 -2
  170. package/dist-types/version.d.ts +1 -0
  171. package/docs/README.md +76 -0
  172. package/docs/building-headless-components.md +245 -0
  173. package/docs/callbacks.md +117 -0
  174. package/docs/components/consent-banner.md +174 -0
  175. package/docs/components/consent-dialog-link.md +59 -0
  176. package/docs/components/consent-dialog-trigger.md +103 -0
  177. package/docs/components/consent-dialog.md +137 -0
  178. package/docs/components/consent-manager-provider.md +422 -0
  179. package/docs/components/consent-widget.md +78 -0
  180. package/docs/components/dev-tools.md +63 -0
  181. package/docs/components/frame.md +73 -0
  182. package/docs/concepts/client-modes.md +163 -0
  183. package/docs/concepts/consent-categories.md +97 -0
  184. package/docs/concepts/consent-models.md +112 -0
  185. package/docs/concepts/cookie-management.md +122 -0
  186. package/docs/concepts/glossary.md +23 -0
  187. package/docs/concepts/initialization-flow.md +141 -0
  188. package/docs/concepts/policy-packs.md +227 -0
  189. package/docs/headless.md +184 -0
  190. package/docs/hooks/use-color-scheme.md +40 -0
  191. package/docs/hooks/use-consent-manager/checking-consent.md +94 -0
  192. package/docs/hooks/use-consent-manager/location-info.md +95 -0
  193. package/docs/hooks/use-consent-manager/overview.md +390 -0
  194. package/docs/hooks/use-consent-manager/setting-consent.md +92 -0
  195. package/docs/hooks/use-draggable.md +57 -0
  196. package/docs/hooks/use-focus-trap.md +41 -0
  197. package/docs/hooks/use-reduced-motion.md +35 -0
  198. package/docs/hooks/use-ssr-status.md +31 -0
  199. package/docs/hooks/use-text-direction.md +49 -0
  200. package/docs/hooks/use-translations.md +116 -0
  201. package/docs/iab/consent-banner.md +95 -0
  202. package/docs/iab/consent-dialog.md +135 -0
  203. package/docs/iab/overview.md +119 -0
  204. package/docs/iab/use-gvl-data.md +208 -0
  205. package/docs/iframe-blocking.md +107 -0
  206. package/docs/integrations/databuddy.md +186 -0
  207. package/docs/integrations/google-tag-manager.md +153 -0
  208. package/docs/integrations/google-tag.md +149 -0
  209. package/docs/integrations/linkedin-insights.md +109 -0
  210. package/docs/integrations/meta-pixel.md +342 -0
  211. package/docs/integrations/microsoft-uet.md +112 -0
  212. package/docs/integrations/overview.md +89 -0
  213. package/docs/integrations/posthog.md +177 -0
  214. package/docs/integrations/tiktok-pixel.md +113 -0
  215. package/docs/integrations/x-pixel.md +143 -0
  216. package/docs/internationalization.md +197 -0
  217. package/docs/network-blocker.md +178 -0
  218. package/docs/optimization.md +117 -0
  219. package/docs/policy-packs.md +240 -0
  220. package/docs/quickstart.md +136 -0
  221. package/docs/script-loader.md +300 -0
  222. package/docs/server-side.md +153 -0
  223. package/docs/styling/classnames.md +84 -0
  224. package/docs/styling/color-scheme.md +82 -0
  225. package/docs/styling/css-variables.md +92 -0
  226. package/docs/styling/overview.md +315 -0
  227. package/docs/styling/slots.md +93 -0
  228. package/docs/styling/tailwind.md +86 -0
  229. package/docs/styling/tokens.md +214 -0
  230. package/docs/troubleshooting.md +137 -0
  231. package/package.json +28 -24
  232. package/dist/components/consent-banner/atoms/overlay.d.ts.map +0 -1
  233. package/dist/components/consent-banner/atoms/root.d.ts.map +0 -1
  234. package/dist/components/consent-banner/components.d.ts.map +0 -1
  235. package/dist/components/consent-banner/consent-banner.d.ts.map +0 -1
  236. package/dist/components/consent-banner/error-boundary.d.ts.map +0 -1
  237. package/dist/components/consent-banner/index.d.ts.map +0 -1
  238. package/dist/components/consent-dialog/atoms/card.d.ts.map +0 -1
  239. package/dist/components/consent-dialog/atoms/overlay.d.ts.map +0 -1
  240. package/dist/components/consent-dialog/atoms/root.d.ts.map +0 -1
  241. package/dist/components/consent-dialog/consent-dialog.d.ts.map +0 -1
  242. package/dist/components/consent-dialog/index.d.ts.map +0 -1
  243. package/dist/components/consent-dialog-link/index.d.ts.map +0 -1
  244. package/dist/components/consent-dialog-trigger/atoms/button.d.ts.map +0 -1
  245. package/dist/components/consent-dialog-trigger/atoms/icon.d.ts.map +0 -1
  246. package/dist/components/consent-dialog-trigger/atoms/root.d.ts.map +0 -1
  247. package/dist/components/consent-dialog-trigger/atoms/text.d.ts.map +0 -1
  248. package/dist/components/consent-dialog-trigger/consent-dialog-trigger.d.ts.map +0 -1
  249. package/dist/components/consent-dialog-trigger/index.d.ts.map +0 -1
  250. package/dist/components/consent-dialog-trigger/types.d.ts.map +0 -1
  251. package/dist/components/consent-dialog-trigger/use-draggable.d.ts.map +0 -1
  252. package/dist/components/consent-preferences-link/consent-preferences-link.d.ts.map +0 -1
  253. package/dist/components/consent-preferences-link/index.d.ts.map +0 -1
  254. package/dist/components/consent-widget/atoms/accordion.d.ts.map +0 -1
  255. package/dist/components/consent-widget/atoms/button.d.ts.map +0 -1
  256. package/dist/components/consent-widget/atoms/footer.d.ts.map +0 -1
  257. package/dist/components/consent-widget/atoms/root.d.ts.map +0 -1
  258. package/dist/components/consent-widget/consent-widget.d.ts.map +0 -1
  259. package/dist/components/consent-widget/index.d.ts.map +0 -1
  260. package/dist/components/consent-widget/types.d.ts.map +0 -1
  261. package/dist/components/frame/atoms.d.ts.map +0 -1
  262. package/dist/components/frame/frame.d.ts.map +0 -1
  263. package/dist/components/frame/index.d.ts.map +0 -1
  264. package/dist/components/frame/types.d.ts.map +0 -1
  265. package/dist/components/iab-consent-banner/atoms/button-group.d.ts.map +0 -1
  266. package/dist/components/iab-consent-banner/atoms/card.d.ts.map +0 -1
  267. package/dist/components/iab-consent-banner/atoms/description.d.ts.map +0 -1
  268. package/dist/components/iab-consent-banner/atoms/footer.d.ts.map +0 -1
  269. package/dist/components/iab-consent-banner/atoms/header.d.ts.map +0 -1
  270. package/dist/components/iab-consent-banner/atoms/overlay.d.ts.map +0 -1
  271. package/dist/components/iab-consent-banner/atoms/root.d.ts.map +0 -1
  272. package/dist/components/iab-consent-banner/atoms/title.d.ts.map +0 -1
  273. package/dist/components/iab-consent-banner/iab-consent-banner.d.ts.map +0 -1
  274. package/dist/components/iab-consent-banner/index.d.ts.map +0 -1
  275. package/dist/components/iab-consent-dialog/atoms/card.d.ts.map +0 -1
  276. package/dist/components/iab-consent-dialog/atoms/content.d.ts.map +0 -1
  277. package/dist/components/iab-consent-dialog/atoms/footer.d.ts.map +0 -1
  278. package/dist/components/iab-consent-dialog/atoms/header.d.ts.map +0 -1
  279. package/dist/components/iab-consent-dialog/atoms/overlay.d.ts.map +0 -1
  280. package/dist/components/iab-consent-dialog/atoms/purpose-item.d.ts.map +0 -1
  281. package/dist/components/iab-consent-dialog/atoms/root.d.ts.map +0 -1
  282. package/dist/components/iab-consent-dialog/atoms/stack-item.d.ts.map +0 -1
  283. package/dist/components/iab-consent-dialog/atoms/tabs.d.ts.map +0 -1
  284. package/dist/components/iab-consent-dialog/atoms/vendor-list.d.ts.map +0 -1
  285. package/dist/components/iab-consent-dialog/hooks/use-gvl-data.d.ts.map +0 -1
  286. package/dist/components/iab-consent-dialog/iab-consent-dialog.d.ts.map +0 -1
  287. package/dist/components/iab-consent-dialog/index.d.ts.map +0 -1
  288. package/dist/components/iab-consent-dialog/types.d.ts.map +0 -1
  289. package/dist/components/iab-consent-dialog/use-iab-translations.d.ts.map +0 -1
  290. package/dist/components/shared/libs/polymorphic.d.ts.map +0 -1
  291. package/dist/components/shared/libs/recursive-clone-children.d.ts.map +0 -1
  292. package/dist/components/shared/primitives/box.d.ts.map +0 -1
  293. package/dist/components/shared/primitives/button.d.ts.map +0 -1
  294. package/dist/components/shared/primitives/button.types.d.ts.map +0 -1
  295. package/dist/components/shared/primitives/legal-links/index.d.ts.map +0 -1
  296. package/dist/components/shared/ui/accordion/accordion.d.ts.map +0 -1
  297. package/dist/components/shared/ui/accordion/accordion.types.d.ts.map +0 -1
  298. package/dist/components/shared/ui/accordion/index.d.ts.map +0 -1
  299. package/dist/components/shared/ui/animated-collapse/animated-collapse.d.ts.map +0 -1
  300. package/dist/components/shared/ui/animated-collapse/index.d.ts.map +0 -1
  301. package/dist/components/shared/ui/button/button.d.ts.map +0 -1
  302. package/dist/components/shared/ui/button/button.types.d.ts.map +0 -1
  303. package/dist/components/shared/ui/button/index.d.ts.map +0 -1
  304. package/dist/components/shared/ui/icon.d.ts.map +0 -1
  305. package/dist/components/shared/ui/logo.d.ts.map +0 -1
  306. package/dist/components/shared/ui/switch/index.d.ts.map +0 -1
  307. package/dist/components/shared/ui/switch/switch.d.ts.map +0 -1
  308. package/dist/components/shared/ui/switch/switch.types.d.ts.map +0 -1
  309. package/dist/context/consent-manager-context.d.ts.map +0 -1
  310. package/dist/context/consent-tracking-context.d.ts.map +0 -1
  311. package/dist/context/theme-context.d.ts.map +0 -1
  312. package/dist/headless.d.ts +0 -8
  313. package/dist/headless.d.ts.map +0 -1
  314. package/dist/hooks/index.d.ts.map +0 -1
  315. package/dist/hooks/use-color-scheme.d.ts.map +0 -1
  316. package/dist/hooks/use-component-config.d.ts.map +0 -1
  317. package/dist/hooks/use-consent-manager.d.ts.map +0 -1
  318. package/dist/hooks/use-focus-trap.d.ts.map +0 -1
  319. package/dist/hooks/use-reduced-motion.d.ts.map +0 -1
  320. package/dist/hooks/use-scroll-lock.d.ts.map +0 -1
  321. package/dist/hooks/use-ssr-status.d.ts.map +0 -1
  322. package/dist/hooks/use-styles.d.ts.map +0 -1
  323. package/dist/hooks/use-text-direction.d.ts.map +0 -1
  324. package/dist/hooks/use-theme.d.ts.map +0 -1
  325. package/dist/hooks/use-translations.d.ts.map +0 -1
  326. package/dist/index.d.ts.map +0 -1
  327. package/dist/providers/consent-manager-provider.d.ts.map +0 -1
  328. package/dist/server/fetch-ssr-data.d.ts.map +0 -1
  329. package/dist/server/headers.d.ts.map +0 -1
  330. package/dist/server/index.d.ts.map +0 -1
  331. package/dist/server/normalize-url.d.ts.map +0 -1
  332. package/dist/server/types.d.ts.map +0 -1
  333. package/dist/types/consent-manager.d.ts.map +0 -1
  334. package/dist/types/theme/index.d.ts.map +0 -1
  335. package/dist/types/theme/style-keys.d.ts +0 -2
  336. package/dist/types/theme/style-keys.d.ts.map +0 -1
  337. package/dist/types/theme/style-types.d.ts.map +0 -1
  338. package/dist/utils/cn.d.ts.map +0 -1
  339. package/dist/utils/merge-styles.d.ts.map +0 -1
  340. package/dist/utils/test-helpers.d.ts.map +0 -1
  341. package/dist/utils/theme-utils.d.ts.map +0 -1
  342. package/dist/version.d.ts +0 -2
  343. package/dist/version.d.ts.map +0 -1
@@ -0,0 +1,153 @@
1
+ ---
2
+ title: Server-Side Utilities
3
+ description: Fetch consent data on the server for SSR hydration — eliminate the loading flash and improve performance.
4
+ ---
5
+ The `@c15t/react/server` module provides utilities for fetching consent data on the server before rendering. This enables SSR hydration — consent state is available immediately on page load without a client-side fetch, eliminating the consent banner flash.
6
+
7
+ > ℹ️ **Info:**
8
+ > SSR hydration is part of the initialization flow. When SSR data is available, the client skips the API fetch entirely.
9
+
10
+ ```ts
11
+ import {
12
+ fetchSSRData,
13
+ extractRelevantHeaders,
14
+ normalizeBackendURL,
15
+ validateBackendURL,
16
+ } from '@c15t/react/server';
17
+ ```
18
+
19
+ > ℹ️ **Info:**
20
+ > If you're using Next.js, the @c15t/nextjs package wraps these utilities with automatic header resolution. See the Next.js docs for framework-specific usage.
21
+
22
+ ## fetchSSRData
23
+
24
+ The primary function for fetching consent data on the server. It calls the c15t backend's `/init` endpoint with the user's request headers and returns the initial consent data.
25
+
26
+ ```ts
27
+ import { fetchSSRData } from '@c15t/react/server';
28
+
29
+ // In your server handler / page loader
30
+ const ssrData = await fetchSSRData({
31
+ backendURL: 'https://your-instance.c15t.dev',
32
+ headers: request.headers,
33
+ debug: true,
34
+ });
35
+ ```
36
+
37
+ ### Options
38
+
39
+ |Property|Type|Description|Default|Required|
40
+ |:--|:--|:--|:--|:--:|
41
+ |headers|Headers|Request headers from the framework. These should be the incoming request headers that contain geo-location information (cf-ipcountry, x-vercel-ip-country, etc.)|-|✅ Required|
42
+
43
+ ### Return Value
44
+
45
+ Returns `SSRInitialData | undefined`. The data includes the init response (jurisdiction, translations, consent model) and GVL data when IAB is configured.
46
+
47
+ ### Passing SSR Data to the Provider
48
+
49
+ Pass the result as a Promise to the provider's `ssrData` option:
50
+
51
+ ```tsx
52
+ import { type ReactNode } from 'react';
53
+ import { ConsentManagerProvider, ConsentBanner, ConsentDialog } from '@c15t/react';
54
+ import { fetchSSRData } from '@c15t/react/server';
55
+
56
+ // Server component or page loader
57
+ async function getSSRData(headers: Headers) {
58
+ return fetchSSRData({
59
+ backendURL: 'https://your-instance.c15t.dev',
60
+ headers,
61
+ });
62
+ }
63
+
64
+ export default function ConsentManager({
65
+ children,
66
+ ssrData,
67
+ }: {
68
+ children: ReactNode;
69
+ ssrData: Promise<any>;
70
+ }) {
71
+ return (
72
+ <ConsentManagerProvider
73
+ options={{
74
+ mode: 'hosted',
75
+ backendURL: 'https://your-instance.c15t.dev',
76
+ ssrData,
77
+ }}
78
+ >
79
+ <ConsentBanner />
80
+ <ConsentDialog />
81
+ {children}
82
+ </ConsentManagerProvider>
83
+ );
84
+ }
85
+ ```
86
+
87
+ ## extractRelevantHeaders
88
+
89
+ Extracts geo-location and forwarding headers from the incoming request. Supports headers from Cloudflare, Vercel, AWS CloudFront, and generic proxies.
90
+
91
+ ```ts
92
+ import { extractRelevantHeaders } from '@c15t/react/server';
93
+
94
+ const relevant = extractRelevantHeaders(request.headers);
95
+ // Returns: { 'cf-ipcountry': 'DE', 'accept-language': 'de-DE', ... }
96
+ ```
97
+
98
+ ### Recognized Headers
99
+
100
+ |Header|Source|Contains|
101
+ |--|--|--|
102
+ |`cf-ipcountry`|Cloudflare|Country code|
103
+ |`x-vercel-ip-country`|Vercel|Country code|
104
+ |`x-amz-cf-ipcountry`|AWS CloudFront|Country code|
105
+ |`x-vercel-ip-country-region`|Vercel|Region code|
106
+ |`accept-language`|Browser|Language preference|
107
+ |`x-forwarded-host`|Proxy|Original host|
108
+ |`x-forwarded-for`|Proxy|Client IP|
109
+
110
+ ## normalizeBackendURL
111
+
112
+ Resolves a backend URL to an absolute URL. Absolute URLs are returned as-is. Relative URLs (starting with `/`) are resolved using the request's `Host` or `Referer` headers.
113
+
114
+ ```ts
115
+ import { normalizeBackendURL } from '@c15t/react/server';
116
+
117
+ // Absolute — returned as-is
118
+ normalizeBackendURL('https://api.example.com/', headers);
119
+ // → 'https://api.example.com'
120
+
121
+ // Relative — resolved from headers
122
+ normalizeBackendURL('/api/consent', headers);
123
+ // → 'https://example.com/api/consent'
124
+ ```
125
+
126
+ ## validateBackendURL
127
+
128
+ Validates and normalizes a URL without resolving relative paths. Useful for configuration validation.
129
+
130
+ ```ts
131
+ import { validateBackendURL } from '@c15t/react/server';
132
+
133
+ validateBackendURL('https://api.example.com/');
134
+ // → { isAbsolute: true, normalizedURL: 'https://api.example.com' }
135
+
136
+ validateBackendURL('/api/consent/');
137
+ // → { isAbsolute: false, normalizedURL: '/api/consent' }
138
+ ```
139
+
140
+ ## Debugging SSR
141
+
142
+ Use the [useSSRStatus](/docs/frameworks/react/hooks/use-ssr-status) hook on the client to verify SSR data was consumed:
143
+
144
+ ```tsx
145
+ import { useSSRStatus } from '@c15t/react';
146
+
147
+ function DebugSSR() {
148
+ const { ssrDataUsed, ssrSkippedReason } = useSSRStatus();
149
+
150
+ if (ssrDataUsed) return <span>SSR hydration successful</span>;
151
+ return <span>SSR skipped: {ssrSkippedReason ?? 'unknown'}</span>;
152
+ }
153
+ ```
@@ -0,0 +1,84 @@
1
+ ---
2
+ title: Class Names
3
+ description: Style consent components using className props and per-slot className targeting via the theme.
4
+ ---
5
+ ## Component className
6
+
7
+ All consent components accept a `className` prop:
8
+
9
+ ```tsx
10
+ <ConsentBanner className="my-banner" />
11
+ <ConsentDialog className="my-dialog" />
12
+ <ConsentWidget className="my-widget" />
13
+ ```
14
+
15
+ ## Per-Slot className
16
+
17
+ Target individual component parts via the theme's `slots` object. Each slot accepts a string (className) or an object with `className` and `style`:
18
+
19
+ ```tsx
20
+ const theme = {
21
+ slots: {
22
+ consentBannerTitle: 'text-xl font-semibold',
23
+ consentBannerDescription: 'text-sm text-gray-600',
24
+ consentBannerFooter: 'flex gap-3',
25
+ buttonPrimary: 'rounded-full px-6',
26
+ },
27
+ } satisfies Theme;
28
+ ```
29
+
30
+ ## Combining with CSS Modules
31
+
32
+ ```tsx
33
+ import styles from './consent.module.css';
34
+
35
+ const theme = {
36
+ slots: {
37
+ consentBannerCard: styles.bannerCard,
38
+ consentBannerTitle: styles.bannerTitle,
39
+ buttonPrimary: styles.primaryButton,
40
+ },
41
+ } satisfies Theme;
42
+ ```
43
+
44
+ ```css title="consent.module.css"
45
+ .bannerCard {
46
+ backdrop-filter: blur(12px);
47
+ background: rgba(255, 255, 255, 0.9);
48
+ }
49
+
50
+ .bannerTitle {
51
+ font-size: 1.25rem;
52
+ font-weight: 700;
53
+ }
54
+
55
+ .primaryButton {
56
+ border-radius: 9999px;
57
+ text-transform: uppercase;
58
+ letter-spacing: 0.05em;
59
+ }
60
+ ```
61
+
62
+ ## noStyle Mode
63
+
64
+ Use `noStyle` when you want to remove defaults and style from scratch:
65
+
66
+ ```tsx
67
+ {/* Remove all styles from a specific component */}
68
+ <ConsentBanner noStyle />
69
+
70
+ {/* Remove all styles globally */}
71
+ <ConsentManagerProvider options={{ noStyle: true, ... }}>
72
+ ```
73
+
74
+ You can also set `noStyle` per-slot:
75
+
76
+ ```tsx
77
+ const theme = {
78
+ slots: {
79
+ consentBannerCard: { noStyle: true, className: 'my-custom-card' },
80
+ },
81
+ } satisfies Theme;
82
+ ```
83
+
84
+ For full custom markup and behavior, continue to [Headless Mode](../headless).
@@ -0,0 +1,82 @@
1
+ ---
2
+ title: Color Scheme
3
+ description: Support light mode, dark mode, and system preference detection in consent components.
4
+ ---
5
+ c15t supports light and dark mode through the theme's `colors` and `dark` token groups. The active color scheme is determined by one of three methods:
6
+
7
+ 1. **Explicit setting** via the `colorScheme` option
8
+ 2. **CSS class detection** - c15t checks for `.dark` on the document element
9
+ 3. **System preference** - matches `prefers-color-scheme` media query
10
+
11
+ ## Configuration
12
+
13
+ Set the color scheme on the provider:
14
+
15
+ ```tsx
16
+ import { type ReactNode } from 'react';
17
+ import { ConsentManagerProvider } from '@c15t/react';
18
+
19
+ function ConsentManager({ children }: { children: ReactNode }) {
20
+ return (
21
+ <ConsentManagerProvider
22
+ options={{
23
+ mode: 'hosted',
24
+ backendURL: 'https://your-instance.c15t.dev',
25
+ colorScheme: 'system', // 'light' | 'dark' | 'system'
26
+ theme: {
27
+ colors: {
28
+ primary: '#6366f1',
29
+ surface: '#ffffff',
30
+ text: '#1f2937',
31
+ },
32
+ dark: {
33
+ primary: '#818cf8',
34
+ surface: '#1f2937',
35
+ text: '#f9fafb',
36
+ },
37
+ },
38
+ }}
39
+ >
40
+ {children}
41
+ </ConsentManagerProvider>
42
+ );
43
+ }
44
+ ```
45
+
46
+ ## useColorScheme Hook
47
+
48
+ For programmatic control over the color scheme:
49
+
50
+ ```tsx
51
+ import { useColorScheme } from '@c15t/react';
52
+
53
+ function ThemeToggle() {
54
+ // Pass the desired scheme - 'light', 'dark', 'system', or null (disable)
55
+ useColorScheme('system');
56
+ }
57
+ ```
58
+
59
+ |Value|Behavior|
60
+ |--|--|
61
+ |`'light'`|Force light mode|
62
+ |`'dark'`|Force dark mode|
63
+ |`'system'`|Follow `prefers-color-scheme` media query|
64
+ |`null`|Disable - c15t won't manage color scheme|
65
+
66
+ ## How Dark Mode Works
67
+
68
+ When dark mode is active, c15t applies the `dark` token values as CSS variable overrides. Only tokens specified in `dark` are overridden - unset tokens fall back to the `colors` values.
69
+
70
+ ```tsx
71
+ const theme = {
72
+ colors: {
73
+ surface: '#ffffff', // Light mode
74
+ text: '#1f2937', // Light mode
75
+ },
76
+ dark: {
77
+ surface: '#1f2937', // Dark mode override
78
+ text: '#f9fafb', // Dark mode override
79
+ // primary is NOT set - inherits from colors.primary
80
+ },
81
+ } satisfies Theme;
82
+ ```
@@ -0,0 +1,92 @@
1
+ ---
2
+ title: CSS Variables
3
+ description: Reference for all --c15t-* CSS custom properties generated by the theme system.
4
+ ---
5
+ Every theme token is converted to a `--c15t-*` CSS custom property at runtime. You can override these variables in your stylesheet without using the JavaScript theme API.
6
+
7
+ ## Variable Reference
8
+
9
+ ### ThemeCSSVariables
10
+
11
+ |Property|Type|Description|Default|Required|
12
+ |:--|:--|:--|:--|:--:|
13
+ |--c15t-primary|string \|undefined|\`colors.primary\` (default: \`hsl(228, 100%, 60%)\`)|-|Optional|
14
+ |--c15t-primary-hover|string \|undefined|\`colors.primaryHover\` (default: \`hsl(228, 100%, 55%)\`)|-|Optional|
15
+ |--c15t-surface|string \|undefined|\`colors.surface\` (default: \`hsl(0, 0%, 100%)\`)|-|Optional|
16
+ |--c15t-surface-hover|string \|undefined|\`colors.surfaceHover\` (default: \`hsl(0, 0%, 98%)\`)|-|Optional|
17
+ |--c15t-border|string \|undefined|\`colors.border\` (default: \`hsl(0, 0%, 90%)\`)|-|Optional|
18
+ |--c15t-border-hover|string \|undefined|\`colors.borderHover\` (default: \`hsl(0, 0%, 85%)\`)|-|Optional|
19
+ |--c15t-text|string \|undefined|\`colors.text\` (default: \`hsl(0, 0%, 10%)\`)|-|Optional|
20
+ |--c15t-text-muted|string \|undefined|\`colors.textMuted\` (default: \`hsl(0, 0%, 40%)\`)|-|Optional|
21
+ |--c15t-text-on-primary|string \|undefined|\`colors.textOnPrimary\` (default: \`hsl(0, 0%, 100%)\`)|-|Optional|
22
+ |--c15t-overlay|string \|undefined|\`colors.overlay\` (default: \`hsla(0, 0%, 0%, 0.5)\`)|-|Optional|
23
+ |--c15t-switch-track|string \|undefined|\`colors.switchTrack\` (default: \`hsl(0, 0%, 85%)\`)|-|Optional|
24
+ |--c15t-switch-track-active|string \|undefined|\`colors.switchTrackActive\` (default: \`hsl(228, 100%, 60%)\`)|-|Optional|
25
+ |--c15t-switch-thumb|string \|undefined|\`colors.switchThumb\` (default: \`hsl(0, 0%, 100%)\`)|-|Optional|
26
+ |--c15t-font-family|string \|undefined|\`typography.fontFamily\` (default: \`system-ui, -apple-system, sans-serif\`)|-|Optional|
27
+ |--c15t-font-size-sm|string \|undefined|\`typography.fontSize.sm\` (default: \`0.875rem\`)|-|Optional|
28
+ |--c15t-font-size-base|string \|undefined|\`typography.fontSize.base\` (default: \`1rem\`)|-|Optional|
29
+ |--c15t-font-size-lg|string \|undefined|\`typography.fontSize.lg\` (default: \`1.125rem\`)|-|Optional|
30
+ |--c15t-font-weight-normal|string \|undefined|\`typography.fontWeight.normal\` (default: \`400\`)|-|Optional|
31
+ |--c15t-font-weight-medium|string \|undefined|\`typography.fontWeight.medium\` (default: \`500\`)|-|Optional|
32
+ |--c15t-font-weight-semibold|string \|undefined|\`typography.fontWeight.semibold\` (default: \`600\`)|-|Optional|
33
+ |--c15t-line-height-tight|string \|undefined|\`typography.lineHeight.tight\` (default: \`1.25\`)|-|Optional|
34
+ |--c15t-line-height-normal|string \|undefined|\`typography.lineHeight.normal\` (default: \`1.5\`)|-|Optional|
35
+ |--c15t-line-height-relaxed|string \|undefined|\`typography.lineHeight.relaxed\` (default: \`1.75\`)|-|Optional|
36
+ |--c15t-space-xs|string \|undefined|\`spacing.xs\` (default: \`0.25rem\`)|-|Optional|
37
+ |--c15t-space-sm|string \|undefined|\`spacing.sm\` (default: \`0.5rem\`)|-|Optional|
38
+ |--c15t-space-md|string \|undefined|\`spacing.md\` (default: \`1rem\`)|-|Optional|
39
+ |--c15t-space-lg|string \|undefined|\`spacing.lg\` (default: \`1.5rem\`)|-|Optional|
40
+ |--c15t-space-xl|string \|undefined|\`spacing.xl\` (default: \`2rem\`)|-|Optional|
41
+ |--c15t-radius-sm|string \|undefined|\`radius.sm\` (default: \`0.25rem\`)|-|Optional|
42
+ |--c15t-radius-md|string \|undefined|\`radius.md\` (default: \`0.5rem\`)|-|Optional|
43
+ |--c15t-radius-lg|string \|undefined|\`radius.lg\` (default: \`0.75rem\`)|-|Optional|
44
+ |--c15t-radius-full|string \|undefined|\`radius.full\` (default: \`9999px\`)|-|Optional|
45
+ |--c15t-shadow-sm|string \|undefined|\`shadows.sm\` (default: \`0 1px 2px hsla(0, 0%, 0%, 0.05)\`)|-|Optional|
46
+ |--c15t-shadow-md|string \|undefined|\`shadows.md\` (default: \`0 4px 12px hsla(0, 0%, 0%, 0.08)\`)|-|Optional|
47
+ |--c15t-shadow-lg|string \|undefined|\`shadows.lg\` (default: \`0 8px 24px hsla(0, 0%, 0%, 0.12)\`)|-|Optional|
48
+ |--c15t-duration-fast|string \|undefined|\`motion.duration.fast\` (default: \`100ms\`)|-|Optional|
49
+ |--c15t-duration-normal|string \|undefined|\`motion.duration.normal\` (default: \`200ms\`)|-|Optional|
50
+ |--c15t-duration-slow|string \|undefined|\`motion.duration.slow\` (default: \`300ms\`)|-|Optional|
51
+ |--c15t-easing|string \|undefined|\`motion.easing\` (default: \`cubic-bezier(0.4, 0, 0.2, 1)\`)|-|Optional|
52
+ |--c15t-easing-out|string \|undefined|\`motion.easingOut\` (default: \`cubic-bezier(0.215, 0.61, 0.355, 1)\`)|-|Optional|
53
+ |--c15t-easing-in-out|string \|undefined|\`motion.easingInOut\` (default: \`cubic-bezier(0.645, 0.045, 0.355, 1)\`)|-|Optional|
54
+ |--c15t-easing-spring|string \|undefined|\`motion.easingSpring\` (default: \`cubic-bezier(0.34, 1.56, 0.64, 1)\`)|-|Optional|
55
+
56
+ ## Overriding Variables
57
+
58
+ Override in your stylesheet:
59
+
60
+ ```css
61
+ :root {
62
+ --c15t-primary: #8b5cf6;
63
+ --c15t-surface: #fafafa;
64
+ --c15t-radius-md: 1rem;
65
+ }
66
+
67
+ /* Dark mode overrides */
68
+ .dark,
69
+ .c15t-dark {
70
+ --c15t-primary: #a78bfa;
71
+ --c15t-surface: #18181b;
72
+ --c15t-text: #fafafa;
73
+ }
74
+ ```
75
+
76
+ ## Scoped Overrides
77
+
78
+ Target specific components by scoping variables:
79
+
80
+ ```tsx
81
+ <div className="checkout-consent">
82
+ <ConsentBanner />
83
+ </div>
84
+ ```
85
+
86
+ ```css
87
+ /* Only affect c15t components inside .checkout-consent */
88
+ .checkout-consent {
89
+ --c15t-surface: #f0f9ff;
90
+ --c15t-radius-lg: 1.5rem;
91
+ }
92
+ ```