에디터 인라인/속성 패널 리팩터링 및 폼 전송 기본 기능 추가
CI / pr_and_merge (push) Blocked by required conditions
CI / test (push) Has been cancelled

This commit is contained in:
2025-11-20 00:53:39 +09:00
parent 211b0f8230
commit a6ef5f01cd
29 changed files with 3371 additions and 1052 deletions
@@ -0,0 +1,55 @@
"use client";
import type { SectionBlockProps } from "@/features/editor/state/editorStore";
export type SectionPropertiesPanelProps = {
sectionProps: SectionBlockProps;
selectedBlockId: string;
updateBlock: (id: string, partial: Partial<SectionBlockProps>) => void;
};
export function SectionPropertiesPanel({ sectionProps, selectedBlockId, updateBlock }: SectionPropertiesPanelProps) {
return (
<>
{/* 섹션 배경 */}
<div className="space-y-1">
<label className="flex flex-col gap-1 text-xs text-slate-400">
<span></span>
<select
className="rounded border border-slate-700 bg-slate-900 px-2 py-1 text-xs outline-none focus:border-sky-500"
aria-label="섹션 배경"
value={sectionProps.background ?? "default"}
onChange={(e) => {
const value = e.target.value as NonNullable<SectionBlockProps["background"]>;
updateBlock(selectedBlockId, { background: value } as any);
}}
>
<option value="default"></option>
<option value="muted">Muted</option>
<option value="primary">Primary</option>
</select>
</label>
</div>
{/* 상하 패딩 */}
<div className="space-y-1">
<label className="flex flex-col gap-1 text-xs text-slate-400">
<span> </span>
<select
className="rounded border border-slate-700 bg-slate-900 px-2 py-1 text-xs outline-none focus:border-sky-500"
aria-label="섹션 세로 패딩"
value={sectionProps.paddingY ?? "md"}
onChange={(e) => {
const value = e.target.value as NonNullable<SectionBlockProps["paddingY"]>;
updateBlock(selectedBlockId, { paddingY: value } as any);
}}
>
<option value="sm"></option>
<option value="md"></option>
<option value="lg"></option>
</select>
</label>
</div>
</>
);
}