'use client'; import Link from 'next/link'; import { FoxIconButton } from '@fox/core/components/fox-icon-button'; import { FoxInput } from '@fox/core/components/fox-input'; import type { SidebarMenu, SidebarMenuChild, SidebarMenuItem, } from '@/lib/domain/sidebar-menu'; import { useSidebarNav, type SidebarNavState } from '../_hooks/use-sidebar-nav'; import styles from './admin-sidebar.module.scss'; import { SidebarMenuIcon } from './sidebar-menu-icon'; interface AdminSidebarProps { /** 서버가 계정 권한에 맞춰 구성해 준 메뉴. 이 컴포넌트는 라우트 목록을 알지 못한다. */ menu: SidebarMenu; } /** * Basic 레이아웃 사이드바 — 시안 snb-area(3041:11860)를 옮겼다. 검색·즐겨찾기·섹션별 GNB로 * 이루어지고, GNB는 1depth > 2depth > 3depth 중첩이다. * * **메뉴 데이터를 소유하지 않는다.** 권한마다 항목이 달라 매 요청 서버가 조회해 넘겨주며 * (`fetchSidebarMenu`), 여기서는 받은 트리를 그리고 펼침·활성 상태만 판정한다. 그래서 새 화면이 * 생겨도 이 파일은 손대지 않는다. * * 시안에 없어 넣지 않은 것: 검색 입력의 실제 동작(제출 대상이 정해지지 않음)과 즐겨찾기 * 추가/해제. 별 아이콘은 시안대로 표시만 한다. */ export function AdminSidebar({ menu }: AdminSidebarProps) { const nav = useSidebarNav(menu); return (