/**
 * V2Input 컴포넌트 정의
 *
 * 텍스트, 숫자, 비밀번호 등 다양한 입력 타입을 지원하는 통합 입력 컴포넌트
 */

import { ComponentCategory } from "@/types/component";
import { createComponentDefinition } from "../../utils/createComponentDefinition";
import { V2FieldConfigPanel } from "@/components/v2/config-panels/V2FieldConfigPanel";
import { V2Input } from "@/components/v2/V2Input";

export const V2InputDefinition = createComponentDefinition({
  id: "v2-input",
  name: "V2 입력",
  description: "텍스트, 숫자, 비밀번호 등 다양한 입력 타입 지원",
  category: ComponentCategory.INPUT,
  webType: "text",
  version: "2.0.0",
  component: V2Input,

  // 기본 속성
  defaultProps: {
    config: {
      inputType: "text",
      placeholder: "",
      required: false,
      readonly: false,
      disabled: false,
      maxLength: undefined,
      minLength: undefined,
      pattern: undefined,
      showCounter: false,
    },
  },

  // 설정 스키마
  configSchema: {
    inputType: {
      type: "select",
      label: "입력 타입",
      options: [
        { value: "text", label: "텍스트" },
        { value: "number", label: "숫자" },
        { value: "password", label: "비밀번호" },
        { value: "email", label: "이메일" },
        { value: "tel", label: "전화번호" },
        { value: "url", label: "URL" },
        { value: "textarea", label: "여러 줄 텍스트" },
      ],
    },
    placeholder: {
      type: "text",
      label: "플레이스홀더",
    },
    required: {
      type: "boolean",
      label: "필수 입력",
    },
    readonly: {
      type: "boolean",
      label: "읽기 전용",
    },
  },

  // 이벤트
  events: ["onChange", "onBlur", "onFocus"],

  // 아이콘
  icon: "TextCursorInput",

  // 태그
  tags: ["input", "text", "number", "v2"],

  // 설정 패널
  configPanel: V2FieldConfigPanel,
});

export default V2InputDefinition;
