Messeseite: „EN“ führt zur englischen Messeseite, nicht zur Startseite
Auf her-career.anelia-wolf.com liegt die Seite unter „/“. usePathname() meldet dort „/“, und counterpart() leitete daraus folgerichtig die englische STARTSEITE ab – wer am Stand gescannt und dann auf „EN“ getippt hat, landete auf anelia-wolf.com/en/. Der Umschalter fragt jetzt den hreflang-Verweis im Kopf des Dokuments: Der hängt an der Seite, nicht an der Adresse, unter der sie ausgeliefert wird. Am selben Wurzelproblem: Der Sprachwechsel ist wegen der zwei Wurzel-Layouts ohnehin ein neues Dokument. Den macht jetzt der Browser statt router.push(), und über die Sprachgrenze wird nicht mehr vorgeladen – auf der Subdomain scheiterte der Vorabruf an CORS, mehrfach pro Seitenaufbau. Dazu zwei Sachen am Kopf der Messeseite: Das Monogramm steht hinter dem Schlusspunkt der Begrüßung, 0,783 em hoch (die Oberlänge der Playfair Display, im Browser gemessen) und auf der Grundlinie – und dafür nicht mehr in der Kopfzeile, wo es sonst zweimal auf einem Bildschirm stünde. Es steht dort dekorativ, sonst wandert der Text seines <title> über SplitText ins aria-label der Überschrift. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
ecf66c7340
commit
a37e48e4ef
8 files changed
+202
-23
No files matched your search
@@ -43,6 +43,11 @@ export interface ServiceHeroProps {
|
||||
* zu scrollen.
|
||||
*/
|
||||
children?: ReactNode;
|
||||
/**
|
||||
* Steht als letztes Zeichen in der H1, hinter dem Schlusspunkt. Auf der Messeseite
|
||||
* hängt hier das Monogramm – die Begrüßung endet mit der Marke, zu der sie gehört.
|
||||
*/
|
||||
h1Mark?: ReactNode;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
@@ -55,7 +60,7 @@ export interface ServiceHeroProps {
|
||||
* Fließtext gehalten hat – eine Stufe größer und über die Spalten 3–11 statt
|
||||
* 3–9. So trägt die Messeseite ihren Hero mit einem einzigen Satz.
|
||||
*/
|
||||
export function ServiceHero({ content, photo, children, className }: ServiceHeroProps) {
|
||||
export function ServiceHero({ content, photo, children, h1Mark, className }: ServiceHeroProps) {
|
||||
/* `masthead` und `eyebrow` stehen weiter in den Inhaltsdateien, werden aber seit
|
||||
dem 06.09.2026 nicht mehr gerendert (Kundenwunsch): die Kopfzeile trug dieselben
|
||||
Angaben doppelt, und über der H1 stand faktisch die Überschrift ein zweites Mal. */
|
||||
@@ -107,6 +112,28 @@ export function ServiceHero({ content, photo, children, className }: ServiceHero
|
||||
{h1.before}
|
||||
{h1.em && <em className={cn("italic", h1GoldEm && "gold-text")}>{h1.em}</em>}
|
||||
{h1.after}
|
||||
{h1Mark && (
|
||||
/* Auf der Grundlinie, hinter dem Punkt, 0,783 em hoch: Das ist die
|
||||
Oberlänge der Playfair Display (im Browser an „h“ und „b“ gemessen;
|
||||
die Versalhöhe liegt bei 0,719 em) – die Marke wird damit genau so
|
||||
hoch, wie die Schrift dieser Zeile maximal wird, und keinen Punkt
|
||||
höher. Die viewBox der Marke sitzt eng auf der Zeichnung, deshalb
|
||||
ist Kastenhöhe gleich sichtbare Höhe.
|
||||
|
||||
Zwischen Punkt und Marke steht KEIN Leerzeichen im Markup – der
|
||||
Abstand kommt aus `ml`, damit an dieser Stelle keine Umbruchstelle
|
||||
entsteht und die Marke nicht allein in eine letzte Zeile rutscht.
|
||||
|
||||
Dekorativ (`aria-hidden`): Die Marke steht im Kopf schon mit Namen.
|
||||
In der Überschrift stünde er ein zweites Mal – und zwar mitten im
|
||||
Satz, den ein Screenreader vorliest. */
|
||||
<span
|
||||
aria-hidden="true"
|
||||
className="ml-[0.22em] inline-block align-baseline [&_svg]:h-[0.783em] [&_svg]:w-auto"
|
||||
>
|
||||
{h1Mark}
|
||||
</span>
|
||||
)}
|
||||
</Lines>
|
||||
{subline && (
|
||||
<Reveal play="load" delay={1.0} as="p" className="mt-10 max-w-[40ch] font-sans text-xl font-light leading-[1.45] text-fg-muted">
|
||||
|
||||
Reference in new issue
Block a user