From 8b245ac2c01d532a6db9b7226e808936fc6f268c Mon Sep 17 00:00:00 2001 From: Yeonsu Lee <170384198+suuuuya@users.noreply.github.com> Date: Sat, 18 Oct 2025 02:09:08 +0900 Subject: [PATCH 01/19] =?UTF-8?q?style:=20=EC=99=80=EC=9D=B8=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=8A=A4=ED=83=80?= =?UTF-8?q?=EC=9D=BC=20=EC=88=98=EC=A0=95=20#218?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wine-recommended/recommend-card.tsx | 19 ++++++++-- src/components/card/card-info.tsx | 36 +++++++++++++------ src/components/card/card.tsx | 2 +- 3 files changed, 42 insertions(+), 15 deletions(-) diff --git a/src/app/wines/_components/wine-recommended/recommend-card.tsx b/src/app/wines/_components/wine-recommended/recommend-card.tsx index af6b563f..49e01cba 100644 --- a/src/app/wines/_components/wine-recommended/recommend-card.tsx +++ b/src/app/wines/_components/wine-recommended/recommend-card.tsx @@ -1,3 +1,4 @@ +import { cn } from "@/lib/utils"; import CardImg from "@/components/card/card-img"; import CardInfo from "@/components/card/card-info"; import { CardItem } from "@/types/card-item-type"; @@ -23,9 +24,21 @@ const RecommendCard = ({ wine }: RecommendCardProps) => { ); diff --git a/src/components/card/card-info.tsx b/src/components/card/card-info.tsx index c483927d..a3578266 100644 --- a/src/components/card/card-info.tsx +++ b/src/components/card/card-info.tsx @@ -1,3 +1,4 @@ +import { cn } from "@/lib/utils"; import Rating from "@/components/rating/rating"; /** @@ -35,21 +36,27 @@ const CardInfo = ({ avgRating, reviewCount = 0, className, - ratingWrapperClassName, - reviewCountClassName, - nameClassName, - regionClassName, - priceClassName, + ratingWrapperClassName = "", + reviewCountClassName = "", + nameClassName = "", + regionClassName = "", + priceClassName = "", }: CardInfoProps) => { return ( -
+
{typeof avgRating === "number" && (
{reviewCount > 0 ? `${reviewCount.toLocaleString()}개의 후기` @@ -58,18 +65,25 @@ const CardInfo = ({
)}
-
+
{name}
{region}
{typeof price === "number" && (
{price.toLocaleString()}원
diff --git a/src/components/card/card.tsx b/src/components/card/card.tsx index 6b9d0596..2bd85692 100644 --- a/src/components/card/card.tsx +++ b/src/components/card/card.tsx @@ -76,7 +76,7 @@ const Card = ({ blurDataURL={blurDataURL} /> )} -
+
{href ? ( Date: Sat, 18 Oct 2025 02:14:22 +0900 Subject: [PATCH 02/19] =?UTF-8?q?style:=20GNB=20=EB=A1=9C=EA=B3=A0=20?= =?UTF-8?q?=EC=82=AC=EC=9D=B4=EC=A6=88=20=EC=88=98=EC=A0=95=20#218?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/gnb/gnb.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/gnb/gnb.tsx b/src/components/gnb/gnb.tsx index 14440204..c5daeb44 100644 --- a/src/components/gnb/gnb.tsx +++ b/src/components/gnb/gnb.tsx @@ -56,7 +56,7 @@ const Gnb = ({ user }: { user: User }) => { aria-label="메인페이지 이동" className="flex items-center leading-[26px] text-white" > - +
From 01f7670cbfdbd268d5241ea7482f3a97f8553c41 Mon Sep 17 00:00:00 2001 From: Yeonsu Lee <170384198+suuuuya@users.noreply.github.com> Date: Sat, 18 Oct 2025 02:16:44 +0900 Subject: [PATCH 03/19] =?UTF-8?q?chore:=20GNB=20=EB=A1=9C=EA=B3=A0=20h1=20?= =?UTF-8?q?=EC=8B=9C=EB=A9=98=ED=8B=B1=20=ED=83=9C=EA=B7=B8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20#218?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/gnb/gnb.tsx | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/components/gnb/gnb.tsx b/src/components/gnb/gnb.tsx index c5daeb44..b6a6a818 100644 --- a/src/components/gnb/gnb.tsx +++ b/src/components/gnb/gnb.tsx @@ -51,13 +51,15 @@ const Gnb = ({ user }: { user: User }) => { )} >
- - - +

+ + + +

{user ? ( From 5497798c44482d9be85a615ed116d98223d41eb5 Mon Sep 17 00:00:00 2001 From: Yeonsu Lee <170384198+suuuuya@users.noreply.github.com> Date: Sat, 18 Oct 2025 04:37:59 +0900 Subject: [PATCH 04/19] =?UTF-8?q?style:=20=EC=99=80=EC=9D=B8=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=8A=A4=ED=83=80?= =?UTF-8?q?=EC=9D=BC=20=EC=88=98=EC=A0=95=20#218?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/globals.css | 4 +++ .../wine-detail/wine-detail-content.tsx | 2 +- .../wine-flavor/wine-flavor-section.tsx | 14 ++++----- .../_components/wine-header/wine-header.tsx | 6 ++-- .../wine-review/wine-review-item.tsx | 30 +++++++++++-------- .../wine-review/wine-review-section.tsx | 8 ++--- .../wine-taste/wine-taste-section.tsx | 10 +++---- .../wine-recommended/recommend-card.tsx | 2 +- src/components/card/card.tsx | 2 +- src/components/chat-bot/chat-style.css | 4 +-- src/components/flavor/flavor.tsx | 12 ++------ tailwind.config.ts | 1 + 12 files changed, 48 insertions(+), 47 deletions(-) diff --git a/src/app/globals.css b/src/app/globals.css index 078e671d..5f6056fc 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -168,3 +168,7 @@ div.swiper-scrollbar { -webkit-animation: skeleton-gradient 1.8s infinite ease-in-out; animation: skeleton-gradient 1.8s infinite ease-in-out; } + +.break-word { + word-break: break-word; +} diff --git a/src/app/wines/[id]/_components/wine-detail/wine-detail-content.tsx b/src/app/wines/[id]/_components/wine-detail/wine-detail-content.tsx index d646a39b..2f302fea 100644 --- a/src/app/wines/[id]/_components/wine-detail/wine-detail-content.tsx +++ b/src/app/wines/[id]/_components/wine-detail/wine-detail-content.tsx @@ -41,7 +41,7 @@ const WineDetailContent = ({ wineId }: WineDetailContentProps) => { return (
{/* 헤더 */} -
+
diff --git a/src/app/wines/[id]/_components/wine-flavor/wine-flavor-section.tsx b/src/app/wines/[id]/_components/wine-flavor/wine-flavor-section.tsx index 1a573f31..c0b17a90 100644 --- a/src/app/wines/[id]/_components/wine-flavor/wine-flavor-section.tsx +++ b/src/app/wines/[id]/_components/wine-flavor/wine-flavor-section.tsx @@ -29,7 +29,7 @@ const FlavorSection = ({ reviews, reviewCount }: FlavorSectionProps) => {
@@ -37,23 +37,21 @@ const FlavorSection = ({ reviews, reviewCount }: FlavorSectionProps) => {
-

+

어떤 향이 있나요? -

+ ({reviewCount}명 참여)
{/* Flavor 컴포넌트 */} -
+
-
- -
+
diff --git a/src/app/wines/[id]/_components/wine-header/wine-header.tsx b/src/app/wines/[id]/_components/wine-header/wine-header.tsx index 9a97840d..7199c87e 100644 --- a/src/app/wines/[id]/_components/wine-header/wine-header.tsx +++ b/src/app/wines/[id]/_components/wine-header/wine-header.tsx @@ -77,12 +77,12 @@ const WineHeader = ({ wine }: WineHeaderProps) => { {reviewLabel(wine.reviewCount)}
-

{wine.name} -

+

{/* 1. 별점 */} @@ -235,7 +235,7 @@ const WineReviewItem = ({

{/* 5. 맛 평가 토글 영역 */} -
+
-
+
@@ -257,21 +263,21 @@ const WineReviewItem = ({
{/* 6. 토글 */} -
+
setIsTasteOpen(!isTasteOpen)} className={cn( - "h-auto w-auto p-2", + "!h-[32px] !w-full", "!border-none !bg-transparent hover:!bg-transparent active:!bg-transparent", "text-gray-600 transition-transform duration-300 ease-in-out", isTasteOpen && "rotate-180" )} /> -
+
diff --git a/src/app/wines/[id]/_components/wine-review/wine-review-section.tsx b/src/app/wines/[id]/_components/wine-review/wine-review-section.tsx index 09171a0d..7dea063b 100644 --- a/src/app/wines/[id]/_components/wine-review/wine-review-section.tsx +++ b/src/app/wines/[id]/_components/wine-review/wine-review-section.tsx @@ -66,8 +66,8 @@ const ReviewSection = ({ {/* 모바일/태블릿: 평점 분포 */}
@@ -82,14 +82,14 @@ const ReviewSection = ({
{/* 왼쪽: 리뷰 목록 */}
-
+
{visibleReviews.map((review, index) => ( { aria-labelledby={tasteHeadingId} className={cn( "w-full", - "tablet:grid tablet:grid-cols-2", + "tablet:grid tablet:grid-cols-[1fr_2fr]", "pc:flex pc:flex-col pc:gap-6" )} > @@ -55,13 +55,13 @@ const WineTasteSection = ({ reviews, reviewCount }: WineTasteSectionProps) => {
-

+

어떤 맛이 나나요? -

+

({reviewCount}명 참여)

@@ -70,7 +70,7 @@ const WineTasteSection = ({ reviews, reviewCount }: WineTasteSectionProps) => { aria-label={`와인 맛 분포: ${tasteA11yLabel}`} className="flex w-full justify-center tablet:justify-start" > -
+
diff --git a/src/app/wines/_components/wine-recommended/recommend-card.tsx b/src/app/wines/_components/wine-recommended/recommend-card.tsx index 49e01cba..95fa7865 100644 --- a/src/app/wines/_components/wine-recommended/recommend-card.tsx +++ b/src/app/wines/_components/wine-recommended/recommend-card.tsx @@ -35,7 +35,7 @@ const RecommendCard = ({ wine }: RecommendCardProps) => { "pc:text-body-md" )} regionClassName={cn( - "text-caption text-secondary", + "mobile:text-caption text-secondary", "tablet:text-body-sm tablet:mt-[8px]", "pc:text-body-sm pc:mt-[8px]" )} diff --git a/src/components/card/card.tsx b/src/components/card/card.tsx index 2bd85692..f35ac525 100644 --- a/src/components/card/card.tsx +++ b/src/components/card/card.tsx @@ -76,7 +76,7 @@ const Card = ({ blurDataURL={blurDataURL} /> )} -
+
{href ? ( { +const Flavor = ({ items }: FlavorProps) => { return (
-
-

- 어떤 향이 있나요? -

- - ({count}명 참여) - -
-
+
{items.map((item, index) => ( diff --git a/tailwind.config.ts b/tailwind.config.ts index 5ad01d06..0503aca7 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -54,6 +54,7 @@ export default { "title-hero": ["32px", { lineHeight: "46px", fontWeight: "700" }], "title-page-md": ["40px", { lineHeight: "52px", fontWeight: "700" }], "title-page-sm": ["32px", { lineHeight: "46px", fontWeight: "700" }], + "title-page-xs": ["24px", { lineHeight: "32px", fontWeight: "700" }], "heading-lg": ["24px", { lineHeight: "32px", fontWeight: "600" }], "heading-md": ["20px", { lineHeight: "30px", fontWeight: "700" }], "heading-sm": ["18px", { lineHeight: "30px", fontWeight: "700" }], From c9227f0b8674dab63bb044acb59eac7548963b61 Mon Sep 17 00:00:00 2001 From: Yeonsu Lee <170384198+suuuuya@users.noreply.github.com> Date: Sat, 18 Oct 2025 05:05:19 +0900 Subject: [PATCH 05/19] =?UTF-8?q?style:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8/?= =?UTF-8?q?=ED=9A=8C=EC=9B=90=EA=B0=80=EC=9E=85,=20=EB=A7=88=EC=9D=B4?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=8A=A4=ED=83=80=EC=9D=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20#218?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(auth)/layout.tsx | 4 +++- .../myprofile/_components/account-item/account-item.tsx | 9 +++++---- .../myprofile/_components/review-item/review-item.tsx | 4 ++-- .../wines/[id]/_components/wine-header/wine-header.tsx | 2 +- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/app/(auth)/layout.tsx b/src/app/(auth)/layout.tsx index 8bb8d2fd..89a450f0 100644 --- a/src/app/(auth)/layout.tsx +++ b/src/app/(auth)/layout.tsx @@ -5,7 +5,9 @@ import { ReactNode } from "react"; const Layout = ({ children }: { children: Readonly }) => { return (
-
{children}
+
+ {children} +
); }; diff --git a/src/app/myprofile/_components/account-item/account-item.tsx b/src/app/myprofile/_components/account-item/account-item.tsx index e147c7c1..f5972513 100644 --- a/src/app/myprofile/_components/account-item/account-item.tsx +++ b/src/app/myprofile/_components/account-item/account-item.tsx @@ -71,8 +71,8 @@ const AccountItem = ({ user }: AccountItemProps) => { return (
@@ -110,8 +110,9 @@ const AccountItem = ({ user }: AccountItemProps) => { autoFocus maxLength={10} className={cn( - "w-2/3 flex-1 rounded-[4px] border border-gray-300 px-4 py-3 focus:outline-none", - "tablet:flex-1 pc:w-full" + "h-[42px] w-2/3 flex-1 rounded-[4px] border border-gray-300 px-4 py-3 focus:outline-none", + "tablet:h-[50px] tablet:flex-1", + "pc:h-[50px] pc:w-full" )} /> + +
+
+
+ + +
+

+ Tailwind Custom Colors +

+ +
+

+ 기본 팔레트 +

+
+ {primaryPalette.map(({ name, value, className }) => ( +
+
{name}
+
{value}
+
+ ))} +
+
+ +
+

+ Grayscale +

+
+ {grayScale.map(({ shade, hex }) => ( +
+
Gray {shade}
+
{hex}
+
+ ))} +
+
+ +
+

Accent

+
+ {accents.map(({ label, className }) => ( +
+
{label}
+
+ ))} +
+
+
+ +
+

+ Breakpoints +

+
+ {screenInfo.map(({ label, value }) => ( +
+
{label}
+
{value}
+
+ ))} +
+
+
+
+ ), +}; diff --git a/src/app/wines/[id]/_components/wine-review/wine-review-item.tsx b/src/app/wines/[id]/_components/wine-review/wine-review-item.tsx index 77909ac1..55969334 100644 --- a/src/app/wines/[id]/_components/wine-review/wine-review-item.tsx +++ b/src/app/wines/[id]/_components/wine-review/wine-review-item.tsx @@ -240,7 +240,7 @@ const WineReviewItem = ({ )} {/* 4. 리뷰 내용 */} -

+

{review.content}

From 347ffb4f65d0f3826ce6ff567d84b37778d582cd Mon Sep 17 00:00:00 2001 From: Yeonsu Lee <170384198+suuuuya@users.noreply.github.com> Date: Sat, 18 Oct 2025 22:31:31 +0900 Subject: [PATCH 08/19] =?UTF-8?q?chore:=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EB=93=9C=EB=9E=98=EA=B7=B8=20=EB=A7=89=EA=B8=B0=20#218?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(landing)/_components/landing-section.tsx | 3 ++- src/app/myprofile/_components/review-item/review-info.tsx | 2 ++ src/app/register/_components/register-wine.tsx | 1 + .../wines/[id]/_components/wine-header/wine-header.tsx | 3 +++ src/app/wines/[id]/_components/wine-info.tsx | 2 ++ .../[id]/_components/wine-review/wine-review-rating.tsx | 1 + src/components/card/card-img.tsx | 8 +++++++- src/components/flavor/flavor.tsx | 1 + 8 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/app/(landing)/_components/landing-section.tsx b/src/app/(landing)/_components/landing-section.tsx index 2061f6b1..ff65b0fc 100644 --- a/src/app/(landing)/_components/landing-section.tsx +++ b/src/app/(landing)/_components/landing-section.tsx @@ -71,7 +71,8 @@ const LandingSection = ({ src={imgSrc} alt={imgAlt} fill - sizes="(min-width: 1024px) 725px, 100vw" + draggable={false} + sizes="(min-width: 1024px) 725px, 100vw " className="object-cover" />
diff --git a/src/app/myprofile/_components/review-item/review-info.tsx b/src/app/myprofile/_components/review-item/review-info.tsx index c6696328..41ce3677 100644 --- a/src/app/myprofile/_components/review-item/review-info.tsx +++ b/src/app/myprofile/_components/review-item/review-info.tsx @@ -26,6 +26,7 @@ const ReviewInfo = ({ info }: { info: WineType }) => { height={60} className="h-[60px] w-[46px] tablet:h-[80px] tablet:w-[60px] pc:h-[80px] pc:w-[60px]" onError={() => setImgSrc(PLACEHOLDER)} + draggable={false} /> ) : ( { height={60} className="h-[60px] w-[46px] tablet:h-[80px] tablet:w-[60px] pc:h-[80px] pc:w-[60px]" alt={`${info.name} 이미지 불러오기 실패`} + draggable={false} /> )}
{ fill className="object-cover" quality={60} + draggable={false} />
@@ -55,6 +56,7 @@ const WineHeader = ({ wine }: WineHeaderProps) => { quality={75} sizes="(max-width: 743px) 220px, (max-width: 1279px) 280px, 320px" className="object-contain" + draggable={false} /> ) : ( { sizes="(max-width: 743px) 220px, (max-width: 1279px) 280px, 320px" className="object-contain" alt={`${name} 이미지 불러오기 실패`} + draggable={false} /> )}
diff --git a/src/app/wines/[id]/_components/wine-info.tsx b/src/app/wines/[id]/_components/wine-info.tsx index cedcfdd9..0c8d4e84 100644 --- a/src/app/wines/[id]/_components/wine-info.tsx +++ b/src/app/wines/[id]/_components/wine-info.tsx @@ -19,6 +19,7 @@ const WineInfo = ({ name, region, image }: WineInfoProps) => { fill className="object-contain" sizes="62px" + draggable={false} /> ) : ( { fill className="object-contain" alt={`${name} 이미지 불러오기 실패`} + draggable={false} /> )}
diff --git a/src/app/wines/[id]/_components/wine-review/wine-review-rating.tsx b/src/app/wines/[id]/_components/wine-review/wine-review-rating.tsx index b15e9d1d..2356b950 100644 --- a/src/app/wines/[id]/_components/wine-review/wine-review-rating.tsx +++ b/src/app/wines/[id]/_components/wine-review/wine-review-rating.tsx @@ -22,6 +22,7 @@ const WineReviewRating = ({ createdAt, user }: WineReviewRatingProps) => { width={48} height={48} className="h-full w-full object-cover" + draggable={false} /> ) : ( setHasError(true)} + draggable={false} /> ) : ( - {alt} + {alt} )}
diff --git a/src/components/flavor/flavor.tsx b/src/components/flavor/flavor.tsx index 3981f708..77f9d48b 100644 --- a/src/components/flavor/flavor.tsx +++ b/src/components/flavor/flavor.tsx @@ -17,6 +17,7 @@ const FlavorItem = ({ aroma, className }: FlavorItemProps) => { width={100} height={100} className="rounded-4" + draggable={false} /> {label} From f67b7b35125fb1bdf78da971f5bab65e05ba5ef1 Mon Sep 17 00:00:00 2001 From: junye0l Date: Sun, 19 Oct 2025 00:21:41 +0900 Subject: [PATCH 09/19] =?UTF-8?q?fix=20:=20=EB=AC=B4=ED=95=9C=EC=8A=A4?= =?UTF-8?q?=ED=81=AC=EB=A1=A4=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/my-profile/get-user-review.ts | 2 +- src/api/user/get-user-wines.ts | 2 +- .../myprofile/_components/my-profile/my-profile.tsx | 11 ++++++++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/api/my-profile/get-user-review.ts b/src/api/my-profile/get-user-review.ts index 2e6c5f73..13831633 100644 --- a/src/api/my-profile/get-user-review.ts +++ b/src/api/my-profile/get-user-review.ts @@ -23,6 +23,6 @@ export default async function getUserReview({ const res = await instance.get(url); return { ...res.data, - list: [...res.data.list].reverse(), + list: [...res.data.list], }; } diff --git a/src/api/user/get-user-wines.ts b/src/api/user/get-user-wines.ts index a4b85064..ac191125 100644 --- a/src/api/user/get-user-wines.ts +++ b/src/api/user/get-user-wines.ts @@ -24,7 +24,7 @@ const getUserWines = async ({ cursor, limit }: GetUserWinesData) => { return { ...res.data, - list: [...res.data.list].reverse(), + list: [...res.data.list], }; }; diff --git a/src/app/myprofile/_components/my-profile/my-profile.tsx b/src/app/myprofile/_components/my-profile/my-profile.tsx index b8893482..fae27637 100644 --- a/src/app/myprofile/_components/my-profile/my-profile.tsx +++ b/src/app/myprofile/_components/my-profile/my-profile.tsx @@ -2,7 +2,7 @@ import { redirect, useSearchParams } from "next/navigation"; import { cn } from "@/lib/utils"; -import { useMemo, useState, useEffect } from "react"; +import { useMemo, useState } from "react"; import AccountItem from "../account-item/account-item"; import ReviewItem from "../review-item/review-item"; import WineItem from "../wine-item/wine-item"; @@ -90,8 +90,11 @@ const MyProfile = ({ userInfo }: MyProfileProps) => { )) )} + +
+ {isFetchingNextPage && ( -
+
{Array.from({ length: 4 }).map((_, i) => ( ))} @@ -122,10 +125,12 @@ const MyProfile = ({ userInfo }: MyProfileProps) => { {(userWines as WineType[])?.map((wine) => ( ))} + +
)} {isFetchingNextPage && ( -
+
{Array.from({ length: 6 }).map((_, i) => ( ))} From 039756d51724a3e5196604d42b3a3bc206f9e39a Mon Sep 17 00:00:00 2001 From: Yeonsu Lee <170384198+suuuuya@users.noreply.github.com> Date: Sun, 19 Oct 2025 00:22:57 +0900 Subject: [PATCH 10/19] =?UTF-8?q?style:=20=ED=94=8C=EB=A1=9C=ED=8C=85=20?= =?UTF-8?q?=EB=B2=84=ED=8A=BC=20=ED=81=AC=EA=B8=B0=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?#218?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/button/chat-button.tsx | 2 +- src/components/button/scroll-top-button.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/button/chat-button.tsx b/src/components/button/chat-button.tsx index 34779f2d..e1da6800 100644 --- a/src/components/button/chat-button.tsx +++ b/src/components/button/chat-button.tsx @@ -23,7 +23,7 @@ const ChatButton = () => { icon="GptIcon" iconSize="md" className={cn( - "relative h-[40px] w-[40px] rounded-full border-gray-300", + "relative h-[45px] w-[45px] rounded-full border-gray-300", "tablet:h-[50px] tablet:w-[50px]", "pc:h-[50px] pc:w-[50px]" )} diff --git a/src/components/button/scroll-top-button.tsx b/src/components/button/scroll-top-button.tsx index b55650b4..6c93889d 100644 --- a/src/components/button/scroll-top-button.tsx +++ b/src/components/button/scroll-top-button.tsx @@ -26,7 +26,7 @@ const ScrollTopButton = ({}: ScrollTopButtonProps) => { icon="ArrowTopIcon" iconSize="md" className={cn( - "h-[40px] w-[40px] rounded-full border-gray-300", + "h-[45px] w-[45px] rounded-full border-gray-300", "tablet:h-[50px] tablet:w-[50px]", "pc:h-[50px] pc:w-[50px]" )} From 44496f28f6908e54ff07986b54097e3cd655ea50 Mon Sep 17 00:00:00 2001 From: Yeonsu Lee <170384198+suuuuya@users.noreply.github.com> Date: Sun, 19 Oct 2025 04:33:55 +0900 Subject: [PATCH 11/19] =?UTF-8?q?style:=20break-words=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=20#218?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(auth)/layout.tsx | 9 +++++---- .../myprofile/_components/review-item/review-info.tsx | 2 +- .../wines/[id]/_components/wine-header/wine-header.tsx | 2 +- .../[id]/_components/wine-review/wine-review-section.tsx | 2 +- src/app/wines/_components/wine-options/type-option.tsx | 2 +- src/components/flavor/flavor.tsx | 2 +- src/components/select-type/select-type.tsx | 2 +- 7 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/app/(auth)/layout.tsx b/src/app/(auth)/layout.tsx index 89a450f0..5869260b 100644 --- a/src/app/(auth)/layout.tsx +++ b/src/app/(auth)/layout.tsx @@ -4,10 +4,11 @@ import { ReactNode } from "react"; const Layout = ({ children }: { children: Readonly }) => { return ( -
-
- {children} -
+
+
{children}
); }; diff --git a/src/app/myprofile/_components/review-item/review-info.tsx b/src/app/myprofile/_components/review-item/review-info.tsx index 41ce3677..3e00ce73 100644 --- a/src/app/myprofile/_components/review-item/review-info.tsx +++ b/src/app/myprofile/_components/review-item/review-info.tsx @@ -40,7 +40,7 @@ const ReviewInfo = ({ info }: { info: WineType }) => { )}
{
-
+
diff --git a/src/app/wines/[id]/_components/wine-review/wine-review-section.tsx b/src/app/wines/[id]/_components/wine-review/wine-review-section.tsx index 6b32b31d..f7038ea8 100644 --- a/src/app/wines/[id]/_components/wine-review/wine-review-section.tsx +++ b/src/app/wines/[id]/_components/wine-review/wine-review-section.tsx @@ -104,7 +104,7 @@ const ReviewSection = ({
-
+
{visibleReviews.map((review, index) => ( { return (

타입

-
+
{(WINE_TYPE as WineType[]).map((item) => ( {
)} -
+
{items.map((item, index) => ( )}
-
+
Date: Sun, 19 Oct 2025 06:42:18 +0900 Subject: [PATCH 12/19] =?UTF-8?q?style:=20=EC=99=80=EC=9D=B8=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D/=EC=88=98=EC=A0=95=20=EB=AA=A8=EB=8B=AC=20=EC=8A=A4?= =?UTF-8?q?=ED=83=80=EC=9D=BC=20=EC=88=98=EC=A0=95=20#218?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/@modal/(.)register/[id]/page.tsx | 2 +- src/app/register/[id]/page.tsx | 32 ++++++++++++------- .../_components/wine-options/type-option.tsx | 2 +- src/components/modal/page-modal.tsx | 2 +- src/components/select-type/select-type.tsx | 2 +- 5 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/app/@modal/(.)register/[id]/page.tsx b/src/app/@modal/(.)register/[id]/page.tsx index 1a8a0f1e..dfd44935 100644 --- a/src/app/@modal/(.)register/[id]/page.tsx +++ b/src/app/@modal/(.)register/[id]/page.tsx @@ -17,7 +17,7 @@ const Page = async ({ params }: { params: Promise<{ id: string }> }) => { return ( diff --git a/src/app/register/[id]/page.tsx b/src/app/register/[id]/page.tsx index 6cf26e34..c3da5d36 100644 --- a/src/app/register/[id]/page.tsx +++ b/src/app/register/[id]/page.tsx @@ -40,18 +40,26 @@ const Page = async ({ params }: { params: Promise<{ id: string }> }) => { } return ( -
-

- {wineData ? "와인 수정" : "와인 등록"} -

-
- +
+
+

+ {wineData ? "와인 수정" : "와인 등록"} +

+
+ +
); diff --git a/src/app/wines/_components/wine-options/type-option.tsx b/src/app/wines/_components/wine-options/type-option.tsx index c55c63e9..e9cc0c37 100644 --- a/src/app/wines/_components/wine-options/type-option.tsx +++ b/src/app/wines/_components/wine-options/type-option.tsx @@ -49,7 +49,7 @@ const TypeItem = ({ alt="타입" draggable={false} /> - + {item} diff --git a/src/components/modal/page-modal.tsx b/src/components/modal/page-modal.tsx index 73b5b562..ca542597 100644 --- a/src/components/modal/page-modal.tsx +++ b/src/components/modal/page-modal.tsx @@ -85,7 +85,7 @@ const PageModal = ({ iconSize={"lg"} iconColor="gray300" aria-label="모달 닫기" - className="h-6 w-6 border-none focus:outline-none" + className="h-[24px] w-[24px] border-none focus:outline-none tablet:h-auto tablet:w-auto pc:h-auto pc:w-auto" onClick={() => router.back()} autoFocus={false} /> diff --git a/src/components/select-type/select-type.tsx b/src/components/select-type/select-type.tsx index 90a7e1a7..eda6d0a6 100644 --- a/src/components/select-type/select-type.tsx +++ b/src/components/select-type/select-type.tsx @@ -88,7 +88,7 @@ export const TypeInput = ({ alt="레드와인" draggable={false} /> - + {typeName} From 277297f3574c4d1a768b7e6fa4ba072a45221e58 Mon Sep 17 00:00:00 2001 From: Yeonsu Lee <170384198+suuuuya@users.noreply.github.com> Date: Sun, 19 Oct 2025 07:09:49 +0900 Subject: [PATCH 13/19] =?UTF-8?q?style:=20=EB=A6=AC=EB=B7=B0=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D/=EC=88=98=EC=A0=95=20=EB=AA=A8=EB=8B=AC=20=EC=8A=A4?= =?UTF-8?q?=ED=83=80=EC=9D=BC=20=EC=88=98=EC=A0=95=20#218?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/register/[id]/page.tsx | 2 +- src/app/reviews/[reviewId]/write/page.tsx | 19 ++++++++++++++++--- .../_components/wine-header/wine-header.tsx | 2 +- .../wine-review-form/review-form.tsx | 2 +- .../modal/page-modal-btn-wrapper.tsx | 3 ++- 5 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/app/register/[id]/page.tsx b/src/app/register/[id]/page.tsx index c3da5d36..5ebf028c 100644 --- a/src/app/register/[id]/page.tsx +++ b/src/app/register/[id]/page.tsx @@ -47,7 +47,7 @@ const Page = async ({ params }: { params: Promise<{ id: string }> }) => { "pc:py-[70px]" )} > -
+

-

-

리뷰 작성

+
+
+

리뷰 작성

{
-
+
diff --git a/src/app/wines/[id]/_components/wine-review-form/review-form.tsx b/src/app/wines/[id]/_components/wine-review-form/review-form.tsx index fa5457dd..c3fe9442 100644 --- a/src/app/wines/[id]/_components/wine-review-form/review-form.tsx +++ b/src/app/wines/[id]/_components/wine-review-form/review-form.tsx @@ -136,7 +136,7 @@ export default function ReviewForm({ return (
diff --git a/src/components/modal/page-modal-btn-wrapper.tsx b/src/components/modal/page-modal-btn-wrapper.tsx index 93b91c56..fd7481f4 100644 --- a/src/components/modal/page-modal-btn-wrapper.tsx +++ b/src/components/modal/page-modal-btn-wrapper.tsx @@ -18,7 +18,8 @@ const PageModalBtnWrapper = ({ "after:absolute after:block after:bg-gradient-to-t after:content-['']", "after:bottom-full after:left-0 after:h-[80px] after:w-full", "after:pointer-events-none after:from-white after:from-40%", - "tablet:sticky tablet:from-70% pc:sticky pc:from-70%", + "tablet:sticky tablet:from-70% tablet:px-0 pc:sticky pc:from-70%", + "pc:px-0", className )} > From e489a3f4cda79a6f94ecf60ec88c3f508da2c10e Mon Sep 17 00:00:00 2001 From: Yeonsu Lee <170384198+suuuuya@users.noreply.github.com> Date: Sun, 19 Oct 2025 14:00:00 +0900 Subject: [PATCH 14/19] =?UTF-8?q?fix:=20=EB=A1=9C=EA=B3=A0=20h1=20?= =?UTF-8?q?=ED=83=9C=EA=B7=B8=20=EC=82=AD=EC=A0=9C=20#218?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/gnb/gnb.tsx | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/components/gnb/gnb.tsx b/src/components/gnb/gnb.tsx index b6a6a818..18304722 100644 --- a/src/components/gnb/gnb.tsx +++ b/src/components/gnb/gnb.tsx @@ -51,16 +51,13 @@ const Gnb = ({ user }: { user: User }) => { )} >
-

- - - -

- + + +
{user ? (
diff --git a/src/middleware.ts b/src/middleware.ts index 0badd6f4..827de070 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -2,8 +2,21 @@ import { NextRequest, NextResponse } from "next/server"; const middleware = (request: NextRequest) => { const token = request.cookies.get("accessToken")?.value; + const requestedPage = request.nextUrl.pathname; - if (token) { + if (!token) { + if (requestedPage === "/login" || requestedPage === "/signup") { + return NextResponse.next(); + } + + const url = request.nextUrl.clone(); + url.pathname = "/login"; + url.searchParams.set("redirect", requestedPage); + + return NextResponse.redirect(url); + } + + if (requestedPage === "/login" || requestedPage === "/signup") { return NextResponse.redirect(new URL("/myprofile", request.url)); } @@ -11,7 +24,14 @@ const middleware = (request: NextRequest) => { }; export const config = { - matcher: ["/login", "/signup"], + matcher: [ + "/myprofile", + "/wine/:path*", + "/register/:path*", + "/review/:path*", + "/login", + "/signup", + ], }; export default middleware; From e9e3df8bcfbd899b1b1afd4ef5141490793c186f Mon Sep 17 00:00:00 2001 From: Yeonsu Lee <170384198+suuuuya@users.noreply.github.com> Date: Mon, 20 Oct 2025 14:59:21 +0900 Subject: [PATCH 16/19] =?UTF-8?q?style:=20=EB=AA=A8=EB=8B=AC=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EA=B0=80=EC=9A=B4=EB=8D=B0=20=EC=A0=95?= =?UTF-8?q?=EB=A0=AC=20=EB=B0=8F=20=EB=A6=AC=EB=B7=B0=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=88=84=EB=9D=BD=EB=90=9C=20?= =?UTF-8?q?=EC=8A=A4=ED=83=80=EC=9D=BC=20=EC=B6=94=EA=B0=80=20#218?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/register/[id]/page.tsx | 2 +- src/app/reviews/[reviewId]/edit/page.tsx | 17 +++++++++++++++-- src/app/reviews/[reviewId]/write/page.tsx | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/app/register/[id]/page.tsx b/src/app/register/[id]/page.tsx index 5ebf028c..f3f697fa 100644 --- a/src/app/register/[id]/page.tsx +++ b/src/app/register/[id]/page.tsx @@ -42,7 +42,7 @@ const Page = async ({ params }: { params: Promise<{ id: string }> }) => { return (
-
+
+

리뷰 수정

Date: Mon, 20 Oct 2025 17:25:42 +0900 Subject: [PATCH 17/19] Update team responsibilities in README MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removed 정훈's responsibilities from the README. --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 64282688..b338970c 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,6 @@ - 휘태: 로그인, 회원가입, 리뷰 남기기/와인 등록하기 모달 - 연수: 마이페이지(내가 등록한 와인), notion 문서화 - 지권: 마이페이지(내가 쓴 후기) -- 정훈: 와인 목록 페이지 > [Wiki 바로가기](https://github.com/Team-3-2/Wine/wiki) From b3185c10d62daeaa0f70b82d99dc87ebe3456ef6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=97=B0=EC=88=98?= <170384198+suuuuya@users.noreply.github.com> Date: Mon, 20 Oct 2025 21:29:27 +0900 Subject: [PATCH 18/19] =?UTF-8?q?=E2=9C=A8=20Feat:=20README=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=9E=91=EC=84=B1(=EC=9E=84=EC=8B=9C?= =?UTF-8?q?=EC=A0=80=EC=9E=A5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updated project description, team roles, and core time details. --- README.md | 71 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 49 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index b338970c..0b520aa8 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,52 @@ -# Wine -(프로젝트 설명) - -## 목표 -- 목표: 프로젝트 완성 - -## 팀원 정보 및 역할 -- 준열: 팀 리딩, 랜딩 페이지, 와인 상세 페이지 -- 휘태: 로그인, 회원가입, 리뷰 남기기/와인 등록하기 모달 -- 연수: 마이페이지(내가 등록한 와인), notion 문서화 -- 지권: 마이페이지(내가 쓴 후기) - -> [Wiki 바로가기](https://github.com/Team-3-2/Wine/wiki) - -## Core Time -- 데일리 스크럼 - - 월요일: 오후 3시 - - 화요일 일요일: 오후 1시 30분 (20~30분 진행) -- 집중 코딩 (모각코) - - 9:00 ~ 18:00 (zep 활용) - -> [Wiki 바로가기](https://github.com/Team-3-2/Wine/wiki) +# 🍷 WHYNE +### WHYNE은 사용자가 다양한 와인 리뷰를 확인하고, 구매 여부를 쉽게 판단할 수 있는 와인 리뷰 플랫폼입니다. + +image + +
+ + +## 🎯 목표 +> #### 주어진 요구사항을 충족하는 것을 넘어, 경쟁력 있는 특별한 UI / UX를 도입하고 사용자에게 최적의 와인 선택 경험을 제공하는 것 + +
+ +## 👥 팀 소개 + + + + 🔗 [Wiki 바로가기](https://github.com/Team-3-2/Wine/wiki) + + + +
+ +|팀장 |팀원 |팀원 |팀원 | +|:---:|:---:|:---:|:---:| +| | | | | + +
+ +
+ +## ⏰ Core Time + + + + 🔗 [Wiki 바로가기](https://github.com/Team-3-2/Wine/wiki) + + + +> 원활한 소통을 위해 매일 진행하며, 의미 없는 시간이 되지 않도록 **노션 문서화**로 기록합니다. + +#### 🗓️ 시간표 + +| 요일 | 시간 | +|:---:|:---:| +| 월요일 | **15:00** | +| 화요일 ~ 일요일 | **13:30** | + +
## Branch 전략 - `main` → 배포 From 6674d16d88a8cbf60c056d7264235533dd04e323 Mon Sep 17 00:00:00 2001 From: Yeonsu Lee <170384198+suuuuya@users.noreply.github.com> Date: Mon, 20 Oct 2025 21:55:25 +0900 Subject: [PATCH 19/19] =?UTF-8?q?docs:=20=EB=A6=AC=EB=93=9C=EB=AF=B8=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1=EC=A4=91=20=EC=9E=84=EC=8B=9C=EC=A0=80?= =?UTF-8?q?=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 0b520aa8..b1fecd4c 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,18 @@ # 🍷 WHYNE + ### WHYNE은 사용자가 다양한 와인 리뷰를 확인하고, 구매 여부를 쉽게 판단할 수 있는 와인 리뷰 플랫폼입니다. image
- ## 🎯 목표 -> #### 주어진 요구사항을 충족하는 것을 넘어, 경쟁력 있는 특별한 UI / UX를 도입하고 사용자에게 최적의 와인 선택 경험을 제공하는 것 + +> #### 주어진 요구사항을 충족하는 것을 넘어, 경쟁력 있는 특별한 UI / UX를 도입하고, 사용자에게 최적의 와인 선택 경험을 제공하는 것
-## 👥 팀 소개 +## 👥 팀 소개 @@ -40,15 +41,16 @@ > 원활한 소통을 위해 매일 진행하며, 의미 없는 시간이 되지 않도록 **노션 문서화**로 기록합니다. #### 🗓️ 시간표 - -| 요일 | 시간 | -|:---:|:---:| -| 월요일 | **15:00** | + +| 요일 | 시간 | +| :-------------: | :-------: | +| 월요일 | **15:00** | | 화요일 ~ 일요일 | **13:30** |
## Branch 전략 + - `main` → 배포 - `develop` → 통합 브랜치 - `feature/*`, `design/*`, `chore/*` → 작업 브랜치 → PR → develop → main @@ -56,6 +58,7 @@ > [Wiki 바로가기](https://github.com/Team-3-2/Wine/wiki/%EB%B8%8C%EB%9E%9C%EC%B9%98-%EC%BB%A8%EB%B2%A4%EC%85%98) ## 기술 스택 + - Next.js, React, TypeScript - Tailwind CSS - Storybook @@ -65,12 +68,14 @@ > [Wiki 바로가기](https://github.com/Team-3-2/Wine/wiki/%EA%B8%B0%EC%88%A0-%EC%8A%A4%ED%83%9D) ## 깃허브 액션 -- Vercel 배포 -- Chromatic으로 Storybook 배포 (develop 기준) + +- Vercel 배포 +- Chromatic으로 Storybook 배포 (develop 기준) > [Wiki 바로가기](https://github.com/Team-3-2/Wine/wiki/%EA%B9%83%ED%97%88%EB%B8%8C-%EC%95%A1%EC%85%98) ## 프로젝트 관리 + - README: 프로젝트 개요 / 기술 스택 / 실행 방법 - Wiki: 세부 규칙, 가이드 문서, 브랜치 룰 - Notion: 회의록, 멘토링 피드백, 참고 자료 @@ -79,6 +84,7 @@ > [Wiki 바로가기](https://github.com/Team-3-2/Wine/wiki/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EA%B4%80%EB%A6%AC) ## 실행 방법 + ```bash # 패키지 설치 npm install @@ -107,9 +113,11 @@ src ┣ types # 전역 타입 정의 (TypeScript 인터페이스, 타입) ┗ utils # 공통 유틸리티 함수 ``` + > [Wiki 바로가기](https://github.com/Team-3-2/Wine/wiki/%ED%8F%B4%EB%8D%94-%EA%B5%AC%EC%A1%B0) ## 바로가기 + - [배포 바로가기](https://google.com/) - [스토리북 바로가기](https://68d3998e0b054d1207706cbb-tzevsxkvcq.chromatic.com/?path=/docs/my-profile-accountitem--docs) - [Wiki 바로가기](https://github.com/Team-3-2/Wine/wiki)