Saltar al contenido
Índice de Kit UI
Kit UI Componentes

Aviso de cookies.

Patrón canónico de aviso de cookies para todos los consumidores.

Verlo por niveles

Primero el componente, después la variación de marca y finalmente su uso dentro de una página.

Nivel 1Componente canónico

Usamos cookies necesarias para sesión y seguridad. Analítica y contenido externo requieren tu elección.

Configurar
Nivel 2COCHID · variación

Usamos una cookie de sesión para mantener tu acceso. La analítica y los videos de terceros siguen desactivados hasta que elijas.

Configurar
Nivel 3Dentro de una página
Sitio · sección

Usamos cookies necesarias para sesión y seguridad. Analítica y contenido externo requieren tu elección.

Configurar
Ver y copiar el código de este render
HTML del nivel canónico
<section class="ui-sample ui-feedback" data-cookie-banner="true" aria-labelledby="cookie-title-0"><h3 id="cookie-title-0">Tu privacidad</h3><p>Usamos cookies necesarias para sesión y seguridad. Analítica y contenido externo requieren tu elección.</p><div class="ui-actions"><button class="btn btn--secondary" type="button">Aceptar opcionales</button><button class="btn btn--secondary" type="button">Sólo necesarias</button><a class="btn btn--quiet" href="#preferencias">Configurar</a></div></section>

Variaciones por marca y sitio

Cada cambio visible declara su autoridad; lo que permanece canónico no se vuelve a inventar en el producto.

innovacionsantiago.cl

Compañía de Innovación de Santiago

Autoridad: CONSTITUTION.md + LOGOS-CANONICOS.md

Usamos cookies necesarias para sesión y seguridad. Analítica y contenido externo requieren tu elección.

Configurar

Cambia en esta marca

  • Navegación y contenido propios del servicio
  • Acento reservado para acciones y datos

Permanece canónico

  • Mark CIS y namebrand de tres líneas
  • IBM Plex Sans, foco, espaciado y anatomía
cochid.cl

COCHID

Autoridad: core-style/DECISIONES.md M15 y LOGOS-CANONICOS.md

Usamos una cookie de sesión para mantener tu acceso. La analítica y los videos de terceros siguen desactivados hasta que elijas.

Configurar

Cambia en esta marca

  • Cuadrado azul y namebrand de tres líneas
  • Azul COCHID en selección, capas y series

Permanece canónico

  • Estructura y semántica comunes
  • Fuentes, unidades y alternativa tabular

Comparación histórica recuperable

Compara la propuesta con cortes reales del repositorio. La ausencia de una muestra se declara y nunca se reconstruye de memoria.

Estado actual
Aviso de cookies no tiene una implementación vigente demostrada; sus ejemplos son material candidato.
Cambio propuesto
Publicar en r19 el contrato de Aviso de cookies para Patrón canónico de aviso de cookies para todos los consumidores.
Qué ocurre si respondes No
Aviso de cookies queda fuera de r19 y sus ejemplos siguen sólo como evidencia pendiente de reformulación.

Preparando comparación histórica…

Antes / r19

La comparación convierte una regla abstracta en una diferencia visible y verificable.

r19 · correctoContrato canónico renderizado

Usamos cookies necesarias para sesión y seguridad. Analítica y contenido externo requieren tu elección.

Configurar
  • Usa HTML semántico, foco visible y estados explícitos.
  • Conserva contenido útil a 320 px y sin JavaScript.
Antes · problema observadoAnti-ejemplo no interactivo
EN LÍNEATodo funciona correctamenteSin señal, hora ni servicio asociado
  • No agregues sombras, radios ni franjas laterales decorativas.
  • No uses color, placeholder o icono como única explicación.

Responsive

La misma anatomía debe conservar lectura, foco y acciones sin cortar contenido ni crear scroll horizontal en la página.

320 pxMóvil y zoom

Usamos cookies necesarias para sesión y seguridad. Analítica y contenido externo requieren tu elección.

Configurar
1280 pxEscritorio

Usamos una cookie de sesión para mantener tu acceso. La analítica y los videos de terceros siguen desactivados hasta que elijas.

Configurar

Cobertura

DimensiónContrato
Propietario canónicoSistema de diseño CIS · core/core-style
ConsumidoresTodos los consumidores
DependenciasHTML nativo, ARIA sólo cuando aporta
Estadocandidato

Evidencia de adopción

Patrón propuesto. 0 implementaciones observadas en 0 repositorios.

La observación demuestra uso existente; la aceptación canónica sigue dependiendo de esta ficha y de su propietario.

DatoResultado
ClasificaciónPatrón propuesto
Implementaciones0 implementaciones observadas
RepositoriosNingún repositorio observado
Snapshotkit/componentes/componentes-observados.json

Consumidores observados

El inventario conserva repositorio, archivo fuente y criterio de asociación. Observar una implementación no la convierte automáticamente en canónica.

Estados

Estado requerido
información
advertencia
error
éxito

