"use client"; import React from "react"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Checkbox } from "@/components/ui/checkbox"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { ImageDisplayConfig } from "./types"; export interface ImageDisplayConfigPanelProps { config: ImageDisplayConfig; onChange?: (config: Partial) => void; onConfigChange?: (config: Partial) => void; } /** * ImageDisplay 설정 패널 */ export const ImageDisplayConfigPanel: React.FC = ({ config, onChange, onConfigChange, }) => { const handleChange = (key: keyof ImageDisplayConfig, value: any) => { const update = { ...config, [key]: value }; onChange?.(update); onConfigChange?.(update); }; return (
이미지 표시 설정
{/* 이미지 URL */}
handleChange("imageUrl", e.target.value)} placeholder="https://..." className="h-8 text-xs" />

데이터 바인딩 값이 없을 때 표시할 기본 이미지

{/* 대체 텍스트 */}
handleChange("altText", e.target.value)} placeholder="이미지 설명" className="h-8 text-xs" />
{/* 이미지 맞춤 */}
{/* 테두리 둥글기 */}
handleChange("borderRadius", parseInt(e.target.value) || 0)} className="h-8 text-xs" />
{/* 배경 색상 */}
handleChange("backgroundColor", e.target.value)} className="h-8 w-8 cursor-pointer rounded border" /> handleChange("backgroundColor", e.target.value)} className="h-8 flex-1 text-xs" />
{/* 플레이스홀더 */}
handleChange("placeholder", e.target.value)} placeholder="이미지 없음" className="h-8 text-xs" />
{/* 테두리 표시 */}
handleChange("showBorder", checked)} />
{/* 읽기 전용 */}
handleChange("readonly", checked)} />
{/* 필수 입력 */}
handleChange("required", checked)} />
); };