{ "name": "Design Guidelines", "description": "UI/UX 디자인 가이드라인", "rules": { "colors": { "primary": { "main": "#1976d2", "light": "#42a5f5", "dark": "#1565c0" }, "secondary": { "main": "#9c27b0", "light": "#ba68c8", "dark": "#7b1fa2" }, "error": "#d32f2f", "warning": "#ed6c02", "info": "#0288d1", "success": "#2e7d32" }, "darkMode": { "colors": { "background": { "primary": "#121212", "secondary": "#1e1e1e", "paper": "#262626" }, "text": { "primary": "rgba(255, 255, 255, 0.87)", "secondary": "rgba(255, 255, 255, 0.6)", "disabled": "rgba(255, 255, 255, 0.38)" }, "action": { "active": "rgba(255, 255, 255, 0.7)", "hover": "rgba(255, 255, 255, 0.1)", "selected": "rgba(255, 255, 255, 0.08)" } }, "elevation": { "ambient": "rgba(0, 0, 0, 0.05)", "spotLight": "rgba(0, 0, 0, 0.2)" }, "implementation": { "strategy": "CSS 변수 기반 테마 전환", "mediaQuery": "@media (prefers-color-scheme: dark) { ... }", "userPreference": "localStorage 또는 쿠키에 저장" } }, "typography": { "fontFamily": { "primary": "Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Roboto, sans-serif", "monospace": "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace" }, "fontSizes": { "h1": "2.5rem", "h2": "2rem", "h3": "1.75rem", "h4": "1.5rem", "h5": "1.25rem", "h6": "1rem", "body": "1rem", "small": "0.875rem" }, "lineHeights": { "tight": 1.2, "normal": 1.5, "relaxed": 1.75 } }, "spacing": { "base": "8px", "multipliers": [0, 0.5, 1, 1.5, 2, 3, 4, 5, 6] }, "breakpoints": { "xs": "0px", "sm": "600px", "md": "900px", "lg": "1200px", "xl": "1536px" }, "responsiveDesign": { "approach": "모바일 우선(Mobile First) 디자인", "gridSystem": "CSS Grid 또는 Flexbox 기반 12-column 시스템", "mediaQueries": { "xs": "@media (min-width: 0px)", "sm": "@media (min-width: 600px)", "md": "@media (min-width: 900px)", "lg": "@media (min-width: 1200px)", "xl": "@media (min-width: 1536px)" }, "layoutPrinciples": [ "모바일에서는 단일 컬럼 레이아웃", "태블릿에서는 2-3 컬럼 레이아웃", "데스크톱에서는 다중 컬럼 레이아웃" ], "adaptiveUI": { "navigationPatterns": { "mobile": "햄버거 메뉴 또는 바텀 내비게이션", "desktop": "가로 메뉴 또는 사이드바" }, "touchTargets": "모바일에서 최소 44x44px 크기 확보", "fontSizing": "vw 또는 clamp() 함수를 사용한 반응형 폰트 크기" }, "images": { "srcset": "", "pictureElement": "..., ..." } }, "components": { "buttons": { "borderRadius": "4px", "padding": "8px 16px", "minHeight": "36px" }, "inputs": { "borderRadius": "4px", "padding": "8px 12px", "minHeight": "40px" }, "cards": { "borderRadius": "8px", "padding": "16px", "shadow": "0 2px 4px rgba(0,0,0,0.1)" } }, "animations": { "timing": { "veryFast": "100ms", "fast": "200ms", "normal": "300ms", "slow": "500ms" }, "easing": { "standard": "cubic-bezier(0.4, 0.0, 0.2, 1)", "decelerate": "cubic-bezier(0.0, 0.0, 0.2, 1)", "accelerate": "cubic-bezier(0.4, 0.0, 1, 1)" }, "transitions": { "hover": "background-color {timing} {easing}, color {timing} {easing}, transform {timing} {easing}", "pageTransition": "opacity {timing} {easing}, transform {timing} {easing}", "modalOpen": "opacity {timing} {easing}, transform {timing} {easing}" }, "motion": { "principles": [ "목적이 있는 애니메이션 사용", "부드럽고 자연스러운 움직임", "사용자 제어감 유지", "상태 변화의 명확한 시각화" ], "patterns": { "fadeIn": "opacity: 0 -> 1", "slideIn": "transform: translateY(20px) -> translateY(0)", "scale": "transform: scale(0.95) -> scale(1)", "contentReveal": "height: 0 -> auto, opacity: 0 -> 1" }, "reducedMotion": "@media (prefers-reduced-motion: reduce) { * { transition: none !important; } }" } }, "iconsAndImages": { "icons": { "system": "Material Icons, Feather Icons 등 일관된 아이콘 시스템 사용", "sizes": { "small": "16x16px", "medium": "24x24px", "large": "32x32px" }, "stroke": { "width": "1.5-2px", "linecap": "round", "linejoin": "round" }, "formats": ["SVG", "Icon Font"], "color": "현재 텍스트 색상 상속 또는 명시적 컬러 사용" }, "images": { "aspectRatios": { "standard": "16:9", "portrait": "3:4", "square": "1:1", "wide": "21:9" }, "quality": { "web": "JPEG 품질 80%, WebP 품질 85%", "thumbnail": "최적화된 저용량 이미지" }, "treatment": { "cornerRadius": "일관된 모서리 반경 적용", "shadow": "필요한 경우에만 미묘한 그림자 적용", "overlay": "텍스트 가독성을 위한 오버레이 적용 시 일관된 패턴 사용" }, "accessibility": { "altText": "모든 이미지에 설명적인 대체 텍스트 제공", "decorative": "장식 이미지는 alt=\"\" 사용" } }, "illustrations": { "style": "브랜드 아이덴티티와 일관된 일러스트레이션 스타일", "usage": "빈 상태, 오류 상태, 성공 상태 등 주요 UI 상태 표현에 활용", "principles": [ "단순하고 명확한 메시지 전달", "다양한 화면 크기에서 가독성 유지", "주변 UI 요소와의 조화" ] } }, "accessibility": { "colorContrast": "4.5:1", "focusVisible": true, "skipLinks": true, "ariaLabels": true } } }