import { useCallback, useEffect, useState } from 'react' import { Link } from 'react-router-dom' import CandleCanvas from './Candle' import { daySeed, loadKJV, msUntilRollover, pickForDay, type DailyVerse } from './verse' type Phase = 'sealed' | 'revealing' | 'revealed' function formatCountdown(ms: number): string { const s = Math.max(0, Math.ceil(ms / 1000)) const h = Math.floor(s / 3600) const m = Math.floor((s % 3600) / 60) const sec = s % 60 return `${String(h).padStart(2, '0')}h ${String(m).padStart(2, '0')}m ${String(sec).padStart(2, '0')}s` } export default function Home() { const [phase, setPhase] = useState('sealed') const [verse, setVerse] = useState(null) const [countdown, setCountdown] = useState('') const [error, setError] = useState(false) useEffect(() => { const update = () => setCountdown(formatCountdown(msUntilRollover())) update() const id = window.setInterval(update, 1000) return () => window.clearInterval(id) }, []) const seek = useCallback(async () => { if (phase !== 'sealed') return setPhase('revealing') try { const verses = await loadKJV() setVerse(pickForDay(verses, daySeed())) setPhase('revealed') } catch { setError(true) setPhase('sealed') } }, [phase]) const today = new Date().toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric', }) return (

Walk By Faith

“For we walk by faith, not by sight.” — 2 Corinthians 5:7

{phase !== 'revealed' && (

The verse for this day is sealed

)} {phase === 'revealed' && verse && (

The verse for {today}

{verse.text}

—{' '} {verse.reference}

)}
) }