import { useState } from 'react' import type { User } from '../lib/supabase' import { useTheme } from '../hooks/useTheme' interface TopNavbarProps { user: User onLogout: () => void currentView?: string onToggleSidebar?: () => void isSidebarOpen?: boolean onNavigateToProfile?: () => void } export function TopNavbar({ user, onLogout, currentView = 'dashboard', onToggleSidebar, isSidebarOpen = false, onNavigateToProfile }: TopNavbarProps) { const [isUserMenuOpen, setIsUserMenuOpen] = useState(false) const { theme, toggleTheme } = useTheme() const getPageTitle = (view: string) => { switch (view) { case 'dashboard': return 'Dashboard' case 'user-management': return 'User Management' case 'experiments': return 'Experiments' case 'analytics': return 'Analytics' case 'data-entry': return 'Data Entry' case 'vision-system': return 'Vision System' case 'video-library': return 'Video Library' default: return 'Dashboard' } } const getRoleBadgeColor = (role: string) => { switch (role) { case 'admin': return 'bg-error-50 text-error-600 dark:bg-error-500/15 dark:text-error-500' case 'conductor': return 'bg-brand-50 text-brand-500 dark:bg-brand-500/15 dark:text-brand-400' case 'analyst': return 'bg-success-50 text-success-600 dark:bg-success-500/15 dark:text-success-500' case 'data recorder': return 'bg-theme-purple-500/10 text-theme-purple-500' default: return 'bg-gray-100 text-gray-700 dark:bg-white/5 dark:text-white/80' } } return (
{/* Page title */}

{getPageTitle(currentView)}

{/* Search bar - hidden on mobile, shown on desktop */}
{/* Theme Toggle Button */} {/* User Area */}
{/* Dropdown menu */} {isUserMenuOpen && (
{user.first_name && user.last_name ? `${user.first_name} ${user.last_name}` : user.email.split('@')[0] } {user.email}
  • Status: {user.status}
  • Roles:
    {user.roles.map((role) => ( {role.charAt(0).toUpperCase() + role.slice(1)} ))}
)}
{/* Click outside to close dropdown */} {isUserMenuOpen && (
setIsUserMenuOpen(false)} /> )}
) }