+ Blog +
++ Gedanken, Methoden und Impulse für einen leichteren und klareren Alltag. +
++ {featured.title} +
+{featured.excerpt}
+ + Zum Beitrag + + ++ {post.title} +
+{post.excerpt}
+ + Zum Beitrag + + +diff --git a/app/blog/[slug]/page.tsx b/app/blog/[slug]/page.tsx index f4e00e0..7747da7 100644 --- a/app/blog/[slug]/page.tsx +++ b/app/blog/[slug]/page.tsx @@ -55,15 +55,17 @@ export default async function BlogDetailPage({ • {post.readTime} Min - {/* text-display + Playfair, not text-h-feature + Lora — matches - the actual Figma title exactly (Playfair Display SemiBold, - 44px), same "hero headline" treatment as Hero.tsx/ - TodoKartenHero.tsx/WeeklyImpulsesHero.tsx use, not the Lora - section-heading style the legal pages use. text-display's - clamp floors at exactly 2.75rem (44px) at the 768px Tablet - breakpoint, matching the Figma value precisely. */} + {/* Playfair (not Lora), matching the actual Figma title's font — + same "hero headline" family as Hero.tsx/TodoKartenHero.tsx/ + WeeklyImpulsesHero.tsx use, not the Lora section-heading style + the legal pages use. Sized down from text-display (Figma's + literal 44px), but text-h-feature (max 40px) read too small — + no named token sits between the two, so this is a one-off + fluid(36, 48) clamp using the project's own fluid.ts formula + (768px Tablet floor → 1440px Desktop cap), landing between + them instead of jumping all the way back to text-display. */}
{post.title}
diff --git a/app/blog/page.tsx b/app/blog/page.tsx
new file mode 100644
index 0000000..3fcd265
--- /dev/null
+++ b/app/blog/page.tsx
@@ -0,0 +1,136 @@
+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" },
+};
+
+export default async function BlogOverviewPage() {
+ const posts = await getBlogPosts(100);
+ const [featured, ...rest] = posts;
+
+ return (
+ <>
+
+ Blog
+
+ Gedanken, Methoden und Impulse für einen leichteren und klareren Alltag.
+
+ {featured.title}
+ {featured.excerpt}
+ {post.title}
+ {post.excerpt}