@ceed/ads 1.30.0 → 1.30.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/Overview.md +5 -5
  2. package/dist/components/data-display/Avatar.md +85 -74
  3. package/dist/components/data-display/Badge.md +23 -5
  4. package/dist/components/data-display/Chip.md +49 -35
  5. package/dist/components/data-display/DataTable.md +93 -0
  6. package/dist/components/data-display/InfoSign.md +15 -5
  7. package/dist/components/data-display/Markdown.md +22 -26
  8. package/dist/components/data-display/Table.md +63 -53
  9. package/dist/components/data-display/Tooltip.md +70 -58
  10. package/dist/components/data-display/Typography.md +28 -11
  11. package/dist/components/feedback/Alert.md +86 -74
  12. package/dist/components/feedback/CircularProgress.md +20 -5
  13. package/dist/components/feedback/Dialog.md +8 -12
  14. package/dist/components/feedback/Modal.md +12 -16
  15. package/dist/components/feedback/Skeleton.md +20 -5
  16. package/dist/components/inputs/Autocomplete.md +8 -10
  17. package/dist/components/inputs/Button.md +107 -87
  18. package/dist/components/inputs/ButtonGroup.md +20 -5
  19. package/dist/components/inputs/Calendar.md +25 -5
  20. package/dist/components/inputs/Checkbox.md +171 -450
  21. package/dist/components/inputs/CurrencyInput.md +25 -5
  22. package/dist/components/inputs/DatePicker.md +39 -5
  23. package/dist/components/inputs/DateRangePicker.md +29 -5
  24. package/dist/components/inputs/FilterMenu.md +85 -9
  25. package/dist/components/inputs/FilterableCheckboxGroup.md +23 -8
  26. package/dist/components/inputs/FormControl.md +34 -6
  27. package/dist/components/inputs/IconButton.md +21 -5
  28. package/dist/components/inputs/Input.md +254 -68
  29. package/dist/components/inputs/MonthPicker.md +28 -5
  30. package/dist/components/inputs/MonthRangePicker.md +26 -5
  31. package/dist/components/inputs/PercentageInput.md +28 -5
  32. package/dist/components/inputs/RadioButton.md +26 -5
  33. package/dist/components/inputs/RadioList.md +23 -6
  34. package/dist/components/inputs/RadioTileGroup.md +40 -8
  35. package/dist/components/inputs/Select.md +59 -5
  36. package/dist/components/inputs/Slider.md +26 -5
  37. package/dist/components/inputs/Switch.md +23 -5
  38. package/dist/components/inputs/Textarea.md +27 -5
  39. package/dist/components/inputs/Uploader/Uploader.md +24 -5
  40. package/dist/components/layout/Box.md +66 -58
  41. package/dist/components/layout/Container.md +9 -13
  42. package/dist/components/layout/Grid.md +91 -75
  43. package/dist/components/layout/Stack.md +85 -70
  44. package/dist/components/navigation/Breadcrumbs.md +23 -14
  45. package/dist/components/navigation/Dropdown.md +29 -20
  46. package/dist/components/navigation/IconMenuButton.md +24 -11
  47. package/dist/components/navigation/InsetDrawer.md +16 -5
  48. package/dist/components/navigation/Link.md +30 -14
  49. package/dist/components/navigation/Menu.md +33 -20
  50. package/dist/components/navigation/MenuButton.md +26 -12
  51. package/dist/components/navigation/NavigationGroup.md +7 -11
  52. package/dist/components/navigation/NavigationItem.md +8 -12
  53. package/dist/components/navigation/Navigator.md +5 -9
  54. package/dist/components/navigation/Pagination.md +21 -12
  55. package/dist/components/navigation/ProfileMenu.md +17 -5
  56. package/dist/components/navigation/Stepper.md +18 -5
  57. package/dist/components/navigation/Tabs.md +37 -14
  58. package/dist/components/surfaces/Accordions.md +12 -16
  59. package/dist/components/surfaces/Card.md +59 -47
  60. package/dist/components/surfaces/Divider.md +70 -61
  61. package/dist/components/surfaces/Sheet.md +18 -5
  62. 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/ads';
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="오류 발생"
@@ -54,11 +54,9 @@ function MyComponent() {
54
54
  }
