diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 29efaf4b..3b149002 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -14,7 +14,11 @@ function App() { const [selectedBook, setSelectedBook] = useState(''); const [selectedChapter, setSelectedChapter] = useState(''); const [loading, setLoading] = useState(true); - const [darkMode, setDarkMode] = useState(false); + const [darkMode, setDarkMode] = useState(() => { + // Load dark mode preference from localStorage + const saved = localStorage.getItem('darkMode'); + return saved ? JSON.parse(saved) : false; + }); const [error, setError] = useState(''); // Debug logging @@ -26,13 +30,21 @@ function App() { }, []); useEffect(() => { + // Apply dark mode and save preference if (darkMode) { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } + localStorage.setItem('darkMode', JSON.stringify(darkMode)); }, [darkMode]); + // Helper function to format book names for display + const formatBookName = (bookName: string): string => { + // Remove leading numbers and underscores, replace underscores with spaces + return bookName.replace(/^\d+_/, '').replace(/_/g, ' '); + }; + const loadBooks = async () => { try { console.log('Loading books from API...'); @@ -101,7 +113,7 @@ function App() { - {selectedBook} + {formatBookName(selectedBook)} {selectedChapter && ( <> @@ -140,18 +152,20 @@ function App() { {/* Main Content */}
{!selectedBook ? ( - + ) : !selectedChapter ? ( ) : ( )}
diff --git a/frontend/src/components/BibleReader.tsx b/frontend/src/components/BibleReader.tsx index c817bd9e..f1563b25 100644 --- a/frontend/src/components/BibleReader.tsx +++ b/frontend/src/components/BibleReader.tsx @@ -6,9 +6,10 @@ interface BibleReaderProps { book: string; chapter: string; onBack: () => void; + formatBookName: (bookName: string) => string; } -const BibleReader: React.FC = ({ book, chapter, onBack }) => { +const BibleReader: React.FC = ({ book, chapter, onBack, formatBookName }) => { const [content, setContent] = useState(''); const [loading, setLoading] = useState(true); const [fontSize, setFontSize] = useState<'small' | 'medium' | 'large'>('medium'); @@ -136,7 +137,7 @@ const BibleReader: React.FC = ({ book, chapter, onBack }) => { {/* Chapter Title */}

- {book} {chapter} + {formatBookName(book)} {chapter}

diff --git a/frontend/src/components/BookSelector.tsx b/frontend/src/components/BookSelector.tsx index 5952e233..9552fc6f 100644 --- a/frontend/src/components/BookSelector.tsx +++ b/frontend/src/components/BookSelector.tsx @@ -4,9 +4,10 @@ import { BookOpen } from 'lucide-react'; interface BookSelectorProps { books: string[]; onBookSelect: (book: string) => void; + formatBookName: (bookName: string) => string; } -const BookSelector: React.FC = ({ books, onBookSelect }) => { +const BookSelector: React.FC = ({ books, onBookSelect, formatBookName }) => { // Group books by testament const oldTestament = books.slice(0, 39); // First 39 books const newTestament = books.slice(39); // Remaining books @@ -25,7 +26,7 @@ const BookSelector: React.FC = ({ books, onBookSelect }) => { > - {book} + {formatBookName(book)} ))} diff --git a/frontend/src/components/ChapterSelector.tsx b/frontend/src/components/ChapterSelector.tsx index 18d2af81..3793abf6 100644 --- a/frontend/src/components/ChapterSelector.tsx +++ b/frontend/src/components/ChapterSelector.tsx @@ -6,9 +6,10 @@ interface ChapterSelectorProps { book: string; onChapterSelect: (chapter: string) => void; onBack: () => void; + formatBookName: (bookName: string) => string; } -const ChapterSelector: React.FC = ({ book, onChapterSelect, onBack }) => { +const ChapterSelector: React.FC = ({ book, onChapterSelect, onBack, formatBookName }) => { const [chapters, setChapters] = useState([]); const [loading, setLoading] = useState(true); @@ -69,7 +70,7 @@ const ChapterSelector: React.FC = ({ book, onChapterSelect {/* Book Title */}

- {book} + {formatBookName(book)}

Select a chapter to read