diff --git a/umc-master/src/components/Modal/profile.tsx b/umc-master/src/components/Modal/profile.tsx index 0c0d5ed..5f4d3d2 100644 --- a/umc-master/src/components/Modal/profile.tsx +++ b/umc-master/src/components/Modal/profile.tsx @@ -14,16 +14,17 @@ import { getUsers } from '@apis/profileApi'; interface ProfileModalProps { isOpen: boolean; onClose: () => void; + profileImage: string; } -const ProfileModal: React.FC = ({ isOpen, onClose }) => { +const ProfileModal: React.FC = ({ isOpen, onClose, profileImage }) => { if (!isOpen) return null; const navigate = useNavigate(); const { clearAuth } = useAuthStore(); const { user, fetchUser } = useUserStore(); useEffect(() => { - fetchUser(); // 컴포넌트 마운트 시 사용자 정보 가져오기 + fetchUser(); }, []); getUsers(); @@ -39,7 +40,7 @@ const ProfileModal: React.FC = ({ isOpen, onClose }) => { - + {user?.nickname} 님 @@ -109,7 +110,7 @@ const ProfileWrapper = styled.div` padding: 20px 0; `; -const ProfileImage = styled.div` +const ProfileImage = styled.img` width: 60px; height: 60px; border-radius: 50%; @@ -138,7 +139,6 @@ const MenuItem = styled.li` } `; -// "마이페이지" 링크 전용 컴포넌트 const MenuItemLink = styled(Link)` display: flex; align-items: center; diff --git a/umc-master/src/components/NavigationBar/NavigationBar.tsx b/umc-master/src/components/NavigationBar/NavigationBar.tsx index 9846272..698f53a 100644 --- a/umc-master/src/components/NavigationBar/NavigationBar.tsx +++ b/umc-master/src/components/NavigationBar/NavigationBar.tsx @@ -26,6 +26,10 @@ const NavigationBar: React.FC = ({ login }) => { }, []); getUsers(); + const handleNavClick = () => { + window.scrollTo(0, 0); + }; + const toggleAlarmModal = () => setIsAlarmModalOpen((prev) => !prev); const toggleProfileModal = () => setIsProfileModalOpen((prev) => !prev); @@ -33,15 +37,23 @@ const NavigationBar: React.FC = ({ login }) => { - + ); }; diff --git a/umc-master/src/pages/community/components/Banner.tsx b/umc-master/src/pages/community/components/Banner.tsx index fa9a931..ab7e77f 100644 --- a/umc-master/src/pages/community/components/Banner.tsx +++ b/umc-master/src/pages/community/components/Banner.tsx @@ -38,4 +38,5 @@ const TipCreateBTN = styled.button` border-radius: 50px; margin-top: 24px; color: ${({ theme }) => theme.colors.text['black']}; + cursor: pointer; `; diff --git a/umc-master/src/pages/saveTip/SaveTipPage.tsx b/umc-master/src/pages/saveTip/SaveTipPage.tsx index 2641d3b..a877484 100644 --- a/umc-master/src/pages/saveTip/SaveTipPage.tsx +++ b/umc-master/src/pages/saveTip/SaveTipPage.tsx @@ -80,8 +80,8 @@ const SaveTipPage: React.FC = () => { : placeholderImg } text={item.title} - likes={item.likes ?? 0} - bookmarks={item.bookmarks ?? 0} + likes={item.likeCount ?? 0} + bookmarks={item.saveCount ?? 0} date={item.createdAt.slice(0, 10)} onClick={() => handleCardClick(item.tipId)} /> diff --git a/umc-master/src/pages/saveTip/components/PostDetail.tsx b/umc-master/src/pages/saveTip/components/PostDetail.tsx index c9e1460..6af68ab 100644 --- a/umc-master/src/pages/saveTip/components/PostDetail.tsx +++ b/umc-master/src/pages/saveTip/components/PostDetail.tsx @@ -45,7 +45,19 @@ const PostDetail: React.FC = ({ detail }) => { return ( - {detail.media.length > 0 && 게시물 이미지} + {detail.media.length > 0 && ( + + {detail.media.map((item, index) => ( + + ))} + + )} {detail.title} @@ -98,14 +110,78 @@ const PostView = styled.div` align-self: stretch; `; -const Img = styled.img` +const ImageGrid = styled.div<{ count: number }>` + display: grid; width: 80vw; - height: 360px; + gap: 10px; + + ${({ count }) => + count === 1 + ? `grid-template-columns: 1fr; + grid-auto-rows: 360px;` + : count === 2 + ? `grid-template-columns: 1fr 1fr; + grid-auto-rows: 360px;` + : count === 3 + ? `grid-template-columns: repeat(3, 1fr);` + : count === 4 + ? ` + grid-template-columns: 1fr 1fr 1fr; + grid-template-rows: auto auto; + grid-template-areas: + "left top right" + "left bottom right"; + ` + : count === 5 + ? ` + display: grid; + grid-template-columns: 1fr 1fr 1fr; + & > :nth-child(4), & > :nth-child(5) { + grid-column: span 1; + } + ` + : `grid-template-columns: repeat(3, 1fr);`} + + grid-auto-rows: minmax(180px, auto); +`; + +const ImageItem = styled.img<{ index: number; count: number }>` + width: 100%; border-radius: 20px; object-fit: cover; - background: #d9d9d9; -`; + ${({ count, index }) => + count === 1 + ? `height: 360px;` + : count === 4 + ? index === 0 + ? `grid-area: left; grid-row: span 2; height: 360px;` + : index === 1 + ? `grid-area: top; height: 175px;` + : index === 2 + ? `grid-area: bottom; height: 175px;` + : index === 3 + ? `grid-area: right; grid-row: span 2; height: 360px;` + : '' + : // TODO: 수정 + // count === 5 + // ? index === 0 + // ? `grid-area: left; grid-row: span 2; height: 360px;` + // : index === 1 + // ? `grid-area: top; height: 175px;` + // : index === 2 + // ? `grid-area: bottom-left; grid-column: span 1; height: 175px;` + // : index === 3 + // ? `grid-area: bottom-right; grid-column: span 1; height: 175px;` + // : index === 4 + // ? `grid-area: right; grid-row: span 2; height: 360px;` + // : '' + count === 5 + ? index < 3 + ? `grid-column: span 1; height: 360px;` + : `grid-column: span 2; height: 360px;` + : `aspect-ratio: 16/9;`} +`; const PostInfo = styled.div` display: flex; justify-content: space-between;