"use client";
/**
* ComponentPreviewPanel.tsx — 범용 컴포넌트 미리보기 패널
*
* 모든 컴포넌트 타입의 미리보기를 통일된 레이아웃(회색 그리드 + 가운데 배치)으로 제공.
* 카드/테이블 전용 패널을 대체하는 단일 진입점.
*/
import React, { useCallback, useMemo } from "react";
import { Eye } from "lucide-react";
import type { ComponentConfig } from "@/types/report";
import type { QueryResult } from "../renderers/types";
import { TextRenderer } from "../renderers/TextRenderer";
import { ImageRenderer } from "../renderers/ImageRenderer";
import { DividerRenderer } from "../renderers/DividerRenderer";
import { SignatureRenderer, StampRenderer } from "../renderers/SignatureRenderer";
import { PageNumberRenderer } from "../renderers/PageNumberRenderer";
import { CardRenderer } from "../renderers/CardRenderer";
import { CalculationRenderer } from "../renderers/CalculationRenderer";
import { BarcodeCanvasRenderer } from "../renderers/BarcodeCanvasRenderer";
import { CheckboxRenderer } from "../renderers/CheckboxRenderer";
import { TableRenderer } from "../renderers/TableRenderer";
interface ComponentPreviewPanelProps {
component: ComponentConfig;
}
const DUMMY_LAYOUT_CONFIG = {
pages: [{ page_id: "preview_page", page_order: 1 }],
};
export function ComponentPreviewPanel({ component }: ComponentPreviewPanelProps) {
const dummyGetQueryResult = useCallback(
(): QueryResult | null => null,
[],
);
const previewWidth = useMemo(
() => Math.min(component.width || 700, 700),
[component.width],
);
const previewHeight = useMemo(
() => Math.min(component.height || 400, 550),
[component.height],
);
const renderContent = () => {
switch (component.type) {
case "text":
case "label":
return (
실제 데이터는 저장 후 확인 가능합니다.