@kood/claude-code 0.4.0 → 0.5.0
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 +53 -7
- package/package.json +2 -1
- package/templates/.claude/PARALLEL_AGENTS.md +737 -0
- package/templates/.claude/agents/analyst.md +416 -0
- package/templates/.claude/agents/architect.md +569 -0
- package/templates/.claude/agents/code-reviewer.md +132 -133
- package/templates/.claude/agents/dependency-manager.md +93 -94
- package/templates/.claude/agents/deployment-validator.md +64 -65
- package/templates/.claude/agents/designer.md +655 -0
- package/templates/.claude/agents/document-writer.md +500 -0
- package/templates/.claude/agents/explore.md +499 -0
- package/templates/.claude/agents/git-operator.md +74 -75
- package/templates/.claude/agents/implementation-executor.md +138 -109
- package/templates/.claude/agents/ko-to-en-translator.md +18 -22
- package/templates/.claude/agents/lint-fixer.md +250 -93
- package/templates/.claude/agents/planner.md +356 -0
- package/templates/.claude/agents/refactor-advisor.md +135 -136
- package/templates/.claude/commands/bug-fix.md +296 -207
- package/templates/.claude/commands/git-all.md +199 -46
- package/templates/.claude/commands/git-session.md +113 -57
- package/templates/.claude/commands/lint-fix.md +219 -153
- package/templates/.claude/commands/lint-init.md +113 -76
- package/templates/.claude/commands/pre-deploy.md +190 -124
- package/templates/.claude/commands/refactor.md +407 -162
- package/templates/.claude/commands/version-update.md +138 -37
- package/templates/.claude/instructions/context-engineering/ANTHROPIC_CONTEXT_ENGINEERING.md +178 -0
- package/templates/.claude/instructions/context-engineering/references/claude-4x.md +215 -0
- package/templates/.claude/instructions/context-engineering/references/core-principles.md +137 -0
- package/templates/.claude/instructions/context-engineering/references/examples.md +351 -0
- package/templates/.claude/instructions/context-engineering/references/techniques.md +162 -0
- package/templates/.claude/instructions/parallel-agent-execution.md +874 -0
- package/templates/.claude/skills/docs-creator/AGENTS.md +238 -0
- package/templates/.claude/{commands/docs-creator.md → skills/docs-creator/SKILL.md} +61 -75
- package/templates/.claude/skills/docs-refactor/AGENTS.md +270 -0
- package/templates/.claude/{commands/docs-refactor.md → skills/docs-refactor/SKILL.md} +30 -44
- package/templates/.claude/skills/execute/SKILL.md +451 -0
- package/templates/.claude/skills/figma-to-code/AGENTS.md +287 -0
- package/templates/.claude/skills/figma-to-code/SKILL.md +225 -225
- package/templates/.claude/skills/figma-to-code/references/design-tokens.md +75 -73
- package/templates/.claude/skills/figma-to-code/references/figma-mcp-tools.md +73 -73
- package/templates/.claude/skills/figma-to-code/references/layout-mapping.md +104 -104
- package/templates/.claude/skills/figma-to-code/references/responsive-design.md +99 -99
- package/templates/.claude/skills/figma-to-code/references/verification.md +91 -91
- package/templates/.claude/skills/global-uiux-design/AGENTS.md +317 -0
- package/templates/.claude/skills/global-uiux-design/SKILL.md +738 -0
- package/templates/.claude/skills/global-uiux-design/references/accessibility.md +401 -0
- package/templates/.claude/skills/global-uiux-design/references/color-system.md +275 -0
- package/templates/.claude/skills/global-uiux-design/references/design-philosophy.md +206 -0
- package/templates/.claude/skills/global-uiux-design/references/design-systems.md +446 -0
- package/templates/.claude/skills/korea-uiux-design/AGENTS.md +307 -0
- package/templates/.claude/skills/korea-uiux-design/SKILL.md +170 -0
- package/templates/.claude/skills/nextjs-react-best-practices/AGENTS.md +95 -116
- package/templates/.claude/skills/nextjs-react-best-practices/SKILL.md +134 -152
- package/templates/.claude/skills/nextjs-react-best-practices/rules/advanced-event-handler-refs.md +6 -6
- package/templates/.claude/skills/nextjs-react-best-practices/rules/advanced-use-latest.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-api-routes.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-defer-await.md +22 -22
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-dependencies.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-parallel.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-suspense-boundaries.md +21 -21
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-barrel-imports.md +18 -18
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-conditional.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-defer-third-party.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-dynamic-imports.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-preload.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/client-event-listeners.md +9 -9
- package/templates/.claude/skills/nextjs-react-best-practices/rules/client-swr-dedup.md +7 -7
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-batch-dom-css.md +13 -13
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-cache-function-results.md +14 -14
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-cache-property-access.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-cache-storage.md +10 -10
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-combine-iterations.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-early-exit.md +7 -7
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-hoist-regexp.md +6 -6
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-index-maps.md +6 -6
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-length-check-first.md +14 -14
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-min-max-loop.md +16 -16
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-set-map-lookups.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-tosorted-immutable.md +17 -17
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-activity.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-animate-svg-wrapper.md +11 -11
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-conditional-render.md +8 -8
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-content-visibility.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-hoist-jsx.md +6 -6
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-hydration-no-flicker.md +14 -14
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-svg-precision.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-defer-reads.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-dependencies.md +7 -7
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-derived-state.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-functional-setstate.md +34 -34
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-lazy-state-init.md +15 -15
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-memo.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-transitions.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-after-nonblocking.md +24 -24
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-cache-lru.md +10 -10
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-cache-react.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-parallel-fetching.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-serialization.md +6 -6
- package/templates/.claude/skills/plan/SKILL.md +594 -0
- package/templates/.claude/skills/prd/SKILL.md +496 -0
- package/templates/.claude/skills/ralph/AGENTS.md +393 -0
- package/templates/.claude/skills/ralph/SKILL.md +1035 -0
- package/templates/.claude/skills/tanstack-start-react-best-practices/AGENTS.md +100 -121
- package/templates/.claude/skills/tanstack-start-react-best-practices/SKILL.md +139 -157
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-defer-await.md +22 -22
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-dependencies.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-loader.md +7 -7
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-parallel.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-barrel-imports.md +18 -18
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-conditional.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-defer-third-party.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-lazy-routes.md +12 -12
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-preload.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-event-listeners.md +9 -9
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-tanstack-query.md +12 -12
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-batch-dom-css.md +13 -13
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-function-results.md +14 -14
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-property-access.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-storage.md +10 -10
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-combine-iterations.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-early-exit.md +7 -7
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-hoist-regexp.md +6 -6
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-index-maps.md +6 -6
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-length-check-first.md +14 -14
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-min-max-loop.md +16 -16
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-set-map-lookups.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-tosorted-immutable.md +17 -17
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-animate-svg-wrapper.md +11 -11
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-conditional-render.md +8 -8
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-content-visibility.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-hoist-jsx.md +6 -6
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-svg-precision.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-defer-reads.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-dependencies.md +7 -7
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-derived-state.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-functional-setstate.md +34 -34
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-lazy-state-init.md +15 -15
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-memo.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-transitions.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-cache-lru.md +12 -12
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-deferred-data.md +14 -14
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-parallel-fetching.md +9 -9
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-serialization.md +6 -6
- package/templates/.claude/commands/agent-creator.md +0 -370
- package/templates/.claude/commands/command-creator.md +0 -524
- package/templates/.claude/commands/execute.md +0 -469
- package/templates/.claude/commands/git.md +0 -98
- package/templates/.claude/commands/plan.md +0 -531
- package/templates/.claude/commands/prd.md +0 -629
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 반응형 디자인 구현 가이드
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Figma 디자인을 모든 디바이스에서 100% 정확하게 구현하는 가이드.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## 브레이크포인트
|
|
8
8
|
|
|
9
|
-
###
|
|
9
|
+
### 표준 브레이크포인트
|
|
10
10
|
|
|
11
|
-
|
|
|
12
|
-
|
|
13
|
-
| **Mobile** | 320px ~ 767px | (
|
|
11
|
+
| 디바이스 | 범위 | Tailwind 접두사 |
|
|
12
|
+
|---------|------|----------------|
|
|
13
|
+
| **Mobile** | 320px ~ 767px | (기본) |
|
|
14
14
|
| **Tablet** | 768px ~ 1023px | `md:` |
|
|
15
15
|
| **Desktop** | 1024px+ | `lg:` |
|
|
16
16
|
|
|
17
|
-
### Tailwind v4
|
|
17
|
+
### Tailwind v4 미디어 쿼리
|
|
18
18
|
|
|
19
19
|
```css
|
|
20
20
|
/* globals.css */
|
|
21
21
|
@import "tailwindcss";
|
|
22
22
|
|
|
23
23
|
@theme {
|
|
24
|
-
/*
|
|
24
|
+
/* 커스텀 브레이크포인트 (필요시) */
|
|
25
25
|
--breakpoint-mobile: 320px;
|
|
26
26
|
--breakpoint-tablet: 768px;
|
|
27
27
|
--breakpoint-desktop: 1024px;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
/*
|
|
30
|
+
/* 또는 CSS 미디어 쿼리 */
|
|
31
31
|
@media (min-width: 768px) {
|
|
32
32
|
/* Tablet */
|
|
33
33
|
}
|
|
@@ -39,30 +39,30 @@ Guide for implementing Figma designs 100% accurately across all devices.
|
|
|
39
39
|
|
|
40
40
|
---
|
|
41
41
|
|
|
42
|
-
## Figma Constraints → CSS
|
|
42
|
+
## Figma Constraints → CSS 매핑
|
|
43
43
|
|
|
44
44
|
### Horizontal Constraints
|
|
45
45
|
|
|
46
|
-
| Figma | CSS |
|
|
47
|
-
|
|
48
|
-
| **Left** | `justify-self: start` |
|
|
49
|
-
| **Right** | `justify-self: end` |
|
|
50
|
-
| **Left + Right** | `width: 100%` |
|
|
51
|
-
| **Center** | `margin: 0 auto` |
|
|
52
|
-
| **Scale** | `width: 50%` |
|
|
46
|
+
| Figma | CSS | 설명 |
|
|
47
|
+
|-------|-----|------|
|
|
48
|
+
| **Left** | `justify-self: start` | 왼쪽 고정 |
|
|
49
|
+
| **Right** | `justify-self: end` | 오른쪽 고정 |
|
|
50
|
+
| **Left + Right** | `width: 100%` | 부모 너비 채움 |
|
|
51
|
+
| **Center** | `margin: 0 auto` | 중앙 정렬 |
|
|
52
|
+
| **Scale** | `width: 50%` | 비율 유지 |
|
|
53
53
|
|
|
54
54
|
### Vertical Constraints
|
|
55
55
|
|
|
56
|
-
| Figma | CSS |
|
|
57
|
-
|
|
58
|
-
| **Top** | `align-self: start` |
|
|
59
|
-
| **Bottom** | `align-self: end` |
|
|
60
|
-
| **Top + Bottom** | `height: 100%` |
|
|
61
|
-
| **Center** | `margin: auto 0` |
|
|
56
|
+
| Figma | CSS | 설명 |
|
|
57
|
+
|-------|-----|------|
|
|
58
|
+
| **Top** | `align-self: start` | 위 고정 |
|
|
59
|
+
| **Bottom** | `align-self: end` | 아래 고정 |
|
|
60
|
+
| **Top + Bottom** | `height: 100%` | 부모 높이 채움 |
|
|
61
|
+
| **Center** | `margin: auto 0` | 세로 중앙 |
|
|
62
62
|
|
|
63
63
|
---
|
|
64
64
|
|
|
65
|
-
##
|
|
65
|
+
## 레이아웃 변화 패턴
|
|
66
66
|
|
|
67
67
|
### Grid → List (Desktop → Mobile)
|
|
68
68
|
|
|
@@ -88,7 +88,7 @@ Guide for implementing Figma designs 100% accurately across all devices.
|
|
|
88
88
|
|
|
89
89
|
### Horizontal → Vertical (Desktop → Mobile)
|
|
90
90
|
|
|
91
|
-
**Desktop:
|
|
91
|
+
**Desktop: 가로 정렬**
|
|
92
92
|
```tsx
|
|
93
93
|
<div className="flex flex-col lg:flex-row gap-4 lg:gap-8">
|
|
94
94
|
<div className="flex-1">Left Content</div>
|
|
@@ -96,19 +96,19 @@ Guide for implementing Figma designs 100% accurately across all devices.
|
|
|
96
96
|
</div>
|
|
97
97
|
```
|
|
98
98
|
|
|
99
|
-
**Mobile:
|
|
100
|
-
- `flex-col` (
|
|
99
|
+
**Mobile: 세로 정렬**
|
|
100
|
+
- `flex-col` (기본)
|
|
101
101
|
- `lg:flex-row` (Desktop)
|
|
102
102
|
|
|
103
|
-
###
|
|
103
|
+
### 숨김/표시
|
|
104
104
|
|
|
105
105
|
```tsx
|
|
106
|
-
{/*
|
|
106
|
+
{/* Mobile만 표시 */}
|
|
107
107
|
<nav className="lg:hidden">
|
|
108
108
|
Mobile Menu
|
|
109
109
|
</nav>
|
|
110
110
|
|
|
111
|
-
{/*
|
|
111
|
+
{/* Desktop만 표시 */}
|
|
112
112
|
<nav className="hidden lg:block">
|
|
113
113
|
Desktop Menu
|
|
114
114
|
</nav>
|
|
@@ -116,38 +116,38 @@ Guide for implementing Figma designs 100% accurately across all devices.
|
|
|
116
116
|
|
|
117
117
|
---
|
|
118
118
|
|
|
119
|
-
##
|
|
119
|
+
## 폰트 크기 반응형
|
|
120
120
|
|
|
121
|
-
###
|
|
121
|
+
### 방법 1: Tailwind 반응형 클래스
|
|
122
122
|
|
|
123
123
|
```tsx
|
|
124
124
|
<h1 className="text-[24px] md:text-[32px] lg:text-[40px]">
|
|
125
|
-
|
|
125
|
+
제목
|
|
126
126
|
</h1>
|
|
127
127
|
```
|
|
128
128
|
|
|
129
|
-
###
|
|
129
|
+
### 방법 2: clamp() (권장)
|
|
130
130
|
|
|
131
131
|
```tsx
|
|
132
132
|
<h1 className="text-[clamp(24px,5vw,40px)]">
|
|
133
|
-
|
|
133
|
+
제목
|
|
134
134
|
</h1>
|
|
135
135
|
```
|
|
136
136
|
|
|
137
|
-
**clamp(
|
|
138
|
-
-
|
|
139
|
-
-
|
|
140
|
-
-
|
|
137
|
+
**clamp(최소, 선호, 최대):**
|
|
138
|
+
- 최소: 320px에서 크기
|
|
139
|
+
- 선호: 뷰포트 기반 크기
|
|
140
|
+
- 최대: 1920px에서 크기
|
|
141
141
|
|
|
142
142
|
---
|
|
143
143
|
|
|
144
|
-
##
|
|
144
|
+
## 간격 반응형
|
|
145
145
|
|
|
146
146
|
### Padding
|
|
147
147
|
|
|
148
148
|
```tsx
|
|
149
149
|
<div className="p-[16px] md:p-[24px] lg:p-[32px]">
|
|
150
|
-
|
|
150
|
+
콘텐츠
|
|
151
151
|
</div>
|
|
152
152
|
```
|
|
153
153
|
|
|
@@ -162,9 +162,9 @@ Guide for implementing Figma designs 100% accurately across all devices.
|
|
|
162
162
|
|
|
163
163
|
---
|
|
164
164
|
|
|
165
|
-
##
|
|
165
|
+
## 반응형 이미지
|
|
166
166
|
|
|
167
|
-
###
|
|
167
|
+
### 방법 1: <picture> 태그
|
|
168
168
|
|
|
169
169
|
```tsx
|
|
170
170
|
<picture>
|
|
@@ -187,7 +187,7 @@ Guide for implementing Figma designs 100% accurately across all devices.
|
|
|
187
187
|
</picture>
|
|
188
188
|
```
|
|
189
189
|
|
|
190
|
-
###
|
|
190
|
+
### 방법 2: srcSet
|
|
191
191
|
|
|
192
192
|
```tsx
|
|
193
193
|
<img
|
|
@@ -202,10 +202,10 @@ Guide for implementing Figma designs 100% accurately across all devices.
|
|
|
202
202
|
/>
|
|
203
203
|
```
|
|
204
204
|
|
|
205
|
-
###
|
|
205
|
+
### 방법 3: Tailwind 반응형 클래스
|
|
206
206
|
|
|
207
207
|
```tsx
|
|
208
|
-
{/* Mobile:
|
|
208
|
+
{/* Mobile: 세로, Desktop: 가로 */}
|
|
209
209
|
<img
|
|
210
210
|
src="/images/hero/banner.webp"
|
|
211
211
|
alt="Hero"
|
|
@@ -215,28 +215,28 @@ Guide for implementing Figma designs 100% accurately across all devices.
|
|
|
215
215
|
|
|
216
216
|
---
|
|
217
217
|
|
|
218
|
-
##
|
|
218
|
+
## 컨테이너 반응형
|
|
219
219
|
|
|
220
220
|
### Max Width
|
|
221
221
|
|
|
222
222
|
```tsx
|
|
223
223
|
<div className="max-w-[375px] md:max-w-[768px] lg:max-w-[1200px] mx-auto px-4 md:px-6 lg:px-8">
|
|
224
|
-
|
|
224
|
+
콘텐츠
|
|
225
225
|
</div>
|
|
226
226
|
```
|
|
227
227
|
|
|
228
228
|
### Full Width
|
|
229
229
|
|
|
230
230
|
```tsx
|
|
231
|
-
{/* Mobile: full, Desktop:
|
|
231
|
+
{/* Mobile: full, Desktop: 제한 */}
|
|
232
232
|
<div className="w-full lg:max-w-[1200px] lg:mx-auto">
|
|
233
|
-
|
|
233
|
+
콘텐츠
|
|
234
234
|
</div>
|
|
235
235
|
```
|
|
236
236
|
|
|
237
237
|
---
|
|
238
238
|
|
|
239
|
-
##
|
|
239
|
+
## 반응형 네비게이션
|
|
240
240
|
|
|
241
241
|
### Hamburger Menu (Mobile)
|
|
242
242
|
|
|
@@ -257,16 +257,16 @@ return (
|
|
|
257
257
|
{isOpen && (
|
|
258
258
|
<nav className="lg:hidden fixed inset-0 bg-white z-50">
|
|
259
259
|
<ul>
|
|
260
|
-
<li
|
|
261
|
-
<li
|
|
260
|
+
<li>메뉴 1</li>
|
|
261
|
+
<li>메뉴 2</li>
|
|
262
262
|
</ul>
|
|
263
263
|
</nav>
|
|
264
264
|
)}
|
|
265
265
|
|
|
266
266
|
{/* Desktop Menu */}
|
|
267
267
|
<nav className="hidden lg:flex gap-8">
|
|
268
|
-
<a href="/"
|
|
269
|
-
<a href="/"
|
|
268
|
+
<a href="/">메뉴 1</a>
|
|
269
|
+
<a href="/">메뉴 2</a>
|
|
270
270
|
</nav>
|
|
271
271
|
</header>
|
|
272
272
|
)
|
|
@@ -274,90 +274,90 @@ return (
|
|
|
274
274
|
|
|
275
275
|
---
|
|
276
276
|
|
|
277
|
-
##
|
|
277
|
+
## 검증 체크리스트
|
|
278
278
|
|
|
279
279
|
### Mobile (320-767px)
|
|
280
280
|
|
|
281
281
|
```
|
|
282
|
-
□
|
|
283
|
-
□
|
|
284
|
-
□
|
|
285
|
-
□
|
|
286
|
-
□
|
|
287
|
-
□
|
|
288
|
-
□
|
|
282
|
+
□ 레이아웃: Grid → List 변환 확인
|
|
283
|
+
□ 폰트: 작은 크기 적용 확인
|
|
284
|
+
□ 간격: 축소된 padding/gap 확인
|
|
285
|
+
□ 이미지: Mobile용 이미지 로드 확인
|
|
286
|
+
□ 네비게이션: Hamburger 메뉴 확인
|
|
287
|
+
□ 터치 타겟: 최소 44x44px 확인
|
|
288
|
+
□ Figma Mobile 디자인과 100% 일치
|
|
289
289
|
```
|
|
290
290
|
|
|
291
291
|
### Tablet (768-1023px)
|
|
292
292
|
|
|
293
293
|
```
|
|
294
|
-
□
|
|
295
|
-
□
|
|
296
|
-
□
|
|
297
|
-
□
|
|
298
|
-
□
|
|
294
|
+
□ 레이아웃: 2단 그리드 확인
|
|
295
|
+
□ 폰트: 중간 크기 적용 확인
|
|
296
|
+
□ 간격: 중간 padding/gap 확인
|
|
297
|
+
□ 이미지: Tablet용 이미지 로드 확인
|
|
298
|
+
□ Figma Tablet 디자인과 100% 일치
|
|
299
299
|
```
|
|
300
300
|
|
|
301
301
|
### Desktop (1024px+)
|
|
302
302
|
|
|
303
303
|
```
|
|
304
|
-
□
|
|
305
|
-
□
|
|
306
|
-
□
|
|
307
|
-
□
|
|
308
|
-
□
|
|
309
|
-
□
|
|
304
|
+
□ 레이아웃: 4단 그리드 확인
|
|
305
|
+
□ 폰트: 큰 크기 적용 확인
|
|
306
|
+
□ 간격: 넓은 padding/gap 확인
|
|
307
|
+
□ 이미지: Desktop용 이미지 로드 확인
|
|
308
|
+
□ 네비게이션: 전체 메뉴 표시 확인
|
|
309
|
+
□ Figma Desktop 디자인과 100% 일치
|
|
310
310
|
```
|
|
311
311
|
|
|
312
312
|
---
|
|
313
313
|
|
|
314
|
-
##
|
|
314
|
+
## 디버깅
|
|
315
315
|
|
|
316
316
|
### Chrome DevTools
|
|
317
317
|
|
|
318
318
|
```
|
|
319
|
-
1.
|
|
319
|
+
1. DevTools 열기 (F12)
|
|
320
320
|
2. Toggle Device Toolbar (Ctrl+Shift+M)
|
|
321
|
-
3.
|
|
322
|
-
4.
|
|
323
|
-
-
|
|
324
|
-
-
|
|
325
|
-
-
|
|
326
|
-
-
|
|
321
|
+
3. 디바이스 선택 또는 커스텀 크기 입력
|
|
322
|
+
4. 각 브레이크포인트에서 확인:
|
|
323
|
+
- 레이아웃 변화
|
|
324
|
+
- 폰트 크기
|
|
325
|
+
- 간격
|
|
326
|
+
- 이미지 로드
|
|
327
327
|
```
|
|
328
328
|
|
|
329
|
-
###
|
|
329
|
+
### 미디어 쿼리 확인
|
|
330
330
|
|
|
331
331
|
```js
|
|
332
|
-
//
|
|
332
|
+
// Console에서 현재 미디어 쿼리 확인
|
|
333
333
|
window.matchMedia('(min-width: 768px)').matches // true/false
|
|
334
334
|
```
|
|
335
335
|
|
|
336
336
|
---
|
|
337
337
|
|
|
338
|
-
##
|
|
338
|
+
## 베스트 프랙티스
|
|
339
339
|
|
|
340
340
|
### DO
|
|
341
341
|
|
|
342
|
-
|
|
|
343
|
-
|
|
344
|
-
| **Mobile First** |
|
|
345
|
-
| **Exact Breakpoints** |
|
|
346
|
-
| **Test All Devices** |
|
|
347
|
-
| **Responsive Images** |
|
|
342
|
+
| 원칙 | 설명 |
|
|
343
|
+
|------|------|
|
|
344
|
+
| **Mobile First** | 기본 스타일 → md: → lg: 순서 |
|
|
345
|
+
| **Exact Breakpoints** | Figma 브레이크포인트 정확히 일치 |
|
|
346
|
+
| **Test All Devices** | Mobile/Tablet/Desktop 모두 테스트 |
|
|
347
|
+
| **Responsive Images** | 디바이스별 이미지 제공 |
|
|
348
348
|
|
|
349
349
|
### DON'T
|
|
350
350
|
|
|
351
|
-
|
|
|
352
|
-
|
|
353
|
-
| **Desktop Only** |
|
|
354
|
-
|
|
|
355
|
-
|
|
|
356
|
-
|
|
|
351
|
+
| 금지 사항 | 이유 |
|
|
352
|
+
|----------|------|
|
|
353
|
+
| **Desktop Only** | Mobile 무시하면 디자인 불일치 |
|
|
354
|
+
| **고정 크기** | `width: 375px` → 반응형 깨짐 |
|
|
355
|
+
| **브레이크포인트 임의 변경** | Figma와 불일치 |
|
|
356
|
+
| **하나의 이미지** | 모든 디바이스에 동일 이미지 비효율 |
|
|
357
357
|
|
|
358
358
|
---
|
|
359
359
|
|
|
360
|
-
##
|
|
360
|
+
## 참조
|
|
361
361
|
|
|
362
362
|
- [Figma Constraints](https://help.figma.com/hc/en-us/articles/360039957734)
|
|
363
363
|
- [Tailwind Responsive Design](https://tailwindcss.com/docs/responsive-design)
|