web-next: página /cookies (Declaración de Cookies) + consentimiento Zaraz

Crea la ruta de Declaración de Cookies con el markup del tema y las 5 tablas
de cookies (uw-cookie-table, estilizadas en globals.css) + estilos de listas
y botones (btn-uw). Los enlaces internos .php se cablean a las rutas Next
(/privacy-policy, /contact-us).

Sistema de consentimiento = Cloudflare Zaraz (elección del usuario):
components/CookieConsent.tsx expone window.UWCookies.showBanner()
(zaraz.consent.modal=true) y revokeConsent() (zaraz.consent.setAll(false)),
que Cloudflare activa cuando el dominio pasa por su proxy con Zaraz Consent;
degrada con aviso si Zaraz no está presente. El footer ya enlazaba aquí.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-13 11:49:16 +00:00
parent 8ebf59f991
commit e289a87d1f
3 changed files with 303 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
'use client'
import { useEffect } from 'react'
// API de consentimiento de Cloudflare Zaraz (se inyecta cuando el dominio pasa
// por el proxy de Cloudflare con Zaraz Consent activado).
interface ZarazConsent {
modal?: boolean
APIReady?: boolean
setAll?: (status: boolean) => void
getAll?: () => Record<string, boolean>
}
declare global {
interface Window {
zaraz?: { consent?: ZarazConsent }
UWCookies?: { showBanner: () => void; revokeConsent: () => void }
}
}
/** Abre el modal de consentimiento de Zaraz. */
function showBanner() {
const c = typeof window !== 'undefined' ? window.zaraz?.consent : undefined
if (c) c.modal = true
else console.warn('[UWCookies] Zaraz no disponible (el sitio debe pasar por Cloudflare con Zaraz Consent activado).')
}
/** Retira el consentimiento (pone todos los propósitos a false) y reabre el modal. */
function revokeConsent() {
const c = typeof window !== 'undefined' ? window.zaraz?.consent : undefined
if (c?.setAll) {
c.setAll(false)
c.modal = true
} else {
console.warn('[UWCookies] Zaraz no disponible; no se puede retirar el consentimiento.')
}
}
/**
* Botones de consentimiento de la página /cookies. Cablean el sistema de
* Cloudflare Zaraz y exponen window.UWCookies (showBanner/revokeConsent) para
* el resto del sitio.
*/
export function CookieConsentButtons() {
useEffect(() => {
window.UWCookies = { showBanner, revokeConsent }
}, [])
return (
<div className="uw-consent-buttons">
<button type="button" onClick={showBanner} className="btn-uw btn-uw-form">
Cambiar consentimiento
</button>
<button type="button" onClick={revokeConsent} className="btn-uw btn-uw-form btn-uw-secondary">
Retirar consentimiento
</button>
</div>
)
}