Skip to content

Commit bc69908

Browse files
committed
feat: fix mobile view
1 parent 84c8fb8 commit bc69908

File tree

2 files changed

+48
-1
lines changed

2 files changed

+48
-1
lines changed

app/layout.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { Metadata } from 'next'
22
import { Inter } from 'next/font/google'
33
import './globals.css'
4+
import { MobileDetector } from '../components/MobileDetector'
45

56
const inter = Inter({ subsets: ['latin'] })
67

@@ -16,7 +17,10 @@ export default function RootLayout({
1617
}) {
1718
return (
1819
<html lang="en">
19-
<body className={inter.className}>{children}</body>
20+
<body className={inter.className}>
21+
<MobileDetector />
22+
{children}
23+
</body>
2024
</html>
2125
)
2226
}

components/MobileDetector.tsx

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
'use client'
2+
3+
import { useEffect, useState } from 'react'
4+
5+
export function MobileDetector() {
6+
const [isMobile, setIsMobile] = useState(false)
7+
8+
useEffect(() => {
9+
const checkMobile = () => {
10+
const userAgent = navigator.userAgent.toLowerCase()
11+
const isMobileDevice = /mobile|android|iphone|ipad|phone|tablet/i.test(userAgent)
12+
const isSmallScreen = window.innerWidth < 768
13+
setIsMobile(isMobileDevice || isSmallScreen)
14+
}
15+
16+
checkMobile()
17+
window.addEventListener('resize', checkMobile)
18+
19+
return () => window.removeEventListener('resize', checkMobile)
20+
}, [])
21+
22+
if (!isMobile) return null
23+
24+
return (
25+
<div className="fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-90 text-white">
26+
<div className="text-center p-8 max-w-md">
27+
<div className="text-6xl mb-4">🖥️</div>
28+
<h1 className="text-2xl font-bold mb-4">Desktop Only</h1>
29+
<p className="text-lg mb-6">
30+
Crypto Racer is designed for desktop computers. Please open this app on a desktop or laptop for the best gaming experience.
31+
</p>
32+
<div className="text-sm text-gray-300">
33+
<p>Mobile devices are not supported due to:</p>
34+
<ul className="mt-2 space-y-1">
35+
<li>• Complex keyboard controls</li>
36+
<li>• Performance requirements</li>
37+
<li>• Screen size limitations</li>
38+
</ul>
39+
</div>
40+
</div>
41+
</div>
42+
)
43+
}

0 commit comments

Comments
 (0)