suspense

Tailwind @theme로 디자인 토큰 관리하기

1. 배경

프로젝트 할때 팀원이 만들어 두어서 그냥 가져다가 쓰긴 했고, 이게 스타일 통일을 위해 사용한다는 것은 알고 있었지만, 정확히 어떻게 만들고, 어떻게 사용하는지 잘 몰랐어서 정리를 해보게 되었다.


2. 핵심 개념

@theme는 색상, 폰트 등 공통 스타일을 CSS 변수 형태로 정의하고

프로젝트 전반에서 재사용할 수 있도록 하는 설정이다.

@theme {
  --color-primary-100: #2b7f59;
  --color-background-100: #f3fcf8;
}

이렇게 정의된 값은 Tailwind 클래스에서 다음과 같이 사용할 수 있다.

<div className="bg-primary-100" />

3. 기존 방식과의 차이

기존 방식

<div className="bg-[#2b7f59]" />
  • 색상 값이 하드코딩됨
  • 동일한 색상 반복 사용
  • 유지보수 어려움

개선 방식

--color-primary-100: #2b7f59;
<div className="bg-primary-100" />
  • 색상 의미 기반으로 사용 가능
  • 값 변경 시 한 곳만 수정
  • 디자인 일관성 유지

4. 구조 설계

1) 폰트

--font-sans: var(--font-pretendard), system-ui, ...
  • 프로젝트 기본 폰트 통일

2) Primary 색상

--color-primary-100 ~ 500
  • 동일 계열 색상을 단계별로 정의
  • 버튼, 강조 요소 등에 사용

3) Background 색상

--color-background-100 ~ 400
  • 배경 전용 색상 분리
  • UI 계층 구조 표현에 활용

5. 적용 효과

  • 색상/폰트 관리 일원화
  • UI 일관성 확보
  • 유지보수 비용 감소
  • 다크모드 및 테마 확장 가능

6. 느낀 점

초기에는 단순한 CSS 변수처럼 보였지만,

프로젝트 규모가 커질수록 디자인 시스템의 중요성을 체감하게 되었다.

특히 Tailwind와 결합했을 때

스타일을 “값”이 아니라 “의미”로 사용할 수 있다는 점이 가장 큰 장점이었다.


한 줄 정리

@theme는 디자인 값을 하드코딩하지 않고, 의미 있는 토큰으로 관리하기 위한 구조다.


results matching ""

    No results matching ""