# 코드 컨벤션 프론트엔드 디자인 시스템 적용을 위한 코드 작성 규칙. --- ## 파일 네이밍 | 유형 | 규칙 | 예시 | |------|------|------| | 컴포넌트 | PascalCase | `Button.tsx`, `UserCard.tsx` | | 훅 | camelCase, `use` 접두사 | `useModal.ts`, `useTheme.ts` | | 유틸리티 | camelCase | `cn.ts`, `formatDate.ts` | | 상수 | camelCase | `chart.ts`, `routes.ts` | | 타입 | camelCase | `user.ts`, `apihub.ts` | | 스타일 | camelCase | `index.css` | 컴포넌트 파일 당 하나의 `export default` 컴포넌트. --- ## Tailwind 클래스 순서 가독성을 위해 다음 순서로 클래스를 작성한다. Prettier + prettier-plugin-tailwindcss로 자동 정렬 권장. 1. **레이아웃** — `flex`, `grid`, `block`, `hidden`, `relative`, `fixed`, `z-*` 2. **크기** — `w-*`, `h-*`, `min-w-*`, `max-w-*`, `size-*` 3. **여백** — `m-*`, `mx-*`, `my-*`, `p-*`, `px-*`, `py-*`, `gap-*` 4. **테두리** — `border*`, `rounded-*`, `ring-*`, `outline-*` 5. **배경** — `bg-*`, `shadow-*`, `backdrop-*` 6. **텍스트** — `text-*`, `font-*`, `leading-*`, `tracking-*`, `truncate` 7. **색상** — `text-[var(*)]`, `bg-[var(*)]` 8. **상호작용** — `cursor-*`, `select-*`, `pointer-events-*` 9. **트랜지션** — `transition-*`, `duration-*`, `ease-*`, `animate-*` 10. **반응형** — `sm:*`, `md:*`, `lg:*`, `xl:*` 11. **다크모드** — `dark:*` 12. **상태** — `hover:*`, `focus:*`, `active:*`, `disabled:*`, `aria-*:` ```tsx // 올바른 예
``` --- ## cn() 유틸리티 `clsx` + `tailwind-merge` 조합. 조건부 클래스와 클래스 충돌 해결에 사용한다. ```ts // src/utils/cn.ts import { type ClassValue, clsx } from 'clsx'; import { twMerge } from 'tailwind-merge'; export const cn = (...inputs: ClassValue[]) => twMerge(clsx(inputs)); ``` ### 사용 패턴 ```tsx // 기본 사용
// 조건부 클래스