"use client"; import React, { useState, useEffect } from "react"; import { X, Save, Eye } from "lucide-react"; import { Button } from "@/components/ui/button"; import { MailTemplate, CreateMailTemplateDto, UpdateMailTemplateDto } from "@/lib/api/mail"; import MailDesigner from "./MailDesigner"; interface MailTemplateEditorModalProps { isOpen: boolean; onClose: () => void; onSave: (data: CreateMailTemplateDto | UpdateMailTemplateDto) => Promise; template?: MailTemplate | null; mode: "create" | "edit"; } export default function MailTemplateEditorModal({ isOpen, onClose, onSave, template, mode, }: MailTemplateEditorModalProps) { const [isSaving, setIsSaving] = useState(false); const handleSave = async (designerData: any) => { setIsSaving(true); try { // MailDesigner가 보내는 데이터 구조에 맞춰서 처리 await onSave({ name: designerData.name || designerData.templateName || "제목 없음", subject: designerData.subject || "제목 없음", components: designerData.components || [], category: designerData.category, }); onClose(); } catch (error) { console.error("템플릿 저장 실패:", error); alert(error instanceof Error ? error.message : "저장 중 오류가 발생했습니다."); } finally { setIsSaving(false); } }; if (!isOpen) return null; return (
{/* 헤더 */}

{mode === "create" ? "새 메일 템플릿 만들기" : "메일 템플릿 수정"}

{/* MailDesigner 컴포넌트 */}
{ // 미리보기 로직은 MailDesigner 내부에서 처리 console.log("Preview:", data); }} />
); }