사용자 정의 컴포넌트
우리는 커스텀 컴포넌트를 두 가지 유형으로 구분하며, 각각 다른 절차와 기대사항이 있습니다.
컴포넌트 유형
A) 프로젝트별 커스텀 컴포넌트
특정 프로젝트나 화면을 위해 만들어진 컴포넌트로, 다른 프로젝트에서 재사용할 목적으로는 만들지 않습니다.
예시:
A
Box한 프로젝트 내에서만 사용되는 특수 레이아웃을 가진A
Card한 프로젝트의 화면을 위한 맞춤형 레이아웃 변형프로젝트별 데이터 시각화
일회성 레이아웃 컴포넌트
사용 시기:
컴포넌트가 특정 프로젝트에만 있는 문제를 해결함
다른 프로젝트에서 필요할 가능성이 낮음
일반화하기에는 너무 구체적임
B) UI2 후보 컴포넌트
여러 프로젝트와 제품에서 재사용하도록 설계된 컴포넌트입니다.
예시:
Navbar- 사이트 전체 내비게이션UserMenu- 사용자 계정 메뉴표준화됨
Modal대화상자UI1에서 이전 중인 컴포넌트
사용 시기:
컴포넌트가 여러 프로젝트에서 사용됨
일반적인 Decentraland 패턴을 나타냄
UI1 컴포넌트를 대체하거나 확장함
프로젝트별 컴포넌트
요구사항
MUI를 기반으로 사용
반드시 가능한 한 기존 MUI 컴포넌트를 확장하세요:
MUI가 이미 제공하는 패턴을 포크하거나 중복 구현하지 마세요:
사용
Card그림자가 있는 커스텀 박스를 만드는 대신사용
Button스타일이 적용된 앵커를 만드는 대신사용
TextField커스텀 입력을 만드는 대신확장
Dialog커스텀 모달을 만드는 대신
테마 값만 사용
반드시 UI2 테마의 값만 사용하세요:
임의 값은 허용되지 않습니다:
색상: 사용
theme.palette또는dclColors간격: 사용
theme.spacing(n)테두리 반경: 사용
theme.shape.borderRadius타이포그래피: 사용
theme.typography변형브레이크포인트: 사용
theme.breakpoints헬퍼
상태 및 접근성
반드시 모든 상호작용 상태를 정의하고 구현하세요:
반드시 기본 접근성을 구현하세요:**
키보드 탐색 - 키보드로 포커스 및 조작 가능
포커스 표시 - 보이는 포커스 상태
ARIA 레이블 - 텍스트가 보이지 않는 경우
시맨틱 HTML - 적절한 요소 사용
색상 대비 - WCAG AA 표준 충족
예시: 프로젝트별 컴포넌트
UI2 후보 컴포넌트
프로젝트 간에 공유될 컴포넌트는 더 높은 기준과 더 철저한 문서화가 필요합니다.
요구사항
테마 일치
반드시 UI2 테마 값에만 의존하세요:
Storybook 범위
반드시 포괄적인 Storybook 스토리를 추가하세요:
필수 포함 항목:
모든 props와 변형
모든 prop 조합
모든 크기 변형
모든 색상 변형
모든 상태
유휴/기본
로딩
오류
비활성화됨
호버(의사 상태 애드온 사용)
포커스(의사 상태 애드온 사용)
상호작용
클릭 핸들러
폼 제출
키보드 탐색
색상 구성
라이트 모드
다크 모드
반응형 동작
주요 브레이크포인트(xs, md, lg)
각 브레이크포인트에서의 동작을 문서화
예시 Storybook 파일:
컴포넌트 구조
UI2 후보 컴포넌트는 다음 구조를 따라야 합니다:
문서화 요구사항
반드시 컴포넌트 README에 포함:
목적 - 어떤 문제를 해결하나요?
사용법 - 컴포넌트 사용 방법
속성 - 모든 props의 타입과 설명
예시 - 일반적인 사용 사례
접근성 - 키보드 지원, ARIA 레이블
테마 - 사용하는 테마 값
마이그레이션 참고사항 - UI1 컴포넌트를 대체하는 경우
예시 README:
테스트 요구사항
반드시 다음에 대한 테스트 포함:
Prop 렌더링
사용자 상호작용
접근성 기능
반응형 동작
오류 상태
의사결정 매트릭스
어떤 유형의 컴포넌트를 만들지 결정할 때 사용하세요:
다른 프로젝트에서도 이것을 사용할까요?
아니요
예
UI1에 대응 항목이 있나요?
해당 없음
아마도
Storybook 문서화가 필요합니까?
아니요
예
포괄적인 테스트가 필요합니까?
기본
광범위
디자인 리뷰가 필요합니까?
프로젝트 수준
UI2 수준
프로젝트별 패턴을 사용할 수 있나요?
예
아니요
모든 테마에서 작동해야 하나요?
아니요
예
승인 절차
프로젝트별 컴포넌트
프로젝트 유지관리자의 코드 리뷰
테마 준수 여부 확인
프로젝트 환경에서 테스트
승인되면 병합
UI2 후보 컴포넌트
디자인 리뷰 및 승인
기술 설계 리뷰
구현
Storybook 스토리
포괄적인 테스트
접근성 검토
코드 리뷰
UI2 저장소에 PR
버전 관리 및 게시
의존 프로젝트 업데이트
모범 사례
커스터마이징보다 조합
점진적 향상
간단하게 시작하고 필요에 따라 기능을 추가하세요:
핵심 기능이 포함된 기본 버전
반응형 동작 추가
접근성 기능 추가
고급 상호작용 추가
성능 최적화
문서화 우선
코드를 작성하기 전에:
컴포넌트 README 작성
props 인터페이스 정의
필요한 상태 나열
Storybook 스토리 계획
그런 다음 구현
다음 단계
검토 스타일링 및 테마 구현 세부 사항용
참고 마이그레이션 가이드 UI1에서 UI2로의 마이그레이션용
확인 프로세스 개요 전체 워크플로우를 위해
마지막 업데이트