feat: Hero-Hintergrundvideo im Admin, ScrollReveal + Bild-Perf auf Unterseiten
Docker Image bauen und veroeffentlichen / build-and-push (push) Successful in 2m31s

Neues admin-editierbares Hintergrundvideo fuer den Startseiten-Hero
(home.hero.video, MP4/WebM) mit eigenem, magic-byte-validiertem
Upload-Endpunkt (app/api/admin/upload-video) analog zur bestehenden
Bild-Upload-Pipeline. Ausserdem: ScrollReveal-Animation von der
Startseite auf Imkerei, Herkunft, Unternehmen, Ernten, Wissen, Kontakt,
Shop sowie die Produkt-/Ernte-/Chargen-Detailseiten ausgerollt (bisher
nur Startseite), priority auf bislang lazy geladene Above-the-fold-Bilder
(Herkunft/Unternehmen) gesetzt, und passende sizes-Hints auf Grid-Bilder
(Produktkarten, Origin/Regional/Business-Teaser, Ernten-Liste) ergaenzt
statt voller Viewport-Breite.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
Nick SzaunigandClaude Sonnet 5 committed 2026-09-11 14:53:14 +02:00
1 parent 398db5c5ec
commit 6814e9e2c8
25 files changed
+524 -119

No files matched your search

+13 -9
View File
@@ -1,6 +1,7 @@
import type { Metadata } from "next";
import { Container, SectionHeading } from "@/components/ui";
import { ContentImage } from "@/components/content-image";
import { ScrollReveal } from "@/components/scroll-reveal";
import { getLocale } from "@/i18n/locale";
import { getDictionary } from "@/i18n/get-dictionary";
import { getContentValue } from "@/lib/content";
@@ -21,7 +22,7 @@ export default async function ImkereiPage() {
return (
<div className="py-20">
<Container className="grid md:grid-cols-2 gap-14 items-center">
<div>
<ScrollReveal>
<SectionHeading
level="h1"
eyebrow={t.imkereiPage.eyebrow}
@@ -32,14 +33,17 @@ export default async function ImkereiPage() {
<p key={paragraph}>{paragraph}</p>
))}
</div>
</div>
<ContentImage
src={image || null}
alt={t.imkereiPage.imageLabel}
tone="honey"
className="aspect-[4/5] w-full"
label={t.imkereiPage.imageLabel}
/>
</ScrollReveal>
<ScrollReveal delay={0.1}>
<ContentImage
src={image || null}
alt={t.imkereiPage.imageLabel}
tone="honey"
className="aspect-[4/5] w-full"
label={t.imkereiPage.imageLabel}
sizes="(min-width: 768px) 50vw, 100vw"
/>
</ScrollReveal>
</Container>
</div>
);