Saltar al contenido
Índice de Kit UI
Kit UI Componentes

Suscripción editorial.

Patrón canónico de suscripción editorial para periodismo2, comentario, editorial sebastián y lepp.

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

Comentario por correo

Una edición cuando exista algo que valga la pena leer.

Incluye enlace para cancelar la suscripción.
Nivel 2Editorial Sebastián · variación

Resumen semanal

Un correo cada lunes con las series que cambiaron durante la semana.

Puedes darte de baja desde cualquier correo.
Nivel 3Dentro de una página
Sitio · sección

Comentario por correo

Una edición cuando exista algo que valga la pena leer.

Incluye enlace para cancelar la suscripción.
Ver y copiar el código de este render
HTML del nivel canónico
<form class="ui-sample ui-content" data-newsletter-signup="true" action="#suscribir"><h3>Comentario por correo</h3><p>Una edición cuando exista algo que valga la pena leer.</p><label for="newsletter-0">Correo electrónico</label><input class="input" id="newsletter-0" type="email" autoComplete="email" required=""/><button class="btn btn--primary" type="submit">Suscribirme</button> <small>Incluye enlace para cancelar la suscripción.</small></form>

Variaciones por marca y sitio

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

comentario.cl

Comentario

Autoridad: CANON.md + decisión editorial de producto

Comentario por correo

Una edición cuando exista algo que valga la pena leer.

Incluye enlace para cancelar la suscripción.

Cambia en esta marca

  • Namebrand comentario.cl en celeste
  • Mayor ancho de prosa e imágenes editoriales

Permanece canónico

  • Chrome, foco y controles canónicos
  • Autoría, fecha, fuente y jerarquía semántica
circulodesantiago.cl

Editorial Sebastián

Autoridad: Feedback de revisión r14 + capa CDS

Resumen semanal

Un correo cada lunes con las series que cambiaron durante la semana.

Puedes darte de baja desde cualquier correo.

Cambia en esta marca

  • Editorial Sebastián en rojo, con E y S mayúsculas
  • Atribución societaria a Círculo de Santiago

Permanece canónico

  • Caja normal y espaciado legible
  • Anatomía editorial y accesibilidad canónicas

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
Suscripción editorial no tiene una implementación vigente demostrada; sus ejemplos son material candidato.
Cambio propuesto
Publicar en r19 el contrato de Suscripción editorial para Patrón canónico de suscripción editorial para periodismo2, comentario, editorial sebastián y lepp.
Qué ocurre si respondes No
Suscripción editorial 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

Comentario por correo

Una edición cuando exista algo que valga la pena leer.

Incluye enlace para cancelar la suscripción.
  • Prioriza título, evidencia, autoría y una prosa legible.
  • Usa el namebrand y el color editorial propios sin alterar el canon.
Antes · problema observadoAnti-ejemplo no interactivo
NUEVO · DESTACADO · LECTURAUn título subordinado a etiquetasLa prosa completa usa una voz técnica.
  • No llenes la página de epígrafes o etiquetas redundantes.
  • No uses JetBrains Mono como voz editorial ni prosa principal.

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

Comentario por correo

Una edición cuando exista algo que valga la pena leer.

Incluye enlace para cancelar la suscripción.
1280 pxEscritorio

Resumen semanal

Un correo cada lunes con las series que cambiaron durante la semana.

Puedes darte de baja desde cualquier correo.

Cobertura

DimensiónContrato
Propietario canónicoSistema de diseño CIS y equipo editorial · core/core-style
ConsumidoresPeriodismo2, Comentario, Editorial Sebastián y LEPP
Dependenciasprosa canónica, metadatos editoriales
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
base
destacado
archivo
contenido largo

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
<form class="ui-sample ui-content" data-newsletter-signup="true" action="#suscribir"><h3>Comentario por correo</h3><p>Una edición cuando exista algo que valga la pena leer.</p><label for="newsletter-0">Correo electrónico</label><input class="input" id="newsletter-0" type="email" autoComplete="email" required=""/><button class="btn btn--primary" type="submit">Suscribirme</button> <small>Incluye enlace para cancelar la suscripción.</small></form>

