import React, { JSX } from 'react'
import Markdoc from '@markdoc/markdoc'
// Custom components for Markdoc tags
const Callout = ({
type = 'info',
title,
children,
}: {
type?: string
title?: string
children: React.ReactNode
}) => {
const styles = {
info: 'bg-blue-50 border-blue-200 text-blue-800',
warning: 'bg-yellow-50 border-yellow-200 text-yellow-800',
error: 'bg-red-50 border-red-200 text-red-800',
success: 'bg-green-50 border-green-200 text-green-800',
}
return (
// @ts-ignore
{title &&
{title}
}
{children}
)
}
const Heading = ({
level,
id,
children,
}: {
level: number
id: string
children: React.ReactNode
}) => {
const Tag = `h${level}` as keyof JSX.IntrinsicElements
const sizes = {
1: 'text-3xl font-bold',
2: 'text-2xl font-semibold',
3: 'text-xl font-semibold',
4: 'text-lg font-semibold',
5: 'text-base font-semibold',
6: 'text-sm font-semibold',
}
return (
// @ts-ignore
{children}
)
}
// Component mapping for Markdoc
const components = {
Callout,
Heading,
}
interface MarkdocRendererProps {
content: any // Markdoc transformed content
}
const MarkdocRenderer: React.FC = ({ content }) => {
return (
{Markdoc.renderers.react(content, React, { components })}
)
}
export default MarkdocRenderer