34 lines
1.2 KiB
Text
34 lines
1.2 KiB
Text
---
|
|
import { getCollection, render } from 'astro:content';
|
|
import CoralComments from '@/components/CoralComments.astro';
|
|
import DefaultLayout from '@/layouts/DefaultLayout.astro';
|
|
import { BlogPost } from '@/components/sections/blog-post';
|
|
import NewsletterSignup from '@/components/sections/newsletter-signup';
|
|
import { ACTIVE_BLOG_SITE } from '@/blog-sites.js';
|
|
import { SITE_TITLE } from '@/consts';
|
|
|
|
export async function getStaticPaths() {
|
|
const posts = await getCollection(ACTIVE_BLOG_SITE.key);
|
|
return posts.map((post) => ({
|
|
params: { slug: post.id.replace(/\/index$/, '') },
|
|
props: post,
|
|
}));
|
|
}
|
|
|
|
const post = Astro.props;
|
|
const { Content } = await render(post);
|
|
const postSlug = post.id.replace(/\/index$/, '');
|
|
const coralStoryID = `${ACTIVE_BLOG_SITE.key}:${postSlug}`;
|
|
const coralStoryURL = new URL(`/${postSlug}/`, ACTIVE_BLOG_SITE.url).toString();
|
|
---
|
|
|
|
<DefaultLayout title={`${post.data.title} | ${SITE_TITLE}`} description={post.data.description}>
|
|
<div class="py-16 md:py-28 lg:py-32">
|
|
<BlogPost post={post} client:only="react">
|
|
<Content />
|
|
</BlogPost>
|
|
</div>
|
|
|
|
<CoralComments storyID={coralStoryID} storyURL={coralStoryURL} />
|
|
<NewsletterSignup client:load />
|
|
</DefaultLayout>
|