feat: enhance rosary with final prayer and mystery titles
All checks were successful
CI / update (push) Successful in 25s

- Add RosaryFinalPrayer component with Latin and German text
- Display short mystery titles in decade headings (e.g., "5. Gesätz: Kreuzigung")
- Add descriptive titles to initial three Ave Marias (Glaube, Hoffnung, Liebe)
- Add closing cross symbol to signal final sign of the cross
- Mystery titles update dynamically when switching between rosary types
This commit is contained in:
2025-12-16 13:42:17 +01:00
parent f4d6f195b3
commit 48e89305e0
3 changed files with 74 additions and 5 deletions

View File

@@ -44,5 +44,10 @@
"mongoose": "^8.0.0",
"node-cron": "^4.2.1",
"sharp": "^0.33.0"
},
"pnpm": {
"onlyBuiltDependencies": [
"esbuild"
]
}
}
}

View File

@@ -0,0 +1,24 @@
<p>
<v lang="la">Orémus:</v>
<v lang="de">Lasset uns beten:</v>
</p>
<p>
<v lang="la">Déus, cújus Unigénitus,</v>
<v lang="de">O Gott, dessen eingeborner Sohn</v>
<v lang="la">pér vítam, mórtem ét resurrectiónem súam</v>
<v lang="de">durch sein Leben, seinen Tod und seine Auferstehung</v>
<v lang="la">nóbis salútis ætérnæ præmia comparávit:</v>
<v lang="de">uns die Belohnung des ewigen Lebens verdient hat,</v>
<v lang="la">concéde, quæsumus;</v>
<v lang="de">verleihe uns, wir bitten dich,</v>
<v lang="la">út, hæc mystéria sanctíssimo beátæ Maríæ Vírginis Rosário recoléntes;</v>
<v lang="de">daß wir, indem wir die Geheimisse des heiligen Rosenkranzes der allerseligsten Jungfrau ehren,</v>
<v lang="la">ét imitémur quód cóntinent,</v>
<v lang="de">was sie enthalten nachahmen</v>
<v lang="la">ét quód promíttunt, assequámur.</v>
<v lang="de">und dadurch erlangen, was uns in denselben verheißen ist.</v>
<v lang="la">Pér eúmdem Chrístum Dóminum nóstrum.</v>
<v lang="de">Durch unsern Herrn Jesus Christus.</v>
<v lang="la">Ámen.</v>
<v lang="de">Amen.</v>
</p>

View File

@@ -9,6 +9,7 @@ import AveMaria from "$lib/components/prayers/AveMaria.svelte";
import GloriaPatri from "$lib/components/prayers/GloriaPatri.svelte";
import FatimaGebet from "$lib/components/prayers/FatimaGebet.svelte";
import SalveRegina from "$lib/components/prayers/SalveRegina.svelte";
import RosaryFinalPrayer from "$lib/components/prayers/RosaryFinalPrayer.svelte";
import BenedictusMedal from "$lib/components/BenedictusMedal.svelte";
import CounterButton from "$lib/components/CounterButton.svelte";
@@ -75,6 +76,38 @@ const mysteriesLatin = {
]
};
// Short titles for mysteries (for display in headings)
const mysteryTitles = {
freudenreich: [
"Verkündigung",
"Heimsuchung",
"Geburt",
"Darstellung",
"Wiederfindung"
],
schmerzhaften: [
"Todesangst",
"Geißelung",
"Dornenkrönung",
"Kreuzweg",
"Kreuzigung"
],
glorreichen: [
"Auferstehung",
"Himmelfahrt",
"Geistsendung",
"Aufnahme Mariens",
"Krönung Mariens"
],
lichtreichen: [
"Taufe",
"Hochzeit zu Kana",
"Verkündigung des Reiches",
"Verklärung",
"Einsetzung der Eucharistie"
]
};
// Toggle for including Luminous mysteries
let includeLuminous = true;
@@ -113,12 +146,14 @@ function getMysteryForWeekday(date, includeLuminous) {
let selectedMystery = getMysteryForWeekday(new Date(), includeLuminous);
let currentMysteries = mysteries[selectedMystery];
let currentMysteriesLatin = mysteriesLatin[selectedMystery];
let currentMysteryTitles = mysteryTitles[selectedMystery];
// Function to switch mysteries
function selectMystery(mysteryType) {
selectedMystery = mysteryType;
currentMysteries = mysteries[mysteryType];
currentMysteriesLatin = mysteriesLatin[mysteryType];
currentMysteryTitles = mysteryTitles[mysteryType];
}
// Function to handle toggle change
@@ -1153,7 +1188,7 @@ l536 389l-209 -629zM1671 934l-370 267l150 436l-378 -271l-371 271q8 -34 15 -68q10
bind:this={sectionElements.start1}
data-section="start1"
>
<h3>Ave Maria</h3>
<h3>Ave Maria: Glaube</h3>
<AveMaria
mysteryLatin="Jesus, qui adáugeat nobis fidem"
mystery="Jesus, der in uns den Glauben vermehre"
@@ -1166,7 +1201,7 @@ l536 389l-209 -629zM1671 934l-370 267l150 436l-378 -271l-371 271q8 -34 15 -68q10
bind:this={sectionElements.start2}
data-section="start2"
>
<h3>Ave Maria</h3>
<h3>Ave Maria: Hoffnung</h3>
<AveMaria
mysteryLatin="Jesus, qui corróboret nobis spem"
mystery="Jesus, der in uns die Hoffnung stärke"
@@ -1179,7 +1214,7 @@ l536 389l-209 -629zM1671 934l-370 267l150 436l-378 -271l-371 271q8 -34 15 -68q10
bind:this={sectionElements.start3}
data-section="start3"
>
<h3>Ave Maria</h3>
<h3>Ave Maria: Liebe</h3>
<AveMaria
mysteryLatin="Jesus, qui perficiat in nobis caritátem"
mystery="Jesus, der in uns die Liebe entzünde"
@@ -1206,7 +1241,7 @@ l536 389l-209 -629zM1671 934l-370 267l150 436l-378 -271l-371 271q8 -34 15 -68q10
bind:this={sectionElements[`secret${decadeNum}`]}
data-section="secret{decadeNum}"
>
<h2>{decadeNum}. Gesätz</h2>
<h2>{decadeNum}. Gesätz: {currentMysteryTitles[decadeNum - 1]}</h2>
<h3>Ave Maria <span class="repeat-count">(10×)</span></h3>
<AveMaria
mysteryLatin={currentMysteriesLatin[decadeNum - 1]}
@@ -1252,6 +1287,11 @@ l536 389l-209 -629zM1671 934l-370 267l150 436l-378 -271l-371 271q8 -34 15 -68q10
<h3>Salve Regina</h3>
<SalveRegina />
<h3>Schlussgebet</h3>
<RosaryFinalPrayer />
<h3 style="text-align: center; font-size: 2.5rem; margin-top: 2rem;"></h3>
</div>
</div>
</div>