@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.
Files changed (62) hide show
  1. package/dist/components/CurrencyInput/CurrencyInput.d.ts +1 -1
  2. package/dist/components/CurrencyInput/hooks/use-currency-setting.d.ts +2 -2
  3. package/dist/components/ProfileMenu/ProfileMenu.d.ts +1 -1
  4. package/dist/components/SearchBar/SearchBar.d.ts +21 -0
  5. package/dist/components/SearchBar/index.d.ts +3 -0
  6. package/dist/components/data-display/Badge.md +39 -71
  7. package/dist/components/data-display/DataTable.md +1 -1
  8. package/dist/components/data-display/InfoSign.md +98 -74
  9. package/dist/components/data-display/Typography.md +97 -363
  10. package/dist/components/feedback/Dialog.md +62 -76
  11. package/dist/components/feedback/Modal.md +44 -259
  12. package/dist/components/feedback/llms.txt +0 -2
  13. package/dist/components/index.d.ts +2 -0
  14. package/dist/components/inputs/Autocomplete.md +107 -356
  15. package/dist/components/inputs/ButtonGroup.md +106 -115
  16. package/dist/components/inputs/Calendar.md +459 -98
  17. package/dist/components/inputs/CurrencyInput.md +5 -183
  18. package/dist/components/inputs/DatePicker.md +431 -108
  19. package/dist/components/inputs/DateRangePicker.md +492 -131
  20. package/dist/components/inputs/FilterMenu.md +19 -169
  21. package/dist/components/inputs/FilterableCheckboxGroup.md +23 -123
  22. package/dist/components/inputs/IconButton.md +88 -137
  23. package/dist/components/inputs/Input.md +0 -5
  24. package/dist/components/inputs/MonthPicker.md +422 -95
  25. package/dist/components/inputs/MonthRangePicker.md +466 -89
  26. package/dist/components/inputs/PercentageInput.md +16 -185
  27. package/dist/components/inputs/RadioButton.md +35 -163
  28. package/dist/components/inputs/RadioTileGroup.md +61 -150
  29. package/dist/components/inputs/SearchBar.md +44 -0
  30. package/dist/components/inputs/Select.md +326 -222
  31. package/dist/components/inputs/Switch.md +376 -136
  32. package/dist/components/inputs/Textarea.md +10 -213
  33. package/dist/components/inputs/Uploader/Uploader.md +66 -145
  34. package/dist/components/inputs/llms.txt +1 -3
  35. package/dist/components/navigation/Breadcrumbs.md +322 -80
  36. package/dist/components/navigation/Dropdown.md +221 -92
  37. package/dist/components/navigation/IconMenuButton.md +502 -40
  38. package/dist/components/navigation/InsetDrawer.md +738 -68
  39. package/dist/components/navigation/Link.md +298 -39
  40. package/dist/components/navigation/Menu.md +285 -92
  41. package/dist/components/navigation/MenuButton.md +448 -55
  42. package/dist/components/navigation/Pagination.md +338 -47
  43. package/dist/components/navigation/ProfileMenu.md +268 -45
  44. package/dist/components/navigation/Stepper.md +28 -160
  45. package/dist/components/navigation/Tabs.md +316 -57
  46. package/dist/components/surfaces/Sheet.md +334 -151
  47. package/dist/index.browser.js +15 -13
  48. package/dist/index.browser.js.map +4 -4
  49. package/dist/index.cjs +289 -288
  50. package/dist/index.d.ts +1 -1
  51. package/dist/index.js +426 -369
  52. package/dist/llms.txt +1 -8
  53. package/framer/index.js +1 -1
  54. package/package.json +16 -15
  55. package/dist/chunks/rehype-accent-FZRUD7VI.js +0 -39
  56. package/dist/components/feedback/CircularProgress.md +0 -257
  57. package/dist/components/feedback/Skeleton.md +0 -280
  58. package/dist/components/inputs/FormControl.md +0 -361
  59. package/dist/components/inputs/RadioList.md +0 -241
  60. package/dist/components/inputs/Slider.md +0 -334
  61. package/dist/guides/ThemeProvider.md +0 -116
  62. package/dist/guides/llms.txt +0 -9
@@ -2,9 +2,7 @@
2
2
 
3
3
  ## Introduction
4
4
 
5
- IconButton is a compact, icon-only button component designed for actions where a visual symbol alone is sufficient to communicate meaning. It is ideal for toolbars, table row actions, card headers, navigation bars, and any context where space efficiency is critical.
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 style={{ display: 'flex', gap: '0.5rem' }}>
32
- <IconButton aria-label="Add item" onClick={handleAdd}>
28
+ <div>
29
+ <IconButton onClick={() => console.log('clicked')}>
33
30
  <AddIcon />
34
31
  </IconButton>
35
32
 
36
- <IconButton color="danger" aria-label="Delete item" onClick={handleDelete}>
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
- ## Colors
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
- IconButton supports five semantic colors: `primary` (default), `neutral`, `danger`, `success`, and `warning`. Choose a color that reflects the nature of the action.
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
- ## Variants
100
+ ### Variants
73
101
 
