+ {post.title} +
++ {post.custom_excerpt || post.excerpt} +
+diff --git a/apps/website/app/[locale]/blog/[slug]/page.tsx b/apps/website/app/[locale]/blog/[slug]/page.tsx index 0f4345f..3984cdb 100644 --- a/apps/website/app/[locale]/blog/[slug]/page.tsx +++ b/apps/website/app/[locale]/blog/[slug]/page.tsx @@ -167,17 +167,44 @@ export default async function BlogPostPage({ params }: Props) {
- {post.primary_author?.name || "Unknown Author"} + {post.primary_author?.twitter ? ( + + {post.primary_author.name || "Unknown Author"} + + ) : ( + post.primary_author?.name || "Unknown Author" + )}
{formattedDate} • {post.reading_time} min read
diff --git a/apps/website/app/[locale]/blog/components/BlogPostCard.tsx b/apps/website/app/[locale]/blog/components/BlogPostCard.tsx
new file mode 100644
index 0000000..9b38222
--- /dev/null
+++ b/apps/website/app/[locale]/blog/components/BlogPostCard.tsx
@@ -0,0 +1,94 @@
+"use client";
+
+import type { Post } from "@/lib/ghost";
+import Image from "next/image";
+import Link from "next/link";
+
+interface BlogPostCardProps {
+ post: Post;
+ locale: string;
+}
+
+export function BlogPostCard({ post, locale }: BlogPostCardProps) {
+ const formattedDate = new Date(post.published_at).toLocaleDateString(locale, {
+ year: "numeric",
+ month: "long",
+ day: "numeric",
+ });
+
+ return (
+
+
+ {post.custom_excerpt || post.excerpt}
+
+ {post.title}
+
+
@@ -123,15 +132,42 @@ function BlogPostCard({ post, locale }: { post: Post; locale: string }) {