import React, { useState, useEffect } from 'react'; interface SidebarItemProps { icon: React.ReactNode; label: string; isActive?: boolean; isCollapsed: boolean; isDisabled?: boolean; onClick?: () => void; } const SidebarItem: React.FC = ({ icon, label, isActive, isCollapsed, isDisabled, onClick }) => { return (
{icon}
{!isCollapsed && {label}}
); }; interface SidebarProps { activeItem: string; onNavigate: (id: string) => void; onHome?: () => void; } const Sidebar: React.FC = ({ activeItem, onNavigate, onHome }) => { 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: '대시보드', disabled: false, icon: }, { id: '새 프로젝트 만들기', label: '새 프로젝트 만들기', disabled: false, icon: }, { id: 'ADO2 콘텐츠', label: 'ADO2 콘텐츠', disabled: false, icon: }, { id: '내 콘텐츠', label: '내 콘텐츠', disabled: true, icon: }, { id: '내 정보', label: '내 정보', disabled: false, icon: }, ]; return ( <> {/* Mobile Menu Button */} {/* Mobile Overlay */} {isMobileOpen && (
setIsMobileOpen(false)} /> )} {/* Sidebar */}
{!isCollapsed && ( ADO2 )}
{menuItems.map(item => ( handleNavigate(item.id)} /> ))}
Profile {!isCollapsed && (

username1234

)}
); }; export default Sidebar;