fix: Consolidando StudentDashbord
Some checks are pending
Docker Build and Push / build (push) Waiting to run

This commit is contained in:
Lucas Santana 2025-01-17 17:25:30 -03:00
parent 18cf6a2495
commit e1a99f32f5
3 changed files with 0 additions and 189 deletions

View File

@ -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>
);
}

View File

@ -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>
);
}

View File

@ -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>
);
}