@ceed/ads 1.29.0 → 1.30.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.
- package/dist/components/CurrencyInput/CurrencyInput.d.ts +1 -1
- package/dist/components/CurrencyInput/hooks/use-currency-setting.d.ts +2 -2
- package/dist/components/DataTable/hooks.d.ts +2 -1
- package/dist/components/DataTable/utils.d.ts +1 -0
- package/dist/components/ProfileMenu/ProfileMenu.d.ts +1 -1
- package/dist/components/SearchBar/SearchBar.d.ts +21 -0
- package/dist/components/SearchBar/index.d.ts +3 -0
- package/dist/components/data-display/Badge.md +39 -71
- package/dist/components/data-display/DataTable.md +1 -1
- package/dist/components/data-display/InfoSign.md +98 -74
- package/dist/components/data-display/Typography.md +97 -363
- package/dist/components/feedback/Dialog.md +62 -76
- package/dist/components/feedback/Modal.md +44 -259
- package/dist/components/feedback/llms.txt +0 -2
- package/dist/components/index.d.ts +2 -0
- package/dist/components/inputs/Autocomplete.md +107 -356
- package/dist/components/inputs/ButtonGroup.md +106 -115
- package/dist/components/inputs/Calendar.md +459 -98
- package/dist/components/inputs/CurrencyInput.md +5 -183
- package/dist/components/inputs/DatePicker.md +431 -108
- package/dist/components/inputs/DateRangePicker.md +492 -131
- package/dist/components/inputs/FilterMenu.md +19 -169
- package/dist/components/inputs/FilterableCheckboxGroup.md +23 -123
- package/dist/components/inputs/IconButton.md +88 -137
- package/dist/components/inputs/Input.md +0 -5
- package/dist/components/inputs/MonthPicker.md +422 -95
- package/dist/components/inputs/MonthRangePicker.md +466 -89
- package/dist/components/inputs/PercentageInput.md +16 -185
- package/dist/components/inputs/RadioButton.md +35 -163
- package/dist/components/inputs/RadioTileGroup.md +61 -150
- package/dist/components/inputs/SearchBar.md +44 -0
- package/dist/components/inputs/Select.md +326 -222
- package/dist/components/inputs/Switch.md +376 -136
- package/dist/components/inputs/Textarea.md +10 -213
- package/dist/components/inputs/Uploader/Uploader.md +66 -145
- package/dist/components/inputs/llms.txt +1 -3
- package/dist/components/navigation/Breadcrumbs.md +322 -80
- package/dist/components/navigation/Dropdown.md +221 -92
- package/dist/components/navigation/IconMenuButton.md +502 -40
- package/dist/components/navigation/InsetDrawer.md +738 -68
- package/dist/components/navigation/Link.md +298 -39
- package/dist/components/navigation/Menu.md +285 -92
- package/dist/components/navigation/MenuButton.md +448 -55
- package/dist/components/navigation/Pagination.md +338 -47
- package/dist/components/navigation/ProfileMenu.md +268 -45
- package/dist/components/navigation/Stepper.md +28 -160
- package/dist/components/navigation/Tabs.md +316 -57
- package/dist/components/surfaces/Sheet.md +334 -151
- package/dist/index.browser.js +15 -13
- package/dist/index.browser.js.map +4 -4
- package/dist/index.cjs +313 -291
- package/dist/index.d.ts +1 -1
- package/dist/index.js +450 -372
- package/dist/llms.txt +1 -8
- package/framer/index.js +1 -1
- package/package.json +16 -15
- package/dist/chunks/rehype-accent-FZRUD7VI.js +0 -39
- package/dist/components/feedback/CircularProgress.md +0 -257
- package/dist/components/feedback/Skeleton.md +0 -280
- package/dist/components/inputs/FormControl.md +0 -361
- package/dist/components/inputs/RadioList.md +0 -241
- package/dist/components/inputs/Slider.md +0 -334
- package/dist/guides/ThemeProvider.md +0 -116
- package/dist/guides/llms.txt +0 -9
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { InputProps } from '@mui/joy';
|
|
3
3
|
import { MotionProps } from 'framer-motion';
|
|
4
4
|
export interface CurrencyInputProps {
|
|
5
|
-
currency?: 'USD' | 'KRW'
|
|
5
|
+
currency?: 'USD' | 'KRW';
|
|
6
6
|
max?: number;
|
|
7
7
|
value?: number;
|
|
8
8
|
defaultValue?: number;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export declare const useCurrencySetting: (props: {
|
|
2
|
-
currency?: "USD" | "KRW" | "BHD" |
|
|
2
|
+
currency?: "USD" | "KRW" | "BHD" | undefined;
|
|
3
3
|
placeholder?: string | undefined;
|
|
4
4
|
}) => {
|
|
5
5
|
symbol: string;
|
|
6
6
|
thousandSeparator: string;
|
|
7
|
-
decimalSeparator: string
|
|
7
|
+
decimalSeparator: string;
|
|
8
8
|
placeholder: string;
|
|
9
9
|
fixedDecimalScale: boolean;
|
|
10
10
|
decimalScale: number;
|
|
@@ -5,7 +5,7 @@ export declare function useColumnWidths<T>(columnsByField: {
|
|
|
5
5
|
headerRef: React.RefObject<HTMLTableCellElement>;
|
|
6
6
|
};
|
|
7
7
|
}): Record<string, number>;
|
|
8
|
-
export declare function useDataTableRenderer<T extends Record<PropertyKey, unknown>, GetId extends ((row: T) => any) | undefined = undefined>({ rows: _rows, columns: columnsProp, pinnedColumns, rowCount: totalRowsProp, initialState, pagination, paginationMode, paginationModel, onPaginationModelChange, sortModel: controlledSortModel, sortOrder: _sortOrder, selectionModel, onSortModelChange, onSelectionModelChange, editMode, getId: _getId, isTotalSelected: _isTotalSelected, isRowSelectable, columnGroupingModel, columnVisibilityModel, onColumnVisibilityModelChange, }: DataTableProps<T, GetId>): {
|
|
8
|
+
export declare function useDataTableRenderer<T extends Record<PropertyKey, unknown>, GetId extends ((row: T) => any) | undefined = undefined>({ rows: _rows, columns: columnsProp, pinnedColumns, rowCount: totalRowsProp, initialState, pagination, paginationMode, paginationModel, onPaginationModelChange, sortModel: controlledSortModel, sortOrder: _sortOrder, selectionModel, onSortModelChange, onSelectionModelChange, editMode, getId: _getId, isTotalSelected: _isTotalSelected, isRowSelectable, columnGroupingModel, columnVisibilityModel, onColumnVisibilityModelChange, checkboxSelection, }: DataTableProps<T, GetId>): {
|
|
9
9
|
rowCount: number;
|
|
10
10
|
selectableRowCount: number;
|
|
11
11
|
page: number;
|
|
@@ -49,6 +49,7 @@ export declare function useDataTableRenderer<T extends Record<PropertyKey, unkno
|
|
|
49
49
|
onAllCheckboxChange: () => void;
|
|
50
50
|
onCheckboxChange: (event: React.MouseEvent | React.ChangeEvent | React.KeyboardEvent, selectedModel: InferredIdType<T, GetId>) => void;
|
|
51
51
|
columns: ColumnDef<T, InferredIdType<T, GetId>>[];
|
|
52
|
+
tableMinWidth: number;
|
|
52
53
|
processedColumnGroups: {
|
|
53
54
|
groups: import("./types").ProcessedColumnGroup[][];
|
|
54
55
|
maxLevel: number;
|
|
@@ -9,6 +9,7 @@ export declare function calculateColumnGroups<T extends Record<PropertyKey, any>
|
|
|
9
9
|
maxLevel: number;
|
|
10
10
|
fieldsInGroupingModel: Set<keyof T>;
|
|
11
11
|
};
|
|
12
|
+
export declare function parsePxValue(value: string | undefined): number | null;
|
|
12
13
|
export declare function getTextAlign(props: {
|
|
13
14
|
editMode?: boolean;
|
|
14
15
|
type?: string;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface SearchBarOption {
|
|
3
|
+
label: string;
|
|
4
|
+
value: string;
|
|
5
|
+
placeholder?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface SearchBarProps {
|
|
8
|
+
hideSelect?: boolean;
|
|
9
|
+
options?: SearchBarOption[];
|
|
10
|
+
value: string;
|
|
11
|
+
onChange: (value: string) => void;
|
|
12
|
+
onSearch?: (params: {
|
|
13
|
+
selectValue?: string;
|
|
14
|
+
inputValue: string;
|
|
15
|
+
}) => void;
|
|
16
|
+
}
|
|
17
|
+
declare function SearchBar(props: SearchBarProps): React.JSX.Element;
|
|
18
|
+
declare namespace SearchBar {
|
|
19
|
+
var displayName: string;
|
|
20
|
+
}
|
|
21
|
+
export { SearchBar };
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Introduction
|
|
4
4
|
|
|
5
|
-
Badge
|
|
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.
|
|
5
|
+
Badge 컴포넌트는 다른 UI 요소 위에 작은 카운트, 상태, 또는 레이블을 표시하는 데 사용됩니다. 주로 알림 수, 상태 표시기, 또는 새로운 콘텐츠를 나타내는 데 활용됩니다.
|
|
8
6
|
|
|
9
7
|
```tsx
|
|
10
8
|
<Badge {...args}>
|
|
@@ -28,7 +26,7 @@ Badge supports multiple colors, variants, and sizes for flexible visual customiz
|
|
|
28
26
|
|
|
29
27
|
```tsx
|
|
30
28
|
import { Badge, IconButton } from '@ceed/ads';
|
|
31
|
-
import NotificationsIcon from '@mui/icons-material
|
|
29
|
+
import { NotificationsIcon } from '@mui/icons-material';
|
|
32
30
|
|
|
33
31
|
function MyComponent() {
|
|
34
32
|
return (
|
|
@@ -41,9 +39,11 @@ function MyComponent() {
|
|
|
41
39
|
}
|
|
42
40
|
```
|
|
43
41
|
|
|
44
|
-
##
|
|
42
|
+
## Examples
|
|
43
|
+
|
|
44
|
+
### Basic Usage
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
기본적인 Badge 사용법입니다.
|
|
47
47
|
|
|
48
48
|
```tsx
|
|
49
49
|
<div style={{
|
|
@@ -70,9 +70,9 @@ Basic Badge usage showing numeric counts, max overflow, and text content.
|
|
|
70
70
|
</div>
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
### Colors
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
다양한 색상을 적용할 수 있습니다.
|
|
76
76
|
|
|
77
77
|
```tsx
|
|
78
78
|
<div style={{
|
|
@@ -111,9 +111,9 @@ Apply semantic colors to convey the badge's meaning: `primary` for general count
|
|
|
111
111
|
</div>
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
-
|
|
114
|
+
### Variants
|
|
115
115
|
|
|
116
|
-
|
|
116
|
+
다양한 스타일 변형을 제공합니다.
|
|
117
117
|
|
|
118
118
|
```tsx
|
|
119
119
|
<div style={{
|
|
@@ -146,9 +146,9 @@ Four style variants are available: `solid` (filled), `soft` (subtle background),
|
|
|
146
146
|
</div>
|
|
147
147
|
```
|
|
148
148
|
|
|
149
|
-
|
|
149
|
+
### Sizes
|
|
150
150
|
|
|
151
|
-
|
|
151
|
+
크기를 조절할 수 있습니다.
|
|
152
152
|
|
|
153
153
|
```tsx
|
|
154
154
|
<div style={{
|
|
@@ -176,9 +176,9 @@ Three sizes -- `sm`, `md`, and `lg` -- allow the badge to scale proportionally w
|
|
|
176
176
|
</div>
|
|
177
177
|
```
|
|
178
178
|
|
|
179
|
-
|
|
179
|
+
### With Avatar
|
|
180
180
|
|
|
181
|
-
|
|
181
|
+
아바타와 함께 사용할 수 있습니다.
|
|
182
182
|
|
|
183
183
|
```tsx
|
|
184
184
|
<div style={{
|
|
@@ -195,9 +195,9 @@ Badge pairs naturally with Avatar to indicate user status (e.g., notification co
|
|
|
195
195
|
</div>
|
|
196
196
|
```
|
|
197
197
|
|
|
198
|
-
|
|
198
|
+
### Dot Badge
|
|
199
199
|
|
|
200
|
-
|
|
200
|
+
내용 없이 점으로만 표시할 수 있습니다.
|
|
201
201
|
|
|
202
202
|
```tsx
|
|
203
203
|
<div style={{
|
|
@@ -216,9 +216,9 @@ When no `badgeContent` is provided, Badge renders as a small dot. This is useful
|
|
|
216
216
|
</div>
|
|
217
217
|
```
|
|
218
218
|
|
|
219
|
-
|
|
219
|
+
### Max Count
|
|
220
220
|
|
|
221
|
-
|
|
221
|
+
최대 카운트를 설정하여 숫자가 넘을 때 '+' 표시를 할 수 있습니다.
|
|
222
222
|
|
|
223
223
|
```tsx
|
|
224
224
|
<div style={{
|
|
@@ -245,9 +245,9 @@ Use the `max` prop to cap the displayed number. When `badgeContent` exceeds `max
|
|
|
245
245
|
</div>
|
|
246
246
|
```
|
|
247
247
|
|
|
248
|
-
|
|
248
|
+
### Show Zero
|
|
249
249
|
|
|
250
|
-
|
|
250
|
+
기본적으로 0일 때는 숨겨지지만, showZero 옵션으로 표시할 수 있습니다.
|
|
251
251
|
|
|
252
252
|
```tsx
|
|
253
253
|
<div style={{
|
|
@@ -276,72 +276,40 @@ By default, Badge hides when `badgeContent` is `0`. Use the `showZero` prop to f
|
|
|
276
276
|
|
|
277
277
|
## Common Use Cases
|
|
278
278
|
|
|
279
|
-
### Notification
|
|
279
|
+
### Notification Count
|
|
280
280
|
|
|
281
281
|
```tsx
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
<Badge badgeContent={unreadCount} max={99} color="danger">
|
|
288
|
-
<IconButton aria-label={`${unreadCount} unread notifications`}>
|
|
289
|
-
<NotificationsIcon />
|
|
290
|
-
</IconButton>
|
|
291
|
-
</Badge>
|
|
292
|
-
);
|
|
293
|
-
}
|
|
282
|
+
<Badge badgeContent={unreadCount} color="danger">
|
|
283
|
+
<IconButton>
|
|
284
|
+
<NotificationsIcon />
|
|
285
|
+
</IconButton>
|
|
286
|
+
</Badge>
|
|
294
287
|
```
|
|
295
288
|
|
|
296
|
-
###
|
|
289
|
+
### Status Indicator
|
|
297
290
|
|
|
298
291
|
```tsx
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
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
|
-
}
|
|
292
|
+
<Badge color="success" variant="solid">
|
|
293
|
+
<Avatar src="/user-avatar.jpg" />
|
|
294
|
+
</Badge>
|
|
312
295
|
```
|
|
313
296
|
|
|
314
|
-
### New
|
|
297
|
+
### New Items
|
|
315
298
|
|
|
316
299
|
```tsx
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
return (
|
|
321
|
-
<Badge badgeContent="NEW" color="warning" size="sm">
|
|
322
|
-
<Button variant="outlined">Analytics</Button>
|
|
323
|
-
</Badge>
|
|
324
|
-
);
|
|
325
|
-
}
|
|
300
|
+
<Badge badgeContent="NEW" color="warning">
|
|
301
|
+
<Button>메뉴</Button>
|
|
302
|
+
</Badge>
|
|
326
303
|
```
|
|
327
304
|
|
|
328
305
|
## Best Practices
|
|
329
306
|
|
|
330
|
-
|
|
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.
|
|
307
|
+
1. **의미 있는 색상**: 색상은 의미를 가지도록 사용하세요 (빨간색은 중요한 알림, 초록색은 성공 상태 등).
|
|
337
308
|
|
|
338
|
-
|
|
309
|
+
2. **적절한 콘텐츠**: 너무 긴 텍스트는 피하고, 숫자나 짧은 텍스트를 사용하세요.
|
|
339
310
|
|
|
340
|
-
|
|
311
|
+
3. **대비**: Badge의 색상이 배경과 충분한 대비를 가지도록 하세요.
|
|
341
312
|
|
|
342
|
-
|
|
313
|
+
4. **접근성**: 시각적 정보만으로 의존하지 않고, 스크린 리더를 위한 적절한 레이블을 제공하세요.
|
|
343
314
|
|
|
344
|
-
|
|
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").
|
|
315
|
+
5. **일관성**: 애플리케이션 전체에서 Badge 사용 패턴을 일관되게 유지하세요.
|
|
@@ -1367,7 +1367,7 @@ You can use `onCellEditStart` and `onCellEditStop` to detect when editing starts
|
|
|
1367
1367
|
</Typography>
|
|
1368
1368
|
{editLog.length === 0 ? <Typography level="body-xs" textColor="text.secondary">
|
|
1369
1369
|
No edits yet. Click on a cell to edit.
|
|
1370
|
-
</Typography> : editLog.map(log => <Typography key={
|
|
1370
|
+
</Typography> : editLog.map((log, i) => <Typography key={i} level="body-xs">
|
|
1371
1371
|
{log}
|
|
1372
1372
|
</Typography>)}
|
|
1373
1373
|
</Box>
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Introduction
|
|
4
4
|
|
|
5
|
-
InfoSign
|
|
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.
|
|
5
|
+
InfoSign 컴포넌트는 사용자에게 추가 정보를 제공하기 위한 툴팁 아이콘입니다. 물음표 아이콘을 클릭하거나 호버할 때 상세한 설명이나 도움말을 표시할 수 있습니다. 폼 필드, 설정 항목, 복잡한 기능에 대한 설명을 제공할 때 유용합니다.
|
|
8
6
|
|
|
9
7
|
```tsx
|
|
10
8
|
<InfoSign
|
|
@@ -24,19 +22,23 @@ import { InfoSign } from '@ceed/ads';
|
|
|
24
22
|
|
|
25
23
|
function MyComponent() {
|
|
26
24
|
return (
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
<div>
|
|
26
|
+
<label>
|
|
27
|
+
복잡한 설정 항목
|
|
28
|
+
<InfoSign
|
|
29
|
+
message="이 설정은 시스템 전체 성능에 영향을 줄 수 있습니다. 변경하기 전에 관리자와 상의하세요."
|
|
30
|
+
/>
|
|
31
|
+
</label>
|
|
32
|
+
</div>
|
|
33
33
|
);
|
|
34
34
|
}
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
##
|
|
37
|
+
## Examples
|
|
38
|
+
|
|
39
|
+
### Basic Usage
|
|
38
40
|
|
|
39
|
-
|
|
41
|
+
가장 기본적인 InfoSign 사용법입니다.
|
|
40
42
|
|
|
41
43
|
```tsx
|
|
42
44
|
<InfoSign
|
|
@@ -50,87 +52,109 @@ The default InfoSign displays a question-mark icon that reveals a tooltip on hov
|
|
|
50
52
|
### Form Field Help
|
|
51
53
|
|
|
52
54
|
```tsx
|
|
53
|
-
|
|
54
|
-
|
|
55
|
+
<FormControl>
|
|
56
|
+
<FormLabel>
|
|
57
|
+
비밀번호 복잡도
|
|
58
|
+
<InfoSign
|
|
59
|
+
message="비밀번호는 최소 8자 이상이며, 대문자, 소문자, 숫자, 특수문자를 포함해야 합니다."
|
|
60
|
+
placement="top"
|
|
61
|
+
/>
|
|
62
|
+
</FormLabel>
|
|
63
|
+
<Input type="password" />
|
|
64
|
+
</FormControl>
|
|
65
|
+
```
|
|
55
66
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
</
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
### Settings Explanation
|
|
68
|
+
|
|
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>
|
|
70
82
|
```
|
|
71
83
|
|
|
72
|
-
###
|
|
84
|
+
### Complex Data Explanation
|
|
73
85
|
|
|
74
86
|
```tsx
|
|
75
|
-
|
|
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
|
+
```
|
|
76
100
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
<
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
<
|
|
90
|
-
</
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
101
|
+
### Table Header Help
|
|
102
|
+
|
|
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>
|
|
94
119
|
```
|
|
95
120
|
|
|
96
|
-
|
|
121
|
+
## Props
|
|
122
|
+
|
|
123
|
+
### placement
|
|
124
|
+
|
|
125
|
+
툴팁이 나타나는 위치를 설정할 수 있습니다.
|
|
97
126
|
|
|
98
127
|
```tsx
|
|
99
|
-
|
|
128
|
+
<InfoSign placement="top" message="위쪽에 표시" />
|
|
129
|
+
<InfoSign placement="bottom" message="아래쪽에 표시" />
|
|
130
|
+
<InfoSign placement="left" message="왼쪽에 표시" />
|
|
131
|
+
<InfoSign placement="right" message="오른쪽에 표시" />
|
|
132
|
+
```
|
|
100
133
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
/>
|
|
110
|
-
</Typography>
|
|
111
|
-
<Typography level="h2">1,234 req/min</Typography>
|
|
112
|
-
</Stack>
|
|
113
|
-
);
|
|
114
|
-
}
|
|
134
|
+
### message
|
|
135
|
+
|
|
136
|
+
표시할 메시지 내용입니다. 긴 텍스트도 지원합니다.
|
|
137
|
+
|
|
138
|
+
```tsx
|
|
139
|
+
<InfoSign
|
|
140
|
+
message="여러 줄로 된 긴 설명문도 표시할 수 있습니다.\n줄바꿈도 지원되므로 상세한 설명을 제공할 수 있습니다."
|
|
141
|
+
/>
|
|
115
142
|
```
|
|
116
143
|
|
|
117
144
|
## Best Practices
|
|
118
145
|
|
|
119
|
-
|
|
120
|
-
- ✔ "Maximum file size per upload. Files exceeding this limit will be rejected."
|
|
121
|
-
- ✘ A multi-paragraph explanation with examples and edge cases
|
|
146
|
+
1. **간결한 메시지**: 핵심 정보만 포함하여 사용자가 빠르게 이해할 수 있도록 합니다.
|
|
122
147
|
|
|
123
|
-
|
|
148
|
+
2. **적절한 배치**: 설명하려는 요소 바로 옆에 배치하여 연관성을 명확히 합니다.
|
|
124
149
|
|
|
125
|
-
|
|
150
|
+
3. **일관된 사용**: 비슷한 성격의 정보에는 일관되게 InfoSign을 사용합니다.
|
|
126
151
|
|
|
127
|
-
|
|
128
|
-
|
|
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.
|
|
152
|
+
4. **과도한 사용 금지**: 모든 요소에 InfoSign을 붙이면 인터페이스가 복잡해집니다.
|
|
130
153
|
|
|
131
154
|
## Accessibility
|
|
132
155
|
|
|
133
|
-
- InfoSign
|
|
134
|
-
-
|
|
135
|
-
-
|
|
136
|
-
|
|
156
|
+
- InfoSign은 키보드 탐색이 가능합니다
|
|
157
|
+
- 스크린 리더가 메시지 내용을 읽을 수 있습니다
|
|
158
|
+
- ARIA 라벨이 자동으로 적용됩니다
|
|
159
|
+
|
|
160
|
+
InfoSign은 사용자에게 필요한 추가 정보를 제공하면서도 인터페이스를 깔끔하게 유지하는 데 도움이 되는 유용한 컴포넌트입니다.
|