@c15t/react 3.0.0-alpha.1 → 3.0.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (406) hide show
  1. package/AGENTS.md +96 -70
  2. package/README.md +21 -17
  3. package/SKILL.md +34 -0
  4. package/dist/aggregate-components.js +1 -1
  5. package/dist/chunk-warming.js +1 -1
  6. package/dist/component-hooks/use-headless-consent-ui.js +1 -1
  7. package/dist/component-hooks/use-headless-iab-consent-ui.js +1 -1
  8. package/dist/component-hooks/use-panel-trigger.js +1 -1
  9. package/dist/components/consent-gate/atoms.js +1 -0
  10. package/dist/components/consent-gate/consent-gate.js +2 -0
  11. package/dist/components/consent-gate/frame.js +2 -0
  12. package/dist/components/consent-gate/index.js +2 -0
  13. package/dist/components/consent-preferences-link/consent-preferences-link.js +1 -1
  14. package/dist/components/iab-panel/atoms/card.js +1 -1
  15. package/dist/components/iab-panel/atoms/feature-item.js +2 -0
  16. package/dist/components/iab-panel/atoms/header.js +1 -1
  17. package/dist/components/iab-panel/atoms/purpose-item.js +1 -1
  18. package/dist/components/iab-panel/atoms/root.js +1 -1
  19. package/dist/components/iab-panel/atoms/stack-item.js +1 -1
  20. package/dist/components/iab-panel/atoms/vendor-list.js +1 -1
  21. package/dist/components/iab-panel/hooks/use-gvl-data.js +1 -1
  22. package/dist/components/iab-panel/iab-panel.js +1 -1
  23. package/dist/components/iab-panel/index.js +1 -1
  24. package/dist/components/iab-prompt/atoms/overlay.js +1 -1
  25. package/dist/components/iab-prompt/atoms/root.js +1 -1
  26. package/dist/components/panel/atoms/card.js +1 -1
  27. package/dist/components/panel/atoms/overlay.js +1 -1
  28. package/dist/components/panel/atoms/root.js +1 -1
  29. package/dist/components/panel/panel.js +1 -1
  30. package/dist/components/panel-trigger/atoms/button.js +1 -1
  31. package/dist/components/panel-trigger/atoms/icon.js +1 -1
  32. package/dist/components/panel-trigger/atoms/root.js +1 -1
  33. package/dist/components/panel-trigger/atoms/toolbar.js +1 -1
  34. package/dist/components/panel-trigger/atoms/trigger-icons.js +1 -0
  35. package/dist/components/panel-trigger/panel-trigger-toolbar.js +1 -1
  36. package/dist/components/panel-trigger/panel-trigger.js +1 -1
  37. package/dist/components/preferences/atoms/accordion.js +1 -1
  38. package/dist/components/preferences/atoms/root.js +1 -1
  39. package/dist/components/preferences/atoms/vendor-list.js +1 -0
  40. package/dist/components/preferences/index.js +1 -1
  41. package/dist/components/prompt/atoms/early-tap-script.js +2 -0
  42. package/dist/components/prompt/atoms/overlay.js +1 -1
  43. package/dist/components/prompt/atoms/root.js +1 -1
  44. package/dist/components/prompt/components.js +1 -1
  45. package/dist/components/prompt/policy-actions.js +1 -1
  46. package/dist/components/prompt/prompt.js +1 -1
  47. package/dist/components/shared/dialog-sheets.js +1 -0
  48. package/dist/components/shared/first-paint-sheets.js +1 -0
  49. package/dist/components/shared/iab-dialog-sheets.js +1 -0
  50. package/dist/components/shared/iab-first-paint-sheets.js +1 -0
  51. package/dist/components/shared/libs/compose-refs.js +1 -0
  52. package/dist/components/shared/libs/slot.js +1 -1
  53. package/dist/components/shared/primitives/button.js +1 -1
  54. package/dist/components/shared/primitives/legal-links/index.js +1 -1
  55. package/dist/components/shared/streamed-surface.js +2 -0
  56. package/dist/components/shared/surface-styles.js +2 -0
  57. package/dist/components/shared/ui/dialog/dialog.js +1 -1
  58. package/dist/components/shared/ui/icon.js +1 -1
  59. package/dist/components/shared/ui/logo.js +1 -1
  60. package/dist/components/shared/ui/preference-item/preference-item.js +1 -1
  61. package/dist/consent-gate.js +2 -0
  62. package/dist/consent-theme.js +1 -0
  63. package/dist/context/consent-tracking-context.js +1 -1
  64. package/dist/context/index.js +1 -1
  65. package/dist/context.js +1 -1
  66. package/dist/devtools-launcher.js +2 -0
  67. package/dist/devtools.js +1 -1
  68. package/dist/draft-context.js +2 -0
  69. package/dist/draft.js +1 -1
  70. package/dist/external-iab-context.js +1 -1
  71. package/dist/gpp.js +2 -0
  72. package/dist/headless.js +1 -1
  73. package/dist/hooks/use-color-scheme.js +1 -1
  74. package/dist/hooks/use-committed-ref.js +2 -0
  75. package/dist/hooks/use-focus-trap.js +1 -1
  76. package/dist/hooks/use-headless-iab-consent-ui.js +1 -1
  77. package/dist/hooks/use-iab-policy-guard.js +1 -0
  78. package/dist/hooks/use-late-entry.js +2 -0
  79. package/dist/hooks.js +1 -1
  80. package/dist/iab/styles.tw3.css +5 -45
  81. package/dist/iab-context.js +1 -1
  82. package/dist/index-parts/consent-banner.js +1 -0
  83. package/dist/index-parts/consent-dialog-link.js +1 -0
  84. package/dist/index-parts/consent-dialog-trigger.js +1 -0
  85. package/dist/index-parts/consent-dialog.js +1 -0
  86. package/dist/index-parts/consent-gate.js +1 -0
  87. package/dist/index-parts/core.js +1 -0
  88. package/dist/index-parts/draft.js +1 -0
  89. package/dist/index-parts/frame.js +1 -0
  90. package/dist/index-parts/hooks.js +1 -0
  91. package/dist/index-parts/hosted.js +1 -0
  92. package/dist/index-parts/module-hooks.js +1 -0
  93. package/dist/index-parts/offline.js +1 -0
  94. package/dist/index-parts/presets.js +1 -0
  95. package/dist/index-parts/provider.js +1 -0
  96. package/dist/index-parts/theme.js +1 -0
  97. package/dist/index-parts/translations.js +1 -0
  98. package/dist/index.js +1 -1
  99. package/dist/kernel-selector.js +1 -0
  100. package/dist/modes.js +1 -0
  101. package/dist/module-hooks/iframe-blocker.js +1 -1
  102. package/dist/module-hooks/network-blocker.js +1 -1
  103. package/dist/module-hooks/network-hold.js +2 -0
  104. package/dist/module-hooks/persistence.js +1 -1
  105. package/dist/panel-link.js +1 -1
  106. package/dist/panel-trigger.js +1 -1
  107. package/dist/panel.js +1 -1
  108. package/dist/postcss-tailwind3.js +1 -0
  109. package/dist/preferences.js +1 -2
  110. package/dist/provider.js +1 -1
  111. package/dist/server/fetch-ssr-data.js +1 -1
  112. package/dist/server/headers.js +1 -1
  113. package/dist/server/normalize-url.js +1 -1
  114. package/dist/styles.tw3.css +33 -51
  115. package/dist/transports/hosted.js +1 -0
  116. package/dist/transports/manifest.js +1 -0
  117. package/dist/transports/offline.js +1 -1
  118. package/dist/utils/deferred-module.js +2 -0
  119. package/dist/utils/merge-slot-props.js +1 -1
  120. package/dist/utils/theme-utils.js +1 -1
  121. package/dist/version.js +1 -1
  122. package/dist-types/aggregate-components.d.ts +2 -2
  123. package/dist-types/chunk-warming.d.ts +45 -8
  124. package/dist-types/component-hooks/use-headless-consent-ui.d.ts +5 -5
  125. package/dist-types/component-hooks/use-headless-iab-consent-ui.d.ts +2 -2
  126. package/dist-types/components/consent-gate/atoms.d.ts +11 -0
  127. package/dist-types/components/consent-gate/consent-gate.d.ts +2 -0
  128. package/dist-types/components/consent-gate/frame.d.ts +19 -0
  129. package/dist-types/components/consent-gate/index.d.ts +25 -0
  130. package/dist-types/components/{frame → consent-gate}/types.d.ts +7 -7
  131. package/dist-types/components/consent-preferences-link/consent-preferences-link.d.ts +1 -1
  132. package/dist-types/components/consent-preferences-link/index.d.ts +1 -1
  133. package/dist-types/components/iab-panel/atoms/feature-item.d.ts +28 -0
  134. package/dist-types/components/iab-panel/atoms/purpose-item.d.ts +5 -2
  135. package/dist-types/components/iab-panel/atoms/stack-item.d.ts +7 -2
  136. package/dist-types/components/iab-panel/atoms/vendor-list.d.ts +1 -1
  137. package/dist-types/components/iab-panel/iab-panel.d.ts +3 -3
  138. package/dist-types/components/iab-panel/index.d.ts +29 -26
  139. package/dist-types/components/iab-panel/use-iab-translations.d.ts +4 -0
  140. package/dist-types/components/iab-prompt/iab-prompt.d.ts +3 -3
  141. package/dist-types/components/iab-prompt/index.d.ts +19 -19
  142. package/dist-types/components/panel/atoms/card.d.ts +5 -4
  143. package/dist-types/components/panel/atoms/overlay.d.ts +1 -1
  144. package/dist-types/components/panel/index.d.ts +8 -8
  145. package/dist-types/components/panel/panel.d.ts +3 -3
  146. package/dist-types/components/panel-link/index.d.ts +1 -1
  147. package/dist-types/components/panel-trigger/atoms/button.d.ts +1 -1
  148. package/dist-types/components/panel-trigger/atoms/icon.d.ts +1 -1
  149. package/dist-types/components/panel-trigger/atoms/root.d.ts +2 -2
  150. package/dist-types/components/panel-trigger/atoms/toolbar.d.ts +2 -2
  151. package/dist-types/components/panel-trigger/atoms/trigger-icons.d.ts +25 -0
  152. package/dist-types/components/panel-trigger/index.d.ts +4 -4
  153. package/dist-types/components/panel-trigger/panel-trigger-toolbar.d.ts +1 -1
  154. package/dist-types/components/panel-trigger/panel-trigger.d.ts +9 -17
  155. package/dist-types/components/panel-trigger/types.d.ts +1 -1
  156. package/dist-types/components/preferences/atoms/accordion.d.ts +6 -4
  157. package/dist-types/components/preferences/atoms/button.d.ts +1 -1
  158. package/dist-types/components/preferences/atoms/footer.d.ts +1 -1
  159. package/dist-types/components/preferences/atoms/root.d.ts +1 -1
  160. package/dist-types/components/preferences/atoms/vendor-list.d.ts +23 -0
  161. package/dist-types/components/preferences/index.d.ts +14 -12
  162. package/dist-types/components/preferences/policy-actions.d.ts +2 -2
  163. package/dist-types/components/preferences/preferences.d.ts +1 -1
  164. package/dist-types/components/preferences/types.d.ts +1 -1
  165. package/dist-types/components/prompt/atoms/early-tap-script.d.ts +17 -0
  166. package/dist-types/components/prompt/atoms/root.d.ts +4 -0
  167. package/dist-types/components/prompt/components.d.ts +9 -3
  168. package/dist-types/components/prompt/index.d.ts +12 -12
  169. package/dist-types/components/prompt/policy-actions.d.ts +2 -2
  170. package/dist-types/components/prompt/prompt.d.ts +5 -1
  171. package/dist-types/components/shared/dialog-sheets.d.ts +9 -0
  172. package/dist-types/components/shared/first-paint-sheets.d.ts +8 -0
  173. package/dist-types/components/shared/iab-dialog-sheets.d.ts +3 -0
  174. package/dist-types/components/shared/iab-first-paint-sheets.d.ts +3 -0
  175. package/dist-types/components/shared/libs/compose-refs.d.ts +20 -0
  176. package/dist-types/components/shared/policy-actions.d.ts +2 -2
  177. package/dist-types/components/shared/primitives/box.d.ts +1 -1
  178. package/dist-types/components/shared/primitives/button.d.ts +2 -2
  179. package/dist-types/components/shared/primitives/button.types.d.ts +1 -1
  180. package/dist-types/components/shared/streamed-surface.d.ts +23 -0
  181. package/dist-types/components/shared/surface-styles.d.ts +36 -0
  182. package/dist-types/components/shared/ui/accordion/accordion.d.ts +2 -2
  183. package/dist-types/components/shared/ui/accordion/index.d.ts +2 -2
  184. package/dist-types/components/shared/ui/animated-collapse/index.d.ts +2 -2
  185. package/dist-types/components/shared/ui/branding.d.ts +1 -1
  186. package/dist-types/components/shared/ui/button/button.d.ts +1 -1
  187. package/dist-types/components/shared/ui/button/index.d.ts +2 -2
  188. package/dist-types/components/shared/ui/collapsible/index.d.ts +1 -1
  189. package/dist-types/components/shared/ui/dialog/index.d.ts +1 -1
  190. package/dist-types/components/shared/ui/icon.d.ts +2 -1
  191. package/dist-types/components/shared/ui/logo.d.ts +0 -10
  192. package/dist-types/components/shared/ui/preference-item/index.d.ts +1 -1
  193. package/dist-types/components/shared/ui/preference-item/preference-item.d.ts +13 -0
  194. package/dist-types/components/shared/ui/switch/index.d.ts +2 -2
  195. package/dist-types/components/shared/ui/switch/switch.d.ts +1 -1
  196. package/dist-types/components/shared/ui/tabs/index.d.ts +1 -1
  197. package/dist-types/consent-gate.d.ts +1 -0
  198. package/dist-types/consent-theme.d.ts +38 -0
  199. package/dist-types/context/consent-tracking-context.d.ts +10 -0
  200. package/dist-types/context/index.d.ts +3 -3
  201. package/dist-types/context/theme-context.d.ts +3 -3
  202. package/dist-types/context.d.ts +25 -1
  203. package/dist-types/devtools-launcher.d.ts +29 -0
  204. package/dist-types/devtools.d.ts +13 -2
  205. package/dist-types/draft-context.d.ts +31 -0
  206. package/dist-types/draft.d.ts +81 -9
  207. package/dist-types/gpp.d.ts +27 -0
  208. package/dist-types/headless.d.ts +6 -7
  209. package/dist-types/hooks/use-committed-ref.d.ts +24 -0
  210. package/dist-types/hooks/use-focus-trap.d.ts +3 -1
  211. package/dist-types/hooks/use-headless-iab-consent-ui.d.ts +1 -1
  212. package/dist-types/hooks/use-iab-manager.d.ts +5 -5
  213. package/dist-types/hooks/use-iab-policy-guard.d.ts +35 -0
  214. package/dist-types/hooks/use-late-entry.d.ts +14 -0
  215. package/dist-types/hooks/use-theme.d.ts +1 -1
  216. package/dist-types/hooks.d.ts +106 -11
  217. package/dist-types/iab.d.ts +7 -7
  218. package/dist-types/index-parts/consent-banner.d.ts +7 -0
  219. package/dist-types/index-parts/consent-dialog-link.d.ts +7 -0
  220. package/dist-types/index-parts/consent-dialog-trigger.d.ts +7 -0
  221. package/dist-types/index-parts/consent-dialog.d.ts +7 -0
  222. package/dist-types/index-parts/consent-gate.d.ts +7 -0
  223. package/dist-types/index-parts/core.d.ts +7 -0
  224. package/dist-types/index-parts/draft.d.ts +7 -0
  225. package/dist-types/index-parts/frame.d.ts +7 -0
  226. package/dist-types/index-parts/hooks.d.ts +7 -0
  227. package/dist-types/index-parts/hosted.d.ts +7 -0
  228. package/dist-types/index-parts/module-hooks.d.ts +7 -0
  229. package/dist-types/index-parts/offline.d.ts +7 -0
  230. package/dist-types/index-parts/presets.d.ts +7 -0
  231. package/dist-types/index-parts/provider.d.ts +7 -0
  232. package/dist-types/index-parts/theme.d.ts +8 -0
  233. package/dist-types/index-parts/translations.d.ts +7 -0
  234. package/dist-types/index.d.ts +32 -28
  235. package/dist-types/kernel-selector.d.ts +68 -0
  236. package/dist-types/modes.d.ts +26 -0
  237. package/dist-types/module-hooks/iframe-blocker.d.ts +33 -1
  238. package/dist-types/module-hooks/network-blocker.d.ts +23 -0
  239. package/dist-types/module-hooks/network-hold.d.ts +47 -0
  240. package/dist-types/module-hooks.d.ts +4 -4
  241. package/dist-types/panel-link.d.ts +1 -1
  242. package/dist-types/panel-trigger.d.ts +1 -1
  243. package/dist-types/panel.d.ts +13 -1
  244. package/dist-types/postcss-tailwind3.d.ts +21 -0
  245. package/dist-types/preferences.d.ts +12 -1
  246. package/dist-types/primitives/accordion.d.ts +1 -1
  247. package/dist-types/primitives/button.d.ts +1 -1
  248. package/dist-types/primitives/collapsible.d.ts +1 -1
  249. package/dist-types/primitives/dialog.d.ts +1 -1
  250. package/dist-types/primitives/preference-item.d.ts +1 -1
  251. package/dist-types/primitives/switch.d.ts +1 -1
  252. package/dist-types/primitives/tabs.d.ts +1 -1
  253. package/dist-types/primitives.d.ts +7 -7
  254. package/dist-types/prompt.d.ts +1 -1
  255. package/dist-types/provider.d.ts +169 -28
  256. package/dist-types/server/fetch-ssr-data.d.ts +1 -1
  257. package/dist-types/server/headers.d.ts +14 -4
  258. package/dist-types/server/index.d.ts +5 -5
  259. package/dist-types/server/normalize-url.d.ts +14 -7
  260. package/dist-types/server/types.d.ts +12 -1
  261. package/dist-types/theme-provider.d.ts +2 -2
  262. package/dist-types/transports/hosted.d.ts +36 -0
  263. package/dist-types/transports/manifest.d.ts +48 -0
  264. package/dist-types/transports/offline.d.ts +7 -16
  265. package/dist-types/types/index.d.ts +3 -3
  266. package/dist-types/types/manager.d.ts +1 -1
  267. package/dist-types/types/theme/index.d.ts +1 -1
  268. package/dist-types/ui-config-context.d.ts +14 -2
  269. package/dist-types/utils/deferred-module.d.ts +13 -0
  270. package/dist-types/utils/index.d.ts +4 -4
  271. package/dist-types/utils/merge-slot-props.d.ts +17 -3
  272. package/dist-types/utils/merge-styles.d.ts +1 -1
  273. package/dist-types/utils/theme-utils.d.ts +18 -3
  274. package/dist-types/version.d.ts +1 -1
  275. package/docs/README.md +96 -70
  276. package/docs/assets/v3/bottom-bar.png +0 -0
  277. package/docs/assets/v3/brand-card.png +0 -0
  278. package/docs/assets/v3/brand-preferences.png +0 -0
  279. package/docs/assets/v3/choice-wall.png +0 -0
  280. package/docs/assets/v3/headless-bar-html.png +0 -0
  281. package/docs/assets/v3/headless-bar-mobile.png +0 -0
  282. package/docs/assets/v3/headless-bar.png +0 -0
  283. package/docs/assets/v3/slim-bar.png +0 -0
  284. package/docs/concepts/choose-your-setup.md +138 -0
  285. package/docs/concepts/consent-categories.md +84 -0
  286. package/docs/concepts/consent-state.md +421 -0
  287. package/docs/concepts/data-fetching.md +270 -0
  288. package/docs/concepts/how-consent-works.md +123 -0
  289. package/docs/concepts/modes.md +278 -0
  290. package/docs/{frameworks/react/concepts/policy-presets.md → concepts/policies.md} +8 -60
  291. package/docs/customization/class-names.md +202 -0
  292. package/docs/customization/dark-mode.md +157 -0
  293. package/docs/customization/motion.md +128 -0
  294. package/docs/customization/overview.md +68 -33
  295. package/docs/customization/recipes.md +838 -47
  296. package/docs/customization/slots.md +217 -35
  297. package/docs/customization/stylesheets.md +248 -0
  298. package/docs/customization/tailwind.md +863 -0
  299. package/docs/customization/tokens.md +167 -36
  300. package/docs/customization/translations.md +87 -3
  301. package/docs/frameworks/react/callbacks.md +118 -0
  302. package/docs/frameworks/react/clear-on-revocation.md +106 -0
  303. package/docs/frameworks/react/components/consent-banner.md +48 -27
  304. package/docs/frameworks/react/components/consent-dialog-link.md +13 -11
  305. package/docs/frameworks/react/components/consent-dialog-trigger.md +86 -76
  306. package/docs/frameworks/react/components/consent-dialog.md +111 -58
  307. package/docs/frameworks/react/components/{frame.md → consent-gate.md} +70 -49
  308. package/docs/frameworks/react/components/consent-provider.md +140 -0
  309. package/docs/frameworks/react/components/consent-widget.md +69 -24
  310. package/docs/frameworks/react/components/dev-tools.md +76 -85
  311. package/docs/frameworks/react/components.md +113 -0
  312. package/docs/frameworks/react/compose.md +354 -0
  313. package/docs/frameworks/react/content-security-policy.md +143 -0
  314. package/docs/frameworks/react/customize.md +258 -0
  315. package/docs/frameworks/react/embeds.md +89 -0
  316. package/docs/frameworks/react/gpp.md +163 -0
  317. package/docs/frameworks/react/headless.md +4 -4
  318. package/docs/frameworks/react/hooks.md +70 -0
  319. package/docs/frameworks/react/iab.md +259 -0
  320. package/docs/frameworks/react/network-blocker.md +140 -0
  321. package/docs/frameworks/react/quickstart.md +220 -102
  322. package/docs/frameworks/react/rendering.md +263 -0
  323. package/docs/frameworks/react/scripts.md +114 -0
  324. package/docs/frameworks/react/translations.md +155 -0
  325. package/docs/frameworks/react/troubleshooting.md +188 -61
  326. package/docs/frameworks/react/upgrade-v3.md +651 -0
  327. package/docs/frameworks/react/vendor-consent.md +188 -0
  328. package/docs/guides/banner-experiments.md +672 -0
  329. package/docs/guides/troubleshooting.md +192 -54
  330. package/docs/guides/verify-consent.md +96 -49
  331. package/docs/integrations/adobe-analytics.md +177 -183
  332. package/docs/integrations/ahrefs-analytics.md +162 -178
  333. package/docs/integrations/amplitude.md +172 -180
  334. package/docs/integrations/building-integrations.md +137 -33
  335. package/docs/integrations/clearbit.md +164 -178
  336. package/docs/integrations/cloudflare-web-analytics.md +166 -180
  337. package/docs/integrations/cloudflare-zaraz.md +333 -0
  338. package/docs/integrations/crisp.md +174 -182
  339. package/docs/integrations/databuddy.md +167 -197
  340. package/docs/integrations/fathom-analytics.md +168 -180
  341. package/docs/integrations/front-chat.md +308 -0
  342. package/docs/integrations/google-maps.md +142 -108
  343. package/docs/integrations/google-tag-manager.md +258 -185
  344. package/docs/integrations/google-tag.md +226 -182
  345. package/docs/integrations/heap.md +173 -179
  346. package/docs/integrations/hightouch.md +171 -181
  347. package/docs/integrations/hotjar.md +169 -179
  348. package/docs/integrations/intercom.md +193 -177
  349. package/docs/integrations/klaviyo.md +473 -0
  350. package/docs/integrations/linkedin-insights.md +184 -174
  351. package/docs/integrations/logrocket.md +170 -180
  352. package/docs/integrations/matomo-analytics.md +198 -202
  353. package/docs/integrations/meta-pixel.md +198 -174
  354. package/docs/integrations/microsoft-clarity.md +173 -179
  355. package/docs/integrations/microsoft-uet.md +158 -178
  356. package/docs/integrations/mixpanel-analytics.md +165 -184
  357. package/docs/integrations/one-dollar-stats.md +292 -0
  358. package/docs/integrations/openai-pixel.md +214 -325
  359. package/docs/integrations/overview.md +152 -83
  360. package/docs/integrations/pinterest-tag.md +315 -0
  361. package/docs/integrations/pirsch.md +179 -183
  362. package/docs/integrations/plausible-analytics.md +182 -182
  363. package/docs/integrations/posthog.md +323 -264
  364. package/docs/integrations/promptwatch.md +164 -178
  365. package/docs/integrations/reddit-pixel.md +195 -181
  366. package/docs/integrations/rudderstack.md +211 -210
  367. package/docs/integrations/rybbit-analytics.md +181 -184
  368. package/docs/integrations/segment.md +192 -178
  369. package/docs/integrations/sentry.md +402 -0
  370. package/docs/integrations/snapchat-pixel.md +196 -180
  371. package/docs/integrations/tiktok-pixel.md +181 -174
  372. package/docs/integrations/umami-analytics.md +173 -182
  373. package/docs/integrations/vercel-analytics.md +176 -181
  374. package/docs/integrations/x-pixel.md +186 -174
  375. package/docs/integrations/youtube.md +150 -111
  376. package/package.json +48 -17
  377. package/dist/component-hooks/use-manager.js +0 -2
  378. package/dist/components/frame/atoms.js +0 -1
  379. package/dist/components/frame/frame.js +0 -2
  380. package/dist/components/frame/index.js +0 -2
  381. package/dist/frame.js +0 -2
  382. package/dist/ui-save.js +0 -1
  383. package/dist-types/component-hooks/use-manager.d.ts +0 -40
  384. package/dist-types/components/frame/atoms.d.ts +0 -11
  385. package/dist-types/components/frame/frame.d.ts +0 -2
  386. package/dist-types/components/frame/index.d.ts +0 -24
  387. package/dist-types/frame.d.ts +0 -1
  388. package/dist-types/ui-save.d.ts +0 -5
  389. package/docs/assets/v3/brand-bar.png +0 -0
  390. package/docs/assets/v3/mobile-card.png +0 -0
  391. package/docs/assets/v3/preferences.png +0 -0
  392. package/docs/frameworks/react/components/consent-manager-provider.md +0 -71
  393. package/docs/frameworks/react/concepts/consent-categories.md +0 -33
  394. package/docs/frameworks/react/hooks/use-consent-manager/overview.md +0 -58
  395. package/docs/frameworks/react/iab/overview.md +0 -53
  396. package/docs/frameworks/react/script-loader.md +0 -63
  397. package/docs/frameworks/react/styling/overview.md +0 -217
  398. package/docs/guides/consent-state.md +0 -60
  399. package/docs/guides/data-fetching.md +0 -163
  400. package/docs/guides/deployment-modes.md +0 -63
  401. package/docs/integrations/clear-on-revocation.md +0 -167
  402. package/docs/upgrade-v3.md +0 -334
  403. package/readme.json +0 -48
  404. package/src/iab/styles.css +0 -11
  405. package/src/styles.css +0 -10
  406. /package/dist/components/{frame → consent-gate}/types.js +0 -0
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{Fragment as e,jsx as t,jsxs as r}from"react/jsx-runtime";import s from"@c15t/ui/styles/components/iab-consent-dialog";import{useState as o}from"react";import{useTheme as i}from"../../../hooks/use-theme.js";import{useUIConfig as a}from"../../../ui-config-context.js";import{mergeSlotProps as n}from"../../../utils/merge-slot-props.js";import{useIABTranslations as l}from"../use-iab-translations.js";import{PurposeItem as c}from"./purpose-item.js";import*as d from"../../shared/ui/preference-item/index.js";import*as m from"../../shared/ui/switch/index.js";let p={},h={},g=({stack:g,consents:u,onToggle:f,vendorConsents:k,onVendorToggle:v,onVendorClick:y,vendorLegitimateInterests:C=p,onVendorLegitimateInterestToggle:N,purposeLegitimateInterests:b=h,onPurposeLegitimateInterestToggle:S})=>{let{components:I}=a(),{noStyle:j}=i(),L=l(),[T,x]=o(!1),M=g.purposes.every(e=>u[e.id]??!1),w=g.purposes.some(e=>u[e.id]??!1)&&!M,P=n(I?.["iab-stack-item"]?.header,{baseClassName:s.stackHeader,noStyle:j}),V=new Set(g.purposes.flatMap(e=>e.vendors.map(e=>e.id))).size;return r(d.Root,{className:j?void 0:s.stackItem,"data-testid":`stack-item-${g.id}`,noStyle:!0,onOpenChange:x,open:T,slotKey:"iab-stack-item.root",children:[r("div",{...P,children:[r(d.Trigger,{className:j?void 0:s.stackTrigger,noStyle:!0,slotKey:"iab-stack-item.trigger",children:[t(d.Leading,{noStyle:!0,children:t("svg",{className:s.purposeArrow,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:T?t("path",{d:"M19 9l-7 7-7-7"}):t("path",{d:"M9 5l7 7-7 7"})})}),r(d.Header,{className:s.stackInfo,noStyle:!0,children:[t(d.Title,{className:s.stackName,noStyle:!0,children:g.name}),r(d.Meta,{className:s.stackMeta,noStyle:!0,children:[V," ",1===V?L.preferenceCenter.vendorList.partnerSingular:L.preferenceCenter.vendorList.partnerPlural]})]})]}),r(d.Control,{className:s.stackControls,noStyle:!0,children:[w&&r(e,{children:[t("span",{className:s.srOnly,children:"Partially enabled"}),t("div",{className:s.partialIndicator})]}),t(m.Root,{"aria-label":g.name,checked:M,onCheckedChange:e=>{for(let t of g.purposes)for(let r of(f(t.id,e),t.vendors))r.usesLegitimateInterest||v(r.id,e)}})]})]}),r(d.Content,{noStyle:j,children:[t("div",{className:s.stackDescription,children:t("p",{children:g.description})}),t("div",{...n(I?.["iab-stack-item"]?.content,{baseClassName:s.stackContent,noStyle:j}),children:g.purposes.map(e=>t(c,{purpose:e,isEnabled:u[e.id]??!1,onToggle:t=>f(e.id,t),vendorConsents:k,onVendorToggle:v,onVendorClick:y,vendorLegitimateInterests:C,onVendorLegitimateInterestToggle:N,purposeLegitimateInterests:b,onPurposeLegitimateInterestToggle:S},e.id))})]})]})};export{g as StackItem};
2
+ import{Fragment as e,jsx as t,jsxs as r}from"react/jsx-runtime";import s from"@c15t/ui/styles/components/iab-consent-dialog";import{useState as o}from"react";import{useTheme as i}from"../../../hooks/use-theme.js";import{useUIConfig as a}from"../../../ui-config-context.js";import{mergeSlotProps as n}from"../../../utils/merge-slot-props.js";import{useIABTranslations as l}from"../use-iab-translations.js";import{PurposeItem as c}from"./purpose-item.js";import*as d from"../../shared/ui/preference-item/index.js";import*as m from"../../shared/ui/switch/index.js";let p={},h={},g=({stack:g,consents:f,onToggle:k,vendorConsents:u,onVendorToggle:v,onVendorClick:C,vendorLegitimateInterests:y=p,onVendorLegitimateInterestToggle:N,purposeLegitimateInterests:b=h,onPurposeLegitimateInterestToggle:S})=>{let{components:I}=a(),{noStyle:j}=i(),L=l(),[T,x]=o(!1),M=g.purposes.filter(e=>!1!==e.hasConsentBasis||void 0===S),w=M.every(e=>f[e.id]??!1),P=M.some(e=>f[e.id]??!1)&&!w,V=n(I?.["iab-stack-item"]?.header,{baseClassName:s.stackHeader,noStyle:j}),B=new Set(g.purposes.flatMap(e=>e.vendors.map(e=>e.id))).size;return r(d.Root,{className:j?void 0:s.stackItem,"data-testid":`stack-item-${g.id}`,noStyle:!0,onOpenChange:x,open:T,slotKey:"iab-stack-item.root",children:[r("div",{...V,children:[r(d.Trigger,{className:j?void 0:s.stackTrigger,noStyle:!0,slotKey:"iab-stack-item.trigger",children:[t(d.Leading,{noStyle:!0,children:t("svg",{className:s.purposeArrow,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:T?t("path",{d:"M19 9l-7 7-7-7"}):t("path",{d:"M9 5l7 7-7 7"})})}),r(d.Header,{className:s.stackInfo,noStyle:!0,children:[t(d.Title,{className:s.stackName,noStyle:!0,children:g.name}),r(d.Meta,{className:s.stackMeta,noStyle:!0,children:[B," ",1===B?L.preferenceCenter.vendorList.partnerSingular:L.preferenceCenter.vendorList.partnerPlural]})]})]}),r(d.Control,{className:s.stackControls,noStyle:!0,children:[P&&r(e,{children:[t("span",{className:s.srOnly,children:"Partially enabled"}),t("div",{className:s.partialIndicator})]}),M.length>0&&t(m.Root,{"aria-label":g.name,checked:w,onCheckedChange:e=>{for(let t of M)for(let r of(k(t.id,e),t.vendors))r.usesLegitimateInterest||v(r.id,e)}})]})]}),r(d.Content,{noStyle:j,children:[t("div",{className:s.stackDescription,children:t("p",{children:g.description})}),t("div",{...n(I?.["iab-stack-item"]?.content,{baseClassName:s.stackContent,noStyle:j}),children:g.purposes.map(e=>t(c,{purpose:e,isEnabled:f[e.id]??!1,onToggle:t=>k(e.id,t),vendorConsents:u,onVendorToggle:v,onVendorClick:C,vendorLegitimateInterests:y,onVendorLegitimateInterestToggle:N,purposeLegitimateInterests:b,onPurposeLegitimateInterestToggle:S},e.id))})]})]})};export{g as StackItem};
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{jsx as e,jsxs as r}from"react/jsx-runtime";import n from"@c15t/ui/styles/components/iab-consent-dialog";import{useEffect as t,useState as s}from"react";import{useTheme as i}from"../../../hooks/use-theme.js";import{useUIConfig as o}from"../../../ui-config-context.js";import{mergeSlotProps as a}from"../../../utils/merge-slot-props.js";import{useIABTranslations as l}from"../use-iab-translations.js";import*as d from"../../shared/ui/preference-item/index.js";import*as c from"../../shared/ui/switch/index.js";let m=[],p={},h=({vendorData:h,purposes:u,vendorConsents:v,onVendorToggle:g,selectedVendorId:f,onClearSelection:N,customVendors:C=m,vendorLegitimateInterests:k=p,onVendorLegitimateInterestToggle:L})=>{let{components:y}=o(),{noStyle:S}=i(),[x,I]=s(""),[P,b]=s(new Set),M=l(),w=[...h?Object.entries(h.vendors).map(([e,r])=>({cookieMaxAgeSeconds:r.cookieMaxAgeSeconds,cookieRefresh:r.cookieRefresh,dataDeclaration:r.dataDeclaration||[],dataRetention:r.dataRetention,deviceStorageDisclosureUrl:r.deviceStorageDisclosureUrl??null,features:r.features||[],id:Number(e),isCustom:!1,legIntPurposes:r.legIntPurposes||[],legitimateInterestUrl:r.urls?.find(e=>e.legIntClaim)?.legIntClaim??null,name:r.name,policyUrl:r.policyUrl??"",purposes:r.purposes||[],specialFeatures:r.specialFeatures||[],specialPurposes:r.specialPurposes||[],usesCookies:r.usesCookies,usesNonCookieAccess:r.usesNonCookieAccess})):[],...C.map(e=>({cookieMaxAgeSeconds:e.cookieMaxAgeSeconds??null,cookieRefresh:void 0,dataDeclaration:e.dataCategories||[],dataRetention:void 0,deviceStorageDisclosureUrl:null,features:e.features||[],id:e.id,isCustom:!0,legIntPurposes:e.legIntPurposes||[],legitimateInterestUrl:null,name:e.name,policyUrl:e.privacyPolicyUrl,purposes:e.purposes||[],specialFeatures:e.specialFeatures||[],specialPurposes:[],usesCookies:e.usesCookies??!1,usesNonCookieAccess:e.usesNonCookieAccess??!1}))].sort((e,r)=>e.name.localeCompare(r.name));t(()=>{if(null!==f){let e=requestAnimationFrame(()=>{b(e=>new Set(e).add(f))}),r=setTimeout(()=>{let e=document.getElementById(`vendor-${String(f)}`);e&&e.scrollIntoView({behavior:"smooth",block:"start"})},100);return()=>{cancelAnimationFrame(e),clearTimeout(r)}}},[f]);let R=null===f?w.filter(e=>e.name.toLowerCase().includes(x.toLowerCase())):w.filter(e=>String(e.id)===String(f)),B=R.filter(e=>!e.isCustom),V=R.filter(e=>e.isCustom),A=a(y?.["iab-vendor-list"]?.root,{noStyle:S}),T=a(y?.["iab-vendor-list"]?.header,{baseClassName:n.vendorListHeader,noStyle:S}),D=a(y?.["iab-vendor-list"]?.search,{baseClassName:n.searchContainer,noStyle:S}),U=a(y?.["iab-vendor-list"]?.selectedVendor,{baseClassName:n.selectedVendorBanner,noStyle:S}),$=function(t){var s,i,o,l;let m,p,f,N,C=String(t.id),x=(s=t.id,(m=w.find(e=>String(e.id)===String(s)))?u.filter(e=>e.vendors.some(e=>String(e.id)===String(s))).map(e=>({...e,usesLegitimateInterest:m.legIntPurposes.includes(e.id)})):[]),I=(i=t.id,(p=w.find(e=>String(e.id)===String(i)))&&h?p.specialPurposes.map(e=>h.specialPurposes[e]).filter(e=>null!=e).map(e=>({description:e.description,id:e.id,name:e.name})):[]),R=(o=t.id,(f=w.find(e=>String(e.id)===String(o)))&&h?f.specialFeatures.map(e=>h.specialFeatures[e]).filter(e=>null!=e).map(e=>({description:e.description,id:e.id,name:e.name})):[]),B=(l=t.id,(N=w.find(e=>String(e.id)===String(l)))&&h?(N.features||[]).map(e=>h.features[e]).filter(e=>null!=e).map(e=>({description:e.description,id:e.id,name:e.name})):[]),V=P.has(t.id),A=x.filter(e=>e.usesLegitimateInterest).length,T=t.legIntPurposes.length>0,D=k[C]??!0,U=t.dataRetention?.stdRetention,$=null;t.cookieMaxAgeSeconds&&($=M.preferenceCenter.vendorList.maxAge.replace("{days}",String(Math.floor(t.cookieMaxAgeSeconds/86400))),t.cookieRefresh&&($=`${$} (refreshes)`));let j=a(y?.["iab-vendor-list"]?.rowHeader,{baseClassName:n.vendorListItemHeader,noStyle:S});return r(d.Root,{id:`vendor-${C}`,className:S?void 0:`${n.vendorListItem} ${t.isCustom?n.customVendorItem:""}`,noStyle:!0,onOpenChange:()=>{var e;return e=t.id,void b(r=>{let n=new Set(r);return n.has(e)?n.delete(e):n.add(e),n})},open:V,slotKey:"iab-vendor-list.row",children:[r("div",{...j,children:[r(d.Trigger,{className:n.vendorListTrigger,noStyle:!0,children:[r("div",{className:n.vendorListInfo,children:[r("h3",{className:n.vendorListName,children:[t.name,t.isCustom&&r("svg",{className:n.customVendorIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-label":M.common.customPartner,children:[e("circle",{cx:"12",cy:"12",r:"10"}),e("line",{x1:"2",y1:"12",x2:"22",y2:"12"}),e("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"})]})]}),r("div",{className:n.vendorListMeta,children:[r("span",{className:n.vendorListMetaText,children:[x.length," purpose",1===x.length?"":"s",I.length>0&&`, ${I.length} special`,R.length>0&&`, ${R.length} feature${1===R.length?"":"s"}`]}),A>0&&r("span",{className:n.vendorListLiBadge,children:[e("svg",{style:{height:"0.625rem",width:"0.625rem"},viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e("path",{d:"M12 3v18M3 12h18M4.93 4.93l14.14 14.14M19.07 4.93L4.93 19.07"})}),A," ",M.preferenceCenter.vendorList.legitimateInterest]})]})]}),e("svg",{className:n.purposeArrow,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:V?e("path",{d:"M19 15l-7-7-7 7"}):e("path",{d:"M19 9l-7 7-7-7"})})]}),e("div",{className:n.vendorConsentControl,children:e(c.Root,{"aria-label":`Consent for ${t.name}`,className:n.vendorConsentSwitch,checked:v[C]??!1,onCheckedChange:e=>g(t.id,e)})})]}),r(d.Content,{innerClassName:S?void 0:n.vendorListContent,innerSlotKey:"iab-vendor-list.rowContent",noStyle:S,children:[r("div",{className:n.vendorLinks,children:[r("a",{href:t.policyUrl,target:"_blank",rel:"noopener noreferrer",className:n.vendorLink,children:[r("svg",{className:n.vendorLinkIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),e("polyline",{points:"15 3 21 3 21 9"}),e("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]}),M.preferenceCenter.vendorList.privacyPolicy]}),t.legitimateInterestUrl&&r("a",{href:t.legitimateInterestUrl,target:"_blank",rel:"noopener noreferrer",className:n.vendorLink,children:[r("svg",{className:n.vendorLinkIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),e("polyline",{points:"15 3 21 3 21 9"}),e("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]}),M.preferenceCenter.purposeItem.legitimateInterest]}),t.deviceStorageDisclosureUrl&&r("a",{href:t.deviceStorageDisclosureUrl,target:"_blank",rel:"noopener noreferrer",className:n.vendorLink,children:[r("svg",{className:n.vendorLinkIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),e("polyline",{points:"15 3 21 3 21 9"}),e("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]}),M.preferenceCenter.vendorList.storageDisclosure]})]}),r("div",{className:n.vendorBadges,children:[t.usesCookies&&e("span",{className:n.vendorBadge,children:M.preferenceCenter.vendorList.usesCookies}),t.usesNonCookieAccess&&e("span",{className:n.vendorBadge,children:M.preferenceCenter.vendorList.nonCookieAccess}),$&&e("span",{className:n.vendorBadge,children:$}),U&&e("span",{className:n.vendorBadge,children:M.preferenceCenter.vendorList.retention.replace("{days}",String(U))})]}),x.length>0&&r("div",{className:n.vendorPurposesList,children:[r("h4",{className:n.vendorPurposesTitle,children:[M.preferenceCenter.vendorList.purposes," (",x.length,")"]}),e("ul",{className:n.vendorPurposesItems,children:x.map(s=>{let i;return t.dataRetention?.purposes?.[s.id]?i=t.dataRetention.purposes[s.id]:t.dataRetention?.stdRetention&&(i=t.dataRetention.stdRetention),r("li",{className:`${n.vendorPurposeItem} ${s.usesLegitimateInterest?n.vendorPurposeItemLi:""}`,children:[r("span",{children:[s.name,i&&r("span",{className:n.vendorRetention,children:[" ","(Retained: ",i,"d)"]})]}),s.usesLegitimateInterest&&r("span",{className:n.vendorListLiBadge,children:[e("svg",{style:{height:"0.625rem",width:"0.625rem"},viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e("path",{d:"M12 3v18M3 12h18M4.93 4.93l14.14 14.14M19.07 4.93L4.93 19.07"})}),M.preferenceCenter.vendorList.legitimateInterest]})]},s.id)})})]}),T&&L&&r("div",{className:n.vendorLiSection,children:[r("div",{className:n.vendorLiSectionHeader,children:[r("h4",{className:n.vendorPurposesTitle,children:[e("svg",{style:{height:"0.75rem",marginRight:"0.25rem",width:"0.75rem"},viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e("path",{d:"M12 3v18M3 12h18M4.93 4.93l14.14 14.14M19.07 4.93L4.93 19.07"})}),M.preferenceCenter.purposeItem.legitimateInterest]}),e("button",{type:"button",onClick:()=>L(t.id,!D),className:`${n.objectButton} ${D?"":n.objectButtonActive}`,"aria-pressed":!D,children:D?M.preferenceCenter.purposeItem.objectButton:M.preferenceCenter.purposeItem.objected})]}),e("p",{className:n.liExplanation,children:M.preferenceCenter.purposeItem.rightToObject})]}),t.dataDeclaration&&t.dataDeclaration.length>0&&r("div",{className:n.vendorPurposesList,children:[r("h4",{className:n.vendorPurposesTitle,children:[M.preferenceCenter.vendorList.dataCategories," (",t.dataDeclaration.length,")"]}),e("ul",{className:n.vendorPurposesItems,children:t.dataDeclaration.map(r=>{let t=h?.dataCategories?.[r];return e("li",{className:n.vendorPurposeItem,title:t?.description,children:t?.name||`Data Category ${r}`},r)})})]}),I.length>0&&r("div",{className:n.vendorPurposesList,children:[r("h4",{className:n.vendorPurposesTitle,children:[r("svg",{"aria-hidden":"true",focusable:"false",style:{height:"0.75rem",marginRight:"0.25rem",width:"0.75rem"},viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("title",{children:M.preferenceCenter.vendorList.specialPurposes}),e("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2",ry:"2"}),e("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})]}),M.preferenceCenter.vendorList.specialPurposes," (",I.length,")"]}),e("ul",{className:n.vendorPurposesItems,children:I.map(s=>{let i;return t.dataRetention?.specialPurposes?.[s.id]?i=t.dataRetention.specialPurposes[s.id]:t.dataRetention?.stdRetention&&(i=t.dataRetention.stdRetention),e("li",{className:n.vendorPurposeItem,children:r("span",{children:[s.name,i&&r("span",{className:n.vendorRetention,children:[" ","(Retained: ",i,"d)"]})]})},s.id)})}),e("p",{className:n.vendorListMetaText,style:{fontStyle:"italic",marginTop:"0.25rem"},children:M.preferenceCenter.vendorList.requiredNotice})]}),R.length>0&&r("div",{className:n.vendorPurposesList,children:[r("h4",{className:n.vendorPurposesTitle,children:[M.preferenceCenter.vendorList.specialFeatures," (",R.length,")"]}),e("ul",{className:n.vendorPurposesItems,children:R.map(r=>e("li",{className:n.vendorPurposeItem,children:r.name},r.id))})]}),B.length>0&&r("div",{className:n.vendorPurposesList,children:[r("h4",{className:n.vendorPurposesTitle,children:[M.preferenceCenter.vendorList.features," (",B.length,")"]}),e("ul",{className:n.vendorPurposesItems,children:B.map(r=>e("li",{className:n.vendorPurposeItem,children:r.name},r.id))})]})]})]},t.id)};return r("div",{...A,children:[null===f?r("div",{...T,children:[r("div",{...D,children:[r("svg",{className:n.searchIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("circle",{cx:"11",cy:"11",r:"8"}),e("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]}),e("input",{type:"text",placeholder:M.preferenceCenter.vendorList.search,value:x,onChange:e=>I(e.target.value),className:n.searchInput})]}),e("p",{className:n.vendorCount,children:M.preferenceCenter.vendorList.showingCount.replace("{filtered}",String(R.length)).replace("{total}",String(w.length))})]}):r("div",{...U,children:[e("p",{className:n.selectedVendorText,children:M.common.showingSelectedVendor}),r("button",{type:"button",onClick:N,className:n.clearSelectionButton,children:[r("svg",{className:n.clearIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]}),M.common.clearSelection]})]}),B.length>0&&r("div",{className:n.vendorSection,children:[r("div",{className:n.iabVendorSectionHeader,children:[r("h3",{className:n.vendorSectionHeading,children:[r("svg",{className:n.vendorSectionIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("path",{d:"M12 2L2 7l10 5 10-5-10-5z"}),e("path",{d:"M2 17l10 5 10-5"}),e("path",{d:"M2 12l10 5 10-5"})]}),M.preferenceCenter.vendorList.iabVendorsHeading," (",B.length,")"]}),e("p",{className:n.iabVendorNotice,children:M.preferenceCenter.vendorList.iabVendorsNotice})]}),e("div",{children:B.map(e=>$(e))})]}),V.length>0&&r("div",{className:n.vendorSection,children:[r("div",{className:n.customVendorSectionHeader,children:[r("h3",{className:n.vendorSectionHeading,children:[r("svg",{className:n.vendorSectionIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("circle",{cx:"12",cy:"12",r:"10"}),e("line",{x1:"2",y1:"12",x2:"22",y2:"12"}),e("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"})]}),M.preferenceCenter.vendorList.customVendorsHeading," (",V.length,")"]}),e("p",{className:n.customVendorNotice,children:M.preferenceCenter.vendorList.customVendorsNotice})]}),e("div",{children:V.map(e=>$(e))})]}),0===R.length&&e("div",{className:n.emptyState,children:r("p",{className:n.emptyStateText,children:['No vendors found matching "',x,'"']})})]})};export{h as VendorList};
2
+ import{jsx as e,jsxs as r}from"react/jsx-runtime";import{resolveIABVendorUrls as n}from"@c15t/iab/headless";import t from"@c15t/ui/styles/components/iab-consent-dialog";import{useEffect as s,useState as i}from"react";import{useTranslations as o}from"../../../hooks.js";import{useTheme as a}from"../../../hooks/use-theme.js";import{useUIConfig as l}from"../../../ui-config-context.js";import{mergeSlotProps as d}from"../../../utils/merge-slot-props.js";import{useIABTranslations as c}from"../use-iab-translations.js";import*as m from"../../shared/ui/preference-item/index.js";import*as p from"../../shared/ui/switch/index.js";let h=[],u={},v=({vendorData:v,purposes:g,vendorConsents:f,onVendorToggle:N,selectedVendorId:C,onClearSelection:k,customVendors:L=h,vendorLegitimateInterests:S=u,onVendorLegitimateInterestToggle:x})=>{let{components:y}=l(),{noStyle:I}=a(),[P,b]=i(""),[M,w]=i(new Set),R=c(),B=o()?.language,V=[...v?Object.entries(v.vendors).map(([e,r])=>({cookieMaxAgeSeconds:r.cookieMaxAgeSeconds,cookieRefresh:r.cookieRefresh,dataDeclaration:r.dataDeclaration||[],dataRetention:r.dataRetention,deviceStorageDisclosureUrl:r.deviceStorageDisclosureUrl??null,features:r.features||[],id:Number(e),isCustom:!1,legIntPurposes:r.legIntPurposes||[],...n(r,B),name:r.name,purposes:r.purposes||[],specialFeatures:r.specialFeatures||[],specialPurposes:r.specialPurposes||[],usesCookies:r.usesCookies,usesNonCookieAccess:r.usesNonCookieAccess})):[],...L.map(e=>({cookieMaxAgeSeconds:e.cookieMaxAgeSeconds??null,cookieRefresh:void 0,dataDeclaration:e.dataCategories||[],dataRetention:void 0,deviceStorageDisclosureUrl:null,features:e.features||[],id:e.id,isCustom:!0,legIntPurposes:e.legIntPurposes||[],legitimateInterestUrl:null,name:e.name,policyUrl:e.privacyPolicyUrl,purposes:e.purposes||[],specialFeatures:e.specialFeatures||[],specialPurposes:[],usesCookies:e.usesCookies??!1,usesNonCookieAccess:e.usesNonCookieAccess??!1}))].sort((e,r)=>e.name.localeCompare(r.name));s(()=>{if(null!==C){let e=requestAnimationFrame(()=>{w(e=>new Set(e).add(C))}),r=setTimeout(()=>{let e=document.getElementById(`vendor-${String(C)}`);e&&e.scrollIntoView({behavior:"smooth",block:"start"})},100);return()=>{cancelAnimationFrame(e),clearTimeout(r)}}},[C]);let A=null===C?V.filter(e=>e.name.toLowerCase().includes(P.toLowerCase())):V.filter(e=>String(e.id)===String(C)),T=A.filter(e=>!e.isCustom),j=A.filter(e=>e.isCustom),D=d(y?.["iab-vendor-list"]?.root,{noStyle:I}),$=d(y?.["iab-vendor-list"]?.header,{baseClassName:t.vendorListHeader,noStyle:I}),H=d(y?.["iab-vendor-list"]?.search,{baseClassName:t.searchContainer,noStyle:I}),W=d(y?.["iab-vendor-list"]?.selectedVendor,{baseClassName:t.selectedVendorBanner,noStyle:I}),U=function(n){var s,i,o,a;let l,c,h,u,C=String(n.id),k=(s=n.id,(l=V.find(e=>String(e.id)===String(s)))?g.filter(e=>e.vendors.some(e=>String(e.id)===String(s))).map(e=>({...e,usesLegitimateInterest:l.legIntPurposes.includes(e.id)})):[]),L=(i=n.id,(c=V.find(e=>String(e.id)===String(i)))&&v?c.specialPurposes.map(e=>v.specialPurposes[e]).filter(e=>null!=e).map(e=>({description:e.description,id:e.id,name:e.name})):[]),P=(o=n.id,(h=V.find(e=>String(e.id)===String(o)))&&v?h.specialFeatures.map(e=>v.specialFeatures[e]).filter(e=>null!=e).map(e=>({description:e.description,id:e.id,name:e.name})):[]),b=(a=n.id,(u=V.find(e=>String(e.id)===String(a)))&&v?(u.features||[]).map(e=>v.features[e]).filter(e=>null!=e).map(e=>({description:e.description,id:e.id,name:e.name})):[]),B=M.has(n.id),A=k.filter(e=>e.usesLegitimateInterest).length,T=n.legIntPurposes.length>0,j=S[C]??!0,D=n.dataRetention?.stdRetention,$=null;n.cookieMaxAgeSeconds&&($=R.preferenceCenter.vendorList.maxAge.replace("{days}",String(Math.floor(n.cookieMaxAgeSeconds/86400))),n.cookieRefresh&&($=`${$} (refreshes)`));let H=d(y?.["iab-vendor-list"]?.rowHeader,{baseClassName:t.vendorListItemHeader,noStyle:I});return r(m.Root,{id:`vendor-${C}`,className:I?void 0:`${t.vendorListItem} ${n.isCustom?t.customVendorItem:""}`,noStyle:!0,onOpenChange:()=>{var e;return e=n.id,void w(r=>{let n=new Set(r);return n.has(e)?n.delete(e):n.add(e),n})},open:B,slotKey:"iab-vendor-list.row",children:[r("div",{...H,children:[r(m.Trigger,{className:t.vendorListTrigger,noStyle:!0,children:[r("div",{className:t.vendorListInfo,children:[r("h3",{className:t.vendorListName,children:[n.name,n.isCustom&&r("svg",{className:t.customVendorIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-label":R.common.customPartner,children:[e("circle",{cx:"12",cy:"12",r:"10"}),e("line",{x1:"2",y1:"12",x2:"22",y2:"12"}),e("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"})]})]}),r("div",{className:t.vendorListMeta,children:[r("span",{className:t.vendorListMetaText,children:[k.length," purpose",1===k.length?"":"s",L.length>0&&`, ${L.length} special`,P.length>0&&`, ${P.length} feature${1===P.length?"":"s"}`]}),A>0&&r("span",{className:t.vendorListLiBadge,children:[e("svg",{style:{height:"0.625rem",width:"0.625rem"},viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e("path",{d:"M12 3v18M3 12h18M4.93 4.93l14.14 14.14M19.07 4.93L4.93 19.07"})}),A," ",R.preferenceCenter.vendorList.legitimateInterest]})]})]}),e("svg",{className:t.purposeArrow,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:B?e("path",{d:"M19 15l-7-7-7 7"}):e("path",{d:"M19 9l-7 7-7-7"})})]}),e("div",{className:t.vendorConsentControl,children:e(p.Root,{"aria-label":`Consent for ${n.name}`,className:t.vendorConsentSwitch,checked:f[C]??!1,onCheckedChange:e=>N(n.id,e)})})]}),r(m.Content,{innerClassName:I?void 0:t.vendorListContent,innerSlotKey:"iab-vendor-list.rowContent",noStyle:I,children:[r("div",{className:t.vendorLinks,children:[r("a",{href:n.policyUrl,target:"_blank",rel:"noopener noreferrer",className:t.vendorLink,children:[r("svg",{className:t.vendorLinkIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),e("polyline",{points:"15 3 21 3 21 9"}),e("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]}),R.preferenceCenter.vendorList.privacyPolicy]}),n.legitimateInterestUrl&&r("a",{href:n.legitimateInterestUrl,target:"_blank",rel:"noopener noreferrer",className:t.vendorLink,children:[r("svg",{className:t.vendorLinkIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),e("polyline",{points:"15 3 21 3 21 9"}),e("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]}),R.preferenceCenter.purposeItem.legitimateInterest]}),n.deviceStorageDisclosureUrl&&r("a",{href:n.deviceStorageDisclosureUrl,target:"_blank",rel:"noopener noreferrer",className:t.vendorLink,children:[r("svg",{className:t.vendorLinkIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),e("polyline",{points:"15 3 21 3 21 9"}),e("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]}),R.preferenceCenter.vendorList.storageDisclosure]})]}),r("div",{className:t.vendorBadges,children:[n.usesCookies&&e("span",{className:t.vendorBadge,children:R.preferenceCenter.vendorList.usesCookies}),n.usesNonCookieAccess&&e("span",{className:t.vendorBadge,children:R.preferenceCenter.vendorList.nonCookieAccess}),$&&e("span",{className:t.vendorBadge,children:$}),D&&e("span",{className:t.vendorBadge,children:R.preferenceCenter.vendorList.retention.replace("{days}",String(D))})]}),k.length>0&&r("div",{className:t.vendorPurposesList,children:[r("h4",{className:t.vendorPurposesTitle,children:[R.preferenceCenter.vendorList.purposes," (",k.length,")"]}),e("ul",{className:t.vendorPurposesItems,children:k.map(s=>{let i;return n.dataRetention?.purposes?.[s.id]?i=n.dataRetention.purposes[s.id]:n.dataRetention?.stdRetention&&(i=n.dataRetention.stdRetention),r("li",{className:`${t.vendorPurposeItem} ${s.usesLegitimateInterest?t.vendorPurposeItemLi:""}`,children:[r("span",{children:[s.name,i&&r("span",{className:t.vendorRetention,children:[" ","(Retained: ",i,"d)"]})]}),s.usesLegitimateInterest&&r("span",{className:t.vendorListLiBadge,children:[e("svg",{style:{height:"0.625rem",width:"0.625rem"},viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e("path",{d:"M12 3v18M3 12h18M4.93 4.93l14.14 14.14M19.07 4.93L4.93 19.07"})}),R.preferenceCenter.vendorList.legitimateInterest]})]},s.id)})})]}),T&&x&&r("div",{className:t.vendorLiSection,children:[r("div",{className:t.vendorLiSectionHeader,children:[r("h4",{className:t.vendorPurposesTitle,children:[e("svg",{style:{height:"0.75rem",marginRight:"0.25rem",width:"0.75rem"},viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e("path",{d:"M12 3v18M3 12h18M4.93 4.93l14.14 14.14M19.07 4.93L4.93 19.07"})}),R.preferenceCenter.purposeItem.legitimateInterest]}),e("button",{type:"button",onClick:()=>x(n.id,!j),className:`${t.objectButton} ${j?"":t.objectButtonActive}`,"aria-pressed":!j,children:j?R.preferenceCenter.purposeItem.objectButton:R.preferenceCenter.purposeItem.objected})]}),e("p",{className:t.liExplanation,children:R.preferenceCenter.purposeItem.rightToObject})]}),n.dataDeclaration&&n.dataDeclaration.length>0&&r("div",{className:t.vendorPurposesList,children:[r("h4",{className:t.vendorPurposesTitle,children:[R.preferenceCenter.vendorList.dataCategories," (",n.dataDeclaration.length,")"]}),e("ul",{className:t.vendorPurposesItems,children:n.dataDeclaration.map(r=>{let n=v?.dataCategories?.[r];return e("li",{className:t.vendorPurposeItem,title:n?.description,children:n?.name||`Data Category ${r}`},r)})})]}),L.length>0&&r("div",{className:t.vendorPurposesList,children:[r("h4",{className:t.vendorPurposesTitle,children:[r("svg",{"aria-hidden":"true",focusable:"false",style:{height:"0.75rem",marginRight:"0.25rem",width:"0.75rem"},viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("title",{children:R.preferenceCenter.vendorList.specialPurposes}),e("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2",ry:"2"}),e("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})]}),R.preferenceCenter.vendorList.specialPurposes," (",L.length,")"]}),e("ul",{className:t.vendorPurposesItems,children:L.map(s=>{let i;return n.dataRetention?.specialPurposes?.[s.id]?i=n.dataRetention.specialPurposes[s.id]:n.dataRetention?.stdRetention&&(i=n.dataRetention.stdRetention),e("li",{className:t.vendorPurposeItem,children:r("span",{children:[s.name,i&&r("span",{className:t.vendorRetention,children:[" ","(Retained: ",i,"d)"]})]})},s.id)})}),e("p",{className:t.vendorListMetaText,style:{fontStyle:"italic",marginTop:"0.25rem"},children:R.preferenceCenter.vendorList.requiredNotice})]}),P.length>0&&r("div",{className:t.vendorPurposesList,children:[r("h4",{className:t.vendorPurposesTitle,children:[R.preferenceCenter.vendorList.specialFeatures," (",P.length,")"]}),e("ul",{className:t.vendorPurposesItems,children:P.map(r=>e("li",{className:t.vendorPurposeItem,children:r.name},r.id))})]}),b.length>0&&r("div",{className:t.vendorPurposesList,children:[r("h4",{className:t.vendorPurposesTitle,children:[R.preferenceCenter.vendorList.features," (",b.length,")"]}),e("ul",{className:t.vendorPurposesItems,children:b.map(r=>e("li",{className:t.vendorPurposeItem,children:r.name},r.id))})]})]})]},n.id)};return r("div",{...D,children:[null===C?r("div",{...$,children:[r("div",{...H,children:[r("svg",{className:t.searchIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("circle",{cx:"11",cy:"11",r:"8"}),e("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]}),e("input",{type:"text",placeholder:R.preferenceCenter.vendorList.search,value:P,onChange:e=>b(e.target.value),className:t.searchInput})]}),e("p",{className:t.vendorCount,children:R.preferenceCenter.vendorList.showingCount.replace("{filtered}",String(A.length)).replace("{total}",String(V.length))})]}):r("div",{...W,children:[e("p",{className:t.selectedVendorText,children:R.common.showingSelectedVendor}),r("button",{type:"button",onClick:k,className:t.clearSelectionButton,children:[r("svg",{className:t.clearIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]}),R.common.clearSelection]})]}),T.length>0&&r("div",{className:t.vendorSection,children:[r("div",{className:t.iabVendorSectionHeader,children:[r("h3",{className:t.vendorSectionHeading,children:[r("svg",{className:t.vendorSectionIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("path",{d:"M12 2L2 7l10 5 10-5-10-5z"}),e("path",{d:"M2 17l10 5 10-5"}),e("path",{d:"M2 12l10 5 10-5"})]}),R.preferenceCenter.vendorList.iabVendorsHeading," (",T.length,")"]}),e("p",{className:t.iabVendorNotice,children:R.preferenceCenter.vendorList.iabVendorsNotice})]}),e("div",{children:T.map(e=>U(e))})]}),j.length>0&&r("div",{className:t.vendorSection,children:[r("div",{className:t.customVendorSectionHeader,children:[r("h3",{className:t.vendorSectionHeading,children:[r("svg",{className:t.vendorSectionIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e("circle",{cx:"12",cy:"12",r:"10"}),e("line",{x1:"2",y1:"12",x2:"22",y2:"12"}),e("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"})]}),R.preferenceCenter.vendorList.customVendorsHeading," (",j.length,")"]}),e("p",{className:t.customVendorNotice,children:R.preferenceCenter.vendorList.customVendorsNotice})]}),e("div",{children:j.map(e=>U(e))})]}),0===A.length&&e("div",{className:t.emptyState,children:r("p",{className:t.emptyStateText,children:['No vendors found matching "',P,'"']})})]})};export{v as VendorList};
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{processGVLForDialog as t}from"@c15t/iab/headless";import{useMemo as a}from"react";import{useIAB as e}from"../../../iab-context.js";let r=function(){let r=e();return a(()=>t(r),[r])};export{r as useGVLData};
2
+ import{processGVLForDialog as t}from"@c15t/iab/headless";import{useMemo as a}from"react";import{useTranslations as o}from"../../../hooks.js";import{useIAB as e}from"../../../iab-context.js";let r=function(){let r=e(),s=o()?.language;return a(()=>t(r&&{...r,language:s}),[r,s])};export{r as useGVLData};
@@ -1,2 +1,2 @@
1
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};
2
+ import{Fragment as e,jsx as t,jsxs as o}from"react/jsx-runtime";import{applyPublisherRestrictionsToGVL as n}from"@c15t/iab/headless";import{isDialogDismissKey as i}from"@c15t/ui/primitives/dialog";import r from"@c15t/ui/styles/components/consent-actions";import a from"@c15t/ui/styles/components/iab-consent-dialog";import{useCallback as s,useEffect as l,useLayoutEffect as d,useMemo as c,useRef as m,useState as p}from"react";import{createPortal as u}from"react-dom";import{useHeadlessIABConsentUI as g}from"../../component-hooks/use-headless-iab-consent-ui.js";import{useTranslations as h}from"../../component-hooks/use-translations.js";import{ConsentDialogTrigger as b}from"../panel-trigger/index.js";import{Branding as y}from"../panel/atoms/card.js";import{ConsentTrackingContext as f}from"../../context/consent-tracking-context.js";import{LocalThemeContext as v}from"../../context/theme-context.js";import{useComponentConfig as C}from"../../hooks/use-component-config.js";import{useFocusTrap as S}from"../../hooks/use-focus-trap.js";import{useIABConsentManager as k}from"../../hooks/use-iab-manager.js";import{useScrollLock as N}from"../../hooks/use-scroll-lock.js";import{useTextDirection as I}from"../../hooks/use-text-direction.js";import{useUIConfig as x}from"../../ui-config-context.js";import{mergeSlotProps as L}from"../../utils/merge-slot-props.js";import{IAB_DIALOG_SHEETS as j}from"../shared/iab-dialog-sheets.js";import{SurfaceStyles as T}from"../shared/surface-styles.js";import{FeatureItem as A}from"./atoms/feature-item.js";import{IABConsentDialogOverlay as F}from"./atoms/overlay.js";import{PurposeItem as V}from"./atoms/purpose-item.js";import{StackItem as w}from"./atoms/stack-item.js";import{VendorList as P}from"./atoms/vendor-list.js";import{useIABDisplayModel as B}from"./hooks/use-display-model.js";import{useIABTranslations as R}from"./use-iab-translations.js";import*as $ from"../shared/ui/button/index.js";import*as M from"../shared/ui/tabs/index.js";let q=["iab"],z={tabIndex:-1},E=({open:E,noStyle:H,disableAnimation:D,scrollLock:W,trapFocus:G,hideBranding:O,initialTab:_,showTrigger:J=!1,models:K=q,uiSource:Q})=>{let U=R(),{common:X}=h(),{components:Y}=x(),{iab:Z,activeUI:ee,policyDialog:et,translationConfig:eo,model:en}=k({preferences:{scrollLock:W,trapFocus:G}}),{banner:ei,closeUI:er,openDialog:ea,performDialogAction:es}=g(),el=et.blocking,ed=I(eo.defaultLanguage),ec=m(null),em=m(null),ep=m(null),[eu,eg]=p(_??Z?.preferenceCenterTab??"purposes"),[eh,eb]=p(null),[ey,ef]=p(!1),[ev,eC]=p(!1),[eS,ek]=p(!1),eN=null!==en&&K.includes(en)&&(E??"dialog"===ee),eI=C({disableAnimation:D,noStyle:H,scrollLock:el,trapFocus:et.blocking}),{consentRows:ex,essentialRows:eL,essentialPartnerCount:ej,featureRows:eT,featuresStandardText:eA,purposeTabCount:eF,vendorTabCount:eV,data:{purposes:ew}}=B(),eP=Z?.gvl??null,eB=Z?.publisherRestrictions,eR=c(()=>eP?n(eP,eB):null,[eP,eB]),e$=s((e,t)=>{Z?.setPurposeConsent(e,t)},[Z]),eM=s((e,t)=>{Z?.setSpecialFeatureOptIn(e,t)},[Z]),eq=s((e,t)=>{Z?.setVendorConsent(e,t)},[Z]),ez=s((e,t)=>{Z?.setVendorLegitimateInterest(e,t)},[Z]),eE=s((e,t)=>{Z?.setPurposeLegitimateInterest(e,t)},[Z]),eH=async()=>{try{await es("accept")}catch{}},eD=async()=>{try{await es("reject")}catch{}},eW=async()=>{try{await es("customize")}catch{}},eG=s(()=>{er()},[er]),eO=e=>{eb(e),eg("vendors"),ea({tab:"vendors"})};S(!!(ev&&eN&&eI.trapFocus),ec,{initialFocus:"first-tabbable"}),N(!!(eN&&eI.scrollLock)),l(()=>{if(!eN)return;let e=e=>{i(e.key)&&(e.preventDefault(),eG())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[eG,eN]),l(()=>{let e=requestAnimationFrame(()=>eC(!0));return()=>cancelAnimationFrame(e)},[]),l(()=>{if(eN){let e=requestAnimationFrame(()=>ek(!0));return()=>cancelAnimationFrame(e)}if(eI.disableAnimation){let e=requestAnimationFrame(()=>ek(!1));return()=>cancelAnimationFrame(e)}let e=setTimeout(()=>{ek(!1)},150);return()=>clearTimeout(e)},[eN,eI.disableAnimation]);let e_=m(!!_);l(()=>{let e=Z?.preferenceCenterTab;if(!(eN&&e))return;if(e_.current){e_.current=!1;return}let t=requestAnimationFrame(()=>{eg(e)});return()=>cancelAnimationFrame(t)},[eN,Z?.preferenceCenterTab]),d(()=>{let e,t;if("purposes"!==eu&&"vendors"!==eu)return;let o=em.current;if(!o||null===ep.current)return;let n=ep.current;if(ep.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)}},[eu]);let eJ=s(e=>{em.current&&(ep.current=em.current.offsetHeight),eg(e),ea({tab:e})},[ea]),eK=c(()=>({uiSource:Q??"iab_dialog"}),[Q]);if(!ev||!Z?.config.enabled)return null;let eQ=Z.isLoadingGVL||!Z.gvl,eU=L(Y?.["iab-dialog"]?.root,{baseClassName:`${a.root} ${eS?a.dialogVisible:a.dialogHidden}`,noStyle:eI.noStyle}),eX=L(Y?.["iab-dialog"]?.card,{baseClassName:`${a.card} ${eS?a.contentVisible:a.contentHidden}`,noStyle:eI.noStyle}),eY=L(Y?.["iab-dialog"]?.header,{baseClassName:a.header,noStyle:eI.noStyle}),eZ=L(Y?.["iab-dialog"]?.headerContent,{baseClassName:a.headerContent,noStyle:eI.noStyle}),e1=L(Y?.["iab-dialog"]?.title,{baseClassName:a.title,noStyle:eI.noStyle}),e0=L(Y?.["iab-dialog"]?.description,{baseClassName:a.description,noStyle:eI.noStyle}),e2=L(Y?.["iab-dialog"]?.closeButton,{baseClassName:a.closeButton,noStyle:eI.noStyle}),e7=L(Y?.["iab-dialog"]?.body,{baseClassName:a.body,noStyle:eI.noStyle}),e4=L(Y?.["iab-dialog"]?.tabs,{baseClassName:a.tabsContainer,noStyle:eI.noStyle}),e5=L(Y?.["iab-dialog"]?.tabsList,{baseClassName:a.tabsList,noStyle:eI.noStyle}),e8=L(Y?.["iab-dialog"]?.tabTrigger,{baseClassName:a.tabButton,noStyle:eI.noStyle}),e6=L(Y?.["iab-dialog"]?.tabIndicator,{baseClassName:a.tabIndicator,noStyle:eI.noStyle}),e3=L(Y?.["iab-dialog"]?.content,{baseClassName:a.content,noStyle:eI.noStyle}),e9=L(Y?.["iab-dialog"]?.loading,{baseClassName:a.loadingContainer,noStyle:eI.noStyle}),te=L(Y?.["iab-dialog"]?.tabPanel,{baseClassName:a.tabPanel,noStyle:eI.noStyle}),tt=L(Y?.["iab-dialog"]?.specialPurposes,{baseClassName:a.specialPurposesSection,noStyle:eI.noStyle}),to=L(Y?.["iab-dialog"]?.consentNotice,{baseClassName:a.consentNotice,noStyle:eI.noStyle}),tn=L(Y?.["iab-dialog"]?.actions,{baseClassName:r.actionRoot,noStyle:eI.noStyle}),ti=L(Y?.["iab-dialog"]?.footer,{baseClassName:a.footer,noStyle:eI.noStyle,...tn}),tr=L(Y?.["iab-dialog"]?.actionGroup,{baseClassName:r.actionGroup,"data-direction":"row",noStyle:eI.noStyle}),ta=t(f.Provider,{value:eK,children:o(v.Provider,{value:eI,children:[t(T,{sheets:j,noStyle:eI.noStyle}),t(F,{isOpen:eN}),t("div",{...eU,"data-testid":"iab-consent-dialog-root",dir:ed,children:o("div",{"aria-describedby":"iab-consent-dialog-description",...eX,ref:ec,"aria-label":U.preferenceCenter.title,"aria-modal":eI.trapFocus?"true":void 0,role:"dialog",...z,"data-testid":"iab-consent-dialog-card",children:[o("div",{...eY,children:[o("div",{...eZ,children:[t("h2",{...e1,children:U.preferenceCenter.title}),t("p",{...e0,id:"iab-consent-dialog-description",children:U.preferenceCenter.description})]}),t("button",{...e2,type:"button","data-testid":"iab-consent-dialog-close",onClick:eG,"aria-label":X.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(M.Root,{...e7,noStyle:!0,onValueChange:e=>eJ(e),value:eu,children:[t("div",{...e4,children:o(M.List,{...e5,noStyle:!0,children:[o(M.Trigger,{...e8,noStyle:!0,value:"purposes",children:[U.preferenceCenter.tabs.purposes,!eQ&&` (${eF})`]}),o(M.Trigger,{...e8,noStyle:!0,value:"vendors",children:[U.preferenceCenter.tabs.vendors,!eQ&&` (${eV})`]}),t("div",{...e6,"aria-hidden":"true","data-active-tab":eu})]})}),t("div",{...e3,ref:em,children:eQ?o("div",{...e9,children:[t("div",{className:a.loadingSpinner}),t("p",{className:a.loadingText,children:U.common.loading})]}):o(e,{children:[o(M.Content,{...te,forceMount:!0,noStyle:!0,value:"purposes",children:[ex.map(e=>"stack"===e.kind?t(w,{stack:e,consents:Z.purposeConsents,onToggle:e$,vendorConsents:Z.vendorConsents,onVendorToggle:eq,onVendorClick:eO,vendorLegitimateInterests:Z.vendorLegitimateInterests,onVendorLegitimateInterestToggle:ez,purposeLegitimateInterests:Z.purposeLegitimateInterests,onPurposeLegitimateInterestToggle:eE},e.testId):t(V,{purpose:e,testId:e.testId,isEnabled:"special-feature"===e.toggle?Z.specialFeatureOptIns[e.id]??!1:Z.purposeConsents[e.id]??!1,onToggle:t=>{"special-feature"===e.toggle?eM(e.id,t):e$(e.id,t)},vendorConsents:Z.vendorConsents,onVendorToggle:eq,onVendorClick:eO,vendorLegitimateInterests:Z.vendorLegitimateInterests,onVendorLegitimateInterestToggle:ez,purposeLegitimateInterests:"purpose"===e.kind?Z.purposeLegitimateInterests:void 0,onPurposeLegitimateInterestToggle:"purpose"===e.kind?eE:void 0},e.testId)),eL.length>0&&o("div",{...tt,children:[o("div",{className:a.specialPurposesHeader,children:[o("button",{type:"button","aria-expanded":ey,onClick:()=>ef(!ey),className:a.purposeTrigger,children:[t("svg",{"aria-hidden":"true",className:a.purposeArrow,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:ey?t("path",{d:"M19 9l-7 7-7-7"}):t("path",{d:"M9 5l7 7-7 7"})}),o("div",{className:a.purposeInfo,children:[o("h3",{className:a.specialPurposesTitle,children:[U.preferenceCenter.specialPurposes.title,o("svg",{"aria-hidden":"true",className:a.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:a.purposeMeta,children:[ej," ",1===ej?U.preferenceCenter.vendorList.partnerSingular:U.preferenceCenter.vendorList.partnerPlural]})]})]}),t("div",{style:{position:"relative"},children:o("svg",{className:a.infoIcon,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-label":U.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"})]})})]}),ey&&t("div",{style:{padding:"0.75rem"},children:eL.map(e=>t(V,{purpose:e,testId:e.testId,isEnabled:!0,onToggle:()=>{},vendorConsents:Z.vendorConsents,onVendorToggle:eq,onVendorClick:eO,isLocked:!0},e.testId))})]}),eT.length>0&&o("section",{"aria-label":U.preferenceCenter.features.title,className:eI.noStyle?void 0:a.featuresSection,"data-testid":"iab-consent-dialog-features",children:[o("div",{className:eI.noStyle?void 0:a.featuresHeader,children:[t("h3",{className:eI.noStyle?void 0:a.featuresTitle,children:U.preferenceCenter.features.title}),t("p",{className:eI.noStyle?void 0:a.featuresDescription,children:eA??U.preferenceCenter.features.description})]}),t("div",{className:eI.noStyle?void 0:a.featuresList,children:eT.map(e=>t(A,{feature:e,testId:e.testId},e.testId))})]}),t("div",{...to,children:t("p",{className:a.consentNoticeText,children:U.preferenceCenter.footer.consentStorage})})]}),t(M.Content,{...te,forceMount:!0,noStyle:!0,value:"vendors",children:t(P,{vendorData:eR,purposes:ew,vendorConsents:Z.vendorConsents,onVendorToggle:eq,selectedVendorId:eh,onClearSelection:()=>eb(null),customVendors:Z.nonIABVendors,vendorLegitimateInterests:Z.vendorLegitimateInterests,onVendorLegitimateInterestToggle:ez})})]})})]}),o("div",{...ti,children:[o("div",{...tr,children:[t($.Root,{variant:"neutral",mode:"stroke",size:"small",onClick:eD,disabled:!ei.isReady,"data-action":"reject",children:U.common.rejectAll}),t($.Root,{variant:"neutral",mode:"stroke",size:"small",onClick:eH,disabled:!ei.isReady,"data-action":"accept",children:U.common.acceptAll})]}),t("div",{...tr,children:t($.Root,{variant:"primary",mode:"filled",size:"small",onClick:eW,disabled:eQ,"data-action":"customize",children:U.common.saveSettings})})]}),t(y,{hideBranding:O??!1,variant:"dialog-tag",slotContext:"iab-dialog","data-testid":"iab-consent-dialog-branding"})]})})]})}),ts=!0===J?{}:!1===J?null:J,tl=ts?t(b,{...ts}):null;return eN||eS?o(e,{children:[tl,u(ta,document.body)]}):tl};export{E as IABConsentDialog};
@@ -1,2 +1,2 @@
1
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};
2
+ import{IABConsentDialogCard as o}from"./atoms/card.js";import{IABConsentDialogContent as t}from"./atoms/content.js";import{FeatureItem as e}from"./atoms/feature-item.js";import{IABConsentDialogFooter as s}from"./atoms/footer.js";import{IABConsentDialogHeader as a}from"./atoms/header.js";import{IABConsentDialogOverlay as r}from"./atoms/overlay.js";import{PurposeItem as m}from"./atoms/purpose-item.js";import{IABConsentDialogRoot as n}from"./atoms/root.js";import{StackItem as i}from"./atoms/stack-item.js";import{IABConsentDialogTabButton as p,IABConsentDialogTabs as l}from"./atoms/tabs.js";import{VendorList as f}from"./atoms/vendor-list.js";import{IABConsentDialog as I}from"./iab-panel.js";let j=Object.assign(I,{Card:o,Content:t,FeatureItem:e,Footer:s,Header:a,Overlay:r,PurposeItem:m,Root:n,StackItem:i,TabButton:p,Tabs:l,VendorList:f});export{useIABDisplayModel}from"./hooks/use-display-model.js";export{useGVLData}from"./hooks/use-gvl-data.js";export default j;export{e as FeatureItem,o as IABConsentDialogCard,t as IABConsentDialogContent,s as IABConsentDialogFooter,a as IABConsentDialogHeader,r as IABConsentDialogOverlay,n as IABConsentDialogRoot,p as IABConsentDialogTabButton,l as IABConsentDialogTabs,m as PurposeItem,i as StackItem,f as VendorList,j as IABConsentDialog};
@@ -1,2 +1,2 @@
1
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};
2
+ import{jsx as e}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/iab-consent-banner";import{forwardRef as r}from"react";import{useActiveUI as t}from"../../../hooks.js";import{useLateEntry as s}from"../../../hooks/use-late-entry.js";import{useScrollLock as a}from"../../../hooks/use-scroll-lock.js";import{useTheme as n}from"../../../hooks/use-theme.js";import{useUIConfig as i}from"../../../ui-config-context.js";import{cnExt as l}from"../../../utils/cn.js";import{mergeSlotProps as m}from"../../../utils/merge-slot-props.js";let p=r(({className:r,style:p,noStyle:c,...y},f)=>{let u=t(),{disableAnimation:v,noStyle:b,scrollLock:d}=n(),{components:j}=i(),h="banner"===u,k=m(j?.["iab-banner"]?.overlay,{baseClassName:o.overlay,className:r,noStyle:b||c,style:p,...y}),B=b||c||v?void 0:`${o.overlayVisible} ${o.overlayEntering}`,N=l(k.className,B);a(!!(h&&d));let g=s(!!(h&&d))&&!v;return h&&d?e("div",{ref:f,...k,"aria-hidden":"true",className:N,"data-entry":g?"late":void 0,"data-testid":"iab-consent-banner-overlay"}):null});p.displayName="IABConsentBannerOverlay";export{p as IABConsentBannerOverlay};
@@ -1,2 +1,2 @@
1
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};
2
+ import{Fragment as e,jsx as t,jsxs as o}from"react/jsx-runtime";import r from"@c15t/ui/styles/components/iab-consent-banner";import{forwardRef as n,useMemo as s}from"react";import{ConsentTrackingContext as a}from"../../../context/consent-tracking-context.js";import{LocalThemeContext as i}from"../../../context/theme-context.js";import{useActiveUI as m,useModel as l,useTranslations as c}from"../../../hooks.js";import{useIABConsentManager as d}from"../../../hooks/use-iab-manager.js";import{useLateEntry as p}from"../../../hooks/use-late-entry.js";import{useTextDirection as b}from"../../../hooks/use-text-direction.js";import{useUIConfig as f}from"../../../ui-config-context.js";import{mergeSlotProps as u}from"../../../utils/merge-slot-props.js";import{IAB_FIRST_PAINT_SHEETS as h}from"../../shared/iab-first-paint-sheets.js";import{SurfaceStyles as j}from"../../shared/surface-styles.js";import{IABConsentBannerOverlay as g}from"./overlay.js";let x=["iab"],y=n(({children:n,className:s,style:a,className:i,disableAnimation:d,noStyle:y,models:N=x,...k},v)=>{let B=m(),{components:C}=f(),$=l(),A=c(),I=b(A?.language??"en"),S=null!==$&&"banner"===B&&N.includes($),P=p(S)&&!d,R=u(C?.["iab-banner"]?.root,{baseClassName:[r.root],className:s||i,noStyle:y,style:a,...k}),E=y?R.className||"":`${R.className||""} ${r.bannerVisible}${d?"":` ${r.bannerEntering}`}`;return S?o(e,{children:[t(j,{sheets:h,noStyle:y}),t(g,{}),o("div",{ref:v,...R,className:E,"data-position":"ltr"===I?"bottom-left":"bottom-right","data-entry":P?"late":void 0,"data-testid":"iab-consent-banner-root","data-c15t-streamed":"",dir:I,tabIndex:-1,children:[n,t("span",{"data-c15t-stream-end":"",hidden:!0})]})]}):null}),N=({children:e,className:o,noStyle:r,disableAnimation:n,scrollLock:m,trapFocus:l,models:c,uiSource:p,...b})=>{let{policyBanner:f}=d({prompt:{scrollLock:m,trapFocus:l}}),u=f.blocking,h=s(()=>({disableAnimation:n,noStyle:r,scrollLock:u,trapFocus:u}),[n,r,u]),j=s(()=>({uiSource:p??"iab_banner"}),[p]);return t(a.Provider,{value:j,children:t(i.Provider,{value:h,children:t(y,{disableAnimation:n,className:o,noStyle:r,models:c,...b,children:e})})})};y.displayName="IABConsentBannerRootChildren";export{N as IABConsentBannerRoot};
@@ -1,2 +1,2 @@
1
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};
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,isValidElement as n}from"react";import{useTranslations as s}from"../../../component-hooks/use-translations.js";import{ConsentWidget as r}from"../../preferences/preferences.js";import{Slot as d}from"../../shared/libs/slot.js";import{Box as l}from"../../shared/primitives/box.js";import{InlineLegalLinks as g}from"../../shared/primitives/legal-links/index.js";import{BrandingLink as c}from"../../shared/ui/branding.js";import{useTheme as m}from"../../../hooks/use-theme.js";import{useUIConfig as p}from"../../../ui-config-context.js";import{cnExt as C}from"../../../utils/cn.js";import{mergeSlotProps as f}from"../../../utils/merge-slot-props.js";let h=a(({children:t,...o},a)=>e(l,{ref:a,baseClassName:i.card,...o,slotKey:"dialog.card","data-testid":"consent-dialog-card",tabIndex:-1,children:t}));h.displayName="ConsentDialogCard";let D=a(({children:t,...o},a)=>e(l,{ref:a,baseClassName:i.header,...o,slotKey:"dialog.header","data-testid":"consent-dialog-header",children:t}));D.displayName="ConsentDialogHeader";let y=a(({children:t,asChild:o,...a},r)=>{let{consentManagerDialog:d}=s();return e(l,{ref:r,baseClassName:i.title,slotKey:"dialog.title",...a,id:"consent-dialog-title","data-testid":"consent-dialog-title",asChild:!0,children:o&&n(t)?t:e("h2",{children:t??d.title})})});y.displayName="ConsentDialogHeaderTitle";let b=a(({children:o,legalLinks:a,asChild:r,className:l,style:c,noStyle:C,...h},D)=>{let{consentManagerDialog:y}=s(),{components:b}=p(),{noStyle:u}=m(),N="dialog",j=f(b?.description?.[N],{baseClassName:i.description,className:l,"data-context":N,"data-testid":"consent-dialog-description",id:"consent-dialog-description",noStyle:C??u,style:c,...h});return r&&n(o)?e(d,{ref:D,...j,children:o}):t("div",{ref:D,...j,children:[o??y.description,e(g,{links:a,context:"dialog",testIdPrefix:"consent-dialog-legal-link"})]})});b.displayName="ConsentDialogHeaderDescription";let u=a(({children:t,...o},a)=>e(l,{ref:a,baseClassName:i.content,slotKey:"dialog.content","data-testid":"consent-dialog-content",...o,children:t}));u.displayName="ConsentDialogContent";let N=t=>e(c,{...t}),j=a(({children:t,hideBranding:a,"data-testid":n,...s},r)=>e(l,{ref:r,baseClassName:C(i.footer,null==t&&!a&&o.brandingFooter),"data-testid":n??"consent-dialog-footer",...s,slotKey:"manager.footer",children:t??e(N,{hideBranding:a??!1,variant:"dialog-tag",slotContext:"dialog","data-testid":"consent-dialog-branding"})}));j.displayName="ConsentDialogFooter";let x=({noStyle:o,legalLinks:i,hideBranding:a})=>t(h,{children:[t(D,{children:[e(y,{}),e(b,{legalLinks:i})]}),e(u,{children:e(r,{hideBranding:!0,noStyle:o,useProvider:!0})}),e(N,{hideBranding:a??!1,variant:"dialog-tag",slotContext:"dialog","data-testid":"consent-dialog-branding"})]}),H=h,k=D,v=y,K=b,B=u,F=j;export{N as Branding,H as Card,x as ConsentCustomizationCard,h as ConsentDialogCard,u as ConsentDialogContent,j as ConsentDialogFooter,D as ConsentDialogHeader,b as ConsentDialogHeaderDescription,y as ConsentDialogHeaderTitle,B as Content,F as Footer,k as Header,K as HeaderDescription,v as HeaderTitle};
@@ -1 +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};
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{useActiveUI as a}from"../../../hooks.js";import{useTheme as i}from"../../../hooks/use-theme.js";import{useUIConfig as l}from"../../../ui-config-context.js";import{cnExt as n}from"../../../utils/cn.js";import{mergeSlotProps as s}from"../../../utils/merge-slot-props.js";let m=({noStyle:m,style:c,open:u})=>{let d,p=a(),{components:y}=l(),{disableAnimation:f,noStyle:g,scrollLock:v=!0}=i(),j=u??"dialog"===p,[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});d=g||m||f?void 0:N?t.overlayVisible:t.overlayHidden;let F=n(A.className,d);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};
@@ -1,2 +1,2 @@
1
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};
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 l,useState as a}from"react";import{createPortal as m}from"react-dom";import{useHeadlessConsentUI as c}from"../../../component-hooks/use-headless-consent-ui.js";import{ConsentTrackingContext as d}from"../../../context/consent-tracking-context.js";import{LocalThemeContext as u}from"../../../context/theme-context.js";import{useActiveUI as p,useHasConsentUI as f,useModel as h}from"../../../hooks.js";import{useFocusTrap as g}from"../../../hooks/use-focus-trap.js";import{useIABPolicyGuard as b}from"../../../hooks/use-iab-policy-guard.js";import{useIsHydrated as k}from"../../../hooks/use-is-hydrated.js";import{useScrollLock as j}from"../../../hooks/use-scroll-lock.js";import{useTextDirection as y}from"../../../hooks/use-text-direction.js";import{useTheme as v}from"../../../hooks/use-theme.js";import{useTranslationLanguage as x}from"../../../kernel-selector.js";import{useUIConfig as F}from"../../../ui-config-context.js";import{cnExt as A}from"../../../utils/cn.js";import{mergeSlotProps as L}from"../../../utils/merge-slot-props.js";import{DIALOG_SHEETS as N}from"../../shared/dialog-sheets.js";import{SurfaceStyles as S}from"../../shared/surface-styles.js";import{Overlay as C}from"./overlay.js";let q=["opt-in","opt-out","none"],w=({children:w,open:D,models:E=q,noStyle:H,disableAnimation:I,scrollLock:P,trapFocus:R,overlay:T,uiSource:V,className:z,style:B,...G})=>{var J;let K,M,O;b();let Q=v(),{components:U}=F(),W=p(),X=h(),Y=x(),{closeUI:Z,dialog:$}=c({preferences:{scrollLock:P,trapFocus:R}}),{disableAnimation:_,noStyle:oo,scrollLock:oe,trapFocus:ot}=(K=Q.disableAnimation,M=Q.noStyle,{disableAnimation:I??K??!1,noStyle:H??M??!1,scrollLock:O=$.blocking,trapFocus:O}),or=y(Y),oi=(J=f(),!!J&&!!E.includes(X??"opt-in")&&(D??"dialog"===W)),[on,os]=a(!1),ol=l(null),oa=l(null),om=k(),oc=Q.theme?.motion?.duration?.normal;n(()=>{if(oi){let o=requestAnimationFrame(()=>os(!0));return()=>cancelAnimationFrame(o)}if(_){let o=requestAnimationFrame(()=>os(!1));return()=>cancelAnimationFrame(o)}let o=setTimeout(()=>os(!1),Number.parseInt((oc||"200ms").replace("ms",""),10));return()=>clearTimeout(o)},[oi,_,oc]),g(oi&&ot,oa,{initialFocus:"first-tabbable"}),n(()=>{if(!oi)return;let o=o=>{r(o.key)&&(o.preventDefault(),Z())};return document.addEventListener("keydown",o),()=>document.removeEventListener("keydown",o)},[Z,oi]),j(oi&&oe);let od=_?i.root:A(i.root,on?i.dialogVisible:i.dialogHidden),ou=L(U?.dialog?.root,{baseClassName:od,className:z,noStyle:oo,style:B,...G}),op=L(U?.dialog?.container,{baseClassName:A(i.container,!_&&(on?i.contentVisible:i.contentHidden)),noStyle:oo}),of=s(()=>({disableAnimation:_,noStyle:oo,scrollLock:oe,theme:Q.theme,trapFocus:ot}),[_,Q.theme,oo,oe,ot]),oh=s(()=>({uiSource:V??"dialog"}),[V]),og=$.blocking?"true":void 0,ob=e(d.Provider,{value:oh,children:e(u.Provider,{value:of,children:oi&&t(o,{children:[e(S,{sheets:N,noStyle:oo}),$.blocking&&!1!==T?T??e(C,{open:oi}):null,e("div",{ref:ol,"data-slot":"dialog-positioner","data-blocking":og,...ou,className:ou.className,children:e("div",{ref:oa,...op,"aria-describedby":"consent-dialog-description","aria-labelledby":"consent-dialog-title","aria-modal":ot?"true":void 0,"data-blocking":og,"data-testid":"consent-dialog-root",dir:or,role:"dialog",tabIndex:-1,children:w})})]})})});return om?m(ob,document.body):null},D=w;export{w as ConsentDialogRoot,D as Root};
@@ -1,2 +1,2 @@
1
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};
2
+ import{Fragment as o,jsx as r,jsxs as t}from"react/jsx-runtime";import{ConsentDialogTrigger as n}from"../panel-trigger/index.js";import{useActiveUI as e}from"../../hooks.js";import{useComponentConfig as i}from"../../hooks/use-component-config.js";import{ConsentCustomizationCard as l}from"./atoms/card.js";import{Root as s}from"./atoms/root.js";let m=({open:m,noStyle:a,disableAnimation:c,scrollLock:p,trapFocus:d,hideBranding:f,legalLinks:g,showTrigger:j=!1,models:u,uiSource:h})=>{let k=e(),y={open:m??"dialog"===k,...i({disableAnimation:c,noStyle:a}),models:u,scrollLock:p,trapFocus:d,uiSource:h},S=!0===j?{}:!1===j?null:j;return t(o,{children:[S&&r(n,{...S}),r(s,{...y,children:r(l,{noStyle:y.noStyle,legalLinks:g,hideBranding:f})})]})};export{m as ConsentDialog};
@@ -1,2 +1,2 @@
1
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};
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{useIdleDialogWarming as e,warmDialogChunk as i}from"../../../chunk-warming.js";import{usePolicyRule as n}from"../../../hooks.js";import{useTheme as s}from"../../../hooks/use-theme.js";import{useUIConfig as m}from"../../../ui-config-context.js";import{mergeSlotProps as g}from"../../../utils/merge-slot-props.js";import{useTriggerContext as a}from"./root.js";let l={"bottom-left":o.bottomLeft,"bottom-right":o.bottomRight,"top-left":o.topLeft,"top-right":o.topRight},p={lg:o.lg,md:o.md,sm:o.sm},d=r(({children:r,size:d="md",ariaLabel:c="Open privacy settings",className:f,"data-testid":u="consent-dialog-trigger",noStyle:h},b)=>{let j=n(),{components:y}=m(),{disableAnimation:k,noStyle:x}=s(),{corner:C,isDragging:v,isSnapping:B,wasDragged:E,handlers:F,dragStyle:L,openDialog:N}=a();e(!0);let P=g(y?.trigger?.root,{baseClassName:[o.trigger,l[C],p[d],v&&o.dragging,B&&o.snapping],className:f,"data-testid":u,noStyle:h??x,style:L,...F});return t("button",{...P,ref:b,type:"button","data-c15t-trigger":"true","data-c15t-rights":j.rights.join(" "),"data-disable-animation":k?"":void 0,"aria-label":c,onClick:t=>{0!==t.detail&&E()||N()},onFocus:t=>{P.onFocus?.(t),i()},onPointerEnter:t=>{P.onPointerEnter?.(t),i()},children:r})});d.displayName="ConsentDialogTrigger.Button";export{d as TriggerButton};
@@ -1,2 +1,2 @@
1
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};
2
+ import{jsx as r}from"react/jsx-runtime";import e from"@c15t/ui/styles/components/consent-dialog-trigger";import{isValidElement as i}from"react";import{BrandingCompactLogo as o}from"../../shared/ui/branding.js";import{useTheme as t}from"../../../hooks/use-theme.js";import{useUIConfig as n}from"../../../ui-config-context.js";import{mergeSlotProps as s}from"../../../utils/merge-slot-props.js";import{useTriggerContext as a}from"./root.js";import{FingerprintIcon as m,SettingsIcon as g}from"./trigger-icons.js";let c=({icon:c="branding",className:p,noStyle:l})=>{let d,{components:f}=n(),{noStyle:u}=t(),{branding:h}=a(),j=s(f?.trigger?.icon,{baseClassName:e.icon,className:p,noStyle:l??u});if(i(c))return r("span",{...j,"aria-hidden":"true",children:c});switch(c){case"fingerprint":d=r(m,{});break;case"settings":d=r(g,{});break;default:d=r(o,{branding:h})}return r("span",{...j,"aria-hidden":"true",children:d})};c.displayName="ConsentDialogTrigger.Icon";export{c as TriggerIcon};
@@ -1,2 +1,2 @@
1
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};
2
+ import{jsx as r,jsxs as o}from"react/jsx-runtime";import{createContext as t,useContext as e,useMemo as s}from"react";import{createPortal as i}from"react-dom";import{useConsentDialogTrigger as n}from"../../../component-hooks/use-panel-trigger.js";import{useBranding as m}from"../../../hooks.js";import{useIsHydrated as g}from"../../../hooks/use-is-hydrated.js";import{FIRST_PAINT_SHEETS as a}from"../../shared/first-paint-sheets.js";import{SurfaceStyles as l}from"../../shared/surface-styles.js";import{useDraggable as p}from"../use-draggable.js";let u=t(null),f=function(){let r=e(u);if(!r)throw Error("ConsentDialogTrigger components must be used within a ConsentDialogTrigger.Root");return r},d=({children:t,defaultPosition:e="bottom-right",persistPosition:f=!0,showWhen:d="always",visible:h,onPositionChange:c,onClick:j})=>{let T=m()??"c15t",{isVisible:C,openDialog:b}=n({onClick:j,showWhen:d}),x=h??C,{corner:y,isDragging:k,isSnapping:w,wasDragged:D,handlers:P,dragStyle:R}=p({defaultPosition:e,onPositionChange:c,persistPosition:f}),v=g(),E=s(()=>({branding:T,corner:y,dragStyle:R,handlers:P,isDragging:k,isSnapping:w,isVisible:x,openDialog:b,wasDragged:D}),[T,y,R,P,k,w,x,b,D]);return v&&x?i(o(u.Provider,{value:E,children:[r(l,{sheets:a}),t]}),document.body):null};d.displayName="ConsentDialogTrigger.Root";export{u as TriggerContext,d as TriggerRoot,f as useTriggerContext};
@@ -1,2 +1,2 @@
1
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};
2
+ import{jsx as e}from"react/jsx-runtime";import{createElement as t,useLayoutEffect as o,useMemo as r,useRef as i,useState as n}from"react";import s from"@c15t/ui/styles/components/consent-dialog-trigger";import{followDevToolsDock as l}from"@c15t/ui/utils/devtools-launcher";import{useTranslations as a}from"../../../component-hooks/use-translations.js";import{useDevToolsLauncher as d}from"../../../devtools-launcher.js";import{usePolicyRule as c}from"../../../hooks.js";import{useTheme as f}from"../../../hooks/use-theme.js";import{useUIConfig as m}from"../../../ui-config-context.js";import{mergeSlotProps as g}from"../../../utils/merge-slot-props.js";import{TriggerIcon as u}from"./icon.js";import{useTriggerContext as p}from"./root.js";import{DevToolsIcon as b}from"./trigger-icons.js";let h={"bottom-left":s.bottomLeft,"bottom-right":s.bottomRight,"top-left":s.topLeft,"top-right":s.topRight},k={lg:s.lg,md:s.md,sm:s.sm},y={focusId:"devtools",icon:e(b,{}),id:"devtools",kind:"devtools",label:"c15t DevTools"},v=function(){let e=c(),{rights:t}=a();return r(()=>{let o=e.rights.includes("opt-out")?"opt-out":"preferences";return{label:"opt-out"===o&&e.i18n?.messageProfile!=="preferences"?t?.optOut??"Do not sell or share my data":t?.preferences??"Manage preferences",right:o,rights:e.rights.join(" ")}},[e.rights,e.i18n?.messageProfile,t])},I=function(e,t,o,r,i,n){let s=e.map(e=>({...e,focusId:`custom:${e.id}`,kind:"custom"}));return(n&&s.push(y),i)?[...s,{className:t.className,focusId:"preferences",icon:t.icon??"branding",id:"preferences",kind:"preferences",label:t.label??r,onSelect:t.onSelect,right:o,style:t.style}]:s},j=function(e,t,o){let r=e.find(e=>"preferences"===e.kind),i=e.find(e=>"devtools"===e.kind);if(!r&&!i)return e;let n=e.filter(e=>"custom"===e.kind),s="horizontal"===t?o.endsWith("left"):o.startsWith("top"),l=r?[r]:[],a=i?[i]:[];return s?[...l,...n,...a]:[...a,...n,...l]},N=({actions:a,preferences:c,size:b="md",orientation:y="horizontal",ariaLabel:N="Privacy controls",showPreferences:S=!0,className:w,style:x,noStyle:D=!1})=>{let{components:C}=m(),{disableAnimation:T,noStyle:A}=f(),{label:L,right:P,rights:R}=v(),{corner:z,isDragging:E,isSnapping:H,wasDragged:M,handlers:O,dragStyle:W,openDialog:B}=p(),F=d(),K=null!==F,U=F?.dock,V=i(null),$=r(()=>j(I(a,c,P,L,S,K),y,z),[a,z,L,y,c,P,K,S]);o(()=>{let e=V.current;if(U&&e&&!E)return l(e,z,U)},[z,U,E]);let q=$.find(e=>!e.disabled)?.focusId,[G,J]=n(q),Q=i(new Map),X=D||A,Y=g(C?.trigger?.toolbar,{baseClassName:[s.toolbar,"vertical"===y&&s.toolbarVertical,h[z],E&&s.dragging,H&&s.snapping],className:w,noStyle:X,style:x}),Z=g(C?.trigger?.toolbarItem,{baseClassName:[s.toolbarItem,k[b]],noStyle:X}),_=g(C?.trigger?.toolbarIcon,{baseClassName:s.toolbarIcon,noStyle:X}),ee=$.some(e=>e.focusId===G&&!e.disabled)?G:q;return e("div",{...Y,"aria-label":N,"aria-orientation":y,"data-corner":z,"data-c15t-trigger-toolbar":"true","data-c15t-trigger":"true","data-disable-animation":T?"":void 0,"data-dragging":E||void 0,"data-snapping":H||void 0,dir:"ltr",onKeyDown:e=>{let t,o="vertical"===y?"ArrowDown":"ArrowRight",r="vertical"===y?"ArrowUp":"ArrowLeft";if(e.key!==o&&e.key!==r&&"Home"!==e.key&&"End"!==e.key)return;let i=$.filter(e=>!e.disabled);if(0===i.length)return;e.preventDefault();let n=i.findIndex(e=>e.focusId===ee);t="Home"===e.key?0:"End"===e.key?i.length-1:e.key===o?(n+1)%i.length:(n-1+i.length)%i.length;let s=i[t];s&&(J(s.focusId),Q.current.get(s.focusId)?.focus())},ref:V,role:"toolbar",style:{...Y.style,...W},tabIndex:-1,...O,children:$.map(o=>t("button",{...Z,key:o.focusId,ref:e=>{e?Q.current.set(o.focusId,e):Q.current.delete(o.focusId)},"aria-label":o.label,"aria-expanded":"devtools"===o.kind?F?.isOpen:void 0,"aria-pressed":"custom"===o.kind?o.pressed:void 0,className:[Z.className,o.className].filter(Boolean).join(" "),"data-c15t-rights":"preferences"===o.kind?R:void 0,"data-c15t-trigger-action":o.kind,"data-c15t-trigger-item":o.id,"data-right":"preferences"===o.kind?o.right:void 0,disabled:o.disabled,onClick:e=>((e,t)=>{if(!(0!==e.detail&&M())){if("devtools"===t.kind)return void F?.toggle();t.onSelect?.(),"preferences"===t.kind&&B()}})(e,o),onFocus:()=>J(o.focusId),style:{...Z.style,...o.style},tabIndex:o.focusId===ee?0:-1,type:"button"},e("span",{..._,"aria-hidden":"true",children:e(u,{icon:o.icon,noStyle:X})})))})};N.displayName="ConsentDialogTriggerToolbar";export{N as TriggerToolbar};
@@ -0,0 +1 @@
1
+ import{jsx as a,jsxs as t}from"react/jsx-runtime";let e=({title:e="Privacy",titleId:r="fingerprint-icon",...o})=>t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-labelledby":r,...o,children:[a("title",{id:r,children:e}),a("path",{d:"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4"}),a("path",{d:"M14 13.12c0 2.38 0 6.38-1 8.88"}),a("path",{d:"M17.29 21.02c.12-.6.43-2.3.5-3.02"}),a("path",{d:"M2 12a10 10 0 0 1 18-6"}),a("path",{d:"M2 16h.01"}),a("path",{d:"M21.8 16c.2-2 .131-5.354 0-6"}),a("path",{d:"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2"}),a("path",{d:"M8.65 22c.21-.66.45-1.32.57-2"}),a("path",{d:"M9 6.8a6 6 0 0 1 9 5.2v2"})]}),r=({title:e="Settings",titleId:r="settings-icon",...o})=>t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-labelledby":r,...o,children:[a("title",{id:r,children:e}),a("path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"}),a("circle",{cx:"12",cy:"12",r:"3"})]}),o=e=>t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",focusable:"false",...e,children:[a("path",{d:"m18 16 4-4-4-4"}),a("path",{d:"m6 8-4 4 4 4"}),a("path",{d:"m14.5 4-5 16"})]});export{o as DevToolsIcon,e as FingerprintIcon,r as SettingsIcon};
@@ -1,2 +1,2 @@
1
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};
2
+ import{jsx as o}from"react/jsx-runtime";import{useHasConsentPreferences 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};
@@ -1,2 +1,2 @@
1
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};
2
+ import{jsx as o}from"react/jsx-runtime";import{useMemo as t}from"react";import{useDevToolsLauncherAvailable as r}from"../../devtools-launcher.js";import{TriggerButton as e}from"./atoms/button.js";import{TriggerIcon as i}from"./atoms/icon.js";import{TriggerRoot as n,useTriggerContext as s}from"./atoms/root.js";import{TriggerText as a}from"./atoms/text.js";import{TriggerToolbar as m}from"./atoms/toolbar.js";let g=[],l=({icon:s="branding",defaultPosition:a="bottom-right",persistPosition:l=!0,ariaLabel:c="Open privacy settings",showWhen:p="always",size:f="md",className:T,noStyle:j,onClick:u,onPositionChange:b})=>{let d=r(),h=t(()=>({className:T,icon:s,label:c}),[c,T,s]);return o(n,{defaultPosition:a,persistPosition:l,showWhen:p,onClick:u,onPositionChange:b,children:d?o(m,{actions:g,noStyle:j,preferences:h,size:f}):o(e,{size:f,ariaLabel:c,className:T,noStyle:j,children:o(i,{icon:s,noStyle:j})})})};l.displayName="ConsentDialogTrigger";let c=Object.assign(l,{Button:e,Icon:i,Root:n,Text:a});export{c as ConsentDialogTrigger,e as TriggerButton,i as TriggerIcon,n as TriggerRoot,a as TriggerText,s as useTriggerContext};
@@ -1 +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};
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 a,useMemo as c}from"react";import{useTranslations as d}from"../../../component-hooks/use-translations.js";import{Box as s}from"../../shared/primitives/box.js";import{LucideIcon as l}from"../../shared/ui/icon.js";import{useConsentDraftSlice as m,useConsentDraftStore as p}from"../../../draft.js";import{useExplicitChoice as g,useRestrictions as u}from"../../../hooks.js";import{useTheme as y}from"../../../hooks/use-theme.js";import{ConsentWidgetVendorList as h}from"./vendor-list.js";import*as f from"../../shared/ui/preference-item/index.js";import*as w from"../../shared/ui/switch/index.js";let C=[{defaultValue:!0,description:"Required for basic site functionality",disabled:!0,display:!0,gdprType:1,name:"necessary"},{defaultValue:!1,description:"Enables enhanced features",display:!0,gdprType:2,name:"functionality"},{defaultValue:!1,description:"Analytics and performance measurement",display:!0,gdprType:4,name:"measurement"},{defaultValue:!1,description:"Improves your experience",display:!0,gdprType:3,name:"experience"},{defaultValue:!1,description:"Advertising and marketing",display:!0,gdprType:5,name:"marketing"}],v=n(null),A=function(){let e=a(v);if(!e)throw Error("ConsentWidgetAccordion components must be used within ConsentWidgetAccordion");return e},S=i(({children:t,...n},i)=>e(s,{ref:i,baseClassName:o.triggerRow,...n,children:t}));S.displayName="ConsentWidgetAccordionTrigger";let N=f.Trigger,b=f.Content,T=f.Leading,W=w.Root,j=({"data-testid":t,children:n,className:i,noStyle:a,onValueChange:d,style:l,type:m="multiple",value:p,...g})=>{let{noStyle:u}=y(),h=a??u,f=c(()=>Array.isArray(p)?p:p?[p]:[],[p]),w=r((e,t)=>{if("single"===m)return void d?.(t?e:"");let o=t?[...new Set([...f,e])]:f.filter(t=>t!==e);d?.(o)},[d,f,m]),C=c(()=>({noStyle:h,onToggleItem:w,openValues:f}),[h,w,f]);return e(v.Provider,{value:C,children:e(s,{className:i,"data-testid":t??"consent-widget-accordion",noStyle:a,style:l,slotKey:"accordion.root",baseClassName:o.list,...g,children:n})})},I=l({iconPath:e("path",{d:"M5 12h14M12 5v14"})}),K=l({iconPath:e("path",{d:"M5 12h14"})}),V=({consent:n,title:i,description:r,restricted:a,open:c,noStyle:d,onToggleItem:s})=>{let l=p(),g=m(l,e=>e.values[n.name]);return t(f.Root,{className:d?void 0:o.item,"data-testid":`consent-widget-accordion-item-${n.name}`,noStyle:!0,onOpenChange:e=>s(n.name,e),open:c,slotKey:"accordion-item.root",children:[t(S,{slotKey:"accordion.triggerRow",children:[t(N,{className:d?void 0:o.trigger,"data-testid":`consent-widget-accordion-trigger-${n.name}`,noStyle:!0,slotKey:"accordion-item.trigger",children:[e(T,{className:d?void 0:o.arrow,"data-testid":`consent-widget-accordion-arrow-${n.name}`,noStyle:!0,slotKey:"accordion.arrow",children:c?e(K,{"aria-hidden":"true"}):e(I,{"aria-hidden":"true"})}),e(f.Header,{noStyle:!0,slotKey:"accordion.header",children:e(f.Title,{className:d?void 0:o.title,noStyle:!0,slotKey:"accordion.title",children:i})})]}),e(f.Control,{className:d?void 0:o.control,noStyle:!0,slotKey:"accordion.control",children:e(W,{"aria-label":i,checked:g,"aria-describedby":a?`c15t-restriction-${n.name}`:void 0,onCheckedChange:e=>l.set(n.name,e),disabled:n.disabled,size:"small","data-testid":`consent-widget-switch-${n.name}`})})]}),a?e("output",{className:d?void 0:o.restriction,"data-testid":`consent-widget-restriction-${n.name}`,id:`c15t-restriction-${n.name}`,children:"Your saved choice is restricted by the current privacy settings."}):null,t(b,{className:d?void 0:o.content,"data-testid":`consent-widget-accordion-content-${n.name}`,innerClassName:d?void 0:o.contentInner,innerSlotKey:"accordion.contentInner",slotKey:"accordion-item.content",viewportClassName:d?void 0:o.contentViewport,viewportSlotKey:"accordion.contentViewport",children:[r,e(h,{category:n.name,noStyle:d})]})]})},$=()=>{let t=m(p(),e=>e.displayedCategories),o=g(),n=u(),i=function(e){if("necessary"===e)return!1;let t=o?.categories[e];return t?.value===!0&&(n[e]?.length??0)>0},{noStyle:r,onToggleItem:a,openValues:s}=A(),{consentTypes:l}=d();return c(()=>t.flatMap(e=>C.filter(t=>t.name===e)),[t]).map(t=>e(V,{consent:t,description:l[t.name]?.description??t.description,noStyle:r,onToggleItem:a,open:s.includes(t.name),restricted:i(t.name),title:l[t.name]?.title??t.name.replace(/_/gu," ").replace(/\b\w/gu,e=>e.toUpperCase())},t.name))},k=i(({className:t,...n},i)=>e(f.Root,{ref:i,className:[o.item,t].filter(Boolean).join(" "),noStyle:!0,...n}));k.displayName="ConsentWidgetAccordionItem";let x=N,R=S,M=b,L=T,P=j,E=W,q=$,z=k,B=h;export{P as Accordion,L as AccordionArrow,M as AccordionContent,z as AccordionItem,q as AccordionItems,R as AccordionTrigger,x as AccordionTriggerInner,j as ConsentWidgetAccordion,T as ConsentWidgetAccordionArrow,b as ConsentWidgetAccordionContent,k as ConsentWidgetAccordionItem,$ as ConsentWidgetAccordionItems,S as ConsentWidgetAccordionTrigger,N as ConsentWidgetAccordionTriggerInner,W as ConsentWidgetSwitch,h as ConsentWidgetVendorList,E as Switch,B as VendorList};
@@ -1,2 +1,2 @@
1
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};
2
+ import{Fragment as e,jsx as r,jsxs as t}from"react/jsx-runtime";import o from"@c15t/ui/styles/components/consent-manager";import{useMemo as i}from"react";import{DIALOG_SHEETS as s}from"../../shared/dialog-sheets.js";import{Box as m}from"../../shared/primitives/box.js";import{SurfaceStyles as n}from"../../shared/surface-styles.js";import{ConsentTrackingContext as c,useConsentTracking as a}from"../../../context/consent-tracking-context.js";import{LocalThemeContext as l}from"../../../context/theme-context.js";import{ConsentDraftProvider as d}from"../../../draft.js";import{useHasConsentUI as f}from"../../../hooks.js";import{useTextDirection as h}from"../../../hooks/use-text-direction.js";import{useTranslationLanguage as p}from"../../../kernel-selector.js";let u=({children:u,noStyle:j=!1,disableAnimation:g=!1,useProvider:x=!0,uiSource:v})=>{let k=h(p()),y=a(),P=i(()=>({disableAnimation:g,noStyle:j}),[g,j]),S=v??y.uiSource??"widget",b=i(()=>({uiSource:S}),[S]);if(!f())return null;let w=t(e,{children:[r(n,{sheets:s,noStyle:j}),r(m,{baseClassName:o.manager,"data-testid":"consent-widget-root",slotKey:"manager.root",dir:k,children:u})]});return x?r(c.Provider,{value:b,children:r(l.Provider,{value:P,children:r(d,{children:w})})}):r(c.Provider,{value:b,children:r(d,{children:w})})},j=u;export{u as ConsentWidgetRoot,j as Root};
@@ -0,0 +1 @@
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import{vendorsListedUnder as o}from"@c15t/core";import n from"@c15t/ui/styles/components/vendor-list";import{useId as r,useMemo as i,useState as s}from"react";import{useTranslations as l}from"../../../component-hooks/use-translations.js";import{Box as d}from"../../shared/primitives/box.js";import{useConsentDraftSlice as a,useConsentDraftStore as c}from"../../../draft.js";import{useDeclaredVendors as h}from"../../../hooks.js";import{useTheme as m}from"../../../hooks/use-theme.js";import*as y from"../../shared/ui/preference-item/index.js";import*as p from"../../shared/ui/switch/index.js";let v=({open:o})=>t("svg",{"aria-hidden":"true",fill:"none",focusable:"false",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",viewBox:"0 0 24 24",children:[e("title",{children:o?"Close":"Open"}),o?e("path",{d:"M5 12h14"}):e("path",{d:"M5 12h14M12 5v14"})]}),g={disabledByCategory:"Turn on this category to choose vendors.",privacyPolicy:"Privacy policy",switchLabel:"Allow {vendor}",title:"Vendors ({count})"},u=({category:o,categoryOn:n,checked:r,copy:i,labelId:l,noStyle:a,onCheckedChange:c,styles:h,vendor:m})=>{let[g,u]=s(!1),C=m.name??m.id,b=!0!==m.disabled,f=!!(m.description||m.privacyPolicyUrl);return t(y.Root,{className:h?.item,"data-testid":`consent-widget-vendor-item-${o}-${m.id}`,disabled:!f,noStyle:a,onOpenChange:u,open:g,slotKey:"vendor-list.item",children:[t(d,{noStyle:a,baseClassName:h?.header,slotKey:"vendor-list.header",children:[t(y.Trigger,{className:h?.trigger,"data-testid":`consent-widget-vendor-trigger-${o}-${m.id}`,noStyle:a,slotKey:"vendor-list.trigger",children:[e(y.Leading,{className:h?.arrow,noStyle:a,children:e(v,{open:g})}),e(d,{asChild:!0,noStyle:a,baseClassName:h?.name,slotKey:"vendor-list.name",children:e("span",{"data-testid":`consent-widget-vendor-name-${o}-${m.id}`,id:l,children:C})})]}),b?e(d,{noStyle:a,baseClassName:h?.control,slotKey:"vendor-list.control",children:e(p.Root,{"aria-label":i.switchLabel.replace("{vendor}",C),"aria-describedby":l,checked:r,"data-testid":`consent-widget-vendor-switch-${o}-${m.id}`,disabled:!n,onCheckedChange:c,size:"small"})}):null]}),f?t(y.Content,{className:h?.content,"data-testid":`consent-widget-vendor-content-${o}-${m.id}`,innerClassName:h?.contentInner,noStyle:a,slotKey:"vendor-list.content",children:[m.description?e(d,{asChild:!0,noStyle:a,baseClassName:h?.description,slotKey:"vendor-list.description",children:e("p",{children:m.description})}):null,m.privacyPolicyUrl?e(d,{asChild:!0,noStyle:a,baseClassName:h?.link,slotKey:"vendor-list.link",children:e("a",{href:m.privacyPolicyUrl,rel:"noopener noreferrer",target:"_blank",children:i.privacyPolicy})}):null]}):null]})},C=({category:s,className:y,noStyle:p,...v})=>{let C=h(),b=i(()=>o(C,s),[C,s]),f=c(),$=a(f,e=>!0===e.values[s]),k=a(f,e=>e.vendors),{consentManagerDialog:w}=l(),{noStyle:N}=m(),S=r(),j=p??N??!1;if(0===b.length)return null;let K={...g,...w.vendors},x=j?void 0:n,L=K.title.replace("{count}",String(b.length));return e(d,{asChild:!0,className:y,"data-testid":`consent-widget-vendor-list-${s}`,noStyle:j,baseClassName:x?.root,slotKey:"vendor-list.root",...v,children:t("section",{"aria-label":L,children:[$?null:e("p",{className:x?.hint,"data-testid":`consent-widget-vendor-hint-${s}`,children:K.disabledByCategory}),b.map(t=>e(u,{category:s,categoryOn:$,checked:k[t.id]??!0,copy:K,labelId:`${S}vendor-${s}-${t.id}`,noStyle:j,onCheckedChange:e=>f.setVendor(t.id,e),styles:x,vendor:t},t.id))]})})};export{C as ConsentWidgetVendorList};
@@ -1,2 +1,2 @@
1
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};
2
+ import{Accordion as o,AccordionArrow as t,AccordionContent as n,AccordionItem as e,AccordionItems as r,AccordionTrigger as i,AccordionTriggerInner as c,ConsentWidgetAccordion as s,ConsentWidgetAccordionArrow as d,ConsentWidgetAccordionContent as A,ConsentWidgetAccordionItem as g,ConsentWidgetAccordionItems as m,ConsentWidgetAccordionTrigger as C,ConsentWidgetAccordionTriggerInner as u,ConsentWidgetSwitch as W,ConsentWidgetVendorList as p,Switch as a,VendorList as l}from"./atoms/accordion.js";import{AcceptAllButton as B,ConsentWidgetAcceptAllButton as f,ConsentWidgetCustomizeButton as j,ConsentWidgetRejectButton as I,ConsentWidgetSaveButton as S,CustomizeButton as w,RejectButton as F,SaveButton as R}from"./atoms/button.js";import{ConsentWidgetFooter as T,ConsentWidgetFooterSubGroup as b,Footer as y,FooterSubGroup as h}from"./atoms/footer.js";import{ConsentWidgetRoot as v,Root as z}from"./atoms/root.js";import{ConsentWidgetPolicyActions as G,PolicyActions as L}from"./policy-actions.js";import{ConsentWidget as P}from"./preferences.js";let V=Object.assign(P,{AcceptAllButton:B,Accordion:o,AccordionArrow:t,AccordionContent:n,AccordionItem:e,AccordionItems:r,AccordionTrigger:i,AccordionTriggerInner:c,CustomizeButton:w,Footer:y,FooterSubGroup:h,PolicyActions:L,RejectButton:F,Root:z,SaveButton:R,Switch:a,VendorList:l});export default V;export{B as AcceptAllButton,o as Accordion,t as AccordionArrow,n as AccordionContent,e as AccordionItem,r as AccordionItems,i as AccordionTrigger,c as AccordionTriggerInner,f as ConsentWidgetAcceptAllButton,s as ConsentWidgetAccordion,d as ConsentWidgetAccordionArrow,A as ConsentWidgetAccordionContent,g as ConsentWidgetAccordionItem,m as ConsentWidgetAccordionItems,C as ConsentWidgetAccordionTrigger,u as ConsentWidgetAccordionTriggerInner,j as ConsentWidgetCustomizeButton,T as ConsentWidgetFooter,b as ConsentWidgetFooterSubGroup,G as ConsentWidgetPolicyActions,I as ConsentWidgetRejectButton,v as ConsentWidgetRoot,S as ConsentWidgetSaveButton,W as ConsentWidgetSwitch,p as ConsentWidgetVendorList,w as CustomizeButton,y as Footer,h as FooterSubGroup,L as PolicyActions,F as RejectButton,z as Root,R as SaveButton,a as Switch,l as VendorList,V as ConsentWidget};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as r}from"react/jsx-runtime";import{EARLY_CONSENT_TAP_SCRIPT as t,replayEarlyConsentTaps as e}from"@c15t/core/surface-actions";import{useContext as o,useEffect as n,useLayoutEffect as c,useRef as i,useState as m}from"react";import{ProviderServicesContext as s}from"../../../context.js";import{toSaveUISource as u,useConsentTracking as l}from"../../../context/consent-tracking-context.js";import{useCommittedRef as f}from"../../../hooks/use-committed-ref.js";import{useIsHydrated as a}from"../../../hooks/use-is-hydrated.js";import{useKernel as p}from"../../../kernel-selector.js";import{useUIConfig as d}from"../../../ui-config-context.js";let j="u"<typeof document?n:c,g=()=>{let{nonce:c}=d(),[g]=m(!a()),x=p(),h=u(l().uiSource),k=f(o(s)),y=i(null),S=i(null);return(j(()=>{S.current=y.current?.ownerDocument.defaultView??null},[]),n(()=>e(x,{categories:()=>k.current?.getConsentCategories(),started:()=>k.current?.isStarted()??!0,uiSource:h,view:S.current}),[x,k,h]),g)?r("script",{ref:y,nonce:c,dangerouslySetInnerHTML:{__html:t}}):null};export{g as EarlyTapScript};
@@ -1 +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};
1
+ import{jsx as e}from"react/jsx-runtime";import r from"@c15t/ui/styles/components/consent-banner";import{forwardRef as o,isValidElement as t}from"react";import{Slot as s}from"../../shared/libs/slot.js";import{useActiveUI as n}from"../../../hooks.js";import{useLateEntry as l}from"../../../hooks/use-late-entry.js";import{useScrollLock as a}from"../../../hooks/use-scroll-lock.js";import{useTheme as i}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=o(({className:o,style:f,noStyle:y,asChild:d,children:u,...v},h)=>{let j=n(),{disableAnimation:b,noStyle:k,scrollLock:N}=i(),{components:g}=m(),x="banner"===j,C=c(g?.banner?.overlay,{baseClassName:r.overlay,className:o,noStyle:k||y,style:f,...v}),O=k||y||b?void 0:`${r.overlayVisible} ${r.overlayEntering}`,B=p(C.className,O);a(!!(x&&N));let S=l(!!(x&&N))&&!b;if(!(x&&N))return null;let $={...C,"aria-hidden":!0,className:B,"data-entry":S?"late":void 0,"data-testid":"consent-banner-overlay"};return d&&t(u)?e(s,{ref:h,...$,children:u}):e("div",{ref:h,...$,children:u})});f.displayName="ConsentBannerOverlay";let y=f;export{f as ConsentBannerOverlay,y as Overlay};
@@ -1,2 +1,2 @@
1
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};
2
+ import{Fragment as o,jsx as t,jsxs as r}from"react/jsx-runtime";import e from"@c15t/ui/styles/components/consent-banner";import{forwardRef as i,useMemo as s}from"react";import{useHeadlessConsentUI as n}from"../../../component-hooks/use-headless-consent-ui.js";import{ConsentTrackingContext as a}from"../../../context/consent-tracking-context.js";import{LocalThemeContext as l}from"../../../context/theme-context.js";import{useActiveUI as m,useHasConsentUI as c,useModel as p,usePolicyRule as d,useTranslations as u}from"../../../hooks.js";import{useIABPolicyGuard as f}from"../../../hooks/use-iab-policy-guard.js";import{useLateEntry as h}from"../../../hooks/use-late-entry.js";import{useTextDirection as j}from"../../../hooks/use-text-direction.js";import{useUIConfig as b}from"../../../ui-config-context.js";import{defaultTranslationConfig as v}from"../../../utils/default-translation-config.js";import{mergeSlotProps as g}from"../../../utils/merge-slot-props.js";import{FIRST_PAINT_SHEETS as k}from"../../shared/first-paint-sheets.js";import{StreamedSurface as y}from"../../shared/streamed-surface.js";import{SurfaceStyles as x}from"../../shared/surface-styles.js";import{ConsentBannerSurfaceContext as N,mirrorDefaultPosition as S,useConsentBannerSurface as C}from"../surface-context.js";import{EarlyTapScript as $}from"./early-tap-script.js";import{Overlay as L}from"./overlay.js";let P=["opt-in","opt-out"],R=i(({asChild:i,children:s,className:n,style:a,className:l,disableAnimation:y,noStyle:N,models:R=P,...B},F)=>{f();let A=m(),{components:E}=b(),V=c(),q=p()??"opt-in",w=d(),z=C(),D=u(),G=j(D?.language??v.defaultLanguage),H=S(z.position,z.positionSource,z.variant,G),I=V&&"banner"===A&&R.includes(q),J=h(I)&&!y,K=g(E?.banner?.root,{baseClassName:e.root,className:n||l,noStyle:N,style:a,...B}),M=N?K.className||"":`${K.className||""} ${y?"":`${e.bannerVisible} ${e.bannerEntering}`}`;return I?r(o,{children:[t($,{}),t(x,{sheets:k,noStyle:N}),t(L,{}),t("div",{ref:F,...K,className:M,"data-variant":z.variant,"data-position":H,"data-blocking":z.blocking?"true":void 0,"data-prompt":w.prompt,"data-model":w.model,"data-entry":J?"late":void 0,"data-testid":"consent-banner-root",dir:G,children:s})]}):null}),B=({children:o,className:r,noStyle:e,disableAnimation:i,scrollLock:m,trapFocus:c,models:p,uiSource:d,variant:u,position:f,blocking:h,...j})=>{let{banner:b}=n({prompt:{blocking:h,position:f,scrollLock:m,trapFocus:c,variant:u}}),v=b.scrollLock,g=b.trapFocus,k=s(()=>({disableAnimation:i,noStyle:e,scrollLock:v,trapFocus:g}),[i,e,v,g]),y=s(()=>({blocking:b.blocking,position:b.position,positionSource:b.positionSource,variant:b.variant}),[b.blocking,b.position,b.positionSource,b.variant]),x=s(()=>({uiSource:d??"banner"}),[d]);return t(a.Provider,{value:x,children:t(l.Provider,{value:k,children:t(N.Provider,{value:y,children:t(R,{disableAnimation:i,className:r,noStyle:e,models:p,...j,children:o})})})})};R.displayName="ConsentBannerRootChildren";let F=o=>t(y,{children:t(B,{...o})}),A=F;export{F as ConsentBannerRoot,A as Root};