import React from 'react'; import { Plus, BookOpen, Clock, TrendingUp, Award } from 'lucide-react'; import { useNavigate } from 'react-router-dom'; import { supabase } from '../../lib/supabase'; import type { Story, Student } from '../../types/database'; interface DashboardMetrics { totalStories: number; averageReadingFluency: number; totalReadingTime: number; currentLevel: number; } export function StudentDashboardPage() { const navigate = useNavigate(); const [student, setStudent] = React.useState(null); const [stories, setStories] = React.useState([]); const [metrics, setMetrics] = React.useState({ totalStories: 0, averageReadingFluency: 0, totalReadingTime: 0, currentLevel: 1 }); const [loading, setLoading] = React.useState(true); const [error, setError] = React.useState(null); React.useEffect(() => { const fetchDashboardData = async () => { try { const { data: { session } } = await supabase.auth.getSession(); if (!session?.user?.id) return; // Buscar dados do aluno const { data: studentData, error: studentError } = await supabase .from('students') .select(` *, class:classes(name, grade), school:schools(name) `) .eq('id', session.user.id) .single(); if (studentError) throw studentError; setStudent(studentData); // Buscar histórias do aluno const { data: storiesData, error: storiesError } = await supabase .from('stories') .select('*') .eq('student_id', session.user.id) .order('created_at', { ascending: false }) .limit(6); if (storiesError) throw storiesError; setStories(storiesData || []); // Calcular métricas // Em produção: Implementar cálculos reais baseados nos dados setMetrics({ totalStories: storiesData?.length || 0, averageReadingFluency: 85, // Exemplo totalReadingTime: 120, // Exemplo: 120 minutos currentLevel: 3 // Exemplo }); } catch (err) { console.error('Erro ao carregar dashboard:', err); setError('Não foi possível carregar seus dados'); } finally { setLoading(false); } }; fetchDashboardData(); }, []); if (loading) { return (
{[...Array(4)].map((_, i) => (
))}
{[...Array(6)].map((_, i) => (
))}
); } if (error) { return (
{error}
); } return (
{/* Cabeçalho */}
{student?.avatar_url ? ( {student.name} ) : ( {student?.name?.charAt(0)} )}

{student?.name}

{student?.class?.name} - {student?.class?.grade} • {student?.school?.name}

{/* Métricas */}

Total de Histórias

{metrics.totalStories}

Fluência Média

{metrics.averageReadingFluency}%

Tempo de Leitura

{metrics.totalReadingTime}min

Nível Atual

{metrics.currentLevel}

{/* Histórias Recentes */}

Histórias Recentes

{stories.length === 0 ? (

Nenhuma história ainda

Comece sua jornada criando sua primeira história!

) : (
{stories.map((story) => (
navigate(`/aluno/historias/${story.id}`)} > {story.content?.pages?.[0]?.image && ( {story.title} )}

{story.title}

{new Date(story.created_at).toLocaleDateString()} {story.status === 'published' ? 'Publicada' : 'Rascunho'}
))}
)}
); }