import { useState } from "react"; import { getState } from "@/lib/db"; import { getUserLessons, getLessonProgress } from "@/actions/srs"; import { Button } from "@/components/ui/button"; import { Card } from "@/components/ui/card"; import { Progress } from "@/components/ui/progress"; // This is a server component that gets the initial data export default async function LessonsPage() { const state = getState(null); const userId = state.user?.id; // If not logged in, show login required message if (!userId) { return (

Login Required

You need to be logged in to view your lessons.

); } // Get user lessons data let lessons; try { lessons = await getUserLessons(userId); } catch (error) { console.error("Error fetching lessons:", error); } return (

Your Lessons

{!lessons || lessons.length === 0 ? ( ) : (
{lessons.map((lesson) => ( ))}
)}
); } // Component to display when no lessons are found function NoLessonsFound() { return (

No Lessons Found

You don't have any lessons available yet.

); } // Component to display a lesson card function LessonCard({ lesson, userId }: { lesson: any; userId: number }) { const [isHovered, setIsHovered] = useState(false); // Calculate progress percentage const progressPercentage = lesson.progress || 0; // Determine progress color const getProgressColor = (percentage: number) => { if (percentage >= 80) return "bg-green-500"; if (percentage >= 50) return "bg-yellow-500"; return "bg-blue-500"; }; return ( setIsHovered(true)} onMouseLeave={() => setIsHovered(false)} >

{lesson.name}

{lesson.description || "No description available."}

{lesson.masteredCards} / {lesson.totalCards} cards
{lesson.dueCards} due
); }