Tailwind v4에서는 대부분의 테마 설정이 JavaScript 파일을 떠나 CSS로 왔어. design token을 실제로 쓰이는 자리에서 선언하는 방법을 익혀 보자.
테마가 CSS 안으로 들어왔어
Tailwind v3에서는 tailwind.config.js의 JavaScript 객체에 테마를 적었어. v4에서는 메인 CSS의 @theme 블록에 CSS custom property로 선언해. Tailwind 유틸리티와 직접 작성한 CSS가 같은 토큰을 읽으므로 중간 변환 계층이 필요 없어.
토큰 이름이 유틸리티를 만들어
--color-*는 배경, 글자, 테두리, ring 색상 유틸리티로 이어져.--font-*는 글꼴,--spacing-*은 padding·margin·gap에 사용돼.--radius-*와--shadow-*는 모서리와 그림자 유틸리티를 만들어.--breakpoint-*는 반응형 접두사의 기준이 돼.
예를 들어 --color-brand를 선언하면 bg-brand와 text-brand가 그 값을 사용해.
cwkPippa의 방식
cwkPippa의 메인 CSS도 이 구조를 사용해. 기본 다크 테마를 두고 data-theme="light" 선택자에서 같은 토큰 값을 바꿔 밝은 테마를 만들어. 글꼴과 피파 강조 색상도 한 토큰 집합에서 관리해.
JavaScript 설정이 필요한 경우도 있어
플러그인이나 특별한 variant가 필요하면 설정 파일을 사용할 수 있어. 하지만 색, 글꼴, 간격, breakpoint 같은 design token은 CSS에 두는 편이 가장 자연스러워.
토큰의 원본은 한곳에만 둬. 같은
--color-brand를 @theme, :root, SCSS 변수에 중복해서 선언하지 마. v4에서는 @theme를 원본으로 삼고 나머지가 그 값을 읽게 해.v3 프로젝트는 서둘러 옮기지 않아도 돼
기존 v3 문법은 호환 경로가 있어 즉시 마이그레이션할 필요가 없어. 다만 새 프로젝트와 새 예제에서는 v4의 CSS-first 구조를 기본으로 삼아.