import Markdown from "react-markdown"; import remarkBreaks from "remark-breaks"; import remarkGfm from "remark-gfm"; import Stack from "@moduletrace/twui/layout/Stack"; import linkComputerRefs from "@/src/utils/link-computer-refs"; import { UserMarkdownComponents } from "../(data)/user-markdown-components"; import { QuotableAttribute } from "../(hooks)/use-message-selection"; import { twMerge } from "tailwind-merge"; /** * Kept module-level: a new array on every render makes `react-markdown` * parse the message again. */ const RemarkPlugins = [remarkGfm, remarkBreaks]; /** * Ink bubble with paper text; inverts in dark mode. The text is markdown * (GFM; raw HTML is never rendered) as the composer writes it, a single * line break kept as one, so older plain messages read as typed. Bots * and workspaces it mentions show as chips. */ export default function UserBubble({ text }: { text: string }) { return ( {linkComputerRefs({ text })} ); }