# 디자인 리뷰 체크리스트 컴포넌트 구현 완료 후, MR 생성 전에 아래 9개 카테고리를 점검한다. --- ## 1. 컬러 토큰 - [ ] HEX 색상 코드가 직접 사용되지 않았다 - [ ] Tailwind 기본 팔레트(gray-*, blue-* 등)를 브랜드 컬러 대용으로 사용하지 않았다 - [ ] 모든 색상이 CSS 변수 토큰(`var(--color-*)`)을 통해 지정되었다 - [ ] 시멘틱 컬러(success, warning, danger, info)가 의미에 맞게 사용되었다 - [ ] 시멘틱 컬러를 장식 목적으로 사용하지 않았다 ## 2. 다크 모드 - [ ] CSS 변수 토큰을 사용하므로 다크 모드가 자동으로 전환된다 - [ ] 토큰이 없는 케이스(그라디언트, 특수 색상 등)에만 `dark:` 클래스를 사용했다 - [ ] `dark:` 클래스가 CSS 변수 토큰과 충돌하지 않는다 - [ ] 이미지, SVG 등 미디어가 다크 모드에서 적절히 표시된다 ## 3. 타이포그래피 - [ ] 폰트 크기가 타입 스케일(`text-sm`, `text-base`, `text-lg` 등)을 사용한다 - [ ] 임의의 px 폰트 크기(`text-[22px]` 등)를 사용하지 않았다 - [ ] 텍스트 색상이 CSS 변수 토큰(`--color-text-primary` 등)을 사용한다 - [ ] 한글 텍스트에 `word-break: keep-all`이 적용되었다 (본문, 설명) ## 4. 스페이싱 - [ ] 여백이 4px 단위 스케일(`p-2`, `p-4`, `gap-3` 등)을 사용한다 - [ ] 임의의 px 여백(`p-[13px]`)을 사용하지 않았다 - [ ] 인라인 스타일로 여백을 지정하지 않았다 ## 5. 컴포넌트 API - [ ] Props 인터페이스가 `interface {Name}Props`로 정의되었다 - [ ] `className` prop이 허용되고 `cn()`으로 병합된다 - [ ] `cn()` 유틸리티(`src/utils/cn.ts`)를 사용한다 - [ ] DOM 접근이 필요한 경우 `forwardRef`가 적용되었다 - [ ] `any` 타입이 사용되지 않았다 ## 6. 아이콘 - [ ] Lucide React 아이콘만 사용했다 (다른 라이브러리 혼용 없음) - [ ] 아이콘 크기가 사이즈 스케일(`size-4`, `size-5`, `size-6` 등)을 사용한다 - [ ] 아이콘 색상이 텍스트 색상 상속 또는 CSS 변수 토큰을 사용한다 - [ ] 장식용 아이콘에 `aria-hidden="true"`가 적용되었다 - [ ] 의미 있는 아이콘 버튼에 `aria-label`이 있다 ## 7. 접근성 - [ ] 모든 인터랙티브 요소가 키보드로 접근 가능하다 - [ ] `focus-visible` 스타일이 적용되었다 - [ ] ARIA 속성이 올바르게 사용되었다 (`role`, `aria-label`, `aria-expanded` 등) - [ ] 색상만으로 정보를 전달하지 않는다 (아이콘, 텍스트 보조) - [ ] 이미지에 `alt` 텍스트가 있다 ## 8. 모션 - [ ] 트랜지션 지속 시간이 200ms 이하이다 (특별한 경우 300ms) - [ ] 진입/퇴장 애니메이션에 올바른 easing이 적용되었다 (진입: `ease-out`, 퇴장: `ease-in`) - [ ] `motion-reduce:transition-none` 또는 `motion-reduce:duration-0`이 적용되었다 - [ ] 불필요한 애니메이션이 없다 ## 9. 코드 품질 - [ ] `console.log`가 없다 - [ ] 사용하지 않는 import가 없다 - [ ] 매직 넘버/문자열이 상수로 추출되었다 - [ ] `tsc --noEmit` 통과 - [ ] 컴포넌트에 `displayName`이 설정되었다 (forwardRef 사용 시) - [ ] Import 순서가 컨벤션을 따른다 --- ## 리뷰 요청 템플릿 MR 본문에 아래 내용을 포함한다. ```markdown ## 디자인 리뷰 ### 컬러 토큰 - [ ] CSS 변수 토큰 사용 - [ ] 다크 모드 자동 전환 ### 접근성 - [ ] 키보드 접근성 - [ ] ARIA 속성 ### 모션 - [ ] prefers-reduced-motion 처리 ### 자체 검증 - tsc --noEmit: 통과 / 실패 ```