원문 : https://www.michaelmang.dev/blog/introduction-to-design-tokens
TLDR:
- CSS는 스타일 시트 스펙의 원자가 아닙니다.
- 원자는 바로 딕셔너리의 필드 : 밸류 한 쌍입니다.
- css 클래스는 스펙(사양)이 아닙니다.
- color : 'black' 한 쌍입니다.
- 코드에서 사용할 수 있는 사양을 나타내는 "원자"는 키-값 쌍입니다. 이것이 바로 "디자인 토큰"이 의미하는 것입니다.
Design tokens are key-value pairs that represent the specs of a design system.
CSS 기술이 영원하지 않을 수도 있습니다. creating a common CSS architecture
하지만 자료구조는 영원합니다.
아래 시리즈의 1편 의역입니다.
1 | Introduction to Design Tokens
2 | Managing and Exporting Design Tokens With Style Dictionary
3 | Exporting Design Tokens From Figma With Style Dictionary
4 | Consuming Design Tokens From Style Dictionary Across Platform-Specific Applications
5 | Generating Design Token Theme Shades With Style Dictionary
6 | Documenting Design Tokens With Docusaurus
7 | Integrating Design Tokens With Tailwind
8 | Transferring High Fidelity From a Design File to Style Dictionary
9 | Scoring Design Tokens Adoption With OCLIF and PostCSS
10 | Bootstrap UI Components With Design Tokens And Headless UI
11 | Linting Design Tokens With Stylelint
12 | Stitching Styles to a Headless UI Using Design Tokens and Twind
위와 같은 멋진 컴포넌트 설명서를 애플리케이션으로 옮겨봅시다.
아래와 같은 문제가 발생합니다
- 우리팀은 styled-component를 적용했습니다.
- 다른팀도 styled-components를 쓰는데, css variable이 아닌 themeprovider를 사용한다 하네요. 공통화합니다.
- 다른팀이 vue를 사용하기로 해서 스타일을 stylis 파일로 뽑아냅니다
- 마케팅 팀이 외주를 줬다고 하네요. 제이쿼리입니다. 다 같이 css로 옮깁시다.
- 모바일 컴포넌트를 참고해야 하는데 모바일 팀은 plain JSX에 스타일 객체를 사용하고 있었다고 하네요. 공통화를 먼저 진행해야겠습니다.
- 디자인 팀이 스타일 재설계를 시작했다고 합니다.
점점 단일 진실 원천의 필요성이 드러납니다.
디자인 토큰은 무엇인가요?
- 첫째, 공유 UI 컴포넌트 라이브러리를 구현하는 개발자 팀이 문서를 코드로 변환할 때 실수를 할 수 있습니다.
- 테스트, 혹은 도구로 해결합니다.
- Shopify’s Polaris design system documentation
- 둘째, UI 컴포넌트 라이브러리가 다른 플랫폼에서 작동하지 않을 수 있습니다.
- 웹용 컴포넌트는 모바일 앱에서 작동하지 않을 수 있습니다.
- 셋째, UI 라이브러리는 다른 기술(동일한 플랫폼에 있더라도)에서 작동하지 않을 수 있습니다.
- React와 Vue 구현 사이에 문제가 있을 수 있습니다.
- 마지막으로, 장기적으로 어떤 팀이 추가되고 어떤 기술과 플랫폼이 승리할지 미래를 예측할 수 있는 방법이 없습니다.
이를 해결하기 위해 단일 진실 원천 디자인 토큰이 필요합니다.
used by companies such as Amazon, Salesforce, Shopify, Mozilla, Adobe, and more.
다음 편에서는 디자인 토큰을 관리 및 추출하는 방법을 살펴봅니다.
'FrontEnd' 카테고리의 다른 글
타입스크립트 : typescript with JSON (JSON에 타입 지원) (0) | 2022.07.22 |
---|---|
타입스크립트 : 파라미터 타입(Parameters)과 리턴 타입(ReturnType) (0) | 2022.07.22 |
리액트 국제화(i18n, internationalization) translation key 설계 (0) | 2022.07.21 |
리액트를 직접 만들며 알아보는 렌더/커밋/조정 알고리즘 (1) | 2022.07.19 |
리액트 디자인 패턴 : 선언적 컴포넌트 설계 (declarative component design) (0) | 2022.07.19 |