/* eslint-disable */ // Godoy Engenharia — main App with router + Tweaks panel + dynamic SEO const { useState: useStateA, useEffect: useEffectA } = React; const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "variant": "a", "accent": "electric", "density": "compact", "displayFont": "Space Grotesk", "bodyFont": "Manrope" }/*EDITMODE-END*/; const DISPLAY_FONTS = ["Space Grotesk", "Archivo", "Sora", "Inter Tight"]; const BODY_FONTS = ["Manrope", "Sora", "DM Sans", "IBM Plex Sans"]; // SEO map — title / description per route. Service pages and posts are computed from data. const ROUTE_SEO = { "home": { title: "Engenharia Elétrica para Empresas | Godoy Engenharia", desc: "Instalação elétrica, laudos, SPDA, projetos, cabine primária e entrada de energia com engenheiro eletricista responsável e equipe própria. Atendemos todo o estado de São Paulo.", }, "quem-somos": { title: "Empresa de engenharia elétrica | Godoy Engenharia", desc: "Godoy Engenharia: mais de 22 anos na área elétrica, equipe própria, engenheiro eletricista responsável, CREA e ART conforme o escopo contratado.", }, "informacoes": { title: "Informações técnicas de engenharia elétrica | Godoy Engenharia", desc: "Conteúdos técnicos sobre SPDA, laudos, NR-10, termografia, cabine primária, entrada de energia, projetos, QGBT, manutenção e engenharia elétrica para empresas.", }, "faq": { title: "Perguntas frequentes sobre engenharia elétrica | Godoy Engenharia", desc: "Dúvidas sobre projeto elétrico, laudo, SPDA, cabine primária, entrada de energia, instalação industrial e comercial, condomínios, ART e NR-10.", }, "regioes-atendidas": { title: "Regiões atendidas em São Paulo | Godoy Engenharia", desc: "Engenharia elétrica para empresas, indústrias, condomínios e comércios em todo o estado de São Paulo — capital, ABC, Barueri, Alphaville, Campinas, Sorocaba, Jundiaí e demais regiões.", }, "segmentos": { title: "Segmentos atendidos | Godoy Engenharia", desc: "Engenharia elétrica para indústrias farmacêuticas, automotivas, alimentícias, químicas, galpões, centros logísticos, transportadoras, varejo, edifícios corporativos e expansões operacionais.", }, "obras": { title: "Obras realizadas | Godoy Engenharia", desc: "Cases técnicos: cabines primárias, instalações elétricas industriais e comerciais, retrofit, expansão, SPDA, laudos e adequação normativa.", }, "blog": { title: "Blog técnico | Godoy Engenharia", desc: "Artigos técnicos de engenharia elétrica: projeto executivo, cabines primárias, retrofit, SPDA, entrada de energia e adequação NR-10.", }, "contato": { title: "Contato | Godoy Engenharia", desc: "Envie seu projeto, escopo ou necessidade técnica para a Godoy Engenharia. WhatsApp (11) 98746-4004.", }, "politica-de-privacidade": { title: "Política de Privacidade | Godoy Engenharia", desc: "Como a Godoy Engenharia trata os dados informados pelo visitante ao entrar em contato pelo site, formulário, WhatsApp ou e-mail. LGPD.", }, }; // Keyword-rich SEO per priority service page (clean URLs). const SERVICE_SEO = { "instalacoes-eletricas": { title: "Instalações Elétricas Industriais em SP | Godoy Engenharia", desc: "Instalações elétricas industriais para fábricas, galpões, centros logísticos e operações comerciais de grande porte em São Paulo.", }, "cabines-primarias": { title: "Manutenção de Cabine Primária em SP | Godoy Engenharia", desc: "Projeto, instalação, manutenção e adequação de cabines primárias e sistemas de média tensão para empresas em São Paulo.", }, "spda-aterramento": { title: "SPDA e Aterramento para Empresas | Godoy Engenharia", desc: "Projeto, inspeção, adequação e laudo de SPDA e aterramento para indústrias, galpões e operações corporativas.", }, "manutencao-eletrica": { title: "Manutenção Elétrica Industrial e Comercial | Godoy Engenharia", desc: "Manutenção preventiva, inspeção elétrica, termografia, revisão de quadros e plano de adequação para empresas.", }, "retrofit": { title: "Retrofit Elétrico Industrial | Godoy Engenharia", desc: "Modernização de instalações elétricas, atualização de quadros, reorganização de circuitos e adequação normativa para empresas.", }, "entrada-energia-aumento-carga": { title: "Entrada de Energia e Aumento de Carga | Godoy Engenharia", desc: "Análise, projeto e adequação de entrada de energia para empresas que precisam ampliar carga, instalar máquinas ou expandir a operação.", }, "projetos-laudos": { title: "Projetos e Laudos Elétricos | Godoy Engenharia", desc: "Projetos executivos, laudos técnicos, memoriais e documentação elétrica com responsabilidade técnica para indústrias e comércios.", }, "inspecao-eletrica": { title: "Inspeção Elétrica e Adequação NR-10 | Godoy Engenharia", desc: "Inspeção elétrica, termografia, análise de quadros e adequação à NR-10 para indústrias, galpões e operações corporativas.", }, }; // Landing pages keyword-rich (Ads + SEO) — H1, SEO e texto próprios. const LANDINGS = { "lp/galpao-sp": { base: "instalacao-eletrica-industrial", eyebrow: "INSTALAÇÃO ELÉTRICA · GALPÕES", crumb: "Instalação elétrica para galpões", h1: "Instalação elétrica para galpões em São Paulo", title: "Instalação Elétrica para Galpões em SP | Godoy Engenharia", desc: "Infraestrutura elétrica para galpões industriais, centros logísticos, transportadoras e operações comerciais de grande porte.", short: "Infraestrutura elétrica completa para galpões, centros logísticos, transportadoras e operações de grande porte em São Paulo: entrada de energia, quadros, alimentadores, iluminação, pontos de força, SPDA e aterramento — do projeto à entrega técnica.", }, "lp/nr10": { base: "laudo-eletrico", eyebrow: "ADEQUAÇÃO NR-10", crumb: "Adequação NR-10 industrial", h1: "Adequação NR-10 industrial em São Paulo", title: "Adequação NR-10 Industrial em SP | Godoy Engenharia", desc: "Adequação à NR-10, inspeção elétrica, prontuário das instalações, laudos e plano de ação para indústrias, galpões e operações corporativas.", short: "Adequação à NR-10 para empresas em São Paulo: inspeção das instalações, análise de quadros, termografia, identificação de não conformidades, prontuário das instalações elétricas e plano de ação para regularização técnica.", }, "lp/orcamento": { contact: true, eyebrow: "ORÇAMENTO ELÉTRICO", crumb: "Orçamento elétrico industrial", h1: "Orçamento de engenharia elétrica industrial", title: "Orçamento Elétrico Industrial em SP | Godoy Engenharia", desc: "Solicite orçamento de instalação, manutenção, cabine primária, SPDA, laudo ou retrofit elétrico para sua operação em todo o estado de São Paulo.", short: "Solicite um orçamento técnico de engenharia elétrica para indústrias, galpões, centros logísticos e operações comerciais. Envie sua demanda — instalação, manutenção, cabine primária, entrada de energia, SPDA, laudo ou retrofit — e a engenharia retorna com a análise inicial.", }, }; // ── Clean-URL routing ────────────────────────────── // Internal route name ↔ real pathname (no hash). Keyword-rich for SEO/Ads. const ROUTE_TO_PATH = { "home": "/", // 7 serviços oficiais — landing pages comerciais na raiz "servico/projeto-eletrico": "/projeto-eletrico", "servico/laudo-eletrico": "/laudo-eletrico", "servico/spda": "/spda", "servico/cabine-primaria": "/cabine-primaria", "servico/entrada-de-energia": "/entrada-de-energia", "servico/instalacao-eletrica-industrial": "/instalacao-eletrica-industrial", "servico/instalacao-eletrica-comercial": "/instalacao-eletrica-comercial", // Institucionais "quem-somos": "/empresa", "obras": "/obras-realizadas", "informacoes": "/informacoes", "faq": "/faq", "blog": "/blog", "contato": "/contato", "regioes-atendidas": "/regioes-atendidas", "segmentos": "/segmentos", "politica-de-privacidade": "/politica-de-privacidade", // Landing pages keyword (Ads — H1/SEO próprio) "lp/galpao-sp": "/instalacao-eletrica-galpao-sp", "lp/nr10": "/adequacao-nr10-industrial", "lp/orcamento": "/orcamento-eletrico-industrial", }; // Reverse map + aliases (extra keyword pages that resolve to an existing route). const PATH_TO_ROUTE = Object.fromEntries( Object.entries(ROUTE_TO_PATH).map(([r, p]) => [p, r]) ); // Garantir que "/" sempre mapeia para "home" PATH_TO_ROUTE["/"] = "home"; // Aliases — URLs antigas preservadas, redirecionadas para as novas rotas. const PATH_ALIASES = { "/obras": "obras", "/cabines-primarias-sao-paulo": "servico/cabine-primaria", "/spda-industrial-sao-paulo": "servico/spda", "/entrada-de-energia-aumento-de-carga": "servico/entrada-de-energia", "/projetos-laudos-eletricos": "servico/projeto-eletrico", "/inspecao-eletrica-industrial": "servico/laudo-eletrico", "/manutencao-eletrica-industrial-sp": "servico/instalacao-eletrica-industrial", "/retrofit-eletrico-industrial": "servico/instalacao-eletrica-industrial", }; function pathToRoute(pathname) { let p = pathname || "/"; // Remove trailing slashes (exceto raiz) if (p !== "/") p = p.replace(/\/+$/, ""); p = p.replace(/\/index\.html$/i, ""); // Detectar se é raiz: "/" ou vazio ou termina com "/serve" (preview) if (p === "/" || p === "" || p.endsWith("/serve")) return "home"; if (PATH_TO_ROUTE[p]) return PATH_TO_ROUTE[p]; if (PATH_ALIASES[p]) return PATH_ALIASES[p]; const mBlog = p.match(/^\/blog\/(.+)$/); if (mBlog) return "blog/" + mBlog[1]; const mReg = p.match(/^\/regioes\/(.+)$/); if (mReg) return "regiao/" + mReg[1]; // Páginas de Informações (SEO) ficam na raiz: / const rootSlug = p.replace(/^\//, ""); if (rootSlug && window.GE_DATA && GE_DATA.infoPages && GE_DATA.infoPages[rootSlug]) return "info/" + rootSlug; // Fallback: requisição direta a um arquivo .html (ex.: preview local) → Home. // Em produção as URLs são limpas (sem .html), então isto nunca dispara. if (/\.html$/i.test(p)) return "home"; return "404"; } function routeToPath(route) { if (ROUTE_TO_PATH[route]) return ROUTE_TO_PATH[route]; if (route.startsWith("blog/")) return "/blog/" + route.slice(5); if (route.startsWith("info/")) return "/" + route.slice(5); if (route.startsWith("regiao/")) return "/regioes/" + route.slice(7); if (route.startsWith("servico/")) return "/" + route.slice(8); return "/" + route; } function applySeo({ title, desc, canonical, image, imageAlt, noindex }) { document.title = title; let m = document.querySelector('meta[name="description"]'); if (!m) { m = document.createElement("meta"); m.name = "description"; document.head.appendChild(m); } m.content = desc; // Open Graph const setOg = (prop, val) => { let og = document.querySelector(`meta[property="${prop}"]`); if (!og) { og = document.createElement("meta"); og.setAttribute("property", prop); document.head.appendChild(og); } og.content = val; }; const setName = (name, val) => { let mt = document.querySelector(`meta[name="${name}"]`); if (!mt) { mt = document.createElement("meta"); mt.setAttribute("name", name); document.head.appendChild(mt); } mt.content = val; }; setOg("og:title", title); setOg("og:description", desc); setOg("og:type", image ? "article" : "website"); setOg("og:locale", "pt_BR"); setOg("og:site_name", "Godoy Engenharia"); if (canonical) setOg("og:url", canonical); if (image) { setOg("og:image", image); setOg("og:image:width", "1200"); setOg("og:image:height", "675"); if (imageAlt) setOg("og:image:alt", imageAlt); // Twitter setName("twitter:card", "summary_large_image"); setName("twitter:title", title); setName("twitter:description", desc); setName("twitter:image", image); if (imageAlt) setName("twitter:image:alt", imageAlt); } // canonical if (canonical) { let link = document.querySelector('link[rel="canonical"]'); if (!link) { link = document.createElement("link"); link.rel = "canonical"; document.head.appendChild(link); } link.href = canonical; } // robots: noindex apenas em páginas como a 404; demais voltam a index,follow let robots = document.querySelector('meta[name="robots"]'); if (!robots) { robots = document.createElement("meta"); robots.name = "robots"; document.head.appendChild(robots); } robots.content = noindex ? "noindex, follow" : "index, follow"; } function GENotFound({ go }) { return (
Erro 404
404

