diff --git a/frontend-temp/src/pages/schedule/MobileBirthday.jsx b/frontend-temp/src/pages/schedule/MobileBirthday.jsx
new file mode 100644
index 0000000..d62162e
--- /dev/null
+++ b/frontend-temp/src/pages/schedule/MobileBirthday.jsx
@@ -0,0 +1,155 @@
+import { useParams, Link } from 'react-router-dom';
+import { useQuery } from '@tanstack/react-query';
+import { motion } from 'framer-motion';
+import { ChevronLeft } from 'lucide-react';
+import { fetchApi } from '@/api/client';
+
+// 한글 이름 → 영어 이름 매핑
+const memberEnglishName = {
+ 송하영: 'HAYOUNG',
+ 박지원: 'JIWON',
+ 이채영: 'CHAEYOUNG',
+ 이나경: 'NAKYUNG',
+ 백지헌: 'JIHEON',
+ 장규리: 'GYURI',
+ 이새롬: 'SAEROM',
+ 노지선: 'JISUN',
+ 이서연: 'SEOYEON',
+};
+
+/**
+ * Mobile 생일 페이지
+ */
+function MobileBirthday() {
+ const { memberName, year } = useParams();
+
+ // URL 디코딩
+ const decodedMemberName = decodeURIComponent(memberName || '');
+ const englishName = memberEnglishName[decodedMemberName];
+
+ // 멤버 정보 조회
+ const {
+ data: member,
+ isLoading: memberLoading,
+ error,
+ } = useQuery({
+ queryKey: ['member', decodedMemberName],
+ queryFn: () => fetchApi(`/members/${encodeURIComponent(decodedMemberName)}`),
+ enabled: !!decodedMemberName,
+ });
+
+ if (!decodedMemberName || error) {
+ return (
+
+
+
멤버를 찾을 수 없습니다
+
+ 일정으로 돌아가기
+
+
+
+ );
+ }
+
+ if (memberLoading) {
+ return (
+
+ );
+ }
+
+ // 생일 계산
+ const birthDate = member?.birth_date ? new Date(member.birth_date) : null;
+ const birthdayThisYear = birthDate ? new Date(parseInt(year), birthDate.getMonth(), birthDate.getDate()) : null;
+
+ return (
+
+ {/* 헤더 */}
+
+
+
+
+
+
+
+ HAPPY {englishName} DAY
+
+
+
+
+
+
+
+ {/* 헤더 카드 */}
+
+ {/* 배경 장식 */}
+
+
+
+
+ {/* 멤버 사진 */}
+ {member?.image_url && (
+
+

+
+ )}
+
+ {/* 내용 */}
+
+
+ 🎂
+
HAPPY {englishName} DAY
+
+
+ {year}년 {birthdayThisYear?.getMonth() + 1}월 {birthdayThisYear?.getDate()}일
+
+
+
+
+ {/* 년도 뱃지 */}
+
+ YEAR
+ {year}
+
+
+
+
+ {/* 생일카페 섹션 */}
+
+
+ ☕
+ 생일카페
+
+
+ {/* 준비 중 메시지 */}
+
+
🎁
+
+ {year}년 {decodedMemberName} 생일카페 정보가 준비 중입니다
+
+
생일카페 정보가 등록되면 이곳에 표시됩니다
+
+
+
+
+ );
+}
+
+export default MobileBirthday;
diff --git a/frontend-temp/src/pages/schedule/PCBirthday.jsx b/frontend-temp/src/pages/schedule/PCBirthday.jsx
new file mode 100644
index 0000000..5d95bcd
--- /dev/null
+++ b/frontend-temp/src/pages/schedule/PCBirthday.jsx
@@ -0,0 +1,152 @@
+import { useParams, Link } from 'react-router-dom';
+import { useQuery } from '@tanstack/react-query';
+import { motion } from 'framer-motion';
+import { ChevronRight } from 'lucide-react';
+import { fetchApi } from '@/api/client';
+
+// 한글 이름 → 영어 이름 매핑
+const memberEnglishName = {
+ 송하영: 'HAYOUNG',
+ 박지원: 'JIWON',
+ 이채영: 'CHAEYOUNG',
+ 이나경: 'NAKYUNG',
+ 백지헌: 'JIHEON',
+ 장규리: 'GYURI',
+ 이새롬: 'SAEROM',
+ 노지선: 'JISUN',
+ 이서연: 'SEOYEON',
+};
+
+/**
+ * PC 생일 페이지
+ */
+function PCBirthday() {
+ const { memberName, year } = useParams();
+
+ // URL 디코딩
+ const decodedMemberName = decodeURIComponent(memberName || '');
+ const englishName = memberEnglishName[decodedMemberName];
+
+ // 멤버 정보 조회
+ const {
+ data: member,
+ isLoading: memberLoading,
+ error,
+ } = useQuery({
+ queryKey: ['member', decodedMemberName],
+ queryFn: () => fetchApi(`/members/${encodeURIComponent(decodedMemberName)}`),
+ enabled: !!decodedMemberName,
+ });
+
+ if (!decodedMemberName || error) {
+ return (
+
+
+
멤버를 찾을 수 없습니다
+
+ 일정으로 돌아가기
+
+
+
+ );
+ }
+
+ if (memberLoading) {
+ return (
+
+ );
+ }
+
+ // 생일 계산
+ const birthDate = member?.birth_date ? new Date(member.birth_date) : null;
+ const birthdayThisYear = birthDate ? new Date(parseInt(year), birthDate.getMonth(), birthDate.getDate()) : null;
+
+ return (
+
+
+ {/* 네비게이션 */}
+
+
+ 일정
+
+
+
+ HAPPY {englishName} DAY
+
+
+
+ {/* 헤더 카드 */}
+
+ {/* 배경 장식 */}
+
+
+
+ {/* 멤버 사진 */}
+ {member?.image_url && (
+
+
+

+
+
+ )}
+
+ {/* 내용 */}
+
+
+ 🎂
+
HAPPY {englishName} DAY
+
+
+ {year}년 {birthdayThisYear?.getMonth() + 1}월 {birthdayThisYear?.getDate()}일
+
+
+
+ {/* 년도 뱃지 */}
+
+
+
+
+ {/* 생일카페 섹션 */}
+
+
+ ☕
+ 생일카페
+
+
+ {/* 준비 중 메시지 */}
+
+
🎁
+
+ {year}년 {decodedMemberName} 생일카페 정보가 준비 중입니다
+
+
생일카페 정보가 등록되면 이곳에 표시됩니다
+
+
+
+
+ );
+}
+
+export default PCBirthday;