// 사용 가능한 위젯 컴포넌트 목록
export const AVAILABLE_COMPONENTS = [
  { value: "TextWidget", label: "텍스트 입력", description: "기본 텍스트 입력 필드" },
  { value: "NumberWidget", label: "숫자 입력", description: "숫자 전용 입력 필드" },
  { value: "DateWidget", label: "날짜 선택", description: "날짜/시간 선택기" },
  { value: "SelectWidget", label: "선택 목록", description: "드롭다운 선택 목록" },
  { value: "TextareaWidget", label: "긴 텍스트", description: "여러 줄 텍스트 입력" },
  { value: "CheckboxWidget", label: "체크박스", description: "참/거짓 선택" },
  { value: "RadioWidget", label: "라디오 버튼", description: "단일 선택 라디오 버튼" },
  { value: "FileWidget", label: "파일 업로드", description: "파일 선택 및 업로드" },
  { value: "CodeWidget", label: "코드 입력", description: "코드 편집기" },
  { value: "EntityWidget", label: "엔티티 선택", description: "관련 데이터 선택" },
  { value: "RatingWidget", label: "별점 평가", description: "별점 선택 위젯" },
] as const;

export type ComponentName = (typeof AVAILABLE_COMPONENTS)[number]["value"];

// 컴포넌트명으로 정보 조회
export const getComponentInfo = (componentName: string) => {
  return AVAILABLE_COMPONENTS.find((comp) => comp.value === componentName);
};

// 컴포넌트 존재 여부 확인
export const isValidComponent = (componentName: string): componentName is ComponentName => {
  return AVAILABLE_COMPONENTS.some((comp) => comp.value === componentName);
};
