chore: capture live server state before migration (2026-06-10)

This commit is contained in:
2026-06-10 23:56:36 +02:00
parent 97bf6da106
commit b6ad1e0b2f
52 changed files with 704 additions and 691 deletions
+34 -34
View File
@@ -467,7 +467,7 @@ export default async function ProjectPage({ params }: Props) {
<div className="mb-8">
<Link
href={`/${locale}/portfolio`}
className="inline-flex items-center gap-2 text-zinc-400 hover:text-white transition-colors duration-300"
className="inline-flex items-center gap-2 text-muted-foreground hover:text-foreground transition-colors duration-300"
>
<ArrowLeft className="h-4 w-4" />
<span>{t('backToPortfolio')}</span>
@@ -476,7 +476,7 @@ export default async function ProjectPage({ params }: Props) {
{/* Project Header */}
<div className="mb-12">
<div className="flex flex-wrap items-center gap-4 mb-6 text-zinc-400">
<div className="flex flex-wrap items-center gap-4 mb-6 text-muted-foreground">
{project.meta.date && (
<div className="flex items-center gap-2">
<Calendar className="h-4 w-4" />
@@ -497,18 +497,18 @@ export default async function ProjectPage({ params }: Props) {
)}
</div>
<h1 className="text-3xl sm:text-4xl lg:text-5xl font-bold text-white mb-8">
<h1 className="text-3xl sm:text-4xl lg:text-5xl font-bold text-foreground mb-8">
{project.meta.title}
</h1>
<p className="text-xl text-zinc-400">
<p className="text-xl text-muted-foreground">
{project.meta.description}
</p>
</div>
{/* Cover Image */}
<div className="mb-12">
<div className="relative aspect-video rounded-lg overflow-hidden bg-zinc-800">
<div className="relative aspect-video rounded-lg overflow-hidden bg-card">
<Image
src={`/images/projects/${slug}/cover.avif`}
alt={project.meta.title}
@@ -517,28 +517,28 @@ export default async function ProjectPage({ params }: Props) {
className="object-cover"
priority
/>
<div className="absolute inset-0 bg-gradient-to-t from-zinc-900/50 to-transparent opacity-50" />
<div className="absolute inset-0 bg-gradient-to-t from-background/50 to-transparent opacity-50" />
</div>
</div>
{/* Project Content */}
<div className="prose prose-invert max-w-none">
{/* Intro */}
<div className="mb-12 p-6 bg-zinc-800/30 rounded-lg border border-zinc-800">
<p className="text-lg text-zinc-300 m-0">
<div className="mb-12 p-6 bg-card/30 rounded-lg border border-border">
<p className="text-lg text-foreground/80 m-0">
{project.content.intro}
</p>
</div>
{/* Challenge Section */}
<section className="mb-12">
<h2 className="text-2xl font-bold mb-4 text-white">{project.content.challenge.title}</h2>
<p className="text-zinc-300 mb-4">{project.content.challenge.description}</p>
<h2 className="text-2xl font-bold mb-4 text-foreground">{project.content.challenge.title}</h2>
<p className="text-foreground/80 mb-4">{project.content.challenge.description}</p>
{project.content.challenge.points && (
<ul className="space-y-2">
{project.content.challenge.points.map((point, index) => (
<li key={index} className="text-zinc-300 flex items-start gap-2">
<span className="text-zinc-500"></span>
<li key={index} className="text-foreground/80 flex items-start gap-2">
<span className="text-muted-foreground"></span>
{point}
</li>
))}
@@ -548,13 +548,13 @@ export default async function ProjectPage({ params }: Props) {
{/* Solution Section */}
<section className="mb-12">
<h2 className="text-2xl font-bold mb-4 text-white">{project.content.solution.title}</h2>
<p className="text-zinc-300 mb-4">{project.content.solution.description}</p>
<h2 className="text-2xl font-bold mb-4 text-foreground">{project.content.solution.title}</h2>
<p className="text-foreground/80 mb-4">{project.content.solution.description}</p>
{project.content.solution.points && (
<ul className="space-y-2">
{project.content.solution.points.map((point, index) => (
<li key={index} className="text-zinc-300 flex items-start gap-2">
<span className="text-zinc-500"></span>
<li key={index} className="text-foreground/80 flex items-start gap-2">
<span className="text-muted-foreground"></span>
{point}
</li>
))}
@@ -565,20 +565,20 @@ export default async function ProjectPage({ params }: Props) {
{/* Technical Section */}
{project.content.technical && (
<section className="mb-12">
<h2 className="text-2xl font-bold mb-4 text-white">{project.content.technical.title}</h2>
<p className="text-zinc-300 mb-4">{project.content.technical.description}</p>
<h2 className="text-2xl font-bold mb-4 text-foreground">{project.content.technical.title}</h2>
<p className="text-foreground/80 mb-4">{project.content.technical.description}</p>
{project.content.technical.points && (
<ul className="space-y-2">
{project.content.technical.points.map((point, index) => (
<li key={index} className="text-zinc-300 flex items-start gap-2">
<span className="text-zinc-500"></span>
<li key={index} className="text-foreground/80 flex items-start gap-2">
<span className="text-muted-foreground"></span>
{point}
</li>
))}
</ul>
)}
{project.content.technical.code && (
<pre className="bg-zinc-800/50 p-4 rounded-lg overflow-x-auto mt-4">
<pre className="bg-card/50 p-4 rounded-lg overflow-x-auto mt-4">
<code className="text-sm">{project.content.technical.code}</code>
</pre>
)}
@@ -588,13 +588,13 @@ export default async function ProjectPage({ params }: Props) {
{/* Implementation Section */}
{project.content.implementation && (
<section className="mb-12">
<h2 className="text-2xl font-bold mb-4 text-white">{project.content.implementation.title}</h2>
<p className="text-zinc-300 mb-4">{project.content.implementation.description}</p>
<h2 className="text-2xl font-bold mb-4 text-foreground">{project.content.implementation.title}</h2>
<p className="text-foreground/80 mb-4">{project.content.implementation.description}</p>
{project.content.implementation.points && (
<ul className="space-y-2">
{project.content.implementation.points.map((point, index) => (
<li key={index} className="text-zinc-300 flex items-start gap-2">
<span className="text-zinc-500"></span>
<li key={index} className="text-foreground/80 flex items-start gap-2">
<span className="text-muted-foreground"></span>
{point}
</li>
))}
@@ -605,13 +605,13 @@ export default async function ProjectPage({ params }: Props) {
{/* Results Section */}
<section className="mb-12">
<h2 className="text-2xl font-bold mb-4 text-white">{project.content.results.title}</h2>
<p className="text-zinc-300 mb-4">{project.content.results.description}</p>
<h2 className="text-2xl font-bold mb-4 text-foreground">{project.content.results.title}</h2>
<p className="text-foreground/80 mb-4">{project.content.results.description}</p>
{project.content.results.points && (
<ul className="space-y-2">
{project.content.results.points.map((point, index) => (
<li key={index} className="text-zinc-300 flex items-start gap-2">
<span className="text-zinc-500"></span>
<li key={index} className="text-foreground/80 flex items-start gap-2">
<span className="text-muted-foreground"></span>
{point}
</li>
))}
@@ -621,8 +621,8 @@ export default async function ProjectPage({ params }: Props) {
{/* Conclusion */}
{project.content.conclusion && (
<section className="mb-12 p-6 bg-zinc-800/30 rounded-lg border border-zinc-800">
<p className="text-lg text-zinc-300 m-0">
<section className="mb-12 p-6 bg-card/30 rounded-lg border border-border">
<p className="text-lg text-foreground/80 m-0">
{project.content.conclusion}
</p>
</section>
@@ -631,14 +631,14 @@ export default async function ProjectPage({ params }: Props) {
{/* Technologies */}
{project.meta.technologies && (
<div className="mt-12 pt-6 border-t border-zinc-800">
<div className="mt-12 pt-6 border-t border-border">
<div className="flex items-center gap-4">
<Tag className="h-4 w-4 text-zinc-400" />
<Tag className="h-4 w-4 text-muted-foreground" />
<div className="flex flex-wrap gap-2">
{project.meta.technologies.map((tech, index) => (
<span
key={index}
className="px-3 py-1 bg-zinc-800/50 border border-zinc-800 rounded-full text-sm text-zinc-300"
className="px-3 py-1 bg-card/50 border border-border rounded-full text-sm text-foreground/80"
>
{tech}
</span>
+1 -1
View File
@@ -216,7 +216,7 @@ export default async function PortfolioPage({ params, searchParams }: Props) {
<h1 className="text-3xl font-bold text-white mb-4">
{t('sections.title')}
</h1>
<p className="text-zinc-400 max-w-2xl mx-auto">
<p className="text-muted-foreground max-w-2xl mx-auto">
{t('sections.subtitle')}
</p>
</div>