@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,39 @@
1
+ # Modal
2
+
3
+ ## Introduction
4
+
5
+ ```tsx
6
+ <Modal aria-labelledby="modal-title" aria-describedby="modal-desc" open sx={{
7
+ display: 'flex',
8
+ justifyContent: 'center',
9
+ alignItems: 'center'
10
+ }}>
11
+ <Sheet variant="outlined" sx={{
12
+ maxWidth: 500,
13
+ borderRadius: 'md',
14
+ p: 3,
15
+ boxShadow: 'lg'
16
+ }}>
17
+ <ModalClose variant="plain" sx={{
18
+ m: 1
19
+ }} />
20
+ <Typography component="h2" id="modal-title" level="h4" textColor="inherit" fontWeight="lg" mb={2}>
21
+ This is the modal title
22
+ </Typography>
23
+ <Typography id="modal-desc" textColor="text.tertiary">
24
+ Make sure to use <code>aria-labelledby</code> on the modal dialog with an optional{' '}
25
+ <code>aria-describedby</code> attribute.
26
+ </Typography>
27
+ </Sheet>
28
+ </Modal>
29
+ ```
30
+
31
+ | Field | Description | Default |
32
+ | ---------------------------- | ----------- | ------- |
33
+ | Controls resolved at runtime | — | — |
34
+
35
+ ## Usage
36
+
37
+ ```tsx
38
+ import { Modal } from '@ceed/ads';
39
+ ```
@@ -0,0 +1,11 @@
1
+ # feedback
2
+
3
+ ## Documentation
4
+
5
+ - [Alert](./Alert.md)
6
+ - [Dialog](./Dialog.md)
7
+ - [Modal](./Modal.md)
8
+
9
+ ## Parent
10
+
11
+ - [Parent](../llms.txt)
@@ -0,0 +1,103 @@
1
+ # Autocomplete
2
+
3
+ ## Introduction
4
+
5
+ ```tsx
6
+ <Autocomplete options={['Option1', 'Option2']} />
7
+ ```
8
+
9
+ | Field | Description | Default |
10
+ | ------- | ----------- | ------- |
11
+ | label | — | — |
12
+ | loading | — | — |
13
+
14
+ ### Sizes
15
+
16
+ ```tsx
17
+ <div style={{
18
+ display: 'flex',
19
+ gap: '10px'
20
+ }}>
21
+ <Autocomplete {...args} size="sm" />
22
+ <Autocomplete {...args} size="md" />
23
+ <Autocomplete {...args} size="lg" />
24
+ </div>
25
+ ```
26
+
27
+ ### Option Groups
28
+
29
+ ```tsx
30
+ <Autocomplete
31
+ options={[{
32
+ value: "Diaper: Johnson's baby",
33
+ label: "Johnson's baby",
34
+ startDecorator: <Chip color="success">Active</Chip>
35
+ }, {
36
+ value: 'Diaper: Haggis Magic',
37
+ label: 'Haggis Magic',
38
+ startDecorator: <Chip color="danger">Terminated</Chip>
39
+ }, {
40
+ value: 'Wiki: Wiki How',
41
+ label: 'Wiki How',
42
+ startDecorator: <Chip color="success">Active</Chip>
43
+ }, {
44
+ value: 'Wiki: Wikipedia',
45
+ label: 'Wikipedia',
46
+ startDecorator: <Chip color="danger">Terminated</Chip>
47
+ }]}
48
+ groupBy={(option: any) => option.value.split(':')[0]}
49
+ defaultValue="Wiki: Wiki How"
50
+ />
51
+ ```
52
+
53
+ ### WithCustomOptions
54
+
55
+ ```tsx
56
+ <Autocomplete
57
+ options={[{
58
+ value: "Johnson's baby",
59
+ label: "Johnson's baby",
60
+ startDecorator: <Chip color="success">Active</Chip>
61
+ // endDecorator: <Chip color='neutral'>inbound</Chip>,
62
+ }, {
63
+ value: 'Haggis Magic',
64
+ label: 'Haggis Magic',
65
+ startDecorator: <Chip color="danger">Terminated</Chip>
66
+ // endDecorator: <Chip color='neutral'>outbound</Chip>,
67
+ }]}
68
+ value="Johnson's baby"
69
+ />
70
+ ```
71
+
72
+ ### Loading
73
+
74
+ ```tsx
75
+ <Autocomplete
76
+ options={[]}
77
+ loading
78
+ />
79
+ ```
80
+
81
+ ### Controlled
82
+
83
+ ```tsx
84
+ <Stack gap={4}>
85
+ <Autocomplete value={value} label="Select a brand" options={[{
86
+ value: "Johnson's baby",
87
+ label: "Johnson's baby",
88
+ startDecorator: <Chip color="success">Active</Chip>,
89
+ endDecorator: <Chip color="neutral">inbound</Chip>
90
+ }, {
91
+ value: 'Haggis Magic',
92
+ label: 'Haggis Magic',
93
+ startDecorator: <Chip color="danger">Terminated</Chip>,
94
+ endDecorator: <Chip color="neutral">outbound</Chip>
95
+ }, {
96
+ value: 'Hogwarts Magic',
97
+ label: 'Hogwarts Magic',
98
+ startDecorator: <Chip color="danger">Magic</Chip>,
99
+ endDecorator: <Chip color="neutral">Muggle</Chip>
100
+ }]} onChange={e => setValue(e.target.value)} />
101
+ <Button onClick={() => setValue("Johnson's baby")}>Set Johnson's baby</Button>
102
+ </Stack>
103
+ ```
@@ -0,0 +1,334 @@
1
+ # Button
2
+
3
+ ## Introduction
4
+
5
+ Button 컴포넌트는 사용자가 클릭하여 특정 작업을 수행할 수 있는 기본적인 UI 요소입니다. Joy UI의 Button을 기반으로 하며, Framer Motion 애니메이션 지원이 추가되었습니다. 폼 제출, 페이지 이동, 모달 열기/닫기, 데이터 처리 등 다양한 상호작용에 사용됩니다.
6
+
7
+ ```tsx
8
+ <>
9
+ {/* @ts-ignore */}
10
+ <Button {...props} startDecorator={<Add />} />
11
+ <IconButton {...props} aria-label="Add">
12
+ <Add />
13
+ </IconButton>
14
+ </>
15
+ ```
16
+
17
+ | Field | Description | Default |
18
+ | ------- | ----------- | --------- |
19
+ | color | — | "primary" |
20
+ | size | — | "md" |
21
+ | variant | — | "solid" |
22
+
23
+ ## Usage
24
+
25
+ ```tsx
26
+ import { Button } from '@ceed/ads';
27
+
28
+ function MyComponent() {
29
+ return <Button onClick={() => console.log('클릭됨!')}>클릭하세요</Button>;
30
+ }
31
+ ```
32
+
33
+ ## Examples
34
+
35
+ ### Basic Usage
36
+
37
+ 가장 기본적인 버튼 사용법입니다.
38
+
39
+ ```tsx
40
+ <>
41
+ <Button {...props} />
42
+ <Button {...props} disabled />
43
+ <Button {...props} loading />
44
+ </>
45
+ ```
46
+
47
+ ### Disabled State
48
+
49
+ 비활성 상태의 버튼입니다. 사용자가 클릭할 수 없으며 시각적으로도 비활성 상태임을 나타냅니다.
50
+
51
+ ```tsx
52
+ <>
53
+ <Button {...props} startDecorator={<Add />} variant="solid">
54
+ Solid
55
+ </Button>
56
+ <Button {...props} startDecorator={<Add />} variant="soft">
57
+ Soft
58
+ </Button>
59
+ <Button {...props} startDecorator={<Add />} variant="outlined">
60
+ Outlined
61
+ </Button>
62
+ <Button {...props} startDecorator={<Add />} variant="plain">
63
+ Plain
64
+ </Button>
65
+ </>
66
+ ```
67
+
68
+ ### Loading State
69
+
70
+ 로딩 중일 때 사용하는 버튼입니다. 비동기 작업 수행 중에 사용자에게 진행 상태를 알려줍니다.
71
+
72
+ ```tsx
73
+ <Button
74
+ children="Button"
75
+ disabled={false}
76
+ loading
77
+ color="primary"
78
+ size="md"
79
+ variant="solid"
80
+ />
81
+ ```
82
+
83
+ ## Customization
84
+
85
+ ### Variants
86
+
87
+ 버튼의 시각적 스타일을 다양하게 변경할 수 있습니다.
88
+
89
+ ```tsx
90
+ <>
91
+ <Button {...props} variant="solid">
92
+ Solid
93
+ </Button>
94
+ <Button {...props} variant="soft">
95
+ Soft
96
+ </Button>
97
+ <Button {...props} variant="outlined">
98
+ Outlined
99
+ </Button>
100
+ <Button {...props} variant="plain">
101
+ Plain
102
+ </Button>
103
+ </>
104
+ ```
105
+
106
+ - **solid**: 강조가 필요한 주요 액션 (기본값)
107
+ - **soft**: 부드러운 배경의 보조 액션
108
+ - **outlined**: 테두리만 있는 중요도가 낮은 액션
109
+ - **plain**: 텍스트만 있는 최소한의 스타일
110
+
111
+ ### Sizes
112
+
113
+ 버튼의 크기를 조절할 수 있습니다.
114
+
115
+ ```tsx
116
+ <>
117
+ <Button {...props} size="sm">
118
+ Small
119
+ </Button>
120
+ <Button {...props} size="md">
121
+ Medium
122
+ </Button>
123
+ <Button {...props} size="lg">
124
+ Large
125
+ </Button>
126
+ </>
127
+ ```
128
+
129
+ - **sm**: 작은 크기 (제한된 공간에서 사용)
130
+ - **md**: 중간 크기 (기본값)
131
+ - **lg**: 큰 크기 (강조가 필요한 경우)
132
+
133
+ ### Colors
134
+
135
+ 다양한 색상 테마를 적용할 수 있습니다.
136
+
137
+ ```tsx
138
+ <>
139
+ <Button {...props} color="primary">
140
+ Primary
141
+ </Button>
142
+ <Button {...props} color="neutral">
143
+ Neutral
144
+ </Button>
145
+ <Button {...props} color="danger">
146
+ Danger
147
+ </Button>
148
+ <Button {...props} color="success">
149
+ Success
150
+ </Button>
151
+ <Button {...props} color="warning">
152
+ Warning
153
+ </Button>
154
+ </>
155
+ ```
156
+
157
+ - **primary**: 주요 액션 (기본값)
158
+ - **neutral**: 중립적인 액션
159
+ - **success**: 성공/확인 액션
160
+ - **warning**: 주의가 필요한 액션
161
+ - **danger**: 위험한/삭제 액션
162
+
163
+ ### Decorators
164
+
165
+ 버튼에 아이콘이나 다른 요소를 추가할 수 있습니다.
166
+
167
+ ```tsx
168
+ <>
169
+ <Button {...props} startDecorator={<Add />}>
170
+ Add to cart
171
+ </Button>
172
+ <Button {...props} endDecorator={<Add />} color="success">
173
+ Go to checkout
174
+ </Button>
175
+ </>
176
+ ```
177
+
178
+ ### Loading Indicator
179
+
180
+ 로딩 표시기를 커스터마이징할 수 있습니다.
181
+
182
+ ```tsx
183
+ <>
184
+ <Button {...props} loading>
185
+ Default
186
+ </Button>
187
+ <Button {...props} loading loadingIndicator="Loading…">
188
+ Custom
189
+ </Button>
190
+ </>
191
+ ```
192
+
193
+ ### Loading Position
194
+
195
+ 로딩 표시기의 위치를 조절할 수 있습니다.
196
+
197
+ ```tsx
198
+ <>
199
+ <Button {...props} loading loadingPosition="start">
200
+ Start
201
+ </Button>
202
+ <Button {...props} loading loadingPosition="end" endDecorator={<Add />}>
203
+ End
204
+ </Button>
205
+ </>
206
+ ```
207
+
208
+ ## Common Use Cases
209
+
210
+ ### Form Submission
211
+
212
+ ```tsx
213
+ <form onSubmit={handleSubmit}>
214
+ <Stack spacing={2}>
215
+ <Input placeholder="이름을 입력하세요" />
216
+ <Input placeholder="이메일을 입력하세요" />
217
+
218
+ <Stack direction="row" spacing={2} justifyContent="flex-end">
219
+ <Button variant="outlined" type="button" onClick={handleCancel}>
220
+ 취소
221
+ </Button>
222
+ <Button type="submit" loading={isSubmitting}>
223
+ {isSubmitting ? '저장 중...' : '저장'}
224
+ </Button>
225
+ </Stack>
226
+ </Stack>
227
+ </form>
228
+ ```
229
+
230
+ ### Modal Actions
231
+
232
+ ```tsx
233
+ <Modal open={open}>
234
+ <ModalDialog>
235
+ <ModalClose />
236
+ <DialogTitle>삭제 확인</DialogTitle>
237
+ <DialogContent>정말로 이 항목을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.</DialogContent>
238
+
239
+ <DialogActions>
240
+ <Button variant="outlined" onClick={handleClose}>
241
+ 취소
242
+ </Button>
243
+ <Button color="danger" onClick={handleDelete}>
244
+ 삭제
245
+ </Button>
246
+ </DialogActions>
247
+ </ModalDialog>
248
+ </Modal>
249
+ ```
250
+
251
+ ### Action Buttons with Icons
252
+
253
+ ```tsx
254
+ <Stack direction="row" spacing={2}>
255
+ <Button startDecorator={<AddIcon />}>새로 만들기</Button>
256
+
257
+ <Button variant="outlined" startDecorator={<DownloadIcon />} onClick={handleDownload}>
258
+ 다운로드
259
+ </Button>
260
+
261
+ <Button variant="soft" color="success" startDecorator={<ShareIcon />}>
262
+ 공유
263
+ </Button>
264
+ </Stack>
265
+ ```
266
+
267
+ ### Async Operations
268
+
269
+ ```tsx
270
+ function AsyncButton() {
271
+ const [loading, setLoading] = useState(false);
272
+
273
+ const handleAsyncAction = async () => {
274
+ setLoading(true);
275
+ try {
276
+ await api.processData();
277
+ // 성공 처리
278
+ } catch (error) {
279
+ // 에러 처리
280
+ } finally {
281
+ setLoading(false);
282
+ }
283
+ };
284
+
285
+ return (
286
+ <Button loading={loading} onClick={handleAsyncAction} startDecorator={<ProcessIcon />}>
287
+ 데이터 처리
288
+ </Button>
289
+ );
290
+ }
291
+ ```
292
+
293
+ ### Button Groups
294
+
295
+ ```tsx
296
+ <Stack direction="row" spacing={1}>
297
+ <Button variant="soft" size="sm">
298
+ 전체
299
+ </Button>
300
+ <Button variant="outlined" size="sm">
301
+ 진행중
302
+ </Button>
303
+ <Button variant="outlined" size="sm">
304
+ 완료
305
+ </Button>
306
+ </Stack>
307
+ ```
308
+
309
+ ## Best Practices
310
+
311
+ 1. **명확한 라벨**: 버튼의 기능을 명확하게 나타내는 텍스트를 사용하세요.
312
+
313
+ 2. **적절한 변형 선택**:
314
+ - 주요 액션: `solid`
315
+ - 보조 액션: `outlined` 또는 `soft`
316
+ - 최소한의 액션: `plain`
317
+
318
+ 3. **색상 의미 일관성**:
319
+ - 위험한 작업: `danger`
320
+ - 성공/확인: `success`
321
+ - 주의 필요: `warning`
322
+
323
+ 4. **로딩 상태 표시**: 비동기 작업 시 사용자에게 피드백을 제공하세요.
324
+
325
+ 5. **접근성**: 적절한 ARIA 라벨과 키보드 탐색을 지원하세요.
326
+
327
+ ## Accessibility
328
+
329
+ - 키보드로 접근 가능 (Tab, Space, Enter)
330
+ - 스크린 리더 지원
331
+ - 적절한 색상 대비
332
+ - 비활성 상태에서 포커스 불가
333
+
334
+ Button은 사용자 인터페이스에서 가장 기본적이면서도 중요한 상호작용 요소입니다. 적절한 스타일과 상태 관리를 통해 직관적이고 접근 가능한 사용자 경험을 제공할 수 있습니다.