"use client"; import React, { useMemo } from "react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Alert, AlertDescription } from "@/components/ui/alert"; import { Separator } from "@/components/ui/separator"; import { Layers, Trash2, ArrowRight, ArrowDown, Info } from "lucide-react"; import { ComponentData } from "@/types/screen"; import { findAllButtonGroups, getButtonGroupInfo, ButtonGroupInfo } from "@/lib/utils/flowButtonGroupUtils"; interface FlowButtonGroupPanelProps { components: ComponentData[]; onSelectGroup: (buttonIds: string[]) => void; onDeleteGroup: (groupId: string) => void; } /** * FlowButtonGroupPanel * * 화면의 모든 플로우 버튼 그룹을 관리하는 패널 * - 그룹 목록 표시 * - 그룹 선택 (해당 그룹의 버튼들 선택) * - 그룹 삭제 */ export const FlowButtonGroupPanel: React.FC = ({ components, onSelectGroup, onDeleteGroup, }) => { // 모든 버튼 그룹 찾기 const buttonGroups = useMemo(() => findAllButtonGroups(components), [components]); // 그룹 정보 배열 const groupInfos = useMemo(() => { return Object.entries(buttonGroups) .map(([groupId, buttons]) => getButtonGroupInfo(groupId, buttons)) .filter((info): info is ButtonGroupInfo => info !== null); }, [buttonGroups]); // 그룹이 없을 때 if (groupInfos.length === 0) { return ( 플로우 버튼 그룹 화면에 생성된 플로우 버튼 그룹이 없습니다

플로우 버튼 그룹을 만들려면:

  1. 2개 이상의 버튼을 선택하세요 (Shift + 클릭)
  2. 우측 하단의 "플로우 그룹 생성" 버튼을 클릭하세요
  3. 같은 그룹의 버튼들이 자동으로 정렬됩니다
); } return ( 플로우 버튼 그룹 {groupInfos.length}개 화면의 플로우 버튼 그룹 관리 {groupInfos.map((groupInfo, index) => (
{/* 그룹 헤더 */}
그룹 #{index + 1} {groupInfo.buttonCount}개 버튼
{/* 그룹 설정 정보 */}
{groupInfo.direction === "horizontal" ? ( ) : ( )} {groupInfo.direction === "horizontal" ? "가로" : "세로"}
간격 {groupInfo.gap}px {groupInfo.align === "start" && "시작점"} {groupInfo.align === "center" && "중앙"} {groupInfo.align === "end" && "끝점"} {groupInfo.align === "space-between" && "양끝"} {groupInfo.align === "space-around" && "균등배분"}
{/* 그룹 ID (디버깅용) */}
그룹 ID 보기 {groupInfo.groupId}
{/* 버튼 목록 */}
{groupInfo.buttons.map((button) => (
{button.label || button.text || "버튼"} {button.id.slice(-8)}
))}
{index < groupInfos.length - 1 && }
))} ); };