Vista previa#
Capas con desplazamiento central. 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, Streamgraph } from "@carlos-burelo/klin";
import "@carlos-burelo/klin/styles.css";
<ChartTooltipPortal>
<Streamgraph
data={/* … */}
xKey={/* … */}
series={/* … */}
ariaLabel="Streamgraph"
/>
</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/streamgraph.tsx)
import type { ChartSeries } from "@carlos-burelo/klin";
import { ChartTooltipPortal, Streamgraph } from "@carlos-burelo/klin";
const data: Array<Record<string, string | number>> = [
{ mes: "Ene", residencial: 42, comercial: 31, industrial: 58 },
{ mes: "Feb", residencial: 38, comercial: 29, industrial: 61 },
{ mes: "Mar", residencial: 45, comercial: 34, industrial: 66 },
{ mes: "Abr", residencial: 51, comercial: 39, industrial: 63 },
{ mes: "May", residencial: 57, comercial: 44, industrial: 59 },
{ mes: "Jun", residencial: 62, comercial: 47, industrial: 55 },
];
const series: ChartSeries[] = [
{ key: "residencial", label: "Residencial" },
{ key: "comercial", label: "Comercial" },
{ key: "industrial", label: "Industrial" },
];
function formatY(value: number): string {
return `${new Intl.NumberFormat("es-MX").format(Math.round(value))} GWh`;
}
export default function StreamgraphDemo() {
return (
<ChartTooltipPortal>
<Streamgraph
data={data}
xKey="mes"
series={series}
ariaLabel="Consumo eléctrico mensual por sector de enero a junio"
formatY={formatY}
/>
</ChartTooltipPortal>
);
}Props#
16 props · 4 requeridas
Tipo completo: StreamgraphProps en streamgraph.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:
streamgraph.tsx - Guías: SSR-first · Tema · Tooltip