+ {tabs.map((tab, i) => (
+
router.push(tab.path)}
+ >
+ {tab.title}
+
+ ))}
+
+ );
+};
+
+export default ScheduleHeader;
+
+const tabs = [
+ {
+ title: "내 일정",
+ path: "/schedule",
+ },
+ {
+ title: "모든 일정",
+ path: "/schedule/all",
+ },
+ {
+ title: "모집 일정",
+ path: "/schedule/recruitment",
+ },
+ {
+ title: "참여 일정",
+ path: "/schedule/participation",
+ },
+ {
+ title: "스크랩",
+ path: "/schedule/scrap",
+ },
+ {
+ title: "나만의 아이템",
+ path: "/schedule/items",
+ },
+];
diff --git a/src/schedule/components/ScheduleTab.tsx b/src/schedule/components/ScheduleTab.tsx
new file mode 100644
index 00000000..3fc085e2
--- /dev/null
+++ b/src/schedule/components/ScheduleTab.tsx
@@ -0,0 +1,41 @@
+// 일정 탭 컴포넌트
+import React from "react";
+
+interface ScheduleTab {
+ tabTitle: string;
+ tabItems: Record<"title", string>[];
+ currentTab: string;
+ onClickTab: (tab: string) => void;
+}
+
+const ScheduleTab = ({
+ tabTitle,
+ tabItems,
+ currentTab,
+ onClickTab,
+}: ScheduleTab) => {
+ return (
+ <>
+
+ {tabItems.map((tab, i) => (
+
onClickTab(tab.title)}
+ >
+ {tab.title}
+
+ ))}
+
+ >
+ );
+};
+
+export default ScheduleTab;
diff --git a/src/schedule/const/index.ts b/src/schedule/const/index.ts
new file mode 100644
index 00000000..d58d915c
--- /dev/null
+++ b/src/schedule/const/index.ts
@@ -0,0 +1,20 @@
+export const defaultCardList = [
+ {
+ theme: "캠핑 레져",
+ img: "/assets/schedule/sample_img.png",
+ title: "단풍구경 관악산 등반 하실 분?",
+ content: ` 관악산으로 토요일 오전 10시에 등산 일정
+
+ 연주대 12시 도착 및 12시부터 30분간 사진촬영 예정 / 2시에 서울대
+ 방향으로 하산`,
+ writer: "명란마요",
+ status: true,
+ location: "관악구",
+ durationStart: "2023/11/07",
+ durationEnd: "2023/1",
+ createdAt: "2023/10/24",
+ like: 13,
+ comment: 5,
+ marked: 7,
+ },
+];
diff --git a/tsconfig.json b/tsconfig.json
index 12b5292e..c272985f 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -20,6 +20,7 @@
"@shared/*": ["shared/*"],
"@login/*": ["login/*"],
"@findid/*": ["findid/*"],
+ "@schedule/*": ["schedule/*"],
"@notice/*": ["notice/*"],
"@faq/*": ["faq/*"],
"@mypage/*": ["mypage/*"]
diff --git a/yarn.lock b/yarn.lock
index ad0d4109..f08690f4 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4795,20 +4795,29 @@ __metadata:
languageName: node
linkType: hard
-"@types/lodash@npm:^4.14.167":
- version: 4.14.199
- resolution: "@types/lodash@npm:4.14.199"
- checksum: e68d1fcbbfce953ed87b296a628573f62939227bcda0c934954e862b421e8a34c5e71cad6fea27b9980567909e6a4698f09025692958e36d64ea9ed99ec6fb2e
+"@types/lodash.memoize@npm:^4.1.7":
+ version: 4.1.8
+ resolution: "@types/lodash.memoize@npm:4.1.8"
+ dependencies:
+ "@types/lodash": "*"
+ checksum: dc2812ffebfd516965fc2713bb1fd97babf7672986b3c0785eaaf9e8d3e7d148b597399250d367a8ab32e66b4e1facd0ebea1d2b3e86e36eeb45aade8504a648
languageName: node
linkType: hard
-"@types/lodash@npm:^4.14.200":
+"@types/lodash@npm:*, @types/lodash@npm:^4.14.200":
version: 4.14.200
resolution: "@types/lodash@npm:4.14.200"
checksum: 6471f8bb5da692a6ecf03a8da4935bfbc341e67ee9bcb4f5730bfacff0c367232548f0a01e8ac5ea18c6fe78fb085d502494e33ccb47a7ee87cbdee03b47d00d
languageName: node
linkType: hard
+"@types/lodash@npm:^4.14.167":
+ version: 4.14.199
+ resolution: "@types/lodash@npm:4.14.199"
+ checksum: e68d1fcbbfce953ed87b296a628573f62939227bcda0c934954e862b421e8a34c5e71cad6fea27b9980567909e6a4698f09025692958e36d64ea9ed99ec6fb2e
+ languageName: node
+ linkType: hard
+
"@types/mdx@npm:^2.0.0":
version: 2.0.8
resolution: "@types/mdx@npm:2.0.8"
@@ -5431,6 +5440,13 @@ __metadata:
languageName: node
linkType: hard
+"@wojtekmaj/date-utils@npm:^1.1.3":
+ version: 1.5.1
+ resolution: "@wojtekmaj/date-utils@npm:1.5.1"
+ checksum: ba28a0ba107838cabbef0bceccdb748cb4bfa75e7e7cebe8a5f711f475b4bc5e28b7f394cc6e650826fcec232ee98b39d02fe6a5df32e0526d4eca68609bab9a
+ languageName: node
+ linkType: hard
+
"@xtuc/ieee754@npm:^1.2.0":
version: 1.2.0
resolution: "@xtuc/ieee754@npm:1.2.0"
@@ -6718,6 +6734,7 @@ __metadata:
prettier: ^3.0.3
prettier-plugin-tailwindcss: ^0.5.6
react: 18.2.0
+ react-calendar: ^4.6.1
react-dom: 18.2.0
react-query: ^3.39.3
recoil: ^0.7.7
@@ -6937,6 +6954,13 @@ __metadata:
languageName: node
linkType: hard
+"clsx@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "clsx@npm:2.0.0"
+ checksum: a2cfb2351b254611acf92faa0daf15220f4cd648bdf96ce369d729813b85336993871a4bf6978ddea2b81b5a130478339c20d9d0b5c6fc287e5147f0c059276e
+ languageName: node
+ linkType: hard
+
"co@npm:^4.6.0":
version: 4.6.0
resolution: "co@npm:4.6.0"
@@ -9374,6 +9398,16 @@ __metadata:
languageName: node
linkType: hard
+"get-user-locale@npm:^2.2.1":
+ version: 2.3.1
+ resolution: "get-user-locale@npm:2.3.1"
+ dependencies:
+ "@types/lodash.memoize": ^4.1.7
+ lodash.memoize: ^4.1.1
+ checksum: 9c6b254ea0eeb3ecc9e02140d5c3442b71cee76b6e0ed38ce2dffdc04fdc2286dd149aec06da3a69d8be3ed7b951cfc2aa1b95d4552b0b29541e418a6f2b6be0
+ languageName: node
+ linkType: hard
+
"giget@npm:^1.0.0":
version: 1.1.2
resolution: "giget@npm:1.1.2"
@@ -11423,6 +11457,13 @@ __metadata:
languageName: node
linkType: hard
+"lodash.memoize@npm:^4.1.1":
+ version: 4.1.2
+ resolution: "lodash.memoize@npm:4.1.2"
+ checksum: 9ff3942feeccffa4f1fafa88d32f0d24fdc62fd15ded5a74a5f950ff5f0c6f61916157246744c620173dddf38d37095a92327d5fd3861e2063e736a5c207d089
+ languageName: node
+ linkType: hard
+
"lodash.merge@npm:^4.6.2":
version: 4.6.2
resolution: "lodash.merge@npm:4.6.2"
@@ -13239,7 +13280,7 @@ __metadata:
languageName: node
linkType: hard
-"prop-types@npm:^15.7.2, prop-types@npm:^15.8.1":
+"prop-types@npm:^15.6.0, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1":
version: 15.8.1
resolution: "prop-types@npm:15.8.1"
dependencies:
@@ -13451,6 +13492,26 @@ __metadata:
languageName: node
linkType: hard
+"react-calendar@npm:^4.6.1":
+ version: 4.6.1
+ resolution: "react-calendar@npm:4.6.1"
+ dependencies:
+ "@wojtekmaj/date-utils": ^1.1.3
+ clsx: ^2.0.0
+ get-user-locale: ^2.2.1
+ prop-types: ^15.6.0
+ tiny-warning: ^1.0.0
+ peerDependencies:
+ "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 54e9414a79f9b113493c44caf4d6770b7c331acfaed255a1bbc68067ae0bb6ca3a5f2021e02686e178310f132a43d5eff9b11f4a28bcdbabd1d0675e72ba18f8
+ languageName: node
+ linkType: hard
+
"react-colorful@npm:^5.1.2":
version: 5.6.1
resolution: "react-colorful@npm:5.6.1"
@@ -15188,6 +15249,13 @@ __metadata:
languageName: node
linkType: hard
+"tiny-warning@npm:^1.0.0":
+ version: 1.0.3
+ resolution: "tiny-warning@npm:1.0.3"
+ checksum: da62c4acac565902f0624b123eed6dd3509bc9a8d30c06e017104bedcf5d35810da8ff72864400ad19c5c7806fc0a8323c68baf3e326af7cb7d969f846100d71
+ languageName: node
+ linkType: hard
+
"titleize@npm:^3.0.0":
version: 3.0.0
resolution: "titleize@npm:3.0.0"