snp-connection-monitoring/docs/design/prompts/review-checklist.md
HYOJIN c2a71c1b77 feat(design): 디자인 시스템 적용 (CSS 토큰, Button/Badge, 차트, 다크모드) (#48)
- 디자인 시스템 가이드 문서 11개 생성 (docs/design/)
- CSS 변수 토큰 시스템 (@theme + :root/.dark 전환)
- cn() 유틸리티 (clsx + tailwind-merge)
- Button/Badge 공통 컴포넌트 (variant/size, 다크모드 대응)
- 하드코딩 Tailwind 색상 → CSS 변수 토큰 리팩토링 (30개 파일)
- 차트 팔레트 다크모드 색상 업데이트 (CHART_COLORS_HEX)
- 버튼 다크모드 채도/대비 강화 (primary-600 기반)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 16:38:00 +09:00

98 lines
3.6 KiB
Markdown

# 디자인 리뷰 체크리스트
컴포넌트 구현 완료 후, 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: 통과 / 실패
```