Spaces:
Runtime error
Runtime error
| import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; | |
| import ViewerTab from "@/components/viewer-tab"; | |
| import PlayTab from "@/components/play-tab"; | |
| import AboutTab from "@/components/about-tab"; | |
| import { SignInWithHuggingFaceButton } from "@/components/sign-in-with-hf-button"; | |
| import { Github } from "lucide-react"; | |
| import { useState, useEffect } from "react"; | |
| export default function Home() { | |
| const [selectedTab, setSelectedTab] = useState<"view" | "play" | "about">("view"); | |
| const [startArticle, setStartArticle] = useState<string>(""); | |
| const [destinationArticle, setDestinationArticle] = useState<string>(""); | |
| const [isSmallScreen, setIsSmallScreen] = useState<boolean>(false); | |
| useEffect(() => { | |
| const checkScreenSize = () => { | |
| setIsSmallScreen(window.innerWidth < 768); | |
| }; | |
| // Check on initial load | |
| checkScreenSize(); | |
| // Add resize listener | |
| window.addEventListener('resize', checkScreenSize); | |
| // Clean up | |
| return () => window.removeEventListener('resize', checkScreenSize); | |
| }, []); | |
| const handleTryRun = (startArticle: string, destinationArticle: string) => { | |
| console.log("Trying run from", startArticle, "to", destinationArticle); | |
| setSelectedTab("play"); | |
| setStartArticle(startArticle); | |
| setDestinationArticle(destinationArticle); | |
| }; | |
| return ( | |
| <div className="container mx-auto p-4"> | |
| {isSmallScreen && ( | |
| <div className="bg-yellow-100 border-l-4 border-yellow-500 text-yellow-700 p-4 mb-4 rounded shadow"> | |
| <p className="font-bold">Warning:</p> | |
| <p>This application doesn't work well on small screens. Please use a desktop for the best experience.</p> | |
| </div> | |
| )} | |
| <div className="flex flex-row justify-between items-center"> | |
| <h1 className="text-3xl font-bold mb-6">WikiRacing Language Models</h1> | |
| <div className="flex items-center gap-4"> | |
| <a | |
| href="https://github.com/huggingface/wikirace-llms" | |
| target="_blank" | |
| rel="noopener noreferrer" | |
| className="text-gray-700 hover:text-gray-900" | |
| > | |
| <Github size={24} /> | |
| </a> | |
| <SignInWithHuggingFaceButton /> | |
| </div> | |
| </div> | |
| <Tabs defaultValue="view" className="w-full" onValueChange={(value) => setSelectedTab(value as "view" | "play")} value={selectedTab}> | |
| <TabsList className="mb-4"> | |
| <TabsTrigger value="view">View Runs</TabsTrigger> | |
| <TabsTrigger value="play">Play Game</TabsTrigger> | |
| <TabsTrigger value="about">About</TabsTrigger> | |
| </TabsList> | |
| <TabsContent value="view"> | |
| <ViewerTab handleTryRun={handleTryRun} /> | |
| </TabsContent> | |
| <TabsContent value="play"> | |
| <PlayTab startArticle={startArticle} destinationArticle={destinationArticle} /> | |
| </TabsContent> | |
| <TabsContent value="about"> | |
| <AboutTab /> | |
| </TabsContent> | |
| </Tabs> | |
| </div> | |
| ); | |
| } | |