Barbier-Website für Amin B. Ahmadi (Kaiserslautern)

One-Pager mit Vite, React, Tailwind und Motion: WebGL-Seidenhintergrund,
Chrom-Wortmarke, Scroll-Laufband, Preisliste mit Direktbuchung pro Leistung
(Setmore-Deep-Links), Team-Raster mit Farb-Spotlight, Öffnungszeiten mit
Live-Status sowie Impressum und Datenschutz. Logo ist ein Platzhalter.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KBHsCnWNXAB2Le3gAEsivF
This commit is contained in:
Claude committed 2026-09-29 12:03:55 +00:00
commit 61a40437d2
51 files changed
+4278

No files matched your search

+44
View File
@@ -0,0 +1,44 @@
import Lenis from 'lenis'
import { MotionConfig } from 'motion/react'
import { useEffect } from 'react'
import { FinalCta } from './components/FinalCta'
import { Footer } from './components/Footer'
import { Hero } from './components/Hero'
import { Marquee } from './components/Marquee'
import { MobileBookBar } from './components/MobileBookBar'
import { Nav } from './components/Nav'
import { Services } from './components/Services'
import { Team } from './components/Team'
import { Visit } from './components/Visit'
export default function App() {
// Weiches Scrollen (Lenis) — nur, wenn keine reduzierte Bewegung gewünscht ist
useEffect(() => {
if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return
const lenis = new Lenis({ autoRaf: true, anchors: true })
return () => lenis.destroy()
}, [])
return (
<MotionConfig reducedMotion="user">
<a
href="#leistungen"
className="sr-only focus:not-sr-only focus:fixed focus:top-4 focus:left-4 focus:z-[100] focus:rounded-full focus:bg-bone focus:px-4 focus:py-2 focus:text-ink"
>
Zum Inhalt springen
</a>
<Nav />
<main>
<Hero />
<Marquee />
<Services />
<Team />
<Visit />
<FinalCta />
</main>
<Footer />
<MobileBookBar />
<div aria-hidden="true" className="grain pointer-events-none fixed inset-0 z-[70]" />
</MotionConfig>
)
}