diff --git a/apps/web/src/components/AppNavBar.tsx b/apps/web/src/components/AppNavBar.tsx index 1ce7082f..e9e07cd5 100644 --- a/apps/web/src/components/AppNavBar.tsx +++ b/apps/web/src/components/AppNavBar.tsx @@ -10,6 +10,7 @@ import { css } from '../../styled-system/css' import { container, hstack } from '../../styled-system/patterns' import { Z_INDEX } from '../constants/zIndex' import { useFullscreen } from '../contexts/FullscreenContext' +import { useTheme } from '../contexts/ThemeContext' import { getRandomSubtitle } from '../data/abaciOneSubtitles' import { AbacusDisplayDropdown } from './AbacusDisplayDropdown' import { LanguageSelector } from './LanguageSelector' @@ -57,6 +58,7 @@ function MenuContent({ onNavigate, handleNestedDropdownChange, isMobile, + resolvedTheme, }: { isFullscreen: boolean isArcadePage: boolean @@ -66,14 +68,17 @@ function MenuContent({ onNavigate?: () => void handleNestedDropdownChange?: (isOpen: boolean) => void isMobile?: boolean + resolvedTheme?: 'light' | 'dark' }) { + const isDark = resolvedTheme === 'dark' + const linkStyle = { display: 'flex', alignItems: 'center', gap: '10px', padding: '10px 14px', borderRadius: '8px', - color: 'rgba(209, 213, 219, 1)', + color: isDark ? 'rgba(209, 213, 219, 1)' : 'rgba(55, 65, 81, 1)', fontSize: '14px', fontWeight: '500', textDecoration: 'none', @@ -82,14 +87,14 @@ function MenuContent({ const separatorStyle = { height: '1px', - background: 'rgba(75, 85, 99, 0.5)', + background: isDark ? 'rgba(75, 85, 99, 0.5)' : 'rgba(229, 231, 235, 0.8)', margin: '6px 0', } const sectionHeaderStyle = { fontSize: '10px', fontWeight: '600', - color: 'rgba(196, 181, 253, 0.7)', + color: isDark ? 'rgba(196, 181, 253, 0.7)' : 'rgba(139, 92, 246, 0.7)', marginBottom: '6px', marginLeft: '12px', marginTop: '6px', @@ -118,12 +123,14 @@ function MenuContent({ } style={linkStyle} onMouseEnter={(e) => { - e.currentTarget.style.background = 'rgba(139, 92, 246, 0.2)' - e.currentTarget.style.color = 'rgba(196, 181, 253, 1)' + e.currentTarget.style.background = isDark + ? 'rgba(139, 92, 246, 0.2)' + : 'rgba(139, 92, 246, 0.1)' + e.currentTarget.style.color = isDark ? 'rgba(196, 181, 253, 1)' : 'rgba(109, 40, 217, 1)' }} onMouseLeave={(e) => { e.currentTarget.style.background = 'transparent' - e.currentTarget.style.color = 'rgba(209, 213, 219, 1)' + e.currentTarget.style.color = isDark ? 'rgba(209, 213, 219, 1)' : 'rgba(55, 65, 81, 1)' }} > {icon} @@ -338,6 +345,7 @@ function HamburgerMenu({ const [open, setOpen] = useState(false) const [nestedDropdownOpen, setNestedDropdownOpen] = useState(false) const [isMobile, setIsMobile] = useState(false) + const { resolvedTheme } = useTheme() // Detect mobile viewport React.useEffect(() => { @@ -406,7 +414,9 @@ function HamburgerMenu({ position: 'fixed', inset: 0, background: - 'linear-gradient(135deg, rgba(17, 24, 39, 0.97), rgba(31, 41, 55, 0.97))', + resolvedTheme === 'dark' + ? 'linear-gradient(135deg, rgba(17, 24, 39, 0.97), rgba(31, 41, 55, 0.97))' + : 'linear-gradient(135deg, rgba(249, 250, 251, 0.97), rgba(243, 244, 246, 0.97))', backdropFilter: 'blur(12px)', zIndex: Z_INDEX.GAME_NAV.HAMBURGER_MENU, overflowY: 'auto', @@ -420,6 +430,46 @@ function HamburgerMenu({ } }} > + {/* Close button */} + + @@ -520,6 +571,7 @@ function HamburgerMenu({ router={router} handleNestedDropdownChange={handleNestedDropdownChange} isMobile={false} + resolvedTheme={resolvedTheme} />