@c15t/react 2.0.0-rc.3 → 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 (506) hide show
  1. package/client/components/consent-banner.js +4 -0
  2. package/client/components/consent-dialog-link.js +3 -0
  3. package/client/components/consent-dialog-trigger.js +3 -0
  4. package/client/components/consent-dialog.js +4 -0
  5. package/client/components/consent-widget.js +4 -0
  6. package/client/components/frame.js +3 -0
  7. package/client/components/iab-consent-banner.js +4 -0
  8. package/client/components/iab-consent-dialog.js +4 -0
  9. package/dist/components/consent-banner/atoms/root.cjs +1 -1
  10. package/dist/components/consent-banner/atoms/root.js +1 -1
  11. package/dist/components/consent-banner/consent-banner.cjs +1 -1
  12. package/dist/components/consent-banner/consent-banner.js +1 -1
  13. package/dist/components/consent-dialog/atoms/root.cjs +1 -1
  14. package/dist/components/consent-dialog/atoms/root.js +1 -1
  15. package/dist/components/consent-dialog/consent-dialog.cjs +1 -1
  16. package/dist/components/consent-dialog/consent-dialog.js +1 -1
  17. package/dist/components/consent-dialog-link/index.cjs +1 -0
  18. package/dist/components/consent-dialog-link/index.js +1 -0
  19. package/dist/components/consent-dialog-trigger/atoms/button.cjs +1 -1
  20. package/dist/components/consent-dialog-trigger/atoms/button.js +1 -1
  21. package/dist/components/consent-dialog-trigger/atoms/root.cjs +1 -1
  22. package/dist/components/consent-dialog-trigger/atoms/root.js +1 -1
  23. package/dist/components/consent-preferences-link/consent-preferences-link.cjs +1 -0
  24. package/dist/components/consent-preferences-link/consent-preferences-link.js +1 -0
  25. package/dist/components/consent-preferences-link/index.cjs +1 -0
  26. package/dist/components/consent-preferences-link/index.js +1 -0
  27. package/dist/components/consent-widget/atoms/button.cjs +1 -1
  28. package/dist/components/consent-widget/atoms/button.js +1 -1
  29. package/dist/components/consent-widget/consent-widget.cjs +1 -1
  30. package/dist/components/consent-widget/consent-widget.js +1 -1
  31. package/dist/components/frame/frame.cjs +1 -1
  32. package/dist/components/frame/frame.js +1 -1
  33. package/dist/components/iab-consent-banner/atoms/root.cjs +1 -1
  34. package/dist/components/iab-consent-banner/atoms/root.js +1 -1
  35. package/dist/components/iab-consent-banner/iab-consent-banner.cjs +1 -1
  36. package/dist/components/iab-consent-banner/iab-consent-banner.js +1 -1
  37. package/dist/components/iab-consent-dialog/atoms/footer.cjs +1 -1
  38. package/dist/components/iab-consent-dialog/atoms/footer.js +1 -1
  39. package/dist/components/iab-consent-dialog/atoms/root.cjs +1 -1
  40. package/dist/components/iab-consent-dialog/atoms/root.js +1 -1
  41. package/dist/components/iab-consent-dialog/iab-consent-dialog.cjs +1 -1
  42. package/dist/components/iab-consent-dialog/iab-consent-dialog.js +1 -1
  43. package/dist/components/shared/libs/policy-actions.cjs +1 -0
  44. package/dist/components/shared/libs/policy-actions.js +1 -0
  45. package/dist/components/shared/primitives/button.cjs +1 -1
  46. package/dist/components/shared/primitives/button.js +1 -1
  47. package/dist/headless.cjs +1 -1
  48. package/dist/headless.js +1 -1
  49. package/dist/hooks/index.cjs +1 -1
  50. package/dist/hooks/index.js +1 -1
  51. package/dist/hooks/use-consent-dialog-trigger.cjs +1 -0
  52. package/dist/hooks/use-consent-dialog-trigger.js +1 -0
  53. package/dist/hooks/use-consent-manager.cjs +1 -1
  54. package/dist/hooks/use-consent-manager.js +1 -1
  55. package/dist/hooks/use-headless-consent-ui.cjs +1 -0
  56. package/dist/hooks/use-headless-consent-ui.js +1 -0
  57. package/dist/hooks/use-headless-iab-consent-ui.cjs +1 -0
  58. package/dist/hooks/use-headless-iab-consent-ui.js +1 -0
  59. package/dist/index.cjs +1 -1
  60. package/dist/index.js +1 -1
  61. package/dist/providers/consent-manager-provider.cjs +1 -1
  62. package/dist/providers/consent-manager-provider.js +1 -1
  63. package/dist/server/fetch-ssr-data.cjs +1 -1
  64. package/dist/server/fetch-ssr-data.js +1 -1
  65. package/dist/server/headers.cjs +1 -1
  66. package/dist/server/headers.js +1 -1
  67. package/dist/server/index.cjs +1 -1
  68. package/dist/server/index.js +1 -1
  69. package/dist/server/init-cache-key.cjs +1 -0
  70. package/dist/server/init-cache-key.js +1 -0
  71. package/dist/version.cjs +1 -1
  72. package/dist/version.js +1 -1
  73. package/{dist → dist-types}/components/consent-banner/atoms/overlay.d.ts +0 -1
  74. package/{dist → dist-types}/components/consent-banner/atoms/root.d.ts +1 -2
  75. package/{dist → dist-types}/components/consent-banner/components.d.ts +0 -1
  76. package/{dist → dist-types}/components/consent-banner/consent-banner.d.ts +8 -7
  77. package/{dist → dist-types}/components/consent-banner/error-boundary.d.ts +0 -1
  78. package/{dist → dist-types}/components/consent-banner/index.d.ts +0 -1
  79. package/{dist → dist-types}/components/consent-dialog/atoms/card.d.ts +0 -1
  80. package/{dist → dist-types}/components/consent-dialog/atoms/overlay.d.ts +0 -1
  81. package/{dist → dist-types}/components/consent-dialog/atoms/root.d.ts +1 -2
  82. package/{dist → dist-types}/components/consent-dialog/consent-dialog.d.ts +1 -2
  83. package/{dist → dist-types}/components/consent-dialog/index.d.ts +0 -1
  84. package/dist-types/components/consent-dialog-link/index.d.ts +1 -0
  85. package/{dist → dist-types}/components/consent-dialog-trigger/atoms/button.d.ts +0 -1
  86. package/{dist → dist-types}/components/consent-dialog-trigger/atoms/icon.d.ts +0 -1
  87. package/{dist → dist-types}/components/consent-dialog-trigger/atoms/root.d.ts +0 -1
  88. package/{dist → dist-types}/components/consent-dialog-trigger/atoms/text.d.ts +0 -1
  89. package/{dist → dist-types}/components/consent-dialog-trigger/consent-dialog-trigger.d.ts +0 -1
  90. package/{dist → dist-types}/components/consent-dialog-trigger/index.d.ts +0 -1
  91. package/{dist → dist-types}/components/consent-dialog-trigger/types.d.ts +1 -2
  92. package/{dist → dist-types}/components/consent-dialog-trigger/use-draggable.d.ts +1 -2
  93. package/dist-types/components/consent-preferences-link/consent-preferences-link.d.ts +15 -0
  94. package/dist-types/components/consent-preferences-link/index.d.ts +1 -0
  95. package/{dist → dist-types}/components/consent-widget/atoms/accordion.d.ts +0 -1
  96. package/{dist → dist-types}/components/consent-widget/atoms/button.d.ts +0 -1
  97. package/{dist → dist-types}/components/consent-widget/atoms/footer.d.ts +0 -1
  98. package/{dist → dist-types}/components/consent-widget/atoms/root.d.ts +0 -1
  99. package/{dist → dist-types}/components/consent-widget/consent-widget.d.ts +0 -1
  100. package/{dist → dist-types}/components/consent-widget/index.d.ts +0 -1
  101. package/{dist → dist-types}/components/consent-widget/types.d.ts +0 -1
  102. package/{dist → dist-types}/components/frame/atoms.d.ts +1 -2
  103. package/{dist → dist-types}/components/frame/frame.d.ts +0 -1
  104. package/{dist → dist-types}/components/frame/index.d.ts +0 -1
  105. package/{dist → dist-types}/components/frame/types.d.ts +1 -2
  106. package/{dist → dist-types}/components/iab-consent-banner/atoms/button-group.d.ts +0 -1
  107. package/{dist → dist-types}/components/iab-consent-banner/atoms/card.d.ts +0 -1
  108. package/{dist → dist-types}/components/iab-consent-banner/atoms/description.d.ts +0 -1
  109. package/{dist → dist-types}/components/iab-consent-banner/atoms/footer.d.ts +0 -1
  110. package/{dist → dist-types}/components/iab-consent-banner/atoms/header.d.ts +0 -1
  111. package/{dist → dist-types}/components/iab-consent-banner/atoms/overlay.d.ts +0 -1
  112. package/{dist → dist-types}/components/iab-consent-banner/atoms/root.d.ts +1 -2
  113. package/{dist → dist-types}/components/iab-consent-banner/atoms/title.d.ts +0 -1
  114. package/{dist → dist-types}/components/iab-consent-banner/iab-consent-banner.d.ts +1 -2
  115. package/{dist → dist-types}/components/iab-consent-banner/index.d.ts +0 -1
  116. package/{dist → dist-types}/components/iab-consent-dialog/atoms/card.d.ts +0 -1
  117. package/{dist → dist-types}/components/iab-consent-dialog/atoms/content.d.ts +0 -1
  118. package/{dist → dist-types}/components/iab-consent-dialog/atoms/footer.d.ts +0 -1
  119. package/{dist → dist-types}/components/iab-consent-dialog/atoms/header.d.ts +0 -1
  120. package/{dist → dist-types}/components/iab-consent-dialog/atoms/overlay.d.ts +0 -1
  121. package/{dist → dist-types}/components/iab-consent-dialog/atoms/purpose-item.d.ts +0 -1
  122. package/{dist → dist-types}/components/iab-consent-dialog/atoms/root.d.ts +1 -2
  123. package/{dist → dist-types}/components/iab-consent-dialog/atoms/stack-item.d.ts +0 -1
  124. package/{dist → dist-types}/components/iab-consent-dialog/atoms/tabs.d.ts +0 -1
  125. package/{dist → dist-types}/components/iab-consent-dialog/atoms/vendor-list.d.ts +1 -2
  126. package/{dist → dist-types}/components/iab-consent-dialog/hooks/use-gvl-data.d.ts +0 -1
  127. package/{dist → dist-types}/components/iab-consent-dialog/iab-consent-dialog.d.ts +1 -2
  128. package/{dist → dist-types}/components/iab-consent-dialog/index.d.ts +0 -1
  129. package/{dist → dist-types}/components/iab-consent-dialog/types.d.ts +0 -1
  130. package/{dist → dist-types}/components/iab-consent-dialog/use-iab-translations.d.ts +0 -1
  131. package/dist-types/components/shared/libs/policy-actions.d.ts +26 -0
  132. package/{dist → dist-types}/components/shared/libs/polymorphic.d.ts +0 -1
  133. package/{dist → dist-types}/components/shared/libs/recursive-clone-children.d.ts +0 -1
  134. package/{dist → dist-types}/components/shared/primitives/box.d.ts +0 -1
  135. package/{dist → dist-types}/components/shared/primitives/button.d.ts +5 -2
  136. package/{dist → dist-types}/components/shared/primitives/button.types.d.ts +17 -1
  137. package/{dist → dist-types}/components/shared/primitives/legal-links/index.d.ts +1 -2
  138. package/{dist → dist-types}/components/shared/ui/accordion/accordion.d.ts +1 -2
  139. package/{dist → dist-types}/components/shared/ui/accordion/accordion.types.d.ts +1 -2
  140. package/{dist → dist-types}/components/shared/ui/accordion/index.d.ts +0 -1
  141. package/{dist → dist-types}/components/shared/ui/animated-collapse/animated-collapse.d.ts +0 -1
  142. package/{dist → dist-types}/components/shared/ui/animated-collapse/index.d.ts +0 -1
  143. package/{dist → dist-types}/components/shared/ui/button/button.d.ts +1 -2
  144. package/{dist → dist-types}/components/shared/ui/button/button.types.d.ts +0 -1
  145. package/{dist → dist-types}/components/shared/ui/button/index.d.ts +0 -1
  146. package/{dist → dist-types}/components/shared/ui/icon.d.ts +0 -1
  147. package/{dist → dist-types}/components/shared/ui/logo.d.ts +0 -1
  148. package/{dist → dist-types}/components/shared/ui/switch/index.d.ts +0 -1
  149. package/{dist → dist-types}/components/shared/ui/switch/switch.d.ts +1 -2
  150. package/{dist → dist-types}/components/shared/ui/switch/switch.types.d.ts +1 -2
  151. package/{dist → dist-types}/context/consent-manager-context.d.ts +1 -2
  152. package/{dist → dist-types}/context/consent-tracking-context.d.ts +0 -1
  153. package/{dist → dist-types}/context/theme-context.d.ts +0 -1
  154. package/dist-types/headless.d.ts +10 -0
  155. package/{dist → dist-types}/hooks/index.d.ts +3 -1
  156. package/{dist → dist-types}/hooks/use-color-scheme.d.ts +0 -1
  157. package/{dist → dist-types}/hooks/use-component-config.d.ts +1 -2
  158. package/dist-types/hooks/use-consent-dialog-trigger.d.ts +10 -0
  159. package/{dist → dist-types}/hooks/use-consent-manager.d.ts +1 -2
  160. package/{dist → dist-types}/hooks/use-focus-trap.d.ts +0 -1
  161. package/dist-types/hooks/use-headless-consent-ui.d.ts +46 -0
  162. package/dist-types/hooks/use-headless-iab-consent-ui.d.ts +41 -0
  163. package/{dist → dist-types}/hooks/use-reduced-motion.d.ts +0 -1
  164. package/{dist → dist-types}/hooks/use-scroll-lock.d.ts +0 -1
  165. package/{dist → dist-types}/hooks/use-ssr-status.d.ts +0 -1
  166. package/{dist → dist-types}/hooks/use-styles.d.ts +0 -1
  167. package/{dist → dist-types}/hooks/use-text-direction.d.ts +0 -1
  168. package/{dist → dist-types}/hooks/use-theme.d.ts +0 -1
  169. package/{dist → dist-types}/hooks/use-translations.d.ts +1 -2
  170. package/{dist → dist-types}/index.d.ts +6 -3
  171. package/{dist → dist-types}/providers/consent-manager-provider.d.ts +0 -1
  172. package/{dist → dist-types}/server/fetch-ssr-data.d.ts +1 -2
  173. package/{dist → dist-types}/server/headers.d.ts +2 -2
  174. package/{dist → dist-types}/server/index.d.ts +1 -1
  175. package/dist-types/server/init-cache-key.d.ts +21 -0
  176. package/{dist → dist-types}/server/normalize-url.d.ts +0 -1
  177. package/{dist → dist-types}/server/types.d.ts +1 -2
  178. package/{dist → dist-types}/types/consent-manager.d.ts +8 -2
  179. package/{dist → dist-types}/types/theme/index.d.ts +0 -1
  180. package/dist-types/types/theme/style-keys.d.ts +1 -0
  181. package/{dist → dist-types}/types/theme/style-types.d.ts +4 -3
  182. package/{dist → dist-types}/utils/cn.d.ts +1 -2
  183. package/{dist → dist-types}/utils/merge-styles.d.ts +0 -1
  184. package/{dist → dist-types}/utils/test-helpers.d.ts +0 -1
  185. package/{dist → dist-types}/utils/theme-utils.d.ts +1 -2
  186. package/dist-types/version.d.ts +1 -0
  187. package/docs/README.md +76 -0
  188. package/docs/building-headless-components.md +245 -0
  189. package/docs/callbacks.md +117 -0
  190. package/docs/components/consent-banner.md +174 -0
  191. package/docs/components/consent-dialog-link.md +59 -0
  192. package/docs/components/consent-dialog-trigger.md +103 -0
  193. package/docs/components/consent-dialog.md +137 -0
  194. package/docs/components/consent-manager-provider.md +422 -0
  195. package/docs/components/consent-widget.md +78 -0
  196. package/docs/components/dev-tools.md +63 -0
  197. package/docs/components/frame.md +73 -0
  198. package/docs/concepts/client-modes.md +163 -0
  199. package/docs/concepts/consent-categories.md +97 -0
  200. package/docs/concepts/consent-models.md +112 -0
  201. package/docs/concepts/cookie-management.md +122 -0
  202. package/docs/concepts/glossary.md +23 -0
  203. package/docs/concepts/initialization-flow.md +141 -0
  204. package/docs/concepts/policy-packs.md +227 -0
  205. package/docs/headless.md +184 -0
  206. package/docs/hooks/use-color-scheme.md +40 -0
  207. package/docs/hooks/use-consent-manager/checking-consent.md +94 -0
  208. package/docs/hooks/use-consent-manager/location-info.md +95 -0
  209. package/docs/hooks/use-consent-manager/overview.md +390 -0
  210. package/docs/hooks/use-consent-manager/setting-consent.md +92 -0
  211. package/docs/hooks/use-draggable.md +57 -0
  212. package/docs/hooks/use-focus-trap.md +41 -0
  213. package/docs/hooks/use-reduced-motion.md +35 -0
  214. package/docs/hooks/use-ssr-status.md +31 -0
  215. package/docs/hooks/use-text-direction.md +49 -0
  216. package/docs/hooks/use-translations.md +116 -0
  217. package/docs/iab/consent-banner.md +95 -0
  218. package/docs/iab/consent-dialog.md +135 -0
  219. package/docs/iab/overview.md +119 -0
  220. package/docs/iab/use-gvl-data.md +208 -0
  221. package/docs/iframe-blocking.md +107 -0
  222. package/docs/integrations/databuddy.md +186 -0
  223. package/docs/integrations/google-tag-manager.md +153 -0
  224. package/docs/integrations/google-tag.md +149 -0
  225. package/docs/integrations/linkedin-insights.md +109 -0
  226. package/docs/integrations/meta-pixel.md +342 -0
  227. package/docs/integrations/microsoft-uet.md +112 -0
  228. package/docs/integrations/overview.md +89 -0
  229. package/docs/integrations/posthog.md +177 -0
  230. package/docs/integrations/tiktok-pixel.md +113 -0
  231. package/docs/integrations/x-pixel.md +143 -0
  232. package/docs/internationalization.md +197 -0
  233. package/docs/network-blocker.md +178 -0
  234. package/docs/optimization.md +117 -0
  235. package/docs/policy-packs.md +240 -0
  236. package/docs/quickstart.md +136 -0
  237. package/docs/script-loader.md +300 -0
  238. package/docs/server-side.md +153 -0
  239. package/docs/styling/classnames.md +84 -0
  240. package/docs/styling/color-scheme.md +82 -0
  241. package/docs/styling/css-variables.md +92 -0
  242. package/docs/styling/overview.md +315 -0
  243. package/docs/styling/slots.md +93 -0
  244. package/docs/styling/tailwind.md +86 -0
  245. package/docs/styling/tokens.md +214 -0
  246. package/docs/troubleshooting.md +137 -0
  247. package/package.json +64 -17
  248. package/dist/components/__tests__/active-ui-transitions.e2e.test.cjs +0 -1
  249. package/dist/components/__tests__/active-ui-transitions.e2e.test.js +0 -1
  250. package/dist/components/__tests__/consent-flow.e2e.test.cjs +0 -1
  251. package/dist/components/__tests__/consent-flow.e2e.test.js +0 -1
  252. package/dist/components/__tests__/models-prop.e2e.test.cjs +0 -1
  253. package/dist/components/__tests__/models-prop.e2e.test.js +0 -1
  254. package/dist/components/__tests__/ui-source-tracking.e2e.test.cjs +0 -1
  255. package/dist/components/__tests__/ui-source-tracking.e2e.test.js +0 -1
  256. package/dist/components/consent-banner/atoms/overlay.d.ts.map +0 -1
  257. package/dist/components/consent-banner/atoms/root.d.ts.map +0 -1
  258. package/dist/components/consent-banner/components.d.ts.map +0 -1
  259. package/dist/components/consent-banner/consent-banner.d.ts.map +0 -1
  260. package/dist/components/consent-banner/error-boundary.d.ts.map +0 -1
  261. package/dist/components/consent-banner/index.d.ts.map +0 -1
  262. package/dist/components/consent-dialog/atoms/card.d.ts.map +0 -1
  263. package/dist/components/consent-dialog/atoms/overlay.d.ts.map +0 -1
  264. package/dist/components/consent-dialog/atoms/root.d.ts.map +0 -1
  265. package/dist/components/consent-dialog/consent-dialog.d.ts.map +0 -1
  266. package/dist/components/consent-dialog/index.d.ts.map +0 -1
  267. package/dist/components/consent-dialog-trigger/atoms/button.d.ts.map +0 -1
  268. package/dist/components/consent-dialog-trigger/atoms/icon.d.ts.map +0 -1
  269. package/dist/components/consent-dialog-trigger/atoms/root.d.ts.map +0 -1
  270. package/dist/components/consent-dialog-trigger/atoms/text.d.ts.map +0 -1
  271. package/dist/components/consent-dialog-trigger/consent-dialog-trigger.d.ts.map +0 -1
  272. package/dist/components/consent-dialog-trigger/index.d.ts.map +0 -1
  273. package/dist/components/consent-dialog-trigger/types.d.ts.map +0 -1
  274. package/dist/components/consent-dialog-trigger/use-draggable.d.ts.map +0 -1
  275. package/dist/components/consent-widget/atoms/accordion.d.ts.map +0 -1
  276. package/dist/components/consent-widget/atoms/button.d.ts.map +0 -1
  277. package/dist/components/consent-widget/atoms/footer.d.ts.map +0 -1
  278. package/dist/components/consent-widget/atoms/root.d.ts.map +0 -1
  279. package/dist/components/consent-widget/consent-widget.d.ts.map +0 -1
  280. package/dist/components/consent-widget/index.d.ts.map +0 -1
  281. package/dist/components/consent-widget/types.d.ts.map +0 -1
  282. package/dist/components/frame/atoms.d.ts.map +0 -1
  283. package/dist/components/frame/frame.d.ts.map +0 -1
  284. package/dist/components/frame/index.d.ts.map +0 -1
  285. package/dist/components/frame/types.d.ts.map +0 -1
  286. package/dist/components/iab/__tests__/e2e-setup.cjs +0 -1
  287. package/dist/components/iab/__tests__/e2e-setup.js +0 -1
  288. package/dist/components/iab/__tests__/fixtures/mock-consent-state.cjs +0 -1
  289. package/dist/components/iab/__tests__/fixtures/mock-consent-state.d.ts +0 -212
  290. package/dist/components/iab/__tests__/fixtures/mock-consent-state.d.ts.map +0 -1
  291. package/dist/components/iab/__tests__/fixtures/mock-consent-state.js +0 -1
  292. package/dist/components/iab/__tests__/iab-banner.e2e.test.cjs +0 -1
  293. package/dist/components/iab/__tests__/iab-banner.e2e.test.js +0 -1
  294. package/dist/components/iab/__tests__/iab-consent-flow.e2e.test.cjs +0 -1
  295. package/dist/components/iab/__tests__/iab-consent-flow.e2e.test.js +0 -1
  296. package/dist/components/iab/__tests__/iab-events.e2e.test.cjs +0 -1
  297. package/dist/components/iab/__tests__/iab-events.e2e.test.js +0 -1
  298. package/dist/components/iab/__tests__/iab-gvl.e2e.test.cjs +0 -1
  299. package/dist/components/iab/__tests__/iab-gvl.e2e.test.js +0 -1
  300. package/dist/components/iab/__tests__/iab-preference-center.e2e.test.cjs +0 -1
  301. package/dist/components/iab/__tests__/iab-preference-center.e2e.test.js +0 -1
  302. package/dist/components/iab/__tests__/iab-storage.e2e.test.cjs +0 -1
  303. package/dist/components/iab/__tests__/iab-storage.e2e.test.js +0 -1
  304. package/dist/components/iab/__tests__/iab-stub.e2e.test.cjs +0 -1
  305. package/dist/components/iab/__tests__/iab-stub.e2e.test.js +0 -1
  306. package/dist/components/iab/__tests__/iab-tcfapi.e2e.test.cjs +0 -1
  307. package/dist/components/iab/__tests__/iab-tcfapi.e2e.test.js +0 -1
  308. package/dist/components/iab/__tests__/msw-handlers.cjs +0 -1
  309. package/dist/components/iab/__tests__/msw-handlers.js +0 -1
  310. package/dist/components/iab-consent-banner/__tests__/iab-consent-banner.test.cjs +0 -1
  311. package/dist/components/iab-consent-banner/__tests__/iab-consent-banner.test.js +0 -1
  312. package/dist/components/iab-consent-banner/atoms/button-group.d.ts.map +0 -1
  313. package/dist/components/iab-consent-banner/atoms/card.d.ts.map +0 -1
  314. package/dist/components/iab-consent-banner/atoms/description.d.ts.map +0 -1
  315. package/dist/components/iab-consent-banner/atoms/footer.d.ts.map +0 -1
  316. package/dist/components/iab-consent-banner/atoms/header.d.ts.map +0 -1
  317. package/dist/components/iab-consent-banner/atoms/overlay.d.ts.map +0 -1
  318. package/dist/components/iab-consent-banner/atoms/root.d.ts.map +0 -1
  319. package/dist/components/iab-consent-banner/atoms/title.d.ts.map +0 -1
  320. package/dist/components/iab-consent-banner/iab-consent-banner.d.ts.map +0 -1
  321. package/dist/components/iab-consent-banner/index.d.ts.map +0 -1
  322. package/dist/components/iab-consent-dialog/__tests__/legitimate-interest-ui.test.cjs +0 -1
  323. package/dist/components/iab-consent-dialog/__tests__/legitimate-interest-ui.test.js +0 -1
  324. package/dist/components/iab-consent-dialog/__tests__/preference-center.test.cjs +0 -1
  325. package/dist/components/iab-consent-dialog/__tests__/preference-center.test.js +0 -1
  326. package/dist/components/iab-consent-dialog/__tests__/purposes-tab.test.cjs +0 -1
  327. package/dist/components/iab-consent-dialog/__tests__/purposes-tab.test.js +0 -1
  328. package/dist/components/iab-consent-dialog/__tests__/vendors-tab.test.cjs +0 -1
  329. package/dist/components/iab-consent-dialog/__tests__/vendors-tab.test.js +0 -1
  330. package/dist/components/iab-consent-dialog/atoms/card.d.ts.map +0 -1
  331. package/dist/components/iab-consent-dialog/atoms/content.d.ts.map +0 -1
  332. package/dist/components/iab-consent-dialog/atoms/footer.d.ts.map +0 -1
  333. package/dist/components/iab-consent-dialog/atoms/header.d.ts.map +0 -1
  334. package/dist/components/iab-consent-dialog/atoms/overlay.d.ts.map +0 -1
  335. package/dist/components/iab-consent-dialog/atoms/purpose-item.d.ts.map +0 -1
  336. package/dist/components/iab-consent-dialog/atoms/root.d.ts.map +0 -1
  337. package/dist/components/iab-consent-dialog/atoms/stack-item.d.ts.map +0 -1
  338. package/dist/components/iab-consent-dialog/atoms/tabs.d.ts.map +0 -1
  339. package/dist/components/iab-consent-dialog/atoms/vendor-list.d.ts.map +0 -1
  340. package/dist/components/iab-consent-dialog/hooks/use-gvl-data.d.ts.map +0 -1
  341. package/dist/components/iab-consent-dialog/iab-consent-dialog.d.ts.map +0 -1
  342. package/dist/components/iab-consent-dialog/index.d.ts.map +0 -1
  343. package/dist/components/iab-consent-dialog/types.d.ts.map +0 -1
  344. package/dist/components/iab-consent-dialog/use-iab-translations.d.ts.map +0 -1
  345. package/dist/components/shared/libs/polymorphic.d.ts.map +0 -1
  346. package/dist/components/shared/libs/recursive-clone-children.d.ts.map +0 -1
  347. package/dist/components/shared/primitives/box.d.ts.map +0 -1
  348. package/dist/components/shared/primitives/button.d.ts.map +0 -1
  349. package/dist/components/shared/primitives/button.types.d.ts.map +0 -1
  350. package/dist/components/shared/primitives/legal-links/index.d.ts.map +0 -1
  351. package/dist/components/shared/ui/__tests__/primitives.test.cjs +0 -1
  352. package/dist/components/shared/ui/__tests__/primitives.test.js +0 -1
  353. package/dist/components/shared/ui/accordion/accordion.d.ts.map +0 -1
  354. package/dist/components/shared/ui/accordion/accordion.types.d.ts.map +0 -1
  355. package/dist/components/shared/ui/accordion/index.d.ts.map +0 -1
  356. package/dist/components/shared/ui/animated-collapse/animated-collapse.d.ts.map +0 -1
  357. package/dist/components/shared/ui/animated-collapse/index.d.ts.map +0 -1
  358. package/dist/components/shared/ui/button/button.d.ts.map +0 -1
  359. package/dist/components/shared/ui/button/button.types.d.ts.map +0 -1
  360. package/dist/components/shared/ui/button/index.d.ts.map +0 -1
  361. package/dist/components/shared/ui/icon.d.ts.map +0 -1
  362. package/dist/components/shared/ui/logo.d.ts.map +0 -1
  363. package/dist/components/shared/ui/switch/index.d.ts.map +0 -1
  364. package/dist/components/shared/ui/switch/switch.d.ts.map +0 -1
  365. package/dist/components/shared/ui/switch/switch.types.d.ts.map +0 -1
  366. package/dist/context/consent-manager-context.d.ts.map +0 -1
  367. package/dist/context/consent-tracking-context.d.ts.map +0 -1
  368. package/dist/context/theme-context.d.ts.map +0 -1
  369. package/dist/headless.d.ts +0 -8
  370. package/dist/headless.d.ts.map +0 -1
  371. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-cleans-up-system-preference-listener-on-unmount-1.cjs +0 -1
  372. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-cleans-up-system-preference-listener-on-unmount-1.js +0 -1
  373. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-handles-default-theme-based-on-document-class-1.cjs +0 -1
  374. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-handles-default-theme-based-on-document-class-1.js +0 -1
  375. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-responds-to-system-preference-1.cjs +0 -1
  376. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-responds-to-system-preference-1.js +0 -1
  377. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-sets-dark-theme-correctly-1.cjs +0 -1
  378. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-sets-dark-theme-correctly-1.js +0 -1
  379. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-updates-theme-when-default-theme-changes-1.cjs +0 -1
  380. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-updates-theme-when-default-theme-changes-1.js +0 -1
  381. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-updates-theme-when-system-preference-changes-1.cjs +0 -1
  382. package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-updates-theme-when-system-preference-changes-1.js +0 -1
  383. package/dist/hooks/__tests__/__screenshots__/use-consent-manager.test.tsx/useConsentManager-provides-manager-object-when-configured-1.cjs +0 -1
  384. package/dist/hooks/__tests__/__screenshots__/use-consent-manager.test.tsx/useConsentManager-provides-manager-object-when-configured-1.js +0 -1
  385. package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-handles-string-className-correctly-1.cjs +0 -1
  386. package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-handles-string-className-correctly-1.js +0 -1
  387. package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-merges-theme-and-component-styles-correctly-1.cjs +0 -1
  388. package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-merges-theme-and-component-styles-correctly-1.js +0 -1
  389. 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
  390. 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
  391. 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
  392. 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
  393. package/dist/hooks/__tests__/__screenshots__/use-theme.test.tsx/useTheme-local-theme-takes-precedence-over-global-theme-1.cjs +0 -1
  394. package/dist/hooks/__tests__/__screenshots__/use-theme.test.tsx/useTheme-local-theme-takes-precedence-over-global-theme-1.js +0 -1
  395. package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-Custom-English-instead-of-English-when-German-is-selected-1.cjs +0 -1
  396. package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-Custom-English-instead-of-English-when-German-is-selected-1.js +0 -1
  397. package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-falls-back-to-English-when-selected-language-is-not-available-1.cjs +0 -1
  398. package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-falls-back-to-English-when-selected-language-is-not-available-1.js +0 -1
  399. package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-merges-custom-translations-with-defaults-1.cjs +0 -1
  400. package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-merges-custom-translations-with-defaults-1.js +0 -1
  401. package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-returns-English-translations-by-default-1.cjs +0 -1
  402. package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-returns-English-translations-by-default-1.js +0 -1
  403. package/dist/hooks/__tests__/use-color-scheme.test.cjs +0 -1
  404. package/dist/hooks/__tests__/use-color-scheme.test.js +0 -1
  405. package/dist/hooks/__tests__/use-consent-manager.test.cjs +0 -1
  406. package/dist/hooks/__tests__/use-consent-manager.test.js +0 -1
  407. package/dist/hooks/__tests__/use-focus-trap.test.cjs +0 -1
  408. package/dist/hooks/__tests__/use-focus-trap.test.js +0 -1
  409. package/dist/hooks/__tests__/use-scroll-lock.test.cjs +0 -1
  410. package/dist/hooks/__tests__/use-scroll-lock.test.js +0 -1
  411. package/dist/hooks/__tests__/use-styles.test.cjs +0 -1
  412. package/dist/hooks/__tests__/use-styles.test.js +0 -1
  413. package/dist/hooks/__tests__/use-theme.test.cjs +0 -1
  414. package/dist/hooks/__tests__/use-theme.test.js +0 -1
  415. package/dist/hooks/__tests__/use-translations.test.cjs +0 -1
  416. package/dist/hooks/__tests__/use-translations.test.js +0 -1
  417. package/dist/hooks/index.d.ts.map +0 -1
  418. package/dist/hooks/use-color-scheme.d.ts.map +0 -1
  419. package/dist/hooks/use-component-config.d.ts.map +0 -1
  420. package/dist/hooks/use-consent-manager.d.ts.map +0 -1
  421. package/dist/hooks/use-focus-trap.d.ts.map +0 -1
  422. package/dist/hooks/use-reduced-motion.d.ts.map +0 -1
  423. package/dist/hooks/use-scroll-lock.d.ts.map +0 -1
  424. package/dist/hooks/use-ssr-status.d.ts.map +0 -1
  425. package/dist/hooks/use-styles.d.ts.map +0 -1
  426. package/dist/hooks/use-text-direction.d.ts.map +0 -1
  427. package/dist/hooks/use-theme.d.ts.map +0 -1
  428. package/dist/hooks/use-translations.d.ts.map +0 -1
  429. package/dist/index.d.ts.map +0 -1
  430. package/dist/mockServiceWorker.js +0 -349
  431. 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
  432. 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
  433. 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
  434. 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
  435. 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
  436. 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
  437. package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-handle-rapid-re-renders-without-blocking-children-1.cjs +0 -1
  438. package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-handle-rapid-re-renders-without-blocking-children-1.js +0 -1
  439. 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
  440. 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
  441. package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-render-children-immediately-without-blocking-during-hydration-1.cjs +0 -1
  442. package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-render-children-immediately-without-blocking-during-hydration-1.js +0 -1
  443. 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
  444. 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
  445. package/dist/providers/__tests__/provider-basic.test.cjs +0 -1
  446. package/dist/providers/__tests__/provider-basic.test.js +0 -1
  447. package/dist/providers/__tests__/provider-context.test.cjs +0 -1
  448. package/dist/providers/__tests__/provider-context.test.js +0 -1
  449. package/dist/providers/__tests__/provider-errors.test.cjs +0 -1
  450. package/dist/providers/__tests__/provider-errors.test.js +0 -1
  451. package/dist/providers/__tests__/provider-hydration.test.cjs +0 -1
  452. package/dist/providers/__tests__/provider-hydration.test.js +0 -1
  453. package/dist/providers/__tests__/test-helpers.cjs +0 -1
  454. package/dist/providers/__tests__/test-helpers.js +0 -1
  455. package/dist/providers/consent-manager-provider.d.ts.map +0 -1
  456. package/dist/server/fetch-ssr-data.d.ts.map +0 -1
  457. package/dist/server/headers.d.ts.map +0 -1
  458. package/dist/server/headers.test.cjs +0 -1
  459. package/dist/server/headers.test.d.ts +0 -2
  460. package/dist/server/headers.test.d.ts.map +0 -1
  461. package/dist/server/headers.test.js +0 -1
  462. package/dist/server/index.d.ts.map +0 -1
  463. package/dist/server/normalize-url.d.ts.map +0 -1
  464. package/dist/server/normalize-url.test.cjs +0 -1
  465. package/dist/server/normalize-url.test.d.ts +0 -2
  466. package/dist/server/normalize-url.test.d.ts.map +0 -1
  467. package/dist/server/normalize-url.test.js +0 -1
  468. package/dist/server/types.d.ts.map +0 -1
  469. package/dist/static/image/ConsentManagerProvider-Basic-Request-Behavior-should-make-a-new-request-when-core-options-change-1.png +0 -0
  470. 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
  471. package/dist/static/image/ConsentManagerProvider-Basic-Request-Behavior-should-only-make-one-initial-request-for-consent-banner-status-1.png +0 -0
  472. package/dist/static/image/ConsentManagerProvider-Hydration-Behavior-should-handle-rapid-re-renders-without-blocking-children-1.png +0 -0
  473. package/dist/static/image/ConsentManagerProvider-Hydration-Behavior-should-not-block-SSR-provider-content-when-SSR-provider-wraps-ConsentManager-1.png +0 -0
  474. package/dist/static/image/ConsentManagerProvider-Hydration-Behavior-should-render-children-immediately-without-blocking-during-hydration-1.png +0 -0
  475. package/dist/static/image/ConsentManagerProvider-Hydration-Behavior-should-use-startTransition-for-non-blocking-state-updates-during-hydration-1.png +0 -0
  476. package/dist/static/image/useColorScheme-cleans-up-system-preference-listener-on-unmount-1.png +0 -0
  477. package/dist/static/image/useColorScheme-handles-default-theme-based-on-document-class-1.png +0 -0
  478. package/dist/static/image/useColorScheme-responds-to-system-preference-1.png +0 -0
  479. package/dist/static/image/useColorScheme-sets-dark-theme-correctly-1.png +0 -0
  480. package/dist/static/image/useColorScheme-updates-theme-when-default-theme-changes-1.png +0 -0
  481. package/dist/static/image/useColorScheme-updates-theme-when-system-preference-changes-1.png +0 -0
  482. package/dist/static/image/useConsentManager-provides-manager-object-when-configured-1.png +0 -0
  483. package/dist/static/image/useStyles-handles-string-className-correctly-1.png +0 -0
  484. package/dist/static/image/useStyles-merges-theme-and-component-styles-correctly-1.png +0 -0
  485. package/dist/static/image/useStyles-should-remove-base-default-styles-but-keep-theme-and-component-classNames-when-noStyle--true-1.png +0 -0
  486. package/dist/static/image/useStyles-should-remove-default-styles-but-keep-custom-classNames-when-theme-object-provides-noStyle--true-1.png +0 -0
  487. package/dist/static/image/useTheme-local-theme-takes-precedence-over-global-theme-1.png +0 -0
  488. package/dist/static/image/useTranslations-Custom-English-instead-of-English-when-German-is-selected-1.png +0 -0
  489. package/dist/static/image/useTranslations-falls-back-to-English-when-selected-language-is-not-available-1.png +0 -0
  490. package/dist/static/image/useTranslations-merges-custom-translations-with-defaults-1.png +0 -0
  491. package/dist/static/image/useTranslations-returns-English-translations-by-default-1.png +0 -0
  492. package/dist/test-setup.browser.cjs +0 -1
  493. package/dist/test-setup.browser.d.ts +0 -8
  494. package/dist/test-setup.browser.d.ts.map +0 -1
  495. package/dist/test-setup.browser.js +0 -1
  496. package/dist/types/consent-manager.d.ts.map +0 -1
  497. package/dist/types/theme/index.d.ts.map +0 -1
  498. package/dist/types/theme/style-keys.d.ts +0 -2
  499. package/dist/types/theme/style-keys.d.ts.map +0 -1
  500. package/dist/types/theme/style-types.d.ts.map +0 -1
  501. package/dist/utils/cn.d.ts.map +0 -1
  502. package/dist/utils/merge-styles.d.ts.map +0 -1
  503. package/dist/utils/test-helpers.d.ts.map +0 -1
  504. package/dist/utils/theme-utils.d.ts.map +0 -1
  505. package/dist/version.d.ts +0 -2
  506. package/dist/version.d.ts.map +0 -1
