mirror of
https://github.com/pupperpowell/bibdle.git
synced 2026-02-04 10:54:44 -05:00
Added greek bible and centered title correctly and added date
This commit is contained in:
@@ -43,6 +43,15 @@
|
||||
|
||||
let guessedIds = $derived(new Set(guesses.map((g) => g.book.id)));
|
||||
|
||||
const currentDate = $derived(
|
||||
new Date().toLocaleDateString("en-US", {
|
||||
weekday: "long",
|
||||
year: "numeric",
|
||||
month: "long",
|
||||
day: "numeric",
|
||||
})
|
||||
);
|
||||
|
||||
let isWon = $derived(guesses.some((g) => g.book.id === correctBookId));
|
||||
let grade = $derived(
|
||||
isWon
|
||||
@@ -356,18 +365,21 @@
|
||||
<title>Bibdle — A daily bible game{isDev ? " (dev)" : ""}</title>
|
||||
<meta
|
||||
name="description"
|
||||
content="Guess which book of the Bible a daily verse comes from. A Wordle-inspired Bible game!"
|
||||
content="A Wordle-inspired Bible game (short for Bible Daily)"
|
||||
/>
|
||||
</svelte:head>
|
||||
|
||||
<div class="min-h-dvh md:bg-linear-to-br md:from-blue-50 md:to-indigo-200 py-8">
|
||||
<div class="w-full max-w-3xl mx-auto px-4">
|
||||
<h1
|
||||
class="text-3xl md:text-4xl font-bold text-center uppercase text-gray-600 drop-shadow-2xl tracking-widest p-8 sm:p-12"
|
||||
class="text-3xl md:text-4xl font-bold text-center uppercase text-gray-600 drop-shadow-2xl tracking-widest p-4 sm:p-8"
|
||||
>
|
||||
<TitleAnimation />
|
||||
<span class="font-normal">{isDev ? "dev" : ""}</span>
|
||||
<div class="font-normal">{false ? "dev" : ""}</div>
|
||||
</h1>
|
||||
<div class="text-center mb-8">
|
||||
<span class="big-text">{currentDate}</span>
|
||||
</div>
|
||||
|
||||
<VerseDisplay {data} {isWon} />
|
||||
|
||||
|
||||
37
src/routes/greek-random/+page.server.ts
Normal file
37
src/routes/greek-random/+page.server.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import type { PageServerLoad } from './$types';
|
||||
import { error } from '@sveltejs/kit';
|
||||
import { getRandomGreekVerses, extractVerses, formatReference } from '$lib/server/xml-bible';
|
||||
import { getBookById, bookIdToNumber } from '$lib/server/bible';
|
||||
|
||||
export const load: PageServerLoad = async () => {
|
||||
const greekData = getRandomGreekVerses(3);
|
||||
|
||||
if (!greekData) {
|
||||
throw error(500, 'Failed to load Greek verses');
|
||||
}
|
||||
|
||||
const bookNumber = bookIdToNumber[greekData.bookId];
|
||||
const englishVerses = extractVerses(bookNumber, greekData.chapter, greekData.startVerse, 3);
|
||||
const reference = formatReference(greekData.bookName, greekData.chapter, greekData.startVerse, greekData.endVerse);
|
||||
const greekVerseText = greekData.verses.join(' ');
|
||||
const englishVerseText = englishVerses.join(' ');
|
||||
|
||||
const dailyVerse = {
|
||||
id: 'greek-random-' + Date.now(),
|
||||
date: new Date().toLocaleDateString('en-CA', { timeZone: 'America/New_York' }),
|
||||
bookId: greekData.bookId,
|
||||
reference,
|
||||
verseText: englishVerseText,
|
||||
createdAt: new Date()
|
||||
};
|
||||
|
||||
const correctBook = getBookById(dailyVerse.bookId) ?? null;
|
||||
|
||||
return {
|
||||
dailyVerse,
|
||||
greekVerseText,
|
||||
reference,
|
||||
correctBookId: dailyVerse.bookId,
|
||||
correctBook
|
||||
};
|
||||
};
|
||||
46
src/routes/greek-random/+page.svelte
Normal file
46
src/routes/greek-random/+page.svelte
Normal file
@@ -0,0 +1,46 @@
|
||||
<script lang="ts">
|
||||
import type { PageProps } from "./$types";
|
||||
|
||||
import VerseDisplay from "$lib/components/VerseDisplay.svelte";
|
||||
|
||||
let { data }: PageProps = $props();
|
||||
|
||||
let dailyVerse = $derived(data.dailyVerse);
|
||||
let greekVerseText = $derived(data.greekVerseText ?? "");
|
||||
let reference = $derived(data.reference ?? "");
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>Greek/English Random Verse - Bibdle</title>
|
||||
</svelte:head>
|
||||
|
||||
<div class="min-h-screen bg-linear-to-br from-blue-50 to-indigo-100 py-12 px-4">
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<h1 class="text-4xl font-bold text-center text-gray-800 mb-8">
|
||||
Greek/English Parallel Random Verse
|
||||
</h1>
|
||||
|
||||
<div class="bg-white rounded-2xl shadow-xl p-8 mb-8">
|
||||
<h2 class="text-xl font-semibold text-gray-700 mb-4">
|
||||
Greek Verse (Modern 1904)
|
||||
</h2>
|
||||
<div class="space-y-2 text-gray-600 text-lg leading-relaxed">
|
||||
<p><strong>Reference:</strong> {reference}</p>
|
||||
<p><strong>Greek:</strong> {greekVerseText}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-2xl shadow-xl p-8 mb-8">
|
||||
<h2 class="text-xl font-semibold text-gray-700 mb-4">
|
||||
English Equivalent (NKJV)
|
||||
</h2>
|
||||
<div class="space-y-2 text-gray-600">
|
||||
<p><strong>Book ID:</strong> {dailyVerse.bookId}</p>
|
||||
<p><strong>Reference:</strong> {dailyVerse.reference}</p>
|
||||
<p><strong>Verse Text:</strong> {dailyVerse.verseText}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<VerseDisplay {data} isWon={true} />
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user