Saltar al contenido
Índice de Kit UI
Kit UI Componentes

Grafo incorporado.

Patrón canónico de grafo incorporado para cochid-graphs, mapas, periodismo2 y firmas y documentos.

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
Estaciones de combinación entre las líneas 1, 2, 4 y 5 del Metro de Santiago

Fuente: Metro de Santiago · red en operación a septiembre de 2026

Ver líneas
LíneaConexionesEstaciones de combinación
Línea 134
Línea 222
Línea 422
Línea 534
Ver conexiones
ConexiónEstaciones de combinación
Línea 1 y Línea 2Los Héroes
Línea 1 y Línea 4Tobalaba
Línea 1 y Línea 5Baquedano, San Pablo
Línea 2 y Línea 5Santa Ana
Línea 4 y Línea 5Vicente Valdés
Nivel 2Compañía de Innovación de Santiago · variación
Estaciones de combinación entre las líneas 1, 2, 4 y 5 del Metro de Santiago

Fuente: Metro de Santiago · red en operación a septiembre de 2026

Ver líneas
LíneaConexionesEstaciones de combinación
Línea 134
Línea 222
Línea 422
Línea 534
Ver conexiones
ConexiónEstaciones de combinación
Línea 1 y Línea 2Los Héroes
Línea 1 y Línea 4Tobalaba
Línea 1 y Línea 5Baquedano, San Pablo
Línea 2 y Línea 5Santa Ana
Línea 4 y Línea 5Vicente Valdés
Nivel 3Dentro de una página
Sitio · sección
Estaciones de combinación entre las líneas 1, 2, 4 y 5 del Metro de Santiago

Fuente: Metro de Santiago · red en operación a septiembre de 2026

Ver líneas
LíneaConexionesEstaciones de combinación
Línea 134
Línea 222
Línea 422
Línea 534
Ver conexiones
ConexiónEstaciones de combinación
Línea 1 y Línea 2Los Héroes
Línea 1 y Línea 4Tobalaba
Línea 1 y Línea 5Baquedano, San Pablo
Línea 2 y Línea 5Santa Ana
Línea 4 y Línea 5Vicente Valdés
Ver y copiar el código de este render
HTML del nivel canónico
<figure class="ui-sample ui-chart" data-embed="graph" data-integration="cochid-graphs" data-render-mode="contract-demo" data-renderer="cochid-graphs" data-chart="network"><figcaption>Estaciones de combinación entre las líneas 1, 2, 4 y 5 del Metro de Santiago</figcaption><svg viewBox="0 0 320 120" aria-hidden="true"><path d="M70 60H250M70 60L160 22L250 60M70 60L160 98L250 60"></path><circle cx="70" cy="60" r="10"></circle><circle cx="160" cy="22" r="7"></circle><circle cx="160" cy="98" r="7"></circle><circle cx="250" cy="60" r="10"></circle><text x="54" y="63" text-anchor="end" class="ui-chart__rotulo">Línea 1</text><text x="173" y="25" class="ui-chart__rotulo">Línea 4</text><text x="173" y="101" class="ui-chart__rotulo">Línea 2</text><text x="266" y="63" class="ui-chart__rotulo">Línea 5</text></svg><p>Fuente: Metro de Santiago · red en operación a septiembre de 2026</p><details><summary>Ver líneas</summary><table><thead><tr><th>Línea</th><th>Conexiones</th><th>Estaciones de combinación</th></tr></thead><tbody><tr><th>Línea 1</th><td>3</td><td>4</td></tr><tr><th>Línea 2</th><td>2</td><td>2</td></tr><tr><th>Línea 4</th><td>2</td><td>2</td></tr><tr><th>Línea 5</th><td>3</td><td>4</td></tr></tbody></table></details><details><summary>Ver conexiones</summary><table><thead><tr><th>Conexión</th><th>Estaciones de combinación</th></tr></thead><tbody><tr><th>Línea 1 y Línea 2</th><td>Los Héroes</td></tr><tr><th>Línea 1 y Línea 4</th><td>Tobalaba</td></tr><tr><th>Línea 1 y Línea 5</th><td>Baquedano, San Pablo</td></tr><tr><th>Línea 2 y Línea 5</th><td>Santa Ana</td></tr><tr><th>Línea 4 y Línea 5</th><td>Vicente Valdés</td></tr></tbody></table></details></figure>