@@ -0,0 +1,214 @@
1
+ ---
2
+ title: Design Tokens
3
+ description: The six base token categories that control colors, typography, spacing, radius, shadows, and motion, plus optional dark-mode overrides.
4
+ ---
5
+ ## Color Tokens
6
+
7
+ Color tokens define the palette for all consent components. Set `colors` for light mode and `dark` for dark mode overrides.
8
+
9
+ ```tsx
10
+ const theme = {
11
+ colors: {
12
+ primary: '#6366f1',
13
+ primaryHover: '#4f46e5',
14
+ surface: '#ffffff',
15
+ surfaceHover: '#f9fafb',
16
+ border: '#e5e7eb',
17
+ borderHover: '#d1d5db',
18
+ text: '#1f2937',
19
+ textMuted: '#6b7280',
20
+ textOnPrimary: '#ffffff',
21
+ overlay: 'rgba(0, 0, 0, 0.5)',
22
+ switchTrack: '#d1d5db',
23
+ switchTrackActive: '#6366f1',
24
+ switchThumb: '#ffffff',
25
+ },
26
+ dark: {
27
+ primary: '#818cf8',
28
+ surface: '#1f2937',
29
+ text: '#f9fafb',
30
+ textMuted: '#9ca3af',
31
+ border: '#374151',
32
+ },
33
+ } satisfies Theme;
34
+ ```
35
+
36
+ ### ColorTokens
37
+
38
+ |Property|Type|Description|Default|Required|
39
+ |:--|:--|:--|:--|:--:|
40
+ |primary|string \|undefined|Primary brand/accent color for interactive elements.|-|Optional|
41
+ |primaryHover|string \|undefined|Hover/active state for primary elements.|-|Optional|
42
+ |surface|string \|undefined|Main background color for panels and containers.|-|Optional|
43
+ |surfaceHover|string \|undefined|Hover state for surface elements.|-|Optional|
44
+ |border|string \|undefined|Border color for containers and inputs.|-|Optional|
45
+ |borderHover|string \|undefined|Hover state for bordered elements.|-|Optional|
46
+ |text|string \|undefined|Primary text color for headings and body.|-|Optional|
47
+ |textMuted|string \|undefined|Muted text color for secondary content.|-|Optional|
48
+ |textOnPrimary|string \|undefined|Text color for content on primary background.|-|Optional|
49
+ |overlay|string \|undefined|Overlay color for modal backdrops.|-|Optional|
50
+ |switchTrack|string \|undefined|Toggle track color (off state).|-|Optional|
51
+ |switchTrackActive|string \|undefined|Toggle track color (on state).|-|Optional|
52
+ |switchThumb|string \|undefined|Toggle thumb color.|-|Optional|
53
+
54
+ ## Typography Tokens
55
+
56
+ Control font family, sizes, weights, and line heights.
57
+
58
+ ```tsx
59
+ const theme = {
60
+ typography: {
61
+ fontFamily: 'Inter, system-ui, sans-serif',
62
+ fontSize: { sm: '0.875rem', base: '1rem', lg: '1.125rem' },
63
+ fontWeight: { normal: 400, medium: 500, semibold: 600 },
64
+ lineHeight: { tight: '1.25', normal: '1.5', relaxed: '1.75' },
65
+ },
66
+ } satisfies Theme;
67
+ ```
68
+
69
+ ### TypographyTokens
70
+
71
+ |Property|Type|Description|Default|Required|
72
+ |:--|:--|:--|:--|:--:|
73
+ |fontFamily|string \|undefined|Font family for all components.|-|Optional|
74
+ |fontSize|Object \|undefined|Font sizes for text hierarchy.|-|Optional|
75
+ |fontWeight|Object \|undefined|Font weights for emphasis.|-|Optional|
76
+ |lineHeight|Object \|undefined|Line heights for readability.|-|Optional|
77
+
78
+ #### `fontSize`
79
+
80
+ Font sizes for text hierarchy.
81
+
82
+ |Property|Type|Description|Default|Required|
83
+ |:--|:--|:--|:--|:--:|
84
+ |sm|string \|undefined|@default '0.875rem'|-|Optional|
85
+ |base|string \|undefined|@default '1rem'|-|Optional|
86
+ |lg|string \|undefined|@default '1.125rem'|-|Optional|
87
+
88
+ #### `fontWeight`
89
+
90
+ Font weights for emphasis.
91
+
92
+ |Property|Type|Description|Default|Required|
93
+ |:--|:--|:--|:--|:--:|
94
+ |normal|number \|undefined|@default 400|-|Optional|
95
+ |medium|number \|undefined|@default 500|-|Optional|
96
+ |semibold|number \|undefined|@default 600|-|Optional|
97
+
98
+ #### `lineHeight`
99
+
100
+ Line heights for readability.
101
+
102
+ |Property|Type|Description|Default|Required|
103
+ |:--|:--|:--|:--|:--:|
104
+ |tight|string \|undefined|@default '1.25'|-|Optional|
105
+ |normal|string \|undefined|@default '1.5'|-|Optional|
106
+ |relaxed|string \|undefined|@default '1.75'|-|Optional|
107
+
108
+ ## Spacing Tokens
109
+
110
+ Five-step scale for internal padding, margins, and gaps.
111
+
112
+ ```tsx
113
+ const theme = {
114
+ spacing: {
115
+ xs: '0.25rem', // 4px
116
+ sm: '0.5rem', // 8px
117
+ md: '1rem', // 16px
118
+ lg: '1.5rem', // 24px
119
+ xl: '2rem', // 32px
120
+ },
121
+ } satisfies Theme;
122
+ ```
123
+
124
+ ### SpacingTokens
125
+
126
+ |Property|Type|Description|Default|Required|
127
+ |:--|:--|:--|:--|:--:|
128
+ |xs|string \|undefined|@default '0.25rem' (4px)|'0.25rem' (4px)|Optional|
129
+ |sm|string \|undefined|@default '0.5rem' (8px)|'0.5rem' (8px)|Optional|
130
+ |md|string \|undefined|@default '1rem' (16px)|'1rem' (16px)|Optional|
131
+ |lg|string \|undefined|@default '1.5rem' (24px)|'1.5rem' (24px)|Optional|
132
+ |xl|string \|undefined|@default '2rem' (32px)|'2rem' (32px)|Optional|
133
+
134
+ ## Radius Tokens
135
+
136
+ Border radius scale for rounded corners.
137
+
138
+ ```tsx
139
+ const theme = {
140
+ radius: {
141
+ sm: '0.25rem', // 4px
142
+ md: '0.5rem', // 8px
143
+ lg: '0.75rem', // 12px
144
+ full: '9999px', // Pill shape
145
+ },
146
+ } satisfies Theme;
147
+ ```
148
+
149
+ ### RadiusTokens
150
+
151
+ |Property|Type|Description|Default|Required|
152
+ |:--|:--|:--|:--|:--:|
153
+ |sm|string \|undefined|@default '0.25rem' (4px)|'0.25rem' (4px)|Optional|
154
+ |md|string \|undefined|@default '0.5rem' (8px)|'0.5rem' (8px)|Optional|
155
+ |lg|string \|undefined|@default '0.75rem' (12px)|'0.75rem' (12px)|Optional|
156
+ |full|string \|undefined|@default '9999px'|'9999px'|Optional|
157
+
158
+ ## Shadow Tokens
159
+
160
+ Box shadow scale for depth and elevation.
161
+
162
+ ```tsx
163
+ const theme = {
164
+ shadows: {
165
+ sm: '0 1px 2px hsla(0, 0%, 0%, 0.05)',
166
+ md: '0 4px 12px hsla(0, 0%, 0%, 0.08)',
167
+ lg: '0 8px 24px hsla(0, 0%, 0%, 0.12)',
168
+ },
169
+ } satisfies Theme;
170
+ ```
171
+
172
+ ### ShadowTokens
173
+
174
+ |Property|Type|Description|Default|Required|
175
+ |:--|:--|:--|:--|:--:|
176
+ |sm|string \|undefined|@default '0 1px 2px hsla(0, 0%, 0%, 0.05)'|'0 1px 2px hsla(0, 0%, 0%, 0.05)'|Optional|
177
+ |md|string \|undefined|@default '0 4px 12px hsla(0, 0%, 0%, 0.08)'|'0 4px 12px hsla(0, 0%, 0%, 0.08)'|Optional|
178
+ |lg|string \|undefined|@default '0 8px 24px hsla(0, 0%, 0%, 0.12)'|'0 8px 24px hsla(0, 0%, 0%, 0.12)'|Optional|
179
+
180
+ ## Motion Tokens
181
+
182
+ Animation duration and easing presets.
183
+
184
+ ```tsx
185
+ const theme = {
186
+ motion: {
187
+ duration: { fast: '100ms', normal: '200ms', slow: '300ms' },
188
+ easing: 'cubic-bezier(0.4, 0, 0.2, 1)',
189
+ easingOut: 'cubic-bezier(0.215, 0.61, 0.355, 1)',
190
+ easingInOut: 'cubic-bezier(0.645, 0.045, 0.355, 1)',
191
+ easingSpring: 'cubic-bezier(0.34, 1.56, 0.64, 1)',
192
+ },
193
+ } satisfies Theme;
194
+ ```
195
+
196
+ ### MotionTokens
197
+
198
+ |Property|Type|Description|Default|Required|
199
+ |:--|:--|:--|:--|:--:|
200
+ |duration|Object \|undefined|Duration presets for transitions.|-|Optional|
201
+ |easing|string \|undefined|Default CSS easing function for general animation curves.|'cubic-bezier(0.4, 0, 0.2, 1)'|Optional|
202
+ |easingOut|string \|undefined|CSS easing function for enter/exit animations. Use for modals, tooltips, dropdowns, and any element entering or exiting.|'cubic-bezier(0.215, 0.61, 0.355, 1)'|Optional|
203
+ |easingInOut|string \|undefined|CSS easing function for on-screen movement. Use when elements already on screen need to move or morph.|'cubic-bezier(0.645, 0.045, 0.355, 1)'|Optional|
204
+ |easingSpring|string \|undefined|CSS easing function with spring-like overshoot. Use for playful, bouncy animations.|'cubic-bezier(0.34, 1.56, 0.64, 1)'|Optional|
205
+
206
+ #### `duration`
207
+
208
+ Duration presets for transitions.
209
+
210
+ |Property|Type|Description|Default|Required|
211
+ |:--|:--|:--|:--|:--:|
212
+ |fast|string \|undefined|@default '100ms'|-|Optional|
213
+ |normal|string \|undefined|@default '200ms'|-|Optional|
214
+ |slow|string \|undefined|@default '300ms'|-|Optional|
@@ -0,0 +1,137 @@
1
+ ---
2
+ title: Troubleshooting
3
+ description: Solutions for common issues with @c15t/react — provider errors, missing banners, consent persistence, and more.
4
+ ---
5
+ ## "Provider not found" Error
6
+
7
+ **Symptom:** `useConsentManager must be used within a ConsentManagerProvider` error.
8
+
9
+ **Fix:** Ensure the component calling `useConsentManager()` (or any c15t hook) is rendered inside a `ConsentManagerProvider`:
10
+
11
+ ```tsx
12
+ // Wrong — hook is outside the provider
13
+ function App() {
14
+ const { consents } = useConsentManager(); // throws
15
+ return <ConsentManagerProvider options={...}>...</ConsentManagerProvider>;
16
+ }
17
+
18
+ // Correct — hook is inside the provider
19
+ function App() {
20
+ return (
21
+ <ConsentManagerProvider options={...}>
22
+ <MyComponent /> {/* useConsentManager works here */}
23
+ </ConsentManagerProvider>
24
+ );
25
+ }
26
+ ```
27
+
28
+ ## Banner Doesn't Show
29
+
30
+ **Possible causes:**
31
+
32
+ 1. **Opt-out jurisdiction** — In CCPA/opt-out regions, the banner is not shown because tracking is allowed by default. Check `model` from `useConsentManager()` — if it's `'opt-out'`, the banner is intentionally hidden.
33
+
34
+ 2. **Consent already given** — If the user has already made a consent choice, the banner won't reappear. Clear cookies or use `resetConsents()` to test again.
35
+
36
+ 3. **`activeUI` is `'none'`** — Something is explicitly setting `activeUI` to `'none'`. Check the DevTools panel for the current consent state.
37
+
38
+ 4. **Backend not responding** — In `'c15t'` mode, the banner waits for the backend `/init` response. Check the Network tab for failed requests to your `backendURL`.
39
+
40
+ ```tsx
41
+ // Debug: check what the consent manager sees
42
+ const { activeUI, model, isLoadingConsentInfo } = useConsentManager();
43
+ console.log({ activeUI, model, isLoadingConsentInfo });
44
+ ```
45
+
46
+ ## Consent Not Persisting
47
+
48
+ **Symptom:** Consent is lost after page reload.
49
+
50
+ **Possible causes:**
51
+
52
+ 1. **Incognito/private mode** — Some browsers restrict cookie storage in private browsing.
53
+
54
+ 2. **Cookie settings** — In `'offline'` mode, consent is stored in cookies. Ensure cookies are not being blocked by browser settings or extensions.
55
+
56
+ 3. **Different domains** — Cookies are domain-scoped. If your dev server uses a different domain than production, consent won't carry over.
57
+
58
+ 4. **Backend errors** — In `'c15t'` mode, check that the backend is saving consent successfully. Enable `debug: true` in provider options to see detailed logs.
59
+
60
+ ## Scripts Not Loading
61
+
62
+ **Symptom:** Third-party scripts configured in the `scripts` option don't load after consent is granted.
63
+
64
+ **Checklist:**
65
+
66
+ 1. **Wrong category name** — The `category` on the script must match one of the `consentCategories` names. For example, `'measurement'` not `'analytics'`.
67
+
68
+ 2. **Consent condition not met** — Use `has('measurement')` to verify the category is actually consented.
69
+
70
+ 3. **Script error** — Check the browser DevTools Console for script loading errors. The `onError` callback can help debug:
71
+
72
+ ```tsx
73
+ {
74
+ id: 'analytics',
75
+ src: 'https://...',
76
+ category: 'measurement',
77
+ onError: ({ error }) => console.error('Script failed:', error),
78
+ }
79
+ ```
80
+
81
+ 4. **Ad blocker** — Browser extensions may block the script regardless of consent. The `anonymizeId` option (default: `true`) helps avoid pattern-based blocking.
82
+
83
+ ## SSR Hydration Mismatch
84
+
85
+ **Symptom:** React hydration warnings, consent banner flashes briefly, or consent state differs between server and client.
86
+
87
+ **Fixes:**
88
+
89
+ 1. **Missing `ssrData`** — Ensure you're passing the SSR data Promise to the provider:
90
+
91
+ ```tsx
92
+ <ConsentManagerProvider
93
+ options={{
94
+ mode: 'hosted',
95
+ backendURL: '...',
96
+ ssrData: fetchSSRData({ backendURL: '...', headers }),
97
+ }}
98
+ >
99
+ ```
100
+
101
+ 2. **Stale cache** — If using a CDN or caching layer, ensure the SSR data is fresh per-request and not shared across users.
102
+
103
+ 3. **Debug with `useSSRStatus`** — Check if SSR data was actually consumed:
104
+
105
+ ```tsx
106
+ const { ssrDataUsed, ssrSkippedReason } = useSSRStatus();
107
+ ```
108
+
109
+ See [Server-Side Utilities](/docs/frameworks/react/server-side) for full SSR setup.
110
+
111
+ ## TypeScript Errors
112
+
113
+ **Common import issues:**
114
+
115
+ ```tsx
116
+ // Components and hooks — main entry point
117
+ import { ConsentManagerProvider, useConsentManager } from '@c15t/react';
118
+
119
+ // Server utilities — separate entry point
120
+ import { fetchSSRData } from '@c15t/react/server';
121
+
122
+ // Headless (hooks only, no components)
123
+ import { useConsentManager } from '@c15t/react/headless';
124
+ ```
125
+
126
+ If you see type errors after updating, try:
127
+
128
+ ```sh
129
+ rm -rf node_modules/.cache
130
+ bun install
131
+ ```
132
+
133
+ ## Still Stuck?
134
+
135
+ * Enable `debug: true` in provider options for verbose console logging
136
+ * Use the [DevTools](/docs/frameworks/react/components/dev-tools) panel to inspect live consent state
137
+ * Check the [GitHub issues](https://github.com/c15t/c15t/issues) for known bugs
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c15t/react",
3
- "version": "2.0.0-rc.3",
3
+ "version": "2.0.0-rc.5",
4
4
  "description": "Developer-first CMP for React: cookie banner, consent manager, preferences centre. GDPR ready with minimal setup and rich customization",
5
5
  "keywords": [
6
6
  "react",
@@ -30,69 +30,116 @@
30
30
  "type": "module",
31
31
  "exports": {
32
32
  "./server": {
33
- "types": "./dist/server/index.d.ts",
33
+ "types": "./dist-types/server/index.d.ts",
34
34
  "import": "./dist/server/index.js",
35
35
  "require": "./dist/server/index.cjs"
36
36
  },
37
37
  "./headless": {
38
- "types": "./dist/headless.d.ts",
38
+ "types": "./dist-types/headless.d.ts",
39
39
  "import": "./dist/headless.js",
40
40
  "require": "./dist/headless.cjs"
41
41
  },
42
42
  "./preference-center": {
43
- "types": "./dist/components/preference-center/index.d.ts",
43
+ "types": "./dist-types/components/preference-center/index.d.ts",
44
44
  "import": "./dist/components/preference-center/index.js",
45
45
  "require": "./dist/components/preference-center/index.cjs"
46
46
  },
47
47
  "./preference-center-widget": {
48
- "types": "./dist/components/preference-center-widget/index.d.ts",
48
+ "types": "./dist-types/components/preference-center-widget/index.d.ts",
49
49
  "import": "./dist/components/preference-center-widget/index.js",
50
50
  "require": "./dist/components/preference-center-widget/index.cjs"
51
51
  },
52
52
  "./cookie-banner": {
53
- "types": "./dist/components/cookie-banner/index.d.ts",
53
+ "types": "./dist-types/components/cookie-banner/index.d.ts",
54
54
  "import": "./dist/components/cookie-banner/index.js",
55
55
  "require": "./dist/components/cookie-banner/index.cjs"
56
56
  },
57
+ "./components/consent-banner": {
58
+ "types": "./dist-types/components/consent-banner/index.d.ts",
59
+ "import": "./client/components/consent-banner.js",
60
+ "require": "./dist/components/consent-banner/index.cjs"
61
+ },
62
+ "./components/consent-dialog": {
63
+ "types": "./dist-types/components/consent-dialog/index.d.ts",
64
+ "import": "./client/components/consent-dialog.js",
65
+ "require": "./dist/components/consent-dialog/index.cjs"
66
+ },
67
+ "./components/consent-dialog-trigger": {
68
+ "types": "./dist-types/components/consent-dialog-trigger/index.d.ts",
69
+ "import": "./client/components/consent-dialog-trigger.js",
70
+ "require": "./dist/components/consent-dialog-trigger/index.cjs"
71
+ },
72
+ "./components/consent-dialog-link": {
73
+ "types": "./dist-types/components/consent-dialog-link/index.d.ts",
74
+ "import": "./client/components/consent-dialog-link.js",
75
+ "require": "./dist/components/consent-dialog-link/index.cjs"
76
+ },
77
+ "./components/consent-widget": {
78
+ "types": "./dist-types/components/consent-widget/index.d.ts",
79
+ "import": "./client/components/consent-widget.js",
80
+ "require": "./dist/components/consent-widget/index.cjs"
81
+ },
82
+ "./components/frame": {
83
+ "types": "./dist-types/components/frame/index.d.ts",
84
+ "import": "./client/components/frame.js",
85
+ "require": "./dist/components/frame/index.cjs"
86
+ },
87
+ "./components/iab-consent-banner": {
88
+ "types": "./dist-types/components/iab-consent-banner/index.d.ts",
89
+ "import": "./client/components/iab-consent-banner.js",
90
+ "require": "./dist/components/iab-consent-banner/index.cjs"
91
+ },
92
+ "./components/iab-consent-dialog": {
93
+ "types": "./dist-types/components/iab-consent-dialog/index.d.ts",
94
+ "import": "./client/components/iab-consent-dialog.js",
95
+ "require": "./dist/components/iab-consent-dialog/index.cjs"
96
+ },
57
97
  "./hooks": {
58
- "types": "./dist/hooks/index.d.ts",
98
+ "types": "./dist-types/hooks/index.d.ts",
59
99
  "import": "./dist/hooks/index.js",
60
100
  "require": "./dist/hooks/index.cjs"
61
101
  },
62
102
  "./context": {
63
- "types": "./dist/context/index.d.ts",
103
+ "types": "./dist-types/context/index.d.ts",
64
104
  "import": "./dist/context/index.js",
65
105
  "require": "./dist/context/index.cjs"
66
106
  },
67
107
  "./types": {
68
- "types": "./dist/types/index.d.ts",
108
+ "types": "./dist-types/types/index.d.ts",
69
109
  "import": "./dist/types/index.js",
70
110
  "require": "./dist/types/index.cjs"
71
111
  },
72
112
  "./utils": {
73
- "types": "./dist/utils/index.d.ts",
113
+ "types": "./dist-types/utils/index.d.ts",
74
114
  "import": "./dist/utils/index.js",
75
115
  "require": "./dist/utils/index.cjs"
76
116
  },
77
117
  ".": {
78
- "types": "./dist/index.d.ts",
118
+ "types": "./dist-types/index.d.ts",
79
119
  "import": "./dist/index.js",
80
120
  "require": "./dist/index.cjs"
81
121
  }
82
122
  },
83
123
  "main": "./dist/index.cjs",
84
124
  "module": "./dist/index.js",
85
- "types": "./dist/index.d.ts",
125
+ "types": "./dist-types/index.d.ts",
86
126
  "files": [
87
- "dist"
127
+ "dist",
128
+ "docs",
129
+ "dist-types",
130
+ "client",
131
+ "!dist/mockServiceWorker.js"
88
132
  ],
89
133
  "scripts": {
90
134
  "prebuild": "genversion --esm --semi src/version.ts",
91
- "build": "bun prebuild && rslib build",
135
+ "build": "bun prebuild && rslib build && bun run clean:dist:test-artifacts && bun ../../scripts/agent-docs/generate-package-docs.ts @c15t/react",
136
+ "build:agent-docs": "bun ../../scripts/agent-docs/generate-package-docs.ts @c15t/react",
92
137
  "check-types": "bun prebuild && tsc --noEmit",
138
+ "clean:dist:test-artifacts": "bun --eval \"import { rmSync } from 'node:fs'; rmSync('dist/mockServiceWorker.js', { force: true });\"",
93
139
  "dev": "bun prebuild && rslib build",
94
140
  "fmt": "bun biome format --write . && bun biome check --formatter-enabled=false --linter-enabled=false --write",
95
141
  "lint": "bun biome lint ./src",
142
+ "prepack": "cd ../.. && bunx turbo run build --filter=@c15t/react",
96
143
  "test": "bun prebuild && vitest run",
97
144
  "test:watch": "bun prebuild && vitest"
98
145
  },
@@ -102,15 +149,15 @@
102
149
  "not op_mini all"
103
150
  ],
104
151
  "dependencies": {
105
- "@c15t/ui": "2.0.0-rc.3",
152
+ "@c15t/ui": "2.0.0-rc.5",
106
153
  "@radix-ui/react-accordion": "1.2.12",
107
154
  "@radix-ui/react-slot": "1.2.4",
108
155
  "@radix-ui/react-switch": "1.2.6",
109
- "c15t": "2.0.0-rc.3",
156
+ "c15t": "2.0.0-rc.5",
110
157
  "clsx": "2.1.1"
111
158
  },
112
159
  "devDependencies": {
113
- "@c15t/backend": "2.0.0-rc.3",
160
+ "@c15t/backend": "2.0.0-rc.5",
114
161
  "@c15t/typescript-config": "0.0.1-beta.1",
115
162
  "@c15t/vitest-config": "1.0.0",
116
163
  "genversion": "3.2.0",
@@ -1 +0,0 @@
1
- "use strict";const __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_exports__={};const jsx_runtime_namespaceObject=require("react/jsx-runtime"),external_vitest_namespaceObject=require("vitest"),browser_namespaceObject=require("vitest/browser"),external_vitest_browser_react_namespaceObject=require("vitest-browser-react"),index_cjs_namespaceObject=require("../consent-banner/index.cjs"),external_consent_dialog_index_cjs_namespaceObject=require("../consent-dialog/index.cjs"),external_consent_dialog_trigger_index_cjs_namespaceObject=require("../consent-dialog-trigger/index.cjs"),consent_manager_provider_cjs_namespaceObject=require("../../providers/consent-manager-provider.cjs"),localStorageMock=(()=>{let e={};return{getItem:t=>e[t]||null,setItem:(t,n)=>{e[t]=n.toString()},removeItem:t=>{delete e[t]},clear:()=>{e={}}}})();Object.defineProperty(window,"localStorage",{value:localStorageMock});const defaultOptions={mode:"offline"};for(var __rspack_i in(0,external_vitest_namespaceObject.describe)("activeUI Transitions E2E Tests",()=>{(0,external_vitest_namespaceObject.beforeEach)(()=>{for(let e of(window.localStorage.clear(),document.cookie.split(";"))){let t=e.split("=")[0]?.trim();t&&(document.cookie=`${t}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/`)}external_vitest_namespaceObject.vi.clearAllMocks(),(0,consent_manager_provider_cjs_namespaceObject.clearConsentRuntimeCache)()}),(0,external_vitest_namespaceObject.test)("banner shows on first visit (activeUI becomes banner)",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{})})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3})}),(0,external_vitest_namespaceObject.test)("customize transitions banner → dialog",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(external_consent_dialog_index_cjs_namespaceObject.ConsentDialog,{})]})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let e=document.querySelector('[data-testid="consent-banner-customize-button"]');await browser_namespaceObject.userEvent.click(e),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-dialog-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let t=document.querySelector('[data-testid="consent-banner-root"]');(0,external_vitest_namespaceObject.expect)(t).not.toBeInTheDocument()}),(0,external_vitest_namespaceObject.test)("save from dialog hides all UI",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(external_consent_dialog_index_cjs_namespaceObject.ConsentDialog,{})]})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-customize-button"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let e=document.querySelector('[data-testid="consent-banner-customize-button"]');await browser_namespaceObject.userEvent.click(e),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-dialog-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let t=document.querySelector('[data-testid="consent-widget-footer-save-button"]');await browser_namespaceObject.userEvent.click(t),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-root"]'),t=document.querySelector('[data-testid="consent-dialog-root"]');(0,external_vitest_namespaceObject.expect)(e).not.toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(t).not.toBeInTheDocument()},{timeout:3e3})}),(0,external_vitest_namespaceObject.test)("banner hidden for returning visitor",async()=>{let e={consents:{necessary:!0,functionality:!0,marketing:!0,measurement:!0,experience:!0},consentInfo:{time:Date.now(),type:"accept-all"}};window.localStorage.setItem("c15t",JSON.stringify(e)),(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{})})),await new Promise(e=>setTimeout(e,500));let t=document.querySelector('[data-testid="consent-banner-root"]');(0,external_vitest_namespaceObject.expect)(t).not.toBeInTheDocument()}),(0,external_vitest_namespaceObject.test)("trigger appears after consent, opens dialog on click",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(external_consent_dialog_index_cjs_namespaceObject.ConsentDialog,{}),(0,jsx_runtime_namespaceObject.jsx)(external_consent_dialog_trigger_index_cjs_namespaceObject.ConsentDialogTrigger,{showWhen:"always"})]})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-accept-button"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let e=document.querySelector('[data-testid="consent-banner-accept-button"]');await browser_namespaceObject.userEvent.click(e),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-root"]');(0,external_vitest_namespaceObject.expect)(e).not.toBeInTheDocument()},{timeout:3e3}),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('button[aria-label="Open privacy settings"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let t=document.querySelector('button[aria-label="Open privacy settings"]');await browser_namespaceObject.userEvent.click(t),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-dialog-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3})}),(0,external_vitest_namespaceObject.test)("full lifecycle: banner → customize → dialog → save → trigger → dialog",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(external_consent_dialog_index_cjs_namespaceObject.ConsentDialog,{}),(0,jsx_runtime_namespaceObject.jsx)(external_consent_dialog_trigger_index_cjs_namespaceObject.ConsentDialogTrigger,{showWhen:"always"})]})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let e=document.querySelector('[data-testid="consent-banner-customize-button"]');await browser_namespaceObject.userEvent.click(e),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-dialog-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let t=document.querySelector('[data-testid="consent-widget-footer-save-button"]');await browser_namespaceObject.userEvent.click(t),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-dialog-root"]');(0,external_vitest_namespaceObject.expect)(e).not.toBeInTheDocument()},{timeout:3e3}),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('button[aria-label="Open privacy settings"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let n=document.querySelector('button[aria-label="Open privacy settings"]');await browser_namespaceObject.userEvent.click(n),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-dialog-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3})})}),__webpack_exports__)exports[__rspack_i]=__webpack_exports__[__rspack_i];Object.defineProperty(exports,"__esModule",{value:!0});
@@ -1 +0,0 @@
1
- let t;import{jsx as e,jsxs as o}from"react/jsx-runtime";import{beforeEach as n,describe as a,expect as i,test as r,vi as c}from"vitest";import{userEvent as s}from"vitest/browser";import{render as u}from"vitest-browser-react";import{ConsentBanner as d}from"../consent-banner/index.js";import{ConsentDialog as l}from"../consent-dialog/index.js";import{ConsentDialogTrigger as m}from"../consent-dialog-trigger/index.js";import{ConsentManagerProvider as w,clearConsentRuntimeCache as y}from"../../providers/consent-manager-provider.js";Object.defineProperty(window,"localStorage",{value:(t={},{getItem:e=>t[e]||null,setItem:(e,o)=>{t[e]=o.toString()},removeItem:e=>{delete t[e]},clear:()=>{t={}}})});let b={mode:"offline"};a("activeUI Transitions E2E Tests",()=>{n(()=>{for(let t of(window.localStorage.clear(),document.cookie.split(";"))){let e=t.split("=")[0]?.trim();e&&(document.cookie=`${e}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/`)}c.clearAllMocks(),y()}),r("banner shows on first visit (activeUI becomes banner)",async()=>{u(e(w,{options:b,children:e(d,{})})),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-banner-root"]')).toBeInTheDocument()},{timeout:3e3})}),r("customize transitions banner → dialog",async()=>{u(o(w,{options:b,children:[e(d,{}),e(l,{})]})),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-banner-root"]')).toBeInTheDocument()},{timeout:3e3});let t=document.querySelector('[data-testid="consent-banner-customize-button"]');await s.click(t),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-dialog-root"]')).toBeInTheDocument()},{timeout:3e3}),i(document.querySelector('[data-testid="consent-banner-root"]')).not.toBeInTheDocument()}),r("save from dialog hides all UI",async()=>{u(o(w,{options:b,children:[e(d,{}),e(l,{})]})),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-banner-customize-button"]')).toBeInTheDocument()},{timeout:3e3});let t=document.querySelector('[data-testid="consent-banner-customize-button"]');await s.click(t),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-dialog-root"]')).toBeInTheDocument()},{timeout:3e3});let n=document.querySelector('[data-testid="consent-widget-footer-save-button"]');await s.click(n),await c.waitFor(()=>{let t=document.querySelector('[data-testid="consent-banner-root"]'),e=document.querySelector('[data-testid="consent-dialog-root"]');i(t).not.toBeInTheDocument(),i(e).not.toBeInTheDocument()},{timeout:3e3})}),r("banner hidden for returning visitor",async()=>{let t={consents:{necessary:!0,functionality:!0,marketing:!0,measurement:!0,experience:!0},consentInfo:{time:Date.now(),type:"accept-all"}};window.localStorage.setItem("c15t",JSON.stringify(t)),u(e(w,{options:b,children:e(d,{})})),await new Promise(t=>setTimeout(t,500)),i(document.querySelector('[data-testid="consent-banner-root"]')).not.toBeInTheDocument()}),r("trigger appears after consent, opens dialog on click",async()=>{u(o(w,{options:b,children:[e(d,{}),e(l,{}),e(m,{showWhen:"always"})]})),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-banner-accept-button"]')).toBeInTheDocument()},{timeout:3e3});let t=document.querySelector('[data-testid="consent-banner-accept-button"]');await s.click(t),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-banner-root"]')).not.toBeInTheDocument()},{timeout:3e3}),await c.waitFor(()=>{i(document.querySelector('button[aria-label="Open privacy settings"]')).toBeInTheDocument()},{timeout:3e3});let n=document.querySelector('button[aria-label="Open privacy settings"]');await s.click(n),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-dialog-root"]')).toBeInTheDocument()},{timeout:3e3})}),r("full lifecycle: banner → customize → dialog → save → trigger → dialog",async()=>{u(o(w,{options:b,children:[e(d,{}),e(l,{}),e(m,{showWhen:"always"})]})),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-banner-root"]')).toBeInTheDocument()},{timeout:3e3});let t=document.querySelector('[data-testid="consent-banner-customize-button"]');await s.click(t),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-dialog-root"]')).toBeInTheDocument()},{timeout:3e3});let n=document.querySelector('[data-testid="consent-widget-footer-save-button"]');await s.click(n),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-dialog-root"]')).not.toBeInTheDocument()},{timeout:3e3}),await c.waitFor(()=>{i(document.querySelector('button[aria-label="Open privacy settings"]')).toBeInTheDocument()},{timeout:3e3});let a=document.querySelector('button[aria-label="Open privacy settings"]');await s.click(a),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-dialog-root"]')).toBeInTheDocument()},{timeout:3e3})})});
@@ -1 +0,0 @@
1
- "use strict";const __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_exports__={};const jsx_runtime_namespaceObject=require("react/jsx-runtime"),external_vitest_namespaceObject=require("vitest"),browser_namespaceObject=require("vitest/browser"),external_vitest_browser_react_namespaceObject=require("vitest-browser-react"),index_cjs_namespaceObject=require("../consent-banner/index.cjs"),external_consent_dialog_index_cjs_namespaceObject=require("../consent-dialog/index.cjs"),external_consent_dialog_trigger_index_cjs_namespaceObject=require("../consent-dialog-trigger/index.cjs"),external_consent_widget_index_cjs_namespaceObject=require("../consent-widget/index.cjs"),consent_manager_provider_cjs_namespaceObject=require("../../providers/consent-manager-provider.cjs"),localStorageMock=(()=>{let e={};return{getItem:t=>e[t]||null,setItem:(t,n)=>{e[t]=n.toString()},removeItem:t=>{delete e[t]},clear:()=>{e={}}}})();Object.defineProperty(window,"localStorage",{value:localStorageMock});const defaultOptions={mode:"offline"};for(var __rspack_i in(0,external_vitest_namespaceObject.describe)("Consent Flow E2E Tests",()=>{(0,external_vitest_namespaceObject.beforeEach)(()=>{for(let e of(window.localStorage.clear(),document.cookie.split(";"))){let t=e.split("=")[0]?.trim();t&&(document.cookie=`${t}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/`)}external_vitest_namespaceObject.vi.clearAllMocks(),(0,consent_manager_provider_cjs_namespaceObject.clearConsentRuntimeCache)()}),(0,external_vitest_namespaceObject.describe)("First Visit Flow",()=>{(0,external_vitest_namespaceObject.test)("should show cookie banner to first-time visitor",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{})})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3})}),(0,external_vitest_namespaceObject.test)("should hide banner after accepting all",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{})})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-accept-button"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let e=document.querySelector('[data-testid="consent-banner-accept-button"]');await browser_namespaceObject.userEvent.click(e),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-root"]');(0,external_vitest_namespaceObject.expect)(e).not.toBeInTheDocument()},{timeout:3e3})}),(0,external_vitest_namespaceObject.test)("should hide banner after rejecting all",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{})})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-reject-button"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let e=document.querySelector('[data-testid="consent-banner-reject-button"]');await browser_namespaceObject.userEvent.click(e),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-root"]');(0,external_vitest_namespaceObject.expect)(e).not.toBeInTheDocument()},{timeout:3e3})})}),(0,external_vitest_namespaceObject.describe)("Consent Persistence",()=>{(0,external_vitest_namespaceObject.test)("should persist consent to localStorage on accept",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{})})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-accept-button"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let e=document.querySelector('[data-testid="consent-banner-accept-button"]');await browser_namespaceObject.userEvent.click(e),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=window.localStorage.getItem("c15t");(0,external_vitest_namespaceObject.expect)(e).toBeTruthy();let t=JSON.parse(e);(0,external_vitest_namespaceObject.expect)(t.consents).toBeTruthy(),(0,external_vitest_namespaceObject.expect)(t.consents.necessary).toBe(!0)},{timeout:3e3})}),(0,external_vitest_namespaceObject.test)("should persist reject decision to localStorage",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{})})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-reject-button"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let e=document.querySelector('[data-testid="consent-banner-reject-button"]');await browser_namespaceObject.userEvent.click(e),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=window.localStorage.getItem("c15t");(0,external_vitest_namespaceObject.expect)(e).toBeTruthy();let t=JSON.parse(e);(0,external_vitest_namespaceObject.expect)(t.consents.necessary).toBe(!0),(0,external_vitest_namespaceObject.expect)(t.consents.marketing).toBe(!1),(0,external_vitest_namespaceObject.expect)(t.consents.measurement).toBe(!1)},{timeout:3e3})})}),(0,external_vitest_namespaceObject.describe)("Returning Visitor Flow",()=>{(0,external_vitest_namespaceObject.test)("should not show banner if user has already consented",async()=>{let e={consents:{necessary:!0,functionality:!0,marketing:!0,measurement:!0,experience:!0},consentInfo:{time:Date.now(),type:"accept-all"}};window.localStorage.setItem("c15t",JSON.stringify(e)),(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{})})),await new Promise(e=>setTimeout(e,500));let t=document.querySelector('[data-testid="consent-banner-root"]');(0,external_vitest_namespaceObject.expect)(t).not.toBeInTheDocument()})}),(0,external_vitest_namespaceObject.describe)("Preference Center Trigger",()=>{(0,external_vitest_namespaceObject.test)("should show trigger after consent given when showWhen is always",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:(0,jsx_runtime_namespaceObject.jsx)(external_consent_dialog_trigger_index_cjs_namespaceObject.ConsentDialogTrigger,{showWhen:"always"})})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('button[aria-label="Open privacy settings"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3})})}),(0,external_vitest_namespaceObject.describe)("Widget Integration",()=>{(0,external_vitest_namespaceObject.test)("should render widget with all consent categories",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:(0,jsx_runtime_namespaceObject.jsx)(external_consent_widget_index_cjs_namespaceObject.ConsentWidget,{})})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-widget-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3}),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelectorAll('[role="switch"]');(0,external_vitest_namespaceObject.expect)(e.length).toBeGreaterThan(0)},{timeout:3e3})}),(0,external_vitest_namespaceObject.test)("should have disabled necessary consent toggle",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:(0,jsx_runtime_namespaceObject.jsx)(external_consent_widget_index_cjs_namespaceObject.ConsentWidget,{})})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-widget-switch-necessary"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(e?.getAttribute("data-disabled")).toBe("")},{timeout:3e3})})}),(0,external_vitest_namespaceObject.describe)("Dialog Integration",()=>{(0,external_vitest_namespaceObject.test)("should show dialog when open prop is true",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:(0,jsx_runtime_namespaceObject.jsx)(external_consent_dialog_index_cjs_namespaceObject.ConsentDialog,{open:!0})})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-dialog-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3})}),(0,external_vitest_namespaceObject.test)("should contain widget inside dialog",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:(0,jsx_runtime_namespaceObject.jsx)(external_consent_dialog_index_cjs_namespaceObject.ConsentDialog,{open:!0})})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-widget-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3})})}),(0,external_vitest_namespaceObject.describe)("Complete Flow",()=>{(0,external_vitest_namespaceObject.test)("should complete full consent flow: banner -> customize -> save",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(external_consent_dialog_index_cjs_namespaceObject.ConsentDialog,{})]})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let e=document.querySelector('[data-testid="consent-banner-customize-button"]');await browser_namespaceObject.userEvent.click(e),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-dialog-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let t=document.querySelector('[data-testid="consent-widget-switch-marketing"]');t&&await browser_namespaceObject.userEvent.click(t);let n=document.querySelector('[data-testid="consent-widget-footer-save-button"]');await browser_namespaceObject.userEvent.click(n),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=window.localStorage.getItem("c15t");(0,external_vitest_namespaceObject.expect)(e).toBeTruthy();let t=JSON.parse(e);(0,external_vitest_namespaceObject.expect)(t.consents).toBeTruthy()},{timeout:3e3})})})}),__webpack_exports__)exports[__rspack_i]=__webpack_exports__[__rspack_i];Object.defineProperty(exports,"__esModule",{value:!0});
@@ -1 +0,0 @@
1
- let e;import{jsx as t,jsxs as o}from"react/jsx-runtime";import{beforeEach as n,describe as a,expect as i,test as r,vi as c}from"vitest";import{userEvent as s}from"vitest/browser";import{render as l}from"vitest-browser-react";import{ConsentBanner as d}from"../consent-banner/index.js";import{ConsentDialog as u}from"../consent-dialog/index.js";import{ConsentDialogTrigger as m}from"../consent-dialog-trigger/index.js";import{ConsentWidget as w}from"../consent-widget/index.js";import{ConsentManagerProvider as h,clearConsentRuntimeCache as y}from"../../providers/consent-manager-provider.js";Object.defineProperty(window,"localStorage",{value:(e={},{getItem:t=>e[t]||null,setItem:(t,o)=>{e[t]=o.toString()},removeItem:t=>{delete e[t]},clear:()=>{e={}}})});let g={mode:"offline"};a("Consent Flow E2E Tests",()=>{n(()=>{for(let e of(window.localStorage.clear(),document.cookie.split(";"))){let t=e.split("=")[0]?.trim();t&&(document.cookie=`${t}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/`)}c.clearAllMocks(),y()}),a("First Visit Flow",()=>{r("should show cookie banner to first-time visitor",async()=>{l(t(h,{options:g,children:t(d,{})})),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-banner-root"]')).toBeInTheDocument()},{timeout:3e3})}),r("should hide banner after accepting all",async()=>{l(t(h,{options:g,children:t(d,{})})),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-banner-accept-button"]')).toBeInTheDocument()},{timeout:3e3});let e=document.querySelector('[data-testid="consent-banner-accept-button"]');await s.click(e),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-banner-root"]')).not.toBeInTheDocument()},{timeout:3e3})}),r("should hide banner after rejecting all",async()=>{l(t(h,{options:g,children:t(d,{})})),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-banner-reject-button"]')).toBeInTheDocument()},{timeout:3e3});let e=document.querySelector('[data-testid="consent-banner-reject-button"]');await s.click(e),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-banner-root"]')).not.toBeInTheDocument()},{timeout:3e3})})}),a("Consent Persistence",()=>{r("should persist consent to localStorage on accept",async()=>{l(t(h,{options:g,children:t(d,{})})),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-banner-accept-button"]')).toBeInTheDocument()},{timeout:3e3});let e=document.querySelector('[data-testid="consent-banner-accept-button"]');await s.click(e),await c.waitFor(()=>{let e=window.localStorage.getItem("c15t");i(e).toBeTruthy();let t=JSON.parse(e);i(t.consents).toBeTruthy(),i(t.consents.necessary).toBe(!0)},{timeout:3e3})}),r("should persist reject decision to localStorage",async()=>{l(t(h,{options:g,children:t(d,{})})),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-banner-reject-button"]')).toBeInTheDocument()},{timeout:3e3});let e=document.querySelector('[data-testid="consent-banner-reject-button"]');await s.click(e),await c.waitFor(()=>{let e=window.localStorage.getItem("c15t");i(e).toBeTruthy();let t=JSON.parse(e);i(t.consents.necessary).toBe(!0),i(t.consents.marketing).toBe(!1),i(t.consents.measurement).toBe(!1)},{timeout:3e3})})}),a("Returning Visitor Flow",()=>{r("should not show banner if user has already consented",async()=>{let e={consents:{necessary:!0,functionality:!0,marketing:!0,measurement:!0,experience:!0},consentInfo:{time:Date.now(),type:"accept-all"}};window.localStorage.setItem("c15t",JSON.stringify(e)),l(t(h,{options:g,children:t(d,{})})),await new Promise(e=>setTimeout(e,500)),i(document.querySelector('[data-testid="consent-banner-root"]')).not.toBeInTheDocument()})}),a("Preference Center Trigger",()=>{r("should show trigger after consent given when showWhen is always",async()=>{l(t(h,{options:g,children:t(m,{showWhen:"always"})})),await c.waitFor(()=>{i(document.querySelector('button[aria-label="Open privacy settings"]')).toBeInTheDocument()},{timeout:3e3})})}),a("Widget Integration",()=>{r("should render widget with all consent categories",async()=>{l(t(h,{options:g,children:t(w,{})})),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-widget-root"]')).toBeInTheDocument()},{timeout:3e3}),await c.waitFor(()=>{i(document.querySelectorAll('[role="switch"]').length).toBeGreaterThan(0)},{timeout:3e3})}),r("should have disabled necessary consent toggle",async()=>{l(t(h,{options:g,children:t(w,{})})),await c.waitFor(()=>{let e=document.querySelector('[data-testid="consent-widget-switch-necessary"]');i(e).toBeInTheDocument(),i(e?.getAttribute("data-disabled")).toBe("")},{timeout:3e3})})}),a("Dialog Integration",()=>{r("should show dialog when open prop is true",async()=>{l(t(h,{options:g,children:t(u,{open:!0})})),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-dialog-root"]')).toBeInTheDocument()},{timeout:3e3})}),r("should contain widget inside dialog",async()=>{l(t(h,{options:g,children:t(u,{open:!0})})),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-widget-root"]')).toBeInTheDocument()},{timeout:3e3})})}),a("Complete Flow",()=>{r("should complete full consent flow: banner -> customize -> save",async()=>{l(o(h,{options:g,children:[t(d,{}),t(u,{})]})),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-banner-root"]')).toBeInTheDocument()},{timeout:3e3});let e=document.querySelector('[data-testid="consent-banner-customize-button"]');await s.click(e),await c.waitFor(()=>{i(document.querySelector('[data-testid="consent-dialog-root"]')).toBeInTheDocument()},{timeout:3e3});let n=document.querySelector('[data-testid="consent-widget-switch-marketing"]');n&&await s.click(n);let a=document.querySelector('[data-testid="consent-widget-footer-save-button"]');await s.click(a),await c.waitFor(()=>{let e=window.localStorage.getItem("c15t");i(e).toBeTruthy(),i(JSON.parse(e).consents).toBeTruthy()},{timeout:3e3})})})});
@@ -1 +0,0 @@
1
- "use strict";const __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_exports__={};const jsx_runtime_namespaceObject=require("react/jsx-runtime"),external_vitest_namespaceObject=require("vitest"),external_vitest_browser_react_namespaceObject=require("vitest-browser-react"),index_cjs_namespaceObject=require("../consent-banner/index.cjs"),external_consent_dialog_index_cjs_namespaceObject=require("../consent-dialog/index.cjs"),e2e_setup_cjs_namespaceObject=require("../iab/__tests__/e2e-setup.cjs"),external_iab_consent_banner_index_cjs_namespaceObject=require("../iab-consent-banner/index.cjs"),external_iab_consent_dialog_index_cjs_namespaceObject=require("../iab-consent-dialog/index.cjs"),consent_manager_provider_cjs_namespaceObject=require("../../providers/consent-manager-provider.cjs"),localStorageMock=(()=>{let e={};return{getItem:t=>e[t]||null,setItem:(t,n)=>{e[t]=n.toString()},removeItem:t=>{delete e[t]},clear:()=>{e={}}}})();Object.defineProperty(window,"localStorage",{value:localStorageMock});const optInOptions={mode:"offline"};for(var __rspack_i in(0,external_vitest_namespaceObject.describe)("models Prop E2E Tests",()=>{(0,external_vitest_namespaceObject.beforeEach)(()=>{for(let e of(window.localStorage.clear(),document.cookie.split(";"))){let t=e.split("=")[0]?.trim();t&&(document.cookie=`${t}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/`)}external_vitest_namespaceObject.vi.clearAllMocks(),(0,consent_manager_provider_cjs_namespaceObject.clearConsentRuntimeCache)(),(0,e2e_setup_cjs_namespaceObject.clearConsentState)()}),(0,external_vitest_namespaceObject.describe)("Opt-in mode (default)",()=>{(0,external_vitest_namespaceObject.test)("ConsentBanner renders in opt-in mode (default models includes opt-in)",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:optInOptions,children:(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{})})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3})}),(0,external_vitest_namespaceObject.test)("IABConsentBanner does NOT render in opt-in mode (default models is iab)",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:optInOptions,children:(0,jsx_runtime_namespaceObject.jsx)(external_iab_consent_banner_index_cjs_namespaceObject.IABConsentBanner,{})})),await new Promise(e=>setTimeout(e,1e3));let e=document.querySelector('[data-testid="iab-consent-banner-card"]');(0,external_vitest_namespaceObject.expect)(e).not.toBeInTheDocument()}),(0,external_vitest_namespaceObject.test)("ConsentDialog renders in opt-in mode when open",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:optInOptions,children:(0,jsx_runtime_namespaceObject.jsx)(external_consent_dialog_index_cjs_namespaceObject.ConsentDialog,{open:!0})})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-dialog-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3})}),(0,external_vitest_namespaceObject.test)("IABConsentDialog does NOT render in opt-in mode",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:optInOptions,children:(0,jsx_runtime_namespaceObject.jsx)(external_iab_consent_dialog_index_cjs_namespaceObject.IABConsentDialog,{open:!0})})),await new Promise(e=>setTimeout(e,1e3));let e=document.querySelector('[data-testid="iab-consent-dialog-root"]');(0,external_vitest_namespaceObject.expect)(e).not.toBeInTheDocument()})}),(0,external_vitest_namespaceObject.describe)("IAB mode",()=>{(0,external_vitest_namespaceObject.test)("IABConsentBanner renders when model is iab",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:e2e_setup_cjs_namespaceObject.defaultIABOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_iab_consent_banner_index_cjs_namespaceObject.IABConsentBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(external_iab_consent_dialog_index_cjs_namespaceObject.IABConsentDialog,{})]})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="iab-consent-banner-card"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3})}),(0,external_vitest_namespaceObject.test)("ConsentBanner does NOT render when model is iab",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:e2e_setup_cjs_namespaceObject.defaultIABOptions,children:(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{})})),await new Promise(e=>setTimeout(e,1e3));let e=document.querySelector('[data-testid="consent-banner-root"]');(0,external_vitest_namespaceObject.expect)(e).not.toBeInTheDocument()})}),(0,external_vitest_namespaceObject.describe)("Custom models prop",()=>{(0,external_vitest_namespaceObject.test)("ConsentBanner with models=[opt-in] renders in opt-in mode",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:optInOptions,children:(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{models:["opt-in"]})})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3})}),(0,external_vitest_namespaceObject.test)("ConsentBanner with models=[iab] does NOT render in opt-in mode",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:optInOptions,children:(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{models:["iab"]})})),await new Promise(e=>setTimeout(e,1e3));let e=document.querySelector('[data-testid="consent-banner-root"]');(0,external_vitest_namespaceObject.expect)(e).not.toBeInTheDocument()}),(0,external_vitest_namespaceObject.test)("only matching component renders when both are present",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:optInOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(external_iab_consent_banner_index_cjs_namespaceObject.IABConsentBanner,{})]})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let e=document.querySelector('[data-testid="iab-consent-banner-card"]');(0,external_vitest_namespaceObject.expect)(e).not.toBeInTheDocument()})})}),__webpack_exports__)exports[__rspack_i]=__webpack_exports__[__rspack_i];Object.defineProperty(exports,"__esModule",{value:!0});
@@ -1 +0,0 @@
1
- let e;import{jsx as t,jsxs as o}from"react/jsx-runtime";import{beforeEach as n,describe as r,expect as i,test as a,vi as s}from"vitest";import{render as d}from"vitest-browser-react";import{ConsentBanner as c}from"../consent-banner/index.js";import{ConsentDialog as m}from"../consent-dialog/index.js";import{clearConsentState as l,defaultIABOptions as u}from"../iab/__tests__/e2e-setup.js";import{IABConsentBanner as p}from"../iab-consent-banner/index.js";import{IABConsentDialog as h}from"../iab-consent-dialog/index.js";import{ConsentManagerProvider as w,clearConsentRuntimeCache as b}from"../../providers/consent-manager-provider.js";Object.defineProperty(window,"localStorage",{value:(e={},{getItem:t=>e[t]||null,setItem:(t,o)=>{e[t]=o.toString()},removeItem:t=>{delete e[t]},clear:()=>{e={}}})});let y={mode:"offline"};r("models Prop E2E Tests",()=>{n(()=>{for(let e of(window.localStorage.clear(),document.cookie.split(";"))){let t=e.split("=")[0]?.trim();t&&(document.cookie=`${t}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/`)}s.clearAllMocks(),b(),l()}),r("Opt-in mode (default)",()=>{a("ConsentBanner renders in opt-in mode (default models includes opt-in)",async()=>{d(t(w,{options:y,children:t(c,{})})),await s.waitFor(()=>{i(document.querySelector('[data-testid="consent-banner-root"]')).toBeInTheDocument()},{timeout:3e3})}),a("IABConsentBanner does NOT render in opt-in mode (default models is iab)",async()=>{d(t(w,{options:y,children:t(p,{})})),await new Promise(e=>setTimeout(e,1e3)),i(document.querySelector('[data-testid="iab-consent-banner-card"]')).not.toBeInTheDocument()}),a("ConsentDialog renders in opt-in mode when open",async()=>{d(t(w,{options:y,children:t(m,{open:!0})})),await s.waitFor(()=>{i(document.querySelector('[data-testid="consent-dialog-root"]')).toBeInTheDocument()},{timeout:3e3})}),a("IABConsentDialog does NOT render in opt-in mode",async()=>{d(t(w,{options:y,children:t(h,{open:!0})})),await new Promise(e=>setTimeout(e,1e3)),i(document.querySelector('[data-testid="iab-consent-dialog-root"]')).not.toBeInTheDocument()})}),r("IAB mode",()=>{a("IABConsentBanner renders when model is iab",async()=>{d(o(w,{options:u,children:[t(p,{}),t(h,{})]})),await s.waitFor(()=>{i(document.querySelector('[data-testid="iab-consent-banner-card"]')).toBeInTheDocument()},{timeout:3e3})}),a("ConsentBanner does NOT render when model is iab",async()=>{d(t(w,{options:u,children:t(c,{})})),await new Promise(e=>setTimeout(e,1e3)),i(document.querySelector('[data-testid="consent-banner-root"]')).not.toBeInTheDocument()})}),r("Custom models prop",()=>{a("ConsentBanner with models=[opt-in] renders in opt-in mode",async()=>{d(t(w,{options:y,children:t(c,{models:["opt-in"]})})),await s.waitFor(()=>{i(document.querySelector('[data-testid="consent-banner-root"]')).toBeInTheDocument()},{timeout:3e3})}),a("ConsentBanner with models=[iab] does NOT render in opt-in mode",async()=>{d(t(w,{options:y,children:t(c,{models:["iab"]})})),await new Promise(e=>setTimeout(e,1e3)),i(document.querySelector('[data-testid="consent-banner-root"]')).not.toBeInTheDocument()}),a("only matching component renders when both are present",async()=>{d(o(w,{options:y,children:[t(c,{}),t(p,{})]})),await s.waitFor(()=>{i(document.querySelector('[data-testid="consent-banner-root"]')).toBeInTheDocument()},{timeout:3e3}),i(document.querySelector('[data-testid="iab-consent-banner-card"]')).not.toBeInTheDocument()})})});
@@ -1 +0,0 @@
1
- "use strict";const __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_exports__={};const jsx_runtime_namespaceObject=require("react/jsx-runtime"),external_vitest_namespaceObject=require("vitest"),browser_namespaceObject=require("vitest/browser"),external_vitest_browser_react_namespaceObject=require("vitest-browser-react"),index_cjs_namespaceObject=require("../consent-banner/index.cjs"),external_consent_dialog_index_cjs_namespaceObject=require("../consent-dialog/index.cjs"),external_consent_widget_index_cjs_namespaceObject=require("../consent-widget/index.cjs"),consent_manager_provider_cjs_namespaceObject=require("../../providers/consent-manager-provider.cjs"),localStorageMock=(()=>{let e={};return{getItem:t=>e[t]||null,setItem:(t,a)=>{e[t]=a.toString()},removeItem:t=>{delete e[t]},clear:()=>{e={}}}})();Object.defineProperty(window,"localStorage",{value:localStorageMock});const defaultOptions={mode:"offline"};for(var __rspack_i in(0,external_vitest_namespaceObject.describe)("UI Source Tracking E2E Tests",()=>{(0,external_vitest_namespaceObject.beforeEach)(()=>{for(let e of(window.localStorage.clear(),document.cookie.split(";"))){let t=e.split("=")[0]?.trim();t&&(document.cookie=`${t}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/`)}external_vitest_namespaceObject.vi.clearAllMocks(),(0,consent_manager_provider_cjs_namespaceObject.clearConsentRuntimeCache)()}),(0,external_vitest_namespaceObject.describe)("Banner uiSource",()=>{(0,external_vitest_namespaceObject.test)("should render banner and save consent via accept button",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{})})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-accept-button"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let e=document.querySelector('[data-testid="consent-banner-accept-button"]');await browser_namespaceObject.userEvent.click(e),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=window.localStorage.getItem("c15t");(0,external_vitest_namespaceObject.expect)(e).toBeTruthy();let t=JSON.parse(e);(0,external_vitest_namespaceObject.expect)(t.consents.necessary).toBe(!0)},{timeout:3e3})}),(0,external_vitest_namespaceObject.test)("should render banner with custom uiSource prop",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{uiSource:"custom_banner"})})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3})})}),(0,external_vitest_namespaceObject.describe)("Dialog uiSource",()=>{(0,external_vitest_namespaceObject.test)("should render dialog and save consent via accept button",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:(0,jsx_runtime_namespaceObject.jsx)(external_consent_dialog_index_cjs_namespaceObject.ConsentDialog,{open:!0})})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-dialog-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let e=document.querySelector('[data-testid="consent-widget-footer-accept-all-button"]');e&&(await browser_namespaceObject.userEvent.click(e),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=window.localStorage.getItem("c15t");(0,external_vitest_namespaceObject.expect)(e).toBeTruthy()},{timeout:3e3}))}),(0,external_vitest_namespaceObject.test)("should render dialog with custom uiSource prop",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:(0,jsx_runtime_namespaceObject.jsx)(external_consent_dialog_index_cjs_namespaceObject.ConsentDialog,{open:!0,uiSource:"custom_dialog"})})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-dialog-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3})})}),(0,external_vitest_namespaceObject.describe)("Widget uiSource",()=>{(0,external_vitest_namespaceObject.test)("should render widget with default uiSource",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:(0,jsx_runtime_namespaceObject.jsx)(external_consent_widget_index_cjs_namespaceObject.ConsentWidget,{})})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-widget-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3})})}),(0,external_vitest_namespaceObject.describe)("Banner to Dialog flow preserves correct uiSource",()=>{(0,external_vitest_namespaceObject.test)("should transition from banner to dialog and save from dialog",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ConsentBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(external_consent_dialog_index_cjs_namespaceObject.ConsentDialog,{})]})),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-banner-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let e=document.querySelector('[data-testid="consent-banner-customize-button"]');await browser_namespaceObject.userEvent.click(e),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=document.querySelector('[data-testid="consent-dialog-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument()},{timeout:3e3});let t=document.querySelector('[data-testid="consent-widget-footer-save-button"]');await browser_namespaceObject.userEvent.click(t),await external_vitest_namespaceObject.vi.waitFor(()=>{let e=window.localStorage.getItem("c15t");(0,external_vitest_namespaceObject.expect)(e).toBeTruthy();let t=JSON.parse(e);(0,external_vitest_namespaceObject.expect)(t.consents).toBeTruthy()},{timeout:3e3})})})}),__webpack_exports__)exports[__rspack_i]=__webpack_exports__[__rspack_i];Object.defineProperty(exports,"__esModule",{value:!0});