@c15t/react 2.2.1 → 3.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (704) hide show
  1. package/AGENTS.md +88 -141
  2. package/README.md +2 -2
  3. package/dist/aggregate-components.js +2 -0
  4. package/dist/chunk-warming.js +1 -0
  5. package/dist/component-hooks/use-headless-consent-ui.js +2 -0
  6. package/dist/component-hooks/use-headless-iab-consent-ui.js +2 -0
  7. package/dist/component-hooks/use-manager.js +2 -0
  8. package/dist/component-hooks/use-panel-trigger.js +2 -0
  9. package/dist/component-hooks/use-translations.js +2 -0
  10. package/dist/components/consent-preferences-link/consent-preferences-link.js +2 -1
  11. package/dist/components/consent-preferences-link/index.js +1 -0
  12. package/dist/components/frame/atoms.js +1 -1
  13. package/dist/components/frame/frame.js +2 -1
  14. package/dist/components/frame/index.js +2 -1
  15. package/dist/components/iab-panel/atoms/card.js +2 -0
  16. package/dist/components/iab-panel/atoms/content.js +2 -0
  17. package/dist/components/iab-panel/atoms/footer.js +2 -0
  18. package/dist/components/iab-panel/atoms/header.js +2 -0
  19. package/dist/components/iab-panel/atoms/overlay.js +2 -0
  20. package/dist/components/iab-panel/atoms/purpose-item.js +2 -0
  21. package/dist/components/iab-panel/atoms/root.js +2 -0
  22. package/dist/components/iab-panel/atoms/stack-item.js +2 -0
  23. package/dist/components/iab-panel/atoms/tabs.js +2 -0
  24. package/dist/components/iab-panel/atoms/vendor-list.js +2 -0
  25. package/dist/components/iab-panel/hooks/use-display-model.js +2 -0
  26. package/dist/components/iab-panel/hooks/use-gvl-data.js +2 -0
  27. package/dist/components/iab-panel/iab-panel.js +2 -0
  28. package/dist/components/iab-panel/index.js +2 -0
  29. package/dist/components/iab-panel/use-iab-translations.js +1 -0
  30. package/dist/components/iab-prompt/atoms/button-group.js +2 -0
  31. package/dist/components/iab-prompt/atoms/card.js +2 -0
  32. package/dist/components/iab-prompt/atoms/description.js +2 -0
  33. package/dist/components/iab-prompt/atoms/footer.js +2 -0
  34. package/dist/components/iab-prompt/atoms/header.js +2 -0
  35. package/dist/components/iab-prompt/atoms/overlay.js +2 -0
  36. package/dist/components/iab-prompt/atoms/root.js +2 -0
  37. package/dist/components/iab-prompt/atoms/title.js +2 -0
  38. package/dist/components/iab-prompt/iab-prompt.js +2 -0
  39. package/dist/components/iab-prompt/index.js +2 -0
  40. package/dist/components/panel/atoms/card.js +2 -0
  41. package/dist/components/panel/atoms/overlay.js +1 -0
  42. package/dist/components/panel/atoms/root.js +2 -0
  43. package/dist/components/panel/index.js +2 -0
  44. package/dist/components/panel/panel.js +2 -0
  45. package/dist/components/{consent-dialog-link → panel-link}/index.js +1 -0
  46. package/dist/components/panel-trigger/atoms/button.js +2 -0
  47. package/dist/components/panel-trigger/atoms/icon.js +2 -0
  48. package/dist/components/panel-trigger/atoms/root.js +2 -0
  49. package/dist/components/panel-trigger/atoms/text.js +2 -0
  50. package/dist/components/panel-trigger/atoms/toolbar.js +2 -0
  51. package/dist/components/panel-trigger/index.js +2 -0
  52. package/dist/components/panel-trigger/panel-trigger-toolbar.js +2 -0
  53. package/dist/components/panel-trigger/panel-trigger.js +2 -0
  54. package/dist/components/panel-trigger/use-draggable.js +2 -0
  55. package/dist/components/preferences/atoms/accordion.js +1 -0
  56. package/dist/components/preferences/atoms/button.js +1 -0
  57. package/dist/components/preferences/atoms/footer.js +1 -0
  58. package/dist/components/preferences/atoms/root.js +2 -0
  59. package/dist/components/preferences/index.js +2 -0
  60. package/dist/components/preferences/policy-actions.js +2 -0
  61. package/dist/components/preferences/preferences.js +2 -0
  62. package/dist/components/prompt/atoms/overlay.js +1 -0
  63. package/dist/components/prompt/atoms/root.js +2 -0
  64. package/dist/components/prompt/components.js +1 -0
  65. package/dist/components/prompt/error-boundary.js +2 -0
  66. package/dist/components/prompt/index.js +2 -0
  67. package/dist/components/prompt/policy-actions.js +2 -0
  68. package/dist/components/prompt/prompt.js +2 -0
  69. package/dist/components/prompt/resolve-banner-primary-actions.js +1 -0
  70. package/dist/components/prompt/surface-context.js +2 -0
  71. package/dist/components/prompt/use-banner-copy.js +2 -0
  72. package/dist/components/shared/libs/recursive-clone-children.js +1 -1
  73. package/dist/components/shared/libs/slot.js +1 -1
  74. package/dist/components/shared/libs/use-controllable-state.js +1 -1
  75. package/dist/components/shared/policy-actions.js +2 -1
  76. package/dist/components/shared/primitives/box.js +2 -1
  77. package/dist/components/shared/primitives/button.js +1 -1
  78. package/dist/components/shared/primitives/legal-links/index.js +1 -1
  79. package/dist/components/shared/ui/accordion/accordion.js +2 -1
  80. package/dist/components/shared/ui/animated-collapse/animated-collapse.js +2 -1
  81. package/dist/components/shared/ui/branding.js +1 -1
  82. package/dist/components/shared/ui/button/button.js +1 -1
  83. package/dist/components/shared/ui/collapsible/collapsible.js +2 -1
  84. package/dist/components/shared/ui/dialog/dialog.js +2 -1
  85. package/dist/components/shared/ui/icon.js +1 -1
  86. package/dist/components/shared/ui/logo.js +1 -1
  87. package/dist/components/shared/ui/preference-item/preference-item.js +2 -1
  88. package/dist/components/shared/ui/switch/switch.js +1 -1
  89. package/dist/components/shared/ui/tabs/tabs.js +2 -1
  90. package/dist/context/consent-tracking-context.js +1 -0
  91. package/dist/context/iab-context-value.js +1 -0
  92. package/dist/context/index.js +1 -0
  93. package/dist/context/theme-context.js +2 -1
  94. package/dist/context.js +1 -0
  95. package/dist/devtools.js +2 -0
  96. package/dist/draft.js +2 -0
  97. package/dist/external-iab-context.js +2 -0
  98. package/dist/frame.js +2 -0
  99. package/dist/headless.js +1 -1
  100. package/dist/hooks/use-color-scheme.js +2 -1
  101. package/dist/hooks/use-component-config.js +2 -1
  102. package/dist/hooks/use-focus-trap.js +2 -1
  103. package/dist/hooks/use-headless-iab-consent-ui.js +2 -1
  104. package/dist/hooks/use-iab-manager.js +2 -0
  105. package/dist/hooks/use-is-hydrated.js +2 -0
  106. package/dist/hooks/use-reduced-motion.js +2 -1
  107. package/dist/hooks/use-scroll-lock.js +2 -1
  108. package/dist/hooks/use-text-direction.js +2 -1
  109. package/dist/hooks/use-theme.js +2 -1
  110. package/dist/hooks.js +1 -0
  111. package/dist/iab/styles.css +1 -1
  112. package/dist/iab/styles.tw3.css +133 -19
  113. package/dist/iab-context.js +2 -0
  114. package/dist/iab.js +1 -1
  115. package/dist/index.js +1 -1
  116. package/dist/module-hooks/iframe-blocker.js +2 -0
  117. package/dist/module-hooks/network-blocker.js +2 -0
  118. package/dist/module-hooks/persistence.js +2 -0
  119. package/dist/module-hooks/script-loader.js +2 -0
  120. package/dist/module-hooks/shared.js +2 -0
  121. package/dist/module-hooks.js +2 -0
  122. package/dist/panel-link.js +2 -0
  123. package/dist/panel-trigger.js +2 -0
  124. package/dist/panel.js +2 -0
  125. package/dist/preferences.js +2 -0
  126. package/dist/primitives.js +1 -1
  127. package/dist/prompt.js +2 -0
  128. package/dist/provider.js +2 -0
  129. package/dist/server/fetch-ssr-data.js +1 -1
  130. package/dist/server/headers.js +1 -1
  131. package/dist/server/init-cache-key.js +1 -1
  132. package/dist/server/normalize-url.js +1 -1
  133. package/dist/styles.css +1 -1
  134. package/dist/styles.tw3.css +173 -29
  135. package/dist/theme-provider.js +2 -0
  136. package/dist/transports/offline.js +1 -0
  137. package/dist/types/index.js +1 -0
  138. package/dist/types/theme/index.js +1 -1
  139. package/dist/types/theme/style-types.js +1 -1
  140. package/dist/ui-config-context.js +2 -0
  141. package/dist/ui-save.js +1 -0
  142. package/dist/utils/cn.js +1 -1
  143. package/dist/utils/default-translation-config.js +1 -0
  144. package/dist/utils/index.js +1 -0
  145. package/dist/utils/merge-slot-props.js +1 -0
  146. package/dist/utils/merge-styles.js +1 -1
  147. package/dist/utils/theme-utils.js +1 -1
  148. package/dist/version.js +1 -1
  149. package/dist-types/aggregate-components.d.ts +4 -0
  150. package/dist-types/chunk-warming.d.ts +19 -0
  151. package/dist-types/component-hooks/use-headless-consent-ui.d.ts +68 -0
  152. package/dist-types/component-hooks/use-headless-iab-consent-ui.d.ts +22 -0
  153. package/dist-types/component-hooks/use-manager.d.ts +40 -0
  154. package/dist-types/component-hooks/use-panel-trigger.d.ts +20 -0
  155. package/dist-types/component-hooks/use-translations.d.ts +2 -0
  156. package/dist-types/components/consent-preferences-link/consent-preferences-link.d.ts +1 -1
  157. package/dist-types/components/frame/atoms.d.ts +5 -5
  158. package/dist-types/components/frame/types.d.ts +3 -2
  159. package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/card.d.ts +2 -1
  160. package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/content.d.ts +1 -1
  161. package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/footer.d.ts +1 -1
  162. package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/header.d.ts +1 -1
  163. package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/overlay.d.ts +1 -1
  164. package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/purpose-item.d.ts +7 -1
  165. package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/root.d.ts +3 -2
  166. package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/stack-item.d.ts +1 -1
  167. package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/tabs.d.ts +1 -1
  168. package/dist-types/components/{iab-consent-dialog → iab-panel}/atoms/vendor-list.d.ts +2 -3
  169. package/dist-types/components/iab-panel/hooks/use-display-model.d.ts +18 -0
  170. package/dist-types/components/iab-panel/hooks/use-gvl-data.d.ts +17 -0
  171. package/dist-types/components/{iab-consent-dialog/iab-consent-dialog.d.ts → iab-panel/iab-panel.d.ts} +10 -3
  172. package/dist-types/components/{iab-consent-dialog → iab-panel}/index.d.ts +3 -2
  173. package/dist-types/components/iab-panel/types.d.ts +1 -0
  174. package/dist-types/components/{iab-consent-dialog → iab-panel}/use-iab-translations.d.ts +3 -1
  175. package/dist-types/components/{iab-consent-banner → iab-prompt}/atoms/button-group.d.ts +1 -1
  176. package/dist-types/components/{iab-consent-banner → iab-prompt}/atoms/card.d.ts +2 -1
  177. package/dist-types/components/{iab-consent-banner → iab-prompt}/atoms/description.d.ts +1 -1
  178. package/dist-types/components/{iab-consent-banner → iab-prompt}/atoms/footer.d.ts +2 -1
  179. package/dist-types/components/{iab-consent-banner → iab-prompt}/atoms/header.d.ts +2 -1
  180. package/dist-types/components/{iab-consent-banner → iab-prompt}/atoms/overlay.d.ts +1 -1
  181. package/dist-types/components/{iab-consent-banner → iab-prompt}/atoms/root.d.ts +3 -2
  182. package/dist-types/components/{iab-consent-banner → iab-prompt}/atoms/title.d.ts +1 -1
  183. package/dist-types/components/{iab-consent-banner/iab-consent-banner.d.ts → iab-prompt/iab-prompt.d.ts} +10 -4
  184. package/dist-types/components/{iab-consent-banner → iab-prompt}/index.d.ts +1 -1
  185. package/dist-types/components/{consent-dialog → panel}/atoms/card.d.ts +15 -15
  186. package/dist-types/components/{consent-dialog → panel}/atoms/overlay.d.ts +24 -8
  187. package/dist-types/components/{consent-dialog → panel}/atoms/root.d.ts +4 -3
  188. package/dist-types/components/{consent-dialog → panel}/index.d.ts +13 -8
  189. package/dist-types/components/{consent-dialog/consent-dialog.d.ts → panel/panel.d.ts} +6 -5
  190. package/dist-types/components/{consent-dialog-trigger → panel-trigger}/atoms/button.d.ts +2 -1
  191. package/dist-types/components/{consent-dialog-trigger → panel-trigger}/atoms/icon.d.ts +1 -16
  192. package/dist-types/components/{consent-dialog-trigger → panel-trigger}/atoms/root.d.ts +11 -23
  193. package/dist-types/components/{consent-dialog-trigger → panel-trigger}/atoms/text.d.ts +0 -11
  194. package/dist-types/components/{consent-dialog-trigger → panel-trigger}/atoms/toolbar.d.ts +15 -4
  195. package/dist-types/components/{consent-dialog-trigger → panel-trigger}/index.d.ts +2 -2
  196. package/dist-types/components/{consent-dialog-trigger/consent-dialog-trigger-toolbar.d.ts → panel-trigger/panel-trigger-toolbar.d.ts} +0 -23
  197. package/dist-types/components/{consent-dialog-trigger/consent-dialog-trigger.d.ts → panel-trigger/panel-trigger.d.ts} +8 -4
  198. package/dist-types/components/{consent-dialog-trigger → panel-trigger}/types.d.ts +16 -7
  199. package/dist-types/components/{consent-dialog-trigger → panel-trigger}/use-draggable.d.ts +2 -9
  200. package/dist-types/components/{consent-widget → preferences}/atoms/accordion.d.ts +5 -5
  201. package/dist-types/components/{consent-widget → preferences}/atoms/footer.d.ts +3 -3
  202. package/dist-types/components/{consent-widget → preferences}/atoms/root.d.ts +1 -1
  203. package/dist-types/components/{consent-widget → preferences}/index.d.ts +11 -9
  204. package/dist-types/components/preferences/policy-actions.d.ts +10 -0
  205. package/dist-types/components/{consent-banner → prompt}/atoms/overlay.d.ts +1 -1
  206. package/dist-types/components/prompt/atoms/root.d.ts +78 -0
  207. package/dist-types/components/{consent-banner → prompt}/components.d.ts +99 -14
  208. package/dist-types/components/{consent-banner → prompt}/error-boundary.d.ts +3 -1
  209. package/dist-types/components/{consent-banner → prompt}/index.d.ts +18 -10
  210. package/dist-types/components/prompt/policy-actions.d.ts +12 -0
  211. package/dist-types/components/{consent-banner/consent-banner.d.ts → prompt/prompt.d.ts} +36 -10
  212. package/dist-types/components/prompt/resolve-banner-primary-actions.d.ts +14 -0
  213. package/dist-types/components/prompt/surface-context.d.ts +45 -0
  214. package/dist-types/components/prompt/use-banner-copy.d.ts +16 -0
  215. package/dist-types/components/shared/libs/polymorphic.d.ts +2 -2
  216. package/dist-types/components/shared/libs/recursive-clone-children.d.ts +2 -2
  217. package/dist-types/components/shared/libs/slot.d.ts +1 -1
  218. package/dist-types/components/shared/libs/use-controllable-state.d.ts +1 -1
  219. package/dist-types/components/shared/policy-actions.d.ts +8 -3
  220. package/dist-types/components/shared/primitives/box.d.ts +3 -1
  221. package/dist-types/components/shared/primitives/button.d.ts +4 -37
  222. package/dist-types/components/shared/primitives/button.types.d.ts +3 -1
  223. package/dist-types/components/shared/primitives/legal-links/index.d.ts +7 -11
  224. package/dist-types/components/shared/ui/accordion/accordion.d.ts +45 -12
  225. package/dist-types/components/shared/ui/accordion/accordion.types.d.ts +1 -1
  226. package/dist-types/components/shared/ui/animated-collapse/animated-collapse.d.ts +1 -1
  227. package/dist-types/components/shared/ui/branding.d.ts +12 -12
  228. package/dist-types/components/shared/ui/button/button.d.ts +19 -25
  229. package/dist-types/components/shared/ui/button/button.types.d.ts +2 -2
  230. package/dist-types/components/shared/ui/collapsible/collapsible.d.ts +18 -1
  231. package/dist-types/components/shared/ui/dialog/dialog.d.ts +6 -6
  232. package/dist-types/components/shared/ui/icon.d.ts +1 -1
  233. package/dist-types/components/shared/ui/logo.d.ts +0 -21
  234. package/dist-types/components/shared/ui/preference-item/preference-item.d.ts +46 -2
  235. package/dist-types/components/shared/ui/switch/switch.d.ts +19 -8
  236. package/dist-types/components/shared/ui/tabs/tabs.d.ts +19 -2
  237. package/dist-types/context/iab-context-value.d.ts +37 -0
  238. package/dist-types/context/index.d.ts +3 -0
  239. package/dist-types/context/theme-context.d.ts +2 -2
  240. package/dist-types/context.d.ts +17 -0
  241. package/dist-types/devtools.d.ts +54 -0
  242. package/dist-types/draft.d.ts +31 -0
  243. package/dist-types/external-iab-context.d.ts +29 -0
  244. package/dist-types/frame.d.ts +1 -0
  245. package/dist-types/headless.d.ts +12 -8
  246. package/dist-types/hooks/use-color-scheme.d.ts +1 -1
  247. package/dist-types/hooks/use-component-config.d.ts +2 -2
  248. package/dist-types/hooks/use-focus-trap.d.ts +2 -2
  249. package/dist-types/hooks/use-headless-iab-consent-ui.d.ts +7 -8
  250. package/dist-types/hooks/use-iab-manager.d.ts +52 -0
  251. package/dist-types/hooks/use-is-hydrated.d.ts +8 -0
  252. package/dist-types/hooks/use-reduced-motion.d.ts +1 -1
  253. package/dist-types/hooks/use-scroll-lock.d.ts +1 -1
  254. package/dist-types/hooks/use-text-direction.d.ts +1 -1
  255. package/dist-types/hooks/use-theme.d.ts +2 -1
  256. package/dist-types/hooks.d.ts +148 -0
  257. package/dist-types/iab-context.d.ts +28 -0
  258. package/dist-types/iab.d.ts +14 -8
  259. package/dist-types/index.d.ts +61 -22
  260. package/dist-types/module-hooks/iframe-blocker.d.ts +6 -0
  261. package/dist-types/module-hooks/network-blocker.d.ts +9 -0
  262. package/dist-types/module-hooks/persistence.d.ts +4 -0
  263. package/dist-types/module-hooks/script-loader.d.ts +6 -0
  264. package/dist-types/module-hooks/shared.d.ts +2 -0
  265. package/dist-types/module-hooks.d.ts +4 -0
  266. package/dist-types/panel-link.d.ts +1 -0
  267. package/dist-types/panel-trigger.d.ts +1 -0
  268. package/dist-types/panel.d.ts +1 -0
  269. package/dist-types/preferences.d.ts +1 -0
  270. package/dist-types/prompt.d.ts +1 -0
  271. package/dist-types/provider.d.ts +144 -0
  272. package/dist-types/server/fetch-ssr-data.d.ts +2 -2
  273. package/dist-types/server/headers.d.ts +3 -3
  274. package/dist-types/server/init-cache-key.d.ts +3 -3
  275. package/dist-types/server/normalize-url.d.ts +2 -2
  276. package/dist-types/server/types.d.ts +1 -1
  277. package/dist-types/theme-provider.d.ts +10 -0
  278. package/dist-types/transports/offline.d.ts +18 -0
  279. package/dist-types/types/index.d.ts +3 -0
  280. package/dist-types/types/manager.d.ts +15 -0
  281. package/dist-types/types/slots.d.ts +5 -0
  282. package/dist-types/types/theme/index.d.ts +0 -1
  283. package/dist-types/types/theme/style-types.d.ts +3 -9
  284. package/dist-types/ui-config-context.d.ts +9 -0
  285. package/dist-types/ui-save.d.ts +5 -0
  286. package/dist-types/utils/cn.d.ts +1 -1
  287. package/dist-types/utils/default-translation-config.d.ts +6 -0
  288. package/dist-types/utils/index.d.ts +4 -0
  289. package/dist-types/utils/merge-slot-props.d.ts +14 -0
  290. package/dist-types/utils/merge-styles.d.ts +1 -1
  291. package/dist-types/utils/theme-utils.d.ts +2 -2
  292. package/dist-types/version.d.ts +1 -1
  293. package/docs/README.md +88 -141
  294. package/docs/assets/v3/brand-bar.png +0 -0
  295. package/docs/assets/v3/brand-card.png +0 -0
  296. package/docs/assets/v3/choice-wall.png +0 -0
  297. package/docs/assets/v3/mobile-card.png +0 -0
  298. package/docs/assets/v3/preferences.png +0 -0
  299. package/docs/customization/overview.md +45 -0
  300. package/docs/customization/recipes.md +79 -0
  301. package/docs/customization/slots.md +55 -0
  302. package/docs/customization/tokens.md +76 -0
  303. package/docs/customization/translations.md +49 -0
  304. package/docs/frameworks/react/components/consent-banner.md +219 -202
  305. package/docs/frameworks/react/components/consent-dialog-link.md +88 -35
  306. package/docs/frameworks/react/components/consent-dialog-trigger.md +74 -134
  307. package/docs/frameworks/react/components/consent-dialog.md +170 -135
  308. package/docs/frameworks/react/components/consent-manager-provider.md +41 -249
  309. package/docs/frameworks/react/components/consent-widget.md +154 -118
  310. package/docs/frameworks/react/components/dev-tools.md +198 -33
  311. package/docs/frameworks/react/components/frame.md +120 -42
  312. package/docs/frameworks/react/concepts/consent-categories.md +24 -89
  313. package/docs/frameworks/react/concepts/policy-presets.md +123 -0
  314. package/docs/frameworks/react/headless.md +91 -185
  315. package/docs/frameworks/react/hooks/use-consent-manager/overview.md +39 -153
  316. package/docs/frameworks/react/iab/overview.md +33 -108
  317. package/docs/frameworks/react/quickstart.md +116 -112
  318. package/docs/frameworks/react/script-loader.md +35 -535
  319. package/docs/frameworks/react/styling/overview.md +160 -255
  320. package/docs/frameworks/react/troubleshooting.md +47 -119
  321. package/docs/guides/consent-state.md +60 -0
  322. package/docs/guides/data-fetching.md +163 -0
  323. package/docs/guides/deployment-modes.md +63 -0
  324. package/docs/guides/troubleshooting.md +68 -0
  325. package/docs/guides/verify-consent.md +62 -0
  326. package/docs/integrations/adobe-analytics.md +239 -105
  327. package/docs/integrations/ahrefs-analytics.md +238 -104
  328. package/docs/integrations/amplitude.md +219 -157
  329. package/docs/integrations/building-integrations.md +32 -224
  330. package/docs/integrations/clearbit.md +247 -86
  331. package/docs/integrations/cloudflare-web-analytics.md +250 -84
  332. package/docs/integrations/crisp.md +251 -97
  333. package/docs/integrations/databuddy.md +259 -153
  334. package/docs/integrations/fathom-analytics.md +239 -96
  335. package/docs/integrations/google-maps.md +328 -207
  336. package/docs/integrations/google-tag-manager.md +248 -96
  337. package/docs/integrations/google-tag.md +261 -90
  338. package/docs/integrations/heap.md +222 -149
  339. package/docs/integrations/hightouch.md +225 -131
  340. package/docs/integrations/hotjar.md +239 -90
  341. package/docs/integrations/intercom.md +239 -98
  342. package/docs/integrations/linkedin-insights.md +243 -113
  343. package/docs/integrations/logrocket.md +241 -123
  344. package/docs/integrations/matomo-analytics.md +256 -111
  345. package/docs/integrations/meta-pixel.md +197 -324
  346. package/docs/integrations/microsoft-clarity.md +233 -114
  347. package/docs/integrations/microsoft-uet.md +245 -110
  348. package/docs/integrations/mixpanel-analytics.md +252 -87
  349. package/docs/integrations/openai-pixel.md +441 -0
  350. package/docs/integrations/overview.md +95 -133
  351. package/docs/integrations/pirsch.md +249 -96
  352. package/docs/integrations/plausible-analytics.md +241 -100
  353. package/docs/integrations/posthog.md +353 -214
  354. package/docs/integrations/promptwatch.md +251 -81
  355. package/docs/integrations/reddit-pixel.md +226 -173
  356. package/docs/integrations/rudderstack.md +244 -187
  357. package/docs/integrations/rybbit-analytics.md +244 -91
  358. package/docs/integrations/segment.md +238 -92
  359. package/docs/integrations/snapchat-pixel.md +240 -110
  360. package/docs/integrations/tiktok-pixel.md +249 -81
  361. package/docs/integrations/umami-analytics.md +242 -95
  362. package/docs/integrations/vercel-analytics.md +242 -90
  363. package/docs/integrations/x-pixel.md +238 -104
  364. package/docs/integrations/youtube.md +354 -142
  365. package/docs/upgrade-v3.md +334 -0
  366. package/iab/styles.css +1 -1
  367. package/iab/styles.tw3.css +1 -1
  368. package/package.json +187 -102
  369. package/readme.json +1 -1
  370. package/src/iab/styles.css +1 -1
  371. package/src/iab/styles.tw3.css +1 -1
  372. package/src/styles.css +1 -1
  373. package/src/styles.tw3.css +1 -1
  374. package/styles.css +1 -1
  375. package/styles.tw3.css +1 -1
  376. package/client/components/consent-banner.js +0 -4
  377. package/client/components/consent-dialog-link.js +0 -3
  378. package/client/components/consent-dialog-trigger.js +0 -3
  379. package/client/components/consent-dialog.js +0 -4
  380. package/client/components/consent-widget.js +0 -4
  381. package/client/components/frame.js +0 -3
  382. package/client/components/integrations.js +0 -3
  383. package/dist/components/consent-banner/atoms/overlay.cjs +0 -1
  384. package/dist/components/consent-banner/atoms/overlay.js +0 -1
  385. package/dist/components/consent-banner/atoms/root.cjs +0 -1
  386. package/dist/components/consent-banner/atoms/root.js +0 -1
  387. package/dist/components/consent-banner/components.cjs +0 -1
  388. package/dist/components/consent-banner/components.js +0 -1
  389. package/dist/components/consent-banner/consent-banner.cjs +0 -1
  390. package/dist/components/consent-banner/consent-banner.js +0 -1
  391. package/dist/components/consent-banner/error-boundary.cjs +0 -1
  392. package/dist/components/consent-banner/error-boundary.js +0 -1
  393. package/dist/components/consent-banner/index.cjs +0 -1
  394. package/dist/components/consent-banner/index.js +0 -1
  395. package/dist/components/consent-banner/policy-actions.cjs +0 -1
  396. package/dist/components/consent-banner/policy-actions.js +0 -1
  397. package/dist/components/consent-dialog/atoms/card.cjs +0 -1
  398. package/dist/components/consent-dialog/atoms/card.js +0 -1
  399. package/dist/components/consent-dialog/atoms/overlay.cjs +0 -1
  400. package/dist/components/consent-dialog/atoms/overlay.js +0 -1
  401. package/dist/components/consent-dialog/atoms/root.cjs +0 -1
  402. package/dist/components/consent-dialog/atoms/root.js +0 -1
  403. package/dist/components/consent-dialog/consent-dialog.cjs +0 -1
  404. package/dist/components/consent-dialog/consent-dialog.js +0 -1
  405. package/dist/components/consent-dialog/index.cjs +0 -1
  406. package/dist/components/consent-dialog/index.js +0 -1
  407. package/dist/components/consent-dialog-link/index.cjs +0 -1
  408. package/dist/components/consent-dialog-trigger/atoms/button.cjs +0 -1
  409. package/dist/components/consent-dialog-trigger/atoms/button.js +0 -1
  410. package/dist/components/consent-dialog-trigger/atoms/icon.cjs +0 -1
  411. package/dist/components/consent-dialog-trigger/atoms/icon.js +0 -1
  412. package/dist/components/consent-dialog-trigger/atoms/root.cjs +0 -1
  413. package/dist/components/consent-dialog-trigger/atoms/root.js +0 -1
  414. package/dist/components/consent-dialog-trigger/atoms/text.cjs +0 -1
  415. package/dist/components/consent-dialog-trigger/atoms/text.js +0 -1
  416. package/dist/components/consent-dialog-trigger/atoms/toolbar.cjs +0 -1
  417. package/dist/components/consent-dialog-trigger/atoms/toolbar.js +0 -1
  418. package/dist/components/consent-dialog-trigger/consent-dialog-trigger-toolbar.cjs +0 -1
  419. package/dist/components/consent-dialog-trigger/consent-dialog-trigger-toolbar.js +0 -1
  420. package/dist/components/consent-dialog-trigger/consent-dialog-trigger.cjs +0 -1
  421. package/dist/components/consent-dialog-trigger/consent-dialog-trigger.js +0 -1
  422. package/dist/components/consent-dialog-trigger/index.cjs +0 -1
  423. package/dist/components/consent-dialog-trigger/index.js +0 -1
  424. package/dist/components/consent-dialog-trigger/types.cjs +0 -1
  425. package/dist/components/consent-dialog-trigger/use-draggable.cjs +0 -1
  426. package/dist/components/consent-dialog-trigger/use-draggable.js +0 -1
  427. package/dist/components/consent-preferences-link/consent-preferences-link.cjs +0 -1
  428. package/dist/components/consent-preferences-link/index.cjs +0 -1
  429. package/dist/components/consent-widget/atoms/accordion.cjs +0 -1
  430. package/dist/components/consent-widget/atoms/accordion.js +0 -1
  431. package/dist/components/consent-widget/atoms/button.cjs +0 -1
  432. package/dist/components/consent-widget/atoms/button.js +0 -1
  433. package/dist/components/consent-widget/atoms/footer.cjs +0 -1
  434. package/dist/components/consent-widget/atoms/footer.js +0 -1
  435. package/dist/components/consent-widget/atoms/root.cjs +0 -1
  436. package/dist/components/consent-widget/atoms/root.js +0 -1
  437. package/dist/components/consent-widget/consent-widget.cjs +0 -1
  438. package/dist/components/consent-widget/consent-widget.js +0 -1
  439. package/dist/components/consent-widget/index.cjs +0 -1
  440. package/dist/components/consent-widget/index.js +0 -1
  441. package/dist/components/consent-widget/policy-actions.cjs +0 -1
  442. package/dist/components/consent-widget/policy-actions.js +0 -1
  443. package/dist/components/consent-widget/types.cjs +0 -1
  444. package/dist/components/frame/atoms.cjs +0 -1
  445. package/dist/components/frame/frame.cjs +0 -1
  446. package/dist/components/frame/index.cjs +0 -1
  447. package/dist/components/frame/types.cjs +0 -1
  448. package/dist/components/iab-consent-banner/atoms/button-group.cjs +0 -1
  449. package/dist/components/iab-consent-banner/atoms/button-group.js +0 -1
  450. package/dist/components/iab-consent-banner/atoms/card.cjs +0 -1
  451. package/dist/components/iab-consent-banner/atoms/card.js +0 -1
  452. package/dist/components/iab-consent-banner/atoms/description.cjs +0 -1
  453. package/dist/components/iab-consent-banner/atoms/description.js +0 -1
  454. package/dist/components/iab-consent-banner/atoms/footer.cjs +0 -1
  455. package/dist/components/iab-consent-banner/atoms/footer.js +0 -1
  456. package/dist/components/iab-consent-banner/atoms/header.cjs +0 -1
  457. package/dist/components/iab-consent-banner/atoms/header.js +0 -1
  458. package/dist/components/iab-consent-banner/atoms/overlay.cjs +0 -1
  459. package/dist/components/iab-consent-banner/atoms/overlay.js +0 -1
  460. package/dist/components/iab-consent-banner/atoms/root.cjs +0 -1
  461. package/dist/components/iab-consent-banner/atoms/root.js +0 -1
  462. package/dist/components/iab-consent-banner/atoms/title.cjs +0 -1
  463. package/dist/components/iab-consent-banner/atoms/title.js +0 -1
  464. package/dist/components/iab-consent-banner/iab-consent-banner.cjs +0 -1
  465. package/dist/components/iab-consent-banner/iab-consent-banner.js +0 -1
  466. package/dist/components/iab-consent-banner/index.cjs +0 -1
  467. package/dist/components/iab-consent-banner/index.js +0 -1
  468. package/dist/components/iab-consent-dialog/atoms/card.cjs +0 -1
  469. package/dist/components/iab-consent-dialog/atoms/card.js +0 -1
  470. package/dist/components/iab-consent-dialog/atoms/content.cjs +0 -1
  471. package/dist/components/iab-consent-dialog/atoms/content.js +0 -1
  472. package/dist/components/iab-consent-dialog/atoms/footer.cjs +0 -1
  473. package/dist/components/iab-consent-dialog/atoms/footer.js +0 -1
  474. package/dist/components/iab-consent-dialog/atoms/header.cjs +0 -1
  475. package/dist/components/iab-consent-dialog/atoms/header.js +0 -1
  476. package/dist/components/iab-consent-dialog/atoms/overlay.cjs +0 -1
  477. package/dist/components/iab-consent-dialog/atoms/overlay.js +0 -1
  478. package/dist/components/iab-consent-dialog/atoms/purpose-item.cjs +0 -1
  479. package/dist/components/iab-consent-dialog/atoms/purpose-item.js +0 -1
  480. package/dist/components/iab-consent-dialog/atoms/root.cjs +0 -1
  481. package/dist/components/iab-consent-dialog/atoms/root.js +0 -1
  482. package/dist/components/iab-consent-dialog/atoms/stack-item.cjs +0 -1
  483. package/dist/components/iab-consent-dialog/atoms/stack-item.js +0 -1
  484. package/dist/components/iab-consent-dialog/atoms/tabs.cjs +0 -1
  485. package/dist/components/iab-consent-dialog/atoms/tabs.js +0 -1
  486. package/dist/components/iab-consent-dialog/atoms/vendor-list.cjs +0 -1
  487. package/dist/components/iab-consent-dialog/atoms/vendor-list.js +0 -1
  488. package/dist/components/iab-consent-dialog/hooks/use-gvl-data.cjs +0 -1
  489. package/dist/components/iab-consent-dialog/hooks/use-gvl-data.js +0 -1
  490. package/dist/components/iab-consent-dialog/iab-consent-dialog.cjs +0 -1
  491. package/dist/components/iab-consent-dialog/iab-consent-dialog.js +0 -1
  492. package/dist/components/iab-consent-dialog/index.cjs +0 -1
  493. package/dist/components/iab-consent-dialog/index.js +0 -1
  494. package/dist/components/iab-consent-dialog/types.cjs +0 -1
  495. package/dist/components/iab-consent-dialog/use-iab-translations.cjs +0 -1
  496. package/dist/components/iab-consent-dialog/use-iab-translations.js +0 -1
  497. package/dist/components/integrations/google-map.cjs +0 -1
  498. package/dist/components/integrations/google-map.js +0 -1
  499. package/dist/components/integrations/index.cjs +0 -1
  500. package/dist/components/integrations/index.js +0 -1
  501. package/dist/components/integrations/shared.cjs +0 -1
  502. package/dist/components/integrations/shared.js +0 -1
  503. package/dist/components/integrations/youtube-embed.cjs +0 -1
  504. package/dist/components/integrations/youtube-embed.js +0 -1
  505. package/dist/components/shared/libs/polymorphic.cjs +0 -1
  506. package/dist/components/shared/libs/recursive-clone-children.cjs +0 -1
  507. package/dist/components/shared/libs/slot.cjs +0 -1
  508. package/dist/components/shared/libs/use-controllable-state.cjs +0 -1
  509. package/dist/components/shared/policy-actions.cjs +0 -1
  510. package/dist/components/shared/primitives/box.cjs +0 -1
  511. package/dist/components/shared/primitives/button.cjs +0 -1
  512. package/dist/components/shared/primitives/button.types.cjs +0 -1
  513. package/dist/components/shared/primitives/legal-links/index.cjs +0 -1
  514. package/dist/components/shared/ui/accordion/accordion.cjs +0 -1
  515. package/dist/components/shared/ui/accordion/accordion.types.cjs +0 -1
  516. package/dist/components/shared/ui/accordion/index.cjs +0 -1
  517. package/dist/components/shared/ui/animated-collapse/animated-collapse.cjs +0 -1
  518. package/dist/components/shared/ui/animated-collapse/index.cjs +0 -1
  519. package/dist/components/shared/ui/branding.cjs +0 -1
  520. package/dist/components/shared/ui/button/button.cjs +0 -1
  521. package/dist/components/shared/ui/button/button.types.cjs +0 -1
  522. package/dist/components/shared/ui/button/index.cjs +0 -1
  523. package/dist/components/shared/ui/collapsible/collapsible.cjs +0 -1
  524. package/dist/components/shared/ui/collapsible/index.cjs +0 -1
  525. package/dist/components/shared/ui/dialog/dialog.cjs +0 -1
  526. package/dist/components/shared/ui/dialog/index.cjs +0 -1
  527. package/dist/components/shared/ui/icon.cjs +0 -1
  528. package/dist/components/shared/ui/logo.cjs +0 -1
  529. package/dist/components/shared/ui/preference-item/index.cjs +0 -1
  530. package/dist/components/shared/ui/preference-item/preference-item.cjs +0 -1
  531. package/dist/components/shared/ui/switch/index.cjs +0 -1
  532. package/dist/components/shared/ui/switch/switch.cjs +0 -1
  533. package/dist/components/shared/ui/switch/switch.types.cjs +0 -1
  534. package/dist/components/shared/ui/tabs/index.cjs +0 -1
  535. package/dist/components/shared/ui/tabs/tabs.cjs +0 -1
  536. package/dist/context/consent-manager-context.cjs +0 -1
  537. package/dist/context/consent-manager-context.js +0 -1
  538. package/dist/context/consent-tracking-context.cjs +0 -1
  539. package/dist/context/theme-context.cjs +0 -1
  540. package/dist/headless.cjs +0 -1
  541. package/dist/hooks/index.cjs +0 -1
  542. package/dist/hooks/index.js +0 -1
  543. package/dist/hooks/use-color-scheme.cjs +0 -1
  544. package/dist/hooks/use-component-config.cjs +0 -1
  545. package/dist/hooks/use-consent-dialog-trigger.cjs +0 -1
  546. package/dist/hooks/use-consent-dialog-trigger.js +0 -1
  547. package/dist/hooks/use-consent-manager.cjs +0 -1
  548. package/dist/hooks/use-consent-manager.js +0 -1
  549. package/dist/hooks/use-consent-script.cjs +0 -1
  550. package/dist/hooks/use-consent-script.js +0 -1
  551. package/dist/hooks/use-focus-trap.cjs +0 -1
  552. package/dist/hooks/use-headless-consent-ui.cjs +0 -1
  553. package/dist/hooks/use-headless-consent-ui.js +0 -1
  554. package/dist/hooks/use-headless-iab-consent-ui.cjs +0 -1
  555. package/dist/hooks/use-reduced-motion.cjs +0 -1
  556. package/dist/hooks/use-scroll-lock.cjs +0 -1
  557. package/dist/hooks/use-ssr-status.cjs +0 -1
  558. package/dist/hooks/use-ssr-status.js +0 -1
  559. package/dist/hooks/use-styles.cjs +0 -1
  560. package/dist/hooks/use-styles.js +0 -1
  561. package/dist/hooks/use-text-direction.cjs +0 -1
  562. package/dist/hooks/use-theme.cjs +0 -1
  563. package/dist/hooks/use-translations.cjs +0 -1
  564. package/dist/hooks/use-translations.js +0 -1
  565. package/dist/iab.cjs +0 -1
  566. package/dist/index.cjs +0 -1
  567. package/dist/primitives/accordion.cjs +0 -1
  568. package/dist/primitives/button.cjs +0 -1
  569. package/dist/primitives/collapsible.cjs +0 -1
  570. package/dist/primitives/dialog.cjs +0 -1
  571. package/dist/primitives/preference-item.cjs +0 -1
  572. package/dist/primitives/switch.cjs +0 -1
  573. package/dist/primitives/tabs.cjs +0 -1
  574. package/dist/primitives.cjs +0 -1
  575. package/dist/providers/consent-manager-provider.cjs +0 -1
  576. package/dist/providers/consent-manager-provider.js +0 -1
  577. package/dist/server/fetch-ssr-data.cjs +0 -1
  578. package/dist/server/headers.cjs +0 -1
  579. package/dist/server/index.cjs +0 -1
  580. package/dist/server/init-cache-key.cjs +0 -1
  581. package/dist/server/normalize-url.cjs +0 -1
  582. package/dist/server/types.cjs +0 -1
  583. package/dist/types/consent-manager.cjs +0 -1
  584. package/dist/types/theme/index.cjs +0 -1
  585. package/dist/types/theme/style-keys.cjs +0 -1
  586. package/dist/types/theme/style-types.cjs +0 -1
  587. package/dist/utils/cn.cjs +0 -1
  588. package/dist/utils/merge-styles.cjs +0 -1
  589. package/dist/utils/test-helpers.cjs +0 -1
  590. package/dist/utils/test-helpers.js +0 -1
  591. package/dist/utils/theme-utils.cjs +0 -1
  592. package/dist/version.cjs +0 -1
  593. package/dist-types/components/consent-banner/atoms/root.d.ts +0 -126
  594. package/dist-types/components/consent-banner/policy-actions.d.ts +0 -11
  595. package/dist-types/components/consent-widget/policy-actions.d.ts +0 -11
  596. package/dist-types/components/iab-consent-dialog/hooks/use-gvl-data.d.ts +0 -27
  597. package/dist-types/components/iab-consent-dialog/types.d.ts +0 -72
  598. package/dist-types/components/integrations/google-map.d.ts +0 -82
  599. package/dist-types/components/integrations/index.d.ts +0 -2
  600. package/dist-types/components/integrations/shared.d.ts +0 -12
  601. package/dist-types/components/integrations/youtube-embed.d.ts +0 -95
  602. package/dist-types/context/consent-manager-context.d.ts +0 -31
  603. package/dist-types/hooks/index.d.ts +0 -12
  604. package/dist-types/hooks/use-consent-dialog-trigger.d.ts +0 -10
  605. package/dist-types/hooks/use-consent-manager.d.ts +0 -27
  606. package/dist-types/hooks/use-consent-script.d.ts +0 -80
  607. package/dist-types/hooks/use-headless-consent-ui.d.ts +0 -46
  608. package/dist-types/hooks/use-ssr-status.d.ts +0 -57
  609. package/dist-types/hooks/use-styles.d.ts +0 -21
  610. package/dist-types/hooks/use-translations.d.ts +0 -28
  611. package/dist-types/providers/consent-manager-provider.d.ts +0 -40
  612. package/dist-types/types/consent-manager.d.ts +0 -39
  613. package/dist-types/types/theme/style-keys.d.ts +0 -1
  614. package/dist-types/utils/test-helpers.d.ts +0 -31
  615. package/docs/frameworks/react/building-headless-components.md +0 -370
  616. package/docs/frameworks/react/callbacks.md +0 -186
  617. package/docs/frameworks/react/concepts/client-modes.md +0 -177
  618. package/docs/frameworks/react/concepts/consent-models.md +0 -113
  619. package/docs/frameworks/react/concepts/cookie-management.md +0 -122
  620. package/docs/frameworks/react/concepts/glossary.md +0 -24
  621. package/docs/frameworks/react/concepts/initialization-flow.md +0 -149
  622. package/docs/frameworks/react/concepts/policy-packs.md +0 -228
  623. package/docs/frameworks/react/hooks/use-color-scheme.md +0 -41
  624. package/docs/frameworks/react/hooks/use-consent-manager/checking-consent.md +0 -96
  625. package/docs/frameworks/react/hooks/use-consent-manager/location-info.md +0 -97
  626. package/docs/frameworks/react/hooks/use-consent-manager/setting-consent.md +0 -94
  627. package/docs/frameworks/react/hooks/use-draggable.md +0 -59
  628. package/docs/frameworks/react/hooks/use-focus-trap.md +0 -42
  629. package/docs/frameworks/react/hooks/use-reduced-motion.md +0 -37
  630. package/docs/frameworks/react/hooks/use-ssr-status.md +0 -32
  631. package/docs/frameworks/react/hooks/use-text-direction.md +0 -50
  632. package/docs/frameworks/react/hooks/use-translations.md +0 -55
  633. package/docs/frameworks/react/iab/consent-banner.md +0 -91
  634. package/docs/frameworks/react/iab/consent-dialog.md +0 -129
  635. package/docs/frameworks/react/iab/use-gvl-data.md +0 -21
  636. package/docs/frameworks/react/iframe-blocking.md +0 -106
  637. package/docs/frameworks/react/internationalization.md +0 -207
  638. package/docs/frameworks/react/network-blocker.md +0 -140
  639. package/docs/frameworks/react/optimization.md +0 -148
  640. package/docs/frameworks/react/policy-packs.md +0 -242
  641. package/docs/frameworks/react/server-side.md +0 -158
  642. package/docs/frameworks/react/styling/classnames.md +0 -94
  643. package/docs/frameworks/react/styling/color-scheme.md +0 -84
  644. package/docs/frameworks/react/styling/css-variables.md +0 -53
  645. package/docs/frameworks/react/styling/slots.md +0 -94
  646. package/docs/frameworks/react/styling/tailwind.md +0 -119
  647. package/docs/frameworks/react/styling/tokens.md +0 -156
  648. package/docs/shared/concepts/client-modes.md +0 -103
  649. package/docs/shared/concepts/consent-categories.md +0 -41
  650. package/docs/shared/concepts/consent-models.md +0 -72
  651. package/docs/shared/concepts/cookie-management.md +0 -88
  652. package/docs/shared/concepts/glossary.md +0 -24
  653. package/docs/shared/concepts/initialization-flow.md +0 -105
  654. package/docs/shared/concepts/policy-packs.md +0 -225
  655. package/docs/shared/react/components/consent-banner.md +0 -242
  656. package/docs/shared/react/components/consent-dialog-link.md +0 -45
  657. package/docs/shared/react/components/consent-dialog-trigger.md +0 -185
  658. package/docs/shared/react/components/consent-dialog.md +0 -119
  659. package/docs/shared/react/components/consent-manager-provider.md +0 -225
  660. package/docs/shared/react/components/consent-widget.md +0 -121
  661. package/docs/shared/react/components/dev-tools.md +0 -81
  662. package/docs/shared/react/components/frame.md +0 -52
  663. package/docs/shared/react/guides/building-headless-components.md +0 -110
  664. package/docs/shared/react/guides/callbacks.md +0 -89
  665. package/docs/shared/react/guides/headless.md +0 -31
  666. package/docs/shared/react/guides/iframe-blocking.md +0 -65
  667. package/docs/shared/react/guides/internationalization.md +0 -123
  668. package/docs/shared/react/guides/network-blocker.md +0 -72
  669. package/docs/shared/react/guides/optimization.md +0 -44
  670. package/docs/shared/react/guides/policy-packs.md +0 -173
  671. package/docs/shared/react/guides/script-loader.md +0 -311
  672. package/docs/shared/react/hooks/use-color-scheme.md +0 -31
  673. package/docs/shared/react/hooks/use-consent-manager/checking-consent.md +0 -95
  674. package/docs/shared/react/hooks/use-consent-manager/location-info.md +0 -96
  675. package/docs/shared/react/hooks/use-consent-manager/overview.md +0 -74
  676. package/docs/shared/react/hooks/use-consent-manager/setting-consent.md +0 -93
  677. package/docs/shared/react/hooks/use-draggable.md +0 -30
  678. package/docs/shared/react/hooks/use-focus-trap.md +0 -20
  679. package/docs/shared/react/hooks/use-reduced-motion.md +0 -33
  680. package/docs/shared/react/hooks/use-ssr-status.md +0 -16
  681. package/docs/shared/react/hooks/use-text-direction.md +0 -38
  682. package/docs/shared/react/hooks/use-translations.md +0 -15
  683. package/docs/shared/react/iab/consent-banner.md +0 -60
  684. package/docs/shared/react/iab/consent-dialog.md +0 -76
  685. package/docs/shared/react/iab/overview.md +0 -80
  686. package/docs/shared/react/iab/use-gvl-data.md +0 -21
  687. package/docs/shared/react/styling/classnames.md +0 -93
  688. package/docs/shared/react/styling/color-scheme.md +0 -35
  689. package/docs/shared/react/styling/css-variables.md +0 -53
  690. package/docs/shared/react/styling/overview.md +0 -261
  691. package/docs/shared/react/styling/slots.md +0 -93
  692. package/docs/shared/react/styling/stylesheet-entrypoint.md +0 -8
  693. package/docs/shared/react/styling/tailwind.md +0 -88
  694. package/docs/shared/react/styling/tokens.md +0 -155
  695. package/docs/shared/troubleshooting.md +0 -82
  696. /package/dist/components/{consent-dialog-trigger → iab-panel}/types.js +0 -0
  697. /package/dist/components/{consent-widget → panel-trigger}/types.js +0 -0
  698. /package/dist/components/{iab-consent-dialog → preferences}/types.js +0 -0
  699. /package/dist/types/{consent-manager.js → manager.js} +0 -0
  700. /package/dist/types/{theme/style-keys.js → slots.js} +0 -0
  701. /package/dist-types/components/{consent-dialog-link → panel-link}/index.d.ts +0 -0
  702. /package/dist-types/components/{consent-widget → preferences}/atoms/button.d.ts +0 -0
  703. /package/dist-types/components/{consent-widget/consent-widget.d.ts → preferences/preferences.d.ts} +0 -0
  704. /package/dist-types/components/{consent-widget → preferences}/types.d.ts +0 -0
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{Fragment as e,jsx as t,jsxs as o}from"react/jsx-runtime";import{isDialogDismissKey as n}from"@c15t/ui/primitives/dialog";import r from"@c15t/ui/styles/components/consent-actions";import i from"@c15t/ui/styles/components/iab-consent-dialog";import{useCallback as a,useEffect as s,useLayoutEffect as l,useMemo as d,useRef as c,useState as m}from"react";import{createPortal as p}from"react-dom";import{useHeadlessIABConsentUI as u}from"../../component-hooks/use-headless-iab-consent-ui.js";import{useTranslations as g}from"../../component-hooks/use-translations.js";import{ConsentDialogTrigger as h}from"../panel-trigger/index.js";import{Branding as b}from"../panel/atoms/card.js";import{ConsentTrackingContext as y}from"../../context/consent-tracking-context.js";import{LocalThemeContext as v}from"../../context/theme-context.js";import{useComponentConfig as f}from"../../hooks/use-component-config.js";import{useFocusTrap as C}from"../../hooks/use-focus-trap.js";import{useIABConsentManager as S}from"../../hooks/use-iab-manager.js";import{useScrollLock as k}from"../../hooks/use-scroll-lock.js";import{useTextDirection as I}from"../../hooks/use-text-direction.js";import{useUIConfig as N}from"../../ui-config-context.js";import{mergeSlotProps as x}from"../../utils/merge-slot-props.js";import{IABConsentDialogOverlay as L}from"./atoms/overlay.js";import{PurposeItem as j}from"./atoms/purpose-item.js";import{StackItem as T}from"./atoms/stack-item.js";import{VendorList as A}from"./atoms/vendor-list.js";import{useIABDisplayModel as V}from"./hooks/use-display-model.js";import{useIABTranslations as F}from"./use-iab-translations.js";import*as w from"../shared/ui/button/index.js";import*as P from"../shared/ui/tabs/index.js";let B=["iab"],R={tabIndex:-1},$=({open:$,noStyle:M,disableAnimation:q,scrollLock:z,trapFocus:E,hideBranding:H,initialTab:W,showTrigger:D=!1,models:G=B,uiSource:O})=>{let _=F(),{common:J}=g(),{components:K}=N(),{iab:Q,activeUI:U,policyDialog:X,translationConfig:Y,model:Z}=S({preferences:{scrollLock:z,trapFocus:E}}),{banner:ee,closeUI:et,openDialog:eo,performDialogAction:en}=u(),er=X.blocking,ei=I(Y.defaultLanguage),ea=c(null),es=c(null),el=c(null),[ed,ec]=m(W??Q?.preferenceCenterTab??"purposes"),[em,ep]=m(null),[eu,eg]=m(!1),[eh,eb]=m(!1),[ey,ev]=m(!1),ef=null!==Z&&G.includes(Z)&&($??"dialog"===U),eC=f({disableAnimation:q,noStyle:M,scrollLock:er,trapFocus:X.blocking}),{consentRows:eS,essentialRows:ek,essentialPartnerCount:eI,purposeTabCount:eN,vendorTabCount:ex,data:{purposes:eL}}=V(),ej=a((e,t)=>{Q?.setPurposeConsent(e,t)},[Q]),eT=a((e,t)=>{Q?.setSpecialFeatureOptIn(e,t)},[Q]),eA=a((e,t)=>{Q?.setVendorConsent(e,t)},[Q]),eV=a((e,t)=>{Q?.setVendorLegitimateInterest(e,t)},[Q]),eF=a((e,t)=>{Q?.setPurposeLegitimateInterest(e,t)},[Q]),ew=async()=>{try{await en("accept")}catch{}},eP=async()=>{try{await en("reject")}catch{}},eB=async()=>{try{await en("customize")}catch{}},eR=a(()=>{et()},[et]),e$=e=>{ep(e),ec("vendors"),eo({tab:"vendors"})};C(!!(eh&&ef&&eC.trapFocus),ea),k(!!(ef&&eC.scrollLock)),s(()=>{if(!ef)return;let e=e=>{n(e.key)&&(e.preventDefault(),eR())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[eR,ef]),s(()=>{let e=requestAnimationFrame(()=>eb(!0));return()=>cancelAnimationFrame(e)},[]),s(()=>{if(ef){let e=requestAnimationFrame(()=>ev(!0));return()=>cancelAnimationFrame(e)}if(eC.disableAnimation){let e=requestAnimationFrame(()=>ev(!1));return()=>cancelAnimationFrame(e)}let e=setTimeout(()=>{ev(!1)},150);return()=>clearTimeout(e)},[ef,eC.disableAnimation]);let eM=c(!!W);s(()=>{let e=Q?.preferenceCenterTab;if(!(ef&&e))return;if(eM.current){eM.current=!1;return}let t=requestAnimationFrame(()=>{ec(e)});return()=>cancelAnimationFrame(t)},[ef,Q?.preferenceCenterTab]),l(()=>{let e,t;if("purposes"!==ed&&"vendors"!==ed)return;let o=es.current;if(!o||null===el.current)return;let n=el.current;if(el.current=null,!window.matchMedia("(prefers-reduced-motion: reduce)").matches)return o.style.height=`${n}px`,o.style.overflow="hidden",o.style.transition="none",e=requestAnimationFrame(()=>{t=requestAnimationFrame(()=>{if(!o)return;o.style.height="auto";let e=o.getBoundingClientRect().height;if(o.style.height=`${n}px`,1>Math.abs(n-e)){o.style.height="",o.style.overflow="",o.style.transition="";return}o.getBoundingClientRect(),o.style.transition="height 180ms cubic-bezier(0.33, 1, 0.68, 1)",o.style.height=`${e}px`,o.addEventListener("transitionend",e=>{"height"===e.propertyName&&(o.style.height="",o.style.overflow="",o.style.transition="")},{once:!0})})}),()=>{cancelAnimationFrame(e),cancelAnimationFrame(t)}},[ed]);let eq=a(e=>{es.current&&(el.current=es.current.offsetHeight),ec(e),eo({tab:e})},[eo]),ez=d(()=>({uiSource:O??"iab_dialog"}),[O]);if(!eh||!Q?.config.enabled)return null;let eE=Q.isLoadingGVL||!Q.gvl,eH=x(K?.["iab-dialog"]?.root,{baseClassName:`${i.root} ${ey?i.dialogVisible:i.dialogHidden}`,noStyle:eC.noStyle}),eW=x(K?.["iab-dialog"]?.card,{baseClassName:`${i.card} ${ey?i.contentVisible:i.contentHidden}`,noStyle:eC.noStyle}),eD=x(K?.["iab-dialog"]?.header,{baseClassName:i.header,noStyle:eC.noStyle}),eG=x(K?.["iab-dialog"]?.headerContent,{baseClassName:i.headerContent,noStyle:eC.noStyle}),eO=x(K?.["iab-dialog"]?.title,{baseClassName:i.title,noStyle:eC.noStyle}),e_=x(K?.["iab-dialog"]?.description,{baseClassName:i.description,noStyle:eC.noStyle}),eJ=x(K?.["iab-dialog"]?.closeButton,{baseClassName:i.closeButton,noStyle:eC.noStyle}),eK=x(K?.["iab-dialog"]?.body,{baseClassName:i.body,noStyle:eC.noStyle}),eQ=x(K?.["iab-dialog"]?.tabs,{baseClassName:i.tabsContainer,noStyle:eC.noStyle}),eU=x(K?.["iab-dialog"]?.tabsList,{baseClassName:i.tabsList,noStyle:eC.noStyle}),eX=x(K?.["iab-dialog"]?.tabTrigger,{baseClassName:i.tabButton,noStyle:eC.noStyle}),eY=x(K?.["iab-dialog"]?.tabIndicator,{baseClassName:i.tabIndicator,noStyle:eC.noStyle}),eZ=x(K?.["iab-dialog"]?.content,{baseClassName:i.content,noStyle:eC.noStyle}),e1=x(K?.["iab-dialog"]?.loading,{baseClassName:i.loadingContainer,noStyle:eC.noStyle}),e0=x(K?.["iab-dialog"]?.tabPanel,{baseClassName:i.tabPanel,noStyle:eC.noStyle}),e2=x(K?.["iab-dialog"]?.specialPurposes,{baseClassName:i.specialPurposesSection,noStyle:eC.noStyle}),e7=x(K?.["iab-dialog"]?.consentNotice,{baseClassName:i.consentNotice,noStyle:eC.noStyle}),e4=x(K?.["iab-dialog"]?.actions,{baseClassName:r.actionRoot,noStyle:eC.noStyle}),e8=x(K?.["iab-dialog"]?.footer,{baseClassName:i.footer,noStyle:eC.noStyle,...e4}),e5=x(K?.["iab-dialog"]?.actionGroup,{baseClassName:r.actionGroup,"data-direction":"row",noStyle:eC.noStyle}),e6=t(y.Provider,{value:ez,children:o(v.Provider,{value:eC,children:[t(L,{isOpen:ef}),t("div",{...eH,"data-testid":"iab-consent-dialog-root",dir:ei,children:o("div",{...eW,ref:ea,"aria-label":_.preferenceCenter.title,"aria-modal":eC.trapFocus?"true":void 0,role:"dialog",...R,"data-testid":"iab-consent-dialog-card",children:[o("div",{...eD,children:[o("div",{...eG,children:[t("h2",{...eO,children:_.preferenceCenter.title}),t("p",{...e_,children:_.preferenceCenter.description})]}),t("button",{...eJ,type:"button","data-testid":"iab-consent-dialog-close",onClick:eR,"aria-label":J.close,children:o("svg",{"aria-hidden":"true",style:{height:"1rem",width:"1rem"},viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),t("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),o(P.Root,{...eK,noStyle:!0,onValueChange:e=>eq(e),value:ed,children:[t("div",{...eQ,children:o(P.List,{...eU,noStyle:!0,children:[o(P.Trigger,{...eX,noStyle:!0,value:"purposes",children:[_.preferenceCenter.tabs.purposes,!eE&&` (${eN})`]}),o(P.Trigger,{...eX,noStyle:!0,value:"vendors",children:[_.preferenceCenter.tabs.vendors,!eE&&` (${ex})`]}),t("div",{...eY,"aria-hidden":"true","data-active-tab":ed})]})}),t("div",{...eZ,ref:es,children:eE?o("div",{...e1,children:[t("div",{className:i.loadingSpinner}),t("p",{className:i.loadingText,children:_.common.loading})]}):o(e,{children:[o(P.Content,{...e0,forceMount:!0,noStyle:!0,value:"purposes",children:[eS.map(e=>"stack"===e.kind?t(T,{stack:e,consents:Q.purposeConsents,onToggle:ej,vendorConsents:Q.vendorConsents,onVendorToggle:eA,onVendorClick:e$,vendorLegitimateInterests:Q.vendorLegitimateInterests,onVendorLegitimateInterestToggle:eV,purposeLegitimateInterests:Q.purposeLegitimateInterests,onPurposeLegitimateInterestToggle:eF},e.testId):t(j,{purpose:e,testId:e.testId,isEnabled:"special-feature"===e.toggle?Q.specialFeatureOptIns[e.id]??!1:Q.purposeConsents[e.id]??!1,onToggle:t=>{"special-feature"===e.toggle?eT(e.id,t):ej(e.id,t)},vendorConsents:Q.vendorConsents,onVendorToggle:eA,onVendorClick:e$,vendorLegitimateInterests:Q.vendorLegitimateInterests,onVendorLegitimateInterestToggle:eV,purposeLegitimateInterests:"purpose"===e.kind?Q.purposeLegitimateInterests:void 0,onPurposeLegitimateInterestToggle:"purpose"===e.kind?eF:void 0},e.testId)),ek.length>0&&o("div",{...e2,children:[o("div",{className:i.specialPurposesHeader,children:[o("button",{type:"button","aria-expanded":eu,onClick:()=>eg(!eu),className:i.purposeTrigger,children:[t("svg",{"aria-hidden":"true",className:i.purposeArrow,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:eu?t("path",{d:"M19 9l-7 7-7-7"}):t("path",{d:"M9 5l7 7-7 7"})}),o("div",{className:i.purposeInfo,children:[o("h3",{className:i.specialPurposesTitle,children:[_.preferenceCenter.specialPurposes.title,o("svg",{"aria-hidden":"true",className:i.lockIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2",ry:"2"}),t("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})]})]}),o("p",{className:i.purposeMeta,children:[eI," ",1===eI?_.preferenceCenter.vendorList.partnerSingular:_.preferenceCenter.vendorList.partnerPlural]})]})]}),t("div",{style:{position:"relative"},children:o("svg",{className:i.infoIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-label":_.preferenceCenter.specialPurposes.tooltip,children:[t("circle",{cx:"12",cy:"12",r:"10"}),t("line",{x1:"12",y1:"16",x2:"12",y2:"12"}),t("line",{x1:"12",y1:"8",x2:"12.01",y2:"8"})]})})]}),eu&&t("div",{style:{padding:"0.75rem"},children:ek.map(e=>t(j,{purpose:e,testId:e.testId,isEnabled:!0,onToggle:()=>{},vendorConsents:Q.vendorConsents,onVendorToggle:eA,onVendorClick:e$,isLocked:!0},e.testId))})]}),t("div",{...e7,children:t("p",{className:i.consentNoticeText,children:_.preferenceCenter.footer.consentStorage})})]}),t(P.Content,{...e0,forceMount:!0,noStyle:!0,value:"vendors",children:t(A,{vendorData:Q.gvl,purposes:eL,vendorConsents:Q.vendorConsents,onVendorToggle:eA,selectedVendorId:em,onClearSelection:()=>ep(null),customVendors:Q.nonIABVendors,vendorLegitimateInterests:Q.vendorLegitimateInterests,onVendorLegitimateInterestToggle:eV})})]})})]}),o("div",{...e8,children:[o("div",{...e5,children:[t(w.Root,{variant:"neutral",mode:"stroke",size:"small",onClick:eP,disabled:!ee.isReady,"data-action":"reject",children:_.common.rejectAll}),t(w.Root,{variant:"neutral",mode:"stroke",size:"small",onClick:ew,disabled:!ee.isReady,"data-action":"accept",children:_.common.acceptAll})]}),t("div",{...e5,children:t(w.Root,{variant:"primary",mode:"filled",size:"small",onClick:eB,disabled:eE,"data-action":"customize",children:_.common.saveSettings})})]}),t(b,{hideBranding:H??!1,variant:"dialog-tag",slotContext:"iab-dialog","data-testid":"iab-consent-dialog-branding"})]})})]})}),e3=!0===D?{}:!1===D?null:D,e9=e3?t(h,{...e3}):null;return ef||ey?o(e,{children:[e9,p(e6,document.body)]}):e9};export{$ as IABConsentDialog};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{IABConsentDialogCard as o}from"./atoms/card.js";import{IABConsentDialogContent as t}from"./atoms/content.js";import{IABConsentDialogFooter as s}from"./atoms/footer.js";import{IABConsentDialogHeader as e}from"./atoms/header.js";import{IABConsentDialogOverlay as a}from"./atoms/overlay.js";import{PurposeItem as r}from"./atoms/purpose-item.js";import{IABConsentDialogRoot as m}from"./atoms/root.js";import{StackItem as n}from"./atoms/stack-item.js";import{IABConsentDialogTabButton as i,IABConsentDialogTabs as l}from"./atoms/tabs.js";import{VendorList as p}from"./atoms/vendor-list.js";import{IABConsentDialog as f}from"./iab-panel.js";let I=Object.assign(f,{Card:o,Content:t,Footer:s,Header:e,Overlay:a,PurposeItem:r,Root:m,StackItem:n,TabButton:i,Tabs:l,VendorList:p});export{useIABDisplayModel}from"./hooks/use-display-model.js";export{useGVLData}from"./hooks/use-gvl-data.js";export default I;export{o as IABConsentDialogCard,t as IABConsentDialogContent,s as IABConsentDialogFooter,e as IABConsentDialogHeader,a as IABConsentDialogOverlay,m as IABConsentDialogRoot,i as IABConsentDialogTabButton,l as IABConsentDialogTabs,r as PurposeItem,n as StackItem,p as VendorList,I as IABConsentDialog};
@@ -0,0 +1 @@
1
+ import{useTranslations as e}from"../../component-hooks/use-translations.js";import{defaultTranslationConfig as n}from"../../utils/default-translation-config.js";let r=n.translations.en.iab,t=function e(n,r){if(!r)return n;let t={...n};for(let o of Object.keys(n)){let a=n[o],i=r[o];void 0===i||"object"!=typeof a||null===a||"object"!=typeof i||null===i||Array.isArray(a)?void 0!==i&&(t[o]=i):t[o]=e(a,i)}return t},o=function(){let n=e();return n.iab?{banner:t(r.banner,n.iab.banner),common:t(r.common,n.iab.common),preferenceCenter:t(r.preferenceCenter,n.iab.preferenceCenter)}:r};export{o as useIABTranslations};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as e}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/consent-actions";import{forwardRef as n}from"react";let t=n(({children:n,className:t,...r},a)=>e("div",{ref:a,className:t?`${o.actionGroup} ${t}`:o.actionGroup,"data-direction":"row",...r,children:n}));t.displayName="IABConsentBannerButtonGroup";let r=n(({className:o,...n},t)=>e("div",{ref:t,className:o,...n}));r.displayName="IABConsentBannerFooterSpacer";export{t as IABConsentBannerButtonGroup,r as IABConsentBannerFooterSpacer};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as r}from"react/jsx-runtime";import e from"@c15t/ui/styles/components/iab-consent-banner";import{forwardRef as t,useCallback as o,useRef as n}from"react";import{useFocusTrap as a}from"../../../hooks/use-focus-trap.js";import{useTheme as i}from"../../../hooks/use-theme.js";import{useUIConfig as s}from"../../../ui-config-context.js";import{mergeSlotProps as m}from"../../../utils/merge-slot-props.js";let c=t(({children:t,className:c,"data-testid":d,...p},u)=>{let{noStyle:f,trapFocus:l}=i(),{components:b}=s(),j=n(null),C=o(r=>{if(j.current=r,"function"==typeof u)return u(r);u&&(u.current=r)},[u]);return a(!!l,j),r("div",{ref:C,...m(b?.["iab-banner"]?.card,{baseClassName:e.card,className:c,"data-testid":d??"iab-consent-banner-card",noStyle:f,...p}),"aria-modal":l?"true":void 0,role:l?"dialog":"region",children:t})});c.displayName="IABConsentBannerCard";export{c as IABConsentBannerCard};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as e}from"react/jsx-runtime";import n from"@c15t/ui/styles/components/iab-consent-banner";import{forwardRef as r}from"react";let t=r(({children:r,className:t,...i},o)=>e("p",{ref:o,className:t?`${n.description} ${t}`:n.description,...i,children:r}));t.displayName="IABConsentBannerDescription";export{t as IABConsentBannerDescription};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as e}from"react/jsx-runtime";import t from"@c15t/ui/styles/components/iab-consent-banner";import{forwardRef as o}from"react";import{useTheme as r}from"../../../hooks/use-theme.js";import{useUIConfig as n}from"../../../ui-config-context.js";import{mergeSlotProps as s}from"../../../utils/merge-slot-props.js";let a=o(({children:o,className:a,"data-testid":i,...m},f)=>{let{components:p}=n(),{noStyle:c}=r();return e("div",{ref:f,...s(p?.["iab-banner"]?.footer,{baseClassName:t.footer,className:a,"data-testid":i??"iab-consent-banner-footer",noStyle:c,...m}),children:o})});a.displayName="IABConsentBannerFooter";export{a as IABConsentBannerFooter};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as e}from"react/jsx-runtime";import r from"@c15t/ui/styles/components/iab-consent-banner";import{forwardRef as t}from"react";import{useTheme as n}from"../../../hooks/use-theme.js";import{useUIConfig as o}from"../../../ui-config-context.js";import{mergeSlotProps as a}from"../../../utils/merge-slot-props.js";let s=t(({children:t,className:s,"data-testid":i,...m},d)=>{let{components:p}=o(),{noStyle:c}=n();return e("div",{ref:d,...a(p?.["iab-banner"]?.header,{baseClassName:r.header,className:s,"data-testid":i??"iab-consent-banner-header",noStyle:c,...m}),children:t})});s.displayName="IABConsentBannerHeader";export{s as IABConsentBannerHeader};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as e}from"react/jsx-runtime";import t from"@c15t/ui/styles/components/iab-consent-banner";import{forwardRef as r,useEffect as o,useState as n}from"react";import{useActiveUI as a}from"../../../hooks.js";import{useScrollLock as i}from"../../../hooks/use-scroll-lock.js";import{useTheme as m}from"../../../hooks/use-theme.js";import{useUIConfig as s}from"../../../ui-config-context.js";import{cnExt as l}from"../../../utils/cn.js";import{mergeSlotProps as u}from"../../../utils/merge-slot-props.js";let c=r(({className:r,style:c,noStyle:p,...f},y)=>{let b,d=a(),{disableAnimation:v,noStyle:j,scrollLock:A}=m(),{components:h}=s(),[N,g]=n(!1),k="banner"===d;o(()=>{if(k){let e=requestAnimationFrame(()=>g(!0));return()=>cancelAnimationFrame(e)}if(v){let e=requestAnimationFrame(()=>g(!1));return()=>cancelAnimationFrame(e)}let e=setTimeout(()=>{g(!1)},Number.parseInt(getComputedStyle(document.documentElement).getPropertyValue("--iab-consent-banner-animation-duration")||"200",10));return()=>clearTimeout(e)},[k,v]);let B=u(h?.["iab-banner"]?.overlay,{baseClassName:t.overlay,className:r,noStyle:j||p,style:c,...f});j||p||v||(b=N?t.overlayVisible:t.overlayHidden);let C=l(B.className,b);return(i(!!(k&&A)),k&&A)?e("div",{ref:y,...B,"aria-hidden":"true",className:C,"data-testid":"iab-consent-banner-overlay"}):null});c.displayName="IABConsentBannerOverlay";export{c as IABConsentBannerOverlay};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{Fragment as e,jsx as t,jsxs as n}from"react/jsx-runtime";import r from"@c15t/ui/styles/components/iab-consent-banner";import{forwardRef as o,useEffect as a,useMemo as i,useState as m}from"react";import{ConsentTrackingContext as s}from"../../../context/consent-tracking-context.js";import{LocalThemeContext as l}from"../../../context/theme-context.js";import{useActiveUI as c,useModel as u,useTranslations as d}from"../../../hooks.js";import{useIABConsentManager as b}from"../../../hooks/use-iab-manager.js";import{useTextDirection as p}from"../../../hooks/use-text-direction.js";import{useUIConfig as f}from"../../../ui-config-context.js";import{mergeSlotProps as h}from"../../../utils/merge-slot-props.js";import{IABConsentBannerOverlay as A}from"./overlay.js";let g=["iab"],j=o(({children:o,className:i,style:s,className:l,disableAnimation:b,noStyle:j,models:x=g,...F},N)=>{let y=c(),{components:k}=f(),v=u(),C=d(),q=p(C?.language??"en"),B=null!==v&&"banner"===y&&x.includes(v),[I,T]=m(B),[P,S]=m(B),[R,V]=m(200);a(()=>{let e=Number.parseInt(getComputedStyle(document.documentElement).getPropertyValue("--iab-consent-banner-animation-duration")||"200",10),t=requestAnimationFrame(()=>{V(e)});return()=>cancelAnimationFrame(t)},[]),a(()=>{if(B){if(P){let e=requestAnimationFrame(()=>T(!0));return()=>cancelAnimationFrame(e)}let e=setTimeout(()=>{T(!0),S(!0)},10);return()=>clearTimeout(e)}if(b){let e=requestAnimationFrame(()=>{S(!1),T(!1)});return()=>cancelAnimationFrame(e)}let e=requestAnimationFrame(()=>S(!1)),t=setTimeout(()=>{T(!1)},R);return()=>{cancelAnimationFrame(e),clearTimeout(t)}},[B,b,P,R]);let $=h(k?.["iab-banner"]?.root,{baseClassName:[r.root],className:i||l,noStyle:j,style:s,...F}),E=j?$.className||"":`${$.className||""} ${I?r.bannerVisible:r.bannerHidden}`;return B?n(e,{children:[t(A,{}),t("div",{ref:N,...$,className:E,"data-position":"ltr"===q?"bottom-left":"bottom-right","data-testid":"iab-consent-banner-root",dir:q,tabIndex:-1,children:o})]}):null}),x=({children:e,className:n,noStyle:r,disableAnimation:o,scrollLock:a,trapFocus:m,models:c,uiSource:u,...d})=>{let{policyBanner:p}=b({prompt:{scrollLock:a,trapFocus:m}}),f=p.blocking,h=i(()=>({disableAnimation:o,noStyle:r,scrollLock:f,trapFocus:f}),[o,r,f]),A=i(()=>({uiSource:u??"iab_banner"}),[u]);return t(s.Provider,{value:A,children:t(l.Provider,{value:h,children:t(j,{disableAnimation:o,className:n,noStyle:r,models:c,...d,children:e})})})};j.displayName="IABConsentBannerRootChildren";export{x as IABConsentBannerRoot};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as e}from"react/jsx-runtime";import t from"@c15t/ui/styles/components/iab-consent-banner";import{forwardRef as n}from"react";let r=n(({children:n,className:r,...i},o)=>e("h2",{ref:o,className:r?`${t.title} ${r}`:t.title,...i,children:n}));r.displayName="IABConsentBannerTitle";export{r as IABConsentBannerTitle};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import n from"@c15t/ui/styles/components/consent-actions";import a from"@c15t/ui/styles/components/iab-consent-banner";import{useHeadlessIABConsentUI as o}from"../../component-hooks/use-headless-iab-consent-ui.js";import{Box as i}from"../shared/primitives/box.js";import{BrandingLink as r}from"../shared/ui/branding.js";import{useComponentConfig as s}from"../../hooks/use-component-config.js";import{useIABConsentManager as l}from"../../hooks/use-iab-manager.js";import{useUIConfig as c}from"../../ui-config-context.js";import{mergeSlotProps as m}from"../../utils/merge-slot-props.js";import{useIABTranslations as b}from"../iab-panel/use-iab-translations.js";import{IABConsentBannerCard as d}from"./atoms/card.js";import{IABConsentBannerRoot as p}from"./atoms/root.js";import*as u from"../shared/ui/button/index.js";let h=({noStyle:h,disableAnimation:y,scrollLock:S,trapFocus:f,primaryButton:C="customize",models:g,uiSource:k})=>{let j=b(),{iab:N,banner:v,openVendorsDialog:z,performBannerAction:L}=o(),{policyBanner:x}=l({prompt:{scrollLock:S,trapFocus:f}}),{components:A}=c(),I=s({disableAnimation:y,noStyle:h,scrollLock:x.blocking,trapFocus:x.blocking}),R=async()=>{try{await L("accept")}catch{}},w=async()=>{try{await L("reject")}catch{}};if(!N?.config.enabled||!v.isReady)return null;let M=j.banner.description.replace("{partnerCount}",String(v.vendorCount)),B=j.banner.partnersLink.replace("{count}",String(v.vendorCount)),F=j.banner.scopeServiceSpecific,K=m(A?.["iab-banner"]?.title,{baseClassName:a.title,noStyle:I.noStyle}),G=m(A?.["iab-banner"]?.description,{baseClassName:a.description,noStyle:I.noStyle}),$=m(A?.["iab-banner"]?.partnersLink,{baseClassName:a.partnersLink,noStyle:I.noStyle}),E=m(A?.["iab-banner"]?.purposeList,{baseClassName:a.purposeList,noStyle:I.noStyle}),q=m(A?.["iab-banner"]?.purposeMore,{baseClassName:a.purposeMore,noStyle:I.noStyle}),D=m(A?.["iab-banner"]?.legitimateInterestNotice,{baseClassName:a.legitimateInterestNotice,noStyle:I.noStyle}),H=m(A?.["iab-banner"]?.actions,{baseClassName:n.actionRoot,"data-direction":"row","data-split":!0,noStyle:I.noStyle}),J=m(A?.["iab-banner"]?.actionGroup,{baseClassName:n.actionGroup,"data-direction":"row",noStyle:I.noStyle});return e(p,{...I,models:g,uiSource:k,children:t(i,{baseClassName:a.cardShell,slotKey:"iab-banner.cardShell",children:[e(r,{hideBranding:!1,variant:"banner-tag",slotContext:"iab-banner","data-testid":"iab-consent-banner-branding"}),t(d,{"aria-label":j.banner.title,children:[t(i,{baseClassName:a.header,slotKey:"iab-banner.header","data-testid":"iab-consent-banner-header",children:[e("h2",{...K,children:j.banner.title}),t("p",{...G,children:[M.split(B)[0],e("button",{...$,type:"button","data-testid":"iab-consent-banner-partners-link",onClick:()=>{z()},onMouseEnter:()=>{},children:B}),M.split(B)[1]]}),t("ul",{...E,children:[v.displayItems.map((t,n)=>e("li",{children:t},n)),v.remainingCount>0&&e("li",{...q,children:j.banner.andMore.replace("{count}",String(v.remainingCount))})]}),e("p",{...D,children:`${j.banner.legitimateInterestNotice} ${F}`})]}),t(i,{baseClassName:a.footer,slotKey:"iab-banner.footer","data-testid":"iab-consent-banner-footer",...H,children:[t("div",{...J,children:[e(u.Root,{variant:"reject"===C?"primary":"neutral",mode:"stroke",size:"small",onClick:w,"data-action":"reject","data-testid":"iab-consent-banner-reject-button",children:j.common.rejectAll}),e(u.Root,{variant:"accept"===C?"primary":"neutral",mode:"accept"===C?"filled":"stroke",size:"small",onClick:R,"data-action":"accept","data-testid":"iab-consent-banner-accept-button",children:j.common.acceptAll})]}),e("div",{...J,children:e(u.Root,{variant:"customize"===C?"primary":"neutral",mode:"customize"===C?"filled":"stroke",size:"small",onClick:()=>{L("customize")},"data-action":"customize","data-testid":"iab-consent-banner-customize-button",children:j.common.customize})})]})]})]})})};export{h as IABConsentBanner};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{IABConsentBannerButtonGroup as o,IABConsentBannerFooterSpacer as r}from"./atoms/button-group.js";import{IABConsentBannerCard as t}from"./atoms/card.js";import{IABConsentBannerDescription as n}from"./atoms/description.js";import{IABConsentBannerFooter as e}from"./atoms/footer.js";import{IABConsentBannerHeader as a}from"./atoms/header.js";import{IABConsentBannerOverlay as s}from"./atoms/overlay.js";import{IABConsentBannerRoot as m}from"./atoms/root.js";import{IABConsentBannerTitle as B}from"./atoms/title.js";import{IABConsentBanner as p}from"./iab-prompt.js";let i=Object.assign(p,{ButtonGroup:o,Card:t,Description:n,Footer:e,FooterSpacer:r,Header:a,Overlay:s,Root:m,Title:B});export default i;export{o as IABConsentBannerButtonGroup,t as IABConsentBannerCard,n as IABConsentBannerDescription,e as IABConsentBannerFooter,r as IABConsentBannerFooterSpacer,a as IABConsentBannerHeader,s as IABConsentBannerOverlay,m as IABConsentBannerRoot,B as IABConsentBannerTitle,i as IABConsentBanner};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/branding";import i from"@c15t/ui/styles/components/consent-dialog";import{forwardRef as a}from"react";import{useTranslations as n}from"../../../component-hooks/use-translations.js";import{ConsentWidget as s}from"../../preferences/preferences.js";import{Slot as r}from"../../shared/libs/slot.js";import{Box as d}from"../../shared/primitives/box.js";import{InlineLegalLinks as l}from"../../shared/primitives/legal-links/index.js";import{BrandingLink as g}from"../../shared/ui/branding.js";import{useTheme as c}from"../../../hooks/use-theme.js";import{useUIConfig as m}from"../../../ui-config-context.js";import{cnExt as p}from"../../../utils/cn.js";import{mergeSlotProps as C}from"../../../utils/merge-slot-props.js";let f=a(({children:t,...o},a)=>e(d,{ref:a,baseClassName:i.card,...o,slotKey:"dialog.card","data-testid":"consent-dialog-card",tabIndex:-1,children:t}));f.displayName="ConsentDialogCard";let h=a(({children:t,...o},a)=>e(d,{ref:a,baseClassName:i.header,...o,slotKey:"dialog.header","data-testid":"consent-dialog-header",children:t}));h.displayName="ConsentDialogHeader";let D=a(({children:t,...o},a)=>{let{consentManagerDialog:s}=n();return e(d,{ref:a,baseClassName:i.title,slotKey:"dialog.title",...o,id:"consent-dialog-title","data-testid":"consent-dialog-title",asChild:!0,children:e("h2",{children:t??s.title})})});D.displayName="ConsentDialogHeaderTitle";let y=a(({children:o,legalLinks:a,asChild:s,className:d,style:g,noStyle:p,...f},h)=>{let{consentManagerDialog:D}=n(),{components:y}=m(),{noStyle:b}=c(),u="dialog",N=C(y?.description?.[u],{baseClassName:i.description,className:d,"data-context":u,"data-testid":"consent-dialog-description",id:"consent-dialog-description",noStyle:p??b,style:g,...f});return s?e(r,{ref:h,...N,children:o??D.description}):t("div",{ref:h,...N,children:[o??D.description,e(l,{links:a,context:"dialog",testIdPrefix:"consent-dialog-legal-link"})]})});y.displayName="ConsentDialogHeaderDescription";let b=a(({children:t,...o},a)=>e(d,{ref:a,baseClassName:i.content,slotKey:"dialog.content","data-testid":"consent-dialog-content",...o,children:t}));b.displayName="ConsentDialogContent";let u=t=>e(g,{...t}),N=a(({children:t,hideBranding:a,"data-testid":n,...s},r)=>e(d,{ref:r,baseClassName:p(i.footer,null==t&&!a&&o.brandingFooter),"data-testid":n??"consent-dialog-footer",...s,slotKey:"manager.footer",children:t??e(u,{hideBranding:a??!1,variant:"dialog-tag",slotContext:"dialog","data-testid":"consent-dialog-branding"})}));N.displayName="ConsentDialogFooter";let j=({noStyle:o,legalLinks:i,hideBranding:a})=>t(f,{children:[t(h,{children:[e(D,{}),e(y,{legalLinks:i})]}),e(b,{children:e(s,{hideBranding:!0,noStyle:o,useProvider:!0})}),e(u,{hideBranding:a??!1,variant:"dialog-tag",slotContext:"dialog","data-testid":"consent-dialog-branding"})]}),x=f,H=h,k=D,v=y,K=b,B=N;export{u as Branding,x as Card,j as ConsentCustomizationCard,f as ConsentDialogCard,b as ConsentDialogContent,N as ConsentDialogFooter,h as ConsentDialogHeader,y as ConsentDialogHeaderDescription,D as ConsentDialogHeaderTitle,K as Content,B as Footer,H as Header,v as HeaderDescription,k as HeaderTitle};
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import t from"@c15t/ui/styles/components/consent-dialog";import{useEffect as o,useState as r}from"react";import{useConsentManager as a}from"../../../component-hooks/use-manager.js";import{useTheme as i}from"../../../hooks/use-theme.js";import{useUIConfig as n}from"../../../ui-config-context.js";import{cnExt as l}from"../../../utils/cn.js";import{mergeSlotProps as s}from"../../../utils/merge-slot-props.js";let m=({noStyle:m,style:c,open:u})=>{let p,{activeUI:d}=a(),{components:y}=n(),{disableAnimation:f,noStyle:g,scrollLock:v=!0}=i(),j=u??"dialog"===d,[N,b]=r(!1);o(()=>{if(j){let e=requestAnimationFrame(()=>b(!0));return()=>cancelAnimationFrame(e)}if(f){let e=requestAnimationFrame(()=>b(!1));return()=>cancelAnimationFrame(e)}let e=setTimeout(()=>{b(!1)},Number.parseInt(getComputedStyle(document.documentElement).getPropertyValue("--consent-dialog-animation-duration")||"200",10));return()=>clearTimeout(e)},[j,f]);let h="string"==typeof c?c:c?.className,A=s(y?.dialog?.overlay,{baseClassName:t.overlay,className:h,noStyle:g||m,style:"object"==typeof c&&"style"in c?c.style:void 0});p=g||m||f?void 0:N?t.overlayVisible:t.overlayHidden;let F=l(A.className,p);return e("div",{...A,role:"presentation","aria-hidden":"true",className:F,"data-testid":"consent-dialog-overlay"})},c=m;export{m as ConsentDialogOverlay,c as Overlay};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{Fragment as o,jsx as e,jsxs as t}from"react/jsx-runtime";import{isDialogDismissKey as r}from"@c15t/ui/primitives/dialog";import i from"@c15t/ui/styles/components/consent-dialog";import{useEffect as n,useMemo as s,useRef as a,useState as l}from"react";import{createPortal as m}from"react-dom";import{useHeadlessConsentUI as c}from"../../../component-hooks/use-headless-consent-ui.js";import{useConsentManager as d}from"../../../component-hooks/use-manager.js";import{ConsentTrackingContext as u}from"../../../context/consent-tracking-context.js";import{LocalThemeContext as p}from"../../../context/theme-context.js";import{useHasConsentUI as f}from"../../../hooks.js";import{useFocusTrap as g}from"../../../hooks/use-focus-trap.js";import{useIsHydrated as h}from"../../../hooks/use-is-hydrated.js";import{useScrollLock as k}from"../../../hooks/use-scroll-lock.js";import{useTextDirection as b}from"../../../hooks/use-text-direction.js";import{useTheme as j}from"../../../hooks/use-theme.js";import{useUIConfig as v}from"../../../ui-config-context.js";import{cnExt as y}from"../../../utils/cn.js";import{mergeSlotProps as x}from"../../../utils/merge-slot-props.js";import{Overlay as A}from"./overlay.js";let F=["opt-in","opt-out","none"],L=({children:L,open:N,models:S=F,noStyle:C,disableAnimation:q,scrollLock:w,trapFocus:D,overlay:E,uiSource:H,className:I,style:P,...R})=>{var T;let V,z,B,G=j(),{components:J}=v(),{activeUI:K,translationConfig:M,model:O}=d(),{closeUI:Q,dialog:U}=c({preferences:{scrollLock:w,trapFocus:D}}),{disableAnimation:W,noStyle:X,scrollLock:Y,trapFocus:Z}=(V=G.disableAnimation,z=G.noStyle,{disableAnimation:q??V??!1,noStyle:C??z??!1,scrollLock:B=U.blocking,trapFocus:B}),$=b(M.defaultLanguage),_=(T=f(),!!T&&!!S.includes(O)&&(N??"dialog"===K)),[oo,oe]=l(!1),ot=a(null),or=a(null),oi=h(),on=G.theme?.motion?.duration?.normal;n(()=>{if(_){let o=requestAnimationFrame(()=>oe(!0));return()=>cancelAnimationFrame(o)}if(W){let o=requestAnimationFrame(()=>oe(!1));return()=>cancelAnimationFrame(o)}let o=setTimeout(()=>oe(!1),Number.parseInt((on||"200ms").replace("ms",""),10));return()=>clearTimeout(o)},[_,W,on]),g(_&&Z,or),n(()=>{if(!_)return;let o=o=>{r(o.key)&&(o.preventDefault(),Q())};return document.addEventListener("keydown",o),()=>document.removeEventListener("keydown",o)},[Q,_]),k(_&&Y);let os=W?i.root:y(i.root,oo?i.dialogVisible:i.dialogHidden),oa=x(J?.dialog?.root,{baseClassName:os,className:I,noStyle:X,style:P,...R}),ol=x(J?.dialog?.container,{baseClassName:y(i.container,!W&&(oo?i.contentVisible:i.contentHidden)),noStyle:X}),om=s(()=>({disableAnimation:W,noStyle:X,scrollLock:Y,theme:G.theme,trapFocus:Z}),[W,G.theme,X,Y,Z]),oc=s(()=>({uiSource:H??"dialog"}),[H]),od=U.blocking?"true":void 0,ou=e(u.Provider,{value:oc,children:e(p.Provider,{value:om,children:_&&t(o,{children:[U.blocking&&!1!==E?E??e(A,{open:_}):null,e("div",{ref:ot,"data-slot":"dialog-positioner","data-blocking":od,...oa,className:oa.className,children:e("div",{ref:or,...ol,"aria-describedby":"consent-dialog-description","aria-labelledby":"consent-dialog-title","aria-modal":Z?"true":void 0,"data-blocking":od,"data-testid":"consent-dialog-root",dir:$,role:"dialog",tabIndex:-1,children:L})})]})})});return oi?m(ou,document.body):null},N=L;export{L as ConsentDialogRoot,N as Root};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{Card as o,ConsentCustomizationCard as e,ConsentDialogContent as t,ConsentDialogFooter as n,ConsentDialogHeader as a,ConsentDialogHeaderDescription as r,ConsentDialogHeaderTitle as i,Content as s,Footer as l,Header as C,HeaderDescription as d,HeaderTitle as D}from"./atoms/card.js";import{ConsentDialogOverlay as g,Overlay as m}from"./atoms/overlay.js";import{ConsentDialogRoot as p,Root as H}from"./atoms/root.js";import{ConsentDialog as c}from"./panel.js";let f=Object.assign(c,{Card:o,ConsentCustomizationCard:e,ConsentDialogContent:t,ConsentDialogFooter:n,ConsentDialogHeader:a,ConsentDialogHeaderDescription:r,ConsentDialogHeaderTitle:i,Content:s,Footer:l,Header:C,HeaderDescription:d,HeaderTitle:D,Overlay:m,Root:H});export default f;export{o as Card,e as ConsentCustomizationCard,t as ConsentDialogContent,n as ConsentDialogFooter,a as ConsentDialogHeader,r as ConsentDialogHeaderDescription,i as ConsentDialogHeaderTitle,g as ConsentDialogOverlay,p as ConsentDialogRoot,s as Content,l as Footer,C as Header,d as HeaderDescription,D as HeaderTitle,m as Overlay,H as Root,f as ConsentDialog};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{Fragment as o,jsx as r,jsxs as n}from"react/jsx-runtime";import{useConsentManager as t}from"../../component-hooks/use-manager.js";import{ConsentDialogTrigger as e}from"../panel-trigger/index.js";import{useComponentConfig as i}from"../../hooks/use-component-config.js";import{ConsentCustomizationCard as l}from"./atoms/card.js";import{Root as m}from"./atoms/root.js";let s=({open:s,noStyle:a,disableAnimation:c,scrollLock:p,trapFocus:d,hideBranding:g,legalLinks:f,showTrigger:u=!1,models:j,uiSource:h})=>{let{activeUI:k}=t(),y={open:s??"dialog"===k,...i({disableAnimation:c,noStyle:a}),models:j,scrollLock:p,trapFocus:d,uiSource:h},S=!0===u?{}:!1===u?null:u;return n(o,{children:[S&&r(e,{...S}),r(m,{...y,children:r(l,{noStyle:y.noStyle,legalLinks:f,hideBranding:g})})]})};export{s as ConsentDialog};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  export{ConsentDialogLink}from"../consent-preferences-link/consent-preferences-link.js";
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as t}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/consent-dialog-trigger";import{forwardRef as r}from"react";import{usePolicyRule as e}from"../../../hooks.js";import{useTheme as i}from"../../../hooks/use-theme.js";import{useUIConfig as g}from"../../../ui-config-context.js";import{mergeSlotProps as s}from"../../../utils/merge-slot-props.js";import{useTriggerContext as m}from"./root.js";let n={"bottom-left":o.bottomLeft,"bottom-right":o.bottomRight,"top-left":o.topLeft,"top-right":o.topRight},a={lg:o.lg,md:o.md,sm:o.sm},l=r(({children:r,size:l="md",ariaLabel:p="Open privacy settings",className:d,"data-testid":f="consent-dialog-trigger",noStyle:c},u)=>{let h=e(),{components:b}=g(),{noStyle:j}=i(),{corner:y,isDragging:k,isSnapping:x,wasDragged:C,handlers:B,dragStyle:L,openDialog:N}=m(),R=s(b?.trigger?.root,{baseClassName:[o.trigger,n[y],a[l],k&&o.dragging,x&&o.snapping],className:d,"data-testid":f,noStyle:c??j,style:L,...B});return t("button",{...R,ref:u,type:"button","data-c15t-trigger":"true","data-c15t-rights":h.rights.join(" "),"aria-label":p,onClick:t=>{0!==t.detail&&C()||N()},children:r})});l.displayName="ConsentDialogTrigger.Button";export{l as TriggerButton};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as r}from"react/jsx-runtime";import e from"@c15t/ui/styles/components/consent-dialog-trigger";import{isValidElement as o}from"react";import{BrandingCompactLogo as i}from"../../shared/ui/branding.js";import{FingerprintIcon as t,SettingsIcon as n}from"../../shared/ui/logo.js";import{useTheme as s}from"../../../hooks/use-theme.js";import{useUIConfig as a}from"../../../ui-config-context.js";import{mergeSlotProps as m}from"../../../utils/merge-slot-props.js";import{useTriggerContext as g}from"./root.js";let p=({icon:p="branding",className:c,noStyle:l})=>{let d,{components:f}=a(),{noStyle:u}=s(),{branding:h}=g(),j=m(f?.trigger?.icon,{baseClassName:e.icon,className:c,noStyle:l??u});if(o(p))return r("span",{...j,"aria-hidden":"true",children:p});switch(p){case"fingerprint":d=r(t,{});break;case"settings":d=r(n,{});break;default:d=r(i,{branding:h})}return r("span",{...j,"aria-hidden":"true",children:d})};p.displayName="ConsentDialogTrigger.Icon";export{p as TriggerIcon};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as o}from"react/jsx-runtime";import{createContext as r,useContext as e,useMemo as t}from"react";import{createPortal as i}from"react-dom";import{useConsentManager as s}from"../../../component-hooks/use-manager.js";import{useConsentDialogTrigger as n}from"../../../component-hooks/use-panel-trigger.js";import{useIsHydrated as m}from"../../../hooks/use-is-hydrated.js";import{useDraggable as g}from"../use-draggable.js";let a=r(null),l=function(){let o=e(a);if(!o)throw Error("ConsentDialogTrigger components must be used within a ConsentDialogTrigger.Root");return o},u=({children:r,defaultPosition:e="bottom-right",persistPosition:l=!0,showWhen:u="always",visible:p,onPositionChange:d,onClick:c})=>{let{branding:f}=s(),{isVisible:h,openDialog:T}=n({onClick:c,showWhen:u}),C=p??h,{corner:b,isDragging:j,isSnapping:x,wasDragged:y,handlers:k,dragStyle:w}=g({defaultPosition:e,onPositionChange:d,persistPosition:l}),D=m(),P=t(()=>({branding:f,corner:b,dragStyle:w,handlers:k,isDragging:j,isSnapping:x,isVisible:C,openDialog:T,wasDragged:y}),[f,b,w,k,j,x,C,T,y]);return D&&C?i(o(a.Provider,{value:P,children:r}),document.body):null};u.displayName="ConsentDialogTrigger.Root";export{a as TriggerContext,u as TriggerRoot,l as useTriggerContext};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as t}from"react/jsx-runtime";import e from"@c15t/ui/styles/components/consent-dialog-trigger";import{useTheme as r}from"../../../hooks/use-theme.js";import{useUIConfig as o}from"../../../ui-config-context.js";import{mergeSlotProps as s}from"../../../utils/merge-slot-props.js";let i=({children:i,className:m,noStyle:n})=>{let{components:g}=o(),{noStyle:l}=r();return t("span",{...s(g?.trigger?.text,{baseClassName:e.text,className:m,noStyle:n??l}),children:i})};i.displayName="ConsentDialogTrigger.Text";export{i as TriggerText};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as e}from"react/jsx-runtime";import{createElement as t,useMemo as r,useRef as o,useState as i}from"react";import n from"@c15t/ui/styles/components/consent-dialog-trigger";import{useTranslations as s}from"../../../component-hooks/use-translations.js";import{usePolicyRule as a}from"../../../hooks.js";import{useTheme as l}from"../../../hooks/use-theme.js";import{useUIConfig as d}from"../../../ui-config-context.js";import{mergeSlotProps as c}from"../../../utils/merge-slot-props.js";import{TriggerIcon as g}from"./icon.js";import{useTriggerContext as m}from"./root.js";let f={"bottom-left":n.bottomLeft,"bottom-right":n.bottomRight,"top-left":n.topLeft,"top-right":n.topRight},p={lg:n.lg,md:n.md,sm:n.sm},u=function(){let e=a(),{rights:t}=s();return r(()=>{let r=e.rights.includes("opt-out")?"opt-out":"preferences";return{label:"opt-out"===r&&e.i18n?.messageProfile!=="preferences"?t?.optOut??"Do not sell or share my data":t?.preferences??"Manage preferences",right:r,rights:e.rights.join(" ")}},[e.rights,e.i18n?.messageProfile,t])},b=function(e,t,r,o,i){let n=e.map(e=>({...e,focusId:`custom:${e.id}`,kind:"custom"}));return i?[...n,{className:t.className,focusId:"preferences",icon:t.icon??"branding",id:"preferences",kind:"preferences",label:t.label??o,onSelect:t.onSelect,right:r,style:t.style}]:n},h=function(e,t,r){let o=e.find(e=>"preferences"===e.kind);if(!o)return e;let i=e.filter(e=>"custom"===e.kind);return("horizontal"===t?r.endsWith("left"):r.startsWith("top"))?[o,...i]:[...i,o]},y=({actions:s,preferences:a,size:y="md",orientation:k="horizontal",ariaLabel:I="Privacy controls",showPreferences:v=!0,className:j,style:N,noStyle:S=!1})=>{let{components:w}=d(),{noStyle:x}=l(),{label:C,right:D,rights:A}=u(),{corner:T,isDragging:L,isSnapping:P,wasDragged:R,handlers:z,dragStyle:E,openDialog:H}=m(),M=r(()=>h(b(s,a,D,C,v),k,T),[s,T,C,k,a,D,v]),W=M.find(e=>!e.disabled)?.focusId,[B,F]=i(W),K=o(new Map),O=S||x,U=c(w?.trigger?.toolbar,{baseClassName:[n.toolbar,"vertical"===k&&n.toolbarVertical,f[T],L&&n.dragging,P&&n.snapping],className:j,noStyle:O,style:N}),V=c(w?.trigger?.toolbarItem,{baseClassName:[n.toolbarItem,p[y]],noStyle:O}),$=c(w?.trigger?.toolbarIcon,{baseClassName:n.toolbarIcon,noStyle:O}),q=M.some(e=>e.focusId===B&&!e.disabled)?B:W;return e("div",{...U,"aria-label":I,"aria-orientation":k,"data-corner":T,"data-c15t-trigger-toolbar":"true","data-c15t-trigger":"true","data-dragging":L||void 0,"data-snapping":P||void 0,dir:"ltr",onKeyDown:e=>{let t,r="vertical"===k?"ArrowDown":"ArrowRight",o="vertical"===k?"ArrowUp":"ArrowLeft";if(e.key!==r&&e.key!==o&&"Home"!==e.key&&"End"!==e.key)return;let i=M.filter(e=>!e.disabled);if(0===i.length)return;e.preventDefault();let n=i.findIndex(e=>e.focusId===q);t="Home"===e.key?0:"End"===e.key?i.length-1:e.key===r?(n+1)%i.length:(n-1+i.length)%i.length;let s=i[t];s&&(F(s.focusId),K.current.get(s.focusId)?.focus())},role:"toolbar",style:{...U.style,...E},tabIndex:-1,...z,children:M.map(r=>t("button",{...V,key:r.focusId,ref:e=>{e?K.current.set(r.focusId,e):K.current.delete(r.focusId)},"aria-label":r.label,"aria-pressed":"custom"===r.kind?r.pressed:void 0,className:[V.className,r.className].filter(Boolean).join(" "),"data-c15t-rights":"preferences"===r.kind?A:void 0,"data-c15t-trigger-action":r.kind,"data-c15t-trigger-item":r.id,"data-right":"preferences"===r.kind?r.right:void 0,disabled:r.disabled,onClick:e=>{!(0!==e.detail&&R())&&(r.onSelect?.(),"preferences"===r.kind&&H())},onFocus:()=>F(r.focusId),style:{...V.style,...r.style},tabIndex:r.focusId===q?0:-1,type:"button"},e("span",{...$,"aria-hidden":"true",children:e(g,{icon:r.icon,noStyle:O})})))})};y.displayName="ConsentDialogTriggerToolbar";export{y as TriggerToolbar};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ export{ConsentDialogTrigger,TriggerButton,TriggerIcon,TriggerRoot,TriggerText,useTriggerContext}from"./panel-trigger.js";export{ConsentDialogTriggerToolbar}from"./panel-trigger-toolbar.js";export{useDraggable}from"./use-draggable.js";
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as o}from"react/jsx-runtime";import{useHasConsentUI as r,usePromptRequirement as e}from"../../hooks.js";import{TriggerRoot as t}from"./atoms/root.js";import{TriggerToolbar as i}from"./atoms/toolbar.js";let s=[],n={},a=({actions:a=s,preferences:l=n,orientation:m="horizontal",defaultPosition:p="bottom-right",persistPosition:g=!0,ariaLabel:c="Privacy controls",showWhen:f="always",size:h="md",className:b,style:d,noStyle:y=!1,onPositionChange:P})=>{let j=e(),T=r(),u="after-prompt"!==f||"none"===j.kind,v=T&&"never"!==f&&u;return o(t,{defaultPosition:p,onPositionChange:P,persistPosition:g,visible:a.length>0||v,children:o(i,{actions:a,ariaLabel:c,className:b,noStyle:y,orientation:m,preferences:l,showPreferences:v,size:h,style:d})})};a.displayName="ConsentDialogTriggerToolbar";export{a as ConsentDialogTriggerToolbar};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as o}from"react/jsx-runtime";import{TriggerButton as t}from"./atoms/button.js";import{TriggerIcon as i}from"./atoms/icon.js";import{TriggerRoot as r,useTriggerContext as e}from"./atoms/root.js";import{TriggerText as n}from"./atoms/text.js";let s=({icon:e="branding",defaultPosition:n="bottom-right",persistPosition:s=!0,ariaLabel:a="Open privacy settings",showWhen:g="always",size:m="md",className:l,noStyle:c,onClick:p,onPositionChange:T})=>o(r,{defaultPosition:n,persistPosition:s,showWhen:g,onClick:p,onPositionChange:T,children:o(t,{size:m,ariaLabel:a,className:l,noStyle:c,children:o(i,{icon:e,noStyle:c})})});s.displayName="ConsentDialogTrigger";let a=Object.assign(s,{Button:t,Icon:i,Root:r,Text:n});export{a as ConsentDialogTrigger,t as TriggerButton,i as TriggerIcon,r as TriggerRoot,n as TriggerText,e as useTriggerContext};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{calculateCornerFromDrag as t,createInitialDragState as r,getPersistedPosition as e,persistPosition as n}from"@c15t/ui/utils/trigger-utils";import{useCallback as i,useRef as a,useState as u}from"react";let o=function(o={}){let{defaultPosition:s="bottom-right",persistPosition:c=!0,onPositionChange:g}=o,[l,p]=u(()=>{if(c&&"u">typeof window){let t=e();if(t)return t}return s}),[X,Y]=u(r),[D,f]=u(!1),P=a(!1),b=a(null),m=a(0),d=i(t=>{p(t),c&&n(t),g?.(t)},[c,g]),w=i(t=>{0===t.button&&(t.target.setPointerCapture(t.pointerId),b.current=t.target,P.current=!1,m.current=Date.now(),Y({currentX:t.clientX,currentY:t.clientY,isDragging:!0,startX:t.clientX,startY:t.clientY}),f(!1))},[]),h=i(t=>{Y(r=>{if(!r.isDragging)return r;let e=Math.abs(t.clientX-r.startX),n=Math.abs(t.clientY-r.startY);return(e>5||n>5)&&(P.current=!0),{...r,currentX:t.clientX,currentY:t.clientY}})},[]),C=i(e=>{b.current&&b.current.releasePointerCapture(e.pointerId),Y(n=>{if(!n.isDragging)return n;if(P.current){let r=e.clientX-n.startX,i=e.clientY-n.startY,a=Date.now()-m.current,u=t(l,r,i,{velocityX:a>0?r/a:0,velocityY:a>0?i/a:0});u!==l&&(f(!0),setTimeout(()=>f(!1),300),d(u))}return r()})},[l,d]),v=i(t=>{b.current&&b.current.releasePointerCapture(t.pointerId),Y(r())},[]),x=X.isDragging?{transform:`translate(${X.currentX-X.startX}px, ${X.currentY-X.startY}px)`,transition:"none"}:{},y=i(()=>P.current,[]);return{corner:l,dragStyle:x,handlers:{onPointerCancel:v,onPointerDown:w,onPointerMove:h,onPointerUp:C},isDragging:X.isDragging,isSnapping:D,wasDragged:y}};export{o as useDraggable};
@@ -0,0 +1 @@
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/accordion";import{createContext as n,forwardRef as i,useCallback as r,useContext as c,useMemo as a}from"react";import{useConsentManager as s}from"../../../component-hooks/use-manager.js";import{useTranslations as d}from"../../../component-hooks/use-translations.js";import{Box as l}from"../../shared/primitives/box.js";import{LucideIcon as m}from"../../shared/ui/icon.js";import{useTheme as g}from"../../../hooks/use-theme.js";import*as h from"../../shared/ui/preference-item/index.js";import*as p from"../../shared/ui/switch/index.js";let u=n(null),y=function(){let e=c(u);if(!e)throw Error("ConsentWidgetAccordion components must be used within ConsentWidgetAccordion");return e},w=i(({children:t,...n},i)=>e(l,{ref:i,baseClassName:o.triggerRow,...n,children:t}));w.displayName="ConsentWidgetAccordionTrigger";let C=h.Trigger,A=h.Content,f=h.Leading,v=p.Root,N=({"data-testid":t,children:n,className:i,noStyle:c,onValueChange:s,style:d,type:m="multiple",value:h,...p})=>{let{noStyle:y}=g(),w=c??y,C=a(()=>Array.isArray(h)?h:h?[h]:[],[h]),A=r((e,t)=>{if("single"===m)return void s?.(t?e:"");let o=t?[...new Set([...C,e])]:C.filter(t=>t!==e);s?.(o)},[s,C,m]),f=a(()=>({noStyle:w,onToggleItem:A,openValues:C}),[w,A,C]);return e(u.Provider,{value:f,children:e(l,{className:i,"data-testid":t??"consent-widget-accordion",noStyle:c,style:d,slotKey:"accordion.root",baseClassName:o.list,...p,children:n})})},S=()=>{let{selectedConsents:n,setSelectedConsent:i,getDisplayedConsents:c,explicitChoice:a,restrictions:l}=s(),g=function(e){if("necessary"===e)return!1;let t=a?.categories[e];return t?.value===!0&&(l[e]?.length??0)>0},{noStyle:p,onToggleItem:u,openValues:N}=y(),S=r((e,t)=>{i(e,t)},[i]),W=function(e){return e.replace(/_/gu," ").replace(/\b\w/gu,e=>e.toUpperCase())},{consentTypes:b}=d();return c().map(i=>{let r;return t(h.Root,{className:p?void 0:o.item,"data-testid":`consent-widget-accordion-item-${i.name}`,noStyle:!0,onOpenChange:e=>u(i.name,e),open:N.includes(i.name),slotKey:"accordion-item.root",children:[t(w,{slotKey:"accordion.triggerRow",children:[t(C,{className:p?void 0:o.trigger,"data-testid":`consent-widget-accordion-trigger-${i.name}`,noStyle:!0,slotKey:"accordion-item.trigger",children:[(r=m({iconPath:N.includes(i.name)?e("path",{d:"M5 12h14"}):e("path",{d:"M5 12h14M12 5v14"}),title:N.includes(i.name)?"Close":"Open"}),e(f,{className:p?void 0:o.arrow,"data-testid":`consent-widget-accordion-arrow-${i.name}`,noStyle:!0,slotKey:"accordion.arrow",children:e(r,{})})),e(h.Header,{noStyle:!0,slotKey:"accordion.header",children:e(h.Title,{className:p?void 0:o.title,noStyle:!0,slotKey:"accordion.title",children:b[i.name]?.title??W(i.name)})})]}),e(h.Control,{className:p?void 0:o.control,noStyle:!0,slotKey:"accordion.control",children:e(v,{"aria-label":b[i.name]?.title??W(i.name),checked:n[i.name],"aria-describedby":g(i.name)?`c15t-restriction-${i.name}`:void 0,onCheckedChange:e=>S(i.name,e),disabled:i.disabled,size:"small","data-testid":`consent-widget-switch-${i.name}`})})]}),g(i.name)?e("output",{className:p?void 0:o.restriction,"data-testid":`consent-widget-restriction-${i.name}`,id:`c15t-restriction-${i.name}`,children:"Your saved choice is restricted by the current privacy settings."}):null,e(A,{className:p?void 0:o.content,"data-testid":`consent-widget-accordion-content-${i.name}`,innerClassName:p?void 0:o.contentInner,innerSlotKey:"accordion.contentInner",slotKey:"accordion-item.content",viewportClassName:p?void 0:o.contentViewport,viewportSlotKey:"accordion.contentViewport",children:b[i.name]?.description??i.description})]},i.name)})},W=i(({className:t,...n},i)=>e(h.Root,{ref:i,className:[o.item,t].filter(Boolean).join(" "),noStyle:!0,...n}));W.displayName="ConsentWidgetAccordionItem";let b=C,K=w,j=A,I=f,$=N,T=v,k=S,x=W;export{$ as Accordion,I as AccordionArrow,j as AccordionContent,x as AccordionItem,k as AccordionItems,K as AccordionTrigger,b as AccordionTriggerInner,N as ConsentWidgetAccordion,f as ConsentWidgetAccordionArrow,A as ConsentWidgetAccordionContent,W as ConsentWidgetAccordionItem,S as ConsentWidgetAccordionItems,w as ConsentWidgetAccordionTrigger,C as ConsentWidgetAccordionTriggerInner,v as ConsentWidgetSwitch,T as Switch};
@@ -0,0 +1 @@
1
+ import{jsx as t}from"react/jsx-runtime";import{forwardRef as e}from"react";import{useTranslations as n}from"../../../component-hooks/use-translations.js";import{ConsentButton as o}from"../../shared/primitives/button.js";let s=e(({children:e,...s},c)=>{let{common:i}=n();return t(o,{ref:c,size:"small",action:"accept-consent",consentAction:"accept",...s,slotKey:"button.secondary","data-testid":"consent-widget-footer-accept-all-button",closeConsentBanner:!0,closeConsentDialog:!0,children:e??i.acceptAll})});s.displayName="ConsentWidgetAcceptAllButton";let c=e(({children:e,...s},c)=>{let{common:i}=n();return t(o,{ref:c,action:"open-consent-dialog",consentAction:"customize",...s,slotKey:"button.secondary","data-testid":"consent-widget-footer-customize-button",children:e??i.customize})});c.displayName="ConsentWidgetCustomizeButton";let i=e(({children:e,...s},c)=>{let{common:i}=n();return t(o,{ref:c,action:"custom-consent",consentAction:"save",closeConsentDialog:!0,...s,slotKey:"button.primary","data-testid":"consent-widget-footer-save-button",children:e??i.save})});i.displayName="ConsentWidgetSaveButton";let a=e(({children:e,...s},c)=>{let{common:i}=n();return t(o,{ref:c,size:"small",action:"reject-consent",consentAction:"reject",...s,slotKey:"button.secondary","data-testid":"consent-widget-reject-button",closeConsentBanner:!0,closeConsentDialog:!0,children:e??i.rejectAll})});a.displayName="ConsentWidgetRejectButton";let l=s,r=c,u=i,d=a;export{l as AcceptAllButton,s as ConsentWidgetAcceptAllButton,c as ConsentWidgetCustomizeButton,a as ConsentWidgetRejectButton,i as ConsentWidgetSaveButton,r as CustomizeButton,d as RejectButton,u as SaveButton};
@@ -0,0 +1 @@
1
+ import{jsx as o}from"react/jsx-runtime";import e from"@c15t/ui/styles/components/consent-actions";import t from"@c15t/ui/styles/components/consent-manager";import{forwardRef as r}from"react";import{useTheme as s}from"../../../hooks/use-theme.js";import{useUIConfig as n}from"../../../ui-config-context.js";import{mergeSlotProps as i}from"../../../utils/merge-slot-props.js";import{Box as a}from"../../shared/primitives/box.js";let m=r(({children:e,className:r,style:m,...p},c)=>{let{components:l}=n(),{noStyle:u}=s(),d=i(l?.manager?.actions,{baseClassName:r,noStyle:u,style:m,...p});return o(a,{ref:c,baseClassName:t.footer,"data-testid":"consent-widget-footer",...d,slotKey:"manager.footer",children:e})});m.displayName="ConsentWidgetFooter";let p=r(({children:t,...r},s)=>o(a,{ref:s,baseClassName:e.actionGroup,"data-testid":"consent-widget-footer-sub-group",...r,slotKey:"manager.actionGroup",children:t}));p.displayName="ConsentWidgetFooterSubGroup";let c=m,l=p;export{m as ConsentWidgetFooter,p as ConsentWidgetFooterSubGroup,c as Footer,l as FooterSubGroup};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as e}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/consent-manager";import{useMemo as r}from"react";import{useConsentManager as t}from"../../../component-hooks/use-manager.js";import{Box as i}from"../../shared/primitives/box.js";import{ConsentTrackingContext as n,useConsentTracking as m}from"../../../context/consent-tracking-context.js";import{LocalThemeContext as s}from"../../../context/theme-context.js";import{ConsentDraftProvider as a}from"../../../draft.js";import{useHasConsentUI as c}from"../../../hooks.js";import{useTextDirection as d}from"../../../hooks/use-text-direction.js";let l=({children:l,noStyle:u=!1,disableAnimation:p=!1,useProvider:f=!0,uiSource:h})=>{let{translationConfig:g}=t(),j=d(g.defaultLanguage),x=m(),v=r(()=>({disableAnimation:p,noStyle:u}),[p,u]),k=h??x.uiSource??"widget",P=r(()=>({uiSource:k}),[k]);if(!c())return null;let b=e(i,{baseClassName:o.manager,"data-testid":"consent-widget-root",slotKey:"manager.root",dir:j,children:l});return f?e(n.Provider,{value:P,children:e(s.Provider,{value:v,children:e(a,{children:b})})}):e(n.Provider,{value:P,children:e(a,{children:b})})},u=l;export{l as ConsentWidgetRoot,u as Root};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{Accordion as o,AccordionArrow as t,AccordionContent as n,AccordionItem as e,AccordionItems as r,AccordionTrigger as c,AccordionTriggerInner as i,ConsentWidgetAccordion as s,ConsentWidgetAccordionArrow as d,ConsentWidgetAccordionContent as A,ConsentWidgetAccordionItem as g,ConsentWidgetAccordionItems as m,ConsentWidgetAccordionTrigger as C,ConsentWidgetAccordionTriggerInner as u,ConsentWidgetSwitch as W,Switch as p}from"./atoms/accordion.js";import{AcceptAllButton as a,ConsentWidgetAcceptAllButton as l,ConsentWidgetCustomizeButton as B,ConsentWidgetRejectButton as f,ConsentWidgetSaveButton as j,CustomizeButton as I,RejectButton as S,SaveButton as w}from"./atoms/button.js";import{ConsentWidgetFooter as F,ConsentWidgetFooterSubGroup as R,Footer as T,FooterSubGroup as b}from"./atoms/footer.js";import{ConsentWidgetRoot as y,Root as h}from"./atoms/root.js";import{ConsentWidgetPolicyActions as v,PolicyActions as z}from"./policy-actions.js";import{ConsentWidget as G}from"./preferences.js";let P=Object.assign(G,{AcceptAllButton:a,Accordion:o,AccordionArrow:t,AccordionContent:n,AccordionItem:e,AccordionItems:r,AccordionTrigger:c,AccordionTriggerInner:i,CustomizeButton:I,Footer:T,FooterSubGroup:b,PolicyActions:z,RejectButton:S,Root:h,SaveButton:w,Switch:p});export default P;export{a as AcceptAllButton,o as Accordion,t as AccordionArrow,n as AccordionContent,e as AccordionItem,r as AccordionItems,c as AccordionTrigger,i as AccordionTriggerInner,l as ConsentWidgetAcceptAllButton,s as ConsentWidgetAccordion,d as ConsentWidgetAccordionArrow,A as ConsentWidgetAccordionContent,g as ConsentWidgetAccordionItem,m as ConsentWidgetAccordionItems,C as ConsentWidgetAccordionTrigger,u as ConsentWidgetAccordionTriggerInner,B as ConsentWidgetCustomizeButton,F as ConsentWidgetFooter,R as ConsentWidgetFooterSubGroup,v as ConsentWidgetPolicyActions,f as ConsentWidgetRejectButton,y as ConsentWidgetRoot,j as ConsentWidgetSaveButton,W as ConsentWidgetSwitch,I as CustomizeButton,T as Footer,b as FooterSubGroup,z as PolicyActions,S as RejectButton,h as Root,w as SaveButton,p as Switch,P as ConsentWidget};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{Fragment as t,jsx as e,jsxs as o}from"react/jsx-runtime";import{useHeadlessConsentUI as n}from"../../component-hooks/use-headless-consent-ui.js";import{useConsentDraft as r}from"../../draft.js";import{PolicyActionsRenderer as c}from"../shared/policy-actions.js";import{ConsentWidgetAcceptAllButton as s,ConsentWidgetRejectButton as i,ConsentWidgetSaveButton as a}from"./atoms/button.js";import{ConsentWidgetFooter as d,ConsentWidgetFooterSubGroup as l}from"./atoms/footer.js";let u=function(t,o){let{key:n,consentAction:r,...c}=o;switch(t){case"accept":return e(s,{consentAction:r,"data-testid":"consent-widget-footer-accept-all-button",...c},n);case"reject":return e(i,{consentAction:r,"data-testid":"consent-widget-reject-button",...c},n);case"save":return e(a,{consentAction:r,"data-testid":"consent-widget-footer-save-button",...c},n);case"customize":case"dismiss":return null;default:throw Error(`Unhandled consent widget action: ${t}`)}},m=({renderAction:s})=>{let{dialog:i}=n(),a=r(),m=a.reset;return o(t,{children:[a.isStale?o("div",{role:"alert",children:["The privacy policy changed. Review the current choices before saving."," ",e("button",{type:"button",onClick:m,children:"Review choices"})]}):null,e(c,{state:i,Footer:d,FooterSubGroup:l,classNames:{},renderAction:s,renderDefaultAction:u})]})},p=m;export{m as ConsentWidgetPolicyActions,p as PolicyActions};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as o,jsxs as t}from"react/jsx-runtime";import{useState as r}from"react";import{BrandingLink as i}from"../shared/ui/branding.js";import{useTheme as a}from"../../hooks/use-theme.js";import{ConsentWidgetAccordion as e,ConsentWidgetAccordionItems as n}from"./atoms/accordion.js";import{ConsentWidgetRoot as s}from"./atoms/root.js";import{ConsentWidgetPolicyActions as l}from"./policy-actions.js";let m=({hideBranding:m,noStyle:c,disableAnimation:d,scrollLock:p,trapFocus:g,...u})=>{let[f,h]=r(""),y=a();return t(s,{...{disableAnimation:d??y.disableAnimation,noStyle:c??y.noStyle,scrollLock:p??y.scrollLock,trapFocus:g??y.trapFocus,...u},children:[o(e,{type:"single",value:f,onValueChange:o=>{h(Array.isArray(o)?o[0]??"":o??"")},children:o(n,{})}),o(l,{}),o(i,{hideBranding:m??!0,variant:"dialog-tag",slotContext:"manager","data-testid":"consent-widget-branding"})]})};export{m as ConsentWidget};
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import t from"@c15t/ui/styles/components/consent-banner";import{forwardRef as r,useEffect as o,useState as n}from"react";import{useActiveUI as a}from"../../../hooks.js";import{useScrollLock as m}from"../../../hooks/use-scroll-lock.js";import{useTheme as i}from"../../../hooks/use-theme.js";import{useUIConfig as s}from"../../../ui-config-context.js";import{cnExt as l}from"../../../utils/cn.js";import{mergeSlotProps as u}from"../../../utils/merge-slot-props.js";let c=r(({className:r,style:c,noStyle:p,asChild:d,...y},f)=>{let v,b=a(),{disableAnimation:j,noStyle:h,scrollLock:C}=i(),{components:N}=s(),g="banner"===b,[k,A]=n(!1);o(()=>{if(g){let e=requestAnimationFrame(()=>A(!0));return()=>cancelAnimationFrame(e)}if(j){let e=requestAnimationFrame(()=>A(!1));return()=>cancelAnimationFrame(e)}let e=setTimeout(()=>{A(!1)},Number.parseInt(getComputedStyle(document.documentElement).getPropertyValue("--consent-banner-animation-duration")||"200",10));return()=>clearTimeout(e)},[g,j]);let F=u(N?.banner?.overlay,{baseClassName:t.overlay,className:r,noStyle:h||p,style:c,...y});v=h||p||j?void 0:k?t.overlayVisible:t.overlayHidden;let x=l(F.className,v);return m(!!(g&&C)),g&&C?e("div",{ref:f,...F,"aria-hidden":"true",className:x,"data-testid":"consent-banner-overlay"}):null});c.displayName="ConsentBannerOverlay";let p=c;export{c as ConsentBannerOverlay,p as Overlay};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{Fragment as e,jsx as t,jsxs as o}from"react/jsx-runtime";import n from"@c15t/ui/styles/components/consent-banner";import{forwardRef as r,useEffect as i,useMemo as a,useState as m}from"react";import{useHeadlessConsentUI as s}from"../../../component-hooks/use-headless-consent-ui.js";import{ConsentTrackingContext as l}from"../../../context/consent-tracking-context.js";import{LocalThemeContext as c}from"../../../context/theme-context.js";import{useActiveUI as u,useHasConsentUI as p,useModel as d,usePolicyRule as f,useTranslations as b}from"../../../hooks.js";import{useTextDirection as g}from"../../../hooks/use-text-direction.js";import{useUIConfig as v}from"../../../ui-config-context.js";import{defaultTranslationConfig as F}from"../../../utils/default-translation-config.js";import{mergeSlotProps as h}from"../../../utils/merge-slot-props.js";import{ConsentBannerSurfaceContext as A,mirrorDefaultPosition as j,useConsentBannerSurface as k}from"../surface-context.js";import{Overlay as x}from"./overlay.js";let N=["opt-in","opt-out"],y=r(({asChild:r,children:a,className:s,style:l,className:c,disableAnimation:A,noStyle:y,models:S=N,...q},C)=>{let P=u(),{components:T}=v(),L=p(),R=d()??"opt-in",B=f(),V=k(),$=b(),E=g($?.language??F.defaultLanguage),H=j(V.position,V.positionSource,V.variant,E),I=L&&"banner"===P&&S.includes(R),[w,z]=m(I),[D,G]=m(I),[J,K]=m(200),[M,O]=m(!0);i(()=>{let e=Number.parseInt(getComputedStyle(document.documentElement).getPropertyValue("--consent-banner-animation-duration")||"200",10),t=requestAnimationFrame(()=>{K(e)});return()=>cancelAnimationFrame(t)},[]),i(()=>{if(!M){let e=requestAnimationFrame(()=>{O(!0),z(I),I&&G(!0)});return()=>cancelAnimationFrame(e)}if(I){if(A){let e=requestAnimationFrame(()=>{z(!0),G(!0)});return()=>cancelAnimationFrame(e)}if(D){let e=requestAnimationFrame(()=>z(!0));return()=>cancelAnimationFrame(e)}let e=setTimeout(()=>{z(!0),G(!0)},10);return()=>clearTimeout(e)}if(A){let e=requestAnimationFrame(()=>{G(!1),z(!1)});return()=>cancelAnimationFrame(e)}let e=requestAnimationFrame(()=>G(!1)),t=setTimeout(()=>{z(!1)},J);return()=>{cancelAnimationFrame(e),clearTimeout(t)}},[I,A,D,J,M]);let Q=h(T?.banner?.root,{baseClassName:n.root,className:s||c,noStyle:y,style:l,...q}),U=y?Q.className||"":`${Q.className||""} ${A?"":w?n.bannerVisible:n.bannerHidden}`;return I?o(e,{children:[t(x,{}),t("div",{ref:C,...Q,className:U,"data-variant":V.variant,"data-position":H,"data-blocking":V.blocking?"true":void 0,"data-prompt":B.prompt,"data-model":B.model,"data-testid":"consent-banner-root",dir:E,children:a})]}):null}),S=({children:e,className:o,noStyle:n,disableAnimation:r,scrollLock:i,trapFocus:m,models:u,uiSource:p,variant:d,position:f,blocking:b,...g})=>{let{banner:v}=s({prompt:{blocking:b,position:f,scrollLock:i,trapFocus:m,variant:d}}),F=v.scrollLock,h=v.trapFocus,j=a(()=>({disableAnimation:r,noStyle:n,scrollLock:F,trapFocus:h}),[r,n,F,h]),k=a(()=>({blocking:v.blocking,position:v.position,positionSource:v.positionSource,variant:v.variant}),[v.blocking,v.position,v.positionSource,v.variant]),x=a(()=>({uiSource:p??"banner"}),[p]);return t(l.Provider,{value:x,children:t(c.Provider,{value:j,children:t(A.Provider,{value:k,children:t(y,{disableAnimation:r,className:o,noStyle:n,models:u,...g,children:e})})})})};y.displayName="ConsentBannerRootChildren";let q=S;export{S as ConsentBannerRoot,q as Root};
@@ -0,0 +1 @@
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import n from"@c15t/ui/styles/components/consent-actions";import o from"@c15t/ui/styles/components/consent-banner";import{forwardRef as r,useRef as s}from"react";import{useHeadlessConsentUI as a}from"../../component-hooks/use-headless-consent-ui.js";import{useTranslations as i}from"../../component-hooks/use-translations.js";import{Slot as l}from"../shared/libs/slot.js";import{usePolicyRule as c,useSetActiveUI as d}from"../../hooks.js";import{useFocusTrap as m}from"../../hooks/use-focus-trap.js";import{useTheme as p}from"../../hooks/use-theme.js";import{useUIConfig as u}from"../../ui-config-context.js";import{getSlotProps as b,mergeSlotProps as h}from"../../utils/merge-slot-props.js";import{Box as f}from"../shared/primitives/box.js";import{ConsentButton as C}from"../shared/primitives/button.js";import{InlineLegalLinks as B}from"../shared/primitives/legal-links/index.js";import{useConsentBannerSurface as g}from"./surface-context.js";import{useBannerCopy as y}from"./use-banner-copy.js";let j={"opt-out":"Do not sell or share my data",preferences:"Manage preferences"},N=r(({children:t,...n},r)=>{let{title:s}=y();return e(f,{ref:r,baseClassName:o.title,"data-testid":"consent-banner-title",slotKey:"banner.title",...n,asChild:!0,children:e("h2",{children:t??s})})});N.displayName="ConsentBannerTitle";let k=r(({children:n,legalLinks:r,asChild:s,className:a,style:i,noStyle:c,...d},m)=>{let{description:b}=y(),{components:f}=u(),{noStyle:C}=p(),g="banner",j=h(f?.description?.[g],{baseClassName:o.description,className:a,"data-context":g,"data-testid":"consent-banner-description",noStyle:c??C,style:i,...d});return s?e(l,{ref:m,...j,children:n??b}):t("div",{ref:m,...j,children:[n??b,e(B,{links:r,context:"banner",testIdPrefix:"consent-banner-legal-link"})]})});k.displayName="ConsentBannerDescription";let x=r(({children:t,className:n,style:r,...s},a)=>{let{components:i}=u(),{noStyle:l}=p(),c=h(i?.banner?.actions,{baseClassName:n,noStyle:l,style:r,...s});return e(f,{ref:a,baseClassName:o.footer,"data-testid":"consent-banner-footer",slotKey:"banner.footer",...c,children:t})});x.displayName="ConsentBannerFooter";let R=r(({children:t,...n},r)=>{let{blocking:a}=g(),{title:i}=y(),l=s(null),c=r||l;return m(a,c),e(f,{ref:c,tabIndex:-1,baseClassName:o.card,"data-testid":"consent-banner-card",slotKey:"banner.card","aria-label":n["aria-label"]||i,"aria-modal":a?"true":void 0,role:a?"dialog":"region",...n,children:t})});R.displayName="ConsentBannerCard";let S=r(({children:t,...n},r)=>e(f,{ref:r,baseClassName:o.header,"data-testid":"consent-banner-header",slotKey:"banner.header",...n,children:t}));S.displayName="ConsentBannerHeader";let v=r(({children:t,...o},r)=>e(f,{ref:r,baseClassName:n.actionGroup,"data-testid":"consent-banner-footer-sub-group",slotKey:"banner.actionGroup",...o,children:t}));v.displayName="ConsentBannerFooterSubGroup";let D=r(({children:t,...n},o)=>{let{common:r}=i();return e(C,{ref:o,action:"reject-consent","data-testid":"consent-banner-reject-button",closeConsentBanner:!0,...n,children:t??r.rejectAll})});D.displayName="ConsentBannerRejectButton";let A=r(({children:t,...n},o)=>{let{common:r}=i();return e(C,{ref:o,action:"open-consent-dialog","data-testid":"consent-banner-customize-button",...n,children:t??r.customize})});A.displayName="ConsentBannerCustomizeButton";let F=r(({children:t,...n},o)=>{let{common:r}=i(),{noStyle:s}=p();return e(C,{ref:o,action:"accept-consent","data-testid":"consent-banner-accept-button",closeConsentBanner:!0,noStyle:s,...n,children:t??r.acceptAll})});F.displayName="ConsentBannerAcceptButton";let K=r(({children:t,...n},o)=>{let{common:r}=i(),{noStyle:s}=p();return e(C,{ref:o,action:"dismiss-notice",consentAction:"dismiss","data-action":"dismiss","data-testid":"consent-banner-dismiss-button",noStyle:s,...n,children:t??r.acknowledge??r.dismiss})});K.displayName="ConsentBannerDismissButton";let z=r(({right:t,children:n,asChild:r,className:s,style:a,noStyle:m,onClick:f,...C},B)=>{let{rights:g}=i(),y=c(),{components:N}=u(),{noStyle:k}=p(),x=d(),R=("opt-out"===t?g?.optOut:g?.preferences)??j[t];return e(r?l:"button",{ref:B,type:r?void 0:"button",...h(b(N,"banner.rightLink"),{baseClassName:o.rightLink,className:s,noStyle:m??k,style:a}),"data-action":"right","data-right":t,"data-c15t-rights":y.rights.join(" "),"data-testid":`consent-banner-right-link-${t}`,onClick:e=>{f?.(e),e.defaultPrevented||x("dialog")},...C,children:n??R})});z.displayName="ConsentBannerRightLink";let G=r(({rights:t,children:n,...r},s)=>{let{banner:i}=a(),l=(t??i.preferenceControls).filter(e=>"disclosure"!==e);return void 0===n&&0===l.length?null:e(f,{ref:s,baseClassName:o.rights,"data-testid":"consent-banner-rights",slotKey:"banner.rights",...r,children:n??l.map(t=>e(z,{right:t},t))})});G.displayName="ConsentBannerRights";let L=N,H=k,T=x,I=v,P=R,w=S,M=D,O=A,$=F,q=K,E=G,J=z;export{$ as AcceptButton,P as Card,F as ConsentBannerAcceptButton,R as ConsentBannerCard,A as ConsentBannerCustomizeButton,k as ConsentBannerDescription,K as ConsentBannerDismissButton,x as ConsentBannerFooter,v as ConsentBannerFooterSubGroup,S as ConsentBannerHeader,D as ConsentBannerRejectButton,z as ConsentBannerRightLink,G as ConsentBannerRights,N as ConsentBannerTitle,O as CustomizeButton,H as Description,q as DismissButton,T as Footer,I as FooterSubGroup,w as Header,M as RejectButton,J as RightLink,E as Rights,L as Title};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{Component as r}from"react";class t extends r{errorInfo=null;constructor(r){super(r),this.state={error:null,errorInfo:null,hasError:!1}}static getDerivedStateFromError(r){return{error:r,errorInfo:null,hasError:!0}}componentDidCatch(r,t){this.errorInfo=t,this.forceUpdate()}render(){return this.state.hasError?"function"==typeof this.props.fallback?this.props.fallback(this.state.error,this.errorInfo):this.props.fallback:this.props.children}}export{t as ErrorBoundary};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{ConsentBannerOverlay as n,Overlay as t}from"./atoms/overlay.js";import{ConsentBannerRoot as o,Root as e}from"./atoms/root.js";import{AcceptButton as r,Card as s,ConsentBannerAcceptButton as i,ConsentBannerCard as a,ConsentBannerCustomizeButton as B,ConsentBannerDescription as c,ConsentBannerDismissButton as u,ConsentBannerFooter as p,ConsentBannerFooterSubGroup as C,ConsentBannerHeader as m,ConsentBannerRejectButton as l,ConsentBannerRightLink as R,ConsentBannerRights as j,ConsentBannerTitle as f,CustomizeButton as y,Description as d,DismissButton as g,Footer as A,FooterSubGroup as h,Header as D,RejectButton as F,RightLink as b,Rights as x,Title as v}from"./components.js";import{ConsentBannerPolicyActions as O,PolicyActions as S}from"./policy-actions.js";import{ConsentBanner as k}from"./prompt.js";let z=Object.assign(k,{AcceptButton:r,Actions:h,Card:s,Content:s,CustomizeButton:y,Description:d,DismissButton:g,Footer:A,FooterSubGroup:h,Header:D,Overlay:t,PolicyActions:S,RejectButton:F,RightLink:b,Rights:x,Root:e,Title:v});export{useConsentBannerSurface}from"./surface-context.js";export{useBannerCopy}from"./use-banner-copy.js";export default z;export{r as AcceptButton,s as Card,i as ConsentBannerAcceptButton,a as ConsentBannerCard,B as ConsentBannerCustomizeButton,c as ConsentBannerDescription,u as ConsentBannerDismissButton,p as ConsentBannerFooter,C as ConsentBannerFooterSubGroup,m as ConsentBannerHeader,n as ConsentBannerOverlay,O as ConsentBannerPolicyActions,l as ConsentBannerRejectButton,R as ConsentBannerRightLink,j as ConsentBannerRights,o as ConsentBannerRoot,f as ConsentBannerTitle,y as CustomizeButton,d as Description,g as DismissButton,A as Footer,h as FooterSubGroup,D as Header,t as Overlay,S as PolicyActions,F as RejectButton,b as RightLink,x as Rights,e as Root,v as Title,z as ConsentBanner};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as t}from"react/jsx-runtime";import{useHeadlessConsentUI as n}from"../../component-hooks/use-headless-consent-ui.js";import{warmDialogChunk as e}from"../../chunk-warming.js";import{PolicyActionsRenderer as o}from"../shared/policy-actions.js";import{ConsentBannerAcceptButton as r,ConsentBannerCustomizeButton as s,ConsentBannerDismissButton as c,ConsentBannerFooter as i,ConsentBannerFooterSubGroup as a,ConsentBannerRejectButton as m,ConsentBannerRights as u}from"./components.js";import{resolveBannerPrimaryActions as d}from"./resolve-banner-primary-actions.js";let p=function(n,o){let{key:i,consentAction:a,...u}=o;switch(n){case"accept":return t(r,{consentAction:a,"data-testid":"consent-banner-accept-button",...u},i);case"reject":return t(m,{consentAction:a,"data-testid":"consent-banner-reject-button",...u},i);case"customize":return t(s,{consentAction:a,"data-testid":"consent-banner-customize-button",onPointerEnter:e,onFocus:e,...u},i);case"dismiss":return t(c,{consentAction:a,"data-testid":"consent-banner-dismiss-button",...u},i);case"save":return null;default:throw Error(`Unhandled consent banner action: ${n}`)}},l=({children:e,renderAction:r})=>{let{banner:s}=n();return t(o,{state:{...s,primaryActions:[...d(s.primaryActions,s.orderedActions)]},leading:void 0===e?t(u,{rights:s.preferenceControls}):e,Footer:i,FooterSubGroup:a,classNames:{},renderAction:r,renderDefaultAction:p})},b=l;export{l as ConsentBannerPolicyActions,b as PolicyActions};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as t,jsxs as n}from"react/jsx-runtime";import e from"@c15t/ui/styles/components/consent-actions";import r from"@c15t/ui/styles/components/consent-banner";import{Fragment as o}from"react";import{useHeadlessConsentUI as i}from"../../component-hooks/use-headless-consent-ui.js";import{Box as a}from"../shared/primitives/box.js";import{BrandingLink as s}from"../shared/ui/branding.js";import{useComponentConfig as c}from"../../hooks/use-component-config.js";import{ConsentBannerRoot as l}from"./atoms/root.js";import{ConsentBannerAcceptButton as d,ConsentBannerCard as m,ConsentBannerCustomizeButton as p,ConsentBannerDescription as u,ConsentBannerDismissButton as h,ConsentBannerFooter as b,ConsentBannerFooterSubGroup as f,ConsentBannerHeader as y,ConsentBannerRejectButton as g,ConsentBannerRights as j,ConsentBannerTitle as A}from"./components.js";import{ErrorBoundary as k}from"./error-boundary.js";import{resolveBannerPrimaryActions as v}from"./resolve-banner-primary-actions.js";let N=({noStyle:N,disableAnimation:S,scrollLock:w,trapFocus:C,title:L,description:x,rejectButtonText:z,customizeButtonText:F,acceptButtonText:P,dismissButtonText:B,legalLinks:$,hideBranding:G=!1,layout:E,direction:K,primaryButton:R,models:U,uiSource:q,variant:D,position:H,blocking:I})=>{let{banner:J}=i({prompt:{blocking:I,direction:K,layout:E,position:H,primaryActions:"string"==typeof R?[R]:R,scrollLock:w,trapFocus:C,variant:D}}),M=c({disableAnimation:S,noStyle:N,scrollLock:J.scrollLock,trapFocus:J.trapFocus}),{orderedActions:O}=J,Q=new Set(O),T=v(J.primaryActions,O),V=J.actionGroups,W=J.direction,{shouldFillActions:X}=J,Y=(n,e)=>{if(!Q.has(n))return null;let r=T.includes(n);switch(n){case"reject":return t(g,{consentAction:"reject",isPrimary:r,className:e,"data-action":"reject","data-testid":"consent-banner-reject-button",children:z});case"accept":return t(d,{consentAction:"accept",isPrimary:r,className:e,"data-action":"accept","data-testid":"consent-banner-accept-button",children:P});case"customize":return t(p,{consentAction:"customize",isPrimary:r,className:e,"data-action":"customize","data-testid":"consent-banner-customize-button",children:F});case"dismiss":return t(h,{consentAction:"dismiss",isPrimary:r,className:e,"data-action":"dismiss","data-testid":"consent-banner-dismiss-button",children:B});case"save":return null;default:throw Error(`Unhandled consent banner button type: ${n}`)}};return t(k,{fallback:t("div",{children:"Something went wrong with the Consent Banner."}),children:t(l,{...M,models:U,uiSource:q,variant:D,position:H,blocking:I,children:n(a,{baseClassName:r.cardShell,slotKey:"banner.cardShell",children:[t(s,{hideBranding:G,variant:"banner-tag",slotContext:"banner","data-testid":"consent-banner-branding"}),n(m,{children:[n(y,{children:[t(A,{children:L}),t(u,{legalLinks:$,children:x})]}),n(b,{className:e.actionRoot,"data-direction":W,"data-fill":!!X||void 0,"data-split":V.length>1&&!X||void 0,children:[t(j,{rights:J.preferenceControls}),V.map((n,r)=>{if(Array.isArray(n)){let i=n.filter(t=>Q.has(t));if(0===i.length)return null;let a=n.join("-");return t(f,{className:e.actionGroup,"data-direction":W,"data-fill":!!X||void 0,children:i.map(n=>t(o,{children:Y(n)},n))},a?`group-${a}`:`group-${r}`)}return Q.has(n)?t(o,{children:Y(n)},n):null})]})]})]})})})};export{N as ConsentBanner};
@@ -0,0 +1 @@
1
+ let r=function(r,e){return 0===r.length&&1===e.length&&"dismiss"===e[0]?e:r};export{r as resolveBannerPrimaryActions};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{createContext as t,useContext as e}from"react";let n={blocking:!1,position:"bottom-left",positionSource:"default",variant:"floating"},r=t(n),o=function(){return e(r)},i=function(t,e,n,r){return"host"===e||"rtl"!==r||"floating"!==n&&"widget"!==n?t:t.endsWith("-left")?t.replace("-left","-right"):t.endsWith("-right")?t.replace("-right","-left"):t};export{r as ConsentBannerSurfaceContext,n as DEFAULT_CONSENT_BANNER_SURFACE,i as mirrorDefaultPosition,o as useConsentBannerSurface};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{useTranslations as t}from"../../component-hooks/use-translations.js";import{usePolicyRule as e}from"../../hooks.js";let o=function(){let{cookieBanner:o}=t(),{prompt:n}=e(),i="notice"===n;return{description:i?o.noticeDescription??o.description:o.description,prompt:n,title:i?o.noticeTitle??o.title:o.title}};export{o as useBannerCopy};
@@ -1 +1 @@
1
- import{Children as e,cloneElement as r,isValidElement as t}from"react";function i(n,l,p,o,u){let a=e.map(n,e=>{if(!t(e))return e;let n=e.type?.displayName||"",u=p.includes(n)?l:{},a=e.props;return r(e,{...u,key:`${o}-${e.key||n}`},i(a?.children,l,p,o,a?.asChild))});return u?a?.[0]:a}export{i as recursiveCloneChildren};
1
+ import{createElement as e,isValidElement as r}from"react";let i=function i(l,n,t,c,s){let a=(Array.isArray(l)?l:[l]).map(l=>{if(!r(l))return l;let s=l.type?.displayName||"",a=t.includes(s)?n:{},o=l.props,p=i(o?.children,n,t,c,o?.asChild);return e(l.type,{...o,...a,key:`${c}-${l.key||s}`},p)});return s?a?.[0]:a};export{i as recursiveCloneChildren};
@@ -1 +1 @@
1
- import{cloneElement as t,forwardRef as e,isValidElement as n}from"react";let o=e(({children:e,...o},r)=>{if(!n(e))return null;let f=e.props,l=e.ref,i={...o,...f,className:[o.className,f.className].filter(Boolean).join(" "),style:{...o.style,...f.style},ref:function(...t){return e=>{for(let n of t){if("function"==typeof n){n(e);continue}n&&"current"in n&&(n.current=e)}}}(r,l)};for(let[t,e]of Object.entries(o))/^on[A-Z]/.test(t)&&(i[t]=function(t,e){return"function"!=typeof t?e:"function"!=typeof e?t:n=>{e(n),t(n)}}(e,f[t]));return t(e,i)});o.displayName="Slot";export{o as Slot};
1
+ import{createElement as e,forwardRef as t,isValidElement as r}from"react";let n=function(e,t){return"function"!=typeof e?t:"function"!=typeof t?e:r=>{t(r),e(r)}},o=function(e,t){let r=Object.getOwnPropertyDescriptor(e,t)?.get;return"function"==typeof r&&!0===r.isReactWarning},f=t(({children:t,...f},i)=>{if(!r(t))return null;let c=t.props,l=o(t.props,"ref")?t.ref:o(t,"ref")?t.props.ref:t.props.ref??t.ref,p={...f,...c,className:[f.className,c.className].filter(Boolean).join(" "),ref:function(...e){return t=>{for(let r of e){if("function"==typeof r){r(t);continue}r&&"current"in r&&(r.current=t)}}}(i,l),style:{...f.style,...c.style}};for(let[e,t]of Object.entries(f))/^on[A-Z]/u.test(e)&&(p[e]=n(t,c[e]));return e(t.type,{key:t.key??void 0,...p})});f.displayName="Slot";export{f as Slot};
@@ -1 +1 @@
1
- import{useMemo as t,useState as e}from"react";function o({defaultValue:r,onChange:l,value:n}){let[a,i]=e(r),u=void 0!==n;return[t(()=>u?n:a,[u,a,n]),t=>{u||i(t),l?.(t)}]}export{o as useControllableState};
1
+ import{useMemo as t,useState as e}from"react";let l=function({defaultValue:l,onChange:o,value:r}){let[a,n]=e(l),s=void 0!==r;return[t(()=>s?r:a,[s,a,r]),t=>{s||n(t),o?.(t)}]};export{l as useControllableState};
@@ -1 +1,2 @@
1
- import{jsx as o}from"react/jsx-runtime";import{Fragment as r}from"react";import{cnExt as i}from"../../utils/cn.js";function t({state:e,Footer:n,FooterSubGroup:l,classNames:c,renderDefaultAction:m,renderAction:s}){let u=e.shouldFillActions,a="column"===e.direction,p=u?{width:"100%",flex:1}:void 0;return o(n,{className:i(u&&c.footerFill,a&&c.footerColumn),children:e.actionGroups.map((t,n)=>o(l,{className:i(u&&c.footerSubGroupFill,a&&c.footerSubGroupColumn),children:t.map(i=>{let t=`action-${i}`,n={key:t,consentAction:i,isPrimary:e.primaryActions.includes(i),style:p};return o(r,{children:s?.(i,n)??m(i,n)},t)})},`group-${t.join("-")||n}`))})}export{t as PolicyActionsRenderer};
1
+ "use client";
2
+ import{jsx as o,jsxs as t}from"react/jsx-runtime";import i from"@c15t/ui/styles/components/consent-actions";import{Fragment as r}from"react";import{cnExt as e}from"../../utils/cn.js";let n=({state:n,Footer:c,FooterSubGroup:l,classNames:a,renderDefaultAction:s,renderAction:d,leading:m})=>{let{shouldFillActions:u}=n,p="column"===n.direction,f=n.actionGroups.length>1,y=u?{flex:1,width:"100%"}:void 0;return t(c,{className:e(i.actionRoot,u&&a.footerFill,p&&a.footerColumn),"data-direction":n.direction,"data-fill":!!u||void 0,"data-split":!!f&&!u||void 0,children:[m,n.actionGroups.map((t,c)=>o(l,{className:e(i.actionGroup,u&&a.footerSubGroupFill,p&&a.footerSubGroupColumn),"data-direction":n.direction,"data-fill":!!u||void 0,children:t.map(t=>{let i=`action-${t}`,e={consentAction:t,isPrimary:n.primaryActions.includes(t),key:i,style:y};return o(r,{children:d?.(t,e)??s(t,e)},i)})},`group-${t.join("-")||c}`))]})};export{n as PolicyActionsRenderer};
@@ -1 +1,2 @@
1
- import{jsx as r}from"react/jsx-runtime";import{sanitizeDOMStyleProps as o}from"@c15t/ui/utils";import{forwardRef as t}from"react";import{Slot as m}from"../libs/slot.js";import{useStyles as e}from"../../../hooks/use-styles.js";let i=t(({asChild:t,className:i,style:s,themeKey:l,baseClassName:p,noStyle:f,...u},a)=>{let x=o(e(l,{baseClassName:p,className:i,style:s,noStyle:f}));return r(t?m:"div",{ref:a,...u,...x})});i.displayName="Box";export{i as Box};
1
+ "use client";
2
+ import{jsx as o}from"react/jsx-runtime";import{forwardRef as r}from"react";import{Slot as t}from"../libs/slot.js";import{useTheme as e}from"../../../hooks/use-theme.js";import{useUIConfig as m}from"../../../ui-config-context.js";import{getSlotProps as i,mergeSlotProps as s}from"../../../utils/merge-slot-props.js";let p=r(({asChild:r,className:p,style:l,slotKey:f,baseClassName:n,noStyle:j,...u},x)=>{let{components:a}=m(),{noStyle:c}=e(),y=s(i(a,f),{baseClassName:n,className:p,noStyle:j??c,style:l,...u});return o(r?t:"div",{ref:x,...y})});p.displayName="Box";export{p as Box};
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{forwardRef as e,useCallback as o}from"react";import{useConsentTracking as n}from"../../../context/consent-tracking-context.js";import{useConsentManager as r}from"../../../hooks/use-consent-manager.js";import{useStyles as s}from"../../../hooks/use-styles.js";import{useTheme as a}from"../../../hooks/use-theme.js";import{Slot as i}from"../libs/slot.js";import*as c from"../ui/button/index.js";let m=["primary","secondary","neutral","consentAction","isPrimary"];function l(t){if(t.variant||t.mode)return{variant:t.variant??"neutral",mode:t.mode??"stroke"};let e=t.fallback??(t.isPrimary?{variant:"primary",mode:"stroke"}:{variant:"neutral",mode:"stroke"}),o=t.theme?.consentActions?.default??{},n=t.isPrimary?t.theme?.consentActions?.primary??{}:{},r=t.consentAction?t.theme?.consentActions?.[t.consentAction]:void 0;return{variant:r?.variant??n.variant??o.variant??e.variant,mode:r?.mode??n.mode??o.mode??e.mode}}let u=e(({asChild:e,className:u,style:d,noStyle:y,action:f,themeKey:p,baseClassName:v,variant:b,mode:k,size:h="small",consentAction:j,isPrimary:C,onClick:g,closeConsentBanner:A=!1,closeConsentDialog:x=!1,category:S,...N},P)=>{let{saveConsents:w,setActiveUI:B,setConsent:E}=r(),{uiSource:q}=n(),{noStyle:O,theme:V}=a(),z=l({consentAction:j,isPrimary:C,theme:V,variant:b,mode:k}),D="primary"===z.variant?"buttonPrimary":"buttonSecondary",{noStyle:F,...G}=s(p??D,{baseClassName:[!(O||y)&&c.buttonVariants({variant:z.variant,mode:z.mode,size:h}).root()],style:{...d},className:u,noStyle:O||y});if(!S&&"set-consent"===f)throw Error("Category is required for set-consent action");let H=o(t=>{if((A||x)&&B("none"),"open-consent-dialog"===f&&B("dialog"),g&&g(t),"open-consent-dialog"!==f){let t=q?{uiSource:q}:void 0;switch(f){case"accept-consent":w("all",t);break;case"reject-consent":w("necessary",t);break;case"custom-consent":w("custom",t);break;case"set-consent":if(!S)throw Error("Category is required for set-consent action");E(S,!0)}}},[A,x,g,w,B,f,S,E,q]),I=Object.fromEntries(Object.entries(N).filter(([t])=>!m.includes(t)));return t(e?i:"button",{ref:P,type:e?void 0:"button",...G,onClick:H,...I})});u.displayName="ConsentButton";export{u as ConsentButton,l as resolveConsentButtonStyle};
1
+ import{jsx as t}from"react/jsx-runtime";import{forwardRef as e,useCallback as o}from"react";import{useConsentSaveAction as r}from"../../../draft.js";import{useDismissNotice as n,useSetActiveUI as a}from"../../../hooks.js";import{useTheme as i}from"../../../hooks/use-theme.js";import{useUIConfig as s}from"../../../ui-config-context.js";import{getSlotProps as c,mergeSlotProps as m}from"../../../utils/merge-slot-props.js";import{Slot as d}from"../libs/slot.js";import*as l from"../ui/button/index.js";let u=["primary","secondary","neutral","consentAction","isPrimary","performDefaultAction"],f=function(t){if(t.variant||t.mode)return{mode:t.mode??"stroke",variant:t.variant??"neutral"};let e=t.theme?.consentActions,o=[t.consentAction&&"save"!==t.consentAction?e?.[t.consentAction]:void 0,t.isPrimary?e?.primary:void 0,e?.default,{mode:"stroke",variant:t.isPrimary?"primary":"neutral"}];return{mode:o.find(t=>t?.mode)?.mode??"stroke",variant:o.find(t=>t?.variant)?.variant??"neutral"}},p=e(({asChild:e,className:p,style:v,noStyle:y,action:b,slotKey:j,baseClassName:k,variant:g,mode:h,size:C="small",consentAction:A,isPrimary:x,onClick:N,closeConsentBanner:P=!1,closeConsentDialog:w=!1,performDefaultAction:E=!0,category:q,...B},O)=>{let S=r(),z=a(),D=n(),{noStyle:V,theme:F}=i(),{components:G}=s(),H=f({consentAction:A,isPrimary:x,mode:h,theme:F,variant:g}),I="primary"===H.variant?"button.primary":"button.secondary",J=m(c(G,j??I),{baseClassName:[l.buttonVariants({mode:H.mode,size:C,variant:H.variant}).root(),k],className:p,noStyle:V||y,style:{...v}});if(!q&&"set-consent"===b)throw Error("Category is required for set-consent action");let K=o(t=>{if(N?.(t),t.defaultPrevented)return;let e="accept-consent"===b||"reject-consent"===b||"custom-consent"===b;if((P||w)&&!e&&z("none"),"open-consent-dialog"===b&&z("dialog"),E&&"open-consent-dialog"!==b)switch(b){case"accept-consent":S("all");break;case"reject-consent":S("none");break;case"custom-consent":S();break;case"dismiss-notice":D();break;case"set-consent":if(!q)throw Error("Category is required for set-consent action");S({[q]:!0})}},[P,w,N,S,z,b,q,D,E]),L=Object.fromEntries(Object.entries(B).filter(([t])=>!u.includes(t))),M=!(V||y);return t(e?d:"button",{ref:O,type:e?void 0:"button","data-variant":M?H.variant:void 0,"data-mode":M?H.mode:void 0,"data-size":M?C:void 0,"data-action":A,...J,onClick:K,...L})});p.displayName="ConsentButton";export{p as ConsentButton};
@@ -1 +1 @@
1
- import{jsxs as e}from"react/jsx-runtime";import t from"@c15t/ui/styles/primitives/legal-links.module.js";import{useConsentManager as r}from"../../../../hooks/use-consent-manager.js";import{useStyles as n}from"../../../../hooks/use-styles.js";import{useTranslations as l}from"../../../../hooks/use-translations.js";function s(e){let{legalLinks:t}=r();return null==e?null:Object.fromEntries(Object.entries(t??{}).filter(([t])=>e.includes(t)))}function i({links:r,themeKey:o,testIdPrefix:a}){let m=s(r),{legalLinks:u}=l(),g=n(o,{baseClassName:t.legalLink});return m&&0!==Object.keys(m).length?e("span",{children:[" ",Object.entries(m).map(([t,r],n,l)=>r?e("span",{children:[e("a",{href:r.href,target:r.target||"_blank",rel:r.rel||("_blank"===r.target?"noopener noreferrer":void 0),...g,"data-testid":a?`${a}-${String(t)}`:void 0,children:[r.label??u?.[t],n<l.length-1&&","]}),n<l.length-1&&" "]},String(t)):null)]}):null}export{i as InlineLegalLinks,s as useFilteredLegalLinks};
1
+ import{jsxs as e}from"react/jsx-runtime";import t from"@c15t/ui/styles/components/legal-links";import{resolveTranslations as l}from"@c15t/ui/utils";import{useContext as n,useMemo as r,useSyncExternalStore as i}from"react";import{KernelContext as s}from"../../../../context.js";import{V3UIConfigContext as o,useUIConfig as a}from"../../../../ui-config-context.js";import{defaultTranslationConfig as u}from"../../../../utils/default-translation-config.js";import{mergeSlotProps as g}from"../../../../utils/merge-slot-props.js";let m=()=>()=>void 0,c=function(){let e=n(s),t=i(e?t=>e.subscribe(t):m,()=>e?.getSnapshot().translations??null,()=>e?.getServerSnapshot().translations??null);return r(()=>t?.translations?t.translations.legalLinks:l({},u).legalLinks,[t])},f=function(e){let t=n(o).legalLinks;return null==e?null:Object.fromEntries(Object.entries(t??{}).filter(([t])=>e.includes(t)))},p=({links:l,context:n,testIdPrefix:r})=>{let i=f(l),s=c(),{components:o}=a(),u=g(o?.["legal-links"]?.root,{}),m=g(o?.link?.[n],{baseClassName:t.legalLink});return i&&0!==Object.keys(i).length?e("span",{...u,children:[" ",Object.entries(i).map(([t,l],n,i)=>l?e("span",{children:[e("a",{href:l.href,target:l.target||"_blank",rel:l.rel||("_blank"===l.target?"noopener noreferrer":void 0),...m,"data-testid":r?`${r}-${t}`:void 0,children:[l.label??s?.[t],n<i.length-1&&","]}),n<i.length-1&&" "]},String(t)):null)]}):null};export{p as InlineLegalLinks,f as useFilteredLegalLinks};
@@ -1 +1,2 @@
1
- import{jsx as e,jsxs as o}from"react/jsx-runtime";import{isAccordionItemOpen as t,toggleAccordionValue as a}from"@c15t/ui/primitives/accordion";import{getDataDisabled as r}from"@c15t/ui/primitives/data-state";import{accordionVariants as n}from"@c15t/ui/styles/primitives/accordion";import{createContext as i,forwardRef as c,useContext as d,useId as l,useMemo as s}from"react";import{useControllableState as m}from"../../libs/use-controllable-state.js";import{LucideIcon as p}from"../icon.js";import{useTheme as u}from"../../../../hooks/use-theme.js";let h=i(null),f=i(null);function g(){let e=d(h);if(!e)throw Error("Accordion components must be used within AccordionRoot");return e}function v(){let e=d(f);if(!e)throw Error("Accordion components must be used within AccordionItem");return e}let y=c(({children:o,className:t,collapsible:r,defaultValue:i,noStyle:c,onValueChange:d,size:l="medium",type:p,value:f,variant:g="default",...v},y)=>{let{noStyle:A}=u(),N=n({variant:g,size:l}),b=A||c,[I,w]=m({defaultValue:i??("multiple"===p?[]:void 0),onChange:e=>{void 0!==e&&d?.(e)},value:f}),S=b?t:N.root({class:t}),C=s(()=>({collapsible:r,noStyle:b,onItemToggle:e=>{w(a({collapsible:r,itemValue:e,type:p,value:I}))},type:p,value:I}),[r,I,b,w,p]);return e(h.Provider,{value:C,children:e("div",{ref:y,className:S,"data-slot":"accordion-root",...v,children:o})})});y.displayName="AccordionRoot";let A=c(({children:o,className:a,disabled:i,noStyle:c,value:d,...s},m)=>{let{noStyle:p}=u(),h=n(),v=g(),y=t(v.type,v.value,d),A=v.noStyle||p||c?a:h.item({class:a}),N=l().replace(/:/g,""),b=`c15t-accordion-content-${N}`,I=`c15t-accordion-trigger-${N}`;return e(f.Provider,{value:{contentId:b,disabled:i,open:y,triggerId:I,value:d},children:e("div",{ref:m,className:A,"data-disabled":r(i),"data-slot":"accordion-item","data-state":y?"open":"closed",...s,children:o})})});A.displayName="AccordionItem";let N=c(({children:o,...t},a)=>e("div",{ref:a,"data-slot":"accordion-header",...t,children:o}));N.displayName="AccordionHeader";let b=c(({children:o,className:t,noStyle:a,onClick:i,...c},d)=>{let{noStyle:l}=u(),s=n(),m=g(),p=v(),h=m.noStyle||l||a?t:s.trigger({class:t});return e("button",{ref:d,"aria-controls":p.contentId,"aria-disabled":p.disabled||void 0,"aria-expanded":p.open,className:h,"data-disabled":r(p.disabled),"data-slot":"accordion-trigger","data-state":p.open?"open":"closed",disabled:p.disabled,id:p.triggerId,onClick:e=>{m.onItemToggle(p.value),i?.(e)},type:"button",...c,children:o})});function I({className:o,noStyle:t,as:a,...r}){let i=n(),c="string"==typeof o?o:void 0;return e(a||"div",{className:t?c:i.icon({class:c}),"data-slot":"accordion-icon",...r})}function w({closeIcon:t={Element:p({title:"Close",iconPath:e("path",{d:"M5 12h14"})})},className:a,noStyle:r,openIcon:i={Element:p({title:"Open",iconPath:e("path",{d:"M5 12h14M12 5v14"})})},...c}){let d=v(),l=n(),s=r?i.className:l.arrowOpen({class:i.className}),m=r?t.className:l.arrowClose({class:t.className});return o("span",{className:a,"data-slot":"accordion-arrow",style:{alignItems:"center",display:"inline-flex",flexShrink:0,height:"1.25rem",justifyContent:"center",position:"relative",width:"1.25rem"},...c,children:[e(i.Element,{"aria-hidden":"true",className:s,"data-slot":"accordion-arrow-open","data-state":d.open?"open":"closed"}),e(t.Element,{"aria-hidden":"true",className:m,"data-slot":"accordion-arrow-close","data-state":d.open?"open":"closed"})]})}b.displayName="AccordionTrigger",I.displayName="AccordionIcon",w.displayName="AccordionArrow";let S=c(({children:o,className:t,innerClassName:a,noStyle:r,...i},c)=>{let{noStyle:d}=u(),l=n(),s=g(),m=v(),p=s.noStyle||d||r,h=p?t:l.content({class:t}),f=p?a:l.contentInner({class:a});return e("section",{ref:c,"aria-hidden":!m.open,"aria-labelledby":m.triggerId,className:h,"data-slot":"accordion-content","data-state":m.open?"open":"closed",id:m.contentId,...i,children:e("div",{"data-slot":"accordion-content-viewport",children:e("div",{className:f,children:o})})})});S.displayName="AccordionContent";export{w as Arrow,S as Content,N as Header,I as Icon,A as Item,y as Root,b as Trigger,n as accordionVariants};
1
+ "use client";
2
+ import{jsx as o}from"react/jsx-runtime";import{isAccordionItemOpen as e,toggleAccordionValue as t}from"@c15t/ui/primitives/accordion";import{getDataDisabled as a}from"@c15t/ui/primitives/data-state";import r from"@c15t/ui/styles/components/accordion";import{createContext as n,forwardRef as i,useContext as c,useId as l,useMemo as d}from"react";import{useControllableState as s}from"../../libs/use-controllable-state.js";import{LucideIcon as m}from"../icon.js";import{useTheme as p}from"../../../../hooks/use-theme.js";let u=()=>({arrowClose:o=>[r.arrow,o?.class].filter(Boolean).join(" "),arrowOpen:o=>[r.arrow,o?.class].filter(Boolean).join(" "),content:o=>[r.content,o?.class].filter(Boolean).join(" "),contentInner:o=>[r.contentInner,o?.class].filter(Boolean).join(" "),contentViewport:o=>[r.contentViewport,o?.class].filter(Boolean).join(" "),icon:o=>[r.control,o?.class].filter(Boolean).join(" "),item:o=>[r.item,o?.class].filter(Boolean).join(" "),root:o=>[r.list,o?.class].filter(Boolean).join(" "),trigger:o=>[r.trigger,o?.class].filter(Boolean).join(" ")}),f=n(null),g=n(null),v=function(){let o=c(f);if(!o)throw Error("Accordion components must be used within AccordionRoot");return o},h=function(){let o=c(g);if(!o)throw Error("Accordion components must be used within AccordionItem");return o},A=i(({children:e,className:a,collapsible:r,defaultValue:n,noStyle:i,onValueChange:c,size:l="medium",type:m,value:g,variant:v="default",...h},A)=>{let{noStyle:y}=p(),w=u(),N=y||i,[I,b]=s({defaultValue:n??("multiple"===m?[]:void 0),onChange:o=>{void 0!==o&&c?.(o)},value:g}),j=N?a:w.root({class:a}),B=d(()=>({collapsible:r,noStyle:N,onItemToggle:o=>{b(t({collapsible:r,itemValue:o,type:m,value:I}))},type:m,value:I}),[r,I,N,b,m]);return o(f.Provider,{value:B,children:o("div",{ref:A,className:j,"data-size":N?void 0:l,"data-slot":"accordion-root","data-variant":N?void 0:v,...h,children:e})})});A.displayName="AccordionRoot";let y=i(({children:t,className:r,disabled:n,noStyle:i,value:c,...s},m)=>{let{noStyle:f}=p(),h=u(),A=v(),y=e(A.type,A.value,c),w=A.noStyle||f||i?r:h.item({class:r}),N=l().replace(/:/gu,""),I=`c15t-accordion-content-${N}`,b=`c15t-accordion-trigger-${N}`,j=d(()=>({contentId:I,disabled:n,open:y,triggerId:b,value:c}),[I,n,y,b,c]);return o(g.Provider,{value:j,children:o("div",{ref:m,className:w,"data-disabled":a(n),"data-slot":"accordion-item","data-state":y?"open":"closed",...s,children:t})})});y.displayName="AccordionItem";let w=i(({children:e,className:t,...a},r)=>o("div",{ref:r,className:t,"data-slot":"accordion-header",...a,children:e}));w.displayName="AccordionHeader";let N=i(({children:e,className:t,noStyle:n,onClick:i,...c},l)=>{let{noStyle:d}=p(),s=v(),m=h(),u=s.noStyle||d||n?t:[r.triggerRow,t].filter(Boolean).join(" ");return o("button",{ref:l,"aria-controls":m.contentId,"aria-disabled":m.disabled||void 0,"aria-expanded":m.open,className:u,"data-disabled":a(m.disabled),"data-slot":"accordion-trigger","data-state":m.open?"open":"closed",disabled:m.disabled,id:m.triggerId,onClick:o=>{s.onItemToggle(m.value),i?.(o)},type:"button",...c,children:e})});N.displayName="AccordionTrigger";let I=({className:e,noStyle:t,as:a,...r})=>{let n=u(),i="string"==typeof e?e:void 0;return o(a||"div",{className:t?i:n.icon({class:i}),"data-slot":"accordion-icon",...r})};I.displayName="AccordionIcon";let b=m({iconPath:o("path",{d:"M5 12h14M12 5v14"}),title:"Open"}),j=({children:e,closeIcon:t,className:a,noStyle:r,openIcon:n,...i})=>{let c=h(),l=u(),d=r?a:l.arrowOpen({class:a}),s=n??t,m=s?.Element??b;return o("span",{className:d,"data-slot":"accordion-arrow","data-state":c.open?"open":"closed",...i,children:e??o(m,{"aria-hidden":"true",className:s?.className,"data-slot":"accordion-arrow-icon"})})};j.displayName="AccordionArrow";let B=i(({children:e,className:t,innerClassName:a,noStyle:r,...n},i)=>{let{noStyle:c}=p(),l=u(),d=v(),s=h(),m=d.noStyle||c||r,f=m?t:l.content({class:t}),g=m?a:l.contentInner({class:a});return o("section",{ref:i,"aria-hidden":!s.open,"aria-labelledby":s.triggerId,className:f,"data-slot":"accordion-content","data-state":s.open?"open":"closed",id:s.contentId,...n,children:o("div",{className:m?void 0:l.contentViewport({class:void 0}),"data-slot":"accordion-content-viewport",children:o("div",{className:g,children:e})})})});B.displayName="AccordionContent";export{j as Arrow,B as Content,w as Header,I as Icon,y as Item,A as Root,N as Trigger,u as accordionVariants};
@@ -1 +1,2 @@
1
- import{jsx as e}from"react/jsx-runtime";import{useLayoutEffect as t,useRef as n,useState as i}from"react";let r=({isOpen:r,children:o,duration:l=250,easing:a="cubic-bezier(0.33, 1, 0.68, 1)",className:h})=>{let s=n(null),d=n(null),u=n(null),[m,c]=i(r),[v,f]=i(!1),[g,w]=i({height:r?"auto":0,overflow:r?"visible":"hidden",transition:"none"});return(t(()=>{let e=s.current,t=d.current;if(window.matchMedia("(prefers-reduced-motion: reduce)").matches){c(r),f(!1),w({height:r?"auto":0,overflow:r?"visible":"hidden",transition:"none"});return}if(null!==u.current&&cancelAnimationFrame(u.current),r)c(!0),f(!0),u.current=requestAnimationFrame(()=>{let t=d.current;if(!t)return void f(!1);let n=t.scrollHeight;w({height:0,overflow:"hidden",transition:"none"}),requestAnimationFrame(()=>{w({height:n,overflow:"hidden",transition:`height ${l}ms ${a}`});let t=n=>{"height"===n.propertyName&&(w({height:"auto",overflow:"visible",transition:"none"}),f(!1),e?.removeEventListener("transitionend",t))};e?.addEventListener("transitionend",t)})});else{if(!e||!t){c(!1),f(!1),w({height:0,overflow:"hidden",transition:"none"});return}f(!0),w({height:t.scrollHeight,overflow:"hidden",transition:"none"}),u.current=requestAnimationFrame(()=>{e.offsetHeight,w({height:0,overflow:"hidden",transition:`height ${l}ms ${a}`});let t=n=>{"height"===n.propertyName&&(c(!1),f(!1),e.removeEventListener("transitionend",t))};e.addEventListener("transitionend",t)})}return()=>{null!==u.current&&cancelAnimationFrame(u.current)}},[r,l,a]),r||m||v)?e("div",{ref:s,className:h,style:{height:g.height,overflow:g.overflow,transition:g.transition},children:m&&e("div",{ref:d,style:{overflow:"hidden"},children:o})}):null};r.displayName="AnimatedCollapse";export{r as AnimatedCollapse};
1
+ "use client";
2
+ import{jsx as e}from"react/jsx-runtime";import{useLayoutEffect as n,useRef as t,useState as i}from"react";let r=({isOpen:r,children:o,duration:l=250,easing:a="cubic-bezier(0.33, 1, 0.68, 1)",className:s})=>{let m=t(null),h=t(null),u=t(null),[d,c]=i(r),[v,f]=i(!1),[g,A]=i({height:r?"auto":0,overflow:r?"visible":"hidden",transition:"none"});return(n(()=>{let e=m.current,n=h.current,t=null,i=null,o=null;if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return t=requestAnimationFrame(()=>{c(r),f(!1),A({height:r?"auto":0,overflow:r?"visible":"hidden",transition:"none"})}),()=>{null!==t&&cancelAnimationFrame(t)};if(null!==u.current&&cancelAnimationFrame(u.current),r)t=requestAnimationFrame(()=>{c(!0),f(!0),u.current=requestAnimationFrame(()=>{let n=h.current;if(!n)return void f(!1);let t=n.scrollHeight;A({height:0,overflow:"hidden",transition:"none"}),i=requestAnimationFrame(()=>{A({height:t,overflow:"hidden",transition:`height ${l}ms ${a}`});let n=t=>{"height"===t.propertyName&&(A({height:"auto",overflow:"visible",transition:"none"}),f(!1),e?.removeEventListener("transitionend",n),o=null)};e&&(e.addEventListener("transitionend",n),o=()=>e.removeEventListener("transitionend",n))})})});else{if(!e||!n)return t=requestAnimationFrame(()=>{c(!1),f(!1),A({height:0,overflow:"hidden",transition:"none"})}),()=>{null!==t&&cancelAnimationFrame(t)};let i=n.scrollHeight;t=requestAnimationFrame(()=>{f(!0),A({height:i,overflow:"hidden",transition:"none"}),u.current=requestAnimationFrame(()=>{e.offsetHeight,A({height:0,overflow:"hidden",transition:`height ${l}ms ${a}`});let n=t=>{"height"===t.propertyName&&(c(!1),f(!1),e.removeEventListener("transitionend",n),o=null)};e.addEventListener("transitionend",n),o=()=>e.removeEventListener("transitionend",n)})})}return()=>{null!==t&&cancelAnimationFrame(t),null!==i&&cancelAnimationFrame(i),null!==u.current&&cancelAnimationFrame(u.current),o?.()}},[r,l,a]),r||d||v)?e("div",{ref:m,className:s,style:{height:g.height,overflow:g.overflow,transition:g.transition},children:d&&e("div",{ref:h,style:{overflow:"hidden"},children:o})}):null};r.displayName="AnimatedCollapse";export{r as AnimatedCollapse};
@@ -1 +1 @@
1
- import{jsx as n,jsxs as r}from"react/jsx-runtime";import t from"@c15t/ui/styles/components/consent-dialog.module.js";import{resolveStyles as a,sanitizeDOMStyleProps as i}from"@c15t/ui/utils";import{useMemo as o}from"react";import{useConsentManager as e}from"../../../hooks/use-consent-manager.js";import{useTheme as s}from"../../../hooks/use-theme.js";import{useTranslations as d}from"../../../hooks/use-translations.js";import{cnExt as m}from"../../../utils/cn.js";import{mergeStyles as l}from"../../../utils/merge-styles.js";import{C15TIconOnly as c,InthIconOnly as g,InthLogo as u}from"./logo.js";function h(n){return"none"===n?"none":"inth"===n||"consent"===n?"inth":"c15t"}function p(n,r=""){return"inth"===h(n)?`https://inth.com${r}`:`https://c15t.com${r}`}function f({branding:a,className:i}){return"inth"===h(a)?n("span",{dir:"ltr",className:m(t.brandingWordmark,i),children:n(u,{"aria-hidden":"true"})}):r("span",{dir:"ltr",className:m(t.brandingWordmark,i),children:[n("span",{className:t.brandingC15TMark,children:n(c,{"aria-hidden":"true"})}),n("span",{className:t.brandingWordmarkLabel,children:"c15t"})]})}function b({branding:r,...t}){return n("inth"===h(r)?g:c,{...t})}function j({hideBranding:c,variant:g="footer",themeKey:u,className:b,style:k,"data-testid":N}){let{branding:B}=e(),{noStyle:y,theme:T}=s(),{common:C}=d(),w=h(B),L="u">typeof window?`?ref=${window.location.hostname}`:"",x=i(o(()=>{let n={baseClassName:m(t.branding,"footer"!==g&&t.brandingTag,"dialog-tag"===g&&t.brandingTagDialog,"banner-tag"===g&&t.brandingTagBanner),className:b,style:k};return u&&T?.slots&&u in T.slots?a(u,T,n,y):l({},n)},[b,y,k,T,u,g]));return"none"===w||c?null:r("a",{...x,href:p(B,L),"data-branding":w,"data-variant":g,"data-testid":N,children:[n("span",{className:t.brandingCopy,children:n("span",{className:t.brandingText,children:C.securedBy})}),n(f,{branding:B,className:"inth"===w?t.brandingInth:t.brandingC15T})]})}export{b as BrandingCompactLogo,f as BrandingFullLogo,j as BrandingLink,p as getBrandingHref,h as resolveBranding};
1
+ import{jsx as n,jsxs as a}from"react/jsx-runtime";import r from"@c15t/ui/styles/components/branding";import{useTranslations as t}from"../../../component-hooks/use-translations.js";import{useBranding as i}from"../../../hooks.js";import{useIsHydrated as o}from"../../../hooks/use-is-hydrated.js";import{useTheme as e}from"../../../hooks/use-theme.js";import{useUIConfig as s}from"../../../ui-config-context.js";import{cnExt as d}from"../../../utils/cn.js";import{mergeSlotProps as g}from"../../../utils/merge-slot-props.js";import{C15TIconOnly as m,InthIconOnly as l,InthLogo as c}from"./logo.js";let h=function(n){return"none"===n?"none":"inth"===n||"consent"===n?"inth":"c15t"},p=function(n,a=""){return"inth"===h(n)?`https://inth.com${a}`:`https://c15t.com${a}`},b=({branding:t,className:i})=>"inth"===h(t)?n("span",{dir:"ltr",className:d(r.brandingWordmark,i),children:n(c,{"aria-hidden":"true"})}):a("span",{dir:"ltr",className:d(r.brandingWordmark,i),children:[n("span",{className:r.brandingC15TMark,children:n(m,{"aria-hidden":"true"})}),n("span",{className:r.brandingWordmarkLabel,children:"c15t"})]}),f=({branding:a,...r})=>n("inth"===h(a)?l:m,{...r}),u=({hideBranding:m,variant:l="footer",slotContext:c,className:f,style:u,"data-testid":j})=>{let k=i()??"c15t",{components:B}=s(),{noStyle:N}=e(),{common:C}=t(),T=h(k),v=o()?`?ref=${window.location.hostname}`:"",x=g(c?B?.tag?.[c]:void 0,{baseClassName:d(r.branding,"footer"!==l&&r.brandingTag,"dialog-tag"===l&&r.brandingTagDialog,"banner-tag"===l&&r.brandingTagBanner),className:f,"data-testid":j,noStyle:N,style:u}),y=g(c?B?.tag?.content:void 0,{baseClassName:r.brandingContent,noStyle:N});return"none"===T||m?null:n("a",{...x,href:p(k,v),"data-branding":T,"data-variant":l,children:a("span",{...y,"data-slot":"tag-content",children:[n("span",{className:r.brandingCopy,children:n("span",{className:r.brandingText,children:C.securedBy})}),n(b,{branding:k,className:"inth"===T?r.brandingInth:r.brandingC15T})]})})};export{f as BrandingCompactLogo,b as BrandingFullLogo,u as BrandingLink,p as getBrandingHref,h as resolveBranding};
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{buttonVariants as o}from"@c15t/ui/styles/primitives/button";import{forwardRef as r,useId as e}from"react";import{recursiveCloneChildren as i}from"../../libs/recursive-clone-children.js";import{Slot as n}from"../../libs/slot.js";let s="ButtonIcon",a=r(({children:r,variant:a,mode:l,size:m,asChild:c,className:u,noStyle:p,type:f="button",...b},d)=>{let B=e(),j=c?n:"button",v=[p?"":o({variant:a,mode:l,size:m}).root(),u].filter(Boolean).join(" "),y=i(r,{...a&&{variant:a},...l&&{mode:l},...m&&{size:m}},[s],B,c);return t(j,{ref:d,className:v,type:f,...b,children:y})});function l({variant:r,mode:e,size:i,as:n,className:s,...a}){let{icon:m}=o({variant:r,mode:e,size:i});return t(n||"div",{className:m({class:s}),...a})}a.displayName="ButtonRoot",l.displayName=s;export{l as Icon,a as Root,o as buttonVariants};
1
+ import{jsx as o}from"react/jsx-runtime";import t from"@c15t/ui/styles/components/button";import{forwardRef as e,useId as i}from"react";import{recursiveCloneChildren as r}from"../../libs/recursive-clone-children.js";import{Slot as n}from"../../libs/slot.js";let a=(o={})=>({icon:o=>[t.buttonIcon,o?.class].filter(Boolean).join(" "),root:o=>[t.button,o?.class].filter(Boolean).join(" ")}),s="ButtonIcon",l=e(({children:t,variant:e,mode:l,size:m,asChild:c,className:u,noStyle:d,type:p="button",...f},b)=>{let v=i(),B=c?n:"button",j=d?"":a({mode:l,size:m,variant:e}).root(),y=[j,u].filter(Boolean).join(" "),I=r(t,{...e&&{variant:e},...l&&{mode:l},...m&&{size:m}},[s],v,c);return o(B,{ref:b,className:y,"data-mode":j?l??"filled":void 0,"data-size":j?m??"medium":void 0,"data-variant":j?e??"primary":void 0,type:p,...f,children:I})});l.displayName="ButtonRoot";let m=({variant:t,mode:e,size:i,as:r,className:n,...s})=>{let{icon:l}=a({mode:e,size:i,variant:t});return o(r||"div",{className:l({class:n}),...s})};m.displayName=s;export{m as Icon,l as Root,a as buttonVariants};
@@ -1 +1,2 @@
1
- import{jsx as e}from"react/jsx-runtime";import{getCollapsibleState as t,toggleCollapsibleValue as l}from"@c15t/ui/primitives/collapsible";import{getDataDisabled as a}from"@c15t/ui/primitives/data-state";import{collapsibleVariants as o}from"@c15t/ui/styles/primitives/collapsible";import{createContext as i,forwardRef as r,useContext as s,useId as n}from"react";import{useControllableState as d}from"../../libs/use-controllable-state.js";import{useTheme as c}from"../../../../hooks/use-theme.js";let p=i(null);function m(){let e=s(p);if(!e)throw Error("Collapsible components must be used within CollapsibleRoot");return e}let b=r(({children:l,className:i,defaultOpen:r=!1,disabled:s,noStyle:m,onOpenChange:b,open:u,...g},f)=>{let v=n().replace(/:/g,""),{noStyle:C}=c(),h=o(),[y,N]=d({defaultValue:r,onChange:b,value:u}),S=C||m;return e(p.Provider,{value:{contentId:`c15t-collapsible-content-${v}`,disabled:s,noStyle:S,open:y,setOpen:N,triggerId:`c15t-collapsible-trigger-${v}`},children:e("div",{ref:f,className:S?i:h.root({class:i}),"data-disabled":a(s),"data-slot":"collapsible-root","data-state":t(y),...g,children:l})})});b.displayName="CollapsibleRoot";let u=r(({children:i,className:r,noStyle:s,onClick:n,...d},p)=>{let{noStyle:b}=c(),u=o(),{contentId:g,disabled:f,noStyle:v,open:C,setOpen:h,triggerId:y}=m();return e("button",{ref:p,"aria-controls":g,"aria-disabled":f||void 0,"aria-expanded":C,className:v||b||s?r:u.trigger({class:r}),"data-disabled":a(f),"data-slot":"collapsible-trigger","data-state":t(C),disabled:f,id:y,onClick:e=>{f||h(l(C)),n?.(e)},type:"button",...d,children:i})});u.displayName="CollapsibleTrigger";let g=r(({children:l,className:a,innerClassName:i,noStyle:r,...s},n)=>{let{noStyle:d}=c(),p=o(),{contentId:b,noStyle:u,open:g,triggerId:f}=m();return e("div",{ref:n,"aria-hidden":!g,"aria-labelledby":f,className:p.content({class:a}),"data-slot":"collapsible-content","data-state":t(g),id:b,inert:!g,...s,children:e("div",{className:p.contentViewport({class:void 0}),"data-slot":"collapsible-content-viewport",children:e("div",{className:p.contentInner({class:i}),children:l})})})});g.displayName="CollapsibleContent";export{g as Content,b as Root,u as Trigger};
1
+ "use client";
2
+ import{jsx as e}from"react/jsx-runtime";import{getCollapsibleState as t,toggleCollapsibleValue as l}from"@c15t/ui/primitives/collapsible";import{getDataDisabled as o}from"@c15t/ui/primitives/data-state";import a from"@c15t/ui/styles/components/collapsible";import{createContext as i,forwardRef as r,useContext as n,useId as s,useMemo as c}from"react";import{useControllableState as d}from"../../libs/use-controllable-state.js";import{useTheme as p}from"../../../../hooks/use-theme.js";let m=()=>({content:e=>[a.content,e?.class].filter(Boolean).join(" "),contentInner:e=>[a.contentInner,e?.class].filter(Boolean).join(" "),contentViewport:e=>[a.contentViewport,e?.class].filter(Boolean).join(" "),root:e=>[a.root,e?.class].filter(Boolean).join(" "),trigger:e=>[a.trigger,e?.class].filter(Boolean).join(" ")}),b=i(null),u=function(){let e=n(b);if(!e)throw Error("Collapsible components must be used within CollapsibleRoot");return e},g=r(({children:l,className:a,defaultOpen:i=!1,disabled:r,noStyle:n,onOpenChange:u,open:g,...f},C)=>{let h=s().replace(/:/gu,""),{noStyle:v}=p(),y=m(),[j,N]=d({defaultValue:i,onChange:u,value:g}),w=v||n,S=c(()=>({contentId:`c15t-collapsible-content-${h}`,disabled:r,noStyle:w,open:j,setOpen:N,triggerId:`c15t-collapsible-trigger-${h}`}),[r,w,j,h,N]);return e(b.Provider,{value:S,children:e("div",{ref:C,className:w?a:y.root({class:a}),"data-disabled":o(r),"data-slot":"collapsible-root","data-state":t(j),...f,children:l})})});g.displayName="CollapsibleRoot";let f=r(({children:a,className:i,noStyle:r,onClick:n,...s},c)=>{let{noStyle:d}=p(),b=m(),{contentId:g,disabled:f,noStyle:C,open:h,setOpen:v,triggerId:y}=u();return e("button",{ref:c,"aria-controls":g,"aria-disabled":f||void 0,"aria-expanded":h,className:C||d||r?i:b.trigger({class:i}),"data-disabled":o(f),"data-slot":"collapsible-trigger","data-state":t(h),disabled:f,id:y,onClick:e=>{f||v(l(h)),n?.(e)},type:"button",...s,children:a})});f.displayName="CollapsibleTrigger";let C=r(({children:l,className:o,innerClassName:a,noStyle:i,...r},n)=>{let{noStyle:s}=p(),c=m(),{contentId:d,noStyle:b,open:g,triggerId:f}=u();return e("div",{ref:n,"aria-hidden":!g,"aria-labelledby":f,className:c.content({class:o}),"data-slot":"collapsible-content","data-state":t(g),id:d,inert:!g,...r,children:e("div",{className:c.contentViewport({class:void 0}),"data-slot":"collapsible-content-viewport",children:e("div",{className:c.contentInner({class:a}),children:l})})})});C.displayName="CollapsibleContent";export{C as Content,g as Root,f as Trigger,m as collapsibleVariants};