Código TAILWIND

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

Código de referencia
<form class="ui-sample ui-content border border-slate-300 bg-white p-4 text-slate-950 grid gap-3" data-newsletter-signup="true" action="#suscribir"><h3>Comentario por correo</h3><p>Una edición cuando exista algo que valga la pena leer.</p><label for="newsletter-0">Correo electrónico</label><input class="input border border-slate-400 bg-white px-3 py-2 focus-visible:outline-2 focus-visible:outline-offset-2" id="newsletter-0" type="email" autoComplete="email" required=""/><button class="btn btn--primary border border-slate-950 px-3 py-2 focus-visible:outline-2 focus-visible:outline-offset-2 disabled:cursor-not-allowed" type="submit">Suscribirme</button> <small class="text-sm text-slate-600">Incluye enlace para cancelar la suscripción.</small></form>

Código REACT

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

Código de referencia
import type { ChangeEventHandler, FormEventHandler } from "react";

export interface NewsletterSignupProps {
  /** Nombre del boletín o título del bloque. */
  title?: string;
  /** Qué recibe la persona y con qué frecuencia. */
  description?: string;
  /** Etiqueta visible del campo de correo. */
  label?: string;
  /** Id del campo de correo. Usa uno distinto por formulario en la página. */
  id?: string;
  /** Nombre del campo en el envío (`email`); sin él, el envío nativo no incluye el correo. */
  name?: string;
  /** Correo inicial de un campo no controlado. */
  defaultValue?: string;
  /** Correo de un campo controlado; va junto con `onChange`. */
  value?: string;
  onChange?: ChangeEventHandler<HTMLInputElement>;
  /** Destino del formulario; sin JavaScript, la suscripción se envía ahí. */
  action?: string;
  method?: "get" | "post";
  /** Texto del botón que envía la suscripción. */
  submitLabel?: string;
  /** Nota bajo el formulario: cómo cancelar o qué se hace con el correo. */
  help?: string;
  onSubmit?: FormEventHandler<HTMLFormElement>;
  className?: string;
}

/**
 * Formulario de suscripción a un boletín por correo, con título, descripción, campo de correo, botón y nota sobre cómo cancelar.
 *
 * Es un `<form>` nativo: sin JavaScript envía el correo a `action`, siempre que el campo tenga `name`.
 *
 * @example <NewsletterSignup id="boletin-portada" name="email" action="/boletin" method="post" />
 * @example <NewsletterSignup id="boletin-pie" name="email" title="Resumen semanal" description="Un correo cada lunes." />
 */
export function NewsletterSignup({
  title = "Comentario por correo",
  description = "Una edición cuando exista algo que valga la pena leer.",
  label = "Correo electrónico",
  id = "newsletter-0",
  name,
  defaultValue,
  value,
  onChange,
  action = "#suscribir",
  method,
  submitLabel = "Suscribirme",
  help = "Incluye enlace para cancelar la suscripción.",
  onSubmit,
  className,
}: NewsletterSignupProps) {
  const controlado = value !== undefined && onChange !== undefined;
  return (
    <form className={["ui-content", className].filter(Boolean).join(" ")} data-newsletter-signup action={action} method={method} onSubmit={onSubmit}>
      {title ? <h3>{title}</h3> : null}
      {description ? <p>{description}</p> : null}
      <label htmlFor={id}>{label}</label>
      <input
        className="input"
        id={id}
        name={name}
        type="email"
        autoComplete="email"
        required
        {...(controlado ? { value, onChange } : { defaultValue: value ?? defaultValue })}
      />
      <button className="btn btn--primary" type="submit">{submitLabel}</button>
      {help ? <>{" "}<small>{help}</small></> : null}
    </form>
  );
}