From c231005eae73c94dcdbf0b8fc1dde7918800953b Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Mon, 26 Oct 2026 09:48:03 -0600 Subject: [PATCH] fix: simplify Redact header and remove duplicate blog divider --- content-collections.ts | 1 + .../introducing-tanstack-redact/banner.jpg | Bin 0 -> 24015 bytes src/blog/introducing-tanstack-redact.md | 3 ++- src/components/markdown/MarkdownContent.tsx | 10 +++++++--- src/routes/blog.$.tsx | 4 +++- src/utils/blog.functions.ts | 1 + 6 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 public/blog-assets/introducing-tanstack-redact/banner.jpg diff --git a/content-collections.ts b/content-collections.ts index 27d4b8eba..4b0335aee 100644 --- a/content-collections.ts +++ b/content-collections.ts @@ -37,6 +37,7 @@ const posts = defineCollection({ contributors: z.string().array().optional(), library: libraryListSchema.optional(), headerImage: z.string().optional(), + socialImage: z.string().optional(), headerVideo: z.string().optional(), headerVideoCaptions: z.string().optional(), content: z.string(), diff --git a/public/blog-assets/introducing-tanstack-redact/banner.jpg b/public/blog-assets/introducing-tanstack-redact/banner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c9ab47f470152864cbf1a04a27b2087833d7bf50 GIT binary patch literal 24015 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 M%&uAg0{+hZAGq`!ApigX literal 0 HcmV?d00001 diff --git a/src/blog/introducing-tanstack-redact.md b/src/blog/introducing-tanstack-redact.md index fce673def..930bf0c59 100644 --- a/src/blog/introducing-tanstack-redact.md +++ b/src/blog/introducing-tanstack-redact.md @@ -6,9 +6,10 @@ draft: false authors: - Tanner Linsley library: redact +socialImage: /blog-assets/introducing-tanstack-redact/header.jpg --- -![TanStack Redact. Your React app. Less JavaScript.](/blog-assets/introducing-tanstack-redact/header.jpg) +![TanStack Redact](/blog-assets/introducing-tanstack-redact/banner.jpg) When I wrote [Projecting React](https://tannerlinsley.com/posts/projecting-react), I was pretty explicit about how far I wanted to take Redact. I wanted to see if a smaller implementation of the React APIs we used could work on my personal site and tanstack.com, and I was willing to keep it very specific to those two sites. diff --git a/src/components/markdown/MarkdownContent.tsx b/src/components/markdown/MarkdownContent.tsx index ea6a82009..0dad7f927 100644 --- a/src/components/markdown/MarkdownContent.tsx +++ b/src/components/markdown/MarkdownContent.tsx @@ -145,9 +145,13 @@ export function MarkdownContent({ ) : null} -
-
-
+ {title ? ( + <> +
+
+
+ + ) : null}
{ - const socialImage = getBlogSocialImageUrl(loaderData?.headerImage) + const socialImage = getBlogSocialImageUrl( + loaderData?.socialImage ?? loaderData?.headerImage, + ) return getBlogPostHead( loaderData ? { ...loaderData, socialImage } : undefined, diff --git a/src/utils/blog.functions.ts b/src/utils/blog.functions.ts index cb859c323..3482e7ded 100644 --- a/src/utils/blog.functions.ts +++ b/src/utils/blog.functions.ts @@ -129,6 +129,7 @@ export const fetchBlogPost = createServerFn({ method: 'GET' }) description: post.excerpt, filePath: `src/blog/${data}.md`, headerImage: post.headerImage, + socialImage: post.socialImage, isUnpublished, headerVideo: post.headerVideo, headerVideoCaptions: post.headerVideoCaptions,