Saltar al contenido
Índice de Kit UI
Kit UI Componentes

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.

Nivel 1Componente canónico
Nivel 2Compañía de Innovación de Santiago · variación
Nivel 3Dentro de una página
Sitio · sección
Ver y copiar el código de este render
HTML del nivel canónico
<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.cl

usaia

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

Cambia 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
innovacionsantiago.cl

Compañía de Innovación de Santiago

Autoridad: CONSTITUTION.md + LOGOS-CANONICOS.md

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

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.

r19 · correctoContrato canónico renderizado
  • Separa propuesta, evidencia, herramientas y aprobación humana.
  • Muestra procedencia, impacto y estado de cada tarea.
Antes · problema observadoAnti-ejemplo no interactivo
ListoLa tarea fue realizada correctamenteSin evidencia, herramientas, impacto ni aprobación
  • 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.

320 pxMóvil y zoom
1280 pxEscritorio

Cobertura

DimensiónContrato
Propietario canónicoSistema de diseño CIS y usaia · core/core-style
Consumidoresusaia, Scribe, Periodismo2 Admin y Claudia
DependenciasAI Elements adaptado, contrato de evidencia
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
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.

Código de referencia
<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.

Código de referencia
<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.

Código de referencia
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>
  );
}