"use client"; // Rendu Markdown des réponses : GFM + LaTeX (KaTeX), sans HTML brut (XSS), // citations [Sx] transformées en puces cliquables. import { memo } from "react"; import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; import remarkMath from "remark-math"; import rehypeKatex from "rehype-katex"; function prepareCitations(content: string): string { // [S3] → lien markdown interne que le composant « a » rend comme puce. return content.replace(/\[S(\d+)\]/g, "[S$1](#citation-$1)"); } export const Markdown = memo(function Markdown({ content, onCitationClick, streaming, }: { content: string; onCitationClick?: (index: number) => void; streaming?: boolean; }) { return (