---
description:
globs:
alwaysApply: false
---
# Tailwind CSS v4 + Shadcn UI 호환성 규칙

## **CSS 설정 (src/index.css)**

- **@theme 레이어 사용**
  ```css
  @theme {
    --radius: 0.5rem;
  }
  ```

- **CSS 변수 정의**
  - `:root`에 라이트 모드 색상 변수 정의
  - `.dark`에 다크 모드 색상 변수 정의
  - `hsl(var(--foreground))` 형태로 색상 사용

## **cn 함수 (src/lib/utils.ts)**

- **에러 핸들링 필수**
  ```typescript
  // ✅ DO: fallback 로직 포함
  export function cn(...inputs: ClassValue[]) {
    try {
      return twMerge(clsx(inputs));
    } catch (error) {
      console.warn("tailwind-merge fallback:", error);
      return clsx(inputs);
    }
  }
  
  // ❌ DON'T: 에러 핸들링 없이 사용
  export function cn(...inputs: ClassValue[]) {
    return twMerge(clsx(inputs));
  }
  ```

## **컴포넌트 스타일링**

- **CSS 변수 활용**
  ```typescript
  // ✅ DO: CSS 변수 기반 스타일링
  className="bg-background text-foreground border-border"
  
  // ✅ DO: cn 함수로 조건부 스타일링
  className={cn(
    "base-styles",
    condition && "conditional-styles"
  )}
  ```

- **색상 시스템 준수**
  - `background`, `foreground`, `primary`, `secondary` 등 정의된 변수 사용
  - 직접 색상 값 대신 변수 사용

## **패키지 관리**

- **필수 패키지**
  ```json
  {
    "@tailwindcss/cli": "^4.1.10",
    "@tailwindcss/vite": "^4.1.10",
    "tailwind-merge": "latest",
    "clsx": "^2.1.1",
    "class-variance-authority": "^0.7.1"
  }
  ```

- **제거해야 할 파일**
  - `tailwind.config.js` (v4는 CSS-first 방식)
  - `postcss.config.js` (v4는 PostCSS 불필요)

## **Vite 설정**

- **플러그인 설정**
  ```typescript
  // vite.config.ts
  import tailwindcss from "@tailwindcss/vite";
  
  export default defineConfig({
    plugins: [react(), tailwindcss()],
  });
  ```

## **문제 해결**

- **tailwind-merge 오류 시**
  - 최신 버전으로 업데이트
  - cn 함수에 fallback 로직 구현

- **스타일이 적용되지 않을 때**
  - CSS 변수가 올바르게 정의되었는지 확인
  - @theme 레이어가 포함되었는지 확인

- **빌드 오류 시**
  - node_modules 캐시 삭제 후 재설치
  - package-lock.json 삭제 후 재설치

## **모범 사례**

- **컴포넌트 개발 시**
  - 항상 CSS 변수 사용
  - cn 함수로 클래스 조합
  - 조건부 스타일링에 적절한 패턴 적용

- **테마 관리**
  - 라이트/다크 모드 변수 동시 정의
  - 일관된 색상 시스템 유지

- **성능 최적화**
  - 불필요한 클래스 중복 방지
  - cn 함수 사용으로 클래스 충돌 해결

## **참고 자료**

- [Tailwind CSS v4 공식 문서](https://tailwindcss.com/docs/v4-beta)
- [Shadcn UI + Tailwind v4 가이드](https://www.luisball.com/blog/shadcn-ui-with-tailwind-v4)
- [Shadcn UI 공식 설치 가이드](https://ui.shadcn.com/docs/installation/manual)
