import { motion } from 'framer-motion';
import { ChevronRight, Clock, Tag } from 'lucide-react';
import { useState, useEffect } from 'react';
import { useNavigate } from 'react-router-dom';
import { getTodayKST } from '../../../utils/date';
import { getMembers } from '../../../api/public/members';
import { getAlbums } from '../../../api/public/albums';
import { getUpcomingSchedules } from '../../../api/public/schedules';
// 모바일 홈 페이지
function MobileHome() {
const navigate = useNavigate();
const [members, setMembers] = useState([]);
const [albums, setAlbums] = useState([]);
const [schedules, setSchedules] = useState([]);
// 데이터 로드
useEffect(() => {
// 멤버 로드
getMembers()
.then(data => setMembers(data.filter(m => !m.is_former)))
.catch(console.error);
// 앨범 로드 (최신 2개)
getAlbums()
.then(data => setAlbums(data.slice(0, 2)))
.catch(console.error);
// 다가오는 일정 로드
getUpcomingSchedules(3)
.then(data => setSchedules(data))
.catch(console.error);
}, []);
return (
{/* 히어로 섹션 */}
fromis_9
프로미스나인
인사드리겠습니다. 둘, 셋!
이제는 약속해 소중히 간직해,
당신의 아이돌로 성장하겠습니다!
{/* 장식 */}
{/* 멤버 섹션 */}
멤버
{members.map((member) => (
{member.image_url && (

)}
{member.name}
))}
{/* 앨범 섹션 */}
앨범
{albums.map((album) => (
navigate(`/album/${album.folder_name}`)}
className="bg-white rounded-xl overflow-hidden shadow-sm"
whileTap={{ scale: 0.98 }}
>
{album.cover_thumb_url && (

)}
{album.title}
{album.release_date?.slice(0, 4)}
))}
{/* 일정 섹션 */}
다가오는 일정
{schedules.length > 0 ? (
{schedules.map((schedule) => {
const scheduleDate = new Date(schedule.date);
const today = new Date();
const currentYear = today.getFullYear();
const currentMonth = today.getMonth();
const scheduleYear = scheduleDate.getFullYear();
const scheduleMonth = scheduleDate.getMonth();
const isCurrentYear = scheduleYear === currentYear;
const isCurrentMonth = isCurrentYear && scheduleMonth === currentMonth;
// 멤버 처리 (5명 이상이면 프로미스나인)
const memberList = schedule.member_names ? schedule.member_names.split(',').map(n => n.trim()).filter(Boolean) : [];
return (
navigate('/schedule')}
>
{/* 날짜 영역 */}
{/* 현재 년도가 아니면 년.월 표시 */}
{!isCurrentYear && (
{scheduleYear}.{scheduleMonth + 1}
)}
{/* 현재 달이 아니면 월 표시 (현재 년도일 때) */}
{isCurrentYear && !isCurrentMonth && (
{scheduleMonth + 1}월
)}
{scheduleDate.getDate()}
{['일', '월', '화', '수', '목', '금', '토'][scheduleDate.getDay()]}
{/* 세로 구분선 */}
{/* 내용 영역 */}
{schedule.title}
{/* 시간 + 카테고리 (PC버전 스타일) */}
{schedule.time && (
{schedule.time.slice(0, 5)}
)}
{schedule.category_name && (
{schedule.category_name}
)}
{/* 멤버 */}
{memberList.length > 0 && (
{(memberList.length >= 5 ? ['프로미스나인'] : memberList).map((name, i) => (
{name.trim()}
))}
)}
);
})}
) : (
)}
);
}
export default MobileHome;