From 1ff9695f6930f5232b2ad80ddcbd32bbc182d4e7 Mon Sep 17 00:00:00 2001 From: Thomas Hallock Date: Tue, 30 Sep 2025 14:15:32 -0500 Subject: [PATCH] feat: create mode selection landing page for Complement Race MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Transform /games/complement-race into a beautiful mode selection page with three interactive cards: - Practice Mode (🏁) - Race to 20 correct answers - Steam Sprint (🚂) - 60-second momentum challenge - Survival Mode (🔄) - Endless circular race Features gradient title, responsive grid layout, and smooth hover effects (translateY + box-shadow). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../src/app/games/complement-race/page.tsx | 128 +++++++++++++++++- 1 file changed, 123 insertions(+), 5 deletions(-) diff --git a/apps/web/src/app/games/complement-race/page.tsx b/apps/web/src/app/games/complement-race/page.tsx index 26bb5055..3946e45d 100644 --- a/apps/web/src/app/games/complement-race/page.tsx +++ b/apps/web/src/app/games/complement-race/page.tsx @@ -1,15 +1,133 @@ 'use client' +import Link from 'next/link' import { PageWithNav } from '@/components/PageWithNav' -import { ComplementRaceProvider } from './context/ComplementRaceContext' -import { ComplementRaceGame } from './components/ComplementRaceGame' export default function ComplementRacePage() { return ( - - - +
+
+

+ Speed Complement Race +

+

+ Master complement pairs by racing against AI opponents! +

+

+ Choose your challenge below: +

+
+ +
+ {/* Practice Mode */} + { + e.currentTarget.style.transform = 'translateY(-4px)' + e.currentTarget.style.boxShadow = '0 8px 20px rgba(0, 0, 0, 0.15)' + }} + onMouseLeave={(e) => { + e.currentTarget.style.transform = 'translateY(0)' + e.currentTarget.style.boxShadow = '0 4px 12px rgba(0, 0, 0, 0.1)' + }}> +
🏁
+

Practice Mode

+

Race to 20 correct answers. Perfect for building speed and accuracy!

+ + + {/* Steam Sprint */} + { + e.currentTarget.style.transform = 'translateY(-4px)' + e.currentTarget.style.boxShadow = '0 8px 20px rgba(0, 0, 0, 0.15)' + }} + onMouseLeave={(e) => { + e.currentTarget.style.transform = 'translateY(0)' + e.currentTarget.style.boxShadow = '0 4px 12px rgba(0, 0, 0, 0.1)' + }}> +
🚂
+

Steam Sprint

+

Keep your train moving for 60 seconds! Momentum-based challenge with passengers.

+ + + {/* Survival Mode */} + { + e.currentTarget.style.transform = 'translateY(-4px)' + e.currentTarget.style.boxShadow = '0 8px 20px rgba(0, 0, 0, 0.15)' + }} + onMouseLeave={(e) => { + e.currentTarget.style.transform = 'translateY(0)' + e.currentTarget.style.boxShadow = '0 4px 12px rgba(0, 0, 0, 0.1)' + }}> +
🔄
+

Survival Mode

+

Endless circular race! See how many laps you can complete before the AI catches up.

+ +
+
) } \ No newline at end of file