diff --git a/apps/nowait-user/src/assets/icon/cancel.svg b/apps/nowait-user/src/assets/icon/cancel.svg index b3dfb7df..2767b326 100644 --- a/apps/nowait-user/src/assets/icon/cancel.svg +++ b/apps/nowait-user/src/assets/icon/cancel.svg @@ -1,4 +1,4 @@ - - + + diff --git a/apps/nowait-user/src/assets/icon/search.svg b/apps/nowait-user/src/assets/icon/search.svg index adcd7125..0cae67f4 100644 --- a/apps/nowait-user/src/assets/icon/search.svg +++ b/apps/nowait-user/src/assets/icon/search.svg @@ -1,3 +1,3 @@ - - + + diff --git a/apps/nowait-user/src/components/Header.tsx b/apps/nowait-user/src/components/Header.tsx index 1e9016d2..f05eb8b2 100644 --- a/apps/nowait-user/src/components/Header.tsx +++ b/apps/nowait-user/src/components/Header.tsx @@ -3,12 +3,14 @@ import { AnimatePresence, motion } from "framer-motion"; import { useNavigate } from "react-router-dom"; import Logo from "../assets/logo.svg?react"; import Menu from "../assets/icon/menu.svg?react"; -import Search from "../assets/icon/search_black.svg?react"; +import Search from "../assets/icon/search.svg?react"; import Cancel from "../assets/icon/cancel.svg?react"; import Portal from "./common/modal/Portal"; +import SearchModal from "./common/modal/SearchModal"; const HomeHeader = () => { const [isMenuOpen, setIsMenuOpen] = useState(false); + const [isSearchOpen, setIsSearchOpen] = useState(false); const navigate = useNavigate(); const toggleMenu = () => { @@ -19,6 +21,14 @@ const HomeHeader = () => { setIsMenuOpen(false); }; + const openSearch = () => { + setIsSearchOpen(true); + }; + + const closeSearch = () => { + setIsSearchOpen(false); + }; + const handleBookmarkClick = () => { closeMenu(); navigate("/bookmark"); @@ -34,7 +44,7 @@ const HomeHeader = () => {
- + + + {/* 검색 내용 영역 */} + + {searchQuery.trim() ? ( + // 검색 결과 표시 +
+
+ 검색 결과{" "} + {searchResults.length > 0 && `${searchResults.length}`} +
+ {isSearching ? ( +
+
+ 검색 중... +
+
+ ) : searchResults.length > 0 ? ( +
+ {searchResults.map((store) => ( + + ))} +
+ ) : ( +
+
+ 검색 결과가 없습니다 +
+
+ 다른 키워드로 검색해보세요 +
+
+ )} +
+ ) : ( + // 최근 검색 표시 +
+
+ 최근 검색 +
+ {recentSearches.length > 0 ? ( + recentSearches.map((searchTerm, index) => ( +
+ +
+ +
+
+ )) + ) : ( +
+ 최근 검색어가 없습니다 +
+ )} +
+ )} +
+
+ + )} + + + ); +}; + +export default SearchModal; diff --git a/apps/nowait-user/src/types/search.ts b/apps/nowait-user/src/types/search.ts new file mode 100644 index 00000000..a05151a8 --- /dev/null +++ b/apps/nowait-user/src/types/search.ts @@ -0,0 +1,18 @@ +export interface SearchStore { + storeId: number; + departmentId: number; + departmentName: string; + name: string; + location: string; + description: string; + profileImage: string | null; + bannerImages: any[]; + isActive: boolean; + deleted: boolean; + createdAt: string; +} + +export interface SearchResponse { + success: boolean; + response: SearchStore[]; +}