@ceed/ads 1.13.4 → 1.15.0-next.2
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/Overview.md +11 -0
- package/dist/components/Menu/Menu.d.ts +2 -5
- package/dist/components/Stepper/Stepper.d.ts +6 -0
- package/dist/components/data-display/Avatar.md +428 -0
- package/dist/components/data-display/Badge.md +315 -0
- package/dist/components/data-display/Chip.md +301 -0
- package/dist/components/data-display/DataTable.md +452 -0
- package/dist/components/data-display/InfoSign.md +160 -0
- package/dist/components/data-display/Markdown.md +17 -0
- package/dist/components/data-display/Table.md +1330 -0
- package/dist/components/data-display/Tooltip.md +444 -0
- package/dist/components/data-display/Typography.md +271 -0
- package/dist/components/data-display/llms.txt +17 -0
- package/dist/components/feedback/Alert.md +663 -0
- package/dist/components/feedback/Dialog.md +33 -0
- package/dist/components/feedback/Modal.md +39 -0
- package/dist/components/feedback/llms.txt +11 -0
- package/dist/components/inputs/Autocomplete.md +103 -0
- package/dist/components/inputs/Button.md +334 -0
- package/dist/components/inputs/ButtonGroup.md +382 -0
- package/dist/components/inputs/Calendar.md +19 -0
- package/dist/components/inputs/Checkbox.md +649 -0
- package/dist/components/inputs/CurrencyInput.md +91 -0
- package/dist/components/inputs/DatePicker.md +67 -0
- package/dist/components/inputs/DateRangePicker.md +55 -0
- package/dist/components/inputs/FilterMenu.md +210 -0
- package/dist/components/inputs/IconButton.md +361 -0
- package/dist/components/inputs/Input.md +283 -0
- package/dist/components/inputs/MonthPicker.md +72 -0
- package/dist/components/inputs/MonthRangePicker.md +70 -0
- package/dist/components/inputs/PercentageInput.md +116 -0
- package/dist/components/inputs/RadioButton.md +350 -0
- package/dist/components/inputs/RadioTileGroup.md +418 -0
- package/dist/components/inputs/Select.md +56 -0
- package/dist/components/inputs/Switch.md +577 -0
- package/dist/components/inputs/Textarea.md +64 -0
- package/dist/components/inputs/Uploader/Uploader.md +238 -0
- package/dist/components/inputs/Uploader/llms.txt +9 -0
- package/dist/components/inputs/llms.txt +31 -0
- package/dist/components/layout/Box.md +997 -0
- package/dist/components/layout/Container.md +23 -0
- package/dist/components/layout/Grid.md +728 -0
- package/dist/components/layout/Stack.md +937 -0
- package/dist/components/layout/llms.txt +12 -0
- package/dist/components/llms.txt +14 -0
- package/dist/components/navigation/Breadcrumbs.md +51 -0
- package/dist/components/navigation/Dropdown.md +768 -0
- package/dist/components/navigation/IconMenuButton.md +35 -0
- package/dist/components/navigation/InsetDrawer.md +133 -0
- package/dist/components/navigation/Link.md +24 -0
- package/dist/components/navigation/Menu.md +957 -0
- package/dist/components/navigation/MenuButton.md +39 -0
- package/dist/components/navigation/NavigationGroup.md +17 -0
- package/dist/components/navigation/NavigationItem.md +17 -0
- package/dist/components/navigation/Navigator.md +17 -0
- package/dist/components/navigation/Pagination.md +17 -0
- package/dist/components/navigation/ProfileMenu.md +34 -0
- package/dist/components/navigation/Stepper.md +108 -0
- package/dist/components/navigation/Tabs.md +34 -0
- package/dist/components/navigation/llms.txt +22 -0
- package/dist/components/surfaces/Accordions.md +96 -0
- package/dist/components/surfaces/Card.md +786 -0
- package/dist/components/surfaces/Divider.md +762 -0
- package/dist/components/surfaces/Sheet.md +900 -0
- package/dist/components/surfaces/llms.txt +12 -0
- package/dist/index.cjs +22 -10
- package/dist/index.js +22 -10
- package/dist/llms.txt +75 -0
- package/framer/index.js +36 -36
- package/package.json +8 -4
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
# Badge
|
|
2
|
+
|
|
3
|
+
## Introduction
|
|
4
|
+
|
|
5
|
+
Badge 컴포넌트는 다른 UI 요소 위에 작은 카운트, 상태, 또는 레이블을 표시하는 데 사용됩니다. 주로 알림 수, 상태 표시기, 또는 새로운 콘텐츠를 나타내는 데 활용됩니다.
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
<Badge {...args}>
|
|
9
|
+
<IconButton>
|
|
10
|
+
<NotificationsIcon />
|
|
11
|
+
</IconButton>
|
|
12
|
+
</Badge>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
| Field | Description | Default |
|
|
16
|
+
| ------------ | ------------------- | --------- |
|
|
17
|
+
| badgeContent | 배지에 표시될 내용 | 4 |
|
|
18
|
+
| color | 배지 색상 | "primary" |
|
|
19
|
+
| variant | 배지 스타일 변형 | "solid" |
|
|
20
|
+
| size | 배지 크기 | "md" |
|
|
21
|
+
| invisible | 배지 숨김 여부 | — |
|
|
22
|
+
| showZero | 0일 때 표시 여부 | — |
|
|
23
|
+
| max | 최대 표시 숫자 (99 → 99+) | — |
|
|
24
|
+
|
|
25
|
+
## Usage
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
import { Badge, IconButton } from '@ceed/ads';
|
|
29
|
+
import { NotificationsIcon } from '@mui/icons-material';
|
|
30
|
+
|
|
31
|
+
function MyComponent() {
|
|
32
|
+
return (
|
|
33
|
+
<Badge badgeContent={4} color="danger">
|
|
34
|
+
<IconButton>
|
|
35
|
+
<NotificationsIcon />
|
|
36
|
+
</IconButton>
|
|
37
|
+
</Badge>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Examples
|
|
43
|
+
|
|
44
|
+
### Basic Usage
|
|
45
|
+
|
|
46
|
+
기본적인 Badge 사용법입니다.
|
|
47
|
+
|
|
48
|
+
```tsx
|
|
49
|
+
<div style={{
|
|
50
|
+
display: 'flex',
|
|
51
|
+
gap: '2rem'
|
|
52
|
+
}}>
|
|
53
|
+
<Badge badgeContent={4}>
|
|
54
|
+
<IconButton>
|
|
55
|
+
<NotificationsIcon />
|
|
56
|
+
</IconButton>
|
|
57
|
+
</Badge>
|
|
58
|
+
|
|
59
|
+
<Badge badgeContent={100} max={99}>
|
|
60
|
+
<IconButton>
|
|
61
|
+
<EmailIcon />
|
|
62
|
+
</IconButton>
|
|
63
|
+
</Badge>
|
|
64
|
+
|
|
65
|
+
<Badge badgeContent="NEW">
|
|
66
|
+
<IconButton>
|
|
67
|
+
<NotificationsIcon />
|
|
68
|
+
</IconButton>
|
|
69
|
+
</Badge>
|
|
70
|
+
</div>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Colors
|
|
74
|
+
|
|
75
|
+
다양한 색상을 적용할 수 있습니다.
|
|
76
|
+
|
|
77
|
+
```tsx
|
|
78
|
+
<div style={{
|
|
79
|
+
display: 'flex',
|
|
80
|
+
gap: '2rem'
|
|
81
|
+
}}>
|
|
82
|
+
<Badge badgeContent={4} color="primary">
|
|
83
|
+
<IconButton>
|
|
84
|
+
<NotificationsIcon />
|
|
85
|
+
</IconButton>
|
|
86
|
+
</Badge>
|
|
87
|
+
|
|
88
|
+
<Badge badgeContent={4} color="neutral">
|
|
89
|
+
<IconButton>
|
|
90
|
+
<NotificationsIcon />
|
|
91
|
+
</IconButton>
|
|
92
|
+
</Badge>
|
|
93
|
+
|
|
94
|
+
<Badge badgeContent={4} color="danger">
|
|
95
|
+
<IconButton>
|
|
96
|
+
<NotificationsIcon />
|
|
97
|
+
</IconButton>
|
|
98
|
+
</Badge>
|
|
99
|
+
|
|
100
|
+
<Badge badgeContent={4} color="success">
|
|
101
|
+
<IconButton>
|
|
102
|
+
<NotificationsIcon />
|
|
103
|
+
</IconButton>
|
|
104
|
+
</Badge>
|
|
105
|
+
|
|
106
|
+
<Badge badgeContent={4} color="warning">
|
|
107
|
+
<IconButton>
|
|
108
|
+
<NotificationsIcon />
|
|
109
|
+
</IconButton>
|
|
110
|
+
</Badge>
|
|
111
|
+
</div>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Variants
|
|
115
|
+
|
|
116
|
+
다양한 스타일 변형을 제공합니다.
|
|
117
|
+
|
|
118
|
+
```tsx
|
|
119
|
+
<div style={{
|
|
120
|
+
display: 'flex',
|
|
121
|
+
gap: '2rem'
|
|
122
|
+
}}>
|
|
123
|
+
<Badge badgeContent={4} variant="solid">
|
|
124
|
+
<IconButton>
|
|
125
|
+
<NotificationsIcon />
|
|
126
|
+
</IconButton>
|
|
127
|
+
</Badge>
|
|
128
|
+
|
|
129
|
+
<Badge badgeContent={4} variant="soft">
|
|
130
|
+
<IconButton>
|
|
131
|
+
<NotificationsIcon />
|
|
132
|
+
</IconButton>
|
|
133
|
+
</Badge>
|
|
134
|
+
|
|
135
|
+
<Badge badgeContent={4} variant="outlined">
|
|
136
|
+
<IconButton>
|
|
137
|
+
<NotificationsIcon />
|
|
138
|
+
</IconButton>
|
|
139
|
+
</Badge>
|
|
140
|
+
|
|
141
|
+
<Badge badgeContent={4} variant="plain">
|
|
142
|
+
<IconButton>
|
|
143
|
+
<NotificationsIcon />
|
|
144
|
+
</IconButton>
|
|
145
|
+
</Badge>
|
|
146
|
+
</div>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Sizes
|
|
150
|
+
|
|
151
|
+
크기를 조절할 수 있습니다.
|
|
152
|
+
|
|
153
|
+
```tsx
|
|
154
|
+
<div style={{
|
|
155
|
+
display: 'flex',
|
|
156
|
+
gap: '2rem',
|
|
157
|
+
alignItems: 'center'
|
|
158
|
+
}}>
|
|
159
|
+
<Badge badgeContent={4} size="sm">
|
|
160
|
+
<IconButton size="sm">
|
|
161
|
+
<NotificationsIcon />
|
|
162
|
+
</IconButton>
|
|
163
|
+
</Badge>
|
|
164
|
+
|
|
165
|
+
<Badge badgeContent={4} size="md">
|
|
166
|
+
<IconButton size="md">
|
|
167
|
+
<NotificationsIcon />
|
|
168
|
+
</IconButton>
|
|
169
|
+
</Badge>
|
|
170
|
+
|
|
171
|
+
<Badge badgeContent={4} size="lg">
|
|
172
|
+
<IconButton size="lg">
|
|
173
|
+
<NotificationsIcon />
|
|
174
|
+
</IconButton>
|
|
175
|
+
</Badge>
|
|
176
|
+
</div>
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### With Avatar
|
|
180
|
+
|
|
181
|
+
아바타와 함께 사용할 수 있습니다.
|
|
182
|
+
|
|
183
|
+
```tsx
|
|
184
|
+
<div style={{
|
|
185
|
+
display: 'flex',
|
|
186
|
+
gap: '2rem'
|
|
187
|
+
}}>
|
|
188
|
+
<Badge badgeContent={4} color="danger">
|
|
189
|
+
<Avatar src="https://i.pravatar.cc/40?img=1" />
|
|
190
|
+
</Badge>
|
|
191
|
+
|
|
192
|
+
<Badge badgeContent="●" color="success">
|
|
193
|
+
<Avatar src="https://i.pravatar.cc/40?img=2" />
|
|
194
|
+
</Badge>
|
|
195
|
+
</div>
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Dot Badge
|
|
199
|
+
|
|
200
|
+
내용 없이 점으로만 표시할 수 있습니다.
|
|
201
|
+
|
|
202
|
+
```tsx
|
|
203
|
+
<div style={{
|
|
204
|
+
display: 'flex',
|
|
205
|
+
gap: '2rem'
|
|
206
|
+
}}>
|
|
207
|
+
<Badge variant="solid" color="danger">
|
|
208
|
+
<IconButton>
|
|
209
|
+
<NotificationsIcon />
|
|
210
|
+
</IconButton>
|
|
211
|
+
</Badge>
|
|
212
|
+
|
|
213
|
+
<Badge variant="solid" color="success">
|
|
214
|
+
<Avatar src="https://i.pravatar.cc/40?img=3" />
|
|
215
|
+
</Badge>
|
|
216
|
+
</div>
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Max Count
|
|
220
|
+
|
|
221
|
+
최대 카운트를 설정하여 숫자가 넘을 때 '+' 표시를 할 수 있습니다.
|
|
222
|
+
|
|
223
|
+
```tsx
|
|
224
|
+
<div style={{
|
|
225
|
+
display: 'flex',
|
|
226
|
+
gap: '2rem'
|
|
227
|
+
}}>
|
|
228
|
+
<Badge badgeContent={99}>
|
|
229
|
+
<IconButton>
|
|
230
|
+
<NotificationsIcon />
|
|
231
|
+
</IconButton>
|
|
232
|
+
</Badge>
|
|
233
|
+
|
|
234
|
+
<Badge badgeContent={100} max={99}>
|
|
235
|
+
<IconButton>
|
|
236
|
+
<NotificationsIcon />
|
|
237
|
+
</IconButton>
|
|
238
|
+
</Badge>
|
|
239
|
+
|
|
240
|
+
<Badge badgeContent={1000} max={999}>
|
|
241
|
+
<IconButton>
|
|
242
|
+
<NotificationsIcon />
|
|
243
|
+
</IconButton>
|
|
244
|
+
</Badge>
|
|
245
|
+
</div>
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### Show Zero
|
|
249
|
+
|
|
250
|
+
기본적으로 0일 때는 숨겨지지만, showZero 옵션으로 표시할 수 있습니다.
|
|
251
|
+
|
|
252
|
+
```tsx
|
|
253
|
+
<div style={{
|
|
254
|
+
display: 'flex',
|
|
255
|
+
gap: '2rem'
|
|
256
|
+
}}>
|
|
257
|
+
<div>
|
|
258
|
+
<p>Default (0 숨김)</p>
|
|
259
|
+
<Badge badgeContent={0}>
|
|
260
|
+
<IconButton>
|
|
261
|
+
<NotificationsIcon />
|
|
262
|
+
</IconButton>
|
|
263
|
+
</Badge>
|
|
264
|
+
</div>
|
|
265
|
+
|
|
266
|
+
<div>
|
|
267
|
+
<p>Show zero</p>
|
|
268
|
+
<Badge badgeContent={0} showZero>
|
|
269
|
+
<IconButton>
|
|
270
|
+
<NotificationsIcon />
|
|
271
|
+
</IconButton>
|
|
272
|
+
</Badge>
|
|
273
|
+
</div>
|
|
274
|
+
</div>
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
## Common Use Cases
|
|
278
|
+
|
|
279
|
+
### Notification Count
|
|
280
|
+
|
|
281
|
+
```tsx
|
|
282
|
+
<Badge badgeContent={unreadCount} color="danger">
|
|
283
|
+
<IconButton>
|
|
284
|
+
<NotificationsIcon />
|
|
285
|
+
</IconButton>
|
|
286
|
+
</Badge>
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### Status Indicator
|
|
290
|
+
|
|
291
|
+
```tsx
|
|
292
|
+
<Badge color="success" variant="solid">
|
|
293
|
+
<Avatar src="/user-avatar.jpg" />
|
|
294
|
+
</Badge>
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### New Items
|
|
298
|
+
|
|
299
|
+
```tsx
|
|
300
|
+
<Badge badgeContent="NEW" color="warning">
|
|
301
|
+
<Button>메뉴</Button>
|
|
302
|
+
</Badge>
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
## Best Practices
|
|
306
|
+
|
|
307
|
+
1. **의미 있는 색상**: 색상은 의미를 가지도록 사용하세요 (빨간색은 중요한 알림, 초록색은 성공 상태 등).
|
|
308
|
+
|
|
309
|
+
2. **적절한 콘텐츠**: 너무 긴 텍스트는 피하고, 숫자나 짧은 텍스트를 사용하세요.
|
|
310
|
+
|
|
311
|
+
3. **대비**: Badge의 색상이 배경과 충분한 대비를 가지도록 하세요.
|
|
312
|
+
|
|
313
|
+
4. **접근성**: 시각적 정보만으로 의존하지 않고, 스크린 리더를 위한 적절한 레이블을 제공하세요.
|
|
314
|
+
|
|
315
|
+
5. **일관성**: 애플리케이션 전체에서 Badge 사용 패턴을 일관되게 유지하세요.
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
# Chip
|
|
2
|
+
|
|
3
|
+
## Introduction
|
|
4
|
+
|
|
5
|
+
Chip 컴포넌트는 입력, 속성, 액션을 컴팩트하게 표현하는 UI 요소입니다. 태그, 필터, 연락처, 카테고리 등을 나타내는 데 주로 사용됩니다. 텍스트, 아이콘, 아바타와 함께 사용할 수 있으며, 클릭하거나 삭제할 수 있는 인터랙티브한 기능을 제공합니다.
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
<Chip {...args} />
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
| Field | Description | Default |
|
|
12
|
+
| -------- | ----------- | --------- |
|
|
13
|
+
| children | Chip 내용 | "Chip" |
|
|
14
|
+
| color | Chip 색상 | "primary" |
|
|
15
|
+
| variant | Chip 스타일 변형 | "solid" |
|
|
16
|
+
| size | Chip 크기 | "md" |
|
|
17
|
+
| disabled | 비활성화 상태 | — |
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
import { Chip } from '@ceed/ads';
|
|
23
|
+
|
|
24
|
+
function MyComponent() {
|
|
25
|
+
return (
|
|
26
|
+
<div>
|
|
27
|
+
<Chip>Basic Chip</Chip>
|
|
28
|
+
<Chip clickable onClick={() => console.log('clicked')}>
|
|
29
|
+
Clickable Chip
|
|
30
|
+
</Chip>
|
|
31
|
+
<Chip
|
|
32
|
+
endDecorator={<CloseIcon />}
|
|
33
|
+
onClick={() => console.log('delete')}
|
|
34
|
+
>
|
|
35
|
+
Deletable Chip
|
|
36
|
+
</Chip>
|
|
37
|
+
</div>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Examples
|
|
43
|
+
|
|
44
|
+
### Basic Usage
|
|
45
|
+
|
|
46
|
+
기본적인 Chip 사용법입니다.
|
|
47
|
+
|
|
48
|
+
```tsx
|
|
49
|
+
<div style={{
|
|
50
|
+
display: 'flex',
|
|
51
|
+
gap: '1rem',
|
|
52
|
+
flexWrap: 'wrap'
|
|
53
|
+
}}>
|
|
54
|
+
<Chip>Basic Chip</Chip>
|
|
55
|
+
<Chip disabled>Disabled</Chip>
|
|
56
|
+
<Chip onClick={() => alert('Clicked!')}>Clickable</Chip>
|
|
57
|
+
</div>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Colors
|
|
61
|
+
|
|
62
|
+
다양한 색상을 적용할 수 있습니다.
|
|
63
|
+
|
|
64
|
+
```tsx
|
|
65
|
+
<div style={{
|
|
66
|
+
display: 'flex',
|
|
67
|
+
gap: '1rem',
|
|
68
|
+
flexWrap: 'wrap'
|
|
69
|
+
}}>
|
|
70
|
+
<Chip color="primary">Primary</Chip>
|
|
71
|
+
<Chip color="neutral">Neutral</Chip>
|
|
72
|
+
<Chip color="danger">Danger</Chip>
|
|
73
|
+
<Chip color="success">Success</Chip>
|
|
74
|
+
<Chip color="warning">Warning</Chip>
|
|
75
|
+
</div>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Variants
|
|
79
|
+
|
|
80
|
+
다양한 스타일 변형을 제공합니다.
|
|
81
|
+
|
|
82
|
+
```tsx
|
|
83
|
+
<div style={{
|
|
84
|
+
display: 'flex',
|
|
85
|
+
gap: '1rem',
|
|
86
|
+
flexWrap: 'wrap'
|
|
87
|
+
}}>
|
|
88
|
+
<Chip variant="solid">Solid</Chip>
|
|
89
|
+
<Chip variant="soft">Soft</Chip>
|
|
90
|
+
<Chip variant="outlined">Outlined</Chip>
|
|
91
|
+
<Chip variant="plain">Plain</Chip>
|
|
92
|
+
</div>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Sizes
|
|
96
|
+
|
|
97
|
+
크기를 조절할 수 있습니다.
|
|
98
|
+
|
|
99
|
+
```tsx
|
|
100
|
+
<div style={{
|
|
101
|
+
display: 'flex',
|
|
102
|
+
gap: '1rem',
|
|
103
|
+
alignItems: 'center',
|
|
104
|
+
flexWrap: 'wrap'
|
|
105
|
+
}}>
|
|
106
|
+
<Chip size="sm">Small</Chip>
|
|
107
|
+
<Chip size="md">Medium</Chip>
|
|
108
|
+
<Chip size="lg">Large</Chip>
|
|
109
|
+
</div>
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### With Icons
|
|
113
|
+
|
|
114
|
+
아이콘과 함께 사용할 수 있습니다.
|
|
115
|
+
|
|
116
|
+
```tsx
|
|
117
|
+
<div style={{
|
|
118
|
+
display: 'flex',
|
|
119
|
+
gap: '1rem',
|
|
120
|
+
flexWrap: 'wrap'
|
|
121
|
+
}}>
|
|
122
|
+
<Chip startDecorator={<Add />}>Add Item</Chip>
|
|
123
|
+
<Chip endDecorator={<Close />}>Remove</Chip>
|
|
124
|
+
<Chip startDecorator={<Done />} color="success">
|
|
125
|
+
Completed
|
|
126
|
+
</Chip>
|
|
127
|
+
</div>
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### With Avatar
|
|
131
|
+
|
|
132
|
+
아바타와 함께 사용하여 사용자를 나타낼 수 있습니다.
|
|
133
|
+
|
|
134
|
+
```tsx
|
|
135
|
+
<div style={{
|
|
136
|
+
display: 'flex',
|
|
137
|
+
gap: '1rem',
|
|
138
|
+
flexWrap: 'wrap'
|
|
139
|
+
}}>
|
|
140
|
+
<Chip startDecorator={<Avatar size="sm" src="https://i.pravatar.cc/40?img=1" />}>John Doe</Chip>
|
|
141
|
+
<Chip startDecorator={<Avatar size="sm" src="https://i.pravatar.cc/40?img=2" />}>Jane Smith</Chip>
|
|
142
|
+
</div>
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Deletable
|
|
146
|
+
|
|
147
|
+
삭제 기능을 가진 Chip입니다. 클릭하면 목록에서 제거됩니다.
|
|
148
|
+
|
|
149
|
+
```tsx
|
|
150
|
+
<div style={{
|
|
151
|
+
display: 'flex',
|
|
152
|
+
gap: '1rem',
|
|
153
|
+
flexWrap: 'wrap'
|
|
154
|
+
}}>
|
|
155
|
+
{chips.map(chip => <Chip key={chip} endDecorator={<Close />} onClick={() => handleDelete(chip)} variant="outlined">
|
|
156
|
+
{chip}
|
|
157
|
+
</Chip>)}
|
|
158
|
+
</div>
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Clickable
|
|
162
|
+
|
|
163
|
+
클릭 가능한 Chip으로 필터나 탭으로 사용할 수 있습니다.
|
|
164
|
+
|
|
165
|
+
```tsx
|
|
166
|
+
<div style={{
|
|
167
|
+
display: 'flex',
|
|
168
|
+
gap: '1rem',
|
|
169
|
+
flexWrap: 'wrap'
|
|
170
|
+
}}>
|
|
171
|
+
<Chip onClick={() => alert('Filter: All')}>All</Chip>
|
|
172
|
+
<Chip onClick={() => alert('Filter: Active')} color="success">
|
|
173
|
+
Active
|
|
174
|
+
</Chip>
|
|
175
|
+
<Chip onClick={() => alert('Filter: Completed')} color="neutral">
|
|
176
|
+
Completed
|
|
177
|
+
</Chip>
|
|
178
|
+
</div>
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Clickable Actions
|
|
182
|
+
|
|
183
|
+
클릭하여 다양한 액션을 수행할 수 있습니다.
|
|
184
|
+
|
|
185
|
+
```tsx
|
|
186
|
+
<div style={{
|
|
187
|
+
display: 'flex',
|
|
188
|
+
gap: '1rem',
|
|
189
|
+
flexWrap: 'wrap'
|
|
190
|
+
}}>
|
|
191
|
+
<Chip onClick={() => window.open('#', '_blank')}>Home</Chip>
|
|
192
|
+
<Chip onClick={() => window.open('#', '_blank')} variant="outlined">
|
|
193
|
+
About
|
|
194
|
+
</Chip>
|
|
195
|
+
<Chip onClick={() => window.open('#', '_blank')} variant="soft">
|
|
196
|
+
Contact
|
|
197
|
+
</Chip>
|
|
198
|
+
</div>
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### States
|
|
202
|
+
|
|
203
|
+
다양한 상태를 표현할 수 있습니다.
|
|
204
|
+
|
|
205
|
+
```tsx
|
|
206
|
+
<div style={{
|
|
207
|
+
display: 'flex',
|
|
208
|
+
gap: '1rem',
|
|
209
|
+
flexWrap: 'wrap'
|
|
210
|
+
}}>
|
|
211
|
+
<div>
|
|
212
|
+
<h4>Normal</h4>
|
|
213
|
+
<div style={{
|
|
214
|
+
display: 'flex',
|
|
215
|
+
gap: '0.5rem',
|
|
216
|
+
flexWrap: 'wrap'
|
|
217
|
+
}}>
|
|
218
|
+
<Chip>Default</Chip>
|
|
219
|
+
<Chip onClick={() => {}}>Clickable</Chip>
|
|
220
|
+
<Chip endDecorator={<Close />}>Deletable</Chip>
|
|
221
|
+
</div>
|
|
222
|
+
</div>
|
|
223
|
+
<div>
|
|
224
|
+
<h4>Disabled</h4>
|
|
225
|
+
<div style={{
|
|
226
|
+
display: 'flex',
|
|
227
|
+
gap: '0.5rem',
|
|
228
|
+
flexWrap: 'wrap'
|
|
229
|
+
}}>
|
|
230
|
+
<Chip disabled>Default</Chip>
|
|
231
|
+
<Chip disabled onClick={() => {}}>
|
|
232
|
+
Clickable
|
|
233
|
+
</Chip>
|
|
234
|
+
<Chip disabled endDecorator={<Close />}>
|
|
235
|
+
Deletable
|
|
236
|
+
</Chip>
|
|
237
|
+
</div>
|
|
238
|
+
</div>
|
|
239
|
+
</div>
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## Common Use Cases
|
|
243
|
+
|
|
244
|
+
### Tags
|
|
245
|
+
|
|
246
|
+
```tsx
|
|
247
|
+
<div style={{ display: 'flex', gap: '0.5rem' }}>
|
|
248
|
+
<Chip variant="outlined">React</Chip>
|
|
249
|
+
<Chip variant="outlined">TypeScript</Chip>
|
|
250
|
+
<Chip variant="outlined">JavaScript</Chip>
|
|
251
|
+
</div>
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### Status Indicators
|
|
255
|
+
|
|
256
|
+
```tsx
|
|
257
|
+
<Chip color="success" startDecorator={<CheckIcon />}>
|
|
258
|
+
Completed
|
|
259
|
+
</Chip>
|
|
260
|
+
<Chip color="warning" startDecorator={<ClockIcon />}>
|
|
261
|
+
In Progress
|
|
262
|
+
</Chip>
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Filter Controls
|
|
266
|
+
|
|
267
|
+
```tsx
|
|
268
|
+
<Chip
|
|
269
|
+
clickable
|
|
270
|
+
variant={isActive ? 'solid' : 'outlined'}
|
|
271
|
+
onClick={() => setFilter('all')}
|
|
272
|
+
>
|
|
273
|
+
All Items
|
|
274
|
+
</Chip>
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### Contact Pills
|
|
278
|
+
|
|
279
|
+
```tsx
|
|
280
|
+
<Chip
|
|
281
|
+
startDecorator={<Avatar size="sm" />}
|
|
282
|
+
endDecorator={<CloseIcon />}
|
|
283
|
+
onDelete={() => removeContact(id)}
|
|
284
|
+
>
|
|
285
|
+
John Doe
|
|
286
|
+
</Chip>
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
## Best Practices
|
|
290
|
+
|
|
291
|
+
1. **적절한 크기**: 콘텐츠에 맞는 적절한 크기를 선택하세요. 긴 텍스트는 피하고 간결하게 표현하세요.
|
|
292
|
+
|
|
293
|
+
2. **일관된 스타일**: 같은 맥락에서는 일관된 variant와 color를 사용하세요.
|
|
294
|
+
|
|
295
|
+
3. **명확한 액션**: clickable이나 deletable 기능을 사용할 때는 사용자에게 명확한 피드백을 제공하세요.
|
|
296
|
+
|
|
297
|
+
4. **접근성**: 키보드 탐색이 가능하도록 하고, 스크린 리더를 위한 적절한 레이블을 제공하세요.
|
|
298
|
+
|
|
299
|
+
5. **적절한 간격**: 여러 Chip을 나열할 때는 적절한 간격을 두어 가독성을 높이세요.
|
|
300
|
+
|
|
301
|
+
6. **색상 의미**: 색상은 의미를 가지도록 사용하세요 (성공은 초록색, 경고는 주황색 등).
|