import { useState, useEffect } from 'react' import { Button } from '@/components/ui/button' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { Separator } from '@/components/ui/separator' import { Save, Eye, X, Info, AlertTriangle, Calendar, Clock, FileText, Shield } from 'lucide-react' import { Badge } from '../ui/badge' // ✅ 타입 정의 interface PolicyPreviewData { policyType: 'privacy_policy' | 'terms_of_service' content: string version: string effectiveDate: string id?: number isCurrent?: boolean createdAt?: string } interface PolicyPreviewProps { data: PolicyPreviewData onSave?: () => void onEdit?: () => void onClose: () => void isLoading?: boolean mode?: 'preview' | 'view' // ✅ 미리보기 모드 vs 상세보기 모드 } export function PolicyPreview({ data, onSave, onEdit, onClose, isLoading = false, mode = 'preview' }: PolicyPreviewProps) { const policyLabels: Record = { privacy_policy: '개인정보 처리방침', terms_of_service: '이용약관' } const policyIcons = { privacy_policy: , terms_of_service: } // ✅ 모드에 따른 제목과 설명 const getTitle = () => { return mode === 'preview' ? '정책 미리보기' : '정책 상세보기' } const getDescription = () => { if (mode === 'preview') { return `${policyLabels[data.policyType]} v${data.version} - 저장하면 즉시 활성화됩니다` } else { return `${policyLabels[data.policyType]} v${data.version} 상세 내용` } } // ✅ 상태 텍스트 결정 const getStatusText = () => { if (mode === 'preview') return '저장 대기' if (data.isCurrent) return '현재 활성' return '비활성' } const getStatusBadge = () => { if (mode === 'preview') { return 저장 대기 } if (data.isCurrent) { return 현재 활성 } return 비활성 } return (
{policyIcons[data.policyType]}
{getTitle()} {getDescription()}
{/* ✅ 정책 메타 정보 */}

정책 유형

{policyLabels[data.policyType]}

버전

v{data.version}

시행일

{new Date(data.effectiveDate).toLocaleDateString('ko-KR')}

상태

{getStatusBadge()}
{/* ✅ 상세보기 모드일 때 추가 정보 */} {mode === 'view' && data.createdAt && ( <>

생성일

{new Date(data.createdAt).toLocaleString('ko-KR')}

문서 ID

#{data.id}

)}
{/* ✅ 정책 내용 미리보기 */}

정책 내용

{data.content.replace(/<[^>]*>/g, '').length}자
{/* ✅ 액션 버튼들 */}
{mode === 'preview' ? ( // 미리보기 모드 버튼들 <> ) : ( // 상세보기 모드 버튼들
)}
) }