feat: add localizations for hero section text and buttons
All checks were successful
Deploy Portfolio to VPS / deploy (push) Successful in 27s
All checks were successful
Deploy Portfolio to VPS / deploy (push) Successful in 27s
This commit is contained in:
parent
5b261699a1
commit
127c4a748b
3 changed files with 28 additions and 14 deletions
|
|
@ -1,16 +1,22 @@
|
||||||
|
"use client";
|
||||||
|
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
import SocialLinks from "./Social";
|
import SocialLinks from "./Social";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hero section showcasing intro title, call-to-action links, and personal portrait
|
* Hero section showcasing intro title, call-to-action links, and personal portrait
|
||||||
*/
|
*/
|
||||||
export default function Hero() {
|
export default function Hero() {
|
||||||
|
const tCommon = useTranslations("Common");
|
||||||
|
const tHero = useTranslations("Hero");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="relative pt-18 py-6 px-4 md:px-6 md:pt-24 max-w-5xl mx-auto">
|
<section className="relative pt-18 py-6 px-4 md:px-6 md:pt-24 max-w-5xl mx-auto">
|
||||||
<div className="grid grid-cols-1 md:grid-cols-12 gap-3 items-center z-10 w-full">
|
<div className="grid grid-cols-1 md:grid-cols-12 gap-3 items-center z-10 w-full">
|
||||||
{/* Main Content & Call to Actions */}
|
{/* Main Content & Call to Actions */}
|
||||||
<div className=" self-start md:col-span-8 lg:space-y-5 md:space-y-4 space-y-3 text-left">
|
<div className=" self-start md:col-span-8 lg:space-y-5 md:space-y-4 space-y-3 text-left">
|
||||||
<span className="text-blue-500 font-mono text-sm tracking-wider uppercase">
|
<span className="text-blue-500 font-mono text-sm tracking-wider uppercase">
|
||||||
// Hi, my name is
|
// {tHero("greeting")}
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<h1 className="text-4xl sm:text-5xl lg:text-6xl font-extrabold tracking-tight text-white leading-none">
|
<h1 className="text-4xl sm:text-5xl lg:text-6xl font-extrabold tracking-tight text-white leading-none">
|
||||||
|
|
@ -18,20 +24,14 @@ export default function Hero() {
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<h2 className="text-3xl sm:text-4xl lg:text-5xl font-semibold text-slate-400 tracking-tight">
|
<h2 className="text-3xl sm:text-4xl lg:text-5xl font-semibold text-slate-400 tracking-tight">
|
||||||
Full-Stack{" "}
|
{tHero("rolePrefix")}{" "}
|
||||||
<span className="text-blue-400/80 font-medium">Developer</span>
|
<span className="text-blue-400/80 font-medium">
|
||||||
|
{tHero("roleSuffix")}
|
||||||
|
</span>
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<p className="text-lg leading-relaxed max-w-xl">
|
<p className="text-lg leading-relaxed max-w-xl">
|
||||||
I conceptualize and develop modern web applications. With a sharp
|
{tHero("description")}
|
||||||
eye for detail and a focus on clean code, I bring digital ideas to
|
|
||||||
life.
|
|
||||||
{/*
|
|
||||||
German:
|
|
||||||
Ich konzipiere und entwickle moderne Web-Anwendungen. Mit einem klaren
|
|
||||||
Auge fürs Detail und einem Fokus auf sauberen Code erwecke ich
|
|
||||||
digitale Ideen zum Leben.
|
|
||||||
*/}
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{/* Action Buttons */}
|
{/* Action Buttons */}
|
||||||
|
|
@ -40,7 +40,7 @@ export default function Hero() {
|
||||||
href="#contactme"
|
href="#contactme"
|
||||||
className="px-6 py-3 bg-slate-900 text-blue-500 font-semibold rounded-lg border border-blue-500/40 hover:border-blue-400 hover:bg-blue-600 hover:text-white shadow-md shadow-blue-950/50 transition-all duration-200 hover:-translate-y-0.5 hover:shadow-lg hover:shadow-blue-500/20 inline-block text-center"
|
className="px-6 py-3 bg-slate-900 text-blue-500 font-semibold rounded-lg border border-blue-500/40 hover:border-blue-400 hover:bg-blue-600 hover:text-white shadow-md shadow-blue-950/50 transition-all duration-200 hover:-translate-y-0.5 hover:shadow-lg hover:shadow-blue-500/20 inline-block text-center"
|
||||||
>
|
>
|
||||||
Contact me
|
{tCommon("contact")}
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
href="/assets/downloads/Andre_Kempf_Lebenslauf.pdf"
|
href="/assets/downloads/Andre_Kempf_Lebenslauf.pdf"
|
||||||
|
|
@ -48,7 +48,7 @@ export default function Hero() {
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="px-6 py-3 bg-slate-900 border border-slate-800 hover:border-slate-700 hover:bg-slate-850 font-semibold rounded-lg transition-all hover:-translate-y-0.5 duration-200 inline-block text-center"
|
className="px-6 py-3 bg-slate-900 border border-slate-800 hover:border-slate-700 hover:bg-slate-850 font-semibold rounded-lg transition-all hover:-translate-y-0.5 duration-200 inline-block text-center"
|
||||||
>
|
>
|
||||||
Download CV
|
{tHero("downloadCv")}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -7,5 +7,12 @@
|
||||||
},
|
},
|
||||||
"Header": {
|
"Header": {
|
||||||
"search": "Suchen"
|
"search": "Suchen"
|
||||||
|
},
|
||||||
|
"Hero": {
|
||||||
|
"greeting": "Hi, mein Name ist",
|
||||||
|
"rolePrefix": "Full-Stack",
|
||||||
|
"roleSuffix": "Entwickler",
|
||||||
|
"description": "Ich konzipiere und entwickle moderne Web-Anwendungen. Mit einem klaren Auge fürs Detail und einem Fokus auf sauberen Code erwecke ich digitale Ideen zum Leben.",
|
||||||
|
"downloadCv": "Lebenslauf"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,5 +7,12 @@
|
||||||
},
|
},
|
||||||
"Header": {
|
"Header": {
|
||||||
"search": "Search"
|
"search": "Search"
|
||||||
|
},
|
||||||
|
"Hero": {
|
||||||
|
"greeting": "Hi, my name is",
|
||||||
|
"rolePrefix": "Full-Stack",
|
||||||
|
"roleSuffix": "Developer",
|
||||||
|
"description": "I conceptualize and develop modern web applications. With a sharp eye for detail and a focus on clean code, I bring digital ideas to life.",
|
||||||
|
"downloadCv": "Download CV"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue