'use client'; import '@/app/styles/market-sidebar.scss'; import { useCallback, useEffect, useState } from 'react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faAnglesLeft, faAnglesRight, faStar, faSun, faMoon } from '@fortawesome/free-solid-svg-icons'; import useTheme from '@/hooks/useTheme'; const STORAGE_KEY = 'az-sidebar-collapsed'; const WIDTH_EXPANDED = '220px'; const WIDTH_COLLAPSED = '64px'; // 좌측 사이드바 자리표시 (D6 그리드 셸) — 관심종목/게시판 즐겨찾기 본구현은 후속(MarketSidebar 본체) // 접기 메커니즘은 ChannelSidebar 와 동일: html 루트의 --antooza-sidebar-width 로 layout grid 열 폭 반응 export default function MarketSidebar() { // 자리표시 단계라 기본 접힘(64px 아이콘 레일) — 본문 우선. 토글 시 localStorage 영속. const [collapsed, setCollapsed] = useState(true); const { toggleTheme, isDark } = useTheme(); // 최초 mount 시 localStorage에서 collapsed 상태 복원 useEffect(() => { try { const saved = window.localStorage.getItem(STORAGE_KEY); if (saved === 'false') { setCollapsed(false); } } catch {} }, []); // collapsed 변경 시 html 루트 CSS 변수 동기화 useEffect(() => { const root = document.documentElement; root.style.setProperty('--antooza-sidebar-width', collapsed ? WIDTH_COLLAPSED : WIDTH_EXPANDED); try { window.localStorage.setItem(STORAGE_KEY, String(collapsed)); } catch {} return () => { // unmount 시 원복 (breakpoint 별 --az-sidebar-w 기본값으로 복귀) root.style.removeProperty('--antooza-sidebar-width'); }; }, [collapsed]); const handleToggleCollapse = useCallback(() => { setCollapsed(prev => !prev); }, []); return (
관심종목 기능을 준비 중입니다
)}