feat: Add static assets and content for the KLZ Cables showcase.
This commit is contained in:
353
app/case-studies/klz-cables/page.tsx
Normal file
353
app/case-studies/klz-cables/page.tsx
Normal file
@@ -0,0 +1,353 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import Link from 'next/link';
|
||||
import { PageHeader } from '../../../src/components/PageHeader';
|
||||
import { Reveal } from '../../../src/components/Reveal';
|
||||
import { H2, H3, H4, LeadText, BodyText, Label } from '../../../src/components/Typography';
|
||||
import { BackgroundGrid, Container } from '../../../src/components/Layout';
|
||||
import { IframeSection } from '../../../src/components/IframeSection';
|
||||
import { MotionButton } from '../../../src/components/Button';
|
||||
import { cn } from '../../../src/utils/cn';
|
||||
import { Check, Zap, Shield, Globe, Layout, Cpu, Smartphone, Truck, Users, MessageSquare } from 'lucide-react';
|
||||
import Image from 'next/image';
|
||||
|
||||
export default function KLZCablesCaseStudy() {
|
||||
const showcasePath = "/showcase/klz-cables/index.html";
|
||||
|
||||
return (
|
||||
<div className="bg-white min-h-screen font-sans selection:bg-slate-200 dark:bg-slate-900 overflow-x-hidden text-slate-900">
|
||||
<BackgroundGrid />
|
||||
|
||||
{/* Hero Section - Immersive Presentation */}
|
||||
<section className="relative min-h-[90vh] flex items-center pt-20 overflow-hidden bg-slate-50">
|
||||
{/* Immersive Background: Technical Blueprint */}
|
||||
<div className="absolute inset-0 pointer-events-none z-0">
|
||||
<IframeSection
|
||||
src={showcasePath}
|
||||
height="120%"
|
||||
desktopWidth={1920}
|
||||
allowScroll={false}
|
||||
minimal
|
||||
className="h-full opacity-[0.12] grayscale scale-110 blur-[8px]"
|
||||
/>
|
||||
<div className="absolute inset-0 bg-gradient-to-tr from-white via-white/80 to-transparent backdrop-blur-[12px]" />
|
||||
<div className="absolute inset-0 bg-[radial-gradient(circle_at_70%_50%,transparent,white_70%)] backdrop-blur-[4px]" />
|
||||
</div>
|
||||
|
||||
<Container className="relative z-10">
|
||||
<div className="max-w-4xl space-y-10">
|
||||
<Reveal>
|
||||
<div className="inline-flex items-center gap-3 px-4 py-1.5 rounded-full bg-slate-900 text-white text-[10px] font-black tracking-[0.2em] uppercase mb-4 shadow-xl shadow-slate-900/20">
|
||||
<Zap className="w-3.5 h-3.5" />
|
||||
Project Archive 01
|
||||
</div>
|
||||
<h1 className="text-6xl md:text-[10rem] font-black tracking-tighter text-slate-900 leading-[0.8] mb-4">
|
||||
KLZ <span className="text-slate-200">CABLES</span>
|
||||
</h1>
|
||||
<p className="text-2xl md:text-3xl text-slate-400 font-medium max-w-2xl leading-tight">
|
||||
Breaking the limitations of legacy WordPress for a <span className="text-slate-900">global power infrastructure leader.</span>
|
||||
</p>
|
||||
</Reveal>
|
||||
|
||||
<Reveal delay={0.4}>
|
||||
<div className="flex flex-wrap gap-4">
|
||||
<Link href="/technologies/next-js-14" className="group px-6 py-3 bg-white border border-slate-200 shadow-sm rounded-2xl text-xs font-black text-slate-400 hover:text-slate-900 hover:border-slate-900 transition-all">
|
||||
NEXT.JS 14
|
||||
</Link>
|
||||
<Link href="/technologies/typescript" className="group px-6 py-3 bg-white border border-slate-200 shadow-sm rounded-2xl text-xs font-black text-slate-400 hover:text-slate-900 hover:border-slate-900 transition-all">
|
||||
TYPESCRIPT
|
||||
</Link>
|
||||
<Link href="/technologies/directus-cms" className="group px-6 py-3 bg-white border border-slate-200 shadow-sm rounded-2xl text-xs font-black text-slate-400 hover:text-slate-900 hover:border-slate-900 transition-all">
|
||||
DIRECTUS
|
||||
</Link>
|
||||
<Link href="/technologies/tailwind-css" className="group px-6 py-3 bg-white border border-slate-200 shadow-sm rounded-2xl text-xs font-black text-slate-400 hover:text-slate-900 hover:border-slate-900 transition-all">
|
||||
TAILWIND
|
||||
</Link>
|
||||
</div>
|
||||
</Reveal>
|
||||
</div>
|
||||
</Container>
|
||||
</section>
|
||||
|
||||
{/* Section 01: The Migration Strategy */}
|
||||
<section className="py-32 bg-white">
|
||||
<Container>
|
||||
<div className="grid grid-cols-1 lg:grid-cols-2 gap-20 items-center">
|
||||
<div className="space-y-10">
|
||||
<Reveal>
|
||||
<div className="text-[10px] font-black tracking-[0.3em] text-slate-400 uppercase">Legacy Out. Architecture In.</div>
|
||||
<H2 className="text-7xl font-black tracking-tighter leading-none mb-8">WP is not specialized.</H2>
|
||||
<LeadText className="text-slate-500">
|
||||
WordPress was slowing down KLZ's global growth. They needed a technical foundation that understands structured industrial data.
|
||||
</LeadText>
|
||||
<div className="grid grid-cols-2 gap-10 pt-8">
|
||||
<div className="space-y-2 border-l-2 border-slate-900 pl-6">
|
||||
<div className="text-4xl font-black text-slate-900">3x</div>
|
||||
<div className="text-xs font-bold text-slate-400 uppercase tracking-widest">Faster Load</div>
|
||||
</div>
|
||||
<div className="space-y-2 border-l-2 border-slate-200 pl-6">
|
||||
<div className="text-4xl font-black text-slate-900">0</div>
|
||||
<div className="text-xs font-bold text-slate-400 uppercase tracking-widest">Plugins Needed</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="pt-10">
|
||||
<MotionButton href="/technologies/next-js-14" variant="outline" className="rounded-2xl px-8" showArrow={false}>
|
||||
Explore the Stack
|
||||
</MotionButton>
|
||||
</div>
|
||||
</Reveal>
|
||||
</div>
|
||||
|
||||
<div className="relative">
|
||||
<Reveal delay={0.3}>
|
||||
<div className="space-y-6">
|
||||
<IframeSection
|
||||
src="/showcase/klz-cables/index.html"
|
||||
height="700px"
|
||||
desktopWidth={1440}
|
||||
browserFrame
|
||||
allowScroll={true}
|
||||
perspective
|
||||
rotate={-5}
|
||||
title="The Global Hub"
|
||||
description="Full-width industrial presentation for decision makers."
|
||||
/>
|
||||
</div>
|
||||
</Reveal>
|
||||
</div>
|
||||
</div>
|
||||
</Container>
|
||||
</section>
|
||||
|
||||
{/* Section 02: Localization & Global Reach */}
|
||||
<section className="py-32 bg-slate-900 text-white overflow-hidden">
|
||||
<Container>
|
||||
<div className="flex flex-col items-center text-center max-w-3xl mx-auto mb-20">
|
||||
<Reveal>
|
||||
<Label className="text-slate-500 mb-4 tracking-[0.4em]">MULTI-LANG INFRASTRUCTURE</Label>
|
||||
<H2 className="text-6xl font-black text-white leading-none">Global Native.</H2>
|
||||
<LeadText className="text-slate-400 mt-6">
|
||||
KLZ Cables operates from Germany with a global reach. I implemented a headless localization strategy that serves both markets without data duplication.
|
||||
</LeadText>
|
||||
</Reveal>
|
||||
</div>
|
||||
|
||||
<div className="space-y-32">
|
||||
<Reveal className="relative group">
|
||||
<IframeSection
|
||||
src="/showcase/klz-cables/de/start/index.html"
|
||||
height="700px"
|
||||
desktopWidth={1440}
|
||||
browserFrame
|
||||
allowScroll
|
||||
perspective
|
||||
rotate={5}
|
||||
title="DE: German Expertise"
|
||||
description="Engineered for the domestic power grid."
|
||||
className="grayscale-0 group-hover:scale-[1.01] transition-all duration-700"
|
||||
/>
|
||||
<div className="absolute top-1/2 left-4 -translate-y-1/2 pointer-events-none opacity-0 group-hover:opacity-100 transition-opacity">
|
||||
<span className="bg-slate-900 text-white px-8 py-4 rounded-2xl font-black text-xs uppercase tracking-widest shadow-2xl">Deutsch</span>
|
||||
</div>
|
||||
</Reveal>
|
||||
<Reveal delay={0.2} className="relative group">
|
||||
<IframeSection
|
||||
src="/showcase/klz-cables/index.html"
|
||||
height="700px"
|
||||
desktopWidth={1440}
|
||||
browserFrame
|
||||
allowScroll
|
||||
perspective
|
||||
rotate={-5}
|
||||
title="EN: International Standard"
|
||||
description="Supporting global energy projects."
|
||||
className="grayscale-0 group-hover:scale-[1.01] transition-all duration-700"
|
||||
/>
|
||||
<div className="absolute top-1/2 right-4 -translate-y-1/2 pointer-events-none opacity-0 group-hover:opacity-100 transition-opacity">
|
||||
<span className="bg-slate-900 text-white px-8 py-4 rounded-2xl font-black text-xs uppercase tracking-widest shadow-2xl">English</span>
|
||||
</div>
|
||||
</Reveal>
|
||||
</div>
|
||||
</Container>
|
||||
</section>
|
||||
|
||||
{/* Section 03: Product Engineering Detail */}
|
||||
<section className="py-32 bg-white relative">
|
||||
<Container>
|
||||
<div className="grid grid-cols-1 lg:grid-cols-12 gap-20 items-start">
|
||||
<div className="lg:col-span-4 sticky top-32 space-y-10">
|
||||
<Reveal>
|
||||
<Label className="text-slate-400 tracking-[0.3em]">CABLE TAXONOMY</Label>
|
||||
<H2 className="text-6xl font-black tracking-tighter leading-none">Engineering Accuracy.</H2>
|
||||
<BodyText className="text-slate-500 text-lg">
|
||||
Each cable has hundreds of attributes. I designed a technical layout that makes "NA2XS(F)2Y" specs as readable as a news article.
|
||||
</BodyText>
|
||||
<ul className="space-y-6 pt-6">
|
||||
<li className="flex gap-4 items-start">
|
||||
<div className="w-12 h-12 shrink-0 bg-slate-900 rounded-2xl flex items-center justify-center text-white font-black">01</div>
|
||||
<div>
|
||||
<h4 className="font-black text-slate-900">Dynamic Tables</h4>
|
||||
<p className="text-sm text-slate-400">Spec-sheets generated from CMS data.</p>
|
||||
</div>
|
||||
</li>
|
||||
<li className="flex gap-4 items-start">
|
||||
<div className="w-12 h-12 shrink-0 bg-slate-100 rounded-2xl flex items-center justify-center text-slate-900 font-black">02</div>
|
||||
<div>
|
||||
<h4 className="font-black text-slate-900">Category Logic</h4>
|
||||
<p className="text-sm text-slate-400">Low, Medium, and High Voltage separation.</p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</Reveal>
|
||||
</div>
|
||||
|
||||
<div className="lg:col-span-8 space-y-32 pt-10 lg:pt-0">
|
||||
<Reveal delay={0.3}>
|
||||
<IframeSection
|
||||
src="/showcase/klz-cables/power-cables/low-voltage-cables/index.html"
|
||||
height="700px"
|
||||
desktopWidth={1440}
|
||||
browserFrame
|
||||
allowScroll
|
||||
perspective
|
||||
rotate={5}
|
||||
title="Low Voltage Detail"
|
||||
description="Focus on NA2XY performance data."
|
||||
/>
|
||||
</Reveal>
|
||||
<Reveal delay={0.5}>
|
||||
<IframeSection
|
||||
src="/showcase/klz-cables/power-cables/medium-voltage-cables/index.html"
|
||||
height="700px"
|
||||
desktopWidth={1440}
|
||||
browserFrame
|
||||
allowScroll
|
||||
perspective
|
||||
rotate={-5}
|
||||
title="Medium Voltage Overview"
|
||||
description="Grid distribution infrastructure."
|
||||
/>
|
||||
</Reveal>
|
||||
</div>
|
||||
</div>
|
||||
</Container>
|
||||
</section>
|
||||
|
||||
{/* Section 04: Performance Visualization */}
|
||||
<section className="py-32 bg-slate-50 border-y border-slate-200">
|
||||
<Container>
|
||||
<div className="grid grid-cols-1 lg:grid-cols-2 gap-20 items-center">
|
||||
<div className="order-2 lg:order-1">
|
||||
<Reveal>
|
||||
<div className="grid grid-cols-2 gap-4">
|
||||
{[
|
||||
{ l: 'Performance', v: '99', c: 'text-green-500' },
|
||||
{ l: 'Accessibility', v: '100', c: 'text-green-500' },
|
||||
{ l: 'Best Practices', v: '100', c: 'text-green-500' },
|
||||
{ l: 'SEO', v: '98', c: 'text-green-500' }
|
||||
].map((m, i) => (
|
||||
<div key={i} className="bg-white p-8 rounded-3xl border border-slate-100 shadow-sm text-center">
|
||||
<div className={cn("text-5xl font-black mb-1", m.c)}>{m.v}</div>
|
||||
<div className="text-[10px] font-black tracking-widest uppercase text-slate-400">{m.l}</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</Reveal>
|
||||
</div>
|
||||
<div className="order-1 lg:order-2 space-y-8">
|
||||
<Reveal>
|
||||
<Label className="text-slate-400 tracking-[0.3em]">METRICS THAT MATTER</Label>
|
||||
<H2 className="text-6xl font-black leading-none">Speed is a Feature.</H2>
|
||||
<BodyText className="text-slate-500 text-lg">
|
||||
For industrial B2B, time is money. Slow websites lose contracts. I delivered a 100% static-first architecture that delivers technical data instantly, anywhere in the world.
|
||||
</BodyText>
|
||||
</Reveal>
|
||||
</div>
|
||||
</div>
|
||||
</Container>
|
||||
</section>
|
||||
|
||||
{/* Section 05: Brand & Communication */}
|
||||
<section className="py-32 bg-white">
|
||||
<Container>
|
||||
<div className="flex flex-col items-center text-center max-w-3xl mx-auto mb-20">
|
||||
<Reveal>
|
||||
<Label className="text-slate-400 tracking-[0.4em] mb-4">BRAND TRUST</Label>
|
||||
<H2 className="text-6xl font-black leading-none">Industrial Confidence.</H2>
|
||||
<LeadText className="text-slate-500 mt-6">
|
||||
A high-tech website must feel high-tech. I evolved the KLZ Cables visual language while maintaining the trust they've built over decades.
|
||||
</LeadText>
|
||||
</Reveal>
|
||||
</div>
|
||||
|
||||
<div className="space-y-32">
|
||||
<Reveal>
|
||||
<IframeSection
|
||||
src="/showcase/klz-cables/klz-news/index.html"
|
||||
height="700px"
|
||||
desktopWidth={1440}
|
||||
browserFrame
|
||||
allowScroll
|
||||
title="Dynamic News"
|
||||
description="Instantly updated via Directus."
|
||||
/>
|
||||
</Reveal>
|
||||
<Reveal delay={0.2}>
|
||||
<IframeSection
|
||||
src="/showcase/klz-cables/team/index.html"
|
||||
height="700px"
|
||||
desktopWidth={1440}
|
||||
browserFrame
|
||||
allowScroll
|
||||
title="Expert Team"
|
||||
description="Human-centric B2B sales."
|
||||
/>
|
||||
</Reveal>
|
||||
<Reveal delay={0.4}>
|
||||
<IframeSection
|
||||
src="/showcase/klz-cables/contact/index.html"
|
||||
height="700px"
|
||||
desktopWidth={1440}
|
||||
browserFrame
|
||||
allowScroll
|
||||
title="Lead Gen"
|
||||
description="Frictionless contact workflows."
|
||||
/>
|
||||
</Reveal>
|
||||
</div>
|
||||
</Container>
|
||||
</section>
|
||||
|
||||
{/* Final CTA - Apple Style */}
|
||||
<section className="py-48 bg-slate-900 overflow-hidden relative">
|
||||
{/* Background Tech Skew */}
|
||||
<div className="absolute top-0 right-0 w-1/2 h-full opacity-10 grayscale pointer-events-none translate-x-1/4 -skew-x-12">
|
||||
<IframeSection src={showcasePath} height="100%" desktopWidth={1200} minimal />
|
||||
</div>
|
||||
|
||||
<Container className="relative z-10">
|
||||
<Reveal>
|
||||
<div className="max-w-2xl space-y-12">
|
||||
<h2 className="text-7xl md:text-9xl font-black tracking-tighter text-white leading-[0.8]">
|
||||
READY TO <br />
|
||||
<span className="text-slate-600">UPGRADE?</span>
|
||||
</h2>
|
||||
<p className="text-2xl text-slate-400 font-medium">
|
||||
I don't just build websites. I build industrial-grade digital infrastructure. Let's discuss your next project.
|
||||
</p>
|
||||
<div className="flex flex-col sm:flex-row gap-6">
|
||||
<MotionButton href="/contact" className="bg-white text-slate-900 hover:bg-slate-100 rounded-2xl px-12 py-6 text-base" showArrow={false}>
|
||||
Start your Project
|
||||
</MotionButton>
|
||||
<MotionButton href="/case-studies" variant="outline" className="text-white border-white/20 hover:border-white rounded-2xl px-12 py-6 text-base" showArrow={false}>
|
||||
View more Cases
|
||||
</MotionButton>
|
||||
</div>
|
||||
</div>
|
||||
</Reveal>
|
||||
</Container>
|
||||
</section>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
88
app/case-studies/page.tsx
Normal file
88
app/case-studies/page.tsx
Normal file
@@ -0,0 +1,88 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { PageHeader } from '../../src/components/PageHeader';
|
||||
import { Section } from '../../src/components/Section';
|
||||
import { Reveal } from '../../src/components/Reveal';
|
||||
import { H3, LeadText, Label } from '../../src/components/Typography';
|
||||
import { BackgroundGrid, Card, Container } from '../../src/components/Layout';
|
||||
import { MotionButton } from '../../src/components/Button';
|
||||
import Image from 'next/image';
|
||||
|
||||
export default function CaseStudiesPage() {
|
||||
return (
|
||||
<div className="flex flex-col bg-white overflow-hidden relative min-h-screen">
|
||||
<BackgroundGrid />
|
||||
|
||||
<PageHeader
|
||||
title={<>Case Studies: <br /><span className="text-slate-200">Qualität in jedem Detail.</span></>}
|
||||
description="Ein Blick hinter die Kulissen ausgewählter Projekte. Von der ersten Idee bis zum fertigen Hochleistungssystem."
|
||||
backLink={{ href: '/', label: 'Zurück' }}
|
||||
backgroundSymbol="C"
|
||||
/>
|
||||
|
||||
<Section number="01" title="Projekte" borderTop>
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-12">
|
||||
<Reveal>
|
||||
<Card variant="white" className="group overflow-hidden">
|
||||
<div className="aspect-video relative overflow-hidden rounded-xl mb-8 bg-slate-100 border border-slate-100">
|
||||
{/* We'll use a placeholder or a screenshot if available.
|
||||
Since we have the cloned site, we could technically iframe a preview here too,
|
||||
but a static image or a styled div is more standard for a card. */}
|
||||
<div className="absolute inset-0 flex items-center justify-center bg-[#0117bf] transition-transform duration-700 group-hover:scale-105 p-12">
|
||||
<Image
|
||||
src="/showcase/klz-cables/wp-content/uploads/2024/11/white_logo_transparent_background.svg"
|
||||
alt="KLZ Cables Logo"
|
||||
width={200}
|
||||
height={200}
|
||||
className="w-full h-auto max-w-[240px]"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="space-y-4">
|
||||
<Label>Infrastructure & Energy</Label>
|
||||
<H3 className="group-hover:text-[#0117bf] transition-colors">KLZ Cables – Modernisierung eines Energie-Portals</H3>
|
||||
<LeadText className="text-base line-clamp-3">
|
||||
Wie wir eine komplexe WordPress-Struktur in ein performantes, sauberes und langlebiges Web-System verwandelt haben. Fokus auf Performance, SEO und Benutzerführung.
|
||||
</LeadText>
|
||||
|
||||
<div className="pt-4">
|
||||
<MotionButton href="/case-studies/klz-cables">
|
||||
Case Study lesen
|
||||
</MotionButton>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
</Reveal>
|
||||
|
||||
<Reveal delay={0.2}>
|
||||
<div className="h-full flex flex-col justify-center border-2 border-dashed border-slate-100 rounded-3xl p-12 text-center space-y-4">
|
||||
<Label>Demnächst</Label>
|
||||
<H3 className="text-slate-200">Weitere Projekte sind in Arbeit.</H3>
|
||||
<LeadText className="text-base italic">
|
||||
Ich dokumentiere gerade weitere spannende Projekte aus den Bereichen SaaS, E-Commerce und Systemarchitektur.
|
||||
</LeadText>
|
||||
</div>
|
||||
</Reveal>
|
||||
</div>
|
||||
</Section>
|
||||
|
||||
<Section number="02" title="Philosophie" borderTop variant="gray">
|
||||
<div className="max-w-3xl space-y-8">
|
||||
<Reveal>
|
||||
<H3 className="text-4xl leading-tight">
|
||||
Warum ich Case Studies zeige? <br />
|
||||
<span className="text-slate-200">Weil Code mehr als Text ist.</span>
|
||||
</H3>
|
||||
</Reveal>
|
||||
<Reveal delay={0.2}>
|
||||
<LeadText className="text-xl">
|
||||
In diesen Case Studies geht es nicht nur um bunte Bilder. Es geht um die technischen Entscheidungen, die ein Projekt erfolgreich machen. Schnelle Ladezeiten, SEO-Exzellenz und wartbarer Code sind keine Zufälle, sondern das Ergebnis von präziser Planung.
|
||||
</LeadText>
|
||||
</Reveal>
|
||||
</div>
|
||||
</Section>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user