"use client"; import React, { useState } from 'react'; import { X, Eye, Mail, Code, Maximize2, Minimize2 } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { MailTemplate, renderTemplateToHtml, extractTemplateVariables } from '@/lib/api/mail'; interface MailTemplatePreviewModalProps { isOpen: boolean; onClose: () => void; template: MailTemplate | null; } export default function MailTemplatePreviewModal({ isOpen, onClose, template, }: MailTemplatePreviewModalProps) { const [viewMode, setViewMode] = useState<'preview' | 'code'>('preview'); const [isFullscreen, setIsFullscreen] = useState(false); const [variables, setVariables] = useState>({}); if (!isOpen || !template) return null; const templateVariables = extractTemplateVariables(template); const renderedHtml = renderTemplateToHtml(template, variables); const handleVariableChange = (key: string, value: string) => { setVariables((prev) => ({ ...prev, [key]: value })); }; return (
{/* 헤더 */}

{template.name}

{template.subject}

{/* 본문 */}
{/* 왼쪽: 변수 입력 (변수가 있을 때만) */} {templateVariables.length > 0 && (

템플릿 변수

{templateVariables.map((variable) => (
handleVariableChange(variable, e.target.value)} placeholder={`{${variable}}`} className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-orange-500 focus:border-orange-500" />
))}

💡 변수 값을 입력하면 미리보기에 반영됩니다.

)} {/* 오른쪽: 미리보기 또는 코드 */}
{viewMode === 'preview' ? (
{/* 이메일 헤더 시뮬레이션 */}
제목: {template.subject}
발신: your-email@company.com
수신: recipient@example.com
{/* 이메일 본문 */}
) : (
{renderedHtml}
)}
{/* 푸터 */}
); }