@ceed/cds 1.29.0 → 1.29.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 (53) hide show
  1. package/dist/Overview.md +5 -5
  2. package/dist/components/data-display/Avatar.md +110 -69
  3. package/dist/components/data-display/Badge.md +91 -39
  4. package/dist/components/data-display/Chip.md +49 -20
  5. package/dist/components/data-display/DataTable.md +93 -0
  6. package/dist/components/data-display/InfoSign.md +12 -0
  7. package/dist/components/data-display/Table.md +72 -55
  8. package/dist/components/data-display/Tooltip.md +40 -40
  9. package/dist/components/data-display/Typography.md +53 -70
  10. package/dist/components/feedback/Alert.md +88 -72
  11. package/dist/components/feedback/CircularProgress.md +17 -0
  12. package/dist/components/feedback/Skeleton.md +17 -0
  13. package/dist/components/inputs/Button.md +94 -68
  14. package/dist/components/inputs/ButtonGroup.md +17 -0
  15. package/dist/components/inputs/Calendar.md +118 -457
  16. package/dist/components/inputs/Checkbox.md +185 -430
  17. package/dist/components/inputs/CurrencyInput.md +22 -0
  18. package/dist/components/inputs/DatePicker.md +36 -0
  19. package/dist/components/inputs/DateRangePicker.md +26 -0
  20. package/dist/components/inputs/FilterableCheckboxGroup.md +20 -3
  21. package/dist/components/inputs/FormControl.md +32 -2
  22. package/dist/components/inputs/IconButton.md +18 -0
  23. package/dist/components/inputs/Input.md +198 -136
  24. package/dist/components/inputs/MonthPicker.md +25 -0
  25. package/dist/components/inputs/MonthRangePicker.md +23 -0
  26. package/dist/components/inputs/PercentageInput.md +25 -0
  27. package/dist/components/inputs/RadioButton.md +23 -0
  28. package/dist/components/inputs/RadioList.md +20 -1
  29. package/dist/components/inputs/RadioTileGroup.md +37 -3
  30. package/dist/components/inputs/Select.md +56 -0
  31. package/dist/components/inputs/Slider.md +23 -0
  32. package/dist/components/inputs/Switch.md +20 -0
  33. package/dist/components/inputs/Textarea.md +32 -8
  34. package/dist/components/inputs/Uploader/Uploader.md +21 -0
  35. package/dist/components/layout/Box.md +52 -41
  36. package/dist/components/layout/Grid.md +87 -81
  37. package/dist/components/layout/Stack.md +88 -68
  38. package/dist/components/navigation/Breadcrumbs.md +57 -46
  39. package/dist/components/navigation/Drawer.md +17 -0
  40. package/dist/components/navigation/Dropdown.md +13 -0
  41. package/dist/components/navigation/IconMenuButton.md +17 -0
  42. package/dist/components/navigation/InsetDrawer.md +130 -292
  43. package/dist/components/navigation/Link.md +78 -0
  44. package/dist/components/navigation/Menu.md +17 -0
  45. package/dist/components/navigation/MenuButton.md +18 -0
  46. package/dist/components/navigation/Pagination.md +13 -0
  47. package/dist/components/navigation/Stepper.md +15 -0
  48. package/dist/components/navigation/Tabs.md +27 -0
  49. package/dist/components/surfaces/Accordions.md +804 -49
  50. package/dist/components/surfaces/Card.md +173 -97
  51. package/dist/components/surfaces/Divider.md +246 -82
  52. package/dist/components/surfaces/Sheet.md +15 -0
  53. package/package.json +1 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Introduction
4
4
 
5
- Alert 컴포넌트는 사용자에게 중요한 정보, 성공 메시지, 경고, 오류 등을 전달하는 피드백 컴포넌트입니다. Joy UI Alert 기반으로 하며, 다양한 색상과 변형을 통해 메시지의 중요도와 성격을 시각적으로 구분할 있습니다. 시스템 알림, 검증 결과, 작업 완료 상태 등을 사용자에게 명확하게 전달하는 사용됩니다.
5
+ The Alert component is a feedback component used to communicate important information, success messages, warnings, errors, and more to users. It is based on Joy UI Alert and uses a variety of colors and variants to visually distinguish the importance and nature of a message. It is used to clearly communicate system notifications, form validation results, task completion states, and similar feedback.
6
6
 
