diff --git a/src/components/home/HomePage.tsx b/src/components/home/HomePage.tsx index 6f6ad64..2e127ea 100644 --- a/src/components/home/HomePage.tsx +++ b/src/components/home/HomePage.tsx @@ -4,54 +4,17 @@ import { BookOpen, ArrowRight, School, Users, Shield, Sparkles, BookCheck, Play, CheckCircle, Star, GraduationCap, BarChart, Brain, X, Check, - Pencil, - Wand, - Mic, - Share2 + Pencil, Wand, Mic, Share2 } from 'lucide-react'; import { Footer } from '@/components/ui/footer'; import { PlanForSchools } from '@/components/ui/plan-for-schools'; import { FAQ } from '@/components/ui/faq'; - -// Components -const FeatureCard = ({ icon, title, description }: { - icon: React.ReactNode; - title: string; - description: string; -}) => ( -
-
-
{icon}
-
-

{title}

-

{description}

-
-); - -const StatCard = ({ number, label }: { number: string; label: string }) => ( -
-
{number}
-
{label}
-
-); - -const TestimonialCard = ({ quote, author, role, image }: { - quote: string; - author: string; - role: string; - image: string; -}) => ( -
-
- {author} -
-
{author}
-
{role}
-
-
-

"{quote}"

-
-); +import { StatCard } from '@/components/ui/stat-card'; +import { TestimonialCard } from '@/components/ui/testimonial-card'; +import { FeatureCard } from '@/components/ui/feature-card'; +import { ProcessStep } from '@/components/ui/process-step'; +import { InfoCard } from '@/components/ui/info-card'; +import { ComparisonSection } from '@/components/ui/comparison-section'; const navigation = [ { name: 'Início', href: '/' }, @@ -131,7 +94,7 @@ export function HomePage() { {/* Hero Section */} -
+
@@ -201,7 +164,7 @@ export function HomePage() {
{/* Student Journey Section */} -
+

@@ -212,136 +175,77 @@ export function HomePage() {

-
- {/* Timeline Line */} -
+
+ - {/* Timeline Items */} - {[ - { - icon: , - title: "Criação Personalizada", - description: "O aluno cria uma história baseada em seus interesses e características pessoais", - image: "/journey/create-story.png" - }, - { - icon: , - title: "Geração por IA", - description: "Nossa IA avançada gera uma história única e personalizada", - image: "/journey/ai-generation.png" - }, - { - icon: , - title: "Gravação de Áudio", - description: "O aluno grava sua voz lendo a história criada", - image: "/journey/audio-recording.png" - }, - { - icon: , - title: "Análise de Leitura", - description: "A IA analisa a leitura e fornece feedback detalhado sobre o desempenho", - image: "/journey/reading-analysis.png" - }, - { - icon: , - title: "Compartilhamento de Resultados", - description: "Dados e insights são compartilhados com pais, professores e escola", - image: "/journey/share-results.png" - } - ].map((item, index) => ( -
-
- {/* Content Side */} -
-
-
-
- {item.icon} -
-

- {item.title} -

-
-

- {item.description} -

-
-
+ - {/* Timeline Marker */} -
-
- {index + 1} -
-
+ - {/* Image Side */} -
- {item.title} -
-
-
- ))} -
- - {/* Results Summary */} -
-
-

- Resultados Comprovados -

-

- Nossa abordagem inovadora tem transformado a experiência de leitura -

-
- -
- {[ - { - number: "95%", - label: "Melhoria na fluência de leitura" - }, - { - number: "87%", - label: "Aumento no engajamento" - }, - { - number: "92%", - label: "Satisfação dos pais" - }, - { - number: "3x", - label: "Mais histórias lidas por aluno" - } - ].map((stat, index) => ( -
-
- {stat.number} -
-

- {stat.label} -

-
- ))} -
+
- {/* Features Grid */} -
-
-
+ {/* Results Summary */} +
+
+
+

+ Resultados Comprovados +

+

+ Nossa abordagem inovadora tem transformado a experiência de leitura +

+
+ +
+ + + + +
+
+ + {/* Features Grid */} +
+

Tecnologia e Educação em Harmonia

@@ -351,180 +255,152 @@ export function HomePage() {
- } + - } + - } + - } + - } + - } +
-
- {/* Before & After Section */} -
-
-
-

