import type { AuthUser } from '@/auth/types'; import type { TaskState } from '@/types'; import { Button } from './ui/button'; import { Separator } from './ui/separator'; import { Tabs, TabsList, TabsTrigger } from './ui/tabs'; import { LogOut, Home } from 'lucide-react'; import { logout } from '@/auth/authService'; import { clearPasskeyUser } from '@/auth/passkeyService'; import { HealthIndicator } from './HealthIndicator'; import { TaskIndicator } from './TaskIndicator'; import { MobileMenu } from './MobileMenu'; import { useIsMobile } from '@/hooks/use-mobile'; import { ListingType } from './FilterPanel'; interface HeaderProps { user: AuthUser; activeFilterCount?: number; isLoading?: boolean; onToggleFilters?: () => void; showFilterToggle?: boolean; // Task progress (unified) tasks: Record; activeTaskId: string | null; isConnected: boolean; onCancelTask: (taskId: string) => Promise; onClearAllTasks: () => Promise; onTaskCompleted?: () => void; // Listing type toggle listingType?: ListingType; onListingTypeChange?: (type: ListingType) => void; } export function Header({ user, tasks, activeTaskId, isConnected, onCancelTask, onClearAllTasks, onTaskCompleted, listingType, onListingTypeChange, }: HeaderProps) { const isMobile = useIsMobile(); const handleLogout = async () => { if (user.provider === 'passkey') { clearPasskeyUser(); window.location.reload(); } else { await logout(); } }; return (
{/* Logo / Brand */}
Wrongmove
{/* Listing Type Toggle (Rent / Buy) */} {listingType && onListingTypeChange && ( <> onListingTypeChange(v as ListingType)} > Rent Buy )} {/* Desktop-only items */} {!isMobile && ( <> )} {/* Spacer */}
{/* Mobile: hamburger menu */} {isMobile && ( )} {/* Desktop: user menu */} {!isMobile && (
{user.email}
)}
); }