--- import Layout from "@layouts/Layout.astro"; import Header from "@components/Header.astro"; import Footer from "@components/Footer.astro"; import Tag from "@components/Tag.astro"; import Datetime from "@components/Datetime"; import type { CollectionEntry } from "astro:content"; import { slugifyStr } from "@utils/slugify"; import { SITE } from "@config"; import {render} from 'astro:content' export interface Props { post: CollectionEntry<"blog">; posts: CollectionEntry<"blog">[]; } const { post, posts } = Astro.props; const { title, author, description, ogImage, canonicalURL, pubDatetime, modDatetime, tags, editPost, } = post.data; const { Content } = await render(post) const ogImageUrl = typeof ogImage === "string" ? ogImage : ogImage?.src; const ogUrl = new URL( ogImageUrl ?? `/posts/${slugifyStr(title)}.png`, Astro.url.origin ).href; const layoutProps = { title: `${title} | ${SITE.title}`, author, description, pubDatetime, modDatetime, canonicalURL, ogImage: ogUrl, scrollSmooth: true, }; /* ========== Prev/Next Posts ========== */ const allPosts = posts.map(({ data: { title }, id }) => ({ id, title, })); const currentPostIndex = allPosts.findIndex(a => a.id === post.id); const prevPost = currentPostIndex !== 0 ? allPosts[currentPostIndex - 1] : null; const nextPost = currentPostIndex !== allPosts.length ? allPosts[currentPostIndex + 1] : null; ---

{title}

    {tags.map(tag => )}