diff --git a/frontend/lib/registry/components/index.ts b/frontend/lib/registry/components/index.ts index 3afee0f4..2555d5fd 100644 --- a/frontend/lib/registry/components/index.ts +++ b/frontend/lib/registry/components/index.ts @@ -106,6 +106,7 @@ import "./v2-location-swap-selector/LocationSwapSelectorRenderer"; import "./v2-table-search-widget"; import "./v2-tabs-widget/tabs-component"; import "./v2-category-manager/V2CategoryManagerRenderer"; +import "./v2-media"; // 통합 미디어 컴포넌트 /** * 컴포넌트 초기화 함수 diff --git a/frontend/lib/registry/components/v2-media/index.ts b/frontend/lib/registry/components/v2-media/index.ts new file mode 100644 index 00000000..649aa118 --- /dev/null +++ b/frontend/lib/registry/components/v2-media/index.ts @@ -0,0 +1,78 @@ +/** + * V2Media 컴포넌트 정의 + * + * 파일, 이미지, 비디오, 오디오 등 다양한 미디어 타입을 지원하는 통합 미디어 컴포넌트 + */ + +import { ComponentCategory } from "@/types/component"; +import { createComponentDefinition } from "../../utils/createComponentDefinition"; +import { V2MediaConfigPanel } from "@/components/v2/config-panels/V2MediaConfigPanel"; +import { V2Media } from "@/components/v2/V2Media"; + +export const V2MediaDefinition = createComponentDefinition({ + id: "v2-media", + name: "V2 미디어", + description: "파일, 이미지, 비디오, 오디오 등 다양한 미디어 타입 지원", + category: ComponentCategory.INPUT, + webType: "file", + version: "2.0.0", + component: V2Media, + + // 기본 속성 + defaultProps: { + config: { + mediaType: "file", + multiple: false, + preview: true, + maxSize: 10, // MB + accept: "*/*", + showFileList: true, + dragDrop: true, + }, + }, + + // 설정 스키마 + configSchema: { + mediaType: { + type: "select", + label: "미디어 타입", + options: [ + { value: "file", label: "파일" }, + { value: "image", label: "이미지" }, + { value: "video", label: "비디오" }, + { value: "audio", label: "오디오" }, + ], + }, + multiple: { + type: "boolean", + label: "다중 업로드", + }, + preview: { + type: "boolean", + label: "미리보기", + }, + maxSize: { + type: "number", + label: "최대 크기 (MB)", + }, + accept: { + type: "text", + label: "허용 파일 형식", + placeholder: "*/* 또는 image/*", + }, + }, + + // 이벤트 + events: ["onChange", "onUpload", "onDelete"], + + // 아이콘 + icon: "Upload", + + // 태그 + tags: ["media", "file", "image", "upload", "v2"], + + // 설정 패널 + configPanel: V2MediaConfigPanel, +}); + +export default V2MediaDefinition; diff --git a/frontend/lib/schemas/componentConfig.ts b/frontend/lib/schemas/componentConfig.ts index 1486ba55..8353ac05 100644 --- a/frontend/lib/schemas/componentConfig.ts +++ b/frontend/lib/schemas/componentConfig.ts @@ -643,7 +643,6 @@ const componentOverridesSchemaRegistry: Record