- Transforme a Experiência de Aprendizagem -

-

- Veja como o Histórias Mágicas revoluciona o ensino -

-
- -
- {/* Before */} -
-
-
- -
-

Antes

-
-
    - {[ - 'Conteúdo padronizado que não atende necessidades individuais', - 'Alunos desmotivados com material didático tradicional', - 'Professores sobrecarregados com correções manuais', - 'Dificuldade em acompanhar o progresso individual', - 'Baixo engajamento nas atividades de leitura e escrita', - 'Falta de dados para tomada de decisão pedagógica' - ].map((item, index) => ( -
  • -
    - -
    - {item} -
  • - ))} -
-
- - {/* After */} -
-
-
- -
-

Depois

-
-
    - {[ - 'Histórias adaptativas que evoluem com cada aluno', - 'Estudantes engajados com conteúdo personalizado', - 'Correção automática com feedback instantâneo', - 'Dashboard em tempo real do progresso individual', - 'Aumento de 300% no engajamento com leitura', - 'Insights precisos para intervenções pedagógicas' - ].map((item, index) => ( -
  • -
    - -
    - {item} -
  • - ))} -
-
- - {/* Results Preview */} -
-
-
-
-
300%
-

Aumento no engajamento

-
-
-
85%
-

Melhoria no desempenho

-
-
-
50%
-

Redução da carga dos professores

-
-
-
-
-
+ {/* Before & After Section */} +
+
-
- {/* Pricing */} -
- -
+ {/* Testimonials */} +
+ + +
- {/* FAQ */} - + {/* Pricing Section */} +
+ +
- {/* Final CTA */} -
-
-
-

+ {/* FAQ Section */} +
+ +
+ + {/* Final CTA */} +
+
+

Pronto para Transformar sua Escola?

-

+

Junte-se a mais de 1000 escolas que já estão revolucionando a educação

