e289a87d1f
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>
59 lines
1.8 KiB
TypeScript
59 lines
1.8 KiB
TypeScript
'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>
|
|
)
|
|
}
|