diff --git a/src/app/(app)/home/page.tsx b/src/app/(app)/home/page.tsx index 800d221..959b135 100644 --- a/src/app/(app)/home/page.tsx +++ b/src/app/(app)/home/page.tsx @@ -21,17 +21,25 @@ const POPULAR_FALLBACK_IMAGES = [ "/trips-covers/destination-gamcheon-sunset.png", ]; +/** + * 인기 여행지가 아직 집계되지 않았을 때 보여줄 기본 카드. + * + * name 과 address 는 서버에 적재된 실제 값과 같게 유지한다. 집계가 시작되면 이 카드는 + * 더 이상 보이지 않으므로 항목을 늘릴 필요는 없다. + */ const POPULAR_FALLBACK_PLACES = [ { key: "gwangalli", imageUrl: POPULAR_FALLBACK_IMAGES[0], - subtitle: "해운대 · 광안리", + name: "광안리해수욕장", + address: "부산광역시 수영구 광안해변로 219", keyword: "광안리해수욕장", }, { key: "gamcheon", imageUrl: POPULAR_FALLBACK_IMAGES[1], - subtitle: "감천문화마을 · 태종대", + name: "감천문화마을", + address: "부산광역시 사하구 감내2로 203 감천문화마을안내센터", keyword: "감천문화마을", }, ] as const; @@ -41,6 +49,14 @@ const COMMUNITY_FALLBACK_IMAGES = [ "/trips-covers/cover-harbor-market.png", ]; +/** + * 카드에 보여줄 짧은 주소. 목록이 전부 부산이라 "부산광역시"는 지운다. + * 카드가 좁아 앞부분이 다 같은 글자로 차면 구·동이 보이기 전에 잘린다. + */ +function shortAddress(address: string | null | undefined) { + return address?.replace(/^부산(광역시)?\s*/, "") || null; +} + function avatarLabel(name: string | null | undefined) { const normalized = (name ?? "누비").replace(/[0-9\s_-]/g, ""); if (/^[가-힣]+$/.test(normalized) && normalized.length >= 3) { @@ -268,10 +284,10 @@ export default function HomePage() { - 부산 + {place.name} - {[place.name, place.categoryLabel].filter(Boolean).join(" · ")} + {shortAddress(place.address) ?? place.categoryLabel ?? "부산"} @@ -292,7 +308,7 @@ export default function HomePage() { className="group overflow-hidden rounded-[1.35rem] bg-white text-left shadow-[0_8px_24px_rgba(38,83,133,0.1)] ring-1 ring-[#e4edf7] transition-transform hover:-translate-y-0.5 disabled:cursor-wait disabled:opacity-80" > - + {resolving && ( @@ -302,10 +318,10 @@ export default function HomePage() { - 부산 + {place.name} - {place.subtitle} + {shortAddress(place.address)}