stillerman's picture
stillerman HF Staff
update github url
6dade58
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>
);
}