색에blue-500이라 이름 지으면 그게 뭔지 말해줘.brand라 이름 지으면 그게 뭘 하는지 말해줘. 둘 다 자리 있어. 어떤 게 어디 가는지 아는 게 기술.
Literal 토큰 (빌트인)
Tailwind 가 팔레트 출하: blue-500, slate-900, cyan-400. 이것들은 literal — 특정 hex 값 묘사. One-off 액센트, dev 작업, 스크래치 UI 에 사용.
Semantic 토큰 (본인 것)
Semantic 토큰은 본인이 추가하는 이름: brand, danger, surface, text-muted. 외양 아니라 역할 묘사. 그걸 쓰는 모든 컴포넌트 안 만지고 정확한 색 바꿀 수 있음 (예: brand 색 리브랜드).
2-layer 패턴
대부분의 성숙한 디자인 시스템이 literal 로 정의, semantic 으로 사용:
@theme {
/* Literal 팔레트 */
--color-pink-500: #FF8FBE;
/* Semantic 매핑 */
--color-brand: var(--color-pink-500);
}
이렇게 하면 --color-brand 를 pink-500 에서 violet-500 으로 한 줄에서 swap 하고 앱 전체의 모든 bg-brand 업데이트.
cwkPippa 팔레트
cwkPippa 의 index.css 가 컴포넌트에서 거의 semantic 토큰만 사용 (bg-bg, text-fg, text-brand) 하고 작은 literal 레이어에서 가져옴. Literal 레이어가 아빠가 새 액센트 색 고를 때 바뀌는 유일한 자리.
좋은 semantic 이름의 조건
- 역할 기반:
danger,success,warning,info가red,green,yellow,blue이김. - Surface 기반:
bg,bg-elevated,bg-card가gray-950,gray-900,gray-850이김. - 계층 인식: 본문 primary/secondary/tertiary 에
text,text-muted,text-subtle.
이름 짓기가 유연성 사고, 모호가 비용.
blue 라 부른 토큰은 semantic 깨지 않고 빨강 못 됨. brand 라 부른 토큰은 어떤 색조든 가능. 의미 안 바꾸고 색 바뀔 수 있는 이름 골라.