diff --git a/frontend/components/v2/config-panels/V2SelectConfigPanel.tsx b/frontend/components/v2/config-panels/V2SelectConfigPanel.tsx
index 47964819..f72b6696 100644
--- a/frontend/components/v2/config-panels/V2SelectConfigPanel.tsx
+++ b/frontend/components/v2/config-panels/V2SelectConfigPanel.tsx
@@ -2,16 +2,18 @@
/**
* V2Select 설정 패널
- * 통합 선택 컴포넌트의 세부 설정을 관리합니다.
+ * 토스식 단계별 UX: 소스 카드 선택 -> 소스별 설정 -> 고급 설정(접힘)
*/
import React, { useState, useEffect, useCallback, useMemo } from "react";
-import { Label } from "@/components/ui/label";
import { Input } from "@/components/ui/input";
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select";
-import { Checkbox } from "@/components/ui/checkbox";
+import { Switch } from "@/components/ui/switch";
import { Button } from "@/components/ui/button";
-import { Plus, Trash2, Loader2, Filter } from "lucide-react";
+import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@/components/ui/collapsible";
+import { Separator } from "@/components/ui/separator";
+import { List, Code, Database, FolderTree, Settings, ChevronDown, Plus, Trash2, Loader2, Filter } from "lucide-react";
+import { cn } from "@/lib/utils";
import { apiClient } from "@/lib/api/client";
import type { V2SelectFilter } from "@/types/v2-components";
@@ -52,6 +54,35 @@ const USER_FIELD_OPTIONS = [
{ value: "userName", label: "사용자명" },
] as const;
+// ─── 데이터 소스 카드 정의 ───
+const SOURCE_CARDS = [
+ {
+ value: "static",
+ icon: List,
+ title: "직접 입력",
+ description: "옵션을 직접 추가해요",
+ },
+ {
+ value: "code",
+ icon: Code,
+ title: "공통 코드",
+ description: "등록된 공통 코드를 사용해요",
+ },
+ {
+ value: "entity",
+ icon: Database,
+ title: "테이블 데이터",
+ description: "다른 테이블에서 가져와요",
+ entityOnly: true,
+ },
+ {
+ value: "category",
+ icon: FolderTree,
+ title: "카테고리",
+ description: "카테고리로 분류해요",
+ },
+] as const;
+
/**
* 필터 조건 설정 서브 컴포넌트
*/
@@ -108,7 +139,7 @@ const FilterConditionsSection: React.FC<{
- DATA FILTER
+ 데이터 필터