# 관리자 페이지 스타일 가이드 적용 예시 ## 개요 사용자 관리 페이지를 예시로 shadcn/ui 스타일 가이드에 맞춰 재작성했습니다. 이 예시를 기준으로 다른 관리자 페이지들도 일관된 스타일로 통일할 수 있습니다. ## 적용된 주요 원칙 ### 1. Color System (색상 시스템) **CSS Variables 사용 (하드코딩된 색상 금지)** ```tsx // ❌ 잘못된 예시
// ✅ 올바른 예시
``` **적용 사례:** - 페이지 배경: `bg-background` - 카드 배경: `bg-card` - 보조 텍스트: `text-muted-foreground` - 주요 액션: `text-primary`, `border-primary` - 에러 메시지: `text-destructive`, `bg-destructive/10` ### 2. Typography (타이포그래피) **일관된 폰트 크기와 가중치** ```tsx // 페이지 제목

사용자 관리

// 섹션 제목

고급 검색 옵션

// 본문 텍스트

설명 텍스트

// 라벨 // 보조 텍스트

도움말

``` ### 3. Spacing System (간격) **일관된 간격 사용 (4px 기준)** ```tsx // 컴포넌트 간 간격
// 24px (페이지 레벨)
// 16px (섹션 레벨)
// 8px (필드 레벨) // 패딩
// 24px (카드)
// 16px (내부 섹션) // 갭
// 16px (flex/grid)
// 8px (버튼 그룹) ``` ### 4. Border & Radius (테두리 및 둥근 모서리) **표준 radius 사용** ```tsx // 카드/패널
// 입력 필드 // 버튼 // Secondary 액션 // Ghost 버튼 (아이콘 전용) ``` **크기 표준:** - `h-10`: 기본 버튼 (40px) - `h-9`: 작은 버튼 (36px) - `h-8`: 아이콘 버튼 (32px) ### 6. Input States (입력 필드 상태) **표준 Input 스타일** ```tsx // 기본 // 포커스 (자동 적용) // focus:ring-2 focus:ring-ring // 로딩/액티브 // 비활성화 ``` ### 7. Form Structure (폼 구조) **표준 필드 구조** ```tsx

도움말 텍스트

``` ### 8. Table Structure (테이블 구조) **표준 테이블 스타일** ```tsx
컬럼명 데이터
``` **높이 표준:** - 헤더: `h-12` (48px) - 데이터 행: `h-16` (64px) ### 9. Loading States (로딩 상태) **Skeleton UI** ```tsx
``` ### 10. Empty States (빈 상태) **표준 Empty State** ```tsx

등록된 데이터가 없습니다.

``` ### 11. Error States (에러 상태) **표준 에러 메시지** ```tsx

오류가 발생했습니다

{errorMessage}

``` ### 12. Responsive Design (반응형) **모바일 우선 접근** ```tsx // 레이아웃
// 그리드
// 텍스트

// 간격
``` ### 13. Accessibility (접근성) **필수 적용 사항** ```tsx // Label과 Input 연결 // 버튼에 aria-label // Switch에 aria-label ``` ## 페이지 구조 템플릿 ### Page Component ```tsx export default function AdminPage() { return (
{/* 페이지 헤더 */}

페이지 제목

페이지 설명

