diff --git a/apps/nowait-admin/src/assets/keyboard_arrow_down.svg b/apps/nowait-admin/src/assets/keyboard_arrow_down.svg
new file mode 100644
index 00000000..e8fb2459
--- /dev/null
+++ b/apps/nowait-admin/src/assets/keyboard_arrow_down.svg
@@ -0,0 +1,8 @@
+
diff --git a/apps/nowait-admin/src/pages/AdminAnalytics/AdminAnalytics.tsx b/apps/nowait-admin/src/pages/AdminAnalytics/AdminAnalytics.tsx
index 119bbcc6..431a5343 100644
--- a/apps/nowait-admin/src/pages/AdminAnalytics/AdminAnalytics.tsx
+++ b/apps/nowait-admin/src/pages/AdminAnalytics/AdminAnalytics.tsx
@@ -1,5 +1,66 @@
+import BoothSalesRankingCard from "./components/BoothSalesRankingCard ";
+import HeaderStatus from "./components/HeaderStatus";
+
+interface BoothRanking {
+ rank: number;
+ name: string;
+ department: string;
+ salesCount: number;
+ rankChange: number;
+ isCurrentBooth?: boolean;
+}
+
+// fakeData
+const boothData: BoothRanking[] = [
+ {
+ rank: 1,
+ name: "불타는닭발부스",
+ department: "컴퓨터공학과",
+ salesCount: 52,
+ rankChange: 1,
+ isCurrentBooth: false,
+ },
+ {
+ rank: 2,
+ name: "하이볼의집",
+ department: "식품영양학과",
+ salesCount: 52,
+ rankChange: -1,
+ isCurrentBooth: false,
+ },
+ {
+ rank: 3,
+ name: "치즈폭탄존",
+ department: "관광경영학과",
+ salesCount: 52,
+ rankChange: 0,
+ isCurrentBooth: false,
+ },
+ {
+ rank: 4,
+ name: "치킨사교클럽",
+ department: "치위생학과",
+ salesCount: 52,
+ rankChange: 3,
+ isCurrentBooth: false,
+ },
+ {
+ rank: 27,
+ name: "스페이시스",
+ department: "경찰행정학과",
+ salesCount: 52,
+ rankChange: 3,
+ isCurrentBooth: true,
+ },
+];
+
const AdminAnalytics = () => {
- return
AdminAnalytics AdminAnalytics
;
+ return (
+
+
+
+
+ );
};
export default AdminAnalytics;
diff --git a/apps/nowait-admin/src/pages/AdminAnalytics/components/BoothSalesRankingCard .tsx b/apps/nowait-admin/src/pages/AdminAnalytics/components/BoothSalesRankingCard .tsx
new file mode 100644
index 00000000..4165074c
--- /dev/null
+++ b/apps/nowait-admin/src/pages/AdminAnalytics/components/BoothSalesRankingCard .tsx
@@ -0,0 +1,93 @@
+import React from "react";
+import arrowIcon from "../../../assets/keyboard_arrow_down.svg";
+
+interface BoothRanking {
+ rank: number;
+ name: string;
+ department: string;
+ salesCount: number;
+ rankChange: number;
+ isCurrentBooth?: boolean;
+}
+
+interface BoothSalesRankingCardProps {
+ date: string;
+ data: BoothRanking[];
+}
+
+const BoothSalesRankingCard: React.FC = ({
+ date,
+ data,
+}) => {
+ return (
+
+
+
+
+ {"통계2"}
+
+
+
매출 순위
+
+
+
+
+
+
{date}
+
+
+
+ {data.map((item) => {
+ const isUp = item.rankChange > 0;
+ const isDown = item.rankChange < 0;
+ const isSame = item.rankChange === 0;
+
+ return (
+ -
+
+
+ {item.rank}위
+
+
+
+ {item.name}
+
+ {item.department}
+
+
+
+
+
+
+ {item.salesCount}건
+
+
+ {/* 랭크 변화 표시 */}
+
+ {isUp && {item.rankChange} ↑}
+ {isDown && {Math.abs(item.rankChange)} ↓}
+ {isSame && 0 -}
+
+
+
+ );
+ })}
+
+
+ );
+};
+
+export default BoothSalesRankingCard;
diff --git a/apps/nowait-admin/src/pages/AdminAnalytics/components/HeaderStatus.tsx b/apps/nowait-admin/src/pages/AdminAnalytics/components/HeaderStatus.tsx
new file mode 100644
index 00000000..d248cd85
--- /dev/null
+++ b/apps/nowait-admin/src/pages/AdminAnalytics/components/HeaderStatus.tsx
@@ -0,0 +1,44 @@
+import React from "react";
+import SalesCard from "./SalesCard";
+
+const HeaderStatus = () => {
+ return (
+
+
+ {/* 오늘 매출 */}
+
+ {/* 누적 매출 */}
+
+
+ {/* 인기 메뉴 TOP 5 */}
+
+
+
인기 메뉴 TOP 5
+
2025.07.18 금
+
+
+ {[1, 2, 3, 4, 5].map((rank) => (
+ -
+ {rank}위 참치마요주먹밥
+ 100개
+
+ ))}
+
+
+
+ );
+};
+
+export default HeaderStatus;
diff --git a/apps/nowait-admin/src/pages/AdminAnalytics/components/SalesCard.tsx b/apps/nowait-admin/src/pages/AdminAnalytics/components/SalesCard.tsx
new file mode 100644
index 00000000..00a0d81f
--- /dev/null
+++ b/apps/nowait-admin/src/pages/AdminAnalytics/components/SalesCard.tsx
@@ -0,0 +1,34 @@
+interface SalesCardProps {
+ title: string; // 예: "오늘 매출" 또는 "누적 매출"
+ date: string;
+ amount: number;
+ diffAmount: number;
+ percent: number;
+}
+
+const SalesCard: React.FC = ({
+ title,
+ date,
+ amount,
+ diffAmount,
+ percent,
+}) => (
+
+
+
+
+
+ {amount.toLocaleString()}원
+
+
+{percent}%
+
+
+ 어제보다 {diffAmount.toLocaleString()}원 더 벌었어요!
+
+
+
+);
+export default SalesCard;