/**
 * V2Date 컴포넌트 정의
 *
 * 날짜, 시간, 날짜시간, 날짜범위 등 다양한 날짜/시간 입력을 지원하는 통합 컴포넌트
 */

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

export const V2DateDefinition = createComponentDefinition({
  id: "v2-date",
  name: "V2 날짜",
  description: "날짜, 시간, 날짜시간, 날짜범위 등 다양한 날짜/시간 입력 지원",
  category: ComponentCategory.INPUT,
  webType: "date",
  version: "2.0.0",
  component: V2Date,

  // 기본 속성
  defaultProps: {
    config: {
      dateType: "date",
      format: "YYYY-MM-DD",
      placeholder: "날짜 선택",
      required: false,
      readonly: false,
      disabled: false,
      showTime: false,
      use24Hours: true,
    },
  },

  // 설정 스키마
  configSchema: {
    dateType: {
      type: "select",
      label: "날짜 타입",
      options: [
        { value: "date", label: "날짜" },
        { value: "datetime", label: "날짜시간" },
        { value: "time", label: "시간" },
        { value: "daterange", label: "날짜 범위" },
        { value: "month", label: "월" },
        { value: "year", label: "연도" },
      ],
    },
    format: {
      type: "text",
      label: "표시 형식",
      placeholder: "YYYY-MM-DD",
    },
    required: {
      type: "boolean",
      label: "필수 입력",
    },
    showTime: {
      type: "boolean",
      label: "시간 표시",
    },
  },

  // 이벤트
  events: ["onChange", "onClear"],

  // 아이콘
  icon: "Calendar",

  // 태그
  tags: ["date", "time", "datetime", "calendar", "v2"],

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

export default V2DateDefinition;
