Agents: - itsm-ui-refactor: dark theme CSS token overhaul (navy+cyan) - manager-ui-refactor: light theme React component styling Skills: - guardia-design-orchestrator: parallel pipeline orchestrator - itsm-design-overhaul: style.css token/sidebar/card/button/table guide - manager-design-overhaul: Sidebar/GNB/StatCard/DataTable/Dashboard guide Reference: C:/GUARDiA/screenshot (Variant design, #003366/#005A8C/#00A0C8) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3.6 KiB
3.6 KiB
| name | description |
|---|---|
| manager-design-overhaul | GUARDiA Manager UI(manager/frontend/src/) Variant 스타일 개편 스킬. C:/GUARDiA/screenshot 기준 라이트 테마 + 네이비/시안 Variant 색상 적용. 다음 상황에서 반드시 사용: (1) 'Manager 디자인 바꿔줘', 'Manager UI 개편'; (2) Sidebar·StatCard·DataTable 스타일 변경; (3) Dashboard 레이아웃 개선; (4) 다시 실행, 업데이트, 보완. |
GUARDiA Manager UI 개편 스킬
레퍼런스
C:\GUARDiA\screenshot\— Variant 디자인 스크린샷- 핵심: screenshot9(서비스카드 3×2), screenshot10(화이트헤더+히어로), screenshot11(파트너바+섹션)
- 적용 위치:
manager/frontend/src/
글로벌 CSS 변수 (App.tsx 또는 global.css)
:root {
--m-navy: #003366; /* 딥네이비 */
--m-blue: #005A8C; /* 미드블루 */
--m-cyan: #00A0C8; /* 시안 포인트 */
--m-cyan-lt: #E8F7FB; /* 연시안 배경 */
--m-blue-lt: #E8F0F8; /* 연파랑 배경 */
--m-bg: #F8FAFC; /* 페이지 배경 */
--m-card: #FFFFFF; /* 카드 배경 */
--m-border: #E2E8F0; /* 테두리 */
--m-text: #1E293B; /* 메인 텍스트 */
--m-muted: #64748B; /* 보조 텍스트 */
--m-shadow: 0 4px 12px rgba(0,51,102,.08);
--m-radius: 12px;
}
Sidebar.tsx 개편
// 활성 메뉴 스타일 (CSS-in-JS)
const activeStyle = {
background: 'var(--m-blue-lt)',
color: 'var(--m-navy)',
borderLeft: '3px solid var(--m-cyan)',
fontWeight: 700,
};
const hoverStyle = {
background: 'var(--m-blue-lt)',
color: 'var(--m-navy)',
};
// 섹션 헤더
const sectionHeader = {
fontSize: 10, fontWeight: 700,
letterSpacing: '.1em', textTransform: 'uppercase',
color: 'var(--m-cyan)', padding: '12px 16px 4px',
};
StatCard.tsx 개편 (screenshot9 카드 스타일)
// Variant 서비스 카드 패턴 적용
const cardStyle = {
background: '#fff',
borderRadius: 'var(--m-radius)',
border: '1px solid var(--m-border)',
boxShadow: 'var(--m-shadow)',
padding: '24px',
borderTop: '3px solid var(--m-cyan)', // 상단 시안 바
transition: 'all .25s',
};
// 아이콘 박스 (screenshot9 연파랑 박스)
const iconBoxStyle = {
width: 52, height: 52,
background: 'var(--m-blue-lt)',
borderRadius: 10,
display: 'flex', alignItems: 'center', justifyContent: 'center',
marginBottom: 16,
};
DataTable.tsx 개편
// 헤더 스타일
const thStyle = {
background: 'var(--m-navy)',
color: 'rgba(255,255,255,.85)',
fontSize: 11, fontWeight: 700,
letterSpacing: '.06em', textTransform: 'uppercase',
padding: '10px 14px',
};
// 행 호버
const trHoverStyle = { background: 'var(--m-blue-lt)' };
// 페이지네이션 활성
const pageActivStyle = {
background: 'var(--m-cyan)', color: '#fff',
borderRadius: 6, fontWeight: 700,
};
GNB.tsx 개편
// 화이트 헤더 (screenshot10 패턴)
const gnbStyle = {
background: '#fff',
borderBottom: '1px solid var(--m-border)',
boxShadow: '0 1px 8px rgba(0,51,102,.08)',
};
// 브랜드 텍스트
const brandStyle = {
color: 'var(--m-navy)', fontWeight: 800, fontSize: 16,
};
Dashboard.tsx 레이아웃
// 3열 StatCard 그리드
<div style={{ display:'grid', gridTemplateColumns:'repeat(3,1fr)', gap:20, marginBottom:28 }}>
{/* StatCards */}
</div>
// 차트 카드
<div style={{
background:'#fff', borderRadius:'var(--m-radius)',
border:'1px solid var(--m-border)', boxShadow:'var(--m-shadow)',
padding:24,
}}>
배포 방법
cd manager/frontend && npm run build
# 빌드 결과를 /var/www/manager/에 복사 후 재시작