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:
@@ -3,9 +3,9 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<meta name="description" content="ESV Bible - Read and study the English Standard Version Bible online" />
|
<meta name="description" content="The Bible - Read and study ESV and NKJV Bible translations online" />
|
||||||
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232563eb' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20'/></svg>" />
|
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232563eb' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20'/></svg>" />
|
||||||
<title>ESV Bible</title>
|
<title>The Bible</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import ChapterSelector from './components/ChapterSelector';
|
|||||||
import BibleReader from './components/BibleReader';
|
import BibleReader from './components/BibleReader';
|
||||||
import FavoritesMenu from './components/FavoritesMenu';
|
import FavoritesMenu from './components/FavoritesMenu';
|
||||||
import SearchComponent from './components/SearchComponent';
|
import SearchComponent from './components/SearchComponent';
|
||||||
|
import VersionSelector from './components/VersionSelector';
|
||||||
import { getBooks } from './services/api';
|
import { getBooks } from './services/api';
|
||||||
|
|
||||||
interface BookData {
|
interface BookData {
|
||||||
@@ -24,7 +25,8 @@ function App() {
|
|||||||
});
|
});
|
||||||
const [error, setError] = useState<string>('');
|
const [error, setError] = useState<string>('');
|
||||||
const [showSearch, setShowSearch] = useState(false);
|
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 [availableVersions, setAvailableVersions] = useState<any[]>([]);
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
@@ -260,6 +262,11 @@ function App() {
|
|||||||
|
|
||||||
// Component for the home page
|
// Component for the home page
|
||||||
const HomePage = () => {
|
const HomePage = () => {
|
||||||
|
const handleVersionSelect = (version: 'esv' | 'nkjv') => {
|
||||||
|
setSelectedVersion(version);
|
||||||
|
setVersionSelected(true);
|
||||||
|
};
|
||||||
|
|
||||||
const handleBookSelect = (book: string) => {
|
const handleBookSelect = (book: string) => {
|
||||||
const urlName = getBookUrlName(book);
|
const urlName = getBookUrlName(book);
|
||||||
navigate(`/book/${urlName}`);
|
navigate(`/book/${urlName}`);
|
||||||
@@ -270,10 +277,18 @@ function App() {
|
|||||||
setUser((prev: any) => ({ ...prev }));
|
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 (
|
return (
|
||||||
<BookSelector
|
<BookSelector
|
||||||
books={books}
|
books={books}
|
||||||
onBookSelect={handleBookSelect}
|
onBookSelect={handleBookSelect}
|
||||||
formatBookName={formatBookName}
|
formatBookName={formatBookName}
|
||||||
user={user}
|
user={user}
|
||||||
onFavoriteChange={handleFavoriteChange}
|
onFavoriteChange={handleFavoriteChange}
|
||||||
@@ -373,17 +388,23 @@ function App() {
|
|||||||
The Bible
|
The Bible
|
||||||
</button>
|
</button>
|
||||||
{/* Version Selector */}
|
{/* Version Selector */}
|
||||||
<select
|
{selectedVersion ? (
|
||||||
value={selectedVersion}
|
<select
|
||||||
onChange={(e) => setSelectedVersion(e.target.value)}
|
value={selectedVersion}
|
||||||
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"
|
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}>
|
{availableVersions.map((version) => (
|
||||||
{version.name}
|
<option key={version.id} value={version.id}>
|
||||||
</option>
|
{version.name}
|
||||||
))}
|
</option>
|
||||||
</select>
|
))}
|
||||||
|
</select>
|
||||||
|
) : (
|
||||||
|
<span className="text-xs text-gray-500 dark:text-gray-500 italic">
|
||||||
|
Choose version
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user