Variaciones por marca y sitio

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

cochid.cl

COCHID

Autoridad: core-style/DECISIONES.md M15 y LOGOS-CANONICOS.md
Estaciones de combinación entre las líneas 1, 2, 4 y 5 del Metro de Santiago

Fuente: Metro de Santiago · red en operación a septiembre de 2026

Ver líneas
LíneaConexionesEstaciones de combinación
Línea 134
Línea 222
Línea 422
Línea 534
Ver conexiones
ConexiónEstaciones de combinación
Línea 1 y Línea 2Los Héroes
Línea 1 y Línea 4Tobalaba
Línea 1 y Línea 5Baquedano, San Pablo
Línea 2 y Línea 5Santa Ana
Línea 4 y Línea 5Vicente Valdés

Cambia en esta marca

  • Cuadrado azul y namebrand de tres líneas
  • Azul COCHID en selección, capas y series

Permanece canónico

  • Estructura y semántica comunes
  • Fuentes, unidades y alternativa tabular
innovacionsantiago.cl

Compañía de Innovación de Santiago

Autoridad: CONSTITUTION.md + LOGOS-CANONICOS.md
Estaciones de combinación entre las líneas 1, 2, 4 y 5 del Metro de Santiago

Fuente: Metro de Santiago · red en operación a septiembre de 2026

Ver líneas
LíneaConexionesEstaciones de combinación
Línea 134
Línea 222
Línea 422
Línea 534
Ver conexiones
ConexiónEstaciones de combinación
Línea 1 y Línea 2Los Héroes
Línea 1 y Línea 4Tobalaba
Línea 1 y Línea 5Baquedano, San Pablo
Línea 2 y Línea 5Santa Ana
Línea 4 y Línea 5Vicente Valdés

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
Grafo incorporado no tiene una implementación vigente demostrada; sus ejemplos son material candidato.
Cambio propuesto
Publicar en r19 el contrato de Grafo incorporado para Patrón canónico de grafo incorporado para cochid-graphs, mapas, periodismo2 y firmas y documentos.
Qué ocurre si respondes No
Grafo incorporado 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
Estaciones de combinación entre las líneas 1, 2, 4 y 5 del Metro de Santiago

Fuente: Metro de Santiago · red en operación a septiembre de 2026

Ver líneas
LíneaConexionesEstaciones de combinación
Línea 134
Línea 222
Línea 422
Línea 534
Ver conexiones
ConexiónEstaciones de combinación
Línea 1 y Línea 2Los Héroes
Línea 1 y Línea 4Tobalaba
Línea 1 y Línea 5Baquedano, San Pablo
Línea 2 y Línea 5Santa Ana
Línea 4 y Línea 5Vicente Valdés
  • Mantén proporción, título accesible, fuente y vista completa.
  • Proporciona consentimiento y fallback cuando depende de terceros.
Antes · problema observadoAnti-ejemplo no interactivo
Contenido incorporadoRectángulo vacío sin fuente, fallback ni vista completa
  • No cargues terceros sin política CSP y privacidad.
  • No dejes un rectángulo vacío cuando falla el origen.

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
Estaciones de combinación entre las líneas 1, 2, 4 y 5 del Metro de Santiago

Fuente: Metro de Santiago · red en operación a septiembre de 2026

Ver líneas
LíneaConexionesEstaciones de combinación
Línea 134
Línea 222
Línea 422
Línea 534
Ver conexiones
ConexiónEstaciones de combinación
Línea 1 y Línea 2Los Héroes
Línea 1 y Línea 4Tobalaba
Línea 1 y Línea 5Baquedano, San Pablo
Línea 2 y Línea 5Santa Ana
Línea 4 y Línea 5Vicente Valdés
1280 pxEscritorio
Estaciones de combinación entre las líneas 1, 2, 4 y 5 del Metro de Santiago

Fuente: Metro de Santiago · red en operación a septiembre de 2026

Ver líneas
LíneaConexionesEstaciones de combinación
Línea 134
Línea 222
Línea 422
Línea 534
Ver conexiones
ConexiónEstaciones de combinación
Línea 1 y Línea 2Los Héroes
Línea 1 y Línea 4Tobalaba
Línea 1 y Línea 5Baquedano, San Pablo
Línea 2 y Línea 5Santa Ana
Línea 4 y Línea 5Vicente Valdés

