@ceed/cds 1.28.0 → 1.29.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 (65) 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/DataTable/hooks.d.ts +2 -1
  4. package/dist/components/DataTable/utils.d.ts +1 -0
  5. package/dist/components/SearchBar/SearchBar.d.ts +21 -0
  6. package/dist/components/SearchBar/index.d.ts +3 -0
  7. package/dist/components/data-display/DataTable.md +1 -1
  8. package/dist/components/data-display/InfoSign.md +91 -74
  9. package/dist/components/data-display/Typography.md +94 -411
  10. package/dist/components/feedback/Dialog.md +62 -76
  11. package/dist/components/feedback/Modal.md +138 -430
  12. package/dist/components/feedback/llms.txt +0 -2
  13. package/dist/components/index.d.ts +2 -1
  14. package/dist/components/inputs/Autocomplete.md +107 -356
  15. package/dist/components/inputs/ButtonGroup.md +104 -115
  16. package/dist/components/inputs/CurrencyInput.md +5 -183
  17. package/dist/components/inputs/DatePicker.md +431 -108
  18. package/dist/components/inputs/DateRangePicker.md +492 -131
  19. package/dist/components/inputs/FilterableCheckboxGroup.md +19 -145
  20. package/dist/components/inputs/IconButton.md +88 -137
  21. package/dist/components/inputs/Input.md +73 -204
  22. package/dist/components/inputs/MonthPicker.md +422 -95
  23. package/dist/components/inputs/MonthRangePicker.md +466 -89
  24. package/dist/components/inputs/PercentageInput.md +16 -185
  25. package/dist/components/inputs/RadioButton.md +35 -163
  26. package/dist/components/inputs/SearchBar.md +44 -0
  27. package/dist/components/inputs/Select.md +326 -222
  28. package/dist/components/inputs/Switch.md +376 -143
  29. package/dist/components/inputs/Textarea.md +10 -213
  30. package/dist/components/inputs/Uploader/Uploader.md +66 -145
  31. package/dist/components/inputs/llms.txt +1 -4
  32. package/dist/components/navigation/Breadcrumbs.md +308 -57
  33. package/dist/components/navigation/Drawer.md +0 -180
  34. package/dist/components/navigation/Dropdown.md +215 -98
  35. package/dist/components/navigation/IconMenuButton.md +502 -40
  36. package/dist/components/navigation/InsetDrawer.md +650 -281
  37. package/dist/components/navigation/Link.md +348 -31
  38. package/dist/components/navigation/Menu.md +285 -92
  39. package/dist/components/navigation/MenuButton.md +448 -55
  40. package/dist/components/navigation/Pagination.md +338 -47
  41. package/dist/components/navigation/Stepper.md +28 -160
  42. package/dist/components/navigation/Tabs.md +316 -57
  43. package/dist/components/surfaces/Accordions.md +804 -49
  44. package/dist/components/surfaces/Card.md +157 -97
  45. package/dist/components/surfaces/Divider.md +234 -83
  46. package/dist/components/surfaces/Sheet.md +328 -153
  47. package/dist/index.cjs +435 -577
  48. package/dist/index.d.ts +1 -1
  49. package/dist/index.js +424 -510
  50. package/dist/llms.txt +1 -9
  51. package/framer/index.js +1 -1
  52. package/package.json +17 -22
  53. package/dist/chunks/rehype-accent-FZRUD7VI.js +0 -39
  54. package/dist/components/RadioTileGroup/RadioTileGroup.d.ts +0 -56
  55. package/dist/components/RadioTileGroup/index.d.ts +0 -3
  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/RadioTileGroup.md +0 -507
  61. package/dist/components/inputs/Slider.md +0 -334
  62. package/dist/guides/ThemeProvider.md +0 -89
  63. package/dist/guides/llms.txt +0 -9
  64. package/dist/index.browser.js +0 -224
  65. package/dist/index.browser.js.map +0 -7
@@ -2,9 +2,7 @@
2
2
 
3
3
  ## Introduction
4
4
 
