For the complete documentation index, see llms.txt. This page is also available as Markdown.

사용자 정의 컴포넌트

우리는 커스텀 컴포넌트를 두 가지 유형으로 구분하며, 각각 다른 절차와 기대사항이 있습니다.

컴포넌트 유형

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 스토리를 추가하세요:

필수 포함 항목:

  1. 모든 props와 변형

    • 모든 prop 조합

    • 모든 크기 변형

    • 모든 색상 변형

  2. 모든 상태

    • 유휴/기본

    • 로딩

    • 오류

    • 비활성화됨

    • 호버(의사 상태 애드온 사용)

    • 포커스(의사 상태 애드온 사용)

  3. 상호작용

    • 클릭 핸들러

    • 폼 제출

    • 키보드 탐색

  4. 색상 구성

    • 라이트 모드

    • 다크 모드

  5. 반응형 동작

    • 주요 브레이크포인트(xs, md, lg)

    • 각 브레이크포인트에서의 동작을 문서화

예시 Storybook 파일:

컴포넌트 구조

UI2 후보 컴포넌트는 다음 구조를 따라야 합니다:

문서화 요구사항

반드시 컴포넌트 README에 포함:

  1. 목적 - 어떤 문제를 해결하나요?

  2. 사용법 - 컴포넌트 사용 방법

  3. 속성 - 모든 props의 타입과 설명

  4. 예시 - 일반적인 사용 사례

  5. 접근성 - 키보드 지원, ARIA 레이블

  6. 테마 - 사용하는 테마 값

  7. 마이그레이션 참고사항 - UI1 컴포넌트를 대체하는 경우

예시 README:

테스트 요구사항

반드시 다음에 대한 테스트 포함:

  • Prop 렌더링

  • 사용자 상호작용

  • 접근성 기능

  • 반응형 동작

  • 오류 상태


의사결정 매트릭스

어떤 유형의 컴포넌트를 만들지 결정할 때 사용하세요:

질문
프로젝트별
UI2 후보

다른 프로젝트에서도 이것을 사용할까요?

아니요

예

UI1에 대응 항목이 있나요?

해당 없음

아마도

Storybook 문서화가 필요합니까?

아니요

예

포괄적인 테스트가 필요합니까?

기본

광범위

디자인 리뷰가 필요합니까?

프로젝트 수준

UI2 수준

프로젝트별 패턴을 사용할 수 있나요?

예

아니요

모든 테마에서 작동해야 하나요?

아니요

예


승인 절차

프로젝트별 컴포넌트

  1. 프로젝트 유지관리자의 코드 리뷰

  2. 테마 준수 여부 확인

  3. 프로젝트 환경에서 테스트

  4. 승인되면 병합

UI2 후보 컴포넌트

  1. 디자인 리뷰 및 승인

  2. 기술 설계 리뷰

  3. 구현

  4. Storybook 스토리

  5. 포괄적인 테스트

  6. 접근성 검토

  7. 코드 리뷰

  8. UI2 저장소에 PR

  9. 버전 관리 및 게시

  10. 의존 프로젝트 업데이트


모범 사례

커스터마이징보다 조합

점진적 향상

간단하게 시작하고 필요에 따라 기능을 추가하세요:

  1. 핵심 기능이 포함된 기본 버전

  2. 반응형 동작 추가

  3. 접근성 기능 추가

  4. 고급 상호작용 추가

  5. 성능 최적화

문서화 우선

코드를 작성하기 전에:

  1. 컴포넌트 README 작성

  2. props 인터페이스 정의

  3. 필요한 상태 나열

  4. Storybook 스토리 계획

  5. 그런 다음 구현


다음 단계

마지막 업데이트