'use client'; import { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import { ThemeToggle } from '@/components/theme-toggle'; import { Menu, ChevronDown, BarChart, Database, CircleCheck, School, GraduationCap, Clock, BookOpen, Award, Home, LogOut, User, Users } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Sheet, SheetContent, SheetTrigger } from '@/components/ui/sheet'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import Link from 'next/link'; import LoginDialog from './login-dialog'; import { useToast } from '@/components/ui/toast-provider'; interface UserData { id_user: number; username?: string; nip?: string; role_user: string; } const Navbar = () => { const [user, setUser] = useState(null); const [isLoading, setIsLoading] = useState(true); const { showSuccess, showError } = useToast (); const router = useRouter(); // Check for existing user session on mount useEffect(() => { checkUserSession(); }, []); const checkUserSession = async () => { try { const response = await fetch('/api/auth/user'); if (response.ok) { const data = await response.json(); setUser(data.user); } } catch (error) { console.error('Error checking session:', error); } finally { setIsLoading(false); } }; const handleLoginSuccess = (userData: any) => { setUser(userData.user); }; const handleLogout = async () => { try { const response = await fetch('/api/auth/logout', { method: 'POST', }); if (response.ok) { setUser(null); showSuccess("Berhasil!", "Anda telah keluar dari sistem"); // Redirect to root page after successful logout router.push('/'); } } catch (error) { console.error('Logout error:', error); showError("Gagal!", "Terjadi kesalahan saat logout"); } }; if (isLoading) { return (
PODIF Logo PODIF
); } return (
{/* Logo */}
PODIF Logo PODIF
{/* Desktop Navigation - Centered */}
{/* Beranda - Always visible */} Beranda {/* Dashboard Dropdown - Only when logged in */} {user && ( <> Dashboard {/* Dashboard Mahasiswa Mahasiswa Status Kuliah Lulus Tepat Waktu Beasiswa Prestasi */} )} {/* Kelola Data Dropdown - Only for Admin */} {user && user.role_user === 'admin' && ( Mahasiswa Beasiswa Prestasi Dosen )}
{/* Right Side - Theme Toggle, Login/User Menu, and Mobile Menu */}
{user ? ( {user.role_user === 'ketuajurusan' ? user.username : user.username} Logout ) : ( )} {/* Mobile Menu Button */}
); }; // Mobile Navigation Content Component interface MobileNavContentProps { user: UserData | null; onLogout: () => void; } const MobileNavContent = ({ user, onLogout }: MobileNavContentProps) => { return (

Dashboard PODIF

Beranda
{user ? (

Menu Utama

Dashboard {/*

Visualisasi

Mahasiswa Status Kuliah Lulus Tepat Waktu Beasiswa Prestasi
*/} {/* Kelola Data - Only for Admin */} {user.role_user === 'admin' && (

Kelola Data

Mahasiswa Beasiswa Prestasi
)}
{user.role_user === 'ketuajurusan' ? 'Ketua Jurusan' : 'Admin'}
) : (

Login

Silakan login untuk mengakses menu Visualisasi dan Kelola Data

)}
); }; export default Navbar;