- @@ -536,4 +412,6 @@ export function HomePage() {
); -} \ No newline at end of file +} + +export default HomePage; \ No newline at end of file diff --git a/src/components/ui/comparison-section.tsx b/src/components/ui/comparison-section.tsx new file mode 100644 index 0000000..654b416 --- /dev/null +++ b/src/components/ui/comparison-section.tsx @@ -0,0 +1,81 @@ +import React from 'react'; +import { X, CheckCircle } from 'lucide-react'; + +interface ComparisonItem { + title: string; + without: string[]; + with: string[]; +} + +interface ComparisonSectionProps { + title: string; + items: ComparisonItem[]; +} + +export function ComparisonSection({ title, items }: ComparisonSectionProps) { + return ( +
+
+

+ {title} +

+ +
+ {/* Sem Histórias Mágicas */} +
+
+
+ +
+

+ Sem Histórias Mágicas +

+
+ + {items.map((category, index) => ( +
+

{category.title}

+
    + {category.without.map((item, idx) => ( +
  • + + {item} +
  • + ))} +
+
+ ))} +
+ + {/* Com Histórias Mágicas */} +
+
+
+ +
+

+ Com Histórias Mágicas +

+
+ + {items.map((category, index) => ( +
+

{category.title}

+
    + {category.with.map((item, idx) => ( +
  • + + {item} +
  • + ))} +
+
+ ))} +
+
+
+
+ ); +} \ No newline at end of file diff --git a/src/components/ui/feature-card.tsx b/src/components/ui/feature-card.tsx new file mode 100644 index 0000000..36c19be --- /dev/null +++ b/src/components/ui/feature-card.tsx @@ -0,0 +1,41 @@ +import React from 'react'; +import { LucideIcon } from 'lucide-react'; + +interface FeatureCardProps { + icon: LucideIcon; + title: string; + items?: string[]; + description?: string; + borderColor?: string; + iconColor?: string; +} + +export function FeatureCard({ + icon: Icon, + title, + items, + description, + borderColor = 'border-purple-200', + iconColor = 'text-purple-600' +}: FeatureCardProps) { + return ( +
+
+ +
+

{title}

+ {description && ( +

{description}

+ )} + {items && items.length > 0 && ( +
    + {items.map((item, index) => ( +
  • + {item} +
  • + ))} +
+ )} +
+ ); +} \ No newline at end of file diff --git a/src/components/ui/info-card.tsx b/src/components/ui/info-card.tsx new file mode 100644 index 0000000..70135d1 --- /dev/null +++ b/src/components/ui/info-card.tsx @@ -0,0 +1,67 @@ +import React from 'react'; +import { LucideIcon } from 'lucide-react'; + +interface InfoCardProps { + title: string; + description?: string; + result?: string; + icon?: LucideIcon; + items?: string[]; + bgColor?: string; + titleColor?: string; + textColor?: string; + resultColor?: string; + iconColor?: string; +} + +export function InfoCard({ + title, + description, + result, + icon: Icon, + items, + bgColor = 'bg-white', + titleColor = 'text-gray-900', + textColor = 'text-gray-600', + resultColor = 'text-purple-600', + iconColor = 'text-purple-600', +}: InfoCardProps) { + return ( +
+ {/* Icon */} + {Icon && ( +
+
+ +
+
+ )} + + {/* Title */} +

{title}

+ + {/* Description */} + {description && ( +

{description}

+ )} + + {/* Result */} + {result && ( +
+

+ Resultado: {result} +

+
+ )} + + {/* Items List */} + {items && items.length > 0 && ( +
    + {items.map((item, index) => ( +
  • {item}
  • + ))} +
+ )} +
+ ); +} \ No newline at end of file diff --git a/src/components/ui/process-step.tsx b/src/components/ui/process-step.tsx new file mode 100644 index 0000000..5ac6f3c --- /dev/null +++ b/src/components/ui/process-step.tsx @@ -0,0 +1,34 @@ +import React from 'react'; + +interface ProcessStepProps { + number: number; + title: string; + description: string; +} + +export function ProcessStep({ + number, + title, + description, +}: ProcessStepProps) { + return ( +
+ {/* Número */} +
+
+ {number} +
+
+ + {/* Conteúdo */} +
+

+ {title} +

+

+ {description} +

+
+
+ ); +} \ No newline at end of file diff --git a/src/components/ui/stat-card.tsx b/src/components/ui/stat-card.tsx new file mode 100644 index 0000000..e28c659 --- /dev/null +++ b/src/components/ui/stat-card.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import { LucideIcon } from 'lucide-react'; + +interface StatCardProps { + icon: LucideIcon; + title: string; + value: string; + description: string; + valueColor?: string; + iconBgColor?: string; + iconColor?: string; +} + +export function StatCard({ + icon: Icon, + title, + value, + description, + valueColor = 'text-purple-600', + iconBgColor = 'bg-purple-600', + iconColor = 'text-white', +}: StatCardProps) { + return ( +
+
+ +
+

{title}

+

{value}

+

{description}

+
+ ); +} \ No newline at end of file diff --git a/src/components/ui/testimonial-card.tsx b/src/components/ui/testimonial-card.tsx new file mode 100644 index 0000000..81440ad --- /dev/null +++ b/src/components/ui/testimonial-card.tsx @@ -0,0 +1,67 @@ +import React from 'react'; +import { Heart } from 'lucide-react'; + +interface TestimonialCardProps { + quote: string; + author: string; + role: string; + image?: string; + magicMoment?: string; + result?: string; + borderColor?: string; + quoteColor?: string; + authorColor?: string; +} + +export function TestimonialCard({ + quote, + author, + role, + image, + magicMoment, + result, + borderColor = 'border-purple-200', + quoteColor = 'text-gray-600', + authorColor = 'text-gray-900' +}: TestimonialCardProps) { + return ( +
+ {image && ( +
+ {`Foto +
+ +
+
+ )} + +

"{quote}"

+ +
+ {image && ( + {author} + )} +
+

{author}

+

{role}

+
+
+ + {(magicMoment || result) && ( +
+

+ {magicMoment ? `✨ Momento mágico: ${magicMoment}` : `🎯 Resultado: ${result}`} +

+
+ )} +
+ ); +} \ No newline at end of file