From 54ff20c7555e028b50471ac83a7030921c76f43b Mon Sep 17 00:00:00 2001 From: Thomas Hallock Date: Mon, 29 Sep 2025 11:51:59 -0500 Subject: [PATCH] refactor: completely remove @nav parallel routes and simplify navigation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove entire src/app/@nav directory and all parallel route files - Delete complex AppNav component that handled route-based nav detection - Update layout.tsx to remove nav slot parameter entirely - Create simple PageWithNav component that takes title/emoji as props - Update matching and memory-quiz games to use PageWithNav directly - Each page now controls its own navigation - dead simple and direct This eliminates the over-engineered parallel routes approach in favor of straightforward React prop passing. Much easier to understand and maintain. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- apps/web/src/app/@nav/create/page.tsx | 3 -- apps/web/src/app/@nav/default.tsx | 3 -- apps/web/src/app/@nav/games/matching/page.tsx | 14 ----- .../src/app/@nav/games/memory-quiz/page.tsx | 14 ----- apps/web/src/app/@nav/games/page.tsx | 3 -- apps/web/src/app/@nav/guide/page.tsx | 3 -- apps/web/src/app/@nav/page.tsx | 3 -- apps/web/src/app/games/matching/page.tsx | 9 ++-- apps/web/src/app/games/memory-quiz/page.tsx | 12 +++-- apps/web/src/app/layout.tsx | 4 -- apps/web/src/components/AppNav.tsx | 52 ------------------- apps/web/src/components/PageWithNav.tsx | 33 ++++++++++++ 12 files changed, 46 insertions(+), 107 deletions(-) delete mode 100644 apps/web/src/app/@nav/create/page.tsx delete mode 100644 apps/web/src/app/@nav/default.tsx delete mode 100644 apps/web/src/app/@nav/games/matching/page.tsx delete mode 100644 apps/web/src/app/@nav/games/memory-quiz/page.tsx delete mode 100644 apps/web/src/app/@nav/games/page.tsx delete mode 100644 apps/web/src/app/@nav/guide/page.tsx delete mode 100644 apps/web/src/app/@nav/page.tsx delete mode 100644 apps/web/src/components/AppNav.tsx create mode 100644 apps/web/src/components/PageWithNav.tsx diff --git a/apps/web/src/app/@nav/create/page.tsx b/apps/web/src/app/@nav/create/page.tsx deleted file mode 100644 index 44b9715f..00000000 --- a/apps/web/src/app/@nav/create/page.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export default function CreateNav() { - return null -} \ No newline at end of file diff --git a/apps/web/src/app/@nav/default.tsx b/apps/web/src/app/@nav/default.tsx deleted file mode 100644 index 867b896c..00000000 --- a/apps/web/src/app/@nav/default.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export default function DefaultNav() { - return null // No navigation content for routes without specific @nav slots -} \ No newline at end of file diff --git a/apps/web/src/app/@nav/games/matching/page.tsx b/apps/web/src/app/@nav/games/matching/page.tsx deleted file mode 100644 index 9141cf32..00000000 --- a/apps/web/src/app/@nav/games/matching/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -export default function MatchingNav() { - return ( -

- 🧩 Memory Pairs -

- ) -} \ No newline at end of file diff --git a/apps/web/src/app/@nav/games/memory-quiz/page.tsx b/apps/web/src/app/@nav/games/memory-quiz/page.tsx deleted file mode 100644 index 19c76ad7..00000000 --- a/apps/web/src/app/@nav/games/memory-quiz/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -export default function MemoryQuizNav() { - return ( -

- 🧠 Memory Lightning -

- ) -} \ No newline at end of file diff --git a/apps/web/src/app/@nav/games/page.tsx b/apps/web/src/app/@nav/games/page.tsx deleted file mode 100644 index bbdf8a2a..00000000 --- a/apps/web/src/app/@nav/games/page.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export default function GamesNav() { - return null -} \ No newline at end of file diff --git a/apps/web/src/app/@nav/guide/page.tsx b/apps/web/src/app/@nav/guide/page.tsx deleted file mode 100644 index 32196175..00000000 --- a/apps/web/src/app/@nav/guide/page.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export default function GuideNav() { - return null -} \ No newline at end of file diff --git a/apps/web/src/app/@nav/page.tsx b/apps/web/src/app/@nav/page.tsx deleted file mode 100644 index 9be08d2d..00000000 --- a/apps/web/src/app/@nav/page.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export default function HomeNav() { - return null -} \ No newline at end of file diff --git a/apps/web/src/app/games/matching/page.tsx b/apps/web/src/app/games/matching/page.tsx index d32aa1a6..95e3805f 100644 --- a/apps/web/src/app/games/matching/page.tsx +++ b/apps/web/src/app/games/matching/page.tsx @@ -1,10 +1,13 @@ +import { PageWithNav } from '@/components/PageWithNav' import { MemoryPairsProvider } from './context/MemoryPairsContext' import { MemoryPairsGame } from './components/MemoryPairsGame' export default function MatchingPage() { return ( - - - + + + + + ) } \ No newline at end of file diff --git a/apps/web/src/app/games/memory-quiz/page.tsx b/apps/web/src/app/games/memory-quiz/page.tsx index 379d57dc..b5abdc2b 100644 --- a/apps/web/src/app/games/memory-quiz/page.tsx +++ b/apps/web/src/app/games/memory-quiz/page.tsx @@ -6,7 +6,7 @@ import { css } from '../../../../styled-system/css' import { AbacusReact } from '@soroban/abacus-react' import { useAbacusConfig } from '@soroban/abacus-react' import { isPrefix } from '../../../lib/memory-quiz-utils' -import { StandardGameLayout } from '../../../components/StandardGameLayout' +import { PageWithNav } from '@/components/PageWithNav' interface QuizCard { @@ -1733,7 +1733,7 @@ export default function MemoryQuizPage() { }, [state.prefixAcceptanceTimeout]) return ( - +