feat(pop): 액션 아키텍처 + 모달 시스템 구현 (STEP 0~7)

- executePopAction / usePopAction 훅 신규 생성
- pop-button을 usePopAction 기반으로 리팩토링
- PopModalDefinition 타입 + MODAL_SIZE_PRESETS 정의
- PopDesignerContext 신규 생성 (모달 탭 상태 공유)
- PopDesigner에 모달 탭 UI 추가 (메인 캔버스 / 모달 캔버스 전환)
- PopCanvas에 접이식 ModalSizeSettingsPanel + ModalThumbnailPreview 구현
- PopViewerWithModals 신규 생성 (뷰어 모달 렌더링 + 스택 관리)
- FULL 모달 전체화면 지원 (h-dvh, w-screen, rounded-none)
- pop-string-list 카드 버튼 액션 연동
- pop-icon / SelectedItemsDetailInput lucide import 최적화
- tsconfig skipLibCheck 설정 추가

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
SeongHyun Kim
2026-02-23 13:54:49 +09:00
parent 51e1392640
commit df8cbb3e80
16 changed files with 1492 additions and 220 deletions
@@ -26,7 +26,7 @@ import {
} from "@/components/pop/designer/types/pop-layout";
// POP 컴포넌트 자동 등록 (레지스트리 초기화 - PopRenderer보다 먼저 import)
import "@/lib/registry/pop-components";
import PopRenderer from "@/components/pop/designer/renderers/PopRenderer";
import PopViewerWithModals from "@/components/pop/viewer/PopViewerWithModals";
import {
useResponsiveModeWithOverride,
type DeviceType,
@@ -294,11 +294,11 @@ function PopScreenViewPage() {
const adjustedPadding = Math.max(8, Math.round(breakpoint.padding * gapMultiplier));
return (
<PopRenderer
<PopViewerWithModals
layout={layout}
viewportWidth={isPreviewMode ? currentDevice.width : viewportWidth}
screenId={String(screenId)}
currentMode={currentModeKey}
isDesignMode={false}
overrideGap={adjustedGap}
overridePadding={adjustedPadding}
/>