diff --git a/src/components/layout/Sidebar.tsx b/src/components/layout/Sidebar.tsx index 21434e5..fef7f34 100644 --- a/src/components/layout/Sidebar.tsx +++ b/src/components/layout/Sidebar.tsx @@ -14,6 +14,8 @@ import { Bars3Icon, XMarkIcon, MapIcon, + ChevronLeftIcon, + ChevronRightIcon, } from "@heroicons/react/24/outline"; import { useTheme, themes } from "@/contexts/ThemeContext"; import { useAuthStore } from "@/lib/authStore"; @@ -43,14 +45,13 @@ export default function Sidebar() { const router = useRouter(); const { currentTheme, setTheme } = useTheme(); const { userProfile, fetchUserProfile } = useAuthStore(); - const [isOpen, setIsOpen] = useState(false); - const [isHovered, setIsHovered] = useState(false); + const [isOpen, setIsOpen] = useState(true); // 초기 상태를 펼쳐진 상태로 변경 const [userToggled, setUserToggled] = useState(false); // 초기 로드 시 localStorage에서 사이드바 상태 가져오기 useEffect(() => { const storedSidebarState = localStorage.getItem('sidebarOpen'); - // localStorage에 값이 저장되어 있으면 그 값을 사용, 없으면 기본값 false + // localStorage에 값이 저장되어 있으면 그 값을 사용, 없으면 기본값 true (펼쳐진 상태) if (storedSidebarState) { setIsOpen(storedSidebarState === 'true'); setUserToggled(true); @@ -84,13 +85,6 @@ export default function Sidebar() { return () => window.removeEventListener('resize', handleResize); }, []); - // 호버 상태에 따라 사이드바 열기/닫기 - useEffect(() => { - if (window.innerWidth >= 768 && !userToggled) { - setIsOpen(isHovered); - } - }, [isHovered, userToggled]); - // 사용자가 토글 버튼을 클릭했을 때 상태 저장 const handleToggleSidebar = useCallback(() => { const newState = !isOpen; @@ -128,6 +122,16 @@ export default function Sidebar() { )} + {/* 데스크톱 토글 버튼: 사이드바가 닫혀있을 때만 바깥에 표시 */} + {!isOpen && ( + + )} + {/* 오버레이 */} {isOpen && (
{ - setIsHovered(true); - if (userToggled) setUserToggled(false); - }} - onMouseLeave={() => setIsHovered(false)} > {/* 로고 영역 */} -
+

WHERE CAR

WC

+ {/* 사이드바가 열렸을 때만 내부에 토글 버튼 표시 */} + {isOpen && ( + + )} + {/* 다크/라이트 토글 버튼은 항상 로고 오른쪽에 */} + + {/* 모바일 닫기 버튼 */}