{/* 메인 컨텐츠 */}
); } ``` ### Toolbar Component ```tsx export function Toolbar() { return (
{/* 검색 영역 */}
{/* 검색 입력 */}
{/* 버튼 */}
{/* 액션 버튼 영역 */}
{count.toLocaleString()}
); } ``` ## 적용해야 할 다른 관리자 페이지 ### 우선순위 1 (핵심 페이지) - [ ] 메뉴 관리 (`/admin/menu`) - [ ] 공통코드 관리 (`/admin/commonCode`) - [ ] 회사 관리 (`/admin/company`) - [ ] 테이블 관리 (`/admin/tableMng`) ### 우선순위 2 (자주 사용하는 페이지) - [ ] 외부 연결 관리 (`/admin/external-connections`) - [ ] 외부 호출 설정 (`/admin/external-call-configs`) - [ ] 배치 관리 (`/admin/batch-management`) - [ ] 레이아웃 관리 (`/admin/layouts`) ### 우선순위 3 (기타 관리 페이지) - [ ] 템플릿 관리 (`/admin/templates`) - [ ] 표준 관리 (`/admin/standards`) - [ ] 다국어 관리 (`/admin/i18n`) - [ ] 수집 관리 (`/admin/collection-management`) ## 체크리스트 각 페이지 작업 시 다음을 확인하세요: ### 레이아웃 - [ ] `bg-background` 사용 (하드코딩된 색상 없음) - [ ] `container mx-auto space-y-6 p-6` 구조 - [ ] 페이지 헤더에 `border-b pb-4` ### 색상 - [ ] CSS Variables만 사용 (`bg-card`, `text-muted-foreground` 등) - [ ] `bg-gray-*`, `text-gray-*` 등 하드코딩 제거 ### 타이포그래피 - [ ] 페이지 제목: `text-3xl font-bold tracking-tight` - [ ] 섹션 제목: `text-sm font-semibold` - [ ] 본문: `text-sm` - [ ] 보조 텍스트: `text-xs text-muted-foreground` ### 간격 - [ ] 페이지 레벨: `space-y-6` - [ ] 섹션 레벨: `space-y-4` - [ ] 필드 레벨: `space-y-2` - [ ] 카드 패딩: `p-4` 또는 `p-6` ### 버튼 - [ ] 표준 variants 사용 (`default`, `outline`, `ghost`) - [ ] 표준 크기: `h-10` (기본), `h-9` (작음), `h-8` (아이콘) - [ ] 텍스트: `text-sm font-medium` - [ ] 아이콘 + 텍스트: `gap-2` ### 입력 필드 - [ ] 높이: `h-10` - [ ] 텍스트: `text-sm` - [ ] Label과 Input `htmlFor`/`id` 연결 - [ ] `space-y-2` 구조 ### 테이블 - [ ] `rounded-lg border bg-card shadow-sm` - [ ] 헤더: `h-12 text-sm font-semibold bg-muted/50` - [ ] 데이터 행: `h-16 text-sm` - [ ] Hover: `hover:bg-muted/50` ### 반응형 - [ ] 모바일 우선 디자인 - [ ] `sm:`, `md:`, `lg:` 브레이크포인트 사용 - [ ] `flex-col sm:flex-row` 패턴 ### 접근성 - [ ] Label `htmlFor` 속성 - [ ] Input `id` 속성 - [ ] 버튼 `aria-label` - [ ] Switch `aria-label` ## 마이그레이션 절차 1. **페이지 컴포넌트 수정** (`page.tsx`) - 레이아웃 구조 변경 - 색상 CSS Variables로 변경 - 페이지 헤더 표준화 2. **Toolbar 컴포넌트 수정** - 검색 영역 스타일 통일 - 버튼 스타일 표준화 - 반응형 레이아웃 적용 3. **Table 컴포넌트 수정** - 테이블 컨테이너 스타일 통일 - 헤더/데이터 행 높이 표준화 - 로딩/Empty State 표준화 4. **Form 컴포넌트 수정** (있는 경우) - 필드 구조 표준화 - 라벨과 입력 필드 연결 - 에러 메시지 스타일 통일 5. **Modal 컴포넌트 수정** (있는 경우) - Dialog 표준 패턴 적용 - 반응형 크기 (`max-w-[95vw] sm:max-w-[500px]`) - 버튼 스타일 표준화 6. **린트 에러 확인** ```bash # 수정한 파일들 확인 npm run lint ``` 7. **테스트** - 기능 동작 확인 - 반응형 확인 (모바일/태블릿/데스크톱) - 다크모드 확인 (있는 경우) ## 참고 파일 ### 완성된 예시 - `frontend/app/(main)/admin/userMng/page.tsx` - `frontend/components/admin/UserToolbar.tsx` - `frontend/components/admin/UserTable.tsx` - `frontend/components/admin/UserManagement.tsx` ### 스타일 가이드 - `.cursorrules` - 전체 스타일 규칙 - Section 1-21: 각 스타일 요소별 상세 가이드