import { useState, useEffect } from 'react'; import { motion } from 'framer-motion'; import { Instagram, Calendar } from 'lucide-react'; function Members() { const [members, setMembers] = useState([]); const [stats, setStats] = useState({ memberCount: 0, albumCount: 0, debutYear: 2018, fandomName: 'flover' }); const [loading, setLoading] = useState(true); useEffect(() => { Promise.all([ fetch('/api/members').then(res => res.json()), fetch('/api/stats').then(res => res.json()) ]) .then(([membersData, statsData]) => { setMembers(membersData); setStats(statsData); setLoading(false); }) .catch(error => { console.error('데이터 로드 오류:', error); setLoading(false); }); }, []); // 날짜 포맷팅 함수 const formatDate = (dateStr) => { if (!dateStr) return ''; const date = new Date(dateStr); return `${date.getFullYear()}.${String(date.getMonth() + 1).padStart(2, '0')}.${String(date.getDate()).padStart(2, '0')}`; }; if (loading) { return (
); } return (
{/* 헤더 */}
멤버 프로미스나인의 {stats.memberCount}명의 멤버를 소개합니다
{/* 현재 멤버 그리드 */}
{members.filter(m => !m.is_former).map((member, index) => (
{/* 이미지 */}
{member.name}
{/* 정보 */}

{member.name}

{member.position || '\u00A0'}

{formatDate(member.birth_date)}
{/* 인스타그램 링크 */} {member.instagram && ( Instagram )}
{/* 호버 효과 - 컬러 바 */}
))}
{/* 탈퇴 멤버 섹션 - 콤팩트한 가로 리스트 */} {members.filter(m => m.is_former).length > 0 && (

전 멤버

{members.filter(m => m.is_former).map((member, index) => ( {/* 작은 원형 이미지 */}
{member.name}
{/* 이름과 포지션 */}

{member.name}

{member.position || ''}

))}
)} {/* 그룹 정보 */}

2018.01.24

데뷔일

D+{(Math.floor((new Date() - new Date('2018-01-24')) / (1000 * 60 * 60 * 24)) + 1).toLocaleString()}

D+Day

{members.filter(m => !m.is_former).length}

멤버 수

{stats.fandomName}

팬덤명

); } export default Members;