Files
portifolio-evandrodevbr/app/not-found.tsx
T
Evandro Fonseca Junior de6af74a0c feat(cases): prova certa por serviço, páginas internas com trabalho no topo
Diagnóstico sem case que não cabe; desktop com o GCC Installer como projeto próprio; IoT com o Twins Lab e a nota da Apolo. Mosaico de pôsteres em /servicos e /cases, faixa baixa em uma coluna no currículo, privacidade e laboratório; Laboratório como lista compacta; SEV começando por catálogo, pedido no WhatsApp e painel; Joinville e SC nos títulos; imagens do LCP com fetchPriority e sizes reais; pré-carregamento só no hover; 404 com Open Graph próprio.
2026-10-14 17:01:35 -03:00

71 lines
2.9 KiB
TypeScript

import { ArrowLeft, Code2, Home } from "lucide-react";
import type { Metadata } from "next";
import HoverPrefetchLink from "@/app/components/HoverPrefetchLink";
import { twitterHandle } from "@/lib/seo";
import { siteName } from "@/lib/site-content";
const title = "Página não encontrada";
const description = "A página que você procura não existe ou foi movida.";
// O Next já escreve <meta name="robots" content="noindex"> em toda página 404; repetir `robots` aqui duplicaria a tag.
// O layout raiz libera a indexação para o Googlebot, então só essa regra é trocada. A canônica da home também não vale num 404.
// O cartão de compartilhamento é o do próprio 404 e fica sem `url`: o endereço pedido não existe, e o `og:url` da home
// (herdado do layout, que é substituído por inteiro quando a página define `openGraph`) apontaria a prévia para outra página.
export const metadata: Metadata = {
title,
description,
alternates: { canonical: null },
robots: { googleBot: { index: false, follow: false } },
openGraph: {
locale: "pt_BR",
title,
description,
siteName,
type: "website",
},
twitter: {
card: "summary_large_image",
title,
description,
creator: twitterHandle,
},
};
export default function NotFound() {
return (
<main className="min-h-screen bg-[#030712] flex items-center justify-center px-6">
<div className="max-w-2xl mx-auto text-center">
<div className="mb-8">
<Code2 className="w-24 h-24 text-slate-500 mx-auto mb-4 opacity-60" />
<h1 className="font-[family-name:var(--font-display)] text-6xl md:text-8xl font-extrabold text-white mb-4">
404
</h1>
<h2 className="font-[family-name:var(--font-display)] text-2xl md:text-3xl font-bold text-slate-300 mb-4">
Página não encontrada
</h2>
<p className="font-[family-name:var(--font-body)] text-slate-400 mb-8">
A página que você está procurando não existe ou foi movida.
</p>
</div>
<div className="flex flex-col sm:flex-row gap-4 justify-center">
<HoverPrefetchLink
href="/"
className="px-6 py-3 border border-slate-600 hover:border-slate-400 bg-transparent text-white rounded-lg font-[family-name:var(--font-body)] text-base font-semibold transition-all flex items-center justify-center gap-2"
>
<Home className="w-5 h-5" />
Voltar ao início
</HoverPrefetchLink>
<HoverPrefetchLink
href="/cases"
className="px-6 py-3 font-[family-name:var(--font-body)] text-base text-slate-300 hover:text-white underline underline-offset-4 rounded-lg font-medium transition-all flex items-center justify-center gap-2"
>
<ArrowLeft className="w-5 h-5" />
Ver os cases
</HoverPrefetchLink>
</div>
</div>
</main>
);
}