stack-analysis
CHAPTER 21 / 90
읽기 약 2분
FUNCTION
Tailwind CSS 심화: 커스터마이징 + 플러그인
핵심 개념
tailwind.config·@apply·plugin API·prose — 디자인 시스템 토큰화.
본문
tailwind.config.ts 커스터마이징
import type { Config } from 'tailwindcss';
export default {
content: ['./app/**/*.{ts,tsx}', './components/**/*.{ts,tsx}'],
darkMode: 'class',
theme: {
extend: {
colors: {
brand: {
50: '#eef2ff',
500: '#6366f1',
900: '#312e81',
},
// CSS 변수 활용
bg: 'var(--bg)',
fg: 'var(--fg)',
},
fontFamily: {
display: ['var(--font-pretendard)', 'sans-serif'],
mono: ['var(--font-jetbrains)', 'monospace'],
},
spacing: {
'4.5': '1.125rem',
'128': '32rem',
},
animation: {
'fade-in': 'fadeIn 0.3s ease-out',
'slide-up': 'slideUp 0.4s cubic-bezier(0.22, 1, 0.36, 1)',
},
keyframes: {
fadeIn: {
'0%': { opacity: '0' },
'100%': { opacity: '1' },
},
slideUp: {
'0%': { transform: 'translateY(20px)', opacity: '0' },
'100%': { transform: 'translateY(0)', opacity: '1' },
},
},
},
},
plugins: [
require('@tailwindcss/forms'),
require('@tailwindcss/typography'),
],
} satisfies Config;@apply — 클래스 묶음
@layer components {
.btn {
@apply inline-flex items-center justify-center px-4 py-2 rounded-md
font-medium transition-colors disabled:opacity-50 disabled:cursor-not-allowed;
}
.btn-primary {
@apply btn bg-indigo-600 text-white hover:bg-indigo-700;
}
.btn-secondary {
@apply btn bg-gray-200 text-gray-900 hover:bg-gray-300;
}
}clsx + cva 패턴
// components/Button.tsx
import { cva, type VariantProps } from 'class-variance-authority';
const button = cva(
'inline-flex items-center justify-center rounded-md font-medium transition-colors',
{
variants: {
variant: {
primary: 'bg-indigo-600 text-white hover:bg-indigo-700',
secondary: 'bg-gray-200 text-gray-900 hover:bg-gray-300',
danger: 'bg-red-600 text-white hover:bg-red-700',
ghost: 'bg-transparent hover:bg-gray-100',
},
size: {
sm: 'h-8 px-3 text-sm',
md: 'h-10 px-4',
lg: 'h-12 px-6 text-lg',
},
},
defaultVariants: { variant: 'primary', size: 'md' },
}
);
interface Props
extends React.ButtonHTMLAttributes<HTMLButtonElement>,
VariantProps<typeof button> {}
export function Button({ variant, size, className, ...rest }: Props) {
return <button className={button({ variant, size, className })} {...rest} />;
}
// 사용
<Button variant="primary" size="lg">큰 주요 버튼</Button>
<Button variant="danger" size="sm">작은 위험</Button>prose (Typography)
// 마크다운 / CMS 본문
<article className="prose prose-lg dark:prose-invert max-w-none
prose-headings:font-display
prose-a:text-indigo-600
prose-code:bg-gray-100 prose-code:px-1 prose-code:rounded">
{markdownContent}
</article>
// 자동 적용:
// - h1, h2, h3 폰트·간격
// - p 줄간격
// - a 색상·hover
// - code 배경
// - ul/ol 들여쓰기
// - blockquote 스타일다음 챕터
CH.22 "디자인 토큰 + CSS 변수" — 다크모드의 기반.
AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude
무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6
내 코드의 Tailwind 심화 부분을 분석해서 실전 분석 + 개선 우선순위를 알려줘.
ChatGPT
무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro
Tailwind 심화 관련 인기 라이브러리/패턴 5개를 비교 분석해서 패턴 추출를 알려줘.
Gemini
무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro
내 프로젝트 전체에서 Tailwind 심화 최적화 가능 위치를 보고해줘.
Grok
무료: Grok 4.1 / SuperGrok $30/mo
2026년 한국 프론트엔드 시장의 Tailwind 심화 트렌드를 솔직히 알려줘.
⭐ 이것만 기억하세요
Tailwind CSS 심화: 커스터마이징 + 플러그인은 이 3가지만 확실히 잡으세요
1.tailwind.config로 브랜드 색·폰트·애니메이션 토큰화
2.cva (class-variance-authority) = type-safe variant 패턴
3.prose로 CMS/마크다운 본문 자동 스타일링
공유하기
진행도 21 / 90