Files
blitzkit/packages/website/src/components/Markdown.tsx
T

39 lines
1008 B
TypeScript
Raw Normal View History

2024-10-07 18:36:07 -05:00
import { Link, Table } from '@radix-ui/themes';
import MarkdownToJSX from 'markdown-to-jsx';
2025-08-18 11:11:35 -05:00
import type { ComponentProps } from 'react';
import { docImageUrl, isExternalImage } from '../core/blitzkit/docImages';
2024-10-07 18:36:07 -05:00
interface MarkdownProps {
children: string;
}
function Image({ src, ...props }: ComponentProps<'img'>) {
return (
<img
style={{ maxWidth: '100%' }}
src={src && isExternalImage(src) ? docImageUrl(src) : src}
{...props}
/>
);
2025-08-18 11:11:35 -05:00
}
2024-10-07 18:36:07 -05:00
export function Markdown({ children }: MarkdownProps) {
return (
<MarkdownToJSX
options={{
overrides: {
a: { component: Link },
table: { component: Table.Root },
thead: { component: Table.Header },
tbody: { component: Table.Body },
tr: { component: Table.Row },
th: { component: Table.ColumnHeaderCell },
td: { component: Table.Cell },
2025-08-18 11:11:35 -05:00
img: { component: Image },
2024-10-07 18:36:07 -05:00
},
}}
>
{children}
</MarkdownToJSX>
);
}