- ExhibitionSchedulePage MiniCalendar: pass/receive holidays prop, apply is-holiday class + title/aria per date cell - schedule.css: neutral-200 border on kx-cal cells; is-holiday cells in error color - mobile.css: disabled CTA label neutral-500 (contrast fix) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| public | ||
| src | ||
| .env.example | ||
| .gitignore | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.d.ts | ||
| vite.config.js | ||
| vite.config.ts | ||
KINTEX AI 전시관리 — Frontend
React 18 + Vite 5 + TypeScript. 백엔드(Spring Boot :8080) 계약(_workspace/01_backend_contracts.md) 기반.
개발
npm install
npm run dev # Vite 개발 서버 :5173 (/api·/ws → :8080 프록시)
npm run typecheck # tsc -b (타입 체크)
npm run build # tsc -b && vite build
.env.example → .env 복사. VITE_BACKEND_ORIGIN으로 백엔드 오리진 지정(기본 http://localhost:8080).
구조
src/styles/tokens.css— 디자인 토큰 단일 출처(design.md §1). 하드코딩 금지, 이 변수만 참조.src/api/—client(JWT·봉투·오류코드),endpoints(계약 래퍼),types(응답 shape),websocket(STOMP RenderJob).src/store/authStore.ts— 인증/워크스페이스 상태(zustand).src/components/ui/— StatusBadge·DdayChip·AiLabel·Button·AiImage(워터마크 상시)·States.src/components/layout/AppShell.tsx— 인증 셸(사이드바+상단바).src/screens/login/— SCR-01 로그인·워크스페이스·초대(등록업체 차단).src/screens/floorplan/— SCR-03 배치 에디터(SVG 캔버스·AI 자동배치·검증).
원칙
- 백엔드 응답 shape과 정확히 일치. 불일치는
_workspace/02_frontend_progress.md에 기록. - AI 생성 이미지 워터마크·고지문 제거 불가. 접근성 WCAG AA.
- 캔버스 편집은 데스크톱 전용(모바일은 뷰어+승인).