Cita y procedencia.
Patrón canónico de cita y procedencia para usaia, scribe, periodismo2 admin y claudia.
Verlo por niveles
Primero el componente, después la variación de marca y finalmente su uso dentro de una página.
Ver y copiar el código de este render
<aside class="ui-sample ui-ai" data-citation="true" id="cite-0"><p>La desocupación regional alcanzó 8,4%<a href="#fuente-ine"><sup>[1]</sup><span class="sr-only">Fuente 1</span></a>.</p><footer><strong>[1] INE</strong> · Boletín de empleo, may-jul 2026 · <a href="#fuente-ine">Abrir fuente</a></footer></aside>Variaciones por marca y sitio
Cada cambio visible declara su autoridad; lo que permanece canónico no se vuelve a inventar en el producto.
usaia
Autoridad: CANON.md + decisión de producto usaiaCambia en esta marca
- Namebrand usaia en minúsculas y acento morado
- Superficies para evidencia, herramientas y aprobación
Permanece canónico
- Acciones explícitas y estados conectados
- Misma anatomía, tipografía y navegación
Compañía de Innovación de Santiago
Autoridad: CONSTITUTION.md + LOGOS-CANONICOS.mdCambia 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
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
- Cita y procedencia no tiene una implementación vigente demostrada; sus ejemplos son material candidato.
- Cambio propuesto
- Publicar en r19 el contrato de Cita y procedencia para Patrón canónico de cita y procedencia para usaia, scribe, periodismo2 admin y claudia.
- Qué ocurre si respondes No
- Cita y procedencia 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.
- Separa propuesta, evidencia, herramientas y aprobación humana.
- Muestra procedencia, impacto y estado de cada tarea.
- No presentes razonamiento sintético como evidencia.
- No ejecutes mutaciones externas desde un control ambiguo.
Responsive
La misma anatomía debe conservar lectura, foco y acciones sin cortar contenido ni crear scroll horizontal en la página.
Cobertura
| Dimensión | Contrato |
|---|---|
| Propietario canónico | Sistema de diseño CIS y usaia · core/core-style |
| Consumidores | usaia, Scribe, Periodismo2 Admin y Claudia |
| Dependencias | AI Elements adaptado, contrato de evidencia |
| Estado | candidato |
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.
| Dato | Resultado |
|---|---|
| Clasificación | Patrón propuesto |
| Implementaciones | 0 implementaciones observadas |
| Repositorios | Ningún repositorio observado |
| Snapshot | kit/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 |
|---|
| idle |
| en curso |
| requiere aprobación |
| completo |
| error |
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.
<aside class="ui-sample ui-ai" data-citation="true" id="cite-0"><p>La desocupación regional alcanzó 8,4%<a href="#fuente-ine"><sup>[1]</sup><span class="sr-only">Fuente 1</span></a>.</p><footer><strong>[1] INE</strong> · Boletín de empleo, may-jul 2026 · <a href="#fuente-ine">Abrir fuente</a></footer></aside>Código TAILWIND
Copia el bloque completo; después cambia contenido y destinos, no su anatomía.
<aside class="ui-sample ui-ai border border-slate-300 bg-white p-4 text-slate-950 grid gap-3" data-citation="true" id="cite-0"><p>La desocupación regional alcanzó 8,4%<a class="underline underline-offset-4" href="#fuente-ine"><sup>[1]</sup><span class="sr-only">Fuente 1</span></a>.</p><footer class="flex flex-wrap items-center justify-between gap-3"><strong>[1] INE</strong> · Boletín de empleo, may-jul 2026 · <a class="underline underline-offset-4" href="#fuente-ine">Abrir fuente</a></footer></aside>Código REACT
Copia el bloque completo; después cambia contenido y destinos, no su anatomía.
export interface CitationProps {
/** Id del bloque, para enlazar a la cita desde otra parte de la página. */
id?: string;
/** Afirmación citada; la llamada va pegada a la última palabra, antes del signo de puntuación final («8,4%[1].»). */
text?: string;
/** Número de la llamada; se muestra como «[1]» en el texto y en la referencia. */
number?: number | string;
/** Texto para lectores de pantalla de la llamada; por defecto, «Fuente» y el número. */
markerLabel?: string;
/** Institución o autor de la fuente («INE»). */
source?: string;
/** Publicación y período citados («Boletín de empleo, may-jul 2026»); vacío lo oculta. */
description?: string;
/** Destino de la fuente; lo usan la llamada y el enlace de la referencia. */
href?: string;
/** Texto del enlace a la fuente; vacío lo oculta. */
linkLabel?: string;
/** Ubicación exacta dentro de la fuente («página 4», «cuadro 2»); vacío la oculta. */
locator?: string;
className?: string;
}
/**
* Afirmación de una respuesta de IA con su llamada numerada y la referencia a la fuente (institución, publicación, ubicación y enlace); se usa cuando una cifra o un dato necesita procedencia verificable.
*
* La llamada es un enlace a la fuente con un texto oculto para lectores de pantalla («Fuente 1»).
*
* @example <Citation text="La desocupación regional alcanzó 8,4%." source="INE" description="Boletín de empleo, may-jul 2026" href="/fuentes/ine" />
* @example <Citation id="cita-2" number={2} text="La serie se normalizó por población." source="COCHID" description="Serie normalizada 2026" href="/fuentes/cochid" locator="nota metodológica" />
*/
export function Citation({
id = "cite-0",
text = "La desocupación regional alcanzó 8,4%.",
number = 1,
markerLabel,
source = "INE",
description = "Boletín de empleo, may-jul 2026",
href = "#fuente-ine",
linkLabel = "Abrir fuente",
locator,
className,
}: CitationProps) {
const [, afirmacion = "", cierre = ""] = /^([\s\S]*?)\s*([.,;:!?…]*)\s*$/.exec(text) ?? [];
const llamada = (
<>
<sup>{`[${number}]`}</sup>
<span className="sr-only">{markerLabel ?? `Fuente ${number}`}</span>
</>
);
return (
<aside className={["ui-ai", className].filter(Boolean).join(" ")} data-citation id={id}>
<p>
{afirmacion}
{href ? <a href={href}>{llamada}</a> : llamada}
{cierre}
</p>
<footer>
<strong>{source ? `[${number}] ${source}` : `[${number}]`}</strong>
{description ? ` · ${description}` : null}
{locator ? ` · ${locator}` : null}
{href && linkLabel ? <>{" · "}<a href={href}>{linkLabel}</a></> : null}
</footer>
</aside>
);
}