import React, { useState } from 'react';
import { NavLink, useLocation } from 'react-router-dom';
import { Home, Globe, Users, Menu, X, Gamepad2, Map } from 'lucide-react';
import { motion, AnimatePresence } from 'framer-motion';
// 사이드바 네비게이션 컴포넌트
const Sidebar = ({ isMobile = false }) => {
const [isOpen, setIsOpen] = useState(false);
const location = useLocation();
const menuItems = [
{ path: '/', icon: Home, label: '홈' },
{ path: '/players', icon: Users, label: '플레이어', matchPaths: ['/players', '/player/'] },
{ path: '/worlds', icon: Globe, label: '월드 정보' },
{ path: '/worldmap', icon: Map, label: '월드맵' },
];
// 커스텀 활성 상태 확인 함수
const isMenuActive = (item) => {
if (item.matchPaths) {
return item.matchPaths.some(path => location.pathname.startsWith(path));
}
return location.pathname === item.path;
};
// 모바일: 상단 툴바 + 햄버거 메뉴 사이드바
if (isMobile) {
return (
<>
{/* 상단 툴바 */}
{/* 햄버거 메뉴 버튼 */}
{/* 로고/타이틀 */}
마인크래프트
{/* 우측 공간 (균형용) */}
{/* 상단 툴바 높이만큼 공간 확보 */}
{/* 오버레이 */}
{isOpen && (
setIsOpen(false)}
/>
)}
{/* 사이드바 (슬라이드) */}
{isOpen && (
{/* 사이드바 헤더 */}
{/* 메뉴 */}
)}
>
);
}
// PC: 기존 사이드바
return (
<>
{/* 데스크탑 사이드바 (항상 표시) */}
{/* 데스크톱용 사이드바 spacer */}
>
);
};
// 사이드바 내용 컴포넌트 (PC 전용)
const SidebarContent = ({ menuItems, isMenuActive, onClose }) => (
<>
{/* 로고 */}
{/* 메뉴 */}
>
);
export default Sidebar;