import React, { useState } from "react"; import { Link, useNavigate } from "react-router-dom"; import { useAuth } from "../contexts/AuthContext"; import AuthModal from "./AuthModal"; const Navbar: React.FC = () => { const { user, logout } = useAuth(); const navigate = useNavigate(); const [showAuthModal, setShowAuthModal] = useState(false); const [authModalMode, setAuthModalMode] = useState<"login" | "signup">( "login" ); const [searchFilters, setSearchFilters] = useState({ search: "", location: "", }); const handleLogout = () => { logout(); navigate("/"); }; const openAuthModal = (mode: "login" | "signup") => { setAuthModalMode(mode); setShowAuthModal(true); }; const handleSearch = (e: React.FormEvent) => { e.preventDefault(); const params = new URLSearchParams(); if (searchFilters.search.trim()) { params.append("search", searchFilters.search.trim()); } if (searchFilters.location.trim()) { // Check if location looks like a zip code (5 digits) or city name const location = searchFilters.location.trim(); if (/^\d{5}(-\d{4})?$/.test(location)) { params.append("zipCode", location); } else { params.append("city", location); } } const queryString = params.toString(); navigate(`/items${queryString ? `?${queryString}` : ""}`); // Clear search after navigating setSearchFilters({ search: "", location: "" }); }; const handleSearchInputChange = ( field: "search" | "location", value: string ) => { setSearchFilters((prev) => ({ ...prev, [field]: value })); }; return ( <> CommunityRentals.App handleSearchInputChange("search", e.target.value) } /> in handleSearchInputChange("location", e.target.value) } style={{ borderLeft: "0" }} /> Start Earning {user ? ( <> {user.firstName} Profile Renting Owning Looking For Messages Logout > ) : ( openAuthModal("login")} > Login or Sign Up )} setShowAuthModal(false)} initialMode={authModalMode} /> > ); }; export default Navbar;