55
55
  ```
56
56
 
57
- ## Examples
57
+ ## Basic Usage
58
58
 
59
- ### Basic Usage
60
-
61
- 가장 기본적인 Alert 사용법입니다.
59
+ The most basic Alert usage.
62
60
 
63
61
  ```tsx
64
62
  <Alert
@@ -67,9 +65,9 @@ function MyComponent() {
67
65
  />
68
66
  ```
69
67
 
70
- ### Colors
68
+ ## Alert Colors
71
69
 
72
- 다양한 색상을 통해 메시지의 성격을 구분할 있습니다.
70
+ You can distinguish message types through various colors.
73
71
 
74
72
  ```tsx
75
73
  <div style={{
@@ -124,15 +122,15 @@ function MyComponent() {
124
122
  </div>
125
123
  ```
126
124
 
127
- - **primary**: 일반적인 정보 메시지
128
- - **success**: 성공, 완료 메시지
129
- - **warning**: 주의, 경고 메시지
130
- - **danger**: 오류, 위험 메시지
131
- - **neutral**: 중립적인 메시지
125
+ - **primary**: General informational message
126
+ - **success**: Success or completion message
127
+ - **warning**: Caution or warning message
128
+ - **danger**: Error or risk message
129
+ - **neutral**: Neutral message
132
130
 
133
- ### With Start Decorator
131
+ ## Alert with Start Decorator
134
132
 
135
- 아이콘이나 다른 요소를 메시지 앞에 추가할 있습니다.
133
+ You can add an icon or another element before the message.
136
134
 
137
135
  ```tsx
138
136
  <Alert
@@ -142,9 +140,9 @@ function MyComponent() {
142
140
  />
143
141
  ```
144
142
 
145
- ### With Title
143
+ ## Alert with Title
146
144
 
147
- 제목을 추가하여 메시지를 구조화할 있습니다.
145
+ You can structure the message by adding a title.
148
146
 
149
147
  ```tsx
150
148
  <Alert
@@ -154,9 +152,9 @@ function MyComponent() {
154
152
  />
155
153
  ```
156
154
 
157
- ### With Actions
155
+ ## Alert with Actions
158
156
 
159
- 사용자가 수행할 있는 액션을 추가할 있습니다.
157
+ You can add actions the user can take.
160
158
 
161
159
  ```tsx
162
160
  <Alert
@@ -166,9 +164,9 @@ function MyComponent() {
166
164
  />
167
165
  ```
168
166
 
169
- ### Complete Alert
167
+ ## Complete Alert Example
170
168
 
171
- 모든 요소를 포함한 완전한 Alert입니다.
169
+ A complete Alert containing all elements.
172
170
 
173
171
  ```tsx
174
172
  <Alert
@@ -180,11 +178,9 @@ function MyComponent() {
180
178
  />
181
179
  ```
182
180
 
183
- ## Common Use Cases
184
-
185
- ### Form Validation
181
+ ## Alert for Form Validation
186
182
 
187
- 검증 결과를 표시할 사용합니다.
183
+ Used to display form validation results.
188
184
 
189
185
  ```tsx
190
186
  function LoginForm() {
@@ -227,16 +223,16 @@ function LoginForm() {
227
223
  )}
228
224
 
229
225
  <form onSubmit={handleSubmit}>
230
- {/* 필드들 */}
226
+ {/* Form fields */}
231
227
  </form>
232
228
  </Stack>
233
229
  );
234
230
  }
235
231
  ```
236
232
 
237
- ### System Notifications
233
+ ## Alert for System Notifications
238
234
 
239
- 시스템 상태나 알림을 표시할 사용합니다.
235
+ Used to display system status or notifications.
240
236
 
241
237
  ```tsx
242
238
  function SystemStatus() {
@@ -282,9 +278,9 @@ function SystemStatus() {
282
278
  }
283
279
  ```
284
280
 
285
- ### Data Processing Status
281
+ ## Alert for Data Processing Status
286
282
 
287
- 데이터 처리 상태를 보여줄 사용합니다.
283
+ Used to display data processing status.
288
284
 
289
285
  ```tsx
290
286
  function DataProcessingStatus({ status, progress, onCancel, onRetry }) {
@@ -324,9 +320,9 @@ function DataProcessingStatus({ status, progress, onCancel, onRetry }) {
324
320
  }
325
321
  ```
326
322
 
327
- ### Feature Announcements
323
+ ## Alert for Feature Announcements
328
324
 
329
- 새로운 기능 소개나 중요한 공지사항을 표시할 사용합니다.
325
+ Used to display new feature announcements or important notices.
330
326
 
331
327
  ```tsx
332
328
  function FeatureAnnouncement() {
@@ -355,9 +351,9 @@ function FeatureAnnouncement() {
355
351
  }
356
352
  ```
357
353
 
358
- ### Permission Requests
354
+ ## Alert for Permission Requests
359
355
 
360
- 권한 요청이나 설정 변경을 안내할 사용합니다.
356
+ Used to guide permission requests or settings changes.
361
357
 
362
358
  ```tsx
363
359
  function PermissionAlert() {
@@ -396,9 +392,9 @@ function PermissionAlert() {
396
392
  }
397
393
  ```
398
394
 
399
- ### Inline Messages
395
+ ## Inline Alert Messages
400
396
 
401
- 필드나 특정 섹션에 인라인으로 표시하는 메시지입니다.
397
+ Messages displayed inline within form fields or specific sections.
402
398
 
403
399
  ```tsx
404
400
  function InlineMessages() {
@@ -432,9 +428,9 @@ function InlineMessages() {
432
428
  }
433
429
  ```
434
430
 
435
- ### Dismissible Alerts
431
+ ## Dismissible Alert
436
432
 
437
- 사용자가 닫을 있는 Alert 구현 예제입니다.
433
+ An implementation example of Alerts that users can dismiss.
438
434
 
439
435
  ```tsx
440
436
  function DismissibleAlerts() {
@@ -474,15 +470,31 @@ function DismissibleAlerts() {
474
470
 
475
471
  ## Props and Customization
476
472
 
477
- ### Content Types
473
+ ### Key Props
474
+
475
+ | Prop | Type | Default | Description |
476
+ | ---------------- | -------------------------------------------------------------- | ----------- | ------------------------------------------------------------------ |
477
+ | `content` | `ReactNode` | (required) | Alert message content |
478
+ | `title` | `string` | - | Optional title displayed above the content |
479
+ | `actions` | `ReactNode` | - | Action buttons or elements displayed on the right |
480
+ | `color` | `'primary' \| 'neutral' \| 'danger' \| 'success' \| 'warning'` | `'primary'` | Alert color scheme |
481
+ | `variant` | `'solid' \| 'soft' \| 'outlined' \| 'plain'` | `'soft'` | Visual style |
482
+ | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | Alert size (affects title/content typography levels) |
483
+ | `startDecorator` | `ReactNode` | - | Icon or element rendered before the content |
484
+ | `invertedColors` | `boolean` | `false` | Invert child component colors (auto `true` when `variant='solid'`) |
485
+ | `sx` | `SxProps` | - | Custom styles using the MUI system |
486
+
487
+ > **Note**: Alert also accepts all Joy UI Alert props and Framer Motion props.
488
+
489
+ ## Alert Content Types
478
490
 
479
- Alert 다양한 형태의 콘텐츠를 지원합니다.
491
+ Alert supports various forms of content.
480
492
 
481
493
  ```tsx
482
- // 단순 텍스트
494
+ // Plain text
483
495
  <Alert content="간단한 메시지" />
484
496
 
485
- // React 요소
497
+ // React element
486
498
  <Alert
487
499
  content={
488
500
  <div>
@@ -492,16 +504,16 @@ Alert는 다양한 형태의 콘텐츠를 지원합니다.
492
504
  }
493
505
  />
494
506
 
495
- // 제목과 내용 분리
507
+ // Separate title and content
496
508
  <Alert
497
509
  title="업데이트 완료"
498
510
  content="애플리케이션이 최신 버전으로 업데이트되었습니다."
499
511
  />
500
512
  ```
501
513
 
502
- ### Variants
514
+ ## Alert Variants
503
515
 
504
- 다양한 시각적 스타일을 제공합니다.
516
+ Provides various visual styles.
505
517
 
506
518
  ```tsx
507
519
  <Stack spacing={2}>
@@ -512,9 +524,9 @@ Alert는 다양한 형태의 콘텐츠를 지원합니다.
512
524
  </Stack>
513
525
  ```
514
526
 
515
- ### Sizes
527
+ ## Alert Sizes
516
528
 
517
- Alert의 크기를 조절할 있습니다.
529
+ You can adjust the Alert size.
518
530
 
519
531
  ```tsx
520
532
  <Stack spacing={2}>
@@ -524,9 +536,9 @@ Alert의 크기를 조절할 수 있습니다.
524
536
  </Stack>
525
537
  ```
526
538
 
527
- ### Custom Styling
539
+ ## Alert Custom Styling
528
540
 
529
- sx prop을 사용해 커스텀 스타일을 적용할 있습니다.
541
+ You can apply custom styles using the `sx` prop.
530
542
 
531
543
  ```tsx
532
544
  <Alert
@@ -544,22 +556,22 @@ sx prop을 사용해 커스텀 스타일을 적용할 수 있습니다.
544
556
 
545
557
  ## Accessibility
546
558
 
547
- Alert 컴포넌트는 다음과 같은 접근성 기능을 제공합니다:
559
+ The Alert component provides the following accessibility features:
548
560
 
549
- ### ARIA 속성
561
+ ### ARIA Attributes
550
562
 
551
- 자동으로 적절한 ARIA 속성이 적용됩니다.
563
+ Appropriate ARIA attributes are applied automatically.
552
564
 
553
- - `role="alert"`: 즉시 사용자에게 알려야 하는 중요한 메시지
554
- - `aria-live="polite"`: 긴급한 메시지의 경우
565
+ - `role="alert"`: For important messages that should be announced to the user immediately
566
+ - `aria-live="polite"`: For less urgent messages
555
567
 
556
- ### 키보드 탐색
568
+ ### Keyboard Navigation
557
569
 
558
- Alert 내의 액션 버튼들은 키보드로 탐색 가능합니다.
570
+ Action buttons inside an Alert can be navigated by keyboard.
559
571
 
560
- ### 스크린 리더 지원
572
+ ### Screen Reader Support
561
573
 
562
- 제목과 내용이 적절히 구조화되어 스크린 리더가 읽을 있습니다.
574
+ The title and content are structured appropriately for screen readers.
563
575
 
564
576
  ```tsx
565
577
  <Alert
@@ -576,33 +588,33 @@ Alert 내의 액션 버튼들은 키보드로 탐색 가능합니다.
576
588
 
577
589
  ## Best Practices
578
590
 
579
- 1. **적절한 색상 사용**: 메시지의 성격에 맞는 색상을 사용하세요.
591
+ 1. **Use appropriate colors**: Use colors that match the nature of the message.
580
592
 
581
593
  ```tsx
582
- // ✅ 좋은
594
+ // ✅ Good example
583
595
  <Alert color="success" content="저장 완료" />
584
596
  <Alert color="danger" content="오류 발생" />
585
597
  <Alert color="warning" content="주의 필요" />
586
598
 
587
- // ❌ 나쁜
588
- <Alert color="success" content="오류 발생" /> // 잘못된 색상
599
+ // ❌ Bad example
600
+ <Alert color="success" content="오류 발생" /> // Incorrect color
589
601
  ```
590
602
 
591
- 2. **명확한 메시지**: 사용자가 이해하기 쉬운 명확한 메시지를 작성하세요.
603
+ 2. **Clear messaging**: Write clear messages that are easy for users to understand.
592
604
 
593
605
  ```tsx
594
- // ✅ 명확한 메시지
606
+ // ✅ Clear message
595
607
  <Alert
596
608
  color="danger"
597
609
  title="업로드 실패"
598
610
  content="파일이 너무 큽니다. 10MB 이하의 파일을 선택해주세요."
599
611
  />
600
612
 
601
- // ❌ 모호한 메시지
613
+ // ❌ Vague message
602
614
  <Alert content="오류가 발생했습니다." />
603
615
  ```
604
616
 
605
- 3. **적절한 액션**: 사용자가 취할 있는 다음 단계를 제공하세요.
617
+ 3. **Appropriate actions**: Provide the next step the user can take.
606
618
 
607
619
  ```tsx
608
620
  <Alert
@@ -616,9 +628,9 @@ Alert 내의 액션 버튼들은 키보드로 탐색 가능합니다.
616
628
  />
617
629
  ```
618
630
 
619
- 4. **과도한 사용 금지**: 너무 많은 Alert가 동시에 표시되지 않도록 하세요.
631
+ 4. **Avoid overuse**: Do not show too many Alerts at the same time.
620
632
 
621
- 5. **자동 해제**: 일시적인 메시지는 자동으로 해제되도록 구현하세요.
633
+ 5. **Auto-dismiss**: Implement temporary messages so they dismiss automatically.
622
634
 
623
635
  ```tsx
624
636
  function AutoDismissAlert() {
@@ -646,9 +658,9 @@ function AutoDismissAlert() {
646
658
 
647
659
  ## Performance Considerations
648
660
 
649
- 1. **조건부 렌더링**: 필요할 때만 Alert를 렌더링하세요.
661
+ 1. **Conditional rendering**: Render Alerts only when needed.
650
662
 
651
- 2. **메모이제이션**: 복잡한 Alert 내용은 메모이제이션을 고려하세요.
663
+ 2. **Memoization**: Consider memoizing complex Alert content.
652
664
 
653
665
  ```tsx
654
666
  const alertContent = useMemo(() => (
@@ -658,6 +670,6 @@ const alertContent = useMemo(() => (
658
670
  <Alert content={alertContent} />
659
671
  ```
660
672
 
661
- 3. **배치 처리**: 여러 Alert를 효율적으로 관리하세요.
673
+ 3. **Batch handling**: Manage multiple Alerts efficiently.
662
674
 
663
- Alert 사용자와의 커뮤니케이션에서 핵심적인 역할을 하는 컴포넌트입니다. 적절한 색상, 명확한 메시지, 유용한 액션을 통해 우수한 사용자 경험을 제공할 있습니다.
675
+ Alert is a core component for communicating with users. With appropriate colors, clear messaging, and useful actions, it can provide an excellent user experience.
@@ -166,9 +166,7 @@ Control the stroke thickness of the progress ring with the `thickness` prop.
166
166
  <CircularProgress thickness={8} />
167
167
  ```
168
168
 
169
- ## Common Use Cases
170
-
171
- ### Data Fetching Indicator
169
+ ## CircularProgress Data Fetching Indicator
172
170
 
173
171
  ```tsx
174
172
  function DataLoader() {
@@ -194,7 +192,7 @@ function DataLoader() {
194
192
  }
195
193
  ```
196
194
 
197
- ### File Upload Progress
195
+ ## CircularProgress File Upload Progress
198
196
 
199
197
  ```tsx
200
198
  function FileUpload({ progress }: { progress: number }) {
@@ -209,7 +207,7 @@ function FileUpload({ progress }: { progress: number }) {
209
207
  }
210
208
  ```
211
209
 
212
- ### Inline Loading Button
210
+ ## CircularProgress Inline Loading Button
213
211
 
214
212
  ```tsx
215
213
  function SubmitButton({ isSubmitting }: { isSubmitting: boolean }) {
@@ -226,6 +224,23 @@ function SubmitButton({ isSubmitting }: { isSubmitting: boolean }) {
226
224
  }
227
225
  ```
228
226
 
227
+ ## Props and Customization
228
+
229
+ ### Key Props
230
+
231
+ | Prop | Type | Default | Description |
232
+ | ------------- | -------------------------------------------------------------- | ----------- | -------------------------------------------- |
233
+ | `determinate` | `boolean` | `false` | Show determinate progress (requires `value`) |
234
+ | `value` | `number` | - | Progress value (0-100) for determinate mode |
235
+ | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | Progress indicator size |
236
+ | `variant` | `'solid' \| 'soft' \| 'outlined' \| 'plain'` | `'soft'` | Visual style |
237
+ | `color` | `'primary' \| 'neutral' \| 'danger' \| 'success' \| 'warning'` | `'primary'` | Color scheme |
238
+ | `thickness` | `number` | - | Stroke width of the circle |
239
+ | `children` | `ReactNode` | - | Content rendered in the center |
240
+ | `sx` | `SxProps` | - | Custom styles |
241
+
242
+ > **Note**: CircularProgress also accepts all Joy UI CircularProgress props.
243
+
229
244
  ## Best Practices
230
245
 
231
246
  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.
@@ -54,9 +54,7 @@ function ConfirmationDialog({ open, onClose, onConfirm }) {
54
54
  }
55
55
  ```
56
56
 
57
- ## Examples
58
-
59
- ### Playground
57
+ ## Basic Usage
60
58
 
61
59
  Interactive example with title, content, and action buttons.
62
60
 
@@ -68,7 +66,7 @@ Interactive example with title, content, and action buttons.
68
66
  />
69
67
  ```
70
68
 
71
- ### Fullscreen
69
+ ## Fullscreen Dialog
72
70
 
73
71
  Fullscreen mode for complex content or mobile views.
74
72
 
@@ -81,7 +79,7 @@ Fullscreen mode for complex content or mobile views.
81
79
  />
82
80
  ```
83
81
 
84
- ### With Input (KeyDown Handling)
82
+ ## Dialog with Input and KeyDown
85
83
 
86
84
  Dialog with form inputs and keyboard event handling.
87
85
 
@@ -92,7 +90,7 @@ Dialog Content
92
90
  </DialogFrame>
93
91
  ```
94
92
 
95
- ### Standalone Usage
93
+ ## Standalone DialogFrame
96
94
 
97
95
  DialogFrame can be used without a Modal wrapper for embedding dialog-style layouts directly within a page.
98
96
 
@@ -165,9 +163,7 @@ function EmbeddedDialog() {
165
163
  - **Frequent interactions**: Don't interrupt common workflows
166
164
  - **Large content**: Use a page or InsetDrawer for lengthy content
167
165
 
168
- ## Common Use Cases
169
-
170
- ### Delete Confirmation
166
+ ## Delete Confirmation Dialog
171
167
 
172
168
  ```tsx
173
169
  function DeleteConfirmation({ itemName, open, onClose, onDelete }) {
@@ -198,7 +194,7 @@ function DeleteConfirmation({ itemName, open, onClose, onDelete }) {
198
194
  }
199
195
  ```
200
196
 
201
- ### Form Dialog
197
+ ## Form Dialog
202
198
 
203
199
  ```tsx
204
200
  function QuickAddDialog({ open, onClose, onSubmit }) {
@@ -243,7 +239,7 @@ function QuickAddDialog({ open, onClose, onSubmit }) {
243
239
  }
244
240
  ```
245
241
 
246
- ### Unsaved Changes Warning
242
+ ## Unsaved Changes Dialog
247
243
 
248
244
  ```tsx
249
245
  function UnsavedChangesDialog({ open, onClose, onDiscard, onSave }) {
@@ -322,7 +318,7 @@ function TermsDialog({ open, onClose, onAccept }) {
322
318
  }
323
319
  ```
324
320
 
325
- ### Loading State Dialog
321
+ ## Loading State Dialog
326
322
 
327
323
  ```tsx
328
324
  function ProcessingDialog({ open, status, onClose }) {
@@ -86,9 +86,7 @@ function DetailModal({ open, onClose }) {
86
86
  > **Note**: Connect the same handler to both `Modal`'s `onClose` and `ModalFrame`'s `onClose`.
87
87
  > `Modal` handles backdrop click and ESC key, while `ModalFrame` handles the X button click.
88
88
 
89
- ## Examples
90
-
91
- ### Basic Modal
89
+ ## Basic Modal
92
90
 
93
91
  The basic modal with a simple Sheet for custom layouts.
94
92
 
@@ -121,7 +119,7 @@ The basic modal with a simple Sheet for custom layouts.
121
119
  </>
122
120
  ```
123
121
 
124
- ### Modal Dialog
122
+ ## Modal Dialog
125
123
 
126
124
  Use ModalDialog for structured dialogs with title, content, and actions.
127
125
 
@@ -156,7 +154,7 @@ Use ModalDialog for structured dialogs with title, content, and actions.
156
154
  </>
157
155
  ```
158
156
 
159
- ### Variants
157
+ ## Modal Dialog Variants
160
158
 
161
159
  Modal dialogs support different visual variants.
162
160
 
@@ -220,7 +218,7 @@ Modal dialogs support different visual variants.
220
218
  </>
221
219
  ```
222
220
 
223
- ### Alert Dialog
221
+ ## Alert Dialog
224
222
 
225
223
  For critical confirmations that require explicit user decision.
226
224
 
@@ -250,7 +248,7 @@ For critical confirmations that require explicit user decision.
250
248
  </>
251
249
  ```
252
250
 
253
- ### Layouts
251
+ ## Modal Layouts
254
252
 
255
253
  #### Fullscreen Layout
256
254
 
@@ -274,7 +272,7 @@ For complex content that requires maximum screen space.
274
272
  </>
275
273
  ```
276
274
 
277
- ### Nested Modals
275
+ ## Nested Modals
278
276
 
279
277
  Modals can be stacked on top of each other when necessary.
280
278
 
@@ -304,7 +302,7 @@ Modals can be stacked on top of each other when necessary.
304
302
  </>
305
303
  ```
306
304
 
307
- ### ModalFrame
305
+ ## ModalFrame Examples
308
306
 
309
307
  ModalFrame is a convenience component that automatically provides a title, close button, and content area.
310
308
 
@@ -482,9 +480,7 @@ ModalFrame can be used without a Modal wrapper for embedding dialog-style layout
482
480
  - **Non-critical information**: Success messages or tips should use Toast or inline feedback
483
481
  - **Mobile navigation**: Consider using full-page transitions instead on mobile devices
484
482
 
485
- ## Common Use Cases
486
-
487
- ### Confirmation Dialog
483
+ ## Confirmation Dialog
488
484
 
489
485
  Confirm destructive or significant actions before executing them.
490
486
 
@@ -515,7 +511,7 @@ function DeleteConfirmation({ item, onDelete, onCancel }) {
515
511
  }
516
512
  ```
517
513
 
518
- ### Form Modal
514
+ ## Form Modal
519
515
 
520
516
  Capture user input in a focused dialog.
521
517
 
@@ -563,7 +559,7 @@ function CreateProjectModal({ open, onClose, onCreate }) {
563
559
  }
564
560
  ```
565
561
 
566
- ### Information Modal
562
+ ## Information Modal
567
563
 
568
564
  Display detailed information that requires user acknowledgment.
569
565
 
@@ -593,7 +589,7 @@ function TermsModal({ open, onAccept, onDecline }) {
593
589
  }
594
590
  ```
595
591
 
596
- ### Image Preview Modal
592
+ ## Image Preview Modal
597
593
 
598
594
  Display images or media in a focused overlay.
599
595
 
@@ -610,7 +606,7 @@ function ImagePreviewModal({ image, open, onClose }) {
610
606
  }
611
607
  ```
612
608
 
613
- ### Loading Modal
609
+ ## Loading Modal
614
610
 
615
611
  Block user interaction during async operations.
616
612
 
@@ -183,9 +183,7 @@ Wrap existing content with Skeleton to overlay it while loading. Set the `loadin
183
183
  </Typography>
184
184
  ```
185
185
 
186
- ## Common Use Cases
187
-
188
- ### Page Content Loading
186
+ ## Page Content Loading
189
187
 
190
188
  ```tsx
191
189
  function PageSkeleton() {
@@ -205,7 +203,7 @@ function PageSkeleton() {
205
203
  }
206
204
  ```
207
205
 
208
- ### User List Loading
206
+ ## User List Loading
209
207
 
210
208
  ```tsx
211
209
  function UserListSkeleton({ count = 5 }: { count?: number }) {
@@ -225,7 +223,7 @@ function UserListSkeleton({ count = 5 }: { count?: number }) {
225
223
  }
226
224
  ```
227
225
 
228
- ### Conditional Rendering
226
+ ## Conditional Rendering
229
227
 
230
228
  ```tsx
231
229
  function UserProfile({ loading, user }: { loading: boolean; user?: User }) {
@@ -249,6 +247,23 @@ function UserProfile({ loading, user }: { loading: boolean; user?: User }) {
249
247
  }
250
248
  ```
251
249
 
250
+ ## Props and Customization
251
+
252
+ ### Key Props
253
+
254
+ | Prop | Type | Default | Description |
255
+ | ----------- | ---------------------------------------------------------------- | ----------- | ---------------------------------------------- |
256
+ | `variant` | `'rectangular' \| 'circular' \| 'text' \| 'overlay' \| 'inline'` | `'overlay'` | Skeleton shape |
257
+ | `animation` | `'pulse' \| 'wave' \| false` | `'pulse'` | Animation type |
258
+ | `width` | `number \| string` | - | Skeleton width |
259
+ | `height` | `number \| string` | - | Skeleton height |
260
+ | `level` | Typography level | - | Matches text height for `text` variant |
261
+ | `loading` | `boolean` | `true` | When false, shows children instead of skeleton |
262
+ | `children` | `ReactNode` | - | Content to show when not loading |
263
+ | `sx` | `SxProps` | - | Custom styles |
264
+
265
+ > **Note**: Skeleton also accepts all Joy UI Skeleton props.
266
+
252
267
  ## Best Practices
253
268
 
254
269
  1. **Match the final layout**: Skeleton placeholders should closely approximate the size and position of the real content to prevent layout shifts.