From 2be2e1977b2c97733ebc62b76c65beaf6d4e23e3 Mon Sep 17 00:00:00 2001 From: Alexander Bocken Date: Tue, 16 Dec 2025 15:45:33 +0100 Subject: [PATCH] feat: enhance rosary with interactive Bible citations and improved mystery selection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add clickable Bible reference buttons that open modal with full verses - Create BibleModal component with backdrop blur and styled close button - Implement build-time data fetching for Bible texts while maintaining reactivity - Redesign mystery selector with responsive grid (3-in-row/4-in-row/2×2) - Add "Heutige" badge to indicate today's auto-selected mystery - Reposition luminous mysteries toggle below mystery selector - Integrate Bible reference and counter buttons side-by-side - Restructure Bible API under /api/glaube/bibel/ for better organization --- src/hooks.server.ts | 2 +- src/lib/components/BibleModal.svelte | 278 ++++++++++++++++++ src/lib/components/CounterButton.svelte | 3 - src/lib/data/mysteryDescriptions.ts | 100 +++++++ .../api/glaube/bibel/[reference]/+server.ts | 122 ++++++++ .../bibel/zufallszitat}/+server.ts | 14 +- src/routes/glaube/rosenkranz/+page.server.ts | 55 ++++ src/routes/glaube/rosenkranz/+page.svelte | 277 ++++++++++++----- 8 files changed, 771 insertions(+), 80 deletions(-) create mode 100644 src/lib/components/BibleModal.svelte create mode 100644 src/lib/data/mysteryDescriptions.ts create mode 100644 src/routes/api/glaube/bibel/[reference]/+server.ts rename src/routes/api/{bible-quote => glaube/bibel/zufallszitat}/+server.ts (90%) create mode 100644 src/routes/glaube/rosenkranz/+page.server.ts diff --git a/src/hooks.server.ts b/src/hooks.server.ts index 3c19186..5b055f8 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -70,7 +70,7 @@ async function authorization({ event, resolve }) { // Bible verse functionality for error pages async function getRandomVerse(fetch: typeof globalThis.fetch): Promise { try { - const response = await fetch('/api/bible-quote'); + const response = await fetch('/api/glaube/bibel/zufallszitat'); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } diff --git a/src/lib/components/BibleModal.svelte b/src/lib/components/BibleModal.svelte new file mode 100644 index 0000000..44f4136 --- /dev/null +++ b/src/lib/components/BibleModal.svelte @@ -0,0 +1,278 @@ + + + + + + + diff --git a/src/lib/components/CounterButton.svelte b/src/lib/components/CounterButton.svelte index 7ec19c4..499134c 100644 --- a/src/lib/components/CounterButton.svelte +++ b/src/lib/components/CounterButton.svelte @@ -10,9 +10,6 @@ export let onClick; - Rosenkranz - Interaktiv + Interaktiver Rosenkranz

Interaktiver Rosenkranz

- -
- -

- Die Geheimnisse werden automatisch nach dem Wochenplan ausgewählt. - {#if includeLuminous} - Mit lichtreichen Geheimnissen: Do=Lichtreich, andere Tage folgen dem traditionellen Plan. - {:else} - Traditioneller Plan ohne lichtreiche Geheimnisse. - {/if} - Sie können jederzeit manuell ein anderes Geheimnis wählen. -

-
+

Geheimnisse

-
+
+
@@ -1242,14 +1361,29 @@ l536 389l-209 -629zM1671 934l-370 267l150 436l-378 -271l-371 271q8 -34 15 -68q10 data-section="secret{decadeNum}" >

{decadeNum}. Gesätz: {currentMysteryTitles[decadeNum - 1]}

+ +

Ave Maria (10×)

- - advanceDecade(decadeNum)} /> + +
+ {#if currentMysteryDescriptions[decadeNum - 1]} + {@const description = currentMysteryDescriptions[decadeNum - 1]} + {description.reference} + + {/if} + advanceDecade(decadeNum)} /> +
@@ -1437,3 +1571,8 @@ Anders als die Geheimnisse in Deutsch ist es üblich beim beten des Rosenkranzes
+ + +{#if showModal} + showModal = false} /> +{/if}