프리뷰 모드: 에디터 크롬 없이 페이지 미리보기 구현

This commit is contained in:
2025-11-18 13:29:51 +09:00
parent adee5c0891
commit b781ad1a2f
4 changed files with 213 additions and 2 deletions
+11 -2
View File
@@ -2,6 +2,7 @@
import type { CSSProperties, ReactNode } from "react";
import { useState } from "react";
import Link from "next/link";
import {
DndContext,
PointerSensor,
@@ -222,8 +223,16 @@ export default function EditorPage() {
return (
<main className="min-h-screen flex flex-col bg-slate-950 text-slate-50">
<header className="border-b border-slate-800 px-6 py-4 flex items-center justify-between">
<h1 className="text-xl font-semibold">Page Editor</h1>
<p className="text-xs text-slate-400"> MVP용 </p>
<div className="flex items-baseline gap-3">
<h1 className="text-xl font-semibold">Page Editor</h1>
<p className="text-xs text-slate-400"> MVP용 </p>
</div>
<Link
href="/preview"
className="inline-flex items-center rounded border border-slate-700 bg-slate-900 px-3 py-1 text-xs text-slate-100 hover:bg-slate-800"
>
</Link>
</header>
<section className="flex flex-1 overflow-hidden">
<aside className="w-60 border-r border-slate-800 p-4 text-sm space-y-3">
+19
View File
@@ -0,0 +1,19 @@
"use client";
import { useEditorStore } from "@/features/editor/state/editorStore";
import { PublicPageRenderer } from "@/features/editor/components/PublicPageRenderer";
export default function PreviewPage() {
const blocks = useEditorStore((state) => state.blocks);
return (
<main className="min-h-screen flex flex-col bg-slate-950 text-slate-50">
<header className="border-b border-slate-800 px-6 py-4 flex items-center justify-between">
<h1 className="text-xl font-semibold">Page Preview</h1>
<p className="text-xs text-slate-400"> </p>
</header>
{/* 에디터 크롬 없이 순수 페이지 형태로 블록들을 렌더링 */}
<PublicPageRenderer blocks={blocks} />
</main>
);
}