"use client"; import { useEffect, useId, useState } from "react"; export function MermaidDiagram({ code }: { code: string }) { const id = useId().replace(/:/g, ""); const [svg, setSvg] = useState(""); const [error, setError] = useState(""); useEffect(() => { let cancelled = false; async function render() { try { const mermaid = (await import("mermaid")).default; mermaid.initialize({ startOnLoad: false, theme: "neutral" }); const { svg: rendered } = await mermaid.render(`mermaid-${id}`, code); if (!cancelled) setSvg(rendered); } catch (e) { if (!cancelled) setError(e instanceof Error ? e.message : String(e)); } } render(); return () => { cancelled = true; }; }, [code, id]); if (error) { return (
                {error}
            
); } if (!svg) { return
; } return (
); }