feat(home): ofertas que vendem o título, WhatsApp no hero e menu do celular acessível
Três ofertas (site que traz pedidos pelo WhatsApp, sistema para tirar a operação da planilha, revisão de sistema existente) com miniatura e formulário com o tipo escolhido; botão principal do hero abre o WhatsApp; moldura da SEV no hero do celular; menu fecha ao navegar, Esc, foco preso incluindo a barra de cookies e espaço para ela; CinematicHome como componente de servidor com ilha cliente; /ia com H1 de oferta e cartão do que você recebe; botão flutuante em aside com transform; AVIF antes de WebP; copy sem repetir contato direto.
This commit is contained in:
1 parent
de6af74a0c
commit
f8545cd442
44 files changed
+2286
-571
No files matched your search
@@ -213,8 +213,8 @@ describe("Header", () => {
|
||||
expect(headerLinks[3]).toHaveAttribute("data-prefetch", "null");
|
||||
});
|
||||
|
||||
it("sends the header button to the home form on the home and on other pages", () => {
|
||||
for (const pathname of ["/", "/cases", "/ia", "/servicos"]) {
|
||||
it("sends the header button to the home form on the home and on pages without a subject", () => {
|
||||
for (const pathname of ["/", "/privacidade"]) {
|
||||
jest.mocked(usePathname).mockReturnValue(pathname);
|
||||
const { unmount } = render(<Header whatsAppContexts={contexts} />);
|
||||
|
||||
@@ -227,6 +227,32 @@ describe("Header", () => {
|
||||
}
|
||||
});
|
||||
|
||||
it.each([
|
||||
["/ia", "Quero conversar sobre a revisão de um aplicativo feito com IA."],
|
||||
[
|
||||
"/cases",
|
||||
"Quero conversar sobre um projeto parecido com os cases do portfólio.",
|
||||
],
|
||||
["/servicos", "Quero conversar sobre Sites, sistemas e aplicativos."],
|
||||
[
|
||||
"/curriculo",
|
||||
"Quero conversar sobre um projeto, depois de ver o seu currículo.",
|
||||
],
|
||||
])(
|
||||
"opens WhatsApp with the page subject in the header button on %s",
|
||||
(pathname, sentence) => {
|
||||
jest.mocked(usePathname).mockReturnValue(pathname);
|
||||
render(<Header whatsAppContexts={contexts} />);
|
||||
|
||||
const contact = screen.getByRole("link", {
|
||||
name: "Falar sobre meu projeto",
|
||||
});
|
||||
expect(contact.getAttribute("href")).toMatch(/^https:\/\/wa\.me\/\d+\?/);
|
||||
expect(contact).toHaveAttribute("target", "_blank");
|
||||
expect(whatsAppHref(contact)).toContain(sentence);
|
||||
},
|
||||
);
|
||||
|
||||
it("opens WhatsApp with the service in the header button on a service page", () => {
|
||||
jest.mocked(usePathname).mockReturnValue("/servicos/criacao-de-sites");
|
||||
render(<Header whatsAppContexts={contexts} />);
|
||||
@@ -252,7 +278,7 @@ describe("Header", () => {
|
||||
expect(buttons).toHaveLength(2);
|
||||
for (const button of buttons) {
|
||||
expect(whatsAppHref(button)).toContain(
|
||||
"Quero conversar sobre um projeto parecido com o da SEV Moda Íntima.",
|
||||
"Quero conversar sobre um projeto parecido com o SEV Moda Íntima.",
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user