5
- Divider is a visual separator component that draws a thin line between content sections. It helps organize layouts by creating clear visual boundaries between groups of related content. Built on Joy UI's Divider component, it supports horizontal and vertical orientations, multiple color options, and Framer Motion animation props for animated transitions.
6
-
7
- Dividers are commonly used to separate list items, form sections, card content areas, navigation groups, and dashboard panels. They can optionally contain centered text to label the sections they divide.
5
+ Divider 컴포넌트는 콘텐츠를 시각적으로 구분하는 선을 그려주는 컴포넌트입니다. Joy UI의 Divider 컴포넌트를 기반으로 하며, Framer Motion 애니메이션 지원이 추가되었습니다. 리스트 항목, 카드 섹션, 영역 등을 구분할 사용하여 콘텐츠의 가독성을 향상시킬 있습니다.
8
6
 
9
7
  ```tsx
10
8
  <Box sx={{
@@ -34,17 +32,19 @@ import { Divider } from '@ceed/cds';
34
32
  function MyComponent() {
35
33
  return (
36
34
  <div>
37
- <p>First section</p>
35
+ <p>첫 번째 콘텐츠</p>
38
36
  <Divider />
39
- <p>Second section</p>
37
+ <p>두 번째 콘텐츠</p>
40
38
  </div>
41
39
  );
42
40
  }
43
41
  ```
44
42
 
45
- ## Basic
43
+ ## Examples
44
+
45
+ ### Basic Usage
46
46
 
47
- The simplest usage of Divider in both horizontal and vertical orientations.
47
+ 가장 기본적인 Divider 사용법입니다.
48
48
 
49
49
  ```tsx
50
50
  <Stack spacing={3}>
@@ -81,9 +81,9 @@ The simplest usage of Divider in both horizontal and vertical orientations.
81
81
  </Stack>
82
82
  ```
83
83
 
84
- ## Orientations
84
+ ### Orientations
85
85
 
86
- Divider supports `horizontal` (default) and `vertical` orientations. Vertical dividers are useful for separating inline or row-based content.
86
+ 구분선의 방향을 설정할 있습니다.
87
87
 
88
88
  ```tsx
89
89
  <Stack spacing={4}>
@@ -118,9 +118,9 @@ Vertical
118
118
  </Stack>
119
119
  ```
120
120
 
121
- ## Colors
121
+ ### Colors
122
122
 
123
- Apply semantic colors to dividers for emphasis or to match the surrounding context.
123
+ 다양한 색상을 적용할 있습니다.
124
124
 
125
125
  ```tsx
126
126
  <Stack spacing={3}>
@@ -140,9 +140,9 @@ Apply semantic colors to dividers for emphasis or to match the surrounding conte
140
140
  </Stack>
141
141
  ```
142
142
 
143
- ## With Text
143
+ ### With Text
144
144
 
145
- Place text or other elements inside a Divider to create labeled section breaks (e.g., "OR" between login options).
145
+ 구분선 중앙에 텍스트를 배치할 있습니다.
146
146
 
147
147
  ```tsx
148
148
  <Stack spacing={3}>
@@ -172,9 +172,9 @@ Place text or other elements inside a Divider to create labeled section breaks (
172
172
  </Stack>
173
173
  ```
174
174
 
175
- ## In Cards
175
+ ### In Cards
176
176
 
177
- Use Dividers within cards and panels to separate distinct content sections.
177
+ 카드나 패널 내에서 섹션을 구분하는 용도로 사용할 있습니다.
178
178
 
179
179
  ```tsx
180
180
  <Stack direction="row" spacing={3}>
@@ -272,9 +272,9 @@ Use Dividers within cards and panels to separate distinct content sections.
272
272
  </Stack>
273
273
  ```
274
274
 
275
- ## List Separators
275
+ ### List Separators
276
276
 
277
- Dividers work naturally as separators between list items.
277
+ 목록 항목들을 구분하는 구분선으로 사용할 있습니다.
278
278
 
279
279
  ```tsx
280
280
  <Sheet variant="outlined" sx={{
@@ -316,9 +316,9 @@ Dividers work naturally as separators between list items.
316
316
  </Sheet>
317
317
  ```
