Saltar al contenido
Índice de Kit UI
Kit UI Componentes

Cuerpo de artículo.

Patrón canónico de cuerpo de artículo 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

La escala de barrio permite comparar cambios que se pierden en un promedio comunal.

Cómo se midió

El análisis usa la misma unidad, período y cobertura para cada observación. Los vacíos se distinguen de los ceros.

Consulta la serie y su metodología.

Nivel 2Editorial Sebastián · variación

La escala de barrio permite comparar cambios que se pierden en un promedio comunal.

Qué cambió

El análisis usa la misma unidad, período y cobertura para cada observación. Los vacíos se distinguen de los ceros.

Consulta la serie y su metodología.

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

La escala de barrio permite comparar cambios que se pierden en un promedio comunal.

Cómo se midió

El análisis usa la misma unidad, período y cobertura para cada observación. Los vacíos se distinguen de los ceros.

Consulta la serie y su metodología.

Ver y copiar el código de este render
HTML del nivel canónico
<article class="ui-sample ui-content" data-article-body><p>La escala de barrio permite comparar cambios que se pierden en un promedio comunal.</p><h3>Cómo se midió</h3><p>El análisis usa la misma unidad, período y cobertura para cada observación. Los vacíos se distinguen de los ceros.</p><p><a href="#fuente">Consulta la serie y su metodología</a>.</p></article>

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

La escala de barrio permite comparar cambios que se pierden en un promedio comunal.

Cómo se midió

El análisis usa la misma unidad, período y cobertura para cada observación. Los vacíos se distinguen de los ceros.

Consulta la serie y su metodología.

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

La escala de barrio permite comparar cambios que se pierden en un promedio comunal.

Qué cambió

El análisis usa la misma unidad, período y cobertura para cada observación. Los vacíos se distinguen de los ceros.

Consulta la serie y su metodología.

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
Cuerpo de artículo tiene 6 implementaciones observadas en 3 repositorios: cds/cis/periodismo2-frontend, cochid/cochid-datos, cochid/cochid-lex.
Cambio propuesto
Publicar en r19 el contrato de Cuerpo de artículo para Patrón canónico de cuerpo de artículo para periodismo2, comentario, editorial sebastián y lepp.
Qué ocurre si respondes No
No se adopta el contrato r19 de Cuerpo de artículo; las 6 implementaciones observadas permanecen sin migració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

La escala de barrio permite comparar cambios que se pierden en un promedio comunal.

Cómo se midió

El análisis usa la misma unidad, período y cobertura para cada observación. Los vacíos se distinguen de los ceros.

Consulta la serie y su metodología.

  • 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

La escala de barrio permite comparar cambios que se pierden en un promedio comunal.

Cómo se midió

El análisis usa la misma unidad, período y cobertura para cada observación. Los vacíos se distinguen de los ceros.

Consulta la serie y su metodología.

1280 pxEscritorio

La escala de barrio permite comparar cambios que se pierden en un promedio comunal.

Qué cambió

El análisis usa la misma unidad, período y cobertura para cada observación. Los vacíos se distinguen de los ceros.

Consulta la serie y su metodología.

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 observado. 6 implementaciones observadas en 3 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 observado
Implementaciones6 implementaciones observadas
Repositorioscds/cis/periodismo2-frontend, cochid/cochid-datos, cochid/cochid-lex
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
<article class="ui-sample ui-content" data-article-body><p>La escala de barrio permite comparar cambios que se pierden en un promedio comunal.</p><h3>Cómo se midió</h3><p>El análisis usa la misma unidad, período y cobertura para cada observación. Los vacíos se distinguen de los ceros.</p><p><a href="#fuente">Consulta la serie y su metodología</a>.</p></article>

Código TAILWIND

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

Código de referencia
<article class="ui-sample ui-content border border-slate-300 bg-white p-4 text-slate-950 grid gap-3" data-article-body><p>La escala de barrio permite comparar cambios que se pierden en un promedio comunal.</p><h3>Cómo se midió</h3><p>El análisis usa la misma unidad, período y cobertura para cada observación. Los vacíos se distinguen de los ceros.</p><p><a class="underline underline-offset-4" href="#fuente">Consulta la serie y su metodología</a>.</p></article>

Código REACT

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

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

export interface ArticleBodySection {
  /** Título de la sección, en `<h3>`; la primera sección suele no tenerlo. */
  title?: string;
  /** Párrafos de la sección, en orden; un párrafo vacío se omite. */
  paragraphs: string[];
}

export interface ArticleBodyLink {
  /** Texto del enlace; vacío omite el párrafo de cierre. */
  label: string;
  href: string;
}

const SECTIONS: ArticleBodySection[] = [
  { paragraphs: ["La escala de barrio permite comparar cambios que se pierden en un promedio comunal."] },
  {
    title: "Cómo se midió",
    paragraphs: ["El análisis usa la misma unidad, período y cobertura para cada observación. Los vacíos se distinguen de los ceros."],
  },
];

const LINK: ArticleBodyLink = { label: "Consulta la serie y su metodología", href: "#fuente" };

export interface ArticleBodyProps {
  /** Secciones del texto: título opcional y párrafos. */
  sections?: ArticleBodySection[];
  /** Enlace de cierre a la fuente o la metodología, como último párrafo terminado en punto; `null` lo omite. */
  link?: ArticleBodyLink | null;
  /** Cuerpo libre ya maquetado (por ejemplo, el resultado de un MDX); si lo pasas, reemplaza `sections` y `link`. Vacío vuelve a `sections`. */
  children?: ReactNode;
  className?: string;
}

/**
 * Cuerpo de artículo con párrafos, subtítulos y enlace final a la fuente; contiene el texto principal de una nota o informe.
 *
 * @example <ArticleBody sections={[{ paragraphs: ["La escala de barrio permite comparar cambios."] }, { title: "Qué cambió", paragraphs: ["El análisis usa la misma unidad."] }]} link={{ label: "Consulta la serie y su metodología", href: "/series/barrios" }} />
 * @example <ArticleBody>{contenidoMdx}</ArticleBody>
 */
export function ArticleBody({ sections = SECTIONS, link = LINK, children, className }: ArticleBodyProps) {
  const libre = !(children == null || children === false || children === "");
  const bloques = sections.flatMap((section, i) => [
    ...(section.title ? [<h3 key={`h-${i}`}>{section.title}</h3>] : []),
    ...section.paragraphs.filter(Boolean).map((texto, j) => <p key={`p-${i}-${j}`}>{texto}</p>),
  ]);
  const cierre = link?.label ? (
    <p>
      <a href={link.href}>{link.label}</a>.
    </p>
  ) : null;
  if (!libre && !bloques.length && !cierre) return null;
  return (
    <article className={["ui-content", className].filter(Boolean).join(" ")} data-article-body>
      {libre ? children : <>{bloques}{cierre}</>}
    </article>
  );
}