@ceed/ads 1.29.1 → 1.30.0-next.1
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/components/CurrencyInput/CurrencyInput.d.ts +1 -1
- package/dist/components/CurrencyInput/hooks/use-currency-setting.d.ts +2 -2
- package/dist/components/ProfileMenu/ProfileMenu.d.ts +1 -1
- package/dist/components/SearchBar/SearchBar.d.ts +21 -0
- package/dist/components/SearchBar/index.d.ts +3 -0
- package/dist/components/data-display/Badge.md +39 -71
- package/dist/components/data-display/DataTable.md +1 -1
- package/dist/components/data-display/InfoSign.md +98 -74
- package/dist/components/data-display/Typography.md +97 -363
- package/dist/components/feedback/Dialog.md +62 -76
- package/dist/components/feedback/Modal.md +44 -259
- package/dist/components/feedback/llms.txt +0 -2
- package/dist/components/index.d.ts +2 -0
- package/dist/components/inputs/Autocomplete.md +107 -356
- package/dist/components/inputs/ButtonGroup.md +106 -115
- package/dist/components/inputs/Calendar.md +459 -98
- package/dist/components/inputs/CurrencyInput.md +5 -183
- package/dist/components/inputs/DatePicker.md +431 -108
- package/dist/components/inputs/DateRangePicker.md +492 -131
- package/dist/components/inputs/FilterMenu.md +19 -169
- package/dist/components/inputs/FilterableCheckboxGroup.md +23 -123
- package/dist/components/inputs/IconButton.md +88 -137
- package/dist/components/inputs/Input.md +0 -5
- package/dist/components/inputs/MonthPicker.md +422 -95
- package/dist/components/inputs/MonthRangePicker.md +466 -89
- package/dist/components/inputs/PercentageInput.md +16 -185
- package/dist/components/inputs/RadioButton.md +35 -163
- package/dist/components/inputs/RadioTileGroup.md +61 -150
- package/dist/components/inputs/SearchBar.md +44 -0
- package/dist/components/inputs/Select.md +326 -222
- package/dist/components/inputs/Switch.md +376 -136
- package/dist/components/inputs/Textarea.md +10 -213
- package/dist/components/inputs/Uploader/Uploader.md +66 -145
- package/dist/components/inputs/llms.txt +1 -3
- package/dist/components/navigation/Breadcrumbs.md +322 -80
- package/dist/components/navigation/Dropdown.md +221 -92
- package/dist/components/navigation/IconMenuButton.md +502 -40
- package/dist/components/navigation/InsetDrawer.md +738 -68
- package/dist/components/navigation/Link.md +298 -39
- package/dist/components/navigation/Menu.md +285 -92
- package/dist/components/navigation/MenuButton.md +448 -55
- package/dist/components/navigation/Pagination.md +338 -47
- package/dist/components/navigation/ProfileMenu.md +268 -45
- package/dist/components/navigation/Stepper.md +28 -160
- package/dist/components/navigation/Tabs.md +316 -57
- package/dist/components/surfaces/Sheet.md +334 -151
- package/dist/index.browser.js +15 -13
- package/dist/index.browser.js.map +4 -4
- package/dist/index.cjs +289 -288
- package/dist/index.d.ts +1 -1
- package/dist/index.js +426 -369
- package/dist/llms.txt +1 -8
- package/framer/index.js +1 -1
- package/package.json +16 -15
- package/dist/chunks/rehype-accent-FZRUD7VI.js +0 -39
- package/dist/components/feedback/CircularProgress.md +0 -257
- package/dist/components/feedback/Skeleton.md +0 -280
- package/dist/components/inputs/FormControl.md +0 -361
- package/dist/components/inputs/RadioList.md +0 -241
- package/dist/components/inputs/Slider.md +0 -334
- package/dist/guides/ThemeProvider.md +0 -116
- package/dist/guides/llms.txt +0 -9
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Introduction
|
|
4
4
|
|
|
5
|
-
IconButton
|
|
6
|
-
|
|
7
|
-
Because IconButton omits visible text, it relies entirely on the icon's clarity and supplementary accessibility attributes to convey its purpose. Always pair it with `aria-label` or a Tooltip to ensure all users can understand the button's function.
|
|
5
|
+
IconButton 컴포넌트는 아이콘만으로 구성된 버튼입니다. 공간 효율적이며, 직관적인 액션을 제공하는 UI 요소로 주로 툴바, 헤더, 카드 등에서 사용됩니다. 텍스트 없이도 의미를 전달할 수 있는 명확한 아이콘과 함께 사용하세요.
|
|
8
6
|
|
|
9
7
|
```tsx
|
|
10
8
|
<IconButton {...args} />
|
|
@@ -24,26 +22,56 @@ Because IconButton omits visible text, it relies entirely on the icon's clarity
|
|
|
24
22
|
```tsx
|
|
25
23
|
import { IconButton } from '@ceed/ads';
|
|
26
24
|
import AddIcon from '@mui/icons-material/Add';
|
|
27
|
-
import DeleteIcon from '@mui/icons-material/Delete';
|
|
28
25
|
|
|
29
26
|
function MyComponent() {
|
|
30
27
|
return (
|
|
31
|
-
<div
|
|
32
|
-
<IconButton
|
|
28
|
+
<div>
|
|
29
|
+
<IconButton onClick={() => console.log('clicked')}>
|
|
33
30
|
<AddIcon />
|
|
34
31
|
</IconButton>
|
|
35
32
|
|
|
36
|
-
<IconButton color="danger"
|
|
33
|
+
<IconButton color="danger" onClick={() => console.log('delete')}>
|
|
37
34
|
<DeleteIcon />
|
|
38
35
|
</IconButton>
|
|
36
|
+
|
|
37
|
+
<IconButton disabled>
|
|
38
|
+
<EditIcon />
|
|
39
|
+
</IconButton>
|
|
39
40
|
</div>
|
|
40
41
|
);
|
|
41
42
|
}
|
|
42
43
|
```
|
|
43
44
|
|
|
44
|
-
##
|
|
45
|
+
## Examples
|
|
46
|
+
|
|
47
|
+
### Basic Usage
|
|
48
|
+
|
|
49
|
+
기본적인 IconButton 사용법입니다.
|
|
50
|
+
|
|
51
|
+
```tsx
|
|
52
|
+
<div style={{
|
|
53
|
+
display: 'flex',
|
|
54
|
+
gap: '1rem',
|
|
55
|
+
alignItems: 'center'
|
|
56
|
+
}}>
|
|
57
|
+
<IconButton>
|
|
58
|
+
<Add />
|
|
59
|
+
</IconButton>
|
|
60
|
+
<IconButton>
|
|
61
|
+
<Edit />
|
|
62
|
+
</IconButton>
|
|
63
|
+
<IconButton>
|
|
64
|
+
<Delete />
|
|
65
|
+
</IconButton>
|
|
66
|
+
<IconButton>
|
|
67
|
+
<Settings />
|
|
68
|
+
</IconButton>
|
|
69
|
+
</div>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Colors
|
|
45
73
|
|
|
46
|
-
|
|
74
|
+
다양한 색상을 적용할 수 있습니다.
|
|
47
75
|
|
|
48
76
|
```tsx
|
|
49
77
|
<div style={{
|
|
@@ -69,9 +97,9 @@ IconButton supports five semantic colors: `primary` (default), `neutral`, `dange
|
|
|
69
97
|
</div>
|
|
70
98
|
```
|
|
71
99
|
|
|
72
|
-
|
|
100
|
+
### Variants
|
|
73
101
|
|
|
74
|
-
|
|
102
|
+
다양한 스타일 변형을 제공합니다.
|
|
75
103
|
|
|
76
104
|
```tsx
|
|
77
105
|
<div style={{
|
|
@@ -94,9 +122,9 @@ Four visual variants are available: `solid` (filled background), `soft` (tinted
|
|
|
94
122
|
</div>
|
|
95
123
|
```
|
|
96
124
|
|
|
97
|
-
|
|
125
|
+
### Sizes
|
|
98
126
|
|
|
99
|
-
|
|
127
|
+
크기를 조절할 수 있습니다.
|
|
100
128
|
|
|
101
129
|
```tsx
|
|
102
130
|
<div style={{
|
|
@@ -116,9 +144,9 @@ The `size` prop controls the button dimensions. Available sizes are `sm`, `md` (
|
|
|
116
144
|
</div>
|
|
117
145
|
```
|
|
118
146
|
|
|
119
|
-
|
|
147
|
+
### States
|
|
120
148
|
|
|
121
|
-
|
|
149
|
+
다양한 상태를 표현할 수 있습니다.
|
|
122
150
|
|
|
123
151
|
```tsx
|
|
124
152
|
<div style={{
|
|
@@ -174,9 +202,9 @@ IconButton supports multiple interactive states including normal, disabled, and
|
|
|
174
202
|
</div>
|
|
175
203
|
```
|
|
176
204
|
|
|
177
|
-
|
|
205
|
+
### With Badge
|
|
178
206
|
|
|
179
|
-
|
|
207
|
+
Badge와 함께 사용하여 알림 수나 상태를 표시할 수 있습니다.
|
|
180
208
|
|
|
181
209
|
```tsx
|
|
182
210
|
<div style={{
|
|
@@ -202,9 +230,9 @@ Combine IconButton with Badge to display notification counts, status indicators,
|
|
|
202
230
|
</div>
|
|
203
231
|
```
|
|
204
232
|
|
|
205
|
-
|
|
233
|
+
### With Tooltip
|
|
206
234
|
|
|
207
|
-
|
|
235
|
+
Tooltip과 함께 사용하여 버튼의 기능을 설명할 수 있습니다.
|
|
208
236
|
|
|
209
237
|
```tsx
|
|
210
238
|
<div style={{
|
|
@@ -235,40 +263,9 @@ Wrap IconButton in a Tooltip to provide a text description on hover. This is esp
|
|
|
235
263
|
</div>
|
|
236
264
|
```
|
|
237
265
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
IconButton renders as a circular shape by default, making it visually distinct from rectangular text buttons and well-suited for floating action buttons and compact action rows.
|
|
241
|
-
|
|
242
|
-
```tsx
|
|
243
|
-
<div style={{
|
|
244
|
-
display: 'flex',
|
|
245
|
-
gap: '2rem',
|
|
246
|
-
alignItems: 'center'
|
|
247
|
-
}}>
|
|
248
|
-
<div>
|
|
249
|
-
<h4>Default</h4>
|
|
250
|
-
<div style={{
|
|
251
|
-
display: 'flex',
|
|
252
|
-
gap: '1rem',
|
|
253
|
-
alignItems: 'center'
|
|
254
|
-
}}>
|
|
255
|
-
<IconButton>
|
|
256
|
-
<Add />
|
|
257
|
-
</IconButton>
|
|
258
|
-
<IconButton variant="outlined">
|
|
259
|
-
<Edit />
|
|
260
|
-
</IconButton>
|
|
261
|
-
<IconButton variant="soft">
|
|
262
|
-
<Delete />
|
|
263
|
-
</IconButton>
|
|
264
|
-
</div>
|
|
265
|
-
</div>
|
|
266
|
-
</div>
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
## Action Buttons
|
|
266
|
+
### Action Buttons
|
|
270
267
|
|
|
271
|
-
|
|
268
|
+
실제 액션을 수행하는 버튼들의 예제입니다.
|
|
272
269
|
|
|
273
270
|
```tsx
|
|
274
271
|
<div style={{
|
|
@@ -296,115 +293,69 @@ A practical example of IconButton used for common CRUD operations with distinct
|
|
|
296
293
|
|
|
297
294
|
## Common Use Cases
|
|
298
295
|
|
|
299
|
-
###
|
|
300
|
-
|
|
301
|
-
```tsx
|
|
302
|
-
import { IconButton, Tooltip } from '@ceed/ads';
|
|
303
|
-
import EditIcon from '@mui/icons-material/Edit';
|
|
304
|
-
import DeleteIcon from '@mui/icons-material/Delete';
|
|
305
|
-
import VisibilityIcon from '@mui/icons-material/Visibility';
|
|
306
|
-
|
|
307
|
-
function RowActions({ onView, onEdit, onDelete }) {
|
|
308
|
-
return (
|
|
309
|
-
<div style={{ display: 'flex', gap: '0.25rem' }}>
|
|
310
|
-
<Tooltip title="View details">
|
|
311
|
-
<IconButton size="sm" variant="plain" color="neutral" onClick={onView}>
|
|
312
|
-
<VisibilityIcon />
|
|
313
|
-
</IconButton>
|
|
314
|
-
</Tooltip>
|
|
315
|
-
<Tooltip title="Edit">
|
|
316
|
-
<IconButton size="sm" variant="plain" color="neutral" onClick={onEdit}>
|
|
317
|
-
<EditIcon />
|
|
318
|
-
</IconButton>
|
|
319
|
-
</Tooltip>
|
|
320
|
-
<Tooltip title="Delete">
|
|
321
|
-
<IconButton size="sm" variant="plain" color="danger" onClick={onDelete}>
|
|
322
|
-
<DeleteIcon />
|
|
323
|
-
</IconButton>
|
|
324
|
-
</Tooltip>
|
|
325
|
-
</div>
|
|
326
|
-
);
|
|
327
|
-
}
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
### Dialog Close Button
|
|
296
|
+
### Toolbar Actions
|
|
331
297
|
|
|
332
298
|
```tsx
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
<
|
|
336
|
-
|
|
337
|
-
color="neutral"
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
onClick={
|
|
341
|
-
|
|
342
|
-
>
|
|
343
|
-
|
|
344
|
-
</IconButton>
|
|
299
|
+
<div style={{ display: 'flex', gap: '0.5rem' }}>
|
|
300
|
+
<IconButton onClick={handleAdd} title="Add item">
|
|
301
|
+
<AddIcon />
|
|
302
|
+
</IconButton>
|
|
303
|
+
<IconButton onClick={handleEdit} color="neutral" title="Edit">
|
|
304
|
+
<EditIcon />
|
|
305
|
+
</IconButton>
|
|
306
|
+
<IconButton onClick={handleDelete} color="danger" title="Delete">
|
|
307
|
+
<DeleteIcon />
|
|
308
|
+
</IconButton>
|
|
309
|
+
</div>
|
|
345
310
|
```
|
|
346
311
|
|
|
347
|
-
### Navigation
|
|
312
|
+
### Navigation
|
|
348
313
|
|
|
349
314
|
```tsx
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
<IconButton
|
|
353
|
-
variant="outlined"
|
|
354
|
-
color="neutral"
|
|
355
|
-
aria-label="Go back"
|
|
356
|
-
onClick={() => router.back()}
|
|
357
|
-
>
|
|
315
|
+
<IconButton onClick={() => router.back()} variant="outlined">
|
|
358
316
|
<ArrowBackIcon />
|
|
359
317
|
</IconButton>
|
|
360
318
|
```
|
|
361
319
|
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
1. **Always provide an accessible label.** Since there is no visible text, use `aria-label` or wrap with a Tooltip to describe the action.
|
|
320
|
+
### Settings & More Options
|
|
365
321
|
|
|
366
322
|
```tsx
|
|
367
|
-
|
|
368
|
-
<
|
|
369
|
-
<DeleteIcon />
|
|
323
|
+
<IconButton onClick={handleSettings} color="neutral">
|
|
324
|
+
<SettingsIcon />
|
|
370
325
|
</IconButton>
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
<IconButton color="danger">
|
|
374
|
-
<DeleteIcon />
|
|
326
|
+
<IconButton onClick={handleMoreOptions}>
|
|
327
|
+
<MoreVertIcon />
|
|
375
328
|
</IconButton>
|
|
376
329
|
```
|
|
377
330
|
|
|
378
|
-
|
|
331
|
+
### Social Actions
|
|
379
332
|
|
|
380
333
|
```tsx
|
|
381
|
-
|
|
382
|
-
<
|
|
383
|
-
<DeleteIcon />
|
|
334
|
+
<IconButton onClick={handleLike} color="danger">
|
|
335
|
+
<FavoriteIcon />
|
|
384
336
|
</IconButton>
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
<IconButton color="success" aria-label="Delete">
|
|
388
|
-
<DeleteIcon />
|
|
337
|
+
<IconButton onClick={handleShare} color="primary">
|
|
338
|
+
<ShareIcon />
|
|
389
339
|
</IconButton>
|
|
390
340
|
```
|
|
391
341
|
|
|
392
|
-
|
|
342
|
+
## Best Practices
|
|
393
343
|
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
344
|
+
1. **명확한 아이콘**: 사용자가 쉽게 이해할 수 있는 명확하고 직관적인 아이콘을 사용하세요.
|
|
345
|
+
|
|
346
|
+
2. **적절한 크기**: 터치 인터페이스를 고려하여 최소 44px 이상의 터치 영역을 확보하세요.
|
|
347
|
+
|
|
348
|
+
3. **접근성**:
|
|
349
|
+
- `title` 속성이나 `aria-label`을 제공하여 스크린 리더 사용자를 위한 설명을 추가하세요.
|
|
350
|
+
- Tooltip과 함께 사용하여 기능을 명확히 설명하세요.
|
|
400
351
|
|
|
401
|
-
4.
|
|
352
|
+
4. **일관된 스타일**: 같은 맥락에서는 일관된 variant와 색상을 사용하세요.
|
|
402
353
|
|
|
403
|
-
5.
|
|
354
|
+
5. **의미 있는 색상**:
|
|
355
|
+
- 빨간색(danger): 삭제, 취소 등의 위험한 액션
|
|
356
|
+
- 초록색(success): 저장, 승인 등의 긍정적인 액션
|
|
357
|
+
- 회색(neutral): 일반적인 액션
|
|
404
358
|
|
|
405
|
-
|
|
359
|
+
6. **피드백 제공**: 클릭 시 명확한 피드백을 제공하여 사용자가 액션이 실행되었음을 알 수 있도록 하세요.
|
|
406
360
|
|
|
407
|
-
|
|
408
|
-
- **Keyboard interaction**: IconButton is focusable via `Tab` and can be activated with `Enter` or `Space`. Focus indicators are displayed by default.
|
|
409
|
-
- **Disabled state**: When `disabled` is set, the button receives `aria-disabled="true"` and becomes non-interactive. It remains visible in the DOM for screen readers to announce.
|
|
410
|
-
- **Touch targets**: Ensure the rendered button is at least 44x44 pixels for touch accessibility. The `sm` size may need additional padding in touch-heavy interfaces.
|
|
361
|
+
7. **로딩 상태**: 비동기 작업 시 `loading` prop을 사용하여 사용자에게 진행 상황을 알려주세요.
|
|
@@ -2,11 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Input 컴포넌트는 사용자로부터 텍스트 입력을 받기 위한 기본 컴포넌트입니다. 다양한 스타일, 크기 및 기능을 지원합니다.
|
|
4
4
|
|
|
5
|
-
> 💡 **Form 구성 시 내장 prop 사용을 권장합니다**
|
|
6
|
-
>
|
|
7
|
-
> 이 컴포넌트는 `label`, `helperText` 등의 Form 요소를 자체적으로 지원합니다.
|
|
8
|
-
> Form을 구성할 때 Typography로 별도의 label이나 helperText를 만드는 대신, 컴포넌트의 내장 prop을 사용하세요.
|
|
9
|
-
|
|
10
5
|
```tsx
|
|
11
6
|
<Input />
|
|
12
7
|
```
|