import { Link } from 'react-router-dom'; import { useQuery } from '@tanstack/react-query'; import { motion } from 'framer-motion'; import { Disc3, Calendar, Users, Home, ChevronRight } from 'lucide-react'; import AdminLayout from '../../../components/admin/AdminLayout'; import useAdminAuth from '../../../hooks/useAdminAuth'; import { getStats } from '../../../api/admin/stats'; // 슬롯머신 스타일 롤링 숫자 컴포넌트 (아래에서 위로, 3자리 쉼표 포함) function AnimatedNumber({ value }) { // 3자리마다 쉼표가 들어갈 위치 계산 const formatted = value.toLocaleString(); const chars = formatted.split(''); return ( {chars.map((char, i) => { // 쉼표도 애니메이션으로 표시 if (char === ',') { return ( , ); } return ( {[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map(n => ( {n} ))} ); })} ); } function AdminDashboard() { const { user, isAuthenticated } = useAdminAuth(); // 통계 조회 (useQuery) const { data: stats = { members: 0, albums: 0, photos: 0, schedules: 0 } } = useQuery({ queryKey: ['admin', 'stats'], queryFn: getStats, enabled: isAuthenticated, staleTime: 30 * 1000, // 30초 캐시 }); // 메뉴 아이템 const menuItems = [ { icon: Users, label: '멤버 관리', description: '멤버 정보 및 프로필 관리', path: '/admin/members', color: 'bg-primary' }, { icon: Disc3, label: '앨범 관리', description: '앨범, 트랙, 사진 업로드 및 관리', path: '/admin/albums', color: 'bg-purple-500' }, { icon: Calendar, label: '일정 관리', description: '일정 추가 및 관리', path: '/admin/schedule', color: 'bg-blue-500' }, ]; return ( {/* 메인 콘텐츠 */} {/* 브레드크럼 */} 관리자 대시보드 {/* 타이틀 */} 관리자 대시보드 fromis_9 팬사이트를 관리하세요 {/* 메뉴 그리드 */} {menuItems.map((item, index) => ( {item.label} {item.description} ))} {/* 빠른 통계 */} 빠른 통계 멤버 총 앨범 총 사진 총 일정 ); } export default AdminDashboard;
fromis_9 팬사이트를 관리하세요
{item.description}
멤버
총 앨범
총 사진
총 일정