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
))}
);
}