chatbot-template/components/markdown.tsx

31 lines
753 B
TypeScript
Raw Normal View History

2024-11-14 12:16:05 -05:00
import Link from 'next/link';
import React, { memo } from 'react';
2025-08-18 22:48:13 -07:00
import { Streamdown, type StreamdownProps } from 'streamdown';
type Components = StreamdownProps['components'];
2024-10-11 18:00:22 +05:30
const components: Partial<Components> = {
a: ({ node, children, ...props }) => {
return (
// @ts-expect-error
<Link
className="text-blue-500 hover:underline"
target="_blank"
rel="noreferrer"
{...props}
>
{children}
</Link>
);
},
};
2024-10-11 18:00:22 +05:30
2025-08-18 22:48:13 -07:00
const NonMemoizedMarkdown = ({ children }: { children: string }) => (
<Streamdown components={components}>{children}</Streamdown>
);
2024-10-11 18:00:22 +05:30
export const Markdown = memo(
NonMemoizedMarkdown,
2024-11-15 13:00:15 -05:00
(prevProps, nextProps) => prevProps.children === nextProps.children,
2024-10-11 18:00:22 +05:30
);