// 사용 가능한 위젯 컴포넌트 목록 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); };