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

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 (413) hide show
  1. package/AGENTS.md +97 -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/iab-prompt/iab-prompt.js +1 -1
  27. package/dist/components/panel/atoms/card.js +1 -1
  28. package/dist/components/panel/atoms/overlay.js +1 -1
  29. package/dist/components/panel/atoms/root.js +1 -1
  30. package/dist/components/panel/panel.js +1 -1
  31. package/dist/components/panel-trigger/atoms/button.js +1 -1
  32. package/dist/components/panel-trigger/atoms/icon.js +1 -1
  33. package/dist/components/panel-trigger/atoms/root.js +1 -1
  34. package/dist/components/panel-trigger/atoms/toolbar.js +1 -1
  35. package/dist/components/panel-trigger/atoms/trigger-icons.js +1 -0
  36. package/dist/components/panel-trigger/panel-trigger-toolbar.js +1 -1
  37. package/dist/components/panel-trigger/panel-trigger.js +1 -1
  38. package/dist/components/panel-trigger/toolbar-loader.js +2 -0
  39. package/dist/components/preferences/atoms/accordion.js +1 -1
  40. package/dist/components/preferences/atoms/root.js +1 -1
  41. package/dist/components/preferences/atoms/vendor-list.js +1 -0
  42. package/dist/components/preferences/index.js +1 -1
  43. package/dist/components/prompt/atoms/early-tap-script.js +2 -0
  44. package/dist/components/prompt/atoms/overlay.js +1 -1
  45. package/dist/components/prompt/atoms/root.js +1 -1
  46. package/dist/components/prompt/components.js +1 -1
  47. package/dist/components/prompt/policy-actions.js +1 -1
  48. package/dist/components/prompt/prompt.js +1 -1
  49. package/dist/components/shared/dialog-sheets.js +1 -0
  50. package/dist/components/shared/first-paint-sheets.js +1 -0
  51. package/dist/components/shared/iab-dialog-sheets.js +1 -0
  52. package/dist/components/shared/iab-first-paint-sheets.js +1 -0
  53. package/dist/components/shared/libs/compose-refs.js +1 -0
  54. package/dist/components/shared/libs/slot.js +1 -1
  55. package/dist/components/shared/primitives/button.js +1 -1
  56. package/dist/components/shared/primitives/legal-links/index.js +1 -1
  57. package/dist/components/shared/streamed-surface.js +2 -0
  58. package/dist/components/shared/surface-styles.js +2 -0
  59. package/dist/components/shared/ui/dialog/dialog.js +1 -1
  60. package/dist/components/shared/ui/icon.js +1 -1
  61. package/dist/components/shared/ui/logo.js +1 -1
  62. package/dist/components/shared/ui/preference-item/preference-item.js +1 -1
  63. package/dist/consent-gate.js +2 -0
  64. package/dist/consent-theme.js +1 -0
  65. package/dist/context/consent-tracking-context.js +1 -1
  66. package/dist/context/index.js +1 -1
  67. package/dist/context.js +1 -1
  68. package/dist/devtools-launcher.js +2 -0
  69. package/dist/devtools.js +1 -1
  70. package/dist/draft-context.js +2 -0
  71. package/dist/draft.js +1 -1
  72. package/dist/external-iab-context.js +1 -1
  73. package/dist/gpp.js +2 -0
  74. package/dist/headless.js +1 -1
  75. package/dist/hooks/use-color-scheme.js +1 -1
  76. package/dist/hooks/use-committed-ref.js +2 -0
  77. package/dist/hooks/use-focus-trap.js +1 -1
  78. package/dist/hooks/use-headless-iab-consent-ui.js +1 -1
  79. package/dist/hooks/use-iab-policy-guard.js +1 -0
  80. package/dist/hooks/use-late-entry.js +2 -0
  81. package/dist/hooks.js +1 -1
  82. package/dist/iab/styles.tw3.css +5 -45
  83. package/dist/iab-context.js +1 -1
  84. package/dist/iab-dialog-deferred.js +2 -0
  85. package/dist/iab.js +1 -1
  86. package/dist/index-parts/consent-banner.js +1 -0
  87. package/dist/index-parts/consent-dialog-link.js +1 -0
  88. package/dist/index-parts/consent-dialog-trigger.js +1 -0
  89. package/dist/index-parts/consent-dialog.js +1 -0
  90. package/dist/index-parts/consent-gate.js +1 -0
  91. package/dist/index-parts/core.js +1 -0
  92. package/dist/index-parts/draft.js +1 -0
  93. package/dist/index-parts/frame.js +1 -0
  94. package/dist/index-parts/hooks.js +1 -0
  95. package/dist/index-parts/hosted.js +1 -0
  96. package/dist/index-parts/module-hooks.js +1 -0
  97. package/dist/index-parts/offline.js +1 -0
  98. package/dist/index-parts/presets.js +1 -0
  99. package/dist/index-parts/provider.js +1 -0
  100. package/dist/index-parts/theme.js +1 -0
  101. package/dist/index-parts/translations.js +1 -0
  102. package/dist/index.js +1 -1
  103. package/dist/kernel-selector.js +1 -0
  104. package/dist/modes.js +1 -0
  105. package/dist/module-hooks/iframe-blocker.js +1 -1
  106. package/dist/module-hooks/network-blocker.js +1 -1
  107. package/dist/module-hooks/network-hold.js +2 -0
  108. package/dist/module-hooks/persistence.js +1 -1
  109. package/dist/panel-link.js +1 -1
  110. package/dist/panel-trigger.js +1 -1
  111. package/dist/panel.js +1 -1
  112. package/dist/postcss-tailwind3.js +1 -0
  113. package/dist/preferences.js +1 -2
  114. package/dist/provider.js +1 -1
  115. package/dist/server/fetch-ssr-data.js +1 -1
  116. package/dist/server/headers.js +1 -1
  117. package/dist/server/normalize-url.js +1 -1
  118. package/dist/styles.tw3.css +33 -51
  119. package/dist/transports/hosted.js +1 -0
  120. package/dist/transports/manifest.js +1 -0
  121. package/dist/transports/offline.js +1 -1
  122. package/dist/utils/deferred-module.js +2 -0
  123. package/dist/utils/merge-slot-props.js +1 -1
  124. package/dist/utils/theme-utils.js +1 -1
  125. package/dist/version.js +1 -1
  126. package/dist-types/aggregate-components.d.ts +2 -2
  127. package/dist-types/chunk-warming.d.ts +42 -8
  128. package/dist-types/component-hooks/use-headless-consent-ui.d.ts +5 -5
  129. package/dist-types/component-hooks/use-headless-iab-consent-ui.d.ts +2 -2
  130. package/dist-types/components/consent-gate/atoms.d.ts +11 -0
  131. package/dist-types/components/consent-gate/consent-gate.d.ts +2 -0
  132. package/dist-types/components/consent-gate/frame.d.ts +19 -0
  133. package/dist-types/components/consent-gate/index.d.ts +25 -0
  134. package/dist-types/components/{frame → consent-gate}/types.d.ts +7 -7
  135. package/dist-types/components/consent-preferences-link/consent-preferences-link.d.ts +1 -1
  136. package/dist-types/components/consent-preferences-link/index.d.ts +1 -1
  137. package/dist-types/components/iab-panel/atoms/feature-item.d.ts +28 -0
  138. package/dist-types/components/iab-panel/atoms/purpose-item.d.ts +5 -2
  139. package/dist-types/components/iab-panel/atoms/stack-item.d.ts +7 -2
  140. package/dist-types/components/iab-panel/atoms/vendor-list.d.ts +1 -1
  141. package/dist-types/components/iab-panel/iab-panel.d.ts +3 -3
  142. package/dist-types/components/iab-panel/index.d.ts +29 -26
  143. package/dist-types/components/iab-panel/use-iab-translations.d.ts +4 -0
  144. package/dist-types/components/iab-prompt/iab-prompt.d.ts +3 -3
  145. package/dist-types/components/iab-prompt/index.d.ts +19 -19
  146. package/dist-types/components/panel/atoms/card.d.ts +5 -4
  147. package/dist-types/components/panel/atoms/overlay.d.ts +1 -1
  148. package/dist-types/components/panel/index.d.ts +8 -8
  149. package/dist-types/components/panel/panel.d.ts +3 -3
  150. package/dist-types/components/panel-link/index.d.ts +1 -1
  151. package/dist-types/components/panel-trigger/atoms/button.d.ts +1 -1
  152. package/dist-types/components/panel-trigger/atoms/icon.d.ts +1 -1
  153. package/dist-types/components/panel-trigger/atoms/root.d.ts +2 -2
  154. package/dist-types/components/panel-trigger/atoms/toolbar.d.ts +2 -2
  155. package/dist-types/components/panel-trigger/atoms/trigger-icons.d.ts +25 -0
  156. package/dist-types/components/panel-trigger/index.d.ts +4 -4
  157. package/dist-types/components/panel-trigger/panel-trigger-toolbar.d.ts +1 -1
  158. package/dist-types/components/panel-trigger/panel-trigger.d.ts +9 -17
  159. package/dist-types/components/panel-trigger/toolbar-loader.d.ts +34 -0
  160. package/dist-types/components/panel-trigger/types.d.ts +1 -1
  161. package/dist-types/components/preferences/atoms/accordion.d.ts +6 -4
  162. package/dist-types/components/preferences/atoms/button.d.ts +1 -1
  163. package/dist-types/components/preferences/atoms/footer.d.ts +1 -1
  164. package/dist-types/components/preferences/atoms/root.d.ts +1 -1
  165. package/dist-types/components/preferences/atoms/vendor-list.d.ts +23 -0
  166. package/dist-types/components/preferences/index.d.ts +14 -12
  167. package/dist-types/components/preferences/policy-actions.d.ts +2 -2
  168. package/dist-types/components/preferences/preferences.d.ts +1 -1
  169. package/dist-types/components/preferences/types.d.ts +1 -1
  170. package/dist-types/components/prompt/atoms/early-tap-script.d.ts +17 -0
  171. package/dist-types/components/prompt/atoms/root.d.ts +4 -0
  172. package/dist-types/components/prompt/components.d.ts +9 -3
  173. package/dist-types/components/prompt/index.d.ts +12 -12
  174. package/dist-types/components/prompt/policy-actions.d.ts +2 -2
  175. package/dist-types/components/prompt/prompt.d.ts +5 -1
  176. package/dist-types/components/shared/dialog-sheets.d.ts +9 -0
  177. package/dist-types/components/shared/first-paint-sheets.d.ts +8 -0
  178. package/dist-types/components/shared/iab-dialog-sheets.d.ts +3 -0
  179. package/dist-types/components/shared/iab-first-paint-sheets.d.ts +3 -0
  180. package/dist-types/components/shared/libs/compose-refs.d.ts +20 -0
  181. package/dist-types/components/shared/policy-actions.d.ts +2 -2
  182. package/dist-types/components/shared/primitives/box.d.ts +1 -1
  183. package/dist-types/components/shared/primitives/button.d.ts +2 -2
  184. package/dist-types/components/shared/primitives/button.types.d.ts +1 -1
  185. package/dist-types/components/shared/streamed-surface.d.ts +23 -0
  186. package/dist-types/components/shared/surface-styles.d.ts +60 -0
  187. package/dist-types/components/shared/ui/accordion/accordion.d.ts +2 -2
  188. package/dist-types/components/shared/ui/accordion/index.d.ts +2 -2
  189. package/dist-types/components/shared/ui/animated-collapse/index.d.ts +2 -2
  190. package/dist-types/components/shared/ui/branding.d.ts +1 -1
  191. package/dist-types/components/shared/ui/button/button.d.ts +1 -1
  192. package/dist-types/components/shared/ui/button/index.d.ts +2 -2
  193. package/dist-types/components/shared/ui/collapsible/index.d.ts +1 -1
  194. package/dist-types/components/shared/ui/dialog/index.d.ts +1 -1
  195. package/dist-types/components/shared/ui/icon.d.ts +2 -1
  196. package/dist-types/components/shared/ui/logo.d.ts +0 -10
  197. package/dist-types/components/shared/ui/preference-item/index.d.ts +1 -1
  198. package/dist-types/components/shared/ui/preference-item/preference-item.d.ts +13 -0
  199. package/dist-types/components/shared/ui/switch/index.d.ts +2 -2
  200. package/dist-types/components/shared/ui/switch/switch.d.ts +1 -1
  201. package/dist-types/components/shared/ui/tabs/index.d.ts +1 -1
  202. package/dist-types/consent-gate.d.ts +1 -0
  203. package/dist-types/consent-theme.d.ts +38 -0
  204. package/dist-types/context/consent-tracking-context.d.ts +10 -0
  205. package/dist-types/context/index.d.ts +3 -3
  206. package/dist-types/context/theme-context.d.ts +3 -3
  207. package/dist-types/context.d.ts +25 -1
  208. package/dist-types/devtools-launcher.d.ts +29 -0
  209. package/dist-types/devtools.d.ts +13 -2
  210. package/dist-types/draft-context.d.ts +31 -0
  211. package/dist-types/draft.d.ts +81 -9
  212. package/dist-types/gpp.d.ts +27 -0
  213. package/dist-types/headless.d.ts +6 -7
  214. package/dist-types/hooks/use-committed-ref.d.ts +24 -0
  215. package/dist-types/hooks/use-focus-trap.d.ts +3 -1
  216. package/dist-types/hooks/use-headless-iab-consent-ui.d.ts +1 -1
  217. package/dist-types/hooks/use-iab-manager.d.ts +5 -5
  218. package/dist-types/hooks/use-iab-policy-guard.d.ts +35 -0
  219. package/dist-types/hooks/use-late-entry.d.ts +14 -0
  220. package/dist-types/hooks/use-theme.d.ts +1 -1
  221. package/dist-types/hooks.d.ts +106 -11
  222. package/dist-types/iab-dialog-deferred.d.ts +36 -0
  223. package/dist-types/iab.d.ts +8 -7
  224. package/dist-types/index-parts/consent-banner.d.ts +7 -0
  225. package/dist-types/index-parts/consent-dialog-link.d.ts +7 -0
  226. package/dist-types/index-parts/consent-dialog-trigger.d.ts +7 -0
  227. package/dist-types/index-parts/consent-dialog.d.ts +7 -0
  228. package/dist-types/index-parts/consent-gate.d.ts +7 -0
  229. package/dist-types/index-parts/core.d.ts +7 -0
  230. package/dist-types/index-parts/draft.d.ts +7 -0
  231. package/dist-types/index-parts/frame.d.ts +7 -0
  232. package/dist-types/index-parts/hooks.d.ts +7 -0
  233. package/dist-types/index-parts/hosted.d.ts +7 -0
  234. package/dist-types/index-parts/module-hooks.d.ts +7 -0
  235. package/dist-types/index-parts/offline.d.ts +7 -0
  236. package/dist-types/index-parts/presets.d.ts +7 -0
  237. package/dist-types/index-parts/provider.d.ts +7 -0
  238. package/dist-types/index-parts/theme.d.ts +8 -0
  239. package/dist-types/index-parts/translations.d.ts +7 -0
  240. package/dist-types/index.d.ts +32 -28
  241. package/dist-types/kernel-selector.d.ts +68 -0
  242. package/dist-types/modes.d.ts +26 -0
  243. package/dist-types/module-hooks/iframe-blocker.d.ts +33 -1
  244. package/dist-types/module-hooks/network-blocker.d.ts +23 -0
  245. package/dist-types/module-hooks/network-hold.d.ts +47 -0
  246. package/dist-types/module-hooks.d.ts +4 -4
  247. package/dist-types/panel-link.d.ts +1 -1
  248. package/dist-types/panel-trigger.d.ts +1 -1
  249. package/dist-types/panel.d.ts +13 -1
  250. package/dist-types/postcss-tailwind3.d.ts +21 -0
  251. package/dist-types/preferences.d.ts +12 -1
  252. package/dist-types/primitives/accordion.d.ts +1 -1
  253. package/dist-types/primitives/button.d.ts +1 -1
  254. package/dist-types/primitives/collapsible.d.ts +1 -1
  255. package/dist-types/primitives/dialog.d.ts +1 -1
  256. package/dist-types/primitives/preference-item.d.ts +1 -1
  257. package/dist-types/primitives/switch.d.ts +1 -1
  258. package/dist-types/primitives/tabs.d.ts +1 -1
  259. package/dist-types/primitives.d.ts +7 -7
  260. package/dist-types/prompt.d.ts +1 -1
  261. package/dist-types/provider.d.ts +169 -28
  262. package/dist-types/server/fetch-ssr-data.d.ts +1 -1
  263. package/dist-types/server/headers.d.ts +14 -4
  264. package/dist-types/server/index.d.ts +5 -5
  265. package/dist-types/server/normalize-url.d.ts +14 -7
  266. package/dist-types/server/types.d.ts +12 -1
  267. package/dist-types/theme-provider.d.ts +2 -2
  268. package/dist-types/transports/hosted.d.ts +36 -0
  269. package/dist-types/transports/manifest.d.ts +48 -0
  270. package/dist-types/transports/offline.d.ts +7 -16
  271. package/dist-types/types/index.d.ts +3 -3
  272. package/dist-types/types/manager.d.ts +1 -1
  273. package/dist-types/types/theme/index.d.ts +1 -1
  274. package/dist-types/ui-config-context.d.ts +14 -2
  275. package/dist-types/utils/deferred-module.d.ts +13 -0
  276. package/dist-types/utils/index.d.ts +4 -4
  277. package/dist-types/utils/merge-slot-props.d.ts +17 -3
  278. package/dist-types/utils/merge-styles.d.ts +1 -1
  279. package/dist-types/utils/theme-utils.d.ts +18 -3
  280. package/dist-types/version.d.ts +1 -1
  281. package/docs/README.md +97 -70
  282. package/docs/assets/v3/bottom-bar.png +0 -0
  283. package/docs/assets/v3/brand-card.png +0 -0
  284. package/docs/assets/v3/brand-preferences.png +0 -0
  285. package/docs/assets/v3/choice-wall.png +0 -0
  286. package/docs/assets/v3/headless-bar-html.png +0 -0
  287. package/docs/assets/v3/headless-bar-mobile.png +0 -0
  288. package/docs/assets/v3/headless-bar.png +0 -0
  289. package/docs/assets/v3/slim-bar.png +0 -0
  290. package/docs/concepts/choose-your-setup.md +141 -0
  291. package/docs/concepts/consent-categories.md +84 -0
  292. package/docs/concepts/consent-state.md +421 -0
  293. package/docs/concepts/data-fetching.md +284 -0
  294. package/docs/concepts/how-consent-works.md +123 -0
  295. package/docs/concepts/modes.md +281 -0
  296. package/docs/{frameworks/react/concepts/policy-presets.md → concepts/policies.md} +8 -60
  297. package/docs/customization/class-names.md +202 -0
  298. package/docs/customization/dark-mode.md +157 -0
  299. package/docs/customization/motion.md +128 -0
  300. package/docs/customization/overview.md +68 -33
  301. package/docs/customization/recipes.md +838 -47
  302. package/docs/customization/slots.md +217 -35
  303. package/docs/customization/stylesheets.md +248 -0
  304. package/docs/customization/tailwind.md +863 -0
  305. package/docs/customization/tokens.md +167 -36
  306. package/docs/customization/translations.md +87 -3
  307. package/docs/frameworks/react/callbacks.md +118 -0
  308. package/docs/frameworks/react/clear-on-revocation.md +106 -0
  309. package/docs/frameworks/react/components/consent-banner.md +48 -27
  310. package/docs/frameworks/react/components/consent-dialog-link.md +13 -11
  311. package/docs/frameworks/react/components/consent-dialog-trigger.md +86 -76
  312. package/docs/frameworks/react/components/consent-dialog.md +111 -58
  313. package/docs/frameworks/react/components/{frame.md → consent-gate.md} +70 -49
  314. package/docs/frameworks/react/components/consent-provider.md +143 -0
  315. package/docs/frameworks/react/components/consent-widget.md +69 -24
  316. package/docs/frameworks/react/components/dev-tools.md +76 -85
  317. package/docs/frameworks/react/components.md +113 -0
  318. package/docs/frameworks/react/compose.md +354 -0
  319. package/docs/frameworks/react/content-security-policy.md +149 -0
  320. package/docs/frameworks/react/customize.md +258 -0
  321. package/docs/frameworks/react/embeds.md +89 -0
  322. package/docs/frameworks/react/gpp.md +163 -0
  323. package/docs/frameworks/react/headless.md +4 -4
  324. package/docs/frameworks/react/hooks.md +70 -0
  325. package/docs/frameworks/react/iab.md +278 -0
  326. package/docs/frameworks/react/network-blocker.md +140 -0
  327. package/docs/frameworks/react/quickstart.md +171 -107
  328. package/docs/frameworks/react/rendering.md +285 -0
  329. package/docs/frameworks/react/scripts.md +114 -0
  330. package/docs/frameworks/react/translations.md +155 -0
  331. package/docs/frameworks/react/troubleshooting.md +189 -61
  332. package/docs/frameworks/react/upgrade-v3.md +652 -0
  333. package/docs/frameworks/react/vendor-consent.md +188 -0
  334. package/docs/guides/banner-experiments.md +688 -0
  335. package/docs/guides/troubleshooting.md +192 -54
  336. package/docs/guides/verify-consent.md +96 -49
  337. package/docs/integrations/adobe-analytics.md +177 -183
  338. package/docs/integrations/ahrefs-analytics.md +162 -178
  339. package/docs/integrations/amplitude.md +172 -180
  340. package/docs/integrations/building-integrations.md +137 -33
  341. package/docs/integrations/clearbit.md +164 -178
  342. package/docs/integrations/cloudflare-web-analytics.md +166 -180
  343. package/docs/integrations/cloudflare-zaraz.md +333 -0
  344. package/docs/integrations/crisp.md +174 -182
  345. package/docs/integrations/databuddy.md +167 -197
  346. package/docs/integrations/fathom-analytics.md +168 -180
  347. package/docs/integrations/front-chat.md +308 -0
  348. package/docs/integrations/google-maps.md +142 -108
  349. package/docs/integrations/google-tag-manager.md +258 -185
  350. package/docs/integrations/google-tag.md +226 -182
  351. package/docs/integrations/heap.md +173 -179
  352. package/docs/integrations/hightouch.md +171 -181
  353. package/docs/integrations/hotjar.md +169 -179
  354. package/docs/integrations/intercom.md +193 -177
  355. package/docs/integrations/klaviyo.md +473 -0
  356. package/docs/integrations/linkedin-insights.md +184 -174
  357. package/docs/integrations/logrocket.md +170 -180
  358. package/docs/integrations/matomo-analytics.md +198 -202
  359. package/docs/integrations/meta-pixel.md +198 -174
  360. package/docs/integrations/microsoft-clarity.md +173 -179
  361. package/docs/integrations/microsoft-uet.md +158 -178
  362. package/docs/integrations/mixpanel-analytics.md +165 -184
  363. package/docs/integrations/one-dollar-stats.md +292 -0
  364. package/docs/integrations/openai-pixel.md +214 -325
  365. package/docs/integrations/overview.md +153 -83
  366. package/docs/integrations/pinterest-tag.md +315 -0
  367. package/docs/integrations/pirsch.md +179 -183
  368. package/docs/integrations/plausible-analytics.md +182 -182
  369. package/docs/integrations/posthog.md +323 -264
  370. package/docs/integrations/promptwatch.md +164 -178
  371. package/docs/integrations/reddit-pixel.md +195 -181
  372. package/docs/integrations/rudderstack.md +211 -210
  373. package/docs/integrations/rybbit-analytics.md +181 -184
  374. package/docs/integrations/segment.md +192 -178
  375. package/docs/integrations/sentry.md +402 -0
  376. package/docs/integrations/snapchat-pixel.md +196 -180
  377. package/docs/integrations/tiktok-pixel.md +181 -174
  378. package/docs/integrations/umami-analytics.md +173 -182
  379. package/docs/integrations/vercel-analytics.md +176 -181
  380. package/docs/integrations/vercel-speed-insights.md +306 -0
  381. package/docs/integrations/x-pixel.md +186 -174
  382. package/docs/integrations/youtube.md +150 -111
  383. package/package.json +48 -17
  384. package/dist/component-hooks/use-manager.js +0 -2
  385. package/dist/components/frame/atoms.js +0 -1
  386. package/dist/components/frame/frame.js +0 -2
  387. package/dist/components/frame/index.js +0 -2
  388. package/dist/frame.js +0 -2
  389. package/dist/ui-save.js +0 -1
  390. package/dist-types/component-hooks/use-manager.d.ts +0 -40
  391. package/dist-types/components/frame/atoms.d.ts +0 -11
  392. package/dist-types/components/frame/frame.d.ts +0 -2
  393. package/dist-types/components/frame/index.d.ts +0 -24
  394. package/dist-types/frame.d.ts +0 -1
  395. package/dist-types/ui-save.d.ts +0 -5
  396. package/docs/assets/v3/brand-bar.png +0 -0
  397. package/docs/assets/v3/mobile-card.png +0 -0
  398. package/docs/assets/v3/preferences.png +0 -0
  399. package/docs/frameworks/react/components/consent-manager-provider.md +0 -71
  400. package/docs/frameworks/react/concepts/consent-categories.md +0 -33
  401. package/docs/frameworks/react/hooks/use-consent-manager/overview.md +0 -58
  402. package/docs/frameworks/react/iab/overview.md +0 -53
  403. package/docs/frameworks/react/script-loader.md +0 -63
  404. package/docs/frameworks/react/styling/overview.md +0 -217
  405. package/docs/guides/consent-state.md +0 -60
  406. package/docs/guides/data-fetching.md +0 -163
  407. package/docs/guides/deployment-modes.md +0 -63
  408. package/docs/integrations/clear-on-revocation.md +0 -167
  409. package/docs/upgrade-v3.md +0 -334
  410. package/readme.json +0 -48
  411. package/src/iab/styles.css +0 -11
  412. package/src/styles.css +0 -10
  413. /package/dist/components/{frame → consent-gate}/types.js +0 -0
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { TriggerSize } from '../types';
2
+ import type { TriggerSize } from '../types.js';
3
3
  /**
4
4
  * Props for the Button component.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { TriggerIcon as TriggerIconType } from '../types';
2
+ import type { TriggerIcon as TriggerIconType } from '../types.js';
3
3
  /**
4
4
  * Props for the Icon component.
5
5
  */
