{post.frontmatter.title}
{post.frontmatter.title}
{post.frontmatter.excerpt}
import { notFound } from 'next/navigation';
import { MDXRemote } from 'next-mdx-remote/rsc';
import { getPostBySlug, getAdjacentPosts } from '@/lib/blog';
interface BlogPostProps {
params: {
locale: string;
slug: string;
};
}
import Link from 'next/link';
import Image from 'next/image';
import VisualLinkPreview from '@/components/blog/VisualLinkPreview';
import Callout from '@/components/blog/Callout';
import HighlightBox from '@/components/blog/HighlightBox';
import Stats from '@/components/blog/Stats';
import AnimatedImage from '@/components/blog/AnimatedImage';
import ChatBubble from '@/components/blog/ChatBubble';
import SplitHeading from '@/components/blog/SplitHeading';
import PostNavigation from '@/components/blog/PostNavigation';
import PowerCTA from '@/components/blog/PowerCTA';
const components = {
VisualLinkPreview,
Callout,
HighlightBox,
Stats,
AnimatedImage,
ChatBubble,
PowerCTA,
SplitHeading,
a: ({ href, children, ...props }: any) => {
if (href?.startsWith('/')) {
return (
{children}
);
}
return (
{children}
);
},
img: (props: any) => (
{children}
), ul: ({ children, ...props }: any) => (), strong: ({ children, ...props }: any) => ( {children} ), code: ({ children, ...props }: any) => ({children}
{children}
),
pre: ({ children, ...props }: any) => (
{children}
),
table: ({ children, ...props }: any) => (
{post.frontmatter.excerpt}