import React from 'react'
import ReactMarkdown from 'react-markdown'
import { ScrollArea } from '@/components/ui/scroll-area'
import remarkGfm from 'remark-gfm'
import { cn } from '@/utils/cn'
export interface MarkdownPreviewProps {
/** Markdown 文件的 URL */
url: string
}
export interface MarkdownContentProps {
/** 直接传入 Markdown 字符串 */
content: string
className?: string
}
/**
* 内联 Markdown 渲染组件 - 接收字符串内容直接渲染
*/
export function MarkdownContent({ content, className }: MarkdownContentProps) {
return (
{content}
)
}
/**
* Markdown 预览组件 - 接收 URL,fetch 内容后渲染
*/
export function MarkdownPreview({ url }: MarkdownPreviewProps) {
const [content, setContent] = React.useState('')
const [loading, setLoading] = React.useState(true)
React.useEffect(() => {
if (!url) return
setLoading(true)
fetch(url)
.then(res => res.text())
.then(text => setContent(text))
.catch(() => setContent('加载失败'))
.finally(() => setLoading(false))
}, [url])
if (loading) {
return (
)
}
return (
{content}
)
}
export default MarkdownPreview