import type { Metadata } from "next"; import Link from "next/link"; import Image from "next/image"; import { Reveal, RevealGroup, RevealItem } from "../components/Reveal"; import { Newsletter } from "../components/Newsletter"; import { Footer } from "../components/Footer"; import { getBlogPosts } from "../lib/payload"; import { formatDate } from "../lib/format"; export const metadata: Metadata = { title: "Blog", description: "Gedanken, Methoden und Impulse für einen leichteren und klareren Alltag.", alternates: { canonical: "/blog" }, openGraph: { title: "Blog | einfach produktiv.", description: "Gedanken, Methoden und Impulse für einen leichteren und klareren Alltag.", url: "/blog", type: "website", images: ["/blog-featured.jpg"], }, }; export default async function BlogOverviewPage() { const posts = await getBlogPosts(100); const [featured, ...rest] = posts; return ( <>
{/* Header — copy left, photo bleeds to the viewport edge on the right with a left-edge fade into bg-base, matching Figma's hero-fade-left/hero-fade-bottom overlays (node 4577:330). */}

Blog

Gedanken, Methoden und Impulse für einen leichteren und klareren Alltag.

{featured && ( // -mt-8, not pt-10 — pulls the card up to slightly overlap the // hero section's bottom edge instead of sitting flush below it. // relative z-10 keeps it stacked above the hero's own photo.
{featured.thumbnail && ( )}
{featured.categories.join(", ")} {featured.readTime} Min {formatDate(featured.publishedAt)}

{featured.title}

{featured.excerpt}

Zum Beitrag
)} {rest.length > 0 && ( {rest.map((post) => (
{post.thumbnail && ( )}
{post.categories.join(", ")} {post.readTime} Min {formatDate(post.publishedAt)}

{post.title}

{post.excerpt}

Zum Beitrag
))}
)}