diff --git a/CLAUDE.md b/CLAUDE.md index 714d969a..f2d36e19 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -138,6 +138,17 @@ const response = await fetch('/api/proxy/item-master/init'); | 폼 | 레이아웃, 필드 배치, 버튼 위치 | | 테이블/리스트 | 컬럼 구조, 체크박스, 페이지네이션 | +### 컴포넌트 레지스트리 활용 (dev/component-registry) +실시간 스캔 기반 컴포넌트 목록 + 관계도 페이지가 존재함. 새로고침 시 최신 상태 반영. + +**새 컴포넌트 생성 전 필수 확인**: +1. **목록 뷰**: 동일/유사 컴포넌트가 이미 있는지 검색 +2. **관계도 뷰**: 유사 컴포넌트의 구성요소(imports)를 확인하여 동일한 공통 컴포넌트 조합 패턴 따르기 + +**기존 컴포넌트 수정 시 필수 확인**: +- 관계도의 **사용처(usedBy)** 확인 → 수정 시 영향받는 범위 파악 +- usedBy가 많은 공통 컴포넌트일수록 수정 시 주의 + --- ## Common Table Standards diff --git a/src/app/[locale]/(protected)/dev/component-registry/ComponentRegistryClient.tsx b/src/app/[locale]/(protected)/dev/component-registry/ComponentRegistryClient.tsx index 0a773fa6..74132872 100644 --- a/src/app/[locale]/(protected)/dev/component-registry/ComponentRegistryClient.tsx +++ b/src/app/[locale]/(protected)/dev/component-registry/ComponentRegistryClient.tsx @@ -13,9 +13,12 @@ import { Eye, Loader2, X, + List, + GitFork, } from 'lucide-react'; import { getComponentSource, type RegistryData, type ComponentEntry } from './actions'; import { UI_PREVIEWS } from './previews'; +import ComponentRelationshipView from './ComponentRelationshipView'; interface ComponentRegistryClientProps { registry: RegistryData; @@ -330,6 +333,7 @@ function CategorySection({ } export default function ComponentRegistryClient({ registry }: ComponentRegistryClientProps) { + const [viewMode, setViewMode] = useState<'list' | 'relationship'>('list'); const [searchTerm, setSearchTerm] = useState(''); const [activeTier, setActiveTier] = useState('전체'); const [activeDomainCategory, setActiveDomainCategory] = useState('전체'); @@ -435,7 +439,7 @@ export default function ComponentRegistryClient({ registry }: ComponentRegistryC return (
- 스캔: {generatedDate} · 새로고침으로 갱신 (실시간 스캔) - · 카드 클릭: 소스코드 보기 · 프리뷰: {previewCount}개 -
-+ 스캔: {generatedDate} · 새로고침으로 갱신 (실시간 스캔) + · 카드 클릭: 소스코드 보기 · 프리뷰: {previewCount}개 +
+- {filtered.length}개 결과 -
- ) : } - {groupedByCategory.length > 1 && ( - - )} -검색 결과가 없습니다.
-+ {filtered.length}개 결과 +
+ ) : } + {groupedByCategory.length > 1 && ( + + )} +검색 결과가 없습니다.
++{resolvedChildren.length - 10}개 더...
+ )} +컴포넌트를 검색하고 선택하면 관계도가 표시됩니다.
+카드를 클릭하면 해당 컴포넌트로 이동합니다.
+사용처 없음
+최상위 컴포넌트
+구성요소 없음
+기본 컴포넌트 (leaf)
+스크린리더 전용 숨김 텍스트:
+