Add blog overview page (/blog), link Navbar "Blog" to it

- app/blog/page.tsx: header (title/subheading + bleeding photo with a
  left-edge fade, per Figma node 4577:330), featured-post card (most
  recent), remaining posts as a divided list with category/readTime/date,
  and the reusable Newsletter signup panel. Uses all real posts from
  Payload — the Figma mockup padded its list out to 4 items with two
  posts that were never actually seeded, so this only renders what
  exists (currently 1 featured + 2 listed).
- lib/payload.ts: BlogPost now carries publishedAt (needed for the list's
  per-post date), removed the now-redundant duplicate field on PostDetail.
- Navbar: "Blog" now links to /blog instead of scrolling to the
  homepage's #blog anchor — same real-route pattern as "Shop".
- blog/[slug]/page.tsx: earlier title-size tuning (fluid clamp between
  text-h-feature and text-display) from this session's follow-up
  feedback, not yet pushed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Marco
2026-07-19 21:04:10 +00:00
parent 2b270cf299
commit ed58a65b8f
4 changed files with 151 additions and 11 deletions
+10 -8
View File
@@ -55,15 +55,17 @@ export default async function BlogDetailPage({
<span></span>
<span>{post.readTime} Min</span>
</div>
{/* 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. */}
<p
className="font-semibold text-display text-text-primary leading-[1.12]"
className="font-semibold text-[clamp(2.25rem,1.393rem+1.786vw,3rem)] text-text-primary leading-[1.15]"
style={{ fontFamily: "var(--font-playfair)" }}
>
{post.title}