Spaces:
Build error
Build error
File size: 7,292 Bytes
a187dbb a8b4336 a187dbb a8b4336 a187dbb a8b4336 a187dbb a8b4336 a187dbb a8b4336 a187dbb a8b4336 a187dbb a8b4336 a187dbb a8b4336 a187dbb a8b4336 a187dbb a8b4336 a187dbb a8b4336 a187dbb a8b4336 a187dbb a8b4336 a187dbb a8b4336 a187dbb a8b4336 a187dbb a8b4336 a187dbb a8b4336 a187dbb a8b4336 a187dbb a8b4336 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
import { useState, useEffect } from 'react'
import Link from 'next/link'
import { motion } from 'framer-motion'
import { HiSparkles, HiArrowRight, HiBookOpen, HiLightningBolt, HiPlay } from 'react-icons/hi'
export default function Hero() {
const [mounted, setMounted] = useState(false)
useEffect(() => {
setMounted(true)
}, [])
const stats = [
{ number: '50+', label: 'Prompts Especializados', delay: 0.1 },
{ number: '3', label: 'Áreas de Atuação', delay: 0.2 },
{ number: '100%', label: 'Gratuito', delay: 0.3 }
]
const floatingCards = [
{
icon: HiBookOpen,
title: 'Prompts Jurídicos',
description: 'Peticionamento, petições e contratos',
delay: 0.4,
position: { top: '-2rem', left: '-2rem' }
},
{
icon: HiLightningBolt,
title: 'Concursos Públicos',
description: 'Estudo e revisão direcionada',
delay: 0.6,
position: { top: '4rem', right: '-2rem' }
},
{
icon: HiSparkles,
title: 'Administrativo',
description: 'Gestão e organização',
delay: 0.8,
position: { bottom: '2rem', left: '1rem' }
}
]
if (!mounted) {
return (
<section className="relative bg-gradient-to-br from-primary-600 via-primary-700 to-primary-800 text-white overflow-hidden min-h-screen flex items-center">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-20">
<div className="text-center">
<div className="animate-pulse">
<div className="h-12 bg-white/20 rounded-lg mb-6 w-96 mx-auto"></div>
<div className="h-8 bg-white/20 rounded-lg mb-4 w-3/4 mx-auto"></div>
<div className="h-6 bg-white/20 rounded-lg mb-8 w-1/2 mx-auto"></div>
</div>
</div>
</div>
</section>
)
}
return (
<section className="relative bg-gradient-to-br from-primary-600 via-primary-700 to-primary-800 text-white overflow-hidden">
{/* Background Pattern */}
<div className="absolute inset-0 bg-pattern opacity-10" aria-hidden="true"></div>
<div className="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-20 lg:py-32">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
{/* Content */}
<motion.div
initial={{ opacity: 0, y: 30 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.8 }}
className="text-center lg:text-left"
>
<motion.div
className="flex items-center justify-center lg:justify-start space-x-2 mb-6"
initial={{ opacity: 0, scale: 0.8 }}
animate={{ opacity: 1, scale: 1 }}
transition={{ delay: 0.2, duration: 0.6 }}
>
<HiSparkles className="h-6 w-6 text-accent-400" aria-hidden="true" />
<span className="text-accent-400 font-semibold">IA para Profissionais</span>
</motion.div>
<motion.h1
className="text-4xl lg:text-6xl font-bold mb-6 leading-tight"
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ delay: 0.3, duration: 0.8 }}
>
Transforme sua Prática
<span className="text-accent-400"> Jurídica e Administrativa</span> com IA
</motion.h1>
<motion.p
className="text-xl lg:text-2xl text-primary-100 mb-8 leading-relaxed"
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ delay: 0.4, duration: 0.8 }}
>
Aprenda a usar Inteligência Artificial no dia a dia de escritórios jurídicos,
administrativos e nos seus estudos para concursos públicos.
</motion.p>
<motion.div
className="flex flex-col sm:flex-row space-y-4 sm:space-y-0 sm:space-x-4 justify-center lg:justify-start"
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ delay: 0.5, duration: 0.8 }}
>
<Link href="/prompts" className="btn-primary flex items-center justify-center space-x-2 group">
<HiBookOpen className="h-5 w-5 group-hover:scale-110 transition-transform duration-200" aria-hidden="true" />
<span>Biblioteca de Prompts</span>
<HiArrowRight className="h-5 w-5 group-hover:translate-x-1 transition-transform duration-200" aria-hidden="true" />
</Link>
<button
className="btn-secondary flex items-center justify-center space-x-2 text-white border-white hover:bg-white hover:text-primary-700 group"
onClick={() => {
const element = document.querySelector('#sobre')
if (element) element.scrollIntoView({ behavior: 'smooth' })
>
<HiPlay className="h-5 w-5 group-hover:scale-110 transition-transform duration-200" aria-hidden="true" />
<span>Como Funciona</span>
</button>
</motion.div>
{/* Stats */}
<motion.div
className="grid grid-cols-3 gap-6 mt-12 pt-8 border-t border-primary-500"
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ delay: 0.6, duration: 0.8 }}
>
{stats.map((stat, index) => (
<motion.div
key={index}
className="text-center"
initial={{ opacity: 0, scale: 0.8 }}
animate={{ opacity: 1, scale: 1 }}
transition={{ delay: stat.delay, duration: 0.6 }}
>
<div className="text-2xl font-bold text-accent-400">{stat.number}</div>
<div className="text-sm text-primary-200">{stat.label}</div>
</motion.div>
))}
</motion.div>
</motion.div>
{/* Floating Cards */}
<div className="hidden lg:block relative">
{floatingCards.map((card, index) => (
<motion.div
key={index}
className="absolute glass-effect rounded-xl p-6 border border-white/20 animate-float"
style={card.position}
initial={{ opacity: 0, scale: 0.8 }}
animate={{ opacity: 1, scale: 1 }}
transition={{ delay: card.delay, duration: 0.8 }}
whileHover={{ scale: 1.05 }}
>
<div className="flex items-center space-x-3">
<div className="bg-accent-500 p-2 rounded-lg">
<card.icon className="h-5 w-5 text-white" aria-hidden="true" />
</div>
<div>
<div className="font-semibold">{card.title}</div>
<div className="text-sm text-primary-200">{card.description}</div>
</div>
</div>
</motion.div>
))}
</div>
</div>
</div>
</section>
)
} |