'use client'; import { useState, useCallback } from 'react'; import Styles from '../styles/layout.module.scss'; import Header from './Header'; import Footer from './Footer' import ChannelSidebar from '@/app/component/channel/ChannelSidebar'; import MarketSidebar from '@/app/component/MarketSidebar'; import { ChannelListItem } from '@/types/channel'; import { FEATURE_CHANNEL } from '@/constants/features'; type Props = { children: React.ReactNode; initialChannels?: ChannelListItem[]; // 우측 유틸 슬롯 (D6 3열 그리드) — 제공 페이지만 desktop 이상에서 3열 렌더 utility?: React.ReactNode; }; export default function Layout({ children, initialChannels, utility }: Props) { const [sidebarOpen, setSidebarOpen] = useState(false); const toggleSidebar = useCallback(() => { setSidebarOpen((prev) => !prev); }, []); const closeOverlay = useCallback(() => { setSidebarOpen(false); }, []); return ( <> {/* 접근성: 스킵 링크 — Tab 첫 포커스 시 노출 */} 본문 바로가기