Vista previa#
Roles con estado de enlace. Demo completa con datos realistas, renderizada en el servidor. Más abajo están las configuraciones, una por una.
Ejemplos#
Todas las configuraciones del componente, cada una viva y con datos propios. Cambia entre Preview y Code en cada tarjeta y copia lo que necesites.
Uso#
Ejemplo mínimo con las props requeridas. Copia, pega y cambia los datos:
import { ChartTooltipPortal, NetworkTopology } from "@carlos-burelo/klin";
import "@carlos-burelo/klin/styles.css";
<ChartTooltipPortal>
<NetworkTopology
nodes={/* … */}
edges={/* … */}
ariaLabel="Network Topology"
/>
</ChartTooltipPortal>La gráfica es función pura de props a SVG: el HTML llega renderizado y sin JS se ve completa.
Envuelve en ChartTooltipPortal solo si quieres tooltip rico; sin JS queda \<title\> nativo.
Lee la guía /docs/ssr-first una vez y listo.
Código de esta demo#
Ver fuente (src/demos/network-topology.tsx)
import type { TopoEdge, TopoNode } from "@carlos-burelo/klin";
import { ChartTooltipPortal, NetworkTopology } from "@carlos-burelo/klin";
const nodes: TopoNode[] = [
{ id: "inet", label: "Internet", role: "internet" },
{ id: "fw", label: "Firewall perimetral", sub: "10.0.0.1", role: "firewall" },
{ id: "r1", label: "Router núcleo", sub: "10.0.1.1", role: "router" },
{ id: "sw", label: "Switch piso 2", sub: "10.0.2.1", role: "switch" },
{ id: "api", label: "Servidor API", sub: "10.0.2.10", role: "server" },
{ id: "db", label: "Servidor BD", sub: "10.0.2.11", role: "server" },
{ id: "pc", label: "PC contabilidad", sub: "10.0.2.40", role: "host" },
];
const edges: TopoEdge[] = [
{ from: "inet", to: "fw", label: "Fibra 1 Gb" },
{ from: "fw", to: "r1" },
{ from: "r1", to: "sw" },
{ from: "sw", to: "api" },
{ from: "sw", to: "db" },
{ from: "sw", to: "pc", status: "degraded" },
];
export default function NetworkTopologyDemo() {
return (
<ChartTooltipPortal>
<NetworkTopology
nodes={nodes}
edges={edges}
ariaLabel="Topología de la red corporativa de la matriz"
/>
</ChartTooltipPortal>
);
}Props#
12 props · 3 requeridas
Tipo completo: NetworkTopologyProps en network-topology.tsx.
Accesibilidad#
- Toda gráfica exige
ariaLabeldescriptivo; el SVG usarole="img"con\<title\>. - Cada forma lleva
\<title\>nativo (tooltip sin JS) ydata-chart-tippara el portal rico. - Sin datos se renderiza estado vacío homogéneo (
ChartEmpty), nunca SVG roto. - Detalle del contrato en /docs/accesibilidad.
Recursos#
- Fuente del componente:
network-topology.tsx - Guías: SSR-first · Tema · Tooltip