7
7
  ```tsx
8
8
  <Alert
@@ -30,10 +30,10 @@ import { Alert } from '@ceed/cds';
30
30
  function MyComponent() {
31
31
  return (
32
32
  <div>
33
- {/* 기본 알림 */}
33
+ {/* Basic alert */}
34
34
  <Alert content="이것은 기본 알림입니다." />
35
35
 
36
- {/* 성공 메시지 */}
36
+ {/* Success message */}
37
37
  <Alert
38
38
  color="success"
39
39
  title="저장 완료"
@@ -41,7 +41,7 @@ function MyComponent() {
41
41
  startDecorator={<CheckCircleIcon />}
42
42
  />
43
43
 
44
- {/* 오류 메시지 */}
44
+ {/* Error message */}
45
45
  <Alert
46
46
  color="danger"
47
47
  title="오류 발생"
@@ -58,7 +58,7 @@ function MyComponent() {
58
58
 
59
59
  ### Basic Usage
60
60
 
61
- 가장 기본적인 Alert 사용법입니다.
61
+ The most basic Alert usage.
62
62
 
63
63
  ```tsx
64
64
  <Alert
@@ -69,7 +69,7 @@ function MyComponent() {
69
69
 
70
70
  ### Colors
71
71
 
72
- 다양한 색상을 통해 메시지의 성격을 구분할 있습니다.
72
+ You can distinguish message types through various colors.
73
73
 
74
74
  ```tsx
75
75
  <div style={{
@@ -124,15 +124,15 @@ function MyComponent() {
124
124
  </div>
125
125
  ```
126
126
 
127
- - **primary**: 일반적인 정보 메시지
128
- - **success**: 성공, 완료 메시지
129
- - **warning**: 주의, 경고 메시지
130
- - **danger**: 오류, 위험 메시지
131
- - **neutral**: 중립적인 메시지
127
+ - **primary**: General informational message
128
+ - **success**: Success or completion message
129
+ - **warning**: Caution or warning message
130
+ - **danger**: Error or risk message
131
+ - **neutral**: Neutral message
132
132
 
133
133
  ### With Start Decorator
134
134
 
135
- 아이콘이나 다른 요소를 메시지 앞에 추가할 있습니다.
135
+ You can add an icon or another element before the message.
136
136
 
137
137
  ```tsx
138
138
  <Alert
@@ -144,7 +144,7 @@ function MyComponent() {
144
144
 
145
145
  ### With Title
146
146
 
147
- 제목을 추가하여 메시지를 구조화할 있습니다.
147
+ You can structure the message by adding a title.
148
148
 
149
149
  ```tsx
150
150
  <Alert
@@ -156,7 +156,7 @@ function MyComponent() {
156
156
 
157
157
  ### With Actions
158
158
 
159
- 사용자가 수행할 있는 액션을 추가할 있습니다.
159
+ You can add actions the user can take.
160
160
 
161
161
  ```tsx
162
162
  <Alert
@@ -168,7 +168,7 @@ function MyComponent() {
168
168
 
169
169
  ### Complete Alert
170
170
 
171
- 모든 요소를 포함한 완전한 Alert입니다.
171
+ A complete Alert containing all elements.
172
172
 
173
173
  ```tsx
174
174
  <Alert
@@ -184,7 +184,7 @@ function MyComponent() {
184
184
 
185
185
  ### Form Validation
186
186
 
187
- 검증 결과를 표시할 사용합니다.
187
+ Used to display form validation results.
188
188
 
189
189
  ```tsx
190
190
  function LoginForm() {
@@ -218,9 +218,17 @@ function LoginForm() {
218
218
  />
219
219
  )}
220
220
 
221
- {success && <Alert color="success" content="로그인이 완료되었습니다." startDecorator={<CheckCircleIcon />} />}
221
+ {success && (
222
+ <Alert
223
+ color="success"
224
+ content="로그인이 완료되었습니다."
225
+ startDecorator={<CheckCircleIcon />}
226
+ />
227
+ )}
222
228
 
223
- <form onSubmit={handleSubmit}>{/* 폼 필드들 */}</form>
229
+ <form onSubmit={handleSubmit}>
230
+ {/* Form fields */}
231
+ </form>
224
232
  </Stack>
225
233
  );
226
234
  }
@@ -228,7 +236,7 @@ function LoginForm() {
228
236
 
229
237
  ### System Notifications
230
238
 
231
- 시스템 상태나 알림을 표시할 사용합니다.
239
+ Used to display system status or notifications.
232
240
 
233
241
  ```tsx
234
242
  function SystemStatus() {
@@ -276,7 +284,7 @@ function SystemStatus() {
276
284
 
277
285
  ### Data Processing Status
278
286
 
279
- 데이터 처리 상태를 보여줄 사용합니다.
287
+ Used to display data processing status.
280
288
 
281
289
  ```tsx
282
290
  function DataProcessingStatus({ status, progress, onCancel, onRetry }) {
@@ -288,18 +296,14 @@ function DataProcessingStatus({ status, progress, onCancel, onRetry }) {
288
296
  title: '데이터 처리 중',
289
297
  content: `진행률: ${progress}%`,
290
298
  startDecorator: <CircularProgress size="sm" />,
291
- actions: (
292
- <Button size="sm" onClick={onCancel}>
293
- 취소
294
- </Button>
295
- ),
299
+ actions: <Button size="sm" onClick={onCancel}>취소</Button>
296
300
  };
297
301
  case 'completed':
298
302
  return {
299
303
  color: 'success',
300
304
  title: '처리 완료',
301
305
  content: '모든 데이터가 성공적으로 처리되었습니다.',
302
- startDecorator: <CheckCircleIcon />,
306
+ startDecorator: <CheckCircleIcon />
303
307
  };
304
308
  case 'failed':
305
309
  return {
@@ -307,11 +311,7 @@ function DataProcessingStatus({ status, progress, onCancel, onRetry }) {
307
311
  title: '처리 실패',
308
312
  content: '데이터 처리 중 오류가 발생했습니다.',
309
313
  startDecorator: <ErrorIcon />,
310
- actions: (
311
- <Button size="sm" onClick={onRetry}>
312
- 다시 시도
313
- </Button>
314
- ),
314
+ actions: <Button size="sm" onClick={onRetry}>다시 시도</Button>
315
315
  };
316
316
  default:
317
317
  return null;
@@ -326,7 +326,7 @@ function DataProcessingStatus({ status, progress, onCancel, onRetry }) {
326
326
 
327
327
  ### Feature Announcements
328
328
 
329
- 새로운 기능 소개나 중요한 공지사항을 표시할 사용합니다.
329
+ Used to display new feature announcements or important notices.
330
330
 
331
331
  ```tsx
332
332
  function FeatureAnnouncement() {
@@ -357,7 +357,7 @@ function FeatureAnnouncement() {
357
357
 
358
358
  ### Permission Requests
359
359
 
360
- 권한 요청이나 설정 변경을 안내할 사용합니다.
360
+ Used to guide permission requests or settings changes.
361
361
 
362
362
  ```tsx
363
363
  function PermissionAlert() {
@@ -398,7 +398,7 @@ function PermissionAlert() {
398
398
 
399
399
  ### Inline Messages
400
400
 
401
- 필드나 특정 섹션에 인라인으로 표시하는 메시지입니다.
401
+ Messages displayed inline within form fields or specific sections.
402
402
 
403
403
  ```tsx
404
404
  function InlineMessages() {
@@ -434,7 +434,7 @@ function InlineMessages() {
434
434
 
435
435
  ### Dismissible Alerts
436
436
 
437
- 사용자가 닫을 있는 Alert 구현 예제입니다.
437
+ An implementation example of Alerts that users can dismiss.
438
438
 
439
439
  ```tsx
440
440
  function DismissibleAlerts() {
@@ -445,19 +445,23 @@ function DismissibleAlerts() {
445
445
  ]);
446
446
 
447
447
  const dismissAlert = (id) => {
448
- setAlerts((prev) => prev.filter((alert) => alert.id !== id));
448
+ setAlerts(prev => prev.filter(alert => alert.id !== id));
449
449
  };
450
450
 
451
451
  return (
452
452
  <Stack spacing={2}>
453
- {alerts.map((alert) => (
453
+ {alerts.map(alert => (
454
454
  <Alert
455
455
  key={alert.id}
456
456
  color={getAlertColor(alert.type)}
457
457
  content={alert.message}
458
458
  startDecorator={getAlertIcon(alert.type)}
459
459
  actions={
460
- <IconButton size="sm" variant="plain" onClick={() => dismissAlert(alert.id)}>
460
+ <IconButton
461
+ size="sm"
462
+ variant="plain"
463
+ onClick={() => dismissAlert(alert.id)}
464
+ >
461
465
  <CloseIcon />
462
466
  </IconButton>
463
467
  }
@@ -472,13 +476,13 @@ function DismissibleAlerts() {
472
476
 
473
477
  ### Content Types
474
478
 
475
- Alert 다양한 형태의 콘텐츠를 지원합니다.
479
+ Alert supports various forms of content.
476
480
 
477
481
  ```tsx
478
- // 단순 텍스트
482
+ // Plain text
479
483
  <Alert content="간단한 메시지" />
480
484
 
481
- // React 요소
485
+ // React element
482
486
  <Alert
483
487
  content={
484
488
  <div>
@@ -488,7 +492,7 @@ Alert는 다양한 형태의 콘텐츠를 지원합니다.
488
492
  }
489
493
  />
490
494
 
491
- // 제목과 내용 분리
495
+ // Separate title and content
492
496
  <Alert
493
497
  title="업데이트 완료"
494
498
  content="애플리케이션이 최신 버전으로 업데이트되었습니다."
@@ -497,7 +501,7 @@ Alert는 다양한 형태의 콘텐츠를 지원합니다.
497
501
 
498
502
  ### Variants
499
503
 
500
- 다양한 시각적 스타일을 제공합니다.
504
+ Provides various visual styles.
501
505
 
502
506
  ```tsx
503
507
  <Stack spacing={2}>
@@ -510,7 +514,7 @@ Alert는 다양한 형태의 콘텐츠를 지원합니다.
510
514
 
511
515
  ### Sizes
512
516
 
513
- Alert의 크기를 조절할 있습니다.
517
+ You can adjust the Alert size.
514
518
 
515
519
  ```tsx
516
520
  <Stack spacing={2}>
@@ -522,7 +526,7 @@ Alert의 크기를 조절할 수 있습니다.
522
526
 
523
527
  ### Custom Styling
524
528
 
525
- sx prop을 사용해 커스텀 스타일을 적용할 있습니다.
529
+ You can apply custom styles using the `sx` prop.
526
530
 
527
531
  ```tsx
528
532
  <Alert
@@ -540,61 +544,65 @@ sx prop을 사용해 커스텀 스타일을 적용할 수 있습니다.
540
544
 
541
545
  ## Accessibility
542
546
 
543
- Alert 컴포넌트는 다음과 같은 접근성 기능을 제공합니다:
547
+ The Alert component provides the following accessibility features:
544
548
 
545
- ### ARIA 속성
549
+ ### ARIA Attributes
546
550
 
547
- 자동으로 적절한 ARIA 속성이 적용됩니다.
551
+ Appropriate ARIA attributes are applied automatically.
548
552
 
549
- - `role="alert"`: 즉시 사용자에게 알려야 하는 중요한 메시지
550
- - `aria-live="polite"`: 긴급한 메시지의 경우
553
+ - `role="alert"`: For important messages that should be announced to the user immediately
554
+ - `aria-live="polite"`: For less urgent messages
551
555
 
552
- ### 키보드 탐색
556
+ ### Keyboard Navigation
553
557
 
554
- Alert 내의 액션 버튼들은 키보드로 탐색 가능합니다.
558
+ Action buttons inside an Alert can be navigated by keyboard.
555
559
 
556
- ### 스크린 리더 지원
560
+ ### Screen Reader Support
557
561
 
558
- 제목과 내용이 적절히 구조화되어 스크린 리더가 읽을 있습니다.
562
+ The title and content are structured appropriately for screen readers.
559
563
 
560
564
  ```tsx
561
565
  <Alert
562
566
  title="오류 발생"
563
567
  content="입력하신 정보를 다시 확인해주세요."
564
568
  startDecorator={<ErrorIcon aria-hidden="true" />}
565
- actions={<Button aria-label="오류 메시지 닫기">닫기</Button>}
569
+ actions={
570
+ <Button aria-label="오류 메시지 닫기">
571
+ 닫기
572
+ </Button>
573
+ }
566
574
  />
567
575
  ```
568
576
 
569
577
  ## Best Practices
570
578
 
571
- 1. **적절한 색상 사용**: 메시지의 성격에 맞는 색상을 사용하세요.
579
+ 1. **Use appropriate colors**: Use colors that match the nature of the message.
572
580
 
573
581
  ```tsx
574
- // ✅ 좋은
582
+ // ✅ Good example
575
583
  <Alert color="success" content="저장 완료" />
576
584
  <Alert color="danger" content="오류 발생" />
577
585
  <Alert color="warning" content="주의 필요" />
578
586
 
579
- // ❌ 나쁜
580
- <Alert color="success" content="오류 발생" /> // 잘못된 색상
587
+ // ❌ Bad example
588
+ <Alert color="success" content="오류 발생" /> // Incorrect color
581
589
  ```
582
590
 
583
- 2. **명확한 메시지**: 사용자가 이해하기 쉬운 명확한 메시지를 작성하세요.
591
+ 2. **Clear messaging**: Write clear messages that are easy for users to understand.
584
592
 
585
593
  ```tsx
586
- // ✅ 명확한 메시지
594
+ // ✅ Clear message
587
595
  <Alert
588
596
  color="danger"
589
597
  title="업로드 실패"
590
598
  content="파일이 너무 큽니다. 10MB 이하의 파일을 선택해주세요."
591
599
  />
592
600
 
593
- // ❌ 모호한 메시지
601
+ // ❌ Vague message
594
602
  <Alert content="오류가 발생했습니다." />
595
603
  ```
596
604
 
597
- 3. **적절한 액션**: 사용자가 취할 있는 다음 단계를 제공하세요.
605
+ 3. **Appropriate actions**: Provide the next step the user can take.
598
606
 
599
607
  ```tsx
600
608
  <Alert
@@ -608,9 +616,9 @@ Alert 내의 액션 버튼들은 키보드로 탐색 가능합니다.
608
616
  />
609
617
  ```
610
618
 
611
- 4. **과도한 사용 금지**: 너무 많은 Alert가 동시에 표시되지 않도록 하세요.
619
+ 4. **Avoid overuse**: Do not show too many Alerts at the same time.
612
620
 
613
- 5. **자동 해제**: 일시적인 메시지는 자동으로 해제되도록 구현하세요.
621
+ 5. **Auto-dismiss**: Implement temporary messages so they dismiss automatically.
614
622
 
615
623
  ```tsx
616
624
  function AutoDismissAlert() {
@@ -626,22 +634,30 @@ function AutoDismissAlert() {
626
634
 
627
635
  if (!visible) return null;
628
636
 
629
- return <Alert color="success" content="저장이 완료되었습니다." startDecorator={<CheckIcon />} />;
637
+ return (
638
+ <Alert
639
+ color="success"
640
+ content="저장이 완료되었습니다."
641
+ startDecorator={<CheckIcon />}
642
+ />
643
+ );
630
644
  }
631
645
  ```
632
646
 
633
647
  ## Performance Considerations
634
648
 
635
- 1. **조건부 렌더링**: 필요할 때만 Alert를 렌더링하세요.
649
+ 1. **Conditional rendering**: Render Alerts only when needed.
636
650
 
637
- 2. **메모이제이션**: 복잡한 Alert 내용은 메모이제이션을 고려하세요.
651
+ 2. **Memoization**: Consider memoizing complex Alert content.
638
652
 
639
653
  ```tsx
640
- const alertContent = useMemo(() => <ComplexAlertContent data={data} />, [data]);
654
+ const alertContent = useMemo(() => (
655
+ <ComplexAlertContent data={data} />
656
+ ), [data]);
641
657
 
642
- <Alert content={alertContent} />;
658
+ <Alert content={alertContent} />
643
659
  ```
644
660
 
645
- 3. **배치 처리**: 여러 Alert를 효율적으로 관리하세요.
661
+ 3. **Batch handling**: Manage multiple Alerts efficiently.
646
662
 
647
- Alert 사용자와의 커뮤니케이션에서 핵심적인 역할을 하는 컴포넌트입니다. 적절한 색상, 명확한 메시지, 유용한 액션을 통해 우수한 사용자 경험을 제공할 있습니다.
663
+ Alert is a core component for communicating with users. With appropriate colors, clear messaging, and useful actions, it can provide an excellent user experience.
@@ -226,6 +226,23 @@ function SubmitButton({ isSubmitting }: { isSubmitting: boolean }) {
226
226
  }
227
227
  ```
228
228
 
229
+ ## Props and Customization
230
+
231
+ ### Key Props
232
+
233
+ | Prop | Type | Default | Description |
234
+ | ------------- | -------------------------------------------------------------- | ----------- | -------------------------------------------- |
235
+ | `determinate` | `boolean` | `false` | Show determinate progress (requires `value`) |
236
+ | `value` | `number` | - | Progress value (0-100) for determinate mode |
237
+ | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | Progress indicator size |
238
+ | `variant` | `'solid' \| 'soft' \| 'outlined' \| 'plain'` | `'soft'` | Visual style |
239
+ | `color` | `'primary' \| 'neutral' \| 'danger' \| 'success' \| 'warning'` | `'primary'` | Color scheme |
240
+ | `thickness` | `number` | - | Stroke width of the circle |
241
+ | `children` | `ReactNode` | - | Content rendered in the center |
242
+ | `sx` | `SxProps` | - | Custom styles |
243
+
244
+ > **Note**: CircularProgress also accepts all Joy UI CircularProgress props.
245
+
229
246
  ## Best Practices
230
247
 
231
248
  1. **Use indeterminate for unknown durations**: When you cannot estimate progress, use the default spinning mode. Switch to determinate only when you can track actual progress.
@@ -249,6 +249,23 @@ function UserProfile({ loading, user }: { loading: boolean; user?: User }) {
249
249
  }
250
250
  ```
251
251
 
252
+ ## Props and Customization
253
+
254
+ ### Key Props
255
+
256
+ | Prop | Type | Default | Description |
257
+ | ----------- | ---------------------------------------------------------------- | ----------- | ---------------------------------------------- |
258
+ | `variant` | `'rectangular' \| 'circular' \| 'text' \| 'overlay' \| 'inline'` | `'overlay'` | Skeleton shape |
259
+ | `animation` | `'pulse' \| 'wave' \| false` | `'pulse'` | Animation type |
260
+ | `width` | `number \| string` | - | Skeleton width |
261
+ | `height` | `number \| string` | - | Skeleton height |
262
+ | `level` | Typography level | - | Matches text height for `text` variant |
263
+ | `loading` | `boolean` | `true` | When false, shows children instead of skeleton |
264
+ | `children` | `ReactNode` | - | Content to show when not loading |
265
+ | `sx` | `SxProps` | - | Custom styles |
266
+
267
+ > **Note**: Skeleton also accepts all Joy UI Skeleton props.
268
+
252
269
  ## Best Practices
253
270
 
254
271
  1. **Match the final layout**: Skeleton placeholders should closely approximate the size and position of the real content to prevent layout shifts.