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
@@ -106,6 +106,19 @@ describe("what the layout mounts", () => {
|
||||
expect(serviceHubLinks.length).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
it("gives the footer wrapper and the content the ids the mobile menu makes inert", () => {
|
||||
const html = markup();
|
||||
|
||||
expect(html).toMatch(
|
||||
/<div id="main-content"[^>]*>(?:(?!<\/div>).)*conteúdo/,
|
||||
);
|
||||
expect(html).toMatch(
|
||||
/<div id="site-footer" class="relative z-10"><footer data-testid="footer"/,
|
||||
);
|
||||
// o botão flutuante fica fora dos dois: ele tem a própria região (<aside>)
|
||||
expect(html.match(/id="site-footer"/g)).toHaveLength(1);
|
||||
});
|
||||
|
||||
it("gives the header and the button the service and case names, and only names", () => {
|
||||
markup();
|
||||
|
||||
@@ -131,6 +144,15 @@ describe("what the layout mounts", () => {
|
||||
});
|
||||
|
||||
describe("fonts", () => {
|
||||
it("does not preload Geist Mono (only small labels use it), while the display font keeps its preload", () => {
|
||||
const source = readFileSync(join(__dirname, "layout.tsx"), "utf8");
|
||||
|
||||
const mono = source.match(/Geist_Mono\(\{[^}]*\}\)/)?.[0] ?? "";
|
||||
expect(mono).toMatch(/preload:\s*false/);
|
||||
const display = source.match(/Space_Grotesk\(\{[^}]*\}\)/)?.[0] ?? "";
|
||||
expect(display).not.toMatch(/preload:\s*false/);
|
||||
});
|
||||
|
||||
it("no longer loads the unused Monument Extended font", () => {
|
||||
const source = readFileSync(join(__dirname, "layout.tsx"), "utf8");
|
||||
|
||||
|
||||
Reference in new issue
Block a user