Accesibilidad

  • Conserva nombre accesible, orden de lectura y foco visible.
  • Funciona a 320 px, con zoom de 200% y texto largo.
  • El color nunca es la única señal de estado o acción.
  • El contenido esencial permanece disponible sin JavaScript.

Código HTML

Copia el bloque completo; después cambia contenido y destinos, no su anatomía.

Código de referencia
<section class="ui-sample ui-feedback" data-cookie-banner="true" aria-labelledby="cookie-title-0"><h3 id="cookie-title-0">Tu privacidad</h3><p>Usamos cookies necesarias para sesión y seguridad. Analítica y contenido externo requieren tu elección.</p><div class="ui-actions"><button class="btn btn--secondary" type="button">Aceptar opcionales</button><button class="btn btn--secondary" type="button">Sólo necesarias</button><a class="btn btn--quiet" href="#preferencias">Configurar</a></div></section>

Código TAILWIND

Copia el bloque completo; después cambia contenido y destinos, no su anatomía.

Código de referencia
<section class="ui-sample ui-feedback border border-slate-300 bg-white p-4 text-slate-950 grid gap-3" data-cookie-banner="true" aria-labelledby="cookie-title-0"><h3 id="cookie-title-0">Tu privacidad</h3><p>Usamos cookies necesarias para sesión y seguridad. Analítica y contenido externo requieren tu elección.</p><div class="ui-actions"><button class="btn btn--secondary border border-slate-950 px-3 py-2 focus-visible:outline-2 focus-visible:outline-offset-2 disabled:cursor-not-allowed" type="button">Aceptar opcionales</button><button class="btn btn--secondary border border-slate-950 px-3 py-2 focus-visible:outline-2 focus-visible:outline-offset-2 disabled:cursor-not-allowed" type="button">Sólo necesarias</button><a class="btn btn--quiet underline underline-offset-4" href="#preferencias">Configurar</a></div></section>

Código REACT

Copia el bloque completo; después cambia contenido y destinos, no su anatomía.

Código de referencia
import type { MouseEventHandler } from "react";

export interface CookieBannerProps {
  title?: string;
  /** Id del título, referido por `aria-labelledby`; sin `title` no se emite. Usa uno distinto por aviso en la página. */
  titleId?: string;
  /** Qué cookies se usan sin preguntar y cuáles requieren elección. */
  description?: string;
  /** Texto del botón que acepta las cookies opcionales; vacío lo oculta. */
  acceptLabel?: string;
  /** Se llama al aceptar las cookies opcionales. */
  onAccept?: MouseEventHandler<HTMLButtonElement>;
  /** Texto del botón que deja sólo las necesarias; vacío lo oculta. */
  rejectLabel?: string;
  /** Se llama al quedarse sólo con las necesarias. */
  onReject?: MouseEventHandler<HTMLButtonElement>;
  /** Texto del enlace a las preferencias por categoría; vacío lo oculta. */
  settingsLabel?: string;
  /** Destino del enlace a las preferencias, por ejemplo el formulario `CookiePreferences`. */
  settingsHref?: string;
  className?: string;
}

/**
 * Aviso de cookies al entrar al sitio, para aceptar las opcionales, quedarse con las necesarias o abrir las preferencias por categoría.
 *
 * Aceptar y rechazar tienen el mismo peso visual. Mientras la persona no elija, la aplicación debe mantener desactivadas las cookies opcionales.
 *
 * @example <CookieBanner onAccept={aceptar} onReject={rechazar} settingsHref="/privacidad/preferencias" />
 * @example <CookieBanner titleId="cookie-title-1" description="Usamos una cookie de sesión para mantener tu acceso. La analítica y los videos de terceros siguen desactivados hasta que elijas." />
 */
export function CookieBanner({
  title = "Tu privacidad",
  titleId = "cookie-title-0",
  description = "Usamos cookies necesarias para sesión y seguridad. Analítica y contenido externo requieren tu elección.",
  acceptLabel = "Aceptar opcionales",
  onAccept,
  rejectLabel = "Sólo necesarias",
  onReject,
  settingsLabel = "Configurar",
  settingsHref = "#preferencias",
  className,
}: CookieBannerProps) {
  return (
    <section className={["ui-feedback", className].filter(Boolean).join(" ")} data-cookie-banner aria-labelledby={title ? titleId : undefined}>
      {title ? <h3 id={titleId}>{title}</h3> : null}
      {description ? <p>{description}</p> : null}
      {acceptLabel || rejectLabel || settingsLabel ? (
        <div className="ui-actions">
          {acceptLabel ? <button className="btn btn--secondary" type="button" onClick={onAccept}>{acceptLabel}</button> : null}
          {rejectLabel ? <button className="btn btn--secondary" type="button" onClick={onReject}>{rejectLabel}</button> : null}
          {settingsLabel ? <a className="btn btn--quiet" href={settingsHref}>{settingsLabel}</a> : null}
        </div>
      ) : null}
    </section>
  );
}