O botão das ofertas rola até o contato com o tipo marcado e não quebra mais as âncoras; ofertas com o que você recebe e primeiro passo, logo depois da vitrine; bloco de IA fora da home; cartão largo da SEV no hero do celular; separador da faixa de clientes só entre itens; favicon de 13 para 1,8 KB; pré-carregamento só no hover e nunca de /#... fora da home; X do menu e cabeçalho opaco; WhatsApp com "o case"; /ia com 3 passos e modelo de relatório ilustrativo; Sobre alinhado ao currículo; CSP Report-Only com os domínios do Ads.
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
"use client";
|
|
|
|
import type { PortfolioProjectView } from "@/lib/portfolio-data";
|
|
import { secondaryButtonDark } from "./button-styles";
|
|
import HoverPrefetchLink from "./HoverPrefetchLink";
|
|
import { Section } from "./Section";
|
|
import { ProjectReel } from "./showcase/ProjectReel";
|
|
import { ShowcaseProvider } from "./showcase/ShowcaseProvider";
|
|
|
|
/** Vitrine única da home: recebe só projetos de cliente (o filtro vem de app/page.tsx). */
|
|
export default function Projects({
|
|
projects,
|
|
}: {
|
|
projects: PortfolioProjectView[];
|
|
}) {
|
|
return (
|
|
<Section
|
|
id="projects"
|
|
eyebrow="Projetos"
|
|
title="Veja o que já saiu do papel."
|
|
description="Projetos feitos para empresas. Abra um case para entender o problema, a solução e as decisões por trás da interface."
|
|
dark
|
|
disableChildrenAnimation
|
|
>
|
|
<ShowcaseProvider projects={projects}>
|
|
<ProjectReel />
|
|
</ShowcaseProvider>
|
|
|
|
<div className="mt-sp-8" data-reel-stagger="left">
|
|
<HoverPrefetchLink href="/cases" className={secondaryButtonDark}>
|
|
Ver os cases
|
|
</HoverPrefetchLink>
|
|
</div>
|
|
</Section>
|
|
);
|
|
}
|