Files
sori.studio/composables/useMenuState.js
zenn 94a37f451d v0.0.55: 모바일 슬라이드 메뉴·우측 사이드 하단 배치
lg 미만에서 좌측 내비를 오버레이 슬라이드로 전환하고, 본문 아래에 우측 사이드를 두며 헤더·패널 여백을 보정했다.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 11:38:03 +09:00

45 lines
1019 B
JavaScript

const menuStorageKey = 'MENU_STATE'
/**
* 좌측 메뉴 열림 상태 관리
* @returns {{menuOpen: import('vue').Ref<boolean>, toggleMenu: Function, closeMenu: Function}} 메뉴 상태와 토글·닫기
*/
export const useMenuState = () => {
const menuOpen = useState('site-menu-open', () => true)
onMounted(() => {
const savedState = localStorage.getItem(menuStorageKey)
if (savedState) {
menuOpen.value = savedState === 'open'
}
})
/**
* 좌측 메뉴 열림 상태 토글
* @returns {void}
*/
const toggleMenu = () => {
menuOpen.value = !menuOpen.value
localStorage.setItem(menuStorageKey, menuOpen.value ? 'open' : 'closed')
}
/**
* 좌측 메뉴를 닫는다(모바일 오버레이·백드롭에서 사용).
* @returns {void}
*/
const closeMenu = () => {
if (!menuOpen.value) {
return
}
menuOpen.value = false
localStorage.setItem(menuStorageKey, 'closed')
}
return {
menuOpen,
toggleMenu,
closeMenu
}
}