'use client' import { useState, useEffect, CSSProperties } from 'react' import { Box, Typography, IconButton, Paper, useMediaQuery, useTheme } from '@mui/material' import { NavigateBefore, NavigateNext, Settings as SettingsIcon } from '@mui/icons-material' import { BibleChapter } from '@/types' import { getCSSVariables, loadPreferences } from '@/lib/reading-preferences' interface ReadingViewProps { chapter: BibleChapter loading: boolean onPrevChapter: () => void onNextChapter: () => void onVerseClick: (verseId: string) => void onSettingsOpen: () => void hasPrevChapter: boolean hasNextChapter: boolean } export function ReadingView({ chapter, loading, onPrevChapter, onNextChapter, onVerseClick, onSettingsOpen, hasPrevChapter, hasNextChapter, }: ReadingViewProps) { const theme = useTheme() const isMobile = useMediaQuery(theme.breakpoints.down('sm')) const [preferences, setPreferences] = useState(loadPreferences()) const [showControls, setShowControls] = useState(!isMobile) useEffect(() => { const handleStorageChange = () => { setPreferences(loadPreferences()) } setPreferences(loadPreferences()) window.addEventListener('storage', handleStorageChange) return () => window.removeEventListener('storage', handleStorageChange) }, []) const cssVars = getCSSVariables(preferences) if (loading) { return ( Loading chapter... ) } return ( { if (isMobile) { const rect = e.currentTarget.getBoundingClientRect() const y = e.clientY - rect.top if (y < rect.height * 0.3) { setShowControls(true) } else if (y > rect.height * 0.7) { setShowControls(!showControls) } else { setShowControls(false) } } }} > {/* Header */} {(showControls || !isMobile) && ( {chapter.bookName} {chapter.chapter} )} {/* Main Text Area */} {chapter.verses.map((verse) => ( { e.stopPropagation() onVerseClick(verse.id) }} onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault() onVerseClick(verse.id) } }} style={{ cursor: 'pointer', transition: 'background-color 0.15s', }} onMouseEnter={(e) => { e.currentTarget.style.backgroundColor = 'rgba(255, 193, 7, 0.3)' }} onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = 'transparent' }} > {verse.verseNum} {verse.text}{' '} ))} {/* Navigation Footer */} {(showControls || !isMobile) && ( Chapter {chapter.chapter} )} ) }