import React from 'react'; import { Plus, Search, MoreVertical, GraduationCap } from 'lucide-react'; import { useNavigate } from 'react-router-dom'; import { useDatabase } from '../../../hooks/useDatabase'; import { supabase } from '../../../lib/supabase'; import type { Class } from '../../../types/database'; export function ClassesPage() { const navigate = useNavigate(); const [classes, setClasses] = React.useState([]); const [searchTerm, setSearchTerm] = React.useState(''); const [loading, setLoading] = React.useState(true); const [error, setError] = React.useState(null); React.useEffect(() => { const fetchClasses = async () => { try { const { data: { session } } = await supabase.auth.getSession(); if (!session?.user?.id) return; const { data, error } = await supabase .from('classes') .select(` *, students:students(count), teachers:teacher_classes(count) `) .eq('school_id', session.user.id); if (error) throw error; setClasses(data || []); } catch (err) { console.error('Erro ao buscar turmas:', err); setError('Erro ao buscar turmas'); } finally { setLoading(false); } }; fetchClasses(); }, []); const filteredClasses = classes.filter(classItem => classItem.name.toLowerCase().includes(searchTerm.toLowerCase()) || classItem.grade.toLowerCase().includes(searchTerm.toLowerCase()) ); return (

Turmas

{error && (
{error}
)}
setSearchTerm(e.target.value)} className="w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-purple-500 focus:border-purple-500" />
{loading ? (
Carregando...
) : filteredClasses.length === 0 ? (
{searchTerm ? 'Nenhuma turma encontrada' : 'Nenhuma turma cadastrada'}
) : (
{filteredClasses.map((classItem) => (
navigate(`/dashboard/turmas/${classItem.id}`)} >

{classItem.name}

{classItem.grade} • {(classItem as any).students?.count || 0} alunos
Ativo
))}
)}
); }