318
318
 
319
- ## Responsive Orientation
319
+ ### Responsive Orientation
320
320
 
321
- Divider orientation can change based on screen size using responsive values, switching from horizontal on mobile to vertical on larger screens.
321
+ 화면 크기에 따라 방향을 변경할 있습니다.
322
322
 
323
323
  ```tsx
324
324
  <Stack spacing={3}>
@@ -369,9 +369,9 @@ Divider orientation can change based on screen size using responsive values, swi
369
369
  </Stack>
370
370
  ```
371
371
 
372
- ## With Motion
372
+ ### With Motion
373
373
 
374
- Framer Motion animation props can be applied directly to Divider for animated reveal effects.
374
+ Framer Motion 애니메이션을 적용할 있습니다.
375
375
 
376
376
  ```tsx
377
377
  <Stack spacing={3}>
@@ -438,9 +438,9 @@ Framer Motion animation props can be applied directly to Divider for animated re
438
438
  </Stack>
439
439
  ```
440
440
 
441
- ## Custom Styling
441
+ ### Custom Styling
442
442
 
443
- Advanced styling techniques including rounded corners, gradients (using Box), and shadow effects.
443
+ CSS 스타일을 이용해 구분선을 커스터마이징할 있습니다.
444
444
 
445
445
  ```tsx
446
446
  <Stack spacing={4}>
@@ -515,97 +515,248 @@ borderRadius: '1px'
515
515
  </Stack>
516
516
  ```
517
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
+
518
554
  ## Common Use Cases
519
555
 
520
- ### Form Section Break
556
+ ### Navigation Sections
521
557
 
522
558
  ```tsx
523
- import { Divider, Stack, FormControl, FormLabel, Input, Typography } from '@ceed/cds';
559
+ <nav>
560
+ <Link href="/home">Home</Link>
561
+ <Link href="/about">About</Link>
524
562
 
525
- function SectionedForm() {
526
- return (
527
- <Stack spacing={2}>
528
- <Typography level="title-md">Personal Info</Typography>
529
- <FormControl>
530
- <FormLabel>Name</FormLabel>
531
- <Input />
532
- </FormControl>
533
- <FormControl>
534
- <FormLabel>Email</FormLabel>
535
- <Input type="email" />
536
- </FormControl>
563
+ <Divider sx={{ my: 1 }} />
537
564
 
538
- <Divider sx={{ my: 3 }}>Additional Info</Divider>
565
+ <Link href="/login">Login</Link>
566
+ <Link href="/signup">Sign Up</Link>
567
+ </nav>
568
+ ```
539
569
 
540
- <FormControl>
541
- <FormLabel>Company</FormLabel>
542
- <Input />
543
- </FormControl>
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>
544
610
  </Stack>
545
- );
546
- }
611
+ </CardContent>
612
+ </Card>
547
613
  ```
548
614
 
549
- ### Login Separator
615
+ ### List Items
550
616
 
551
617
  ```tsx
552
- import { Divider, Stack, Button, Typography } from '@ceed/cds';
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
+ ```
553
630
 
554
- function LoginOptions() {
555
- return (
556
- <Stack spacing={2} sx={{ maxWidth: 400 }}>
557
- <Button fullWidth>Sign in with Email</Button>
631
+ ### Dashboard Sections
558
632
 
559
- <Divider>or</Divider>
633
+ ```tsx
634
+ <Sheet variant="outlined" sx={{ p: 3 }}>
635
+ <Typography level="title-lg">대시보드</Typography>
560
636
 
561
- <Button fullWidth variant="outlined">Sign in with Google</Button>
562
- <Button fullWidth variant="outlined">Sign in with GitHub</Button>
563
- </Stack>
564
- );
565
- }
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>
566
653
  ```
567
654
 
568
- ### Dashboard Section Separator
655
+ ### Modal Content
569
656
 
570
657
  ```tsx
