const COUNTRY = ["5", "5"]; const AREA = ["4", "7"]; const NINE = ["9"]; const FIRST = ["9", "2", "7", "4"]; const LAST = ["2", "3", "6", "5"]; export function getWhatsAppNumber() { return [...COUNTRY, ...AREA, ...NINE, ...FIRST, ...LAST].join(""); } export function getWhatsAppDisplayNumber() { return `+${COUNTRY.join("")} ${AREA.join("")} ${NINE.join("")}${FIRST.join("")}-${LAST.join("")}`; } export function buildWhatsAppUrl(message: string) { return `https://wa.me/${getWhatsAppNumber()}?text=${encodeURIComponent(message)}`; } /** * Nomes dos serviços e dos cases, montados no servidor (app/layout.tsx) a partir de lib/site-content.ts: * esse arquivo reúne o texto de todas as páginas e não deve ir inteiro para o navegador. */ export interface WhatsAppContexts { /** slug do serviço -> nome do serviço */ services: Record; /** id do case -> nome do projeto ou do cliente */ cases: Record; } /** Entra na frase "Quero conversar sobre {assunto}." da mensagem. */ export const AI_REVIEW_SUBJECT = "a revisão de um aplicativo feito com IA"; /** Nome pela chave; nome vazio ou só com espaços vale como ausente, para a mensagem cair no assunto padrão em vez de "sobre .". */ function lookup(table: Record | undefined, key: string) { const name = table && Object.hasOwn(table, key) ? table[key].trim() : ""; return name || undefined; } /** * Assunto da conversa de WhatsApp para a rota atual. Em /servicos/ cita o serviço, em /cases/ o case * e em /ia a revisão de aplicativo; nas demais rotas devolve undefined e a mensagem fala de "um projeto". */ export function whatsAppSubjectForPath( pathname: string | null | undefined, contexts?: WhatsAppContexts, ): string | undefined { const path = pathname?.replace(/\/$/, "") ?? ""; if (path === "/ia") return AI_REVIEW_SUBJECT; const slug = path.match(/^\/servicos\/([^/]+)$/)?.[1]; if (slug) return lookup(contexts?.services, slug); const caseId = path.match(/^\/cases\/([^/]+)$/)?.[1]; const title = caseId ? lookup(contexts?.cases, caseId) : undefined; return title ? `um projeto parecido com o da ${title}` : undefined; } /** Páginas de serviço e de case: nelas o botão do cabeçalho abre o WhatsApp em vez de ir ao formulário da home. */ export function isServiceOrCasePath(pathname: string | null | undefined) { return /^\/(servicos|cases)\/[^/]+\/?$/.test(pathname ?? ""); }