import React from 'react'; import ReactMarkdown from 'react-markdown'; import remarkGfm from 'remark-gfm'; import ErrorBoundary from './ErrorBoundary'; import CodeBlock from './CodeBlock'; /** * SafeMarkdown component that wraps ReactMarkdown with error handling * Displays raw content as fallback if markdown parsing fails */ const SafeMarkdown = ({ content, className = 'markdown-content' }) => { // Fallback UI that shows raw content when ReactMarkdown fails const renderFallback = (error) => { console.error('Markdown rendering error:', error); return (

Error rendering markdown. Showing raw content:

{content}
); }; return (
, code({ node, inline, className: codeClassName, children, ...props }) { const match = /language-(\w+)/.exec(codeClassName || ''); return !inline && match ? ( ) : ( {children} ); }, }} > {content} ); }; export default SafeMarkdown;