"use client"; /** * V2SectionCard 설정 패널 * 토스식 단계별 UX: 패딩 카드 선택 -> 배경/테두리 설정 -> 고급 설정(접힘) */ import React, { useState } from "react"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; 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, Square, Minus, SquareDashed, } from "lucide-react"; import { cn } from "@/lib/utils"; // ─── 내부 여백 카드 정의 ─── const PADDING_CARDS = [ { value: "none", label: "없음", size: "0px" }, { value: "sm", label: "작게", size: "12px" }, { value: "md", label: "중간", size: "24px" }, { value: "lg", label: "크게", size: "32px" }, ] as const; // ─── 배경색 카드 정의 ─── const BG_CARDS = [ { value: "default", label: "카드", description: "기본 카드 배경" }, { value: "muted", label: "회색", description: "연한 회색 배경" }, { value: "transparent", label: "투명", description: "배경 없음" }, ] as const; // ─── 테두리 스타일 카드 정의 ─── const BORDER_CARDS = [ { value: "solid", label: "실선", icon: Minus }, { value: "dashed", label: "점선", icon: SquareDashed }, { value: "none", label: "없음", icon: Square }, ] as const; interface V2SectionCardConfigPanelProps { config: Record; onChange: (config: Record) => void; } export const V2SectionCardConfigPanel: React.FC< V2SectionCardConfigPanelProps > = ({ config, onChange }) => { const [advancedOpen, setAdvancedOpen] = useState(false); const updateConfig = (field: string, value: any) => { const newConfig = { ...config, [field]: value }; onChange(newConfig); if (typeof window !== "undefined") { window.dispatchEvent( new CustomEvent("componentConfigChanged", { detail: { config: newConfig }, }) ); } }; return (
{/* ─── 1단계: 헤더 설정 ─── */}

헤더 표시

섹션 상단에 제목과 설명을 표시해요

updateConfig("showHeader", checked)} />
{config.showHeader !== false && (
제목 updateConfig("title", e.target.value)} placeholder="섹션 제목 입력" className="h-7 w-[180px] text-xs" />
설명 (선택)