@kood/claude-code 0.7.6 → 0.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +33 -31
- package/package.json +1 -1
- package/templates/.claude/skills/design/SKILL.md +199 -0
- package/templates/.claude/skills/design/references/accessibility.md +106 -0
- package/templates/.claude/skills/design/references/checklist.md +41 -0
- package/templates/.claude/skills/design/references/core-principles.md +66 -0
- package/templates/.claude/skills/design/references/global-uiux.md +216 -0
- package/templates/.claude/skills/design/references/korea-uiux.md +227 -0
- package/templates/.claude/skills/design/references/patterns.md +250 -0
- package/templates/.claude/skills/design/references/responsive.md +248 -0
- package/templates/.claude/skills/design/references/safe-area.md +202 -0
- package/templates/.claude/skills/design/references/systems.md +116 -0
- package/templates/.claude/skills/design/references/trends.md +75 -0
- package/templates/.claude/skills/global-uiux-design/AGENTS.md +0 -320
- package/templates/.claude/skills/global-uiux-design/SKILL.md +0 -1089
- package/templates/.claude/skills/global-uiux-design/references/accessibility.md +0 -401
- package/templates/.claude/skills/global-uiux-design/references/color-system.md +0 -275
- package/templates/.claude/skills/global-uiux-design/references/design-philosophy.md +0 -206
- package/templates/.claude/skills/global-uiux-design/references/design-systems.md +0 -446
- package/templates/.claude/skills/korea-uiux-design/AGENTS.md +0 -310
- package/templates/.claude/skills/korea-uiux-design/SKILL.md +0 -980
- package/templates/.claude/skills/korea-uiux-design/references/accessibility.md +0 -298
- package/templates/.claude/skills/korea-uiux-design/references/checklist.md +0 -107
- package/templates/.claude/skills/korea-uiux-design/references/color-system.md +0 -156
- package/templates/.claude/skills/korea-uiux-design/references/design-philosophy.md +0 -25
- package/templates/.claude/skills/korea-uiux-design/references/icon-guide.md +0 -180
- package/templates/.claude/skills/korea-uiux-design/references/micro-interactions.md +0 -259
- package/templates/.claude/skills/korea-uiux-design/references/responsive-patterns.md +0 -115
- package/templates/.claude/skills/korea-uiux-design/references/service-patterns.md +0 -206
- package/templates/.claude/skills/korea-uiux-design/references/state-patterns.md +0 -320
- package/templates/.claude/skills/korea-uiux-design/references/typography.md +0 -70
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
# 반응형 디자인 가이드 (2025-2026)
|
|
2
|
+
|
|
3
|
+
> 브레이크포인트, Container Queries, Fluid Typography 디자인 사양서
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. 브레이크포인트
|
|
8
|
+
|
|
9
|
+
### 표준 브레이크포인트
|
|
10
|
+
|
|
11
|
+
| 이름 | 너비 | 대상 기기 |
|
|
12
|
+
|------|------|----------|
|
|
13
|
+
| **xs** | 0-359px | 소형 폰 |
|
|
14
|
+
| **sm** | 360-639px | 일반 폰 |
|
|
15
|
+
| **md** | 640-767px | 대형 폰/소형 태블릿 |
|
|
16
|
+
| **lg** | 768-1023px | 태블릿 |
|
|
17
|
+
| **xl** | 1024-1279px | 소형 데스크톱/랩탑 |
|
|
18
|
+
| **2xl** | 1280-1535px | 데스크톱 |
|
|
19
|
+
| **3xl** | 1536px+ | 대형 데스크톱 |
|
|
20
|
+
|
|
21
|
+
### 디자인 권장 브레이크포인트
|
|
22
|
+
|
|
23
|
+
| 접근법 | 브레이크포인트 | 용도 |
|
|
24
|
+
|--------|--------------|------|
|
|
25
|
+
| **Mobile-First** | 360 → 768 → 1024 → 1440 | 일반적 |
|
|
26
|
+
| **Desktop-First** | 1440 → 1024 → 768 → 360 | 레거시 |
|
|
27
|
+
| **Content-First** | 콘텐츠 깨지는 지점 | 최적 |
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 2. Container Queries
|
|
32
|
+
|
|
33
|
+
### 컨테이너 사이즈
|
|
34
|
+
|
|
35
|
+
| 이름 | 최소 너비 | 용도 |
|
|
36
|
+
|------|----------|------|
|
|
37
|
+
| **@xs** | 160px | 작은 위젯 |
|
|
38
|
+
| **@sm** | 320px | 카드 내부 |
|
|
39
|
+
| **@md** | 448px | 중간 컨테이너 |
|
|
40
|
+
| **@lg** | 512px | 넓은 컨테이너 |
|
|
41
|
+
| **@xl** | 576px | 전체 섹션 |
|
|
42
|
+
| **@2xl** | 672px | 메인 콘텐츠 |
|
|
43
|
+
|
|
44
|
+
### Container Query 단위
|
|
45
|
+
|
|
46
|
+
| 단위 | 설명 | 사용 예시 |
|
|
47
|
+
|------|------|----------|
|
|
48
|
+
| **cqw** | 컨테이너 너비 1% | 폰트 크기 유동화 |
|
|
49
|
+
| **cqh** | 컨테이너 높이 1% | 높이 기반 레이아웃 |
|
|
50
|
+
| **cqi** | 인라인 축 1% | 반응형 패딩 |
|
|
51
|
+
| **cqb** | 블록 축 1% | 반응형 마진 |
|
|
52
|
+
| **cqmin** | min(cqi, cqb) | 최소값 기반 |
|
|
53
|
+
| **cqmax** | max(cqi, cqb) | 최대값 기반 |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 3. Fluid Typography
|
|
58
|
+
|
|
59
|
+
### 폰트 크기 스케일
|
|
60
|
+
|
|
61
|
+
| 역할 | 모바일 | 데스크톱 | Fluid 범위 |
|
|
62
|
+
|------|--------|----------|-----------|
|
|
63
|
+
| **Display** | 36px | 72px | 36-72px |
|
|
64
|
+
| **H1** | 30px | 48px | 30-48px |
|
|
65
|
+
| **H2** | 24px | 36px | 24-36px |
|
|
66
|
+
| **H3** | 20px | 24px | 20-24px |
|
|
67
|
+
| **Body** | 16px | 18px | 16-18px |
|
|
68
|
+
| **Small** | 14px | 14px | 고정 |
|
|
69
|
+
| **Caption** | 12px | 12px | 고정 |
|
|
70
|
+
|
|
71
|
+
### Fluid 계산 공식
|
|
72
|
+
|
|
73
|
+
| 뷰포트 범위 | 공식 |
|
|
74
|
+
|------------|------|
|
|
75
|
+
| **360-1440px** | `clamp(최소, 계산값, 최대)` |
|
|
76
|
+
| **선호값 계산** | `최소 + (최대-최소) × ((100vw - 360px) / (1440-360))` |
|
|
77
|
+
|
|
78
|
+
### Line Height 권장값
|
|
79
|
+
|
|
80
|
+
| 폰트 크기 | Line Height |
|
|
81
|
+
|----------|-------------|
|
|
82
|
+
| **12-14px** | 1.5-1.6 |
|
|
83
|
+
| **16-18px** | 1.5-1.7 |
|
|
84
|
+
| **20-24px** | 1.4-1.5 |
|
|
85
|
+
| **30px+** | 1.2-1.3 |
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## 4. 레이아웃 패턴
|
|
90
|
+
|
|
91
|
+
### 그리드 시스템
|
|
92
|
+
|
|
93
|
+
| 브레이크포인트 | 열 수 | 거터 | 마진 |
|
|
94
|
+
|---------------|------|------|------|
|
|
95
|
+
| **Mobile** | 4 | 16px | 16px |
|
|
96
|
+
| **Tablet** | 8 | 24px | 32px |
|
|
97
|
+
| **Desktop** | 12 | 24px | auto (max 1200px) |
|
|
98
|
+
|
|
99
|
+
### 컴포넌트별 열 점유
|
|
100
|
+
|
|
101
|
+
| 컴포넌트 | 모바일 | 태블릿 | 데스크톱 |
|
|
102
|
+
|---------|--------|--------|----------|
|
|
103
|
+
| **카드** | 4열 (100%) | 4열 (50%) | 3-4열 (25-33%) |
|
|
104
|
+
| **사이드바** | 숨김 | 2열 | 3열 (고정) |
|
|
105
|
+
| **콘텐츠** | 4열 | 6열 | 9열 |
|
|
106
|
+
|
|
107
|
+
### 스택 vs 나란히
|
|
108
|
+
|
|
109
|
+
| 상황 | 모바일 | 태블릿+ |
|
|
110
|
+
|------|--------|--------|
|
|
111
|
+
| **이미지+텍스트** | 세로 스택 | 나란히 (50:50) |
|
|
112
|
+
| **폼 필드** | 전체 너비 | 2열 또는 3열 |
|
|
113
|
+
| **카드 그리드** | 1열 | 2-4열 |
|
|
114
|
+
| **네비게이션** | 햄버거 메뉴 | 가로 메뉴 |
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## 5. 반응형 스페이싱
|
|
119
|
+
|
|
120
|
+
### 기본 스페이싱 스케일
|
|
121
|
+
|
|
122
|
+
| 토큰 | 모바일 | 태블릿 | 데스크톱 |
|
|
123
|
+
|------|--------|--------|----------|
|
|
124
|
+
| **xs** | 4px | 4px | 4px |
|
|
125
|
+
| **sm** | 8px | 8px | 8px |
|
|
126
|
+
| **md** | 16px | 20px | 24px |
|
|
127
|
+
| **lg** | 24px | 32px | 40px |
|
|
128
|
+
| **xl** | 32px | 48px | 64px |
|
|
129
|
+
| **2xl** | 48px | 64px | 96px |
|
|
130
|
+
|
|
131
|
+
### 섹션 간격
|
|
132
|
+
|
|
133
|
+
| 섹션 유형 | 모바일 | 데스크톱 |
|
|
134
|
+
|----------|--------|----------|
|
|
135
|
+
| **히어로 → 섹션** | 48px | 80px |
|
|
136
|
+
| **섹션 간** | 48px | 80-120px |
|
|
137
|
+
| **Footer 전** | 64px | 120px |
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## 6. 반응형 이미지
|
|
142
|
+
|
|
143
|
+
### 이미지 사이즈 전략
|
|
144
|
+
|
|
145
|
+
| 브레이크포인트 | 권장 너비 | 포맷 |
|
|
146
|
+
|---------------|----------|------|
|
|
147
|
+
| **Mobile** | 640w, 750w | WebP/AVIF |
|
|
148
|
+
| **Tablet** | 1080w | WebP/AVIF |
|
|
149
|
+
| **Desktop** | 1920w, 2560w | WebP/AVIF |
|
|
150
|
+
|
|
151
|
+
### Art Direction
|
|
152
|
+
|
|
153
|
+
| 화면 | 비율 | 포커스 |
|
|
154
|
+
|------|------|--------|
|
|
155
|
+
| **모바일** | 1:1 또는 4:5 | 중심 크롭 |
|
|
156
|
+
| **태블릿** | 4:3 | 중간 크롭 |
|
|
157
|
+
| **데스크톱** | 16:9 또는 21:9 | 전체 이미지 |
|
|
158
|
+
|
|
159
|
+
### 히어로 이미지 사이즈
|
|
160
|
+
|
|
161
|
+
| 기기 | 너비 | 높이 |
|
|
162
|
+
|------|------|------|
|
|
163
|
+
| **Mobile** | 750px | 1334px (100vh) |
|
|
164
|
+
| **Tablet** | 1536px | 1024px |
|
|
165
|
+
| **Desktop** | 1920px | 1080px |
|
|
166
|
+
| **Retina** | 2x 해상도 | 2x 해상도 |
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## 7. 터치 vs 마우스
|
|
171
|
+
|
|
172
|
+
### 인터랙션 차이
|
|
173
|
+
|
|
174
|
+
| 요소 | 터치 (모바일) | 마우스 (데스크톱) |
|
|
175
|
+
|------|-------------|------------------|
|
|
176
|
+
| **터치 타겟** | 44-48px 최소 | 24px 가능 |
|
|
177
|
+
| **호버 상태** | 없음 | 필수 |
|
|
178
|
+
| **드래그** | 스와이프 제스처 | 드래그 앤 드롭 |
|
|
179
|
+
| **툴팁** | 탭 앤 홀드 | 호버 |
|
|
180
|
+
|
|
181
|
+
### 네비게이션 변환
|
|
182
|
+
|
|
183
|
+
| 데스크톱 | 모바일 변환 |
|
|
184
|
+
|---------|------------|
|
|
185
|
+
| **가로 메뉴** | 햄버거 메뉴 |
|
|
186
|
+
| **드롭다운** | 전체 화면 드로어 |
|
|
187
|
+
| **사이드바** | 바텀 시트 또는 숨김 |
|
|
188
|
+
| **호버 메뉴** | 탭 메뉴 |
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## 8. 2025-2026 트렌드
|
|
193
|
+
|
|
194
|
+
### 새로운 디바이스 대응
|
|
195
|
+
|
|
196
|
+
| 디바이스 | 고려사항 |
|
|
197
|
+
|---------|---------|
|
|
198
|
+
| **Foldable** | 힌지 영역 피하기, 연속성 유지 |
|
|
199
|
+
| **Ultra-wide** | 최대 너비 제한, 다중 열 |
|
|
200
|
+
| **AR/VR** | 3D 공간 UI, 시선 기반 인터랙션 |
|
|
201
|
+
|
|
202
|
+
### 새로운 CSS 기능
|
|
203
|
+
|
|
204
|
+
| 기능 | 용도 |
|
|
205
|
+
|------|------|
|
|
206
|
+
| **Container Queries** | 컴포넌트 기반 반응형 |
|
|
207
|
+
| **:has()** | 부모 선택자 |
|
|
208
|
+
| **Subgrid** | 중첩 그리드 정렬 |
|
|
209
|
+
| **CSS Nesting** | 선택자 중첩 |
|
|
210
|
+
| **@layer** | 캐스케이드 레이어 |
|
|
211
|
+
|
|
212
|
+
### Intrinsic Design 원칙
|
|
213
|
+
|
|
214
|
+
| 원칙 | 설명 |
|
|
215
|
+
|------|------|
|
|
216
|
+
| **콘텐츠 기반** | 브레이크포인트가 아닌 콘텐츠에 따라 |
|
|
217
|
+
| **유동적 스케일** | 단계별이 아닌 연속적 변화 |
|
|
218
|
+
| **컴포넌트 독립** | 컨테이너 기반 자체 반응형 |
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## 체크리스트
|
|
223
|
+
|
|
224
|
+
### 설계 단계
|
|
225
|
+
- [ ] Mobile-First 접근
|
|
226
|
+
- [ ] 핵심 브레이크포인트 정의 (360, 768, 1024, 1440)
|
|
227
|
+
- [ ] Fluid Typography 적용
|
|
228
|
+
- [ ] Container Queries 고려
|
|
229
|
+
|
|
230
|
+
### 구현 단계
|
|
231
|
+
- [ ] 터치 타겟 44px 이상
|
|
232
|
+
- [ ] 이미지 srcset/sizes 설정
|
|
233
|
+
- [ ] 호버 상태 → 모바일 대체
|
|
234
|
+
- [ ] 가로/세로 모드 테스트
|
|
235
|
+
|
|
236
|
+
### 테스트 단계
|
|
237
|
+
- [ ] 실제 기기 테스트
|
|
238
|
+
- [ ] 느린 네트워크 테스트
|
|
239
|
+
- [ ] 다크 모드 테스트
|
|
240
|
+
- [ ] 접근성 테스트
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## 참고
|
|
245
|
+
|
|
246
|
+
- [Responsive Web Design Fundamentals](https://web.dev/responsive-web-design-basics/)
|
|
247
|
+
- [Container Queries Spec](https://www.w3.org/TR/css-contain-3/)
|
|
248
|
+
- [Utopia Fluid Type Calculator](https://utopia.fyi/)
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# Safe Area 디자인 가이드
|
|
2
|
+
|
|
3
|
+
> iOS, Android, Foldable 디바이스의 Safe Area 사양서
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. iOS Safe Area
|
|
8
|
+
|
|
9
|
+
### 기본 Insets
|
|
10
|
+
|
|
11
|
+
| 요소 | 사이즈 | 비고 |
|
|
12
|
+
|------|--------|------|
|
|
13
|
+
| **상단 (노치)** | 47-59pt | 기기별 상이 |
|
|
14
|
+
| **하단 (Home Indicator)** | 34pt | 홈 버튼 없는 기기 |
|
|
15
|
+
| **좌측 (가로)** | 44pt | 노치 회피 |
|
|
16
|
+
| **우측 (가로)** | 44pt | 노치 회피 |
|
|
17
|
+
|
|
18
|
+
### Dynamic Island
|
|
19
|
+
|
|
20
|
+
| 요소 | 사이즈 |
|
|
21
|
+
|------|--------|
|
|
22
|
+
| **높이** | 36px |
|
|
23
|
+
| **너비 (Compact)** | 126px |
|
|
24
|
+
| **너비 (Expanded)** | 최대 371px |
|
|
25
|
+
| **아이콘** | 24px |
|
|
26
|
+
| **텍스트** | 15pt, line-height 22pt |
|
|
27
|
+
|
|
28
|
+
**프레젠테이션 모드:**
|
|
29
|
+
- **Compact**: 기본 축소 (진행 중인 활동)
|
|
30
|
+
- **Minimal**: 최소화 (배경 활동)
|
|
31
|
+
- **Expanded**: 확장 (상세 정보)
|
|
32
|
+
|
|
33
|
+
### 디바이스별 Safe Area
|
|
34
|
+
|
|
35
|
+
| 디바이스 | 상단 | 하단 |
|
|
36
|
+
|---------|------|------|
|
|
37
|
+
| **iPhone 15 Pro** | 59pt | 34pt |
|
|
38
|
+
| **iPhone 15** | 59pt | 34pt |
|
|
39
|
+
| **iPhone SE** | 20pt | 0pt |
|
|
40
|
+
| **iPad Pro** | 24pt | 20pt |
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 2. Android Safe Area
|
|
45
|
+
|
|
46
|
+
### Display Cutout 유형
|
|
47
|
+
|
|
48
|
+
| 유형 | 설명 |
|
|
49
|
+
|------|------|
|
|
50
|
+
| **Notch** | 상단 중앙 노치 |
|
|
51
|
+
| **Punch-hole** | 카메라 구멍 (좌상단/중앙) |
|
|
52
|
+
| **Waterfall** | 양측면 곡면 |
|
|
53
|
+
|
|
54
|
+
### System Bars 높이
|
|
55
|
+
|
|
56
|
+
| 요소 | 사이즈 | 비고 |
|
|
57
|
+
|------|--------|------|
|
|
58
|
+
| **Status Bar** | 24-48dp | 기기별 상이 |
|
|
59
|
+
| **Navigation Bar** | 48dp | 3버튼 네비게이션 |
|
|
60
|
+
| **Gesture Bar** | 24dp | 제스처 네비게이션 |
|
|
61
|
+
|
|
62
|
+
### Edge-to-Edge (Android 15+)
|
|
63
|
+
|
|
64
|
+
| 항목 | 사양 |
|
|
65
|
+
|------|------|
|
|
66
|
+
| **기본 동작** | SDK 35+ 앱은 강제 Edge-to-Edge |
|
|
67
|
+
| **시스템 바** | 반투명, 콘텐츠 뒤로 렌더링 |
|
|
68
|
+
| **필수 처리** | WindowInsets로 패딩 적용 |
|
|
69
|
+
|
|
70
|
+
### 제스처 영역
|
|
71
|
+
|
|
72
|
+
| 영역 | 사이즈 | 용도 |
|
|
73
|
+
|------|--------|------|
|
|
74
|
+
| **좌측 엣지** | 20dp | 뒤로가기 제스처 |
|
|
75
|
+
| **우측 엣지** | 20dp | 뒤로가기 제스처 |
|
|
76
|
+
| **하단** | 24dp | 홈 제스처 |
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 3. Foldable 디바이스
|
|
81
|
+
|
|
82
|
+
### 힌지 영역
|
|
83
|
+
|
|
84
|
+
| 디바이스 | 힌지 너비 | 힌지 높이 |
|
|
85
|
+
|---------|----------|----------|
|
|
86
|
+
| **Galaxy Z Fold** | 0px (접힘) | 전체 높이 |
|
|
87
|
+
| **Pixel Fold** | 약 12dp | 전체 높이 |
|
|
88
|
+
|
|
89
|
+
### Flex Mode (반접힘)
|
|
90
|
+
|
|
91
|
+
| 영역 | 용도 |
|
|
92
|
+
|------|------|
|
|
93
|
+
| **상단 (경사)** | 비주얼 콘텐츠 (영상, 이미지) |
|
|
94
|
+
| **하단 (평면)** | 컨트롤 (버튼, 슬라이더) |
|
|
95
|
+
| **힌지 근처** | 인터랙티브 요소 배치 금지 |
|
|
96
|
+
|
|
97
|
+
### 화면 상태
|
|
98
|
+
|
|
99
|
+
| 상태 | 설명 |
|
|
100
|
+
|------|------|
|
|
101
|
+
| **FLAT** | 완전히 펼침 |
|
|
102
|
+
| **HALF_OPENED** | 반접힘 (Flex Mode) |
|
|
103
|
+
| **Tabletop** | 가로 반접힘 (힌지 가로) |
|
|
104
|
+
| **Book** | 세로 반접힘 (힌지 세로) |
|
|
105
|
+
|
|
106
|
+
### 앱 연속성 요구사항
|
|
107
|
+
|
|
108
|
+
| 항목 | 요구사항 |
|
|
109
|
+
|------|----------|
|
|
110
|
+
| **화면 전환** | 커버 ↔ 메인 중단 없이 |
|
|
111
|
+
| **스크롤 위치** | 전환 시 유지 |
|
|
112
|
+
| **키보드 상태** | 전환 시 유지 |
|
|
113
|
+
| **전체 화면** | 레터박스 금지 |
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 4. 크로스 플랫폼
|
|
118
|
+
|
|
119
|
+
### React Native
|
|
120
|
+
|
|
121
|
+
| 요소 | 사양 |
|
|
122
|
+
|------|------|
|
|
123
|
+
| **라이브러리** | react-native-safe-area-context |
|
|
124
|
+
| **Hook** | useSafeAreaInsets() |
|
|
125
|
+
| **컴포넌트** | SafeAreaView, SafeAreaProvider |
|
|
126
|
+
|
|
127
|
+
### Web/PWA
|
|
128
|
+
|
|
129
|
+
| CSS 변수 | 설명 |
|
|
130
|
+
|---------|------|
|
|
131
|
+
| **safe-area-inset-top** | 상단 안전 영역 |
|
|
132
|
+
| **safe-area-inset-right** | 우측 안전 영역 |
|
|
133
|
+
| **safe-area-inset-bottom** | 하단 안전 영역 |
|
|
134
|
+
| **safe-area-inset-left** | 좌측 안전 영역 |
|
|
135
|
+
|
|
136
|
+
**Viewport 설정:** `viewport-fit=cover` 필수
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 5. 디자인 가이드라인
|
|
141
|
+
|
|
142
|
+
### 콘텐츠 배치
|
|
143
|
+
|
|
144
|
+
| 영역 | 배치 가능 | 주의사항 |
|
|
145
|
+
|------|----------|---------|
|
|
146
|
+
| **Safe Area 내부** | 모든 인터랙티브 요소 | - |
|
|
147
|
+
| **Safe Area 외부** | 배경색, 장식 이미지 | 터치 불가 |
|
|
148
|
+
| **노치 영역** | 상태 바 정보만 | 커스텀 UI 금지 |
|
|
149
|
+
| **홈 인디케이터** | 비움 | 스와이프 영역 |
|
|
150
|
+
|
|
151
|
+
### 터치 타겟
|
|
152
|
+
|
|
153
|
+
| 항목 | 사양 |
|
|
154
|
+
|------|------|
|
|
155
|
+
| **Safe Area 내부** | 44x44pt (iOS), 48x48dp (Android) |
|
|
156
|
+
| **하단 CTA** | Home Indicator 위 최소 8pt 여유 |
|
|
157
|
+
| **노치 근처** | 터치 감도 낮음, 중요 버튼 배치 금지 |
|
|
158
|
+
|
|
159
|
+
### 가로 모드
|
|
160
|
+
|
|
161
|
+
| 항목 | 사양 |
|
|
162
|
+
|------|------|
|
|
163
|
+
| **좌우 Inset** | 44pt (노치 회피) |
|
|
164
|
+
| **컨텐츠 중앙** | 좌우 Safe Area 내 배치 |
|
|
165
|
+
| **풀스크린 미디어** | Safe Area 무시 가능 |
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## 6. 플랫폼별 체크리스트
|
|
170
|
+
|
|
171
|
+
### iOS
|
|
172
|
+
- [ ] safeAreaInsets 또는 safeAreaLayoutGuide 사용
|
|
173
|
+
- [ ] Home Indicator 영역 (34pt) 고려
|
|
174
|
+
- [ ] Dynamic Island 지원 시 Live Activities 통합
|
|
175
|
+
- [ ] 가로 모드 좌우 44pt 인셋 확인
|
|
176
|
+
|
|
177
|
+
### Android
|
|
178
|
+
- [ ] WindowInsetsCompat 사용 (하드코딩 금지)
|
|
179
|
+
- [ ] Edge-to-Edge 강제 적용 대응 (SDK 35+)
|
|
180
|
+
- [ ] Display Cutout 모드 설정
|
|
181
|
+
- [ ] 제스처 네비게이션 영역 고려
|
|
182
|
+
|
|
183
|
+
### Foldable
|
|
184
|
+
- [ ] WindowLayoutInfo 구독
|
|
185
|
+
- [ ] FoldingFeature.isSeparating 체크
|
|
186
|
+
- [ ] Tabletop/Book 자세별 UI 최적화
|
|
187
|
+
- [ ] 힌지 근처 중요 콘텐츠 배치 금지
|
|
188
|
+
|
|
189
|
+
### Web/PWA
|
|
190
|
+
- [ ] viewport-fit=cover 추가
|
|
191
|
+
- [ ] env(safe-area-inset-*) 사용
|
|
192
|
+
- [ ] Fallback 값 제공
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## 참고
|
|
197
|
+
|
|
198
|
+
- [Apple Developer: Safe Area](https://developer.apple.com/documentation/uikit/uiview/safeareainsets)
|
|
199
|
+
- [Android: Display Cutout](https://developer.android.com/develop/ui/views/layout/display-cutout)
|
|
200
|
+
- [Android: Edge-to-Edge](https://developer.android.com/develop/ui/views/layout/edge-to-edge)
|
|
201
|
+
- [Samsung: Foldable Design](https://developer.samsung.com/one-ui/largescreen-and-foldable/)
|
|
202
|
+
- [MDN: CSS env()](https://developer.mozilla.org/en-US/docs/Web/CSS/env)
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Design Systems
|
|
2
|
+
|
|
3
|
+
<typography>
|
|
4
|
+
|
|
5
|
+
## 타이포그래피
|
|
6
|
+
|
|
7
|
+
### Type Scale
|
|
8
|
+
|
|
9
|
+
| 용도 | 크기 | 클래스 | 사용처 |
|
|
10
|
+
|------|------|--------|--------|
|
|
11
|
+
| **Display** | 48-60px | `text-5xl sm:text-6xl` | 랜딩 페이지 히어로 |
|
|
12
|
+
| **H1** | 36px | `text-3xl` | 페이지 제목 |
|
|
13
|
+
| **H2** | 24px | `text-xl` | 섹션 제목 |
|
|
14
|
+
| **H3** | 18px | `text-lg` | 카드 제목 |
|
|
15
|
+
| **Body** | 16px | `text-base` | 본문 |
|
|
16
|
+
| **Small** | 14px | `text-sm` | 캡션, 레이블 |
|
|
17
|
+
|
|
18
|
+
### Font Stack
|
|
19
|
+
|
|
20
|
+
```css
|
|
21
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif;
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
</typography>
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
<color_system>
|
|
29
|
+
|
|
30
|
+
## 컬러 시스템
|
|
31
|
+
|
|
32
|
+
### 60-30-10 규칙
|
|
33
|
+
|
|
34
|
+
| 비율 | 색상 | 용도 |
|
|
35
|
+
|------|------|------|
|
|
36
|
+
| **60%** | Neutral | 배경, 텍스트 |
|
|
37
|
+
| **30%** | Secondary | 보조 요소 |
|
|
38
|
+
| **10%** | Primary | CTA, 강조 |
|
|
39
|
+
|
|
40
|
+
### 시맨틱 컬러
|
|
41
|
+
|
|
42
|
+
```tsx
|
|
43
|
+
{/* Success */}
|
|
44
|
+
<div className="bg-green-50 border-green-200 text-green-900" />
|
|
45
|
+
|
|
46
|
+
{/* Error */}
|
|
47
|
+
<div className="bg-red-50 border-red-200 text-red-900" />
|
|
48
|
+
|
|
49
|
+
{/* Warning */}
|
|
50
|
+
<div className="bg-yellow-50 border-yellow-200 text-yellow-900" />
|
|
51
|
+
|
|
52
|
+
{/* Info */}
|
|
53
|
+
<div className="bg-blue-50 border-blue-200 text-blue-900" />
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
</color_system>
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
<grid_system>
|
|
61
|
+
|
|
62
|
+
## 그리드 시스템
|
|
63
|
+
|
|
64
|
+
### 12열 그리드
|
|
65
|
+
|
|
66
|
+
```tsx
|
|
67
|
+
<div className="grid grid-cols-12 gap-6">
|
|
68
|
+
<div className="col-span-12 md:col-span-8">Main content</div>
|
|
69
|
+
<div className="col-span-12 md:col-span-4">Sidebar</div>
|
|
70
|
+
</div>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 간격 (8px 기본 단위)
|
|
74
|
+
|
|
75
|
+
| 크기 | px | 클래스 | 용도 |
|
|
76
|
+
|------|---|--------|------|
|
|
77
|
+
| **xs** | 4px | `gap-1` | 아이콘-텍스트 |
|
|
78
|
+
| **sm** | 8px | `gap-2` | 폼 레이블-입력 |
|
|
79
|
+
| **md** | 16px | `gap-4` | 카드 내부 |
|
|
80
|
+
| **lg** | 24px | `gap-6` | 섹션 간 |
|
|
81
|
+
| **xl** | 32px | `gap-8` | 페이지 여백 |
|
|
82
|
+
|
|
83
|
+
</grid_system>
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
<responsive_design>
|
|
88
|
+
|
|
89
|
+
## 반응형 디자인
|
|
90
|
+
|
|
91
|
+
### Breakpoints
|
|
92
|
+
|
|
93
|
+
| 이름 | 최소 너비 | 디바이스 |
|
|
94
|
+
|------|----------|---------|
|
|
95
|
+
| **sm** | 640px | 모바일 가로 |
|
|
96
|
+
| **md** | 768px | 태블릿 세로 |
|
|
97
|
+
| **lg** | 1024px | 태블릿 가로 |
|
|
98
|
+
| **xl** | 1280px | 데스크톱 |
|
|
99
|
+
| **2xl** | 1536px | 대형 데스크톱 |
|
|
100
|
+
|
|
101
|
+
### Mobile-First 패턴
|
|
102
|
+
|
|
103
|
+
```tsx
|
|
104
|
+
{/* 모바일: 1열, 태블릿: 2열, 데스크톱: 3열 */}
|
|
105
|
+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
106
|
+
{items.map(item => <Card key={item.id} {...item} />)}
|
|
107
|
+
</div>
|
|
108
|
+
|
|
109
|
+
{/* 모바일: 숨김, 데스크톱: 표시 */}
|
|
110
|
+
<aside className="hidden lg:block w-64 border-r" />
|
|
111
|
+
|
|
112
|
+
{/* 모바일: 표시, 데스크톱: 숨김 */}
|
|
113
|
+
<nav className="lg:hidden fixed bottom-0 inset-x-0 h-16 border-t" />
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
</responsive_design>
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# 2024-2026 Design Trends
|
|
2
|
+
|
|
3
|
+
<ai_integration>
|
|
4
|
+
|
|
5
|
+
## AI 통합 UI
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
{/* AI 어시스턴트 입력 */}
|
|
9
|
+
<div className="flex gap-3 p-4 border rounded-2xl">
|
|
10
|
+
<textarea
|
|
11
|
+
className="flex-1 resize-none focus:outline-none"
|
|
12
|
+
placeholder="Ask AI anything..."
|
|
13
|
+
/>
|
|
14
|
+
<button className="w-10 h-10 rounded-full bg-gradient-to-r from-purple-500 to-pink-500 text-white">
|
|
15
|
+
<svg className="w-5 h-5" />
|
|
16
|
+
</button>
|
|
17
|
+
</div>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
</ai_integration>
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
<micro_interactions>
|
|
25
|
+
|
|
26
|
+
## 마이크로인터랙션
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
<button className="group relative overflow-hidden">
|
|
30
|
+
<span className="relative z-10">Hover me</span>
|
|
31
|
+
<div className="absolute inset-0 bg-gradient-to-r from-blue-500 to-purple-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300" />
|
|
32
|
+
</button>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
</micro_interactions>
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
<dark_mode>
|
|
40
|
+
|
|
41
|
+
## 다크모드
|
|
42
|
+
|
|
43
|
+
```tsx
|
|
44
|
+
<div className="bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100">
|
|
45
|
+
<button className="bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700">
|
|
46
|
+
Theme toggle
|
|
47
|
+
</button>
|
|
48
|
+
</div>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
</dark_mode>
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
<spatial_design>
|
|
56
|
+
|
|
57
|
+
## 3D & 공간 디자인
|
|
58
|
+
|
|
59
|
+
### Glassmorphism
|
|
60
|
+
|
|
61
|
+
```tsx
|
|
62
|
+
<div className="backdrop-blur-lg bg-white/10 border border-white/20 rounded-2xl p-6">
|
|
63
|
+
<h3 className="font-semibold">Glass card</h3>
|
|
64
|
+
</div>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Neumorphism
|
|
68
|
+
|
|
69
|
+
```tsx
|
|
70
|
+
<div className="bg-gray-100 rounded-2xl p-6 shadow-[8px_8px_16px_#bebebe,-8px_-8px_16px_#ffffff]">
|
|
71
|
+
<h3 className="font-semibold">Neomorphic card</h3>
|
|
72
|
+
</div>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
</spatial_design>
|