|
import { Button } from "@/components/ui/button"; |
|
import { motion } from "framer-motion"; |
|
import { useState } from "react"; |
|
import { HighScoreBoard } from "../HighScoreBoard"; |
|
import { Dialog, DialogContent } from "@/components/ui/dialog"; |
|
|
|
interface WelcomeScreenProps { |
|
onStart: () => void; |
|
} |
|
|
|
export const WelcomeScreen = ({ onStart }: WelcomeScreenProps) => { |
|
const [showHighScores, setShowHighScores] = useState(false); |
|
|
|
return ( |
|
<> |
|
<motion.div |
|
initial={{ opacity: 0 }} |
|
animate={{ opacity: 1 }} |
|
className="text-center" |
|
> |
|
<h1 className="mb-6 text-4xl font-bold text-gray-900">Think in Sync</h1> |
|
<p className="mb-8 text-gray-600"> |
|
This game is a variation of a classical childrens game. |
|
You will be given a secret word. Your goal is to describe this secret word so that an AI can guess it. |
|
However, you are only allowed to say one word at the time, taking turns with another AI. |
|
</p> |
|
<div className="space-y-4"> |
|
<Button |
|
onClick={onStart} |
|
className="w-full bg-primary text-lg hover:bg-primary/90" |
|
> |
|
Start Game β |
|
</Button> |
|
<Button |
|
onClick={() => setShowHighScores(true)} |
|
variant="outline" |
|
className="w-full text-lg" |
|
> |
|
View Leaderboard π |
|
</Button> |
|
</div> |
|
</motion.div> |
|
|
|
<Dialog open={showHighScores} onOpenChange={setShowHighScores}> |
|
<DialogContent className="max-h-[90vh] overflow-y-auto sm:max-w-[600px]"> |
|
<HighScoreBoard |
|
currentScore={0} |
|
avgWordsPerRound={0} |
|
onClose={() => setShowHighScores(false)} |
|
onPlayAgain={onStart} |
|
/> |
|
</DialogContent> |
|
</Dialog> |
|
</> |
|
); |
|
}; |
|
|