From 31aed0d1b77e559cd00880036fe6d9efc509df9b Mon Sep 17 00:00:00 2001 From: AI Studio Assistant Date: Sat, 9 May 2026 16:06:27 +0000 Subject: [PATCH] feat: adiciona react-router-dom, refatora App para router e cria pagina oculta de sucesso --- package-lock.json | 58 +++++++++++++++++++++ package.json | 1 + scripts/push-success-page.ts | 23 +++++++++ src/App.tsx | 53 ++++---------------- src/pages/LandingPage.tsx | 49 ++++++++++++++++++ src/pages/SuccessPage.tsx | 97 ++++++++++++++++++++++++++++++++++++ 6 files changed, 237 insertions(+), 44 deletions(-) create mode 100644 scripts/push-success-page.ts create mode 100644 src/pages/LandingPage.tsx create mode 100644 src/pages/SuccessPage.tsx diff --git a/package-lock.json b/package-lock.json index e82a9e9..57c763c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "motion": "^12.23.24", "react": "^19.0.1", "react-dom": "^19.0.1", + "react-router-dom": "^7.15.0", "tailwind-merge": "^3.5.0", "vite": "^6.2.3" }, @@ -3347,6 +3348,57 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.15.0.tgz", + "integrity": "sha512-HW9vYwuM8f4yx66Izy8xfrzCM+SBJluoZcCbww9A1TySax11S5Vgw6fi3ZjMONw9J4gQwngL7PzkyIpJJpJ7RQ==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.15.0.tgz", + "integrity": "sha512-VcrVg64Fo8nwBvDscajG8gRTLIuTC6N50nb22l2HOOV4PTOHgoGp8mUjy9wLiHYoYTSYI36tUnXZgasSRFZorQ==", + "license": "MIT", + "dependencies": { + "react-router": "7.15.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/react-router/node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", @@ -3505,6 +3557,12 @@ "node": ">= 0.8.0" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", diff --git a/package.json b/package.json index 376fa54..5d2e1a1 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "motion": "^12.23.24", "react": "^19.0.1", "react-dom": "^19.0.1", + "react-router-dom": "^7.15.0", "tailwind-merge": "^3.5.0", "vite": "^6.2.3" }, diff --git a/scripts/push-success-page.ts b/scripts/push-success-page.ts new file mode 100644 index 0000000..275b4ee --- /dev/null +++ b/scripts/push-success-page.ts @@ -0,0 +1,23 @@ +import { execSync } from 'child_process'; + +async function pushUpdates() { + try { + console.log('\nAdicionando arquivos para página de sucesso/vendas...'); + execSync('git add package.json package-lock.json src/App.tsx src/pages/LandingPage.tsx src/pages/SuccessPage.tsx scripts/push-success-page.ts', { stdio: 'inherit' }); + + try { + execSync('git commit -m "feat: adiciona react-router-dom, refatora App para router e cria pagina oculta de sucesso"', { stdio: 'inherit' }); + } catch (e) { + console.log('Nada para commitar.'); + } + + console.log('\nFazendo push do código...'); + execSync('git push origin main', { stdio: 'inherit' }); + + console.log(`\n🎉 Push concluído com sucesso!`); + } catch (error: any) { + console.error('\n❌ Ocorreu um erro:', error.message); + } +} + +pushUpdates(); diff --git a/src/App.tsx b/src/App.tsx index e44807b..20e15da 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,49 +1,14 @@ -import { motion, useScroll, useSpring } from 'framer-motion'; -import Navbar from './components/Navbar'; -import Hero from './components/Hero'; -import Problem from './components/Problem'; -import HowItWorks from './components/HowItWorks'; -import Benefits from './components/Benefits'; -import Gallery from './components/Gallery'; -import Offer from './components/Offer'; -import FAQ from './components/FAQ'; -import CTA from './components/CTA'; -import Footer from './components/Footer'; -import Results from './components/Results'; -import StickyMobileCTA from './components/StickyMobileCTA'; -import { useUTMForwarder } from './hooks/useUTMForwarder'; +import { BrowserRouter, Routes, Route } from 'react-router-dom'; +import LandingPage from './pages/LandingPage'; +import SuccessPage from './pages/SuccessPage'; export default function App() { - const { scrollYProgress } = useScroll(); - const scaleX = useSpring(scrollYProgress, { - stiffness: 100, - damping: 30, - restDelta: 0.001 - }); - - // Ativa o repasse automático de UTMs para links de checkout - useUTMForwarder(); - return ( -
- - -
- - - - - - - - - -
-
- -
+ + + } /> + } /> + + ); } diff --git a/src/pages/LandingPage.tsx b/src/pages/LandingPage.tsx new file mode 100644 index 0000000..ba5db60 --- /dev/null +++ b/src/pages/LandingPage.tsx @@ -0,0 +1,49 @@ +import { motion, useScroll, useSpring } from 'framer-motion'; +import Navbar from '../components/Navbar'; +import Hero from '../components/Hero'; +import Problem from '../components/Problem'; +import HowItWorks from '../components/HowItWorks'; +import Benefits from '../components/Benefits'; +import Gallery from '../components/Gallery'; +import Offer from '../components/Offer'; +import FAQ from '../components/FAQ'; +import CTA from '../components/CTA'; +import Footer from '../components/Footer'; +import Results from '../components/Results'; +import StickyMobileCTA from '../components/StickyMobileCTA'; +import { useUTMForwarder } from '../hooks/useUTMForwarder'; + +export default function LandingPage() { + const { scrollYProgress } = useScroll(); + const scaleX = useSpring(scrollYProgress, { + stiffness: 100, + damping: 30, + restDelta: 0.001 + }); + + // Ativa o repasse automático de UTMs para links de checkout + useUTMForwarder(); + + return ( +
+ + +
+ + + + + + + + + +
+
+ +
+ ); +} diff --git a/src/pages/SuccessPage.tsx b/src/pages/SuccessPage.tsx new file mode 100644 index 0000000..08fad3f --- /dev/null +++ b/src/pages/SuccessPage.tsx @@ -0,0 +1,97 @@ +import { CheckCircle, Clock, PlayCircle, Star, ArrowRight } from "lucide-react"; +import Footer from "../components/Footer"; + +export default function SuccessPage() { + return ( +
+
+
+ {/* Success Banner */} +
+ +

+ Pagamento Confirmado! +

+

+ Seu acesso à plataforma Festa Mágica IA foi enviado para o seu e-mail. + Você já pode começar a criar o seu kit exclusivo! +

+
+ + {/* Upsell Offer */} +
+ {/* Animated border effect */} +
+ +
+
+ Oferta Única +
+ +

+ Espere! Leve também o Convite Animado +

+

+ Quer impressionar ainda mais os convidados? Adicione ao seu pedido um convite em vídeo exclusivo com música, animações e o personagem do seu filho. +

+ +
+ {/* Mockup ou Imagem - usando um placeholder criativo */} +
+ Exemplo Convite Animado +
+ +
+
+ +
+
    +
  • + + Perfeito para enviar pelo WhatsApp +
  • +
  • + + Música e efeitos sonoros super divertidos +
  • +
  • + + Mantém a mesma temática escolhida da festa +
  • +
+ +
+
De R$ 49,90 por apenas
+
R$ 19,90
+
+ + +
+
+ +
+
+
+
+
+ ); +}