"use client";
import Image from "next/image";
import { useId, useState } from "react";
import { pageTop, primaryButton } from "@/app/components/button-styles";
import {
AREAS,
type AreaId,
problemaPorId,
problemasDaArea,
} from "@/lib/jogo/problemas";
import type { Dificuldade } from "@/lib/jogo/tipos";
import type { Escolha } from "./contrato";
type Props = {
aoComecar(escolha: Escolha): void;
toque: boolean;
movimentoReduzido: boolean;
semWebgl: boolean;
};
const ORDEM = Object.keys(AREAS) as AreaId[];
const NIVEIS: readonly { id: Dificuldade; nome: string; linha: string }[] = [
{
id: "facil",
nome: "Fácil",
linha: "Zumbis lentos, poucos e de dano baixo. Bom para a primeira vez.",
},
{
id: "normal",
nome: "Normal",
linha: "Zumbis em velocidade, quantidade e dano normais.",
},
{
id: "dificil",
nome: "Difícil",
linha: "Zumbis mais rápidos, mais numerosos e que machucam mais.",
},
];
// Botão de opção com cara de ficha: o rádio fica só para leitor de tela e teclado; o quadrado cheio marca a escolha
// sem depender só da cor.
const ficha =
"group flex min-h-11 cursor-pointer items-center gap-sp-3 border border-white/20 bg-[rgba(10,10,10,.86)] px-sp-3 py-sp-2 text-[15px] leading-[1.3] transition-colors duration-200 hover:border-white/50 has-[:checked]:border-[var(--slash)] has-[:checked]:bg-[var(--slash-dim)] has-[:focus-visible]:outline-2 has-[:focus-visible]:outline-offset-2 has-[:focus-visible]:outline-[var(--slash)] motion-reduce:transition-none";
function Marca() {
return (
);
}
const rotulo = "text-[15px] font-semibold leading-[1.3]";
const secundario = "text-[rgba(244,242,237,.72)]";
export default function Inicio({
aoComecar,
toque,
movimentoReduzido,
semWebgl,
}: Props) {
const [problemaId, setProblemaId] = useState(null);
const [dificuldade, setDificuldade] = useState("facil");
// sanfona do celular; no computador todas as áreas ficam abertas
const [abertas, setAbertas] = useState([ORDEM[0]]);
const [capaPronta, setCapaPronta] = useState(false);
const base = useId();
const motivo = `${base}-motivo`;
const escolhido = problemaId ? problemaPorId(problemaId) : undefined;
const nivel = NIVEIS.find((n) => n.id === dificuldade) ?? NIVEIS[0];
return (
{/* Capa decorativa (public/jogo/capa.jpg), escurecida até --ink. Entra com fade a partir de opacidade zero, como o
pôster do hero: o título continua o maior elemento pintado primeiro (LCP), e sem o arquivo a faixa fica só escura. */}