muno-claude-plugin 1.7.0 → 1.9.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/README.md +120 -0
- package/bin/cli.js +4 -1
- package/package.json +6 -3
- package/templates/WORKFLOW.md +1 -0
- package/templates/agents/code-reviewer.md +646 -0
- package/templates/commands/app-designer.md +9 -0
- package/templates/personas/app-designer.md +182 -0
- package/templates/skills/app-design/SKILL.md +640 -0
- package/templates/skills/app-design/reference/component-examples.md +953 -0
- package/templates/skills/app-design/reference/design-system-template.md +628 -0
- package/templates/skills/app-design/reference/design-tokens.json +231 -0
- package/templates/skills/swagger-docs-generator/SKILL.md +699 -0
- package/templates/skills/swagger-docs-generator/reference/api-docs-template.md +666 -0
|
@@ -0,0 +1,953 @@
|
|
|
1
|
+
# 컴포넌트 예시
|
|
2
|
+
|
|
3
|
+
실제 앱에서 사용할 수 있는 컴포넌트 예시입니다.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Login Screen (로그인 화면)
|
|
8
|
+
|
|
9
|
+
### Apple 스타일
|
|
10
|
+
|
|
11
|
+
```markdown
|
|
12
|
+
## 레이아웃
|
|
13
|
+
|
|
14
|
+
### Navigation Bar
|
|
15
|
+
- Style: Large Title
|
|
16
|
+
- Title: "로그인"
|
|
17
|
+
- Background: System Background
|
|
18
|
+
|
|
19
|
+
### Content (Safe Area 내)
|
|
20
|
+
- Logo
|
|
21
|
+
- Position: Top center
|
|
22
|
+
- Size: 80pt × 80pt
|
|
23
|
+
- Margin Top: 60pt
|
|
24
|
+
|
|
25
|
+
- Title
|
|
26
|
+
- Text: "환영합니다"
|
|
27
|
+
- Font: Large Title (34pt, Bold)
|
|
28
|
+
- Color: Label
|
|
29
|
+
- Margin Top: 24pt
|
|
30
|
+
- Alignment: Center
|
|
31
|
+
|
|
32
|
+
- Subtitle
|
|
33
|
+
- Text: "계속하려면 로그인하세요"
|
|
34
|
+
- Font: Body (17pt, Regular)
|
|
35
|
+
- Color: Secondary Label
|
|
36
|
+
- Margin Top: 8pt
|
|
37
|
+
- Alignment: Center
|
|
38
|
+
|
|
39
|
+
- Email Input Field
|
|
40
|
+
- Placeholder: "이메일"
|
|
41
|
+
- Keyboard Type: Email
|
|
42
|
+
- Auto Capitalization: None
|
|
43
|
+
- Height: 50pt
|
|
44
|
+
- Background: Secondary System Background
|
|
45
|
+
- Border Radius: 12pt
|
|
46
|
+
- Padding: 16pt horizontal
|
|
47
|
+
- Margin Top: 48pt
|
|
48
|
+
|
|
49
|
+
- Password Input Field
|
|
50
|
+
- Placeholder: "비밀번호"
|
|
51
|
+
- Secure Text Entry: Yes
|
|
52
|
+
- Height: 50pt
|
|
53
|
+
- Background: Secondary System Background
|
|
54
|
+
- Border Radius: 12pt
|
|
55
|
+
- Padding: 16pt horizontal
|
|
56
|
+
- Margin Top: 16pt
|
|
57
|
+
- Trailing: Show/Hide button
|
|
58
|
+
|
|
59
|
+
- Forgot Password Button
|
|
60
|
+
- Text: "비밀번호를 잊으셨나요?"
|
|
61
|
+
- Font: Footnote (13pt, Regular)
|
|
62
|
+
- Color: System Blue
|
|
63
|
+
- Alignment: Right
|
|
64
|
+
- Margin Top: 12pt
|
|
65
|
+
|
|
66
|
+
- Login Button
|
|
67
|
+
- Text: "로그인"
|
|
68
|
+
- Style: Primary Button
|
|
69
|
+
- Height: 50pt
|
|
70
|
+
- Border Radius: 12pt
|
|
71
|
+
- Background: System Blue
|
|
72
|
+
- Font: Headline (17pt, Semibold)
|
|
73
|
+
- Color: White
|
|
74
|
+
- Margin Top: 32pt
|
|
75
|
+
- Shadow: 0 4px 12px rgba(0, 122, 255, 0.3)
|
|
76
|
+
|
|
77
|
+
- Divider
|
|
78
|
+
- Text: "또는"
|
|
79
|
+
- Margin Top: 32pt
|
|
80
|
+
- Line Color: Separator
|
|
81
|
+
|
|
82
|
+
- Social Login Buttons (Stack)
|
|
83
|
+
- Apple Sign In
|
|
84
|
+
- Background: Black
|
|
85
|
+
- Icon: Apple logo (White)
|
|
86
|
+
- Text: "Apple로 계속하기"
|
|
87
|
+
- Height: 50pt
|
|
88
|
+
- Border Radius: 12pt
|
|
89
|
+
- Margin Top: 24pt
|
|
90
|
+
|
|
91
|
+
- Google Sign In
|
|
92
|
+
- Background: White
|
|
93
|
+
- Border: 1px solid Gray 300
|
|
94
|
+
- Icon: Google logo
|
|
95
|
+
- Text: "Google로 계속하기"
|
|
96
|
+
- Height: 50pt
|
|
97
|
+
- Border Radius: 12pt
|
|
98
|
+
- Margin Top: 12pt
|
|
99
|
+
|
|
100
|
+
- Sign Up Link
|
|
101
|
+
- Text: "계정이 없으신가요? 회원가입"
|
|
102
|
+
- Font: Footnote (13pt, Regular)
|
|
103
|
+
- Color: System Blue (회원가입만)
|
|
104
|
+
- Alignment: Center
|
|
105
|
+
- Margin Top: 32pt
|
|
106
|
+
- Margin Bottom: 32pt
|
|
107
|
+
|
|
108
|
+
### 상태
|
|
109
|
+
- Default: 모든 버튼 활성화
|
|
110
|
+
- Loading: Login 버튼에 Spinner, Disabled state
|
|
111
|
+
- Error: Input field에 red border, 하단 error message
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Toss 스타일
|
|
115
|
+
|
|
116
|
+
```markdown
|
|
117
|
+
## 레이아웃
|
|
118
|
+
|
|
119
|
+
### Top Bar
|
|
120
|
+
- Height: 56pt
|
|
121
|
+
- Background: White
|
|
122
|
+
- Leading: Close button (X)
|
|
123
|
+
|
|
124
|
+
### Content
|
|
125
|
+
- Logo
|
|
126
|
+
- Position: Top center
|
|
127
|
+
- Size: 48pt × 48pt
|
|
128
|
+
- Margin Top: 40pt
|
|
129
|
+
|
|
130
|
+
- Title
|
|
131
|
+
- Text: "토스에 오신 것을\n환영해요"
|
|
132
|
+
- Font: Headline 1 (24pt, Bold)
|
|
133
|
+
- Color: Toss Black
|
|
134
|
+
- Margin Top: 24pt
|
|
135
|
+
- Alignment: Left
|
|
136
|
+
- Line Height: 1.4
|
|
137
|
+
|
|
138
|
+
- Phone Number Input
|
|
139
|
+
- Label: "휴대폰 번호"
|
|
140
|
+
- Font: Body 2 (14pt, Regular)
|
|
141
|
+
- Color: Gray 700
|
|
142
|
+
- Margin Top: 40pt
|
|
143
|
+
|
|
144
|
+
- Input
|
|
145
|
+
- Background: Gray 50
|
|
146
|
+
- Border: 1px solid Gray 200
|
|
147
|
+
- Border Radius: 8pt
|
|
148
|
+
- Height: 52pt
|
|
149
|
+
- Padding: 16pt
|
|
150
|
+
- Font: Body 1 (16pt, Regular)
|
|
151
|
+
- Margin Top: 8pt
|
|
152
|
+
- Placeholder: "010-0000-0000"
|
|
153
|
+
- Keyboard Type: Phone Pad
|
|
154
|
+
|
|
155
|
+
- Verification Code Input (After phone verified)
|
|
156
|
+
- Label: "인증번호"
|
|
157
|
+
- Timer: 3:00 (Countdown)
|
|
158
|
+
- Input: Same style as phone input
|
|
159
|
+
- Margin Top: 24pt
|
|
160
|
+
|
|
161
|
+
- Continue Button
|
|
162
|
+
- Text: "계속하기"
|
|
163
|
+
- Background: Toss Blue (#3182F6)
|
|
164
|
+
- Height: 56pt
|
|
165
|
+
- Border Radius: 8pt
|
|
166
|
+
- Font: Body 1 (16pt, Bold)
|
|
167
|
+
- Color: White
|
|
168
|
+
- Position: Fixed bottom
|
|
169
|
+
- Margin: 16pt horizontal
|
|
170
|
+
- Margin Bottom: Safe Area + 16pt
|
|
171
|
+
- Disabled: Background Gray 200, Text Gray 500
|
|
172
|
+
|
|
173
|
+
### 인터랙션
|
|
174
|
+
- Phone number input 입력 완료 시 → 자동으로 인증번호 전송
|
|
175
|
+
- Continue button은 모든 필드 입력 완료 시 활성화
|
|
176
|
+
- Error 발생 시 Toast 메시지 표시 (하단에서 올라옴)
|
|
177
|
+
|
|
178
|
+
### 마이크로 인터랙션
|
|
179
|
+
- Input focus: Border color → Toss Blue, Smooth transition 200ms
|
|
180
|
+
- Button press: Scale 0.98, 100ms
|
|
181
|
+
- Loading: Button에 spinner, width 변화 없음
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## 2. Product List (상품 목록)
|
|
187
|
+
|
|
188
|
+
### Apple 스타일 (List)
|
|
189
|
+
|
|
190
|
+
```markdown
|
|
191
|
+
## 레이아웃
|
|
192
|
+
|
|
193
|
+
### Navigation Bar
|
|
194
|
+
- Style: Large Title
|
|
195
|
+
- Title: "상품"
|
|
196
|
+
- Right Button: Filter icon
|
|
197
|
+
|
|
198
|
+
### Search Bar
|
|
199
|
+
- Placeholder: "상품 검색"
|
|
200
|
+
- Style: iOS Default Search Bar
|
|
201
|
+
- Scope Buttons: 전체, 인기, 신상품
|
|
202
|
+
|
|
203
|
+
### List
|
|
204
|
+
- Style: Inset Grouped
|
|
205
|
+
- Background: System Grouped Background
|
|
206
|
+
|
|
207
|
+
#### List Item
|
|
208
|
+
- Height: Auto (최소 80pt)
|
|
209
|
+
- Background: Secondary System Grouped Background
|
|
210
|
+
- Separator: Inset 16pt from leading
|
|
211
|
+
|
|
212
|
+
Layout:
|
|
213
|
+
- Leading Image
|
|
214
|
+
- Size: 64pt × 64pt
|
|
215
|
+
- Border Radius: 8pt
|
|
216
|
+
- Content Mode: Aspect Fill
|
|
217
|
+
- Margin: 8pt
|
|
218
|
+
|
|
219
|
+
- Content Stack (Vertical)
|
|
220
|
+
- Product Name
|
|
221
|
+
- Font: Headline (17pt, Semibold)
|
|
222
|
+
- Color: Label
|
|
223
|
+
- Lines: 2
|
|
224
|
+
|
|
225
|
+
- Price
|
|
226
|
+
- Font: Subheadline (15pt, Regular)
|
|
227
|
+
- Color: System Blue
|
|
228
|
+
- Margin Top: 4pt
|
|
229
|
+
|
|
230
|
+
- Rating & Reviews
|
|
231
|
+
- Icon: Star (filled)
|
|
232
|
+
- Text: "4.5 (128 reviews)"
|
|
233
|
+
- Font: Footnote (13pt, Regular)
|
|
234
|
+
- Color: Secondary Label
|
|
235
|
+
- Margin Top: 4pt
|
|
236
|
+
|
|
237
|
+
- Trailing: Chevron Right
|
|
238
|
+
- Color: Tertiary Label
|
|
239
|
+
|
|
240
|
+
### 인터랙션
|
|
241
|
+
- Tap: Push to Detail Screen
|
|
242
|
+
- Long Press: Quick Action Menu (Add to Cart, Share, Favorite)
|
|
243
|
+
- Swipe Left: Add to Cart (Blue), Delete (Red)
|
|
244
|
+
- Pull to Refresh: Reload list
|
|
245
|
+
|
|
246
|
+
### 상태
|
|
247
|
+
- Loading: Skeleton UI (3 items)
|
|
248
|
+
- Empty: Icon + "상품이 없습니다" + "새로고침" button
|
|
249
|
+
- Error: Error icon + Message + "다시 시도" button
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### Toss 스타일 (Grid)
|
|
253
|
+
|
|
254
|
+
```markdown
|
|
255
|
+
## 레이아웃
|
|
256
|
+
|
|
257
|
+
### Top Bar
|
|
258
|
+
- Height: 56pt
|
|
259
|
+
- Background: White
|
|
260
|
+
- Title: "전체 상품"
|
|
261
|
+
- Font: Headline 3 (18pt, Bold)
|
|
262
|
+
- Trailing: Filter icon
|
|
263
|
+
|
|
264
|
+
### Filter Chips (Horizontal Scroll)
|
|
265
|
+
- Height: 40pt
|
|
266
|
+
- Padding: 16pt horizontal
|
|
267
|
+
- Gap: 8pt
|
|
268
|
+
|
|
269
|
+
Chip:
|
|
270
|
+
- Background: Gray 50 (Default), Toss Blue (Selected)
|
|
271
|
+
- Text Color: Gray 700 (Default), White (Selected)
|
|
272
|
+
- Padding: 12pt horizontal
|
|
273
|
+
- Border Radius: 20pt
|
|
274
|
+
- Font: Body 2 (14pt, Medium)
|
|
275
|
+
|
|
276
|
+
### Grid
|
|
277
|
+
- Columns: 2
|
|
278
|
+
- Gap: 12pt
|
|
279
|
+
- Padding: 16pt
|
|
280
|
+
|
|
281
|
+
#### Grid Item (Card)
|
|
282
|
+
- Aspect Ratio: 3:4
|
|
283
|
+
- Border Radius: 12pt
|
|
284
|
+
- Background: White
|
|
285
|
+
- Shadow: 0 2px 8px rgba(0,0,0,0.04)
|
|
286
|
+
|
|
287
|
+
Layout:
|
|
288
|
+
- Product Image
|
|
289
|
+
- Aspect Ratio: 1:1
|
|
290
|
+
- Border Radius: 12pt 12pt 0 0
|
|
291
|
+
- Content Mode: Cover
|
|
292
|
+
|
|
293
|
+
- Content (Padding 12pt)
|
|
294
|
+
- Brand
|
|
295
|
+
- Font: Caption (12pt, Regular)
|
|
296
|
+
- Color: Gray 600
|
|
297
|
+
|
|
298
|
+
- Product Name
|
|
299
|
+
- Font: Body 2 (14pt, Medium)
|
|
300
|
+
- Color: Toss Black
|
|
301
|
+
- Lines: 2
|
|
302
|
+
- Margin Top: 4pt
|
|
303
|
+
|
|
304
|
+
- Price
|
|
305
|
+
- Font: Headline 3 (18pt, Bold)
|
|
306
|
+
- Color: Toss Black
|
|
307
|
+
- Margin Top: 8pt
|
|
308
|
+
|
|
309
|
+
- Discount Badge (Optional)
|
|
310
|
+
- Background: Toss Red
|
|
311
|
+
- Text: "20%"
|
|
312
|
+
- Font: Caption (12pt, Bold)
|
|
313
|
+
- Color: White
|
|
314
|
+
- Padding: 4pt 6pt
|
|
315
|
+
- Border Radius: 4pt
|
|
316
|
+
- Position: Top Right of Image
|
|
317
|
+
|
|
318
|
+
- Favorite Button
|
|
319
|
+
- Position: Top Right
|
|
320
|
+
- Icon: Heart (outline/filled)
|
|
321
|
+
- Size: 24pt × 24pt
|
|
322
|
+
- Background: White (50% opacity)
|
|
323
|
+
- Margin: 8pt
|
|
324
|
+
|
|
325
|
+
### 인터랙션
|
|
326
|
+
- Tap: Navigate to Detail
|
|
327
|
+
- Favorite button: Toggle favorite + Haptic
|
|
328
|
+
- Scroll: Infinite scroll (Load more)
|
|
329
|
+
|
|
330
|
+
### 상태
|
|
331
|
+
- Loading: Skeleton Grid (6 items)
|
|
332
|
+
- Empty: Illustration + "상품이 없어요" + "둘러보기" button
|
|
333
|
+
- Error: Toast at bottom
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
## 3. Profile Screen (프로필 화면)
|
|
339
|
+
|
|
340
|
+
### Apple 스타일
|
|
341
|
+
|
|
342
|
+
```markdown
|
|
343
|
+
## 레이아웃
|
|
344
|
+
|
|
345
|
+
### Navigation Bar
|
|
346
|
+
- Style: Large Title
|
|
347
|
+
- Title: "프로필"
|
|
348
|
+
- Right Button: Edit
|
|
349
|
+
|
|
350
|
+
### Header Section
|
|
351
|
+
- Background: System Background
|
|
352
|
+
- Padding: 16pt
|
|
353
|
+
|
|
354
|
+
Layout:
|
|
355
|
+
- Profile Image
|
|
356
|
+
- Size: 80pt × 80pt
|
|
357
|
+
- Border Radius: 40pt (Circle)
|
|
358
|
+
- Border: 2pt solid System Blue
|
|
359
|
+
- Center Horizontal
|
|
360
|
+
|
|
361
|
+
- Name
|
|
362
|
+
- Font: Title 1 (28pt, Bold)
|
|
363
|
+
- Color: Label
|
|
364
|
+
- Alignment: Center
|
|
365
|
+
- Margin Top: 16pt
|
|
366
|
+
|
|
367
|
+
- Email
|
|
368
|
+
- Font: Callout (16pt, Regular)
|
|
369
|
+
- Color: Secondary Label
|
|
370
|
+
- Alignment: Center
|
|
371
|
+
- Margin Top: 4pt
|
|
372
|
+
|
|
373
|
+
### Stats Section
|
|
374
|
+
- Layout: Horizontal Stack
|
|
375
|
+
- Distribution: Equal
|
|
376
|
+
- Margin Top: 24pt
|
|
377
|
+
|
|
378
|
+
Each Stat:
|
|
379
|
+
- Count
|
|
380
|
+
- Font: Title 2 (22pt, Bold)
|
|
381
|
+
- Color: Label
|
|
382
|
+
- Alignment: Center
|
|
383
|
+
|
|
384
|
+
- Label
|
|
385
|
+
- Font: Footnote (13pt, Regular)
|
|
386
|
+
- Color: Secondary Label
|
|
387
|
+
- Alignment: Center
|
|
388
|
+
- Margin Top: 4pt
|
|
389
|
+
|
|
390
|
+
### Menu List (Grouped)
|
|
391
|
+
- Style: Inset Grouped
|
|
392
|
+
- Margin Top: 32pt
|
|
393
|
+
|
|
394
|
+
Groups:
|
|
395
|
+
1. Account
|
|
396
|
+
- Personal Info (Chevron Right)
|
|
397
|
+
- Security (Chevron Right)
|
|
398
|
+
- Notifications (Toggle Switch)
|
|
399
|
+
|
|
400
|
+
2. Support
|
|
401
|
+
- Help Center (Chevron Right)
|
|
402
|
+
- Terms of Service (Chevron Right)
|
|
403
|
+
- Privacy Policy (Chevron Right)
|
|
404
|
+
|
|
405
|
+
3. App
|
|
406
|
+
- Language (Chevron Right, Badge: "한국어")
|
|
407
|
+
- Dark Mode (Toggle Switch)
|
|
408
|
+
- Version (Trailing text: "1.0.0")
|
|
409
|
+
|
|
410
|
+
4. Logout
|
|
411
|
+
- Logout (Red text, Center aligned)
|
|
412
|
+
|
|
413
|
+
Menu Item:
|
|
414
|
+
- Height: 44pt
|
|
415
|
+
- Background: Secondary System Grouped Background
|
|
416
|
+
- Leading Icon: 24pt × 24pt, Tint Color
|
|
417
|
+
- Text: Body (17pt, Regular)
|
|
418
|
+
- Separator: Inset 44pt from leading
|
|
419
|
+
|
|
420
|
+
### 인터랙션
|
|
421
|
+
- Profile Image Tap: Change Photo Action Sheet
|
|
422
|
+
- Edit Button: Edit Mode (All fields editable)
|
|
423
|
+
- Menu Tap: Navigate or Toggle
|
|
424
|
+
- Logout: Alert Dialog confirmation
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
### Toss 스타일
|
|
428
|
+
|
|
429
|
+
```markdown
|
|
430
|
+
## 레이아웃
|
|
431
|
+
|
|
432
|
+
### Header Section
|
|
433
|
+
- Background: White
|
|
434
|
+
- Padding: 24pt
|
|
435
|
+
|
|
436
|
+
Layout:
|
|
437
|
+
- Top Row (Horizontal)
|
|
438
|
+
- Profile Image
|
|
439
|
+
- Size: 64pt × 64pt
|
|
440
|
+
- Border Radius: 32pt
|
|
441
|
+
|
|
442
|
+
- Info Stack (Margin Left 16pt)
|
|
443
|
+
- Name
|
|
444
|
+
- Font: Headline 2 (20pt, Bold)
|
|
445
|
+
- Color: Toss Black
|
|
446
|
+
|
|
447
|
+
- Membership Badge
|
|
448
|
+
- Background: Toss Blue (10% opacity)
|
|
449
|
+
- Text: "토스 프라임"
|
|
450
|
+
- Font: Caption (12pt, Medium)
|
|
451
|
+
- Color: Toss Blue
|
|
452
|
+
- Padding: 4pt 8pt
|
|
453
|
+
- Border Radius: 4pt
|
|
454
|
+
- Margin Top: 4pt
|
|
455
|
+
|
|
456
|
+
- Settings Icon (Trailing)
|
|
457
|
+
- Size: 24pt × 24pt
|
|
458
|
+
- Color: Gray 600
|
|
459
|
+
|
|
460
|
+
- Point Card
|
|
461
|
+
- Background: Linear Gradient (Toss Blue → #5B9FFF)
|
|
462
|
+
- Border Radius: 16pt
|
|
463
|
+
- Padding: 20pt
|
|
464
|
+
- Margin Top: 20pt
|
|
465
|
+
- Shadow: 0 4px 12px rgba(49,130,246,0.2)
|
|
466
|
+
|
|
467
|
+
Layout:
|
|
468
|
+
- Label: "토스 포인트"
|
|
469
|
+
- Font: Body 2 (14pt, Regular)
|
|
470
|
+
- Color: White (70% opacity)
|
|
471
|
+
|
|
472
|
+
- Amount: "12,540P"
|
|
473
|
+
- Font: Headline 1 (24pt, Bold)
|
|
474
|
+
- Color: White
|
|
475
|
+
- Margin Top: 4pt
|
|
476
|
+
|
|
477
|
+
- Charge Button
|
|
478
|
+
- Text: "충전하기"
|
|
479
|
+
- Background: White
|
|
480
|
+
- Color: Toss Blue
|
|
481
|
+
- Height: 36pt
|
|
482
|
+
- Border Radius: 18pt
|
|
483
|
+
- Font: Body 2 (14pt, Bold)
|
|
484
|
+
- Margin Top: 16pt
|
|
485
|
+
- Width: Fit content
|
|
486
|
+
|
|
487
|
+
### Quick Actions
|
|
488
|
+
- Layout: 4-column Grid
|
|
489
|
+
- Padding: 24pt horizontal
|
|
490
|
+
- Gap: 16pt
|
|
491
|
+
|
|
492
|
+
Action:
|
|
493
|
+
- Icon: 48pt × 48pt
|
|
494
|
+
- Background: Gray 50
|
|
495
|
+
- Border Radius: 24pt
|
|
496
|
+
- Icon Color: Toss Black
|
|
497
|
+
- Icon Size: 24pt × 24pt
|
|
498
|
+
|
|
499
|
+
- Label
|
|
500
|
+
- Font: Caption (12pt, Regular)
|
|
501
|
+
- Color: Gray 700
|
|
502
|
+
- Alignment: Center
|
|
503
|
+
- Margin Top: 8pt
|
|
504
|
+
|
|
505
|
+
Actions:
|
|
506
|
+
- 주문내역
|
|
507
|
+
- 찜
|
|
508
|
+
- 쿠폰
|
|
509
|
+
- 설정
|
|
510
|
+
|
|
511
|
+
### Menu Sections
|
|
512
|
+
- Padding: 0 24pt
|
|
513
|
+
|
|
514
|
+
Section Title:
|
|
515
|
+
- Font: Body 2 (14pt, Bold)
|
|
516
|
+
- Color: Gray 900
|
|
517
|
+
- Margin: 24pt 0 12pt
|
|
518
|
+
|
|
519
|
+
Menu Item:
|
|
520
|
+
- Height: 52pt
|
|
521
|
+
- Background: Transparent
|
|
522
|
+
- Border Bottom: 1px solid Gray 100
|
|
523
|
+
|
|
524
|
+
Layout:
|
|
525
|
+
- Title
|
|
526
|
+
- Font: Body 1 (16pt, Regular)
|
|
527
|
+
- Color: Toss Black
|
|
528
|
+
|
|
529
|
+
- Badge (Optional)
|
|
530
|
+
- Background: Toss Red
|
|
531
|
+
- Size: 8pt × 8pt
|
|
532
|
+
- Border Radius: 4pt
|
|
533
|
+
- Position: After title
|
|
534
|
+
|
|
535
|
+
- Trailing: Chevron Right
|
|
536
|
+
- Color: Gray 400
|
|
537
|
+
|
|
538
|
+
Sections:
|
|
539
|
+
1. 계정
|
|
540
|
+
- 개인정보 관리
|
|
541
|
+
- 보안 설정
|
|
542
|
+
|
|
543
|
+
2. 고객센터
|
|
544
|
+
- 공지사항
|
|
545
|
+
- 자주 묻는 질문
|
|
546
|
+
- 1:1 문의
|
|
547
|
+
|
|
548
|
+
3. 앱 정보
|
|
549
|
+
- 버전 정보 (1.0.0)
|
|
550
|
+
- 오픈소스 라이선스
|
|
551
|
+
|
|
552
|
+
### Bottom
|
|
553
|
+
- Logout Button
|
|
554
|
+
- Text: "로그아웃"
|
|
555
|
+
- Font: Body 2 (14pt, Regular)
|
|
556
|
+
- Color: Gray 600
|
|
557
|
+
- Alignment: Center
|
|
558
|
+
- Margin: 32pt 0
|
|
559
|
+
|
|
560
|
+
### 인터랙션
|
|
561
|
+
- Profile Image: Photo Picker Bottom Sheet
|
|
562
|
+
- Point Card: Navigate to Point Detail
|
|
563
|
+
- Quick Action: Navigate to each screen
|
|
564
|
+
- Menu Item: Navigate
|
|
565
|
+
- Logout: Bottom Sheet confirmation
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
---
|
|
569
|
+
|
|
570
|
+
## 4. Bottom Sheet Examples
|
|
571
|
+
|
|
572
|
+
### Filter Bottom Sheet (Apple 스타일)
|
|
573
|
+
|
|
574
|
+
```markdown
|
|
575
|
+
## 레이아웃
|
|
576
|
+
|
|
577
|
+
### Handle
|
|
578
|
+
- Width: 36pt
|
|
579
|
+
- Height: 5pt
|
|
580
|
+
- Background: System Gray 4
|
|
581
|
+
- Border Radius: 2.5pt
|
|
582
|
+
- Center Horizontal
|
|
583
|
+
- Margin Top: 6pt
|
|
584
|
+
|
|
585
|
+
### Header
|
|
586
|
+
- Height: 56pt
|
|
587
|
+
- Border Bottom: 1px solid Separator
|
|
588
|
+
|
|
589
|
+
Layout:
|
|
590
|
+
- Title: "필터"
|
|
591
|
+
- Font: Headline (17pt, Semibold)
|
|
592
|
+
- Center Aligned
|
|
593
|
+
|
|
594
|
+
- Close Button
|
|
595
|
+
- Position: Trailing
|
|
596
|
+
- Icon: X mark
|
|
597
|
+
- Size: 24pt × 24pt
|
|
598
|
+
|
|
599
|
+
### Content (Scrollable)
|
|
600
|
+
- Padding: 20pt
|
|
601
|
+
|
|
602
|
+
#### Section: Price Range
|
|
603
|
+
- Title: "가격"
|
|
604
|
+
- Font: Headline (17pt, Semibold)
|
|
605
|
+
- Margin Bottom: 16pt
|
|
606
|
+
|
|
607
|
+
- Slider
|
|
608
|
+
- Min: 0
|
|
609
|
+
- Max: 1,000,000
|
|
610
|
+
- Step: 10,000
|
|
611
|
+
- Track Height: 4pt
|
|
612
|
+
- Thumb Size: 28pt
|
|
613
|
+
|
|
614
|
+
- Range Display
|
|
615
|
+
- Text: "₩0 - ₩500,000"
|
|
616
|
+
- Font: Body (17pt, Regular)
|
|
617
|
+
- Color: Secondary Label
|
|
618
|
+
- Margin Top: 12pt
|
|
619
|
+
|
|
620
|
+
#### Section: Category
|
|
621
|
+
- Title: "카테고리"
|
|
622
|
+
- Margin Top: 32pt
|
|
623
|
+
|
|
624
|
+
- Chip Group
|
|
625
|
+
- Wrap: Yes
|
|
626
|
+
- Gap: 8pt
|
|
627
|
+
|
|
628
|
+
Chip:
|
|
629
|
+
- Background: System Gray 5 (Default), System Blue (Selected)
|
|
630
|
+
- Text Color: Label (Default), White (Selected)
|
|
631
|
+
- Height: 36pt
|
|
632
|
+
- Padding: 12pt horizontal
|
|
633
|
+
- Border Radius: 18pt
|
|
634
|
+
- Font: Callout (16pt, Regular)
|
|
635
|
+
|
|
636
|
+
#### Section: Rating
|
|
637
|
+
- Title: "평점"
|
|
638
|
+
- Margin Top: 32pt
|
|
639
|
+
|
|
640
|
+
- Rating Options (Vertical Stack)
|
|
641
|
+
- 5점 ⭐️⭐️⭐️⭐️⭐️
|
|
642
|
+
- 4점 이상 ⭐️⭐️⭐️⭐️
|
|
643
|
+
- 3점 이상 ⭐️⭐️⭐️
|
|
644
|
+
- 2점 이상 ⭐️⭐️
|
|
645
|
+
- 1점 이상 ⭐️
|
|
646
|
+
|
|
647
|
+
Option:
|
|
648
|
+
- Height: 44pt
|
|
649
|
+
- Checkmark (Trailing) when selected
|
|
650
|
+
- Font: Body (17pt, Regular)
|
|
651
|
+
|
|
652
|
+
### Footer
|
|
653
|
+
- Background: System Background
|
|
654
|
+
- Padding: 16pt
|
|
655
|
+
- Border Top: 1px solid Separator
|
|
656
|
+
|
|
657
|
+
Buttons (Horizontal):
|
|
658
|
+
- Reset Button
|
|
659
|
+
- Text: "초기화"
|
|
660
|
+
- Style: Secondary
|
|
661
|
+
- Width: 30%
|
|
662
|
+
|
|
663
|
+
- Apply Button
|
|
664
|
+
- Text: "적용하기"
|
|
665
|
+
- Style: Primary
|
|
666
|
+
- Width: 65%
|
|
667
|
+
- Margin Left: 12pt
|
|
668
|
+
|
|
669
|
+
### 인터랙션
|
|
670
|
+
- Swipe Down: Dismiss
|
|
671
|
+
- Backdrop Tap: Dismiss
|
|
672
|
+
- Apply: Dismiss + Emit filter values
|
|
673
|
+
- Reset: Clear all filters
|
|
674
|
+
|
|
675
|
+
### Animation
|
|
676
|
+
- Present: Slide up 300ms, Backdrop fade in
|
|
677
|
+
- Dismiss: Slide down 300ms, Backdrop fade out
|
|
678
|
+
```
|
|
679
|
+
|
|
680
|
+
### Action Bottom Sheet (Toss 스타일)
|
|
681
|
+
|
|
682
|
+
```markdown
|
|
683
|
+
## 레이아웃
|
|
684
|
+
|
|
685
|
+
### Handle
|
|
686
|
+
- Width: 32pt
|
|
687
|
+
- Height: 4pt
|
|
688
|
+
- Background: Gray 300
|
|
689
|
+
- Border Radius: 2pt
|
|
690
|
+
- Center Horizontal
|
|
691
|
+
- Margin: 8pt 0
|
|
692
|
+
|
|
693
|
+
### Header (Optional)
|
|
694
|
+
- Padding: 20pt 24pt
|
|
695
|
+
- Title
|
|
696
|
+
- Font: Headline 2 (20pt, Bold)
|
|
697
|
+
- Color: Toss Black
|
|
698
|
+
|
|
699
|
+
- Description
|
|
700
|
+
- Font: Body 2 (14pt, Regular)
|
|
701
|
+
- Color: Gray 600
|
|
702
|
+
- Margin Top: 8pt
|
|
703
|
+
|
|
704
|
+
### Actions (List)
|
|
705
|
+
- Padding: 0 24pt
|
|
706
|
+
|
|
707
|
+
Action Item:
|
|
708
|
+
- Height: 60pt
|
|
709
|
+
- Background: Transparent
|
|
710
|
+
- Border Bottom: 1px solid Gray 100 (except last)
|
|
711
|
+
|
|
712
|
+
Layout:
|
|
713
|
+
- Icon (Leading, Optional)
|
|
714
|
+
- Size: 24pt × 24pt
|
|
715
|
+
- Color: Toss Black or Semantic Color
|
|
716
|
+
|
|
717
|
+
- Title
|
|
718
|
+
- Font: Body 1 (16pt, Medium)
|
|
719
|
+
- Color: Toss Black (Default), Toss Red (Destructive)
|
|
720
|
+
- Margin Left: 12pt (if icon exists)
|
|
721
|
+
|
|
722
|
+
- Badge (Optional)
|
|
723
|
+
- Background: Toss Blue
|
|
724
|
+
- Text: "NEW"
|
|
725
|
+
- Font: Caption (12pt, Bold)
|
|
726
|
+
- Color: White
|
|
727
|
+
- Padding: 2pt 6pt
|
|
728
|
+
- Border Radius: 4pt
|
|
729
|
+
- Margin Left: 8pt
|
|
730
|
+
|
|
731
|
+
Actions Example:
|
|
732
|
+
1. Share (Icon: Share, Title: "공유하기")
|
|
733
|
+
2. Edit (Icon: Edit, Title: "수정하기")
|
|
734
|
+
3. Delete (Icon: Trash, Title: "삭제하기", Color: Red)
|
|
735
|
+
|
|
736
|
+
### Cancel Button (Optional)
|
|
737
|
+
- Height: 60pt
|
|
738
|
+
- Background: Gray 50
|
|
739
|
+
- Margin Top: 8pt
|
|
740
|
+
- Border Radius: 0 0 24pt 24pt
|
|
741
|
+
|
|
742
|
+
- Text: "취소"
|
|
743
|
+
- Font: Body 1 (16pt, Medium)
|
|
744
|
+
- Color: Gray 700
|
|
745
|
+
- Center Aligned
|
|
746
|
+
|
|
747
|
+
### 인터랙션
|
|
748
|
+
- Action Tap: Execute + Dismiss
|
|
749
|
+
- Cancel Tap: Dismiss
|
|
750
|
+
- Backdrop Tap: Dismiss
|
|
751
|
+
- Swipe Down: Dismiss
|
|
752
|
+
|
|
753
|
+
### Pressed State
|
|
754
|
+
- Background: Gray 50
|
|
755
|
+
- Duration: 100ms
|
|
756
|
+
|
|
757
|
+
### Animation
|
|
758
|
+
- Present: Slide up 250ms ease-out
|
|
759
|
+
- Dismiss: Slide down 250ms ease-in
|
|
760
|
+
```
|
|
761
|
+
|
|
762
|
+
---
|
|
763
|
+
|
|
764
|
+
## 5. Toast & Snackbar
|
|
765
|
+
|
|
766
|
+
### iOS Toast (Apple 스타일)
|
|
767
|
+
|
|
768
|
+
```markdown
|
|
769
|
+
## 레이아웃
|
|
770
|
+
|
|
771
|
+
- Width: Screen Width - 32pt
|
|
772
|
+
- Min Height: 48pt
|
|
773
|
+
- Max Width: 600pt (iPad)
|
|
774
|
+
- Background: System Gray (with blur)
|
|
775
|
+
- Border Radius: 12pt
|
|
776
|
+
- Padding: 12pt 16pt
|
|
777
|
+
- Shadow: 0 4px 12px rgba(0,0,0,0.15)
|
|
778
|
+
|
|
779
|
+
Layout:
|
|
780
|
+
- Icon (Optional)
|
|
781
|
+
- Size: 20pt × 20pt
|
|
782
|
+
- Color: White or Semantic
|
|
783
|
+
|
|
784
|
+
- Message
|
|
785
|
+
- Font: Body (17pt, Regular)
|
|
786
|
+
- Color: White
|
|
787
|
+
- Lines: 1-2
|
|
788
|
+
- Margin Left: 8pt (if icon)
|
|
789
|
+
|
|
790
|
+
- Action Button (Optional)
|
|
791
|
+
- Text: "실행취소"
|
|
792
|
+
- Font: Body (17pt, Semibold)
|
|
793
|
+
- Color: System Blue
|
|
794
|
+
- Margin Left: 16pt
|
|
795
|
+
|
|
796
|
+
### Position
|
|
797
|
+
- Default: Bottom (Safe Area + 16pt)
|
|
798
|
+
- Alternative: Top (Safe Area + 16pt)
|
|
799
|
+
|
|
800
|
+
### Animation
|
|
801
|
+
- Present: Slide + Fade (300ms)
|
|
802
|
+
- Dismiss: Fade out (200ms)
|
|
803
|
+
- Auto Dismiss: 3s (without action), 5s (with action)
|
|
804
|
+
|
|
805
|
+
### Variants
|
|
806
|
+
- Success: Green icon
|
|
807
|
+
- Error: Red icon
|
|
808
|
+
- Info: Blue icon
|
|
809
|
+
- Warning: Orange icon
|
|
810
|
+
```
|
|
811
|
+
|
|
812
|
+
### Android Snackbar (Toss 스타일)
|
|
813
|
+
|
|
814
|
+
```markdown
|
|
815
|
+
## 레이아웃
|
|
816
|
+
|
|
817
|
+
- Width: Screen Width (Mobile), 344dp (Tablet+)
|
|
818
|
+
- Height: 48dp (Single line), 68dp (Multi-line)
|
|
819
|
+
- Background: #323232 (Dark), White (Light mode)
|
|
820
|
+
- Border Radius: 4dp (Mobile), 4dp (Tablet)
|
|
821
|
+
- Padding: 14dp 16dp
|
|
822
|
+
- Elevation: 6dp
|
|
823
|
+
|
|
824
|
+
Layout:
|
|
825
|
+
- Message
|
|
826
|
+
- Font: Body 2 (14dp, Regular)
|
|
827
|
+
- Color: White (Dark), Toss Black (Light)
|
|
828
|
+
- Lines: 1-2
|
|
829
|
+
|
|
830
|
+
- Action Button (Optional)
|
|
831
|
+
- Text: "실행취소" or "확인"
|
|
832
|
+
- Font: Body 2 (14dp, Bold)
|
|
833
|
+
- Color: Toss Blue
|
|
834
|
+
- Margin Left: 16dp
|
|
835
|
+
- Padding: 8dp 12dp
|
|
836
|
+
- Min Width: 64dp
|
|
837
|
+
|
|
838
|
+
### Position
|
|
839
|
+
- Mobile: Bottom (16dp)
|
|
840
|
+
- Tablet: Bottom Left (16dp)
|
|
841
|
+
|
|
842
|
+
### Animation
|
|
843
|
+
- Present: Slide up + Fade (250ms)
|
|
844
|
+
- Dismiss: Fade out (150ms)
|
|
845
|
+
- Auto Dismiss: 4s (without action), 10s (with action)
|
|
846
|
+
|
|
847
|
+
### Interaction
|
|
848
|
+
- Swipe: Dismiss
|
|
849
|
+
- Action Tap: Execute + Dismiss
|
|
850
|
+
- Tap (Message): Dismiss (optional)
|
|
851
|
+
```
|
|
852
|
+
|
|
853
|
+
---
|
|
854
|
+
|
|
855
|
+
## 6. Loading States
|
|
856
|
+
|
|
857
|
+
### Skeleton Screen (Product Card)
|
|
858
|
+
|
|
859
|
+
```markdown
|
|
860
|
+
## Apple 스타일
|
|
861
|
+
|
|
862
|
+
Card Layout:
|
|
863
|
+
- Background: Secondary System Background
|
|
864
|
+
- Border Radius: 12pt
|
|
865
|
+
- Padding: 12pt
|
|
866
|
+
|
|
867
|
+
Skeleton Elements:
|
|
868
|
+
- Image Placeholder
|
|
869
|
+
- Size: Full width × 200pt
|
|
870
|
+
- Background: System Gray 5
|
|
871
|
+
- Border Radius: 8pt
|
|
872
|
+
- Animation: Shimmer
|
|
873
|
+
|
|
874
|
+
- Title Line 1
|
|
875
|
+
- Width: 80%
|
|
876
|
+
- Height: 20pt
|
|
877
|
+
- Background: System Gray 5
|
|
878
|
+
- Border Radius: 4pt
|
|
879
|
+
- Margin Top: 12pt
|
|
880
|
+
- Animation: Shimmer
|
|
881
|
+
|
|
882
|
+
- Title Line 2
|
|
883
|
+
- Width: 60%
|
|
884
|
+
- Height: 20pt
|
|
885
|
+
- Background: System Gray 5
|
|
886
|
+
- Border Radius: 4pt
|
|
887
|
+
- Margin Top: 8pt
|
|
888
|
+
- Animation: Shimmer
|
|
889
|
+
|
|
890
|
+
- Price
|
|
891
|
+
- Width: 40%
|
|
892
|
+
- Height: 24pt
|
|
893
|
+
- Background: System Gray 5
|
|
894
|
+
- Border Radius: 4pt
|
|
895
|
+
- Margin Top: 12pt
|
|
896
|
+
- Animation: Shimmer
|
|
897
|
+
|
|
898
|
+
Shimmer Animation:
|
|
899
|
+
- Gradient: transparent → white(20%) → transparent
|
|
900
|
+
- Angle: -45deg
|
|
901
|
+
- Duration: 1.5s
|
|
902
|
+
- Timing: ease-in-out
|
|
903
|
+
- Iteration: infinite
|
|
904
|
+
```
|
|
905
|
+
|
|
906
|
+
### Progressive Loading (Toss 스타일)
|
|
907
|
+
|
|
908
|
+
```markdown
|
|
909
|
+
## 단계별 로딩
|
|
910
|
+
|
|
911
|
+
Phase 1: Structure (0-200ms)
|
|
912
|
+
- Show layout structure
|
|
913
|
+
- Background colors only
|
|
914
|
+
- No content
|
|
915
|
+
|
|
916
|
+
Phase 2: Critical Content (200-500ms)
|
|
917
|
+
- Load essential text
|
|
918
|
+
- Show placeholders for images
|
|
919
|
+
- Interactive elements disabled
|
|
920
|
+
|
|
921
|
+
Phase 3: Images (500-1000ms)
|
|
922
|
+
- Progressive JPEG loading
|
|
923
|
+
- Blur-up technique
|
|
924
|
+
- Low quality → High quality
|
|
925
|
+
|
|
926
|
+
Phase 4: Complete (1000ms+)
|
|
927
|
+
- All content loaded
|
|
928
|
+
- Enable interactions
|
|
929
|
+
- Trigger entrance animations
|
|
930
|
+
|
|
931
|
+
## Loading Indicator
|
|
932
|
+
|
|
933
|
+
Circular Progress:
|
|
934
|
+
- Size: 32pt
|
|
935
|
+
- Stroke Width: 3pt
|
|
936
|
+
- Color: Toss Blue
|
|
937
|
+
- Animation:
|
|
938
|
+
- Rotation: 360deg, 1.2s, linear, infinite
|
|
939
|
+
- Stroke Dash: animated circle
|
|
940
|
+
|
|
941
|
+
Position:
|
|
942
|
+
- Center of container
|
|
943
|
+
- Or inline with button text
|
|
944
|
+
```
|
|
945
|
+
|
|
946
|
+
---
|
|
947
|
+
|
|
948
|
+
## 출처
|
|
949
|
+
|
|
950
|
+
이 예시들은 다음을 참고하여 작성되었습니다:
|
|
951
|
+
- [Apple Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/)
|
|
952
|
+
- [Toss Design System](https://toss.tech/article/toss-design-system-guide)
|
|
953
|
+
- [Material Design 3](https://m3.material.io/)
|