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

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 (527) hide show
  1. package/dist/components/consent-banner/atoms/overlay.cjs +1 -1
  2. package/dist/components/consent-banner/atoms/root.cjs +1 -1
  3. package/dist/components/consent-banner/atoms/root.js +1 -1
  4. package/dist/components/consent-banner/components.cjs +1 -1
  5. package/dist/components/consent-banner/components.js +1 -1
  6. package/dist/components/consent-banner/consent-banner.cjs +1 -1
  7. package/dist/components/consent-banner/consent-banner.js +1 -1
  8. package/dist/components/consent-banner/error-boundary.cjs +1 -1
  9. package/dist/components/consent-banner/index.cjs +1 -1
  10. package/dist/components/consent-banner/index.js +1 -1
  11. package/dist/components/consent-dialog/atoms/card.cjs +1 -1
  12. package/dist/components/consent-dialog/atoms/card.js +1 -1
  13. package/dist/components/consent-dialog/atoms/overlay.cjs +1 -1
  14. package/dist/components/consent-dialog/atoms/overlay.js +1 -1
  15. package/dist/components/consent-dialog/atoms/root.cjs +1 -1
  16. package/dist/components/consent-dialog/atoms/root.js +1 -1
  17. package/dist/components/consent-dialog/consent-dialog.cjs +1 -1
  18. package/dist/components/consent-dialog/consent-dialog.js +1 -1
  19. package/dist/components/consent-dialog/index.cjs +1 -1
  20. package/dist/components/consent-dialog/index.js +1 -1
  21. package/dist/components/consent-dialog-link/index.cjs +1 -1
  22. package/dist/components/consent-dialog-link/index.js +1 -1
  23. package/dist/components/consent-dialog-trigger/atoms/button.cjs +1 -1
  24. package/dist/components/consent-dialog-trigger/atoms/icon.cjs +1 -1
  25. package/dist/components/consent-dialog-trigger/atoms/icon.js +1 -1
  26. package/dist/components/consent-dialog-trigger/atoms/root.cjs +1 -1
  27. package/dist/components/consent-dialog-trigger/atoms/root.js +1 -1
  28. package/dist/components/consent-dialog-trigger/atoms/text.cjs +1 -1
  29. package/dist/components/consent-dialog-trigger/atoms/text.js +1 -1
  30. package/dist/components/consent-dialog-trigger/consent-dialog-trigger.cjs +1 -1
  31. package/dist/components/consent-dialog-trigger/consent-dialog-trigger.js +1 -1
  32. package/dist/components/consent-dialog-trigger/index.cjs +1 -1
  33. package/dist/components/consent-dialog-trigger/index.js +1 -1
  34. package/dist/components/consent-dialog-trigger/types.cjs +1 -1
  35. package/dist/components/consent-dialog-trigger/use-draggable.cjs +1 -1
  36. package/dist/components/consent-dialog-trigger/use-draggable.js +1 -1
  37. package/dist/components/consent-preferences-link/consent-preferences-link.cjs +1 -1
  38. package/dist/components/consent-preferences-link/index.cjs +1 -1
  39. package/dist/components/consent-preferences-link/index.js +1 -1
  40. package/dist/components/consent-widget/atoms/accordion.cjs +1 -1
  41. package/dist/components/consent-widget/atoms/accordion.js +1 -1
  42. package/dist/components/consent-widget/atoms/button.cjs +1 -1
  43. package/dist/components/consent-widget/atoms/button.js +1 -1
  44. package/dist/components/consent-widget/atoms/footer.cjs +1 -1
  45. package/dist/components/consent-widget/atoms/root.cjs +1 -1
  46. package/dist/components/consent-widget/consent-widget.cjs +1 -1
  47. package/dist/components/consent-widget/consent-widget.js +1 -1
  48. package/dist/components/consent-widget/index.cjs +1 -1
  49. package/dist/components/consent-widget/index.js +1 -1
  50. package/dist/components/consent-widget/types.cjs +1 -1
  51. package/dist/components/frame/atoms.cjs +1 -1
  52. package/dist/components/frame/frame.cjs +1 -1
  53. package/dist/components/frame/frame.js +1 -1
  54. package/dist/components/frame/index.cjs +1 -1
  55. package/dist/components/frame/index.js +1 -1
  56. package/dist/components/frame/types.cjs +1 -1
  57. package/dist/components/iab-consent-banner/atoms/button-group.cjs +1 -1
  58. package/dist/components/iab-consent-banner/atoms/card.cjs +1 -1
  59. package/dist/components/iab-consent-banner/atoms/description.cjs +1 -1
  60. package/dist/components/iab-consent-banner/atoms/footer.cjs +1 -1
  61. package/dist/components/iab-consent-banner/atoms/header.cjs +1 -1
  62. package/dist/components/iab-consent-banner/atoms/overlay.cjs +1 -1
  63. package/dist/components/iab-consent-banner/atoms/root.cjs +1 -1
  64. package/dist/components/iab-consent-banner/atoms/root.js +1 -1
  65. package/dist/components/iab-consent-banner/atoms/title.cjs +1 -1
  66. package/dist/components/iab-consent-banner/iab-consent-banner.cjs +1 -1
  67. package/dist/components/iab-consent-banner/iab-consent-banner.js +1 -1
  68. package/dist/components/iab-consent-banner/index.cjs +1 -1
  69. package/dist/components/iab-consent-banner/index.js +1 -1
  70. package/dist/components/iab-consent-dialog/atoms/card.cjs +1 -1
  71. package/dist/components/iab-consent-dialog/atoms/content.cjs +1 -1
  72. package/dist/components/iab-consent-dialog/atoms/footer.cjs +1 -1
  73. package/dist/components/iab-consent-dialog/atoms/footer.js +1 -1
  74. package/dist/components/iab-consent-dialog/atoms/header.cjs +1 -1
  75. package/dist/components/iab-consent-dialog/atoms/header.js +1 -1
  76. package/dist/components/iab-consent-dialog/atoms/overlay.cjs +1 -1
  77. package/dist/components/iab-consent-dialog/atoms/purpose-item.cjs +1 -1
  78. package/dist/components/iab-consent-dialog/atoms/purpose-item.js +1 -1
  79. package/dist/components/iab-consent-dialog/atoms/root.cjs +1 -1
  80. package/dist/components/iab-consent-dialog/atoms/root.js +1 -1
  81. package/dist/components/iab-consent-dialog/atoms/stack-item.cjs +1 -1
  82. package/dist/components/iab-consent-dialog/atoms/stack-item.js +1 -1
  83. package/dist/components/iab-consent-dialog/atoms/tabs.cjs +1 -1
  84. package/dist/components/iab-consent-dialog/atoms/tabs.js +1 -1
  85. package/dist/components/iab-consent-dialog/atoms/vendor-list.cjs +1 -1
  86. package/dist/components/iab-consent-dialog/atoms/vendor-list.js +1 -1
  87. package/dist/components/iab-consent-dialog/hooks/use-gvl-data.cjs +1 -1
  88. package/dist/components/iab-consent-dialog/iab-consent-dialog.cjs +1 -1
  89. package/dist/components/iab-consent-dialog/iab-consent-dialog.js +1 -1
  90. package/dist/components/iab-consent-dialog/index.cjs +1 -1
  91. package/dist/components/iab-consent-dialog/index.js +1 -1
  92. package/dist/components/iab-consent-dialog/types.cjs +1 -1
  93. package/dist/components/iab-consent-dialog/use-iab-translations.cjs +1 -1
  94. package/dist/components/shared/libs/policy-actions.cjs +1 -0
  95. package/dist/components/shared/libs/policy-actions.js +1 -0
  96. package/dist/components/shared/libs/polymorphic.cjs +1 -1
  97. package/dist/components/shared/libs/recursive-clone-children.cjs +1 -1
  98. package/dist/components/shared/libs/slot.cjs +1 -0
  99. package/dist/components/shared/libs/slot.js +1 -0
  100. package/dist/components/shared/libs/use-controllable-state.cjs +1 -0
  101. package/dist/components/shared/libs/use-controllable-state.js +1 -0
  102. package/dist/components/shared/primitives/box.cjs +1 -1
  103. package/dist/components/shared/primitives/box.js +1 -1
  104. package/dist/components/shared/primitives/button.cjs +1 -1
  105. package/dist/components/shared/primitives/button.js +1 -1
  106. package/dist/components/shared/primitives/button.types.cjs +1 -1
  107. package/dist/components/shared/primitives/legal-links/index.cjs +1 -1
  108. package/dist/components/shared/primitives/legal-links/index.js +1 -1
  109. package/dist/components/shared/ui/accordion/accordion.cjs +1 -1
  110. package/dist/components/shared/ui/accordion/accordion.js +1 -1
  111. package/dist/components/shared/ui/accordion/accordion.types.cjs +1 -1
  112. package/dist/components/shared/ui/accordion/index.cjs +1 -1
  113. package/dist/components/shared/ui/animated-collapse/animated-collapse.cjs +1 -1
  114. package/dist/components/shared/ui/animated-collapse/index.cjs +1 -1
  115. package/dist/components/shared/ui/animated-collapse/index.js +1 -1
  116. package/dist/components/shared/ui/button/button.cjs +1 -1
  117. package/dist/components/shared/ui/button/button.js +1 -1
  118. package/dist/components/shared/ui/button/button.types.cjs +1 -1
  119. package/dist/components/shared/ui/button/index.cjs +1 -1
  120. package/dist/components/shared/ui/collapsible/collapsible.cjs +1 -0
  121. package/dist/components/shared/ui/collapsible/collapsible.js +1 -0
  122. package/dist/components/shared/ui/collapsible/index.cjs +1 -0
  123. package/dist/components/shared/ui/collapsible/index.js +1 -0
  124. package/dist/components/shared/ui/dialog/dialog.cjs +1 -0
  125. package/dist/components/shared/ui/dialog/dialog.js +1 -0
  126. package/dist/components/shared/ui/dialog/index.cjs +1 -0
  127. package/dist/components/shared/ui/dialog/index.js +1 -0
  128. package/dist/components/shared/ui/icon.cjs +1 -1
  129. package/dist/components/shared/ui/logo.cjs +1 -1
  130. package/dist/components/shared/ui/preference-item/index.cjs +1 -0
  131. package/dist/components/shared/ui/preference-item/index.js +1 -0
  132. package/dist/components/shared/ui/preference-item/preference-item.cjs +1 -0
  133. package/dist/components/shared/ui/preference-item/preference-item.js +1 -0
  134. package/dist/components/shared/ui/switch/index.cjs +1 -1
  135. package/dist/components/shared/ui/switch/switch.cjs +1 -1
  136. package/dist/components/shared/ui/switch/switch.js +1 -1
  137. package/dist/components/shared/ui/switch/switch.types.cjs +1 -1
  138. package/dist/components/shared/ui/tabs/index.cjs +1 -0
  139. package/dist/components/shared/ui/tabs/index.js +1 -0
  140. package/dist/components/shared/ui/tabs/tabs.cjs +1 -0
  141. package/dist/components/shared/ui/tabs/tabs.js +1 -0
  142. package/dist/context/consent-manager-context.cjs +1 -1
  143. package/dist/context/consent-tracking-context.cjs +1 -1
  144. package/dist/context/theme-context.cjs +1 -1
  145. package/dist/headless.cjs +1 -1
  146. package/dist/headless.js +1 -1
  147. package/dist/hooks/index.cjs +1 -1
  148. package/dist/hooks/index.js +1 -1
  149. package/dist/hooks/use-color-scheme.cjs +1 -1
  150. package/dist/hooks/use-component-config.cjs +1 -1
  151. package/dist/hooks/use-consent-dialog-trigger.cjs +1 -0
  152. package/dist/hooks/use-consent-dialog-trigger.js +1 -0
  153. package/dist/hooks/use-consent-manager.cjs +1 -1
  154. package/dist/hooks/use-consent-manager.js +1 -1
  155. package/dist/hooks/use-focus-trap.cjs +1 -1
  156. package/dist/hooks/use-focus-trap.js +1 -1
  157. package/dist/hooks/use-headless-consent-ui.cjs +1 -0
  158. package/dist/hooks/use-headless-consent-ui.js +1 -0
  159. package/dist/hooks/use-headless-iab-consent-ui.cjs +1 -0
  160. package/dist/hooks/use-headless-iab-consent-ui.js +1 -0
  161. package/dist/hooks/use-reduced-motion.cjs +1 -1
  162. package/dist/hooks/use-reduced-motion.js +1 -1
  163. package/dist/hooks/use-scroll-lock.cjs +1 -1
  164. package/dist/hooks/use-scroll-lock.js +1 -1
  165. package/dist/hooks/use-ssr-status.cjs +1 -1
  166. package/dist/hooks/use-styles.cjs +1 -1
  167. package/dist/hooks/use-text-direction.cjs +1 -1
  168. package/dist/hooks/use-theme.cjs +1 -1
  169. package/dist/hooks/use-theme.js +1 -1
  170. package/dist/hooks/use-translations.cjs +1 -1
  171. package/dist/iab/styles.css +1 -0
  172. package/dist/iab.cjs +1 -0
  173. package/dist/iab.js +1 -0
  174. package/dist/index.cjs +1 -1
  175. package/dist/index.js +1 -1
  176. package/dist/primitives/accordion.cjs +1 -0
  177. package/dist/primitives/accordion.js +1 -0
  178. package/dist/primitives/button.cjs +1 -0
  179. package/dist/primitives/button.js +1 -0
  180. package/dist/primitives/collapsible.cjs +1 -0
  181. package/dist/primitives/collapsible.js +1 -0
  182. package/dist/primitives/dialog.cjs +1 -0
  183. package/dist/primitives/dialog.js +1 -0
  184. package/dist/primitives/preference-item.cjs +1 -0
  185. package/dist/primitives/preference-item.js +1 -0
  186. package/dist/primitives/switch.cjs +1 -0
  187. package/dist/primitives/switch.js +1 -0
  188. package/dist/primitives/tabs.cjs +1 -0
  189. package/dist/primitives/tabs.js +1 -0
  190. package/dist/primitives.cjs +1 -0
  191. package/dist/primitives.js +1 -0
  192. package/dist/providers/consent-manager-provider.cjs +1 -1
  193. package/dist/providers/consent-manager-provider.js +1 -1
  194. package/dist/server/fetch-ssr-data.cjs +1 -1
  195. package/dist/server/fetch-ssr-data.js +1 -1
  196. package/dist/server/headers.cjs +1 -1
  197. package/dist/server/headers.js +1 -1
  198. package/dist/server/index.cjs +1 -1
  199. package/dist/server/index.js +1 -1
  200. package/dist/server/init-cache-key.cjs +1 -0
  201. package/dist/server/init-cache-key.js +1 -0
  202. package/dist/server/normalize-url.cjs +1 -1
  203. package/dist/server/types.cjs +1 -1
  204. package/dist/styles.css +1 -0
  205. package/dist/types/consent-manager.cjs +1 -1
  206. package/dist/types/theme/index.cjs +1 -1
  207. package/dist/types/theme/style-keys.cjs +1 -1
  208. package/dist/types/theme/style-types.cjs +1 -1
  209. package/dist/utils/cn.cjs +1 -1
  210. package/dist/utils/merge-styles.cjs +1 -1
  211. package/dist/utils/test-helpers.cjs +1 -1
  212. package/dist/utils/test-helpers.js +1 -1
  213. package/dist/utils/theme-utils.cjs +1 -1
  214. package/dist/version.cjs +1 -1
  215. package/dist/version.js +1 -1
  216. package/{dist → dist-types}/components/consent-banner/atoms/overlay.d.ts +1 -2
  217. package/{dist → dist-types}/components/consent-banner/atoms/root.d.ts +2 -3
  218. package/{dist → dist-types}/components/consent-banner/components.d.ts +1 -2
  219. package/{dist → dist-types}/components/consent-banner/consent-banner.d.ts +8 -7
  220. package/{dist → dist-types}/components/consent-banner/error-boundary.d.ts +0 -1
  221. package/{dist → dist-types}/components/consent-banner/index.d.ts +1 -2
  222. package/{dist → dist-types}/components/consent-dialog/atoms/card.d.ts +1 -2
  223. package/{dist → dist-types}/components/consent-dialog/atoms/overlay.d.ts +1 -2
  224. package/{dist → dist-types}/components/consent-dialog/atoms/root.d.ts +2 -3
  225. package/{dist → dist-types}/components/consent-dialog/consent-dialog.d.ts +1 -2
  226. package/{dist → dist-types}/components/consent-dialog/index.d.ts +1 -2
  227. package/{dist → dist-types}/components/consent-dialog-link/index.d.ts +0 -1
  228. package/{dist → dist-types}/components/consent-dialog-trigger/atoms/button.d.ts +0 -1
  229. package/{dist → dist-types}/components/consent-dialog-trigger/atoms/icon.d.ts +0 -1
  230. package/{dist → dist-types}/components/consent-dialog-trigger/atoms/root.d.ts +0 -1
  231. package/{dist → dist-types}/components/consent-dialog-trigger/atoms/text.d.ts +0 -1
  232. package/{dist → dist-types}/components/consent-dialog-trigger/consent-dialog-trigger.d.ts +2 -3
  233. package/{dist → dist-types}/components/consent-dialog-trigger/index.d.ts +0 -1
  234. package/{dist → dist-types}/components/consent-dialog-trigger/types.d.ts +1 -2
  235. package/{dist → dist-types}/components/consent-dialog-trigger/use-draggable.d.ts +1 -2
  236. package/{dist → dist-types}/components/consent-preferences-link/consent-preferences-link.d.ts +1 -1
  237. package/{dist → dist-types}/components/consent-preferences-link/index.d.ts +0 -1
  238. package/dist-types/components/consent-widget/atoms/accordion.d.ts +27 -0
  239. package/{dist → dist-types}/components/consent-widget/atoms/button.d.ts +1 -2
  240. package/{dist → dist-types}/components/consent-widget/atoms/footer.d.ts +0 -1
  241. package/{dist → dist-types}/components/consent-widget/atoms/root.d.ts +1 -2
  242. package/{dist → dist-types}/components/consent-widget/consent-widget.d.ts +0 -1
  243. package/{dist → dist-types}/components/consent-widget/index.d.ts +1 -2
  244. package/{dist → dist-types}/components/consent-widget/types.d.ts +0 -1
  245. package/{dist → dist-types}/components/frame/atoms.d.ts +2 -3
  246. package/{dist → dist-types}/components/frame/frame.d.ts +0 -1
  247. package/{dist → dist-types}/components/frame/index.d.ts +1 -2
  248. package/{dist → dist-types}/components/frame/types.d.ts +1 -2
  249. package/{dist → dist-types}/components/iab-consent-banner/atoms/button-group.d.ts +0 -1
  250. package/{dist → dist-types}/components/iab-consent-banner/atoms/card.d.ts +0 -1
  251. package/{dist → dist-types}/components/iab-consent-banner/atoms/description.d.ts +0 -1
  252. package/{dist → dist-types}/components/iab-consent-banner/atoms/footer.d.ts +0 -1
  253. package/{dist → dist-types}/components/iab-consent-banner/atoms/header.d.ts +0 -1
  254. package/{dist → dist-types}/components/iab-consent-banner/atoms/overlay.d.ts +0 -1
  255. package/{dist → dist-types}/components/iab-consent-banner/atoms/root.d.ts +1 -2
  256. package/{dist → dist-types}/components/iab-consent-banner/atoms/title.d.ts +0 -1
  257. package/{dist → dist-types}/components/iab-consent-banner/iab-consent-banner.d.ts +1 -2
  258. package/{dist → dist-types}/components/iab-consent-banner/index.d.ts +1 -2
  259. package/{dist → dist-types}/components/iab-consent-dialog/atoms/card.d.ts +0 -1
  260. package/{dist → dist-types}/components/iab-consent-dialog/atoms/content.d.ts +0 -1
  261. package/{dist → dist-types}/components/iab-consent-dialog/atoms/footer.d.ts +0 -1
  262. package/{dist → dist-types}/components/iab-consent-dialog/atoms/header.d.ts +0 -1
  263. package/{dist → dist-types}/components/iab-consent-dialog/atoms/overlay.d.ts +0 -1
  264. package/{dist → dist-types}/components/iab-consent-dialog/atoms/purpose-item.d.ts +0 -1
  265. package/{dist → dist-types}/components/iab-consent-dialog/atoms/root.d.ts +1 -2
  266. package/{dist → dist-types}/components/iab-consent-dialog/atoms/stack-item.d.ts +0 -1
  267. package/dist-types/components/iab-consent-dialog/atoms/tabs.d.ts +12 -0
  268. package/{dist → dist-types}/components/iab-consent-dialog/atoms/vendor-list.d.ts +1 -2
  269. package/{dist → dist-types}/components/iab-consent-dialog/hooks/use-gvl-data.d.ts +0 -1
  270. package/{dist → dist-types}/components/iab-consent-dialog/iab-consent-dialog.d.ts +1 -2
  271. package/{dist → dist-types}/components/iab-consent-dialog/index.d.ts +1 -2
  272. package/{dist → dist-types}/components/iab-consent-dialog/types.d.ts +0 -1
  273. package/{dist → dist-types}/components/iab-consent-dialog/use-iab-translations.d.ts +0 -1
  274. package/dist-types/components/shared/libs/policy-actions.d.ts +26 -0
  275. package/{dist → dist-types}/components/shared/libs/polymorphic.d.ts +0 -1
  276. package/{dist → dist-types}/components/shared/libs/recursive-clone-children.d.ts +0 -1
  277. package/dist-types/components/shared/libs/slot.d.ts +6 -0
  278. package/dist-types/components/shared/libs/use-controllable-state.d.ts +7 -0
  279. package/{dist → dist-types}/components/shared/primitives/box.d.ts +0 -1
  280. package/{dist → dist-types}/components/shared/primitives/button.d.ts +5 -2
  281. package/{dist → dist-types}/components/shared/primitives/button.types.d.ts +17 -1
  282. package/{dist → dist-types}/components/shared/primitives/legal-links/index.d.ts +1 -2
  283. package/dist-types/components/shared/ui/accordion/accordion.d.ts +74 -0
  284. package/{dist → dist-types}/components/shared/ui/accordion/accordion.types.d.ts +1 -2
  285. package/{dist → dist-types}/components/shared/ui/accordion/index.d.ts +0 -1
  286. package/{dist → dist-types}/components/shared/ui/animated-collapse/animated-collapse.d.ts +0 -1
  287. package/{dist → dist-types}/components/shared/ui/animated-collapse/index.d.ts +0 -1
  288. package/{dist → dist-types}/components/shared/ui/button/button.d.ts +2 -3
  289. package/{dist → dist-types}/components/shared/ui/button/button.types.d.ts +0 -1
  290. package/{dist → dist-types}/components/shared/ui/button/index.d.ts +0 -1
  291. package/dist-types/components/shared/ui/collapsible/collapsible.d.ts +20 -0
  292. package/dist-types/components/shared/ui/collapsible/index.d.ts +1 -0
  293. package/dist-types/components/shared/ui/dialog/dialog.d.ts +29 -0
  294. package/dist-types/components/shared/ui/dialog/index.d.ts +1 -0
  295. package/{dist → dist-types}/components/shared/ui/icon.d.ts +0 -1
  296. package/{dist → dist-types}/components/shared/ui/logo.d.ts +0 -1
  297. package/dist-types/components/shared/ui/preference-item/index.d.ts +1 -0
  298. package/dist-types/components/shared/ui/preference-item/preference-item.d.ts +33 -0
  299. package/{dist → dist-types}/components/shared/ui/switch/index.d.ts +0 -1
  300. package/dist-types/components/shared/ui/switch/switch.d.ts +20 -0
  301. package/{dist → dist-types}/components/shared/ui/switch/switch.types.d.ts +1 -2
  302. package/dist-types/components/shared/ui/tabs/index.d.ts +1 -0
  303. package/dist-types/components/shared/ui/tabs/tabs.d.ts +28 -0
  304. package/{dist → dist-types}/context/consent-manager-context.d.ts +1 -2
  305. package/{dist → dist-types}/context/consent-tracking-context.d.ts +0 -1
  306. package/{dist → dist-types}/context/theme-context.d.ts +0 -1
  307. package/dist-types/headless.d.ts +9 -0
  308. package/{dist → dist-types}/hooks/index.d.ts +3 -1
  309. package/{dist → dist-types}/hooks/use-color-scheme.d.ts +0 -1
  310. package/{dist → dist-types}/hooks/use-component-config.d.ts +1 -2
  311. package/dist-types/hooks/use-consent-dialog-trigger.d.ts +10 -0
  312. package/{dist → dist-types}/hooks/use-consent-manager.d.ts +1 -2
  313. package/{dist → dist-types}/hooks/use-focus-trap.d.ts +0 -1
  314. package/dist-types/hooks/use-headless-consent-ui.d.ts +46 -0
  315. package/dist-types/hooks/use-headless-iab-consent-ui.d.ts +41 -0
  316. package/{dist → dist-types}/hooks/use-reduced-motion.d.ts +0 -1
  317. package/{dist → dist-types}/hooks/use-scroll-lock.d.ts +0 -1
  318. package/{dist → dist-types}/hooks/use-ssr-status.d.ts +0 -1
  319. package/{dist → dist-types}/hooks/use-styles.d.ts +0 -1
  320. package/{dist → dist-types}/hooks/use-text-direction.d.ts +0 -1
  321. package/{dist → dist-types}/hooks/use-theme.d.ts +0 -1
  322. package/{dist → dist-types}/hooks/use-translations.d.ts +1 -2
  323. package/dist-types/iab.d.ts +24 -0
  324. package/{dist → dist-types}/index.d.ts +4 -5
  325. package/dist-types/primitives/accordion.d.ts +1 -0
  326. package/dist-types/primitives/button.d.ts +1 -0
  327. package/dist-types/primitives/collapsible.d.ts +1 -0
  328. package/dist-types/primitives/dialog.d.ts +1 -0
  329. package/dist-types/primitives/preference-item.d.ts +1 -0
  330. package/dist-types/primitives/switch.d.ts +1 -0
  331. package/dist-types/primitives/tabs.d.ts +1 -0
  332. package/dist-types/primitives.d.ts +7 -0
  333. package/{dist → dist-types}/providers/consent-manager-provider.d.ts +0 -1
  334. package/{dist → dist-types}/server/fetch-ssr-data.d.ts +1 -2
  335. package/{dist → dist-types}/server/headers.d.ts +2 -2
  336. package/{dist → dist-types}/server/index.d.ts +1 -1
  337. package/dist-types/server/init-cache-key.d.ts +21 -0
  338. package/{dist → dist-types}/server/normalize-url.d.ts +0 -1
  339. package/{dist → dist-types}/server/types.d.ts +1 -2
  340. package/{dist → dist-types}/types/consent-manager.d.ts +8 -2
  341. package/{dist → dist-types}/types/theme/index.d.ts +0 -1
  342. package/dist-types/types/theme/style-keys.d.ts +1 -0
  343. package/{dist → dist-types}/types/theme/style-types.d.ts +4 -3
  344. package/{dist → dist-types}/utils/cn.d.ts +1 -2
  345. package/{dist → dist-types}/utils/merge-styles.d.ts +0 -1
  346. package/{dist → dist-types}/utils/test-helpers.d.ts +0 -1
  347. package/{dist → dist-types}/utils/theme-utils.d.ts +1 -2
  348. package/dist-types/version.d.ts +1 -0
  349. package/docs/README.md +76 -0
  350. package/docs/building-headless-components.md +245 -0
  351. package/docs/callbacks.md +117 -0
  352. package/docs/components/consent-banner.md +174 -0
  353. package/docs/components/consent-dialog-link.md +59 -0
  354. package/docs/components/consent-dialog-trigger.md +103 -0
  355. package/docs/components/consent-dialog.md +137 -0
  356. package/docs/components/consent-manager-provider.md +423 -0
  357. package/docs/components/consent-widget.md +78 -0
  358. package/docs/components/dev-tools.md +63 -0
  359. package/docs/components/frame.md +73 -0
  360. package/docs/concepts/client-modes.md +163 -0
  361. package/docs/concepts/consent-categories.md +97 -0
  362. package/docs/concepts/consent-models.md +112 -0
  363. package/docs/concepts/cookie-management.md +122 -0
  364. package/docs/concepts/glossary.md +23 -0
  365. package/docs/concepts/initialization-flow.md +141 -0
  366. package/docs/concepts/policy-packs.md +227 -0
  367. package/docs/headless.md +184 -0
  368. package/docs/hooks/use-color-scheme.md +40 -0
  369. package/docs/hooks/use-consent-manager/checking-consent.md +94 -0
  370. package/docs/hooks/use-consent-manager/location-info.md +95 -0
  371. package/docs/hooks/use-consent-manager/overview.md +390 -0
  372. package/docs/hooks/use-consent-manager/setting-consent.md +92 -0
  373. package/docs/hooks/use-draggable.md +57 -0
  374. package/docs/hooks/use-focus-trap.md +41 -0
  375. package/docs/hooks/use-reduced-motion.md +35 -0
  376. package/docs/hooks/use-ssr-status.md +31 -0
  377. package/docs/hooks/use-text-direction.md +49 -0
  378. package/docs/hooks/use-translations.md +117 -0
  379. package/docs/iab/consent-banner.md +95 -0
  380. package/docs/iab/consent-dialog.md +135 -0
  381. package/docs/iab/overview.md +119 -0
  382. package/docs/iab/use-gvl-data.md +208 -0
  383. package/docs/iframe-blocking.md +107 -0
  384. package/docs/integrations/databuddy.md +186 -0
  385. package/docs/integrations/google-tag-manager.md +153 -0
  386. package/docs/integrations/google-tag.md +149 -0
  387. package/docs/integrations/linkedin-insights.md +109 -0
  388. package/docs/integrations/meta-pixel.md +342 -0
  389. package/docs/integrations/microsoft-uet.md +112 -0
  390. package/docs/integrations/overview.md +89 -0
  391. package/docs/integrations/posthog.md +177 -0
  392. package/docs/integrations/tiktok-pixel.md +113 -0
  393. package/docs/integrations/x-pixel.md +143 -0
  394. package/docs/internationalization.md +197 -0
  395. package/docs/network-blocker.md +178 -0
  396. package/docs/optimization.md +117 -0
  397. package/docs/policy-packs.md +240 -0
  398. package/docs/quickstart.md +146 -0
  399. package/docs/script-loader.md +300 -0
  400. package/docs/server-side.md +153 -0
  401. package/docs/styling/classnames.md +84 -0
  402. package/docs/styling/color-scheme.md +82 -0
  403. package/docs/styling/css-variables.md +92 -0
  404. package/docs/styling/overview.md +315 -0
  405. package/docs/styling/slots.md +93 -0
  406. package/docs/styling/tailwind.md +115 -0
  407. package/docs/styling/tokens.md +214 -0
  408. package/docs/troubleshooting.md +137 -0
  409. package/package.json +48 -36
  410. package/client/components/iab-consent-banner.js +0 -4
  411. package/client/components/iab-consent-dialog.js +0 -4
  412. package/dist/components/consent-banner/atoms/overlay.d.ts.map +0 -1
  413. package/dist/components/consent-banner/atoms/root.d.ts.map +0 -1
  414. package/dist/components/consent-banner/components.d.ts.map +0 -1
  415. package/dist/components/consent-banner/consent-banner.d.ts.map +0 -1
  416. package/dist/components/consent-banner/error-boundary.d.ts.map +0 -1
  417. package/dist/components/consent-banner/index.d.ts.map +0 -1
  418. package/dist/components/consent-dialog/atoms/card.d.ts.map +0 -1
  419. package/dist/components/consent-dialog/atoms/overlay.d.ts.map +0 -1
  420. package/dist/components/consent-dialog/atoms/root.d.ts.map +0 -1
  421. package/dist/components/consent-dialog/consent-dialog.d.ts.map +0 -1
  422. package/dist/components/consent-dialog/index.d.ts.map +0 -1
  423. package/dist/components/consent-dialog-link/index.d.ts.map +0 -1
  424. package/dist/components/consent-dialog-trigger/atoms/button.d.ts.map +0 -1
  425. package/dist/components/consent-dialog-trigger/atoms/icon.d.ts.map +0 -1
  426. package/dist/components/consent-dialog-trigger/atoms/root.d.ts.map +0 -1
  427. package/dist/components/consent-dialog-trigger/atoms/text.d.ts.map +0 -1
  428. package/dist/components/consent-dialog-trigger/consent-dialog-trigger.d.ts.map +0 -1
  429. package/dist/components/consent-dialog-trigger/index.d.ts.map +0 -1
  430. package/dist/components/consent-dialog-trigger/types.d.ts.map +0 -1
  431. package/dist/components/consent-dialog-trigger/use-draggable.d.ts.map +0 -1
  432. package/dist/components/consent-preferences-link/consent-preferences-link.d.ts.map +0 -1
  433. package/dist/components/consent-preferences-link/index.d.ts.map +0 -1
  434. package/dist/components/consent-widget/atoms/accordion.d.ts +0 -46
  435. package/dist/components/consent-widget/atoms/accordion.d.ts.map +0 -1
  436. package/dist/components/consent-widget/atoms/button.d.ts.map +0 -1
  437. package/dist/components/consent-widget/atoms/footer.d.ts.map +0 -1
  438. package/dist/components/consent-widget/atoms/root.d.ts.map +0 -1
  439. package/dist/components/consent-widget/consent-widget.d.ts.map +0 -1
  440. package/dist/components/consent-widget/index.d.ts.map +0 -1
  441. package/dist/components/consent-widget/types.d.ts.map +0 -1
  442. package/dist/components/frame/atoms.d.ts.map +0 -1
  443. package/dist/components/frame/frame.d.ts.map +0 -1
  444. package/dist/components/frame/index.d.ts.map +0 -1
  445. package/dist/components/frame/types.d.ts.map +0 -1
  446. package/dist/components/iab-consent-banner/atoms/button-group.d.ts.map +0 -1
  447. package/dist/components/iab-consent-banner/atoms/card.d.ts.map +0 -1
  448. package/dist/components/iab-consent-banner/atoms/description.d.ts.map +0 -1
  449. package/dist/components/iab-consent-banner/atoms/footer.d.ts.map +0 -1
  450. package/dist/components/iab-consent-banner/atoms/header.d.ts.map +0 -1
  451. package/dist/components/iab-consent-banner/atoms/overlay.d.ts.map +0 -1
  452. package/dist/components/iab-consent-banner/atoms/root.d.ts.map +0 -1
  453. package/dist/components/iab-consent-banner/atoms/title.d.ts.map +0 -1
  454. package/dist/components/iab-consent-banner/iab-consent-banner.d.ts.map +0 -1
  455. package/dist/components/iab-consent-banner/index.d.ts.map +0 -1
  456. package/dist/components/iab-consent-dialog/atoms/card.d.ts.map +0 -1
  457. package/dist/components/iab-consent-dialog/atoms/content.d.ts.map +0 -1
  458. package/dist/components/iab-consent-dialog/atoms/footer.d.ts.map +0 -1
  459. package/dist/components/iab-consent-dialog/atoms/header.d.ts.map +0 -1
  460. package/dist/components/iab-consent-dialog/atoms/overlay.d.ts.map +0 -1
  461. package/dist/components/iab-consent-dialog/atoms/purpose-item.d.ts.map +0 -1
  462. package/dist/components/iab-consent-dialog/atoms/root.d.ts.map +0 -1
  463. package/dist/components/iab-consent-dialog/atoms/stack-item.d.ts.map +0 -1
  464. package/dist/components/iab-consent-dialog/atoms/tabs.d.ts +0 -40
  465. package/dist/components/iab-consent-dialog/atoms/tabs.d.ts.map +0 -1
  466. package/dist/components/iab-consent-dialog/atoms/vendor-list.d.ts.map +0 -1
  467. package/dist/components/iab-consent-dialog/hooks/use-gvl-data.d.ts.map +0 -1
  468. package/dist/components/iab-consent-dialog/iab-consent-dialog.d.ts.map +0 -1
  469. package/dist/components/iab-consent-dialog/index.d.ts.map +0 -1
  470. package/dist/components/iab-consent-dialog/types.d.ts.map +0 -1
  471. package/dist/components/iab-consent-dialog/use-iab-translations.d.ts.map +0 -1
  472. package/dist/components/shared/libs/polymorphic.d.ts.map +0 -1
  473. package/dist/components/shared/libs/recursive-clone-children.d.ts.map +0 -1
  474. package/dist/components/shared/primitives/box.d.ts.map +0 -1
  475. package/dist/components/shared/primitives/button.d.ts.map +0 -1
  476. package/dist/components/shared/primitives/button.types.d.ts.map +0 -1
  477. package/dist/components/shared/primitives/legal-links/index.d.ts.map +0 -1
  478. package/dist/components/shared/ui/accordion/accordion.d.ts +0 -110
  479. package/dist/components/shared/ui/accordion/accordion.d.ts.map +0 -1
  480. package/dist/components/shared/ui/accordion/accordion.types.d.ts.map +0 -1
  481. package/dist/components/shared/ui/accordion/index.d.ts.map +0 -1
  482. package/dist/components/shared/ui/animated-collapse/animated-collapse.d.ts.map +0 -1
  483. package/dist/components/shared/ui/animated-collapse/index.d.ts.map +0 -1
  484. package/dist/components/shared/ui/button/button.d.ts.map +0 -1
  485. package/dist/components/shared/ui/button/button.types.d.ts.map +0 -1
  486. package/dist/components/shared/ui/button/index.d.ts.map +0 -1
  487. package/dist/components/shared/ui/icon.d.ts.map +0 -1
  488. package/dist/components/shared/ui/logo.d.ts.map +0 -1
  489. package/dist/components/shared/ui/switch/index.d.ts.map +0 -1
  490. package/dist/components/shared/ui/switch/switch.d.ts +0 -45
  491. package/dist/components/shared/ui/switch/switch.d.ts.map +0 -1
  492. package/dist/components/shared/ui/switch/switch.types.d.ts.map +0 -1
  493. package/dist/context/consent-manager-context.d.ts.map +0 -1
  494. package/dist/context/consent-tracking-context.d.ts.map +0 -1
  495. package/dist/context/theme-context.d.ts.map +0 -1
  496. package/dist/headless.d.ts +0 -8
  497. package/dist/headless.d.ts.map +0 -1
  498. package/dist/hooks/index.d.ts.map +0 -1
  499. package/dist/hooks/use-color-scheme.d.ts.map +0 -1
  500. package/dist/hooks/use-component-config.d.ts.map +0 -1
  501. package/dist/hooks/use-consent-manager.d.ts.map +0 -1
  502. package/dist/hooks/use-focus-trap.d.ts.map +0 -1
  503. package/dist/hooks/use-reduced-motion.d.ts.map +0 -1
  504. package/dist/hooks/use-scroll-lock.d.ts.map +0 -1
  505. package/dist/hooks/use-ssr-status.d.ts.map +0 -1
  506. package/dist/hooks/use-styles.d.ts.map +0 -1
  507. package/dist/hooks/use-text-direction.d.ts.map +0 -1
  508. package/dist/hooks/use-theme.d.ts.map +0 -1
  509. package/dist/hooks/use-translations.d.ts.map +0 -1
  510. package/dist/index.d.ts.map +0 -1
  511. package/dist/providers/consent-manager-provider.d.ts.map +0 -1
  512. package/dist/server/fetch-ssr-data.d.ts.map +0 -1
  513. package/dist/server/headers.d.ts.map +0 -1
  514. package/dist/server/index.d.ts.map +0 -1
  515. package/dist/server/normalize-url.d.ts.map +0 -1
  516. package/dist/server/types.d.ts.map +0 -1
  517. package/dist/types/consent-manager.d.ts.map +0 -1
  518. package/dist/types/theme/index.d.ts.map +0 -1
  519. package/dist/types/theme/style-keys.d.ts +0 -2
  520. package/dist/types/theme/style-keys.d.ts.map +0 -1
  521. package/dist/types/theme/style-types.d.ts.map +0 -1
  522. package/dist/utils/cn.d.ts.map +0 -1
  523. package/dist/utils/merge-styles.d.ts.map +0 -1
  524. package/dist/utils/test-helpers.d.ts.map +0 -1
  525. package/dist/utils/theme-utils.d.ts.map +0 -1
  526. package/dist/version.d.ts +0 -2
  527. 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
+ ```