'use client' import { Container, Grid, Card, CardContent, Typography, Box, Select, MenuItem, FormControl, InputLabel, Paper, List, ListItem, ListItemButton, ListItemText, Divider, Button, Chip, useTheme, CircularProgress, Skeleton, } from '@mui/material' import { MenuBook, NavigateBefore, NavigateNext, Bookmark, Share, } from '@mui/icons-material' import { useState, useEffect } from 'react' import { useTranslations, useLocale } from 'next-intl' interface BibleVerse { id: string verseNum: number text: string } interface BibleChapter { id: string chapterNum: number verses: BibleVerse[] } interface BibleBook { id: string name: string testament: string orderNum: number bookKey: string chapters: BibleChapter[] } export default function BiblePage() { const theme = useTheme() const t = useTranslations('pages.bible') const locale = useLocale() const [books, setBooks] = useState([]) const [selectedBook, setSelectedBook] = useState('') const [selectedChapter, setSelectedChapter] = useState(1) const [verses, setVerses] = useState([]) const [loading, setLoading] = useState(true) // Fetch available books useEffect(() => { fetch(`/api/bible/books?locale=${locale}`) .then(res => res.json()) .then(data => { setBooks(data.books || []) if (data.books && data.books.length > 0) { setSelectedBook(data.books[0].id) } setLoading(false) }) .catch(err => { console.error('Error fetching books:', err) setLoading(false) }) }, []) // Fetch verses when book/chapter changes useEffect(() => { if (selectedBook && selectedChapter) { setLoading(true) fetch(`/api/bible/verses?bookId=${selectedBook}&chapter=${selectedChapter}`) .then(res => res.json()) .then(data => { setVerses(data.verses || []) setLoading(false) }) .catch(err => { console.error('Error fetching verses:', err) setLoading(false) }) } }, [selectedBook, selectedChapter]) const currentBook = books.find(book => book.id === selectedBook) const maxChapters = currentBook?.chapters?.length || 50 // Default fallback const handlePreviousChapter = () => { if (selectedChapter > 1) { setSelectedChapter(selectedChapter - 1) } else if (selectedBook > 1) { setSelectedBook(selectedBook - 1) setSelectedChapter(50) // Will be adjusted by actual chapter count } } const handleNextChapter = () => { if (selectedChapter < maxChapters) { setSelectedChapter(selectedChapter + 1) } else { const nextBook = books.find(book => book.id === selectedBook + 1) if (nextBook) { setSelectedBook(selectedBook + 1) setSelectedChapter(1) } } } if (loading && books.length === 0) { return ( {t('loading')} ) } return ( {/* Header */} {t('title')} {t('subtitle')} {/* Left Sidebar - Book Selection */} {t('selectBook')} {t('book')} {t('chapter')} {/* Main Content - Bible Text */} {/* Chapter Header */} {currentBook?.name || 'Geneza'} {selectedChapter} {verses.length} {t('verses')} {/* Bible Verses */} {loading ? ( {Array.from({ length: 5 }).map((_, index) => ( ))} ) : verses.length > 0 ? ( {verses.map((verse) => ( {verse.verseNum} {verse.text} ))} ) : ( {t('noVerses')} )} {/* Navigation */} {currentBook?.name} {selectedChapter} ) }