import Link from "next/link"
import { BookOpen, PenTool, Library, ArrowRight } from "lucide-react"
import { getStudentClasses } from "@/modules/classes/data-access"
import { getStudentHomeworkAssignments } from "@/modules/homework/data-access"
import { getCurrentStudentUser } from "@/modules/users/data-access"
import { getTextbooks } from "@/modules/textbooks/data-access"
import { Card, CardContent, CardHeader, CardTitle } from "@/shared/components/ui/card"
import { EmptyState } from "@/shared/components/ui/empty-state"
import { UserX } from "lucide-react"
export const dynamic = "force-dynamic"
export default async function StudentLearningPage() {
const student = await getCurrentStudentUser()
if (!student) {
return (
)
}
const [classes, assignments, textbooks] = await Promise.all([
getStudentClasses(student.id),
getStudentHomeworkAssignments(student.id),
getTextbooks(),
])
const now = new Date()
const pendingCount = assignments.filter((a) => a.progressStatus !== "submitted" && a.progressStatus !== "graded").length
const dueSoonCount = assignments.filter((a) => {
if (a.progressStatus === "submitted" || a.progressStatus === "graded") return false
if (!a.dueAt) return false
const due = new Date(a.dueAt)
const in7Days = new Date(now)
in7Days.setDate(in7Days.getDate() + 7)
return due >= now && due <= in7Days
}).length
const cards = [
{
title: "Courses",
description: "Your enrolled classes.",
icon: BookOpen,
href: "/student/learning/courses",
stat: `${classes.length} enrolled`,
},
{
title: "Assignments",
description: "Homework and practice.",
icon: PenTool,
href: "/student/learning/assignments",
stat: `${pendingCount} pending${dueSoonCount > 0 ? ` ยท ${dueSoonCount} due soon` : ""}`,
},
{
title: "Textbooks",
description: "Browse course materials.",
icon: Library,
href: "/student/learning/textbooks",
stat: `${textbooks.length} available`,
},
]
return (
My Learning
Your learning hub: courses, assignments, and textbooks.
{cards.map((c) => (
{c.title}
{c.description}
))}
)
}