@@ -1,6 +1,6 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { CornerPosition, TriggerVisibility } from '../types';
3
- import type { UseDraggableReturn } from '../use-draggable';
2
+ import type { CornerPosition, TriggerVisibility } from '../types.js';
3
+ import type { UseDraggableReturn } from '../use-draggable.js';
4
4
  /**
5
5
  * Context value for the ConsentDialogTrigger compound component.
6
6
  */
@@ -5,8 +5,8 @@
5
5
  */
6
6
  import type { PolicyRight } from '@c15t/schema/types';
7
7
  import type { ReactNode } from 'react';
8
- import type { ClassNameStyle } from '../../../types/theme';
9
- import type { ConsentDialogTriggerToolbarAction, ConsentDialogTriggerToolbarPreferences, TriggerOrientation, TriggerSize } from '../types';
8
+ import type { ClassNameStyle } from '../../../types/theme/index.js';
9
+ import type { ConsentDialogTriggerToolbarAction, ConsentDialogTriggerToolbarPreferences, TriggerOrientation, TriggerSize } from '../types.js';
10
10
  /** Right the built-in action stands for; opt-out wins when the rule carries it. */
11
11
  export type ToolbarPreferencesRight = Extract<PolicyRight, 'opt-out' | 'preferences'>;
12
12
  export interface TriggerToolbarProps extends Omit<ClassNameStyle, 'baseClassName'> {
@@ -0,0 +1,25 @@
1
+ import type { SVGProps } from 'react';
2
+ /**
3
+ * Dialog-trigger icons, kept apart from the branding logos: the banner renders
4
+ * the logos on every page, while these only ship with the dialog trigger.
5
+ */
6
+ interface IconProps {
7
+ title?: string;
8
+ titleId?: string;
9
+ }
10
+ /**
11
+ * Fingerprint icon for privacy/consent contexts.
12
+ * A generic icon representing user identity and privacy.
13
+ */
14
+ export declare const FingerprintIcon: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & IconProps) => import("react").JSX.Element;
15
+ /**
16
+ * Settings/gear icon for preference contexts.
17
+ * A generic icon representing configuration and settings.
18
+ */
19
+ export declare const SettingsIcon: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & IconProps) => import("react").JSX.Element;
20
+ /**
21
+ * Code icon for the DevTools item a trigger shows while `<ConsentDevTools>`
22
+ * is mounted. Decorative; the item carries the accessible name.
23
+ */
24
+ export declare const DevToolsIcon: (props: SVGProps<SVGSVGElement>) => import("react").JSX.Element;
25
+ export {};
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @packageDocumentation
5
5
  */
