feat: music player redesign, candle section, impressum
MusicPlayer: - Beautiful inline section with numbered track list + click-to-play - Animated waveform bars on playing track - Time display (elapsed / duration) on progress bar - Floating mini-player with track name + time, shows after first play - Play/pause in mini-player, close button CandleSection: - 7 hand-coded CSS/Framer Motion candle flames with organic flicker - Layered flame (outer glow + main + inner core) + wax drip highlight - "Ruhe in Frieden" text with subtle glow Impressum: - New /impressum page with TMG §5 structure (placeholder address) - Privacy notice (no cookies/tracking, voluntary memory data) - Copyright, liability disclaimer - Consistent cream design with Cormorant/Lora typography page.tsx: - CandleSection added between VideoGallery and MusicPlayer - Musik nav link (conditional on tracks) - Footer Impressum link - MemorySection wrapped in id="erinnerungen" section for nav anchor Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
import type { Metadata } from 'next'
|
||||
import Link from 'next/link'
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: 'Impressum – In Erinnerung an Maria Malejka',
|
||||
}
|
||||
|
||||
export default function ImpressumPage() {
|
||||
return (
|
||||
<main className="min-h-screen bg-cream py-16 px-4">
|
||||
<div className="max-w-2xl mx-auto">
|
||||
{/* Back link */}
|
||||
<Link
|
||||
href="/"
|
||||
className="inline-flex items-center gap-2 text-warm-brown-light hover:text-warm-gold text-sm font-lora tracking-wider transition-colors duration-200 mb-12"
|
||||
>
|
||||
<span className="text-base leading-none">←</span>
|
||||
Zurück zur Gedenkseite
|
||||
</Link>
|
||||
|
||||
{/* Header */}
|
||||
<div className="mb-12">
|
||||
<h1 className="font-cormorant italic text-5xl sm:text-6xl text-warm-brown mb-4">
|
||||
Impressum
|
||||
</h1>
|
||||
<div className="flex items-center gap-4">
|
||||
<div className="h-px w-16 bg-warm-gold/30" />
|
||||
<span className="text-warm-gold/40 text-lg">✦</span>
|
||||
<div className="h-px w-16 bg-warm-gold/30" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Content */}
|
||||
<div className="space-y-10 font-lora text-warm-brown/75 text-sm leading-loose">
|
||||
<section>
|
||||
<h2 className="font-cormorant text-2xl text-warm-brown mb-3">
|
||||
Angaben gemäß § 5 TMG
|
||||
</h2>
|
||||
<address className="not-italic space-y-0.5">
|
||||
<p className="font-medium text-warm-brown/90">Dennis Malejka</p>
|
||||
<p className="text-warm-brown-light text-xs italic">
|
||||
(Kontaktdaten auf Anfrage)
|
||||
</p>
|
||||
</address>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="font-cormorant text-2xl text-warm-brown mb-3">
|
||||
Kontakt
|
||||
</h2>
|
||||
<p>
|
||||
Bei Fragen oder Anliegen bezüglich dieser Gedenkseite wenden Sie sich bitte
|
||||
per E-Mail an den Betreiber.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="font-cormorant text-2xl text-warm-brown mb-3">
|
||||
Zweck dieser Seite
|
||||
</h2>
|
||||
<p>
|
||||
Diese Website ist eine private, nicht-kommerzielle Gedenkseite zum ehrenvollen
|
||||
Andenken an{' '}
|
||||
<span className="text-warm-brown font-medium">Maria Malejka</span>{' '}
|
||||
(29. November 1944 – 10. Februar 2026). Sie dient ausschließlich dem
|
||||
persönlichen Gedenken und dem Austausch von Erinnerungen im Familienund
|
||||
Freundeskreis.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="font-cormorant text-2xl text-warm-brown mb-3">
|
||||
Datenschutz
|
||||
</h2>
|
||||
<p>
|
||||
Diese Seite verwendet keine Cookies, kein externes Tracking und keine
|
||||
Analyse-Dienste. Es werden ausschließlich folgende Daten gespeichert:
|
||||
</p>
|
||||
<ul className="mt-3 space-y-1.5 list-none pl-0">
|
||||
{[
|
||||
'Hochgeladene Bilder, Videos und Musikdateien (durch den Administrator)',
|
||||
'Freiwillig hinterlassene Erinnerungen mit optionalem Namen (öffentlich sichtbar)',
|
||||
].map((item) => (
|
||||
<li key={item} className="flex items-start gap-3">
|
||||
<span className="text-warm-gold/50 mt-0.5 flex-shrink-0">✦</span>
|
||||
<span>{item}</span>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
<p className="mt-4">
|
||||
Möchten Sie eine von Ihnen hinterlassene Erinnerung löschen lassen,
|
||||
wenden Sie sich bitte an den Betreiber.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="font-cormorant text-2xl text-warm-brown mb-3">
|
||||
Urheberrecht
|
||||
</h2>
|
||||
<p>
|
||||
Alle auf dieser Seite veröffentlichten Fotos und Medien sind privates
|
||||
Eigentum der Familie Malejka. Eine Weitergabe oder Veröffentlichung ohne
|
||||
ausdrückliche Genehmigung ist nicht gestattet.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="font-cormorant text-2xl text-warm-brown mb-3">
|
||||
Haftungsausschluss
|
||||
</h2>
|
||||
<p>
|
||||
Die Inhalte dieser Seite wurden mit größter Sorgfalt erstellt. Für die
|
||||
Richtigkeit, Vollständigkeit und Aktualität der Inhalte kann keine Gewähr
|
||||
übernommen werden.
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
{/* Footer ornament */}
|
||||
<div className="mt-16 pt-8 border-t border-warm-border/50 text-center">
|
||||
<p className="font-cormorant italic text-warm-gold/40 text-xl">
|
||||
In liebevoller Erinnerung
|
||||
</p>
|
||||
<p className="font-lora text-warm-brown-light/40 text-xs mt-2 tracking-widest">
|
||||
Maria Malejka · 1944 – 2026
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
)
|
||||
}
|
||||
+41
-19
@@ -5,6 +5,7 @@ import PhotoSlideshow from '@/components/PhotoSlideshow'
|
||||
import PhotoGallery from '@/components/PhotoGallery'
|
||||
import MemorySection from '@/components/MemorySection'
|
||||
import WriteSection from '@/components/WriteSection'
|
||||
import CandleSection from '@/components/CandleSection'
|
||||
import MusicPlayer from '@/components/MusicPlayer'
|
||||
import VideoGallery from '@/components/VideoGallery'
|
||||
|
||||
@@ -31,7 +32,7 @@ export default async function HomePage() {
|
||||
{/* Hero */}
|
||||
<HeroSection heroPhoto={photos[0]?.filename ?? null} />
|
||||
|
||||
{/* Navigation anchors */}
|
||||
{/* Navigation */}
|
||||
<nav className="sticky top-0 z-20 bg-cream/80 backdrop-blur-sm border-b border-warm-border">
|
||||
<div className="max-w-4xl mx-auto px-4 py-3 flex items-center justify-center gap-6 sm:gap-10">
|
||||
{photos.length > 0 && (
|
||||
@@ -42,14 +43,12 @@ export default async function HomePage() {
|
||||
Bilder
|
||||
</a>
|
||||
)}
|
||||
{memories.length > 0 && (
|
||||
<a
|
||||
href="#erinnerungen"
|
||||
className="text-warm-brown-light hover:text-warm-gold text-sm font-cormorant italic transition-colors"
|
||||
>
|
||||
Erinnerungen
|
||||
</a>
|
||||
)}
|
||||
<a
|
||||
href="#erinnerungen"
|
||||
className="text-warm-brown-light hover:text-warm-gold text-sm font-cormorant italic transition-colors"
|
||||
>
|
||||
Erinnerungen
|
||||
</a>
|
||||
{videos.length > 0 && (
|
||||
<a
|
||||
href="#videos"
|
||||
@@ -58,6 +57,14 @@ export default async function HomePage() {
|
||||
Videos
|
||||
</a>
|
||||
)}
|
||||
{music.length > 0 && (
|
||||
<a
|
||||
href="#musik"
|
||||
className="text-warm-brown-light hover:text-warm-gold text-sm font-cormorant italic transition-colors"
|
||||
>
|
||||
Musik
|
||||
</a>
|
||||
)}
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
@@ -86,11 +93,16 @@ export default async function HomePage() {
|
||||
<WriteSection />
|
||||
|
||||
{/* Memories */}
|
||||
<MemorySection memories={memories} />
|
||||
<section id="erinnerungen">
|
||||
<MemorySection memories={memories} />
|
||||
</section>
|
||||
|
||||
{/* Videos */}
|
||||
<VideoGallery videos={videos} />
|
||||
|
||||
{/* Candle section */}
|
||||
<CandleSection />
|
||||
|
||||
{/* Music player */}
|
||||
<MusicPlayer tracks={music} />
|
||||
|
||||
@@ -117,16 +129,26 @@ export default async function HomePage() {
|
||||
<p className="font-cormorant italic text-warm-brown-light/60 text-lg">
|
||||
„Du bist nicht fort, nur ein Schritt voraus."
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* Hidden admin link */}
|
||||
<a
|
||||
href="/admin"
|
||||
className="mt-10 inline-block text-warm-border/30 hover:text-warm-border/60 text-xs transition-colors"
|
||||
title="Verwaltung"
|
||||
>
|
||||
·
|
||||
</a>
|
||||
{/* Footer links */}
|
||||
<div className="mt-10 flex items-center justify-center gap-6">
|
||||
<a
|
||||
href="/impressum"
|
||||
className="text-warm-brown-light/40 hover:text-warm-brown-light/70 text-xs font-lora tracking-wider transition-colors duration-200"
|
||||
>
|
||||
Impressum
|
||||
</a>
|
||||
<span className="text-warm-border/40 text-xs">·</span>
|
||||
{/* Hidden admin link */}
|
||||
<a
|
||||
href="/admin"
|
||||
className="text-warm-border/30 hover:text-warm-border/60 text-xs transition-colors"
|
||||
title="Verwaltung"
|
||||
>
|
||||
·
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</main>
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user