metaads-pro/src/app/page.tsx
Marcio Bevervanso 234314d1c6 Publish MetaAds Pro: AI-driven Meta Ads campaign management dashboard
Full app with AI campaign creation/copy/creative generation, dashboard,
campaign automation engine, Meta OAuth login, and a redesigned landing page.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 19:30:33 -03:00

209 lines
9.4 KiB
TypeScript

'use client';
import Link from 'next/link';
import { motion } from 'framer-motion';
import { Wand2, Activity, Shield, History, ArrowRight, Sparkles } from 'lucide-react';
import { PublicHeader } from '@/components/public/PublicHeader';
import { PublicFooter } from '@/components/public/PublicFooter';
import { FloatingOrbs } from '@/components/public/FloatingOrbs';
import { LiveChartMock } from '@/components/public/LiveChartMock';
import { HowItWorks } from '@/components/public/HowItWorks';
import { StatsStrip } from '@/components/public/StatsStrip';
import { ScrollReveal } from '@/components/public/ScrollReveal';
const features = [
{
icon: Wand2,
title: 'Criação de campanhas com IA',
description: 'Cole o link do seu site (ou descreva seu produto) e a IA detecta o nicho, monta a copy, gera imagens e configura toda a campanha sozinha.',
},
{
icon: Activity,
title: 'Auditoria automática de anúncios',
description: 'A IA lê suas campanhas ativas, analisa métricas (CTR, CPC, ROAS) e sugere os próximos passos com linguagem clara, sem jargão.',
},
{
icon: Shield,
title: 'Automação por regras',
description: 'Defina regras de orçamento e performance — pausar, escalar ou ajustar lances automaticamente conforme os resultados chegam.',
},
{
icon: History,
title: 'Histórico que nunca se perde',
description: 'Toda copy, criativo e configuração gerados ficam salvos — mesmo se a publicação falhar, você retoma de onde parou.',
},
];
const fadeUp = {
hidden: { opacity: 0, y: 24 },
show: (i: number) => ({
opacity: 1,
y: 0,
transition: { duration: 0.7, delay: 0.1 + i * 0.12, ease: 'easeOut' as const },
}),
};
export default function LandingPage() {
return (
<div className="min-h-screen flex flex-col" style={{ background: 'var(--background)', color: 'var(--foreground)' }}>
<PublicHeader />
<main className="flex-1">
{/* Hero */}
<section className="relative overflow-hidden">
<div className="absolute inset-0 bg-grid-pattern opacity-30" />
<FloatingOrbs />
<div className="relative z-10 max-w-6xl mx-auto px-6 py-20 md:py-28 grid lg:grid-cols-[1.1fr_0.9fr] gap-14 items-center">
<div className="text-center lg:text-left">
<motion.div
custom={0}
initial="hidden"
animate="show"
variants={fadeUp}
className="inline-flex items-center gap-2 px-4 py-1.5 rounded-full text-xs font-medium mb-6"
style={{ background: 'var(--overlay-04)', border: '1px solid var(--overlay-08)', color: 'var(--accent-hover)' }}
>
<motion.span
animate={{ rotate: [0, 15, -10, 0] }}
transition={{ duration: 2.4, repeat: Infinity, ease: 'easeInOut' }}
className="inline-flex"
>
<Sparkles size={14} />
</motion.span>
Tráfego pago no Meta, no piloto automático
</motion.div>
<motion.h1
custom={1}
initial="hidden"
animate="show"
variants={fadeUp}
className="text-4xl md:text-6xl font-bold leading-tight mb-6"
>
Crie, publique e otimize campanhas no <span className="gradient-text">Meta Ads</span> com IA autônoma
</motion.h1>
<motion.p
custom={2}
initial="hidden"
animate="show"
variants={fadeUp}
className="text-base md:text-lg max-w-xl mx-auto lg:mx-0 mb-10"
style={{ color: 'var(--muted-fg)' }}
>
O MetaAds Pro conecta direto com sua conta do Facebook Ads, entende seu produto a partir de um link
ou descrição, e monta campanhas profissionais copy, criativos, segmentação e configuração sem você
precisar preencher um formulário gigante.
</motion.p>
<motion.div
custom={3}
initial="hidden"
animate="show"
variants={fadeUp}
className="flex flex-col sm:flex-row items-center justify-center lg:justify-start gap-4"
>
<Link href="/login" className="group">
<motion.span
whileHover={{ scale: 1.04 }}
whileTap={{ scale: 0.97 }}
className="flex items-center gap-2 px-6 py-3.5 rounded-xl font-semibold text-white transition-shadow duration-300"
style={{ background: 'linear-gradient(135deg, #6366f1, #8b5cf6)', boxShadow: '0 8px 32px rgba(99,102,241,0.3)' }}
>
Começar agora
<ArrowRight size={18} className="transition-transform group-hover:translate-x-1" />
</motion.span>
</Link>
<Link href="#features">
<motion.span
whileHover={{ scale: 1.04 }}
whileTap={{ scale: 0.97 }}
className="inline-flex px-6 py-3.5 rounded-xl font-medium"
style={{ background: 'var(--overlay-04)', border: '1px solid var(--overlay-08)', color: 'var(--foreground)' }}
>
Ver como funciona
</motion.span>
</Link>
</motion.div>
</div>
<div className="flex justify-center lg:justify-end">
<LiveChartMock />
</div>
</div>
</section>
<StatsStrip />
<HowItWorks />
{/* Features */}
<section id="features" className="max-w-6xl mx-auto px-6 py-20">
<ScrollReveal className="text-center mb-14">
<h2 className="text-2xl md:text-3xl font-bold mb-3">Tudo que você precisa para escalar no Meta Ads</h2>
<p className="text-sm md:text-base max-w-xl mx-auto" style={{ color: 'var(--muted-fg)' }}>
Conectado via integração oficial da Meta você mantém o controle total da sua conta de anúncios.
</p>
</ScrollReveal>
<div className="grid sm:grid-cols-2 gap-5">
{features.map((feature, i) => {
const Icon = feature.icon;
return (
<ScrollReveal key={feature.title} delay={i * 0.1}>
<motion.div
whileHover={{ y: -4 }}
transition={{ type: 'spring', stiffness: 300, damping: 20 }}
className="glass-card p-6 h-full"
>
<div className="w-11 h-11 rounded-xl flex items-center justify-center mb-4" style={{ background: 'rgba(99,102,241,0.12)', border: '1px solid rgba(99,102,241,0.2)' }}>
<Icon size={20} style={{ color: 'var(--accent-soft-fg)' }} />
</div>
<h3 className="text-base font-semibold mb-2" style={{ color: 'var(--foreground)' }}>{feature.title}</h3>
<p className="text-sm leading-relaxed" style={{ color: 'var(--muted-fg)' }}>{feature.description}</p>
</motion.div>
</ScrollReveal>
);
})}
</div>
</section>
{/* CTA */}
<section className="max-w-4xl mx-auto px-6 pb-24">
<ScrollReveal>
<div className="gradient-border relative overflow-hidden">
<motion.div
className="absolute inset-0 opacity-40"
style={{ background: 'radial-gradient(circle at 30% 20%, rgba(99,102,241,0.25), transparent 60%)' }}
animate={{ opacity: [0.25, 0.5, 0.25] }}
transition={{ duration: 4, repeat: Infinity, ease: 'easeInOut' }}
/>
<div className="relative p-10 text-center rounded-2xl" style={{ background: 'var(--card)', backdropFilter: 'blur(20px)' }}>
<h2 className="text-2xl font-bold mb-3">Pronto para automatizar suas campanhas?</h2>
<p className="text-sm mb-7 max-w-lg mx-auto" style={{ color: 'var(--muted-fg)' }}>
Conecte sua conta do Facebook em segundos e deixe a IA cuidar do trabalho pesado da estratégia à publicação.
</p>
<Link href="/login">
<motion.span
whileHover={{ scale: 1.04 }}
whileTap={{ scale: 0.97 }}
className="inline-flex items-center gap-2 px-6 py-3.5 rounded-xl font-semibold text-white"
style={{ background: 'linear-gradient(135deg, #1877F2, #0C63D4)', boxShadow: '0 4px 20px rgba(24,119,242,0.3)' }}
>
<svg width="18" height="18" viewBox="0 0 24 24" fill="white">
<path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/>
</svg>
Entrar com Facebook
</motion.span>
</Link>
</div>
</div>
</ScrollReveal>
</section>
</main>
<PublicFooter />
</div>
);
}