571
- import { Divider, Sheet, Typography, Stack } from '@ceed/cds';
658
+ <Modal open={open}>
659
+ <Sheet variant="outlined" sx={{ p: 4, borderRadius: 'md' }}>
660
+ <Typography level="title-lg">설정</Typography>
572
661
 
573
- function Dashboard() {
574
- return (
575
- <Sheet variant="outlined" sx={{ p: 3 }}>
576
- <Typography level="title-lg">Dashboard</Typography>
662
+ <Divider sx={{ my: 2 }} />
577
663
 
578
- <Divider sx={{ my: 2 }} />
664
+ <Stack spacing={2}>
665
+ <FormControl>
666
+ <FormLabel>알림 설정</FormLabel>
667
+ <Switch />
668
+ </FormControl>
579
669
 
580
- <Typography level="title-md">Recent Activity</Typography>
581
- {/* Activity list */}
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>
582
678
 
583
- <Divider sx={{ my: 2 }} />
679
+ <Divider sx={{ my: 3 }} />
584
680
 
585
- <Typography level="title-md">Statistics</Typography>
586
- {/* Stats content */}
587
- </Sheet>
588
- );
589
- }
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>
590
689
  ```
591
690
 
592
691
  ## Best Practices
593
692
 
594
- - **Use adequate margin around dividers.** Apply `my` (vertical margin) for horizontal dividers and `mx` (horizontal margin) for vertical dividers to give surrounding content breathing room.
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
+ ```
595
745
 
596
- - **Do not overuse dividers.** If content sections are already visually distinct through background colors, spacing, or card boundaries, adding a divider is redundant.
597
- - ✔ Use a Divider between items in a flat list
598
- - ✘ Add a Divider between cards that already have borders
746
+ ## When to Use Divider
599
747
 
600
- - **Set explicit height for vertical dividers.** Vertical dividers require a parent with a defined height, or an explicit `height` value via `sx`, to render correctly.
748
+ ### 사용하기 좋은 경우
601
749
 
602
- - **Use responsive orientation for adaptive layouts.** When a row layout collapses to a column on mobile, switch the divider orientation accordingly using responsive values.
750
+ - **리스트 항목 구분**: 리스트에서 항목들을 명확히 구분할
751
+ - **폼 섹션 구분**: 관련 필드들을 그룹으로 나눌 때
752
+ - **카드 내 콘텐츠 구분**: 카드 내에서 다른 성격의 정보를 구분할 때
753
+ - **네비게이션 메뉴**: 메뉴 그룹을 시각적으로 구분할 때
754
+ - **대시보드 섹션**: 대시보드의 위젯이나 섹션을 구분할 때
603
755
 
604
- - **Reserve text-bearing dividers for clear context switches.** Only use dividers with text (e.g., "OR", "Section 2") when the label genuinely helps users understand the content transition.
756
+ ### 사용하지 않는 것이 좋은 경우
605
757
 
606
- ## Accessibility
758
+ - **단순한 여백으로 충분한 경우**: 과도한 구분선 사용은 피하세요
759
+ - **이미 다른 구분 요소가 있는 경우**: 색상, 배경, 테두리 등으로 이미 구분되어 있다면 불필요
760
+ - **너무 짧은 콘텐츠**: 한두 줄 정도의 짧은 콘텐츠에는 구분선이 과할 수 있습니다
607
761
 
608
- - Divider renders with `role="separator"` by default, which screen readers recognize as a visual boundary. No additional ARIA attributes are needed for purely decorative dividers.
609
- - When a Divider contains text (e.g., `<Divider>or</Divider>`), the text is readable by screen readers and provides semantic context for the content transition.
610
- - Dividers are non-interactive and non-focusable, so they do not interfere with keyboard navigation.
611
- - If you need a semantic section break rather than a visual one, use appropriate HTML elements (`<section>`, `<hr>`) alongside or instead of Divider.
762
+ Divider 콘텐츠의 구조를 명확히 하고 가독성을 향상시키는 유용한 도구입니다. 적절히 사용하면 사용자가 정보를 쉽게 이해할 있는 인터페이스를 만들 있습니다.