6
- export { ConsentDialogTrigger, type ConsentDialogTriggerCompound, TriggerButton, type TriggerButtonProps, TriggerIcon, type TriggerIconProps, TriggerRoot, type TriggerRootProps, TriggerText, type TriggerTextProps, useTriggerContext, } from './panel-trigger';
7
- export { ConsentDialogTriggerToolbar } from './panel-trigger-toolbar';
8
- export type { ConsentDialogTriggerProps, ConsentDialogTriggerToolbarAction, ConsentDialogTriggerToolbarPreferences, ConsentDialogTriggerToolbarProps, CornerPosition, TriggerIcon as TriggerIconType, TriggerOrientation, TriggerSize, TriggerVisibility, } from './types';
9
- export { type UseDraggableOptions, type UseDraggableReturn, useDraggable, } from './use-draggable';
6
+ export { ConsentDialogTrigger, type ConsentDialogTriggerCompound, TriggerButton, type TriggerButtonProps, TriggerIcon, type TriggerIconProps, TriggerRoot, type TriggerRootProps, TriggerText, type TriggerTextProps, useTriggerContext, } from './panel-trigger.js';
7
+ export { ConsentDialogTriggerToolbar } from './panel-trigger-toolbar.js';
8
+ export type { ConsentDialogTriggerProps, ConsentDialogTriggerToolbarAction, ConsentDialogTriggerToolbarPreferences, ConsentDialogTriggerToolbarProps, CornerPosition, TriggerIcon as TriggerIconType, TriggerOrientation, TriggerSize, TriggerVisibility, } from './types.js';
9
+ export { type UseDraggableOptions, type UseDraggableReturn, useDraggable, } from './use-draggable.js';
@@ -5,7 +5,7 @@
5
5
  * @packageDocumentation
