Add mobile swipe gallery, shared ProductCard, dynamic Datenschutz address, GSC verification

- ProductGallery: touch swipe (left/right) now navigates slides on mobile,
  previously click-only.
- New shared ProductCard component used by ProductGrid/RelatedProducts/
  MerklisteGrid — product title is now the card's link (replaces the
  separate "Mehr erfahren" line), consistent aspect ratio across all
  three grids, more compact cards.
- Datenschutz: name/address/email now come from company-settings via a
  new VerantwortlicherBlock, same single-source pattern as Impressum's
  AnbieterAngaben — no more hand-typed address to keep in sync.
- layout.tsx: render googleSearchConsoleVerification via Next's native
  verification.google metadata field.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Marco
2026-08-02 05:38:55 +00:00
parent 23f8efcc2b
commit 9617478b0d
10 changed files with 283 additions and 265 deletions
+5 -1
View File
@@ -123,7 +123,11 @@ Every page can carry real per-page metadata — `/blog/[slug]`'s
`generateMetadata()` reads a post's own `seoTitle`/`seoDescription`/`seoImage`
(see the `posts` collection below); `app/layout.tsx`'s `generateMetadata()`
reads `getSeoSettings()` (ISR-cached, backed by `company-settings`) for
the site-wide fallback.
the site-wide fallback. That same `generateMetadata()` also sets
`verification: { google: seo.googleSearchConsoleVerification }` when an
admin has filled in company-settings' SEO-tab verification field — Next.js
renders that natively as `<meta name="google-site-verification">`, no
separate literal tag in this file.
JSON-LD structured data (`app/lib/structuredData.ts`, no headless
external validation step, just direct grepping of the rendered