@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.
Files changed (70) hide show
  1. package/dist/Overview.md +11 -0
  2. package/dist/components/Menu/Menu.d.ts +2 -5
  3. package/dist/components/Stepper/Stepper.d.ts +6 -0
  4. package/dist/components/data-display/Avatar.md +428 -0
  5. package/dist/components/data-display/Badge.md +315 -0
  6. package/dist/components/data-display/Chip.md +301 -0
  7. package/dist/components/data-display/DataTable.md +452 -0
  8. package/dist/components/data-display/InfoSign.md +160 -0
  9. package/dist/components/data-display/Markdown.md +17 -0
  10. package/dist/components/data-display/Table.md +1330 -0
  11. package/dist/components/data-display/Tooltip.md +444 -0
  12. package/dist/components/data-display/Typography.md +271 -0
  13. package/dist/components/data-display/llms.txt +17 -0
  14. package/dist/components/feedback/Alert.md +663 -0
  15. package/dist/components/feedback/Dialog.md +33 -0
  16. package/dist/components/feedback/Modal.md +39 -0
  17. package/dist/components/feedback/llms.txt +11 -0
  18. package/dist/components/inputs/Autocomplete.md +103 -0
  19. package/dist/components/inputs/Button.md +334 -0
  20. package/dist/components/inputs/ButtonGroup.md +382 -0
  21. package/dist/components/inputs/Calendar.md +19 -0
  22. package/dist/components/inputs/Checkbox.md +649 -0
  23. package/dist/components/inputs/CurrencyInput.md +91 -0
  24. package/dist/components/inputs/DatePicker.md +67 -0
  25. package/dist/components/inputs/DateRangePicker.md +55 -0
  26. package/dist/components/inputs/FilterMenu.md +210 -0
  27. package/dist/components/inputs/IconButton.md +361 -0
  28. package/dist/components/inputs/Input.md +283 -0
  29. package/dist/components/inputs/MonthPicker.md +72 -0
  30. package/dist/components/inputs/MonthRangePicker.md +70 -0
  31. package/dist/components/inputs/PercentageInput.md +116 -0
  32. package/dist/components/inputs/RadioButton.md +350 -0
  33. package/dist/components/inputs/RadioTileGroup.md +418 -0
  34. package/dist/components/inputs/Select.md +56 -0
  35. package/dist/components/inputs/Switch.md +577 -0
  36. package/dist/components/inputs/Textarea.md +64 -0
  37. package/dist/components/inputs/Uploader/Uploader.md +238 -0
  38. package/dist/components/inputs/Uploader/llms.txt +9 -0
  39. package/dist/components/inputs/llms.txt +31 -0
  40. package/dist/components/layout/Box.md +997 -0
  41. package/dist/components/layout/Container.md +23 -0
  42. package/dist/components/layout/Grid.md +728 -0
  43. package/dist/components/layout/Stack.md +937 -0
  44. package/dist/components/layout/llms.txt +12 -0
  45. package/dist/components/llms.txt +14 -0
  46. package/dist/components/navigation/Breadcrumbs.md +51 -0
  47. package/dist/components/navigation/Dropdown.md +768 -0
  48. package/dist/components/navigation/IconMenuButton.md +35 -0
  49. package/dist/components/navigation/InsetDrawer.md +133 -0
  50. package/dist/components/navigation/Link.md +24 -0
  51. package/dist/components/navigation/Menu.md +957 -0
  52. package/dist/components/navigation/MenuButton.md +39 -0
  53. package/dist/components/navigation/NavigationGroup.md +17 -0
  54. package/dist/components/navigation/NavigationItem.md +17 -0
  55. package/dist/components/navigation/Navigator.md +17 -0
  56. package/dist/components/navigation/Pagination.md +17 -0
  57. package/dist/components/navigation/ProfileMenu.md +34 -0
  58. package/dist/components/navigation/Stepper.md +108 -0
  59. package/dist/components/navigation/Tabs.md +34 -0
  60. package/dist/components/navigation/llms.txt +22 -0
  61. package/dist/components/surfaces/Accordions.md +96 -0
  62. package/dist/components/surfaces/Card.md +786 -0
  63. package/dist/components/surfaces/Divider.md +762 -0
  64. package/dist/components/surfaces/Sheet.md +900 -0
  65. package/dist/components/surfaces/llms.txt +12 -0
  66. package/dist/index.cjs +22 -10
  67. package/dist/index.js +22 -10
  68. package/dist/llms.txt +75 -0
  69. package/framer/index.js +36 -36
  70. package/package.json +8 -4
