feat(servicos): ofertas no topo de /servicos, capa por assunto e diagramas
/servicos abre com as 3 ofertas e depois outros serviços; H1 de criação de sites e de engenharia com o nome da oferta; capa de cada serviço pelo assunto (SEV fora do próprio case cai de ~11 para 2 imagens); diagrama de fluxo em SVG nos serviços sem case; cases com o que o cliente passou a poder fazer e contato logo depois de Como ficou; FAQ num componente só; lastmod por rota; ProfessionalService com areaServed.
This commit is contained in:
1 parent
e63f3c2ebd
commit
fc44a69fb3
41 files changed
+2486
-550
No files matched your search
+34
-12
@@ -1,22 +1,44 @@
|
||||
import type { MetadataRoute } from "next";
|
||||
import { caseStudies, servicePages, siteUrl } from "@/lib/site-content";
|
||||
import {
|
||||
caseStudies,
|
||||
pageUpdatedAt,
|
||||
servicePages,
|
||||
siteUrl,
|
||||
} from "@/lib/site-content";
|
||||
|
||||
/** Data fixa da última mudança de conteúdo; o sitemap precisa ser igual a cada build. Atualize quando as páginas mudarem. */
|
||||
const lastModified = new Date("2026-10-14T00:00:00Z");
|
||||
/**
|
||||
* `lastmod` de cada rota: a data de mudança do conteúdo dela (`updatedAt` do serviço ou do case, `pageUpdatedAt` nas
|
||||
* páginas fixas), sempre a mesma a cada build. Não vem do relógio nem do git, que mudariam sem o texto mudar.
|
||||
* Atualize a data quando o texto da página mudar.
|
||||
*/
|
||||
function dateOf(day: string) {
|
||||
return new Date(`${day}T00:00:00Z`);
|
||||
}
|
||||
|
||||
export default function sitemap(): MetadataRoute.Sitemap {
|
||||
return [
|
||||
{ url: siteUrl },
|
||||
{ url: `${siteUrl}/curriculo` },
|
||||
{ url: `${siteUrl}/privacidade` },
|
||||
{ url: `${siteUrl}/servicos` },
|
||||
{ url: `${siteUrl}/cases` },
|
||||
{ url: `${siteUrl}/ia` },
|
||||
...servicePages.map(({ slug }) => ({
|
||||
{ url: siteUrl, lastModified: dateOf(pageUpdatedAt.home) },
|
||||
{
|
||||
url: `${siteUrl}/curriculo`,
|
||||
lastModified: dateOf(pageUpdatedAt.curriculo),
|
||||
},
|
||||
{
|
||||
url: `${siteUrl}/privacidade`,
|
||||
lastModified: dateOf(pageUpdatedAt.privacidade),
|
||||
},
|
||||
{
|
||||
url: `${siteUrl}/servicos`,
|
||||
lastModified: dateOf(pageUpdatedAt.servicos),
|
||||
},
|
||||
{ url: `${siteUrl}/cases`, lastModified: dateOf(pageUpdatedAt.cases) },
|
||||
{ url: `${siteUrl}/ia`, lastModified: dateOf(pageUpdatedAt.ia) },
|
||||
...servicePages.map(({ slug, updatedAt }) => ({
|
||||
url: `${siteUrl}/servicos/${slug}`,
|
||||
lastModified: dateOf(updatedAt),
|
||||
})),
|
||||
...caseStudies.map(({ id }) => ({
|
||||
...caseStudies.map(({ id, updatedAt }) => ({
|
||||
url: `${siteUrl}/cases/${id}`,
|
||||
lastModified: dateOf(updatedAt),
|
||||
})),
|
||||
].map((entry) => ({ ...entry, lastModified }));
|
||||
];
|
||||
}
|
||||
Reference in new issue
Block a user