Página não encontrada

O endereço acessado não existe ou foi movido. Verifique o link ou volte para a página inicial.

); } function GEApp() { const data = window.GE_DATA; const [route, setRoute] = useStateA(() => { // 1) Prefer clean pathname. 2) Fall back to legacy hash. 3) home. const fromPath = pathToRoute(window.location.pathname); if (fromPath) return fromPath; const hash = window.location.hash.replace(/^#/, ""); return hash || "home"; }); const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); const [toast, setToast] = useStateA(""); const go = (next) => { // Suporta âncora opcional, ex.: "contato#formulario" let anchor = null; const hashIdx = next.indexOf("#"); if (hashIdx >= 0) { anchor = next.slice(hashIdx + 1); next = next.slice(0, hashIdx); } setRoute(next); const path = routeToPath(next) + (anchor ? "#" + anchor : ""); try { window.history.pushState({ route: next }, "", path); } catch (e) { window.location.hash = next; // fallback (e.g. file://) } if (anchor) { // aguarda render da nova rota e rola até a âncora (offset do header fixo) let tries = 0; const tryScroll = () => { const el = document.getElementById(anchor); if (el) { window.scrollTo({ top: el.getBoundingClientRect().top + window.scrollY - 88, behavior: "smooth" }); } else if (tries++ < 10) { setTimeout(tryScroll, 50); } }; setTimeout(tryScroll, 60); } else { window.scrollTo({ top: 0 }); document.querySelector(".ge-app-scroll")?.scrollTo({ top: 0 }); } }; useEffectA(() => { // Back/forward navigation with real URLs const onPop = () => { const fromPath = pathToRoute(window.location.pathname); const hash = window.location.hash.replace(/^#/, ""); setRoute(fromPath || hash || "home"); }; window.addEventListener("popstate", onPop); // Legacy hash support (old links / bookmarks) const onHash = () => { const hash = window.location.hash.replace(/^#/, ""); if (hash) setRoute(hash); }; window.addEventListener("hashchange", onHash); // If the page loaded on a legacy #hash, normalize to a clean URL. const initialHash = window.location.hash.replace(/^#/, ""); if (initialHash && !pathToRoute(window.location.pathname)) { try { window.history.replaceState({ route: initialHash }, "", routeToPath(initialHash)); } catch (e) {} } return () => { window.removeEventListener("popstate", onPop); window.removeEventListener("hashchange", onHash); }; }, []); // SEO meta updates per route useEffectA(() => { const base = `https://${data.brand.domain}`; let seo; // Remove any per-page Service schema injected by previous render document.querySelectorAll('script[data-ld="service-page"]').forEach((n) => n.remove()); document.querySelectorAll('script[data-ld="faq-page"]').forEach((n) => n.remove()); document.querySelectorAll('script[data-ld="article-page"]').forEach((n) => n.remove()); document.querySelectorAll('script[data-ld="breadcrumb"]').forEach((n) => n.remove()); if (route.startsWith("lp/")) { // Landing pages keyword — SEO próprio + Service JSON-LD (quando baseado em serviço) const lp = LANDINGS[route]; const cleanUrl = `${base}${routeToPath(route)}`; seo = lp ? { title: lp.title, desc: lp.desc, canonical: cleanUrl } : ROUTE_SEO.home; if (lp && lp.base) { const svc = data.services.find((s) => s.slug === lp.base); if (svc) { const ld = document.createElement("script"); ld.type = "application/ld+json"; ld.setAttribute("data-ld", "service-page"); ld.text = JSON.stringify({ "@context": "https://schema.org", "@type": "Service", "@id": `${cleanUrl}#service`, name: lp.h1, description: lp.desc, serviceType: svc.title, provider: { "@id": `${base}/#org` }, areaServed: { "@type": "State", name: "São Paulo" }, url: cleanUrl, category: "Engenharia elétrica", }); document.head.appendChild(ld); } } } else if (route.startsWith("servico/")) { const slug = route.slice(8); const svc = data.services.find((s) => s.slug === slug); const cleanUrl = `${base}${routeToPath(route)}`; // Keyword-rich title/description per priority service page const sseo = SERVICE_SEO[slug]; seo = svc ? { title: svc.metaTitle || (sseo ? sseo.title : `${svc.title} | Godoy Engenharia`), desc: svc.metaDesc || (sseo ? sseo.desc : (svc.lede || "").slice(0, 158)), canonical: cleanUrl, } : ROUTE_SEO.home; // Inject Service JSON-LD for the current service if (svc) { const ld = document.createElement("script"); ld.type = "application/ld+json"; ld.setAttribute("data-ld", "service-page"); ld.text = JSON.stringify({ "@context": "https://schema.org", "@type": "Service", "@id": `${cleanUrl}#service`, name: svc.title, description: svc.lede, serviceType: svc.title, provider: { "@id": `${base}/#org` }, areaServed: { "@type": "State", name: "São Paulo" }, url: cleanUrl, category: "Engenharia elétrica", hasOfferCatalog: { "@type": "OfferCatalog", name: svc.title, itemListElement: (svc.bullets || []).map((b, i) => ({ "@type": "Offer", position: i + 1, itemOffered: { "@type": "Service", name: b } })) } }); document.head.appendChild(ld); } } else if (route.startsWith("info/")) { const slug = route.slice(5); const ip = (data.infoPages && data.infoPages[slug]) || null; const cleanUrl = `${base}/${slug}`; seo = ip ? { title: ip.metaTitle || `${ip.h1} | Godoy Engenharia`, desc: ip.metaDesc || "", canonical: cleanUrl, image: ip.photo ? `${base}/img/hero/${ip.photo}.webp` : undefined, imageAlt: ip.imgAlt, } : { ...ROUTE_SEO.informacoes, canonical: `${base}/informacoes`, noindex: true }; } else if (route.startsWith("regiao/")) { seo = { ...(ROUTE_SEO["regioes-atendidas"]), canonical: `${base}${routeToPath(route)}` }; } else if (route.startsWith("blog/")) { const slug = route.slice(5); const post = data.posts.find((p) => p.slug === slug); const bc = (window.GE_BLOG && window.GE_BLOG[slug]) || null; seo = post ? { title: (bc && bc.seoTitle) || `${post.title} | Blog | Godoy Engenharia`, desc: (bc && bc.metaDescription) || post.excerpt.slice(0, 158), canonical: `${base}/blog/${slug}`, image: post.img ? `${base}/img/hero/${post.img}.webp` : undefined, imageAlt: post.imgAlt, } : ROUTE_SEO.blog; } else if (route === "404") { seo = { title: "Página não encontrada | Godoy Engenharia", desc: "A página acessada não foi encontrada. Conheça os serviços de engenharia elétrica da Godoy Engenharia ou volte à página inicial.", canonical: `${base}/`, noindex: true, }; } else { const r = ROUTE_SEO[route] || ROUTE_SEO.home; seo = { ...r, canonical: `${base}${routeToPath(route)}` }; } applySeo(seo); // FAQPage JSON-LD — apenas quando a FAQ está visível na página (sem schema oculto) try { let faqItems = null; if (route === "faq") { faqItems = (data.faqGeneral || []).flatMap((g) => g.items || []); } else if (route.startsWith("servico/")) { const svc = data.services.find((s) => s.slug === route.slice(8)); faqItems = svc && svc.faq; } else if (route.startsWith("lp/") && LANDINGS[route] && LANDINGS[route].base) { const svc = data.services.find((s) => s.slug === LANDINGS[route].base); faqItems = svc && svc.faq; } else if (route.startsWith("info/")) { const ip = data.infoPages && data.infoPages[route.slice(5)]; faqItems = ip && ip.faq; } if (faqItems && faqItems.length) { const ld = document.createElement("script"); ld.type = "application/ld+json"; ld.setAttribute("data-ld", "faq-page"); ld.text = JSON.stringify({ "@context": "https://schema.org", "@type": "FAQPage", mainEntity: faqItems.slice(0, 20).map((f) => ({ "@type": "Question", name: f.q, acceptedAnswer: { "@type": "Answer", text: f.a } })) }); document.head.appendChild(ld); } } catch (e) {} // Article / BlogPosting + BreadcrumbList JSON-LD try { const ORG = { "@type": "Organization", name: "Godoy Engenharia", url: base + "/" }; const addLd = (kind, obj) => { const ld = document.createElement("script"); ld.type = "application/ld+json"; ld.setAttribute("data-ld", kind); ld.text = JSON.stringify(obj); document.head.appendChild(ld); }; const parseDate = (s) => { if (!s) return undefined; const m = { jan: "01", fev: "02", mar: "03", abr: "04", mai: "05", jun: "06", jul: "07", ago: "08", set: "09", out: "10", nov: "11", dez: "12", feb: "02", apr: "04", may: "05", aug: "08", sep: "09", oct: "10", dec: "12" }; const p = String(s).toLowerCase().split(/\s+/); if (p.length === 3 && m[p[1].slice(0, 3)]) return `${p[2]}-${m[p[1].slice(0, 3)]}-${p[0].padStart(2, "0")}`; return undefined; }; const crumbs = (items) => ({ "@context": "https://schema.org", "@type": "BreadcrumbList", itemListElement: items.map((it, i) => ({ "@type": "ListItem", position: i + 1, name: it.name, item: base + it.path })) }); if (route.startsWith("blog/")) { const post = data.posts.find((p) => p.slug === route.slice(5)); if (post) { const dt = parseDate(post.date); addLd("article-page", { "@context": "https://schema.org", "@type": "BlogPosting", headline: post.title, description: post.excerpt, image: post.img ? `${base}/img/hero/${post.img}.webp` : undefined, datePublished: dt, dateModified: dt, author: ORG, publisher: ORG, mainEntityOfPage: { "@type": "WebPage", "@id": `${base}/blog/${post.slug}` } }); addLd("breadcrumb", crumbs([ { name: "Início", path: "/" }, { name: "Blog", path: "/blog" }, { name: post.title, path: "/blog/" + post.slug } ])); } } else if (route.startsWith("info/")) { const ip = data.infoPages && data.infoPages[route.slice(5)]; if (ip) { addLd("article-page", { "@context": "https://schema.org", "@type": "Article", headline: ip.h1 || ip.title, description: ip.md || ip.lead, image: ip.photo ? `${base}/img/hero/${ip.photo}.webp` : undefined, author: ORG, publisher: ORG, mainEntityOfPage: { "@type": "WebPage", "@id": `${base}/${route.slice(5)}` } }); addLd("breadcrumb", crumbs([ { name: "Início", path: "/" }, { name: "Informações", path: "/informacoes" }, { name: ip.h1 || ip.title, path: "/" + route.slice(5) } ])); } } else if (route.startsWith("servico/")) { const svc = data.services.find((s) => s.slug === route.slice(8)); if (svc) addLd("breadcrumb", crumbs([ { name: "Início", path: "/" }, { name: "Serviços", path: "/#servicos" }, { name: svc.title, path: "/" + svc.slug } ])); } } catch (e) {} }, [route]); // One-time: organization JSON-LD + Google Fonts pre-load (for tweakable fonts) useEffectA(() => { // Global click tracker — dataLayer events for data-ge-cta tagged elements const onClick = (e) => { const el = e.target.closest("[data-ge-cta]"); if (!el) return; const kind = el.getAttribute("data-ge-cta"); const loc = el.getAttribute("data-ge-loc") || ""; const map = { primary: "click_cta_primary", secondary: "click_cta_secondary", whatsapp: "click_whatsapp", email: "click_email", linkedin: "click_linkedin", instagram: "click_instagram", cases: "click_cases", menu_services: "click_menu_services", menu_contact: "click_menu_contact", }; const evt = map[kind] || "click_cta"; try { window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: evt, location: loc, button_text: (el.textContent || "").trim().slice(0, 60), page_url: location.href, page_title: document.title, }); } catch (err) {} // Google Ads conversions — WhatsApp e E-mail (form_submit é disparado no envio do formulário) try { if (typeof window.gtag === "function") { if (kind === "whatsapp") { window.gtag("event", "conversion", { send_to: "AW-736387313/0Cy1CIDcpbUcEPHBkd8C" }); } else if (kind === "email" || kind === "secondary") { window.gtag("event", "conversion", { send_to: "AW-736387313/PGcwCIbcpbUcEPHBkd8C" }); } } } catch (err) {} }; document.addEventListener("click", onClick, true); const all = new Set([...DISPLAY_FONTS, ...BODY_FONTS]); const families = Array.from(all).map((f) => f.replace(/ /g, "+") + ":wght@400;500;600;700").join("&family="); if (!document.getElementById("ge-tweak-fonts")) { const link = document.createElement("link"); link.id = "ge-tweak-fonts"; link.rel = "stylesheet"; link.href = `https://fonts.googleapis.com/css2?family=${families}&display=swap`; document.head.appendChild(link); } // JSON-LD base (Organization + LocalBusiness + WebSite + sameAs) já está // no do index.html. Não injetamos LocalBusiness duplicado aqui para // evitar conflito de @id e sameAs vazio. Apenas o Service por página é // adicionado dinamicamente (ver efeito de SEO acima). }, []); const renderRoute = () => { if (route === "home") return ; if (route === "quem-somos") return ; if (route === "segmentos") return ; if (route === "obras") return ; if (route === "informacoes") return ; if (route === "faq") return ; if (route === "regioes-atendidas") return ; if (route === "blog") return ; if (route === "contato") return { setToast("Solicitação enviada com sucesso. A equipe da Godoy Engenharia retornará para alinhamento técnico."); go("home"); }}/>; if (route === "politica-de-privacidade") return ; if (route.startsWith("blog/")) return ; if (route.startsWith("info/")) return ; if (route.startsWith("regiao/")) return ; if (route.startsWith("servico/")) return ; if (route.startsWith("lp/")) { const lp = LANDINGS[route]; if (lp && lp.contact) return { setToast("Solicitação enviada com sucesso. A equipe da Godoy Engenharia retornará para alinhamento técnico."); go("home"); }}/>; if (lp) return ; } return ; }; return (
{renderRoute()} setToast("")}/> setTweak("variant", v)} /> setTweak("accent", v)} /> setTweak("density", v)} /> setTweak("displayFont", v)} /> setTweak("bodyFont", v)} />
{[ ["home", "Home"], ["quem-somos", "Empresa"], ["informacoes", "Informações"], ["faq", "FAQ"], ["obras", "Obras realizadas"], ["regioes-atendidas", "Regiões atendidas"], ["servico/projeto-eletrico", "Serviço · Projeto elétrico"], ["servico/laudo-eletrico", "Serviço · Laudo elétrico"], ["servico/spda", "Serviço · SPDA"], ["servico/cabine-primaria", "Serviço · Cabine primária"], ["servico/entrada-de-energia", "Serviço · Entrada de energia"], ["servico/instalacao-eletrica-industrial", "Serviço · Instalação industrial"], ["servico/instalacao-eletrica-comercial", "Serviço · Instalação comercial"], ["info/o-que-e-laudo-eletrico", "Info · O que é laudo elétrico"], ["info/spda-e-para-raios", "Info · SPDA e para-raios"], ["blog", "Blog"], ["contato", "Contato"], ].map(([r, label]) => ( ))}
); } ReactDOM.createRoot(document.getElementById("root")).render();