6
6
  */
7
7
  import type { ReactNode } from 'react';
8
- import type { ConsentDialogTriggerToolbarProps } from './types';
8
+ import type { ConsentDialogTriggerToolbarProps } from './types.js';
9
9
  export declare function ConsentDialogTriggerToolbar({ actions, preferences, orientation, defaultPosition, persistPosition, ariaLabel, showWhen, size, className, style, noStyle, onPositionChange, }: ConsentDialogTriggerToolbarProps): ReactNode;
10
10
  export declare namespace ConsentDialogTriggerToolbar {
11
11
  var displayName: string;
@@ -1,21 +1,13 @@
1
- /**
2
- * ConsentDialogTrigger compound component.
3
- *
4
- * A draggable floating button that opens the consent dialog.
5
- * Supports drag-to-corner positioning and configurable icons.
6
- *
7
- * @packageDocumentation
8
- */
9
1
  import type { FC } from 'react';
10
- import { TriggerButton } from './atoms/button';
11
- import type { TriggerButtonProps } from './atoms/button';
12
- import { TriggerIcon } from './atoms/icon';
13
- import type { TriggerIconProps } from './atoms/icon';
14
- import { TriggerRoot, useTriggerContext } from './atoms/root';
15
- import type { TriggerRootProps } from './atoms/root';
16
- import { TriggerText } from './atoms/text';
17
- import type { TriggerTextProps } from './atoms/text';
18
- import type { ConsentDialogTriggerProps } from './types';
2
+ import { TriggerButton } from './atoms/button.js';
3
+ import type { TriggerButtonProps } from './atoms/button.js';
4
+ import { TriggerIcon } from './atoms/icon.js';
5
+ import type { TriggerIconProps } from './atoms/icon.js';
6
+ import { TriggerRoot, useTriggerContext } from './atoms/root.js';
7
+ import type { TriggerRootProps } from './atoms/root.js';
8
+ import { TriggerText } from './atoms/text.js';
9
+ import type { TriggerTextProps } from './atoms/text.js';
10
+ import type { ConsentDialogTriggerProps } from './types.js';
19
11
  /**
20
12
  * Compound component interface for ConsentDialogTrigger.
21
13
  */
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Loads the trigger toolbar on demand. The single-button trigger becomes a
3
+ * toolbar only while `<ConsentDevTools>` is mounted, so apps without
4
+ * DevTools never download it. The DevTools entry registers the toolbar when
5
+ * it loads, so the swap to a toolbar never waits on a request.
6
+ *
7
+ * @internal
8
+ * @packageDocumentation
9
+ */
10
+ import type { TriggerToolbar } from './atoms/toolbar.js';
11
+ /** The toolbar view the trigger renders while DevTools is mounted. */
12
+ export type TriggerToolbarComponent = typeof TriggerToolbar;
13
+ /**
14
+ * Make the toolbar available synchronously.
15
+ *
16
+ * @param component - The toolbar view.
17
+ * @internal
18
+ */
19
+ export declare const registerTriggerToolbar: (component: TriggerToolbarComponent) => void;
20
+ /**
21
+ * The toolbar view when it has loaded or been registered.
22
+ *
23
+ * @returns The toolbar view, or `undefined` while it is not loaded.
24
+ * @internal
25
+ */
26
+ export declare const getTriggerToolbar: () => TriggerToolbarComponent | undefined;
27
+ /**
28
+ * Load the toolbar view. A failed load is not cached, so a later call
29
+ * retries.
30
+ *
31
+ * @returns The toolbar view.
32
+ * @internal
33
+ */
34
+ export declare const loadTriggerToolbar: () => Promise<TriggerToolbarComponent>;
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import type { CornerPosition } from '@c15t/ui/utils/trigger-utils';
7
7
  import type { ReactNode } from 'react';
8
- import type { ClassNameStyle } from '../../types/theme';
8
+ import type { ClassNameStyle } from '../../types/theme/index.js';
9
9
  /**
10
10
  * Icon rendered by a consent dialog trigger control.
11
11
  *
@@ -1,7 +1,8 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { BoxProps } from '../../shared/primitives/box';
3
- import * as PreferenceItem from '../../shared/ui/preference-item';
4
- import * as RadixSwitch from '../../shared/ui/switch';
2
+ import type { BoxProps } from '../../shared/primitives/box.js';
3
+ import * as PreferenceItem from '../../shared/ui/preference-item/index.js';
4
+ import * as RadixSwitch from '../../shared/ui/switch/index.js';
5
+ import { ConsentWidgetVendorList } from './vendor-list.js';
5
6
  declare const ConsentWidgetAccordionTrigger: import("react").ForwardRefExoticComponent<BoxProps & import("react").RefAttributes<HTMLDivElement>>;
6
7
  declare const ConsentWidgetAccordionTriggerInner: import("react").ForwardRefExoticComponent<PreferenceItem.PreferenceItemTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
7
8
  declare const ConsentWidgetAccordionContent: import("react").ForwardRefExoticComponent<PreferenceItem.PreferenceItemContentProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -25,4 +26,5 @@ declare const Accordion: typeof ConsentWidgetAccordion;
25
26
  declare const Switch: import("react").ForwardRefExoticComponent<RadixSwitch.SwitchProps & import("react").RefAttributes<HTMLButtonElement>>;
26
27
  declare const AccordionItems: typeof ConsentWidgetAccordionItems;
27
28
  declare const AccordionItem: import("react").ForwardRefExoticComponent<Omit<PreferenceItem.PreferenceItemRootProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
28
- export { Accordion, AccordionArrow, AccordionContent, AccordionItem, AccordionItems, AccordionTrigger, AccordionTriggerInner, ConsentWidgetAccordion, ConsentWidgetAccordionArrow, ConsentWidgetAccordionContent, ConsentWidgetAccordionItem, ConsentWidgetAccordionItems, ConsentWidgetAccordionTrigger, ConsentWidgetAccordionTriggerInner, ConsentWidgetSwitch, Switch, };
29
+ declare const VendorList: typeof ConsentWidgetVendorList;
30
+ export { ConsentWidgetVendorList, VendorList, Accordion, AccordionArrow, AccordionContent, AccordionItem, AccordionItems, AccordionTrigger, AccordionTriggerInner, ConsentWidgetAccordion, ConsentWidgetAccordionArrow, ConsentWidgetAccordionContent, ConsentWidgetAccordionItem, ConsentWidgetAccordionItems, ConsentWidgetAccordionTrigger, ConsentWidgetAccordionTriggerInner, ConsentWidgetSwitch, Switch, };
@@ -1,4 +1,4 @@
1
- import type { ConsentButtonProps } from '../../shared/primitives/button.types';
1
+ import type { ConsentButtonProps } from '../../shared/primitives/button.types.js';
2
2
  /**
3
3
  * Button to accept all available cookies.
4
4
  *
@@ -1,4 +1,4 @@
1
- import type { BoxProps } from '../../shared/primitives/box';
1
+ import type { BoxProps } from '../../shared/primitives/box.js';
2
2
  /**
3
3
  * Footer component for consent management actions.
4
4
  *
@@ -1,5 +1,5 @@
1
1
  import type { FC, ReactNode } from 'react';
2
- import type { ThemeContextValue } from '../../../context/theme-context';
2
+ import type { ThemeContextValue } from '../../../context/theme-context.js';
3
3
  /**
4
4
  * Props for the ConsentWidgetRoot component.
5
5
  *
@@ -0,0 +1,23 @@
1
+ import type { AllConsentNames } from '@c15t/core';
2
+ import type { BoxProps } from '../../shared/primitives/box.js';
3
+ export interface ConsentWidgetVendorListProps extends Omit<BoxProps, 'children' | 'slotKey'> {
4
+ /** Category whose vendors to list. */
5
+ category: AllConsentNames;
6
+ }
7
+ /**
8
+ * Vendor rows nested inside one category's accordion content, each a
9
+ * collapsed card of its own that opens for its description and privacy
10
+ * policy link. A long list stays one line per vendor.
11
+ *
12
+ * Renders nothing when the category has no presentable vendor or the model
13
+ * is `iab`. Each row's switch stages a per-vendor grant on the same draft
14
+ * the category switches use; nothing is recorded until Save. While the
15
+ * parent category is off in the draft, the vendor switches are disabled: a
16
+ * vendor toggle never grants a category on its own. A `disabled` vendor is
17
+ * listed without a switch.
18
+ *
19
+ * @param props - The category whose vendors to list, plus `Box` attributes.
20
+ * @returns The vendor list, or `null` when there is nothing to list.
21
+ * @public
22
+ */
23
+ export declare const ConsentWidgetVendorList: ({ category, className, noStyle, ...props }: ConsentWidgetVendorListProps) => import("react").JSX.Element | null;
@@ -8,12 +8,12 @@
8
8
  *
