Referencias
- Instituto Nacional de Estadísticas. Boletín de empleo, 2026.
- COCHID. Serie regional armonizada, versión 3.
Patrón canónico de bibliografía para periodismo2, comentario, editorial sebastián y lepp.
Primero el componente, después la variación de marca y finalmente su uso dentro de una página.
<section class="ui-sample ui-content" data-bibliography="true"><h3>Referencias</h3><ol><li>Instituto Nacional de Estadísticas. <cite>Boletín de empleo</cite>, 2026.</li><li>COCHID. <cite>Serie regional armonizada</cite>, versión 3.</li></ol></section>Cada cambio visible declara su autoridad; lo que permanece canónico no se vuelve a inventar en el producto.
Compara la propuesta con cortes reales del repositorio. La ausencia de una muestra se declara y nunca se reconstruye de memoria.
Preparando comparación histórica…
La comparación convierte una regla abstracta en una diferencia visible y verificable.
La prosa completa usa una voz técnica.La misma anatomía debe conservar lectura, foco y acciones sin cortar contenido ni crear scroll horizontal en la página.
| Dimensión | Contrato |
|---|---|
| Propietario canónico | Sistema de diseño CIS y equipo editorial · core/core-style |
| Consumidores | Periodismo2, Comentario, Editorial Sebastián y LEPP |
| Dependencias | prosa canónica, metadatos editoriales |
| Estado | candidato |
Patrón observado. 1 implementaciones observadas en 1 repositorios.
La observación demuestra uso existente; la aceptación canónica sigue dependiendo de esta ficha y de su propietario.
| Dato | Resultado |
|---|---|
| Clasificación | Patrón observado |
| Implementaciones | 1 implementaciones observadas |
| Repositorios | cochid/cochid-thesis |
| Snapshot | kit/componentes/componentes-observados.json |
El inventario conserva repositorio, archivo fuente y criterio de asociación. Observar una implementación no la convierte automáticamente en canónica.
| Estado requerido |
|---|
| base |
| destacado |
| archivo |
| contenido largo |
Copia el bloque completo; después cambia contenido y destinos, no su anatomía.
<section class="ui-sample ui-content" data-bibliography="true"><h3>Referencias</h3><ol><li>Instituto Nacional de Estadísticas. <cite>Boletín de empleo</cite>, 2026.</li><li>COCHID. <cite>Serie regional armonizada</cite>, versión 3.</li></ol></section>Copia el bloque completo; después cambia contenido y destinos, no su anatomía.
<section class="ui-sample ui-content border border-slate-300 bg-white p-4 text-slate-950 grid gap-3" data-bibliography="true"><h3>Referencias</h3><ol class="grid gap-2"><li>Instituto Nacional de Estadísticas. <cite>Boletín de empleo</cite>, 2026.</li><li>COCHID. <cite>Serie regional armonizada</cite>, versión 3.</li></ol></section>Copia el bloque completo; después cambia contenido y destinos, no su anatomía.
export interface BibliographyItem {
/** Autor o institución responsable de la obra; vacío deja la referencia sin autor. */
author: string;
/** Título de la obra; va en `<cite>`. */
title: string;
/** Año, versión o edición, sin punto final. */
detail?: string;
/** Enlace a la obra; si existe, el título se muestra como enlace. */
href?: string;
}
export interface BibliographyProps {
/** Título de la sección. */
title?: string;
/** Obras citadas, en el orden en que se numeran. */
items?: BibliographyItem[];
className?: string;
}
const BIBLIOGRAPHY_ITEMS: BibliographyItem[] = [
{ author: "Instituto Nacional de Estadísticas", title: "Boletín de empleo", detail: "2026" },
{ author: "COCHID", title: "Serie regional armonizada", detail: "versión 3" },
];
/**
* Bibliografía: lista numerada de referencias con autor, título de la obra y año o versión, al final de un artículo o informe.
*
* Cada referencia se arma como «Autor. <cite>Título</cite>, detalle.»; con `href`, el título enlaza a la obra.
*
* @example <Bibliography items={[{ author: "Instituto Nacional de Estadísticas", title: "Boletín de empleo", detail: "2026" }, { author: "COCHID", title: "Metodología de normalización", detail: "versión 3" }]} />
*/
export function Bibliography({ title = "Referencias", items = BIBLIOGRAPHY_ITEMS, className }: BibliographyProps) {
if (!items.length) return null;
return (
<section className={["ui-content", className].filter(Boolean).join(" ")} data-bibliography>
{title ? <h3>{title}</h3> : null}
<ol>
{items.map((item, i) => (
<li key={`${item.title}-${i}`}>
{item.author ? `${item.author}. ` : null}
<cite>{item.href ? <a href={item.href}>{item.title}</a> : item.title}</cite>
{item.detail ? `, ${item.detail}.` : "."}
</li>
))}
</ol>
</section>
);
}