This commit is contained in:
@@ -10,11 +10,26 @@ type PageHeroProps = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function getDefaultLines(title: string): HeroTitleLineValue[] {
|
function getDefaultLines(title: string): HeroTitleLineValue[] {
|
||||||
return title.split("\n").filter(Boolean).map((line, index) => ({
|
return title.split("\n").filter(Boolean).map((line) => {
|
||||||
text: line,
|
const words = line.trim().split(/\s+/).filter(Boolean);
|
||||||
tone: index === 0 ? "soft" : "accent",
|
|
||||||
align: "center",
|
if (words.length <= 1) {
|
||||||
}));
|
return {
|
||||||
|
text: line,
|
||||||
|
tone: "soft",
|
||||||
|
align: "center",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
text: line,
|
||||||
|
align: "center",
|
||||||
|
segments: words.map((word, index) => ({
|
||||||
|
text: index === words.length - 1 ? word : `${word} `,
|
||||||
|
tone: index % 2 === 0 ? "soft" : "accent",
|
||||||
|
})),
|
||||||
|
};
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function PageHero({ badge, title, description, lines, locale }: PageHeroProps) {
|
export function PageHero({ badge, title, description, lines, locale }: PageHeroProps) {
|
||||||
|
|||||||
+31
-31
@@ -6,8 +6,8 @@
|
|||||||
"about": "Über mich",
|
"about": "Über mich",
|
||||||
"contact": "Kontakt",
|
"contact": "Kontakt",
|
||||||
"root": "Root",
|
"root": "Root",
|
||||||
"openMenu": "Menue oeffnen",
|
"openMenu": "Menü öffnen",
|
||||||
"closeMenu": "Menue schliessen",
|
"closeMenu": "Menü schliessen",
|
||||||
"themeToggle": "Theme wechseln",
|
"themeToggle": "Theme wechseln",
|
||||||
"soundMute": "Sounds stummschalten",
|
"soundMute": "Sounds stummschalten",
|
||||||
"soundUnmute": "Sounds aktivieren"
|
"soundUnmute": "Sounds aktivieren"
|
||||||
@@ -19,21 +19,21 @@
|
|||||||
"badge": "Coming Soon",
|
"badge": "Coming Soon",
|
||||||
"kicker": "Hi, ich bin Moh",
|
"kicker": "Hi, ich bin Moh",
|
||||||
"titleLineOne": "Eine klarere",
|
"titleLineOne": "Eine klarere",
|
||||||
"titleLineTwo": "naechste Version",
|
"titleLineTwo": "nächste Version",
|
||||||
"titleLineThree": "ist unterwegs.",
|
"titleLineThree": "ist unterwegs.",
|
||||||
"description": "Die neue Version entsteht gerade mit staerkerer Identitaet, klarerem Inhalt und einer fokussierteren Erfahrung von Anfang bis Ende.",
|
"description": "Die neue Version entsteht gerade mit stärkerer Identität, klarerem Inhalt und einer fokussierteren Erfahrung von Anfang bis Ende.",
|
||||||
"note": "Wenn du schon ein Projekt im Kopf hast, kannst du dich jetzt melden und wir starten frueh ins Gespraech.",
|
"note": "Wenn du schon ein Projekt im Kopf hast, kannst du dich jetzt melden und wir starten früh ins Gespräch.",
|
||||||
"primaryCta": "Kontakt aufnehmen",
|
"primaryCta": "Kontakt aufnehmen",
|
||||||
"secondaryCta": "Zur Startseite"
|
"secondaryCta": "Zur Startseite"
|
||||||
},
|
},
|
||||||
"homepage": {
|
"homepage": {
|
||||||
"heroKicker": "Hi, ich bin Moh",
|
"heroKicker": "Hi, ich bin Moh",
|
||||||
"heroTitle": "frontend\ndeveloper\n& designer",
|
"heroTitle": "frontend\ndeveloper\n& designer",
|
||||||
"heroText": "Ich entwickle digitale Loesungen fuer echte Probleme,\ndie gut aussehen und sauber funktionieren.",
|
"heroText": "Ich entwickle digitale Lösungen für echte Probleme,\ndie gut aussehen und sauber funktionieren.",
|
||||||
"servicesEyebrow": "Leistungen",
|
"servicesEyebrow": "Leistungen",
|
||||||
"servicesTitle": "Digitale Arbeit, die sich an deinem Geschaeft orientiert und nicht an Vorlagen.",
|
"servicesTitle": "Digitale Arbeit, die sich an deinem Geschäft orientiert und nicht an Vorlagen.",
|
||||||
"servicesText": "Von Markenaufbau und Websites bis zu Shops, SEO, Tracking, WordPress Plugins und internen Systemen geht es immer um dasselbe: mehr Klarheit, bessere Wirkung und eine saubere Grundlage fuer Wachstum.",
|
"servicesText": "Von Markenaufbau und Websites bis zu Shops, SEO, Tracking, WordPress Plugins und internen Systemen geht es immer um dasselbe: mehr Klarheit, bessere Wirkung und eine saubere Grundlage für Wachstum.",
|
||||||
"servicesPrimaryCta": "Erzaehl mir von deinem Projekt",
|
"servicesPrimaryCta": "Erzähl mir von deinem Projekt",
|
||||||
"servicesSecondaryCta": "Meine Arbeiten ansehen",
|
"servicesSecondaryCta": "Meine Arbeiten ansehen",
|
||||||
"serviceBrand": "Markenaufbau mit klarer Richtung.",
|
"serviceBrand": "Markenaufbau mit klarer Richtung.",
|
||||||
"serviceWebsite": "Websites mit sauberer Struktur.",
|
"serviceWebsite": "Websites mit sauberer Struktur.",
|
||||||
@@ -41,35 +41,35 @@
|
|||||||
"serviceWordPress": "Eigene WordPress Plugins.",
|
"serviceWordPress": "Eigene WordPress Plugins.",
|
||||||
"serviceSeo": "Mehr Sichtbarkeit in Suchmaschinen.",
|
"serviceSeo": "Mehr Sichtbarkeit in Suchmaschinen.",
|
||||||
"serviceTracking": "Tracking und bessere Auswertung.",
|
"serviceTracking": "Tracking und bessere Auswertung.",
|
||||||
"serviceSystem": "Interne Systeme fuer Teams und Firmen.",
|
"serviceSystem": "Interne Systeme für Teams und Firmen.",
|
||||||
"toPortfolio": "Portfolio ansehen",
|
"toPortfolio": "Portfolio ansehen",
|
||||||
"toProducts": "Produkte ansehen",
|
"toProducts": "Produkte ansehen",
|
||||||
"toContact": "Kontakt aufnehmen"
|
"toContact": "Kontakt aufnehmen"
|
||||||
},
|
},
|
||||||
"portfolioPage": {
|
"portfolioPage": {
|
||||||
"title": "Portfolio",
|
"title": "Portfolio",
|
||||||
"heroBadge": "Ausgewaehlte Arbeiten",
|
"heroBadge": "Ausgewählte Arbeiten",
|
||||||
"heroTitle": "Ausgewaehlte Projekte",
|
"heroTitle": "Portfolio",
|
||||||
"intro": "Eine Auswahl von Projekten mit Fokus auf Klarheit und Ergebnis.",
|
"intro": "Eine Auswahl von Projekten mit Fokus auf Klarheit und Ergebnis.",
|
||||||
"open": "Projekt oeffnen",
|
"open": "Projekt öffnen",
|
||||||
"all": "Alle Kategorien",
|
"all": "Alle Kategorien",
|
||||||
"empty": "Fuer diesen Filter sind noch keine veroeffentlichten Projekte vorhanden."
|
"empty": "Für diesen Filter sind noch keine veröffentlichten Projekte vorhanden."
|
||||||
},
|
},
|
||||||
"productsPage": {
|
"productsPage": {
|
||||||
"title": "Produkte",
|
"title": "Produkte",
|
||||||
"heroBadge": "Pakete und Loesungen",
|
"heroBadge": "Pakete und Lösungen",
|
||||||
"heroTitle": "Klare Angebote",
|
"heroTitle": "Klare Angebote",
|
||||||
"intro": "Pakete fuer Teams von Start bis Skalierung.",
|
"intro": "Pakete für Teams von Start bis Skalierung.",
|
||||||
"open": "Produkt oeffnen"
|
"open": "Produkt öffnen"
|
||||||
},
|
},
|
||||||
"aboutPage": {
|
"aboutPage": {
|
||||||
"title": "Ueber mich",
|
"title": "Über mich",
|
||||||
"heroBadge": "Mehr ueber mich",
|
"heroBadge": "Mehr über mich",
|
||||||
"heroTitle": "Ueber mich",
|
"heroTitle": "Über mich",
|
||||||
"intro": "Ich baue klare digitale Erlebnisse fuer Marken, Produkte und Teams.",
|
"intro": "Ich baue klare digitale Erlebnisse für Marken, Produkte und Teams.",
|
||||||
"valuesTitle": "Wie ich arbeite",
|
"valuesTitle": "Wie ich arbeite",
|
||||||
"valueA": "Strategie zuerst",
|
"valueA": "Strategie zuerst",
|
||||||
"valueAText": "Jedes Projekt startet mit Zielbild, Scope und Prioritaeten.",
|
"valueAText": "Jedes Projekt startet mit Zielbild, Scope und Prioritäten.",
|
||||||
"valueB": "Saubere Systeme",
|
"valueB": "Saubere Systeme",
|
||||||
"valueBText": "Ich setze auf wartbare Komponenten und klare Strukturen.",
|
"valueBText": "Ich setze auf wartbare Komponenten und klare Strukturen.",
|
||||||
"valueC": "Enge Zusammenarbeit",
|
"valueC": "Enge Zusammenarbeit",
|
||||||
@@ -89,30 +89,30 @@
|
|||||||
"phone": "Telefon",
|
"phone": "Telefon",
|
||||||
"company": "Firma",
|
"company": "Firma",
|
||||||
"message": "Nachricht",
|
"message": "Nachricht",
|
||||||
"note": "Teile kurz Kontext, Ziel und Deadline mit, damit die Antwort praeziser ausfallen kann.",
|
"note": "Teile kurz Kontext, Ziel und Deadline mit, damit die Antwort präziser ausfallen kann.",
|
||||||
"submit": "Senden",
|
"submit": "Senden",
|
||||||
"preview": "Success Seite ansehen",
|
"preview": "Success Seite ansehen",
|
||||||
"city": "Berlin, Deutschland"
|
"city": "Berlin, Deutschland"
|
||||||
},
|
},
|
||||||
"successPage": {
|
"successPage": {
|
||||||
"title": "Danke fuer deine Nachricht",
|
"title": "Danke für deine Nachricht",
|
||||||
"text": "Ich habe deine Anfrage erhalten und melde mich zeitnah.",
|
"text": "Ich habe deine Anfrage erhalten und melde mich zeitnah.",
|
||||||
"home": "Zur Startseite",
|
"home": "Zur Startseite",
|
||||||
"contact": "Zur Kontaktseite"
|
"contact": "Zur Kontaktseite"
|
||||||
},
|
},
|
||||||
"portfolioDetail": {
|
"portfolioDetail": {
|
||||||
"back": "Zurueck zum Portfolio",
|
"back": "Zurück zum Portfolio",
|
||||||
"preview": "Vorschau oeffnen",
|
"preview": "Vorschau öffnen",
|
||||||
"openLink": "Link oeffnen",
|
"openLink": "Link öffnen",
|
||||||
"gallery": "Projektgalerie",
|
"gallery": "Projektgalerie",
|
||||||
"download": "Dokument oeffnen"
|
"download": "Dokument öffnen"
|
||||||
},
|
},
|
||||||
"productDetail": {
|
"productDetail": {
|
||||||
"back": "Zurueck zu Produkten",
|
"back": "Zurück zu Produkten",
|
||||||
"included": "Inklusive",
|
"included": "Inklusive",
|
||||||
"stepOne": "Kickoff und Scope Klarheit",
|
"stepOne": "Kickoff und Scope Klarheit",
|
||||||
"stepTwo": "Setup von Design und Komponenten",
|
"stepTwo": "Setup von Design und Komponenten",
|
||||||
"stepThree": "Implementierung und Uebergabe",
|
"stepThree": "Implementierung und Übergabe",
|
||||||
"action": "Kontakt fuer Angebot"
|
"action": "Kontakt für Angebot"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -49,7 +49,7 @@
|
|||||||
"portfolioPage": {
|
"portfolioPage": {
|
||||||
"title": "Portfolio",
|
"title": "Portfolio",
|
||||||
"heroBadge": "Selected work",
|
"heroBadge": "Selected work",
|
||||||
"heroTitle": "Selected work",
|
"heroTitle": "Portfolio",
|
||||||
"intro": "Selected projects with a focus on clarity and outcomes.",
|
"intro": "Selected projects with a focus on clarity and outcomes.",
|
||||||
"open": "Open project",
|
"open": "Open project",
|
||||||
"all": "All categories",
|
"all": "All categories",
|
||||||
|
|||||||
Reference in New Issue
Block a user