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:
@@ -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>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user