import AppLogo from '@/components/app-logo'; import Appearance from '@/components/appearance'; import AppearanceToggleTab from '@/components/appearance-tabs'; import Notification from '@/components/notification'; import SearchInput from '@/components/search-input'; import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; import { Button } from '@/components/ui/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'; import { ScrollArea } from '@/components/ui/scroll-area'; import { getPageSection } from '@/lib/page'; import { cn } from '@/lib/utils'; import { SharedData } from '@/types/global'; import { Link, router, usePage } from '@inertiajs/react'; import { GraduationCap, Heart, LayoutDashboard, LogOut, Menu, SettingsIcon, UserCircle, X } from 'lucide-react'; import { nanoid } from 'nanoid'; import { useEffect, useState } from 'react'; const LandingNavbar = () => { const { props } = usePage(); const { page, auth, customize } = props; const navbar = getPageSection(page, 'navbar'); const user = auth.user; const showWishlist = props.system.fields?.show_student_wishlist !== false; const [isSticky, setIsSticky] = useState(false); const [isMenuOpen, setIsMenuOpen] = useState(false); useEffect(() => { const handleScroll = () => { const scrollPosition = window.scrollY; if (scrollPosition > 100) { setIsSticky(true); } else { setIsSticky(false); } }; window.addEventListener('scroll', handleScroll); return () => { window.removeEventListener('scroll', handleScroll); }; }, []); return (
{/* Logo */}
{/* Desktop Navigation */} {/* Desktop Auth Buttons */}
{navbar && navbar.properties.array.map((item) => ( {item.title} ))}
{user ? (
{user && user.photo ? ( {user.name?.charAt(0)} ) : ( )} {(user.role === 'admin' || user.role === 'instructor') && ( router.get(route('dashboard'))}> Übersicht )} {(user.role === 'student' || user.role === 'instructor') && getStudentMenuItems(showWishlist).map(({ id, name, Icon, slug }) => ( router.get(route('student.index', { tab: slug }))} > {name} ))} router.post('/logout')}> Abmelden
) : (
)} {/* Mobile Menu Button */}
{/* Mobile Menu */} {isMenuOpen && (
router.get(route('category.courses', { category: 'all', search: value }))} /> {navbar && navbar.properties.array.map((item) => ( {item.title} ))} {user ? ( user.role === 'admin' ? ( <> Übersicht ) : ( <> {user.role === 'instructor' && props.system.sub_type === 'collaborative' && ( Dashboard )} Meine Kurse Wunschliste Mein Profil Einstellungen ) ) : ( <>
)}
)}
); }; const getStudentMenuItems = (showWishlist: boolean) => [ { id: nanoid(), name: 'My Courses', slug: 'courses', Icon: GraduationCap, }, ...(showWishlist ? [ { id: nanoid(), name: 'Wishlist', slug: 'wishlist', Icon: Heart, }, ] : []), { id: nanoid(), name: 'My Profile', slug: 'profile', Icon: UserCircle, }, { id: nanoid(), name: 'Settings', slug: 'settings', Icon: SettingsIcon, }, ]; export default LandingNavbar;