feat(home): posicionamento com prova, menu sem recarregar e WhatsApp em todo o site
H1 'Sites e sistemas que trazem pedidos pelo WhatsApp e tiram sua operação da planilha.'; HeroWork maior com a SEV; menu Cases, Serviços, Como trabalho, Sobre e IA com next/link e pré-carregamento no hover; menu do celular em tela cheia; WhatsApp flutuante e no rodapé com a mensagem da rota; rodapé em todas as páginas; FAQ da home; /ia como oferta de revisão de app feito com IA; formulário com noscript, validação do mailto e plano B do pop-up; cartões sem foco indevido; sem a fonte Monument.
This commit is contained in:
1 parent
e80f73d075
commit
10f170abf4
56 files changed
+3099
-906
No files matched your search
@@ -10,6 +10,8 @@ interface WhatsAppLinkProps {
|
||||
/** Assunto da conversa, na frase "Quero conversar sobre {service}". Sem ele, a mensagem fala de "um projeto". */
|
||||
service?: string;
|
||||
placement: string;
|
||||
/** Chamado junto com a abertura do link, por exemplo para fechar o menu do celular. */
|
||||
onClick?: () => void;
|
||||
}
|
||||
|
||||
/** Rótulo de métrica quando o link não traz um assunto; o texto da mensagem usa "um projeto". */
|
||||
@@ -20,12 +22,15 @@ export default function WhatsAppLink({
|
||||
className = "",
|
||||
service,
|
||||
placement,
|
||||
onClick,
|
||||
}: WhatsAppLinkProps) {
|
||||
const analyticsService = service ?? DEFAULT_ANALYTICS_SERVICE;
|
||||
// assunto vazio ou só com espaços vale como ausente: sem isso a mensagem sairia "sobre ."
|
||||
const subject = service?.trim() || undefined;
|
||||
const analyticsService = subject ?? DEFAULT_ANALYTICS_SERVICE;
|
||||
return (
|
||||
<a
|
||||
href={buildWhatsAppUrl(
|
||||
`Olá, Evandro! Quero conversar sobre ${service ?? "um projeto"}. Contato iniciado pelo site evandro.dev.br.`,
|
||||
`Olá, Evandro! Quero conversar sobre ${subject ?? "um projeto"}. Contato iniciado pelo site evandro.dev.br.`,
|
||||
)}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
@@ -33,6 +38,7 @@ export default function WhatsAppLink({
|
||||
onClick={(event) => {
|
||||
if (event.button === 0)
|
||||
trackWhatsAppOpen({ service: analyticsService, placement });
|
||||
onClick?.();
|
||||
}}
|
||||
onAuxClick={(event) => {
|
||||
if (event.button === 1)
|
||||
|
||||
Reference in new issue
Block a user