From cae1622ac2ce284007ab0a4e86b5ffa606aff73e Mon Sep 17 00:00:00 2001 From: SeongHyun Kim Date: Wed, 11 Mar 2026 16:41:18 +0900 Subject: [PATCH] =?UTF-8?q?fix(pop):=20pop-status-bar=20=EB=94=94=EC=9E=90?= =?UTF-8?q?=EC=9D=B4=EB=84=88=20=ED=8C=94=EB=A0=88=ED=8A=B8=20=EB=B0=8F=20?= =?UTF-8?q?=ED=83=80=EC=9E=85=20=EB=93=B1=EB=A1=9D=20=EB=88=84=EB=9D=BD=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20pop-status-bar=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=EA=B0=80=20=EB=94=94=EC=9E=90=EC=9D=B4?= =?UTF-8?q?=EB=84=88=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=EC=97=90=20=ED=91=9C=EC=8B=9C=EB=90=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8D=98=20=EB=AC=B8=EC=A0=9C=EB=A5=BC=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=ED=95=9C=EB=8B=A4.=20=ED=83=80=EC=9E=85=20=EC=9C=A0?= =?UTF-8?q?=EB=8B=88=EC=98=A8,=20=ED=8C=94=EB=A0=88=ED=8A=B8,=20=EB=9D=BC?= =?UTF-8?q?=EB=B2=A8,=20=EA=B8=B0=EB=B3=B8=20=EA=B7=B8=EB=A6=AC=EB=93=9C?= =?UTF-8?q?=20=ED=81=AC=EA=B8=B0=204=EA=B3=B3=EC=97=90=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=EC=9D=84=20=EC=B6=94=EA=B0=80=ED=95=9C=EB=8B=A4.=20-?= =?UTF-8?q?=20pop-layout.ts:=20PopComponentType=EC=97=90=20"pop-status-bar?= =?UTF-8?q?"=20=EC=B6=94=EA=B0=80,=20=20=20DEFAULT=5FCOMPONENT=5FGRID=5FSI?= =?UTF-8?q?ZE=EC=97=90=206=EC=B9=B8x1=ED=96=89=20=EA=B8=B0=EB=B3=B8=20?= =?UTF-8?q?=ED=81=AC=EA=B8=B0=20=EC=B6=94=EA=B0=80=20-=20ComponentPalette.?= =?UTF-8?q?tsx:=20PALETTE=5FITEMS=EC=97=90=20"=EC=83=81=ED=83=9C=20?= =?UTF-8?q?=EB=B0=94"=20=ED=95=AD=EB=AA=A9=20=EC=B6=94=EA=B0=80=20-=20PopR?= =?UTF-8?q?enderer.tsx:=20COMPONENT=5FTYPE=5FLABELS=EC=97=90=20"=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=EB=B0=94"=20=EC=B6=94=EA=B0=80=20-=20ComponentEdit?= =?UTF-8?q?orPanel.tsx:=20COMPONENT=5FTYPE=5FLABELS=EC=97=90=20"=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=EB=B0=94"=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pop/designer/panels/ComponentEditorPanel.tsx | 1 + .../components/pop/designer/panels/ComponentPalette.tsx | 8 +++++++- .../components/pop/designer/renderers/PopRenderer.tsx | 1 + frontend/components/pop/designer/types/pop-layout.ts | 3 ++- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/frontend/components/pop/designer/panels/ComponentEditorPanel.tsx b/frontend/components/pop/designer/panels/ComponentEditorPanel.tsx index a58a6d31..c51f3db2 100644 --- a/frontend/components/pop/designer/panels/ComponentEditorPanel.tsx +++ b/frontend/components/pop/designer/panels/ComponentEditorPanel.tsx @@ -74,6 +74,7 @@ const COMPONENT_TYPE_LABELS: Record = { "pop-button": "버튼", "pop-string-list": "리스트 목록", "pop-search": "검색", + "pop-status-bar": "상태 바", "pop-list": "리스트", "pop-indicator": "인디케이터", "pop-scanner": "스캐너", diff --git a/frontend/components/pop/designer/panels/ComponentPalette.tsx b/frontend/components/pop/designer/panels/ComponentPalette.tsx index 9744075f..4e048692 100644 --- a/frontend/components/pop/designer/panels/ComponentPalette.tsx +++ b/frontend/components/pop/designer/panels/ComponentPalette.tsx @@ -3,7 +3,7 @@ import { useDrag } from "react-dnd"; import { cn } from "@/lib/utils"; import { PopComponentType } from "../types/pop-layout"; -import { Square, FileText, MousePointer, BarChart3, LayoutGrid, MousePointerClick, List, Search, TextCursorInput, ScanLine, UserCircle } from "lucide-react"; +import { Square, FileText, MousePointer, BarChart3, LayoutGrid, MousePointerClick, List, Search, TextCursorInput, ScanLine, UserCircle, BarChart2 } from "lucide-react"; import { DND_ITEM_TYPES } from "../constants"; // 컴포넌트 정의 @@ -69,6 +69,12 @@ const PALETTE_ITEMS: PaletteItem[] = [ icon: Search, description: "조건 입력 (텍스트/날짜/선택/모달)", }, + { + type: "pop-status-bar", + label: "상태 바", + icon: BarChart2, + description: "상태별 건수 대시보드 + 필터", + }, { type: "pop-field", label: "입력 필드", diff --git a/frontend/components/pop/designer/renderers/PopRenderer.tsx b/frontend/components/pop/designer/renderers/PopRenderer.tsx index 9ff1aeee..241374d7 100644 --- a/frontend/components/pop/designer/renderers/PopRenderer.tsx +++ b/frontend/components/pop/designer/renderers/PopRenderer.tsx @@ -76,6 +76,7 @@ const COMPONENT_TYPE_LABELS: Record = { "pop-button": "버튼", "pop-string-list": "리스트 목록", "pop-search": "검색", + "pop-status-bar": "상태 바", "pop-field": "입력", "pop-scanner": "스캐너", "pop-profile": "프로필", diff --git a/frontend/components/pop/designer/types/pop-layout.ts b/frontend/components/pop/designer/types/pop-layout.ts index 95c4011b..9fb9a847 100644 --- a/frontend/components/pop/designer/types/pop-layout.ts +++ b/frontend/components/pop/designer/types/pop-layout.ts @@ -9,7 +9,7 @@ /** * POP 컴포넌트 타입 */ -export type PopComponentType = "pop-sample" | "pop-text" | "pop-icon" | "pop-dashboard" | "pop-card-list" | "pop-card-list-v2" | "pop-button" | "pop-string-list" | "pop-search" | "pop-field" | "pop-scanner" | "pop-profile"; +export type PopComponentType = "pop-sample" | "pop-text" | "pop-icon" | "pop-dashboard" | "pop-card-list" | "pop-card-list-v2" | "pop-button" | "pop-string-list" | "pop-search" | "pop-status-bar" | "pop-field" | "pop-scanner" | "pop-profile"; /** * 데이터 흐름 정의 @@ -363,6 +363,7 @@ export const DEFAULT_COMPONENT_GRID_SIZE: Record