Cobertura

DimensiónContrato
Propietario canónicoSistema de diseño CIS y servicio productor · core/core-style
Consumidorescochid-graphs, Mapas, Periodismo2 y Firmas y Documentos
DependenciasCSP, sandbox, fallback enlazable
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
cargando
disponible
bloqueado
error
sin JavaScript

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
<figure class="ui-sample ui-chart" data-embed="graph" data-integration="cochid-graphs" data-render-mode="contract-demo" data-renderer="cochid-graphs" data-chart="network"><figcaption>Estaciones de combinación entre las líneas 1, 2, 4 y 5 del Metro de Santiago</figcaption><svg viewBox="0 0 320 120" aria-hidden="true"><path d="M70 60H250M70 60L160 22L250 60M70 60L160 98L250 60"></path><circle cx="70" cy="60" r="10"></circle><circle cx="160" cy="22" r="7"></circle><circle cx="160" cy="98" r="7"></circle><circle cx="250" cy="60" r="10"></circle><text x="54" y="63" text-anchor="end" class="ui-chart__rotulo">Línea 1</text><text x="173" y="25" class="ui-chart__rotulo">Línea 4</text><text x="173" y="101" class="ui-chart__rotulo">Línea 2</text><text x="266" y="63" class="ui-chart__rotulo">Línea 5</text></svg><p>Fuente: Metro de Santiago · red en operación a septiembre de 2026</p><details><summary>Ver líneas</summary><table><thead><tr><th>Línea</th><th>Conexiones</th><th>Estaciones de combinación</th></tr></thead><tbody><tr><th>Línea 1</th><td>3</td><td>4</td></tr><tr><th>Línea 2</th><td>2</td><td>2</td></tr><tr><th>Línea 4</th><td>2</td><td>2</td></tr><tr><th>Línea 5</th><td>3</td><td>4</td></tr></tbody></table></details><details><summary>Ver conexiones</summary><table><thead><tr><th>Conexión</th><th>Estaciones de combinación</th></tr></thead><tbody><tr><th>Línea 1 y Línea 2</th><td>Los Héroes</td></tr><tr><th>Línea 1 y Línea 4</th><td>Tobalaba</td></tr><tr><th>Línea 1 y Línea 5</th><td>Baquedano, San Pablo</td></tr><tr><th>Línea 2 y Línea 5</th><td>Santa Ana</td></tr><tr><th>Línea 4 y Línea 5</th><td>Vicente Valdés</td></tr></tbody></table></details></figure>

Código TAILWIND

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

