Files
supabase/apps/studio/components/interfaces/Markdown.tsx
T
Saxon FletcherandJoshen Lim 23346c1c52 Small advisor refinements (#41150)
* small advisor refinements

* copy

* Nit

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-12-08 16:27:06 +10:00

37 lines
1.1 KiB
TypeScript

import { InlineLink } from 'components/ui/InlineLink'
import { PropsWithChildren } from 'react'
import { ReactMarkdown, ReactMarkdownOptions } from 'react-markdown/lib/react-markdown'
import remarkGfm from 'remark-gfm'
import { cn } from 'ui'
interface MarkdownProps extends Omit<ReactMarkdownOptions, 'children' | 'node'> {
className?: string
/** @deprecated Should remove this and just take `children` instead */
content?: string
extLinks?: boolean
}
export const Markdown = ({
children,
className,
content = '',
extLinks = false,
...props
}: PropsWithChildren<MarkdownProps>) => {
return (
<ReactMarkdown
remarkPlugins={[remarkGfm]}
components={{
h3: ({ children }) => <h3 className="mb-1">{children}</h3>,
code: ({ children }) => <code className="text-code-inline">{children}</code>,
a: ({ href, children }) => <InlineLink href={href ?? '/'}>{children}</InlineLink>,
}}
{...props}
className={cn('text-sm', className)}
>
{(children as string) ?? content}
</ReactMarkdown>
)
}