Complete homepage redesign - no longer defaults to ESV version
- Page title updated to 'The Bible' instead of 'ESV Bible' - Homepage now shows version selection cards (ESV/NKJV) instead of book list - Version dropdown shows 'Choose version' on homepage - Users must select version before seeing books - Maintains URL parameter support and all existing functionality - Clean separation between version selection and Bible browsing Now users start with version selection, preventing defaulting to one translation.
This commit is contained in:
@@ -6,6 +6,7 @@ import ChapterSelector from './components/ChapterSelector';
|
||||
import BibleReader from './components/BibleReader';
|
||||
import FavoritesMenu from './components/FavoritesMenu';
|
||||
import SearchComponent from './components/SearchComponent';
|
||||
import VersionSelector from './components/VersionSelector';
|
||||
import { getBooks } from './services/api';
|
||||
|
||||
interface BookData {
|
||||
@@ -24,7 +25,8 @@ function App() {
|
||||
});
|
||||
const [error, setError] = useState<string>('');
|
||||
const [showSearch, setShowSearch] = useState(false);
|
||||
const [selectedVersion, setSelectedVersion] = useState('esv'); // Default to ESV
|
||||
const [selectedVersion, setSelectedVersion] = useState<string>(''); // Empty means no version selected yet
|
||||
const [versionSelected, setVersionSelected] = useState(false); // Track if version has been chosen
|
||||
const [availableVersions, setAvailableVersions] = useState<any[]>([]);
|
||||
const location = useLocation();
|
||||
const navigate = useNavigate();
|
||||
@@ -260,6 +262,11 @@ function App() {
|
||||
|
||||
// Component for the home page
|
||||
const HomePage = () => {
|
||||
const handleVersionSelect = (version: 'esv' | 'nkjv') => {
|
||||
setSelectedVersion(version);
|
||||
setVersionSelected(true);
|
||||
};
|
||||
|
||||
const handleBookSelect = (book: string) => {
|
||||
const urlName = getBookUrlName(book);
|
||||
navigate(`/book/${urlName}`);
|
||||
@@ -270,10 +277,18 @@ function App() {
|
||||
setUser((prev: any) => ({ ...prev }));
|
||||
};
|
||||
|
||||
// Show version selector if no version is selected
|
||||
if (!selectedVersion) {
|
||||
return (
|
||||
<VersionSelector onVersionSelect={handleVersionSelect} />
|
||||
);
|
||||
}
|
||||
|
||||
// Show book selector once version is selected
|
||||
return (
|
||||
<BookSelector
|
||||
books={books}
|
||||
onBookSelect={handleBookSelect}
|
||||
<BookSelector
|
||||
books={books}
|
||||
onBookSelect={handleBookSelect}
|
||||
formatBookName={formatBookName}
|
||||
user={user}
|
||||
onFavoriteChange={handleFavoriteChange}
|
||||
@@ -373,17 +388,23 @@ function App() {
|
||||
The Bible
|
||||
</button>
|
||||
{/* Version Selector */}
|
||||
<select
|
||||
value={selectedVersion}
|
||||
onChange={(e) => setSelectedVersion(e.target.value)}
|
||||
className="text-xs text-gray-600 dark:text-gray-400 bg-transparent border-none focus:outline-none cursor-pointer hover:text-blue-600 dark:hover:text-blue-400"
|
||||
>
|
||||
{availableVersions.map((version) => (
|
||||
<option key={version.id} value={version.id}>
|
||||
{version.name}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
{selectedVersion ? (
|
||||
<select
|
||||
value={selectedVersion}
|
||||
onChange={(e) => setSelectedVersion(e.target.value)}
|
||||
className="text-xs text-gray-600 dark:text-gray-400 bg-transparent border-none focus:outline-none cursor-pointer hover:text-blue-600 dark:hover:text-blue-400"
|
||||
>
|
||||
{availableVersions.map((version) => (
|
||||
<option key={version.id} value={version.id}>
|
||||
{version.name}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
) : (
|
||||
<span className="text-xs text-gray-500 dark:text-gray-500 italic">
|
||||
Choose version
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user