"use client"; /** * V2 카테고리 관리 설정 패널 (토스식 리디자인) * 토스식 단계별 UX: 뷰 모드 -> 트리 설정 -> 레이아웃(접힘) */ import React, { useState } from "react"; import { Input } from "@/components/ui/input"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Switch } from "@/components/ui/switch"; import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@/components/ui/collapsible"; import { Settings, ChevronDown, FolderTree } from "lucide-react"; import { cn } from "@/lib/utils"; import type { V2CategoryManagerConfig, ViewMode } from "@/lib/registry/components/v2-category-manager/types"; import { defaultV2CategoryManagerConfig } from "@/lib/registry/components/v2-category-manager/types"; interface V2CategoryManagerConfigPanelProps { config: Partial; onChange: (config: Partial) => void; } export const V2CategoryManagerConfigPanel: React.FC = ({ config: externalConfig, onChange, }) => { const [layoutOpen, setLayoutOpen] = useState(false); const config: V2CategoryManagerConfig = { ...defaultV2CategoryManagerConfig, ...externalConfig, }; const handleChange = (key: K, value: V2CategoryManagerConfig[K]) => { onChange({ ...config, [key]: value }); }; return (
{/* ─── 1단계: 뷰 모드 설정 ─── */}

뷰 모드 설정

카테고리 표시 방식을 설정해요

기본 뷰 모드

뷰 모드 토글

트리/목록 전환 버튼을 표시해요

handleChange("showViewModeToggle", checked)} />
{/* ─── 2단계: 트리 설정 ─── */}

트리 설정

트리 뷰의 기본 동작을 설정해요

기본 펼침 단계

처음 로드 시 펼쳐지는 깊이

비활성 항목 표시

비활성화된 카테고리도 보여줘요

handleChange("showInactiveItems", checked)} />
{/* ─── 3단계: 레이아웃 (Collapsible) ─── */}

컬럼 목록 표시

좌측 카테고리 컬럼 목록 패널을 보여줘요

handleChange("showColumnList", checked)} />
{config.showColumnList && (
좌측 패널 너비 (%)

10~40% 범위

handleChange("leftPanelWidth", Number(e.target.value))} className="h-7 w-[80px] text-xs" />
)}
높이

px 또는 % (예: 100%, 600)

{ const v = e.target.value; handleChange("height", isNaN(Number(v)) ? v : Number(v)); }} placeholder="100%" className="h-7 w-[100px] text-xs" />
); }; V2CategoryManagerConfigPanel.displayName = "V2CategoryManagerConfigPanel"; export default V2CategoryManagerConfigPanel;