// Promoções PB — Landing page (React, single file) // Yellow + navy palette. Polished, multi-section, with sticky nav, branch cards, // stylized map of Paraíba, "how it works" steps, FAQ accordion, and footer. const BRANCHES = [ { id: 'santa-rita', city: 'Santa Rita', state: 'PB', url: 'https://promocoes.com.br/cvc-santa-rita-pb/', image: 'https://promocoescvc.com.br/cvc-santa-rita-pb/assets/storefront.png', address: 'Av. Pres. João Pessoa, 458', district: 'Centro · Santa Rita, PB', phone: '(83) 3000-0001', whatsapp: '5583900000001', hours: 'Seg–Sex 09h–18h · Sáb 09h–13h', mapX: 16, mapY: 38, distance: '15 min do centro de João Pessoa', consultants: '4 consultores de viagem', }, { id: 'bayeux', city: 'Bayeux', state: 'PB', url: 'https://promocoes.com.br/cvc-bayeux-pb/', image: 'https://promocoescvc.com.br/cvc-bayeux-pb/assets/storefront.png', address: 'Av. Liberdade, 1.230', district: 'São Bento · Bayeux, PB', phone: '(83) 3000-0002', whatsapp: '5583900000002', hours: 'Seg–Sex 09h–18h · Sáb 09h–13h', mapX: 12, mapY: 42, distance: '10 min do centro de João Pessoa', consultants: '3 consultores de viagem', }, ]; /* ============================================================ */ /* Icon set (inline SVG — kept minimal and consistent) */ /* ============================================================ */ function Icon({ name, size = 18, stroke = 1.7, color = 'currentColor' }) { const p = { width: size, height: size, viewBox: '0 0 24 24', fill: 'none', stroke: color, strokeWidth: stroke, strokeLinecap: 'round', strokeLinejoin: 'round' }; switch (name) { case 'phone': return ; case 'mail': return ; case 'clock': return ; case 'pin': return ; case 'wa': return ; case 'wallet': return ; case 'shield': return ; case 'sparkles': return ; case 'users': return ; case 'search': return ; case 'arrow-right': return ; case 'route': return ; case 'instagram': return ; case 'facebook': return ; case 'youtube': return ; case 'sun': return ; case 'plane': return ; default: return null; } } /* ============================================================ */ /* Brand mark — original sun + plane glyph (not CVC's logo) */ /* ============================================================ */ function BrandMark({ size = 40 }) { return (
{Array.from({ length: 8 }).map((_, i) => { const a = (i / 8) * Math.PI * 2; const x1 = 12 + Math.cos(a) * 7; const y1 = 12 + Math.sin(a) * 7; const x2 = 12 + Math.cos(a) * 9.4; const y2 = 12 + Math.sin(a) * 9.4; return ; })}
); } /* ============================================================ */ /* Top utility bar + nav */ /* ============================================================ */ function UtilityBar() { return (
Seg–Sex 09h às 18h · Sáb 09h às 13h Santa Rita · Bayeux · Paraíba
Onde estamos Contato 2 filiais abertas agora
); } function Nav() { return ( ); } /* ============================================================ */ /* Hero */ /* ============================================================ */ function Hero() { return (
Hub de filiais · Paraíba

A sua próxima viagem está a poucos minutos da sua casa.

Atendimento presencial em Santa Rita e Bayeux, na Grande João Pessoa. Pacotes nacionais e internacionais, parcelamento em até 12x e consultores que conhecem cada destino.

Ver as filiais Como funciona
12 anos de Paraíba
+18 mil clientes
4,9 ★ no Google
); } /* ============================================================ */ /* Trust strip */ /* ============================================================ */ function TrustStrip() { const items = [ { icon: 'wallet', title: 'Em até 12x sem juros', sub: 'Em todos os pacotes' }, { icon: 'users', title: 'Atendimento humano', sub: 'Consultores na sua cidade' }, { icon: 'plane', title: 'Pacotes nacionais e internacionais', sub: 'Mais de 200 destinos' }, { icon: 'shield', title: 'Reserva garantida', sub: 'Pagamento seguro' }, ]; return (
{items.map((it, i) => (
{it.title}
{it.sub}
))}
); } /* ============================================================ */ /* Branches grid + map context */ /* ============================================================ */ function Branches() { return (
02 — Nossas filiais

Escolha a loja mais perto de você.

Duas lojas físicas na Grande João Pessoa, com equipes próprias e atendimento de segunda a sábado.

Não consigo ir até a loja
{BRANCHES.map((b, i) => )}
); } function BranchCard({ branch, index }) { const isFirst = index === 1; return (
0{index}
Aberto agora
{branch.city}
{branch.state}
  • Endereço
    {branch.address}
    {branch.district}
  • Telefone
    {branch.phone}
    WhatsApp disponível
  • Horário
    {branch.hours}
    {branch.consultants}
Ver promoções de {branch.city}
); } function MapContext() { const [hovered, setHovered] = React.useState(null); return (
Onde estamos

Lado a lado, na Grande João Pessoa.

As duas lojas ficam a poucos minutos de distância uma da outra — fáceis de chegar tanto de carro quanto de transporte público. Escolha a que for mais conveniente.

~8 km
Entre as filiais
15 min
Do centro de JP
2026
Nova filial em breve
); } function PBMap({ hovered, setHovered }) { return ( {/* PB silhouette */} PARAÍBA {/* João Pessoa reference */} João Pessoa {/* Branch pins */} {BRANCHES.map((b) => { const isActive = hovered === b.id; const labelAlign = b.id === 'santa-rita' ? 'start' : 'end'; const lx = b.id === 'santa-rita' ? 4 : -4; return ( setHovered(b.id)} onMouseLeave={() => setHovered(null)} onClick={() => window.open(b.url, '_self')} filter="url(#pinDrop)"> {isActive && ( )} {b.city} ); })} ); } /* ============================================================ */ /* How it works */ /* ============================================================ */ function HowItWorks() { const steps = [ { icon: 'search', n: '01', t: 'Escolha sua filial', d: 'Santa Rita ou Bayeux — clique na loja mais próxima e veja as promoções da semana.' }, { icon: 'users', n: '02', t: 'Fale com um consultor', d: 'Por WhatsApp, telefone ou presencialmente. Equipe própria que conhece cada destino.' }, { icon: 'plane', n: '03', t: 'Embarque tranquilo', d: 'Parcele em até 12x, reserva garantida, e suporte da nossa equipe antes, durante e depois.' }, ]; return (
03 — Como funciona

Em três passos simples.

{steps.map((s) => (
{s.n}

{s.t}

{s.d}

))}
); } /* ============================================================ */ /* FAQ */ /* ============================================================ */ function FAQ() { const items = [ { q: 'Preciso ir até a loja para comprar?', a: 'Não. Você pode iniciar o atendimento pelo WhatsApp da sua filial de preferência e fechar tudo a distância. A visita presencial é uma opção para quem quer conversar com calma com um consultor.' }, { q: 'Qual filial devo escolher?', a: 'Escolha a mais próxima de você. Santa Rita atende principalmente o centro de Santa Rita e bairros próximos; Bayeux atende a região de São Bento e arredores. Ambas têm o mesmo catálogo de pacotes e ofertas.' }, { q: 'Posso parcelar a viagem?', a: 'Sim, em até 12x sem juros no cartão de crédito. Em alguns pacotes específicos é possível estender ainda mais — pergunte ao seu consultor.' }, { q: 'Vocês vendem pacotes internacionais?', a: 'Sim. Trabalhamos com pacotes nacionais e internacionais, incluindo destinos como Disney, Cancún, Buenos Aires e Europa.' }, { q: 'Como funciona em caso de imprevisto na viagem?', a: 'Você conta com suporte 24h da nossa equipe e da operadora. Em caso de cancelamento ou remarcação, seu consultor da Promoções PB cuida do contato com a operadora por você.' }, ]; const [openIdx, setOpenIdx] = React.useState(0); return (
04 — Dúvidas frequentes

Antes de embarcar, algumas respostas.

Não encontrou o que procurava? Fale direto com a filial mais próxima e tire sua dúvida em minutos.

Falar com a gente
{items.map((it, i) => (
{it.a}
))}
); } /* ============================================================ */ /* CTA banner */ /* ============================================================ */ function CTABanner() { return (
Falar agora

Sua próxima viagem começa com um “oi”.

Chame uma das filiais no WhatsApp. Atendimento em minutos, de segunda a sábado.

{BRANCHES.map((b) => ( WhatsApp · {b.city} ))}
); } /* ============================================================ */ /* Footer */ /* ============================================================ */ function Footer() { return ( ); } /* ============================================================ */ /* App */ /* ============================================================ */ function App() { React.useEffect(() => { // Smooth scroll for in-page anchors const onClick = (e) => { const a = e.target.closest('a[href^="#"]'); if (!a) return; const id = a.getAttribute('href').slice(1); if (!id) return; const el = document.getElementById(id); if (!el) return; e.preventDefault(); const top = el.getBoundingClientRect().top + window.pageYOffset - 70; window.scrollTo({ top, behavior: 'smooth' }); }; document.addEventListener('click', onClick); return () => document.removeEventListener('click', onClick); }, []); return ( <>