AbdulElahGwaith's picture
Upload folder using huggingface_hub
c1da618 verified
import { useState } from 'react';
import { Globe, Search, Menu, X } from 'lucide-react';
import { Button } from '@/components/ui/button';
interface HeaderProps {
currentLanguage: 'en' | 'ar' | 'am';
onLanguageChange: (lang: 'en' | 'ar' | 'am') => void;
onSearch: (query: string) => void;
}
export default function Header({ currentLanguage, onLanguageChange, onSearch }: HeaderProps) {
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
const [searchQuery, setSearchQuery] = useState('');
const languages = [
{ code: 'en', label: 'English' },
{ code: 'ar', label: 'العربية' },
{ code: 'am', label: 'አማርኛ' }
];
const handleSearch = (e: React.FormEvent) => {
e.preventDefault();
onSearch(searchQuery);
};
return (
<header className="sticky top-0 z-50 bg-white border-b border-gray-100 shadow-sm">
<div className="container mx-auto px-4 py-4">
<div className="flex items-center justify-between gap-4">
{/* Logo */}
<div className="flex items-center gap-2">
<div className="w-10 h-10 bg-gradient-to-br from-sky-400 to-sky-600 rounded-lg flex items-center justify-center">
<span className="text-white font-bold text-lg">QA</span>
</div>
<h1 className="text-xl font-bold text-gray-900 hidden sm:block">
{currentLanguage === 'en' && 'QA Hub'}
{currentLanguage === 'ar' && 'منصة الأسئلة'}
{currentLanguage === 'am' && 'ጥያቄ ማእከል'}
</h1>
</div>
{/* Search Bar - Desktop */}
<form onSubmit={handleSearch} className="hidden md:flex flex-1 max-w-md">
<div className="relative w-full">
<input
type="text"
placeholder={
currentLanguage === 'en' ? 'Search questions...' :
currentLanguage === 'ar' ? 'ابحث عن أسئلة...' :
'ጥያቄዎችን ይፈልጉ...'
}
value={searchQuery}
onChange={(e) => setSearchQuery(e.target.value)}
className="w-full px-4 py-2 pr-10 border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-sky-400 focus:border-transparent"
/>
<Search className="absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 w-5 h-5" />
</div>
</form>
{/* Language Switcher & Mobile Menu */}
<div className="flex items-center gap-2">
{/* Language Dropdown */}
<div className="hidden sm:flex items-center gap-1 border border-gray-200 rounded-lg p-1">
{languages.map((lang) => (
<button
key={lang.code}
onClick={() => onLanguageChange(lang.code as 'en' | 'ar' | 'am')}
className={`px-3 py-1 rounded text-sm font-medium transition-colors ${
currentLanguage === lang.code
? 'bg-sky-400 text-white'
: 'text-gray-600 hover:text-gray-900'
}`}
>
{lang.label}
</button>
))}
</div>
{/* Mobile Menu Button */}
<button
onClick={() => setMobileMenuOpen(!mobileMenuOpen)}
className="md:hidden p-2 hover:bg-gray-100 rounded-lg"
>
{mobileMenuOpen ? (
<X className="w-6 h-6 text-gray-600" />
) : (
<Menu className="w-6 h-6 text-gray-600" />
)}
</button>
</div>
</div>
{/* Mobile Search & Language Switcher */}
{mobileMenuOpen && (
<div className="mt-4 space-y-3 md:hidden">
<form onSubmit={handleSearch} className="relative">
<input
type="text"
placeholder={
currentLanguage === 'en' ? 'Search questions...' :
currentLanguage === 'ar' ? 'ابحث عن أسئلة...' :
'ጥያቄዎችን ይፈልጉ...'
}
value={searchQuery}
onChange={(e) => setSearchQuery(e.target.value)}
className="w-full px-4 py-2 pr-10 border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-sky-400"
/>
<Search className="absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 w-5 h-5" />
</form>
<div className="flex gap-2">
{languages.map((lang) => (
<button
key={lang.code}
onClick={() => {
onLanguageChange(lang.code as 'en' | 'ar' | 'am');
setMobileMenuOpen(false);
}}
className={`flex-1 px-3 py-2 rounded text-sm font-medium transition-colors ${
currentLanguage === lang.code
? 'bg-sky-400 text-white'
: 'bg-gray-100 text-gray-600 hover:bg-gray-200'
}`}
>
{lang.label}
</button>
))}
</div>
</div>
)}
</div>
</header>
);
}