From 589aa6714bce3f612c95bd4e0c396079dfdad038 Mon Sep 17 00:00:00 2001 From: seyun31 <2ne1jenna@naver.com> Date: Fri, 20 Feb 2026 14:36:01 +0900 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20"=EB=A6=AC=EC=96=BC=EB=A7=A4?= =?UTF-8?q?=EC=B9=98"=20=EB=B8=8C=EB=9E=9C=EB=93=9C=20=EC=A0=9C=EC=95=88?= =?UTF-8?q?=EB=B3=B4=EA=B8=B0=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EC=88=98=EC=A0=95=20=EB=B0=8F=20=EB=B0=94=ED=85=80?= =?UTF-8?q?=EC=8B=9C=ED=8A=B8=20=EC=B2=B4=ED=81=AC=20=EB=B0=95=EC=8A=A4=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/components/CampaignBrandCard.tsx | 43 ++--- .../proposal/sent-proposal-content.tsx | 14 +- app/routes/home/components/BannerCarousel.tsx | 8 + app/routes/home/home-after-match.tsx | 150 +++++++++--------- .../create/components/SelectBottomSheet.tsx | 7 +- 5 files changed, 123 insertions(+), 99 deletions(-) diff --git a/app/routes/business/components/CampaignBrandCard.tsx b/app/routes/business/components/CampaignBrandCard.tsx index d709672..ade6281 100644 --- a/app/routes/business/components/CampaignBrandCard.tsx +++ b/app/routes/business/components/CampaignBrandCard.tsx @@ -3,18 +3,18 @@ import chatIcon from "../../../assets/chat-icon.svg"; import arrowRightIcon from "../../../assets/icon/arrow-right.svg"; interface CampaignBrandCardProps { - showChatSection?: boolean; - statusText?: string; - brandName?: string; - brandTags?: string[]; - brandImageUrl?: string; + showChatSection?: boolean; + statusText?: string; + brandName?: string; + brandTags?: string[]; + brandImageUrl?: string; matchingRate?: number; brandId?: number | string; category?: string; } -export default function CampaignBrandCard({ - showChatSection, +export default function CampaignBrandCard({ + showChatSection, statusText, brandName, brandTags, @@ -23,9 +23,9 @@ export default function CampaignBrandCard({ brandId, category }: CampaignBrandCardProps) { - const navigate = useNavigate(); + const navigate = useNavigate(); const handleBrandClick = (e: React.MouseEvent) => { - e.stopPropagation(); + e.stopPropagation(); if (brandId && category) { navigate(`/brand?brandId=${brandId}&domain=${category}`); } else { @@ -41,13 +41,12 @@ export default function CampaignBrandCard({
{brandName}
-

- {brandName || "브랜드명"} + {brandName || "리얼매치"}

-

- {brandTags && brandTags.length > 0 - ? brandTags.map(tag => `#${tag}`).join(" ") - : "#태그정보없음"} + {brandTags && brandTags.length > 0 + ? brandTags.map(tag => `#${tag}`).join(" ") + : "#정밀매칭 #원스톱협업 #쌍방향제안"}

-
- 매칭률 - {matchingRate || 0}% -
+ {matchingRate === 0 ? ( +
+ 광고 +
+ ) : ( +
+ 매칭률 + {matchingRate || 0}% +
+ )} {statusText}
diff --git a/app/routes/business/proposal/sent-proposal-content.tsx b/app/routes/business/proposal/sent-proposal-content.tsx index 8edb810..0d19d7a 100644 --- a/app/routes/business/proposal/sent-proposal-content.tsx +++ b/app/routes/business/proposal/sent-proposal-content.tsx @@ -17,6 +17,7 @@ import arrowRightIcon from "../../../assets/icon/arrow-right.svg"; import arrowPurpleIcon from "../../../assets/arrow-purple.svg"; import profileIcon from "../../../assets/icon-profile.svg"; import ConfirmModal from "../../../components/common/ConfirmModal"; +import adRealmatchLogo from "../../../assets/ad/ad-realmatch-logo.png"; export default function ProposalContent() { const [searchParams] = useSearchParams(); @@ -54,7 +55,16 @@ export default function ProposalContent() { const proposalResult = await getProposalDetail(proposalId); setData(proposalResult); - if (proposalResult.brandId) { + if (proposalResult.brandId === 0) { + // brandId가 0이면 리얼매치 광고로 하드코딩 + setBrand({ + brandId: 0, + brandName: "리얼매치", + brandTags: ["정밀매칭", "원스톱협업", "쌍방향제안"], + brandImageUrl: adRealmatchLogo, + matchingRate: 0 + }); + } else if (proposalResult.brandId) { const brandResult = await getBrandSummary(proposalResult.brandId); setBrand(brandResult); } @@ -184,7 +194,7 @@ export default function ProposalContent() {
- {data.productId} + {data.productId !== 0 ? data.productId : ""} arrow
diff --git a/app/routes/home/components/BannerCarousel.tsx b/app/routes/home/components/BannerCarousel.tsx index ec3739d..e98b142 100644 --- a/app/routes/home/components/BannerCarousel.tsx +++ b/app/routes/home/components/BannerCarousel.tsx @@ -28,9 +28,17 @@ const fashionBanners: BannerItem[] = [ export default function BannerCarousel({ category, + loading, }: { category: CategoryKey; + loading?: boolean; }) { + if (loading) { + return ( +
+ ); + } + const banners = category === "beauty" ? beautyBanners : fashionBanners; const displayBanners = [banners[banners.length - 1], ...banners, banners[0]]; diff --git a/app/routes/home/home-after-match.tsx b/app/routes/home/home-after-match.tsx index 83806de..6f36108 100644 --- a/app/routes/home/home-after-match.tsx +++ b/app/routes/home/home-after-match.tsx @@ -481,7 +481,7 @@ export default function HomeAfterMatchPage() { return (
- + @@ -561,46 +561,46 @@ export default function HomeAfterMatchPage() {
{homeCoreLoading ? Array.from({ length: 4 }).map((_, i) => ( -
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
- )) +
+ )) : campaigns.map((campaign, i) => { - const safeCampaignId = getCampaignId(campaign); - if (!safeCampaignId) return null; - - return ( - goCampaignDetail(campaign)} - onLikeToggle={handleCampaignLikeToggle} - /> - ); - })} + const safeCampaignId = getCampaignId(campaign); + if (!safeCampaignId) return null; + + return ( + goCampaignDetail(campaign)} + onLikeToggle={handleCampaignLikeToggle} + /> + ); + })}
{profileModel && ( @@ -623,46 +623,46 @@ export default function HomeAfterMatchPage() {
{homeCoreLoading ? Array.from({ length: 4 }).map((_, i) => ( -
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
- )) +
+ )) : popularCampaigns.map((campaign, i) => { - const safeCampaignId = getCampaignId(campaign); - if (!safeCampaignId) return null; - - return ( - goCampaignDetail(campaign)} - onLikeToggle={handleCampaignLikeToggle} - /> - ); - })} + const safeCampaignId = getCampaignId(campaign); + if (!safeCampaignId) return null; + + return ( + goCampaignDetail(campaign)} + onLikeToggle={handleCampaignLikeToggle} + /> + ); + })}
diff --git a/app/routes/matching/suggest/create/components/SelectBottomSheet.tsx b/app/routes/matching/suggest/create/components/SelectBottomSheet.tsx index bd9ee5f..1dde87c 100644 --- a/app/routes/matching/suggest/create/components/SelectBottomSheet.tsx +++ b/app/routes/matching/suggest/create/components/SelectBottomSheet.tsx @@ -74,8 +74,9 @@ function SelectBottomSheetInner({