Código de referencia
<figure class="ui-sample ui-chart border border-slate-300 bg-white p-4 text-slate-950 grid gap-3" data-embed="graph" data-integration="cochid-graphs" data-render-mode="contract-demo" data-renderer="cochid-graphs" data-chart="network"><figcaption class="text-sm text-slate-600">Estaciones de combinación entre las líneas 1, 2, 4 y 5 del Metro de Santiago</figcaption><svg class="h-auto w-full" viewBox="0 0 320 120" aria-hidden="true"><path d="M70 60H250M70 60L160 22L250 60M70 60L160 98L250 60"></path><circle cx="70" cy="60" r="10"></circle><circle cx="160" cy="22" r="7"></circle><circle cx="160" cy="98" r="7"></circle><circle cx="250" cy="60" r="10"></circle><text x="54" y="63" text-anchor="end" class="ui-chart__rotulo">Línea 1</text><text x="173" y="25" class="ui-chart__rotulo">Línea 4</text><text x="173" y="101" class="ui-chart__rotulo">Línea 2</text><text x="266" y="63" class="ui-chart__rotulo">Línea 5</text></svg><p>Fuente: Metro de Santiago · red en operación a septiembre de 2026</p><details><summary>Ver líneas</summary><table class="w-full border-collapse text-left"><thead><tr><th class="border-b border-slate-300 p-2 align-top">Línea</th><th class="border-b border-slate-300 p-2 align-top">Conexiones</th><th class="border-b border-slate-300 p-2 align-top">Estaciones de combinación</th></tr></thead><tbody><tr><th class="border-b border-slate-300 p-2 align-top">Línea 1</th><td class="border-b border-slate-300 p-2 align-top">3</td><td class="border-b border-slate-300 p-2 align-top">4</td></tr><tr><th class="border-b border-slate-300 p-2 align-top">Línea 2</th><td class="border-b border-slate-300 p-2 align-top">2</td><td class="border-b border-slate-300 p-2 align-top">2</td></tr><tr><th class="border-b border-slate-300 p-2 align-top">Línea 4</th><td class="border-b border-slate-300 p-2 align-top">2</td><td class="border-b border-slate-300 p-2 align-top">2</td></tr><tr><th class="border-b border-slate-300 p-2 align-top">Línea 5</th><td class="border-b border-slate-300 p-2 align-top">3</td><td class="border-b border-slate-300 p-2 align-top">4</td></tr></tbody></table></details><details><summary>Ver conexiones</summary><table class="w-full border-collapse text-left"><thead><tr><th class="border-b border-slate-300 p-2 align-top">Conexión</th><th class="border-b border-slate-300 p-2 align-top">Estaciones de combinación</th></tr></thead><tbody><tr><th class="border-b border-slate-300 p-2 align-top">Línea 1 y Línea 2</th><td class="border-b border-slate-300 p-2 align-top">Los Héroes</td></tr><tr><th class="border-b border-slate-300 p-2 align-top">Línea 1 y Línea 4</th><td class="border-b border-slate-300 p-2 align-top">Tobalaba</td></tr><tr><th class="border-b border-slate-300 p-2 align-top">Línea 1 y Línea 5</th><td class="border-b border-slate-300 p-2 align-top">Baquedano, San Pablo</td></tr><tr><th class="border-b border-slate-300 p-2 align-top">Línea 2 y Línea 5</th><td class="border-b border-slate-300 p-2 align-top">Santa Ana</td></tr><tr><th class="border-b border-slate-300 p-2 align-top">Línea 4 y Línea 5</th><td class="border-b border-slate-300 p-2 align-top">Vicente Valdés</td></tr></tbody></table></details></figure>

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 GraphEmbedRow {
  /** Primera celda de la fila (período, región, categoría). */
  label: string;
  /** Una celda por cada columna después de la primera, con el valor ya formateado. */
  values: string[];
}

export interface GraphEmbedTable {
  /** Texto del control que despliega la tabla; por defecto «Ver datos». Con varias tablas, una etiqueta distinta por tabla («Ver nodos», «Ver conexiones»). */
  label?: string;
  /** Encabezados de columna; el primero corresponde a la primera celda de cada fila. */
  columns?: string[];
  /** Filas de la tabla; una tabla sin filas no se muestra. */
  rows: GraphEmbedRow[];
  /** La primera celda de cada fila va como encabezado de fila (`<th>`); por defecto sí. */
  rowHeaders?: boolean;
  /** Muestra la tabla desplegada (atributo nativo `open` de `<details>`). */
  open?: boolean;
}

export interface GraphEmbedProps {
  /** Título del grafo (`<figcaption>`); vacío lo oculta. */
  title?: string;
  /** SVG del grafo, con `aria-hidden="true"`; sin él se dibuja el esquema de la muestra. */
  children?: ReactNode;
  /** Línea de fuente, período y unidad bajo el grafo; vacía la oculta. */
  source?: string;
  /** Tablas de datos, cada una en su propio desplegable; la primera trae los mismos nodos o valores que dibuja el grafo. */
  tables?: GraphEmbedTable[];
  /** Tipo de gráfico (`data-chart`): `network` para nodos y conexiones; `sankey` o `treemap` si el grafo es un flujo o una jerarquía. */
  chartType?: string;
  /** Renderer que produjo el SVG (`data-renderer`); vacío omite el atributo. */
  renderer?: string;
  /** Servicio que entrega el grafo incorporado (`data-integration`); vacío omite el atributo. */
  integration?: string;
  /** Modo de render declarado por la integración (`data-render-mode`); vacío omite el atributo. */
  renderMode?: string;
  className?: string;
}

// Rótulos del esquema con la clase ui-chart__rotulo (tinta tenue en claro y en oscuro), no
// con style: un sitio con CSP estricto bloquea el style en línea.

