i18n da landpage (PT/EN/ES) com preco internacional $6.99

- Dicionario leve em src/i18n.ts (?lang= + fallback do navegador)
- Todos os componentes da pagina principal traduzidos
- Offer: internacional vai pro Starter USD $6.99; PT mantem checkout transparente

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Marcio Bevervanso 2026-06-21 16:45:05 -03:00
parent 1e1990f3e0
commit 6adf554553
12 changed files with 621 additions and 193 deletions

View file

@ -1,8 +1,10 @@
import { motion } from 'framer-motion';
import { ArrowRight, Sparkles } from 'lucide-react';
import InlineCTA from './InlineCTA';
import { useT } from '../i18n';
export default function BeforeAfter() {
const t = useT();
const pairs = [
{
name: 'Miguel',
@ -35,13 +37,13 @@ export default function BeforeAfter() {
<div className="text-center mb-16">
<div className="inline-flex items-center gap-2 px-5 py-2.5 rounded-full border border-pink-200 bg-pink-50 mb-6 text-pink-600">
<Sparkles className="w-4 h-4 text-amber-500" />
<span className="text-sm font-bold uppercase tracking-wider">Resultado real, sem mockup</span>
<span className="text-sm font-bold uppercase tracking-wider">{t.beforeAfter.badge}</span>
</div>
<h2 className="text-3xl md:text-5xl font-display font-bold mb-6 text-indigo-950">
De uma foto qualquer para um <span className="text-gradient">personagem 3D mágico.</span>
{t.beforeAfter.title1} <span className="text-gradient">{t.beforeAfter.titleHighlight}</span>
</h2>
<p className="text-lg text-indigo-900/70 max-w-2xl mx-auto font-medium">
Estes são exemplos reais gerados na nossa plataforma com fotos de verdade, sem edição manual. Veja a transformação acontecer.
{t.beforeAfter.subtitle}
</p>
</div>
@ -58,7 +60,7 @@ export default function BeforeAfter() {
<div className="flex items-center gap-3 sm:gap-5">
<div className="flex-1 relative">
<span className="absolute top-3 left-3 z-10 bg-white/90 backdrop-blur-sm text-indigo-900 text-xs font-bold uppercase tracking-wider px-3 py-1.5 rounded-full shadow-sm">
Foto real
{t.beforeAfter.realPhoto}
</span>
<div className="rounded-3xl overflow-hidden border-4 border-white shadow-xl aspect-[4/5]">
<img
@ -76,7 +78,7 @@ export default function BeforeAfter() {
<div className="flex-1 relative">
<span className="absolute top-3 left-3 z-10 bg-gradient-to-r from-pink-500 to-violet-500 text-white text-xs font-bold uppercase tracking-wider px-3 py-1.5 rounded-full shadow-sm flex items-center gap-1">
<Sparkles className="w-3 h-3" /> Gerado por IA
<Sparkles className="w-3 h-3" /> {t.beforeAfter.aiGenerated}
</span>
<div className="rounded-3xl overflow-hidden border-4 border-white shadow-xl aspect-[4/5] bg-white">
<img
@ -94,8 +96,8 @@ export default function BeforeAfter() {
</div>
<InlineCTA
text="Quero Criar o Meu Agora!"
subtext="Clica aqui e veja a transformação do seu filho em minutos"
text={t.beforeAfter.ctaText}
subtext={t.beforeAfter.ctaSub}
/>
</div>
</section>

View file

@ -2,39 +2,20 @@ import { useState } from 'react';
import { motion, AnimatePresence } from 'framer-motion';
import { Plus, Minus } from 'lucide-react';
import { cn } from '../lib/utils';
import { useT } from '../i18n';
export default function FAQ() {
const t = useT();
const [openIndex, setOpenIndex] = useState<number | null>(0);
const faqs = [
{
q: "Vou receber as imagens prontas no e-mail?",
a: "Não automaticamente — você mesmo cria as artes na nossa plataforma online! Após o pagamento, você recebe um link no e-mail para acessar o painel de criação. Lá você envia a foto do seu filho, escolhe os itens e nossa IA gera cada arte em 2 a 5 minutos. Você baixa tudo diretamente da plataforma. É super simples e intuitivo!"
},
{
q: "Como funciona a geração da arte em IA?",
a: "Após a compra, você receberá acesso a um painel onde enviará 1 foto do corpo inteiro da criança (de preferência de frente) e escolherá o tema. A primeira foto gerada é por nossa conta e não gasta seus créditos! A nossa Inteligência Artificial vai fundir o rostinho da criança com o tema selecionado perfeitamente em estilo Pixar/Disney 3D e gerar todos os arquivos de papelaria."
},
{
q: "Preciso de algum programa pesado para imprimir?",
a: "De jeito nenhum! Nós entregamos os arquivos em formato PDF pronto na medida exata. Você só precisa abrir o arquivo e clicar em imprimir, seja na sua casa ou enviar para a gráfica rápida mais próxima."
},
{
q: "Quanto tempo demora para o kit ficar pronto?",
a: "A transformação mágica pela Inteligência Artificial e a geração dos itens levam cerca de 2 a 5 minutos. É extremamente rápido e prático, perfeito para quem tem pressa."
},
{
q: "Se eu não conseguir imprimir, vocês ajudam?",
a: "Nossa equipe de suporte está à disposição no WhatsApp de segunda a sexta para tirar suas dúvidas e dar todo apoio técnico necessário. Mas fique tranquila, entregamos tutoriais rápidos junto ao material!"
}
];
const faqs = t.faq.items;
return (
<section className="py-24 bg-white border-y border-pink-100">
<div className="container mx-auto px-6 max-w-3xl">
<div className="text-center mb-16">
<h2 className="text-3xl md:text-5xl font-display font-bold mb-4 text-indigo-950">Dúvidas Frequentes</h2>
<p className="text-indigo-500 font-medium text-lg">Tudo que você precisa saber.</p>
<h2 className="text-3xl md:text-5xl font-display font-bold mb-4 text-indigo-950">{t.faq.title}</h2>
<p className="text-indigo-500 font-medium text-lg">{t.faq.subtitle}</p>
</div>
<div className="space-y-4">

View file

@ -1,16 +1,18 @@
import { useT } from '../i18n';
export default function Footer() {
const t = useT();
return (
<footer className="py-12 border-t border-pink-200 bg-pink-50">
<div className="container mx-auto px-6 max-w-5xl text-center text-indigo-900/60 font-medium text-xs">
<p className="mb-4 max-w-3xl mx-auto leading-relaxed">
Este site não é afiliado ao Facebook ou a qualquer entidade do Meta.
Depois que você sair do Facebook, a responsabilidade não é deles e sim do nosso site.
{t.footer.disclaimer}
</p>
<p className="mb-2">
MMV Comércio de Eletrônicos Ltda · CNPJ 47.082.683/0001-37
{t.footer.company}
</p>
<p>
© {new Date().getFullYear()} Festa Mágica IA. Todos os direitos reservados.
© {new Date().getFullYear()} Festa Mágica IA. {t.footer.rights}
</p>
</div>
</footer>

View file

@ -1,7 +1,9 @@
import { motion } from 'framer-motion';
import InlineCTA from './InlineCTA';
import { useT } from '../i18n';
export default function Gallery() {
const t = useT();
const BASE = "https://s3.seureview.com.br/festamagica/6a591904-cf2a-4a51-8581-1891373eea29";
const images = [
@ -32,10 +34,10 @@ export default function Gallery() {
<div className="container mx-auto px-6 max-w-6xl relative z-10">
<div className="text-center mb-16">
<h2 className="text-3xl md:text-5xl font-display font-bold mb-6 text-indigo-950">
Veja a magia <span className="text-gradient">acontecer.</span>
{t.gallery.title1} <span className="text-gradient">{t.gallery.titleHighlight}</span>
</h2>
<p className="text-lg text-indigo-900/70 max-w-2xl mx-auto font-medium">
Itens reais gerados na nossa plataforma sem mockup, sem edição manual. É exatamente isso que você recebe pronto para imprimir.
{t.gallery.subtitle}
</p>
</div>
@ -52,21 +54,21 @@ export default function Gallery() {
<div className="relative w-full overflow-hidden flex items-center justify-center p-6 bg-indigo-50/50">
<img
src={img.src}
alt={img.title}
alt={t.gallery.items[i]?.title ?? img.title}
className="w-full h-auto object-contain rounded-2xl drop-shadow-xl transition-transform duration-700 group-hover:scale-105 max-h-[400px]"
/>
</div>
<div className="p-6 bg-white border-t border-indigo-50">
<h3 className="font-display font-bold text-xl text-indigo-950 mb-1">{img.title}</h3>
<p className="text-sm font-medium text-indigo-900/60">{img.desc}</p>
<h3 className="font-display font-bold text-xl text-indigo-950 mb-1">{t.gallery.items[i]?.title ?? img.title}</h3>
<p className="text-sm font-medium text-indigo-900/60">{t.gallery.items[i]?.desc ?? img.desc}</p>
</div>
</motion.div>
))}
</div>
<InlineCTA
text="Quero o Meu Kit Personalizado!"
subtext="Clica aqui e escolha os itens que combinam com o tema do seu filho"
text={t.gallery.ctaText}
subtext={t.gallery.ctaSub}
/>
</div>
</section>

View file

@ -1,7 +1,9 @@
import { motion } from 'framer-motion';
import { ArrowRight, Play, Sparkles, Star } from 'lucide-react';
import { useT } from '../i18n';
export default function Hero() {
const t = useT();
return (
<section className="relative pt-32 pb-20 md:pt-40 md:pb-24 overflow-hidden bg-pink-50">
{/* Decorative Blobs */}
@ -30,7 +32,7 @@ export default function Hero() {
className="inline-flex items-center gap-2 px-5 py-2.5 rounded-full border border-pink-200 bg-white/60 backdrop-blur-md mb-8 text-pink-600 shadow-sm"
>
<Sparkles className="w-4 h-4 text-amber-500 animate-pulse" />
<span className="text-sm font-bold uppercase tracking-wider">A Festa do Ano Chegou</span>
<span className="text-sm font-bold uppercase tracking-wider">{t.hero.badge}</span>
</motion.div>
<motion.h1
@ -39,8 +41,8 @@ export default function Hero() {
transition={{ duration: 0.5, delay: 0.1 }}
className="text-4xl md:text-5xl lg:text-6xl xl:text-[4.5rem] tracking-tight leading-[1.1] font-display font-bold text-indigo-950 mb-6"
>
Transforme a foto do seu filho<br className="hidden md:block"/> em uma
<span className="text-gradient"> Festa Mágica!</span>
{t.hero.title1}<br className="hidden md:block"/> {t.hero.title2}
<span className="text-gradient"> {t.hero.titleHighlight}</span>
</motion.h1>
<motion.p
@ -48,9 +50,8 @@ export default function Hero() {
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5, delay: 0.2 }}
className="text-lg md:text-xl text-indigo-800/80 mb-10 max-w-xl font-medium leading-relaxed"
>
Pare de gastar horas procurando decoração. Envie uma foto e nossa IA cria, com o rostinho do seu filho no estilo de personagens de cinema, os itens que você escolher de um <strong>catálogo com 21 modelos exclusivos de Kit Digital</strong>! Prontinho para imprimir.
</motion.p>
dangerouslySetInnerHTML={{ __html: t.hero.subtitle }}
/>
{/* Contador de kits */}
<motion.div
@ -60,9 +61,9 @@ export default function Hero() {
className="flex flex-wrap gap-3 mb-6 justify-center lg:justify-start"
>
{[
{ value: "+10.000", label: "kits criados" },
{ value: "+180.000", label: "artes geradas" },
{ value: "4.9★", label: "avaliação" },
{ value: "+10.000", label: t.hero.statKits },
{ value: "+180.000", label: t.hero.statArts },
{ value: "4.9★", label: t.hero.statRating },
].map((stat, i) => (
<div key={i} className="flex items-center gap-2 px-4 py-2 rounded-full bg-white border border-pink-200 shadow-sm">
<span className="font-display font-black text-pink-600 text-base">{stat.value}</span>
@ -86,7 +87,7 @@ export default function Hero() {
}}
className="w-full sm:w-auto h-16 px-10 rounded-full bg-gradient-to-r from-pink-500 to-violet-500 text-white font-bold text-xl flex items-center justify-center gap-3 hover:scale-105 hover:shadow-2xl transition-all shadow-xl shadow-pink-500/30"
>
Criar Minha Festa Agora <Wand2Icon className="w-6 h-6" />
{t.hero.cta} <Wand2Icon className="w-6 h-6" />
</a>
</motion.div>
</div>
@ -111,7 +112,7 @@ export default function Hero() {
{/* Badge floating */}
<div className="absolute top-6 right-6 bg-white rounded-2xl p-3 shadow-xl transform rotate-12 animate-float">
<div className="bg-pink-100 text-pink-600 font-bold text-xs px-3 py-1.5 rounded-lg mb-1 flex items-center gap-1">
<Sparkles className="w-3 h-3" /> Gerado por IA
<Sparkles className="w-3 h-3" /> {t.hero.aiGenerated}
</div>
</div>
</div>
@ -125,7 +126,7 @@ export default function Hero() {
loading="lazy"
/>
<span className="absolute bottom-1.5 left-1/2 -translate-x-1/2 bg-white/90 backdrop-blur-sm text-indigo-900 text-[10px] sm:text-xs font-bold uppercase tracking-wider px-2.5 py-1 rounded-full shadow-sm whitespace-nowrap">
Foto real
{t.hero.realPhoto}
</span>
</div>

View file

@ -1,37 +1,30 @@
import { motion } from 'framer-motion';
import InlineCTA from './InlineCTA';
import { useT } from '../i18n';
export default function HowItWorks() {
const steps = [
{
number: "01",
title: "Compre e Acesse a Plataforma",
description: "Após o pagamento, você recebe um link no e-mail para acessar nossa plataforma de criação. É lá que a mágica acontece — tudo online, sem instalar nada.",
image: "https://festamagicaia.com.br/images/before-after.png"
},
{
number: "02",
title: "Crie seu Personagem com IA",
description: "Dentro da plataforma, envie a foto da criança, escolha o item e clique em gerar. Nossa IA cria o personagem 3D exclusivo em 2 a 5 minutos.",
image: "https://s3.seureview.com.br/festamagica/6a591904-cf2a-4a51-8581-1891373eea29/805441e0-925e-4674-b7b3-ba640431eeb1/convite-digital.webp"
},
{
number: "03",
title: "Baixe, Imprima e Decore",
description: "Baixe o PDF direto da plataforma, pronto na medida certa. Leva pra gráfica ou imprime em casa. A festa mais linda que ele já teve!",
image: "https://s3.seureview.com.br/festamagica/6a591904-cf2a-4a51-8581-1891373eea29/805441e0-925e-4674-b7b3-ba640431eeb1/adesivos-redondos.webp"
}
const t = useT();
const images = [
"https://festamagicaia.com.br/images/before-after.png",
"https://s3.seureview.com.br/festamagica/6a591904-cf2a-4a51-8581-1891373eea29/805441e0-925e-4674-b7b3-ba640431eeb1/convite-digital.webp",
"https://s3.seureview.com.br/festamagica/6a591904-cf2a-4a51-8581-1891373eea29/805441e0-925e-4674-b7b3-ba640431eeb1/adesivos-redondos.webp",
];
const steps = t.howItWorks.steps.map((s, i) => ({
number: `0${i + 1}`,
title: s.title,
description: s.description,
image: images[i],
}));
return (
<section className="py-24 bg-indigo-950 border-y border-white/10" id="como-funciona">
<div className="container mx-auto px-6 max-w-7xl">
<div className="text-center mb-20">
<h2 className="text-3xl md:text-5xl font-display font-bold mb-6 tracking-tight text-white">
Como a <span className="text-pink-500">Mágica</span> Acontece
{t.howItWorks.title1} <span className="text-pink-500">{t.howItWorks.titleHighlight}</span> {t.howItWorks.title2}
</h2>
<p className="text-lg text-indigo-200 max-w-2xl mx-auto font-medium">
Em apenas 3 passos simples, você terá um kit de festa exclusivo que parece ter saído de um estúdio de cinema!
{t.howItWorks.subtitle}
</p>
</div>
@ -60,8 +53,8 @@ export default function HowItWorks() {
</div>
<InlineCTA
text="Quero Começar Agora"
subtext="Clica aqui — leva menos de 2 minutos pra criar sua conta"
text={t.howItWorks.ctaText}
subtext={t.howItWorks.ctaSub}
/>
</div>
</section>

View file

@ -1,8 +1,10 @@
import { useState, useEffect } from 'react';
import { ArrowRight, Wand2 } from 'lucide-react';
import { cn } from '../lib/utils';
import { useT } from '../i18n';
export default function Navbar() {
const t = useT();
const [isScrolled, setIsScrolled] = useState(false);
useEffect(() => {
@ -30,7 +32,7 @@ export default function Navbar() {
<div className="flex items-center gap-4">
<a href="#oferta" className="h-11 px-6 rounded-full bg-gradient-to-r from-pink-500 to-violet-500 text-white font-semibold text-sm flex items-center gap-2 hover:shadow-[0_0_20px_rgba(236,72,153,0.4)] hover:scale-105 transition-all">
Criar Kit Agora <ArrowRight className="w-4 h-4" />
{t.nav.cta} <ArrowRight className="w-4 h-4" />
</a>
</div>
</div>

View file

@ -1,33 +1,26 @@
import { useState, type FormEvent } from 'react';
import { motion } from 'framer-motion';
import { Check, ShieldCheck, Gift, ArrowRight, Loader2 } from 'lucide-react';
import { cn } from '../lib/utils';
import { useT, getLang } from '../i18n';
export default function Offer() {
const benefits = [
"Criação do Personagem com IA Exclusivo",
"10 créditos para escolher e gerar os itens que quiser do catálogo de 21 modelos (1 item = 1 crédito)",
"Arquivos em PDF já formatados, prontos para impressão",
"Acesso imediato à plataforma"
];
const t = useT();
const benefits = t.offer.benefits;
const [email, setEmail] = useState('');
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState('');
const getCookie = (name: string) => {
const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
return match ? match[2] : '';
};
const handleCheckout = async (e: FormEvent) => {
e.preventDefault();
if (!email) {
setError('Por favor, informe seu e-mail.');
return;
}
if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
setError('Por favor, informe um e-mail válido.');
return;
}
if (!email) { setError(t.offer.errEmpty); return; }
if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) { setError(t.offer.errInvalid); return; }
// Fire InitiateCheckout parameter for Meta Pixel
if (typeof window !== 'undefined' && 'fbq' in window) {
(window as any).fbq('track', 'InitiateCheckout');
}
@ -35,6 +28,42 @@ export default function Offer() {
setIsLoading(true);
setError('');
const isBR = getLang() === 'pt';
if (!isBR) {
// Internacional: Starter USD $6.99 → Stripe direto
try {
const res = await fetch('https://n8n.seureview.com.br/webhook/festa-magica-stripe', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
action: 'create-checkout',
source: 'landing-international',
userEmail: email,
priceId: 'price_1TkZWrLjQo8Mvvq1wmXQOFFq',
credits: 10,
planName: 'Starter',
fbp: getCookie('_fbp'),
fbc: getCookie('_fbc'),
successUrl: 'https://festamagicaia.com.br?payment=success',
cancelUrl: window.location.href,
}),
});
const data = await res.json();
if (data.url) {
window.location.href = data.url;
} else {
setError(t.offer.errCheckout);
setIsLoading(false);
}
} catch {
setError(t.offer.errConnection);
setIsLoading(false);
}
return;
}
// PT-BR: checkout transparente com Pix + Cartão
window.location.href = `https://festamagicaia.com.br/checkout?plan=starter&source=landing&email=${encodeURIComponent(email)}`;
};
@ -46,18 +75,16 @@ export default function Offer() {
<div className="container mx-auto px-6 max-w-5xl relative z-10">
<div className="text-center mb-16">
<h2 className="text-4xl md:text-5xl font-display font-bold mb-4 text-white">
Crie a melhor festa que <br className="hidden md:block"/><span className="text-pink-400">seu filho teve.</span>
{t.offer.title1} <br className="hidden md:block"/><span className="text-pink-400">{t.offer.titleHighlight}</span>
</h2>
<p className="text-indigo-200 text-lg">
Adquira o pacote inicial e receba <strong className="text-white">10 créditos para escolher e gerar seus itens favoritos</strong> do catálogo com 21 modelos exclusivos, por um valor simbólico.
</p>
<p className="text-indigo-200 text-lg" dangerouslySetInnerHTML={{ __html: t.offer.subtitle }} />
</div>
<div className="bg-white rounded-[2.5rem] p-8 md:p-12 shadow-[0_30px_60px_-15px_rgba(236,72,153,0.3)] relative overflow-hidden flex flex-col md:flex-row items-center gap-12 max-w-4xl mx-auto border border-pink-100">
<div className="flex-1 w-full">
<h3 className="text-3xl font-display font-bold text-indigo-950 mb-6">
O Kit Mágico
{t.offer.kitName}
</h3>
<div className="space-y-4 mb-8">
{benefits.map((benefit, i) => (
@ -72,24 +99,24 @@ export default function Offer() {
<div className="pt-6 border-t border-indigo-100 flex items-center gap-3">
<Gift className="w-6 h-6 text-pink-500" />
<p className="text-indigo-800 font-bold">Surpreenda todos os convidados!</p>
<p className="text-indigo-800 font-bold">{t.offer.surprise}</p>
</div>
</div>
<div className="w-full md:w-[360px] rounded-3xl p-6 md:p-8 text-center flex flex-col justify-center relative bg-gradient-to-b from-indigo-50 to-white border border-indigo-100 shadow-inner">
<div className="mb-4 text-pink-600 font-bold text-sm tracking-[0.2em] uppercase">Pacote Inicial</div>
<div className="mb-4 text-pink-600 font-bold text-sm tracking-[0.2em] uppercase">{t.offer.packLabel}</div>
<div className="flex items-start justify-center mb-1">
<span className="text-2xl font-bold text-indigo-950 mt-2 mr-1">R$</span>
<span className="text-8xl font-display font-black tracking-tight text-indigo-950">9</span>
<span className="text-2xl font-bold mb-1 text-indigo-950 mt-2">,99</span>
<span className="text-2xl font-bold text-indigo-950 mt-2 mr-1">{t.offer.priceCurrency}</span>
<span className="text-8xl font-display font-black tracking-tight text-indigo-950">{t.offer.priceInteger}</span>
<span className="text-2xl font-bold mb-1 text-indigo-950 mt-2">{t.offer.priceDecimals}</span>
</div>
<p className="text-sm text-indigo-500 font-medium mb-4">Pagamento único. Acesso imediato.</p>
<p className="text-sm text-indigo-500 font-medium mb-4">{t.offer.priceNote}</p>
<div className="mb-6 px-4 py-3 rounded-2xl bg-emerald-50 border border-emerald-100 flex items-start gap-2.5 text-left">
<Gift className="w-5 h-5 text-emerald-600 shrink-0 mt-0.5" />
<p className="text-sm text-emerald-800 font-semibold leading-snug">
Sua primeira imagem é por nossa conta não consome nenhum dos seus créditos. É a chance de ver a mágica antes de usar o pacote completo.
{t.offer.freeImage}
</p>
</div>
@ -102,7 +129,7 @@ export default function Offer() {
setEmail(e.target.value);
if (error) setError('');
}}
placeholder="Seu melhor e-mail"
placeholder={t.offer.emailPlaceholder}
className={cn(
"w-full h-14 px-5 rounded-full border-2 bg-white outline-none transition-all placeholder:text-gray-400 font-medium",
error ? "border-red-400 focus:border-red-500" : "border-indigo-100 focus:border-pink-500/50"
@ -117,16 +144,16 @@ export default function Offer() {
className="w-full h-16 rounded-full bg-gradient-to-r from-pink-500 to-violet-500 text-white font-bold text-lg hover:shadow-[0_0_30px_rgba(236,72,153,0.5)] hover:scale-105 transition-all flex items-center justify-center gap-2 disabled:opacity-70 disabled:hover:scale-100 disabled:hover:shadow-none"
>
{isLoading ? (
<>Gerando Pedido... <Loader2 className="w-5 h-5 animate-spin" /></>
<>{t.offer.buttonLoading} <Loader2 className="w-5 h-5 animate-spin" /></>
) : (
<>Quero Meu Kit por R$9,99 <ArrowRight className="w-5 h-5" /></>
<>{t.offer.buttonIdle} <ArrowRight className="w-5 h-5" /></>
)}
</button>
</form>
<div className="flex items-center justify-center gap-2 text-sm text-indigo-400 font-medium">
<ShieldCheck className="w-5 h-5 text-emerald-500" />
<span>Compra 100% segura pelo Stripe.</span>
<span>{t.offer.secure}</span>
</div>
</div>

View file

@ -1,8 +1,10 @@
import { useState, useEffect } from 'react';
import { motion, AnimatePresence } from 'framer-motion';
import { Wand2 } from 'lucide-react';
import { useT } from '../i18n';
export default function StickyMobileCTA() {
const t = useT();
const [isVisible, setIsVisible] = useState(false);
useEffect(() => {
@ -39,7 +41,7 @@ export default function StickyMobileCTA() {
}}
className="w-full h-14 rounded-full bg-gradient-to-r from-pink-500 to-violet-500 text-white font-bold text-lg flex items-center justify-center gap-2 shadow-[0_10px_40px_-10px_rgba(236,72,153,0.8)] border border-white/20 active:scale-95 transition-transform"
>
Criar Minha Festa <Wand2 className="w-5 h-5" />
{t.sticky.cta} <Wand2 className="w-5 h-5" />
</a>
</motion.div>
)}

View file

@ -1,15 +1,16 @@
import { motion } from 'framer-motion';
import { Sparkles, Star, Users, ImageIcon, Clock } from 'lucide-react';
import InlineCTA from './InlineCTA';
const stats = [
{ icon: <Users className="w-5 h-5 text-pink-400" />, value: "+10.000", label: "famílias atendidas" },
{ icon: <ImageIcon className="w-5 h-5 text-violet-400" />, value: "+180.000", label: "artes geradas" },
{ icon: <Star className="w-5 h-5 text-amber-400" />, value: "4.9★", label: "avaliação média" },
{ icon: <Clock className="w-5 h-5 text-emerald-400" />, value: "2~5 min", label: "por arte gerada" },
];
import { useT } from '../i18n';
export default function VideoDemonstration() {
const t = useT();
const stats = [
{ icon: <Users className="w-5 h-5 text-pink-400" />, value: "+10.000", label: t.video.statFamilies },
{ icon: <ImageIcon className="w-5 h-5 text-violet-400" />, value: "+180.000", label: t.video.statArts },
{ icon: <Star className="w-5 h-5 text-amber-400" />, value: "4.9★", label: t.video.statRating },
{ icon: <Clock className="w-5 h-5 text-emerald-400" />, value: "2~5 min", label: t.video.statTime },
];
return (
<section className="py-24 bg-indigo-950 relative overflow-hidden" id="video">
{/* Background glow */}
@ -27,7 +28,7 @@ export default function VideoDemonstration() {
className="inline-flex items-center gap-2 px-5 py-2.5 rounded-full border border-pink-500/30 bg-pink-500/10 mb-6 text-pink-300"
>
<Sparkles className="w-4 h-4 text-amber-400 animate-pulse" />
<span className="text-sm font-bold uppercase tracking-wider">Veja ao vivo</span>
<span className="text-sm font-bold uppercase tracking-wider">{t.video.badge}</span>
</motion.div>
<motion.h2
@ -37,8 +38,8 @@ export default function VideoDemonstration() {
transition={{ delay: 0.05 }}
className="text-3xl md:text-5xl font-display font-bold mb-5 tracking-tight text-white"
>
Da foto ao kit de festa<br className="hidden md:block" />
<span className="text-transparent bg-clip-text bg-gradient-to-r from-pink-400 to-violet-400"> em menos de 5 minutos.</span>
{t.video.title1}<br className="hidden md:block" />
<span className="text-transparent bg-clip-text bg-gradient-to-r from-pink-400 to-violet-400"> {t.video.title2}</span>
</motion.h2>
<motion.p
@ -48,7 +49,7 @@ export default function VideoDemonstration() {
transition={{ delay: 0.1 }}
className="text-lg text-indigo-200/80 max-w-xl mx-auto font-medium"
>
Veja como é simples usar a plataforma do upload da foto até o PDF pronto para imprimir.
{t.video.subtitle}
</motion.p>
</div>
@ -76,7 +77,7 @@ export default function VideoDemonstration() {
</div>
<div className="flex items-center gap-1.5 text-[10px] font-bold text-emerald-400 bg-emerald-500/10 border border-emerald-500/20 px-2.5 py-1 rounded-full">
<div className="w-1.5 h-1.5 rounded-full bg-emerald-400 animate-pulse" />
AO VIVO
{t.video.live}
</div>
</div>
@ -111,8 +112,8 @@ export default function VideoDemonstration() {
</motion.div>
<InlineCTA
text="Sim, Eu Quero Isso na Festa do Meu Filho!"
subtext="Acesso imediato após o pagamento"
text={t.video.ctaText}
subtext={t.video.ctaSub}
/>
</div>
</section>

View file

@ -1,58 +1,21 @@
import type { FC } from 'react';
import { motion } from 'framer-motion';
import InlineCTA from './InlineCTA';
import { useT } from '../i18n';
const testimonials = [
{
name: "Juliana Martins",
time: "09:47",
avatar: "JM",
color: "bg-emerald-500",
stars: 5,
message: "Ficou simplesmente lindo! Eu não esperava que as fotos fossem ficar tão perfeitas. Meu filho adorou se ver como um verdadeiro herói da festa. Recomendo demais! 🥰",
},
{
name: "Camila Souza",
time: "14:22",
avatar: "CS",
color: "bg-violet-500",
stars: 5,
message: "Amei o resultado! Foi super fácil de fazer e as imagens ficaram incríveis. Todo mundo da família comentou e pediu para eu fazer também 😍✨",
},
{
name: "Fernanda Oliveira",
time: "11:08",
avatar: "FO",
color: "bg-pink-500",
stars: 5,
message: "Que trabalho maravilhoso! As artes ficaram muito bonitas e deram um toque especial na comemoração. Minha filha ficou encantada quando viu 🎉",
},
{
name: "Patrícia Almeida",
time: "16:55",
avatar: "PA",
color: "bg-amber-500",
stars: 5,
message: "Valeu cada centavo! Recebi tudo rapidinho e a qualidade das imagens me surpreendeu. Ficou melhor do que eu imaginava 👏👏",
},
{
name: "Renata Costa",
time: "10:33",
avatar: "RC",
color: "bg-cyan-500",
stars: 5,
message: "Foi um sucesso aqui em casa! As fotos ficaram super realistas e deixaram a festa ainda mais especial. Meu filho amou o resultado 🎂🎈",
},
{
name: "Larissa Ferreira",
time: "19:14",
avatar: "LF",
color: "bg-rose-500",
stars: 5,
message: "Estou apaixonada! Ficou tudo perfeito, muito caprichado e divertido. Com certeza vou fazer novamente para as próximas festas 💕",
},
// Metadados visuais (não traduzíveis) — o texto vem do i18n por índice
const META = [
{ time: "09:47", avatar: "JM", color: "bg-emerald-500", stars: 5 },
{ time: "14:22", avatar: "CS", color: "bg-violet-500", stars: 5 },
{ time: "11:08", avatar: "FO", color: "bg-pink-500", stars: 5 },
{ time: "16:55", avatar: "PA", color: "bg-amber-500", stars: 5 },
{ time: "10:33", avatar: "RC", color: "bg-cyan-500", stars: 5 },
{ time: "19:14", avatar: "LF", color: "bg-rose-500", stars: 5 },
];
function WhatsAppBubble({ t, index }: { t: typeof testimonials[0]; index: number }) {
type Bubble = { name: string; message: string; time: string; avatar: string; color: string; stars: number };
const WhatsAppBubble: FC<{ t: Bubble; index: number }> = ({ t, index }) => {
return (
<motion.div
initial={{ opacity: 0, y: 20 }}
@ -100,9 +63,11 @@ function WhatsAppBubble({ t, index }: { t: typeof testimonials[0]; index: number
</div>
</motion.div>
);
}
};
export default function WhatsAppTestimonials() {
const tr = useT();
const testimonials: Bubble[] = tr.testimonials.items.map((it, i) => ({ ...it, ...META[i] }));
return (
<section className="py-24 bg-white border-y border-pink-100 relative overflow-hidden" id="depoimentos">
<div className="absolute top-0 right-0 w-96 h-96 bg-emerald-100/40 blur-[120px] rounded-full pointer-events-none" />
@ -110,13 +75,13 @@ export default function WhatsAppTestimonials() {
<div className="container mx-auto px-6 max-w-6xl relative z-10">
<div className="text-center mb-16">
<div className="inline-flex items-center gap-2 px-5 py-2.5 rounded-full border border-emerald-200 bg-emerald-50 mb-6 text-emerald-700">
<span className="text-sm font-bold uppercase tracking-wider">💬 O que as mães estão dizendo</span>
<span className="text-sm font-bold uppercase tracking-wider">{tr.testimonials.badge}</span>
</div>
<h2 className="text-3xl md:text-5xl font-display font-bold mb-4 text-indigo-950">
Famílias <span className="text-pink-500">encantadas.</span>
{tr.testimonials.title1} <span className="text-pink-500">{tr.testimonials.titleHighlight}</span>
</h2>
<p className="text-indigo-500 font-medium text-lg">
Mais de 10.000 festas criadas. Veja o que elas estão falando.
{tr.testimonials.subtitle}
</p>
</div>
@ -127,8 +92,8 @@ export default function WhatsAppTestimonials() {
</div>
<InlineCTA
text="Eu Também Quero Fazer a Festa do Meu Filho!"
subtext="Clica aqui e seja a próxima mãe encantada"
text={tr.testimonials.ctaText}
subtext={tr.testimonials.ctaSub}
/>
</div>
</section>

450
src/i18n.ts Normal file
View file

@ -0,0 +1,450 @@
/**
* i18n leve da landpage sem dependências.
* Idioma: ?lang=pt|en|es na URL (campanha aponta pro idioma certo),
* com fallback no idioma do navegador, padrão pt.
*
* Uso: const t = useT(); {t.hero.title}
* const lang = useLang(); ('pt' | 'en' | 'es')
*/
export type Lang = "pt" | "en" | "es";
export function getLang(): Lang {
if (typeof window === "undefined") return "pt";
const param = new URLSearchParams(window.location.search).get("lang");
if (param === "en" || param === "es" || param === "pt") return param;
const nav = (navigator.language || "pt").toLowerCase();
if (nav.startsWith("es")) return "es";
if (nav.startsWith("en")) return "en";
return "pt";
}
export function useLang(): Lang {
return getLang();
}
const PT = {
nav: { cta: "Criar Kit Agora" },
hero: {
badge: "A Festa do Ano Chegou",
title1: "Transforme a foto do seu filho",
title2: "em uma",
titleHighlight: "Festa Mágica!",
subtitle: "Pare de gastar horas procurando decoração. Envie uma foto e nossa IA cria, com o rostinho do seu filho no estilo de personagens de cinema, os itens que você escolher de um <strong>catálogo com 21 modelos exclusivos de Kit Digital</strong>! Prontinho para imprimir.",
statKits: "kits criados",
statArts: "artes geradas",
statRating: "avaliação",
cta: "Criar Minha Festa Agora",
aiGenerated: "Gerado por IA",
realPhoto: "Foto real",
},
beforeAfter: {
badge: "Resultado real, sem mockup",
title1: "De uma foto qualquer para um",
titleHighlight: "personagem 3D mágico.",
subtitle: "Estes são exemplos reais gerados na nossa plataforma — com fotos de verdade, sem edição manual. Veja a transformação acontecer.",
realPhoto: "Foto real",
aiGenerated: "Gerado por IA",
ctaText: "Quero Criar o Meu Agora!",
ctaSub: "Clica aqui e veja a transformação do seu filho em minutos",
},
video: {
badge: "Veja ao vivo",
title1: "Da foto ao kit de festa",
title2: "em menos de 5 minutos.",
subtitle: "Veja como é simples usar a plataforma — do upload da foto até o PDF pronto para imprimir.",
live: "AO VIVO",
statFamilies: "famílias atendidas",
statArts: "artes geradas",
statRating: "avaliação média",
statTime: "por arte gerada",
ctaText: "Sim, Eu Quero Isso na Festa do Meu Filho!",
ctaSub: "Acesso imediato após o pagamento",
},
gallery: {
title1: "Veja a magia",
titleHighlight: "acontecer.",
subtitle: "Itens reais gerados na nossa plataforma — sem mockup, sem edição manual. É exatamente isso que você recebe pronto para imprimir.",
ctaText: "Quero o Meu Kit Personalizado!",
ctaSub: "Clica aqui e escolha os itens que combinam com o tema do seu filho",
items: [
{ title: "Topo de Bolo 3D", desc: "Destaque na mesa do bolo" },
{ title: "Painel de Fundo", desc: "Transforma o cenário da festa" },
{ title: "Convite Premium", desc: "Para impressão ou envio digital" },
{ title: "Caixa de Pipoca", desc: "A alegria garantida no lanche" },
{ title: "Bandeirolas com Nome", desc: "Varal decorativo personalizado" },
{ title: "Convite Digital", desc: "Para enviar no WhatsApp" },
{ title: "Caixa Milk", desc: "Lembrancinha charmosa" },
{ title: "Saia de Cupcake", desc: "Mais estilo para os docinhos" },
{ title: "Centro de Mesa", desc: "Arranjo decorativo exclusivo" },
{ title: "Tag de Agradecimento", desc: "Pronto para as lembrancinhas" },
{ title: "Topper de Cupcake", desc: "O personagem em cada docinho" },
{ title: "Faixa de Parede", desc: "Decoração com a cara do tema" },
{ title: "Sacolinha Surpresa", desc: "Lembrancinha que toda criança ama" },
{ title: "Chapéu de Festa", desc: "Divertido, personalizado e único" },
{ title: "Porta Bis Duplo", desc: "Lembrancinha deliciosa e bonita" },
{ title: "Adesivos Redondos", desc: "Ideais para potinhos e lembrancinhas" },
{ title: "Caixa Cone", desc: "Diferente e super divertida" },
{ title: "Display de Mesa", desc: "Identificação elegante para a mesa" },
],
},
howItWorks: {
title1: "Como a",
titleHighlight: "Mágica",
title2: "Acontece",
subtitle: "Em apenas 3 passos simples, você terá um kit de festa exclusivo que parece ter saído de um estúdio de cinema!",
steps: [
{ title: "Compre e Acesse a Plataforma", description: "Após o pagamento, você recebe um link no e-mail para acessar nossa plataforma de criação. É lá que a mágica acontece — tudo online, sem instalar nada." },
{ title: "Crie seu Personagem com IA", description: "Dentro da plataforma, envie a foto da criança, escolha o item e clique em gerar. Nossa IA cria o personagem 3D exclusivo em 2 a 5 minutos." },
{ title: "Baixe, Imprima e Decore", description: "Baixe o PDF direto da plataforma, pronto na medida certa. Leva pra gráfica ou imprime em casa. A festa mais linda que ele já teve!" },
],
ctaText: "Quero Começar Agora",
ctaSub: "Clica aqui — leva menos de 2 minutos pra criar sua conta",
},
testimonials: {
badge: "💬 O que as mães estão dizendo",
title1: "Famílias",
titleHighlight: "encantadas.",
subtitle: "Mais de 10.000 festas criadas. Veja o que elas estão falando.",
ctaText: "Eu Também Quero Fazer a Festa do Meu Filho!",
ctaSub: "Clica aqui e seja a próxima mãe encantada",
items: [
{ name: "Juliana Martins", message: "Ficou simplesmente lindo! Eu não esperava que as fotos fossem ficar tão perfeitas. Meu filho adorou se ver como um verdadeiro herói da festa. Recomendo demais! 🥰" },
{ name: "Camila Souza", message: "Amei o resultado! Foi super fácil de fazer e as imagens ficaram incríveis. Todo mundo da família comentou e pediu para eu fazer também 😍✨" },
{ name: "Fernanda Oliveira", message: "Que trabalho maravilhoso! As artes ficaram muito bonitas e deram um toque especial na comemoração. Minha filha ficou encantada quando viu 🎉" },
{ name: "Patrícia Almeida", message: "Valeu cada centavo! Recebi tudo rapidinho e a qualidade das imagens me surpreendeu. Ficou melhor do que eu imaginava 👏👏" },
{ name: "Renata Costa", message: "Foi um sucesso aqui em casa! As fotos ficaram super realistas e deixaram a festa ainda mais especial. Meu filho amou o resultado 🎂🎈" },
{ name: "Larissa Ferreira", message: "Estou apaixonada! Ficou tudo perfeito, muito caprichado e divertido. Com certeza vou fazer novamente para as próximas festas 💕" },
],
},
offer: {
title1: "Crie a melhor festa que",
titleHighlight: "seu filho já teve.",
subtitle: "Adquira o pacote inicial e receba <strong>10 créditos para escolher e gerar seus itens favoritos</strong> do catálogo com 21 modelos exclusivos, por um valor simbólico.",
kitName: "O Kit Mágico",
benefits: [
"Criação do Personagem com IA Exclusivo",
"10 créditos para escolher e gerar os itens que quiser do catálogo de 21 modelos (1 item = 1 crédito)",
"Arquivos em PDF já formatados, prontos para impressão",
"Acesso imediato à plataforma",
],
surprise: "Surpreenda todos os convidados!",
packLabel: "Pacote Inicial",
priceCurrency: "R$",
priceInteger: "9",
priceDecimals: ",99",
priceNote: "Pagamento único. Acesso imediato.",
freeImage: "Sua primeira imagem é por nossa conta — não consome nenhum dos seus créditos. É a chance de ver a mágica antes de usar o pacote completo.",
emailPlaceholder: "Seu melhor e-mail",
buttonIdle: "Quero Meu Kit por R$9,99",
buttonLoading: "Gerando Pedido...",
secure: "Compra 100% segura pelo Stripe.",
errEmpty: "Por favor, informe seu e-mail.",
errInvalid: "Por favor, informe um e-mail válido.",
errCheckout: "Erro ao abrir o pagamento. Tente novamente.",
errConnection: "Erro de conexão. Verifique sua internet e tente novamente.",
},
faq: {
title: "Dúvidas Frequentes",
subtitle: "Tudo que você precisa saber.",
items: [
{ q: "Vou receber as imagens prontas no e-mail?", a: "Não automaticamente — você mesmo cria as artes na nossa plataforma online! Após o pagamento, você recebe um link no e-mail para acessar o painel de criação. Lá você envia a foto do seu filho, escolhe os itens e nossa IA gera cada arte em 2 a 5 minutos. Você baixa tudo diretamente da plataforma. É super simples e intuitivo!" },
{ q: "Como funciona a geração da arte em IA?", a: "Após a compra, você receberá acesso a um painel onde enviará 1 foto do corpo inteiro da criança (de preferência de frente) e escolherá o tema. A primeira foto gerada é por nossa conta e não gasta seus créditos! A nossa Inteligência Artificial vai fundir o rostinho da criança com o tema selecionado perfeitamente em estilo Pixar/Disney 3D e gerar todos os arquivos de papelaria." },
{ q: "Preciso de algum programa pesado para imprimir?", a: "De jeito nenhum! Nós entregamos os arquivos em formato PDF pronto na medida exata. Você só precisa abrir o arquivo e clicar em imprimir, seja na sua casa ou enviar para a gráfica rápida mais próxima." },
{ q: "Quanto tempo demora para o kit ficar pronto?", a: "A transformação mágica pela Inteligência Artificial e a geração dos itens levam cerca de 2 a 5 minutos. É extremamente rápido e prático, perfeito para quem tem pressa." },
{ q: "Se eu não conseguir imprimir, vocês ajudam?", a: "Nossa equipe de suporte está à disposição no WhatsApp de segunda a sexta para tirar suas dúvidas e dar todo apoio técnico necessário. Mas fique tranquila, entregamos tutoriais rápidos junto ao material!" },
],
},
footer: {
disclaimer: "Este site não é afiliado ao Facebook ou a qualquer entidade do Meta. Depois que você sair do Facebook, a responsabilidade não é deles e sim do nosso site.",
company: "MMV Comércio de Eletrônicos Ltda · CNPJ 47.082.683/0001-37",
rights: "Todos os direitos reservados.",
},
sticky: { cta: "Criar Minha Festa" },
};
const EN: typeof PT = {
nav: { cta: "Create Kit Now" },
hero: {
badge: "The Party of the Year Is Here",
title1: "Turn your child's photo",
title2: "into a",
titleHighlight: "Magic Party!",
subtitle: "Stop spending hours hunting for decorations. Upload a photo and our AI creates, with your child's face in a movie-character style, the items you pick from a <strong>catalog of 21 exclusive Digital Kit models</strong>! Ready to print.",
statKits: "kits created",
statArts: "artworks generated",
statRating: "rating",
cta: "Create My Party Now",
aiGenerated: "AI Generated",
realPhoto: "Real photo",
},
beforeAfter: {
badge: "Real results, no mockups",
title1: "From any photo to a",
titleHighlight: "magical 3D character.",
subtitle: "These are real examples generated on our platform — with real photos, no manual editing. Watch the transformation happen.",
realPhoto: "Real photo",
aiGenerated: "AI Generated",
ctaText: "I Want to Create Mine Now!",
ctaSub: "Click here and see your child's transformation in minutes",
},
video: {
badge: "See it live",
title1: "From photo to party kit",
title2: "in under 5 minutes.",
subtitle: "See how simple the platform is — from uploading the photo to the print-ready PDF.",
live: "LIVE",
statFamilies: "families served",
statArts: "artworks generated",
statRating: "average rating",
statTime: "per artwork",
ctaText: "Yes, I Want This at My Child's Party!",
ctaSub: "Instant access after payment",
},
gallery: {
title1: "Watch the magic",
titleHighlight: "happen.",
subtitle: "Real items generated on our platform — no mockups, no manual editing. This is exactly what you get, ready to print.",
ctaText: "I Want My Custom Kit!",
ctaSub: "Click here and choose the items that match your child's theme",
items: [
{ title: "3D Cake Topper", desc: "The highlight of the cake table" },
{ title: "Backdrop Panel", desc: "Transforms the party scene" },
{ title: "Premium Invitation", desc: "For printing or digital sharing" },
{ title: "Popcorn Box", desc: "Guaranteed fun at snack time" },
{ title: "Name Bunting", desc: "Personalized decorative garland" },
{ title: "Digital Invitation", desc: "To send on WhatsApp" },
{ title: "Milk Box", desc: "A charming party favor" },
{ title: "Cupcake Wrapper", desc: "More style for the treats" },
{ title: "Table Centerpiece", desc: "An exclusive decorative arrangement" },
{ title: "Thank You Tag", desc: "Ready for the party favors" },
{ title: "Cupcake Topper", desc: "The character on every treat" },
{ title: "Wall Banner", desc: "Decoration that matches the theme" },
{ title: "Favor Bag", desc: "A favor every kid loves" },
{ title: "Party Hat", desc: "Fun, personalized and unique" },
{ title: "Double Chocolate Holder", desc: "A delicious, pretty favor" },
{ title: "Round Stickers", desc: "Perfect for jars and favors" },
{ title: "Cone Box", desc: "Different and super fun" },
{ title: "Table Display", desc: "Elegant labeling for the table" },
],
},
howItWorks: {
title1: "How the",
titleHighlight: "Magic",
title2: "Happens",
subtitle: "In just 3 simple steps you'll have an exclusive party kit that looks like it came out of a movie studio!",
steps: [
{ title: "Buy and Access the Platform", description: "After payment, you get a link by email to access our creation platform. That's where the magic happens — all online, nothing to install." },
{ title: "Create Your AI Character", description: "Inside the platform, upload the child's photo, pick the item and click generate. Our AI creates the exclusive 3D character in 2 to 5 minutes." },
{ title: "Download, Print and Decorate", description: "Download the PDF straight from the platform, sized just right. Take it to a print shop or print at home. The most beautiful party ever!" },
],
ctaText: "I Want to Start Now",
ctaSub: "Click here — it takes less than 2 minutes to create your account",
},
testimonials: {
badge: "💬 What parents are saying",
title1: "Families",
titleHighlight: "delighted.",
subtitle: "Over 10,000 parties created. See what they're saying.",
ctaText: "I Want to Make My Child's Party Too!",
ctaSub: "Click here and be the next delighted parent",
items: [
{ name: "Jessica Miller", message: "It turned out simply gorgeous! I didn't expect the images to be so perfect. My son loved seeing himself as a real party hero. Highly recommend! 🥰" },
{ name: "Ashley Carter", message: "Loved the result! It was super easy to do and the images came out amazing. My whole family commented and asked me to make theirs too 😍✨" },
{ name: "Megan Brooks", message: "What wonderful work! The artwork was so beautiful and gave a special touch to the celebration. My daughter was enchanted when she saw it 🎉" },
{ name: "Rachel Bennett", message: "Worth every penny! I got everything quickly and the image quality surprised me. It was better than I imagined 👏👏" },
{ name: "Stephanie Reed", message: "It was a hit at home! The photos looked super realistic and made the party even more special. My son loved the result 🎂🎈" },
{ name: "Nicole Hughes", message: "I'm in love! Everything turned out perfect, so polished and fun. I'll definitely do it again for the next parties 💕" },
],
},
offer: {
title1: "Create the best party",
titleHighlight: "your child has ever had.",
subtitle: "Get the starter pack and receive <strong>10 credits to choose and generate your favorite items</strong> from the catalog of 21 exclusive models, for a symbolic price.",
kitName: "The Magic Kit",
benefits: [
"Exclusive AI Character Creation",
"10 credits to choose and generate any items from the 21-model catalog (1 item = 1 credit)",
"Print-ready, pre-formatted PDF files",
"Instant access to the platform",
],
surprise: "Wow all your guests!",
packLabel: "Starter Pack",
priceCurrency: "$",
priceInteger: "6",
priceDecimals: ".99",
priceNote: "One-time payment. Instant access.",
freeImage: "Your first image is on us — it doesn't use any of your credits. It's your chance to see the magic before using the full pack.",
emailPlaceholder: "Your best email",
buttonIdle: "Get My Kit for $6.99",
buttonLoading: "Processing...",
secure: "100% secure checkout via Stripe.",
errEmpty: "Please enter your email.",
errInvalid: "Please enter a valid email.",
errCheckout: "Error opening checkout. Please try again.",
errConnection: "Connection error. Check your internet and try again.",
},
faq: {
title: "Frequently Asked Questions",
subtitle: "Everything you need to know.",
items: [
{ q: "Will I get the finished images by email?", a: "Not automatically — you create the artwork yourself on our online platform! After payment, you get a link by email to access the creation panel. There you upload your child's photo, choose the items and our AI generates each artwork in 2 to 5 minutes. You download everything directly from the platform. It's super simple and intuitive!" },
{ q: "How does the AI artwork generation work?", a: "After purchase, you'll get access to a panel where you upload 1 full-body photo of the child (preferably front-facing) and choose the theme. The first generated image is on us and doesn't use your credits! Our AI blends the child's face with the chosen theme perfectly in Pixar/Disney 3D style and generates all the stationery files." },
{ q: "Do I need any heavy software to print?", a: "Not at all! We deliver the files as print-ready PDFs at the exact size. You just open the file and click print, whether at home or at the nearest print shop." },
{ q: "How long until the kit is ready?", a: "The magical AI transformation and item generation take about 2 to 5 minutes. It's extremely fast and practical, perfect for those in a hurry." },
{ q: "If I can't print, will you help?", a: "Our support team is available on WhatsApp Monday to Friday to answer your questions and give all the technical help you need. But don't worry — we include quick tutorials with the material!" },
],
},
footer: {
disclaimer: "This site is not affiliated with Facebook or any Meta entity. Once you leave Facebook, responsibility lies with our site, not theirs.",
company: "MMV Comércio de Eletrônicos Ltda · CNPJ 47.082.683/0001-37",
rights: "All rights reserved.",
},
sticky: { cta: "Create My Party" },
};
const ES: typeof PT = {
nav: { cta: "Crear Kit Ahora" },
hero: {
badge: "La Fiesta del Año Llegó",
title1: "Convierte la foto de tu hijo",
title2: "en una",
titleHighlight: "¡Fiesta Mágica!",
subtitle: "Deja de perder horas buscando decoración. Sube una foto y nuestra IA crea, con la carita de tu hijo en estilo de personajes de cine, los artículos que elijas de un <strong>catálogo con 21 modelos exclusivos de Kit Digital</strong>! Listos para imprimir.",
statKits: "kits creados",
statArts: "artes generadas",
statRating: "valoración",
cta: "Crear Mi Fiesta Ahora",
aiGenerated: "Generado por IA",
realPhoto: "Foto real",
},
beforeAfter: {
badge: "Resultado real, sin mockup",
title1: "De cualquier foto a un",
titleHighlight: "personaje 3D mágico.",
subtitle: "Estos son ejemplos reales generados en nuestra plataforma — con fotos de verdad, sin edición manual. Mira la transformación suceder.",
realPhoto: "Foto real",
aiGenerated: "Generado por IA",
ctaText: "¡Quiero Crear el Mío Ahora!",
ctaSub: "Haz clic aquí y mira la transformación de tu hijo en minutos",
},
video: {
badge: "Míralo en vivo",
title1: "De la foto al kit de fiesta",
title2: "en menos de 5 minutos.",
subtitle: "Mira lo simple que es usar la plataforma — desde subir la foto hasta el PDF listo para imprimir.",
live: "EN VIVO",
statFamilies: "familias atendidas",
statArts: "artes generadas",
statRating: "valoración media",
statTime: "por arte generada",
ctaText: "¡Sí, Quiero Esto en la Fiesta de Mi Hijo!",
ctaSub: "Acceso inmediato tras el pago",
},
gallery: {
title1: "Mira la magia",
titleHighlight: "suceder.",
subtitle: "Artículos reales generados en nuestra plataforma — sin mockup, sin edición manual. Es exactamente lo que recibes listo para imprimir.",
ctaText: "¡Quiero Mi Kit Personalizado!",
ctaSub: "Haz clic aquí y elige los artículos que combinan con el tema de tu hijo",
items: [
{ title: "Toper de Pastel 3D", desc: "El centro de la mesa del pastel" },
{ title: "Panel de Fondo", desc: "Transforma el escenario de la fiesta" },
{ title: "Invitación Premium", desc: "Para imprimir o enviar digital" },
{ title: "Caja de Palomitas", desc: "Diversión garantizada en la merienda" },
{ title: "Banderines con Nombre", desc: "Guirnalda decorativa personalizada" },
{ title: "Invitación Digital", desc: "Para enviar por WhatsApp" },
{ title: "Caja Milk", desc: "Un recuerdo encantador" },
{ title: "Capacillo de Cupcake", desc: "Más estilo para los dulces" },
{ title: "Centro de Mesa", desc: "Arreglo decorativo exclusivo" },
{ title: "Etiqueta de Agradecimiento", desc: "Lista para los recuerdos" },
{ title: "Toper de Cupcake", desc: "El personaje en cada dulce" },
{ title: "Pancarta de Pared", desc: "Decoración con la cara del tema" },
{ title: "Bolsita Sorpresa", desc: "Recuerdo que todo niño ama" },
{ title: "Gorro de Fiesta", desc: "Divertido, personalizado y único" },
{ title: "Porta Chocolate Doble", desc: "Recuerdo delicioso y bonito" },
{ title: "Stickers Redondos", desc: "Ideales para frascos y recuerdos" },
{ title: "Caja Cono", desc: "Diferente y súper divertida" },
{ title: "Display de Mesa", desc: "Identificación elegante para la mesa" },
],
},
howItWorks: {
title1: "Cómo Sucede la",
titleHighlight: "Magia",
title2: "",
subtitle: "¡En solo 3 pasos simples tendrás un kit de fiesta exclusivo que parece salido de un estudio de cine!",
steps: [
{ title: "Compra y Accede a la Plataforma", description: "Tras el pago, recibes un enlace por correo para acceder a nuestra plataforma de creación. Ahí sucede la magia — todo online, sin instalar nada." },
{ title: "Crea tu Personaje con IA", description: "Dentro de la plataforma, sube la foto del niño, elige el artículo y haz clic en generar. Nuestra IA crea el personaje 3D exclusivo en 2 a 5 minutos." },
{ title: "Descarga, Imprime y Decora", description: "Descarga el PDF directo de la plataforma, listo en la medida exacta. Llévalo a la imprenta o imprime en casa. ¡La fiesta más linda que jamás tuvo!" },
],
ctaText: "Quiero Empezar Ahora",
ctaSub: "Haz clic aquí — toma menos de 2 minutos crear tu cuenta",
},
testimonials: {
badge: "💬 Lo que dicen las mamás",
title1: "Familias",
titleHighlight: "encantadas.",
subtitle: "Más de 10.000 fiestas creadas. Mira lo que están diciendo.",
ctaText: "¡Yo También Quiero Hacer la Fiesta de Mi Hijo!",
ctaSub: "Haz clic aquí y sé la próxima mamá encantada",
items: [
{ name: "Juliana Martínez", message: "¡Quedó simplemente hermoso! No esperaba que las fotos quedaran tan perfectas. Mi hijo amó verse como un verdadero héroe de la fiesta. ¡Lo recomiendo muchísimo! 🥰" },
{ name: "Camila Sánchez", message: "¡Amé el resultado! Fue súper fácil de hacer y las imágenes quedaron increíbles. Toda la familia comentó y me pidió que les hiciera también 😍✨" },
{ name: "Fernanda Ortiz", message: "¡Qué trabajo maravilloso! Las artes quedaron muy bonitas y dieron un toque especial a la celebración. Mi hija quedó encantada cuando las vio 🎉" },
{ name: "Patricia Álvarez", message: "¡Valió cada centavo! Recibí todo rapidísimo y la calidad de las imágenes me sorprendió. Quedó mejor de lo que imaginaba 👏👏" },
{ name: "Renata Castro", message: "¡Fue un éxito en casa! Las fotos quedaron súper realistas y dejaron la fiesta aún más especial. Mi hijo amó el resultado 🎂🎈" },
{ name: "Larissa Fuentes", message: "¡Estoy enamorada! Quedó todo perfecto, muy cuidado y divertido. Sin duda lo haré de nuevo para las próximas fiestas 💕" },
],
},
offer: {
title1: "Crea la mejor fiesta que",
titleHighlight: "tu hijo haya tenido.",
subtitle: "Adquiere el paquete inicial y recibe <strong>10 créditos para elegir y generar tus artículos favoritos</strong> del catálogo con 21 modelos exclusivos, por un valor simbólico.",
kitName: "El Kit Mágico",
benefits: [
"Creación del Personaje con IA Exclusivo",
"10 créditos para elegir y generar los artículos que quieras del catálogo de 21 modelos (1 artículo = 1 crédito)",
"Archivos PDF ya formateados, listos para imprimir",
"Acceso inmediato a la plataforma",
],
surprise: "¡Sorprende a todos los invitados!",
packLabel: "Paquete Inicial",
priceCurrency: "$",
priceInteger: "6",
priceDecimals: ".99",
priceNote: "Pago único. Acceso inmediato.",
freeImage: "Tu primera imagen es por nuestra cuenta — no consume ninguno de tus créditos. Es la oportunidad de ver la magia antes de usar el paquete completo.",
emailPlaceholder: "Tu mejor correo electrónico",
buttonIdle: "Quiero Mi Kit por $6.99",
buttonLoading: "Procesando...",
secure: "Compra 100% segura con Stripe.",
errEmpty: "Por favor, ingresa tu correo electrónico.",
errInvalid: "Por favor, ingresa un correo válido.",
errCheckout: "Error al abrir el pago. Inténtalo de nuevo.",
errConnection: "Error de conexión. Verifica tu internet e inténtalo de nuevo.",
},
faq: {
title: "Preguntas Frecuentes",
subtitle: "Todo lo que necesitas saber.",
items: [
{ q: "¿Recibiré las imágenes listas por correo?", a: "No automáticamente — ¡tú mismo creas las artes en nuestra plataforma online! Tras el pago, recibes un enlace por correo para acceder al panel de creación. Allí subes la foto de tu hijo, eliges los artículos y nuestra IA genera cada arte en 2 a 5 minutos. Descargas todo directamente de la plataforma. ¡Es súper simple e intuitivo!" },
{ q: "¿Cómo funciona la generación del arte con IA?", a: "Tras la compra, recibirás acceso a un panel donde subirás 1 foto de cuerpo entero del niño (de preferencia de frente) y elegirás el tema. ¡La primera foto generada es por nuestra cuenta y no gasta tus créditos! Nuestra IA fusionará la carita del niño con el tema elegido perfectamente en estilo Pixar/Disney 3D y generará todos los archivos de papelería." },
{ q: "¿Necesito algún programa pesado para imprimir?", a: "¡Para nada! Entregamos los archivos en formato PDF listo a la medida exacta. Solo abres el archivo y haces clic en imprimir, ya sea en casa o en la imprenta más cercana." },
{ q: "¿Cuánto tarda en estar listo el kit?", a: "La transformación mágica con IA y la generación de los artículos toman cerca de 2 a 5 minutos. Es extremadamente rápido y práctico, perfecto para quien tiene prisa." },
{ q: "Si no logro imprimir, ¿me ayudan?", a: "Nuestro equipo de soporte está disponible en WhatsApp de lunes a viernes para resolver tus dudas y dar todo el apoyo técnico necesario. ¡Pero tranquila, incluimos tutoriales rápidos junto al material!" },
],
},
footer: {
disclaimer: "Este sitio no está afiliado a Facebook ni a ninguna entidad de Meta. Una vez que sales de Facebook, la responsabilidad es de nuestro sitio y no de ellos.",
company: "MMV Comércio de Eletrônicos Ltda · CNPJ 47.082.683/0001-37",
rights: "Todos los derechos reservados.",
},
sticky: { cta: "Crear Mi Fiesta" },
};
const DICT: Record<Lang, typeof PT> = { pt: PT, en: EN, es: ES };
export function useT(): typeof PT {
return DICT[getLang()];
}