diff --git a/src/__mocks/AICard.mock.ts b/src/__mocks/AICard.mock.ts
new file mode 100644
index 0000000..32235e9
--- /dev/null
+++ b/src/__mocks/AICard.mock.ts
@@ -0,0 +1,19 @@
+type Item = {
+ id: string | number;
+ name: string;
+ serenity: number;
+ themeTag: string;
+ likeCount: number;
+ thumbnail?: string;
+}; //목데이터용 임시타입...
+
+export const mockAICard: Item[] = [
+ { id: '1001', name: '경포해수욕장', serenity: 2, themeTag: '자연관광지', likeCount: 0 },
+ { id: '1002', name: '안목해변 커피거리', serenity: 1, themeTag: '체험관광지', likeCount: 12 },
+ { id: '1003', name: '하회마을', serenity: 3, themeTag: '역사관광지', likeCount: 87 },
+ { id: '1004', name: '가천대학교', serenity: 1, themeTag: '문화시설', likeCount: 1002 },
+ { id: '5', name: '행궁동', serenity: 5, themeTag: '자연관광지', likeCount: 11 },
+ { id: '6', name: '문막천 산책길', serenity: 5, themeTag: '산책', likeCount: 11 },
+ { id: '7', name: '물향기수목원', serenity: 5, themeTag: '자연관광지', likeCount: 11 },
+ { id: '8', name: '물향기수목원', serenity: 5, themeTag: '자연관광지', likeCount: 11 },
+];
diff --git a/src/component/common/Badge/Badge.styled.ts b/src/component/common/Badge/Badge.styled.ts
index 510c960..4595b3f 100644
--- a/src/component/common/Badge/Badge.styled.ts
+++ b/src/component/common/Badge/Badge.styled.ts
@@ -1,4 +1,4 @@
-export const BADGE_BASE = 'items-center justify-center inline-flex w-fit text-caption2';
+export const BADGE_BASE = 'items-center justify-center inline-flex w-fit text-caption2 shrink-0';
export const BADGE_SIZE = {
sm: 'px-[11px] py-[3px]',
diff --git a/src/component/common/Card/PlaceCard.tsx b/src/component/common/Card/PlaceCard.tsx
index cc3c3b7..9c70410 100644
--- a/src/component/common/Card/PlaceCard.tsx
+++ b/src/component/common/Card/PlaceCard.tsx
@@ -9,6 +9,7 @@ type PlaceCardProps = {
likeCount: number;
showRemoveButton?: boolean;
onRemove?: () => void;
+ onClick?: () => void;
};
export default function PlaceCard({
@@ -19,9 +20,13 @@ export default function PlaceCard({
likeCount,
showRemoveButton,
onRemove,
+ onClick,
}: PlaceCardProps) {
return (
-
+
{/*썸네일*/}
{imgUrl ? (
@@ -38,7 +43,7 @@ export default function PlaceCard({
{/* 뱃지 2개 */}
-
+
한적함
@@ -57,9 +62,11 @@ export default function PlaceCard({
)}
{/* 좋아요 수 */}
-
+
- {likeCount}
+
+ {likeCount > 99 ? '99+' : likeCount}
+
diff --git a/src/index.css b/src/index.css
index f8254ea..c44cc12 100644
--- a/src/index.css
+++ b/src/index.css
@@ -209,6 +209,9 @@
.bg-green4 {
background-color: var(--color-green4);
}
+ .bg-red1 {
+ background-color: var(--color-red1);
+ }
.bg-red2 {
background-color: var(--color-red2);
}
diff --git a/src/pages/ai/AIResultPage.tsx b/src/pages/ai/AIResultPage.tsx
new file mode 100644
index 0000000..4940b16
--- /dev/null
+++ b/src/pages/ai/AIResultPage.tsx
@@ -0,0 +1,65 @@
+import { Header, PlaceCard, Sidebar } from '@/component';
+import { useState } from 'react';
+import { mockAICard } from '@/__mocks/AICard.mock';
+import { useNavigate } from 'react-router-dom';
+
+function getRankBadgeClass(n: number) {
+ if (n === 1) return 'bg-red1 text-black';
+ if (n === 2) return 'bg-orange text-black';
+ if (n === 3) return 'bg-mint text-black';
+ return 'bg-gray1 text-gray-700';
+}
+
+export default function AIResultPage() {
+ const navigate = useNavigate();
+ const [isSidebarOpen, setIsSidebarOpen] = useState(false);
+
+ const handleMenuClick = () => {
+ setIsSidebarOpen(true);
+ };
+
+ const handleSidebarClose = () => {
+ setIsSidebarOpen(false);
+ };
+ //투두: 추후 API 연결하면서 로딩 화면 연결
+
+ return (
+
+
+
{' '}
+
+
+ AI 맞춤 여행지 탐색
+
+
+ {mockAICard.map((it, idx) => {
+ const rank = idx + 1;
+ return (
+ -
+
+ {/*순위*/}
+
+ {rank}
+
+
+
+
navigate(`/place/${it.id}`)}
+ />
+
+
+
+ );
+ })}
+
+
+
+ );
+}
diff --git a/src/routes/router.tsx b/src/routes/router.tsx
index 1964ef2..9a6b18d 100644
--- a/src/routes/router.tsx
+++ b/src/routes/router.tsx
@@ -11,6 +11,7 @@ import ThemeSelcetPage from '@/pages/ai/ThemeSelect';
import Filter from '@/pages/explore/Filter';
import TravelSpotDetail from '@/pages/ai/TravelSpotDetail';
import AILoadingPage from '@/pages/ai/AILoadingPage';
+import AIResultPage from '@/pages/ai/AIResultPage';
export const router = createBrowserRouter([
{
path: '/',
@@ -41,6 +42,10 @@ export const router = createBrowserRouter([
path: 'loading',
element:
,
},
+ {
+ path: 'result',
+ element:
,
+ },
],
},
//여행지 상세페이지