@ceed/ads 1.23.3 → 1.23.4

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 (43) hide show
  1. package/dist/components/data-display/Badge.md +71 -39
  2. package/dist/components/data-display/InfoSign.md +74 -98
  3. package/dist/components/data-display/Typography.md +310 -61
  4. package/dist/components/feedback/CircularProgress.md +257 -0
  5. package/dist/components/feedback/Skeleton.md +280 -0
  6. package/dist/components/feedback/llms.txt +2 -0
  7. package/dist/components/inputs/ButtonGroup.md +115 -106
  8. package/dist/components/inputs/Calendar.md +98 -459
  9. package/dist/components/inputs/CurrencyInput.md +181 -8
  10. package/dist/components/inputs/DatePicker.md +108 -436
  11. package/dist/components/inputs/DateRangePicker.md +130 -496
  12. package/dist/components/inputs/FilterMenu.md +169 -19
  13. package/dist/components/inputs/FilterableCheckboxGroup.md +119 -24
  14. package/dist/components/inputs/FormControl.md +368 -0
  15. package/dist/components/inputs/IconButton.md +137 -88
  16. package/dist/components/inputs/MonthPicker.md +95 -427
  17. package/dist/components/inputs/MonthRangePicker.md +89 -471
  18. package/dist/components/inputs/PercentageInput.md +183 -19
  19. package/dist/components/inputs/RadioButton.md +163 -35
  20. package/dist/components/inputs/RadioList.md +241 -0
  21. package/dist/components/inputs/RadioTileGroup.md +146 -62
  22. package/dist/components/inputs/Select.md +219 -328
  23. package/dist/components/inputs/Slider.md +334 -0
  24. package/dist/components/inputs/Switch.md +136 -376
  25. package/dist/components/inputs/Textarea.md +209 -11
  26. package/dist/components/inputs/Uploader/Uploader.md +145 -66
  27. package/dist/components/inputs/llms.txt +3 -0
  28. package/dist/components/navigation/Breadcrumbs.md +80 -322
  29. package/dist/components/navigation/Dropdown.md +92 -221
  30. package/dist/components/navigation/IconMenuButton.md +40 -502
  31. package/dist/components/navigation/InsetDrawer.md +68 -738
  32. package/dist/components/navigation/Link.md +39 -298
  33. package/dist/components/navigation/Menu.md +92 -285
  34. package/dist/components/navigation/MenuButton.md +55 -448
  35. package/dist/components/navigation/Pagination.md +47 -338
  36. package/dist/components/navigation/ProfileMenu.md +45 -268
  37. package/dist/components/navigation/Stepper.md +160 -28
  38. package/dist/components/navigation/Tabs.md +57 -316
  39. package/dist/components/surfaces/Sheet.md +150 -333
  40. package/dist/guides/ThemeProvider.md +116 -0
  41. package/dist/guides/llms.txt +9 -0
  42. package/dist/llms.txt +8 -0
  43. package/package.json +1 -1
@@ -2,7 +2,9 @@
2
2
 
3
3
  ## Introduction
4
4
 
5
- Badge 컴포넌트는 다른 UI 요소 위에 작은 카운트, 상태, 또는 레이블을 표시하는 사용됩니다. 주로 알림 수, 상태 표시기, 또는 새로운 콘텐츠를 나타내는 활용됩니다.
5
+ Badge is a small visual indicator that overlays another UI element to display a count, status, or label. It is commonly used to show unread notification counts, online/offline status indicators, and "NEW" labels on menu items or navigation elements. The Badge wraps a child component (such as an icon button or avatar) and positions itself in the top-right corner by default.
6
+
7
+ Badge supports multiple colors, variants, and sizes for flexible visual customization. It also provides utility features like a `max` prop for truncating large numbers (e.g., "99+"), a `showZero` prop for controlling zero-count visibility, and a dot-only mode when no `badgeContent` is provided.
6
8
 
7
9
  ```tsx
8
10
  <Badge {...args}>
@@ -26,7 +28,7 @@ Badge 컴포넌트는 다른 UI 요소 위에 작은 카운트, 상태, 또는
26
28
 
27
29
  ```tsx
28
30
  import { Badge, IconButton } from '@ceed/ads';
29
- import { NotificationsIcon } from '@mui/icons-material';
31
+ import NotificationsIcon from '@mui/icons-material/Notifications';
30
32
 
