mirror of
https://github.com/lucasrcsantana/story-generator.git
synced 2025-12-16 21:37:51 +00:00
fix: Consolidando StudentDashbord
Some checks are pending
Docker Build and Push / build (push) Waiting to run
Some checks are pending
Docker Build and Push / build (push) Waiting to run
This commit is contained in:
parent
18cf6a2495
commit
e1a99f32f5
@ -1,106 +0,0 @@
|
||||
import React, { useState } from 'react';
|
||||
import { AudioRecorderDemo } from '../../components/demo/AudioRecorderDemo';
|
||||
import { ArrowRight, Sparkles } from 'lucide-react';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { analytics } from '../../lib/analytics';
|
||||
|
||||
export function DemoPage() {
|
||||
const navigate = useNavigate();
|
||||
const [demoResult, setDemoResult] = useState<{
|
||||
fluency?: number;
|
||||
accuracy?: number;
|
||||
confidence?: number;
|
||||
feedback?: string;
|
||||
} | null>(null);
|
||||
|
||||
const handleDemoComplete = (result: typeof demoResult) => {
|
||||
setDemoResult(result);
|
||||
// Rastreia quando o resultado é exibido
|
||||
if (result) {
|
||||
analytics.track('demo_completed', {
|
||||
fluency: result.fluency,
|
||||
accuracy: result.accuracy,
|
||||
confidence: result.confidence,
|
||||
has_feedback: !!result.feedback
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-gradient-to-b from-purple-50 to-white py-12">
|
||||
<div className="max-w-4xl mx-auto px-4">
|
||||
<div className="text-center mb-12">
|
||||
<h1 className="text-4xl font-bold text-gray-900 mb-4">
|
||||
Experimente Agora!
|
||||
</h1>
|
||||
<p className="text-xl text-gray-600">
|
||||
Grave um trecho de leitura e veja como nossa IA avalia seu desempenho
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="bg-white rounded-2xl shadow-xl p-8 mb-8">
|
||||
<div className="prose max-w-none mb-8">
|
||||
<h2>Texto Sugerido para Leitura:</h2>
|
||||
<blockquote className="text-lg text-gray-700 border-l-4 border-purple-300 pl-4">
|
||||
"O pequeno príncipe sentou-se numa pedra e levantou os olhos para o céu:
|
||||
— Pergunto-me se as estrelas são iluminadas para que cada um possa um dia encontrar a sua."
|
||||
</blockquote>
|
||||
</div>
|
||||
|
||||
<AudioRecorderDemo onAnalysisComplete={handleDemoComplete} />
|
||||
</div>
|
||||
|
||||
{demoResult && (
|
||||
<div className="bg-white rounded-2xl shadow-xl p-8 mb-8">
|
||||
<h2 className="text-2xl font-bold text-gray-900 mb-6 flex items-center gap-2">
|
||||
<Sparkles className="text-purple-600" />
|
||||
Resultado da Análise
|
||||
</h2>
|
||||
|
||||
<div className="grid md:grid-cols-3 gap-6 mb-8">
|
||||
<div className="bg-purple-50 rounded-xl p-6">
|
||||
<div className="text-3xl font-bold text-purple-600 mb-2">
|
||||
{demoResult.fluency}%
|
||||
</div>
|
||||
<div className="text-gray-600">Fluência</div>
|
||||
</div>
|
||||
|
||||
<div className="bg-purple-50 rounded-xl p-6">
|
||||
<div className="text-3xl font-bold text-purple-600 mb-2">
|
||||
{demoResult.accuracy}%
|
||||
</div>
|
||||
<div className="text-gray-600">Precisão</div>
|
||||
</div>
|
||||
|
||||
<div className="bg-purple-50 rounded-xl p-6">
|
||||
<div className="text-3xl font-bold text-purple-600 mb-2">
|
||||
{demoResult.confidence}%
|
||||
</div>
|
||||
<div className="text-gray-600">Confiança</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="bg-green-50 rounded-xl p-6 mb-8">
|
||||
<h3 className="text-lg font-semibold text-green-800 mb-2">
|
||||
Feedback da IA
|
||||
</h3>
|
||||
<p className="text-green-700">
|
||||
{demoResult.feedback}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="text-center">
|
||||
<button
|
||||
onClick={() => navigate('/register/school')}
|
||||
className="inline-flex items-center gap-2 px-6 py-3 bg-purple-600 text-white rounded-xl hover:bg-purple-700 transition"
|
||||
>
|
||||
Começar a Usar na Minha Escola
|
||||
<ArrowRight className="w-5 h-5" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@ -1,12 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
export function StudentDashboard(): JSX.Element {
|
||||
return (
|
||||
<div className="space-y-6">
|
||||
<h1 className="text-2xl font-bold text-gray-900">
|
||||
Bem-vindo ao Dashboard
|
||||
</h1>
|
||||
{/* Conteúdo do dashboard será implementado aqui */}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@ -1,71 +0,0 @@
|
||||
import { AvatarUpload } from "@/components/ui/avatar-upload";
|
||||
import { DatePicker } from "@/components/ui/date-picker";
|
||||
import { Input } from "@/components/ui/input";
|
||||
import { Select } from "@/components/ui/select";
|
||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@radix-ui/react-tabs";
|
||||
|
||||
export function StudentSettingsPage() {
|
||||
return (
|
||||
<div className="max-w-4xl mx-auto py-8 px-4">
|
||||
<h1 className="text-2xl font-bold text-gray-900 mb-6">
|
||||
Configurações do Perfil
|
||||
</h1>
|
||||
|
||||
{/* Seções em Tabs */}
|
||||
<Tabs defaultValue="personal">
|
||||
<TabsList>
|
||||
<TabsTrigger value="personal">Informações Pessoais</TabsTrigger>
|
||||
<TabsTrigger value="preferences">Preferências</TabsTrigger>
|
||||
<TabsTrigger value="accessibility">Acessibilidade</TabsTrigger>
|
||||
<TabsTrigger value="notifications">Notificações</TabsTrigger>
|
||||
</TabsList>
|
||||
|
||||
<TabsContent value="personal">
|
||||
<div className="space-y-6">
|
||||
{/* Avatar Upload */}
|
||||
<div className="flex items-center gap-4">
|
||||
<AvatarUpload />
|
||||
<div>
|
||||
<h3 className="font-medium">Foto do Perfil</h3>
|
||||
<p className="text-sm text-gray-500">
|
||||
JPG ou PNG, máximo 2MB
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Informações Básicas */}
|
||||
<div className="grid grid-cols-2 gap-4">
|
||||
<Input
|
||||
label="Nome Completo"
|
||||
name="fullName"
|
||||
placeholder="Seu nome completo"
|
||||
/>
|
||||
<Input
|
||||
label="Nome Social/Apelido"
|
||||
name="nickname"
|
||||
placeholder="Como prefere ser chamado"
|
||||
/>
|
||||
<DatePicker
|
||||
label="Data de Nascimento"
|
||||
name="birthDate"
|
||||
/>
|
||||
<Select
|
||||
label="Gênero"
|
||||
name="gender"
|
||||
options={[
|
||||
{ value: 'male', label: 'Masculino' },
|
||||
{ value: 'female', label: 'Feminino' },
|
||||
{ value: 'non_binary', label: 'Não-binário' },
|
||||
{ value: 'other', label: 'Outro' },
|
||||
{ value: 'prefer_not_to_say', label: 'Prefiro não dizer' }
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</TabsContent>
|
||||
|
||||
{/* Outras tabs... */}
|
||||
</Tabs>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user