Vista previa#
Actores e include/extend. 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, UseCaseDiagram } from "@carlos-burelo/klin";
import "@carlos-burelo/klin/styles.css";
<ChartTooltipPortal>
<UseCaseDiagram
actors={/* … */}
usecases={/* … */}
edges={/* … */}
ariaLabel="Use Case Diagram"
/>
</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/usecase-diagram.tsx)
import type { ActorNode, UseCaseEdge, UseCaseNode } from "@carlos-burelo/klin";
import { ChartTooltipPortal, UseCaseDiagram } from "@carlos-burelo/klin";
const actors: ActorNode[] = [
{ id: "ciudadano", label: "Ciudadano" },
{ id: "funcionario", label: "Funcionario de ventanilla" },
];
const usecases: UseCaseNode[] = [
{ id: "solicitar", label: "Solicitar cita" },
{ id: "cancelar", label: "Cancelar cita" },
{ id: "validar", label: "Validar documentos" },
{ id: "reporte", label: "Generar reporte diario" },
];
const edges: UseCaseEdge[] = [
{ from: "ciudadano", to: "solicitar" },
{ from: "ciudadano", to: "cancelar" },
{ from: "solicitar", to: "validar", kind: "include" },
{ from: "funcionario", to: "validar" },
{ from: "funcionario", to: "reporte" },
{ from: "reporte", to: "validar", kind: "extend" },
];
export default function UsecaseDiagramDemo() {
return (
<ChartTooltipPortal>
<UseCaseDiagram
actors={actors}
usecases={usecases}
edges={edges}
ariaLabel="Casos de uso del sistema de citas de ventanilla"
/>
</ChartTooltipPortal>
);
}Props#
11 props · 4 requeridas
Tipo completo: UseCaseDiagramProps en usecase-diagram.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:
usecase-diagram.tsx - Guías: SSR-first · Tema · Tooltip