// Cuatro líneas (nodos) y cinco conexiones (aristas). El radio crece con las
// estaciones de combinación de cada línea: 4 (r = 10) o 2 (r = 7).
const ESQUEMA = (
  <svg viewBox="0 0 320 120" aria-hidden="true">
    <path d="M70 60H250M70 60L160 22L250 60M70 60L160 98L250 60" />
    <circle cx="70" cy="60" r="10" />
    <circle cx="160" cy="22" r="7" />
    <circle cx="160" cy="98" r="7" />
    <circle cx="250" cy="60" r="10" />
    <text x="54" y="63" textAnchor="end" className="ui-chart__rotulo">Línea 1</text>
    <text x="173" y="25" className="ui-chart__rotulo">Línea 4</text>
    <text x="173" y="101" className="ui-chart__rotulo">Línea 2</text>
    <text x="266" y="63" className="ui-chart__rotulo">Línea 5</text>
  </svg>
);

const TABLAS: GraphEmbedTable[] = [
  {
    label: "Ver líneas",
    columns: ["Línea", "Conexiones", "Estaciones de combinación"],
    rows: [
      { label: "Línea 1", values: ["3", "4"] },
      { label: "Línea 2", values: ["2", "2"] },
      { label: "Línea 4", values: ["2", "2"] },
      { label: "Línea 5", values: ["3", "4"] },
    ],
  },
  {
    label: "Ver conexiones",
    columns: ["Conexión", "Estaciones de combinación"],
    rows: [
      { label: "Línea 1 y Línea 2", values: ["Los Héroes"] },
      { label: "Línea 1 y Línea 4", values: ["Tobalaba"] },
      { label: "Línea 1 y Línea 5", values: ["Baquedano, San Pablo"] },
      { label: "Línea 2 y Línea 5", values: ["Santa Ana"] },
      { label: "Línea 4 y Línea 5", values: ["Vicente Valdés"] },
    ],
  },
];

/**
 * Grafo incorporado: red de nodos y conexiones que entrega otro servicio (cochid-graphs u otro renderer) dentro de una página, con título, fuente y tablas de datos desplegables.
 *
 * El SVG llega como `children` y va oculto a lectores de pantalla: las tablas desplegables son la versión accesible. La primera trae los nodos que dibuja el grafo y la segunda sus conexiones, cada una con su propia etiqueta (`label`); `open` la muestra desplegada.
 *
 * @example <GraphEmbed title="Proyectos tramitados en conjunto por comisión · 2026" source="Fuente: Cámara de Diputadas y Diputados" tables={[{ label: "Ver comisiones", columns: ["Comisión", "Proyectos en conjunto"], rows: [{ label: "Hacienda", values: ["12"] }, { label: "Trabajo", values: ["7"] }] }, { label: "Ver conexiones", columns: ["Comisiones", "Proyectos en conjunto"], rows: [{ label: "Hacienda y Trabajo", values: ["4"] }] }]}>{grafo}</GraphEmbed>
 */
export function GraphEmbed({
  title = "Estaciones de combinación entre las líneas 1, 2, 4 y 5 del Metro de Santiago",
  children = ESQUEMA,
  source = "Fuente: Metro de Santiago · red en operación a septiembre de 2026",
  tables = TABLAS,
  chartType = "network",
  renderer = "cochid-graphs",
  integration = "cochid-graphs",
  renderMode = "contract-demo",
  className,
}: GraphEmbedProps) {
  return (
    <figure
      className={["ui-chart", className].filter(Boolean).join(" ")}
      data-embed="graph"
      data-integration={integration || undefined}
      data-render-mode={renderMode || undefined}
      data-renderer={renderer || undefined}
      data-chart={chartType || undefined}
    >
      {title ? <figcaption>{title}</figcaption> : null}
      {children}
      {source ? <p>{source}</p> : null}
      {tables.map((tabla, t) => {
        const resumen = tabla.label ?? "Ver datos";
        return tabla.rows.length ? (
          <details key={t} open={tabla.open}>
            {resumen ? <summary>{resumen}</summary> : null}
            <table>
              {tabla.columns?.length ? (
                <thead>
                  <tr>{tabla.columns.map((columna, i) => <th key={i}>{columna}</th>)}</tr>
                </thead>
              ) : null}
              <tbody>
                {tabla.rows.map((fila, i) => (
                  <tr key={i}>
                    {tabla.rowHeaders === false ? <td>{fila.label}</td> : <th>{fila.label}</th>}
                    {fila.values.map((valor, j) => <td key={j}>{valor}</td>)}
                  </tr>
                ))}
              </tbody>
            </table>
          </details>
        ) : null;
      })}
    </figure>
  );
}