SarahXia0405's picture
Upload 72 files
760b33c verified
import React from 'react';
import { Menu, User, BookOpen, Moon, Sun } from 'lucide-react';
import { Button } from './ui/button';
import { Badge } from './ui/badge';
import type { User as UserType } from '../App';
interface HeaderProps {
user: UserType | null;
onMenuClick: () => void;
onUserClick: () => void;
isDarkMode: boolean;
onToggleDarkMode: () => void;
}
export function Header({ user, onMenuClick, onUserClick, isDarkMode, onToggleDarkMode }: HeaderProps) {
return (
<header className="h-16 border-b border-border bg-card px-4 lg:px-6 flex items-center justify-between sticky top-0 z-[60]">
<div className="flex items-center gap-4">
<Button
variant="ghost"
size="icon"
className="lg:hidden"
onClick={onMenuClick}
>
<Menu className="h-5 w-5" />
</Button>
<div className="flex items-center gap-3">
<div className="w-10 h-10 rounded-full bg-gradient-to-br from-purple-500 to-blue-500 flex items-center justify-center">
<BookOpen className="h-6 w-6 text-white" />
</div>
<div>
<h1 className="text-lg sm:text-xl tracking-tight">
Clare <span className="text-sm font-bold text-muted-foreground hidden sm:inline ml-2">Your Personalized AI Tutor</span>
</h1>
<p className="text-xs text-muted-foreground hidden sm:block">
Personalized guidance, review, and intelligent reinforcement
</p>
</div>
</div>
</div>
<div className="flex items-center gap-2">
<Badge variant="secondary" className="hidden md:flex">
Module 10 – Responsible AI
</Badge>
<Button
variant="ghost"
size="icon"
onClick={onToggleDarkMode}
aria-label="Toggle dark mode"
>
{isDarkMode ? <Sun className="h-5 w-5" /> : <Moon className="h-5 w-5" />}
</Button>
{user ? (
<Button
variant="outline"
className="gap-2"
onClick={onUserClick}
>
<User className="h-4 w-4" />
<span className="hidden sm:inline">{user.name}</span>
</Button>
) : (
<Button
variant="default"
className="gap-2 lg:hidden"
onClick={onUserClick}
>
<User className="h-4 w-4" />
<span>Login</span>
</Button>
)}
</div>
</header>
);
}