9
9
  */
10
10
  import type { FC } from 'react';
11
- import { Accordion, AccordionArrow, AccordionContent, AccordionItem, AccordionItems, AccordionTrigger, AccordionTriggerInner, Switch } from './atoms/accordion';
12
- import { AcceptAllButton, CustomizeButton, RejectButton, SaveButton } from './atoms/button';
13
- import { Footer, FooterSubGroup } from './atoms/footer';
14
- import { Root } from './atoms/root';
15
- import { PolicyActions } from './policy-actions';
16
- import type { ConsentWidgetProps } from './types';
11
+ import { Accordion, AccordionArrow, AccordionContent, AccordionItem, AccordionItems, AccordionTrigger, AccordionTriggerInner, Switch, VendorList } from './atoms/accordion.js';
12
+ import { AcceptAllButton, CustomizeButton, RejectButton, SaveButton } from './atoms/button.js';
13
+ import { Footer, FooterSubGroup } from './atoms/footer.js';
14
+ import { Root } from './atoms/root.js';
15
+ import { PolicyActions } from './policy-actions.js';
16
+ import type { ConsentWidgetProps } from './types.js';
17
17
  export type { ConsentWidgetProps };
18
18
  /**
19
19
  * This interface extends the base ConsentWidget component with additional sub-components
@@ -31,6 +31,8 @@ export interface ConsentWidgetCompoundComponent extends FC<ConsentWidgetProps> {
31
31
  Switch: typeof Switch;
32
32
  AccordionItems: typeof AccordionItems;
33
33
  AccordionItem: typeof AccordionItem;
34
+ /** Vendor rows for one category, nested by `AccordionItems`. */
35
+ VendorList: typeof VendorList;
34
36
  Root: typeof Root;
