feat: Centralized navigation system with HandleNavigate hook
BREAKING CHANGE: Replaced all direct useNavigate() usage with HandleNavigate hook
## Summary
- Complete frontend navigation refactoring
- Centralized route management with routes.js
- Converted 18+ components to use HandleNavigate
- Enhanced navigation with 20+ type-safe functions
## New Files
- src/utils/routes.js - Central route constants and helpers
- Documentations/FRONTEND_CODING_GUIDELINES.md - Frontend best practices (300+ lines)
- Documentations/NAVIGATION_REFACTORING_REPORT.md - Detailed refactoring report (400+ lines)
## Modified Components (18+)
### Pages
- Home.jsx, LoginForm.jsx, RegisterForm.jsx
- ResetPassword.jsx, VerifyEmailPage.jsx
- DeckCreator.jsx, Card_display.jsx
- Lobby.jsx, GameTest.jsx, ChooseDeck.jsx, PlayerSetup.jsx
- Landingpage.jsx
### Components
- Userdetails.jsx, DeckInfoPopUp.jsx
- PlayMenu.jsx, LandingPage.jsx, DeckManager.jsx
### Hooks
- useRequireAuth.jsx
### Core
- App.jsx - Route constants integration
- HandleNavigate.jsx - Enhanced with 20+ navigation functions
## Key Improvements
Type-safe navigation (goDeckDetails(id) vs navigate('/deck/'+id))
Automatic scroll management
Centralized state passing
Single source of truth for routes
Backwards compatibility aliases
Zero compile errors
Production ready
## Validation
- useNavigate: Only in HandleNavigate.jsx
- navigate() calls: 0 direct usage
- Compile errors: 0
- Documentation: Complete
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { useState, useEffect } from "react"
|
||||
import { BrowserRouter as Router, Route, Routes } from "react-router-dom"
|
||||
import { ROUTES } from "./utils/routes"
|
||||
import AuthRegister from "./pages/Auth/AuthRegister"
|
||||
import AuthLogin from "./pages/Auth/AuthLogin"
|
||||
import Test from "./pages/Testing/Test"
|
||||
@@ -53,27 +54,27 @@ function App() {
|
||||
<>
|
||||
<Router>
|
||||
<Routes>
|
||||
<Route path="/verify-email" element={<VerifyEmailPage />} />
|
||||
<Route path="/about" element={<About />} />
|
||||
<Route path="/lobby" element={<Lobby />} />
|
||||
<Route path="/register" element={<AuthRegister />} />
|
||||
<Route path="/login" element={<AuthLogin />} />
|
||||
<Route path="/forgot-password" element={<ForgotPassword />} />
|
||||
<Route path="/reset-password" element={<ResetPassword />} />
|
||||
<Route path="/profile" element={<ProfileCard />} />
|
||||
<Route path="/test" element={<Test />} />
|
||||
<Route path="/" element={<Landingpage />} />
|
||||
<Route path="/home" element={<Home />} />
|
||||
<Route path="/decks" element={<DeckManagerPage />} />
|
||||
<Route path="/deck/:deckId" element={<Card_display />} />
|
||||
<Route path="/deck-creator" element={<DeckCreator />} />
|
||||
<Route path="/deck-creator/:deckId" element={<DeckCreator />} />
|
||||
<Route path="/game" element={<GameScreen />} />
|
||||
<Route path="/game-test" element={<GameTest />} />
|
||||
{/* <Route path="/contacts" element={<CompanyHub />} /> */}
|
||||
<Route path="/report" element={<Reports />} />
|
||||
<Route path="/choosedeck" element={<ChooseDeck />} />
|
||||
<Route path="/playersetup" element={<PlayerSetup />} />
|
||||
<Route path={ROUTES.VERIFY_EMAIL} element={<VerifyEmailPage />} />
|
||||
<Route path={ROUTES.ABOUT} element={<About />} />
|
||||
<Route path={ROUTES.LOBBY} element={<Lobby />} />
|
||||
<Route path={ROUTES.REGISTER} element={<AuthRegister />} />
|
||||
<Route path={ROUTES.LOGIN} element={<AuthLogin />} />
|
||||
<Route path={ROUTES.FORGOT_PASSWORD} element={<ForgotPassword />} />
|
||||
<Route path={ROUTES.RESET_PASSWORD} element={<ResetPassword />} />
|
||||
<Route path={ROUTES.PROFILE} element={<ProfileCard />} />
|
||||
<Route path={ROUTES.TEST} element={<Test />} />
|
||||
<Route path={ROUTES.ROOT} element={<Landingpage />} />
|
||||
<Route path={ROUTES.HOME} element={<Home />} />
|
||||
<Route path={ROUTES.DECKS} element={<DeckManagerPage />} />
|
||||
<Route path={ROUTES.DECK_DETAILS} element={<Card_display />} />
|
||||
<Route path={ROUTES.DECK_CREATOR} element={<DeckCreator />} />
|
||||
<Route path={ROUTES.DECK_CREATOR_EDIT} element={<DeckCreator />} />
|
||||
<Route path={ROUTES.GAME} element={<GameScreen />} />
|
||||
<Route path={ROUTES.GAME_TEST} element={<GameTest />} />
|
||||
{/* <Route path={ROUTES.CONTACTS} element={<CompanyHub />} /> */}
|
||||
<Route path={ROUTES.REPORTS} element={<Reports />} />
|
||||
<Route path={ROUTES.CHOOSE_DECK} element={<ChooseDeck />} />
|
||||
<Route path={ROUTES.PLAYER_SETUP} element={<PlayerSetup />} />
|
||||
</Routes>
|
||||
</Router>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user