사용자 인터페이스를 구축하는데 필요한 모든 요소를 정의하는 포괄적인 문서와 가이드라인 집합.
- 원칙 : 디자인과 개발에 대한 핵심 가치 및 지침 (린트, 허스키)
- 테마 : 색상, 타이포그래피, 그리드, 스페이싱 등과 같은 기본 디자인 요소에 대한 지침
- 컴포넌트 : 버튼, 입력란, 탭, 모달 등과 같은 재사용 가능한 UI 요소의 라이브러리
- 패턴 : 여러 컴포넌트를 결합하여 만들어진 복잡한 사용자 인터페이스 요소
- 도구 및 유틸리티 : 디자인 시스템을 실제 제품에 통합하기 위한 도구와 플러그인 (ui 라이브러리 , 차크라, 머터릴얼 ,shadcn)
- 문서화 : 디자인 시스템의 모든 요소를 사용하는 방법 (스토리북)
- 가이드라인 : 좋은 사용성, 접근성 등의 가이드와 권장사항들 (docs)
- 프로세스 및 워크플로우 : 디자인 시스템 업데이트, 확장하는 것에 대한 프로세스 (검토 시스템 예시를 들만한 것은 팀 내에서 코드리뷰 규칙??)
- 컬러
- 다크모드에 대응 가능한 컬러 테마 토큰
- 타이포그라피 (텍스트)
- radius, spacing, shadow
- 버튼 컴포넌트 패키지
- 인풋 컴포넌트 패키지
- 레이아웃 컴포넌트 패키지
- 토스트 컴포넌트 패키지
- 코드 변경, 동일한 이슈를 한 번만 수정해도 일괄 적용 가능
- 설정을 한 곳에서 관리할 수 있음(디펜던시, 타입스크립트, 배포 전략, 린트, 번들러 등)
- 코드, 컨텍스트 공유가 용이
- 이슈에 대응하기 용이하다
- Box
- Flex
- Grid
- Divider
- GridItem
스타일과 기능을 분리하여 설계하는 방식
- 관심사 분리
- UI와 기능이 분리되어 각각 나누어 고민하고 개발을 하게되어 코드 품질이 좋아진다.
- 유지보수 용이성
- interface 또는 기능이 변경 될 경우 일괄로 반영할 수 있다.
- 재사용성
- 기능만 제공하기 때문에 다양한 곳에서 사용할 수 있게 된다.
- Hooks
- Compound
- Function as Child