From 6363d1327b65a91ded4490de87eb479779bff824 Mon Sep 17 00:00:00 2001 From: denshooter Date: Mon, 16 Feb 2026 03:57:48 +0100 Subject: [PATCH] feat: Musik global, Dennis-Teil auf eigene Seite, Mobile-Autoplay MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - MusicPlayer ins Layout verschoben (läuft auf allen Seiten) - Mobile-Autoplay: Desktop startet stumm + fade-in bei Scroll, Mobile wartet auf ersten Touch und startet dann mit Fade-In - Dennis-Perspektive auf eigene Seite /meine-oma ausgelagert, dezenter Link "Von Dennis" am Ende der Tribute-Sektion - "Berge von Essen" entfernt - "Jacky und Niklas" → "ihre Enkelin" / "Meine Schwester" Co-Authored-By: Claude Opus 4.6 --- src/app/layout.tsx | 8 +- src/app/meine-oma/page.tsx | 147 +++++++++++++++++++++++++++ src/app/page.tsx | 9 +- src/components/GlobalMusicPlayer.tsx | 15 +++ src/components/MusicPlayer.tsx | 116 +++++++++++++-------- src/components/TributeSection.tsx | 128 +++-------------------- 6 files changed, 253 insertions(+), 170 deletions(-) create mode 100644 src/app/meine-oma/page.tsx create mode 100644 src/components/GlobalMusicPlayer.tsx diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 99f88fb..736722e 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,5 +1,6 @@ import type { Metadata } from 'next' import { Cormorant_Garamond, Lora } from 'next/font/google' +import GlobalMusicPlayer from '@/components/GlobalMusicPlayer' import './globals.css' const cormorant = Cormorant_Garamond({ @@ -18,6 +19,8 @@ const lora = Lora({ display: 'swap', }) +export const dynamic = 'force-dynamic' + export const metadata: Metadata = { title: 'In Erinnerung an Maria Malejka', description: @@ -36,7 +39,10 @@ export default function RootLayout({ }) { return ( - {children} + + {children} + + ) } diff --git a/src/app/meine-oma/page.tsx b/src/app/meine-oma/page.tsx new file mode 100644 index 0000000..bde4996 --- /dev/null +++ b/src/app/meine-oma/page.tsx @@ -0,0 +1,147 @@ +'use client' + +import { motion } from 'framer-motion' +import { ArrowLeft } from 'lucide-react' + +const fade = { + initial: { opacity: 0, y: 20 }, + whileInView: { opacity: 1, y: 0 }, + viewport: { once: true }, + transition: { duration: 0.8 }, +} + +export default function MeineOmaPage() { + return ( +
+
+ + + + Zurück + + + +

+ Von Dennis +

+

+ Meine Oma +

+
+
+ +
+
+ + +
+ + Ich kam aus der Schule und das Essen stand schon da. Jedes Mal. + Rahmsauce. Ich weiß nicht, wie oft ich die gegessen habe, aber + es war nie genug. Ich würde alles dafür geben, noch einmal an + ihrem Küchentisch zu sitzen. + + + + Oma roch nach Oma. Ich weiß nicht, wie ich das anders beschreiben + soll. Nicht nach Parfum. Nicht nach irgendwas, das man kaufen kann. + Einfach nach ihr. Wenn ich an sie denke, ist das Erste, was + kommt, dieses Gefühl. Diese Wärme. Der Geruch von ihrem Haus. + + + + Bei ihr war es immer heiß. Immer. Der Kamin lief, die Heizung + lief, man hat geschwitzt und es war trotzdem schön. An Weihnachten + war der Karpfen in der Badewanne und die Geschenke im Wohnzimmer. + Aber die Tür blieb zu. Erst essen, dann Geschenke. Das war Gesetz. + Und wir haben uns jedes Mal gefreut, als wären wir fünf. + + + + Wenn Pico bei ihr war, hab ich nicht mehr existiert. Sie hat mit + ihm geredet, ihn gefüttert, ihn verwöhnt. Ich saß daneben und + war Luft. Aber das war okay. Weil sie so glücklich war dabei. + + + + Pico ist letztes Jahr gestorben. Und jetzt Oma. Ich stelle mir + vor, wie sie irgendwo sitzt und er neben ihr liegt und sie ihm + wieder irgendwas erzählt, was er nicht versteht. Und er hört + trotzdem zu. + + + + Sie war stur. Richtig stur. Deswegen hatte sie auch den + Oberschenkelhalsbruch. Weil sie alles alleine machen wollte. + Weil sie sich nichts sagen lassen hat. Man konnte sich aufregen. + Aber im Nachhinein war das auch das, was sie so stark gemacht hat. + + + +

+ Ich habe es dir viel zu selten gesagt, Oma. +
+ Aber ich habe dich geliebt. Sehr. +

+
+ + + Das letzte Mal hab ich sie im Krankenhaus besucht. In der + Geriatrie. Sie lief schon wieder, es ging ihr gut. Sie hat + im Aufenthaltsraum Blumenvasen gesehen und meinte, die könnte + man ja mitnehmen. Ich hab gelacht. So war sie halt. + + + + Ihr Zimmer war gegenüber von dem Zimmer, in dem meine Mutter + wochenlang gelegen hatte, als sie mit mir schwanger war. Mama + durfte sich kaum bewegen damals. Im selben Flur, in dem ich auf + die Welt kam, ist Oma gegangen. Das lässt mich nicht los. + + + + Am 10. Februar, um 13:13 Uhr, schrieb mir meine Schwester + auf Telegram: „Sie + möchten die Reanimation abbrechen." + + + + Meine Schwester ist schwanger. Sie hat den Ultraschall mit in + den Sarg gelegt. Ein Kind, das Oma nie treffen wird, aber das + in ihrem Haus aufwachsen wird. In den Wänden, die nach Oma + riechen. In der Küche, in der die Rahmsauce stand. + + + + Diese Seite ist für dich. Damit ich nicht vergesse. Damit + niemand vergisst. + +
+ + {/* Footer */} + +
+ +
+ ) +} diff --git a/src/app/page.tsx b/src/app/page.tsx index 60dfc9d..f2ac3bf 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -5,7 +5,6 @@ import PhotoSlideshow from '@/components/PhotoSlideshow' import PhotoGallery from '@/components/PhotoGallery' import MemorySection from '@/components/MemorySection' import WriteSection from '@/components/WriteSection' -import MusicPlayer from '@/components/MusicPlayer' import VideoGallery from '@/components/VideoGallery' import TributeSection from '@/components/TributeSection' @@ -25,10 +24,7 @@ export default async function HomePage() { const videos = plain( db.prepare("SELECT * FROM media WHERE type = 'video' ORDER BY sort_order, created_at").all() ) - const music = plain( - db.prepare("SELECT * FROM media WHERE type = 'music' ORDER BY sort_order, created_at").all() - ) - const memories = plain( +const memories = plain( db.prepare('SELECT * FROM memories ORDER BY created_at DESC').all() ) @@ -93,9 +89,6 @@ export default async function HomePage() { {/* Videos */} - {/* Floating music player */} - - {/* Footer */}