콘텐츠로 이동
Study Noteshadcn/ui

0. 시작하기 전에

새 도구를 배울 때 힘든 것은 개념 자체가 아니라 설명 없이 지나가는 단어들이다

이 덱은 그 지점을 규칙으로 막는다.

  • 약어는 처음 나올 때 풀 이름을 준다. cva는 class-variance-authority다
  • “이게 뭔지”보다 “이게 왜 있는지”를 먼저 쓴다. 없으면 무슨 문제가 생기는지가 설명이다
  • 덜 쓰이는 기능은 뺀다. 넣더라도 “이런 게 있다” 한 줄로 끝내고 넘어간다

전제하는 것

HTML과 CSS를 조금 써봤다. React로 컴포넌트를 만들어 본 적이 있다. 터미널에서 npm / pnpm 명령을 실행할 수 있다.

전제하지 않는 것

Tailwind CSS를 잘 안다. — 몰라도 읽힌다 디자인 시스템을 만들어 봤다. Next.js의 서버 컴포넌트를 안다.

Tailwind를 처음 본다면 아래 세 줄만 알고 들어와도 충분하다.

  • Tailwind는 CSS 클래스 이름 하나 = 스타일 한 줄인 도구다. p-4는 padding: 1rem이다
  • 그래서 별도 .css 파일을 거의 안 만들고 HTML 태그에 클래스를 나열한다
  • 색·간격 같은 값은 CSS 파일에 정의한 변수에서 온다 — 이 덱의 주제가 바로 그 변수다

이 다섯 개는 덱 전체에서 계속 나온다. 여기서 한 번에 정리한다.

이 덱 전체에서 쓰는 말5개
CSS 변수CSS Custom Property
CSS 안에서 값에 이름을 붙여 두는 문법. --primary: #4f46e5; 로 정의하고 var(--primary) 로 꺼내 쓴다. 브라우저가 직접 지원하므로 빌드 없이도 값을 바꿀 수 있다 — 다크 모드가 가능한 이유다.
토큰Design Token
디자인 결정에 붙인 이름. 값 #4f46e5 는 그냥 값이지만 --primary 는 "우리 앱의 주 색상"이라는 결정이다. 결정이 바뀌면 한 곳만 고친다.
테마Theme
토큰 값을 한 벌로 묶은 것. 라이트 테마 와 다크 테마 는 이름은 같고 값만 다른 두 벌이다. 이 덱의 중심 개념.
유틸리티 클래스Utility Class
Tailwind가 만들어 주는 한 줄짜리 클래스. bg-primary 는 "배경을 --primary 색으로"라는 뜻이다.
CLICommand Line Interface
터미널에서 실행하는 명령줄 도구. shadcn/ui는 웹사이트가 아니라 이 CLI로 쓴다 — pnpm dlx shadcn@latest add button 같은 형태다.
테마가 색·형태·글자·컴포넌트·아이콘 폰트 다섯 갈래로 나뉘고 각각 4~8장이 맡는 지도

리소스 다섯 종을 하나씩 다루고, 그 다음 두 벌로 만들기(다크 모드) → 직접 만들기 → 팀에 배포하기로 간다.

“많이 쓰이는 것만”이라는 원칙 때문에 아래는 뺐다. 필요해질 때 공식 문서에서 찾으면 되는 것들이라 이름만 알아두면 충분하다.

뺀 것한 줄 설명언제 필요한가
style 프리셋 8종컴포넌트의 시각적 성격 프리셋(vega·sera 등)프로젝트 시작할 때 한 번 고르고 끝
모노레포 설정앱 여러 개가 컴포넌트를 공유하는 구조앱이 둘 이상이 될 때
eject · migrate유틸을 인라인화하거나 아이콘·베이스를 일괄 교체마이그레이션할 때
Radix / React Aria 상세shadcn이 쓸 수 있는 다른 기반 라이브러리기본값(Base UI)으로 부족할 때
Blocks · Charts완성된 화면 조합 · 차트 래퍼대시보드를 빨리 만들 때
MCP 서버 연동AI 도구가 레지스트리를 읽게 하는 설정에이전트로 UI를 짤 때
도구버전왜 중요한가
Tailwind CSS4.x설정이 JS 파일에서 CSS 파일로 옮겨 갔다. 3.x 자료와 문법이 다르다
shadcn CLI4.xpreset·template과 --dry-run·--diff·--view가 한 흐름으로 정리됐다
Next.js16이 덱은 Next.js에 크게 의존하지 않는다. Vite 등에서도 대부분 그대로다
기반 라이브러리Base UI2026년 7월부터 기본값. 예전 기본값은 Radix UI였다
  • 이 덱은 shadcn/ui를 테마 관리 방식으로 설명한다
  • 새 용어는 풀 이름 + 왜 필요한지를 먼저 준다. 각 장 첫머리 상자가 그 역할이다
  • 기본 용어 다섯: CSS 변수 · 토큰 · 테마 · 유틸리티 클래스 · CLI
  • 관통하는 한 문장 — 값이 아니라 결정에 이름을 붙인다
  • 곁가지는 뺐다. 뺀 목록은 위 표에 있으니 이름만 기억해 두면 된다