Vista previa#
Dos puntos conectados por categoría. 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, DumbbellChart } from "@carlos-burelo/klin";
import "@carlos-burelo/klin/styles.css";
<ChartTooltipPortal>
<DumbbellChart
data={/* … */}
categoryKey={/* … */}
aKey={/* … */}
bKey={/* … */}
aLabel={/* … */}
bLabel={/* … */}
ariaLabel="Dumbbell Chart"
/>
</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/dumbbell-chart.tsx)
/**
* Demo Mancuernas del site (no se publica en el bundle de la lib).
*/
import { ChartTooltipPortal, DumbbellChart } from "@carlos-burelo/klin";
export default function DumbbellChartDemo() {
return (
<ChartTooltipPortal>
<DumbbellChart
ariaLabel="Precio por litro de gasolina Magna y Premium por ciudad, con la brecha más amplia en Monterrey"
data={[
{ ciudad: "CDMX", magna: 22.9, premium: 24.85 },
{ ciudad: "Guadalajara", magna: 23.15, premium: 25.1 },
{ ciudad: "Monterrey", magna: 23.4, premium: 25.6 },
{ ciudad: "Puebla", magna: 22.75, premium: 24.6 },
{ ciudad: "Mérida", magna: 23.05, premium: 24.95 },
]}
categoryKey="ciudad"
aKey="magna"
bKey="premium"
aLabel="Magna"
bLabel="Premium"
formatX={(v: number) => `$${v.toFixed(2)}`}
/>
</ChartTooltipPortal>
);
}Props#
22 props · 7 requeridas
Tipo completo: DumbbellChartProps en dumbbell-chart.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:
dumbbell-chart.tsx - Guías: SSR-first · Tema · Tooltip