import React, { useState, useEffect } from 'react'; interface SidebarItemProps { icon: React.ReactNode; label: string; isActive?: boolean; isCollapsed: boolean; onClick?: () => void; } const SidebarItem: React.FC = ({ icon, label, isActive, isCollapsed, onClick }) => { const baseClasses = "flex items-center gap-3 px-3 py-2.5 sm:py-3 rounded-xl transition-all cursor-pointer group mb-1 relative overflow-hidden"; const activeClasses = "bg-[#a6ffea] text-[#121a1d]"; const inactiveClasses = "text-gray-400 hover:bg-white/5 hover:text-white"; return (
{icon}
{!isCollapsed && {label}}
); }; interface SidebarProps { activeItem: string; onNavigate: (id: string) => void; } const Sidebar: React.FC = ({ activeItem, onNavigate }) => { const [isCollapsed, setIsCollapsed] = useState(false); const [isMobileOpen, setIsMobileOpen] = useState(false); // 모바일에서는 기본적으로 사이드바 숨기기 useEffect(() => { const handleResize = () => { if (window.innerWidth < 768) { setIsMobileOpen(false); } }; handleResize(); window.addEventListener('resize', handleResize); return () => window.removeEventListener('resize', handleResize); }, []); // 네비게이션 시 모바일에서 사이드바 닫기 const handleNavigate = (id: string) => { onNavigate(id); if (window.innerWidth < 768) { setIsMobileOpen(false); } }; const menuItems = [ { id: '새 프로젝트 만들기', label: '새 프로젝트 만들기', icon: }, { id: '내 보관함', label: '내 보관함', icon: }, { id: '에셋 관리', label: '에셋 관리', icon: }, { id: '내 펜션', label: '내 펜션', icon: }, { id: '계정 설정', label: '계정 설정', icon: }, { id: '대시보드', label: '대시보드', icon: }, { id: '비즈니스 설정', label: '비즈니스 설정', icon: }, ]; return ( <> {/* 모바일 햄버거 버튼 */} {/* 모바일 오버레이 */} {isMobileOpen && (
setIsMobileOpen(false)} /> )} {/* 사이드바 */}
{!isCollapsed && CASTAD}
{menuItems.map(item => ( handleNavigate(item.id)} /> ))}
{!isCollapsed && (
Credit 850 / 1000
)}
Profile {!isCollapsed && (

username1234

)}
); }; export default Sidebar;