import React, { useState } from 'react'; import { Link, usePage } from '@inertiajs/react'; import { ChevronLeft, Menu, CheckCircle, Circle, PlayCircle, FileText, HelpCircle, ArrowLeft, ArrowRight, Download, Lock, ChevronDown, ChevronRight, X, LayoutDashboard } from 'lucide-react'; import { Button } from '@/Components/ui/button'; import { ScrollArea } from '@/Components/ui/scroll-area'; import { Sheet, SheetContent, SheetTrigger } from '@/Components/ui/sheet'; import { cn } from '@/lib/utils'; import { Avatar, AvatarFallback, AvatarImage } from '@/Components/ui/avatar'; import { ModeToggle } from '@/Components/ModeToggle'; interface Lesson { id: string; title: string; slug: string; type: 'video' | 'text' | 'quiz' | 'pdf'; is_completed: boolean; duration_seconds: number; } interface Module { id: string; title: string; lessons: Lesson[]; } interface Course { id: string; title: string; slug: string; progress_percentage: number; } interface CourseLayoutProps { children: React.ReactNode; course: Course; modules: Module[]; currentLesson?: Lesson; nextLesson?: Lesson | null; previousLesson?: Lesson | null; } export default function CourseLayout({ children, course, modules = [], currentLesson, nextLesson, previousLesson }: CourseLayoutProps) { const user = usePage().props.auth.user; const [openModules, setOpenModules] = useState(modules.map(m => m.id)); // Default open all const toggleModule = (moduleId: string) => { setOpenModules(prev => prev.includes(moduleId) ? prev.filter(id => id !== moduleId) : [...prev, moduleId] ); }; const getLessonIcon = (type: string) => { switch (type) { case 'video': return ; case 'quiz': return ; case 'pdf': return ; default: return ; } }; const SidebarContent = () => (

Course Content

{course.progress_percentage}% Complete
{modules.map((module) => (
{openModules.includes(module.id) && (
{module.lessons.map((lesson) => { const isActive = currentLesson?.slug === lesson.slug; return ( {isActive &&
}
{lesson.is_completed ? ( ) : isActive ? ( ) : ( )}

{lesson.title}

{isActive ? "Current Lesson" : `${Math.ceil(lesson.duration_seconds / 60)} min`}

); })}
)}
))}
); return (
{/* Top Navigation */}
N

Nihonbuzz Academy

{course.title} {currentLesson?.title}
{user.name.charAt(0)}
{/* Mobile Sidebar Trigger */}
{/* Main Layout Area */}
{/* Center Content (Video/Text) */}
{children}
{/* Right Sidebar (Desktop) */}
{/* Bottom Navigation Bar */}
); }