From f624b9bf51bc7e458b7af989e37b92225ca2d59e Mon Sep 17 00:00:00 2001 From: yoonyoungyang Date: Wed, 18 Feb 2026 21:06:27 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=ED=95=98=ED=8A=B8=20=EC=83=89=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/common/BottomSheet 2.tsx | 55 +++++++++++++++++++ .../campaign-detail/campaign-detail.tsx | 23 ++++---- app/routes/home/components/HeartButton.tsx | 2 +- 3 files changed, 67 insertions(+), 13 deletions(-) create mode 100644 app/components/common/BottomSheet 2.tsx diff --git a/app/components/common/BottomSheet 2.tsx b/app/components/common/BottomSheet 2.tsx new file mode 100644 index 0000000..76b00a8 --- /dev/null +++ b/app/components/common/BottomSheet 2.tsx @@ -0,0 +1,55 @@ +import type { ReactNode } from "react"; +import { cn } from "../../lib/utils"; + +type BottomSheetProps = { + open: boolean; + onClose: () => void; + children: ReactNode; + height?: number | string; + className?: string; + contentClassName?: string; + overlayClassName?: string; +}; + +export default function BottomSheet({ + open, + onClose, + children, + height, + className, + contentClassName, + overlayClassName, +}: BottomSheetProps) { + if (!open) return null; + + const heightStyle = + height === undefined + ? undefined + : typeof height === "number" + ? { height: `${height}px` } + : { height }; + + return ( +
+
+ ); +} diff --git a/app/routes/campaign-detail/campaign-detail.tsx b/app/routes/campaign-detail/campaign-detail.tsx index 1cf5756..f86c9f3 100644 --- a/app/routes/campaign-detail/campaign-detail.tsx +++ b/app/routes/campaign-detail/campaign-detail.tsx @@ -16,7 +16,6 @@ import type { CampaignDetailApiResponse, } from "../campaign-detail/types"; -import informationIconUrl from "../../assets/information-icon.svg?url"; import CampaignDetailSkeleton from "./components/CampaignDetailSkeleton"; import { toggleCampaignLike } from "./campaign-like"; @@ -406,23 +405,23 @@ export default function CampaignDetailContent({ description={brandData.description} /> -
+
+
+
+ + i + +
} text={toDdayText(campaign.dday)} /> - | - {campaign.quota}명 - | - +
+ {campaign.quota}명 +
+ {toKoreanCategory(campaign.category)}
diff --git a/app/routes/home/components/HeartButton.tsx b/app/routes/home/components/HeartButton.tsx index f2a29b0..b68866c 100644 --- a/app/routes/home/components/HeartButton.tsx +++ b/app/routes/home/components/HeartButton.tsx @@ -31,7 +31,7 @@ export default function HeartButton({ From 7a19fdea2ebaec0ce6389332e404b1a31b4b105c Mon Sep 17 00:00:00 2001 From: yoonyoungyang Date: Wed, 18 Feb 2026 21:20:03 +0900 Subject: [PATCH 2/4] =?UTF-8?q?=EC=BA=A0=ED=8E=98=EC=9D=B8=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=20=EA=B5=B5=EA=B8=B0=20=EC=A1=B0=EC=A0=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../campaign-detail/campaign-detail.tsx | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/app/routes/campaign-detail/campaign-detail.tsx b/app/routes/campaign-detail/campaign-detail.tsx index f86c9f3..8cbaff6 100644 --- a/app/routes/campaign-detail/campaign-detail.tsx +++ b/app/routes/campaign-detail/campaign-detail.tsx @@ -405,23 +405,28 @@ export default function CampaignDetailContent({ description={brandData.description} /> -
+
-
- + + + i -
+ } text={toDdayText(campaign.dday)} /> -
- {campaign.quota}명 -
- + + + + {campaign.quota}명 + + + + + {toKoreanCategory(campaign.category)}
@@ -550,11 +555,9 @@ function DetailRow({ function MetaItem({ icon, text }: { icon?: React.ReactNode; text: string }) { return ( - - {icon ? ( - {icon} - ) : null} - {text} + + {icon ? {icon} : null} + {text} ); } From 4bc8662c6bb633aee90472d7a12539a44f74508e Mon Sep 17 00:00:00 2001 From: yoonyoungyang Date: Thu, 19 Feb 2026 01:13:27 +0900 Subject: [PATCH 3/4] =?UTF-8?q?=EB=A7=A4=EC=B9=AD=EA=B2=B0=EA=B3=BC=20?= =?UTF-8?q?=ED=99=94=EB=A9=B4=20=EB=B0=98=EC=9D=91=ED=98=95=20&=20step2=20?= =?UTF-8?q?=ED=95=98=EC=9D=98=20in=20=EB=B6=99=EC=9D=B4=EA=B8=B0=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/result/matching-result-content.tsx | 95 +++++++++++-------- .../matching/test/step2/step2-content.tsx | 2 +- 2 files changed, 55 insertions(+), 42 deletions(-) diff --git a/app/routes/matching/test/result/matching-result-content.tsx b/app/routes/matching/test/result/matching-result-content.tsx index e6382aa..43619ce 100644 --- a/app/routes/matching/test/result/matching-result-content.tsx +++ b/app/routes/matching/test/result/matching-result-content.tsx @@ -129,28 +129,40 @@ export default function MatchingResultContent() { return (
-
-
-
-
-
-
-

- +

+
+
+
+
+
+

+ {data.userName} {" "} 님의 매칭 결과

-

+

{data.userType}

-
+
{data.tags.map((tag) => ( #{tag} @@ -158,35 +170,36 @@ export default function MatchingResultContent() {
-
- {data.userType} +
+
+ {data.userType} +
- {loading ? ( -

- 불러오는 중… -

- ) : null} - {error ? ( -

- {error} -

- ) : null} - -
-

+

+ {loading ? ( +

불러오는 중…

+ ) : null} + {error ? ( +

{error}

+ ) : null} + +

나와 어울리는 TOP3 브랜드

-
+
{data.brands.map((b) => ( -
-
+
+
{b.logoUrl ? ( ) : ( -
+
{short5(b.brandName)}
)}
-
- +
+ {short5(b.brandName)} - + {b.matchingRatio}%
@@ -215,7 +228,7 @@ export default function MatchingResultContent() { ))}
-
+
-
+
diff --git a/app/routes/matching/test/step2/step2-content.tsx b/app/routes/matching/test/step2/step2-content.tsx index 8980d5a..7e085a1 100644 --- a/app/routes/matching/test/step2/step2-content.tsx +++ b/app/routes/matching/test/step2/step2-content.tsx @@ -257,7 +257,7 @@ export default function MatchingTestStep2Content({ /> { setBottomInput(bottomValue); From 905232eac6fdde5f0fab18b00b63069b43424ec8 Mon Sep 17 00:00:00 2001 From: yoonyoungyang Date: Thu, 19 Feb 2026 02:18:45 +0900 Subject: [PATCH 4/4] =?UTF-8?q?=EB=A7=A4=EC=B9=AD=EA=B2=80=EC=82=AC=20?= =?UTF-8?q?=EA=B2=B0=EA=B3=BC=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EB=A0=8C?= =?UTF-8?q?=EB=8D=94=EB=A7=81=20=ED=92=88=EC=A7=88=20=EB=86=92=EC=9D=B4?= =?UTF-8?q?=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/routes/matching/test/result/matching-result-content.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/routes/matching/test/result/matching-result-content.tsx b/app/routes/matching/test/result/matching-result-content.tsx index 43619ce..a57b2f1 100644 --- a/app/routes/matching/test/result/matching-result-content.tsx +++ b/app/routes/matching/test/result/matching-result-content.tsx @@ -176,6 +176,12 @@ export default function MatchingResultContent() { src={userTypeIconSrc} alt={data.userType} className="absolute left-0 top-[-12%] h-[112%] w-full select-none object-contain" + style={{ + imageRendering: "auto", + transform: "translateZ(0)", + backfaceVisibility: "hidden", + WebkitFontSmoothing: "antialiased", + }} draggable={false} />