import { Link, usePage } from '@inertiajs/react'; import { PropsWithChildren, ReactNode } from 'react'; import { Menu, LogOut, User as UserIcon, LayoutDashboard, BookOpen, Calendar, Settings, Users, Search, Brain } from 'lucide-react'; import { Sheet, SheetContent, SheetTrigger } from '@/Components/ui/sheet'; import { Button } from '@/Components/ui/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, DropdownMenuSeparator } from '@/Components/ui/dropdown-menu'; import { Input } from '@/Components/ui/input'; import { Avatar, AvatarFallback, AvatarImage } from '@/Components/ui/avatar'; import { cn } from '@/lib/utils'; import { ScrollArea } from '@/Components/ui/scroll-area'; import { ModeToggle } from '@/Components/ModeToggle'; import { useState, useEffect } from 'react'; import { ChevronLeft, ChevronRight, Trophy as TrophyIcon } from 'lucide-react'; import { motion, AnimatePresence } from 'framer-motion'; export default function Authenticated({ header, children, }: PropsWithChildren<{ header?: ReactNode }>) { const user = usePage().props.auth.user; const currentRoute = route().current() as string; const [isCollapsed, setIsCollapsed] = useState(() => { if (typeof window !== 'undefined') { return localStorage.getItem('sidebar-collapsed') === 'true'; } return false; }); useEffect(() => { localStorage.setItem('sidebar-collapsed', String(isCollapsed)); }, [isCollapsed]); const navItems = [ { label: 'Dashboard', icon: LayoutDashboard, href: route('dashboard'), active: route().current('dashboard') }, { label: 'Galeri Kursus', icon: BookOpen, href: route('courses.index'), active: route().current('courses.index') }, { label: 'SRS Practice', icon: Brain, href: route('srs.index'), active: route().current('srs.*') }, { label: 'Jadwal Belajar', icon: Calendar, href: '#', active: false }, { label: 'Komunitas', icon: Users, href: '#', active: false }, { label: 'Pengaturan', icon: Settings, href: route('profile.edit'), active: route().current('profile.edit') }, ]; return (
{/* Desktop Sidebar Island */} {/* Main Content Wrapper */}
{/* Island Topbar Pill */}
Nihonbuzz Academy Nihonbuzz Academy
{navItems.map((item, index) => ( {item.label} ))}
Logo
{/* Search Bar (Desktop) */}
{/* Right Profile Menu */}

{user.name}

{user.email}

Profile Keluar
{/* Page Content */}
{children}
); } // Helper component for Trophy icon which was missing in imports function Trophy({ size = 24, ...props }: { size?: number, [key: string]: any }) { return ( ) }