@@ -0,0 +1,762 @@
1
+ # Divider
2
+
3
+ ## Introduction
4
+
5
+ Divider 컴포넌트는 콘텐츠를 시각적으로 구분하는 선을 그려주는 컴포넌트입니다. Joy UI의 Divider 컴포넌트를 기반으로 하며, Framer Motion 애니메이션 지원이 추가되었습니다. 리스트 항목, 카드 섹션, 폼 영역 등을 구분할 때 사용하여 콘텐츠의 가독성을 향상시킬 수 있습니다.
6
+
7
+ ```tsx
8
+ <Box sx={{
9
+ width: 300,
10
+ height: 200,
11
+ p: 3
12
+ }}>
13
+ <Typography level="body-md">위 콘텐츠</Typography>
14
+ <Divider {...args} sx={{
15
+ my: 2
16
+ }} />
17
+ <Typography level="body-md">아래 콘텐츠</Typography>
18
+ </Box>
19
+ ```
20
+
21
+ | Field | Description | Default |
22
+ | ----------- | ----------- | ------------ |
23
+ | orientation | 구분선의 방향 | "horizontal" |
24
+ | inset | 구분선의 들여쓰기 | — |
25
+ | color | 구분선의 색상 | — |
26
+
27
+ ## Usage
28
+
29
+ ```tsx
30
+ import { Divider } from '@ceed/ads';
31
+
32
+ function MyComponent() {
33
+ return (
34
+ <div>
35
+ <p>첫 번째 콘텐츠</p>
36
+ <Divider />
37
+ <p>두 번째 콘텐츠</p>
38
+ </div>
39
+ );
40
+ }
41
+ ```
42
+
43
+ ## Examples
44
+
45
+ ### Basic Usage
46
+
47
+ 가장 기본적인 Divider 사용법입니다.
48
+
49
+ ```tsx
50
+ <Stack spacing={3}>
51
+ <Box>
52
+ <Typography level="title-md" sx={{
53
+ mb: 2
54
+ }}>
55
+ 기본 수평 구분선
56
+ </Typography>
57
+ <Typography level="body-sm">첫 번째 콘텐츠</Typography>
58
+ <Divider sx={{
59
+ my: 1
60
+ }} />
61
+ <Typography level="body-sm">두 번째 콘텐츠</Typography>
62
+ </Box>
63
+
64
+ <Box sx={{
65
+ display: 'flex',
66
+ alignItems: 'center',
67
+ height: 60
68
+ }}>
69
+ <Typography level="title-md" sx={{
70
+ mr: 2
71
+ }}>
72
+ 수직 구분선
73
+ </Typography>
74
+ <Divider orientation="vertical" />
75
+ <Typography level="title-md" sx={{
76
+ ml: 2
77
+ }}>
78
+ 다른 섹션
79
+ </Typography>
80
+ </Box>
81
+ </Stack>
82
+ ```
83
+
84
+ ### Orientations
85
+
86
+ 구분선의 방향을 설정할 수 있습니다.
87
+
88
+ ```tsx
89
+ <Stack spacing={4}>
90
+ <Box>
91
+ <Typography level="title-sm" sx={{
92
+ mb: 2
93
+ }}>
94
+ Horizontal (기본)
95
+ </Typography>
96
+ <Typography level="body-sm">첫 번째 섹션</Typography>
97
+ <Divider orientation="horizontal" sx={{
98
+ my: 1
99
+ }} />
100
+ <Typography level="body-sm">두 번째 섹션</Typography>
101
+ </Box>
102
+
103
+ <Box sx={{
104
+ display: 'flex',
105
+ alignItems: 'center',
106
+ height: 80
107
+ }}>
108
+ <Typography level="title-sm" sx={{
109
+ mr: 2
110
+ }}>
111
+ Vertical
112
+ </Typography>
113
+ <Divider orientation="vertical" sx={{
114
+ mx: 2
115
+ }} />
116
+ <Typography level="title-sm">수직 구분선은 요소들을 좌우로 구분합니다</Typography>
117
+ </Box>
118
+ </Stack>
119
+ ```
120
+
121
+ ### Colors
122
+
123
+ 다양한 색상을 적용할 수 있습니다.
124
+
125
+ ```tsx
126
+ <Stack spacing={3}>
127
+ {['primary', 'neutral', 'danger', 'success', 'warning'].map(color => <Box key={color}>
128
+ <Typography level="title-sm" sx={{
129
+ mb: 1,
130
+ textTransform: 'capitalize'
131
+ }}>
132
+ {color}
133
+ </Typography>
134
+ <Typography level="body-sm">위 콘텐츠</Typography>
135
+ <Divider color={color as any} sx={{
136
+ my: 1
137
+ }} />
138
+ <Typography level="body-sm">아래 콘텐츠</Typography>
139
+ </Box>)}
140
+ </Stack>
141
+ ```
142
+
143
+ ### With Text
144
+
145
+ 구분선 중앙에 텍스트를 배치할 수 있습니다.
146
+
147
+ ```tsx
148
+ <Stack spacing={3}>
149
+ <Box>
150
+ <Typography level="body-md">로그인 정보</Typography>
151
+ <Divider sx={{
152
+ my: 2
153
+ }}>또는</Divider>
154
+ <Typography level="body-md">소셜 로그인</Typography>
155
+ </Box>
156
+
157
+ <Box>
158
+ <Typography level="body-md">개인 정보</Typography>
159
+ <Divider sx={{
160
+ my: 2,
161
+ '&::before, &::after': {
162
+ border: '1px solid',
163
+ borderColor: 'primary.500'
164
+ }
165
+ }}>
166
+ <Typography level="title-sm" color="primary">
167
+ 추가 정보
168
+ </Typography>
169
+ </Divider>
170
+ <Typography level="body-md">추가 세부사항</Typography>
171
+ </Box>
172
+ </Stack>
173
+ ```
174
+
175
+ ### In Cards
176
+
177
+ 카드나 패널 내에서 섹션을 구분하는 용도로 사용할 수 있습니다.
178
+
179
+ ```tsx
180
+ <Stack direction="row" spacing={3}>
181
+ <Sheet variant="outlined" sx={{
182
+ p: 3,
183
+ minWidth: 250,
184
+ borderRadius: 'md'
185
+ }}>
186
+ <Typography level="title-lg" sx={{
187
+ mb: 2
188
+ }}>
189
+ 사용자 정보
190
+ </Typography>
191
+ <Typography level="body-sm" sx={{
192
+ mb: 1
193
+ }}>
194
+ 이름: 김철수
195
+ </Typography>
196
+ <Typography level="body-sm" sx={{
197
+ mb: 2
198
+ }}>
199
+ 이메일: kim@example.com
200
+ </Typography>
201
+
202
+ <Divider sx={{
203
+ my: 2
204
+ }} />
205
+
206
+ <Typography level="title-md" sx={{
207
+ mb: 2
208
+ }}>
209
+ 통계
210
+ </Typography>
211
+ <Typography level="body-sm" sx={{
212
+ mb: 1
213
+ }}>
214
+ 가입일: 2024.01.15
215
+ </Typography>
216
+ <Typography level="body-sm">활동 점수: 1,234</Typography>
217
+ </Sheet>
218
+
219
+ <Sheet variant="outlined" sx={{
220
+ p: 3,
221
+ minWidth: 250,
222
+ borderRadius: 'md'
223
+ }}>
224
+ <Typography level="title-lg" sx={{
225
+ mb: 2
226
+ }}>
227
+ 프로젝트 현황
228
+ </Typography>
229
+
230
+ <Box sx={{
231
+ display: 'flex',
232
+ justifyContent: 'space-between',
233
+ mb: 1
234
+ }}>
235
+ <Typography level="body-sm">완료</Typography>
236
+ <Typography level="body-sm" color="success">
237
+ 12
238
+ </Typography>
239
+ </Box>
240
+
241
+ <Divider color="neutral" sx={{
242
+ my: 1,
243
+ opacity: 0.3
244
+ }} />
245
+
246
+ <Box sx={{
247
+ display: 'flex',
248
+ justifyContent: 'space-between',
249
+ mb: 1
250
+ }}>
251
+ <Typography level="body-sm">진행중</Typography>
252
+ <Typography level="body-sm" color="warning">
253
+ 5
254
+ </Typography>
255
+ </Box>
256
+
257
+ <Divider color="neutral" sx={{
258
+ my: 1,
259
+ opacity: 0.3
260
+ }} />
261
+
262
+ <Box sx={{
263
+ display: 'flex',
264
+ justifyContent: 'space-between'
265
+ }}>
266
+ <Typography level="body-sm">대기</Typography>
267
+ <Typography level="body-sm" color="neutral">
268
+ 3
269
+ </Typography>
270
+ </Box>
271
+ </Sheet>
272
+ </Stack>
273
+ ```
274
+
275
+ ### List Separators
276
+
277
+ 목록 항목들을 구분하는 구분선으로 사용할 수 있습니다.
278
+
279
+ ```tsx
280
+ <Sheet variant="outlined" sx={{
281
+ maxWidth: 400,
282
+ borderRadius: 'md'
283
+ }}>
284
+ <Stack>
285
+ <Box sx={{
286
+ p: 2
287
+ }}>
288
+ <Typography level="body-md">첫 번째 항목</Typography>
289
+ <Typography level="body-xs" color="neutral">
290
+ 첫 번째 항목에 대한 설명입니다.
291
+ </Typography>
292
+ </Box>
293
+
294
+ <Divider />
295
+
296
+ <Box sx={{
297
+ p: 2
298
+ }}>
299
+ <Typography level="body-md">두 번째 항목</Typography>
300
+ <Typography level="body-xs" color="neutral">
301
+ 두 번째 항목에 대한 설명입니다.
302
+ </Typography>
303
+ </Box>
304
+
305
+ <Divider />
306
+
307
+ <Box sx={{
308
+ p: 2
309
+ }}>
310
+ <Typography level="body-md">세 번째 항목</Typography>
311
+ <Typography level="body-xs" color="neutral">
312
+ 세 번째 항목에 대한 설명입니다.
313
+ </Typography>
314
+ </Box>
315
+ </Stack>
316
+ </Sheet>
317
+ ```
318
+
319
+ ### Responsive Orientation
320
+
321
+ 화면 크기에 따라 방향을 변경할 수 있습니다.
322
+
323
+ ```tsx
324
+ <Stack spacing={3}>
325
+ <Typography level="title-md">화면 크기에 따라 방향이 바뀌는 구분선</Typography>
326
+
327
+ <Box sx={{
328
+ display: 'flex',
329
+ flexDirection: {
330
+ xs: 'column',
331
+ sm: 'row'
332
+ },
333
+ alignItems: 'center',
334
+ gap: 2,
335
+ p: 3,
336
+ bgcolor: 'background.level1',
337
+ borderRadius: 'md'
338
+ }}>
339
+ <Typography level="body-md" sx={{
340
+ textAlign: 'center'
341
+ }}>
342
+ 첫 번째 섹션
343
+ </Typography>
344
+
345
+ <Divider orientation={{
346
+ xs: 'horizontal',
347
+ sm: 'vertical'
348
+ } as any} sx={{
349
+ width: {
350
+ xs: '100%',
351
+ sm: 'auto'
352
+ },
353
+ height: {
354
+ xs: 'auto',
355
+ sm: 40
356
+ }
357
+ }} />
358
+
359
+ <Typography level="body-md" sx={{
360
+ textAlign: 'center'
361
+ }}>
362
+ 두 번째 섹션
363
+ </Typography>
364
+ </Box>
365
+
366
+ <Typography level="body-xs" color="neutral">
367
+ * 화면 크기를 조절하여 구분선 방향 변화를 확인하세요
368
+ </Typography>
369
+ </Stack>
370
+ ```
371
+
372
+ ### With Motion
373
+
374
+ Framer Motion 애니메이션을 적용할 수 있습니다.
375
+
376
+ ```tsx
377
+ <Stack spacing={3}>
378
+ <Typography level="title-md">Framer Motion 애니메이션이 적용된 구분선</Typography>
379
+
380
+ <Box sx={{
381
+ p: 3,
382
+ bgcolor: 'background.level1',
383
+ borderRadius: 'md'
384
+ }}>
385
+ <Typography level="body-md" sx={{
386
+ mb: 2
387
+ }}>
388
+ 위 콘텐츠
389
+ </Typography>
390
+
391
+ <Divider initial={{
392
+ scaleX: 0
393
+ }} animate={{
394
+ scaleX: 1
395
+ }} transition={{
396
+ duration: 1,
397
+ ease: 'easeOut'
398
+ }} sx={{
399
+ my: 2,
400
+ transformOrigin: 'left'
401
+ }} />
402
+
403
+ <Typography level="body-md">아래 콘텐츠 (구분선이 애니메이션과 함께 나타남)</Typography>
404
+ </Box>
405
+
406
+ <Box sx={{
407
+ display: 'flex',
408
+ alignItems: 'center',
409
+ p: 3,
410
+ bgcolor: 'background.level1',
411
+ borderRadius: 'md'
412
+ }}>
413
+ <Typography level="body-md" sx={{
414
+ mr: 3
415
+ }}>
416
+ 좌측 콘텐츠
417
+ </Typography>
418
+
419
+ <Divider orientation="vertical" initial={{
420
+ scaleY: 0
421
+ }} animate={{
422
+ scaleY: 1
423
+ }} transition={{
424
+ duration: 1,
425
+ delay: 0.5
426
+ }} sx={{
427
+ mx: 2,
428
+ height: 40,
429
+ transformOrigin: 'top'
430
+ }} />
431
+
432
+ <Typography level="body-md" sx={{
433
+ ml: 3
434
+ }}>
435
+ 우측 콘텐츠
436
+ </Typography>
437
+ </Box>
438
+ </Stack>
439
+ ```
440
+
441
+ ### Custom Styling
442
+
443
+ CSS 스타일을 이용해 구분선을 커스터마이징할 수 있습니다.
444
+
445
+ ```tsx
446
+ <Stack spacing={4}>
447
+ <Box>
448
+ <Typography level="title-sm" sx={{
449
+ mb: 2
450
+ }}>
451
+ 둥근 모서리 구분선
452
+ </Typography>
453
+ <Typography level="body-sm">위 콘텐츠</Typography>
454
+ <Divider sx={{
455
+ my: 2,
456
+ borderWidth: 3,
457
+ borderRadius: '6px',
458
+ borderColor: 'primary.500'
459
+ }} />
460
+ <Typography level="body-sm">아래 콘텐츠</Typography>
461
+ </Box>
462
+
463
+ <Box>
464
+ <Typography level="title-sm" sx={{
465
+ mb: 2
466
+ }}>
467
+ 그라데이션 구분선 (Box 사용)
468
+ </Typography>
469
+ <Typography level="body-sm">위 콘텐츠</Typography>
470
+ <Box sx={{
471
+ height: 2,
472
+ my: 2,
473
+ background: 'linear-gradient(90deg, transparent, #0073e6, transparent)',
474
+ borderRadius: '1px'
475
+ }} />
476
+ <Typography level="body-sm">아래 콘텐츠</Typography>
477
+ </Box>
478
+
479
+ <Box>
480
+ <Typography level="title-sm" sx={{
481
+ mb: 2
482
+ }}>
483
+ 패턴 구분선 (Box 사용)
484
+ </Typography>
485
+ <Typography level="body-sm">위 콘텐츠</Typography>
486
+ <Box sx={{
487
+ height: 3,
488
+ my: 2,
489
+ background: `repeating-linear-gradient(
490
+ 90deg,
491
+ #0073e6 0px,
492
+ #0073e6 10px,
493
+ transparent 10px,
494
+ transparent 20px
495
+ )`,
496
+ borderRadius: '1px'
497
+ }} />
498
+ <Typography level="body-sm">아래 콘텐츠</Typography>
499
+ </Box>
500
+
501
+ <Box>
502
+ <Typography level="title-sm" sx={{
503
+ mb: 2
504
+ }}>
505
+ 그림자 효과
506
+ </Typography>
507
+ <Typography level="body-sm">위 콘텐츠</Typography>
508
+ <Divider sx={{
509
+ my: 2,
510
+ borderColor: 'neutral.500',
511
+ filter: 'drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.2))'
512
+ }} />
513
+ <Typography level="body-sm">아래 콘텐츠</Typography>
514
+ </Box>
515
+ </Stack>
516
+ ```
517
+
518
+ ## Key Props
519
+
520
+ ### orientation
521
+
522
+ 구분선의 방향을 설정합니다.
523
+
524
+ ```tsx
525
+ <Divider orientation="horizontal" /> {/* 기본값 */}
526
+ <Divider orientation="vertical" />
527
+
528
+ {/* 반응형 방향 */}
529
+ <Divider orientation={{ xs: 'horizontal', sm: 'vertical' }} />
530
+ ```
531
+
532
+ ### variant
533
+
534
+ 구분선의 스타일을 설정합니다.
535
+
536
+ ```tsx
537
+ <Divider variant="solid" /> {/* 기본값 - 실선 */}
538
+ <Divider variant="plain" /> {/* 평면 스타일 */}
539
+ <Divider variant="soft" /> {/* 부드러운 스타일 */}
540
+ ```
541
+
542
+ ### color
543
+
544
+ 구분선의 색상을 설정합니다.
545
+
546
+ ```tsx
547
+ <Divider color="neutral" /> {/* 기본값 */}
548
+ <Divider color="primary" />
549
+ <Divider color="danger" />
550
+ <Divider color="success" />
551
+ <Divider color="warning" />
552
+ ```
553
+
554
+ ## Common Use Cases
555
+
556
+ ### Navigation Sections
557
+
558
+ ```tsx
559
+ <nav>
560
+ <Link href="/home">Home</Link>
561
+ <Link href="/about">About</Link>
562
+
563
+ <Divider sx={{ my: 1 }} />
564
+
565
+ <Link href="/login">Login</Link>
566
+ <Link href="/signup">Sign Up</Link>
567
+ </nav>
568
+ ```
569
+
570
+ ### Form Sections
571
+
572
+ ```tsx
573
+ <form>
574
+ <Stack spacing={2}>
575
+ <Typography level="title-md">개인 정보</Typography>
576
+ <FormControl>
577
+ <FormLabel>이름</FormLabel>
578
+ <Input />
579
+ </FormControl>
580
+ <FormControl>
581
+ <FormLabel>이메일</FormLabel>
582
+ <Input type="email" />
583
+ </FormControl>
584
+
585
+ <Divider sx={{ my: 3 }}>추가 정보</Divider>
586
+
587
+ <FormControl>
588
+ <FormLabel>회사명</FormLabel>
589
+ <Input />
590
+ </FormControl>
591
+ </Stack>
592
+ </form>
593
+ ```
594
+
595
+ ### Card Content Separation
596
+
597
+ ```tsx
598
+ <Card>
599
+ <CardContent>
600
+ <Typography level="title-lg">제품명</Typography>
601
+ <Typography level="body-md">제품 설명...</Typography>
602
+
603
+ <Divider sx={{ my: 2 }} />
604
+
605
+ <Stack direction="row" justifyContent="space-between">
606
+ <Typography level="title-lg" color="primary">
607
+ ₩99,000
608
+ </Typography>
609
+ <Button>장바구니</Button>
610
+ </Stack>
611
+ </CardContent>
612
+ </Card>
613
+ ```
614
+
615
+ ### List Items
616
+
617
+ ```tsx
618
+ <Stack>
619
+ {items.map((item, index) => (
620
+ <React.Fragment key={item.id}>
621
+ <Box sx={{ p: 2 }}>
622
+ <Typography level="title-sm">{item.title}</Typography>
623
+ <Typography level="body-sm">{item.description}</Typography>
624
+ </Box>
625
+ {index < items.length - 1 && <Divider />}
626
+ </React.Fragment>
627
+ ))}
628
+ </Stack>
629
+ ```
630
+
631
+ ### Dashboard Sections
632
+
633
+ ```tsx
634
+ <Sheet variant="outlined" sx={{ p: 3 }}>
635
+ <Typography level="title-lg">대시보드</Typography>
636
+
637
+ <Divider sx={{ my: 2 }} />
638
+
639
+ <Grid container spacing={2}>
640
+ <Grid item xs={12} sm={6}>
641
+ <StatCard title="사용자" value="1,234" />
642
+ </Grid>
643
+ <Grid item xs={12} sm={6}>
644
+ <StatCard title="매출" value="₩5.6M" />
645
+ </Grid>
646
+ </Grid>
647
+
648
+ <Divider sx={{ my: 2 }} />
649
+
650
+ <Typography level="title-md">최근 활동</Typography>
651
+ {/* 활동 목록 */}
652
+ </Sheet>
653
+ ```
654
+
655
+ ### Modal Content
656
+
657
+ ```tsx
658
+ <Modal open={open}>
659
+ <Sheet variant="outlined" sx={{ p: 4, borderRadius: 'md' }}>
660
+ <Typography level="title-lg">설정</Typography>
661
+
662
+ <Divider sx={{ my: 2 }} />
663
+
664
+ <Stack spacing={2}>
665
+ <FormControl>
666
+ <FormLabel>알림 설정</FormLabel>
667
+ <Switch />
668
+ </FormControl>
669
+
670
+ <FormControl>
671
+ <FormLabel>테마 설정</FormLabel>
672
+ <Select defaultValue="light">
673
+ <Option value="light">Light</Option>
674
+ <Option value="dark">Dark</Option>
675
+ </Select>
676
+ </FormControl>
677
+ </Stack>
678
+
679
+ <Divider sx={{ my: 3 }} />
680
+
681
+ <Stack direction="row" spacing={2} justifyContent="flex-end">
682
+ <Button variant="outlined" onClick={handleClose}>
683
+ 취소
684
+ </Button>
685
+ <Button onClick={handleSave}>저장</Button>
686
+ </Stack>
687
+ </Sheet>
688
+ </Modal>
689
+ ```
690
+
691
+ ## Best Practices
692
+
693
+ 1. **적절한 여백**: 구분선 위아래에 충분한 여백을 두어 콘텐츠가 명확히 구분되도록 하세요.
694
+
695
+ 2. **의미있는 구분**: 논리적으로 관련 있는 콘텐츠끼리 그룹화하고 구분선으로 섹션을 나누세요.
696
+
697
+ 3. **과도한 사용 금지**: 너무 많은 구분선은 인터페이스를 복잡하게 만들 수 있습니다.
698
+
699
+ 4. **수직 구분선 사용**: 수직 구분선을 사용할 때는 부모 컨테이너의 높이를 명시해주세요.
700
+
701
+ 5. **반응형 고려**: 모바일에서는 수직 구분선이 수평으로 변경되어야 할 수 있습니다.
702
+
703
+ 6. **색상 일관성**: 프로젝트 전반에서 일관된 구분선 색상과 스타일을 사용하세요.
704
+
705
+ 7. **접근성**:
706
+ - 구분선은 단순히 시각적 구분을 위한 것이므로 스크린 리더에서는 무시됩니다
707
+ - 의미적 구분이 필요한 경우 적절한 HTML 섹션 태그를 함께 사용하세요
708
+
709
+ ## Responsive Behavior
710
+
711
+ Divider는 모든 props에서 반응형 값을 지원합니다:
712
+
713
+ ```tsx
714
+ <Divider
715
+ orientation={{ xs: 'horizontal', md: 'vertical' }}
716
+ sx={{
717
+ width: { xs: '100%', md: 'auto' },
718
+ height: { xs: 'auto', md: 50 },
719
+ my: { xs: 2, md: 0 },
720
+ mx: { xs: 0, md: 2 },
721
+ }}
722
+ />
723
+ ```
724
+
725
+ ## Motion Support
726
+
727
+ Divider는 Framer Motion을 지원합니다:
728
+
729
+ ```tsx
730
+ <Divider
731
+ initial={{ scaleX: 0 }}
732
+ animate={{ scaleX: 1 }}
733
+ transition={{ duration: 0.5 }}
734
+ sx={{ transformOrigin: 'left' }}
735
+ />
736
+
737
+ <Divider
738
+ orientation="vertical"
739
+ initial={{ scaleY: 0 }}
740
+ animate={{ scaleY: 1 }}
741
+ whileHover={{ scaleY: 1.1 }}
742
+ transition={{ duration: 0.3 }}
743
+ />
744
+ ```
745
+
746
+ ## When to Use Divider
747
+
748
+ ### ✅ 사용하기 좋은 경우
749
+
750
+ - **리스트 항목 구분**: 긴 리스트에서 항목들을 명확히 구분할 때
751
+ - **폼 섹션 구분**: 관련 필드들을 그룹으로 나눌 때
752
+ - **카드 내 콘텐츠 구분**: 카드 내에서 다른 성격의 정보를 구분할 때
753
+ - **네비게이션 메뉴**: 메뉴 그룹을 시각적으로 구분할 때
754
+ - **대시보드 섹션**: 대시보드의 위젯이나 섹션을 구분할 때
755
+
756
+ ### ❌ 사용하지 않는 것이 좋은 경우
757
+
758
+ - **단순한 여백으로 충분한 경우**: 과도한 구분선 사용은 피하세요
759
+ - **이미 다른 구분 요소가 있는 경우**: 색상, 배경, 테두리 등으로 이미 구분되어 있다면 불필요
760
+ - **너무 짧은 콘텐츠**: 한두 줄 정도의 짧은 콘텐츠에는 구분선이 과할 수 있습니다
761
+
762
+ Divider는 콘텐츠의 구조를 명확히 하고 가독성을 향상시키는 유용한 도구입니다. 적절히 사용하면 사용자가 정보를 더 쉽게 이해할 수 있는 인터페이스를 만들 수 있습니다.