'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>
  )
}