74
- Four visual variants are available: `solid` (filled background), `soft` (tinted background), `outlined` (border only), and `plain` (no background). Use `outlined` or `plain` for secondary actions, and `solid` for primary or high-emphasis actions.
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
- ## Sizes
125
+ ### Sizes
98
126
 
99
- The `size` prop controls the button dimensions. Available sizes are `sm`, `md` (default), and `lg`. Ensure touch targets meet the minimum 44px recommended size for touch interfaces.
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
- ## States
147
+ ### States
120
148
 
121
- IconButton supports multiple interactive states including normal, disabled, and loading. Use `disabled` to prevent interaction and `loading` to indicate an in-progress async operation.
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
- ## With Badge
205
+ ### With Badge
178
206
 
179
- Combine IconButton with Badge to display notification counts, status indicators, or unread markers alongside the button.
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
- ## With Tooltip
233
+ ### With Tooltip
206
234
 
207
- Wrap IconButton in a Tooltip to provide a text description on hover. This is especially important for icon-only buttons since the icon alone may not be self-explanatory for all users.
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
- ## Circular Variants
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
- A practical example of IconButton used for common CRUD operations with distinct colors signaling the nature of each action.
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
- ### Table Row Actions
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
- import CloseIcon from '@mui/icons-material/Close';
334
-
335
- <IconButton
336
- variant="plain"
337
- color="neutral"
338
- size="sm"
339
- aria-label="Close dialog"
340
- onClick={onClose}
341
- sx={{ position: 'absolute', top: 8, right: 8 }}
342
- >
343
- <CloseIcon />
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 Back Button
312
+ ### Navigation
348
313
 
349
314
  ```tsx
350
- import ArrowBackIcon from '@mui/icons-material/ArrowBack';
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
- ## Best Practices
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
- // Accessible icon button
368
- <IconButton aria-label="Delete item" color="danger">
369
- <DeleteIcon />
323
+ <IconButton onClick={handleSettings} color="neutral">
324
+ <SettingsIcon />
370
325
  </IconButton>
371
-
372
- // ❌ No accessible label
373
- <IconButton color="danger">
374
- <DeleteIcon />
326
+ <IconButton onClick={handleMoreOptions}>
327
+ <MoreVertIcon />
375
328
  </IconButton>
376
329
  ```
377
330
 
378
- 2. **Use semantic colors to convey intent.** Match the color to the action's nature: `danger` for destructive actions, `success` for confirmations, `neutral` for general-purpose actions.
331
+ ### Social Actions
379
332
 
380
333
  ```tsx
381
- // Color matches the action
382
- <IconButton color="danger" aria-label="Delete">
383
- <DeleteIcon />
334
+ <IconButton onClick={handleLike} color="danger">
335
+ <FavoriteIcon />
384
336
  </IconButton>
385
-
386
- // ❌ Misleading color
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
- 3. **Use the `loading` prop for async operations.** This prevents double-clicks and provides visual feedback during network requests or processing.
342
+ ## Best Practices
393
343
 
394
- ```tsx
395
- // ✅ Shows loading spinner during async action
396
- <IconButton loading={isSaving} aria-label="Save" onClick={handleSave}>
397
- <SaveIcon />
398
- </IconButton>
399
- ```
344
+ 1. **명확한 아이콘**: 사용자가 쉽게 이해할 수 있는 명확하고 직관적인 아이콘을 사용하세요.
345
+
346
+ 2. **적절한 크기**: 터치 인터페이스를 고려하여 최소 44px 이상의 터치 영역을 확보하세요.
347
+
348
+ 3. **접근성**:
349
+ - `title` 속성이나 `aria-label`을 제공하여 스크린 리더 사용자를 위한 설명을 추가하세요.
350
+ - Tooltip과 함께 사용하여 기능을 명확히 설명하세요.
400
351
 
401
- 4. **Prefer universally recognized icons.** Choose icons that are widely understood (e.g., trash can for delete, pencil for edit, plus for add). Avoid ambiguous symbols without a Tooltip.
352
+ 4. **일관된 스타일**: 같은 맥락에서는 일관된 variant와 색상을 사용하세요.
402
353
 
403
- 5. **Maintain consistent sizing within the same context.** Use the same `size` and `variant` for all IconButtons in a toolbar or action group to keep the interface clean and predictable.
354
+ 5. **의미 있는 색상**:
355
+ - 빨간색(danger): 삭제, 취소 등의 위험한 액션
356
+ - 초록색(success): 저장, 승인 등의 긍정적인 액션
357
+ - 회색(neutral): 일반적인 액션
404
358
 
405
- ## Accessibility
359
+ 6. **피드백 제공**: 클릭 시 명확한 피드백을 제공하여 사용자가 액션이 실행되었음을 알 수 있도록 하세요.
406
360
 
407
- - **`aria-label` is essential**: Every IconButton must have either an `aria-label`, `aria-labelledby`, or a wrapping Tooltip with `title` to provide a text alternative for screen readers.
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
  ```