2c0a97f2ba
- components/builder/* 폐기 (12-grid 미완성 빌더 14개 파일)
- components/template-builder/TemplateBuilder.tsx 신규
(자유배치 + 3뷰 + Zustand 스토어 + 드래그/리사이즈/히스토리/격자)
- admin/builder/page.tsx 진입점 전환 (BuilderLayout → TemplateBuilder)
- 타입 정리: FreePosition / TemplateComponent / ViewConfig / Card /
Dashboard / CardConnection 추가, 레거시(GridPosition/TemplateKind/
DEFAULT_COMPONENT_LAYOUTS/CANVAS_KEYWORDS) @deprecated 표기
- v2-* 마이그레이션 1차:
· 완전: v2-table-list (ResizeObserver), v2-table-search-widget (@container)
· 경량: button/input/select/date/text-display/card-display/aggregation-widget
(withContainerQuery HOC)
- 다크 모드 대응: Tailwind dark: variant 21패턴 71곳 치환
- /test-card-responsive PoC 검증 페이지
세션 후반 버그 픽스 (phase1-log §7):
- test-card-responsive (main) 그룹 밖 이동 (AppLayout 탭 시스템 회피)
- useRegistryPalette default_size {width,height}/{w,h} 포맷 정규화
- dark: variant 중복 체인 정리
검증: (A) 반응형 메커니즘, (B) TemplateBuilder UI 통과
(C) 기존 VEX 화면은 마이그레이션 미완 상태라 Phase 2 이후 개별 진행
스펙: notes/gbpark/2026-04-10-card-engine-final-spec.md
로그: notes/gbpark/2026-04-10-card-engine-phase1-log.md
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
"use client";
|
|
|
|
import React from "react";
|
|
|
|
/**
|
|
* withContainerQuery HOC (2026-04-10, Phase 1 Step 6 경량 부착)
|
|
*
|
|
* 래핑된 컴포넌트를 `container-type: inline-size` 속성을 가진 div 로 감싸서,
|
|
* 카드 컨테이너 너비 기반 @container 쿼리가 자식 CSS 에서 작동할 수 있게 한다.
|
|
*
|
|
* 이 HOC 는 "반응형 준비" 용이다. 실제 wide/narrow 모드 분기는 개별 컴포넌트의
|
|
* CSS 또는 Phase 2 재작성 때 추가한다. 지금 시점에서는 container query 진입점만
|
|
* 확보해 둔다.
|
|
*/
|
|
export function withContainerQuery<P extends object>(
|
|
Wrapped: React.ComponentType<P>,
|
|
containerName?: string,
|
|
): React.FC<P> {
|
|
const Hoc: React.FC<P> = (props) => (
|
|
<div
|
|
className="v2-container-query-root"
|
|
style={{
|
|
containerType: "inline-size",
|
|
containerName,
|
|
width: "100%",
|
|
height: "100%",
|
|
minWidth: 0,
|
|
}}
|
|
>
|
|
<Wrapped {...props} />
|
|
</div>
|
|
);
|
|
Hoc.displayName = `withContainerQuery(${Wrapped.displayName || Wrapped.name || "Component"})`;
|
|
return Hoc;
|
|
}
|