"use client"; import { useEffect, useMemo, useState } from "react"; import Link from "next/link"; import { getTeacherCourses, teacherCoursesUpdatedEventName } from "@/lib/data/teacherCourses"; import type { Course } from "@/types/course"; type UploadAsset = { id: string; fileName: string; type: "video" | "pdf" | "audio"; duration?: string; size: string; uploadedAt: string; }; const mockAssets: UploadAsset[] = [ { id: "asset-1", fileName: "contracts-intro-v1.mp4", type: "video", duration: "08:34", size: "48 MB", uploadedAt: "2026-02-01" }, { id: "asset-2", fileName: "clause-red-flags.mp4", type: "video", duration: "12:12", size: "66 MB", uploadedAt: "2026-02-03" }, { id: "asset-3", fileName: "brief-writing-reference.pdf", type: "pdf", size: "2.3 MB", uploadedAt: "2026-02-05" }, ]; export default function TeacherUploadsLibraryClient() { const [courses, setCourses] = useState([]); const [selectedCourseByAsset, setSelectedCourseByAsset] = useState>({}); const [selectedLessonByAsset, setSelectedLessonByAsset] = useState>({}); const [message, setMessage] = useState(null); useEffect(() => { const load = () => setCourses(getTeacherCourses()); load(); window.addEventListener(teacherCoursesUpdatedEventName, load); return () => window.removeEventListener(teacherCoursesUpdatedEventName, load); }, []); const lessonOptionsByCourse = useMemo(() => { const map: Record> = {}; for (const course of courses) { map[course.slug] = course.lessons.map((lesson) => ({ id: lesson.id, title: lesson.title })); } return map; }, [courses]); const attachAsset = (assetId: string) => { const courseSlug = selectedCourseByAsset[assetId]; const lessonId = selectedLessonByAsset[assetId]; if (!courseSlug || !lessonId) { setMessage("Select a course and lesson before attaching."); return; } setMessage(`Placeholder only: asset attached to ${courseSlug} / ${lessonId}.`); }; return (

Upload Library

Central cloud-style asset library for reusing videos and files across courses.

Upload disabled in MVP. This is a placeholder for backend integration.

Back to dashboard
{message ? (

{message}

) : null}
{mockAssets.map((asset) => { const selectedCourse = selectedCourseByAsset[asset.id] ?? ""; const lessonOptions = selectedCourse ? lessonOptionsByCourse[selectedCourse] ?? [] : []; return (

{asset.type}

{asset.fileName}

{asset.size} {asset.duration ? `| ${asset.duration}` : ""} | Uploaded {asset.uploadedAt}

); })}
); }