"use client"; import { PopComponentRegistry } from "../../PopComponentRegistry"; import { PopSearchComponent } from "./PopSearchComponent"; import { PopSearchConfigPanel } from "./PopSearchConfig"; import type { PopSearchConfig } from "./types"; import { DEFAULT_SEARCH_CONFIG } from "./types"; function PopSearchPreviewComponent({ config, label }: { config?: PopSearchConfig; label?: string }) { const cfg = config || DEFAULT_SEARCH_CONFIG; const displayLabel = cfg.labelText || label || cfg.fieldName || "검색"; return (
{displayLabel}
{cfg.placeholder || cfg.inputType}
); } PopComponentRegistry.registerComponent({ id: "pop-search", name: "검색", description: "조건 입력 (텍스트/날짜/선택/모달)", category: "input", icon: "Search", component: PopSearchComponent, configPanel: PopSearchConfigPanel, preview: PopSearchPreviewComponent, defaultProps: DEFAULT_SEARCH_CONFIG, connectionMeta: { sendable: [ { key: "filter_value", label: "필터 값", type: "filter_value", category: "filter", description: "입력한 검색 조건을 다른 컴포넌트에 전달" }, ], receivable: [ { key: "set_value", label: "값 설정", type: "filter_value", category: "filter", description: "외부에서 값을 받아 검색 필드에 세팅 (스캔, 모달 선택 등)" }, ], }, touchOptimized: true, supportedDevices: ["mobile", "tablet"], });