31
33
  function MyComponent() {
32
34
  return (
@@ -39,11 +41,9 @@ function MyComponent() {
39
41
  }
40
42
  ```
41
43
 
42
- ## Examples
43
-
44
- ### Basic Usage
44
+ ## Basic
45
45
 
46
- 기본적인 Badge 사용법입니다.
46
+ Basic Badge usage showing numeric counts, max overflow, and text content.
47
47
 
48
48
  ```tsx
49
49
  <div style={{
@@ -70,9 +70,9 @@ function MyComponent() {
70
70
  </div>
71
71
  ```
72
72
 
73
- ### Colors
73
+ ## Colors
74
74
 
75
- 다양한 색상을 적용할 있습니다.
75
+ Apply semantic colors to convey the badge's meaning: `primary` for general counts, `danger` for urgent notifications, `success` for online status, and `warning` for attention items.
76
76
 
77
77
  ```tsx
78
78
  <div style={{
@@ -111,9 +111,9 @@ function MyComponent() {
111
111
  </div>
112
112
  ```
113
113
 
114
- ### Variants
114
+ ## Variants
115
115
 
116
- 다양한 스타일 변형을 제공합니다.
116
+ Four style variants are available: `solid` (filled), `soft` (subtle background), `outlined` (border only), and `plain` (minimal).
117
117
 
118
118
  ```tsx
119
119
  <div style={{
@@ -146,9 +146,9 @@ function MyComponent() {
146
146
  </div>
147
147
  ```
148
148
 
149
- ### Sizes
149
+ ## Sizes
150
150
 
151
- 크기를 조절할 있습니다.
151
+ Three sizes -- `sm`, `md`, and `lg` -- allow the badge to scale proportionally with its wrapped element.
152
152
 
153
153
  ```tsx
154
154
  <div style={{
@@ -176,9 +176,9 @@ function MyComponent() {
176
176
  </div>
177
177
  ```
178
178
 
179
- ### With Avatar
179
+ ## With Avatar
180
180
 
181
- 아바타와 함께 사용할 있습니다.
181
+ Badge pairs naturally with Avatar to indicate user status (e.g., notification count or online indicator).
182
182
 
183
183
  ```tsx
184
184
  <div style={{
@@ -195,9 +195,9 @@ function MyComponent() {
195
195
  </div>
196
196
  ```
197
197
 
198
- ### Dot Badge
198
+ ## Dot Badge
199
199
 
200
- 내용 없이 점으로만 표시할 있습니다.
200
+ When no `badgeContent` is provided, Badge renders as a small dot. This is useful for simple presence or status indicators without a specific count.
201
201
 
202
202
  ```tsx
203
203
  <div style={{
@@ -216,9 +216,9 @@ function MyComponent() {
216
216
  </div>
217
217
  ```
218
218
 
219
- ### Max Count
219
+ ## Max Count
220
220
 
221
- 최대 카운트를 설정하여 숫자가 넘을 '+' 표시를 있습니다.
221
+ Use the `max` prop to cap the displayed number. When `badgeContent` exceeds `max`, it renders as "max+" (e.g., "99+").
222
222
 
223
223
  ```tsx
224
224
  <div style={{
@@ -245,9 +245,9 @@ function MyComponent() {
245
245
  </div>
246
246
  ```
247
247
 
248
- ### Show Zero
248
+ ## Show Zero
249
249
 
250
- 기본적으로 0 때는 숨겨지지만, showZero 옵션으로 표시할 있습니다.
250
+ By default, Badge hides when `badgeContent` is `0`. Use the `showZero` prop to force it to remain visible.
251
251
 
252
252
  ```tsx
253
253
  <div style={{
@@ -276,40 +276,72 @@ function MyComponent() {
276
276
 
277
277
  ## Common Use Cases
278
278
 
279
- ### Notification Count
279
+ ### Notification Bell
280
280
 
281
281
  ```tsx
282
- <Badge badgeContent={unreadCount} color="danger">
283
- <IconButton>
284
- <NotificationsIcon />
285
- </IconButton>
286
- </Badge>
282
+ import { Badge, IconButton } from '@ceed/ads';
283
+ import NotificationsIcon from '@mui/icons-material/Notifications';
284
+
285
+ function NotificationBell({ unreadCount }) {
286
+ return (
287
+ <Badge badgeContent={unreadCount} max={99} color="danger">
288
+ <IconButton aria-label={`${unreadCount} unread notifications`}>
289
+ <NotificationsIcon />
290
+ </IconButton>
291
+ </Badge>
292
+ );
293
+ }
287
294
  ```
288
295
 
289
- ### Status Indicator
296
+ ### Online Status on Avatar
290
297
 
291
298
  ```tsx
292
- <Badge color="success" variant="solid">
293
- <Avatar src="/user-avatar.jpg" />
294
- </Badge>
299
+ import { Badge, Avatar } from '@ceed/ads';
300
+
301
+ function UserAvatar({ name, avatarUrl, isOnline }) {
302
+ return (
303
+ <Badge
304
+ color={isOnline ? 'success' : 'neutral'}
305
+ variant="solid"
306
+ anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}
307
+ >
308
+ <Avatar src={avatarUrl} alt={name} />
309
+ </Badge>
310
+ );
311
+ }
295
312
  ```
296
313
 
297
- ### New Items
314
+ ### New Feature Label
298
315
 
299
316
  ```tsx
300
- <Badge badgeContent="NEW" color="warning">
301
- <Button>메뉴</Button>
302
- </Badge>
317
+ import { Badge, Button } from '@ceed/ads';
318
+
319
+ function FeatureButton() {
320
+ return (
321
+ <Badge badgeContent="NEW" color="warning" size="sm">
322
+ <Button variant="outlined">Analytics</Button>
323
+ </Badge>
324
+ );
325
+ }
303
326
  ```
304
327
 
305
328
  ## Best Practices
306
329
 
307
- 1. **의미 있는 색상**: 색상은 의미를 가지도록 사용하세요 (빨간색은 중요한 알림, 초록색은 성공 상태 등).
330
+ - **Use semantic colors consistently.** Reserve `danger` for urgent notifications, `success` for positive status (e.g., online), `warning` for attention-needed items, and `primary` for neutral counts.
331
+ - ✔ `color="danger"` for unread message count
332
+ - ✘ `color="primary"` for critical alert count
333
+
334
+ - **Set a `max` value for numeric badges.** Avoid displaying very large numbers like "1,247" in a tiny badge. Use `max={99}` or `max={999}` to keep the badge compact and readable.
335
+
336
+ - **Keep badge content short.** Badges work best with numbers (1-3 digits) or very short text ("NEW", "HOT"). Long text will overflow and look broken.
308
337
 
309
- 2. **적절한 콘텐츠**: 너무 텍스트는 피하고, 숫자나 짧은 텍스트를 사용하세요.
338
+ - **Use dot badges for binary states.** When the specific count does not matter (e.g., "has unread items" vs. "12 unread items"), use a dot badge by omitting `badgeContent`.
310
339
 
311
- 3. **대비**: Badge의 색상이 배경과 충분한 대비를 가지도록 하세요.
340
+ - **Do not badge everything.** Only add badges to elements where the count or status information is genuinely useful. Overuse diminishes their attention-grabbing effect.
312
341
 
313
- 4. **접근성**: 시각적 정보만으로 의존하지 않고, 스크린 리더를 위한 적절한 레이블을 제공하세요.
342
+ ## Accessibility
314
343
 
315
- 5. **일관성**: 애플리케이션 전체에서 Badge 사용 패턴을 일관되게 유지하세요.
344
+ - Badge automatically applies `aria-label` or equivalent attributes so screen readers can announce the badge content alongside the wrapped element.
345
+ - When using Badge on an IconButton, always provide an `aria-label` on the IconButton that includes the badge context (e.g., `aria-label="5 unread notifications"`).
346
+ - Avoid relying solely on color to convey badge meaning. Pair colored badges with icons, text, or positional context so color-blind users can also interpret the status.
347
+ - Dot badges (without `badgeContent`) should have an accessible label on the parent element that describes the status (e.g., "User is online").
@@ -2,7 +2,9 @@
2
2
 
3
3
  ## Introduction
4
4
 
5
- InfoSign 컴포넌트는 사용자에게 추가 정보를 제공하기 위한 툴팁 아이콘입니다. 물음표 아이콘을 클릭하거나 호버할 상세한 설명이나 도움말을 표시할 있습니다. 필드, 설정 항목, 복잡한 기능에 대한 설명을 제공할 유용합니다.
5
+ InfoSign is a compact tooltip-trigger component that displays a small question-mark icon. When users hover over or focus on the icon, a tooltip appears with supplementary information. It is designed to provide contextual help without cluttering the interface -- ideal for explaining form fields, settings options, table column headers, and complex metrics.
6
+
7
+ The component accepts a `message` prop for the tooltip content and a `placement` prop to control where the tooltip appears relative to the icon. InfoSign keeps the main UI clean while ensuring that detailed guidance is always one interaction away.
6
8
 
7
9
  ```tsx
8
10
  <InfoSign
@@ -22,23 +24,19 @@ import { InfoSign } from '@ceed/ads';
22
24
 
23
25
  function MyComponent() {
24
26
  return (
25
- <div>
26
- <label>
27
- 복잡한 설정 항목
28
- <InfoSign
29
- message="이 설정은 시스템 전체 성능에 영향을 줄 수 있습니다. 변경하기 전에 관리자와 상의하세요."
30
- />
31
- </label>
32
- </div>
27
+ <label>
28
+ Complex Setting
29
+ <InfoSign
30
+ message="This setting affects overall system performance. Consult an administrator before making changes."
31
+ />
32
+ </label>
33
33
  );
34
34
  }
35
35
  ```
36
36
 
37
- ## Examples
38
-
39
- ### Basic Usage
37
+ ## Basic
40
38
 
41
- 가장 기본적인 InfoSign 사용법입니다.
39
+ The default InfoSign displays a question-mark icon that reveals a tooltip on hover or focus.
42
40
 
43
41
  ```tsx
44
42
  <InfoSign
@@ -52,109 +50,87 @@ function MyComponent() {
52
50
  ### Form Field Help
53
51
 
54
52
  ```tsx
55
- <FormControl>
56
- <FormLabel>
57
- 비밀번호 복잡도
58
- <InfoSign
59
- message="비밀번호는 최소 8자 이상이며, 대문자, 소문자, 숫자, 특수문자를 포함해야 합니다."
60
- placement="top"
61
- />
62
- </FormLabel>
63
- <Input type="password" />
64
- </FormControl>
65
- ```
66
-
67
- ### Settings Explanation
53
+ import { InfoSign } from '@ceed/ads';
54
+ import { FormControl, FormLabel, Input } from '@ceed/ads';
68
55
 
69
- ```tsx
70
- <Stack spacing={2}>
71
- <Box>
72
- <Typography level="title-sm">
73
- 자동 저장
74
- <InfoSign
75
- message=" 기능을 활성화하면 5분마다 자동으로 작업 내용이 저장됩니다."
76
- placement="right"
77
- />
78
- </Typography>
79
- <Switch />
80
- </Box>
81
- </Stack>
56
+ function PasswordField() {
57
+ return (
58
+ <FormControl>
59
+ <FormLabel>
60
+ Password
61
+ <InfoSign
62
+ message="Must be at least 8 characters and include uppercase, lowercase, number, and special character."
63
+ placement="top"
64
+ />
65
+ </FormLabel>
66
+ <Input type="password" />
67
+ </FormControl>
68
+ );
69
+ }
82
70
  ```
83
71
 
84
- ### Complex Data Explanation
72
+ ### Table Column Header
85
73
 
86
74
  ```tsx
87
- <Card>
88
- <CardContent>
89
- <Typography level="title-md">
90
- 처리량 지표
91
- <InfoSign
92
- message="처리량은 최근 24시간 동안의 평균 요청 수를 나타냅니다. 이 값이 높을수록 시스템이 더 많은 작업을 처리하고 있다는 의미입니다."
93
- placement="bottom"
94
- />
95
- </Typography>
96
- <Typography level="h2">1,234 req/min</Typography>
97
- </CardContent>
98
- </Card>
99
- ```
100
-
101
- ### Table Header Help
75
+ import { InfoSign } from '@ceed/ads';
102
76
 
103
- ```tsx
104
- <Table>
105
- <thead>
106
- <tr>
107
- <th>
108
- 사용자 ID
109
- <InfoSign message="시스템에서 자동 생성된 고유 식별자입니다." />
110
- </th>
111
- <th>
112
- 마지막 활동
113
- <InfoSign message="사용자가 마지막으로 로그인하거나 활동한 시간입니다." />
114
- </th>
115
- <th>상태</th>
116
- </tr>
117
- </thead>
118
- </Table>
77
+ function TableHeader() {
78
+ return (
79
+ <thead>
80
+ <tr>
81
+ <th>
82
+ User ID
83
+ <InfoSign message="Auto-generated unique identifier assigned by the system." />
84
+ </th>
85
+ <th>
86
+ Last Activity
87
+ <InfoSign message="The most recent login or action timestamp for this user." />
88
+ </th>
89
+ <th>Status</th>
90
+ </tr>
91
+ </thead>
92
+ );
93
+ }
119
94
  ```
120
95
 
121
- ## Props
122
-
123
- ### placement
124
-
125
- 툴팁이 나타나는 위치를 설정할 수 있습니다.
96
+ ### Dashboard Metric Explanation
126
97
 
127
98
  ```tsx
128
- <InfoSign placement="top" message="위쪽에 표시" />
129
- <InfoSign placement="bottom" message="아래쪽에 표시" />
130
- <InfoSign placement="left" message="왼쪽에 표시" />
131
- <InfoSign placement="right" message="오른쪽에 표시" />
132
- ```
133
-
134
- ### message
135
-
136
- 표시할 메시지 내용입니다. 긴 텍스트도 지원합니다.
99
+ import { InfoSign, Typography, Stack } from '@ceed/ads';
137
100
 
138
- ```tsx
139
- <InfoSign
140
- message="여러 줄로 된 긴 설명문도 표시할 수 있습니다.\n줄바꿈도 지원되므로 상세한 설명을 제공할 수 있습니다."
141
- />
101
+ function MetricCard() {
102
+ return (
103
+ <Stack spacing={1}>
104
+ <Typography level="title-md">
105
+ Throughput
106
+ <InfoSign
107
+ message="Average requests per minute over the last 24 hours. Higher values indicate greater system load."
108
+ placement="right"
109
+ />
110
+ </Typography>
111
+ <Typography level="h2">1,234 req/min</Typography>
112
+ </Stack>
113
+ );
114
+ }
142
115
  ```
143
116
 
144
117
  ## Best Practices
145
118
 
146
- 1. **간결한 메시지**: 핵심 정보만 포함하여 사용자가 빠르게 이해할 있도록 합니다.
119
+ - **Keep messages concise.** Tooltip messages should be 1-2 sentences that quickly answer "what does this mean?" Avoid paragraphs of text.
120
+ - ✔ "Maximum file size per upload. Files exceeding this limit will be rejected."
121
+ - ✘ A multi-paragraph explanation with examples and edge cases
147
122
 
148
- 2. **적절한 배치**: 설명하려는 요소 바로 옆에 배치하여 연관성을 명확히 합니다.
123
+ - **Place InfoSign directly adjacent to the element it explains.** Position it immediately after a label or header text so users can easily associate the help icon with the relevant field.
149
124
 
150
- 3. **일관된 사용**: 비슷한 성격의 정보에는 일관되게 InfoSign을 사용합니다.
125
+ - **Do not overuse InfoSign.** Adding a help icon to every single field creates visual noise and suggests the interface itself is too confusing. Reserve it for genuinely complex or ambiguous items.
151
126
 
152
- 4. **과도한 사용 금지**: 모든 요소에 InfoSign을 붙이면 인터페이스가 복잡해집니다.
127
+ - **Choose placement that avoids overlap.** Use `placement="top"` or `placement="right"` for fields near the bottom of a viewport, and `placement="bottom"` for elements near the top.
153
128
 
154
- ## Accessibility
129
+ - **Use InfoSign for supplementary information only.** Critical instructions or warnings should be displayed inline (e.g., with FormHelperText or Alert), not hidden behind a tooltip.
155
130
 
156
- - InfoSign은 키보드 탐색이 가능합니다
157
- - 스크린 리더가 메시지 내용을 읽을 수 있습니다
158
- - ARIA 라벨이 자동으로 적용됩니다
131
+ ## Accessibility
159
132
 
160
- InfoSign 사용자에게 필요한 추가 정보를 제공하면서도 인터페이스를 깔끔하게 유지하는 도움이 되는 유용한 컴포넌트입니다.
133
+ - InfoSign is keyboard-focusable, allowing users to trigger the tooltip using **Tab** navigation without requiring a mouse.
134
+ - The tooltip content is announced by screen readers when the InfoSign receives focus, thanks to built-in ARIA attributes.
135
+ - The question-mark icon serves as a universally recognized visual cue for "more information," making it intuitive for all users.
136
+ - Ensure that the `message` text provides the same information available through other channels -- do not make the tooltip the only way to learn critical information.