>
)}
);
}
```
### Write 페이지 전체 구조
```tsx
import { PageLayout } from "./common/PageLayout";
import { PageHeader } from "./common/PageHeader";
import { Card, CardContent, CardHeader, CardTitle } from "./ui/card";
import { Button } from "./ui/button";
import { Input } from "./ui/input";
import { Label } from "./ui/label";
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "./ui/collapsible";
import { ChevronDown, ChevronUp, Save, FileEdit } from "lucide-react";
export function MyWritePage({ onSave, onCancel }) {
const [isBasicInfoOpen, setIsBasicInfoOpen] = useState(true);
return (
>
}
/>
{/* 접이식 섹션 */}
기본 정보
{isBasicInfoOpen ? (
) : (
)}
);
}
```
## 디자인 원칙
### 반응형 브레이크포인트
- **모바일**: `< 768px` - 카드 뷰, 단일 컬럼
- **태블릿**: `768px - 1024px` - 2-3 컬럼 그리드
- **데스크톱**: `> 1024px` - 테이블 뷰, 4 컬럼 그리드
### 간격 (Spacing)
**필수 규칙:**
- 모든 페이지는 `PageLayout`으로 감싸기 (자동으로 통일된 padding/spacing 적용)
- 페이지 padding: `p-4 md:p-6` (PageLayout 자동 적용)
- 섹션 간격: `space-y-4 md:space-y-6` (PageLayout 자동 적용)
- 그리드 간격: `gap-4`
- Card 내부 padding: `p-4 md:p-6`
- Table이 포함된 Card: `CardContent`에 `p-0` 사용 (테이블이 꽉 차도록)
### 색상 패턴
통계 카드 아이콘 색상:
- 파랑: `text-blue-600` - 전체/기본
- 초록: `text-green-600` - 성공/금일
- 주황: `text-orange-600` - 경고/이번주
- 보라: `text-purple-600` - 정보/평균
### 타이포그래피
**페이지 타이틀 구조 (필수 규칙):**
- ⛔ **절대 금지**: 직접 `
` 태그나 커스텀 제목 작성
- ✅ **필수 사용**: `PageHeader` 컴포넌트 사용
- PageHeader는 자동으로 올바른 타이포그래피 적용 (`text-xl md:text-2xl`)
**잘못된 예시 (사용 금지):**
```tsx
주문 관리
차량관리
```
**올바른 예시 (필수):**
```tsx
등록}
/>
```
**타이포그래피 규칙:**
- 페이지 제목: `text-xl md:text-2xl` (PageHeader가 자동 적용)
- 카드 제목: `text-base`
- 본문: `text-sm`
- 설명: `text-sm text-muted-foreground`
### 아이콘 크기
- 헤더 아이콘: `w-6 h-6`
- 버튼 아이콘: `w-4 h-4`
- 작은 아이콘: `w-3 h-3`
- 통계 아이콘: `w-8 h-8 md:w-10 md:h-10`
## 체크리스트
새 페이지를 만들 때 다음을 확인하세요:
### 필수 사항
- [ ] `PageLayout`으로 감싸기 (maxWidth는 특별한 경우가 아니면 기본값 "full" 사용)
- [ ] `PageHeader` 사용 (title, description, icon, actions) - **커스텀 h1 태그 절대 금지**
- [ ] 페이지 타이틀은 반드시 `PageHeader` 컴포넌트 사용 - `text-3xl`, `text-2xl md:text-3xl` 직접 사용 금지
- [ ] 통계가 필요하면 `StatCards` 사용
- [ ] 검색이 필요하면 `SearchFilter` 사용
- [ ] 빈 상태에 `EmptyState` 사용
### 반응형 디자인
- [ ] 데스크톱: `Card` + `Table` (테이블을 감싸는 Card만 표시)
- [ ] 모바일: `MobileCard` (md:hidden)
- [ ] 반응형 그리드: `grid-cols-1 md:grid-cols-2 lg:grid-cols-4`
### 레이아웃 규칙
- [ ] Table이 포함된 Card의 CardContent는 `p-0` 사용
- [ ] Dialog width: `max-w-[95vw] sm:max-w-lg md:max-w-2xl` 또는 `max-w-[95vw] sm:max-w-xl md:max-w-4xl`
- [ ] Dialog에 `DialogDescription` 포함
- [ ] 모든 액션 버튼에 아이콘 추가
- [ ] Card 내부 padding: `p-4 md:p-6` (Table이 있는 경우 제외)
## 디자인 시스템 통일 작업
### ✅ 완료된 페이지 (PageLayout + PageHeader 적용)
- `/components/VehicleManagement.tsx` - 차량관리
- `/components/EquipmentManagement.tsx` - 설비관리
- `/components/ItemManagement.tsx` - 품목관리
- `/components/OrderManagement.tsx` - 주문관리 ⭐ **NEW**
- `/components/QuoteManagement3List.tsx` - 견적관리 목록
- `/components/QuoteManagement3Write.tsx` - 견적관리 작성
### ⚠️ 업데이트 필요 페이지 (커스텀 h1 사용 중)
다음 페이지들은 아직 커스텀 `
` 또는 `
`를 사용하고 있어 `PageHeader` 컴포넌트로 변경이 필요합니다:
**품질관리:**
- (대부분 완료)
**전자결재:**
- `/components/ApprovalManagement.tsx` - 전자결재
**회계관리:**
- `/components/AccountingManagement.tsx` - 회계 관리
- `/components/ShippingManagement.tsx` - 출고관리
**인사관리:**
- `/components/HRManagement.tsx` - 인사관리
**시스템관리:**
- `/components/SystemManagement.tsx` - 시스템 관리
**자재관리:**
- `/components/MaterialManagement.tsx` - 자재 관리
**대시보드:**
- `/components/Dashboard.tsx` - CEO/생산관리자/작업자 대시보드
### 업데이트 방법
기존 커스텀 헤더 코드:
```tsx
주문 관리
고객 주문 접수 및 진행 상황 관리
```
변경 후 PageHeader 사용:
```tsx
import { PageHeader } from "./common/PageHeader";
import { ShoppingCart } from "lucide-react";
등록
}
/>
```
### 업데이트 체크리스트
각 페이지 업데이트 시 확인:
1. [ ] `PageLayout`으로 전체 페이지 감싸기
2. [ ] 커스텀 `
` 태그 제거
3. [ ] `PageHeader` 컴포넌트 import 및 사용
4. [ ] 적절한 lucide-react 아이콘 추가
5. [ ] actions prop에 버튼들 이동
6. [ ] description prop에 설명 추가
7. [ ] `text-3xl` 또는 `text-2xl md:text-3xl` 클래스 완전 제거
## 참고 파일
완벽하게 구현된 예시:
- `/components/VehicleManagement.tsx` - 차량관리 (PageLayout + PageHeader 완벽 구현)
- `/components/EquipmentManagement.tsx` - 설비관리 (PageLayout + PageHeader 완벽 구현)
- `/components/ItemManagement.tsx` - 품목관리 (PageLayout + PageHeader 완벽 구현)
- `/components/QuoteManagement3List.tsx` - 견적관리 목록
- `/components/QuoteManagement3Write.tsx` - 견적관리 작성
- `/components/common/` - 모든 공통 컴포넌트