From db8d3a532e0cd46882a898ac0101c3230205e85d Mon Sep 17 00:00:00 2001 From: Choongman Kim Date: Sat, 25 Jan 2025 16:35:00 +0900 Subject: [PATCH 1/7] =?UTF-8?q?Modify:=20=EC=A0=84=EC=97=AD=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=20currentPage=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/search/_components/Pagination.tsx | 3 +-- src/stores/searchStore.ts | 6 ------ 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/src/app/search/_components/Pagination.tsx b/src/app/search/_components/Pagination.tsx index 1bb9755..2cb2af3 100644 --- a/src/app/search/_components/Pagination.tsx +++ b/src/app/search/_components/Pagination.tsx @@ -14,7 +14,7 @@ interface PaginationProps { export default function Pagination({ meta, currentPageNum }: PaginationProps) { const router = useRouter(); - const { query, setOpenDropdownId, setCurrentPage } = useSearchStore(); + const { query, setOpenDropdownId } = useSearchStore(); const size = 15; const totalCount = meta.pageable_count; @@ -37,7 +37,6 @@ export default function Pagination({ meta, currentPageNum }: PaginationProps) { const handlePageChange = (page: number) => { setOpenDropdownId(null); - setCurrentPage(page); router.push(`/search?query=${encodeURIComponent(query)}&page=${page}`); diff --git a/src/stores/searchStore.ts b/src/stores/searchStore.ts index 60219c5..cf7b9d7 100644 --- a/src/stores/searchStore.ts +++ b/src/stores/searchStore.ts @@ -3,13 +3,11 @@ import { persist } from "zustand/middleware"; interface State { query: string; - currentPage: number; openDropdownId: string | null; } interface Action { setQuery: (query: string) => void; - setCurrentPage: (page: number) => void; setOpenDropdownId: (id: string | null) => void; resetSearchState: () => void; @@ -24,13 +22,9 @@ export const useSearchStore = create()( openDropdownId: null, setOpenDropdownId: (id) => set({ openDropdownId: id }), - currentPage: 1, - setCurrentPage: (page) => set({ currentPage: page }), - resetSearchState: () => set({ query: "", - currentPage: 1, openDropdownId: null, }), }), From b06f395089ddf48e0166959cdbd29ee9403c2345 Mon Sep 17 00:00:00 2001 From: Choongman Kim Date: Sat, 25 Jan 2025 16:36:20 +0900 Subject: [PATCH 2/7] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 38ba848a5df36493cccf86d0dd78ca236c7ef59c Merge: 00190c0 8525685 Author: shchoon <87121448+shchoon@users.noreply.github.com> Date: Fri Jan 24 17:06:45 2025 +0900 Merge pull request #47 from booksaetong/feat/bookshelf1 [Feat/modal] 모달 컴포넌트 수정 commit 8525685036dd88f58069df3b70488d5536024c47 Author: SeanKim05 Date: Fri Jan 24 14:20:55 2025 +0900 Fix: 모달 컴포넌트 수정 - 모달 백그라운드 스크롤 방지 로직 추가 - 모달 컴포넌트 구조 수정 - 북마크 조건부 표시 : 서재 페이지에서는 북마크 숨김 commit 00190c095fc4ce6b43d149db3e1de03a2a82ec91 Merge: 6931186 97b4da7 Author: shchoon <87121448+shchoon@users.noreply.github.com> Date: Fri Jan 24 10:09:58 2025 +0900 Merge pull request #46 from booksaetong/feat/search [Feat/search] 모달 북마크 추가 --- src/app/bookshelf/_components/SortableItm.tsx | 1 - src/app/components/modal/Modal.tsx | 112 +++++++++--------- src/app/globals.css | 5 +- src/app/layout.tsx | 6 +- src/libs/scrollLock/scrollLock.ts | 27 +++++ src/stores/modal.ts | 6 +- 6 files changed, 94 insertions(+), 63 deletions(-) create mode 100644 src/libs/scrollLock/scrollLock.ts diff --git a/src/app/bookshelf/_components/SortableItm.tsx b/src/app/bookshelf/_components/SortableItm.tsx index 4b7f2e2..a402826 100644 --- a/src/app/bookshelf/_components/SortableItm.tsx +++ b/src/app/bookshelf/_components/SortableItm.tsx @@ -44,7 +44,6 @@ function SortableItem({ id, book }: SortableItemProps) { }`} key={book.isbn} onClick={() => { - console.log(book.isbn); openModalWithIsbn(book.isbn); }} > diff --git a/src/app/components/modal/Modal.tsx b/src/app/components/modal/Modal.tsx index bdab9c3..617f0e3 100644 --- a/src/app/components/modal/Modal.tsx +++ b/src/app/components/modal/Modal.tsx @@ -4,25 +4,28 @@ import { createPortal } from "react-dom"; import { useEffect } from "react"; import { useModalStore } from "@/stores/modal"; +import useScrollLock from "@/libs/scrollLock/scrollLock"; import ModalContent from "./ModalContent"; import CloseIcon from "/public/icons/Cancel.png"; import Bookmark from "../Bookmark"; export default function Modal() { - const { closeModal, data } = useModalStore(); + const { closeModal, data, isBookMark } = useModalStore(); useEffect(() => { - const body = document.body as HTMLBodyElement; - body.classList.add("modal-open"); + // const body = document.body as HTMLBodyElement; + // body.classList.add("modal-open"); const handlePopState = () => { closeModal(); }; window.addEventListener("popstate", handlePopState); + useScrollLock.enable(); // 스크롤 잠김 return () => { - body.classList.remove("modal-open"); + useScrollLock.disable(); // 스크롤 잠김 해제 + // body.classList.remove("modal-open"); }; }, []); @@ -38,59 +41,58 @@ export default function Modal() { ]; return createPortal( - <> - {data && ( -
-
- closeIcon -
- {data.title} -
-
-

+ // {data && ( +
+
+ closeIcon +
+ {data.title} +
+
+

+ {data.title} +

+ {contentList.map((data) => { + return ( + - {data.title} -

- {contentList.map((data) => { - return ( - - ); - })} -
- - {data.contents !== "" && ( -
- 소개 -

- {data.contents}... -

-
- )} -
+ content={data.content} + /> + ); + })}
- )} - , + {isBookMark && ( + + )} + {data.contents !== "" && ( +
+ 소개 +

+ {data.contents}... +

+
+ )} + + , + // )} + // , document.querySelector("#global-modal") as HTMLDivElement, ); } diff --git a/src/app/globals.css b/src/app/globals.css index cafe21a..d122e10 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -27,10 +27,11 @@ body { .pause { animation-play-state: paused; } - .modal-open { + /* .modal-open { height: 100vh; overflow-y: hidden; - } + } */ + .scrollbar::-webkit-scrollbar { width: 10px; height: 20px; diff --git a/src/app/layout.tsx b/src/app/layout.tsx index b6dab23..ebb8a1f 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -5,8 +5,8 @@ import localFont from "next/font/local"; import Navbar from "./components/Navbar"; export const metadata: Metadata = { - title: "Create Next App", - description: "Generated by create next app", + title: "서재췍", + description: "내가 읽은 책을 관리하는 페이지", }; const myFont = localFont({ @@ -22,7 +22,7 @@ export default function RootLayout({ children: React.ReactNode; }>) { return ( - +
diff --git a/src/libs/scrollLock/scrollLock.ts b/src/libs/scrollLock/scrollLock.ts new file mode 100644 index 0000000..e29865a --- /dev/null +++ b/src/libs/scrollLock/scrollLock.ts @@ -0,0 +1,27 @@ +let scrollPosition = 0; + +const useScrollLock = { + enable(): void { + // 현재 스크롤 위치 저장 + scrollPosition = window.scrollY; + + // body 스타일 설정 + document.body.style.cssText = ` + position: fixed; + top: -${scrollPosition}px; + overflow-y: scroll; + width: 100%;`; + }, + disable(): void { + // 저장된 스크롤 위치 가져오기 + const scrollY = parseInt(document.body.style.top || "0", 10) * -1; + + // body 스타일 초기화 + document.body.style.cssText = ""; + + // 저장된 스크롤 위치로 복원 + window.scrollTo(0, scrollY); + }, +}; + +export default useScrollLock; diff --git a/src/stores/modal.ts b/src/stores/modal.ts index eb98047..a0d94f5 100644 --- a/src/stores/modal.ts +++ b/src/stores/modal.ts @@ -5,6 +5,7 @@ import getDetailByIsbn from "@/libs/apis/getDetailByIsbn"; interface States { isOpen: boolean; data: Book | null; + isBookMark: boolean; } interface Actions { @@ -16,15 +17,16 @@ interface Actions { export const useModalStore = create((set) => ({ isOpen: false, data: null, + isBookMark: true, openModalWithData: (data: Book) => { set(() => ({ isOpen: true, data: data })); }, openModalWithIsbn: async (isbn: string) => { const data = await getDetailByIsbn(isbn.split(" ")[0]); - set(() => ({ isOpen: true, data: data })); + set(() => ({ isOpen: true, data: data, isBookMark: false })); }, closeModal: () => { - set(() => ({ isOpen: false, data: null })); + set(() => ({ isOpen: false, data: null, isBookMark: true })); }, })); From deec8fddb1d73eac78d6fcd74466ad369744fa46 Mon Sep 17 00:00:00 2001 From: Choongman Kim Date: Sat, 25 Jan 2025 23:27:39 +0900 Subject: [PATCH 3/7] =?UTF-8?q?Design:=20=EB=A1=9C=EA=B3=A0=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20-=20=EB=A1=9C=EA=B3=A0=20=EB=B3=80=EA=B2=BD=20-=20?= =?UTF-8?q?=EB=A1=9C=EA=B3=A0=20=ED=81=AC=EA=B8=B0=20=EB=B0=8F=20=EC=84=9C?= =?UTF-8?q?=EC=9E=AC=20=EC=95=84=EC=9D=B4=EC=BD=98=20=ED=81=AC=EA=B8=B0=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20-=20=EA=B2=80=EC=83=89=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=20=EC=A0=9C=EB=AA=A9=20=ED=8F=B0=ED=8A=B8=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/icons/Books.png | Bin 702 -> 1227 bytes public/logo.png | Bin 7719 -> 5492 bytes src/app/components/Navbar.tsx | 14 +++++++++----- src/app/components/SearchBar.tsx | 6 ++---- src/app/favicon.ico | Bin 25931 -> 15518 bytes src/app/layout.tsx | 2 +- .../_components/presentation/SearchResult.tsx | 2 +- 7 files changed, 13 insertions(+), 11 deletions(-) diff --git a/public/icons/Books.png b/public/icons/Books.png index cc98947466b3bcf8ffda80c7f0d1a05ee0f88771..e128eec95649300094f13aa91ecb3d2882e36a6f 100644 GIT binary patch delta 1192 zcmdnTdYV(QGr-TCmrII^fq{Y7)59eQNT+}>2OE$qcr-O+qM}JXOM<71V@L(#+qzV?x=D@z)49*#p9RPf&i{Is*?+_4#0nH^f zW_nY-if5mFcC9{a^;UuZXFN>a7w(Q-8}^>_uYlDAr-d7M9Bn+71{p7@joR_nT_e5q z*wVv!9R}yNTJos3{pB-_s}K>lWYC6FgiX z&^CLyu3NR~{PX!-zpHsvCY*jcZGq$j356-OiQ7XjQRON>%Ks zko&2!z{=@EmQ_n}^t&y`wLjKB-?b*zseTC;OZ$ToljV=Bj{HxTNtHb8(BpZ;XK#c~ z-of8jdk$$FPzRmU9x2t!==+%q*-^?kKb6aF?>RkQV-9zA5>QB4ZU-x;f zoNM^~`*-<^Ef0BkdH1^Q?Ov2%Cs3Z^G5g1v8SZXwVcskjhpu%s{nXQbv22NKO?}## z0&eHuQnwO6Zf7vR>T3SEF=N-tvOD72<|-M^z5PqPZ&OdA!Z8DZWQh(#o+C4s#0J;5 z1%H>mdqn%pvB0!5cPFh-K61A1aN9$dnTF-wmv*f&edKAK{BD{{Y2=K|{9|t_HS2h) z6MbxfLMnB7*{KDyr&ydaYHO4LdJ$-FJ^AL%29@;Vbj4GPg$g2d%u4{qc#I zQ?}Xc)(5}E3$M@BKjpt-!8s4Bx$72Pty$|E8!mlfYSh|op;L->-m$V-S$<@G`Q4Xnm$e$tqs3#}q?P1_TC4WfDbGJYU)*)N=+eAJVN+hG+0g&L9EhFy`sK??t+^|IU;ll` z;QCxG$*C1Bbvz5153a0xVVhy+UA?uy>WRb7n131{um2Ufb6q}k^;Le3rweNS2iLv* za(>tT&$AK}pINb=HG8uo+Q;ZsRL6UPV`~o{JosBUS7Kux^ZGx}GxQ&RdVjmq?AX%l pI@{v=<e~mP_7jA@`r~tl2-C*8NW}q~V;}7U|TlLY=`D?^{ z*k0F+?Qp9|*0+^X-9VV{ixU@#&<*?rejYh_g@_-D{lvNgh8I`c-B%mQwkTUkpxOkP z6ZG5^MI8|unc$a{bCThmDURs$IxAAeT27&v75KsH&9~3fgg z;llyqye{MAOqO_N8&1hICe+YPD7s`=j4U5ZazLH_mC(3TISD4eNQjy;+{|U#AH#_- z3Cg!6(0eo2kvb=g*IoRb359Z9j`}d3d8o0*XBTg0LfM>VK2Hv`6QRO?#*DCXln>30 z9E2yiBo|wH#)@qq7yX3{e_vCvMb--!_hQDglKA>{f&v;Qu7M^ZLz;26^;%f(F)sf z#-Q(IodnyBf64oXgE55X?^*T*I#)Z3p3jHuwFtBuJPzKOWS4u(Cr0YW*<2UN=dI&o x@F*~3B>#&ReJUQ?*k(+FU@Q2P7CS@r_yt*b(R)XJM?C-l002ovPDHLkV1ittHBJBk diff --git a/public/logo.png b/public/logo.png index f0e7067c220564537e9ad3db0217e0c117fc6792..d6d8a0909ec2e571a0d76b79db75aaac15a8e56a 100644 GIT binary patch delta 5491 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 literal 7719 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 diff --git a/src/app/components/Navbar.tsx b/src/app/components/Navbar.tsx index 692d62c..2293fe3 100644 --- a/src/app/components/Navbar.tsx +++ b/src/app/components/Navbar.tsx @@ -2,8 +2,9 @@ import Image from "next/image"; import { useRouter } from "next/navigation"; -import Logo from "/public/logo.png"; +import Logo from "/public/Logo.png"; import BookIcon from "/public/icons/Books.png"; + import { useSearchStore } from "@/stores/searchStore"; export default function Navbar() { @@ -11,13 +12,15 @@ export default function Navbar() { const { resetSearchState } = useSearchStore(); return ( -
+
Logo { resetSearchState(); router.push("/"); @@ -27,7 +30,8 @@ export default function Navbar() { books { resetSearchState(); diff --git a/src/app/components/SearchBar.tsx b/src/app/components/SearchBar.tsx index 6fc7e09..f68cd21 100644 --- a/src/app/components/SearchBar.tsx +++ b/src/app/components/SearchBar.tsx @@ -7,15 +7,13 @@ import searchBtn from "/public/icons/SearchSearch.svg"; export default function SearchBar() { const router = useRouter(); - const { query, setQuery, currentPage } = useSearchStore(); + const { query, setQuery } = useSearchStore(); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (!query.trim()) return; - router.push( - `/search?query=${encodeURIComponent(query)}&page=${currentPage}`, - ); + router.push(`/search?query=${encodeURIComponent(query)}&page=1`); }; return (
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%0D->|_tHWv7RrGheooc=c8 z-fZBiY*b}gkBJ;Rn)Y=S4j;D->w_>84h~@vjRG+#{q~Eb*g#?hnSE>>!Hy(p%HE;UDGd;=shS`&FF)xBP* z|6Nn9Kj}ycvH_wrphHQELaT@TioxOF-wuyBOOQ4xw3)(Zlgt+JNukB-o?d3n$wdpr zmc>Txw_8%GU(^^6KhN%64197~Q ziR$(sDtlYo1&1c1X6NhhTxGUAN~JeX{z+bZyHXmy)&1f>5eiOBxnMA8Zo(u!!3zfy zCXnFjU;@Ex2F(w6NRM)vWQON?+UZd3obgq$Z!5xC-U9C36#j`j3B|7Qt$N}wshn## zgcU6sT)(AtP!lB)pcBme8}4Vj!|u~1e&-od}=O4eN3%tKt86ZHo zpOg~KonJE|$daTR{CWzvEL5fWJGeB`j=-<^Mt=`ZsWHnwT(e;dpA9I%C8GNQ>xUlw zJe(qPMiG^;uhcfV-|d8iC)6!Q?%(Yd2ORUNTppNy?&Emr-1mhzc_VXKOI_oO9siH} zX&P92@T2aF&&`jD>p>cRx6aIu#AV_=UH_>a)HH!OI!u19+}MUL9<C~r3P zX9OdkGITyq@;15}nLb{Jy~W?fAvgH+p==RkkU-a1ePU zT*Sn9y*8$K{j}zFdk5%P4Hue*P-e0%=w)8GayH+(PVVHst75- z{|_L&k?t#5VN%3JK}V^#+}0PK0^;R7qGzwNFIPHl9Or_Q;iGG5a?~%I^ib_G4sD{c zfu2!`%c;$dlV`?0zJ2=(0#_eq^L#q^=@aoNrsUB{NqdNjvhVHQ`=X#UWUxF@f4=FQ zDFhd*Wy#sYlm;v6zdi6r^0ciE&wW;|l#Jdokeffs6iB!&;69F|q7V_Hdt_#hc9S6!R zzg4BPUpb=C_M&tq)id)Kw`R&nDGm8I>b{%k+kYSuyt8_WSH747Nj(2RODK>7`0nt; zMJzvd(_p|o@Ot{0{O!#F$r-K3*+C;l7$lM8`LuE2=84FtYI!f9D)Nw}u`kqdFFwSQ zS}@~y*Yf46ClH6fzi|h8Qmls}m7PU;!7&0A>b4w*0HLS-*8Fn@-4L^Ez&^IBTFYy~z7h`fC z1Yw}OI;vLV8?)NU*OK`?An;$GRKmut;_HiR7BEo21Cx~r zJpH$Xl_bTNu$i3&Q7QbPvM6i}Xmp8b%XoXPChmh&#YcNxy`VYA3EN#4-dxM=d@<)m zc9GmMF8V}OYz1!-UJF}^qzIpU_nU9zN#;^SJuLBmq`$^vhDjnV!!t*tKYAG2CHY84 z3$+hl1#~3=_gR#V*cq+UeH_wgBCy)(yd)+>^BbQX6kzHy0FrC6?8p1Mb2jJ81ynPA zGrE|-$K}Uio8mR;rpQT-k9B!nV2PJg>itbx{(0Tpiv-Nr2cTAC`6Vz@;zl=GnWNsh zA)v?{-e%HWy5O`zJ6!K1mjB83*sKvaG_|yViX|3;{-Tx7^o8;ONprIB3is*QTm#Nn zdU%in`b+zQ6Eck*NP?{ZN{%a#?I_znWpoodv(ocr!R`T!l9@v3hZ#3zJp7F;rW}xg zWH8E{>56m;=h^eCS~8QxnEix3AfNIYpR;uuYAQ1HLqtBbyPAUW9 zc!3t&+}HFXV)-b6J%9YYiNM?=rA6yhYGb=%4rqqYv*K&vR@s3Ub7I8b^Tut-RZ^{N zMf1nGumat^y#CnTkR*?d?F^{5Ti_`GiYDNW<;-gI<;ih-?J|+#Slr(HLV(i%o)=gt zeHTGy1=)xo(P~<9##KyV$_s}mJy3*IG7teb&k4yyK$~gbFK8iQN^_c!5^Kqe zbzv{#mBn~|>j9qYe6!>VZ+3oxh`cNJyq(0H$_-4TJQ<=(e~BqP0%OC@E)s=WvPZYf zF=o@!Vaod2N7538HTo4owuu?PlcONn8ay=A1W}@mA2N|f|7opdPeDk8&ZqkN

V@Xoz_{nbgS-2m*@|9_6*{|ED#FYf>V literal 25931 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 LrJugUA?W`A8`#=m diff --git a/src/app/layout.tsx b/src/app/layout.tsx index ebb8a1f..4172f98 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -5,7 +5,7 @@ import localFont from "next/font/local"; import Navbar from "./components/Navbar"; export const metadata: Metadata = { - title: "서재췍", + title: "서재췤", description: "내가 읽은 책을 관리하는 페이지", }; diff --git a/src/app/search/_components/presentation/SearchResult.tsx b/src/app/search/_components/presentation/SearchResult.tsx index 78bd5ad..45b4407 100644 --- a/src/app/search/_components/presentation/SearchResult.tsx +++ b/src/app/search/_components/presentation/SearchResult.tsx @@ -46,7 +46,7 @@ export default function SearchResult({

-

+

{book.title}

From c74ac327aff1d40b3a4239794af45ad90b7f883b Mon Sep 17 00:00:00 2001 From: Choongman Kim Date: Sun, 26 Jan 2025 16:15:42 +0900 Subject: [PATCH 4/7] =?UTF-8?q?Design:=20sort=20Select=20=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=20html/css=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/search/_components/SortSelect.tsx | 34 ++++++++++++++++------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/src/app/search/_components/SortSelect.tsx b/src/app/search/_components/SortSelect.tsx index 7d12e51..97c729c 100644 --- a/src/app/search/_components/SortSelect.tsx +++ b/src/app/search/_components/SortSelect.tsx @@ -15,22 +15,36 @@ export default function SortSearch({ query, page, sort }: SortProps) { const currentQuery = query ?? ""; const currentPage = page ?? 1; - const handleSortChange = (e: React.ChangeEvent) => { - const newSort = e.target.value; + const sortOption = [ + { value: "accuracy", label: "정확도순" }, + { value: "latest", label: "발간일순" }, + ]; + const handleSortChange = (newSort: string) => { router.push( `/search?query=${encodeURIComponent(currentQuery)}&page=${currentPage}&sort=${newSort}`, ); }; return ( - +

+ {sortOption.map((option, index) => ( +
+ + {index < sortOption.length - 1 && ( +
+ )} +
+ ))} +
); } From dbad9048225b478c77199efbc879a533ec4cf76c Mon Sep 17 00:00:00 2001 From: Choongman Kim Date: Sun, 26 Jan 2025 16:16:28 +0900 Subject: [PATCH 5/7] =?UTF-8?q?Modify:=20searchBar=EB=A5=BC=20NavBar=20?= =?UTF-8?q?=EC=95=88=EC=9C=BC=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/components/Navbar.tsx | 29 ++++++++++--------- src/app/components/SearchBar.tsx | 2 +- src/app/page.tsx | 4 +-- .../_components/presentation/SearchResult.tsx | 16 ++++++---- src/app/search/page.tsx | 5 +--- 5 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/app/components/Navbar.tsx b/src/app/components/Navbar.tsx index 2293fe3..1b0f8e8 100644 --- a/src/app/components/Navbar.tsx +++ b/src/app/components/Navbar.tsx @@ -1,4 +1,5 @@ "use client"; + import Image from "next/image"; import { useRouter } from "next/navigation"; @@ -6,13 +7,14 @@ import Logo from "/public/Logo.png"; import BookIcon from "/public/icons/Books.png"; import { useSearchStore } from "@/stores/searchStore"; +import SearchBar from "./SearchBar"; export default function Navbar() { const router = useRouter(); const { resetSearchState } = useSearchStore(); return ( -
+
-
- books { - resetSearchState(); - router.push("/bookshelf"); - }} - /> -
+ + books { + resetSearchState(); + router.push("/bookshelf"); + }} + />
); } diff --git a/src/app/components/SearchBar.tsx b/src/app/components/SearchBar.tsx index f68cd21..4d76c78 100644 --- a/src/app/components/SearchBar.tsx +++ b/src/app/components/SearchBar.tsx @@ -20,7 +20,7 @@ export default function SearchBar() { role="search" aria-label="도서 검색" onSubmit={handleSubmit} - className="mb-14 flex w-5/12 min-w-72 rounded-lg bg-white px-4 py-5 shadow-sm" + className="flex w-5/12 min-w-72 rounded-lg bg-white p-4 shadow-md" >