"use client";

/**
 * pop-string-list 컴포넌트 레지스트리 등록 진입점
 *
 * 이 파일을 import하면 side-effect로 PopComponentRegistry에 자동 등록됨
 */

import { PopComponentRegistry } from "../../PopComponentRegistry";
import { PopStringListComponent } from "./PopStringListComponent";
import { PopStringListConfigPanel } from "./PopStringListConfig";
import { PopStringListPreviewComponent } from "./PopStringListPreview";
import type { PopStringListConfig } from "./types";

// 기본 설정값
const defaultConfig: PopStringListConfig = {
  displayMode: "list",
  header: { enabled: true, label: "" },
  overflow: { visibleRows: 5, mode: "loadMore", showExpandButton: true, loadMoreCount: 5, maxExpandRows: 50, pageSize: 5, paginationStyle: "bottom" },
  dataSource: { tableName: "" },
  listColumns: [],
  cardGrid: undefined,
};

// 레지스트리 등록
PopComponentRegistry.registerComponent({
  id: "pop-string-list",
  name: "리스트 목록",
  description: "테이블 데이터를 리스트 또는 카드 형태로 표시",
  category: "display",
  icon: "List",
  component: PopStringListComponent,
  configPanel: PopStringListConfigPanel,
  preview: PopStringListPreviewComponent,
  defaultProps: defaultConfig,
  connectionMeta: {
    sendable: [
      { key: "selected_row", label: "선택된 행", type: "selected_row", description: "사용자가 선택한 행 데이터를 전달" },
    ],
    receivable: [
      { key: "filter_condition", label: "필터 조건", type: "filter_value", description: "외부 컴포넌트에서 받은 필터 조건으로 목록 필터링" },
    ],
  },
  touchOptimized: true,
  supportedDevices: ["mobile", "tablet"],
});
