@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,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
  */
@@ -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;
@@ -0,0 +1,36 @@
1
+ /** A stylesheet from `@c15t/ui/styles/sheets/*`. */
2
+ export interface SurfaceStyleSheet {
3
+ /** Dedupes the stylesheet: a page renders each `id` once. */
4
+ id: string;
5
+ /** The stylesheet text. */
6
+ css: string;
7
+ }
8
+ /**
9
+ * Renders the stylesheets a stock surface needs as `<style>` elements.
10
+ *
11
+ * The banner, trigger, ConsentGate, dialog and widget each render the
12
+ * sheets they use, so an app that imports no c15t stylesheet still gets
13
+ * styled surfaces, and no stylesheet `<link>` holds back the first paint.
14
+ * A server-rendered surface puts its rules in the HTML. A surface that
15
+ * renders in the browser, like the dialog, inserts them with its own code.
16
+ *
17
+ * In React 19 the elements move to `<head>` and each `id` renders once per
18
+ * page; later sheets follow earlier ones, which keeps the cascade order of
19
+ * `styles.css`. React 18 renders them in place, next to the surface, and
20
+ * so does React 19 when the provider sets a `nonce`: React drops the nonce
21
+ * from a style it moves to `<head>` unless the app passed the same nonce to
22
+ * React's server renderer, and a style without it would break a
23
+ * nonce-based policy.
24
+ *
25
+ * Renders nothing when the provider sets `styles: false` (the app imports
26
+ * `styles.css` itself) or `noStyle`.
27
+ *
28
+ * @param props.sheets - The stylesheets, in cascade order.
29
+ * @param props.noStyle - The surface's own `noStyle` prop.
30
+ * @returns The `<style>` elements, or `null`.
31
+ * @internal
32
+ */
33
+ export declare const SurfaceStyles: ({ sheets, noStyle, }: {
34
+ sheets: readonly SurfaceStyleSheet[];
35
+ noStyle?: boolean;
36
+ }) => import("react").JSX.Element[] | null;
@@ -1,7 +1,7 @@
1
1
  import type { AccordionType } from '@c15t/ui/primitives/accordion';
2
2
  import type { ButtonHTMLAttributes, ElementType, HTMLAttributes } from 'react';
3
- import type { PolymorphicComponentProps } from '../../libs/polymorphic';
4
- import type { ThemeValue } from '../../../../types/theme';
3
+ import type { PolymorphicComponentProps } from '../../libs/polymorphic.js';
4
+ import type { ThemeValue } from '../../../../types/theme/index.js';
5
5
  export type AccordionVariant = 'default' | 'bordered';
6
6
  export type AccordionSize = 'medium' | 'small';
7
7
  export interface AccordionVariantsProps {
@@ -1,2 +1,2 @@
1
- export * from './accordion';
2
- export * from './accordion.types';
1
+ export * from './accordion.js';
2
+ export * from './accordion.types.js';
@@ -1,2 +1,2 @@
1
- export type { AnimatedCollapseProps } from './animated-collapse';
2
- export { AnimatedCollapse } from './animated-collapse';
1
+ export type { AnimatedCollapseProps } from './animated-collapse.js';
2
+ export { AnimatedCollapse } from './animated-collapse.js';
@@ -1,6 +1,6 @@
1
1
  import type { Branding } from '@c15t/core';
2
2
  import type { SVGProps } from 'react';
3
- import type { CSSPropertiesWithVars } from '../../../types/theme';
3
+ import type { CSSPropertiesWithVars } from '../../../types/theme/index.js';
4
4
  export type ResolvedBranding = 'c15t' | 'inth' | 'none';
5
5
  export type BrandingVariant = 'footer' | 'dialog-tag' | 'banner-tag';
6
6
  export type BrandingSlotContext = 'banner' | 'dialog' | 'manager' | 'iab-banner' | 'iab-dialog';
@@ -1,5 +1,5 @@
1
1
  import type { ButtonHTMLAttributes, ElementType } from 'react';
2
- import type { PolymorphicComponentProps } from '../../libs/polymorphic';
2
+ import type { PolymorphicComponentProps } from '../../libs/polymorphic.js';
3
3
  export type ButtonVariant = 'primary' | 'neutral' | 'secondary';
4
4
  export type ButtonMode = 'filled' | 'stroke' | 'lighter' | 'ghost';
5
5
  export type ButtonSize = 'medium' | 'small' | 'xsmall' | 'xxsmall';