"use client"; import { Play } from "lucide-react"; import Image from "next/image"; import { useEffect, useRef, useState } from "react"; import type { Device, ShowcaseAssets } from "@/lib/project-showcase"; const deviceLabel: Record = { desktop: "no computador", mobile: "no celular", }; /** * Pôster com um botão de play. O vídeo só é montado, e só baixa, quando a pessoa aperta o botão: * antes disso a página mostra a imagem do site, não um vídeo parado em 0:00 com controles do navegador. * Vai dentro de um quadro com `position: relative` (moldura de navegador ou de celular) que dá o tamanho. * `sizes` segue a grade de CaseMedia: a coluna da esquerda de um bloco de até 1040 px (88 vw da página abaixo de 1182 px) * com a moldura do celular ao lado (220 px mais 32 px de vão); abaixo de 768 px, a largura da página menos 40 px. */ export function CasePlayer({ assets, title, device, sizes = "(min-width: 1182px) 788px, (min-width: 768px) calc(88vw - 252px), calc(100vw - 40px)", }: { assets: ShowcaseAssets; title: string; device: Device; sizes?: string; }) { const [playing, setPlaying] = useState(false); const videoRef = useRef(null); // o botão sai de cena ao tocar: o foco vai para o vídeo, para quem usa o teclado não o perder useEffect(() => { if (playing) videoRef.current?.focus(); }, [playing]); if (playing) { return ( ); } return ( <> {/* o quadro do celular já mostra o pôster como fundo; no computador a imagem entra aqui */} {device === "desktop" ? ( ) : null} ); }