import Link from "next/link"; import Image from "next/image"; import { getBlogPosts } from "../lib/payload"; import { Reveal, RevealGroup, RevealItem } from "./Reveal"; export async function Blog() { const posts = await getBlogPosts(3); if (posts.length === 0) return null; const featured = { ...posts[0], href: `/blog/${posts[0].slug}` }; const secondary = posts .slice(1, 3) .map((post) => ({ ...post, href: `/blog/${post.slug}` })); return (
{/* Section header */}

Neue Impulse

Gedanken, Methoden & Impulse

{/* Posts grid */} {/* Featured post — image on top on Mobile, side-by-side from sm+ */}
{featured.thumbnail && ( )}
{featured.category} {featured.readTime} Min

{featured.title}

{featured.excerpt}

{/* flex + arrow as its own span — see Tools.tsx's comment on this same fix (→'s glyph baseline sits low next to text). */} Zum Beitrag
{/* Secondary posts — image on top on Mobile, side-by-side from sm+ */}
{secondary.map((post) => (
{post.thumbnail && ( )}
{post.category} {post.readTime} Min

{post.title}

{post.excerpt}

{/* flex + arrow as its own span — see the featured post's own Link above / Tools.tsx's comment on this same fix. */} Zum Beitrag
))}
); }