puzzle-trainer/app/zip/[date]/page.tsx
2026-05-23 01:05:21 +00:00

31 lines
1.2 KiB
TypeScript

"use client";
import { useState, useEffect } from "react";
import { useParams } from "next/navigation";
import { generateZip, zipSizeForDate, ZipPuzzle } from "@/lib/generators/zip";
import ZipBoard from "@/components/ZipBoard";
import Link from "next/link";
export default function ZipDatePage() {
const { date } = useParams<{ date: string }>();
const [puzzle, setPuzzle] = useState<ZipPuzzle | null>(null);
useEffect(() => { setPuzzle(generateZip(date, zipSizeForDate(date))); }, [date]);
return (
<div className="flex flex-col items-center gap-8">
<div className="text-center">
<h1 className="text-2xl font-bold text-gray-900 tracking-tight">Zip</h1>
<p className="text-sm text-gray-400 mt-1">{date}</p>
</div>
{puzzle ? (
<ZipBoard key={date} puzzle={puzzle} date={date} />
) : (
<div className="py-20 text-gray-300 text-sm">Chargement</div>
)}
<div className="flex gap-4 text-sm">
<Link href="/zip" className="text-gray-500 hover:text-gray-900 transition-colors"> Aujourd&apos;hui</Link>
<Link href="/archive?game=zip" className="text-gray-400 hover:text-gray-700 transition-colors">Archives</Link>
</div>
</div>
);
}