35
37
  AcceptAllButton: typeof AcceptAllButton;
36
38
  CustomizeButton: typeof CustomizeButton;
@@ -65,7 +67,7 @@ export interface ConsentWidgetCompoundComponent extends FC<ConsentWidgetProps> {
65
67
  * ```tsx
66
68
  * <ConsentProvider
67
69
  * options={{
68
- * mode: hosted({ url: '/api/c15t' }),
70
+ * mode: hosted({ backendURL: '/api/c15t' }),
69
71
  * components: {
70
72
  * accordion: {
71
73
  * root: { className: 'rounded-3xl border border-black/10' },
@@ -94,9 +96,9 @@ export interface ConsentWidgetCompoundComponent extends FC<ConsentWidgetProps> {
94
96
  */
95
97
  declare const ConsentWidget: ConsentWidgetCompoundComponent;
96
98
  export default ConsentWidget;
97
- export { Accordion, AccordionArrow, AccordionContent, AccordionItem, AccordionItems, AccordionTrigger, AccordionTriggerInner, ConsentWidgetAccordion, ConsentWidgetAccordionArrow, ConsentWidgetAccordionContent, ConsentWidgetAccordionItem, ConsentWidgetAccordionItems, ConsentWidgetAccordionTrigger, ConsentWidgetAccordionTriggerInner, ConsentWidgetSwitch, Switch, } from './atoms/accordion';
98
- export { AcceptAllButton, ConsentWidgetAcceptAllButton, ConsentWidgetCustomizeButton, ConsentWidgetRejectButton, ConsentWidgetSaveButton, CustomizeButton, RejectButton, SaveButton, } from './atoms/button';
99
- export { ConsentWidgetFooter, ConsentWidgetFooterSubGroup, Footer, FooterSubGroup, } from './atoms/footer';
100
- export { ConsentWidgetRoot, Root } from './atoms/root';
101
- export { type ConsentWidgetPolicyActionRenderProps, ConsentWidgetPolicyActions, type ConsentWidgetPolicyActionsProps, PolicyActions, } from './policy-actions';
99
+ export { Accordion, AccordionArrow, AccordionContent, AccordionItem, AccordionItems, AccordionTrigger, AccordionTriggerInner, ConsentWidgetAccordion, ConsentWidgetAccordionArrow, ConsentWidgetAccordionContent, ConsentWidgetAccordionItem, ConsentWidgetAccordionItems, ConsentWidgetAccordionTrigger, ConsentWidgetAccordionTriggerInner, ConsentWidgetSwitch, ConsentWidgetVendorList, Switch, VendorList, } from './atoms/accordion.js';
100
+ export { AcceptAllButton, ConsentWidgetAcceptAllButton, ConsentWidgetCustomizeButton, ConsentWidgetRejectButton, ConsentWidgetSaveButton, CustomizeButton, RejectButton, SaveButton, } from './atoms/button.js';
101
+ export { ConsentWidgetFooter, ConsentWidgetFooterSubGroup, Footer, FooterSubGroup, } from './atoms/footer.js';
102
+ export { ConsentWidgetRoot, Root } from './atoms/root.js';
103
+ export { type ConsentWidgetPolicyActionRenderProps, ConsentWidgetPolicyActions, type ConsentWidgetPolicyActionsProps, PolicyActions, } from './policy-actions.js';
102
104
  export { ConsentWidget };
@@ -1,6 +1,6 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { HeadlessConsentDialogAction } from '../../component-hooks/use-headless-consent-ui';
3
- import type { PolicyActionRenderProps } from '../shared/policy-actions';
2
+ import type { HeadlessConsentDialogAction } from '../../component-hooks/use-headless-consent-ui.js';
3
+ import type { PolicyActionRenderProps } from '../shared/policy-actions.js';
4
4
  export type ConsentWidgetPolicyActionRenderProps = PolicyActionRenderProps<HeadlessConsentDialogAction>;
5
5
  export interface ConsentWidgetPolicyActionsProps {
6
6
  renderAction?: (action: HeadlessConsentDialogAction, props: ConsentWidgetPolicyActionRenderProps) => ReactNode;
@@ -1,2 +1,2 @@
1
- import type { ConsentWidgetProps } from './types';
1
+ import type { ConsentWidgetProps } from './types.js';
2
2
  export declare const ConsentWidget: ({ hideBranding, noStyle: localNoStyle, disableAnimation: localDisableAnimation, scrollLock: localScrollLock, trapFocus: localTrapFocus, ...props }: ConsentWidgetProps) => import("react").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { InlineLegalLinksProps } from '../shared/primitives/legal-links';
2
+ import type { InlineLegalLinksProps } from '../shared/primitives/legal-links/index.js';
3
3
  export interface ConsentWidgetRootProps {
4
4
  children: ReactNode;
5
5
  useProvider?: boolean;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Keeps a banner tap made before hydration.
3
+ *
4
+ * A server-rendered banner shows long before React attaches its handlers.
5
+ * The inline script records an accept, reject, dismiss or customize tap in
6
+ * that gap and hides the banner. Once this component mounts, the banner's
7
+ * own handlers work: it stops the script and records the tap when the
8
+ * runtime has started. See `@c15t/core/surface-actions`.
9
+ *
10
+ * The script is in the server HTML. A banner that hydrates keeps it, inert
11
+ * once claimed, so hydration changes nothing in the markup. A banner React
12
+ * renders in the browser has its handlers at once, and a script it inserts
13
+ * would never run, so there it renders nothing.
14
+ *
15
+ * @internal
16
+ */
17
+ export declare const EarlyTapScript: () => import("react").JSX.Element | null;
@@ -73,6 +73,10 @@ interface ConsentBannerRootProps extends HTMLAttributes<HTMLDivElement> {
73
73
  */
74
74
  blocking?: boolean;
75
75
  }
76
+ /**
77
+ * The banner, rendered where the server can stream it: see
78
+ * `StreamedSurface`.
79
+ */
76
80
  declare const ConsentBannerRoot: FC<ConsentBannerRootProps>;
77
81
  declare const Root: FC<ConsentBannerRootProps>;
78
82
  export { ConsentBannerRoot, Root };
@@ -5,9 +5,9 @@
5
5
  */
6
6
  import type { PolicyRight } from '@c15t/schema/types';
7
7
  import type { ButtonHTMLAttributes, ReactNode } from 'react';
8
- import type { BoxProps } from '../shared/primitives/box';
9
- import type { ConsentButtonProps } from '../shared/primitives/button.types';
10
- import type { InlineLegalLinksProps } from '../shared/primitives/legal-links';
8
+ import type { BoxProps } from '../shared/primitives/box.js';
9
+ import type { ConsentButtonProps } from '../shared/primitives/button.types.js';
10
+ import type { InlineLegalLinksProps } from '../shared/primitives/legal-links/index.js';
11
11
  /** Rights the banner can expose as links. `disclosure` is carried by legal links. */
12
12
  export type ConsentBannerRight = Exclude<PolicyRight, 'disclosure'>;
13
13
  /**
@@ -16,12 +16,18 @@ export type ConsentBannerRight = Exclude<PolicyRight, 'disclosure'>;
16
16
  * @remarks
17
17
  * Provides the main heading for the consent notice.
18
18
  * Implements proper heading semantics and supports theming.
19
+ * Renders an `h2`. With `asChild`, the child element, such as an `h1`,
20
+ * takes its place and receives the title's class and attributes.
19
21
  *
20
22
  * @example
21
23
  * ```tsx
22
24
  * <ConsentBannerTitle>
23
25
  * Cookie Preferences
24
26
  * </ConsentBannerTitle>
27
+ *
28
+ * <ConsentBannerTitle asChild>
29
+ * <h1>Cookie Preferences</h1>
30
+ * </ConsentBannerTitle>
25
31
  * ```
26
32
  */
27
33
  declare const ConsentBannerTitle: import("react").ForwardRefExoticComponent<Omit<BoxProps, "slotKey"> & import("react").RefAttributes<HTMLDivElement>>;
@@ -8,11 +8,11 @@
8
8
  *
9
9
  */
10
10
  import type { FC } from 'react';
11
- import { Overlay } from './atoms/overlay';
12
- import { Root } from './atoms/root';
13
- import { AcceptButton, Card, CustomizeButton, Description, DismissButton, Footer, FooterSubGroup, Header, RejectButton, RightLink, Rights, Title } from './components';
14
- import { PolicyActions } from './policy-actions';
15
- import type { ConsentBannerButton, ConsentBannerLayout, ConsentBannerProps } from './prompt';
11
+ import { Overlay } from './atoms/overlay.js';
12
+ import { Root } from './atoms/root.js';
13
+ import { AcceptButton, Card, CustomizeButton, Description, DismissButton, Footer, FooterSubGroup, Header, RejectButton, RightLink, Rights, Title } from './components.js';
14
+ import { PolicyActions } from './policy-actions.js';
15
+ import type { ConsentBannerButton, ConsentBannerLayout, ConsentBannerProps } from './prompt.js';
16
16
  /**
17
17
  * This interface extends the base ConsentBanner component with additional sub-components
18
18
  * that can be used to compose the banner's structure.
@@ -62,7 +62,7 @@ export interface ConsentBannerCompoundComponent extends FC<ConsentBannerProps> {
62
62
  * ```tsx
63
63
  * <ConsentProvider
64
64
  * options={{
65
- * mode: hosted({ url: '/api/c15t' }),
65
+ * mode: hosted({ backendURL: '/api/c15t' }),
66
66
  * i18n: {
67
67
  * locale: 'en',
68
68
  * messages: {
@@ -114,10 +114,10 @@ export interface ConsentBannerCompoundComponent extends FC<ConsentBannerProps> {
114
114
  */
115
115
  declare const ConsentBanner: ConsentBannerCompoundComponent;
116
116
  export default ConsentBanner;
117
- export { ConsentBannerOverlay, Overlay } from './atoms/overlay';
118
- export { ConsentBannerRoot, Root } from './atoms/root';
119
- export { AcceptButton, Card, ConsentBannerAcceptButton, ConsentBannerCard, ConsentBannerCustomizeButton, ConsentBannerDescription, ConsentBannerDismissButton, ConsentBannerFooter, ConsentBannerFooterSubGroup, ConsentBannerHeader, ConsentBannerRejectButton, type ConsentBannerRight, ConsentBannerRightLink, type ConsentBannerRightLinkProps, ConsentBannerRights, type ConsentBannerRightsProps, ConsentBannerTitle, CustomizeButton, Description, DismissButton, Footer, FooterSubGroup, Header, RejectButton, RightLink, Rights, Title, } from './components';
120
- export { type ConsentBannerSurface, useConsentBannerSurface, } from './surface-context';
121
- export { useBannerCopy } from './use-banner-copy';
122
- export { type ConsentBannerPolicyActionRenderProps, ConsentBannerPolicyActions, type ConsentBannerPolicyActionsProps, PolicyActions, } from './policy-actions';
117
+ export { ConsentBannerOverlay, Overlay } from './atoms/overlay.js';
118
+ export { ConsentBannerRoot, Root } from './atoms/root.js';
119
+ export { AcceptButton, Card, ConsentBannerAcceptButton, ConsentBannerCard, ConsentBannerCustomizeButton, ConsentBannerDescription, ConsentBannerDismissButton, ConsentBannerFooter, ConsentBannerFooterSubGroup, ConsentBannerHeader, ConsentBannerRejectButton, type ConsentBannerRight, ConsentBannerRightLink, type ConsentBannerRightLinkProps, ConsentBannerRights, type ConsentBannerRightsProps, ConsentBannerTitle, CustomizeButton, Description, DismissButton, Footer, FooterSubGroup, Header, RejectButton, RightLink, Rights, Title, } from './components.js';
120
+ export { type ConsentBannerSurface, useConsentBannerSurface, } from './surface-context.js';
121
+ export { useBannerCopy } from './use-banner-copy.js';
122
+ export { type ConsentBannerPolicyActionRenderProps, ConsentBannerPolicyActions, type ConsentBannerPolicyActionsProps, PolicyActions, } from './policy-actions.js';
123
123
  export { ConsentBanner, type ConsentBannerButton, type ConsentBannerLayout, type ConsentBannerProps, };
@@ -1,6 +1,6 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { HeadlessConsentBannerAction } from '../../component-hooks/use-headless-consent-ui';
3
- import type { PolicyActionRenderProps } from '../shared/policy-actions';
2
+ import type { HeadlessConsentBannerAction } from '../../component-hooks/use-headless-consent-ui.js';
3
+ import type { PolicyActionRenderProps } from '../shared/policy-actions.js';
4
4
  export type ConsentBannerPolicyActionRenderProps = PolicyActionRenderProps<HeadlessConsentBannerAction>;
5
5
  export interface ConsentBannerPolicyActionsProps {
6
6
  /** Replaces the default preferences buttons before the policy actions. */
@@ -2,7 +2,7 @@ import type * as C15tCoreTypes from '@c15t/core';
2
2
  import type { PromptPosition, PromptVariant } from '@c15t/core';
3
3
  import type { SurfacePresentation } from '@c15t/ui/utils';
4
4
  import type { FC, ReactNode } from 'react';
5
- import type { InlineLegalLinksProps } from '../shared/primitives/legal-links';
5
+ import type { InlineLegalLinksProps } from '../shared/primitives/legal-links/index.js';
6
6
  /**
7
7
  * Identifiers for the available buttons in the consent banner.
8
8
  * @public
@@ -162,6 +162,10 @@ export interface ConsentBannerProps {
162
162
  */
163
163
  blocking?: boolean;
164
164
  }
165
+ /**
166
+ * The stock banner. It reads the policy to choose its buttons, so all of
167
+ * it renders where the server can stream it: see `StreamedSurface`.
168
+ */
165
169
  export declare const ConsentBanner: FC<ConsentBannerProps>;
166
170
  /**
167
171
  * Component type definition for the ConsentBanner with its compound components.
@@ -0,0 +1,9 @@
1
+ import type { SurfaceStyleSheet } from './surface-styles.js';
2
+ /**
3
+ * What the dialog and the preference widget render: the first-paint sheet,
4
+ * then the dialog and widget rules. Only their lazy chunks import this, so
5
+ * the dialog rules load with the dialog's code.
6
+ *
7
+ * @internal
8
+ */
9
+ export declare const DIALOG_SHEETS: readonly SurfaceStyleSheet[];
@@ -0,0 +1,8 @@
1
+ import type { SurfaceStyleSheet } from './surface-styles.js';
2
+ /**
3
+ * What the banner, trigger and ConsentGate render: tokens, every c15t
4
+ * variable and the first-paint rules of `styles.css`.
5
+ *
6
+ * @internal
7
+ */
8
+ export declare const FIRST_PAINT_SHEETS: readonly SurfaceStyleSheet[];
@@ -0,0 +1,3 @@
1
+ import type { SurfaceStyleSheet } from './surface-styles.js';
2
+ /** Styles for a standalone IAB dialog, loaded with its code. @internal */
3
+ export declare const IAB_DIALOG_SHEETS: readonly SurfaceStyleSheet[];
@@ -0,0 +1,3 @@
1
+ import type { SurfaceStyleSheet } from './surface-styles.js';
2
+ /** The shared tokens and IAB banner rules. @internal */
3
+ export declare const IAB_FIRST_PAINT_SHEETS: readonly SurfaceStyleSheet[];
@@ -0,0 +1,20 @@
1
+ import type { Ref, RefCallback } from 'react';
2
+ /**
3
+ * Combine refs so one element fills all of them.
4
+ *
5
+ * @param refs - Callback refs, object refs, or `undefined`.
6
+ * @returns A callback ref that calls or assigns each ref in order.
7
+ * @internal
8
+ */
9
+ export declare const composeRefs: <ElementType>(...refs: (Ref<ElementType> | undefined)[]) => RefCallback<ElementType>;
10
+ /**
11
+ * {@link composeRefs} for two refs, with a stable identity while they stay
12
+ * the same, so React does not detach and reattach the element on every
13
+ * render.
14
+ *
15
+ * @param first - A callback ref, object ref, or `undefined`.
16
+ * @param second - A callback ref, object ref, or `undefined`.
17
+ * @returns A memoized callback ref.
18
+ * @internal
19
+ */
20
+ export declare const useComposedRefs: <ElementType>(first: Ref<ElementType> | undefined, second: Ref<ElementType> | undefined) => RefCallback<ElementType>;
@@ -1,6 +1,6 @@
1
1
  import type { ComponentType, ReactNode } from 'react';
2
- import type { HeadlessConsentSurfaceState } from '../../component-hooks/use-headless-consent-ui';
3
- import type { CSSPropertiesWithVars, CSSVariables } from '../../types/theme';
2
+ import type { HeadlessConsentSurfaceState } from '../../component-hooks/use-headless-consent-ui.js';
3
+ import type { CSSPropertiesWithVars, CSSVariables } from '../../types/theme/index.js';
4
4
  export interface PolicyActionRenderProps<TAction extends string> {
5
5
  key: string;
6
6
  consentAction: TAction;
@@ -1,6 +1,6 @@
1
1
  import type { ConsentComponentSlotKey } from '@c15t/schema/config';
2
2
  import type { HTMLAttributes } from 'react';
3
- import type { ExtendThemeKeys } from '../../../types/theme';
3
+ import type { ExtendThemeKeys } from '../../../types/theme/index.js';
4
4
  /**
5
5
  * Props for the description text component of the CookieBanner.
6
6
  * Extends standard HTML div attributes.
@@ -1,6 +1,6 @@
1
1
  import type { AllConsentNames } from '@c15t/core';
2
- import type { ButtonVariantsProps } from '../ui/button/button';
3
- import type { ConsentButtonProps } from './button.types';
2
+ import type { ButtonVariantsProps } from '../ui/button/button.js';
3
+ import type { ConsentButtonProps } from './button.types.js';
4
4
  type ConsentActionThemeKey = 'accept' | 'reject' | 'customize' | 'dismiss' | 'save';
5
5
  /**
6
6
  * Button component that allows users to reject non-essential cookies.
@@ -1,7 +1,7 @@
1
1
  import type { ConsentComponentSlotKey } from '@c15t/schema/config';
2
2
  import type { ButtonMode } from '@c15t/ui/styles/primitives';
3
3
  import type { ComponentRef, HTMLAttributes, MouseEvent } from 'react';
4
- import type { CSSVariables, ExtendThemeKeys } from '../../../types/theme';
4
+ import type { CSSVariables, ExtendThemeKeys } from '../../../types/theme/index.js';
5
5
  export type ConsentButtonElement = ComponentRef<'button'>;
6
6
  /**
7
7
  * Props for CookieBanner button components.
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ import type { ReactNode } from 'react';
3
+ /**
4
+ * React 18's way to suspend: throw the promise, and read its recorded
5
+ * result on the retry. The runtime's `settled` records its own result.
6
+ * Exported for tests.
7
+ *
8
+ * @internal
9
+ */
10
+ export declare const readRecorded: <Value>(thenable: PromiseLike<Value>) => Value;
11
+ /**
12
+ * Renders a consent surface the server can stream. While the provider's
13
+ * `prefetch` is a promise, the surface waits for it in its own Suspense
14
+ * boundary: the rest of the page streams at once, and the surface follows
15
+ * in a later chunk of the same response, rendered from the resolved
16
+ * config. It shows only when that config carries a policy that shows it.
17
+ * Hydration reads the same config, so the surface hydrates in place.
18
+ *
19
+ * @internal
20
+ */
21
+ export declare const StreamedSurface: ({ children }: {
22
+ children: ReactNode;
23
+ }) => string | number | bigint | boolean | React.JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | Iterable<ReactNode> | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | React.ReactPortal | null | undefined> | null | undefined;