From 2ef92db9edbf88ec6871f0245e097d0f6e5a8a3b Mon Sep 17 00:00:00 2001 From: Nick Szaunig Date: Mon, 28 Sep 2026 17:46:30 +0200 Subject: [PATCH] style: Hero, Leistungen und Abschnittsrhythmus ueberarbeitet - Hero: Schlagzeile zweizeilig direkt unter dem Masthead, Buchung im ersten Bildschirm; Termin, Ort und Preis als Cover-Line-Leiste - Leistungen: Inklusivleistungen in Bodoni ohne Linie unter jeder Zeile, Beispielablauf ruhiger, Hinweis unter statt neben der Ueberschrift - Unterkunft ohne Split-Header, Ueber ARTISTA kompakter - FAQ-Symbol gezeichnet statt Textzeichen, groesserer Abschnittsabstand - Header auf Mobil ohne doppeltes "Modelcamp 2027" Co-Authored-By: Claude Opus 5.5 (1M context) --- src/components/Hero.tsx | 67 +++++++++++++--------- src/components/SiteHeader.tsx | 4 +- src/components/sections/CampSections.tsx | 64 ++++++++++----------- src/components/sections/FaqSection.tsx | 9 +-- src/components/sections/PeopleSections.tsx | 10 ++-- 5 files changed, 80 insertions(+), 74 deletions(-) diff --git a/src/components/Hero.tsx b/src/components/Hero.tsx index b44dd66..b14fc36 100644 --- a/src/components/Hero.tsx +++ b/src/components/Hero.tsx @@ -22,66 +22,77 @@ export function priceLine(pricing: PublicPricing): string { /** * Hero als Magazin-Cover: der Masthead "ARTISTA" ueberlappt das Leitbild, - * Termin, Ort und Preis stehen als Cover-Lines daneben. + * Schlagzeile und Buchung stehen daneben und bleiben im ersten Bildschirm. + * Termin, Ort und Preis folgen als Cover-Lines in einer eigenen Leiste. */ export function Hero({ facts, pricing, showDrafts }: { facts: PublicCampFacts; pricing: PublicPricing; showDrafts: boolean }) { const place = facts.location ? `${facts.location}${facts.region ? `, ${facts.region}` : ""}` : "Italien"; + const coverLines = [ + { term: "Termin", value: dateLine(facts) }, + { term: "Ort", value: facts.location ?? "Italien, genauer Ort folgt" }, + { term: "Preis", value: priceLine(pricing) }, + ]; return ( -
+

Modelcamp 2027 {place}

-

+

ARTISTA ARTISTA Modelcamp 2027 – {site.hero.headline}

-
-
+
+
-
-

{site.hero.headline}

-

{site.hero.subline}

-
-
-
Termin
-
{dateLine(facts)}
-
-
-
Ort
-
{facts.location ?? "Italien, genauer Ort folgt"}
-
-
-
Preis
-
{priceLine(pricing)}
-
-
-
+
+

+ {/* Jeder Satz eine Zeile: bricht nie mitten im Gedanken um. */} + {site.hero.headline.split(/(?<=\.)\s+/).map((sentence) => ( + + {sentence} + + ))} +

+

{site.hero.subline}

+
{pricing.checkoutOpen ? ( - Platz buchen + Platz buchen ) : ( - + Preis und Buchungsstart )} - + Mehr über das Camp
+ +
+ {coverLines.map((line, index) => ( +
0 ? "sm:border-l sm:pl-6 md:pl-8" : "sm:pr-6"}`} + > +
{line.term}
+
{line.value}
+
+ ))} +
); diff --git a/src/components/SiteHeader.tsx b/src/components/SiteHeader.tsx index 47a9230..bec67e5 100644 --- a/src/components/SiteHeader.tsx +++ b/src/components/SiteHeader.tsx @@ -46,14 +46,14 @@ export function SiteHeader() { return (
Zum Inhalt springen
- ARTISTA Modelcamp 2027 + ARTISTA Modelcamp 2027